@tablestore/tablestore-agent-cli 0.2.3 → 0.2.4

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 (266) hide show
  1. package/dist/commands/kb/create.d.ts.map +1 -1
  2. package/dist/commands/kb/create.js +9 -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 +40 -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/build-manifest.json +3 -3
  9. package/dist/dashboard-runtime/dashboard/.next/prerender-manifest.json +3 -3
  10. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
  11. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
  12. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/documents/page.js.nft.json +1 -1
  13. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/documents/page_client-reference-manifest.js +1 -1
  14. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/page.js.nft.json +1 -1
  15. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/page_client-reference-manifest.js +1 -1
  16. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/qa/page.js.nft.json +1 -1
  17. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/qa/page_client-reference-manifest.js +1 -1
  18. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/retrieval/page.js.nft.json +1 -1
  19. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/retrieval/page_client-reference-manifest.js +1 -1
  20. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/settings/page.js.nft.json +1 -1
  21. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/settings/page_client-reference-manifest.js +1 -1
  22. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/create/page.js.nft.json +1 -1
  23. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/create/page_client-reference-manifest.js +1 -1
  24. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/page.js.nft.json +1 -1
  25. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/page_client-reference-manifest.js +1 -1
  26. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/llm-providers/[id]/page.js.nft.json +1 -1
  27. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/llm-providers/[id]/page_client-reference-manifest.js +1 -1
  28. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/llm-providers/new/page.js.nft.json +1 -1
  29. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/llm-providers/new/page_client-reference-manifest.js +1 -1
  30. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/llm-providers/page.js.nft.json +1 -1
  31. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/llm-providers/page_client-reference-manifest.js +1 -1
  32. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/messages/page.js.nft.json +1 -1
  33. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/messages/page_client-reference-manifest.js +1 -1
  34. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/page.js.nft.json +1 -1
  35. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/page_client-reference-manifest.js +1 -1
  36. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/requests/page.js.nft.json +1 -1
  37. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/requests/page_client-reference-manifest.js +1 -1
  38. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/search/page.js.nft.json +1 -1
  39. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/search/page_client-reference-manifest.js +1 -1
  40. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/settings/page.js.nft.json +1 -1
  41. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/settings/page_client-reference-manifest.js +1 -1
  42. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/units/page.js.nft.json +1 -1
  43. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/units/page_client-reference-manifest.js +1 -1
  44. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/create/page.js.nft.json +1 -1
  45. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/create/page_client-reference-manifest.js +1 -1
  46. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/page.js.nft.json +1 -1
  47. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/page_client-reference-manifest.js +1 -1
  48. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/projects/page.js.nft.json +1 -1
  49. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/projects/page_client-reference-manifest.js +1 -1
  50. package/dist/dashboard-runtime/dashboard/.next/server/app/_global-error.html +1 -1
  51. package/dist/dashboard-runtime/dashboard/.next/server/app/_global-error.rsc +1 -1
  52. package/dist/dashboard-runtime/dashboard/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  53. package/dist/dashboard-runtime/dashboard/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  54. package/dist/dashboard-runtime/dashboard/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  55. package/dist/dashboard-runtime/dashboard/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  56. package/dist/dashboard-runtime/dashboard/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  57. package/dist/dashboard-runtime/dashboard/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  58. package/dist/dashboard-runtime/dashboard/.next/server/app/_not-found.html +1 -1
  59. package/dist/dashboard-runtime/dashboard/.next/server/app/_not-found.rsc +2 -2
  60. package/dist/dashboard-runtime/dashboard/.next/server/app/_not-found.segments/_full.segment.rsc +2 -2
  61. package/dist/dashboard-runtime/dashboard/.next/server/app/_not-found.segments/_head.segment.rsc +1 -1
  62. package/dist/dashboard-runtime/dashboard/.next/server/app/_not-found.segments/_index.segment.rsc +2 -2
  63. package/dist/dashboard-runtime/dashboard/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +1 -1
  64. package/dist/dashboard-runtime/dashboard/.next/server/app/_not-found.segments/_not-found.segment.rsc +1 -1
  65. package/dist/dashboard-runtime/dashboard/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  66. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/auth/status/route.js.nft.json +1 -1
  67. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/auth/token/route.js.nft.json +1 -1
  68. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/instances/[name]/route.js.nft.json +1 -1
  69. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/instances/[name]/token/route.js.nft.json +1 -1
  70. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/instances/[name]/use/route.js.nft.json +1 -1
  71. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/instances/route.js.nft.json +1 -1
  72. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/knowledge-bases/[name]/chunks/route.js.nft.json +1 -1
  73. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/knowledge-bases/[name]/documents/[docId]/chunks/route.js.nft.json +1 -1
  74. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/knowledge-bases/[name]/documents/[docId]/route.js.nft.json +1 -1
  75. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/knowledge-bases/[name]/documents/route.js.nft.json +1 -1
  76. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/knowledge-bases/[name]/documents/upload/route.js.nft.json +1 -1
  77. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/knowledge-bases/[name]/retrieve/route.js.nft.json +1 -1
  78. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/knowledge-bases/[name]/route.js.nft.json +1 -1
  79. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/knowledge-bases/route.js.nft.json +1 -1
  80. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/llm/chat/route.js.nft.json +1 -1
  81. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/llm/providers/[id]/models/route.js.nft.json +1 -1
  82. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/llm/providers/[id]/route.js.nft.json +1 -1
  83. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/llm/providers/[id]/test/route.js.nft.json +1 -1
  84. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/llm/providers/route.js.nft.json +1 -1
  85. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/logs/client/route.js.nft.json +1 -1
  86. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/messages/route.js.nft.json +1 -1
  87. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/requests/route.js.nft.json +1 -1
  88. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/route.js.nft.json +1 -1
  89. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/search/route.js.nft.json +1 -1
  90. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/units/[memoryId]/route.js.nft.json +1 -1
  91. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/units/route.js.nft.json +1 -1
  92. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/route.js.nft.json +1 -1
  93. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/oss/list/route.js.nft.json +1 -1
  94. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/runtime/context/route.js.nft.json +1 -1
  95. package/dist/dashboard-runtime/dashboard/.next/server/app/index.html +1 -1
  96. package/dist/dashboard-runtime/dashboard/.next/server/app/index.rsc +2 -2
  97. package/dist/dashboard-runtime/dashboard/.next/server/app/index.segments/__PAGE__.segment.rsc +1 -1
  98. package/dist/dashboard-runtime/dashboard/.next/server/app/index.segments/_full.segment.rsc +2 -2
  99. package/dist/dashboard-runtime/dashboard/.next/server/app/index.segments/_head.segment.rsc +1 -1
  100. package/dist/dashboard-runtime/dashboard/.next/server/app/index.segments/_index.segment.rsc +2 -2
  101. package/dist/dashboard-runtime/dashboard/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  102. package/dist/dashboard-runtime/dashboard/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
  103. package/dist/dashboard-runtime/dashboard/.next/server/app/onboarding.html +1 -1
  104. package/dist/dashboard-runtime/dashboard/.next/server/app/onboarding.rsc +3 -3
  105. package/dist/dashboard-runtime/dashboard/.next/server/app/onboarding.segments/_full.segment.rsc +3 -3
  106. package/dist/dashboard-runtime/dashboard/.next/server/app/onboarding.segments/_head.segment.rsc +1 -1
  107. package/dist/dashboard-runtime/dashboard/.next/server/app/onboarding.segments/_index.segment.rsc +2 -2
  108. package/dist/dashboard-runtime/dashboard/.next/server/app/onboarding.segments/_tree.segment.rsc +2 -2
  109. package/dist/dashboard-runtime/dashboard/.next/server/app/onboarding.segments/onboarding/__PAGE__.segment.rsc +2 -2
  110. package/dist/dashboard-runtime/dashboard/.next/server/app/onboarding.segments/onboarding.segment.rsc +1 -1
  111. package/dist/dashboard-runtime/dashboard/.next/server/app/page_client-reference-manifest.js +1 -1
  112. package/dist/dashboard-runtime/dashboard/.next/server/chunks/0p91_next_dist_esm_build_templates_app-route_0n~ec7s.js +6 -6
  113. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/0b1r_app_(dashboard)_knowledge-base_[name]_documents_documents-client_tsx_0g2uxmt._.js +2 -2
  114. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/0e95_src_app_(dashboard)_knowledge-base_[name]_settings_settings-client_tsx_13312zk._.js +1 -1
  115. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/[root-of-the-server]__08faq-z._.js +1 -1
  116. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0c94d.y._.js +3 -0
  117. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0jb9ccl._.js +1 -1
  118. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/{[root-of-the-server]__00uh_im._.js → [root-of-the-server]__0lgg04c._.js} +1 -1
  119. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_01-2v37._.js +1 -1
  120. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_01ag-vl._.js +3 -0
  121. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0atzifq._.js +3 -0
  122. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0f4u0.1._.js +1 -1
  123. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0gbt~hy._.js +1 -1
  124. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0gl7kh7._.js +1 -1
  125. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0j-q~ro._.js +1 -1
  126. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0jghj2_._.js +1 -1
  127. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0jlyg05._.js +3 -0
  128. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0n4gd_6._.js +1 -1
  129. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/{_0l~-9i0._.js → _0tdjkbc._.js} +2 -2
  130. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0tej2s.._.js +1 -1
  131. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_10u~-xc._.js +3 -0
  132. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_12r9c8h._.js +1 -1
  133. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_0.glq39._.js +3 -0
  134. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_00ofp7q._.js +1 -1
  135. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_05.qn9h._.js +3 -0
  136. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_065m1.j._.js +1 -1
  137. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_0xf3ffa._.js +1 -1
  138. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_0y49vhd._.js +1 -1
  139. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_10dsqx~._.js +1 -1
  140. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_app_(dashboard)_knowledge-base_create_page_tsx_0916~g-._.js +1 -1
  141. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_app_(dashboard)_memory_[store]_units_page_tsx_0.6xnei._.js +1 -1
  142. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_components_0ls1exu._.js +1 -1
  143. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_components_0ugdjlb._.js +1 -1
  144. package/dist/dashboard-runtime/dashboard/.next/server/middleware-build-manifest.js +3 -3
  145. package/dist/dashboard-runtime/dashboard/.next/server/pages/404.html +1 -1
  146. package/dist/dashboard-runtime/dashboard/.next/server/pages/500.html +1 -1
  147. package/dist/dashboard-runtime/dashboard/.next/server/server-reference-manifest.js +1 -1
  148. package/dist/dashboard-runtime/dashboard/.next/server/server-reference-manifest.json +1 -1
  149. package/dist/dashboard-runtime/dashboard/.next/static/chunks/00wmf85833643.js +1 -0
  150. package/dist/dashboard-runtime/dashboard/.next/static/chunks/02tj1_rhgobzv.js +1 -0
  151. package/dist/dashboard-runtime/dashboard/.next/static/chunks/{0mea2ylxe.umh.js → 02zf3qddfaw~u.js} +1 -1
  152. package/dist/dashboard-runtime/dashboard/.next/static/chunks/039i70t10axdd.css +1 -0
  153. package/dist/dashboard-runtime/dashboard/.next/static/chunks/04bfame9rk.3d.js +5 -0
  154. package/dist/dashboard-runtime/dashboard/.next/static/chunks/07ygw8215kyvc.js +1 -0
  155. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0b5hr027rat4w.js +138 -0
  156. package/dist/dashboard-runtime/dashboard/.next/static/chunks/{0__g1ogrdh412.js → 0bkm-5yza5~d2.js} +1 -1
  157. package/dist/dashboard-runtime/dashboard/.next/static/chunks/{0lrw.bnws62y9.js → 0d7d.b.v9noym.js} +1 -1
  158. package/dist/dashboard-runtime/dashboard/.next/static/chunks/{0cto67_iw~p9z.js → 0fdofp-3kkc4g.js} +1 -1
  159. package/dist/dashboard-runtime/dashboard/.next/static/chunks/{18d_i28~jrf91.js → 0i8hdbek9j-fu.js} +1 -1
  160. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0ioivx4pbmayb.js +1 -0
  161. package/dist/dashboard-runtime/dashboard/.next/static/chunks/{0lp2g_27uyhuz.js → 0je7fmsrz2vok.js} +1 -1
  162. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0jukioxtp1mn3.js +138 -0
  163. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0klidr2i6cd.g.js +1 -0
  164. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0k~bkh1586r2i.js +1 -0
  165. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0nakvv2p1kjnf.js +1 -0
  166. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0un~rqes29pcr.js +1 -0
  167. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0v.u57bsjppd_.js +1 -0
  168. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0x3w~yxvm1xsq.js +4 -0
  169. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0x5gol39unrgb.js +1 -0
  170. package/dist/dashboard-runtime/dashboard/.next/static/chunks/12s59v_sk0q-z.js +1 -0
  171. package/dist/dashboard-runtime/dashboard/.next/static/chunks/{06uuhz24tvdt..js → 14~eqof4660i3.js} +1 -1
  172. package/dist/dashboard-runtime/dashboard/.next/static/chunks/16y3764x-fh1n.js +1 -0
  173. package/dist/dashboard-runtime/dashboard/.next/static/chunks/17mcnyr~1j7ih.js +1 -0
  174. package/dist/dashboard-runtime/dashboard/src/app/(dashboard)/knowledge-base/[name]/documents/documents-client.tsx +1 -1
  175. package/dist/dashboard-runtime/dashboard/src/app/(dashboard)/knowledge-base/[name]/layout-client.tsx +62 -26
  176. package/dist/dashboard-runtime/dashboard/src/app/(dashboard)/memory/[store]/messages/page.tsx +8 -4
  177. package/dist/dashboard-runtime/dashboard/src/app/(dashboard)/memory/[store]/requests/page.tsx +6 -2
  178. package/dist/dashboard-runtime/dashboard/src/app/(dashboard)/memory/[store]/requests/request-detail-dialog.tsx +9 -9
  179. package/dist/dashboard-runtime/dashboard/src/app/(dashboard)/memory/[store]/requests/requests-table.tsx +2 -2
  180. package/dist/dashboard-runtime/dashboard/src/app/(dashboard)/memory/[store]/search/page.tsx +5 -1
  181. package/dist/dashboard-runtime/dashboard/src/app/(dashboard)/memory/[store]/units/page.tsx +11 -7
  182. package/dist/dashboard-runtime/dashboard/src/app/(dashboard)/memory/create/page.tsx +1 -1
  183. package/dist/dashboard-runtime/dashboard/src/app/(dashboard)/memory/page.tsx +1 -1
  184. package/dist/dashboard-runtime/dashboard/src/app/api/v1/llm/chat/route.ts +124 -13
  185. package/dist/dashboard-runtime/dashboard/src/app/globals.css +23 -0
  186. package/dist/dashboard-runtime/dashboard/src/components/chat/chat-config-context.tsx +39 -17
  187. package/dist/dashboard-runtime/dashboard/src/components/chat/chat-mount-config.tsx +1 -0
  188. package/dist/dashboard-runtime/dashboard/src/components/chat/memory-bind-section.tsx +15 -15
  189. package/dist/dashboard-runtime/dashboard/src/components/chat/mount-retrieval-dialog.tsx +360 -0
  190. package/dist/dashboard-runtime/dashboard/src/components/chat/mount-row.tsx +49 -5
  191. package/dist/dashboard-runtime/dashboard/src/components/chat/unified-retrieval-section.tsx +61 -26
  192. package/dist/dashboard-runtime/dashboard/src/components/documents/doc-chunks-dialog.tsx +72 -20
  193. package/dist/dashboard-runtime/dashboard/src/components/instance/connect-instance-form.tsx +5 -0
  194. package/dist/dashboard-runtime/dashboard/src/components/knowledge-base/embedding-config-form.tsx +16 -2
  195. package/dist/dashboard-runtime/dashboard/src/components/knowledge-base/kb-card.tsx +37 -24
  196. package/dist/dashboard-runtime/dashboard/src/components/knowledge-base/kb-create-form.tsx +173 -86
  197. package/dist/dashboard-runtime/dashboard/src/components/knowledge-base/kb-settings-form.tsx +319 -280
  198. package/dist/dashboard-runtime/dashboard/src/components/layout/detail-sidebar.tsx +47 -18
  199. package/dist/dashboard-runtime/dashboard/src/components/layout/sidebar-instance-card.tsx +2 -2
  200. package/dist/dashboard-runtime/dashboard/src/components/memory/memory-add-dialog.tsx +2 -2
  201. package/dist/dashboard-runtime/dashboard/src/components/memory/memory-edit-dialog.tsx +2 -2
  202. package/dist/dashboard-runtime/dashboard/src/components/memory/memory-messages-table.tsx +3 -3
  203. package/dist/dashboard-runtime/dashboard/src/components/memory/memory-requests-table.tsx +12 -12
  204. package/dist/dashboard-runtime/dashboard/src/components/memory/memory-scope-bar.tsx +20 -11
  205. package/dist/dashboard-runtime/dashboard/src/components/memory/memory-search-form.tsx +7 -7
  206. package/dist/dashboard-runtime/dashboard/src/components/memory/memory-search-results.tsx +6 -6
  207. package/dist/dashboard-runtime/dashboard/src/components/memory/memory-store-card.tsx +1 -1
  208. package/dist/dashboard-runtime/dashboard/src/components/memory/memory-store-list.tsx +1 -1
  209. package/dist/dashboard-runtime/dashboard/src/components/memory/memory-unit-detail-panel.tsx +4 -4
  210. package/dist/dashboard-runtime/dashboard/src/components/memory/memory-unit-table.tsx +2 -2
  211. package/dist/dashboard-runtime/dashboard/src/components/qa/qa-message.tsx +104 -7
  212. package/dist/dashboard-runtime/dashboard/src/components/retrieval/retrieval-form.tsx +241 -24
  213. package/dist/dashboard-runtime/dashboard/src/components/retrieval/retrieval-rerank-fields.tsx +1 -0
  214. package/dist/dashboard-runtime/dashboard/src/components/retrieval/retrieval-result-card.tsx +52 -4
  215. package/dist/dashboard-runtime/dashboard/src/components/shared/status-badge.tsx +10 -5
  216. package/dist/dashboard-runtime/dashboard/src/components/ui/nav-tab-bar.tsx +1 -1
  217. package/dist/dashboard-runtime/dashboard/src/hooks/use-chat-history.ts +9 -5
  218. package/dist/dashboard-runtime/dashboard/src/lib/constants.ts +8 -0
  219. package/dist/dashboard-runtime/dashboard/src/lib/server/llm-client.ts +19 -1
  220. package/dist/dashboard-runtime/dashboard/src/schemas/knowledge-base.ts +6 -0
  221. package/dist/dashboard-runtime/dashboard/src/schemas/retrieval.ts +46 -27
  222. package/dist/dashboard-runtime/dashboard/src/types/knowledge-base.ts +10 -0
  223. package/dist/dashboard-runtime/dashboard/src/types/retrieval.ts +9 -4
  224. package/dist/dashboard-runtime/dashboard/tailwind.config.ts +4 -0
  225. package/dist/dashboard-runtime/dashboard/vitest.config.mjs +5 -2
  226. package/dist/dashboard-runtime/node_modules/@tablestore/tablestore-agent-sdk/dist/tsconfig.tsbuildinfo +1 -1
  227. package/dist/dashboard-runtime/node_modules/@tablestore/tablestore-agent-shared/dist/tsconfig.tsbuildinfo +1 -1
  228. package/dist/dashboard-runtime/node_modules/@tablestore/tablestore-agent-shared/dist/types.d.ts +21 -5
  229. package/dist/dashboard-runtime/node_modules/@tablestore/tablestore-agent-shared/dist/types.d.ts.map +1 -1
  230. package/dist/node_modules/@tablestore/tablestore-agent-sdk/dist/tsconfig.tsbuildinfo +1 -1
  231. package/dist/node_modules/@tablestore/tablestore-agent-shared/dist/tsconfig.tsbuildinfo +1 -1
  232. package/dist/node_modules/@tablestore/tablestore-agent-shared/dist/types.d.ts +21 -5
  233. package/dist/node_modules/@tablestore/tablestore-agent-shared/dist/types.d.ts.map +1 -1
  234. package/dist/utils/read-image-input.d.ts +47 -0
  235. package/dist/utils/read-image-input.d.ts.map +1 -0
  236. package/dist/utils/read-image-input.js +89 -0
  237. package/dist/utils/read-image-input.js.map +1 -0
  238. package/package.json +2 -2
  239. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0hozzu6._.js +0 -3
  240. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0tr8-3u._.js +0 -3
  241. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0uu1sjh._.js +0 -3
  242. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0vasoy6._.js +0 -3
  243. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_12~3vfk._.js +0 -3
  244. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_13_lb.o._.js +0 -3
  245. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_0ejgygh._.js +0 -3
  246. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_components_ui_0-tuf-h._.js +0 -3
  247. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0535h0pr4~.-1.js +0 -1
  248. package/dist/dashboard-runtime/dashboard/.next/static/chunks/062k9jbtd9.lv.js +0 -1
  249. package/dist/dashboard-runtime/dashboard/.next/static/chunks/06aj_c5rwvkut.js +0 -4
  250. package/dist/dashboard-runtime/dashboard/.next/static/chunks/07t_2t_-s9aq_.js +0 -5
  251. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0bs_w1~xt92db.js +0 -138
  252. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0d29.l~3ip181.js +0 -1
  253. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0gjg-rd.ybcga.js +0 -1
  254. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0jc31diex030o.js +0 -1
  255. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0m6zpy2h1p2vp.js +0 -138
  256. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0rm8~7jovs879.css +0 -1
  257. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0t0yqi68~eil6.js +0 -1
  258. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0th7u6qvdy3x2.js +0 -1
  259. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0tmwptel_4y0o.js +0 -1
  260. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0u6_s-0w8.yr..js +0 -1
  261. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0v9d5wl9nsva3.js +0 -1
  262. package/dist/dashboard-runtime/dashboard/.next/static/chunks/14.dp0-y_mhjo.js +0 -1
  263. package/dist/dashboard-runtime/dashboard/.next/static/chunks/15bzqpm440jvz.js +0 -1
  264. /package/dist/dashboard-runtime/dashboard/.next/static/{Vhp9IA5UJNqZzEyFxakjw → EIbKHHti0Z1ephKfJzCKH}/_buildManifest.js +0 -0
  265. /package/dist/dashboard-runtime/dashboard/.next/static/{Vhp9IA5UJNqZzEyFxakjw → EIbKHHti0Z1ephKfJzCKH}/_clientMiddlewareManifest.js +0 -0
  266. /package/dist/dashboard-runtime/dashboard/.next/static/{Vhp9IA5UJNqZzEyFxakjw → EIbKHHti0Z1ephKfJzCKH}/_ssgManifest.js +0 -0
