@tablestore/tablestore-agent-cli 0.2.0 → 0.2.1

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 (301) hide show
  1. package/dist/commands/kb/create.d.ts.map +1 -1
  2. package/dist/commands/kb/create.js +21 -0
  3. package/dist/commands/kb/create.js.map +1 -1
  4. package/dist/commands/kb/retrieve.d.ts.map +1 -1
  5. package/dist/commands/kb/retrieve.js +3 -3
  6. package/dist/commands/kb/retrieve.js.map +1 -1
  7. package/dist/dashboard-runtime/dashboard/.next/BUILD_ID +1 -1
  8. package/dist/dashboard-runtime/dashboard/.next/app-path-routes-manifest.json +1 -0
  9. package/dist/dashboard-runtime/dashboard/.next/build-manifest.json +5 -5
  10. package/dist/dashboard-runtime/dashboard/.next/prerender-manifest.json +3 -3
  11. package/dist/dashboard-runtime/dashboard/.next/routes-manifest.json +6 -0
  12. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/chat/page/build-manifest.json +2 -2
  13. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
  14. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
  15. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/documents/page/build-manifest.json +2 -2
  16. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/documents/page.js.nft.json +1 -1
  17. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/documents/page_client-reference-manifest.js +1 -1
  18. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/page/build-manifest.json +2 -2
  19. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/page.js.nft.json +1 -1
  20. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/page_client-reference-manifest.js +1 -1
  21. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/qa/page/build-manifest.json +2 -2
  22. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/qa/page.js.nft.json +1 -1
  23. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/qa/page_client-reference-manifest.js +1 -1
  24. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/retrieval/page/build-manifest.json +2 -2
  25. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/retrieval/page.js.nft.json +1 -1
  26. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/retrieval/page_client-reference-manifest.js +1 -1
  27. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/settings/page/build-manifest.json +2 -2
  28. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/settings/page.js.nft.json +1 -1
  29. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/settings/page_client-reference-manifest.js +1 -1
  30. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/create/page/build-manifest.json +2 -2
  31. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/create/page.js.nft.json +1 -1
  32. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/create/page_client-reference-manifest.js +1 -1
  33. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/page/build-manifest.json +2 -2
  34. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/page.js.nft.json +1 -1
  35. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/page_client-reference-manifest.js +1 -1
  36. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/llm-providers/[id]/page/build-manifest.json +2 -2
  37. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/llm-providers/[id]/page.js.nft.json +1 -1
  38. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/llm-providers/[id]/page_client-reference-manifest.js +1 -1
  39. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/llm-providers/new/page/build-manifest.json +2 -2
  40. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/llm-providers/new/page.js.nft.json +1 -1
  41. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/llm-providers/new/page_client-reference-manifest.js +1 -1
  42. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/llm-providers/page/build-manifest.json +2 -2
  43. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/llm-providers/page.js.nft.json +1 -1
  44. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/llm-providers/page_client-reference-manifest.js +1 -1
  45. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/messages/page/build-manifest.json +2 -2
  46. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/messages/page.js.nft.json +1 -1
  47. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/messages/page_client-reference-manifest.js +1 -1
  48. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/page/build-manifest.json +2 -2
  49. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/page.js.nft.json +1 -1
  50. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/page_client-reference-manifest.js +1 -1
  51. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/requests/page/build-manifest.json +2 -2
  52. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/requests/page.js.nft.json +1 -1
  53. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/requests/page_client-reference-manifest.js +1 -1
  54. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/search/page/build-manifest.json +2 -2
  55. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/search/page.js.nft.json +1 -1
  56. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/search/page_client-reference-manifest.js +1 -1
  57. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/settings/page/build-manifest.json +2 -2
  58. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/settings/page.js.nft.json +1 -1
  59. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/settings/page_client-reference-manifest.js +1 -1
  60. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/units/page/build-manifest.json +2 -2
  61. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/units/page.js.nft.json +1 -1
  62. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/units/page_client-reference-manifest.js +1 -1
  63. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/create/page/build-manifest.json +2 -2
  64. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/create/page.js.nft.json +1 -1
  65. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/create/page_client-reference-manifest.js +1 -1
  66. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/page/build-manifest.json +2 -2
  67. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/page.js.nft.json +1 -1
  68. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/page_client-reference-manifest.js +1 -1
  69. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/projects/page/build-manifest.json +2 -2
  70. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/projects/page.js.nft.json +1 -1
  71. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/projects/page_client-reference-manifest.js +1 -1
  72. package/dist/dashboard-runtime/dashboard/.next/server/app/_global-error/page/build-manifest.json +2 -2
  73. package/dist/dashboard-runtime/dashboard/.next/server/app/_global-error.html +1 -1
  74. package/dist/dashboard-runtime/dashboard/.next/server/app/_global-error.rsc +1 -1
  75. package/dist/dashboard-runtime/dashboard/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  76. package/dist/dashboard-runtime/dashboard/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  77. package/dist/dashboard-runtime/dashboard/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  78. package/dist/dashboard-runtime/dashboard/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  79. package/dist/dashboard-runtime/dashboard/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  80. package/dist/dashboard-runtime/dashboard/.next/server/app/_not-found/page/build-manifest.json +2 -2
  81. package/dist/dashboard-runtime/dashboard/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  82. package/dist/dashboard-runtime/dashboard/.next/server/app/_not-found.html +1 -1
  83. package/dist/dashboard-runtime/dashboard/.next/server/app/_not-found.rsc +14 -14
  84. package/dist/dashboard-runtime/dashboard/.next/server/app/_not-found.segments/_full.segment.rsc +14 -14
  85. package/dist/dashboard-runtime/dashboard/.next/server/app/_not-found.segments/_head.segment.rsc +3 -3
  86. package/dist/dashboard-runtime/dashboard/.next/server/app/_not-found.segments/_index.segment.rsc +10 -10
  87. package/dist/dashboard-runtime/dashboard/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +3 -3
  88. package/dist/dashboard-runtime/dashboard/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  89. package/dist/dashboard-runtime/dashboard/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  90. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/auth/status/route.js.nft.json +1 -1
  91. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/auth/token/route.js.nft.json +1 -1
  92. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/instances/[name]/route.js.nft.json +1 -1
  93. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/instances/[name]/token/route.js.nft.json +1 -1
  94. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/instances/[name]/use/route.js.nft.json +1 -1
  95. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/instances/route.js.nft.json +1 -1
  96. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/knowledge-bases/[name]/chunks/route.js.nft.json +1 -1
  97. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/knowledge-bases/[name]/documents/[docId]/chunks/route.js.nft.json +1 -1
  98. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/knowledge-bases/[name]/documents/[docId]/route.js.nft.json +1 -1
  99. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/knowledge-bases/[name]/documents/route.js.nft.json +1 -1
  100. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/knowledge-bases/[name]/documents/upload/route.js.nft.json +1 -1
  101. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/knowledge-bases/[name]/retrieve/route.js.nft.json +1 -1
  102. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/knowledge-bases/[name]/route.js.nft.json +1 -1
  103. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/knowledge-bases/route.js.nft.json +1 -1
  104. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/llm/chat/route.js.nft.json +1 -1
  105. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/llm/providers/[id]/models/route.js.nft.json +1 -1
  106. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/llm/providers/[id]/route.js.nft.json +1 -1
  107. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/llm/providers/[id]/test/route.js.nft.json +1 -1
  108. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/llm/providers/route.js.nft.json +1 -1
  109. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/logs/client/route.js.nft.json +1 -1
  110. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/messages/route.js.nft.json +1 -1
  111. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/requests/route.js.nft.json +1 -1
  112. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/route.js.nft.json +1 -1
  113. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/search/route.js.nft.json +1 -1
  114. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/units/[memoryId]/route.js.nft.json +1 -1
  115. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/units/route.js.nft.json +1 -1
  116. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/route.js.nft.json +1 -1
  117. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/oss/list/route/app-paths-manifest.json +3 -0
  118. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/oss/list/route/build-manifest.json +9 -0
  119. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/oss/list/route/server-reference-manifest.json +4 -0
  120. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/oss/list/route.js +6 -0
  121. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/oss/list/route.js.map +5 -0
  122. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/oss/list/route.js.nft.json +1 -0
  123. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/oss/list/route_client-reference-manifest.js +3 -0
  124. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/runtime/context/route.js.nft.json +1 -1
  125. package/dist/dashboard-runtime/dashboard/.next/server/app/index.html +1 -1
  126. package/dist/dashboard-runtime/dashboard/.next/server/app/index.rsc +14 -14
  127. package/dist/dashboard-runtime/dashboard/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  128. package/dist/dashboard-runtime/dashboard/.next/server/app/index.segments/_full.segment.rsc +14 -14
  129. package/dist/dashboard-runtime/dashboard/.next/server/app/index.segments/_head.segment.rsc +3 -3
  130. package/dist/dashboard-runtime/dashboard/.next/server/app/index.segments/_index.segment.rsc +10 -10
  131. package/dist/dashboard-runtime/dashboard/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  132. package/dist/dashboard-runtime/dashboard/.next/server/app/onboarding/page/build-manifest.json +2 -2
  133. package/dist/dashboard-runtime/dashboard/.next/server/app/onboarding/page.js.nft.json +1 -1
  134. package/dist/dashboard-runtime/dashboard/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
  135. package/dist/dashboard-runtime/dashboard/.next/server/app/onboarding.html +1 -1
  136. package/dist/dashboard-runtime/dashboard/.next/server/app/onboarding.rsc +17 -17
  137. package/dist/dashboard-runtime/dashboard/.next/server/app/onboarding.segments/_full.segment.rsc +17 -17
  138. package/dist/dashboard-runtime/dashboard/.next/server/app/onboarding.segments/_head.segment.rsc +3 -3
  139. package/dist/dashboard-runtime/dashboard/.next/server/app/onboarding.segments/_index.segment.rsc +10 -10
  140. package/dist/dashboard-runtime/dashboard/.next/server/app/onboarding.segments/_tree.segment.rsc +2 -2
  141. package/dist/dashboard-runtime/dashboard/.next/server/app/onboarding.segments/onboarding/__PAGE__.segment.rsc +4 -4
  142. package/dist/dashboard-runtime/dashboard/.next/server/app/onboarding.segments/onboarding.segment.rsc +4 -4
  143. package/dist/dashboard-runtime/dashboard/.next/server/app/page/build-manifest.json +2 -2
  144. package/dist/dashboard-runtime/dashboard/.next/server/app/page_client-reference-manifest.js +1 -1
  145. package/dist/dashboard-runtime/dashboard/.next/server/app-paths-manifest.json +1 -0
  146. package/dist/dashboard-runtime/dashboard/.next/server/chunks/0p91_next_dist_esm_build_templates_app-route_0n~ec7s.js +1 -1
  147. package/dist/dashboard-runtime/dashboard/.next/server/chunks/[root-of-the-server]__0cee_lo._.js +1 -1
  148. package/dist/dashboard-runtime/dashboard/.next/server/chunks/[root-of-the-server]__0lvi0g-._.js +2 -2
  149. package/dist/dashboard-runtime/dashboard/.next/server/chunks/[root-of-the-server]__0q8vcw8._.js +3 -0
  150. package/dist/dashboard-runtime/dashboard/.next/server/chunks/dashboard__next-internal_server_app_api_v1_oss_list_route_actions_00xq2u..js +3 -0
  151. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/0b1r_app_(dashboard)_knowledge-base_[name]_documents_documents-client_tsx_0g2uxmt._.js +2 -2
  152. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/0e95_src_app_(dashboard)_knowledge-base_[name]_settings_settings-client_tsx_13312zk._.js +1 -1
  153. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0aqzu8w._.js +1 -1
  154. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0hozzu6._.js +3 -0
  155. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0jb9ccl._.js +1 -1
  156. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/[root-of-the-server]__13ylf4x._.js +3 -0
  157. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_02bg849._.js +3 -0
  158. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_09yzbcp._.js +1 -1
  159. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0db498n._.js +3 -0
  160. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0jghj2_._.js +1 -1
  161. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0kd7szs._.js +3 -0
  162. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0n4gd_6._.js +1 -1
  163. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0ogxvev._.js +7 -0
  164. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0tr8-3u._.js +3 -0
  165. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0xzh5yw._.js +3 -0
  166. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_12~3vfk._.js +3 -0
  167. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_13_lb.o._.js +3 -0
  168. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_065m1.j._.js +1 -1
  169. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_0ejgygh._.js +1 -1
  170. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_0y49vhd._.js +1 -1
  171. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_10dsqx~._.js +1 -1
  172. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_app_(dashboard)_knowledge-base_create_page_tsx_0916~g-._.js +1 -1
  173. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_components_0ls1exu._.js +1 -1
  174. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_components_0ugdjlb._.js +1 -1
  175. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_components_ui_0-tuf-h._.js +3 -0
  176. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/node_modules__pnpm_08h.f_8._.js +3 -0
  177. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/node_modules__pnpm_0jns_ph._.js +3 -0
  178. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/node_modules__pnpm_0pf30rh._.js +3 -0
  179. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/node_modules__pnpm_0~k~1nt._.js +3 -0
  180. package/dist/dashboard-runtime/dashboard/.next/server/functions-config-manifest.json +1 -0
  181. package/dist/dashboard-runtime/dashboard/.next/server/middleware-build-manifest.js +5 -5
  182. package/dist/dashboard-runtime/dashboard/.next/server/pages/404.html +1 -1
  183. package/dist/dashboard-runtime/dashboard/.next/server/pages/500.html +1 -1
  184. package/dist/dashboard-runtime/dashboard/.next/server/server-reference-manifest.js +1 -1
  185. package/dist/dashboard-runtime/dashboard/.next/server/server-reference-manifest.json +1 -1
  186. package/dist/dashboard-runtime/dashboard/.next/static/chunks/00tz~p479bdgl.js +1 -0
  187. package/dist/dashboard-runtime/dashboard/.next/static/chunks/02i9olo-312mq.js +138 -0
  188. package/dist/dashboard-runtime/dashboard/.next/static/chunks/062k9jbtd9.lv.js +1 -0
  189. package/dist/dashboard-runtime/dashboard/.next/static/chunks/06uuhz24tvdt..js +1 -0
  190. package/dist/dashboard-runtime/dashboard/.next/static/chunks/07cp19da_kfld.js +5 -0
  191. package/dist/dashboard-runtime/dashboard/.next/static/chunks/086esp1n941jl.js +138 -0
  192. package/dist/dashboard-runtime/dashboard/.next/static/chunks/08qlxn-3d_rtu.js +1 -0
  193. package/dist/dashboard-runtime/dashboard/.next/static/chunks/09uxq~55qug8c.js +1 -0
  194. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0__g1ogrdh412.js +1 -0
  195. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0ab-ev0u1~ch5.js +1 -0
  196. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0bw682qzkh2ni.js +1 -0
  197. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0d29.l~3ip181.js +1 -0
  198. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0ewpzgu_qf0wf.js +4 -0
  199. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0jc31diex030o.js +1 -0
  200. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0k79upjc40aky.css +1 -0
  201. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0lp2g_27uyhuz.js +1 -0
  202. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0snnsfosp3~gq.js +1 -0
  203. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0tmwptel_4y0o.js +1 -0
  204. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0u9wtl06_b72x.js +1 -0
  205. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0uv55p7kzteex.js +1 -0
  206. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0v9d5wl9nsva3.js +1 -0
  207. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0xko7~ja3xuc-.js +1 -0
  208. package/dist/dashboard-runtime/dashboard/.next/static/chunks/14.dp0-y_mhjo.js +1 -0
  209. package/dist/dashboard-runtime/dashboard/.next/static/chunks/15wxh8ltqt88_.js +1 -0
  210. package/dist/dashboard-runtime/dashboard/.next/static/chunks/183~u3-4a74db.js +1 -0
  211. package/dist/dashboard-runtime/dashboard/.next/static/chunks/{turbopack-0ybyy.9-.w~ub.js → turbopack-0w.hw6u8qra5z.js} +1 -1
  212. package/dist/dashboard-runtime/dashboard/package.json +1 -0
  213. package/dist/dashboard-runtime/dashboard/src/app/(dashboard)/knowledge-base/[name]/settings/settings-client.tsx +1 -1
  214. package/dist/dashboard-runtime/dashboard/src/app/api/v1/knowledge-bases/[name]/documents/route.ts +44 -3
  215. package/dist/dashboard-runtime/dashboard/src/app/api/v1/oss/list/route.ts +125 -0
  216. package/dist/dashboard-runtime/dashboard/src/app/globals.css +46 -31
  217. package/dist/dashboard-runtime/dashboard/src/components/chat/add-mount-row.tsx +21 -55
  218. package/dist/dashboard-runtime/dashboard/src/components/chat/chat-mount-config.tsx +35 -27
  219. package/dist/dashboard-runtime/dashboard/src/components/chat/mount-empty-state.tsx +87 -0
  220. package/dist/dashboard-runtime/dashboard/src/components/chat/mount-picker.tsx +87 -0
  221. package/dist/dashboard-runtime/dashboard/src/components/chat/unified-retrieval-section.tsx +3 -2
  222. package/dist/dashboard-runtime/dashboard/src/components/documents/doc-upload-dialog.tsx +155 -54
  223. package/dist/dashboard-runtime/dashboard/src/components/documents/oss-browser.tsx +264 -0
  224. package/dist/dashboard-runtime/dashboard/src/components/documents/oss-import-tab.tsx +143 -0
  225. package/dist/dashboard-runtime/dashboard/src/components/instance/connect-instance-form.tsx +60 -60
  226. package/dist/dashboard-runtime/dashboard/src/components/knowledge-base/kb-create-form.tsx +52 -35
  227. package/dist/dashboard-runtime/dashboard/src/components/knowledge-base/kb-settings-form.tsx +152 -76
  228. package/dist/dashboard-runtime/dashboard/src/components/knowledge-base/knowledge-base-retrieval-config.ts +110 -0
  229. package/dist/dashboard-runtime/dashboard/src/components/knowledge-base/retrieval-result-count-field.tsx +106 -0
  230. package/dist/dashboard-runtime/dashboard/src/components/knowledge-base/retrieval-result-count.ts +11 -0
  231. package/dist/dashboard-runtime/dashboard/src/components/layout/detail-sidebar.tsx +84 -4
  232. package/dist/dashboard-runtime/dashboard/src/components/retrieval/assemble-retrieval-configuration.ts +22 -3
  233. package/dist/dashboard-runtime/dashboard/src/components/retrieval/retrieval-form.tsx +10 -3
  234. package/dist/dashboard-runtime/dashboard/src/components/retrieval/retrieval-params-fields.tsx +114 -56
  235. package/dist/dashboard-runtime/dashboard/src/hooks/use-detail-sidebar-collapsed.ts +86 -0
  236. package/dist/dashboard-runtime/dashboard/src/hooks/use-oss-import.ts +148 -0
  237. package/dist/dashboard-runtime/dashboard/src/hooks/use-oss-list.ts +89 -0
  238. package/dist/dashboard-runtime/dashboard/src/lib/extension-filter.ts +62 -0
  239. package/dist/dashboard-runtime/dashboard/src/lib/glob-filter.ts +76 -0
  240. package/dist/dashboard-runtime/dashboard/src/lib/oss-selection.ts +58 -0
  241. package/dist/dashboard-runtime/dashboard/src/lib/server/oss-client.ts +65 -0
  242. package/dist/dashboard-runtime/dashboard/src/schemas/knowledge-base.ts +3 -3
  243. package/dist/dashboard-runtime/dashboard/src/schemas/llm-chat.ts +1 -1
  244. package/dist/dashboard-runtime/dashboard/src/schemas/retrieval.ts +4 -1
  245. package/dist/dashboard-runtime/dashboard/src/services/api-client.ts +11 -6
  246. package/dist/dashboard-runtime/dashboard/src/services/documents.ts +27 -8
  247. package/dist/dashboard-runtime/dashboard/src/services/oss.ts +36 -0
  248. package/dist/dashboard-runtime/dashboard/src/types/knowledge-base.ts +1 -1
  249. package/dist/dashboard-runtime/dashboard/vitest.config.mjs +6 -0
  250. package/dist/dashboard-runtime/node_modules/@tablestore/tablestore-agent-sdk/dist/tsconfig.tsbuildinfo +1 -1
  251. package/dist/dashboard-runtime/node_modules/@tablestore/tablestore-agent-shared/dist/tsconfig.tsbuildinfo +1 -1
  252. package/dist/dashboard-runtime/node_modules/@tablestore/tablestore-agent-shared/dist/types.d.ts +1 -1
  253. package/dist/dashboard-runtime/node_modules/@tablestore/tablestore-agent-shared/dist/types.d.ts.map +1 -1
  254. package/dist/node_modules/@tablestore/tablestore-agent-sdk/dist/tsconfig.tsbuildinfo +1 -1
  255. package/dist/node_modules/@tablestore/tablestore-agent-shared/dist/tsconfig.tsbuildinfo +1 -1
  256. package/dist/node_modules/@tablestore/tablestore-agent-shared/dist/types.d.ts +1 -1
  257. package/dist/node_modules/@tablestore/tablestore-agent-shared/dist/types.d.ts.map +1 -1
  258. package/package.json +1 -1
  259. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/0lvo_@radix-ui_react-popper_dist_index_mjs_13rqw99._.js +0 -3
  260. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0id.4_g._.js +0 -3
  261. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0p7j-9i._.js +0 -3
  262. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0.1szyw._.js +0 -3
  263. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0251rsp._.js +0 -7
  264. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_038vjn1._.js +0 -3
  265. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_06tznmj._.js +0 -3
  266. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_09y~hs8._.js +0 -3
  267. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0_ow0x1._.js +0 -3
  268. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0t373jc._.js +0 -3
  269. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_12guzbo._.js +0 -3
  270. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_0jns2ew._.js +0 -3
  271. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/node_modules__pnpm_0aw_rgu._.js +0 -3
  272. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/node_modules__pnpm_0ld4qfm._.js +0 -3
  273. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/node_modules__pnpm_125b4co._.js +0 -3
  274. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0-ov0wxgu5b65.js +0 -1
  275. package/dist/dashboard-runtime/dashboard/.next/static/chunks/00-qnlax_4630.js +0 -1
  276. package/dist/dashboard-runtime/dashboard/.next/static/chunks/034uozc1ki09_.js +0 -1
  277. package/dist/dashboard-runtime/dashboard/.next/static/chunks/03zdsc.dicedw.js +0 -1
  278. package/dist/dashboard-runtime/dashboard/.next/static/chunks/05hmbxh7h5ct-.js +0 -1
  279. package/dist/dashboard-runtime/dashboard/.next/static/chunks/08tdws.ontiw1.js +0 -1
  280. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0azwigiwuhh08.css +0 -1
  281. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0b54rtt1-cxht.js +0 -1
  282. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0cdo38.8y_jr2.js +0 -138
  283. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0cy.fvgx7dgqx.js +0 -4
  284. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0fa.nak91jfo-.js +0 -1
  285. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0fv6q06wgazh_.js +0 -1
  286. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0g9y74cipd10n.js +0 -1
  287. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0ga6neugwmh.1.js +0 -5
  288. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0hkir82jccgck.js +0 -1
  289. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0k-x6_7dhqb~c.js +0 -1
  290. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0n42fh.zwyk35.js +0 -138
  291. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0q6lk_p74rti7.js +0 -1
  292. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0u39cc6mmeqb3.js +0 -1
  293. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0uay29z9qqouw.js +0 -1
  294. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0v0e.nl_9fjba.js +0 -1
  295. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0wd0_x8u.jzur.js +0 -1
  296. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0wf-nssu2qd_2.js +0 -1
  297. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0x7pw1zo7nxno.js +0 -1
  298. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0zbi5n76awxz1.js +0 -1
  299. /package/dist/dashboard-runtime/dashboard/.next/static/{uYteIiFtKdPhUhmILps5X → doYIl-pd6Sqax3bfUgN3q}/_buildManifest.js +0 -0
  300. /package/dist/dashboard-runtime/dashboard/.next/static/{uYteIiFtKdPhUhmILps5X → doYIl-pd6Sqax3bfUgN3q}/_clientMiddlewareManifest.js +0 -0
  301. /package/dist/dashboard-runtime/dashboard/.next/static/{uYteIiFtKdPhUhmILps5X → doYIl-pd6Sqax3bfUgN3q}/_ssgManifest.js +0 -0
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,84017,e=>{"use strict";var t=e.i(17635);e.s(["usePrevious",0,function(e){let r=t.useRef({value:e,previous:e});return t.useMemo(()=>(r.current.value!==e&&(r.current.previous=r.current.value,r.current.value=e),r.current.previous),[e])}])},90055,e=>{"use strict";let t=(0,e.i(86620).default)("chevron-up",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);e.s(["ChevronUp",0,t],90055)},20268,e=>{"use strict";let t=(0,e.i(86620).default)("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);e.s(["ChevronDown",0,t],20268)},66473,27069,e=>{"use strict";var t=e.i(44501),r=e.i(17635),o=e.i(80560);function n(e,[t,r]){return Math.min(r,Math.max(t,e))}e.s(["clamp",0,n],27069);var l=e.i(91967),a=e.i(41986),i=e.i(67928),s=e.i(43250),d=e.i(25486),c=e.i(48989),u=e.i(39340),p=e.i(45424),f=e.i(33616),m=e.i(38154),h=e.i(32374),v=e.i(80939),x=e.i(52053),y=e.i(36131),w=e.i(17256),g=e.i(72687),b=e.i(84017),S=e.i(47791),C=e.i(73772),j=e.i(6500),R=[" ","Enter","ArrowUp","ArrowDown"],E=[" ","Enter"],N="Select",[P,T,k]=(0,a.createCollection)(N),[I,D]=(0,s.createContextScope)(N,[k,m.createPopperScope]),H=(0,m.createPopperScope)(),[L,M]=I(N),[A,_]=I(N),B=e=>{let{__scopeSelect:o,children:n,open:l,defaultOpen:a,onOpenChange:i,value:s,defaultValue:c,onValueChange:u,dir:p,name:h,autoComplete:v,disabled:x,required:y,form:g}=e,b=H(o),[S,C]=r.useState(null),[j,R]=r.useState(null),[E,T]=r.useState(!1),k=(0,d.useDirection)(p),[I,D]=(0,w.useControllableState)({prop:l,defaultProp:a??!1,onChange:i,caller:N}),[M,_]=(0,w.useControllableState)({prop:s,defaultProp:c,onChange:u,caller:N}),B=r.useRef(null),V=!S||g||!!S.closest("form"),[K,O]=r.useState(new Set),F=Array.from(K).map(e=>e.props.value).join(";");return(0,t.jsx)(m.Root,{...b,children:(0,t.jsxs)(L,{required:y,scope:o,trigger:S,onTriggerChange:C,valueNode:j,onValueNodeChange:R,valueNodeHasChildren:E,onValueNodeHasChildrenChange:T,contentId:(0,f.useId)(),value:M,onValueChange:_,open:I,onOpenChange:D,dir:k,triggerPointerDownPosRef:B,disabled:x,children:[(0,t.jsx)(P.Provider,{scope:o,children:(0,t.jsx)(A,{scope:e.__scopeSelect,onNativeOptionAdd:r.useCallback(e=>{O(t=>new Set(t).add(e))},[]),onNativeOptionRemove:r.useCallback(e=>{O(t=>{let r=new Set(t);return r.delete(e),r})},[]),children:n})}),V?(0,t.jsxs)(eC,{"aria-hidden":!0,required:y,tabIndex:-1,name:h,autoComplete:v,value:M,onChange:e=>_(e.target.value),disabled:x,form:g,children:[void 0===M?(0,t.jsx)("option",{value:""}):null,Array.from(K)]},F):null]})})};B.displayName=N;var V="SelectTrigger",K=r.forwardRef((e,o)=>{let{__scopeSelect:n,disabled:a=!1,...s}=e,d=H(n),c=M(V,n),u=c.disabled||a,p=(0,i.useComposedRefs)(o,c.onTriggerChange),f=T(n),h=r.useRef("touch"),[x,y,w]=eR(e=>{let t=f().filter(e=>!e.disabled),r=t.find(e=>e.value===c.value),o=eE(t,e,r);void 0!==o&&c.onValueChange(o.value)}),g=e=>{u||(c.onOpenChange(!0),w()),e&&(c.triggerPointerDownPosRef.current={x:Math.round(e.pageX),y:Math.round(e.pageY)})};return(0,t.jsx)(m.Anchor,{asChild:!0,...d,children:(0,t.jsx)(v.Primitive.button,{type:"button",role:"combobox","aria-controls":c.contentId,"aria-expanded":c.open,"aria-required":c.required,"aria-autocomplete":"none",dir:c.dir,"data-state":c.open?"open":"closed",disabled:u,"data-disabled":u?"":void 0,"data-placeholder":ej(c.value)?"":void 0,...s,ref:p,onClick:(0,l.composeEventHandlers)(s.onClick,e=>{e.currentTarget.focus(),"mouse"!==h.current&&g(e)}),onPointerDown:(0,l.composeEventHandlers)(s.onPointerDown,e=>{h.current=e.pointerType;let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),0===e.button&&!1===e.ctrlKey&&"mouse"===e.pointerType&&(g(e),e.preventDefault())}),onKeyDown:(0,l.composeEventHandlers)(s.onKeyDown,e=>{let t=""!==x.current;e.ctrlKey||e.altKey||e.metaKey||1!==e.key.length||y(e.key),(!t||" "!==e.key)&&R.includes(e.key)&&(g(),e.preventDefault())})})})});K.displayName=V;var O="SelectValue",F=r.forwardRef((e,r)=>{let{__scopeSelect:o,className:n,style:l,children:a,placeholder:s="",...d}=e,c=M(O,o),{onValueNodeHasChildrenChange:u}=c,p=void 0!==a,f=(0,i.useComposedRefs)(r,c.onValueNodeChange);return(0,g.useLayoutEffect)(()=>{u(p)},[u,p]),(0,t.jsx)(v.Primitive.span,{...d,ref:f,style:{pointerEvents:"none"},children:ej(c.value)?(0,t.jsx)(t.Fragment,{children:s}):a})});F.displayName=O;var U=r.forwardRef((e,r)=>{let{__scopeSelect:o,children:n,...l}=e;return(0,t.jsx)(v.Primitive.span,{"aria-hidden":!0,...l,ref:r,children:n||"▼"})});U.displayName="SelectIcon";var z=e=>(0,t.jsx)(h.Portal,{asChild:!0,...e});z.displayName="SelectPortal";var W="SelectContent",q=r.forwardRef((e,n)=>{let l=M(W,e.__scopeSelect),[a,i]=r.useState();return((0,g.useLayoutEffect)(()=>{i(new DocumentFragment)},[]),l.open)?(0,t.jsx)(Z,{...e,ref:n}):a?o.createPortal((0,t.jsx)(Y,{scope:e.__scopeSelect,children:(0,t.jsx)(P.Slot,{scope:e.__scopeSelect,children:(0,t.jsx)("div",{children:e.children})})}),a):null});q.displayName=W;var[Y,G]=I(W),X=(0,x.createSlot)("SelectContent.RemoveScroll"),Z=r.forwardRef((e,o)=>{let{__scopeSelect:n,position:a="item-aligned",onCloseAutoFocus:s,onEscapeKeyDown:d,onPointerDownOutside:f,side:m,sideOffset:h,align:v,alignOffset:x,arrowPadding:y,collisionBoundary:w,collisionPadding:g,sticky:b,hideWhenDetached:S,avoidCollisions:R,...E}=e,N=M(W,n),[P,k]=r.useState(null),[I,D]=r.useState(null),H=(0,i.useComposedRefs)(o,e=>k(e)),[L,A]=r.useState(null),[_,B]=r.useState(null),V=T(n),[K,O]=r.useState(!1),F=r.useRef(!1);r.useEffect(()=>{if(P)return(0,C.hideOthers)(P)},[P]),(0,u.useFocusGuards)();let U=r.useCallback(e=>{let[t,...r]=V().map(e=>e.ref.current),[o]=r.slice(-1),n=document.activeElement;for(let r of e)if(r===n||(r?.scrollIntoView({block:"nearest"}),r===t&&I&&(I.scrollTop=0),r===o&&I&&(I.scrollTop=I.scrollHeight),r?.focus(),document.activeElement!==n))return},[V,I]),z=r.useCallback(()=>U([L,P]),[U,L,P]);r.useEffect(()=>{K&&z()},[K,z]);let{onOpenChange:q,triggerPointerDownPosRef:G}=N;r.useEffect(()=>{if(P){let e={x:0,y:0},t=t=>{e={x:Math.abs(Math.round(t.pageX)-(G.current?.x??0)),y:Math.abs(Math.round(t.pageY)-(G.current?.y??0))}},r=r=>{e.x<=10&&e.y<=10?r.preventDefault():P.contains(r.target)||q(!1),document.removeEventListener("pointermove",t),G.current=null};return null!==G.current&&(document.addEventListener("pointermove",t),document.addEventListener("pointerup",r,{capture:!0,once:!0})),()=>{document.removeEventListener("pointermove",t),document.removeEventListener("pointerup",r,{capture:!0})}}},[P,q,G]),r.useEffect(()=>{let e=()=>q(!1);return window.addEventListener("blur",e),window.addEventListener("resize",e),()=>{window.removeEventListener("blur",e),window.removeEventListener("resize",e)}},[q]);let[Z,$]=eR(e=>{let t=V().filter(e=>!e.disabled),r=t.find(e=>e.ref.current===document.activeElement),o=eE(t,e,r);o&&setTimeout(()=>o.ref.current.focus())}),ee=r.useCallback((e,t,r)=>{let o=!F.current&&!r;(void 0!==N.value&&N.value===t||o)&&(A(e),o&&(F.current=!0))},[N.value]),et=r.useCallback(()=>P?.focus(),[P]),er=r.useCallback((e,t,r)=>{let o=!F.current&&!r;(void 0!==N.value&&N.value===t||o)&&B(e)},[N.value]),eo="popper"===a?Q:J,en=eo===Q?{side:m,sideOffset:h,align:v,alignOffset:x,arrowPadding:y,collisionBoundary:w,collisionPadding:g,sticky:b,hideWhenDetached:S,avoidCollisions:R}:{};return(0,t.jsx)(Y,{scope:n,content:P,viewport:I,onViewportChange:D,itemRefCallback:ee,selectedItem:L,onItemLeave:et,itemTextRefCallback:er,focusSelectedItem:z,selectedItemText:_,position:a,isPositioned:K,searchRef:Z,children:(0,t.jsx)(j.RemoveScroll,{as:X,allowPinchZoom:!0,children:(0,t.jsx)(p.FocusScope,{asChild:!0,trapped:N.open,onMountAutoFocus:e=>{e.preventDefault()},onUnmountAutoFocus:(0,l.composeEventHandlers)(s,e=>{N.trigger?.focus({preventScroll:!0}),e.preventDefault()}),children:(0,t.jsx)(c.DismissableLayer,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:d,onPointerDownOutside:f,onFocusOutside:e=>e.preventDefault(),onDismiss:()=>N.onOpenChange(!1),children:(0,t.jsx)(eo,{role:"listbox",id:N.contentId,"data-state":N.open?"open":"closed",dir:N.dir,onContextMenu:e=>e.preventDefault(),...E,...en,onPlaced:()=>O(!0),ref:H,style:{display:"flex",flexDirection:"column",outline:"none",...E.style},onKeyDown:(0,l.composeEventHandlers)(E.onKeyDown,e=>{let t=e.ctrlKey||e.altKey||e.metaKey;if("Tab"===e.key&&e.preventDefault(),t||1!==e.key.length||$(e.key),["ArrowUp","ArrowDown","Home","End"].includes(e.key)){let t=V().filter(e=>!e.disabled).map(e=>e.ref.current);if(["ArrowUp","End"].includes(e.key)&&(t=t.slice().reverse()),["ArrowUp","ArrowDown"].includes(e.key)){let r=e.target,o=t.indexOf(r);t=t.slice(o+1)}setTimeout(()=>U(t)),e.preventDefault()}})})})})})})});Z.displayName="SelectContentImpl";var J=r.forwardRef((e,o)=>{let{__scopeSelect:l,onPlaced:a,...s}=e,d=M(W,l),c=G(W,l),[u,p]=r.useState(null),[f,m]=r.useState(null),h=(0,i.useComposedRefs)(o,e=>m(e)),x=T(l),y=r.useRef(!1),w=r.useRef(!0),{viewport:b,selectedItem:S,selectedItemText:C,focusSelectedItem:j}=c,R=r.useCallback(()=>{if(d.trigger&&d.valueNode&&u&&f&&b&&S&&C){let e=d.trigger.getBoundingClientRect(),t=f.getBoundingClientRect(),r=d.valueNode.getBoundingClientRect(),o=C.getBoundingClientRect();if("rtl"!==d.dir){let l=o.left-t.left,a=r.left-l,i=e.left-a,s=e.width+i,d=Math.max(s,t.width),c=n(a,[10,Math.max(10,window.innerWidth-10-d)]);u.style.minWidth=s+"px",u.style.left=c+"px"}else{let l=t.right-o.right,a=window.innerWidth-r.right-l,i=window.innerWidth-e.right-a,s=e.width+i,d=Math.max(s,t.width),c=n(a,[10,Math.max(10,window.innerWidth-10-d)]);u.style.minWidth=s+"px",u.style.right=c+"px"}let l=x(),i=window.innerHeight-20,s=b.scrollHeight,c=window.getComputedStyle(f),p=parseInt(c.borderTopWidth,10),m=parseInt(c.paddingTop,10),h=parseInt(c.borderBottomWidth,10),v=p+m+s+parseInt(c.paddingBottom,10)+h,w=Math.min(5*S.offsetHeight,v),g=window.getComputedStyle(b),j=parseInt(g.paddingTop,10),R=parseInt(g.paddingBottom,10),E=e.top+e.height/2-10,N=S.offsetHeight/2,P=p+m+(S.offsetTop+N);if(P<=E){let e=l.length>0&&S===l[l.length-1].ref.current;u.style.bottom="0px";let t=Math.max(i-E,N+(e?R:0)+(f.clientHeight-b.offsetTop-b.offsetHeight)+h);u.style.height=P+t+"px"}else{let e=l.length>0&&S===l[0].ref.current;u.style.top="0px";let t=Math.max(E,p+b.offsetTop+(e?j:0)+N);u.style.height=t+(v-P)+"px",b.scrollTop=P-E+b.offsetTop}u.style.margin="10px 0",u.style.minHeight=w+"px",u.style.maxHeight=i+"px",a?.(),requestAnimationFrame(()=>y.current=!0)}},[x,d.trigger,d.valueNode,u,f,b,S,C,d.dir,a]);(0,g.useLayoutEffect)(()=>R(),[R]);let[E,N]=r.useState();(0,g.useLayoutEffect)(()=>{f&&N(window.getComputedStyle(f).zIndex)},[f]);let P=r.useCallback(e=>{e&&!0===w.current&&(R(),j?.(),w.current=!1)},[R,j]);return(0,t.jsx)($,{scope:l,contentWrapper:u,shouldExpandOnScrollRef:y,onScrollButtonChange:P,children:(0,t.jsx)("div",{ref:p,style:{display:"flex",flexDirection:"column",position:"fixed",zIndex:E},children:(0,t.jsx)(v.Primitive.div,{...s,ref:h,style:{boxSizing:"border-box",maxHeight:"100%",...s.style}})})})});J.displayName="SelectItemAlignedPosition";var Q=r.forwardRef((e,r)=>{let{__scopeSelect:o,align:n="start",collisionPadding:l=10,...a}=e,i=H(o);return(0,t.jsx)(m.Content,{...i,...a,ref:r,align:n,collisionPadding:l,style:{boxSizing:"border-box",...a.style,"--radix-select-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-select-content-available-width":"var(--radix-popper-available-width)","--radix-select-content-available-height":"var(--radix-popper-available-height)","--radix-select-trigger-width":"var(--radix-popper-anchor-width)","--radix-select-trigger-height":"var(--radix-popper-anchor-height)"}})});Q.displayName="SelectPopperPosition";var[$,ee]=I(W,{}),et="SelectViewport",er=r.forwardRef((e,o)=>{let{__scopeSelect:n,nonce:a,...s}=e,d=G(et,n),c=ee(et,n),u=(0,i.useComposedRefs)(o,d.onViewportChange),p=r.useRef(0);return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("style",{dangerouslySetInnerHTML:{__html:"[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}"},nonce:a}),(0,t.jsx)(P.Slot,{scope:n,children:(0,t.jsx)(v.Primitive.div,{"data-radix-select-viewport":"",role:"presentation",...s,ref:u,style:{position:"relative",flex:1,overflow:"hidden auto",...s.style},onScroll:(0,l.composeEventHandlers)(s.onScroll,e=>{let t=e.currentTarget,{contentWrapper:r,shouldExpandOnScrollRef:o}=c;if(o?.current&&r){let e=Math.abs(p.current-t.scrollTop);if(e>0){let o=window.innerHeight-20,n=Math.max(parseFloat(r.style.minHeight),parseFloat(r.style.height));if(n<o){let l=n+e,a=Math.min(o,l),i=l-a;r.style.height=a+"px","0px"===r.style.bottom&&(t.scrollTop=i>0?i:0,r.style.justifyContent="flex-end")}}}p.current=t.scrollTop})})})]})});er.displayName=et;var eo="SelectGroup",[en,el]=I(eo);r.forwardRef((e,r)=>{let{__scopeSelect:o,...n}=e,l=(0,f.useId)();return(0,t.jsx)(en,{scope:o,id:l,children:(0,t.jsx)(v.Primitive.div,{role:"group","aria-labelledby":l,...n,ref:r})})}).displayName=eo;var ea="SelectLabel",ei=r.forwardRef((e,r)=>{let{__scopeSelect:o,...n}=e,l=el(ea,o);return(0,t.jsx)(v.Primitive.div,{id:l.id,...n,ref:r})});ei.displayName=ea;var es="SelectItem",[ed,ec]=I(es),eu=r.forwardRef((e,o)=>{let{__scopeSelect:n,value:a,disabled:s=!1,textValue:d,...c}=e,u=M(es,n),p=G(es,n),m=u.value===a,[h,x]=r.useState(d??""),[y,w]=r.useState(!1),g=(0,i.useComposedRefs)(o,e=>p.itemRefCallback?.(e,a,s)),b=(0,f.useId)(),S=r.useRef("touch"),C=()=>{s||(u.onValueChange(a),u.onOpenChange(!1))};if(""===a)throw Error("A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.");return(0,t.jsx)(ed,{scope:n,value:a,disabled:s,textId:b,isSelected:m,onItemTextChange:r.useCallback(e=>{x(t=>t||(e?.textContent??"").trim())},[]),children:(0,t.jsx)(P.ItemSlot,{scope:n,value:a,disabled:s,textValue:h,children:(0,t.jsx)(v.Primitive.div,{role:"option","aria-labelledby":b,"data-highlighted":y?"":void 0,"aria-selected":m&&y,"data-state":m?"checked":"unchecked","aria-disabled":s||void 0,"data-disabled":s?"":void 0,tabIndex:s?void 0:-1,...c,ref:g,onFocus:(0,l.composeEventHandlers)(c.onFocus,()=>w(!0)),onBlur:(0,l.composeEventHandlers)(c.onBlur,()=>w(!1)),onClick:(0,l.composeEventHandlers)(c.onClick,()=>{"mouse"!==S.current&&C()}),onPointerUp:(0,l.composeEventHandlers)(c.onPointerUp,()=>{"mouse"===S.current&&C()}),onPointerDown:(0,l.composeEventHandlers)(c.onPointerDown,e=>{S.current=e.pointerType}),onPointerMove:(0,l.composeEventHandlers)(c.onPointerMove,e=>{S.current=e.pointerType,s?p.onItemLeave?.():"mouse"===S.current&&e.currentTarget.focus({preventScroll:!0})}),onPointerLeave:(0,l.composeEventHandlers)(c.onPointerLeave,e=>{e.currentTarget===document.activeElement&&p.onItemLeave?.()}),onKeyDown:(0,l.composeEventHandlers)(c.onKeyDown,e=>{(p.searchRef?.current===""||" "!==e.key)&&(E.includes(e.key)&&C()," "===e.key&&e.preventDefault())})})})})});eu.displayName=es;var ep="SelectItemText",ef=r.forwardRef((e,n)=>{let{__scopeSelect:l,className:a,style:s,...d}=e,c=M(ep,l),u=G(ep,l),p=ec(ep,l),f=_(ep,l),[m,h]=r.useState(null),x=(0,i.useComposedRefs)(n,e=>h(e),p.onItemTextChange,e=>u.itemTextRefCallback?.(e,p.value,p.disabled)),y=m?.textContent,w=r.useMemo(()=>(0,t.jsx)("option",{value:p.value,disabled:p.disabled,children:y},p.value),[p.disabled,p.value,y]),{onNativeOptionAdd:b,onNativeOptionRemove:S}=f;return(0,g.useLayoutEffect)(()=>(b(w),()=>S(w)),[b,S,w]),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(v.Primitive.span,{id:p.textId,...d,ref:x}),p.isSelected&&c.valueNode&&!c.valueNodeHasChildren?o.createPortal(d.children,c.valueNode):null]})});ef.displayName=ep;var em="SelectItemIndicator",eh=r.forwardRef((e,r)=>{let{__scopeSelect:o,...n}=e;return ec(em,o).isSelected?(0,t.jsx)(v.Primitive.span,{"aria-hidden":!0,...n,ref:r}):null});eh.displayName=em;var ev="SelectScrollUpButton",ex=r.forwardRef((e,o)=>{let n=G(ev,e.__scopeSelect),l=ee(ev,e.__scopeSelect),[a,s]=r.useState(!1),d=(0,i.useComposedRefs)(o,l.onScrollButtonChange);return(0,g.useLayoutEffect)(()=>{if(n.viewport&&n.isPositioned){let e=function(){s(t.scrollTop>0)},t=n.viewport;return e(),t.addEventListener("scroll",e),()=>t.removeEventListener("scroll",e)}},[n.viewport,n.isPositioned]),a?(0,t.jsx)(eg,{...e,ref:d,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop=e.scrollTop-t.offsetHeight)}}):null});ex.displayName=ev;var ey="SelectScrollDownButton",ew=r.forwardRef((e,o)=>{let n=G(ey,e.__scopeSelect),l=ee(ey,e.__scopeSelect),[a,s]=r.useState(!1),d=(0,i.useComposedRefs)(o,l.onScrollButtonChange);return(0,g.useLayoutEffect)(()=>{if(n.viewport&&n.isPositioned){let e=function(){let e=t.scrollHeight-t.clientHeight;s(Math.ceil(t.scrollTop)<e)},t=n.viewport;return e(),t.addEventListener("scroll",e),()=>t.removeEventListener("scroll",e)}},[n.viewport,n.isPositioned]),a?(0,t.jsx)(eg,{...e,ref:d,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop=e.scrollTop+t.offsetHeight)}}):null});ew.displayName=ey;var eg=r.forwardRef((e,o)=>{let{__scopeSelect:n,onAutoScroll:a,...i}=e,s=G("SelectScrollButton",n),d=r.useRef(null),c=T(n),u=r.useCallback(()=>{null!==d.current&&(window.clearInterval(d.current),d.current=null)},[]);return r.useEffect(()=>()=>u(),[u]),(0,g.useLayoutEffect)(()=>{let e=c().find(e=>e.ref.current===document.activeElement);e?.ref.current?.scrollIntoView({block:"nearest"})},[c]),(0,t.jsx)(v.Primitive.div,{"aria-hidden":!0,...i,ref:o,style:{flexShrink:0,...i.style},onPointerDown:(0,l.composeEventHandlers)(i.onPointerDown,()=>{null===d.current&&(d.current=window.setInterval(a,50))}),onPointerMove:(0,l.composeEventHandlers)(i.onPointerMove,()=>{s.onItemLeave?.(),null===d.current&&(d.current=window.setInterval(a,50))}),onPointerLeave:(0,l.composeEventHandlers)(i.onPointerLeave,()=>{u()})})}),eb=r.forwardRef((e,r)=>{let{__scopeSelect:o,...n}=e;return(0,t.jsx)(v.Primitive.div,{"aria-hidden":!0,...n,ref:r})});eb.displayName="SelectSeparator";var eS="SelectArrow";r.forwardRef((e,r)=>{let{__scopeSelect:o,...n}=e,l=H(o),a=M(eS,o),i=G(eS,o);return a.open&&"popper"===i.position?(0,t.jsx)(m.Arrow,{...l,...n,ref:r}):null}).displayName=eS;var eC=r.forwardRef(({__scopeSelect:e,value:o,...n},l)=>{let a=r.useRef(null),s=(0,i.useComposedRefs)(l,a),d=(0,b.usePrevious)(o);return r.useEffect(()=>{let e=a.current;if(!e)return;let t=Object.getOwnPropertyDescriptor(window.HTMLSelectElement.prototype,"value").set;if(d!==o&&t){let r=new Event("change",{bubbles:!0});t.call(e,o),e.dispatchEvent(r)}},[d,o]),(0,t.jsx)(v.Primitive.select,{...n,style:{...S.VISUALLY_HIDDEN_STYLES,...n.style},ref:s,defaultValue:o})});function ej(e){return""===e||void 0===e}function eR(e){let t=(0,y.useCallbackRef)(e),o=r.useRef(""),n=r.useRef(0),l=r.useCallback(e=>{let r=o.current+e;t(r),function e(t){o.current=t,window.clearTimeout(n.current),""!==t&&(n.current=window.setTimeout(()=>e(""),1e3))}(r)},[t]),a=r.useCallback(()=>{o.current="",window.clearTimeout(n.current)},[]);return r.useEffect(()=>()=>window.clearTimeout(n.current),[]),[o,l,a]}function eE(e,t,r){var o,n;let l=t.length>1&&Array.from(t).every(e=>e===t[0])?t[0]:t,a=r?e.indexOf(r):-1,i=(o=e,n=Math.max(a,0),o.map((e,t)=>o[(n+t)%o.length]));1===l.length&&(i=i.filter(e=>e!==r));let s=i.find(e=>e.textValue.toLowerCase().startsWith(l.toLowerCase()));return s!==r?s:void 0}eC.displayName="SelectBubbleInput";var eN=e.i(6703),eP=e.i(20268),eT=e.i(90055),ek=e.i(76490);let eI=r.forwardRef(({className:e,children:r,...o},n)=>(0,t.jsxs)(K,{ref:n,className:(0,ek.cn)("flex h-8 w-full items-center justify-between whitespace-nowrap rounded-md border border-[hsl(var(--border))] px-3 py-1 text-sm transition-colors data-[placeholder]:text-[hsl(var(--subtle))] focus:outline-none focus:border-[hsl(var(--primary))] focus:ring-2 focus:ring-[hsl(var(--primary)/0.2)] disabled:cursor-not-allowed disabled:bg-[hsl(var(--secondary))] disabled:text-[hsl(var(--muted-foreground))] [&>span]:line-clamp-1","bg-[hsl(var(--card))]",e),...o,children:[r,(0,t.jsx)(U,{asChild:!0,children:(0,t.jsx)(eP.ChevronDown,{className:"h-4 w-4 opacity-50"})})]}));eI.displayName=K.displayName;let eD=r.forwardRef(({className:e,...r},o)=>(0,t.jsx)(ex,{ref:o,className:(0,ek.cn)("flex cursor-default items-center justify-center py-1",e),...r,children:(0,t.jsx)(eT.ChevronUp,{className:"h-4 w-4"})}));eD.displayName=ex.displayName;let eH=r.forwardRef(({className:e,...r},o)=>(0,t.jsx)(ew,{ref:o,className:(0,ek.cn)("flex cursor-default items-center justify-center py-1",e),...r,children:(0,t.jsx)(eP.ChevronDown,{className:"h-4 w-4"})}));eH.displayName=ew.displayName;let eL=r.forwardRef(({className:e,children:r,position:o="popper",...n},l)=>(0,t.jsx)(z,{children:(0,t.jsxs)(q,{ref:l,className:(0,ek.cn)("relative z-50 max-h-72 min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border border-[hsl(var(--border))] shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-select-content-transform-origin]","bg-[hsl(var(--popover))] text-[hsl(var(--popover-foreground))]","popper"===o&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",e),position:o,...n,children:[(0,t.jsx)(eD,{}),(0,t.jsx)(er,{className:(0,ek.cn)("p-1","popper"===o&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),children:r}),(0,t.jsx)(eH,{})]})}));eL.displayName=q.displayName,r.forwardRef(({className:e,...r},o)=>(0,t.jsx)(ei,{ref:o,className:(0,ek.cn)("px-2 py-1.5 text-sm font-semibold",e),...r})).displayName=ei.displayName;let eM=r.forwardRef(({className:e,children:r,...o},n)=>(0,t.jsxs)(eu,{ref:n,className:(0,ek.cn)("relative flex w-full cursor-pointer select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none transition-colors data-[disabled]:pointer-events-none data-[disabled]:opacity-50","hover:bg-[hsl(var(--primary-soft))] hover:text-[hsl(var(--primary))] focus:bg-[hsl(var(--primary-soft))] focus:text-[hsl(var(--primary))]","data-[state=checked]:bg-[hsl(var(--primary-soft))] data-[state=checked]:text-[hsl(var(--primary))]",e),...o,children:[(0,t.jsx)("span",{className:"absolute right-2 flex h-3.5 w-3.5 items-center justify-center",children:(0,t.jsx)(eh,{children:(0,t.jsx)(eN.Check,{className:"h-4 w-4"})})}),(0,t.jsx)(ef,{children:r})]}));eM.displayName=eu.displayName,r.forwardRef(({className:e,...r},o)=>(0,t.jsx)(eb,{ref:o,className:(0,ek.cn)("-mx-1 my-1 h-px bg-muted",e),...r})).displayName=eb.displayName,e.s(["Select",0,B,"SelectContent",0,eL,"SelectItem",0,eM,"SelectTrigger",0,eI,"SelectValue",0,F],66473)}]);
@@ -0,0 +1 @@
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,66476,50110,e=>{"use strict";var t=e.i(44501),r=e.i(17635);e.i(80560);var o=e.i(6102),n=["a","button","div","form","h2","h3","img","input","label","li","nav","ol","p","select","span","svg","ul"].reduce((e,n)=>{let l=(0,o.createSlot)(`Primitive.${n}`),a=r.forwardRef((e,r)=>{let{asChild:o,...a}=e;return"u">typeof window&&(window[Symbol.for("radix-ui")]=!0),(0,t.jsx)(o?l:n,{...a,ref:r})});return a.displayName=`Primitive.${n}`,{...e,[n]:a}},{});e.s(["Primitive",0,n],50110);var l=r.forwardRef((e,r)=>(0,t.jsx)(n.label,{...e,ref:r,onMouseDown:t=>{t.target.closest("button, input, select, textarea")||(e.onMouseDown?.(t),!t.defaultPrevented&&t.detail>1&&t.preventDefault())}}));l.displayName="Label";var a=e.i(94237),i=e.i(76490);let s=(0,a.cva)("text-sm font-medium leading-none text-[hsl(var(--foreground))] peer-disabled:cursor-not-allowed peer-disabled:opacity-70"),d=r.forwardRef(({className:e,...r},o)=>(0,t.jsx)(l,{ref:o,className:(0,i.cn)(s(),e),...r}));d.displayName=l.displayName,e.s(["Label",0,d],66476)},7284,e=>{"use strict";e.s(["clsx",0,function(){for(var e,t,r=0,o="",n=arguments.length;r<n;r++)(e=arguments[r])&&(t=function e(t){var r,o,n="";if("string"==typeof t||"number"==typeof t)n+=t;else if("object"==typeof t)if(Array.isArray(t)){var l=t.length;for(r=0;r<l;r++)t[r]&&(o=e(t[r]))&&(n&&(n+=" "),n+=o)}else for(o in t)t[o]&&(n&&(n+=" "),n+=o);return n}(e))&&(o&&(o+=" "),o+=t);return o}])},76490,e=>{"use strict";var t=e.i(7284),r=e.i(77130);e.s(["cn",0,function(...e){return(0,r.twMerge)((0,t.clsx)(e))},"extractFileName",0,function(e){let t=e.split("/");return t[t.length-1]||e}])},67928,e=>{"use strict";var t=e.i(17635);function r(e,t){if("function"==typeof e)return e(t);null!=e&&(e.current=t)}function o(...e){return t=>{let o=!1,n=e.map(e=>{let n=r(e,t);return o||"function"!=typeof n||(o=!0),n});if(o)return()=>{for(let t=0;t<n.length;t++){let o=n[t];"function"==typeof o?o():r(e[t],null)}}}}e.s(["composeRefs",0,o,"useComposedRefs",0,function(...e){return t.useCallback(o(...e),e)}])},6102,e=>{"use strict";var t=e.i(17635),r=e.i(67928),o=e.i(44501),n=Symbol.for("react.lazy"),l=t[" use ".trim().toString()];function a(e){var t;return null!=e&&"object"==typeof e&&"$$typeof"in e&&e.$$typeof===n&&"_payload"in e&&"object"==typeof(t=e._payload)&&null!==t&&"then"in t}function i(e){var n;let i,s=(n=e,(i=t.forwardRef((e,o)=>{let{children:n,...i}=e;if(a(n)&&"function"==typeof l&&(n=l(n._payload)),t.isValidElement(n)){var s;let e,l,a=(s=n,(l=(e=Object.getOwnPropertyDescriptor(s.props,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?s.ref:(l=(e=Object.getOwnPropertyDescriptor(s,"ref")?.get)&&"isReactWarning"in e&&e.isReactWarning)?s.props.ref:s.props.ref||s.ref),d=function(e,t){let r={...t};for(let o in t){let n=e[o],l=t[o];/^on[A-Z]/.test(o)?n&&l?r[o]=(...e)=>{let t=l(...e);return n(...e),t}:n&&(r[o]=n):"style"===o?r[o]={...n,...l}:"className"===o&&(r[o]=[n,l].filter(Boolean).join(" "))}return{...e,...r}}(i,n.props);return n.type!==t.Fragment&&(d.ref=o?(0,r.composeRefs)(o,a):a),t.cloneElement(n,d)}return t.Children.count(n)>1?t.Children.only(null):null})).displayName=`${n}.SlotClone`,i),d=t.forwardRef((e,r)=>{let{children:n,...i}=e;a(n)&&"function"==typeof l&&(n=l(n._payload));let d=t.Children.toArray(n),u=d.find(c);if(u){let e=u.props.children,n=d.map(r=>r!==u?r:t.Children.count(e)>1?t.Children.only(null):t.isValidElement(e)?e.props.children:null);return(0,o.jsx)(s,{...i,ref:r,children:t.isValidElement(e)?t.cloneElement(e,void 0,n):null})}return(0,o.jsx)(s,{...i,ref:r,children:n})});return d.displayName=`${e}.Slot`,d}var s=i("Slot"),d=Symbol("radix.slottable");function c(e){return t.isValidElement(e)&&"function"==typeof e.type&&"__radixId"in e.type&&e.type.__radixId===d}e.s(["Slot",0,s,"createSlot",0,i])},94237,e=>{"use strict";var t=e.i(7284);let r=e=>"boolean"==typeof e?`${e}`:0===e?"0":e,o=t.clsx;e.s(["cva",0,(e,t)=>n=>{var l;if((null==t?void 0:t.variants)==null)return o(e,null==n?void 0:n.class,null==n?void 0:n.className);let{variants:a,defaultVariants:i}=t,s=Object.keys(a).map(e=>{let t=null==n?void 0:n[e],o=null==i?void 0:i[e];if(null===t)return null;let l=r(t)||r(o);return a[e][l]}),d=n&&Object.entries(n).reduce((e,t)=>{let[r,o]=t;return void 0===o||(e[r]=o),e},{});return o(e,s,null==t||null==(l=t.compoundVariants)?void 0:l.reduce((e,t)=>{let{class:r,className:o,...n}=t;return Object.entries(n).every(e=>{let[t,r]=e;return Array.isArray(r)?r.includes({...i,...d}[t]):({...i,...d})[t]===r})?[...e,r,o]:e},[]),null==n?void 0:n.class,null==n?void 0:n.className)}])},42595,e=>{"use strict";var t=e.i(44501),r=e.i(17635),o=e.i(6102),n=e.i(94237),l=e.i(76490);let a=(0,n.cva)("inline-flex items-center justify-center gap-1.5 whitespace-nowrap rounded-md text-sm font-medium transition-colors focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[hsl(var(--primary)/0.3)] focus-visible:ring-offset-1 focus-visible:ring-offset-[hsl(var(--background))] disabled:pointer-events-none disabled:opacity-50 [&_svg]:pointer-events-none [&_svg]:size-4 [&_svg]:shrink-0",{variants:{variant:{default:"bg-[hsl(var(--primary))] text-[hsl(var(--primary-foreground))] shadow-sm hover:opacity-90",destructive:"bg-[hsl(var(--destructive))] text-[hsl(var(--destructive-foreground))] shadow-sm hover:opacity-90",outline:"border border-[hsl(var(--border))] bg-[hsl(var(--card))] text-[hsl(var(--foreground))] shadow-sm hover:border-[hsl(var(--primary))] hover:text-[hsl(var(--primary))]",secondary:"bg-[hsl(var(--secondary))] text-[hsl(var(--secondary-foreground))] shadow-sm hover:opacity-80",ghost:"hover:bg-[hsl(var(--accent))] hover:text-[hsl(var(--accent-foreground))]",link:"text-[hsl(var(--primary))] underline-offset-4 hover:underline"},size:{default:"h-8 px-3 py-1",sm:"h-7 rounded-md px-3 text-xs",lg:"h-10 rounded-md px-4",icon:"h-8 w-8"}},defaultVariants:{variant:"default",size:"default"}}),i=r.forwardRef(({className:e,variant:r,size:n,asChild:i=!1,...s},d)=>{let c=i?o.Slot:"button";return(0,t.jsx)(c,{className:(0,l.cn)(a({variant:r,size:n,className:e})),ref:d,...s})});i.displayName="Button",e.s(["Button",0,i])},86620,e=>{"use strict";var t=e.i(17635);let r=(...e)=>e.filter((e,t,r)=>!!e&&""!==e.trim()&&r.indexOf(e)===t).join(" ").trim(),o=e=>{let t=e.replace(/^([A-Z])|[\s-_]+(\w)/g,(e,t,r)=>r?r.toUpperCase():t.toLowerCase());return t.charAt(0).toUpperCase()+t.slice(1)};var n={xmlns:"http://www.w3.org/2000/svg",width:24,height:24,viewBox:"0 0 24 24",fill:"none",stroke:"currentColor",strokeWidth:2,strokeLinecap:"round",strokeLinejoin:"round"};let l=(0,t.createContext)({}),a=(0,t.forwardRef)(({color:e,size:o,strokeWidth:a,absoluteStrokeWidth:i,className:s="",children:d,iconNode:c,...u},p)=>{let{size:f=24,strokeWidth:v=2,absoluteStrokeWidth:m=!1,color:h="currentColor",className:y=""}=(0,t.useContext)(l)??{},g=i??m?24*Number(a??v)/Number(o??f):a??v;return(0,t.createElement)("svg",{ref:p,...n,width:o??f??n.width,height:o??f??n.height,stroke:e??h,strokeWidth:g,className:r("lucide",y,s),...!d&&!(e=>{for(let t in e)if(t.startsWith("aria-")||"role"===t||"title"===t)return!0;return!1})(u)&&{"aria-hidden":"true"},...u},[...c.map(([e,r])=>(0,t.createElement)(e,r)),...Array.isArray(d)?d:[d]])});e.s(["default",0,(e,n)=>{let l=(0,t.forwardRef)(({className:l,...i},s)=>(0,t.createElement)(a,{ref:s,iconNode:n,className:r(`lucide-${o(e).replace(/([a-z0-9])([A-Z])/g,"$1-$2").toLowerCase()}`,`lucide-${e}`,l),...i}));return l.displayName=o(e),l}],86620)},23888,e=>{"use strict";var t=e.i(44501),r=e.i(17635),o=e.i(76490);let n=r.forwardRef(({className:e,type:r,...n},l)=>(0,t.jsx)("input",{type:r,className:(0,o.cn)("flex h-8 w-full rounded-md border border-[hsl(var(--border))] bg-[hsl(var(--card))] px-3 py-1 text-sm transition-colors","file:border-0 file:bg-transparent file:text-sm file:font-medium file:text-foreground","placeholder:text-[hsl(var(--subtle))]","focus-visible:outline-none focus-visible:border-[hsl(var(--primary))] focus-visible:ring-2 focus-visible:ring-[hsl(var(--primary)/0.2)] focus-visible:ring-offset-0","disabled:cursor-not-allowed disabled:bg-[hsl(var(--secondary))] disabled:text-[hsl(var(--muted-foreground))]",e),ref:l,...n}));n.displayName="Input",e.s(["Input",0,n])},47791,e=>{"use strict";var t=e.i(17635),r=e.i(80939),o=e.i(44501),n=Object.freeze({position:"absolute",border:0,width:1,height:1,padding:0,margin:-1,overflow:"hidden",clip:"rect(0, 0, 0, 0)",whiteSpace:"nowrap",wordWrap:"normal"}),l=t.forwardRef((e,t)=>(0,o.jsx)(r.Primitive.span,{...e,ref:t,style:{...n,...e.style}}));l.displayName="VisuallyHidden",e.s(["Root",0,l,"VISUALLY_HIDDEN_STYLES",0,n])},20268,e=>{"use strict";let t=(0,e.i(86620).default)("chevron-down",[["path",{d:"m6 9 6 6 6-6",key:"qrunsl"}]]);e.s(["ChevronDown",0,t],20268)},84017,e=>{"use strict";var t=e.i(17635);e.s(["usePrevious",0,function(e){let r=t.useRef({value:e,previous:e});return t.useMemo(()=>(r.current.value!==e&&(r.current.previous=r.current.value,r.current.value=e),r.current.previous),[e])}])},90055,e=>{"use strict";let t=(0,e.i(86620).default)("chevron-up",[["path",{d:"m18 15-6-6-6 6",key:"153udz"}]]);e.s(["ChevronUp",0,t],90055)},66473,27069,e=>{"use strict";var t=e.i(44501),r=e.i(17635),o=e.i(80560);function n(e,[t,r]){return Math.min(r,Math.max(t,e))}e.s(["clamp",0,n],27069);var l=e.i(91967),a=e.i(41986),i=e.i(67928),s=e.i(43250),d=e.i(25486),c=e.i(48989),u=e.i(39340),p=e.i(45424),f=e.i(33616),v=e.i(38154),m=e.i(32374),h=e.i(80939),y=e.i(52053),g=e.i(36131),x=e.i(17256),w=e.i(72687),b=e.i(84017),S=e.i(47791),C=e.i(73772),j=e.i(6500),N=[" ","Enter","ArrowUp","ArrowDown"],R=[" ","Enter"],E="Select",[P,k,T]=(0,a.createCollection)(E),[I,L]=(0,s.createContextScope)(E,[T,v.createPopperScope]),D=(0,v.createPopperScope)(),[H,A]=I(E),[_,M]=I(E),V=e=>{let{__scopeSelect:o,children:n,open:l,defaultOpen:a,onOpenChange:i,value:s,defaultValue:c,onValueChange:u,dir:p,name:m,autoComplete:h,disabled:y,required:g,form:w}=e,b=D(o),[S,C]=r.useState(null),[j,N]=r.useState(null),[R,k]=r.useState(!1),T=(0,d.useDirection)(p),[I,L]=(0,x.useControllableState)({prop:l,defaultProp:a??!1,onChange:i,caller:E}),[A,M]=(0,x.useControllableState)({prop:s,defaultProp:c,onChange:u,caller:E}),V=r.useRef(null),O=!S||w||!!S.closest("form"),[B,W]=r.useState(new Set),z=Array.from(B).map(e=>e.props.value).join(";");return(0,t.jsx)(v.Root,{...b,children:(0,t.jsxs)(H,{required:g,scope:o,trigger:S,onTriggerChange:C,valueNode:j,onValueNodeChange:N,valueNodeHasChildren:R,onValueNodeHasChildrenChange:k,contentId:(0,f.useId)(),value:A,onValueChange:M,open:I,onOpenChange:L,dir:T,triggerPointerDownPosRef:V,disabled:y,children:[(0,t.jsx)(P.Provider,{scope:o,children:(0,t.jsx)(_,{scope:e.__scopeSelect,onNativeOptionAdd:r.useCallback(e=>{W(t=>new Set(t).add(e))},[]),onNativeOptionRemove:r.useCallback(e=>{W(t=>{let r=new Set(t);return r.delete(e),r})},[]),children:n})}),O?(0,t.jsxs)(eC,{"aria-hidden":!0,required:g,tabIndex:-1,name:m,autoComplete:h,value:A,onChange:e=>M(e.target.value),disabled:y,form:w,children:[void 0===A?(0,t.jsx)("option",{value:""}):null,Array.from(B)]},z):null]})})};V.displayName=E;var O="SelectTrigger",B=r.forwardRef((e,o)=>{let{__scopeSelect:n,disabled:a=!1,...s}=e,d=D(n),c=A(O,n),u=c.disabled||a,p=(0,i.useComposedRefs)(o,c.onTriggerChange),f=k(n),m=r.useRef("touch"),[y,g,x]=eN(e=>{let t=f().filter(e=>!e.disabled),r=t.find(e=>e.value===c.value),o=eR(t,e,r);void 0!==o&&c.onValueChange(o.value)}),w=e=>{u||(c.onOpenChange(!0),x()),e&&(c.triggerPointerDownPosRef.current={x:Math.round(e.pageX),y:Math.round(e.pageY)})};return(0,t.jsx)(v.Anchor,{asChild:!0,...d,children:(0,t.jsx)(h.Primitive.button,{type:"button",role:"combobox","aria-controls":c.contentId,"aria-expanded":c.open,"aria-required":c.required,"aria-autocomplete":"none",dir:c.dir,"data-state":c.open?"open":"closed",disabled:u,"data-disabled":u?"":void 0,"data-placeholder":ej(c.value)?"":void 0,...s,ref:p,onClick:(0,l.composeEventHandlers)(s.onClick,e=>{e.currentTarget.focus(),"mouse"!==m.current&&w(e)}),onPointerDown:(0,l.composeEventHandlers)(s.onPointerDown,e=>{m.current=e.pointerType;let t=e.target;t.hasPointerCapture(e.pointerId)&&t.releasePointerCapture(e.pointerId),0===e.button&&!1===e.ctrlKey&&"mouse"===e.pointerType&&(w(e),e.preventDefault())}),onKeyDown:(0,l.composeEventHandlers)(s.onKeyDown,e=>{let t=""!==y.current;e.ctrlKey||e.altKey||e.metaKey||1!==e.key.length||g(e.key),(!t||" "!==e.key)&&N.includes(e.key)&&(w(),e.preventDefault())})})})});B.displayName=O;var W="SelectValue",z=r.forwardRef((e,r)=>{let{__scopeSelect:o,className:n,style:l,children:a,placeholder:s="",...d}=e,c=A(W,o),{onValueNodeHasChildrenChange:u}=c,p=void 0!==a,f=(0,i.useComposedRefs)(r,c.onValueNodeChange);return(0,w.useLayoutEffect)(()=>{u(p)},[u,p]),(0,t.jsx)(h.Primitive.span,{...d,ref:f,style:{pointerEvents:"none"},children:ej(c.value)?(0,t.jsx)(t.Fragment,{children:s}):a})});z.displayName=W;var F=r.forwardRef((e,r)=>{let{__scopeSelect:o,children:n,...l}=e;return(0,t.jsx)(h.Primitive.span,{"aria-hidden":!0,...l,ref:r,children:n||"▼"})});F.displayName="SelectIcon";var U=e=>(0,t.jsx)(m.Portal,{asChild:!0,...e});U.displayName="SelectPortal";var K="SelectContent",$=r.forwardRef((e,n)=>{let l=A(K,e.__scopeSelect),[a,i]=r.useState();return((0,w.useLayoutEffect)(()=>{i(new DocumentFragment)},[]),l.open)?(0,t.jsx)(G,{...e,ref:n}):a?o.createPortal((0,t.jsx)(Y,{scope:e.__scopeSelect,children:(0,t.jsx)(P.Slot,{scope:e.__scopeSelect,children:(0,t.jsx)("div",{children:e.children})})}),a):null});$.displayName=K;var[Y,q]=I(K),Z=(0,y.createSlot)("SelectContent.RemoveScroll"),G=r.forwardRef((e,o)=>{let{__scopeSelect:n,position:a="item-aligned",onCloseAutoFocus:s,onEscapeKeyDown:d,onPointerDownOutside:f,side:v,sideOffset:m,align:h,alignOffset:y,arrowPadding:g,collisionBoundary:x,collisionPadding:w,sticky:b,hideWhenDetached:S,avoidCollisions:N,...R}=e,E=A(K,n),[P,T]=r.useState(null),[I,L]=r.useState(null),D=(0,i.useComposedRefs)(o,e=>T(e)),[H,_]=r.useState(null),[M,V]=r.useState(null),O=k(n),[B,W]=r.useState(!1),z=r.useRef(!1);r.useEffect(()=>{if(P)return(0,C.hideOthers)(P)},[P]),(0,u.useFocusGuards)();let F=r.useCallback(e=>{let[t,...r]=O().map(e=>e.ref.current),[o]=r.slice(-1),n=document.activeElement;for(let r of e)if(r===n||(r?.scrollIntoView({block:"nearest"}),r===t&&I&&(I.scrollTop=0),r===o&&I&&(I.scrollTop=I.scrollHeight),r?.focus(),document.activeElement!==n))return},[O,I]),U=r.useCallback(()=>F([H,P]),[F,H,P]);r.useEffect(()=>{B&&U()},[B,U]);let{onOpenChange:$,triggerPointerDownPosRef:q}=E;r.useEffect(()=>{if(P){let e={x:0,y:0},t=t=>{e={x:Math.abs(Math.round(t.pageX)-(q.current?.x??0)),y:Math.abs(Math.round(t.pageY)-(q.current?.y??0))}},r=r=>{e.x<=10&&e.y<=10?r.preventDefault():P.contains(r.target)||$(!1),document.removeEventListener("pointermove",t),q.current=null};return null!==q.current&&(document.addEventListener("pointermove",t),document.addEventListener("pointerup",r,{capture:!0,once:!0})),()=>{document.removeEventListener("pointermove",t),document.removeEventListener("pointerup",r,{capture:!0})}}},[P,$,q]),r.useEffect(()=>{let e=()=>$(!1);return window.addEventListener("blur",e),window.addEventListener("resize",e),()=>{window.removeEventListener("blur",e),window.removeEventListener("resize",e)}},[$]);let[G,Q]=eN(e=>{let t=O().filter(e=>!e.disabled),r=t.find(e=>e.ref.current===document.activeElement),o=eR(t,e,r);o&&setTimeout(()=>o.ref.current.focus())}),ee=r.useCallback((e,t,r)=>{let o=!z.current&&!r;(void 0!==E.value&&E.value===t||o)&&(_(e),o&&(z.current=!0))},[E.value]),et=r.useCallback(()=>P?.focus(),[P]),er=r.useCallback((e,t,r)=>{let o=!z.current&&!r;(void 0!==E.value&&E.value===t||o)&&V(e)},[E.value]),eo="popper"===a?J:X,en=eo===J?{side:v,sideOffset:m,align:h,alignOffset:y,arrowPadding:g,collisionBoundary:x,collisionPadding:w,sticky:b,hideWhenDetached:S,avoidCollisions:N}:{};return(0,t.jsx)(Y,{scope:n,content:P,viewport:I,onViewportChange:L,itemRefCallback:ee,selectedItem:H,onItemLeave:et,itemTextRefCallback:er,focusSelectedItem:U,selectedItemText:M,position:a,isPositioned:B,searchRef:G,children:(0,t.jsx)(j.RemoveScroll,{as:Z,allowPinchZoom:!0,children:(0,t.jsx)(p.FocusScope,{asChild:!0,trapped:E.open,onMountAutoFocus:e=>{e.preventDefault()},onUnmountAutoFocus:(0,l.composeEventHandlers)(s,e=>{E.trigger?.focus({preventScroll:!0}),e.preventDefault()}),children:(0,t.jsx)(c.DismissableLayer,{asChild:!0,disableOutsidePointerEvents:!0,onEscapeKeyDown:d,onPointerDownOutside:f,onFocusOutside:e=>e.preventDefault(),onDismiss:()=>E.onOpenChange(!1),children:(0,t.jsx)(eo,{role:"listbox",id:E.contentId,"data-state":E.open?"open":"closed",dir:E.dir,onContextMenu:e=>e.preventDefault(),...R,...en,onPlaced:()=>W(!0),ref:D,style:{display:"flex",flexDirection:"column",outline:"none",...R.style},onKeyDown:(0,l.composeEventHandlers)(R.onKeyDown,e=>{let t=e.ctrlKey||e.altKey||e.metaKey;if("Tab"===e.key&&e.preventDefault(),t||1!==e.key.length||Q(e.key),["ArrowUp","ArrowDown","Home","End"].includes(e.key)){let t=O().filter(e=>!e.disabled).map(e=>e.ref.current);if(["ArrowUp","End"].includes(e.key)&&(t=t.slice().reverse()),["ArrowUp","ArrowDown"].includes(e.key)){let r=e.target,o=t.indexOf(r);t=t.slice(o+1)}setTimeout(()=>F(t)),e.preventDefault()}})})})})})})});G.displayName="SelectContentImpl";var X=r.forwardRef((e,o)=>{let{__scopeSelect:l,onPlaced:a,...s}=e,d=A(K,l),c=q(K,l),[u,p]=r.useState(null),[f,v]=r.useState(null),m=(0,i.useComposedRefs)(o,e=>v(e)),y=k(l),g=r.useRef(!1),x=r.useRef(!0),{viewport:b,selectedItem:S,selectedItemText:C,focusSelectedItem:j}=c,N=r.useCallback(()=>{if(d.trigger&&d.valueNode&&u&&f&&b&&S&&C){let e=d.trigger.getBoundingClientRect(),t=f.getBoundingClientRect(),r=d.valueNode.getBoundingClientRect(),o=C.getBoundingClientRect();if("rtl"!==d.dir){let l=o.left-t.left,a=r.left-l,i=e.left-a,s=e.width+i,d=Math.max(s,t.width),c=n(a,[10,Math.max(10,window.innerWidth-10-d)]);u.style.minWidth=s+"px",u.style.left=c+"px"}else{let l=t.right-o.right,a=window.innerWidth-r.right-l,i=window.innerWidth-e.right-a,s=e.width+i,d=Math.max(s,t.width),c=n(a,[10,Math.max(10,window.innerWidth-10-d)]);u.style.minWidth=s+"px",u.style.right=c+"px"}let l=y(),i=window.innerHeight-20,s=b.scrollHeight,c=window.getComputedStyle(f),p=parseInt(c.borderTopWidth,10),v=parseInt(c.paddingTop,10),m=parseInt(c.borderBottomWidth,10),h=p+v+s+parseInt(c.paddingBottom,10)+m,x=Math.min(5*S.offsetHeight,h),w=window.getComputedStyle(b),j=parseInt(w.paddingTop,10),N=parseInt(w.paddingBottom,10),R=e.top+e.height/2-10,E=S.offsetHeight/2,P=p+v+(S.offsetTop+E);if(P<=R){let e=l.length>0&&S===l[l.length-1].ref.current;u.style.bottom="0px";let t=Math.max(i-R,E+(e?N:0)+(f.clientHeight-b.offsetTop-b.offsetHeight)+m);u.style.height=P+t+"px"}else{let e=l.length>0&&S===l[0].ref.current;u.style.top="0px";let t=Math.max(R,p+b.offsetTop+(e?j:0)+E);u.style.height=t+(h-P)+"px",b.scrollTop=P-R+b.offsetTop}u.style.margin="10px 0",u.style.minHeight=x+"px",u.style.maxHeight=i+"px",a?.(),requestAnimationFrame(()=>g.current=!0)}},[y,d.trigger,d.valueNode,u,f,b,S,C,d.dir,a]);(0,w.useLayoutEffect)(()=>N(),[N]);let[R,E]=r.useState();(0,w.useLayoutEffect)(()=>{f&&E(window.getComputedStyle(f).zIndex)},[f]);let P=r.useCallback(e=>{e&&!0===x.current&&(N(),j?.(),x.current=!1)},[N,j]);return(0,t.jsx)(Q,{scope:l,contentWrapper:u,shouldExpandOnScrollRef:g,onScrollButtonChange:P,children:(0,t.jsx)("div",{ref:p,style:{display:"flex",flexDirection:"column",position:"fixed",zIndex:R},children:(0,t.jsx)(h.Primitive.div,{...s,ref:m,style:{boxSizing:"border-box",maxHeight:"100%",...s.style}})})})});X.displayName="SelectItemAlignedPosition";var J=r.forwardRef((e,r)=>{let{__scopeSelect:o,align:n="start",collisionPadding:l=10,...a}=e,i=D(o);return(0,t.jsx)(v.Content,{...i,...a,ref:r,align:n,collisionPadding:l,style:{boxSizing:"border-box",...a.style,"--radix-select-content-transform-origin":"var(--radix-popper-transform-origin)","--radix-select-content-available-width":"var(--radix-popper-available-width)","--radix-select-content-available-height":"var(--radix-popper-available-height)","--radix-select-trigger-width":"var(--radix-popper-anchor-width)","--radix-select-trigger-height":"var(--radix-popper-anchor-height)"}})});J.displayName="SelectPopperPosition";var[Q,ee]=I(K,{}),et="SelectViewport",er=r.forwardRef((e,o)=>{let{__scopeSelect:n,nonce:a,...s}=e,d=q(et,n),c=ee(et,n),u=(0,i.useComposedRefs)(o,d.onViewportChange),p=r.useRef(0);return(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)("style",{dangerouslySetInnerHTML:{__html:"[data-radix-select-viewport]{scrollbar-width:none;-ms-overflow-style:none;-webkit-overflow-scrolling:touch;}[data-radix-select-viewport]::-webkit-scrollbar{display:none}"},nonce:a}),(0,t.jsx)(P.Slot,{scope:n,children:(0,t.jsx)(h.Primitive.div,{"data-radix-select-viewport":"",role:"presentation",...s,ref:u,style:{position:"relative",flex:1,overflow:"hidden auto",...s.style},onScroll:(0,l.composeEventHandlers)(s.onScroll,e=>{let t=e.currentTarget,{contentWrapper:r,shouldExpandOnScrollRef:o}=c;if(o?.current&&r){let e=Math.abs(p.current-t.scrollTop);if(e>0){let o=window.innerHeight-20,n=Math.max(parseFloat(r.style.minHeight),parseFloat(r.style.height));if(n<o){let l=n+e,a=Math.min(o,l),i=l-a;r.style.height=a+"px","0px"===r.style.bottom&&(t.scrollTop=i>0?i:0,r.style.justifyContent="flex-end")}}}p.current=t.scrollTop})})})]})});er.displayName=et;var eo="SelectGroup",[en,el]=I(eo);r.forwardRef((e,r)=>{let{__scopeSelect:o,...n}=e,l=(0,f.useId)();return(0,t.jsx)(en,{scope:o,id:l,children:(0,t.jsx)(h.Primitive.div,{role:"group","aria-labelledby":l,...n,ref:r})})}).displayName=eo;var ea="SelectLabel",ei=r.forwardRef((e,r)=>{let{__scopeSelect:o,...n}=e,l=el(ea,o);return(0,t.jsx)(h.Primitive.div,{id:l.id,...n,ref:r})});ei.displayName=ea;var es="SelectItem",[ed,ec]=I(es),eu=r.forwardRef((e,o)=>{let{__scopeSelect:n,value:a,disabled:s=!1,textValue:d,...c}=e,u=A(es,n),p=q(es,n),v=u.value===a,[m,y]=r.useState(d??""),[g,x]=r.useState(!1),w=(0,i.useComposedRefs)(o,e=>p.itemRefCallback?.(e,a,s)),b=(0,f.useId)(),S=r.useRef("touch"),C=()=>{s||(u.onValueChange(a),u.onOpenChange(!1))};if(""===a)throw Error("A <Select.Item /> must have a value prop that is not an empty string. This is because the Select value can be set to an empty string to clear the selection and show the placeholder.");return(0,t.jsx)(ed,{scope:n,value:a,disabled:s,textId:b,isSelected:v,onItemTextChange:r.useCallback(e=>{y(t=>t||(e?.textContent??"").trim())},[]),children:(0,t.jsx)(P.ItemSlot,{scope:n,value:a,disabled:s,textValue:m,children:(0,t.jsx)(h.Primitive.div,{role:"option","aria-labelledby":b,"data-highlighted":g?"":void 0,"aria-selected":v&&g,"data-state":v?"checked":"unchecked","aria-disabled":s||void 0,"data-disabled":s?"":void 0,tabIndex:s?void 0:-1,...c,ref:w,onFocus:(0,l.composeEventHandlers)(c.onFocus,()=>x(!0)),onBlur:(0,l.composeEventHandlers)(c.onBlur,()=>x(!1)),onClick:(0,l.composeEventHandlers)(c.onClick,()=>{"mouse"!==S.current&&C()}),onPointerUp:(0,l.composeEventHandlers)(c.onPointerUp,()=>{"mouse"===S.current&&C()}),onPointerDown:(0,l.composeEventHandlers)(c.onPointerDown,e=>{S.current=e.pointerType}),onPointerMove:(0,l.composeEventHandlers)(c.onPointerMove,e=>{S.current=e.pointerType,s?p.onItemLeave?.():"mouse"===S.current&&e.currentTarget.focus({preventScroll:!0})}),onPointerLeave:(0,l.composeEventHandlers)(c.onPointerLeave,e=>{e.currentTarget===document.activeElement&&p.onItemLeave?.()}),onKeyDown:(0,l.composeEventHandlers)(c.onKeyDown,e=>{(p.searchRef?.current===""||" "!==e.key)&&(R.includes(e.key)&&C()," "===e.key&&e.preventDefault())})})})})});eu.displayName=es;var ep="SelectItemText",ef=r.forwardRef((e,n)=>{let{__scopeSelect:l,className:a,style:s,...d}=e,c=A(ep,l),u=q(ep,l),p=ec(ep,l),f=M(ep,l),[v,m]=r.useState(null),y=(0,i.useComposedRefs)(n,e=>m(e),p.onItemTextChange,e=>u.itemTextRefCallback?.(e,p.value,p.disabled)),g=v?.textContent,x=r.useMemo(()=>(0,t.jsx)("option",{value:p.value,disabled:p.disabled,children:g},p.value),[p.disabled,p.value,g]),{onNativeOptionAdd:b,onNativeOptionRemove:S}=f;return(0,w.useLayoutEffect)(()=>(b(x),()=>S(x)),[b,S,x]),(0,t.jsxs)(t.Fragment,{children:[(0,t.jsx)(h.Primitive.span,{id:p.textId,...d,ref:y}),p.isSelected&&c.valueNode&&!c.valueNodeHasChildren?o.createPortal(d.children,c.valueNode):null]})});ef.displayName=ep;var ev="SelectItemIndicator",em=r.forwardRef((e,r)=>{let{__scopeSelect:o,...n}=e;return ec(ev,o).isSelected?(0,t.jsx)(h.Primitive.span,{"aria-hidden":!0,...n,ref:r}):null});em.displayName=ev;var eh="SelectScrollUpButton",ey=r.forwardRef((e,o)=>{let n=q(eh,e.__scopeSelect),l=ee(eh,e.__scopeSelect),[a,s]=r.useState(!1),d=(0,i.useComposedRefs)(o,l.onScrollButtonChange);return(0,w.useLayoutEffect)(()=>{if(n.viewport&&n.isPositioned){let e=function(){s(t.scrollTop>0)},t=n.viewport;return e(),t.addEventListener("scroll",e),()=>t.removeEventListener("scroll",e)}},[n.viewport,n.isPositioned]),a?(0,t.jsx)(ew,{...e,ref:d,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop=e.scrollTop-t.offsetHeight)}}):null});ey.displayName=eh;var eg="SelectScrollDownButton",ex=r.forwardRef((e,o)=>{let n=q(eg,e.__scopeSelect),l=ee(eg,e.__scopeSelect),[a,s]=r.useState(!1),d=(0,i.useComposedRefs)(o,l.onScrollButtonChange);return(0,w.useLayoutEffect)(()=>{if(n.viewport&&n.isPositioned){let e=function(){let e=t.scrollHeight-t.clientHeight;s(Math.ceil(t.scrollTop)<e)},t=n.viewport;return e(),t.addEventListener("scroll",e),()=>t.removeEventListener("scroll",e)}},[n.viewport,n.isPositioned]),a?(0,t.jsx)(ew,{...e,ref:d,onAutoScroll:()=>{let{viewport:e,selectedItem:t}=n;e&&t&&(e.scrollTop=e.scrollTop+t.offsetHeight)}}):null});ex.displayName=eg;var ew=r.forwardRef((e,o)=>{let{__scopeSelect:n,onAutoScroll:a,...i}=e,s=q("SelectScrollButton",n),d=r.useRef(null),c=k(n),u=r.useCallback(()=>{null!==d.current&&(window.clearInterval(d.current),d.current=null)},[]);return r.useEffect(()=>()=>u(),[u]),(0,w.useLayoutEffect)(()=>{let e=c().find(e=>e.ref.current===document.activeElement);e?.ref.current?.scrollIntoView({block:"nearest"})},[c]),(0,t.jsx)(h.Primitive.div,{"aria-hidden":!0,...i,ref:o,style:{flexShrink:0,...i.style},onPointerDown:(0,l.composeEventHandlers)(i.onPointerDown,()=>{null===d.current&&(d.current=window.setInterval(a,50))}),onPointerMove:(0,l.composeEventHandlers)(i.onPointerMove,()=>{s.onItemLeave?.(),null===d.current&&(d.current=window.setInterval(a,50))}),onPointerLeave:(0,l.composeEventHandlers)(i.onPointerLeave,()=>{u()})})}),eb=r.forwardRef((e,r)=>{let{__scopeSelect:o,...n}=e;return(0,t.jsx)(h.Primitive.div,{"aria-hidden":!0,...n,ref:r})});eb.displayName="SelectSeparator";var eS="SelectArrow";r.forwardRef((e,r)=>{let{__scopeSelect:o,...n}=e,l=D(o),a=A(eS,o),i=q(eS,o);return a.open&&"popper"===i.position?(0,t.jsx)(v.Arrow,{...l,...n,ref:r}):null}).displayName=eS;var eC=r.forwardRef(({__scopeSelect:e,value:o,...n},l)=>{let a=r.useRef(null),s=(0,i.useComposedRefs)(l,a),d=(0,b.usePrevious)(o);return r.useEffect(()=>{let e=a.current;if(!e)return;let t=Object.getOwnPropertyDescriptor(window.HTMLSelectElement.prototype,"value").set;if(d!==o&&t){let r=new Event("change",{bubbles:!0});t.call(e,o),e.dispatchEvent(r)}},[d,o]),(0,t.jsx)(h.Primitive.select,{...n,style:{...S.VISUALLY_HIDDEN_STYLES,...n.style},ref:s,defaultValue:o})});function ej(e){return""===e||void 0===e}function eN(e){let t=(0,g.useCallbackRef)(e),o=r.useRef(""),n=r.useRef(0),l=r.useCallback(e=>{let r=o.current+e;t(r),function e(t){o.current=t,window.clearTimeout(n.current),""!==t&&(n.current=window.setTimeout(()=>e(""),1e3))}(r)},[t]),a=r.useCallback(()=>{o.current="",window.clearTimeout(n.current)},[]);return r.useEffect(()=>()=>window.clearTimeout(n.current),[]),[o,l,a]}function eR(e,t,r){var o,n;let l=t.length>1&&Array.from(t).every(e=>e===t[0])?t[0]:t,a=r?e.indexOf(r):-1,i=(o=e,n=Math.max(a,0),o.map((e,t)=>o[(n+t)%o.length]));1===l.length&&(i=i.filter(e=>e!==r));let s=i.find(e=>e.textValue.toLowerCase().startsWith(l.toLowerCase()));return s!==r?s:void 0}eC.displayName="SelectBubbleInput";var eE=e.i(6703),eP=e.i(20268),ek=e.i(90055),eT=e.i(76490);let eI=r.forwardRef(({className:e,children:r,...o},n)=>(0,t.jsxs)(B,{ref:n,className:(0,eT.cn)("flex h-8 w-full items-center justify-between whitespace-nowrap rounded-md border border-[hsl(var(--border))] px-3 py-1 text-sm transition-colors data-[placeholder]:text-[hsl(var(--subtle))] focus:outline-none focus:border-[hsl(var(--primary))] focus:ring-2 focus:ring-[hsl(var(--primary)/0.2)] disabled:cursor-not-allowed disabled:bg-[hsl(var(--secondary))] disabled:text-[hsl(var(--muted-foreground))] [&>span]:line-clamp-1","bg-[hsl(var(--card))]",e),...o,children:[r,(0,t.jsx)(F,{asChild:!0,children:(0,t.jsx)(eP.ChevronDown,{className:"h-4 w-4 opacity-50"})})]}));eI.displayName=B.displayName;let eL=r.forwardRef(({className:e,...r},o)=>(0,t.jsx)(ey,{ref:o,className:(0,eT.cn)("flex cursor-default items-center justify-center py-1",e),...r,children:(0,t.jsx)(ek.ChevronUp,{className:"h-4 w-4"})}));eL.displayName=ey.displayName;let eD=r.forwardRef(({className:e,...r},o)=>(0,t.jsx)(ex,{ref:o,className:(0,eT.cn)("flex cursor-default items-center justify-center py-1",e),...r,children:(0,t.jsx)(eP.ChevronDown,{className:"h-4 w-4"})}));eD.displayName=ex.displayName;let eH=r.forwardRef(({className:e,children:r,position:o="popper",...n},l)=>(0,t.jsx)(U,{children:(0,t.jsxs)($,{ref:l,className:(0,eT.cn)("relative z-50 max-h-72 min-w-[8rem] overflow-y-auto overflow-x-hidden rounded-md border border-[hsl(var(--border))] shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0 data-[state=closed]:zoom-out-95 data-[state=open]:zoom-in-95 data-[side=bottom]:slide-in-from-top-2 data-[side=left]:slide-in-from-right-2 data-[side=right]:slide-in-from-left-2 data-[side=top]:slide-in-from-bottom-2 origin-[--radix-select-content-transform-origin]","bg-[hsl(var(--popover))] text-[hsl(var(--popover-foreground))]","popper"===o&&"data-[side=bottom]:translate-y-1 data-[side=left]:-translate-x-1 data-[side=right]:translate-x-1 data-[side=top]:-translate-y-1",e),position:o,...n,children:[(0,t.jsx)(eL,{}),(0,t.jsx)(er,{className:(0,eT.cn)("p-1","popper"===o&&"h-[var(--radix-select-trigger-height)] w-full min-w-[var(--radix-select-trigger-width)]"),children:r}),(0,t.jsx)(eD,{})]})}));eH.displayName=$.displayName,r.forwardRef(({className:e,...r},o)=>(0,t.jsx)(ei,{ref:o,className:(0,eT.cn)("px-2 py-1.5 text-sm font-semibold",e),...r})).displayName=ei.displayName;let eA=r.forwardRef(({className:e,children:r,...o},n)=>(0,t.jsxs)(eu,{ref:n,className:(0,eT.cn)("relative flex w-full cursor-pointer select-none items-center rounded-sm py-1.5 pl-2 pr-8 text-sm outline-none transition-colors data-[disabled]:pointer-events-none data-[disabled]:opacity-50","hover:bg-[hsl(var(--primary-soft))] hover:text-[hsl(var(--primary))] focus:bg-[hsl(var(--primary-soft))] focus:text-[hsl(var(--primary))]","data-[state=checked]:bg-[hsl(var(--primary-soft))] data-[state=checked]:text-[hsl(var(--primary))]",e),...o,children:[(0,t.jsx)("span",{className:"absolute right-2 flex h-3.5 w-3.5 items-center justify-center",children:(0,t.jsx)(em,{children:(0,t.jsx)(eE.Check,{className:"h-4 w-4"})})}),(0,t.jsx)(ef,{children:r})]}));eA.displayName=eu.displayName,r.forwardRef(({className:e,...r},o)=>(0,t.jsx)(eb,{ref:o,className:(0,eT.cn)("-mx-1 my-1 h-px bg-muted",e),...r})).displayName=eb.displayName,e.s(["Select",0,V,"SelectContent",0,eH,"SelectItem",0,eA,"SelectTrigger",0,eI,"SelectValue",0,z],66473)}]);
@@ -1 +1 @@
1
- (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,{otherChunks:["static/chunks/0hmuddei8wdpj.js","static/chunks/0_kxvayp~5_.f.js","static/chunks/0zbi5n76awxz1.js","static/chunks/0a~2vs7-pt-aj.js","static/chunks/0fagnytrt.3oe.js"],runtimeModuleIds:[69959]}]),(()=>{let e;if(!Array.isArray(globalThis.TURBOPACK))return;let t="/_next/",r=function(){if(null!=self.TURBOPACK_ASSET_SUFFIX)return self.TURBOPACK_ASSET_SUFFIX;let e=document?.currentScript?.getAttribute?.("src")??"",t=e.indexOf("?");return t>=0?e.slice(t):""}(),n=["NEXT_DEPLOYMENT_ID","NEXT_CLIENT_ASSET_SUFFIX"];var o,i=((o=i||{})[o.Runtime=0]="Runtime",o[o.Parent=1]="Parent",o[o.Update=2]="Update",o);let l=new WeakMap;function s(e,t){this.m=e,this.e=t}let u=s.prototype,a=Object.prototype.hasOwnProperty,c="u">typeof Symbol&&Symbol.toStringTag;function f(e,t,r){a.call(e,t)||Object.defineProperty(e,t,r)}function p(e,t){let r=e[t];return r||(r=h(t),e[t]=r),r}function h(e){return{exports:{},error:void 0,id:e,namespaceObject:void 0}}function d(e,t){f(e,"__esModule",{value:!0}),c&&f(e,c,{value:"Module"});let r=0;for(;r<t.length;){let n=t[r++],o=t[r++];if("number"==typeof o)if(0===o)f(e,n,{value:t[r++],enumerable:!0,writable:!1});else throw Error(`unexpected tag: ${o}`);else"function"==typeof t[r]?f(e,n,{get:o,set:t[r++],enumerable:!0}):f(e,n,{get:o,enumerable:!0})}Object.seal(e)}function m(e,t){(null!=t?p(this.c,t):this.m).exports=e}u.s=function(e,t){let r,n;null!=t?n=(r=p(this.c,t)).exports:(r=this.m,n=this.e),r.namespaceObject=n,d(n,e)},u.j=function(e,t){var r,n;let o,i,s;null!=t?i=(o=p(this.c,t)).exports:(o=this.m,i=this.e);let u=(r=o,n=i,(s=l.get(r))||(l.set(r,s=[]),r.exports=r.namespaceObject=new Proxy(n,{get(e,t){if(a.call(e,t)||"default"===t||"__esModule"===t)return Reflect.get(e,t);for(let e of s){let r=Reflect.get(e,t);if(void 0!==r)return r}},ownKeys(e){let t=Reflect.ownKeys(e);for(let e of s)for(let r of Reflect.ownKeys(e))"default"===r||t.includes(r)||t.push(r);return t}})),s);"object"==typeof e&&null!==e&&u.push(e)},u.v=m,u.n=function(e,t){let r;(r=null!=t?p(this.c,t):this.m).exports=r.namespaceObject=e};let b=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,y=[null,b({}),b([]),b(b)];function g(e,t,r){let n=[],o=-1;for(let t=e;("object"==typeof t||"function"==typeof t)&&!y.includes(t);t=b(t))for(let r of Object.getOwnPropertyNames(t))n.push(r,function(e,t){return()=>e[t]}(e,r)),-1===o&&"default"===r&&(o=n.length-1);return r&&o>=0||(o>=0?n.splice(o,1,0,e):n.push("default",0,e)),d(t,n),t}function w(e){let t=B(e,this.m);if(t.namespaceObject)return t.namespaceObject;let r=t.exports;return t.namespaceObject=g(r,"function"==typeof r?function(...e){return r.apply(this,e)}:Object.create(null),r&&r.__esModule)}function O(e){let t=e.indexOf("#");-1!==t&&(e=e.substring(0,t));let r=e.indexOf("?");return -1!==r&&(e=e.substring(0,r)),e}function j(){let e,t;return{promise:new Promise((r,n)=>{t=n,e=r}),resolve:e,reject:t}}u.i=w,u.A=function(e){return this.r(e)(w.bind(this))},u.t="function"==typeof require?require:function(){throw Error("Unexpected use of runtime require")},u.r=function(e){return B(e,this.m).exports},u.f=function(e){function t(t){if(t=O(t),a.call(e,t))return e[t].module();let r=Error(`Cannot find module '${t}'`);throw r.code="MODULE_NOT_FOUND",r}return t.keys=()=>Object.keys(e),t.resolve=t=>{if(t=O(t),a.call(e,t))return e[t].id();let r=Error(`Cannot find module '${t}'`);throw r.code="MODULE_NOT_FOUND",r},t.import=async e=>await t(e),t};let k=Symbol("turbopack queues"),v=Symbol("turbopack exports"),U=Symbol("turbopack error");function C(e){e&&1!==e.status&&(e.status=1,e.forEach(e=>e.queueCount--),e.forEach(e=>e.queueCount--?e.queueCount++:e()))}u.a=function(e,t){let r=this.m,n=t?Object.assign([],{status:-1}):void 0,o=new Set,{resolve:i,reject:l,promise:s}=j(),u=Object.assign(s,{[v]:r.exports,[k]:e=>{n&&e(n),o.forEach(e),u.catch(()=>{})}}),a={get:()=>u,set(e){e!==u&&(u[v]=e)}};Object.defineProperty(r,"exports",a),Object.defineProperty(r,"namespaceObject",a),e(function(e){let t=e.map(e=>{if(null!==e&&"object"==typeof e){if(k in e)return e;if(null!=e&&"object"==typeof e&&"then"in e&&"function"==typeof e.then){let t=Object.assign([],{status:0}),r={[v]:{},[k]:e=>e(t)};return e.then(e=>{r[v]=e,C(t)},e=>{r[U]=e,C(t)}),r}}return{[v]:e,[k]:()=>{}}}),r=()=>t.map(e=>{if(e[U])throw e[U];return e[v]}),{promise:i,resolve:l}=j(),s=Object.assign(()=>l(r),{queueCount:0});function u(e){e!==n&&!o.has(e)&&(o.add(e),e&&0===e.status&&(s.queueCount++,e.push(s)))}return t.map(e=>e[k](u)),s.queueCount?i:r()},function(e){e?l(u[U]=e):i(u[v]),C(n)}),n&&-1===n.status&&(n.status=0)};let P=function(e){let t=new URL(e,"x:/"),r={};for(let e in t)r[e]=t[e];for(let t in r.href=e,r.pathname=e.replace(/[?#].*/,""),r.origin=r.protocol="",r.toString=r.toJSON=(...t)=>e,r)Object.defineProperty(this,t,{enumerable:!0,configurable:!0,value:r[t]})};function R(e,t){throw Error(`Invariant: ${t(e)}`)}P.prototype=URL.prototype,u.U=P,u.z=function(e){throw Error("dynamic usage of require is not supported")},u.g=globalThis;let S=s.prototype,$=new Map;u.M=$;let _=new Map,E=new Map;async function T(e,t,r){let n;if("string"==typeof r)return M(e,t,N(r));let o=r.included||[],i=o.map(e=>!!$.has(e)||_.get(e));if(i.length>0&&i.every(e=>e))return void await Promise.all(i);let l=r.moduleChunks||[],s=l.map(e=>E.get(e)).filter(e=>e);if(s.length>0){if(s.length===l.length)return void await Promise.all(s);let r=new Set;for(let e of l)E.has(e)||r.add(e);for(let n of r){let r=M(e,t,N(n));E.set(n,r),s.push(r)}n=Promise.all(s)}else{for(let o of(n=M(e,t,N(r.path)),l))E.has(o)||E.set(o,n)}for(let e of o)_.has(e)||_.set(e,n);await n}S.l=function(e){return T(i.Parent,this.m.id,e)};let A=Promise.resolve(void 0),x=new WeakMap;function M(t,r,n){let o=e.loadChunkCached(t,n),l=x.get(o);if(void 0===l){let e=x.set.bind(x,o,A);l=o.then(e).catch(e=>{let o;switch(t){case i.Runtime:o=`as a runtime dependency of chunk ${r}`;break;case i.Parent:o=`from module ${r}`;break;case i.Update:o="from an HMR update";break;default:R(t,e=>`Unknown source type: ${e}`)}let l=Error(`Failed to load chunk ${n} ${o}${e?`: ${e}`:""}`,e?{cause:e}:void 0);throw l.name="ChunkLoadError",l}),x.set(o,l)}return l}function N(e){return`${t}${e.split("/").map(e=>encodeURIComponent(e)).join("/")}${r}`}S.L=function(e){return M(i.Parent,this.m.id,e)},S.R=function(e){let t=this.r(e);return t?.default??t},S.P=function(e){return`/ROOT/${e??""}`},S.q=function(e,t){m.call(this,`${e}${r}`,t)},S.b=function(e,t,o,i){let l="SharedWorker"===e.name,s=[o.map(e=>N(e)).reverse(),r];for(let e of n)s.push(globalThis[e]);let u=new URL(N(t),location.origin),a=JSON.stringify(s);return l?u.searchParams.set("params",a):u.hash="#params="+encodeURIComponent(a),new e(u,i?{...i,type:void 0}:void 0)};let K=/\.js(?:\?[^#]*)?(?:#.*)?$/,q=/\.css(?:\?[^#]*)?(?:#.*)?$/;function L(e){return q.test(e)}u.w=function(t,r,n){return e.loadWebAssembly(i.Parent,this.m.id,t,r,n)},u.u=function(t,r){return e.loadWebAssemblyModule(i.Parent,this.m.id,t,r)};let I={};u.c=I;let B=(e,t)=>{let r=I[e];if(r){if(r.error)throw r.error;return r}return W(e,i.Parent,t.id)};function W(e,t,r){let n=$.get(e);if("function"!=typeof n)throw Error(function(e,t,r){let n;switch(t){case 0:n=`as a runtime entry of chunk ${r}`;break;case 1:n=`because it was required from module ${r}`;break;case 2:n="because of an HMR update";break;default:R(t,e=>`Unknown source type: ${e}`)}return`Module ${e} was instantiated ${n}, but the module factory is not available.`}(e,t,r));let o=h(e),i=o.exports;I[e]=o;let l=new s(o,i);try{n(l,o,i)}catch(e){throw o.error=e,e}return o.namespaceObject&&o.exports!==o.namespaceObject&&g(o.exports,o.namespaceObject),o}function F(t){let r,n=function(e){if("string"==typeof e)return e;if(e)return{src:e.getAttribute("src")};if("u">typeof TURBOPACK_NEXT_CHUNK_URLS)return{src:TURBOPACK_NEXT_CHUNK_URLS.pop()};throw Error("chunk path empty but not in a worker")}(t[0]);return 2===t.length?r=t[1]:(r=void 0,!function(e,t){let r=1;for(;r<e.length;){let n,o=r+1;for(;o<e.length&&"function"!=typeof e[o];)o++;if(o===e.length)throw Error("malformed chunk format, expected a factory function");let i=e[o];for(let i=r;i<o;i++){let r=e[i],o=t.get(r);if(o){n=o;break}}let l=n??i,s=!1;for(let n=r;n<o;n++){let r=e[n];t.has(r)||(s||(l===i&&Object.defineProperty(i,"name",{value:"module evaluation"}),s=!0),t.set(r,l))}r=o+1}}(t,$)),e.registerChunk(n,r)}let X=new Map;function D(e){let t=X.get(e);if(!t){let r,n;t={resolved:!1,loadingStarted:!1,promise:new Promise((e,t)=>{r=e,n=t}),resolve:()=>{t.resolved=!0,r()},reject:n},X.set(e,t)}return t}e={async registerChunk(e,r){let n=function(e){if("string"==typeof e)return e;let r=decodeURIComponent(e.src.replace(/[?#].*$/,""));return r.startsWith(t)?r.slice(t.length):r}(e);if(D("string"==typeof e?N(e):e.src).resolve(),null!=r){for(let e of r.otherChunks)D(N("string"==typeof e?e:e.path));if(await Promise.all(r.otherChunks.map(e=>T(i.Runtime,n,e))),r.runtimeModuleIds.length>0)for(let e of r.runtimeModuleIds)!function(e,t){let r=I[t];if(r){if(r.error)throw r.error;return}W(t,i.Runtime,e)}(n,e)}},loadChunkCached:(e,t)=>(function(e,t){let r=D(t);if(r.loadingStarted)return r.promise;if(e===i.Runtime)return r.loadingStarted=!0,L(t)&&r.resolve(),r.promise;if("function"==typeof importScripts)if(L(t));else if(K.test(t))self.TURBOPACK_NEXT_CHUNK_URLS.push(t),importScripts(t);else throw Error(`can't infer type of chunk from URL ${t} in worker`);else{let e=decodeURI(t);if(L(t))if(document.querySelectorAll(`link[rel=stylesheet][href="${t}"],link[rel=stylesheet][href^="${t}?"],link[rel=stylesheet][href="${e}"],link[rel=stylesheet][href^="${e}?"]`).length>0)r.resolve();else{let e=document.createElement("link");e.rel="stylesheet",e.href=t,e.onerror=()=>{r.reject()},e.onload=()=>{r.resolve()},document.head.appendChild(e)}else if(K.test(t)){let n=document.querySelectorAll(`script[src="${t}"],script[src^="${t}?"],script[src="${e}"],script[src^="${e}?"]`);if(n.length>0)for(let e of Array.from(n))e.addEventListener("error",()=>{r.reject()});else{let e=document.createElement("script");e.src=t,e.onerror=()=>{r.reject()},document.head.appendChild(e)}}else throw Error(`can't infer type of chunk from URL ${t}`)}return r.loadingStarted=!0,r.promise})(e,t),async loadWebAssembly(e,t,r,n,o){let i=fetch(N(r)),{instance:l}=await WebAssembly.instantiateStreaming(i,o);return l.exports},async loadWebAssemblyModule(e,t,r,n){let o=fetch(N(r));return await WebAssembly.compileStreaming(o)}};let H=globalThis.TURBOPACK;globalThis.TURBOPACK={push:F},H.forEach(F)})();
1
+ (globalThis.TURBOPACK||(globalThis.TURBOPACK=[])).push(["object"==typeof document?document.currentScript:void 0,{otherChunks:["static/chunks/0hmuddei8wdpj.js","static/chunks/0_kxvayp~5_.f.js","static/chunks/08qlxn-3d_rtu.js","static/chunks/0a~2vs7-pt-aj.js","static/chunks/0fagnytrt.3oe.js"],runtimeModuleIds:[69959]}]),(()=>{let e;if(!Array.isArray(globalThis.TURBOPACK))return;let t="/_next/",r=function(){if(null!=self.TURBOPACK_ASSET_SUFFIX)return self.TURBOPACK_ASSET_SUFFIX;let e=document?.currentScript?.getAttribute?.("src")??"",t=e.indexOf("?");return t>=0?e.slice(t):""}(),n=["NEXT_DEPLOYMENT_ID","NEXT_CLIENT_ASSET_SUFFIX"];var o,i=((o=i||{})[o.Runtime=0]="Runtime",o[o.Parent=1]="Parent",o[o.Update=2]="Update",o);let l=new WeakMap;function s(e,t){this.m=e,this.e=t}let u=s.prototype,a=Object.prototype.hasOwnProperty,c="u">typeof Symbol&&Symbol.toStringTag;function f(e,t,r){a.call(e,t)||Object.defineProperty(e,t,r)}function p(e,t){let r=e[t];return r||(r=h(t),e[t]=r),r}function h(e){return{exports:{},error:void 0,id:e,namespaceObject:void 0}}function d(e,t){f(e,"__esModule",{value:!0}),c&&f(e,c,{value:"Module"});let r=0;for(;r<t.length;){let n=t[r++],o=t[r++];if("number"==typeof o)if(0===o)f(e,n,{value:t[r++],enumerable:!0,writable:!1});else throw Error(`unexpected tag: ${o}`);else"function"==typeof t[r]?f(e,n,{get:o,set:t[r++],enumerable:!0}):f(e,n,{get:o,enumerable:!0})}Object.seal(e)}function m(e,t){(null!=t?p(this.c,t):this.m).exports=e}u.s=function(e,t){let r,n;null!=t?n=(r=p(this.c,t)).exports:(r=this.m,n=this.e),r.namespaceObject=n,d(n,e)},u.j=function(e,t){var r,n;let o,i,s;null!=t?i=(o=p(this.c,t)).exports:(o=this.m,i=this.e);let u=(r=o,n=i,(s=l.get(r))||(l.set(r,s=[]),r.exports=r.namespaceObject=new Proxy(n,{get(e,t){if(a.call(e,t)||"default"===t||"__esModule"===t)return Reflect.get(e,t);for(let e of s){let r=Reflect.get(e,t);if(void 0!==r)return r}},ownKeys(e){let t=Reflect.ownKeys(e);for(let e of s)for(let r of Reflect.ownKeys(e))"default"===r||t.includes(r)||t.push(r);return t}})),s);"object"==typeof e&&null!==e&&u.push(e)},u.v=m,u.n=function(e,t){let r;(r=null!=t?p(this.c,t):this.m).exports=r.namespaceObject=e};let b=Object.getPrototypeOf?e=>Object.getPrototypeOf(e):e=>e.__proto__,y=[null,b({}),b([]),b(b)];function g(e,t,r){let n=[],o=-1;for(let t=e;("object"==typeof t||"function"==typeof t)&&!y.includes(t);t=b(t))for(let r of Object.getOwnPropertyNames(t))n.push(r,function(e,t){return()=>e[t]}(e,r)),-1===o&&"default"===r&&(o=n.length-1);return r&&o>=0||(o>=0?n.splice(o,1,0,e):n.push("default",0,e)),d(t,n),t}function O(e){let t=B(e,this.m);if(t.namespaceObject)return t.namespaceObject;let r=t.exports;return t.namespaceObject=g(r,"function"==typeof r?function(...e){return r.apply(this,e)}:Object.create(null),r&&r.__esModule)}function w(e){let t=e.indexOf("#");-1!==t&&(e=e.substring(0,t));let r=e.indexOf("?");return -1!==r&&(e=e.substring(0,r)),e}function j(){let e,t;return{promise:new Promise((r,n)=>{t=n,e=r}),resolve:e,reject:t}}u.i=O,u.A=function(e){return this.r(e)(O.bind(this))},u.t="function"==typeof require?require:function(){throw Error("Unexpected use of runtime require")},u.r=function(e){return B(e,this.m).exports},u.f=function(e){function t(t){if(t=w(t),a.call(e,t))return e[t].module();let r=Error(`Cannot find module '${t}'`);throw r.code="MODULE_NOT_FOUND",r}return t.keys=()=>Object.keys(e),t.resolve=t=>{if(t=w(t),a.call(e,t))return e[t].id();let r=Error(`Cannot find module '${t}'`);throw r.code="MODULE_NOT_FOUND",r},t.import=async e=>await t(e),t};let k=Symbol("turbopack queues"),v=Symbol("turbopack exports"),U=Symbol("turbopack error");function C(e){e&&1!==e.status&&(e.status=1,e.forEach(e=>e.queueCount--),e.forEach(e=>e.queueCount--?e.queueCount++:e()))}u.a=function(e,t){let r=this.m,n=t?Object.assign([],{status:-1}):void 0,o=new Set,{resolve:i,reject:l,promise:s}=j(),u=Object.assign(s,{[v]:r.exports,[k]:e=>{n&&e(n),o.forEach(e),u.catch(()=>{})}}),a={get:()=>u,set(e){e!==u&&(u[v]=e)}};Object.defineProperty(r,"exports",a),Object.defineProperty(r,"namespaceObject",a),e(function(e){let t=e.map(e=>{if(null!==e&&"object"==typeof e){if(k in e)return e;if(null!=e&&"object"==typeof e&&"then"in e&&"function"==typeof e.then){let t=Object.assign([],{status:0}),r={[v]:{},[k]:e=>e(t)};return e.then(e=>{r[v]=e,C(t)},e=>{r[U]=e,C(t)}),r}}return{[v]:e,[k]:()=>{}}}),r=()=>t.map(e=>{if(e[U])throw e[U];return e[v]}),{promise:i,resolve:l}=j(),s=Object.assign(()=>l(r),{queueCount:0});function u(e){e!==n&&!o.has(e)&&(o.add(e),e&&0===e.status&&(s.queueCount++,e.push(s)))}return t.map(e=>e[k](u)),s.queueCount?i:r()},function(e){e?l(u[U]=e):i(u[v]),C(n)}),n&&-1===n.status&&(n.status=0)};let P=function(e){let t=new URL(e,"x:/"),r={};for(let e in t)r[e]=t[e];for(let t in r.href=e,r.pathname=e.replace(/[?#].*/,""),r.origin=r.protocol="",r.toString=r.toJSON=(...t)=>e,r)Object.defineProperty(this,t,{enumerable:!0,configurable:!0,value:r[t]})};function R(e,t){throw Error(`Invariant: ${t(e)}`)}P.prototype=URL.prototype,u.U=P,u.z=function(e){throw Error("dynamic usage of require is not supported")},u.g=globalThis;let S=s.prototype,_=new Map;u.M=_;let $=new Map,E=new Map;async function T(e,t,r){let n;if("string"==typeof r)return M(e,t,N(r));let o=r.included||[],i=o.map(e=>!!_.has(e)||$.get(e));if(i.length>0&&i.every(e=>e))return void await Promise.all(i);let l=r.moduleChunks||[],s=l.map(e=>E.get(e)).filter(e=>e);if(s.length>0){if(s.length===l.length)return void await Promise.all(s);let r=new Set;for(let e of l)E.has(e)||r.add(e);for(let n of r){let r=M(e,t,N(n));E.set(n,r),s.push(r)}n=Promise.all(s)}else{for(let o of(n=M(e,t,N(r.path)),l))E.has(o)||E.set(o,n)}for(let e of o)$.has(e)||$.set(e,n);await n}S.l=function(e){return T(i.Parent,this.m.id,e)};let A=Promise.resolve(void 0),x=new WeakMap;function M(t,r,n){let o=e.loadChunkCached(t,n),l=x.get(o);if(void 0===l){let e=x.set.bind(x,o,A);l=o.then(e).catch(e=>{let o;switch(t){case i.Runtime:o=`as a runtime dependency of chunk ${r}`;break;case i.Parent:o=`from module ${r}`;break;case i.Update:o="from an HMR update";break;default:R(t,e=>`Unknown source type: ${e}`)}let l=Error(`Failed to load chunk ${n} ${o}${e?`: ${e}`:""}`,e?{cause:e}:void 0);throw l.name="ChunkLoadError",l}),x.set(o,l)}return l}function N(e){return`${t}${e.split("/").map(e=>encodeURIComponent(e)).join("/")}${r}`}S.L=function(e){return M(i.Parent,this.m.id,e)},S.R=function(e){let t=this.r(e);return t?.default??t},S.P=function(e){return`/ROOT/${e??""}`},S.q=function(e,t){m.call(this,`${e}${r}`,t)},S.b=function(e,t,o,i){let l="SharedWorker"===e.name,s=[o.map(e=>N(e)).reverse(),r];for(let e of n)s.push(globalThis[e]);let u=new URL(N(t),location.origin),a=JSON.stringify(s);return l?u.searchParams.set("params",a):u.hash="#params="+encodeURIComponent(a),new e(u,i?{...i,type:void 0}:void 0)};let q=/\.js(?:\?[^#]*)?(?:#.*)?$/,K=/\.css(?:\?[^#]*)?(?:#.*)?$/;function L(e){return K.test(e)}u.w=function(t,r,n){return e.loadWebAssembly(i.Parent,this.m.id,t,r,n)},u.u=function(t,r){return e.loadWebAssemblyModule(i.Parent,this.m.id,t,r)};let I={};u.c=I;let B=(e,t)=>{let r=I[e];if(r){if(r.error)throw r.error;return r}return W(e,i.Parent,t.id)};function W(e,t,r){let n=_.get(e);if("function"!=typeof n)throw Error(function(e,t,r){let n;switch(t){case 0:n=`as a runtime entry of chunk ${r}`;break;case 1:n=`because it was required from module ${r}`;break;case 2:n="because of an HMR update";break;default:R(t,e=>`Unknown source type: ${e}`)}return`Module ${e} was instantiated ${n}, but the module factory is not available.`}(e,t,r));let o=h(e),i=o.exports;I[e]=o;let l=new s(o,i);try{n(l,o,i)}catch(e){throw o.error=e,e}return o.namespaceObject&&o.exports!==o.namespaceObject&&g(o.exports,o.namespaceObject),o}function F(t){let r,n=function(e){if("string"==typeof e)return e;if(e)return{src:e.getAttribute("src")};if("u">typeof TURBOPACK_NEXT_CHUNK_URLS)return{src:TURBOPACK_NEXT_CHUNK_URLS.pop()};throw Error("chunk path empty but not in a worker")}(t[0]);return 2===t.length?r=t[1]:(r=void 0,!function(e,t){let r=1;for(;r<e.length;){let n,o=r+1;for(;o<e.length&&"function"!=typeof e[o];)o++;if(o===e.length)throw Error("malformed chunk format, expected a factory function");let i=e[o];for(let i=r;i<o;i++){let r=e[i],o=t.get(r);if(o){n=o;break}}let l=n??i,s=!1;for(let n=r;n<o;n++){let r=e[n];t.has(r)||(s||(l===i&&Object.defineProperty(i,"name",{value:"module evaluation"}),s=!0),t.set(r,l))}r=o+1}}(t,_)),e.registerChunk(n,r)}let X=new Map;function D(e){let t=X.get(e);if(!t){let r,n;t={resolved:!1,loadingStarted:!1,promise:new Promise((e,t)=>{r=e,n=t}),resolve:()=>{t.resolved=!0,r()},reject:n},X.set(e,t)}return t}e={async registerChunk(e,r){let n=function(e){if("string"==typeof e)return e;let r=decodeURIComponent(e.src.replace(/[?#].*$/,""));return r.startsWith(t)?r.slice(t.length):r}(e);if(D("string"==typeof e?N(e):e.src).resolve(),null!=r){for(let e of r.otherChunks)D(N("string"==typeof e?e:e.path));if(await Promise.all(r.otherChunks.map(e=>T(i.Runtime,n,e))),r.runtimeModuleIds.length>0)for(let e of r.runtimeModuleIds)!function(e,t){let r=I[t];if(r){if(r.error)throw r.error;return}W(t,i.Runtime,e)}(n,e)}},loadChunkCached:(e,t)=>(function(e,t){let r=D(t);if(r.loadingStarted)return r.promise;if(e===i.Runtime)return r.loadingStarted=!0,L(t)&&r.resolve(),r.promise;if("function"==typeof importScripts)if(L(t));else if(q.test(t))self.TURBOPACK_NEXT_CHUNK_URLS.push(t),importScripts(t);else throw Error(`can't infer type of chunk from URL ${t} in worker`);else{let e=decodeURI(t);if(L(t))if(document.querySelectorAll(`link[rel=stylesheet][href="${t}"],link[rel=stylesheet][href^="${t}?"],link[rel=stylesheet][href="${e}"],link[rel=stylesheet][href^="${e}?"]`).length>0)r.resolve();else{let e=document.createElement("link");e.rel="stylesheet",e.href=t,e.onerror=()=>{r.reject()},e.onload=()=>{r.resolve()},document.head.appendChild(e)}else if(q.test(t)){let n=document.querySelectorAll(`script[src="${t}"],script[src^="${t}?"],script[src="${e}"],script[src^="${e}?"]`);if(n.length>0)for(let e of Array.from(n))e.addEventListener("error",()=>{r.reject()});else{let e=document.createElement("script");e.src=t,e.onerror=()=>{r.reject()},document.head.appendChild(e)}}else throw Error(`can't infer type of chunk from URL ${t}`)}return r.loadingStarted=!0,r.promise})(e,t),async loadWebAssembly(e,t,r,n,o){let i=fetch(N(r)),{instance:l}=await WebAssembly.instantiateStreaming(i,o);return l.exports},async loadWebAssemblyModule(e,t,r,n){let o=fetch(N(r));return await WebAssembly.compileStreaming(o)}};let H=globalThis.TURBOPACK;globalThis.TURBOPACK={push:F},H.forEach(F)})();
@@ -29,6 +29,7 @@
29
29
  "@tailwindcss/postcss": "^4.2.3",
30
30
  "@tanstack/react-query": "^5",
31
31
  "@tanstack/react-table": "^8",
32
+ "ali-oss": "^6.21.0",
32
33
  "class-variance-authority": "^0.7.1",
33
34
  "clsx": "^2.1.1",
34
35
  "cmdk": "^1.1.1",
@@ -29,7 +29,7 @@ export default function SettingsClient() {
29
29
  }
30
30
 
31
31
  return (
32
- <div className="space-y-8 max-w-2xl">
32
+ <div className="max-w-5xl">
33
33
  <KBSettingsForm knowledgeBase={knowledgeBase} />
34
34
  </div>
35
35
  );
@@ -55,12 +55,32 @@ export async function GET(request: NextRequest, context: RouteContext) {
55
55
  }
56
56
  }
57
57
 
58
+ /**
59
+ * Normalize a caller-supplied `ossKey` into the `oss://<bucket>/<key>` URI
60
+ * the upstream KB API requires. The dashboard browser sends bare keys (the
61
+ * shape that comes out of `client.list`), and the CLI forwards whatever the
62
+ * user typed; either may already be a URI. Pass-through when it is, prepend
63
+ * the configured bucket otherwise.
64
+ *
65
+ * Bucket comes from the resolved AppConfig — the same value the OSS browse
66
+ * routes (`/api/v1/oss/list`, `/api/v1/oss/expand-prefix`) use, so the URI
67
+ * we forward is guaranteed to point at the same bucket the user just
68
+ * browsed.
69
+ */
70
+ function normalizeDocumentOssKey(ossKey: unknown, bucket: string): unknown {
71
+ if (typeof ossKey !== "string" || ossKey.length === 0) return ossKey;
72
+ if (ossKey.startsWith("oss://")) return ossKey;
73
+ // Strip a leading "/" so the user can paste either "docs/x.md" or "/docs/x.md".
74
+ const trimmed = ossKey.startsWith("/") ? ossKey.slice(1) : ossKey;
75
+ return `oss://${bucket}/${trimmed}`;
76
+ }
77
+
58
78
  export async function POST(request: NextRequest, context: RouteContext) {
59
79
  try {
60
80
  const { name } = await context.params;
61
81
  const auth = requireClients(request);
62
82
  if (!("kb" in auth)) return auth;
63
- const { kb } = auth;
83
+ const { kb, config } = auth;
64
84
 
65
85
  let body: Record<string, unknown>;
66
86
  try {
@@ -73,9 +93,30 @@ export async function POST(request: NextRequest, context: RouteContext) {
73
93
  });
74
94
  }
75
95
 
76
- const { knowledgeBaseName: _ignoredAdd, ...safeBody } = body;
96
+ const { knowledgeBaseName: _ignoredAdd, documents, ...rest } = body;
77
97
  void _ignoredAdd;
78
- const resp = await kb.addDocuments({ ...safeBody, knowledgeBaseName: name });
98
+
99
+ // Prepend `oss://<bucket>/` to every document item's ossKey, in place.
100
+ // We mutate a shallow copy of the array so the request the user sent
101
+ // (held by the caller) is not modified.
102
+ const bucket = (config.oss_bucket_name ?? "").trim();
103
+ const normalizedDocuments = Array.isArray(documents)
104
+ ? bucket
105
+ ? documents.map((doc) => {
106
+ if (doc && typeof doc === "object" && "ossKey" in doc) {
107
+ const item = doc as Record<string, unknown>;
108
+ return { ...item, ossKey: normalizeDocumentOssKey(item.ossKey, bucket) };
109
+ }
110
+ return doc;
111
+ })
112
+ : documents
113
+ : documents;
114
+
115
+ const resp = await kb.addDocuments({
116
+ ...rest,
117
+ documents: normalizedDocuments,
118
+ knowledgeBaseName: name,
119
+ });
79
120
  return forwardResponse(resp);
80
121
  } catch (error) {
81
122
  return handleApiError(error);
@@ -0,0 +1,125 @@
1
+ import { type NextRequest } from "next/server";
2
+
3
+ import {
4
+ errorResponse,
5
+ handleApiError,
6
+ requireClients,
7
+ successResponse,
8
+ } from "@/lib/server/api-helpers";
9
+ import { getOssClient, mapOssError } from "@/lib/server/oss-client";
10
+
11
+ export const runtime = "nodejs";
12
+ export const dynamic = "force-dynamic";
13
+
14
+ const DEFAULT_PAGE_SIZE = 100;
15
+ const MAX_PAGE_SIZE = 1000;
16
+
17
+ interface OssListFolder {
18
+ name: string;
19
+ prefix: string;
20
+ }
21
+
22
+ interface OssListFile {
23
+ name: string;
24
+ ossKey: string;
25
+ size: number;
26
+ lastModified: string; // ISO
27
+ }
28
+
29
+ /**
30
+ * GET /api/v1/oss/list?prefix=&continuationToken=&maxResults=&search=
31
+ *
32
+ * One-level listing for the dashboard's OSS browser. Returns common-prefixes
33
+ * (folders) and objects (files) separately so the UI doesn't have to
34
+ * re-derive structure from raw keys.
35
+ */
36
+ export async function GET(request: NextRequest | Request) {
37
+ try {
38
+ const auth = requireClients(request as NextRequest);
39
+ if (!("config" in auth)) return auth;
40
+
41
+ const client = getOssClient(auth.config);
42
+ if (!client) {
43
+ return errorResponse(
44
+ "OSS_NOT_CONFIGURED",
45
+ "OSS endpoint / bucket are not configured for this instance",
46
+ 400,
47
+ { errorSource: "local" },
48
+ );
49
+ }
50
+
51
+ const url = new URL(request.url);
52
+ const prefix = url.searchParams.get("prefix") ?? "";
53
+ const continuationToken =
54
+ url.searchParams.get("continuationToken") ?? undefined;
55
+ const search = url.searchParams.get("search")?.trim() ?? "";
56
+
57
+ const maxRaw = Number(url.searchParams.get("maxResults") ?? DEFAULT_PAGE_SIZE);
58
+ const maxResults = Number.isFinite(maxRaw)
59
+ ? Math.min(MAX_PAGE_SIZE, Math.max(1, Math.trunc(maxRaw)))
60
+ : DEFAULT_PAGE_SIZE;
61
+
62
+ let resp: {
63
+ objects?: Array<{ name: string; size: number; lastModified: Date | string }>;
64
+ prefixes?: string[];
65
+ nextMarker?: string | null;
66
+ isTruncated?: boolean;
67
+ };
68
+ try {
69
+ resp = await client.list(
70
+ {
71
+ prefix,
72
+ delimiter: "/",
73
+ marker: continuationToken,
74
+ "max-keys": maxResults,
75
+ },
76
+ {},
77
+ );
78
+ } catch (error) {
79
+ const mapped = mapOssError(error);
80
+ return errorResponse(mapped.code, mapped.message, mapped.httpStatus, {
81
+ errorSource: "service",
82
+ });
83
+ }
84
+
85
+ // ali-oss returns the synthetic "folder marker" object whose name === prefix
86
+ // when the bucket was created with a UI tool. It carries size 0 and is not
87
+ // a real file — drop it so the UI doesn't show "/" as a row.
88
+ const rawObjects = resp.objects ?? [];
89
+ let files: OssListFile[] = rawObjects
90
+ .filter((o) => o.name !== prefix)
91
+ .map((o) => ({
92
+ name: o.name.slice(prefix.length),
93
+ ossKey: o.name,
94
+ size: o.size,
95
+ lastModified:
96
+ o.lastModified instanceof Date
97
+ ? o.lastModified.toISOString()
98
+ : String(o.lastModified ?? ""),
99
+ }));
100
+
101
+ let folders: OssListFolder[] = (resp.prefixes ?? []).map((p) => ({
102
+ name: p.slice(prefix.length),
103
+ prefix: p,
104
+ }));
105
+
106
+ // Server-side substring filter — applied after listing so it does not
107
+ // interfere with OSS's prefix scanning. Operates on the visible name
108
+ // (without the parent prefix) for predictable UX.
109
+ if (search) {
110
+ const needle = search.toLowerCase();
111
+ files = files.filter((f) => f.name.toLowerCase().includes(needle));
112
+ folders = folders.filter((f) => f.name.toLowerCase().includes(needle));
113
+ }
114
+
115
+ return successResponse({
116
+ prefix,
117
+ folders,
118
+ files,
119
+ nextContinuationToken: resp.isTruncated ? resp.nextMarker ?? null : null,
120
+ totalEstimate: folders.length + files.length,
121
+ });
122
+ } catch (error) {
123
+ return handleApiError(error);
124
+ }
125
+ }
@@ -111,47 +111,62 @@
111
111
  --primary-800: 214 95% 87%;
112
112
  --primary-900: 214 100% 93%;
113
113
 
114
- --primary-soft: 221 50% 18%;
115
-
116
- --background: 222 47% 7%;
117
- --foreground: 210 20% 92%;
118
-
119
- --card: 222 47% 11%;
120
- --card-foreground: 210 20% 92%;
121
-
122
- --popover: 222 47% 11%;
123
- --popover-foreground: 210 20% 92%;
124
-
125
- --secondary: 217 19% 18%;
126
- --secondary-foreground: 210 20% 92%;
127
-
128
- --muted: 217 19% 22%;
129
- --muted-foreground: 215 16% 65%;
130
-
131
- --accent: 221 50% 18%;
114
+ /*
115
+ * Dark-mode neutrals — GitHub primer-dark style.
116
+ *
117
+ * Earlier the dark theme ran on `222° 47% L` everywhere (a saturated
118
+ * Tailwind-slate / Stripe-style blue). On a screen the high saturation
119
+ * made every "neutral" surface feel blue-tinted, which fights against
120
+ * the primary blue accent — `#2563eb` ended up sitting on a background
121
+ * with the same hue, killing the contrast that gives a CTA its lift.
122
+ *
123
+ * Industry mainstream in 2024-2026 leans toward a desaturated dark
124
+ * with a *subtle* cool tint (GitHub `#0d1117`, Linear `#0e0e10`).
125
+ * We follow GitHub's hue (≈220°) and saturation (~13%) for the
126
+ * grayscale tokens, and keep all primary/accent tokens unchanged so
127
+ * the brand identity is preserved.
128
+ */
129
+ --primary-soft: 218 28% 18%; /* slightly desat to match new neutrals */
130
+
131
+ --background: 220 13% 8%; /* was 222 47% 7% ≈ #0d1117 */
132
+ --foreground: 213 13% 92%;
133
+
134
+ --card: 220 13% 11%; /* was 222 47% 11% ≈ #161b22 */
135
+ --card-foreground: 213 13% 92%;
136
+
137
+ --popover: 220 13% 11%;
138
+ --popover-foreground: 213 13% 92%;
139
+
140
+ --secondary: 220 13% 18%; /* was 217 19% 18% */
141
+ --secondary-foreground: 213 13% 92%;
142
+
143
+ --muted: 220 13% 22%;
144
+ --muted-foreground: 215 10% 65%;
145
+
146
+ --accent: 218 28% 18%; /* hover/active tint, less blue-shift */
132
147
  --accent-foreground: 221 83% 80%;
133
148
 
134
149
  --destructive: 0 84% 65%;
135
150
  --destructive-foreground: 0 0% 100%;
136
151
 
137
- --border: 217 19% 22%;
138
- --border-light: 217 19% 16%;
139
- --input: 217 19% 22%;
152
+ --border: 220 13% 22%; /* ≈ #21262d, GitHub border default */
153
+ --border-light: 220 13% 16%;
154
+ --input: 220 13% 22%;
140
155
  --ring: 221 83% 62%;
141
156
 
142
- --surface: 222 47% 11%;
143
- --surface-secondary: 222 47% 9%;
144
- --surface-tertiary: 217 19% 22%;
157
+ --surface: 220 13% 11%;
158
+ --surface-secondary: 220 13% 9%;
159
+ --surface-tertiary: 220 13% 22%;
145
160
 
146
- --subtle: 215 16% 47%;
147
- --subtle-light: 215 16% 35%;
148
- --subtle-dark: 210 20% 80%;
161
+ --subtle: 215 10% 47%;
162
+ --subtle-light: 215 10% 35%;
163
+ --subtle-dark: 213 13% 80%;
149
164
 
150
- --sidebar-bg: 222 47% 9%;
151
- --sidebar-border: 217 19% 22%;
152
- --sidebar-active-bg: 221 50% 16%;
165
+ --sidebar-bg: 220 13% 9%;
166
+ --sidebar-border: 220 13% 22%;
167
+ --sidebar-active-bg: 218 28% 17%; /* slightly more chroma so active row reads */
153
168
  --sidebar-active-fg: 221 83% 80%;
154
- --sidebar-text: 210 20% 80%;
169
+ --sidebar-text: 213 13% 80%;
155
170
 
156
171
  --success: 142 71% 55%;
157
172
  --success-soft: 142 30% 18%;
@@ -1,74 +1,40 @@
1
1
  "use client";
2
2
 
3
- import { useState } from "react";
4
3
  import { Plus } from "lucide-react";
5
4
 
6
- import {
7
- Select,
8
- SelectContent,
9
- SelectItem,
10
- SelectTrigger,
11
- SelectValue,
12
- } from "@/components/ui/select";
13
5
  import type { KnowledgeBase } from "@/types/knowledge-base";
14
6
 
7
+ import { MountPicker } from "./mount-picker";
8
+
15
9
  interface AddMountRowProps {
16
10
  kbs: KnowledgeBase[];
17
11
  onAdd: (kb: KnowledgeBase) => void;
18
12
  }
19
13
 
20
14
  /**
21
- * Select-to-add control for mounting an additional knowledge base into
22
- * the chat config. Picking an item from the dropdown commits the mount
23
- * immediately there is no separate confirm buttonmatching the
24
- * "label / member picker" pattern used by GitHub, Linear, and Notion.
15
+ * Compact "add another KB" affordance shown beneath the list of already-
16
+ * mounted KBs. Visually subordinate to the rows above (dashed border, muted
17
+ * fill) because the user has already crossed the onboarding threshold — the
18
+ * primary task here is now reading the existing list, not adding more.
25
19
  *
26
- * Implementation: we run the Select uncontrolled and bump a `key` after
27
- * each add so the trigger always renders the placeholder again, keeping
28
- * the affordance ready for the next pick without leaving a stale label
29
- * in the trigger.
20
+ * For the zero-mounts onboarding moment use [[MountEmptyState]] instead;
21
+ * that variant promotes the same picker into the panel's focal point.
30
22
  */
31
23
  export function AddMountRow({ kbs, onAdd }: AddMountRowProps) {
32
- const [refreshKey, setRefreshKey] = useState(0);
33
-
34
- const handleChange = (value: string) => {
35
- const kb = kbs.find((item) => item.knowledgeBaseName === value);
36
- if (!kb) return;
37
- onAdd(kb);
38
- setRefreshKey((k) => k + 1);
39
- };
24
+ if (kbs.length === 0) return null;
40
25
 
41
26
  return (
42
- <Select key={refreshKey} onValueChange={handleChange}>
43
- {/*
44
- SelectTrigger is `flex justify-between` and renders the chevron
45
- as a sibling after `children`. Wrap our [icon + value] cluster in
46
- a single div so the trigger sees exactly two children (group on
47
- the left, chevron on the right) instead of distributing the icon,
48
- value span, and chevron evenly across the row.
49
- */}
50
- <SelectTrigger className="w-full">
51
- <div className="flex min-w-0 flex-1 items-center gap-2 text-left">
52
- <Plus className="h-3.5 w-3.5 shrink-0 text-[hsl(var(--muted-foreground))]" />
53
- <SelectValue placeholder="添加挂载的知识库" />
54
- </div>
55
- </SelectTrigger>
56
- <SelectContent>
57
- {kbs.length === 0 ? (
58
- <SelectItem value="__empty" disabled>
59
- 无可挂载的知识库
60
- </SelectItem>
61
- ) : (
62
- kbs.map((kb) => (
63
- <SelectItem
64
- key={kb.knowledgeBaseName}
65
- value={kb.knowledgeBaseName}
66
- >
67
- {kb.knowledgeBaseName}
68
- </SelectItem>
69
- ))
70
- )}
71
- </SelectContent>
72
- </Select>
27
+ <MountPicker kbs={kbs} onPick={onAdd} align="start">
28
+ <button
29
+ type="button"
30
+ className="group flex w-full items-center justify-center gap-1.5 rounded-md border border-dashed border-[hsl(var(--border))] bg-transparent px-3 py-2 text-xs font-medium text-[hsl(var(--muted-foreground))] transition-colors hover:border-[hsl(var(--primary)/0.5)] hover:bg-[hsl(var(--primary-soft))] hover:text-[hsl(var(--primary))] focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[hsl(var(--primary)/0.3)] focus-visible:ring-offset-1 focus-visible:ring-offset-[hsl(var(--background))]"
31
+ >
32
+ <Plus className="h-3.5 w-3.5 transition-transform group-hover:rotate-90" />
33
+ 添加更多知识库
34
+ <span className="text-[hsl(var(--muted-foreground))]/70 group-hover:text-[hsl(var(--primary))]/70">
35
+ ({kbs.length})
36
+ </span>
37
+ </button>
38
+ </MountPicker>
73
39
  );
74
40
  }