@@ -1,3 +1,3 @@
1
- module.exports=[49857,68565,2236,75416,75569,64991,a=>{"use strict";var b=a.i(47845),c=a.i(23028),d=a.i(50053);let e=(0,d.default)("folder-kanban",[["path",{d:"M4 20h16a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.93a2 2 0 0 1-1.66-.9l-.82-1.2A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13c0 1.1.9 2 2 2Z",key:"1fr9dc"}],["path",{d:"M8 10v4",key:"tgpxqk"}],["path",{d:"M12 10v2",key:"hh53o1"}],["path",{d:"M16 10v6",key:"1d6xys"}]]);var f=a.i(88189),g=a.i(1078);let h=[{title:"对话",items:[{title:"对话智能体",href:"/chat",icon:f.MessageSquare}]},{title:"知识库",items:[{title:"知识库管理",href:"/knowledge-base",icon:c.Database}]},{title:"记忆库",items:[{title:"记忆库管理",href:"/memory",icon:b.Brain}]},{title:"配置",items:[{title:"模型提供商",href:"/llm-providers",icon:g.Sparkles},{title:"项目管理",href:"/projects",icon:e}]}];h.flatMap(a=>a.items),a.s(["sidebarGroups",0,h],49857);var i=a.i(34020),j=a.i(12583),k=a.i(80470);let l=(0,d.default)("lock",[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]]);var m=a.i(64565),n=a.i(34841);a.s(["SidebarItem",0,function({item:a,collapsed:b=!1}){let c=(0,k.usePathname)(),d=a.icon,e=!!a.href&&(c===a.href||c?.startsWith(`${a.href}/`)),f=a.comingSoon||!a.href,g=(0,i.jsxs)("span",{className:(0,m.cn)("group relative flex items-center font-medium transition-colors duration-150",b?"mx-auto h-8 w-8 justify-center rounded-md text-[14px]":"h-9 gap-2.5 rounded-md px-3 text-[14px]",e?"bg-[hsl(var(--sidebar-active-bg))] text-[hsl(var(--sidebar-active-fg))]":"text-[hsl(var(--sidebar-text))] hover:bg-[hsl(var(--background))] hover:text-[hsl(var(--foreground))]",f&&"cursor-not-allowed opacity-50 hover:bg-transparent hover:text-[hsl(var(--sidebar-text))]"),children:[(0,i.jsx)(d,{className:(0,m.cn)("shrink-0",b?"h-[18px] w-[18px]":"h-4 w-4")}),!b&&(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("span",{className:"flex-1 truncate",children:a.title}),a.comingSoon&&(0,i.jsxs)("span",{className:"flex items-center gap-1 rounded-md bg-[hsl(var(--muted))] px-1.5 py-0.5 text-[10px] font-medium text-[hsl(var(--muted-foreground))]",children:[(0,i.jsx)(l,{className:"h-3 w-3"}),"即将开放"]})]})]}),h=b||f,o=a.tooltip??a.title,p=f?(0,i.jsx)("div",{"aria-disabled":"true",children:g}):(0,i.jsx)(j.default,{href:a.href,className:"block no-underline",children:g});return h?(0,i.jsx)(n.TooltipProvider,{delayDuration:200,children:(0,i.jsxs)(n.Tooltip,{children:[(0,i.jsx)(n.TooltipTrigger,{asChild:!0,children:p}),(0,i.jsx)(n.TooltipContent,{side:"right",sideOffset:8,children:o})]})}):p}],68565);var o=a.i(71938),p=a.i(53520),q=a.i(82725),r=a.i(25825),s=a.i(10581),t=a.i(24666),u=a.i(21184),v=a.i(47161);function w({activeName:a,instances:b,onSelect:c,onCreate:d,onManage:e}){return(0,i.jsxs)(t.DropdownMenuContent,{align:"start",className:"min-w-[220px]",children:[(0,i.jsx)(t.DropdownMenuLabel,{children:"切换项目"}),0===b.length?(0,i.jsx)("div",{className:"px-3 py-2 text-xs text-[hsl(var(--muted-foreground))]",children:"暂无项目,先创建一个。"}):b.map(b=>{let d=b.name===a;return(0,i.jsxs)(t.DropdownMenuItem,{onSelect:a=>{a.preventDefault(),c(b.name)},className:"flex items-center gap-2 pr-2",children:[(0,i.jsx)(p.Check,{className:(0,m.cn)("h-3.5 w-3.5 shrink-0",d?"text-[hsl(var(--primary))]":"opacity-0")}),(0,i.jsx)("span",{className:"flex-1 truncate",children:b.name}),b.region&&(0,i.jsx)("span",{className:"text-[11px] text-[hsl(var(--muted-foreground))]",children:b.region})]},b.name)}),(0,i.jsx)(t.DropdownMenuSeparator,{}),(0,i.jsxs)(t.DropdownMenuItem,{onSelect:a=>{a.preventDefault(),d()},children:[(0,i.jsx)(r.Plus,{className:"h-3.5 w-3.5"}),"创建新项目"]}),(0,i.jsxs)(t.DropdownMenuItem,{onSelect:a=>{a.preventDefault(),e()},children:[(0,i.jsx)(s.Settings2,{className:"h-3.5 w-3.5"}),"项目管理"]})]})}function x({title:a="Usage",items:b,className:c,...d}){return(0,i.jsxs)("div",{className:(0,m.cn)("rounded-md bg-[hsl(var(--background))] p-3 text-xs",c),...d,children:[(0,i.jsx)("div",{className:"mb-1.5 font-semibold text-[hsl(var(--muted-foreground))]",children:a}),b.map((a,b)=>(0,i.jsxs)("div",{className:"flex justify-between text-[hsl(var(--subtle))] last:mb-0",children:[(0,i.jsx)("span",{children:a.label}),(0,i.jsx)("span",{children:a.value})]},b))]})}a.s(["SidebarInstanceCard",0,function({collapsed:a}){let b=(0,k.useRouter)(),c=(0,k.usePathname)(),[d,e]=(0,o.useState)(!1),{data:f,isLoading:g}=(0,v.useInstances)(),h=(0,v.useSwitchInstance)(),j=f?.activeInstance??null,l=f?.instances??[];async function n(a){if(a!==j&&!h.isPending)try{await h.mutateAsync(a);let b=(c?c.match(/^\/knowledge-base\/[^/]+(?:\/.*)?$/)?"/knowledge-base":c.match(/^\/memory\/[^/]+(?:\/.*)?$/)?"/memory":null:null)??window.location.pathname;window.location.assign(b)}catch{}}return a?(0,i.jsxs)("div",{className:"flex justify-center px-0 pt-3",children:[(0,i.jsxs)(t.DropdownMenu,{children:[(0,i.jsx)(t.DropdownMenuTrigger,{asChild:!0,children:(0,i.jsx)("button",{type:"button","aria-label":j?`当前实例:${j}`:"选择项目",title:j??"选择项目",disabled:g,className:(0,m.cn)("flex h-8 w-8 items-center justify-center rounded-full border border-[hsl(var(--border))] bg-[hsl(var(--card))] text-[11px] font-semibold uppercase text-[hsl(var(--foreground))] transition-colors","hover:border-[hsl(var(--primary))] hover:text-[hsl(var(--primary))]","disabled:opacity-50"),children:(j??"?").charAt(0)})}),(0,i.jsx)(w,{activeName:j,instances:l,onSelect:n,onCreate:()=>e(!0),onManage:()=>b.push("/projects")})]}),(0,i.jsx)(u.ConnectInstanceDialog,{open:d,onOpenChange:e,onSuccess:()=>b.refresh()})]}):(0,i.jsxs)("div",{className:"px-3 pt-3",children:[(0,i.jsxs)(t.DropdownMenu,{children:[(0,i.jsx)(t.DropdownMenuTrigger,{asChild:!0,children:(0,i.jsxs)("button",{type:"button",disabled:g,className:"group flex w-full items-center gap-2 rounded-md border border-[hsl(var(--border))] bg-[hsl(var(--secondary))] px-3 py-2 text-left transition-colors hover:bg-[hsl(var(--accent))]",children:[(0,i.jsxs)("div",{className:"flex flex-1 flex-col overflow-hidden",children:[(0,i.jsx)("span",{className:"text-[11px] uppercase tracking-wider text-[hsl(var(--muted-foreground))]",children:"当前实例"}),(0,i.jsx)("span",{className:"truncate text-sm font-semibold text-[hsl(var(--foreground))]",children:j??"未选择"})]}),(0,i.jsx)(q.ChevronsUpDown,{className:"h-3.5 w-3.5 shrink-0 text-[hsl(var(--muted-foreground))]"})]})}),(0,i.jsx)(w,{activeName:j,instances:l,onSelect:n,onCreate:()=>e(!0),onManage:()=>b.push("/projects")})]}),(0,i.jsx)(u.ConnectInstanceDialog,{open:d,onOpenChange:e,onSuccess:()=>b.refresh()})]})}],2236);var y=a.i(9367),z=a.i(10220);a.s(["SidebarUsageStats",0,function(){let a=(0,y.useKnowledgeBases)(),b=(0,z.useMemoryStores)(),c=a.data?.totalCount??a.data?.items?.length,d=b.data?.totalCount??b.data?.items?.length;return(0,i.jsx)(x,{items:[{label:"知识库",value:c??"—"},{label:"记忆库",value:d??"—"}]})}],75416);var A=a.i(69045);a.s(["HelpLink",0,function({collapsed:a}){var b;let c=(b=(0,k.usePathname)(),b?.startsWith("/knowledge-base")?"https://help.aliyun.com/zh/tablestore/knowledge-base-rag/":"https://help.aliyun.com/zh/tablestore/");return a?(0,i.jsx)("a",{href:c,target:"_blank",rel:"noreferrer",title:"帮助","aria-label":"帮助",className:"flex h-8 w-8 items-center justify-center rounded-md text-[hsl(var(--muted-foreground))] transition-colors hover:bg-[hsl(var(--background))] hover:text-[hsl(var(--foreground))]",children:(0,i.jsx)(A.HelpCircle,{className:"h-4 w-4"})}):(0,i.jsxs)("a",{href:c,target:"_blank",rel:"noreferrer",title:"帮助",className:(0,m.cn)("flex h-8 items-center gap-2 rounded-md px-3 text-sm text-[hsl(var(--muted-foreground))] transition-colors hover:bg-[hsl(var(--background))] hover:text-[hsl(var(--foreground))]"),children:[(0,i.jsx)(A.HelpCircle,{className:"h-4 w-4 shrink-0"}),(0,i.jsx)("span",{children:"帮助"})]})}],75569);let B=(0,d.default)("moon",[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",key:"kfwtm"}]]),C=(0,d.default)("monitor",[["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["line",{x1:"8",x2:"16",y1:"21",y2:"21",key:"1svkeh"}],["line",{x1:"12",x2:"12",y1:"17",y2:"21",key:"vw1qmm"}]]),D=(0,d.default)("sun",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]]);var E=a.i(66157);let F=["light","system","dark"],G={light:D,system:C,dark:B},H={light:"浅色",system:"自动",dark:"深色"};a.s(["ThemeToggle",0,function({collapsed:a}){let{theme:b,setTheme:c,resolvedTheme:d}=(0,E.useTheme)(),[e,f]=(0,o.useState)(!1);if((0,o.useEffect)(()=>f(!0),[]),!e)return a?(0,i.jsx)("div",{className:"h-8 w-8","aria-hidden":!0}):(0,i.jsx)("div",{className:"h-8 w-[108px]","aria-hidden":!0});let g=b??"system";if(a){let a=(F.indexOf(g)+1)%F.length,b=F[a],e="system"===g?"dark"===d?"dark":"light":g,f=G[e];return(0,i.jsx)(n.TooltipProvider,{delayDuration:200,children:(0,i.jsxs)(n.Tooltip,{children:[(0,i.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,i.jsxs)("button",{type:"button","aria-label":`切换到 ${H[b]} 主题`,"data-mode":g,onClick:()=>c(b),className:(0,m.cn)("relative flex h-8 w-8 items-center justify-center rounded-md text-[hsl(var(--muted-foreground))] transition-colors","hover:bg-[hsl(var(--background))] hover:text-[hsl(var(--foreground))]","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[hsl(var(--primary)/0.3)]"),children:[(0,i.jsx)(D,{className:(0,m.cn)("absolute h-[18px] w-[18px] transition-all duration-300 ease-[cubic-bezier(0.34,1.56,0.64,1)]","light"===e?"rotate-0 scale-100 opacity-100":"-rotate-90 scale-50 opacity-0")}),(0,i.jsx)(B,{className:(0,m.cn)("absolute h-[18px] w-[18px] transition-all duration-300 ease-[cubic-bezier(0.34,1.56,0.64,1)]","dark"===e?"rotate-0 scale-100 opacity-100":"rotate-90 scale-50 opacity-0")}),"system"===g&&(0,i.jsx)("span",{"aria-hidden":!0,className:"absolute bottom-0.5 right-0.5 flex h-2.5 w-2.5 items-center justify-center rounded-full bg-[hsl(var(--card))] text-[hsl(var(--primary))] ring-1 ring-[hsl(var(--border))]",children:(0,i.jsx)(C,{className:"h-1.5 w-1.5",strokeWidth:3})}),(0,i.jsx)(f,{"aria-hidden":!0,className:"hidden"})]})}),(0,i.jsxs)(n.TooltipContent,{side:"right",sideOffset:8,children:["主题:",H[g]," · 点击切换至 ",H[b]]})]})})}return(0,i.jsx)("div",{role:"radiogroup","aria-label":"主题",className:(0,m.cn)("inline-flex items-center gap-0.5 rounded-md border border-[hsl(var(--border))] bg-[hsl(var(--secondary))] p-0.5","shadow-[inset_0_1px_2px_rgba(15,23,42,0.04)]"),children:F.map(a=>{let b=G[a],d=g===a;return(0,i.jsx)(n.TooltipProvider,{delayDuration:300,children:(0,i.jsxs)(n.Tooltip,{children:[(0,i.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,i.jsx)("button",{type:"button",role:"radio","aria-checked":d,"aria-label":H[a],"data-state":d?"on":"off",onClick:()=>c(a),className:(0,m.cn)("relative flex h-7 w-7 items-center justify-center rounded transition-all duration-200","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[hsl(var(--primary)/0.3)]",d?"bg-[hsl(var(--card))] text-[hsl(var(--primary))] shadow-sm":"text-[hsl(var(--muted-foreground))] hover:text-[hsl(var(--foreground))]"),children:(0,i.jsx)(b,{className:"h-3.5 w-3.5"})})}),(0,i.jsx)(n.TooltipContent,{side:"top",sideOffset:6,children:H[a]})]})},a)})})}],64991)},21987,a=>{"use strict";var b=a.i(34020),c=a.i(12583),d=a.i(65173),e=a.i(7704),f=a.i(98437),g=a.i(49857),h=a.i(7378),i=a.i(64565),j=a.i(34841),k=a.i(68565),l=a.i(2236),m=a.i(75416),n=a.i(75569),o=a.i(64991);a.s(["Sidebar",0,function(){let{collapsed:a,toggle:p}=(0,h.useSidebarCollapsed)(),q=a?"w-16":"w-[220px]";return(0,b.jsxs)("aside",{"data-collapsed":a,className:(0,i.cn)("fixed left-0 top-0 bottom-0 z-40 hidden flex-col border-r border-[hsl(var(--sidebar-border))] bg-[hsl(var(--sidebar-bg))] transition-[width] duration-200 ease-out md:flex",q),children:[(0,b.jsxs)(c.default,{href:"/",className:(0,i.cn)("flex h-14 shrink-0 items-center gap-2.5 border-b border-[hsl(var(--sidebar-border))] transition-opacity hover:opacity-80",a?"justify-center px-0":"px-4"),children:[(0,b.jsx)("span",{className:"flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-[hsl(var(--primary))] text-[hsl(var(--primary-foreground))] shadow-sm",children:(0,b.jsx)(f.Zap,{className:"h-4 w-4"})}),!a&&(0,b.jsx)("span",{className:"text-[15px] font-semibold tracking-tight text-[hsl(var(--foreground))]",children:"Agent Storage"})]}),(0,b.jsx)(l.SidebarInstanceCard,{collapsed:a}),(0,b.jsx)("nav",{className:(0,i.cn)("flex-1 overflow-y-auto py-3",a?"px-2":"px-3"),children:g.sidebarGroups.map((c,d)=>(0,b.jsxs)("div",{className:(0,i.cn)(d>0&&(a?"mt-3":"mt-4")),children:[!a&&(0,b.jsx)("div",{className:"mb-1.5 px-3 text-[11px] font-semibold uppercase tracking-wider text-[hsl(var(--muted-foreground))]",children:c.title}),(0,b.jsx)("div",{className:(0,i.cn)(a?"space-y-1":"space-y-0.5"),children:c.items.map(c=>(0,b.jsx)(k.SidebarItem,{item:c,collapsed:a},c.title))})]},c.title))}),(0,b.jsxs)("div",{className:(0,i.cn)("shrink-0 border-t border-[hsl(var(--sidebar-border))]",a?"px-2 py-2":"p-3"),children:[!a&&(0,b.jsx)("div",{className:"mb-2",children:(0,b.jsx)(m.SidebarUsageStats,{})}),(0,b.jsxs)("div",{className:(0,i.cn)("flex items-center",a?"flex-col gap-1":"justify-between gap-1"),children:[(0,b.jsx)(n.HelpLink,{collapsed:a}),(0,b.jsx)(o.ThemeToggle,{collapsed:a}),a?(0,b.jsx)(j.TooltipProvider,{delayDuration:200,children:(0,b.jsxs)(j.Tooltip,{children:[(0,b.jsx)(j.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("button",{type:"button",onClick:p,"aria-label":"展开侧边栏",className:"flex h-8 w-8 items-center justify-center rounded-md text-[hsl(var(--muted-foreground))] transition-colors hover:bg-[hsl(var(--background))] hover:text-[hsl(var(--foreground))]",children:(0,b.jsx)(e.ChevronRight,{className:"h-4 w-4"})})}),(0,b.jsx)(j.TooltipContent,{side:"right",sideOffset:8,children:"展开侧边栏"})]})}):null]}),!a&&(0,b.jsxs)("button",{type:"button",onClick:p,"aria-label":"收起侧边栏",className:"mt-2 flex h-8 w-full items-center gap-2 rounded-md px-3 text-xs text-[hsl(var(--muted-foreground))] transition-colors hover:bg-[hsl(var(--background))] hover:text-[hsl(var(--foreground))]",children:[(0,b.jsx)(d.ChevronLeft,{className:"h-3.5 w-3.5"}),(0,b.jsx)("span",{children:"收起"})]})]})]})}])},34962,a=>{"use strict";var b=a.i(34020),c=a.i(71938),d=a.i(12583),e=a.i(80470),f=a.i(88619);let g=(0,a.i(50053).default)("menu",[["path",{d:"M4 5h16",key:"1tepv9"}],["path",{d:"M4 12h16",key:"1lakjw"}],["path",{d:"M4 19h16",key:"1djgab"}]]);var h=a.i(14151),i=a.i(98437),j=a.i(49857),k=a.i(64565),l=a.i(68565),m=a.i(2236),n=a.i(75416),o=a.i(75569),p=a.i(64991);a.s(["SidebarMobile",0,function(){let[a,q]=(0,c.useState)(!1),r=(0,e.usePathname)();return(0,c.useEffect)(()=>{q(!1)},[r]),(0,b.jsxs)("div",{className:"flex h-14 items-center gap-3 border-b border-[hsl(var(--sidebar-border))] bg-[hsl(var(--sidebar-bg))] px-4 md:hidden",children:[(0,b.jsxs)(f.Root,{open:a,onOpenChange:q,children:[(0,b.jsx)(f.Trigger,{asChild:!0,children:(0,b.jsx)("button",{type:"button","aria-label":"打开菜单",className:"rounded-md p-2 text-[hsl(var(--muted-foreground))] transition-colors hover:bg-[hsl(var(--background))] hover:text-[hsl(var(--foreground))]",children:(0,b.jsx)(g,{className:"h-5 w-5"})})}),(0,b.jsxs)(f.Portal,{children:[(0,b.jsx)(f.Overlay,{className:"fixed inset-0 z-50 bg-black/30 backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0"}),(0,b.jsxs)(f.Content,{className:"fixed left-0 top-0 z-50 flex h-full w-[260px] flex-col border-r border-[hsl(var(--sidebar-border))] bg-[hsl(var(--sidebar-bg))] shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left data-[state=open]:duration-200",children:[(0,b.jsx)(f.Title,{className:"sr-only",children:"导航菜单"}),(0,b.jsxs)("div",{className:"flex h-14 items-center justify-between border-b border-[hsl(var(--sidebar-border))] px-4",children:[(0,b.jsxs)(d.default,{href:"/",className:"flex items-center gap-2.5",children:[(0,b.jsx)("span",{className:"flex h-7 w-7 items-center justify-center rounded-md bg-[hsl(var(--primary))] text-[hsl(var(--primary-foreground))] shadow-sm",children:(0,b.jsx)(i.Zap,{className:"h-4 w-4"})}),(0,b.jsx)("span",{className:"text-[15px] font-semibold tracking-tight text-[hsl(var(--foreground))]",children:"Agent Storage"})]}),(0,b.jsx)(f.Close,{asChild:!0,children:(0,b.jsx)("button",{type:"button","aria-label":"关闭菜单",className:"rounded-md p-2 text-[hsl(var(--muted-foreground))] transition-colors hover:bg-[hsl(var(--background))] hover:text-[hsl(var(--foreground))]",children:(0,b.jsx)(h.X,{className:"h-4 w-4"})})})]}),(0,b.jsx)(m.SidebarInstanceCard,{}),(0,b.jsx)("nav",{className:"flex-1 overflow-y-auto px-3 py-3",children:j.sidebarGroups.map((a,c)=>(0,b.jsxs)("div",{className:(0,k.cn)(c>0&&"mt-4"),children:[(0,b.jsx)("div",{className:"mb-1.5 px-3 text-[11px] font-semibold uppercase tracking-wider text-[hsl(var(--muted-foreground))]",children:a.title}),(0,b.jsx)("div",{className:"space-y-0.5",children:a.items.map(a=>(0,b.jsx)(l.SidebarItem,{item:a},a.title))})]},a.title))}),(0,b.jsxs)("div",{className:"border-t border-[hsl(var(--sidebar-border))] p-3 space-y-2",children:[(0,b.jsx)(n.SidebarUsageStats,{}),(0,b.jsxs)("div",{className:"flex items-center justify-between gap-1",children:[(0,b.jsx)(o.HelpLink,{}),(0,b.jsx)(p.ThemeToggle,{})]})]})]})]})]}),(0,b.jsxs)(d.default,{href:"/",className:"flex items-center gap-2",children:[(0,b.jsx)("span",{className:"flex h-7 w-7 items-center justify-center rounded-md bg-[hsl(var(--primary))] text-[hsl(var(--primary-foreground))]",children:(0,b.jsx)(i.Zap,{className:"h-3.5 w-3.5"})}),(0,b.jsx)("span",{className:"text-sm font-semibold tracking-tight text-[hsl(var(--foreground))]",children:"Agent Storage"})]})]})}],34962)},45015,a=>{"use strict";var b=a.i(34020),c=a.i(7378),d=a.i(64565);a.s(["SidebarOffset",0,function({children:a}){let{collapsed:e}=(0,c.useSidebarCollapsed)();return(0,b.jsx)("div",{className:(0,d.cn)("transition-[margin] duration-200 ease-out",e?"md:ml-16":"md:ml-[220px]"),children:a})}])}];
1
+ module.exports=[49857,68565,2236,75416,75569,64991,a=>{"use strict";var b=a.i(47845),c=a.i(23028),d=a.i(50053);let e=(0,d.default)("folder-kanban",[["path",{d:"M4 20h16a2 2 0 0 0 2-2V8a2 2 0 0 0-2-2h-7.93a2 2 0 0 1-1.66-.9l-.82-1.2A2 2 0 0 0 7.93 3H4a2 2 0 0 0-2 2v13c0 1.1.9 2 2 2Z",key:"1fr9dc"}],["path",{d:"M8 10v4",key:"tgpxqk"}],["path",{d:"M12 10v2",key:"hh53o1"}],["path",{d:"M16 10v6",key:"1d6xys"}]]);var f=a.i(88189),g=a.i(1078);let h=[{title:"对话",items:[{title:"对话智能体",href:"/chat",icon:f.MessageSquare}]},{title:"知识库",items:[{title:"知识库管理",href:"/knowledge-base",icon:c.Database}]},{title:"记忆库",items:[{title:"记忆库管理",href:"/memory",icon:b.Brain}]},{title:"配置",items:[{title:"模型提供商",href:"/llm-providers",icon:g.Sparkles},{title:"项目管理",href:"/projects",icon:e}]}];h.flatMap(a=>a.items),a.s(["sidebarGroups",0,h],49857);var i=a.i(34020),j=a.i(12583),k=a.i(80470);let l=(0,d.default)("lock",[["rect",{width:"18",height:"11",x:"3",y:"11",rx:"2",ry:"2",key:"1w4ew1"}],["path",{d:"M7 11V7a5 5 0 0 1 10 0v4",key:"fwvmzm"}]]);var m=a.i(64565),n=a.i(34841);a.s(["SidebarItem",0,function({item:a,collapsed:b=!1}){let c=(0,k.usePathname)(),d=a.icon,e=!!a.href&&(c===a.href||c?.startsWith(`${a.href}/`)),f=a.comingSoon||!a.href,g=(0,i.jsxs)("span",{className:(0,m.cn)("group relative flex items-center font-medium transition-colors duration-150",b?"mx-auto h-8 w-8 justify-center rounded-md text-[14px]":"h-9 gap-2.5 rounded-md px-3 text-[14px]",e?"bg-[hsl(var(--sidebar-active-bg))] text-[hsl(var(--sidebar-active-fg))]":"text-[hsl(var(--sidebar-text))] hover:bg-[hsl(var(--background))] hover:text-[hsl(var(--foreground))]",f&&"cursor-not-allowed opacity-50 hover:bg-transparent hover:text-[hsl(var(--sidebar-text))]"),children:[(0,i.jsx)(d,{className:(0,m.cn)("shrink-0",b?"h-[18px] w-[18px]":"h-4 w-4")}),!b&&(0,i.jsxs)(i.Fragment,{children:[(0,i.jsx)("span",{className:"flex-1 truncate",children:a.title}),a.comingSoon&&(0,i.jsxs)("span",{className:"flex items-center gap-1 rounded-md bg-[hsl(var(--muted))] px-1.5 py-0.5 text-[10px] font-medium text-[hsl(var(--muted-foreground))]",children:[(0,i.jsx)(l,{className:"h-3 w-3"}),"即将开放"]})]})]}),h=b||f,o=a.tooltip??a.title,p=f?(0,i.jsx)("div",{"aria-disabled":"true",children:g}):(0,i.jsx)(j.default,{href:a.href,className:"block no-underline",children:g});return h?(0,i.jsx)(n.TooltipProvider,{delayDuration:200,children:(0,i.jsxs)(n.Tooltip,{children:[(0,i.jsx)(n.TooltipTrigger,{asChild:!0,children:p}),(0,i.jsx)(n.TooltipContent,{side:"right",sideOffset:8,children:o})]})}):p}],68565);var o=a.i(71938),p=a.i(53520),q=a.i(82725),r=a.i(25825),s=a.i(10581),t=a.i(24666),u=a.i(21184),v=a.i(47161);function w({activeName:a,instances:b,onSelect:c,onCreate:d,onManage:e}){return(0,i.jsxs)(t.DropdownMenuContent,{align:"start",className:"min-w-[220px]",children:[(0,i.jsx)(t.DropdownMenuLabel,{children:"切换项目"}),0===b.length?(0,i.jsx)("div",{className:"px-3 py-2 text-xs text-[hsl(var(--muted-foreground))]",children:"暂无项目,先创建一个。"}):b.map(b=>{let d=b.name===a;return(0,i.jsxs)(t.DropdownMenuItem,{onSelect:a=>{a.preventDefault(),c(b.name)},className:"flex items-center gap-2 pr-2",children:[(0,i.jsx)(p.Check,{className:(0,m.cn)("h-3.5 w-3.5 shrink-0",d?"text-[hsl(var(--primary))]":"opacity-0")}),(0,i.jsx)("span",{className:"flex-1 truncate",children:b.name}),b.region&&(0,i.jsx)("span",{className:"text-[11px] text-[hsl(var(--muted-foreground))]",children:b.region})]},b.name)}),(0,i.jsx)(t.DropdownMenuSeparator,{}),(0,i.jsxs)(t.DropdownMenuItem,{onSelect:a=>{a.preventDefault(),d()},children:[(0,i.jsx)(r.Plus,{className:"h-3.5 w-3.5"}),"创建新项目"]}),(0,i.jsxs)(t.DropdownMenuItem,{onSelect:a=>{a.preventDefault(),e()},children:[(0,i.jsx)(s.Settings2,{className:"h-3.5 w-3.5"}),"项目管理"]})]})}function x({title:a="Usage",items:b,className:c,...d}){return(0,i.jsxs)("div",{className:(0,m.cn)("rounded-md bg-[hsl(var(--background))] p-3 text-xs",c),...d,children:[(0,i.jsx)("div",{className:"mb-1.5 font-semibold text-[hsl(var(--muted-foreground))]",children:a}),b.map((a,b)=>(0,i.jsxs)("div",{className:"flex justify-between text-[hsl(var(--subtle))] last:mb-0",children:[(0,i.jsx)("span",{children:a.label}),(0,i.jsx)("span",{children:a.value})]},b))]})}a.s(["SidebarInstanceCard",0,function({collapsed:a}){let b=(0,k.useRouter)(),c=(0,k.usePathname)(),[d,e]=(0,o.useState)(!1),{data:f,isLoading:g}=(0,v.useInstances)(),h=(0,v.useSwitchInstance)(),j=f?.activeInstance??null,l=f?.instances??[];async function n(a){if(a!==j&&!h.isPending)try{await h.mutateAsync(a);let b=(c?c.match(/^\/knowledge-base\/[^/]+(?:\/.*)?$/)?"/knowledge-base":c.match(/^\/memory\/[^/]+(?:\/.*)?$/)?"/memory":null:null)??window.location.pathname;window.location.assign(b)}catch{}}return a?(0,i.jsxs)("div",{className:"flex justify-center px-0 pt-3",children:[(0,i.jsxs)(t.DropdownMenu,{children:[(0,i.jsx)(t.DropdownMenuTrigger,{asChild:!0,children:(0,i.jsx)("button",{type:"button","aria-label":j?`当前项目:${j}`:"选择项目",title:j??"选择项目",disabled:g,className:(0,m.cn)("flex h-8 w-8 items-center justify-center rounded-full border border-[hsl(var(--border))] bg-[hsl(var(--card))] text-[11px] font-semibold uppercase text-[hsl(var(--foreground))] transition-colors","hover:border-[hsl(var(--primary))] hover:text-[hsl(var(--primary))]","disabled:opacity-50"),children:(j??"?").charAt(0)})}),(0,i.jsx)(w,{activeName:j,instances:l,onSelect:n,onCreate:()=>e(!0),onManage:()=>b.push("/projects")})]}),(0,i.jsx)(u.ConnectInstanceDialog,{open:d,onOpenChange:e,onSuccess:()=>b.refresh()})]}):(0,i.jsxs)("div",{className:"px-3 pt-3",children:[(0,i.jsxs)(t.DropdownMenu,{children:[(0,i.jsx)(t.DropdownMenuTrigger,{asChild:!0,children:(0,i.jsxs)("button",{type:"button",disabled:g,className:"group flex w-full items-center gap-2 rounded-md border border-[hsl(var(--border))] bg-[hsl(var(--secondary))] px-3 py-2 text-left transition-colors hover:bg-[hsl(var(--accent))]",children:[(0,i.jsxs)("div",{className:"flex flex-1 flex-col overflow-hidden",children:[(0,i.jsx)("span",{className:"text-[11px] uppercase tracking-wider text-[hsl(var(--muted-foreground))]",children:"当前项目"}),(0,i.jsx)("span",{className:"truncate text-sm font-semibold text-[hsl(var(--foreground))]",children:j??"未选择"})]}),(0,i.jsx)(q.ChevronsUpDown,{className:"h-3.5 w-3.5 shrink-0 text-[hsl(var(--muted-foreground))]"})]})}),(0,i.jsx)(w,{activeName:j,instances:l,onSelect:n,onCreate:()=>e(!0),onManage:()=>b.push("/projects")})]}),(0,i.jsx)(u.ConnectInstanceDialog,{open:d,onOpenChange:e,onSuccess:()=>b.refresh()})]})}],2236);var y=a.i(9367),z=a.i(10220);a.s(["SidebarUsageStats",0,function(){let a=(0,y.useKnowledgeBases)(),b=(0,z.useMemoryStores)(),c=a.data?.totalCount??a.data?.items?.length,d=b.data?.totalCount??b.data?.items?.length;return(0,i.jsx)(x,{items:[{label:"知识库",value:c??"—"},{label:"记忆库",value:d??"—"}]})}],75416);var A=a.i(69045);a.s(["HelpLink",0,function({collapsed:a}){var b;let c=(b=(0,k.usePathname)(),b?.startsWith("/knowledge-base")?"https://help.aliyun.com/zh/tablestore/knowledge-base-rag/":"https://help.aliyun.com/zh/tablestore/");return a?(0,i.jsx)("a",{href:c,target:"_blank",rel:"noreferrer",title:"帮助","aria-label":"帮助",className:"flex h-8 w-8 items-center justify-center rounded-md text-[hsl(var(--muted-foreground))] transition-colors hover:bg-[hsl(var(--background))] hover:text-[hsl(var(--foreground))]",children:(0,i.jsx)(A.HelpCircle,{className:"h-4 w-4"})}):(0,i.jsxs)("a",{href:c,target:"_blank",rel:"noreferrer",title:"帮助",className:(0,m.cn)("flex h-8 items-center gap-2 rounded-md px-3 text-sm text-[hsl(var(--muted-foreground))] transition-colors hover:bg-[hsl(var(--background))] hover:text-[hsl(var(--foreground))]"),children:[(0,i.jsx)(A.HelpCircle,{className:"h-4 w-4 shrink-0"}),(0,i.jsx)("span",{children:"帮助"})]})}],75569);let B=(0,d.default)("moon",[["path",{d:"M20.985 12.486a9 9 0 1 1-9.473-9.472c.405-.022.617.46.402.803a6 6 0 0 0 8.268 8.268c.344-.215.825-.004.803.401",key:"kfwtm"}]]),C=(0,d.default)("monitor",[["rect",{width:"20",height:"14",x:"2",y:"3",rx:"2",key:"48i651"}],["line",{x1:"8",x2:"16",y1:"21",y2:"21",key:"1svkeh"}],["line",{x1:"12",x2:"12",y1:"17",y2:"21",key:"vw1qmm"}]]),D=(0,d.default)("sun",[["circle",{cx:"12",cy:"12",r:"4",key:"4exip2"}],["path",{d:"M12 2v2",key:"tus03m"}],["path",{d:"M12 20v2",key:"1lh1kg"}],["path",{d:"m4.93 4.93 1.41 1.41",key:"149t6j"}],["path",{d:"m17.66 17.66 1.41 1.41",key:"ptbguv"}],["path",{d:"M2 12h2",key:"1t8f8n"}],["path",{d:"M20 12h2",key:"1q8mjw"}],["path",{d:"m6.34 17.66-1.41 1.41",key:"1m8zz5"}],["path",{d:"m19.07 4.93-1.41 1.41",key:"1shlcs"}]]);var E=a.i(66157);let F=["light","system","dark"],G={light:D,system:C,dark:B},H={light:"浅色",system:"自动",dark:"深色"};a.s(["ThemeToggle",0,function({collapsed:a}){let{theme:b,setTheme:c,resolvedTheme:d}=(0,E.useTheme)(),[e,f]=(0,o.useState)(!1);if((0,o.useEffect)(()=>f(!0),[]),!e)return a?(0,i.jsx)("div",{className:"h-8 w-8","aria-hidden":!0}):(0,i.jsx)("div",{className:"h-8 w-[108px]","aria-hidden":!0});let g=b??"system";if(a){let a=(F.indexOf(g)+1)%F.length,b=F[a],e="system"===g?"dark"===d?"dark":"light":g,f=G[e];return(0,i.jsx)(n.TooltipProvider,{delayDuration:200,children:(0,i.jsxs)(n.Tooltip,{children:[(0,i.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,i.jsxs)("button",{type:"button","aria-label":`切换到 ${H[b]} 主题`,"data-mode":g,onClick:()=>c(b),className:(0,m.cn)("relative flex h-8 w-8 items-center justify-center rounded-md text-[hsl(var(--muted-foreground))] transition-colors","hover:bg-[hsl(var(--background))] hover:text-[hsl(var(--foreground))]","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[hsl(var(--primary)/0.3)]"),children:[(0,i.jsx)(D,{className:(0,m.cn)("absolute h-[18px] w-[18px] transition-all duration-300 ease-[cubic-bezier(0.34,1.56,0.64,1)]","light"===e?"rotate-0 scale-100 opacity-100":"-rotate-90 scale-50 opacity-0")}),(0,i.jsx)(B,{className:(0,m.cn)("absolute h-[18px] w-[18px] transition-all duration-300 ease-[cubic-bezier(0.34,1.56,0.64,1)]","dark"===e?"rotate-0 scale-100 opacity-100":"rotate-90 scale-50 opacity-0")}),"system"===g&&(0,i.jsx)("span",{"aria-hidden":!0,className:"absolute bottom-0.5 right-0.5 flex h-2.5 w-2.5 items-center justify-center rounded-full bg-[hsl(var(--card))] text-[hsl(var(--primary))] ring-1 ring-[hsl(var(--border))]",children:(0,i.jsx)(C,{className:"h-1.5 w-1.5",strokeWidth:3})}),(0,i.jsx)(f,{"aria-hidden":!0,className:"hidden"})]})}),(0,i.jsxs)(n.TooltipContent,{side:"right",sideOffset:8,children:["主题:",H[g]," · 点击切换至 ",H[b]]})]})})}return(0,i.jsx)("div",{role:"radiogroup","aria-label":"主题",className:(0,m.cn)("inline-flex items-center gap-0.5 rounded-md border border-[hsl(var(--border))] bg-[hsl(var(--secondary))] p-0.5","shadow-[inset_0_1px_2px_rgba(15,23,42,0.04)]"),children:F.map(a=>{let b=G[a],d=g===a;return(0,i.jsx)(n.TooltipProvider,{delayDuration:300,children:(0,i.jsxs)(n.Tooltip,{children:[(0,i.jsx)(n.TooltipTrigger,{asChild:!0,children:(0,i.jsx)("button",{type:"button",role:"radio","aria-checked":d,"aria-label":H[a],"data-state":d?"on":"off",onClick:()=>c(a),className:(0,m.cn)("relative flex h-7 w-7 items-center justify-center rounded transition-all duration-200","focus-visible:outline-none focus-visible:ring-2 focus-visible:ring-[hsl(var(--primary)/0.3)]",d?"bg-[hsl(var(--card))] text-[hsl(var(--primary))] shadow-sm":"text-[hsl(var(--muted-foreground))] hover:text-[hsl(var(--foreground))]"),children:(0,i.jsx)(b,{className:"h-3.5 w-3.5"})})}),(0,i.jsx)(n.TooltipContent,{side:"top",sideOffset:6,children:H[a]})]})},a)})})}],64991)},21987,a=>{"use strict";var b=a.i(34020),c=a.i(12583),d=a.i(65173),e=a.i(7704),f=a.i(98437),g=a.i(49857),h=a.i(7378),i=a.i(64565),j=a.i(34841),k=a.i(68565),l=a.i(2236),m=a.i(75416),n=a.i(75569),o=a.i(64991);a.s(["Sidebar",0,function(){let{collapsed:a,toggle:p}=(0,h.useSidebarCollapsed)(),q=a?"w-16":"w-[220px]";return(0,b.jsxs)("aside",{"data-collapsed":a,className:(0,i.cn)("fixed left-0 top-0 bottom-0 z-40 hidden flex-col border-r border-[hsl(var(--sidebar-border))] bg-[hsl(var(--sidebar-bg))] transition-[width] duration-200 ease-out md:flex",q),children:[(0,b.jsxs)(c.default,{href:"/",className:(0,i.cn)("flex h-14 shrink-0 items-center gap-2.5 border-b border-[hsl(var(--sidebar-border))] transition-opacity hover:opacity-80",a?"justify-center px-0":"px-4"),children:[(0,b.jsx)("span",{className:"flex h-8 w-8 shrink-0 items-center justify-center rounded-lg bg-[hsl(var(--primary))] text-[hsl(var(--primary-foreground))] shadow-sm",children:(0,b.jsx)(f.Zap,{className:"h-4 w-4"})}),!a&&(0,b.jsx)("span",{className:"text-[15px] font-semibold tracking-tight text-[hsl(var(--foreground))]",children:"Agent Storage"})]}),(0,b.jsx)(l.SidebarInstanceCard,{collapsed:a}),(0,b.jsx)("nav",{className:(0,i.cn)("flex-1 overflow-y-auto py-3",a?"px-2":"px-3"),children:g.sidebarGroups.map((c,d)=>(0,b.jsxs)("div",{className:(0,i.cn)(d>0&&(a?"mt-3":"mt-4")),children:[!a&&(0,b.jsx)("div",{className:"mb-1.5 px-3 text-[11px] font-semibold uppercase tracking-wider text-[hsl(var(--muted-foreground))]",children:c.title}),(0,b.jsx)("div",{className:(0,i.cn)(a?"space-y-1":"space-y-0.5"),children:c.items.map(c=>(0,b.jsx)(k.SidebarItem,{item:c,collapsed:a},c.title))})]},c.title))}),(0,b.jsxs)("div",{className:(0,i.cn)("shrink-0 border-t border-[hsl(var(--sidebar-border))]",a?"px-2 py-2":"p-3"),children:[!a&&(0,b.jsx)("div",{className:"mb-2",children:(0,b.jsx)(m.SidebarUsageStats,{})}),(0,b.jsxs)("div",{className:(0,i.cn)("flex items-center",a?"flex-col gap-1":"justify-between gap-1"),children:[(0,b.jsx)(n.HelpLink,{collapsed:a}),(0,b.jsx)(o.ThemeToggle,{collapsed:a}),a?(0,b.jsx)(j.TooltipProvider,{delayDuration:200,children:(0,b.jsxs)(j.Tooltip,{children:[(0,b.jsx)(j.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("button",{type:"button",onClick:p,"aria-label":"展开侧边栏",className:"flex h-8 w-8 items-center justify-center rounded-md text-[hsl(var(--muted-foreground))] transition-colors hover:bg-[hsl(var(--background))] hover:text-[hsl(var(--foreground))]",children:(0,b.jsx)(e.ChevronRight,{className:"h-4 w-4"})})}),(0,b.jsx)(j.TooltipContent,{side:"right",sideOffset:8,children:"展开侧边栏"})]})}):null]}),!a&&(0,b.jsxs)("button",{type:"button",onClick:p,"aria-label":"收起侧边栏",className:"mt-2 flex h-8 w-full items-center gap-2 rounded-md px-3 text-xs text-[hsl(var(--muted-foreground))] transition-colors hover:bg-[hsl(var(--background))] hover:text-[hsl(var(--foreground))]",children:[(0,b.jsx)(d.ChevronLeft,{className:"h-3.5 w-3.5"}),(0,b.jsx)("span",{children:"收起"})]})]})]})}])},34962,a=>{"use strict";var b=a.i(34020),c=a.i(71938),d=a.i(12583),e=a.i(80470),f=a.i(88619);let g=(0,a.i(50053).default)("menu",[["path",{d:"M4 5h16",key:"1tepv9"}],["path",{d:"M4 12h16",key:"1lakjw"}],["path",{d:"M4 19h16",key:"1djgab"}]]);var h=a.i(14151),i=a.i(98437),j=a.i(49857),k=a.i(64565),l=a.i(68565),m=a.i(2236),n=a.i(75416),o=a.i(75569),p=a.i(64991);a.s(["SidebarMobile",0,function(){let[a,q]=(0,c.useState)(!1),r=(0,e.usePathname)();return(0,c.useEffect)(()=>{q(!1)},[r]),(0,b.jsxs)("div",{className:"flex h-14 items-center gap-3 border-b border-[hsl(var(--sidebar-border))] bg-[hsl(var(--sidebar-bg))] px-4 md:hidden",children:[(0,b.jsxs)(f.Root,{open:a,onOpenChange:q,children:[(0,b.jsx)(f.Trigger,{asChild:!0,children:(0,b.jsx)("button",{type:"button","aria-label":"打开菜单",className:"rounded-md p-2 text-[hsl(var(--muted-foreground))] transition-colors hover:bg-[hsl(var(--background))] hover:text-[hsl(var(--foreground))]",children:(0,b.jsx)(g,{className:"h-5 w-5"})})}),(0,b.jsxs)(f.Portal,{children:[(0,b.jsx)(f.Overlay,{className:"fixed inset-0 z-50 bg-black/30 backdrop-blur-sm data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:fade-out-0 data-[state=open]:fade-in-0"}),(0,b.jsxs)(f.Content,{className:"fixed left-0 top-0 z-50 flex h-full w-[260px] flex-col border-r border-[hsl(var(--sidebar-border))] bg-[hsl(var(--sidebar-bg))] shadow-md data-[state=open]:animate-in data-[state=closed]:animate-out data-[state=closed]:slide-out-to-left data-[state=open]:slide-in-from-left data-[state=open]:duration-200",children:[(0,b.jsx)(f.Title,{className:"sr-only",children:"导航菜单"}),(0,b.jsxs)("div",{className:"flex h-14 items-center justify-between border-b border-[hsl(var(--sidebar-border))] px-4",children:[(0,b.jsxs)(d.default,{href:"/",className:"flex items-center gap-2.5",children:[(0,b.jsx)("span",{className:"flex h-7 w-7 items-center justify-center rounded-md bg-[hsl(var(--primary))] text-[hsl(var(--primary-foreground))] shadow-sm",children:(0,b.jsx)(i.Zap,{className:"h-4 w-4"})}),(0,b.jsx)("span",{className:"text-[15px] font-semibold tracking-tight text-[hsl(var(--foreground))]",children:"Agent Storage"})]}),(0,b.jsx)(f.Close,{asChild:!0,children:(0,b.jsx)("button",{type:"button","aria-label":"关闭菜单",className:"rounded-md p-2 text-[hsl(var(--muted-foreground))] transition-colors hover:bg-[hsl(var(--background))] hover:text-[hsl(var(--foreground))]",children:(0,b.jsx)(h.X,{className:"h-4 w-4"})})})]}),(0,b.jsx)(m.SidebarInstanceCard,{}),(0,b.jsx)("nav",{className:"flex-1 overflow-y-auto px-3 py-3",children:j.sidebarGroups.map((a,c)=>(0,b.jsxs)("div",{className:(0,k.cn)(c>0&&"mt-4"),children:[(0,b.jsx)("div",{className:"mb-1.5 px-3 text-[11px] font-semibold uppercase tracking-wider text-[hsl(var(--muted-foreground))]",children:a.title}),(0,b.jsx)("div",{className:"space-y-0.5",children:a.items.map(a=>(0,b.jsx)(l.SidebarItem,{item:a},a.title))})]},a.title))}),(0,b.jsxs)("div",{className:"border-t border-[hsl(var(--sidebar-border))] p-3 space-y-2",children:[(0,b.jsx)(n.SidebarUsageStats,{}),(0,b.jsxs)("div",{className:"flex items-center justify-between gap-1",children:[(0,b.jsx)(o.HelpLink,{}),(0,b.jsx)(p.ThemeToggle,{})]})]})]})]})]}),(0,b.jsxs)(d.default,{href:"/",className:"flex items-center gap-2",children:[(0,b.jsx)("span",{className:"flex h-7 w-7 items-center justify-center rounded-md bg-[hsl(var(--primary))] text-[hsl(var(--primary-foreground))]",children:(0,b.jsx)(i.Zap,{className:"h-3.5 w-3.5"})}),(0,b.jsx)("span",{className:"text-sm font-semibold tracking-tight text-[hsl(var(--foreground))]",children:"Agent Storage"})]})]})}],34962)},45015,a=>{"use strict";var b=a.i(34020),c=a.i(7378),d=a.i(64565);a.s(["SidebarOffset",0,function({children:a}){let{collapsed:e}=(0,c.useSidebarCollapsed)();return(0,b.jsx)("div",{className:(0,d.cn)("transition-[margin] duration-200 ease-out",e?"md:ml-16":"md:ml-[220px]"),children:a})}])}];
2
2
 
3
3
  //# sourceMappingURL=dashboard_src_0xf3ffa._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[47161,28974,a=>{"use strict";var b=a.i(33596),c=a.i(83366),d=a.i(77072),e=a.i(63265),f=a.i(53141);async function g(){return(0,f.apiGet)("/api/v1/instances")}async function h(a){return(0,f.apiGet)(`/api/v1/instances/${encodeURIComponent(a)}`)}async function i(a){return(0,f.apiPost)("/api/v1/instances",a)}async function j(a){return(0,f.apiPost)("/api/v1/instances",a)}async function k(a,b){return(0,f.apiPut)(`/api/v1/instances/${encodeURIComponent(a)}`,b)}async function l(a){return(0,f.apiDelete)(`/api/v1/instances/${encodeURIComponent(a)}`)}async function m(a){return(0,f.apiPost)(`/api/v1/instances/${encodeURIComponent(a)}/use`)}async function n(a){return(0,f.apiGet)(`/api/v1/instances/${encodeURIComponent(a)}/token`)}var o=a.i(25377),p=a.i(39096);function q(a){(0,o.invalidateInstanceScopedQueries)(a)}function r(a){(0,o.resetInstanceScopedQueries)(a)}function s(a){a.invalidateQueries({queryKey:o.RUNTIME_CONTEXT_QUERY_KEY})}a.s(["useConnectInstance",0,function(){let a=(0,d.useQueryClient)();return(0,b.useMutation)({mutationFn:a=>i(a),onSuccess:()=>{r(a),s(a),e.toast.success("项目已创建")},onError:a=>{e.toast.error(a instanceof Error?a.message:"创建项目失败")}})},"useDeleteInstance",0,function(){let a=(0,d.useQueryClient)();return(0,b.useMutation)({mutationFn:a=>l(a),onSuccess:()=>{q(a),s(a),e.toast.success("项目已删除")},onError:a=>{e.toast.error(a instanceof Error?a.message:"删除项目失败")}})},"useExportInstanceToken",0,function(){return(0,b.useMutation)({mutationFn:a=>n(a),onError:a=>{e.toast.error(a instanceof Error?a.message:"导出 Token 失败")}})},"useImportInstance",0,function(){let a=(0,d.useQueryClient)();return(0,b.useMutation)({mutationFn:a=>j(a),onSuccess:()=>{r(a),s(a),e.toast.success("Token 已导入")},onError:a=>{e.toast.error(a instanceof Error?a.message:"导入 Token 失败")}})},"useInstance",0,function(a){let{context:b,ready:d}=(0,p.useRuntimeContext)();return(0,c.useQuery)({queryKey:o.queryKeys.instance(b.dataScopeKey,a),queryFn:()=>h(a),enabled:d&&!!a,staleTime:3e4})},"useInstances",0,function(){let{context:a,ready:b}=(0,p.useRuntimeContext)();return(0,c.useQuery)({queryKey:o.queryKeys.instances(a.dataScopeKey),queryFn:g,enabled:b,staleTime:3e4})},"useSwitchInstance",0,function(){let a=(0,d.useQueryClient)(),{context:c}=(0,p.useRuntimeContext)();return(0,b.useMutation)({mutationFn:a=>m(a),onSuccess:({activeInstance:b})=>{r(a),s(a),e.toast.success("已切换当前项目")},onError:a=>{e.toast.error(a instanceof Error?a.message:"切换项目失败")}})},"useUpdateInstance",0,function(a){let c=(0,d.useQueryClient)();return(0,b.useMutation)({mutationFn:b=>k(a,b),onSuccess:()=>{q(c),c.invalidateQueries({queryKey:["instance"]}),s(c),e.toast.success("项目已更新")},onError:a=>{e.toast.error(a instanceof Error?a.message:"更新项目失败")}})}],47161),a.s(["isImportPayload",0,function(a){return"string"==typeof a.token}],28974)},19446,a=>{"use strict";var b=a.i(34020),c=a.i(71938),d=a.i(71071),e=a.i(71562),f=a.i(44401),g=a.i(80904);let h=g.z.string().trim().regex(/^[a-z0-9-]{1,32}$/,"名称需为 1-32 位小写字母、数字或连字符").refine(a=>"default"!==a,'名称 "default" 为保留字'),i=(a,b=512)=>g.z.string().trim().min(1,`请输入${a}`).max(b),j=(a=512)=>g.z.string().trim().max(a).optional().or(g.z.literal("")),k=g.z.object({name:h,accessKeyId:i("AccessKey ID",128),accessKeySecret:i("AccessKey Secret",512),otsEndpoint:i("OTS Endpoint",256),otsInstanceName:i("OTS 实例名",128),ossEndpoint:j(256),ossBucketName:j(128),region:j(64),activate:g.z.boolean().optional()});g.z.object({accessKeyId:j(128),accessKeySecret:j(512),otsEndpoint:j(256),otsInstanceName:j(128),ossEndpoint:j(256),ossBucketName:j(128),region:j(64),activate:g.z.boolean().optional()}).refine(a=>{let b=!!(a.accessKeyId&&a.accessKeyId.length>0);return!!(a.accessKeySecret&&a.accessKeySecret.length>0)===b},{message:"AccessKey ID 与 Secret 必须成对更新,要么同时填写、要么同时留空",path:["accessKeySecret"]});let l=g.z.object({name:h,accessKeyId:j(128),accessKeySecret:j(512),otsEndpoint:i("OTS Endpoint",256),otsInstanceName:i("OTS 实例名",128),ossEndpoint:j(256),ossBucketName:j(128),region:j(64),activate:g.z.boolean().optional()}).refine(a=>{let b=!!(a.accessKeyId&&a.accessKeyId.length>0);return!!(a.accessKeySecret&&a.accessKeySecret.length>0)===b},{message:"AccessKey ID 与 Secret 必须成对更新,要么同时填写、要么同时留空",path:["accessKeySecret"]}),m=g.z.object({token:g.z.string().trim().min(10,"Token 长度不足,无法解析").max(4096),name:h.optional(),activate:g.z.boolean().optional()});var n=a.i(76192),o=a.i(92942),p=a.i(72518),q=a.i(63525),r=a.i(16038),s=a.i(70535);let t=k.extend({otsEndpoint:g.z.string().trim().url("请输入合法的 OTS Endpoint URL"),ossEndpoint:g.z.string().trim().url("请输入合法的 OSS Endpoint URL").optional().or(g.z.literal(""))}),u=m.pick({token:!0}),v=[{value:"cn-beijing",label:"华北 2(北京)"},{value:"cn-hangzhou",label:"华东 1(杭州)"},{value:"cn-shanghai",label:"华东 2(上海)"},{value:"cn-shenzhen",label:"华南 1(深圳)"},{value:"__custom__",label:"其它(自定义)"}];a.s(["ConnectInstanceForm",0,function({mode:a,defaultValues:g,accessKeyIdPlaceholder:h,accessKeySecretPlaceholder:i,onSubmit:j,busy:k,lockName:m,submitLabel:w}){let[x,y]=(0,c.useState)("manual"),z="edit"===a,A=g?.region??"cn-hangzhou",B=(0,c.useMemo)(()=>v.some(a=>a.value===A),[A]),[C,D]=(0,c.useState)(B?A:"__custom__"),E=(0,c.useMemo)(()=>(0,d.zodResolver)(z?l:t),[z]),F=(0,e.useForm)({resolver:E,defaultValues:{name:g?.name??"",accessKeyId:z?"":g?.accessKeyId??"",accessKeySecret:z?"":g?.accessKeySecret??"",otsEndpoint:g?.otsEndpoint??"",otsInstanceName:g?.otsInstanceName??"",ossEndpoint:g?.ossEndpoint??"",ossBucketName:g?.ossBucketName??"",region:A}}),G=(0,e.useForm)({resolver:(0,d.zodResolver)(u),defaultValues:{token:""}});async function H(a){let b=a.ossEndpoint?.trim()||void 0,c=a.ossBucketName?.trim()||void 0;b&&c&&(b=function(a,b){try{let c=new URL(a);if(c.hostname.startsWith(`${b}.`))return c.hostname=c.hostname.slice(b.length+1),c.toString().replace(/\/$/,"")}catch{}return a}(b,c));let d={...a,ossEndpoint:b,ossBucketName:c};await j(d)}async function I(a){let b={token:a.token.trim()};await j(b)}let J="create"===a;return(0,b.jsxs)(r.Tabs,{value:x,onValueChange:a=>y(a),className:"w-full",children:[J&&(0,b.jsxs)(r.TabsList,{className:"grid w-full grid-cols-2",children:[(0,b.jsx)(r.TabsTrigger,{value:"manual",children:"手动填写"}),(0,b.jsx)(r.TabsTrigger,{value:"token",children:"导入 Token"})]}),(0,b.jsx)(r.TabsContent,{value:"manual",className:"mt-4",children:(0,b.jsx)(o.Form,{...F,children:(0,b.jsxs)("form",{onSubmit:F.handleSubmit(H),className:"space-y-4",children:[(0,b.jsx)(o.FormField,{control:F.control,name:"name",render:({field:a})=>(0,b.jsxs)(o.FormItem,{children:[(0,b.jsx)(o.FormLabel,{children:"项目名称"}),(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(p.Input,{...a,placeholder:"prod-main",disabled:m||k,autoComplete:"off"})}),(0,b.jsx)(o.FormDescription,{children:"仅用于本地区分,不会发送到服务端。"}),(0,b.jsx)(o.FormMessage,{})]})}),(0,b.jsx)(o.FormField,{control:F.control,name:"region",render:({field:a})=>(0,b.jsxs)(o.FormItem,{children:[(0,b.jsx)(o.FormLabel,{children:"Region"}),"__custom__"===C?(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(p.Input,{...a,placeholder:"cn-xxx",disabled:k})}),(0,b.jsx)(n.Button,{type:"button",variant:"outline",size:"sm",onClick:()=>{D("cn-hangzhou"),a.onChange("cn-hangzhou")},disabled:k,children:"使用预设"})]}):(0,b.jsxs)(q.Select,{value:C,onValueChange:b=>{D(b),"__custom__"!==b?a.onChange(b):a.onChange("")},disabled:k,children:[(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(q.SelectTrigger,{children:(0,b.jsx)(q.SelectValue,{})})}),(0,b.jsx)(q.SelectContent,{children:v.map(a=>(0,b.jsx)(q.SelectItem,{value:a.value,children:a.label},a.value))})]}),(0,b.jsx)(o.FormMessage,{})]})}),(0,b.jsxs)("div",{className:"grid gap-4 sm:grid-cols-2",children:[(0,b.jsx)(o.FormField,{control:F.control,name:"accessKeyId",render:({field:a})=>(0,b.jsxs)(o.FormItem,{children:[(0,b.jsx)(o.FormLabel,{children:"AccessKey ID"}),(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(p.Input,{...a,autoComplete:"off",disabled:k,placeholder:z&&h?`${h} \xb7 留空表示保留`:void 0})}),z&&(0,b.jsx)(o.FormDescription,{children:"AK 与 SK 必须成对更新,留空则保留现有凭证。"}),(0,b.jsx)(o.FormMessage,{})]})}),(0,b.jsx)(o.FormField,{control:F.control,name:"accessKeySecret",render:({field:a})=>(0,b.jsxs)(o.FormItem,{children:[(0,b.jsx)(o.FormLabel,{children:"AccessKey Secret"}),(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(p.Input,{...a,type:"password",autoComplete:"new-password",disabled:k})}),(0,b.jsx)(o.FormMessage,{})]})})]}),(0,b.jsxs)("div",{className:"grid gap-4 sm:grid-cols-2",children:[(0,b.jsx)(o.FormField,{control:F.control,name:"otsEndpoint",render:({field:a})=>(0,b.jsxs)(o.FormItem,{children:[(0,b.jsx)(o.FormLabel,{children:"OTS Endpoint"}),(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(p.Input,{...a,placeholder:"https://xxx.cn-hangzhou.ots.aliyuncs.com",disabled:k})}),(0,b.jsx)(o.FormMessage,{})]})}),(0,b.jsx)(o.FormField,{control:F.control,name:"otsInstanceName",render:({field:a})=>(0,b.jsxs)(o.FormItem,{children:[(0,b.jsx)(o.FormLabel,{children:"OTS 实例名"}),(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(p.Input,{...a,disabled:k})}),(0,b.jsx)(o.FormMessage,{})]})})]}),(0,b.jsxs)("div",{className:"flex items-start gap-2 rounded-md border border-[hsl(var(--border))] bg-[hsl(var(--muted)/0.4)] px-3 py-2 text-xs text-[hsl(var(--muted-foreground))]",children:[(0,b.jsx)(f.Info,{className:"mt-0.5 h-3.5 w-3.5 shrink-0 text-[hsl(var(--primary))]"}),(0,b.jsx)("span",{children:"OSS 信息为可选项。若需上传文档到知识库,OSS Endpoint 与 Bucket 必填; 留空则项目只能用于查询与检索,文件上传功能将不可用。"})]}),(0,b.jsxs)("div",{className:"grid gap-4 sm:grid-cols-2",children:[(0,b.jsx)(o.FormField,{control:F.control,name:"ossEndpoint",render:({field:a})=>(0,b.jsxs)(o.FormItem,{children:[(0,b.jsx)(o.FormLabel,{children:"OSS Endpoint(可选)"}),(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(p.Input,{...a,placeholder:"https://oss-cn-hangzhou.aliyuncs.com",disabled:k})}),(0,b.jsx)(o.FormMessage,{})]})}),(0,b.jsx)(o.FormField,{control:F.control,name:"ossBucketName",render:({field:a})=>(0,b.jsxs)(o.FormItem,{children:[(0,b.jsx)(o.FormLabel,{children:"OSS Bucket(可选)"}),(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(p.Input,{...a,disabled:k})}),(0,b.jsx)(o.FormMessage,{})]})})]}),(0,b.jsx)("div",{className:"flex justify-end pt-2",children:(0,b.jsx)(n.Button,{type:"submit",disabled:k,children:k?"提交中...":w??("edit"===a?"保存":"创建项目")})})]})})}),J&&(0,b.jsx)(r.TabsContent,{value:"token",className:"mt-4",children:(0,b.jsx)(o.Form,{...G,children:(0,b.jsxs)("form",{onSubmit:G.handleSubmit(I),className:"space-y-4",children:[(0,b.jsx)(o.FormField,{control:G.control,name:"token",render:({field:a})=>(0,b.jsxs)(o.FormItem,{children:[(0,b.jsx)(o.FormLabel,{children:"项目 Token"}),(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(s.Textarea,{...a,rows:5,placeholder:"粘贴从其他环境导出的项目 Token",disabled:k})}),(0,b.jsx)(o.FormDescription,{children:"Token 中已包含 AK/SK、Endpoint 等全部连接信息。"}),(0,b.jsx)(o.FormMessage,{})]})}),(0,b.jsx)("div",{className:"flex justify-end pt-2",children:(0,b.jsx)(n.Button,{type:"submit",disabled:k,children:k?"导入中...":"导入并连接"})})]})})})]})}],19446)}];
1
+ module.exports=[47161,28974,a=>{"use strict";var b=a.i(33596),c=a.i(83366),d=a.i(77072),e=a.i(63265),f=a.i(53141);async function g(){return(0,f.apiGet)("/api/v1/instances")}async function h(a){return(0,f.apiGet)(`/api/v1/instances/${encodeURIComponent(a)}`)}async function i(a){return(0,f.apiPost)("/api/v1/instances",a)}async function j(a){return(0,f.apiPost)("/api/v1/instances",a)}async function k(a,b){return(0,f.apiPut)(`/api/v1/instances/${encodeURIComponent(a)}`,b)}async function l(a){return(0,f.apiDelete)(`/api/v1/instances/${encodeURIComponent(a)}`)}async function m(a){return(0,f.apiPost)(`/api/v1/instances/${encodeURIComponent(a)}/use`)}async function n(a){return(0,f.apiGet)(`/api/v1/instances/${encodeURIComponent(a)}/token`)}var o=a.i(25377),p=a.i(39096);function q(a){(0,o.invalidateInstanceScopedQueries)(a)}function r(a){(0,o.resetInstanceScopedQueries)(a)}function s(a){a.invalidateQueries({queryKey:o.RUNTIME_CONTEXT_QUERY_KEY})}a.s(["useConnectInstance",0,function(){let a=(0,d.useQueryClient)();return(0,b.useMutation)({mutationFn:a=>i(a),onSuccess:()=>{r(a),s(a),e.toast.success("项目已创建")},onError:a=>{e.toast.error(a instanceof Error?a.message:"创建项目失败")}})},"useDeleteInstance",0,function(){let a=(0,d.useQueryClient)();return(0,b.useMutation)({mutationFn:a=>l(a),onSuccess:()=>{q(a),s(a),e.toast.success("项目已删除")},onError:a=>{e.toast.error(a instanceof Error?a.message:"删除项目失败")}})},"useExportInstanceToken",0,function(){return(0,b.useMutation)({mutationFn:a=>n(a),onError:a=>{e.toast.error(a instanceof Error?a.message:"导出 Token 失败")}})},"useImportInstance",0,function(){let a=(0,d.useQueryClient)();return(0,b.useMutation)({mutationFn:a=>j(a),onSuccess:()=>{r(a),s(a),e.toast.success("Token 已导入")},onError:a=>{e.toast.error(a instanceof Error?a.message:"导入 Token 失败")}})},"useInstance",0,function(a){let{context:b,ready:d}=(0,p.useRuntimeContext)();return(0,c.useQuery)({queryKey:o.queryKeys.instance(b.dataScopeKey,a),queryFn:()=>h(a),enabled:d&&!!a,staleTime:3e4})},"useInstances",0,function(){let{context:a,ready:b}=(0,p.useRuntimeContext)();return(0,c.useQuery)({queryKey:o.queryKeys.instances(a.dataScopeKey),queryFn:g,enabled:b,staleTime:3e4})},"useSwitchInstance",0,function(){let a=(0,d.useQueryClient)(),{context:c}=(0,p.useRuntimeContext)();return(0,b.useMutation)({mutationFn:a=>m(a),onSuccess:({activeInstance:b})=>{r(a),s(a),e.toast.success("已切换当前项目")},onError:a=>{e.toast.error(a instanceof Error?a.message:"切换项目失败")}})},"useUpdateInstance",0,function(a){let c=(0,d.useQueryClient)();return(0,b.useMutation)({mutationFn:b=>k(a,b),onSuccess:()=>{q(c),c.invalidateQueries({queryKey:["instance"]}),s(c),e.toast.success("项目已更新")},onError:a=>{e.toast.error(a instanceof Error?a.message:"更新项目失败")}})}],47161),a.s(["isImportPayload",0,function(a){return"string"==typeof a.token}],28974)},19446,a=>{"use strict";var b=a.i(34020),c=a.i(71938),d=a.i(71071),e=a.i(71562),f=a.i(44401),g=a.i(80904);let h=g.z.string().trim().regex(/^[a-z0-9-]{1,32}$/,"名称需为 1-32 位小写字母、数字或连字符").refine(a=>"default"!==a,'名称 "default" 为保留字'),i=(a,b=512)=>g.z.string().trim().min(1,`请输入${a}`).max(b),j=(a=512)=>g.z.string().trim().max(a).optional().or(g.z.literal("")),k=g.z.object({name:h,accessKeyId:i("AccessKey ID",128),accessKeySecret:i("AccessKey Secret",512),otsEndpoint:i("OTS Endpoint",256),otsInstanceName:i("OTS 实例名",128),ossEndpoint:j(256),ossBucketName:j(128),region:j(64),activate:g.z.boolean().optional()});g.z.object({accessKeyId:j(128),accessKeySecret:j(512),otsEndpoint:j(256),otsInstanceName:j(128),ossEndpoint:j(256),ossBucketName:j(128),region:j(64),activate:g.z.boolean().optional()}).refine(a=>{let b=!!(a.accessKeyId&&a.accessKeyId.length>0);return!!(a.accessKeySecret&&a.accessKeySecret.length>0)===b},{message:"AccessKey ID 与 Secret 必须成对更新,要么同时填写、要么同时留空",path:["accessKeySecret"]});let l=g.z.object({name:h,accessKeyId:j(128),accessKeySecret:j(512),otsEndpoint:i("OTS Endpoint",256),otsInstanceName:i("OTS 实例名",128),ossEndpoint:j(256),ossBucketName:j(128),region:j(64),activate:g.z.boolean().optional()}).refine(a=>{let b=!!(a.accessKeyId&&a.accessKeyId.length>0);return!!(a.accessKeySecret&&a.accessKeySecret.length>0)===b},{message:"AccessKey ID 与 Secret 必须成对更新,要么同时填写、要么同时留空",path:["accessKeySecret"]}),m=g.z.object({token:g.z.string().trim().min(10,"Token 长度不足,无法解析").max(4096),name:h.optional(),activate:g.z.boolean().optional()});var n=a.i(76192),o=a.i(92942),p=a.i(72518),q=a.i(63525),r=a.i(16038),s=a.i(70535);let t=k.extend({otsEndpoint:g.z.string().trim().url("请输入合法的 OTS Endpoint URL"),ossEndpoint:g.z.string().trim().url("请输入合法的 OSS Endpoint URL").optional().or(g.z.literal(""))}),u=m.pick({token:!0}),v=[{value:"cn-beijing",label:"华北 2(北京)"},{value:"cn-hangzhou",label:"华东 1(杭州)"},{value:"cn-shanghai",label:"华东 2(上海)"},{value:"cn-shenzhen",label:"华南 1(深圳)"},{value:"__custom__",label:"其它(自定义)"}];a.s(["ConnectInstanceForm",0,function({mode:a,defaultValues:g,accessKeyIdPlaceholder:h,accessKeySecretPlaceholder:i,onSubmit:j,busy:k,lockName:m,submitLabel:w}){let[x,y]=(0,c.useState)("manual"),z="edit"===a,A=g?.region??"cn-hangzhou",B=(0,c.useMemo)(()=>v.some(a=>a.value===A),[A]),[C,D]=(0,c.useState)(B?A:"__custom__"),E=(0,c.useMemo)(()=>(0,d.zodResolver)(z?l:t),[z]),F=(0,e.useForm)({resolver:E,defaultValues:{name:g?.name??"",accessKeyId:z?"":g?.accessKeyId??"",accessKeySecret:z?"":g?.accessKeySecret??"",otsEndpoint:g?.otsEndpoint??"",otsInstanceName:g?.otsInstanceName??"",ossEndpoint:g?.ossEndpoint??"",ossBucketName:g?.ossBucketName??"",region:A}}),G=(0,e.useForm)({resolver:(0,d.zodResolver)(u),defaultValues:{token:""}});async function H(a){let b=a.ossEndpoint?.trim()||void 0,c=a.ossBucketName?.trim()||void 0;b&&c&&(b=function(a,b){try{let c=new URL(a);if(c.hostname.startsWith(`${b}.`))return c.hostname=c.hostname.slice(b.length+1),c.toString().replace(/\/$/,"")}catch{}return a}(b,c));let d={...a,ossEndpoint:b,ossBucketName:c};await j(d)}async function I(a){let b={token:a.token.trim()};await j(b)}let J="create"===a;return(0,b.jsxs)(r.Tabs,{value:x,onValueChange:a=>y(a),className:"w-full",children:[J&&(0,b.jsxs)(r.TabsList,{className:"grid w-full grid-cols-2",children:[(0,b.jsx)(r.TabsTrigger,{value:"manual",children:"手动填写"}),(0,b.jsx)(r.TabsTrigger,{value:"token",children:"导入 Token"})]}),(0,b.jsx)(r.TabsContent,{value:"manual",className:"mt-4",children:(0,b.jsx)(o.Form,{...F,children:(0,b.jsxs)("form",{onSubmit:F.handleSubmit(H),className:"space-y-4",children:[(0,b.jsx)(o.FormField,{control:F.control,name:"name",render:({field:a})=>(0,b.jsxs)(o.FormItem,{children:[(0,b.jsx)(o.FormLabel,{children:"项目名称"}),(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(p.Input,{...a,placeholder:"prod-main",disabled:m||k,autoComplete:"off"})}),(0,b.jsx)(o.FormDescription,{children:"仅用于本地区分,不会发送到服务端。"}),(0,b.jsx)(o.FormMessage,{})]})}),(0,b.jsx)(o.FormField,{control:F.control,name:"region",render:({field:a})=>(0,b.jsxs)(o.FormItem,{children:[(0,b.jsx)(o.FormLabel,{children:"Region"}),"__custom__"===C?(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(p.Input,{...a,placeholder:"cn-xxx",disabled:k})}),(0,b.jsx)(n.Button,{type:"button",variant:"outline",size:"sm",onClick:()=>{D("cn-hangzhou"),a.onChange("cn-hangzhou")},disabled:k,children:"使用预设"})]}):(0,b.jsxs)(q.Select,{value:C,onValueChange:b=>{D(b),"__custom__"!==b?a.onChange(b):a.onChange("")},disabled:k,children:[(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(q.SelectTrigger,{children:(0,b.jsx)(q.SelectValue,{})})}),(0,b.jsx)(q.SelectContent,{children:v.map(a=>(0,b.jsx)(q.SelectItem,{value:a.value,children:a.label},a.value))})]}),(0,b.jsx)(o.FormMessage,{})]})}),(0,b.jsxs)("div",{className:"grid gap-4 sm:grid-cols-2",children:[(0,b.jsx)(o.FormField,{control:F.control,name:"accessKeyId",render:({field:a})=>(0,b.jsxs)(o.FormItem,{children:[(0,b.jsx)(o.FormLabel,{children:"AccessKey ID"}),(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(p.Input,{...a,autoComplete:"off",disabled:k,placeholder:z&&h?`${h} \xb7 留空表示保留`:void 0})}),z&&(0,b.jsx)(o.FormDescription,{children:"AK 与 SK 必须成对更新,留空则保留现有凭证。"}),(0,b.jsx)(o.FormMessage,{})]})}),(0,b.jsx)(o.FormField,{control:F.control,name:"accessKeySecret",render:({field:a})=>(0,b.jsxs)(o.FormItem,{children:[(0,b.jsx)(o.FormLabel,{children:"AccessKey Secret"}),(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(p.Input,{...a,type:"password",autoComplete:"new-password",disabled:k,placeholder:z&&i?`${i} \xb7 留空表示保留`:void 0})}),(0,b.jsx)(o.FormMessage,{})]})})]}),(0,b.jsxs)("div",{className:"grid gap-4 sm:grid-cols-2",children:[(0,b.jsx)(o.FormField,{control:F.control,name:"otsEndpoint",render:({field:a})=>(0,b.jsxs)(o.FormItem,{children:[(0,b.jsx)(o.FormLabel,{children:"OTS Endpoint"}),(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(p.Input,{...a,placeholder:"https://xxx.cn-hangzhou.ots.aliyuncs.com",disabled:k})}),(0,b.jsx)(o.FormMessage,{})]})}),(0,b.jsx)(o.FormField,{control:F.control,name:"otsInstanceName",render:({field:a})=>(0,b.jsxs)(o.FormItem,{children:[(0,b.jsx)(o.FormLabel,{children:"OTS 实例名"}),(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(p.Input,{...a,disabled:k})}),(0,b.jsx)(o.FormMessage,{})]})})]}),(0,b.jsxs)("div",{className:"flex items-start gap-2 rounded-md border border-[hsl(var(--border))] bg-[hsl(var(--muted)/0.4)] px-3 py-2 text-xs text-[hsl(var(--muted-foreground))]",children:[(0,b.jsx)(f.Info,{className:"mt-0.5 h-3.5 w-3.5 shrink-0 text-[hsl(var(--primary))]"}),(0,b.jsx)("span",{children:"OSS 信息为可选项。若需上传文档到知识库,OSS Endpoint 与 Bucket 必填; 留空则项目只能用于查询与检索,文件上传功能将不可用。"})]}),(0,b.jsxs)("div",{className:"grid gap-4 sm:grid-cols-2",children:[(0,b.jsx)(o.FormField,{control:F.control,name:"ossEndpoint",render:({field:a})=>(0,b.jsxs)(o.FormItem,{children:[(0,b.jsx)(o.FormLabel,{children:"OSS Endpoint(可选)"}),(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(p.Input,{...a,placeholder:"https://oss-cn-hangzhou.aliyuncs.com",disabled:k})}),(0,b.jsx)(o.FormMessage,{})]})}),(0,b.jsx)(o.FormField,{control:F.control,name:"ossBucketName",render:({field:a})=>(0,b.jsxs)(o.FormItem,{children:[(0,b.jsx)(o.FormLabel,{children:"OSS Bucket(可选)"}),(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(p.Input,{...a,disabled:k})}),(0,b.jsx)(o.FormMessage,{})]})})]}),(0,b.jsx)("div",{className:"flex justify-end pt-2",children:(0,b.jsx)(n.Button,{type:"submit",disabled:k,children:k?"提交中...":w??("edit"===a?"保存":"创建项目")})})]})})}),J&&(0,b.jsx)(r.TabsContent,{value:"token",className:"mt-4",children:(0,b.jsx)(o.Form,{...G,children:(0,b.jsxs)("form",{onSubmit:G.handleSubmit(I),className:"space-y-4",children:[(0,b.jsx)(o.FormField,{control:G.control,name:"token",render:({field:a})=>(0,b.jsxs)(o.FormItem,{children:[(0,b.jsx)(o.FormLabel,{children:"项目 Token"}),(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(s.Textarea,{...a,rows:5,placeholder:"粘贴从其他环境导出的项目 Token",disabled:k})}),(0,b.jsx)(o.FormDescription,{children:"Token 中已包含 AK/SK、Endpoint 等全部连接信息。"}),(0,b.jsx)(o.FormMessage,{})]})}),(0,b.jsx)("div",{className:"flex justify-end pt-2",children:(0,b.jsx)(n.Button,{type:"submit",disabled:k,children:k?"导入中...":"导入并连接"})})]})})})]})}],19446)}];
2
2
 
3
3
  //# sourceMappingURL=dashboard_src_0y49vhd._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[19446,a=>{"use strict";var b=a.i(34020),c=a.i(71938),d=a.i(71071),e=a.i(71562),f=a.i(44401),g=a.i(80904);let h=g.z.string().trim().regex(/^[a-z0-9-]{1,32}$/,"名称需为 1-32 位小写字母、数字或连字符").refine(a=>"default"!==a,'名称 "default" 为保留字'),i=(a,b=512)=>g.z.string().trim().min(1,`请输入${a}`).max(b),j=(a=512)=>g.z.string().trim().max(a).optional().or(g.z.literal("")),k=g.z.object({name:h,accessKeyId:i("AccessKey ID",128),accessKeySecret:i("AccessKey Secret",512),otsEndpoint:i("OTS Endpoint",256),otsInstanceName:i("OTS 实例名",128),ossEndpoint:j(256),ossBucketName:j(128),region:j(64),activate:g.z.boolean().optional()});g.z.object({accessKeyId:j(128),accessKeySecret:j(512),otsEndpoint:j(256),otsInstanceName:j(128),ossEndpoint:j(256),ossBucketName:j(128),region:j(64),activate:g.z.boolean().optional()}).refine(a=>{let b=!!(a.accessKeyId&&a.accessKeyId.length>0);return!!(a.accessKeySecret&&a.accessKeySecret.length>0)===b},{message:"AccessKey ID 与 Secret 必须成对更新,要么同时填写、要么同时留空",path:["accessKeySecret"]});let l=g.z.object({name:h,accessKeyId:j(128),accessKeySecret:j(512),otsEndpoint:i("OTS Endpoint",256),otsInstanceName:i("OTS 实例名",128),ossEndpoint:j(256),ossBucketName:j(128),region:j(64),activate:g.z.boolean().optional()}).refine(a=>{let b=!!(a.accessKeyId&&a.accessKeyId.length>0);return!!(a.accessKeySecret&&a.accessKeySecret.length>0)===b},{message:"AccessKey ID 与 Secret 必须成对更新,要么同时填写、要么同时留空",path:["accessKeySecret"]}),m=g.z.object({token:g.z.string().trim().min(10,"Token 长度不足,无法解析").max(4096),name:h.optional(),activate:g.z.boolean().optional()});var n=a.i(76192),o=a.i(92942),p=a.i(72518),q=a.i(63525),r=a.i(16038),s=a.i(70535);let t=k.extend({otsEndpoint:g.z.string().trim().url("请输入合法的 OTS Endpoint URL"),ossEndpoint:g.z.string().trim().url("请输入合法的 OSS Endpoint URL").optional().or(g.z.literal(""))}),u=m.pick({token:!0}),v=[{value:"cn-beijing",label:"华北 2(北京)"},{value:"cn-hangzhou",label:"华东 1(杭州)"},{value:"cn-shanghai",label:"华东 2(上海)"},{value:"cn-shenzhen",label:"华南 1(深圳)"},{value:"__custom__",label:"其它(自定义)"}];a.s(["ConnectInstanceForm",0,function({mode:a,defaultValues:g,accessKeyIdPlaceholder:h,accessKeySecretPlaceholder:i,onSubmit:j,busy:k,lockName:m,submitLabel:w}){let[x,y]=(0,c.useState)("manual"),z="edit"===a,A=g?.region??"cn-hangzhou",B=(0,c.useMemo)(()=>v.some(a=>a.value===A),[A]),[C,D]=(0,c.useState)(B?A:"__custom__"),E=(0,c.useMemo)(()=>(0,d.zodResolver)(z?l:t),[z]),F=(0,e.useForm)({resolver:E,defaultValues:{name:g?.name??"",accessKeyId:z?"":g?.accessKeyId??"",accessKeySecret:z?"":g?.accessKeySecret??"",otsEndpoint:g?.otsEndpoint??"",otsInstanceName:g?.otsInstanceName??"",ossEndpoint:g?.ossEndpoint??"",ossBucketName:g?.ossBucketName??"",region:A}}),G=(0,e.useForm)({resolver:(0,d.zodResolver)(u),defaultValues:{token:""}});async function H(a){let b=a.ossEndpoint?.trim()||void 0,c=a.ossBucketName?.trim()||void 0;b&&c&&(b=function(a,b){try{let c=new URL(a);if(c.hostname.startsWith(`${b}.`))return c.hostname=c.hostname.slice(b.length+1),c.toString().replace(/\/$/,"")}catch{}return a}(b,c));let d={...a,ossEndpoint:b,ossBucketName:c};await j(d)}async function I(a){let b={token:a.token.trim()};await j(b)}let J="create"===a;return(0,b.jsxs)(r.Tabs,{value:x,onValueChange:a=>y(a),className:"w-full",children:[J&&(0,b.jsxs)(r.TabsList,{className:"grid w-full grid-cols-2",children:[(0,b.jsx)(r.TabsTrigger,{value:"manual",children:"手动填写"}),(0,b.jsx)(r.TabsTrigger,{value:"token",children:"导入 Token"})]}),(0,b.jsx)(r.TabsContent,{value:"manual",className:"mt-4",children:(0,b.jsx)(o.Form,{...F,children:(0,b.jsxs)("form",{onSubmit:F.handleSubmit(H),className:"space-y-4",children:[(0,b.jsx)(o.FormField,{control:F.control,name:"name",render:({field:a})=>(0,b.jsxs)(o.FormItem,{children:[(0,b.jsx)(o.FormLabel,{children:"项目名称"}),(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(p.Input,{...a,placeholder:"prod-main",disabled:m||k,autoComplete:"off"})}),(0,b.jsx)(o.FormDescription,{children:"仅用于本地区分,不会发送到服务端。"}),(0,b.jsx)(o.FormMessage,{})]})}),(0,b.jsx)(o.FormField,{control:F.control,name:"region",render:({field:a})=>(0,b.jsxs)(o.FormItem,{children:[(0,b.jsx)(o.FormLabel,{children:"Region"}),"__custom__"===C?(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(p.Input,{...a,placeholder:"cn-xxx",disabled:k})}),(0,b.jsx)(n.Button,{type:"button",variant:"outline",size:"sm",onClick:()=>{D("cn-hangzhou"),a.onChange("cn-hangzhou")},disabled:k,children:"使用预设"})]}):(0,b.jsxs)(q.Select,{value:C,onValueChange:b=>{D(b),"__custom__"!==b?a.onChange(b):a.onChange("")},disabled:k,children:[(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(q.SelectTrigger,{children:(0,b.jsx)(q.SelectValue,{})})}),(0,b.jsx)(q.SelectContent,{children:v.map(a=>(0,b.jsx)(q.SelectItem,{value:a.value,children:a.label},a.value))})]}),(0,b.jsx)(o.FormMessage,{})]})}),(0,b.jsxs)("div",{className:"grid gap-4 sm:grid-cols-2",children:[(0,b.jsx)(o.FormField,{control:F.control,name:"accessKeyId",render:({field:a})=>(0,b.jsxs)(o.FormItem,{children:[(0,b.jsx)(o.FormLabel,{children:"AccessKey ID"}),(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(p.Input,{...a,autoComplete:"off",disabled:k,placeholder:z&&h?`${h} \xb7 留空表示保留`:void 0})}),z&&(0,b.jsx)(o.FormDescription,{children:"AK 与 SK 必须成对更新,留空则保留现有凭证。"}),(0,b.jsx)(o.FormMessage,{})]})}),(0,b.jsx)(o.FormField,{control:F.control,name:"accessKeySecret",render:({field:a})=>(0,b.jsxs)(o.FormItem,{children:[(0,b.jsx)(o.FormLabel,{children:"AccessKey Secret"}),(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(p.Input,{...a,type:"password",autoComplete:"new-password",disabled:k})}),(0,b.jsx)(o.FormMessage,{})]})})]}),(0,b.jsxs)("div",{className:"grid gap-4 sm:grid-cols-2",children:[(0,b.jsx)(o.FormField,{control:F.control,name:"otsEndpoint",render:({field:a})=>(0,b.jsxs)(o.FormItem,{children:[(0,b.jsx)(o.FormLabel,{children:"OTS Endpoint"}),(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(p.Input,{...a,placeholder:"https://xxx.cn-hangzhou.ots.aliyuncs.com",disabled:k})}),(0,b.jsx)(o.FormMessage,{})]})}),(0,b.jsx)(o.FormField,{control:F.control,name:"otsInstanceName",render:({field:a})=>(0,b.jsxs)(o.FormItem,{children:[(0,b.jsx)(o.FormLabel,{children:"OTS 实例名"}),(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(p.Input,{...a,disabled:k})}),(0,b.jsx)(o.FormMessage,{})]})})]}),(0,b.jsxs)("div",{className:"flex items-start gap-2 rounded-md border border-[hsl(var(--border))] bg-[hsl(var(--muted)/0.4)] px-3 py-2 text-xs text-[hsl(var(--muted-foreground))]",children:[(0,b.jsx)(f.Info,{className:"mt-0.5 h-3.5 w-3.5 shrink-0 text-[hsl(var(--primary))]"}),(0,b.jsx)("span",{children:"OSS 信息为可选项。若需上传文档到知识库,OSS Endpoint 与 Bucket 必填; 留空则项目只能用于查询与检索,文件上传功能将不可用。"})]}),(0,b.jsxs)("div",{className:"grid gap-4 sm:grid-cols-2",children:[(0,b.jsx)(o.FormField,{control:F.control,name:"ossEndpoint",render:({field:a})=>(0,b.jsxs)(o.FormItem,{children:[(0,b.jsx)(o.FormLabel,{children:"OSS Endpoint(可选)"}),(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(p.Input,{...a,placeholder:"https://oss-cn-hangzhou.aliyuncs.com",disabled:k})}),(0,b.jsx)(o.FormMessage,{})]})}),(0,b.jsx)(o.FormField,{control:F.control,name:"ossBucketName",render:({field:a})=>(0,b.jsxs)(o.FormItem,{children:[(0,b.jsx)(o.FormLabel,{children:"OSS Bucket(可选)"}),(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(p.Input,{...a,disabled:k})}),(0,b.jsx)(o.FormMessage,{})]})})]}),(0,b.jsx)("div",{className:"flex justify-end pt-2",children:(0,b.jsx)(n.Button,{type:"submit",disabled:k,children:k?"提交中...":w??("edit"===a?"保存":"创建项目")})})]})})}),J&&(0,b.jsx)(r.TabsContent,{value:"token",className:"mt-4",children:(0,b.jsx)(o.Form,{...G,children:(0,b.jsxs)("form",{onSubmit:G.handleSubmit(I),className:"space-y-4",children:[(0,b.jsx)(o.FormField,{control:G.control,name:"token",render:({field:a})=>(0,b.jsxs)(o.FormItem,{children:[(0,b.jsx)(o.FormLabel,{children:"项目 Token"}),(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(s.Textarea,{...a,rows:5,placeholder:"粘贴从其他环境导出的项目 Token",disabled:k})}),(0,b.jsx)(o.FormDescription,{children:"Token 中已包含 AK/SK、Endpoint 等全部连接信息。"}),(0,b.jsx)(o.FormMessage,{})]})}),(0,b.jsx)("div",{className:"flex justify-end pt-2",children:(0,b.jsx)(n.Button,{type:"submit",disabled:k,children:k?"导入中...":"导入并连接"})})]})})})]})}],19446)},47161,28974,a=>{"use strict";var b=a.i(33596),c=a.i(83366),d=a.i(77072),e=a.i(63265),f=a.i(53141);async function g(){return(0,f.apiGet)("/api/v1/instances")}async function h(a){return(0,f.apiGet)(`/api/v1/instances/${encodeURIComponent(a)}`)}async function i(a){return(0,f.apiPost)("/api/v1/instances",a)}async function j(a){return(0,f.apiPost)("/api/v1/instances",a)}async function k(a,b){return(0,f.apiPut)(`/api/v1/instances/${encodeURIComponent(a)}`,b)}async function l(a){return(0,f.apiDelete)(`/api/v1/instances/${encodeURIComponent(a)}`)}async function m(a){return(0,f.apiPost)(`/api/v1/instances/${encodeURIComponent(a)}/use`)}async function n(a){return(0,f.apiGet)(`/api/v1/instances/${encodeURIComponent(a)}/token`)}var o=a.i(25377),p=a.i(39096);function q(a){(0,o.invalidateInstanceScopedQueries)(a)}function r(a){(0,o.resetInstanceScopedQueries)(a)}function s(a){a.invalidateQueries({queryKey:o.RUNTIME_CONTEXT_QUERY_KEY})}a.s(["useConnectInstance",0,function(){let a=(0,d.useQueryClient)();return(0,b.useMutation)({mutationFn:a=>i(a),onSuccess:()=>{r(a),s(a),e.toast.success("项目已创建")},onError:a=>{e.toast.error(a instanceof Error?a.message:"创建项目失败")}})},"useDeleteInstance",0,function(){let a=(0,d.useQueryClient)();return(0,b.useMutation)({mutationFn:a=>l(a),onSuccess:()=>{q(a),s(a),e.toast.success("项目已删除")},onError:a=>{e.toast.error(a instanceof Error?a.message:"删除项目失败")}})},"useExportInstanceToken",0,function(){return(0,b.useMutation)({mutationFn:a=>n(a),onError:a=>{e.toast.error(a instanceof Error?a.message:"导出 Token 失败")}})},"useImportInstance",0,function(){let a=(0,d.useQueryClient)();return(0,b.useMutation)({mutationFn:a=>j(a),onSuccess:()=>{r(a),s(a),e.toast.success("Token 已导入")},onError:a=>{e.toast.error(a instanceof Error?a.message:"导入 Token 失败")}})},"useInstance",0,function(a){let{context:b,ready:d}=(0,p.useRuntimeContext)();return(0,c.useQuery)({queryKey:o.queryKeys.instance(b.dataScopeKey,a),queryFn:()=>h(a),enabled:d&&!!a,staleTime:3e4})},"useInstances",0,function(){let{context:a,ready:b}=(0,p.useRuntimeContext)();return(0,c.useQuery)({queryKey:o.queryKeys.instances(a.dataScopeKey),queryFn:g,enabled:b,staleTime:3e4})},"useSwitchInstance",0,function(){let a=(0,d.useQueryClient)(),{context:c}=(0,p.useRuntimeContext)();return(0,b.useMutation)({mutationFn:a=>m(a),onSuccess:({activeInstance:b})=>{r(a),s(a),e.toast.success("已切换当前项目")},onError:a=>{e.toast.error(a instanceof Error?a.message:"切换项目失败")}})},"useUpdateInstance",0,function(a){let c=(0,d.useQueryClient)();return(0,b.useMutation)({mutationFn:b=>k(a,b),onSuccess:()=>{q(c),c.invalidateQueries({queryKey:["instance"]}),s(c),e.toast.success("项目已更新")},onError:a=>{e.toast.error(a instanceof Error?a.message:"更新项目失败")}})}],47161),a.s(["isImportPayload",0,function(a){return"string"==typeof a.token}],28974)}];
1
+ module.exports=[19446,a=>{"use strict";var b=a.i(34020),c=a.i(71938),d=a.i(71071),e=a.i(71562),f=a.i(44401),g=a.i(80904);let h=g.z.string().trim().regex(/^[a-z0-9-]{1,32}$/,"名称需为 1-32 位小写字母、数字或连字符").refine(a=>"default"!==a,'名称 "default" 为保留字'),i=(a,b=512)=>g.z.string().trim().min(1,`请输入${a}`).max(b),j=(a=512)=>g.z.string().trim().max(a).optional().or(g.z.literal("")),k=g.z.object({name:h,accessKeyId:i("AccessKey ID",128),accessKeySecret:i("AccessKey Secret",512),otsEndpoint:i("OTS Endpoint",256),otsInstanceName:i("OTS 实例名",128),ossEndpoint:j(256),ossBucketName:j(128),region:j(64),activate:g.z.boolean().optional()});g.z.object({accessKeyId:j(128),accessKeySecret:j(512),otsEndpoint:j(256),otsInstanceName:j(128),ossEndpoint:j(256),ossBucketName:j(128),region:j(64),activate:g.z.boolean().optional()}).refine(a=>{let b=!!(a.accessKeyId&&a.accessKeyId.length>0);return!!(a.accessKeySecret&&a.accessKeySecret.length>0)===b},{message:"AccessKey ID 与 Secret 必须成对更新,要么同时填写、要么同时留空",path:["accessKeySecret"]});let l=g.z.object({name:h,accessKeyId:j(128),accessKeySecret:j(512),otsEndpoint:i("OTS Endpoint",256),otsInstanceName:i("OTS 实例名",128),ossEndpoint:j(256),ossBucketName:j(128),region:j(64),activate:g.z.boolean().optional()}).refine(a=>{let b=!!(a.accessKeyId&&a.accessKeyId.length>0);return!!(a.accessKeySecret&&a.accessKeySecret.length>0)===b},{message:"AccessKey ID 与 Secret 必须成对更新,要么同时填写、要么同时留空",path:["accessKeySecret"]}),m=g.z.object({token:g.z.string().trim().min(10,"Token 长度不足,无法解析").max(4096),name:h.optional(),activate:g.z.boolean().optional()});var n=a.i(76192),o=a.i(92942),p=a.i(72518),q=a.i(63525),r=a.i(16038),s=a.i(70535);let t=k.extend({otsEndpoint:g.z.string().trim().url("请输入合法的 OTS Endpoint URL"),ossEndpoint:g.z.string().trim().url("请输入合法的 OSS Endpoint URL").optional().or(g.z.literal(""))}),u=m.pick({token:!0}),v=[{value:"cn-beijing",label:"华北 2(北京)"},{value:"cn-hangzhou",label:"华东 1(杭州)"},{value:"cn-shanghai",label:"华东 2(上海)"},{value:"cn-shenzhen",label:"华南 1(深圳)"},{value:"__custom__",label:"其它(自定义)"}];a.s(["ConnectInstanceForm",0,function({mode:a,defaultValues:g,accessKeyIdPlaceholder:h,accessKeySecretPlaceholder:i,onSubmit:j,busy:k,lockName:m,submitLabel:w}){let[x,y]=(0,c.useState)("manual"),z="edit"===a,A=g?.region??"cn-hangzhou",B=(0,c.useMemo)(()=>v.some(a=>a.value===A),[A]),[C,D]=(0,c.useState)(B?A:"__custom__"),E=(0,c.useMemo)(()=>(0,d.zodResolver)(z?l:t),[z]),F=(0,e.useForm)({resolver:E,defaultValues:{name:g?.name??"",accessKeyId:z?"":g?.accessKeyId??"",accessKeySecret:z?"":g?.accessKeySecret??"",otsEndpoint:g?.otsEndpoint??"",otsInstanceName:g?.otsInstanceName??"",ossEndpoint:g?.ossEndpoint??"",ossBucketName:g?.ossBucketName??"",region:A}}),G=(0,e.useForm)({resolver:(0,d.zodResolver)(u),defaultValues:{token:""}});async function H(a){let b=a.ossEndpoint?.trim()||void 0,c=a.ossBucketName?.trim()||void 0;b&&c&&(b=function(a,b){try{let c=new URL(a);if(c.hostname.startsWith(`${b}.`))return c.hostname=c.hostname.slice(b.length+1),c.toString().replace(/\/$/,"")}catch{}return a}(b,c));let d={...a,ossEndpoint:b,ossBucketName:c};await j(d)}async function I(a){let b={token:a.token.trim()};await j(b)}let J="create"===a;return(0,b.jsxs)(r.Tabs,{value:x,onValueChange:a=>y(a),className:"w-full",children:[J&&(0,b.jsxs)(r.TabsList,{className:"grid w-full grid-cols-2",children:[(0,b.jsx)(r.TabsTrigger,{value:"manual",children:"手动填写"}),(0,b.jsx)(r.TabsTrigger,{value:"token",children:"导入 Token"})]}),(0,b.jsx)(r.TabsContent,{value:"manual",className:"mt-4",children:(0,b.jsx)(o.Form,{...F,children:(0,b.jsxs)("form",{onSubmit:F.handleSubmit(H),className:"space-y-4",children:[(0,b.jsx)(o.FormField,{control:F.control,name:"name",render:({field:a})=>(0,b.jsxs)(o.FormItem,{children:[(0,b.jsx)(o.FormLabel,{children:"项目名称"}),(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(p.Input,{...a,placeholder:"prod-main",disabled:m||k,autoComplete:"off"})}),(0,b.jsx)(o.FormDescription,{children:"仅用于本地区分,不会发送到服务端。"}),(0,b.jsx)(o.FormMessage,{})]})}),(0,b.jsx)(o.FormField,{control:F.control,name:"region",render:({field:a})=>(0,b.jsxs)(o.FormItem,{children:[(0,b.jsx)(o.FormLabel,{children:"Region"}),"__custom__"===C?(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(p.Input,{...a,placeholder:"cn-xxx",disabled:k})}),(0,b.jsx)(n.Button,{type:"button",variant:"outline",size:"sm",onClick:()=>{D("cn-hangzhou"),a.onChange("cn-hangzhou")},disabled:k,children:"使用预设"})]}):(0,b.jsxs)(q.Select,{value:C,onValueChange:b=>{D(b),"__custom__"!==b?a.onChange(b):a.onChange("")},disabled:k,children:[(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(q.SelectTrigger,{children:(0,b.jsx)(q.SelectValue,{})})}),(0,b.jsx)(q.SelectContent,{children:v.map(a=>(0,b.jsx)(q.SelectItem,{value:a.value,children:a.label},a.value))})]}),(0,b.jsx)(o.FormMessage,{})]})}),(0,b.jsxs)("div",{className:"grid gap-4 sm:grid-cols-2",children:[(0,b.jsx)(o.FormField,{control:F.control,name:"accessKeyId",render:({field:a})=>(0,b.jsxs)(o.FormItem,{children:[(0,b.jsx)(o.FormLabel,{children:"AccessKey ID"}),(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(p.Input,{...a,autoComplete:"off",disabled:k,placeholder:z&&h?`${h} \xb7 留空表示保留`:void 0})}),z&&(0,b.jsx)(o.FormDescription,{children:"AK 与 SK 必须成对更新,留空则保留现有凭证。"}),(0,b.jsx)(o.FormMessage,{})]})}),(0,b.jsx)(o.FormField,{control:F.control,name:"accessKeySecret",render:({field:a})=>(0,b.jsxs)(o.FormItem,{children:[(0,b.jsx)(o.FormLabel,{children:"AccessKey Secret"}),(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(p.Input,{...a,type:"password",autoComplete:"new-password",disabled:k,placeholder:z&&i?`${i} \xb7 留空表示保留`:void 0})}),(0,b.jsx)(o.FormMessage,{})]})})]}),(0,b.jsxs)("div",{className:"grid gap-4 sm:grid-cols-2",children:[(0,b.jsx)(o.FormField,{control:F.control,name:"otsEndpoint",render:({field:a})=>(0,b.jsxs)(o.FormItem,{children:[(0,b.jsx)(o.FormLabel,{children:"OTS Endpoint"}),(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(p.Input,{...a,placeholder:"https://xxx.cn-hangzhou.ots.aliyuncs.com",disabled:k})}),(0,b.jsx)(o.FormMessage,{})]})}),(0,b.jsx)(o.FormField,{control:F.control,name:"otsInstanceName",render:({field:a})=>(0,b.jsxs)(o.FormItem,{children:[(0,b.jsx)(o.FormLabel,{children:"OTS 实例名"}),(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(p.Input,{...a,disabled:k})}),(0,b.jsx)(o.FormMessage,{})]})})]}),(0,b.jsxs)("div",{className:"flex items-start gap-2 rounded-md border border-[hsl(var(--border))] bg-[hsl(var(--muted)/0.4)] px-3 py-2 text-xs text-[hsl(var(--muted-foreground))]",children:[(0,b.jsx)(f.Info,{className:"mt-0.5 h-3.5 w-3.5 shrink-0 text-[hsl(var(--primary))]"}),(0,b.jsx)("span",{children:"OSS 信息为可选项。若需上传文档到知识库,OSS Endpoint 与 Bucket 必填; 留空则项目只能用于查询与检索,文件上传功能将不可用。"})]}),(0,b.jsxs)("div",{className:"grid gap-4 sm:grid-cols-2",children:[(0,b.jsx)(o.FormField,{control:F.control,name:"ossEndpoint",render:({field:a})=>(0,b.jsxs)(o.FormItem,{children:[(0,b.jsx)(o.FormLabel,{children:"OSS Endpoint(可选)"}),(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(p.Input,{...a,placeholder:"https://oss-cn-hangzhou.aliyuncs.com",disabled:k})}),(0,b.jsx)(o.FormMessage,{})]})}),(0,b.jsx)(o.FormField,{control:F.control,name:"ossBucketName",render:({field:a})=>(0,b.jsxs)(o.FormItem,{children:[(0,b.jsx)(o.FormLabel,{children:"OSS Bucket(可选)"}),(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(p.Input,{...a,disabled:k})}),(0,b.jsx)(o.FormMessage,{})]})})]}),(0,b.jsx)("div",{className:"flex justify-end pt-2",children:(0,b.jsx)(n.Button,{type:"submit",disabled:k,children:k?"提交中...":w??("edit"===a?"保存":"创建项目")})})]})})}),J&&(0,b.jsx)(r.TabsContent,{value:"token",className:"mt-4",children:(0,b.jsx)(o.Form,{...G,children:(0,b.jsxs)("form",{onSubmit:G.handleSubmit(I),className:"space-y-4",children:[(0,b.jsx)(o.FormField,{control:G.control,name:"token",render:({field:a})=>(0,b.jsxs)(o.FormItem,{children:[(0,b.jsx)(o.FormLabel,{children:"项目 Token"}),(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(s.Textarea,{...a,rows:5,placeholder:"粘贴从其他环境导出的项目 Token",disabled:k})}),(0,b.jsx)(o.FormDescription,{children:"Token 中已包含 AK/SK、Endpoint 等全部连接信息。"}),(0,b.jsx)(o.FormMessage,{})]})}),(0,b.jsx)("div",{className:"flex justify-end pt-2",children:(0,b.jsx)(n.Button,{type:"submit",disabled:k,children:k?"导入中...":"导入并连接"})})]})})})]})}],19446)},47161,28974,a=>{"use strict";var b=a.i(33596),c=a.i(83366),d=a.i(77072),e=a.i(63265),f=a.i(53141);async function g(){return(0,f.apiGet)("/api/v1/instances")}async function h(a){return(0,f.apiGet)(`/api/v1/instances/${encodeURIComponent(a)}`)}async function i(a){return(0,f.apiPost)("/api/v1/instances",a)}async function j(a){return(0,f.apiPost)("/api/v1/instances",a)}async function k(a,b){return(0,f.apiPut)(`/api/v1/instances/${encodeURIComponent(a)}`,b)}async function l(a){return(0,f.apiDelete)(`/api/v1/instances/${encodeURIComponent(a)}`)}async function m(a){return(0,f.apiPost)(`/api/v1/instances/${encodeURIComponent(a)}/use`)}async function n(a){return(0,f.apiGet)(`/api/v1/instances/${encodeURIComponent(a)}/token`)}var o=a.i(25377),p=a.i(39096);function q(a){(0,o.invalidateInstanceScopedQueries)(a)}function r(a){(0,o.resetInstanceScopedQueries)(a)}function s(a){a.invalidateQueries({queryKey:o.RUNTIME_CONTEXT_QUERY_KEY})}a.s(["useConnectInstance",0,function(){let a=(0,d.useQueryClient)();return(0,b.useMutation)({mutationFn:a=>i(a),onSuccess:()=>{r(a),s(a),e.toast.success("项目已创建")},onError:a=>{e.toast.error(a instanceof Error?a.message:"创建项目失败")}})},"useDeleteInstance",0,function(){let a=(0,d.useQueryClient)();return(0,b.useMutation)({mutationFn:a=>l(a),onSuccess:()=>{q(a),s(a),e.toast.success("项目已删除")},onError:a=>{e.toast.error(a instanceof Error?a.message:"删除项目失败")}})},"useExportInstanceToken",0,function(){return(0,b.useMutation)({mutationFn:a=>n(a),onError:a=>{e.toast.error(a instanceof Error?a.message:"导出 Token 失败")}})},"useImportInstance",0,function(){let a=(0,d.useQueryClient)();return(0,b.useMutation)({mutationFn:a=>j(a),onSuccess:()=>{r(a),s(a),e.toast.success("Token 已导入")},onError:a=>{e.toast.error(a instanceof Error?a.message:"导入 Token 失败")}})},"useInstance",0,function(a){let{context:b,ready:d}=(0,p.useRuntimeContext)();return(0,c.useQuery)({queryKey:o.queryKeys.instance(b.dataScopeKey,a),queryFn:()=>h(a),enabled:d&&!!a,staleTime:3e4})},"useInstances",0,function(){let{context:a,ready:b}=(0,p.useRuntimeContext)();return(0,c.useQuery)({queryKey:o.queryKeys.instances(a.dataScopeKey),queryFn:g,enabled:b,staleTime:3e4})},"useSwitchInstance",0,function(){let a=(0,d.useQueryClient)(),{context:c}=(0,p.useRuntimeContext)();return(0,b.useMutation)({mutationFn:a=>m(a),onSuccess:({activeInstance:b})=>{r(a),s(a),e.toast.success("已切换当前项目")},onError:a=>{e.toast.error(a instanceof Error?a.message:"切换项目失败")}})},"useUpdateInstance",0,function(a){let c=(0,d.useQueryClient)();return(0,b.useMutation)({mutationFn:b=>k(a,b),onSuccess:()=>{q(c),c.invalidateQueries({queryKey:["instance"]}),s(c),e.toast.success("项目已更新")},onError:a=>{e.toast.error(a instanceof Error?a.message:"更新项目失败")}})}],47161),a.s(["isImportPayload",0,function(a){return"string"==typeof a.token}],28974)}];
2
2
 
3
3
  //# sourceMappingURL=dashboard_src_10dsqx~._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[25538,a=>{"use strict";var b=a.i(34020),c=a.i(12583),d=a.i(623),e=a.i(2482),f=a.i(80470),g=a.i(71562),h=a.i(71071),i=a.i(63265),j=a.i(1927),k=a.i(53520),l=a.i(49707),m=a.i(76192),n=a.i(72518),o=a.i(70535),p=a.i(74024),q=a.i(92942),r=a.i(27692),s=a.i(63525),t=a.i(36965),u=a.i(23331),v=a.i(71938),w=a.i(25825),x=a.i(55295);let y=[{value:"string",label:"String"},{value:"long",label:"Long"},{value:"double",label:"Double"},{value:"boolean",label:"Boolean"},{value:"date",label:"Date"},{value:"string_list",label:"String List"},{value:"long_list",label:"Long List"},{value:"double_list",label:"Double List"},{value:"boolean_list",label:"Boolean List"},{value:"date_list",label:"Date List"}];function z({value:a,onChange:c}){let d=(0,v.useCallback)(()=>{c([...a,{name:"",type:"string"}])},[a,c]),e=(0,v.useCallback)(b=>{c(a.filter((a,c)=>c!==b))},[a,c]),f=(0,v.useCallback)((b,d)=>{c(a.map((a,c)=>c===b?{...a,...d}:a))},[a,c]);return(0,b.jsxs)("div",{className:"space-y-2",children:[a.map((a,c)=>(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(n.Input,{value:a.name,onChange:a=>f(c,{name:a.target.value}),placeholder:"字段名",className:"h-9 flex-1"}),(0,b.jsxs)(s.Select,{value:a.type,onValueChange:a=>f(c,{type:a}),children:[(0,b.jsx)(s.SelectTrigger,{className:"h-9 w-[140px]",children:(0,b.jsx)(s.SelectValue,{})}),(0,b.jsx)(s.SelectContent,{children:y.map(a=>(0,b.jsx)(s.SelectItem,{value:a.value,children:a.label},a.value))})]}),(0,b.jsx)(m.Button,{type:"button",variant:"ghost",size:"icon",onClick:()=>e(c),className:"h-9 w-9 text-muted-foreground hover:text-destructive hover:bg-destructive/10","aria-label":`删除字段 ${a.name||c+1}`,children:(0,b.jsx)(x.Trash2,{size:16})})]},c)),(0,b.jsxs)(m.Button,{type:"button",variant:"ghost",onClick:d,className:"gap-1.5 text-primary hover:bg-primary/10",children:[(0,b.jsx)(w.Plus,{size:16}),"添加字段"]})]})}let A=[1024,768,512,256,128,64],B=[2048,1536,1024,768,512,256,128,64];function C({form:a}){let c=(0,g.useWatch)({control:a.control,name:"embeddingConfiguration.provider"}),d="text-embedding-v3"===(0,g.useWatch)({control:a.control,name:"embeddingConfiguration.model"})?A:B,e=b=>{a.setValue("embeddingConfiguration.model",b),a.setValue("embeddingConfiguration.dimension",1024)};return(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsx)(q.FormField,{control:a.control,name:"embeddingConfiguration.provider",render:({field:c})=>(0,b.jsxs)(q.FormItem,{children:[(0,b.jsx)(q.FormLabel,{children:"提供方"}),(0,b.jsxs)(s.Select,{onValueChange:b=>{c.onChange(b),"bailian"===b?(a.setValue("embeddingConfiguration.model","text-embedding-v4"),a.setValue("embeddingConfiguration.dimension",1024)):a.setValue("embeddingConfiguration.model","")},defaultValue:c.value,children:[(0,b.jsx)(q.FormControl,{children:(0,b.jsx)(s.SelectTrigger,{children:(0,b.jsx)(s.SelectValue,{placeholder:"选择 Embedding 提供方"})})}),(0,b.jsxs)(s.SelectContent,{children:[(0,b.jsx)(s.SelectItem,{value:"bailian",children:"百炼 (Bailian)"}),(0,b.jsx)(s.SelectItem,{value:"custom",children:"自定义 (Custom)"})]})]}),(0,b.jsx)(q.FormMessage,{})]})}),(0,b.jsx)(q.FormField,{control:a.control,name:"embeddingConfiguration.model",render:({field:a})=>(0,b.jsxs)(q.FormItem,{children:[(0,b.jsx)(q.FormLabel,{children:"模型名称"}),(0,b.jsx)(q.FormControl,{children:"bailian"===c?(0,b.jsxs)(s.Select,{onValueChange:e,value:a.value,children:[(0,b.jsx)(s.SelectTrigger,{children:(0,b.jsx)(s.SelectValue,{placeholder:"选择模型"})}),(0,b.jsxs)(s.SelectContent,{children:[(0,b.jsx)(s.SelectItem,{value:"text-embedding-v3",children:"text-embedding-v3"}),(0,b.jsx)(s.SelectItem,{value:"text-embedding-v4",children:"text-embedding-v4"})]})]}):(0,b.jsx)(n.Input,{placeholder:"输入模型名称",...a})}),(0,b.jsx)(q.FormMessage,{})]})}),(0,b.jsx)(q.FormField,{control:a.control,name:"embeddingConfiguration.dimension",render:({field:a})=>(0,b.jsxs)(q.FormItem,{children:[(0,b.jsx)(q.FormLabel,{children:"向量维度"}),(0,b.jsx)(q.FormControl,{children:"bailian"===c?(0,b.jsxs)(s.Select,{onValueChange:b=>a.onChange(Number(b)),value:String(a.value),children:[(0,b.jsx)(s.SelectTrigger,{children:(0,b.jsx)(s.SelectValue,{placeholder:"选择维度"})}),(0,b.jsx)(s.SelectContent,{children:d.map(a=>(0,b.jsx)(s.SelectItem,{value:String(a),children:a.toLocaleString()},a))})]}):(0,b.jsx)(n.Input,{type:"number",placeholder:"例如: 1024",...a,onChange:b=>a.onChange(Number(b.target.value))})}),(0,b.jsx)(q.FormMessage,{})]})}),"custom"===c&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(q.FormField,{control:a.control,name:"embeddingConfiguration.apiKey",render:({field:a})=>(0,b.jsxs)(q.FormItem,{children:[(0,b.jsx)(q.FormLabel,{children:"API Key"}),(0,b.jsx)(q.FormControl,{children:(0,b.jsx)(n.Input,{type:"password",placeholder:"输入 API Key",...a,value:a.value??""})}),(0,b.jsx)(q.FormMessage,{})]})}),(0,b.jsx)(q.FormField,{control:a.control,name:"embeddingConfiguration.url",render:({field:a})=>(0,b.jsxs)(q.FormItem,{children:[(0,b.jsx)(q.FormLabel,{children:"API URL"}),(0,b.jsx)(q.FormControl,{children:(0,b.jsx)(n.Input,{placeholder:"https://your-embedding-service.com/v1/embeddings",...a,value:a.value??""})}),(0,b.jsx)(q.FormMessage,{})]})})]})]})}var D=a.i(69622),E=a.i(28058),F=a.i(33596),G=a.i(77072),H=a.i(69024),I=a.i(25377),J=a.i(17566);function K(){let a,c=(0,f.useRouter)(),d=(a=(0,G.useQueryClient)(),(0,F.useMutation)({mutationFn:a=>(0,H.createKnowledgeBase)(a),onSuccess:()=>{(0,I.invalidateKnowledgeBaseQueries)(a)}})),e=(0,g.useForm)({resolver:(0,h.zodResolver)(J.createKBSchema),defaultValues:{knowledgeBaseName:"",description:"",subspace:!1,tags:[],metadata:[],embeddingConfiguration:{provider:"bailian",model:"text-embedding-v4",dimension:1024},retrievalConfiguration:{searchType:["DENSE_VECTOR","FULL_TEXT"],denseVectorSearchConfiguration:{numberOfResults:20},fullTextSearchConfiguration:{numberOfResults:20},rerankingConfiguration:{type:"WEIGHT",numberOfResults:20,rrfConfiguration:{denseVectorSearchWeight:.5,fullTextSearchWeight:.5,k:60},weightConfiguration:{denseVectorSearchWeight:.7,fullTextSearchWeight:.3},modelConfiguration:{provider:"bailian",model:"gte-rerank-v2"}}}}}),v=e.watch("retrievalConfiguration.rerankingConfiguration.type"),w=a=>"space-y-4 rounded-md border p-4 transition-colors "+(a?"border-[hsl(var(--primary)/0.4)] bg-[hsl(var(--primary)/0.04)]":"border-border bg-transparent");async function x(a){try{let b={...a,retrievalConfiguration:a.retrievalConfiguration?(0,E.buildKnowledgeBaseRetrievalConfiguration)(a.retrievalConfiguration):void 0};await d.mutateAsync(b),i.toast.success("知识库创建成功"),c.push("/knowledge-base")}catch(b){let a=b instanceof Error?b.message:"创建知识库失败";i.toast.error(a)}}return(0,b.jsx)(q.Form,{...e,children:(0,b.jsxs)("form",{onSubmit:e.handleSubmit(x),className:"space-y-8",children:[(0,b.jsxs)("section",{className:"space-y-4",children:[(0,b.jsx)("h3",{className:"text-lg font-semibold",children:"基本信息"}),(0,b.jsx)(q.FormField,{control:e.control,name:"knowledgeBaseName",render:({field:a})=>(0,b.jsxs)(q.FormItem,{children:[(0,b.jsxs)(q.FormLabel,{children:["名称 ",(0,b.jsx)("span",{className:"text-[hsl(var(--destructive))]",children:"*"})]}),(0,b.jsx)(q.FormControl,{children:(0,b.jsx)(n.Input,{placeholder:"my_knowledge_base",...a})}),(0,b.jsx)(q.FormDescription,{children:"以字母开头,仅包含字母、数字和下划线,最长 64 字符"}),(0,b.jsx)(q.FormMessage,{})]})}),(0,b.jsx)(q.FormField,{control:e.control,name:"description",render:({field:a})=>(0,b.jsxs)(q.FormItem,{children:[(0,b.jsx)(q.FormLabel,{children:"描述"}),(0,b.jsx)(q.FormControl,{children:(0,b.jsx)(o.Textarea,{placeholder:"描述这个知识库的用途...",className:"resize-none",rows:3,...a})}),(0,b.jsx)(q.FormMessage,{})]})}),(0,b.jsx)(q.FormField,{control:e.control,name:"tags",render:({field:a})=>(0,b.jsxs)(q.FormItem,{children:[(0,b.jsx)(q.FormLabel,{children:"标签"}),(0,b.jsx)(q.FormControl,{children:(0,b.jsx)(u.TagInput,{value:a.value??[],onChange:a.onChange,placeholder:"输入标签后按回车"})}),(0,b.jsx)(q.FormMessage,{})]})}),(0,b.jsx)(q.FormField,{control:e.control,name:"subspace",render:({field:a})=>(0,b.jsxs)(q.FormItem,{className:"flex flex-row items-center justify-between gap-4 space-y-0 rounded-md border border-border p-3",children:[(0,b.jsxs)("div",{className:"space-y-0.5",children:[(0,b.jsx)(q.FormLabel,{className:"text-sm",children:"启用 Subspace"}),(0,b.jsx)(q.FormDescription,{className:"text-xs",children:"为该知识库开启子空间隔离,不同业务线的数据互不干扰"})]}),(0,b.jsx)(q.FormControl,{children:(0,b.jsx)(p.Switch,{checked:a.value??!1,onCheckedChange:a.onChange})})]})})]}),(0,b.jsxs)("section",{className:"space-y-4",children:[(0,b.jsx)("h3",{className:"text-lg font-semibold",children:"Metadata Schema"}),(0,b.jsx)(q.FormField,{control:e.control,name:"metadata",render:({field:a})=>(0,b.jsxs)(q.FormItem,{children:[(0,b.jsx)(q.FormControl,{children:(0,b.jsx)(z,{value:a.value??[],onChange:a.onChange})}),(0,b.jsx)(q.FormMessage,{})]})})]}),(0,b.jsxs)(r.Collapsible,{children:[(0,b.jsx)(r.CollapsibleTrigger,{asChild:!0,children:(0,b.jsxs)(m.Button,{type:"button",variant:"ghost",className:"flex w-full items-center justify-between p-0 text-lg font-semibold hover:bg-transparent",children:["高级配置",(0,b.jsx)(j.ChevronDown,{className:"h-4 w-4 transition-transform duration-200 [[data-state=open]>&]:rotate-180"})]})}),(0,b.jsxs)(r.CollapsibleContent,{className:"mt-4 space-y-6",children:[(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsx)("h4",{className:"text-base font-medium text-foreground",children:"Embedding 配置"}),(0,b.jsx)(C,{form:e})]}),(0,b.jsx)("hr",{className:"border-border"}),(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsx)("h4",{className:"text-base font-medium text-foreground",children:"检索配置"}),(0,b.jsx)(q.FormField,{control:e.control,name:"retrievalConfiguration.searchType",render:({field:a})=>(0,b.jsxs)(q.FormItem,{children:[(0,b.jsx)(q.FormLabel,{children:"搜索类型"}),(0,b.jsx)(q.FormControl,{children:(0,b.jsxs)(t.ToggleGroup,{type:"multiple",value:a.value??[],onValueChange:b=>{b?.length&&a.onChange(b)},className:"grid w-full grid-cols-2 gap-0 overflow-hidden rounded-lg border border-border bg-[hsl(var(--muted)/0.4)] p-0 sm:max-w-md",children:[(0,b.jsxs)(t.ToggleGroupItem,{value:"DENSE_VECTOR",className:"h-9 gap-1.5",children:[a.value?.includes("DENSE_VECTOR")&&(0,b.jsx)(k.Check,{className:"h-3.5 w-3.5 text-[hsl(var(--primary))]"}),"向量检索"]}),(0,b.jsxs)(t.ToggleGroupItem,{value:"FULL_TEXT",className:"h-9 gap-1.5",children:[a.value?.includes("FULL_TEXT")&&(0,b.jsx)(k.Check,{className:"h-3.5 w-3.5 text-[hsl(var(--primary))]"}),"全文检索"]})]})}),(0,b.jsx)(q.FormMessage,{})]})}),(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsx)("p",{className:"text-sm font-medium text-[hsl(var(--foreground))]",children:"返回数量"}),(0,b.jsx)("p",{className:"text-xs text-[hsl(var(--muted-foreground))]",children:"控制每路召回参与排序的候选数,以及 Rerank 后实际返回的片段数。"})]}),(0,b.jsxs)("div",{className:"grid grid-cols-[repeat(auto-fit,minmax(min(260px,100%),1fr))] gap-3",children:[(0,b.jsx)(D.RetrievalResultCountField,{control:e.control,name:"retrievalConfiguration.denseVectorSearchConfiguration.numberOfResults",label:"向量召回数",description:"向量检索参与后续排序的候选片段数。",max:100,muted:!e.watch("retrievalConfiguration.searchType")?.includes("DENSE_VECTOR")}),(0,b.jsx)(D.RetrievalResultCountField,{control:e.control,name:"retrievalConfiguration.fullTextSearchConfiguration.numberOfResults",label:"全文召回数",description:"全文检索参与后续排序的候选片段数。",max:100,muted:!e.watch("retrievalConfiguration.searchType")?.includes("FULL_TEXT")})]}),(0,b.jsx)(D.RetrievalResultCountField,{control:e.control,name:"retrievalConfiguration.rerankingConfiguration.numberOfResults",label:"重排序返回数",description:"Rerank 后保留并返回的片段数。",max:200})]}),(0,b.jsx)(q.FormField,{control:e.control,name:"retrievalConfiguration.rerankingConfiguration.type",render:({field:a})=>(0,b.jsxs)(q.FormItem,{children:[(0,b.jsx)(q.FormLabel,{children:"默认 Rerank 策略"}),(0,b.jsx)(q.FormControl,{children:(0,b.jsxs)(t.ToggleGroup,{type:"single",value:a.value??"",onValueChange:b=>{b&&a.onChange(b)},className:"grid w-full grid-cols-3 gap-0 overflow-hidden rounded-lg border border-border bg-[hsl(var(--muted)/0.4)] p-0 sm:max-w-md",children:[(0,b.jsx)(t.ToggleGroupItem,{value:"MODEL",className:"h-9",children:"Model"}),(0,b.jsx)(t.ToggleGroupItem,{value:"WEIGHT",className:"h-9",children:"Weight"}),(0,b.jsx)(t.ToggleGroupItem,{value:"RRF",className:"h-9",children:"RRF"})]})}),(0,b.jsx)(q.FormDescription,{className:"text-xs",children:"切换策略会影响检索时的默认行为;下方三套参数都会保存到知识库,方便临时切换"}),(0,b.jsx)(q.FormMessage,{})]})}),(0,b.jsxs)("div",{className:w("RRF"===v),children:[(0,b.jsx)("p",{className:"text-sm font-medium text-muted-foreground",children:"RRF 参数"}),(0,b.jsxs)("div",{className:"grid grid-cols-3 gap-4",children:[(0,b.jsx)(q.FormField,{control:e.control,name:"retrievalConfiguration.rerankingConfiguration.rrfConfiguration.denseVectorSearchWeight",render:({field:a})=>(0,b.jsxs)(q.FormItem,{children:[(0,b.jsx)(q.FormLabel,{children:"向量检索权重"}),(0,b.jsx)(q.FormControl,{children:(0,b.jsx)(n.Input,{type:"number",step:"0.1",placeholder:"0.5",...a,value:a.value??"",onChange:(0,l.handleNumberInput)(a.onChange)})}),(0,b.jsx)(q.FormMessage,{})]})}),(0,b.jsx)(q.FormField,{control:e.control,name:"retrievalConfiguration.rerankingConfiguration.rrfConfiguration.fullTextSearchWeight",render:({field:a})=>(0,b.jsxs)(q.FormItem,{children:[(0,b.jsx)(q.FormLabel,{children:"全文检索权重"}),(0,b.jsx)(q.FormControl,{children:(0,b.jsx)(n.Input,{type:"number",step:"0.1",placeholder:"0.5",...a,value:a.value??"",onChange:(0,l.handleNumberInput)(a.onChange)})}),(0,b.jsx)(q.FormMessage,{})]})}),(0,b.jsx)(q.FormField,{control:e.control,name:"retrievalConfiguration.rerankingConfiguration.rrfConfiguration.k",render:({field:a})=>(0,b.jsxs)(q.FormItem,{children:[(0,b.jsx)(q.FormLabel,{children:"K 值"}),(0,b.jsx)(q.FormControl,{children:(0,b.jsx)(n.Input,{type:"number",placeholder:"60",...a,value:a.value??"",onChange:(0,l.handleNumberInput)(a.onChange)})}),(0,b.jsx)(q.FormMessage,{})]})})]})]}),(0,b.jsxs)("div",{className:w("WEIGHT"===v),children:[(0,b.jsx)("p",{className:"text-sm font-medium text-muted-foreground",children:"Weight 参数"}),(0,b.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,b.jsx)(q.FormField,{control:e.control,name:"retrievalConfiguration.rerankingConfiguration.weightConfiguration.denseVectorSearchWeight",render:({field:a})=>(0,b.jsxs)(q.FormItem,{children:[(0,b.jsx)(q.FormLabel,{children:"向量检索权重"}),(0,b.jsx)(q.FormControl,{children:(0,b.jsx)(n.Input,{type:"number",step:"0.1",min:"0",max:"1",placeholder:"0.5",...a,value:a.value??"",onChange:(0,l.handleNumberInput)(a.onChange)})}),(0,b.jsx)(q.FormDescription,{children:"0 ~ 1 之间"}),(0,b.jsx)(q.FormMessage,{})]})}),(0,b.jsx)(q.FormField,{control:e.control,name:"retrievalConfiguration.rerankingConfiguration.weightConfiguration.fullTextSearchWeight",render:({field:a})=>(0,b.jsxs)(q.FormItem,{children:[(0,b.jsx)(q.FormLabel,{children:"全文检索权重"}),(0,b.jsx)(q.FormControl,{children:(0,b.jsx)(n.Input,{type:"number",step:"0.1",min:"0",max:"1",placeholder:"0.5",...a,value:a.value??"",onChange:(0,l.handleNumberInput)(a.onChange)})}),(0,b.jsx)(q.FormDescription,{children:"0 ~ 1 之间"}),(0,b.jsx)(q.FormMessage,{})]})})]})]}),(0,b.jsxs)("div",{className:w("MODEL"===v),children:[(0,b.jsx)("p",{className:"text-sm font-medium text-muted-foreground",children:"Model 参数"}),(0,b.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,b.jsx)(q.FormField,{control:e.control,name:"retrievalConfiguration.rerankingConfiguration.modelConfiguration.provider",render:({field:a})=>(0,b.jsxs)(q.FormItem,{children:[(0,b.jsx)(q.FormLabel,{children:"提供方"}),(0,b.jsxs)(s.Select,{onValueChange:a.onChange,value:a.value??"",children:[(0,b.jsx)(q.FormControl,{children:(0,b.jsx)(s.SelectTrigger,{children:(0,b.jsx)(s.SelectValue,{placeholder:"选择提供方"})})}),(0,b.jsx)(s.SelectContent,{children:(0,b.jsx)(s.SelectItem,{value:"bailian",children:"百炼 (Bailian)"})})]}),(0,b.jsx)(q.FormMessage,{})]})}),(0,b.jsx)(q.FormField,{control:e.control,name:"retrievalConfiguration.rerankingConfiguration.modelConfiguration.model",render:({field:a})=>{let c=e.watch("retrievalConfiguration.rerankingConfiguration.modelConfiguration.provider");return(0,b.jsxs)(q.FormItem,{children:[(0,b.jsx)(q.FormLabel,{children:"模型名称"}),(0,b.jsx)(q.FormControl,{children:"bailian"===c?(0,b.jsxs)(s.Select,{onValueChange:a.onChange,value:a.value??"",children:[(0,b.jsx)(s.SelectTrigger,{children:(0,b.jsx)(s.SelectValue,{placeholder:"选择模型"})}),(0,b.jsxs)(s.SelectContent,{children:[(0,b.jsx)(s.SelectItem,{value:"gte-rerank-v2",children:"gte-rerank-v2"}),(0,b.jsx)(s.SelectItem,{value:"qwen3-rerank",children:"qwen3-rerank"})]})]}):(0,b.jsx)(n.Input,{placeholder:"输入模型名称",...a,value:a.value??""})}),(0,b.jsx)(q.FormMessage,{})]})}})]})]})]})]})]}),(0,b.jsxs)("div",{className:"flex justify-end gap-3 pt-4 border-t",children:[(0,b.jsx)(m.Button,{type:"button",variant:"outline",onClick:()=>c.back(),children:"取消"}),(0,b.jsx)(m.Button,{type:"submit",disabled:d.isPending,children:d.isPending?"创建中...":"创建知识库"})]})]})})}a.s(["default",0,function(){return(0,b.jsxs)("div",{className:"space-y-6",children:[(0,b.jsxs)("div",{children:[(0,b.jsxs)(c.default,{href:"/knowledge-base",className:"inline-flex items-center gap-1 text-sm text-muted-foreground hover:text-foreground transition-colors mb-4",children:[(0,b.jsx)(d.ArrowLeft,{className:"h-4 w-4"}),"返回知识库列表"]}),(0,b.jsx)(e.PageHeader,{title:"创建知识库"})]}),(0,b.jsx)("div",{className:"max-w-2xl",children:(0,b.jsx)(K,{})})]})}],25538)}];
1
+ module.exports=[25538,a=>{"use strict";var b=a.i(34020),c=a.i(12583),d=a.i(623),e=a.i(2482),f=a.i(71938),g=a.i(80470),h=a.i(71562),i=a.i(71071),j=a.i(63265),k=a.i(1927),l=a.i(53520),m=a.i(49707),n=a.i(76192),o=a.i(72518),p=a.i(70535),q=a.i(74024),r=a.i(92942),s=a.i(27692),t=a.i(63525),u=a.i(36965),v=a.i(23331),w=a.i(25825),x=a.i(55295);let y=[{value:"string",label:"String"},{value:"long",label:"Long"},{value:"double",label:"Double"},{value:"boolean",label:"Boolean"},{value:"date",label:"Date"},{value:"string_list",label:"String List"},{value:"long_list",label:"Long List"},{value:"double_list",label:"Double List"},{value:"boolean_list",label:"Boolean List"},{value:"date_list",label:"Date List"}];function z({value:a,onChange:c}){let d=(0,f.useCallback)(()=>{c([...a,{name:"",type:"string"}])},[a,c]),e=(0,f.useCallback)(b=>{c(a.filter((a,c)=>c!==b))},[a,c]),g=(0,f.useCallback)((b,d)=>{c(a.map((a,c)=>c===b?{...a,...d}:a))},[a,c]);return(0,b.jsxs)("div",{className:"space-y-2",children:[a.map((a,c)=>(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(o.Input,{value:a.name,onChange:a=>g(c,{name:a.target.value}),placeholder:"字段名",className:"h-9 flex-1"}),(0,b.jsxs)(t.Select,{value:a.type,onValueChange:a=>g(c,{type:a}),children:[(0,b.jsx)(t.SelectTrigger,{className:"h-9 w-[140px]",children:(0,b.jsx)(t.SelectValue,{})}),(0,b.jsx)(t.SelectContent,{children:y.map(a=>(0,b.jsx)(t.SelectItem,{value:a.value,children:a.label},a.value))})]}),(0,b.jsx)(n.Button,{type:"button",variant:"ghost",size:"icon",onClick:()=>e(c),className:"h-9 w-9 text-muted-foreground hover:text-destructive hover:bg-destructive/10","aria-label":`删除字段 ${a.name||c+1}`,children:(0,b.jsx)(x.Trash2,{size:16})})]},c)),(0,b.jsxs)(n.Button,{type:"button",variant:"ghost",onClick:d,className:"gap-1.5 text-primary hover:bg-primary/10",children:[(0,b.jsx)(w.Plus,{size:16}),"添加字段"]})]})}let A=[2048,1536,1024,768,512,256,128,64],B={"text-embedding-v3":[1024,768,512,256,128,64],"text-embedding-v4":A,"qwen3-vl-embedding":[2560,2048,1536,1024,768,512,256]};function C({form:a}){let c=(0,h.useWatch)({control:a.control,name:"embeddingConfiguration.provider"}),d=B[(0,h.useWatch)({control:a.control,name:"embeddingConfiguration.model"})??""]??A,e=b=>{a.setValue("embeddingConfiguration.model",b),a.setValue("embeddingConfiguration.dimension",1024)};return(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsx)(r.FormField,{control:a.control,name:"embeddingConfiguration.provider",render:({field:c})=>(0,b.jsxs)(r.FormItem,{children:[(0,b.jsx)(r.FormLabel,{children:"提供方"}),(0,b.jsxs)(t.Select,{onValueChange:b=>{c.onChange(b),"bailian"===b?(a.setValue("embeddingConfiguration.model","text-embedding-v4"),a.setValue("embeddingConfiguration.dimension",1024)):a.setValue("embeddingConfiguration.model","")},defaultValue:c.value,children:[(0,b.jsx)(r.FormControl,{children:(0,b.jsx)(t.SelectTrigger,{children:(0,b.jsx)(t.SelectValue,{placeholder:"选择 Embedding 提供方"})})}),(0,b.jsxs)(t.SelectContent,{children:[(0,b.jsx)(t.SelectItem,{value:"bailian",children:"百炼 (Bailian)"}),(0,b.jsx)(t.SelectItem,{value:"custom",children:"自定义 (Custom)"})]})]}),(0,b.jsx)(r.FormMessage,{})]})}),(0,b.jsx)(r.FormField,{control:a.control,name:"embeddingConfiguration.model",render:({field:a})=>(0,b.jsxs)(r.FormItem,{children:[(0,b.jsx)(r.FormLabel,{children:"模型名称"}),(0,b.jsx)(r.FormControl,{children:"bailian"===c?(0,b.jsxs)(t.Select,{onValueChange:e,value:a.value,children:[(0,b.jsx)(t.SelectTrigger,{children:(0,b.jsx)(t.SelectValue,{placeholder:"选择模型"})}),(0,b.jsxs)(t.SelectContent,{children:[(0,b.jsx)(t.SelectItem,{value:"text-embedding-v3",children:"text-embedding-v3"}),(0,b.jsx)(t.SelectItem,{value:"text-embedding-v4",children:"text-embedding-v4"}),(0,b.jsx)(t.SelectItem,{value:"qwen3-vl-embedding",children:"qwen3-vl-embedding (多模态)"})]})]}):(0,b.jsx)(o.Input,{placeholder:"输入模型名称",...a})}),(0,b.jsx)(r.FormMessage,{})]})}),(0,b.jsx)(r.FormField,{control:a.control,name:"embeddingConfiguration.dimension",render:({field:a})=>(0,b.jsxs)(r.FormItem,{children:[(0,b.jsx)(r.FormLabel,{children:"向量维度"}),(0,b.jsx)(r.FormControl,{children:"bailian"===c?(0,b.jsxs)(t.Select,{onValueChange:b=>a.onChange(Number(b)),value:String(a.value),children:[(0,b.jsx)(t.SelectTrigger,{children:(0,b.jsx)(t.SelectValue,{placeholder:"选择维度"})}),(0,b.jsx)(t.SelectContent,{children:d.map(a=>(0,b.jsx)(t.SelectItem,{value:String(a),children:a.toLocaleString()},a))})]}):(0,b.jsx)(o.Input,{type:"number",placeholder:"例如: 1024",...a,onChange:b=>a.onChange(Number(b.target.value))})}),(0,b.jsx)(r.FormMessage,{})]})}),"custom"===c&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(r.FormField,{control:a.control,name:"embeddingConfiguration.apiKey",render:({field:a})=>(0,b.jsxs)(r.FormItem,{children:[(0,b.jsx)(r.FormLabel,{children:"API Key"}),(0,b.jsx)(r.FormControl,{children:(0,b.jsx)(o.Input,{type:"password",placeholder:"输入 API Key",...a,value:a.value??""})}),(0,b.jsx)(r.FormMessage,{})]})}),(0,b.jsx)(r.FormField,{control:a.control,name:"embeddingConfiguration.url",render:({field:a})=>(0,b.jsxs)(r.FormItem,{children:[(0,b.jsx)(r.FormLabel,{children:"API URL"}),(0,b.jsx)(r.FormControl,{children:(0,b.jsx)(o.Input,{placeholder:"https://your-embedding-service.com/v1/embeddings",...a,value:a.value??""})}),(0,b.jsx)(r.FormMessage,{})]})})]})]})}var D=a.i(69622),E=a.i(28058),F=a.i(33596),G=a.i(77072),H=a.i(69024),I=a.i(25377),J=a.i(17566);function K(){let a,c=(0,g.useRouter)(),d=(a=(0,G.useQueryClient)(),(0,F.useMutation)({mutationFn:a=>(0,H.createKnowledgeBase)(a),onSuccess:()=>{(0,I.invalidateKnowledgeBaseQueries)(a)}})),e=(0,h.useForm)({resolver:(0,i.zodResolver)(J.createKBSchema),defaultValues:{knowledgeBaseName:"",description:"",subspace:!1,multimodal:!0,ingestConfiguration:{enableTableFormulaCaption:!1},tags:[],metadata:[],embeddingConfiguration:{provider:"bailian",model:"qwen3-vl-embedding",dimension:1024},retrievalConfiguration:{searchType:["DENSE_VECTOR","FULL_TEXT"],denseVectorSearchConfiguration:{numberOfResults:20},fullTextSearchConfiguration:{numberOfResults:20},rerankingConfiguration:{type:"WEIGHT",numberOfResults:20,rrfConfiguration:{denseVectorSearchWeight:.5,fullTextSearchWeight:.5,k:60},weightConfiguration:{denseVectorSearchWeight:.7,fullTextSearchWeight:.3},modelConfiguration:{provider:"bailian",model:"qwen3-vl-rerank"}}}}}),w=(0,f.useRef)(!0),x=e.watch("multimodal");(0,f.useEffect)(()=>{x!==w.current&&(w.current=x??!1,x?(e.setValue("embeddingConfiguration.model","qwen3-vl-embedding"),e.setValue("embeddingConfiguration.dimension",1024),e.setValue("retrievalConfiguration.rerankingConfiguration.modelConfiguration.model","qwen3-vl-rerank")):(e.setValue("embeddingConfiguration.model","text-embedding-v4"),e.setValue("embeddingConfiguration.dimension",1024),e.setValue("retrievalConfiguration.rerankingConfiguration.modelConfiguration.model","gte-rerank-v2")))},[x,e]);let y=e.watch("retrievalConfiguration.rerankingConfiguration.type"),A=a=>"space-y-4 rounded-md border p-4 transition-colors "+(a?"border-[hsl(var(--primary)/0.4)] bg-[hsl(var(--primary)/0.04)]":"border-border bg-transparent");async function B(a){try{let b={...a,multimodal:a.multimodal||void 0,ingestConfiguration:a.ingestConfiguration?.enableTableFormulaCaption?a.ingestConfiguration:void 0,retrievalConfiguration:a.retrievalConfiguration?(0,E.buildKnowledgeBaseRetrievalConfiguration)(a.retrievalConfiguration):void 0};await d.mutateAsync(b),j.toast.success("知识库创建成功"),c.push("/knowledge-base")}catch(b){let a=b instanceof Error?b.message:"创建知识库失败";j.toast.error(a)}}return(0,b.jsx)(r.Form,{...e,children:(0,b.jsxs)("form",{onSubmit:e.handleSubmit(B),className:"space-y-8",children:[(0,b.jsxs)("section",{className:"space-y-4",children:[(0,b.jsx)("h3",{className:"text-lg font-semibold",children:"基本信息"}),(0,b.jsx)(r.FormField,{control:e.control,name:"knowledgeBaseName",render:({field:a})=>(0,b.jsxs)(r.FormItem,{children:[(0,b.jsxs)(r.FormLabel,{children:["名称 ",(0,b.jsx)("span",{className:"text-[hsl(var(--destructive))]",children:"*"})]}),(0,b.jsx)(r.FormControl,{children:(0,b.jsx)(o.Input,{placeholder:"my_knowledge_base",...a})}),(0,b.jsx)(r.FormDescription,{children:"以字母开头,仅包含字母、数字和下划线,最长 64 字符"}),(0,b.jsx)(r.FormMessage,{})]})}),(0,b.jsx)(r.FormField,{control:e.control,name:"description",render:({field:a})=>(0,b.jsxs)(r.FormItem,{children:[(0,b.jsx)(r.FormLabel,{children:"描述"}),(0,b.jsx)(r.FormControl,{children:(0,b.jsx)(p.Textarea,{placeholder:"描述这个知识库的用途...",className:"resize-none",rows:3,...a})}),(0,b.jsx)(r.FormMessage,{})]})}),(0,b.jsx)(r.FormField,{control:e.control,name:"tags",render:({field:a})=>(0,b.jsxs)(r.FormItem,{children:[(0,b.jsx)(r.FormLabel,{children:"标签"}),(0,b.jsx)(r.FormControl,{children:(0,b.jsx)(v.TagInput,{value:a.value??[],onChange:a.onChange,placeholder:"输入标签后按回车"})}),(0,b.jsx)(r.FormMessage,{})]})}),(0,b.jsx)(r.FormField,{control:e.control,name:"subspace",render:({field:a})=>(0,b.jsxs)(r.FormItem,{className:"flex flex-row items-center justify-between gap-4 space-y-0 rounded-md border border-border p-3",children:[(0,b.jsxs)("div",{className:"space-y-0.5",children:[(0,b.jsx)(r.FormLabel,{className:"text-sm",children:"启用 Subspace"}),(0,b.jsx)(r.FormDescription,{className:"text-xs",children:"为该知识库开启子空间隔离,不同业务线的数据互不干扰"})]}),(0,b.jsx)(r.FormControl,{children:(0,b.jsx)(q.Switch,{checked:a.value??!1,onCheckedChange:a.onChange})})]})}),(0,b.jsx)(r.FormField,{control:e.control,name:"multimodal",render:({field:a})=>(0,b.jsxs)(r.FormItem,{className:"flex flex-row items-center justify-between gap-4 space-y-0 rounded-md border border-border p-3",children:[(0,b.jsxs)("div",{className:"space-y-0.5",children:[(0,b.jsx)(r.FormLabel,{className:"text-sm",children:"多模态"}),(0,b.jsx)(r.FormDescription,{className:"text-xs",children:"支持图片文档入库、图片检索和多模态 embedding/rerank。创建后不可修改。"})]}),(0,b.jsx)(r.FormControl,{children:(0,b.jsx)(q.Switch,{checked:a.value??!1,onCheckedChange:a.onChange})})]})}),(0,b.jsx)(r.FormField,{control:e.control,name:"ingestConfiguration.enableTableFormulaCaption",render:({field:a})=>(0,b.jsxs)(r.FormItem,{className:"flex flex-row items-center justify-between gap-4 space-y-0 rounded-md border border-border p-3",children:[(0,b.jsxs)("div",{className:"space-y-0.5",children:[(0,b.jsx)(r.FormLabel,{className:"text-sm",children:"表格公式Caption"}),(0,b.jsx)(r.FormDescription,{className:"text-xs",children:"为表格、公式类 Chunk 生成语义描述。需要平台开启对应 setting。普通 KB 和多模态 KB 均可使用。"})]}),(0,b.jsx)(r.FormControl,{children:(0,b.jsx)(q.Switch,{checked:a.value??!1,onCheckedChange:a.onChange})})]})})]}),(0,b.jsxs)("section",{className:"space-y-4",children:[(0,b.jsx)("h3",{className:"text-lg font-semibold",children:"Metadata Schema"}),(0,b.jsx)(r.FormField,{control:e.control,name:"metadata",render:({field:a})=>(0,b.jsxs)(r.FormItem,{children:[(0,b.jsx)(r.FormControl,{children:(0,b.jsx)(z,{value:a.value??[],onChange:a.onChange})}),(0,b.jsx)(r.FormMessage,{})]})})]}),(0,b.jsxs)(s.Collapsible,{children:[(0,b.jsx)(s.CollapsibleTrigger,{asChild:!0,children:(0,b.jsxs)(n.Button,{type:"button",variant:"ghost",className:"flex w-full items-center justify-between p-0 text-lg font-semibold hover:bg-transparent",children:["高级配置",(0,b.jsx)(k.ChevronDown,{className:"h-4 w-4 transition-transform duration-200 [[data-state=open]>&]:rotate-180"})]})}),(0,b.jsxs)(s.CollapsibleContent,{className:"mt-4 space-y-6",children:[(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsx)("h4",{className:"text-base font-medium text-foreground",children:"Embedding 配置"}),e.watch("multimodal")&&(0,b.jsxs)("p",{className:"text-xs text-muted-foreground bg-muted/30 rounded-md p-2",children:["已自动将 embedding 模型切换为 ",(0,b.jsx)("code",{children:"qwen3-vl-embedding"}),",rerank 模型切换为 ",(0,b.jsx)("code",{children:"qwen3-vl-rerank"}),"。您仍可手动调整下方参数。"]}),(0,b.jsx)(C,{form:e})]}),(0,b.jsx)("hr",{className:"border-border"}),(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsx)("h4",{className:"text-base font-medium text-foreground",children:"检索配置"}),(0,b.jsx)(r.FormField,{control:e.control,name:"retrievalConfiguration.searchType",render:({field:a})=>(0,b.jsxs)(r.FormItem,{children:[(0,b.jsx)(r.FormLabel,{children:"搜索类型"}),(0,b.jsx)(r.FormControl,{children:(0,b.jsxs)(u.ToggleGroup,{type:"multiple",value:a.value??[],onValueChange:b=>{b?.length&&a.onChange(b)},className:"grid w-full grid-cols-2 gap-0 overflow-hidden rounded-lg border border-border bg-[hsl(var(--muted)/0.4)] p-0 sm:max-w-md",children:[(0,b.jsxs)(u.ToggleGroupItem,{value:"DENSE_VECTOR",className:"h-9 gap-1.5",children:[a.value?.includes("DENSE_VECTOR")&&(0,b.jsx)(l.Check,{className:"h-3.5 w-3.5 text-[hsl(var(--primary))]"}),"向量检索"]}),(0,b.jsxs)(u.ToggleGroupItem,{value:"FULL_TEXT",className:"h-9 gap-1.5",children:[a.value?.includes("FULL_TEXT")&&(0,b.jsx)(l.Check,{className:"h-3.5 w-3.5 text-[hsl(var(--primary))]"}),"全文检索"]})]})}),(0,b.jsx)(r.FormMessage,{})]})}),(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsx)("p",{className:"text-sm font-medium text-[hsl(var(--foreground))]",children:"返回数量"}),(0,b.jsx)("p",{className:"text-xs text-[hsl(var(--muted-foreground))]",children:"控制每路召回参与排序的候选数,以及 Rerank 后实际返回的片段数。"})]}),(0,b.jsxs)("div",{className:"grid grid-cols-[repeat(auto-fit,minmax(min(260px,100%),1fr))] gap-3",children:[(0,b.jsx)(D.RetrievalResultCountField,{control:e.control,name:"retrievalConfiguration.denseVectorSearchConfiguration.numberOfResults",label:"向量召回数",description:"向量检索参与后续排序的候选片段数。",max:100,muted:!e.watch("retrievalConfiguration.searchType")?.includes("DENSE_VECTOR")}),(0,b.jsx)(D.RetrievalResultCountField,{control:e.control,name:"retrievalConfiguration.fullTextSearchConfiguration.numberOfResults",label:"全文召回数",description:"全文检索参与后续排序的候选片段数。",max:100,muted:!e.watch("retrievalConfiguration.searchType")?.includes("FULL_TEXT")})]}),(0,b.jsx)(D.RetrievalResultCountField,{control:e.control,name:"retrievalConfiguration.rerankingConfiguration.numberOfResults",label:"重排序返回数",description:"Rerank 后保留并返回的片段数。",max:200})]}),(0,b.jsx)(r.FormField,{control:e.control,name:"retrievalConfiguration.rerankingConfiguration.type",render:({field:a})=>(0,b.jsxs)(r.FormItem,{children:[(0,b.jsx)(r.FormLabel,{children:"默认 Rerank 策略"}),(0,b.jsx)(r.FormControl,{children:(0,b.jsxs)(u.ToggleGroup,{type:"single",value:a.value??"",onValueChange:b=>{b&&a.onChange(b)},className:"grid w-full grid-cols-3 gap-0 overflow-hidden rounded-lg border border-border bg-[hsl(var(--muted)/0.4)] p-0 sm:max-w-md",children:[(0,b.jsx)(u.ToggleGroupItem,{value:"MODEL",className:"h-9",children:"Model"}),(0,b.jsx)(u.ToggleGroupItem,{value:"WEIGHT",className:"h-9",children:"Weight"}),(0,b.jsx)(u.ToggleGroupItem,{value:"RRF",className:"h-9",children:"RRF"})]})}),(0,b.jsx)(r.FormDescription,{className:"text-xs",children:"切换策略会影响检索时的默认行为;下方三套参数都会保存到知识库,方便临时切换"}),(0,b.jsx)(r.FormMessage,{})]})}),(0,b.jsxs)("div",{className:A("MODEL"===y),children:[(0,b.jsx)("p",{className:"text-sm font-medium text-muted-foreground",children:"Model 参数"}),(0,b.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,b.jsx)(r.FormField,{control:e.control,name:"retrievalConfiguration.rerankingConfiguration.modelConfiguration.provider",render:({field:a})=>(0,b.jsxs)(r.FormItem,{children:[(0,b.jsx)(r.FormLabel,{children:"提供方"}),(0,b.jsxs)(t.Select,{onValueChange:a.onChange,value:a.value??"",children:[(0,b.jsx)(r.FormControl,{children:(0,b.jsx)(t.SelectTrigger,{children:(0,b.jsx)(t.SelectValue,{placeholder:"选择提供方"})})}),(0,b.jsx)(t.SelectContent,{children:(0,b.jsx)(t.SelectItem,{value:"bailian",children:"百炼 (Bailian)"})})]}),(0,b.jsx)(r.FormMessage,{})]})}),(0,b.jsx)(r.FormField,{control:e.control,name:"retrievalConfiguration.rerankingConfiguration.modelConfiguration.model",render:({field:a})=>{let c=e.watch("retrievalConfiguration.rerankingConfiguration.modelConfiguration.provider");return(0,b.jsxs)(r.FormItem,{children:[(0,b.jsx)(r.FormLabel,{children:"模型名称"}),(0,b.jsx)(r.FormControl,{children:"bailian"===c?(0,b.jsxs)(t.Select,{onValueChange:a.onChange,value:a.value??"",children:[(0,b.jsx)(t.SelectTrigger,{children:(0,b.jsx)(t.SelectValue,{placeholder:"选择模型"})}),(0,b.jsxs)(t.SelectContent,{children:[(0,b.jsx)(t.SelectItem,{value:"gte-rerank-v2",children:"gte-rerank-v2"}),(0,b.jsx)(t.SelectItem,{value:"qwen3-rerank",children:"qwen3-rerank"}),(0,b.jsx)(t.SelectItem,{value:"qwen3-vl-rerank",children:"qwen3-vl-rerank (多模态)"})]})]}):(0,b.jsx)(o.Input,{placeholder:"输入模型名称",...a,value:a.value??""})}),(0,b.jsx)(r.FormMessage,{})]})}})]})]}),(0,b.jsxs)("div",{className:A("WEIGHT"===y),children:[(0,b.jsx)("p",{className:"text-sm font-medium text-muted-foreground",children:"Weight 参数"}),(0,b.jsxs)("div",{className:"grid grid-cols-2 gap-4",children:[(0,b.jsx)(r.FormField,{control:e.control,name:"retrievalConfiguration.rerankingConfiguration.weightConfiguration.denseVectorSearchWeight",render:({field:a})=>(0,b.jsxs)(r.FormItem,{children:[(0,b.jsx)(r.FormLabel,{children:"向量检索权重"}),(0,b.jsx)(r.FormControl,{children:(0,b.jsx)(o.Input,{type:"number",step:"0.1",min:"0",max:"1",placeholder:"0.5",...a,value:a.value??"",onChange:(0,m.handleNumberInput)(a.onChange)})}),(0,b.jsx)(r.FormDescription,{children:"0 ~ 1 之间"}),(0,b.jsx)(r.FormMessage,{})]})}),(0,b.jsx)(r.FormField,{control:e.control,name:"retrievalConfiguration.rerankingConfiguration.weightConfiguration.fullTextSearchWeight",render:({field:a})=>(0,b.jsxs)(r.FormItem,{children:[(0,b.jsx)(r.FormLabel,{children:"全文检索权重"}),(0,b.jsx)(r.FormControl,{children:(0,b.jsx)(o.Input,{type:"number",step:"0.1",min:"0",max:"1",placeholder:"0.5",...a,value:a.value??"",onChange:(0,m.handleNumberInput)(a.onChange)})}),(0,b.jsx)(r.FormDescription,{children:"0 ~ 1 之间"}),(0,b.jsx)(r.FormMessage,{})]})})]})]}),(0,b.jsxs)("div",{className:A("RRF"===y),children:[(0,b.jsx)("p",{className:"text-sm font-medium text-muted-foreground",children:"RRF 参数"}),(0,b.jsxs)("div",{className:"grid grid-cols-3 gap-4",children:[(0,b.jsx)(r.FormField,{control:e.control,name:"retrievalConfiguration.rerankingConfiguration.rrfConfiguration.denseVectorSearchWeight",render:({field:a})=>(0,b.jsxs)(r.FormItem,{children:[(0,b.jsx)(r.FormLabel,{children:"向量检索权重"}),(0,b.jsx)(r.FormControl,{children:(0,b.jsx)(o.Input,{type:"number",step:"0.1",placeholder:"0.5",...a,value:a.value??"",onChange:(0,m.handleNumberInput)(a.onChange)})}),(0,b.jsx)(r.FormMessage,{})]})}),(0,b.jsx)(r.FormField,{control:e.control,name:"retrievalConfiguration.rerankingConfiguration.rrfConfiguration.fullTextSearchWeight",render:({field:a})=>(0,b.jsxs)(r.FormItem,{children:[(0,b.jsx)(r.FormLabel,{children:"全文检索权重"}),(0,b.jsx)(r.FormControl,{children:(0,b.jsx)(o.Input,{type:"number",step:"0.1",placeholder:"0.5",...a,value:a.value??"",onChange:(0,m.handleNumberInput)(a.onChange)})}),(0,b.jsx)(r.FormMessage,{})]})}),(0,b.jsx)(r.FormField,{control:e.control,name:"retrievalConfiguration.rerankingConfiguration.rrfConfiguration.k",render:({field:a})=>(0,b.jsxs)(r.FormItem,{children:[(0,b.jsx)(r.FormLabel,{children:"K 值"}),(0,b.jsx)(r.FormControl,{children:(0,b.jsx)(o.Input,{type:"number",placeholder:"60",...a,value:a.value??"",onChange:(0,m.handleNumberInput)(a.onChange)})}),(0,b.jsx)(r.FormMessage,{})]})})]})]})]})]})]}),(0,b.jsxs)("div",{className:"flex justify-end gap-3 pt-4 border-t",children:[(0,b.jsx)(n.Button,{type:"button",variant:"outline",onClick:()=>c.back(),children:"取消"}),(0,b.jsx)(n.Button,{type:"submit",disabled:d.isPending,children:d.isPending?"创建中...":"创建知识库"})]})]})})}a.s(["default",0,function(){return(0,b.jsxs)("div",{className:"space-y-6",children:[(0,b.jsxs)("div",{children:[(0,b.jsxs)(c.default,{href:"/knowledge-base",className:"inline-flex items-center gap-1 text-sm text-muted-foreground hover:text-foreground transition-colors mb-4",children:[(0,b.jsx)(d.ArrowLeft,{className:"h-4 w-4"}),"返回知识库列表"]}),(0,b.jsx)(e.PageHeader,{title:"创建知识库"})]}),(0,b.jsx)("div",{className:"max-w-2xl",children:(0,b.jsx)(K,{})})]})}],25538)}];
2
2
 
3
3
  //# sourceMappingURL=dashboard_src_app_%28dashboard%29_knowledge-base_create_page_tsx_0916~g-._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[25909,a=>{"use strict";var b=a.i(34020),c=a.i(71938),d=a.i(80470),e=a.i(65173),f=a.i(7704),g=a.i(25825),h=a.i(9380),i=a.i(63265),j=a.i(76192),k=a.i(72518),l=a.i(2482),m=a.i(24567),n=a.i(87617),o=a.i(4395),p=a.i(34841),q=a.i(83366),r=a.i(21347),s=a.i(25377),t=a.i(39096),u=a.i(33596),v=a.i(77072),w=a.i(8264),x=a.i(43836),y=a.i(62491),z=a.i(70535);function A({memoryStoreName:a,scope:d,open:e,onOpenChange:f,onSuccess:g}){let h,k=(h=(0,v.useQueryClient)(),(0,u.useMutation)({mutationFn:a=>(0,r.addMemory)(a),onSuccess:()=>{(0,s.invalidateMemoryQueries)(h)}})),[l,m]=(0,c.useState)(""),[n,o]=(0,c.useState)("");async function p(){try{let b=(0,w.parseJsonObject)(n);if(!l.trim())return void i.toast.error("请输入要提取为记忆的文本");await k.mutateAsync({memoryStoreName:a,scope:d,text:l.trim(),metadata:b,sync:!1}),i.toast.success("记忆正在加工中,请稍后查看"),m(""),o(""),f(!1),g?.()}catch(a){i.toast.error(a instanceof Error?a.message:"添加记忆失败")}}return(0,b.jsx)(x.Dialog,{open:e,onOpenChange:f,children:(0,b.jsxs)(x.DialogContent,{className:"max-w-xl",children:[(0,b.jsx)(x.DialogHeader,{children:(0,b.jsx)(x.DialogTitle,{children:"添加记忆"})}),(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(y.Label,{children:"Text"}),(0,b.jsx)(z.Textarea,{value:l,onChange:a=>m(a.target.value),placeholder:"输入要提取为记忆的文本...",rows:5})]}),(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(y.Label,{children:"Metadata JSON(可选)"}),(0,b.jsx)(z.Textarea,{value:n,onChange:a=>o(a.target.value),placeholder:'{"source":"dashboard"}',rows:3})]}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:"记忆将通过异步方式处理,添加后可在记忆单元中查看结果。"})]}),(0,b.jsxs)(x.DialogFooter,{children:[(0,b.jsx)(j.Button,{variant:"outline",onClick:()=>f(!1),children:"取消"}),(0,b.jsx)(j.Button,{onClick:p,disabled:k.isPending,children:k.isPending?"提交中...":"提交"})]})]})})}var B=a.i(87491),C=a.i(12537),D=a.i(55295),E=a.i(23301);let F="当前记忆单元缺少精确 scope 或 ID,无法操作";function G(a){return a.id??a.memoryId??"-"}let H=(0,c.memo)(function({unit:a,actionDisabled:d,onView:e,onEdit:f,onDelete:g}){let h=(0,c.useCallback)(()=>e?.(a),[e,a]),i=(0,c.useCallback)(()=>f?.(a),[f,a]),k=(0,c.useCallback)(()=>g?.(a),[g,a]);return(0,b.jsxs)(E.TableRow,{children:[(0,b.jsx)(E.TableCell,{className:"font-mono text-xs",children:G(a)}),(0,b.jsxs)(E.TableCell,{className:"max-w-[420px]",children:[(0,b.jsx)("p",{className:"line-clamp-2 text-sm",children:a.text}),a.search_text&&(0,b.jsx)("p",{className:"mt-1 line-clamp-1 text-xs text-muted-foreground",children:a.search_text})]}),(0,b.jsx)(E.TableCell,{children:a.unit_type??"-"}),(0,b.jsx)(E.TableCell,{children:a.version??"-"}),(0,b.jsx)(E.TableCell,{className:"text-xs text-muted-foreground",children:function(a){if(!a)return"-";try{let b=new Date(a);if(isNaN(b.getTime()))return String(a);return b.toLocaleString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"})}catch{return String(a)}}(a.created_at??a.createdAt)}),(0,b.jsx)(E.TableCell,{children:(0,b.jsxs)("div",{className:"flex justify-end gap-1",children:[(0,b.jsx)(j.Button,{type:"button",variant:"ghost",size:"icon",disabled:d,onClick:h,title:d?F:"查看详情",children:(0,b.jsx)(B.Eye,{className:"h-4 w-4"})}),(0,b.jsx)(j.Button,{type:"button",variant:"ghost",size:"icon",disabled:d,onClick:i,title:d?F:"编辑",children:(0,b.jsx)(C.Pencil,{className:"h-4 w-4"})}),(0,b.jsx)(j.Button,{type:"button",variant:"ghost",size:"icon",disabled:d,onClick:k,title:d?F:"删除",children:(0,b.jsx)(D.Trash2,{className:"h-4 w-4 text-[hsl(var(--destructive))]"})})]})})]})});function I({units:a,readOnly:c=!1,isActionDisabled:d,onView:e,onEdit:f,onDelete:g}){return a.length?(0,b.jsx)("div",{className:"rounded-lg border",children:(0,b.jsxs)(E.Table,{children:[(0,b.jsx)(E.TableHeader,{children:(0,b.jsxs)(E.TableRow,{children:[(0,b.jsx)(E.TableHead,{className:"w-[180px]",children:"ID"}),(0,b.jsx)(E.TableHead,{children:"内容"}),(0,b.jsx)(E.TableHead,{className:"w-[140px]",children:"类型"}),(0,b.jsx)(E.TableHead,{className:"w-[120px]",children:"版本"}),(0,b.jsx)(E.TableHead,{className:"w-[170px]",children:"创建时间"}),(0,b.jsx)(E.TableHead,{className:"w-[160px] text-right",children:"操作"})]})}),(0,b.jsx)(E.TableBody,{children:a.map((a,h)=>{let i=c||d?.(a)||!1,j=G(a);return(0,b.jsx)(H,{unit:a,actionDisabled:i,onView:e,onEdit:f,onDelete:g},"-"===j?h:j)})})]})}):(0,b.jsx)("div",{className:"rounded-lg border border-dashed py-12 text-center text-sm text-muted-foreground",children:"当前 scope 下暂无记忆单元"})}function J({memoryStoreName:a,scope:c,unit:d,open:e,onOpenChange:f}){let g,h=(g=(0,v.useQueryClient)(),(0,u.useMutation)({mutationFn:a=>(0,r.updateMemoryUnit)(a),onSuccess:()=>{(0,s.invalidateMemoryQueries)(g)}})),k=d?G(d):"empty";async function l(b){if(b.preventDefault(),!d)return;let e=G(d);if("-"===e)return void i.toast.error("记忆单元缺少 ID,无法编辑");let g=new FormData(b.currentTarget),j=String(g.get("text")??"").trim(),k=String(g.get("metadata")??"");try{await h.mutateAsync({memoryStoreName:a,memoryId:e,scope:c,text:j||void 0,metadata:(0,w.parseJsonObject)(k)}),i.toast.success("记忆单元已更新"),f(!1)}catch(a){i.toast.error(a instanceof Error?a.message:"更新记忆失败")}}return(0,b.jsx)(x.Dialog,{open:e,onOpenChange:f,children:(0,b.jsxs)(x.DialogContent,{className:"max-w-2xl",children:[(0,b.jsx)(x.DialogHeader,{children:(0,b.jsx)(x.DialogTitle,{children:"编辑记忆单元"})}),(0,b.jsxs)("form",{onSubmit:l,className:"space-y-4",children:[(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(y.Label,{children:"Text"}),(0,b.jsx)(z.Textarea,{name:"text",defaultValue:d?.text??"",rows:5})]}),(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(y.Label,{children:"Metadata JSON"}),(0,b.jsx)(z.Textarea,{name:"metadata",defaultValue:d?.metadata?JSON.stringify(d.metadata,null,2):"",rows:4})]}),(0,b.jsxs)(x.DialogFooter,{children:[(0,b.jsx)(j.Button,{type:"button",variant:"outline",onClick:()=>f(!1),children:"取消"}),(0,b.jsx)(j.Button,{type:"submit",disabled:h.isPending,children:h.isPending?"保存中...":"保存"})]})]},k)]})})}function K({label:a,children:c}){return(0,b.jsxs)("div",{className:"grid grid-cols-[120px_1fr] items-start gap-3",children:[(0,b.jsx)("span",{className:"pt-0.5 text-xs font-medium text-muted-foreground",children:a}),(0,b.jsx)("div",{className:"min-w-0 text-sm text-foreground",children:c})]})}function L({memoryStoreName:a,scope:c,unit:d,open:e,onOpenChange:f}){let g=d?G(d):void 0,h=function(a,b,c,d=!0){let{context:e,ready:f}=(0,t.useRuntimeContext)();return(0,q.useQuery)({queryKey:s.queryKeys.memoryUnit(e.dataScopeKey,a,b,c),queryFn:()=>(0,r.getMemoryUnit)({memoryStoreName:a,memoryId:b,scope:c}),enabled:f&&d&&!!a&&!!c?.appId&&!!b&&"-"!==b})}(a,g,c,e),i=h.data?.memory;return(0,b.jsx)(x.Dialog,{open:e,onOpenChange:f,children:(0,b.jsxs)(x.DialogContent,{className:"max-w-2xl",children:[(0,b.jsx)(x.DialogHeader,{children:(0,b.jsx)(x.DialogTitle,{children:"记忆单元详情"})}),d?"-"===g?(0,b.jsx)("p",{className:"text-sm text-destructive",children:"记忆单元缺少 ID,无法加载详情。"}):h.isLoading?(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(o.Skeleton,{className:"h-4 w-16"}),(0,b.jsx)(o.Skeleton,{className:"h-5 w-64"})]}),(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(o.Skeleton,{className:"h-4 w-16"}),(0,b.jsx)(o.Skeleton,{className:"h-24 w-full"})]}),(0,b.jsxs)("div",{className:"grid gap-3 sm:grid-cols-2",children:[(0,b.jsx)(o.Skeleton,{className:"h-14 w-full"}),(0,b.jsx)(o.Skeleton,{className:"h-14 w-full"}),(0,b.jsx)(o.Skeleton,{className:"h-14 w-full"}),(0,b.jsx)(o.Skeleton,{className:"h-14 w-full"})]})]}):h.isError?(0,b.jsx)("p",{className:"rounded-md bg-destructive/5 p-3 text-sm text-destructive",children:h.error instanceof Error?h.error.message:"加载记忆单元详情失败"}):i?(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsx)(K,{label:"ID",children:(0,b.jsx)("span",{className:"break-all font-mono text-xs",children:i.id??i.memoryId??"-"})}),(0,b.jsx)(K,{label:"内容",children:(0,b.jsx)("p",{className:"whitespace-pre-wrap rounded-md bg-muted p-3 text-sm",children:i.text})}),i.search_text&&(0,b.jsx)(K,{label:"Search Text",children:(0,b.jsx)("p",{className:"whitespace-pre-wrap rounded-md bg-muted p-3 text-sm",children:i.search_text})}),(0,b.jsx)(K,{label:"Scope",children:(0,w.formatScope)(i.scope)}),(0,b.jsx)(K,{label:"类型",children:i.unit_type??"-"}),(0,b.jsx)(K,{label:"Salience",children:i.salience??"-"}),(0,b.jsx)(K,{label:"版本",children:i.version??"-"}),i.metadata&&(0,b.jsx)(K,{label:"Metadata",children:(0,b.jsx)("pre",{className:"overflow-auto rounded-md bg-muted p-3 text-xs",children:JSON.stringify(i.metadata,null,2)})})]}):(0,b.jsx)("p",{className:"text-sm text-muted-foreground",children:"未找到记忆单元详情。"}):null]})})}var M=a.i(53141);a.s(["default",0,function(){let a,x=(0,d.useParams)(),y=(0,d.useSearchParams)(),z=decodeURIComponent(x.store),B=(0,c.useMemo)(()=>(0,w.buildMemoryScope)(y),[y.toString()]),C=(0,w.hasWildcardScope)(B),D=(0,c.useMemo)(()=>`${B.appId}|${B.tenantId??""}|${B.agentId??""}|${B.runId??""}`,[B.appId,B.tenantId,B.agentId,B.runId]),[E,F]=(0,c.useState)({scopeKey:D,tokenStack:[]}),[H]=(0,c.useState)(20),[K,N]=(0,c.useState)(""),[O,P]=(0,c.useState)(null),[Q,R]=(0,c.useState)(!1),[S,T]=(0,c.useState)({scopeKey:D,open:!1}),[U,V]=(0,c.useState)({scopeKey:D,unit:null}),[W,X]=(0,c.useState)({scopeKey:D,unit:null}),[Y,Z]=(0,c.useState)({scopeKey:D,unit:null}),$=E.scopeKey===D?E.tokenStack:[],_=E.scopeKey===D?E.currentToken:void 0,aa=S.scopeKey===D&&S.open,ab=U.scopeKey===D?U.unit:null,ac=W.scopeKey===D?W.unit:null,ad=Y.scopeKey===D?Y.unit:null,ae=function(a,b,c,d=20){let{context:e,ready:f}=(0,t.useRuntimeContext)();return(0,q.useQuery)({queryKey:s.queryKeys.memoryUnits(e.dataScopeKey,a,b,c,d),queryFn:()=>(0,r.listMemoryUnits)(a,b,{nextToken:c,limit:d}),enabled:f&&!!a&&!!b?.appId,staleTime:3e4})}(z,B.appId?B:null,_,H),af=(a=(0,v.useQueryClient)(),(0,u.useMutation)({mutationFn:a=>(0,r.deleteMemoryUnit)(a),onSuccess:()=>{(0,s.invalidateMemoryQueries)(a)}})),ag=ae.data?.items??[];function ah(a,b){return a.scope?.appId?a.scope:b}function ai(a,b){let c=G(a),d=ah(a,b);return!!d.appId&&!(0,w.hasWildcardScope)(d)&&"-"!==c}let aj=ab?ah(ab,B):B,ak=ac?ah(ac,B):B,al=ad?ah(ad,B):B;async function am(){if(!ad)return;let a=G(ad);if("-"===a)return void i.toast.error("记忆单元缺少 ID,无法删除");if(!ai(ad,B))return void i.toast.error("当前记忆单元缺少精确 scope,无法删除");try{await af.mutateAsync({memoryStoreName:z,memoryId:a,scope:al}),i.toast.success("记忆单元已删除"),Z({scopeKey:D,unit:null}),ae.refetch()}catch(a){i.toast.error(a instanceof Error?a.message:"删除记忆单元失败")}}async function an(){if(!K.trim())return void i.toast.error("请输入 Memory ID");if(!B.appId)return void i.toast.error("请先设置精确的 Scope");R(!0);try{let a=await (0,M.apiGet)(`/api/v1/memory/stores/${encodeURIComponent(z)}/units/${encodeURIComponent(K.trim())}?${new URLSearchParams({appId:B.appId,...B.tenantId?{tenantId:B.tenantId}:{},...B.agentId?{agentId:B.agentId}:{},...B.runId?{runId:B.runId}:{}}).toString()}`);P(a.memory),i.toast.success("找到记忆单元")}catch(a){P(null),i.toast.error(a instanceof Error?a.message:"未找到该记忆单元")}finally{R(!1)}}function ao(){N(""),P(null)}let ap=O?[O]:ag,aq=O?1:ae.data?.totalCount??0;return ae.isLoading&&!O?(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsx)(o.Skeleton,{className:"h-8 w-48"}),(0,b.jsx)(o.Skeleton,{className:"h-10 w-full"}),(0,b.jsx)(o.Skeleton,{className:"h-64 w-full"})]}):(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsx)(l.PageHeader,{title:`长期记忆 (${aq})`,children:(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(n.RefreshButton,{loading:ae.isRefetching,onClick:()=>{ae.refetch(),ao()}}),C?(0,b.jsx)(p.TooltipProvider,{delayDuration:200,children:(0,b.jsxs)(p.Tooltip,{children:[(0,b.jsx)(p.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("span",{tabIndex:0,className:"inline-flex",children:(0,b.jsxs)(j.Button,{disabled:!0,className:"pointer-events-none",children:[(0,b.jsx)(g.Plus,{className:"mr-2 h-4 w-4"}),"添加记忆"]})})}),(0,b.jsx)(p.TooltipContent,{side:"bottom",className:"max-w-[240px]",children:(0,b.jsx)("p",{children:"请在上方 Scope 栏中为所有字段设置具体值后再添加记忆"})})]})}):(0,b.jsxs)(j.Button,{onClick:()=>T({scopeKey:D,open:!0}),children:[(0,b.jsx)(g.Plus,{className:"mr-2 h-4 w-4"}),"添加记忆"]})]})}),(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsx)(k.Input,{value:K,onChange:a=>N(a.target.value),placeholder:"输入 Memory ID 查询单条记忆...",className:"max-w-md",onKeyDown:a=>"Enter"===a.key&&an()}),(0,b.jsxs)(j.Button,{onClick:an,disabled:Q||!B.appId,children:[(0,b.jsx)(h.Search,{className:"mr-1.5 h-4 w-4"}),Q?"查询中...":"查询"]}),O&&(0,b.jsx)(j.Button,{variant:"outline",onClick:ao,children:"返回列表"})]}),C&&!O&&(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:"当前 scope 含通配符,仅支持只读查询,无法执行新增、查看详情、编辑或删除。"}),(0,b.jsx)(I,{units:ap,readOnly:!!O,isActionDisabled:a=>!!O||!ai(a,B),onView:a=>V({scopeKey:D,unit:a}),onEdit:a=>X({scopeKey:D,unit:a}),onDelete:a=>Z({scopeKey:D,unit:a})}),!O&&(0,b.jsxs)("div",{className:"flex items-center justify-between py-2",children:[(0,b.jsxs)("span",{className:"text-sm text-muted-foreground",children:["第 ",$.length+1," 页"]}),(0,b.jsxs)("div",{className:"flex items-center gap-4",children:[(0,b.jsxs)(j.Button,{variant:"outline",size:"sm",onClick:()=>{F(a=>{let b=[...a.scopeKey===D?a.tokenStack:[]],c=b.pop();return{scopeKey:D,tokenStack:b,currentToken:c||void 0}})},disabled:0===$.length,children:[(0,b.jsx)(e.ChevronLeft,{className:"mr-1 h-4 w-4"}),"上一页"]}),(0,b.jsxs)(j.Button,{variant:"outline",size:"sm",onClick:()=>{ae.data?.nextToken&&F(a=>({scopeKey:D,tokenStack:[...a.scopeKey===D?a.tokenStack:[],_??""],currentToken:ae.data.nextToken}))},disabled:!ae.data?.nextToken,children:["下一页",(0,b.jsx)(f.ChevronRight,{className:"ml-1 h-4 w-4"})]})]})]}),(0,b.jsx)(A,{memoryStoreName:z,scope:B,open:aa,onOpenChange:a=>T({scopeKey:D,open:a}),onSuccess:()=>{ae.refetch(),ao()}}),(0,b.jsx)(L,{memoryStoreName:z,scope:aj,unit:ab,open:!!ab&&ai(ab,B),onOpenChange:a=>{a||V({scopeKey:D,unit:null})}}),(0,b.jsx)(J,{memoryStoreName:z,scope:ak,unit:ac,open:!!ac&&ai(ac,B),onOpenChange:a=>{a||X({scopeKey:D,unit:null})}}),(0,b.jsx)(m.ConfirmDialog,{open:!!ad&&ai(ad,B),onOpenChange:a=>{a||Z({scopeKey:D,unit:null})},title:"删除记忆单元",description:`确定要删除记忆单元 "${ad?G(ad):""}" 吗?此操作不可撤销。`,variant:"danger",onConfirm:am})]})}],25909)}];
1
+ module.exports=[25909,a=>{"use strict";var b=a.i(34020),c=a.i(71938),d=a.i(80470),e=a.i(65173),f=a.i(7704),g=a.i(25825),h=a.i(9380),i=a.i(63265),j=a.i(76192),k=a.i(72518),l=a.i(2482),m=a.i(24567),n=a.i(87617),o=a.i(4395),p=a.i(34841),q=a.i(83366),r=a.i(21347),s=a.i(25377),t=a.i(39096),u=a.i(33596),v=a.i(77072),w=a.i(8264),x=a.i(43836),y=a.i(62491),z=a.i(70535);function A({memoryStoreName:a,scope:d,open:e,onOpenChange:f,onSuccess:g}){let h,k=(h=(0,v.useQueryClient)(),(0,u.useMutation)({mutationFn:a=>(0,r.addMemory)(a),onSuccess:()=>{(0,s.invalidateMemoryQueries)(h)}})),[l,m]=(0,c.useState)(""),[n,o]=(0,c.useState)("");async function p(){try{let b=(0,w.parseJsonObject)(n);if(!l.trim())return void i.toast.error("请输入要提取为记忆的文本");await k.mutateAsync({memoryStoreName:a,scope:d,text:l.trim(),metadata:b,sync:!1}),i.toast.success("记忆正在加工中,请稍后查看"),m(""),o(""),f(!1),g?.()}catch(a){i.toast.error(a instanceof Error?a.message:"添加记忆失败")}}return(0,b.jsx)(x.Dialog,{open:e,onOpenChange:f,children:(0,b.jsxs)(x.DialogContent,{className:"max-w-xl",children:[(0,b.jsx)(x.DialogHeader,{children:(0,b.jsx)(x.DialogTitle,{children:"添加记忆"})}),(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(y.Label,{children:"记忆文本"}),(0,b.jsx)(z.Textarea,{value:l,onChange:a=>m(a.target.value),placeholder:"输入要提取为记忆的文本...",rows:5})]}),(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(y.Label,{children:"元数据(JSON,可选)"}),(0,b.jsx)(z.Textarea,{value:n,onChange:a=>o(a.target.value),placeholder:'{"source":"dashboard"}',rows:3})]}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:"记忆将通过异步方式处理,添加后可在记忆单元中查看结果。"})]}),(0,b.jsxs)(x.DialogFooter,{children:[(0,b.jsx)(j.Button,{variant:"outline",onClick:()=>f(!1),children:"取消"}),(0,b.jsx)(j.Button,{onClick:p,disabled:k.isPending,children:k.isPending?"提交中...":"提交"})]})]})})}var B=a.i(87491),C=a.i(12537),D=a.i(55295),E=a.i(23301);let F="当前记忆单元缺少精确范围或 ID,无法操作";function G(a){return a.id??a.memoryId??"-"}let H=(0,c.memo)(function({unit:a,actionDisabled:d,onView:e,onEdit:f,onDelete:g}){let h=(0,c.useCallback)(()=>e?.(a),[e,a]),i=(0,c.useCallback)(()=>f?.(a),[f,a]),k=(0,c.useCallback)(()=>g?.(a),[g,a]);return(0,b.jsxs)(E.TableRow,{children:[(0,b.jsx)(E.TableCell,{className:"font-mono text-xs",children:G(a)}),(0,b.jsxs)(E.TableCell,{className:"max-w-[420px]",children:[(0,b.jsx)("p",{className:"line-clamp-2 text-sm",children:a.text}),a.search_text&&(0,b.jsx)("p",{className:"mt-1 line-clamp-1 text-xs text-muted-foreground",children:a.search_text})]}),(0,b.jsx)(E.TableCell,{children:a.unit_type??"-"}),(0,b.jsx)(E.TableCell,{children:a.version??"-"}),(0,b.jsx)(E.TableCell,{className:"text-xs text-muted-foreground",children:function(a){if(!a)return"-";try{let b=new Date(a);if(isNaN(b.getTime()))return String(a);return b.toLocaleString("zh-CN",{year:"numeric",month:"2-digit",day:"2-digit",hour:"2-digit",minute:"2-digit"})}catch{return String(a)}}(a.created_at??a.createdAt)}),(0,b.jsx)(E.TableCell,{children:(0,b.jsxs)("div",{className:"flex justify-end gap-1",children:[(0,b.jsx)(j.Button,{type:"button",variant:"ghost",size:"icon",disabled:d,onClick:h,title:d?F:"查看详情",children:(0,b.jsx)(B.Eye,{className:"h-4 w-4"})}),(0,b.jsx)(j.Button,{type:"button",variant:"ghost",size:"icon",disabled:d,onClick:i,title:d?F:"编辑",children:(0,b.jsx)(C.Pencil,{className:"h-4 w-4"})}),(0,b.jsx)(j.Button,{type:"button",variant:"ghost",size:"icon",disabled:d,onClick:k,title:d?F:"删除",children:(0,b.jsx)(D.Trash2,{className:"h-4 w-4 text-[hsl(var(--destructive))]"})})]})})]})});function I({units:a,readOnly:c=!1,isActionDisabled:d,onView:e,onEdit:f,onDelete:g}){return a.length?(0,b.jsx)("div",{className:"rounded-lg border",children:(0,b.jsxs)(E.Table,{children:[(0,b.jsx)(E.TableHeader,{children:(0,b.jsxs)(E.TableRow,{children:[(0,b.jsx)(E.TableHead,{className:"w-[180px]",children:"ID"}),(0,b.jsx)(E.TableHead,{children:"内容"}),(0,b.jsx)(E.TableHead,{className:"w-[140px]",children:"类型"}),(0,b.jsx)(E.TableHead,{className:"w-[120px]",children:"版本"}),(0,b.jsx)(E.TableHead,{className:"w-[170px]",children:"创建时间"}),(0,b.jsx)(E.TableHead,{className:"w-[160px] text-right",children:"操作"})]})}),(0,b.jsx)(E.TableBody,{children:a.map((a,h)=>{let i=c||d?.(a)||!1,j=G(a);return(0,b.jsx)(H,{unit:a,actionDisabled:i,onView:e,onEdit:f,onDelete:g},"-"===j?h:j)})})]})}):(0,b.jsx)("div",{className:"rounded-lg border border-dashed py-12 text-center text-sm text-muted-foreground",children:"当前范围下暂无记忆单元"})}function J({memoryStoreName:a,scope:c,unit:d,open:e,onOpenChange:f}){let g,h=(g=(0,v.useQueryClient)(),(0,u.useMutation)({mutationFn:a=>(0,r.updateMemoryUnit)(a),onSuccess:()=>{(0,s.invalidateMemoryQueries)(g)}})),k=d?G(d):"empty";async function l(b){if(b.preventDefault(),!d)return;let e=G(d);if("-"===e)return void i.toast.error("记忆单元缺少 ID,无法编辑");let g=new FormData(b.currentTarget),j=String(g.get("text")??"").trim(),k=String(g.get("metadata")??"");try{await h.mutateAsync({memoryStoreName:a,memoryId:e,scope:c,text:j||void 0,metadata:(0,w.parseJsonObject)(k)}),i.toast.success("记忆单元已更新"),f(!1)}catch(a){i.toast.error(a instanceof Error?a.message:"更新记忆失败")}}return(0,b.jsx)(x.Dialog,{open:e,onOpenChange:f,children:(0,b.jsxs)(x.DialogContent,{className:"max-w-2xl",children:[(0,b.jsx)(x.DialogHeader,{children:(0,b.jsx)(x.DialogTitle,{children:"编辑记忆单元"})}),(0,b.jsxs)("form",{onSubmit:l,className:"space-y-4",children:[(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(y.Label,{children:"记忆文本"}),(0,b.jsx)(z.Textarea,{name:"text",defaultValue:d?.text??"",rows:5})]}),(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(y.Label,{children:"元数据(JSON)"}),(0,b.jsx)(z.Textarea,{name:"metadata",defaultValue:d?.metadata?JSON.stringify(d.metadata,null,2):"",rows:4})]}),(0,b.jsxs)(x.DialogFooter,{children:[(0,b.jsx)(j.Button,{type:"button",variant:"outline",onClick:()=>f(!1),children:"取消"}),(0,b.jsx)(j.Button,{type:"submit",disabled:h.isPending,children:h.isPending?"保存中...":"保存"})]})]},k)]})})}function K({label:a,children:c}){return(0,b.jsxs)("div",{className:"grid grid-cols-[120px_1fr] items-start gap-3",children:[(0,b.jsx)("span",{className:"pt-0.5 text-xs font-medium text-muted-foreground",children:a}),(0,b.jsx)("div",{className:"min-w-0 text-sm text-foreground",children:c})]})}function L({memoryStoreName:a,scope:c,unit:d,open:e,onOpenChange:f}){let g=d?G(d):void 0,h=function(a,b,c,d=!0){let{context:e,ready:f}=(0,t.useRuntimeContext)();return(0,q.useQuery)({queryKey:s.queryKeys.memoryUnit(e.dataScopeKey,a,b,c),queryFn:()=>(0,r.getMemoryUnit)({memoryStoreName:a,memoryId:b,scope:c}),enabled:f&&d&&!!a&&!!c?.appId&&!!b&&"-"!==b})}(a,g,c,e),i=h.data?.memory;return(0,b.jsx)(x.Dialog,{open:e,onOpenChange:f,children:(0,b.jsxs)(x.DialogContent,{className:"max-w-2xl",children:[(0,b.jsx)(x.DialogHeader,{children:(0,b.jsx)(x.DialogTitle,{children:"记忆单元详情"})}),d?"-"===g?(0,b.jsx)("p",{className:"text-sm text-destructive",children:"记忆单元缺少 ID,无法加载详情。"}):h.isLoading?(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(o.Skeleton,{className:"h-4 w-16"}),(0,b.jsx)(o.Skeleton,{className:"h-5 w-64"})]}),(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(o.Skeleton,{className:"h-4 w-16"}),(0,b.jsx)(o.Skeleton,{className:"h-24 w-full"})]}),(0,b.jsxs)("div",{className:"grid gap-3 sm:grid-cols-2",children:[(0,b.jsx)(o.Skeleton,{className:"h-14 w-full"}),(0,b.jsx)(o.Skeleton,{className:"h-14 w-full"}),(0,b.jsx)(o.Skeleton,{className:"h-14 w-full"}),(0,b.jsx)(o.Skeleton,{className:"h-14 w-full"})]})]}):h.isError?(0,b.jsx)("p",{className:"rounded-md bg-destructive/5 p-3 text-sm text-destructive",children:h.error instanceof Error?h.error.message:"加载记忆单元详情失败"}):i?(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsx)(K,{label:"ID",children:(0,b.jsx)("span",{className:"break-all font-mono text-xs",children:i.id??i.memoryId??"-"})}),(0,b.jsx)(K,{label:"内容",children:(0,b.jsx)("p",{className:"whitespace-pre-wrap rounded-md bg-muted p-3 text-sm",children:i.text})}),i.search_text&&(0,b.jsx)(K,{label:"检索文本",children:(0,b.jsx)("p",{className:"whitespace-pre-wrap rounded-md bg-muted p-3 text-sm",children:i.search_text})}),(0,b.jsx)(K,{label:"范围",children:(0,w.formatScope)(i.scope)}),(0,b.jsx)(K,{label:"类型",children:i.unit_type??"-"}),(0,b.jsx)(K,{label:"重要度",children:i.salience??"-"}),(0,b.jsx)(K,{label:"版本",children:i.version??"-"}),i.metadata&&(0,b.jsx)(K,{label:"元数据",children:(0,b.jsx)("pre",{className:"overflow-auto rounded-md bg-muted p-3 text-xs",children:JSON.stringify(i.metadata,null,2)})})]}):(0,b.jsx)("p",{className:"text-sm text-muted-foreground",children:"未找到记忆单元详情。"}):null]})})}var M=a.i(53141);a.s(["default",0,function(){let a,x=(0,d.useParams)(),y=(0,d.useSearchParams)(),z=decodeURIComponent(x.store),B=y.toString(),C=(0,c.useMemo)(()=>(0,w.buildMemoryScope)(new URLSearchParams(B)),[B]),D=(0,w.hasWildcardScope)(C),E=(0,c.useMemo)(()=>`${C.appId}|${C.tenantId??""}|${C.agentId??""}|${C.runId??""}`,[C.appId,C.tenantId,C.agentId,C.runId]),[F,H]=(0,c.useState)({scopeKey:E,tokenStack:[]}),[K]=(0,c.useState)(20),[N,O]=(0,c.useState)(""),[P,Q]=(0,c.useState)(null),[R,S]=(0,c.useState)(!1),[T,U]=(0,c.useState)({scopeKey:E,open:!1}),[V,W]=(0,c.useState)({scopeKey:E,unit:null}),[X,Y]=(0,c.useState)({scopeKey:E,unit:null}),[Z,$]=(0,c.useState)({scopeKey:E,unit:null}),_=F.scopeKey===E?F.tokenStack:[],aa=F.scopeKey===E?F.currentToken:void 0,ab=T.scopeKey===E&&T.open,ac=V.scopeKey===E?V.unit:null,ad=X.scopeKey===E?X.unit:null,ae=Z.scopeKey===E?Z.unit:null,af=function(a,b,c,d=20){let{context:e,ready:f}=(0,t.useRuntimeContext)();return(0,q.useQuery)({queryKey:s.queryKeys.memoryUnits(e.dataScopeKey,a,b,c,d),queryFn:()=>(0,r.listMemoryUnits)(a,b,{nextToken:c,limit:d}),enabled:f&&!!a&&!!b?.appId,staleTime:3e4})}(z,C.appId?C:null,aa,K),ag=(a=(0,v.useQueryClient)(),(0,u.useMutation)({mutationFn:a=>(0,r.deleteMemoryUnit)(a),onSuccess:()=>{(0,s.invalidateMemoryQueries)(a)}})),ah=af.data?.items??[];function ai(a,b){return a.scope?.appId?a.scope:b}function aj(a,b){let c=G(a),d=ai(a,b);return!!d.appId&&!(0,w.hasWildcardScope)(d)&&"-"!==c}let ak=ac?ai(ac,C):C,al=ad?ai(ad,C):C,am=ae?ai(ae,C):C;async function an(){if(!ae)return;let a=G(ae);if("-"===a)return void i.toast.error("记忆单元缺少 ID,无法删除");if(!aj(ae,C))return void i.toast.error("当前记忆单元缺少精确范围,无法删除");try{await ag.mutateAsync({memoryStoreName:z,memoryId:a,scope:am}),i.toast.success("记忆单元已删除"),$({scopeKey:E,unit:null}),af.refetch()}catch(a){i.toast.error(a instanceof Error?a.message:"删除记忆单元失败")}}async function ao(){if(!N.trim())return void i.toast.error("请输入记忆 ID");if(!C.appId)return void i.toast.error("请先设置精确的范围");S(!0);try{let a=await (0,M.apiGet)(`/api/v1/memory/stores/${encodeURIComponent(z)}/units/${encodeURIComponent(N.trim())}?${new URLSearchParams({appId:C.appId,...C.tenantId?{tenantId:C.tenantId}:{},...C.agentId?{agentId:C.agentId}:{},...C.runId?{runId:C.runId}:{}}).toString()}`);Q(a.memory),i.toast.success("找到记忆单元")}catch(a){Q(null),i.toast.error(a instanceof Error?a.message:"未找到该记忆单元")}finally{S(!1)}}function ap(){O(""),Q(null)}let aq=P?[P]:ah,ar=P?1:af.data?.totalCount??0;return af.isLoading&&!P?(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsx)(o.Skeleton,{className:"h-8 w-48"}),(0,b.jsx)(o.Skeleton,{className:"h-10 w-full"}),(0,b.jsx)(o.Skeleton,{className:"h-64 w-full"})]}):(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsx)(l.PageHeader,{title:`长期记忆 (${ar})`,children:(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(n.RefreshButton,{loading:af.isRefetching,onClick:()=>{af.refetch(),ap()}}),D?(0,b.jsx)(p.TooltipProvider,{delayDuration:200,children:(0,b.jsxs)(p.Tooltip,{children:[(0,b.jsx)(p.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("span",{tabIndex:0,className:"inline-flex",children:(0,b.jsxs)(j.Button,{disabled:!0,className:"pointer-events-none",children:[(0,b.jsx)(g.Plus,{className:"mr-2 h-4 w-4"}),"添加记忆"]})})}),(0,b.jsx)(p.TooltipContent,{side:"bottom",className:"max-w-[240px]",children:(0,b.jsx)("p",{children:"请在上方范围栏中为所有字段设置具体值后再添加记忆"})})]})}):(0,b.jsxs)(j.Button,{onClick:()=>U({scopeKey:E,open:!0}),children:[(0,b.jsx)(g.Plus,{className:"mr-2 h-4 w-4"}),"添加记忆"]})]})}),(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsx)(k.Input,{value:N,onChange:a=>O(a.target.value),placeholder:"输入记忆 ID 查询单条记忆...",className:"max-w-md",onKeyDown:a=>"Enter"===a.key&&ao()}),(0,b.jsxs)(j.Button,{onClick:ao,disabled:R||!C.appId,children:[(0,b.jsx)(h.Search,{className:"mr-1.5 h-4 w-4"}),R?"查询中...":"查询"]}),P&&(0,b.jsx)(j.Button,{variant:"outline",onClick:ap,children:"返回列表"})]}),D&&!P&&(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:"当前范围含通配符,仅支持只读查询,无法执行新增、查看详情、编辑或删除。"}),(0,b.jsx)(I,{units:aq,readOnly:!!P,isActionDisabled:a=>!!P||!aj(a,C),onView:a=>W({scopeKey:E,unit:a}),onEdit:a=>Y({scopeKey:E,unit:a}),onDelete:a=>$({scopeKey:E,unit:a})}),!P&&(0,b.jsxs)("div",{className:"flex items-center justify-between py-2",children:[(0,b.jsxs)("span",{className:"text-sm text-muted-foreground",children:["第 ",_.length+1," 页"]}),(0,b.jsxs)("div",{className:"flex items-center gap-4",children:[(0,b.jsxs)(j.Button,{variant:"outline",size:"sm",onClick:()=>{H(a=>{let b=[...a.scopeKey===E?a.tokenStack:[]],c=b.pop();return{scopeKey:E,tokenStack:b,currentToken:c||void 0}})},disabled:0===_.length,children:[(0,b.jsx)(e.ChevronLeft,{className:"mr-1 h-4 w-4"}),"上一页"]}),(0,b.jsxs)(j.Button,{variant:"outline",size:"sm",onClick:()=>{af.data?.nextToken&&H(a=>({scopeKey:E,tokenStack:[...a.scopeKey===E?a.tokenStack:[],aa??""],currentToken:af.data.nextToken}))},disabled:!af.data?.nextToken,children:["下一页",(0,b.jsx)(f.ChevronRight,{className:"ml-1 h-4 w-4"})]})]})]}),(0,b.jsx)(A,{memoryStoreName:z,scope:C,open:ab,onOpenChange:a=>U({scopeKey:E,open:a}),onSuccess:()=>{af.refetch(),ap()}}),(0,b.jsx)(L,{memoryStoreName:z,scope:ak,unit:ac,open:!!ac&&aj(ac,C),onOpenChange:a=>{a||W({scopeKey:E,unit:null})}}),(0,b.jsx)(J,{memoryStoreName:z,scope:al,unit:ad,open:!!ad&&aj(ad,C),onOpenChange:a=>{a||Y({scopeKey:E,unit:null})}}),(0,b.jsx)(m.ConfirmDialog,{open:!!ae&&aj(ae,C),onOpenChange:a=>{a||$({scopeKey:E,unit:null})},title:"删除记忆单元",description:`确定要删除记忆单元 "${ae?G(ae):""}" 吗?此操作不可撤销。`,variant:"danger",onConfirm:an})]})}],25909)}];
2
2
 
3
3
  //# sourceMappingURL=dashboard_src_app_%28dashboard%29_memory_%5Bstore%5D_units_page_tsx_0.6xnei._.js.map