@tablestore/tablestore-agent-cli 0.2.1 → 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 (342) 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 +5 -5
  9. package/dist/dashboard-runtime/dashboard/.next/prerender-manifest.json +3 -3
  10. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/chat/page/build-manifest.json +2 -2
  11. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
  12. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
  13. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/documents/page/build-manifest.json +2 -2
  14. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/documents/page.js.nft.json +1 -1
  15. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/documents/page_client-reference-manifest.js +1 -1
  16. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/page/build-manifest.json +2 -2
  17. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/page.js.nft.json +1 -1
  18. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/page_client-reference-manifest.js +1 -1
  19. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/qa/page/build-manifest.json +2 -2
  20. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/qa/page.js.nft.json +1 -1
  21. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/qa/page_client-reference-manifest.js +1 -1
  22. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/retrieval/page/build-manifest.json +2 -2
  23. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/retrieval/page.js.nft.json +1 -1
  24. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/retrieval/page_client-reference-manifest.js +1 -1
  25. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/settings/page/build-manifest.json +2 -2
  26. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/settings/page.js.nft.json +1 -1
  27. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/settings/page_client-reference-manifest.js +1 -1
  28. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/create/page/build-manifest.json +2 -2
  29. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/create/page.js.nft.json +1 -1
  30. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/create/page_client-reference-manifest.js +1 -1
  31. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/page/build-manifest.json +2 -2
  32. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/page.js.nft.json +1 -1
  33. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/page_client-reference-manifest.js +1 -1
  34. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/llm-providers/[id]/page/build-manifest.json +2 -2
  35. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/llm-providers/[id]/page.js.nft.json +1 -1
  36. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/llm-providers/[id]/page_client-reference-manifest.js +1 -1
  37. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/llm-providers/new/page/build-manifest.json +2 -2
  38. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/llm-providers/new/page.js.nft.json +1 -1
  39. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/llm-providers/new/page_client-reference-manifest.js +1 -1
  40. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/llm-providers/page/build-manifest.json +2 -2
  41. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/llm-providers/page.js.nft.json +1 -1
  42. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/llm-providers/page_client-reference-manifest.js +1 -1
  43. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/messages/page/build-manifest.json +2 -2
  44. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/messages/page.js.nft.json +1 -1
  45. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/messages/page_client-reference-manifest.js +1 -1
  46. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/page/build-manifest.json +2 -2
  47. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/page.js.nft.json +1 -1
  48. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/page_client-reference-manifest.js +1 -1
  49. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/requests/page/build-manifest.json +2 -2
  50. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/requests/page.js.nft.json +1 -1
  51. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/requests/page_client-reference-manifest.js +1 -1
  52. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/search/page/build-manifest.json +2 -2
  53. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/search/page.js.nft.json +1 -1
  54. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/search/page_client-reference-manifest.js +1 -1
  55. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/settings/page/build-manifest.json +2 -2
  56. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/settings/page.js.nft.json +1 -1
  57. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/settings/page_client-reference-manifest.js +1 -1
  58. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/units/page/build-manifest.json +2 -2
  59. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/units/page.js.nft.json +1 -1
  60. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/units/page_client-reference-manifest.js +1 -1
  61. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/create/page/build-manifest.json +2 -2
  62. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/create/page.js.nft.json +1 -1
  63. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/create/page_client-reference-manifest.js +1 -1
  64. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/page/build-manifest.json +2 -2
  65. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/page.js.nft.json +1 -1
  66. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/page_client-reference-manifest.js +1 -1
  67. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/projects/page/build-manifest.json +2 -2
  68. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/projects/page.js.nft.json +1 -1
  69. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/projects/page_client-reference-manifest.js +1 -1
  70. package/dist/dashboard-runtime/dashboard/.next/server/app/_global-error/page/build-manifest.json +2 -2
  71. package/dist/dashboard-runtime/dashboard/.next/server/app/_global-error.html +1 -1
  72. package/dist/dashboard-runtime/dashboard/.next/server/app/_global-error.rsc +1 -1
  73. package/dist/dashboard-runtime/dashboard/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  74. package/dist/dashboard-runtime/dashboard/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  75. package/dist/dashboard-runtime/dashboard/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  76. package/dist/dashboard-runtime/dashboard/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  77. package/dist/dashboard-runtime/dashboard/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  78. package/dist/dashboard-runtime/dashboard/.next/server/app/_not-found/page/build-manifest.json +2 -2
  79. package/dist/dashboard-runtime/dashboard/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  80. package/dist/dashboard-runtime/dashboard/.next/server/app/_not-found.html +1 -1
  81. package/dist/dashboard-runtime/dashboard/.next/server/app/_not-found.rsc +14 -14
  82. package/dist/dashboard-runtime/dashboard/.next/server/app/_not-found.segments/_full.segment.rsc +14 -14
  83. package/dist/dashboard-runtime/dashboard/.next/server/app/_not-found.segments/_head.segment.rsc +3 -3
  84. package/dist/dashboard-runtime/dashboard/.next/server/app/_not-found.segments/_index.segment.rsc +10 -10
  85. package/dist/dashboard-runtime/dashboard/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +3 -3
  86. package/dist/dashboard-runtime/dashboard/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  87. package/dist/dashboard-runtime/dashboard/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  88. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/auth/status/route.js.nft.json +1 -1
  89. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/auth/token/route.js.nft.json +1 -1
  90. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/instances/[name]/route.js.nft.json +1 -1
  91. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/instances/[name]/token/route.js.nft.json +1 -1
  92. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/instances/[name]/use/route.js.nft.json +1 -1
  93. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/instances/route.js.nft.json +1 -1
  94. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/knowledge-bases/[name]/chunks/route.js.nft.json +1 -1
  95. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/knowledge-bases/[name]/documents/[docId]/chunks/route.js.nft.json +1 -1
  96. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/knowledge-bases/[name]/documents/[docId]/route.js.nft.json +1 -1
  97. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/knowledge-bases/[name]/documents/route.js.nft.json +1 -1
  98. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/knowledge-bases/[name]/documents/upload/route.js.nft.json +1 -1
  99. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/knowledge-bases/[name]/retrieve/route.js.nft.json +1 -1
  100. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/knowledge-bases/[name]/route.js.nft.json +1 -1
  101. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/knowledge-bases/route.js.nft.json +1 -1
  102. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/llm/chat/route.js.nft.json +1 -1
  103. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/llm/providers/[id]/models/route.js.nft.json +1 -1
  104. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/llm/providers/[id]/route.js.nft.json +1 -1
  105. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/llm/providers/[id]/test/route.js.nft.json +1 -1
  106. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/llm/providers/route.js.nft.json +1 -1
  107. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/logs/client/route.js.nft.json +1 -1
  108. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/messages/route.js.nft.json +1 -1
  109. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/requests/route.js.nft.json +1 -1
  110. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/route.js.nft.json +1 -1
  111. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/search/route.js.nft.json +1 -1
  112. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/units/[memoryId]/route.js.nft.json +1 -1
  113. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/units/route.js.nft.json +1 -1
  114. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/route.js.nft.json +1 -1
  115. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/oss/list/route.js.nft.json +1 -1
  116. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/runtime/context/route.js.nft.json +1 -1
  117. package/dist/dashboard-runtime/dashboard/.next/server/app/index.html +1 -1
  118. package/dist/dashboard-runtime/dashboard/.next/server/app/index.rsc +14 -14
  119. package/dist/dashboard-runtime/dashboard/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  120. package/dist/dashboard-runtime/dashboard/.next/server/app/index.segments/_full.segment.rsc +14 -14
  121. package/dist/dashboard-runtime/dashboard/.next/server/app/index.segments/_head.segment.rsc +3 -3
  122. package/dist/dashboard-runtime/dashboard/.next/server/app/index.segments/_index.segment.rsc +10 -10
  123. package/dist/dashboard-runtime/dashboard/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  124. package/dist/dashboard-runtime/dashboard/.next/server/app/onboarding/page/build-manifest.json +2 -2
  125. package/dist/dashboard-runtime/dashboard/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
  126. package/dist/dashboard-runtime/dashboard/.next/server/app/onboarding.html +1 -1
  127. package/dist/dashboard-runtime/dashboard/.next/server/app/onboarding.rsc +17 -17
  128. package/dist/dashboard-runtime/dashboard/.next/server/app/onboarding.segments/_full.segment.rsc +17 -17
  129. package/dist/dashboard-runtime/dashboard/.next/server/app/onboarding.segments/_head.segment.rsc +3 -3
  130. package/dist/dashboard-runtime/dashboard/.next/server/app/onboarding.segments/_index.segment.rsc +10 -10
  131. package/dist/dashboard-runtime/dashboard/.next/server/app/onboarding.segments/_tree.segment.rsc +2 -2
  132. package/dist/dashboard-runtime/dashboard/.next/server/app/onboarding.segments/onboarding/__PAGE__.segment.rsc +4 -4
  133. package/dist/dashboard-runtime/dashboard/.next/server/app/onboarding.segments/onboarding.segment.rsc +4 -4
  134. package/dist/dashboard-runtime/dashboard/.next/server/app/page/build-manifest.json +2 -2
  135. package/dist/dashboard-runtime/dashboard/.next/server/app/page_client-reference-manifest.js +1 -1
  136. package/dist/dashboard-runtime/dashboard/.next/server/chunks/0p91_next_dist_esm_build_templates_app-route_0n~ec7s.js +9 -6
  137. package/dist/dashboard-runtime/dashboard/.next/server/chunks/[root-of-the-server]__02p1x3t._.js +1 -1
  138. package/dist/dashboard-runtime/dashboard/.next/server/chunks/[root-of-the-server]__0fglxiw._.js +1 -1
  139. package/dist/dashboard-runtime/dashboard/.next/server/chunks/[root-of-the-server]__0lvi0g-._.js +2 -2
  140. package/dist/dashboard-runtime/dashboard/.next/server/chunks/[root-of-the-server]__0q8vcw8._.js +1 -1
  141. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/0b1r_app_(dashboard)_knowledge-base_[name]_documents_documents-client_tsx_0g2uxmt._.js +2 -2
  142. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/0e95_src_app_(dashboard)_knowledge-base_[name]_settings_settings-client_tsx_13312zk._.js +1 -1
  143. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/[root-of-the-server]__08faq-z._.js +3 -0
  144. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0c94d.y._.js +3 -0
  145. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0jb9ccl._.js +1 -1
  146. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/{[root-of-the-server]__13ylf4x._.js → [root-of-the-server]__0lgg04c._.js} +2 -2
  147. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/[root-of-the-server]__10rkv6z._.js +1 -1
  148. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_01-2v37._.js +1 -1
  149. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_01ag-vl._.js +3 -0
  150. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_09yzbcp._.js +1 -1
  151. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0atzifq._.js +3 -0
  152. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0f4u0.1._.js +1 -1
  153. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0gbt~hy._.js +1 -1
  154. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0gl7kh7._.js +3 -0
  155. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0j-q~ro._.js +1 -1
  156. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0jghj2_._.js +1 -1
  157. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0jlyg05._.js +3 -0
  158. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0n4gd_6._.js +1 -1
  159. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/{_0l~-9i0._.js → _0tdjkbc._.js} +2 -2
  160. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0tej2s.._.js +1 -1
  161. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_10u~-xc._.js +3 -0
  162. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_12r9c8h._.js +1 -1
  163. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_0.glq39._.js +3 -0
  164. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_00ofp7q._.js +1 -1
  165. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_05.qn9h._.js +3 -0
  166. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_065m1.j._.js +1 -1
  167. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_0xf3ffa._.js +1 -1
  168. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_0y49vhd._.js +1 -1
  169. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_10dsqx~._.js +1 -1
  170. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_app_(dashboard)_knowledge-base_create_page_tsx_0916~g-._.js +1 -1
  171. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_app_(dashboard)_memory_[store]_settings_page_tsx_0y26.xu._.js +1 -1
  172. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_app_(dashboard)_memory_[store]_units_page_tsx_0.6xnei._.js +1 -1
  173. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_components_0ls1exu._.js +1 -1
  174. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_components_0ugdjlb._.js +1 -1
  175. package/dist/dashboard-runtime/dashboard/.next/server/middleware-build-manifest.js +5 -5
  176. package/dist/dashboard-runtime/dashboard/.next/server/pages/404.html +1 -1
  177. package/dist/dashboard-runtime/dashboard/.next/server/pages/500.html +1 -1
  178. package/dist/dashboard-runtime/dashboard/.next/server/server-reference-manifest.js +1 -1
  179. package/dist/dashboard-runtime/dashboard/.next/server/server-reference-manifest.json +1 -1
  180. package/dist/dashboard-runtime/dashboard/.next/static/chunks/00wmf85833643.js +1 -0
  181. package/dist/dashboard-runtime/dashboard/.next/static/chunks/02tj1_rhgobzv.js +1 -0
  182. package/dist/dashboard-runtime/dashboard/.next/static/chunks/{0mea2ylxe.umh.js → 02zf3qddfaw~u.js} +1 -1
  183. package/dist/dashboard-runtime/dashboard/.next/static/chunks/039i70t10axdd.css +1 -0
  184. package/dist/dashboard-runtime/dashboard/.next/static/chunks/04bfame9rk.3d.js +5 -0
  185. package/dist/dashboard-runtime/dashboard/.next/static/chunks/07rwb_uq9qcx4.js +1 -0
  186. package/dist/dashboard-runtime/dashboard/.next/static/chunks/07ygw8215kyvc.js +1 -0
  187. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0b5hr027rat4w.js +138 -0
  188. package/dist/dashboard-runtime/dashboard/.next/static/chunks/{0__g1ogrdh412.js → 0bkm-5yza5~d2.js} +1 -1
  189. package/dist/dashboard-runtime/dashboard/.next/static/chunks/{0lrw.bnws62y9.js → 0d7d.b.v9noym.js} +1 -1
  190. package/dist/dashboard-runtime/dashboard/.next/static/chunks/{0cto67_iw~p9z.js → 0fdofp-3kkc4g.js} +1 -1
  191. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0i8hdbek9j-fu.js +1 -0
  192. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0ioivx4pbmayb.js +1 -0
  193. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0j-v5f_oscvfu.js +1 -0
  194. package/dist/dashboard-runtime/dashboard/.next/static/chunks/{0lp2g_27uyhuz.js → 0je7fmsrz2vok.js} +1 -1
  195. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0jukioxtp1mn3.js +138 -0
  196. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0klidr2i6cd.g.js +1 -0
  197. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0k~bkh1586r2i.js +1 -0
  198. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0nakvv2p1kjnf.js +1 -0
  199. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0t5vdnq4s.2yv.js +1 -0
  200. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0un~rqes29pcr.js +1 -0
  201. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0v.u57bsjppd_.js +1 -0
  202. package/dist/dashboard-runtime/dashboard/.next/static/chunks/{0fagnytrt.3oe.js → 0veza1g0elxa7.js} +1 -1
  203. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0x3w~yxvm1xsq.js +4 -0
  204. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0x5gol39unrgb.js +1 -0
  205. package/dist/dashboard-runtime/dashboard/.next/static/chunks/12s59v_sk0q-z.js +1 -0
  206. package/dist/dashboard-runtime/dashboard/.next/static/chunks/{06uuhz24tvdt..js → 14~eqof4660i3.js} +1 -1
  207. package/dist/dashboard-runtime/dashboard/.next/static/chunks/16y3764x-fh1n.js +1 -0
  208. package/dist/dashboard-runtime/dashboard/.next/static/chunks/17mcnyr~1j7ih.js +1 -0
  209. package/dist/dashboard-runtime/dashboard/.next/static/chunks/{turbopack-0w.hw6u8qra5z.js → turbopack-0~gu0g2v-1f11.js} +1 -1
  210. package/dist/dashboard-runtime/dashboard/src/app/(dashboard)/chat/page.tsx +5 -0
  211. package/dist/dashboard-runtime/dashboard/src/app/(dashboard)/knowledge-base/[name]/documents/documents-client.tsx +4 -1
  212. package/dist/dashboard-runtime/dashboard/src/app/(dashboard)/knowledge-base/[name]/layout-client.tsx +62 -26
  213. package/dist/dashboard-runtime/dashboard/src/app/(dashboard)/memory/[store]/messages/page.tsx +8 -4
  214. package/dist/dashboard-runtime/dashboard/src/app/(dashboard)/memory/[store]/requests/page.tsx +6 -2
  215. package/dist/dashboard-runtime/dashboard/src/app/(dashboard)/memory/[store]/requests/request-detail-dialog.tsx +9 -9
  216. package/dist/dashboard-runtime/dashboard/src/app/(dashboard)/memory/[store]/requests/requests-table.tsx +2 -2
  217. package/dist/dashboard-runtime/dashboard/src/app/(dashboard)/memory/[store]/search/page.tsx +5 -1
  218. package/dist/dashboard-runtime/dashboard/src/app/(dashboard)/memory/[store]/settings/page.tsx +56 -17
  219. package/dist/dashboard-runtime/dashboard/src/app/(dashboard)/memory/[store]/units/page.tsx +11 -7
  220. package/dist/dashboard-runtime/dashboard/src/app/(dashboard)/memory/create/page.tsx +1 -1
  221. package/dist/dashboard-runtime/dashboard/src/app/(dashboard)/memory/page.tsx +1 -1
  222. package/dist/dashboard-runtime/dashboard/src/app/api/v1/knowledge-bases/[name]/documents/[docId]/route.ts +67 -0
  223. package/dist/dashboard-runtime/dashboard/src/app/api/v1/llm/chat/memory-helpers.ts +45 -0
  224. package/dist/dashboard-runtime/dashboard/src/app/api/v1/llm/chat/route.ts +334 -16
  225. package/dist/dashboard-runtime/dashboard/src/app/api/v1/logs/client/route.ts +13 -0
  226. package/dist/dashboard-runtime/dashboard/src/app/api/v1/oss/list/route.ts +1 -0
  227. package/dist/dashboard-runtime/dashboard/src/app/globals.css +23 -0
  228. package/dist/dashboard-runtime/dashboard/src/components/chat/chat-config-context.tsx +116 -19
  229. package/dist/dashboard-runtime/dashboard/src/components/chat/chat-mount-config.tsx +5 -0
  230. package/dist/dashboard-runtime/dashboard/src/components/chat/memory-bind-section.tsx +372 -0
  231. package/dist/dashboard-runtime/dashboard/src/components/chat/mount-retrieval-dialog.tsx +360 -0
  232. package/dist/dashboard-runtime/dashboard/src/components/chat/mount-row.tsx +49 -5
  233. package/dist/dashboard-runtime/dashboard/src/components/chat/unified-retrieval-section.tsx +61 -26
  234. package/dist/dashboard-runtime/dashboard/src/components/documents/doc-chunks-dialog.tsx +72 -20
  235. package/dist/dashboard-runtime/dashboard/src/components/documents/doc-detail-panel.tsx +578 -76
  236. package/dist/dashboard-runtime/dashboard/src/components/documents/doc-upload-dialog.tsx +9 -81
  237. package/dist/dashboard-runtime/dashboard/src/components/documents/oss-browser.tsx +42 -26
  238. package/dist/dashboard-runtime/dashboard/src/components/instance/connect-instance-form.tsx +5 -0
  239. package/dist/dashboard-runtime/dashboard/src/components/knowledge-base/embedding-config-form.tsx +16 -2
  240. package/dist/dashboard-runtime/dashboard/src/components/knowledge-base/kb-card.tsx +37 -24
  241. package/dist/dashboard-runtime/dashboard/src/components/knowledge-base/kb-create-form.tsx +173 -86
  242. package/dist/dashboard-runtime/dashboard/src/components/knowledge-base/kb-settings-form.tsx +319 -280
  243. package/dist/dashboard-runtime/dashboard/src/components/layout/detail-sidebar.tsx +47 -18
  244. package/dist/dashboard-runtime/dashboard/src/components/layout/sidebar-instance-card.tsx +2 -2
  245. package/dist/dashboard-runtime/dashboard/src/components/memory/memory-add-dialog.tsx +2 -2
  246. package/dist/dashboard-runtime/dashboard/src/components/memory/memory-create-form.tsx +84 -56
  247. package/dist/dashboard-runtime/dashboard/src/components/memory/memory-edit-dialog.tsx +2 -2
  248. package/dist/dashboard-runtime/dashboard/src/components/memory/memory-messages-table.tsx +3 -3
  249. package/dist/dashboard-runtime/dashboard/src/components/memory/memory-requests-table.tsx +12 -12
  250. package/dist/dashboard-runtime/dashboard/src/components/memory/memory-scope-bar.tsx +20 -11
  251. package/dist/dashboard-runtime/dashboard/src/components/memory/memory-search-form.tsx +7 -7
  252. package/dist/dashboard-runtime/dashboard/src/components/memory/memory-search-results.tsx +6 -6
  253. package/dist/dashboard-runtime/dashboard/src/components/memory/memory-settings-form.tsx +90 -21
  254. package/dist/dashboard-runtime/dashboard/src/components/memory/memory-store-card.tsx +1 -1
  255. package/dist/dashboard-runtime/dashboard/src/components/memory/memory-store-list.tsx +1 -1
  256. package/dist/dashboard-runtime/dashboard/src/components/memory/memory-unit-detail-panel.tsx +4 -4
  257. package/dist/dashboard-runtime/dashboard/src/components/memory/memory-unit-table.tsx +2 -2
  258. package/dist/dashboard-runtime/dashboard/src/components/qa/qa-message.tsx +216 -5
  259. package/dist/dashboard-runtime/dashboard/src/components/retrieval/retrieval-form.tsx +241 -24
  260. package/dist/dashboard-runtime/dashboard/src/components/retrieval/retrieval-rerank-fields.tsx +1 -0
  261. package/dist/dashboard-runtime/dashboard/src/components/retrieval/retrieval-result-card.tsx +52 -4
  262. package/dist/dashboard-runtime/dashboard/src/components/shared/metadata-field-input.tsx +54 -0
  263. package/dist/dashboard-runtime/dashboard/src/components/shared/status-badge.tsx +10 -5
  264. package/dist/dashboard-runtime/dashboard/src/components/ui/nav-tab-bar.tsx +1 -1
  265. package/dist/dashboard-runtime/dashboard/src/hooks/use-chat-history.ts +60 -5
  266. package/dist/dashboard-runtime/dashboard/src/hooks/use-document.ts +29 -0
  267. package/dist/dashboard-runtime/dashboard/src/hooks/use-oss-list.ts +7 -5
  268. package/dist/dashboard-runtime/dashboard/src/hooks/use-qa-chat.ts +65 -11
  269. package/dist/dashboard-runtime/dashboard/src/hooks/use-update-document.ts +15 -0
  270. package/dist/dashboard-runtime/dashboard/src/lib/api-error-toast.ts +62 -0
  271. package/dist/dashboard-runtime/dashboard/src/lib/constants.ts +8 -0
  272. package/dist/dashboard-runtime/dashboard/src/lib/metadata-form.ts +88 -0
  273. package/dist/dashboard-runtime/dashboard/src/lib/query-keys.ts +14 -0
  274. package/dist/dashboard-runtime/dashboard/src/lib/server/api-helpers.ts +18 -5
  275. package/dist/dashboard-runtime/dashboard/src/lib/server/llm-client.ts +19 -1
  276. package/dist/dashboard-runtime/dashboard/src/lib/server/oss-client.ts +45 -16
  277. package/dist/dashboard-runtime/dashboard/src/schemas/knowledge-base.ts +6 -0
  278. package/dist/dashboard-runtime/dashboard/src/schemas/llm-chat.ts +20 -0
  279. package/dist/dashboard-runtime/dashboard/src/schemas/retrieval.ts +46 -27
  280. package/dist/dashboard-runtime/dashboard/src/services/api-client.ts +31 -2
  281. package/dist/dashboard-runtime/dashboard/src/services/documents.ts +36 -3
  282. package/dist/dashboard-runtime/dashboard/src/types/knowledge-base.ts +10 -0
  283. package/dist/dashboard-runtime/dashboard/src/types/llm-chat.ts +33 -0
  284. package/dist/dashboard-runtime/dashboard/src/types/retrieval.ts +9 -4
  285. package/dist/dashboard-runtime/dashboard/tailwind.config.ts +4 -0
  286. package/dist/dashboard-runtime/dashboard/vitest.config.mjs +5 -2
  287. package/dist/dashboard-runtime/node_modules/@tablestore/tablestore-agent-sdk/dist/kb-client.d.ts +1 -0
  288. package/dist/dashboard-runtime/node_modules/@tablestore/tablestore-agent-sdk/dist/kb-client.d.ts.map +1 -1
  289. package/dist/dashboard-runtime/node_modules/@tablestore/tablestore-agent-sdk/dist/kb-client.js +4 -0
  290. package/dist/dashboard-runtime/node_modules/@tablestore/tablestore-agent-sdk/dist/kb-client.js.map +1 -1
  291. package/dist/dashboard-runtime/node_modules/@tablestore/tablestore-agent-sdk/dist/tsconfig.tsbuildinfo +1 -1
  292. package/dist/dashboard-runtime/node_modules/@tablestore/tablestore-agent-shared/dist/logging.js +1 -1
  293. package/dist/dashboard-runtime/node_modules/@tablestore/tablestore-agent-shared/dist/tsconfig.tsbuildinfo +1 -1
  294. package/dist/dashboard-runtime/node_modules/@tablestore/tablestore-agent-shared/dist/types.d.ts +21 -5
  295. package/dist/dashboard-runtime/node_modules/@tablestore/tablestore-agent-shared/dist/types.d.ts.map +1 -1
  296. package/dist/node_modules/@tablestore/tablestore-agent-sdk/dist/kb-client.d.ts +1 -0
  297. package/dist/node_modules/@tablestore/tablestore-agent-sdk/dist/kb-client.d.ts.map +1 -1
  298. package/dist/node_modules/@tablestore/tablestore-agent-sdk/dist/kb-client.js +4 -0
  299. package/dist/node_modules/@tablestore/tablestore-agent-sdk/dist/kb-client.js.map +1 -1
  300. package/dist/node_modules/@tablestore/tablestore-agent-sdk/dist/tsconfig.tsbuildinfo +1 -1
  301. package/dist/node_modules/@tablestore/tablestore-agent-shared/dist/logging.js +1 -1
  302. package/dist/node_modules/@tablestore/tablestore-agent-shared/dist/tsconfig.tsbuildinfo +1 -1
  303. package/dist/node_modules/@tablestore/tablestore-agent-shared/dist/types.d.ts +21 -5
  304. package/dist/node_modules/@tablestore/tablestore-agent-shared/dist/types.d.ts.map +1 -1
  305. package/dist/utils/read-image-input.d.ts +47 -0
  306. package/dist/utils/read-image-input.d.ts.map +1 -0
  307. package/dist/utils/read-image-input.js +89 -0
  308. package/dist/utils/read-image-input.js.map +1 -0
  309. package/package.json +2 -2
  310. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0aqzu8w._.js +0 -3
  311. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0hozzu6._.js +0 -3
  312. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0kd7szs._.js +0 -3
  313. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0tr8-3u._.js +0 -3
  314. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0xzh5yw._.js +0 -3
  315. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_12~3vfk._.js +0 -3
  316. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_13_lb.o._.js +0 -3
  317. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_0ejgygh._.js +0 -3
  318. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_components_ui_0-tuf-h._.js +0 -3
  319. package/dist/dashboard-runtime/dashboard/.next/static/chunks/00tz~p479bdgl.js +0 -1
  320. package/dist/dashboard-runtime/dashboard/.next/static/chunks/02i9olo-312mq.js +0 -138
  321. package/dist/dashboard-runtime/dashboard/.next/static/chunks/062k9jbtd9.lv.js +0 -1
  322. package/dist/dashboard-runtime/dashboard/.next/static/chunks/069zf4m5f.se2.js +0 -1
  323. package/dist/dashboard-runtime/dashboard/.next/static/chunks/07cp19da_kfld.js +0 -5
  324. package/dist/dashboard-runtime/dashboard/.next/static/chunks/086esp1n941jl.js +0 -138
  325. package/dist/dashboard-runtime/dashboard/.next/static/chunks/09uxq~55qug8c.js +0 -1
  326. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0d29.l~3ip181.js +0 -1
  327. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0ewpzgu_qf0wf.js +0 -4
  328. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0jc31diex030o.js +0 -1
  329. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0k79upjc40aky.css +0 -1
  330. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0snnsfosp3~gq.js +0 -1
  331. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0t0yqi68~eil6.js +0 -1
  332. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0th7u6qvdy3x2.js +0 -1
  333. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0tmwptel_4y0o.js +0 -1
  334. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0u6_s-0w8.yr..js +0 -1
  335. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0u9wtl06_b72x.js +0 -1
  336. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0v9d5wl9nsva3.js +0 -1
  337. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0~kfzxrhgbkaz.js +0 -1
  338. package/dist/dashboard-runtime/dashboard/.next/static/chunks/14.dp0-y_mhjo.js +0 -1
  339. package/dist/dashboard-runtime/dashboard/.next/static/chunks/15bzqpm440jvz.js +0 -1
  340. /package/dist/dashboard-runtime/dashboard/.next/static/{doYIl-pd6Sqax3bfUgN3q → EIbKHHti0Z1ephKfJzCKH}/_buildManifest.js +0 -0
  341. /package/dist/dashboard-runtime/dashboard/.next/static/{doYIl-pd6Sqax3bfUgN3q → EIbKHHti0Z1ephKfJzCKH}/_clientMiddlewareManifest.js +0 -0
  342. /package/dist/dashboard-runtime/dashboard/.next/static/{doYIl-pd6Sqax3bfUgN3q → EIbKHHti0Z1ephKfJzCKH}/_ssgManifest.js +0 -0
@@ -1,108 +1,610 @@
1
1
  'use client';
2
2
 
3
- import { X, Trash2 } from "lucide-react";
3
+ import { useEffect, useMemo, useState } from "react";
4
+ import { X, Trash2, Pencil, Plus } from "lucide-react";
5
+ import { toast } from "sonner";
4
6
  import { Button } from "@/components/ui/button";
5
- import { JsonViewer } from "@/components/shared/json-viewer";
7
+ import {
8
+ DropdownMenu,
9
+ DropdownMenuContent,
10
+ DropdownMenuItem,
11
+ DropdownMenuTrigger,
12
+ } from "@/components/ui/dropdown-menu";
13
+ import { Skeleton } from "@/components/ui/skeleton";
6
14
  import { RelativeTime } from "@/components/shared/relative-time";
15
+ import { MetadataFieldInput } from "@/components/shared/metadata-field-input";
16
+ import { useDocument } from "@/hooks/use-document";
17
+ import { useUpdateDocument } from "@/hooks/use-update-document";
18
+ import {
19
+ convertMetadataValues,
20
+ metadataToFormValues,
21
+ } from "@/lib/metadata-form";
7
22
  import { DocStatusBadge } from "./doc-status-badge";
8
- import type { Document } from "@/types/knowledge-base";
23
+ import type {
24
+ Document,
25
+ MetadataField,
26
+ MetadataFieldType,
27
+ } from "@/types/knowledge-base";
9
28
 
10
29
  interface DocDetailPanelProps {
11
30
  document: Document | null;
31
+ knowledgeBaseName: string;
32
+ metadataFields?: MetadataField[];
33
+ subspace?: string;
12
34
  onClose: () => void;
13
35
  onDelete?: (document: Document) => void;
14
36
  }
15
37
 
16
38
  export function DocDetailPanel({
17
39
  document,
40
+ knowledgeBaseName,
41
+ metadataFields,
42
+ subspace,
18
43
  onClose,
19
44
  onDelete,
20
45
  }: DocDetailPanelProps) {
21
- if (!document) return null;
46
+ const hasSchema = !!metadataFields && metadataFields.length > 0;
47
+
48
+ // Fetch fresh — listDocuments omits the metadata field, so the document
49
+ // prop coming from the table never has it. Fall back to the prop for
50
+ // non-metadata fields while the fetch is in flight.
51
+ const { data: fresh, isLoading: freshLoading } = useDocument(
52
+ knowledgeBaseName,
53
+ document?.docId,
54
+ { subspace, enabled: !!document },
55
+ );
56
+ const data = fresh ?? document;
22
57
 
23
58
  return (
24
59
  <>
25
- {/* 遮罩层 - 点击关闭面板 */}
26
- <div className="fixed inset-0 z-40 bg-black/20 animate-in fade-in duration-200" onClick={onClose} />
27
- <div className="fixed inset-y-0 right-0 z-50 w-105 border-l border-[hsl(var(--border))] bg-[hsl(var(--background))] shadow-lg overflow-y-auto animate-in slide-in-from-right duration-300">
28
- <div className="sticky top-0 z-10 flex items-center justify-between border-b border-[hsl(var(--border))] bg-[hsl(var(--background))] px-6 py-4">
29
- <h3 className="text-lg font-semibold">文档详情</h3>
30
- <Button variant="ghost" size="icon" onClick={onClose}>
31
- <X className="h-4 w-4" />
32
- </Button>
33
- </div>
60
+ {document ? (
61
+ <DetailPanelInner
62
+ data={data}
63
+ metadataFields={metadataFields}
64
+ knowledgeBaseName={knowledgeBaseName}
65
+ subspace={subspace}
66
+ hasSchema={hasSchema}
67
+ metadataLoading={freshLoading && !fresh}
68
+ onClose={onClose}
69
+ onDelete={onDelete}
70
+ />
71
+ ) : null}
72
+ </>
73
+ );
74
+ }
34
75
 
35
- <div className="space-y-6 p-6">
36
- {/* 基本信息 */}
37
- <section className="space-y-3">
38
- <DetailRow label="文档 ID" value={document.docId} mono />
39
- <DetailRow label="OSS Key" value={document.ossKey} mono />
40
- <div className="flex items-start justify-between gap-4">
41
- <span className="text-sm text-muted-foreground shrink-0">子空间</span>
42
- {document.subspace ? (
43
- <code className="rounded bg-[hsl(var(--muted))] px-1.5 py-0.5 font-mono text-xs">
44
- {document.subspace}
45
- </code>
46
- ) : (
47
- <span className="text-sm">—</span>
48
- )}
49
- </div>
50
- <div className="flex items-center justify-between">
51
- <span className="text-sm text-muted-foreground">状态</span>
52
- <DocStatusBadge status={document.status} />
53
- </div>
54
- {document.eTag && (
55
- <DetailRow label="ETag" value={document.eTag} mono />
76
+ function DetailPanelInner({
77
+ data,
78
+ metadataFields,
79
+ knowledgeBaseName,
80
+ subspace,
81
+ hasSchema,
82
+ metadataLoading,
83
+ onClose,
84
+ onDelete,
85
+ }: {
86
+ data: Document | null;
87
+ metadataFields?: MetadataField[];
88
+ knowledgeBaseName: string;
89
+ subspace?: string;
90
+ hasSchema: boolean;
91
+ metadataLoading: boolean;
92
+ onClose: () => void;
93
+ onDelete?: (document: Document) => void;
94
+ }) {
95
+ if (!data) return null;
96
+
97
+ return (
98
+ <>
99
+ {/* 遮罩层 - 点击关闭面板 */}
100
+ <div
101
+ className="fixed inset-0 z-40 bg-black/20 animate-in fade-in duration-200"
102
+ onClick={onClose}
103
+ />
104
+ <div className="fixed inset-y-0 right-0 z-50 w-105 border-l border-[hsl(var(--border))] bg-[hsl(var(--background))] shadow-lg overflow-y-auto animate-in slide-in-from-right duration-300">
105
+ <div className="sticky top-0 z-10 flex items-center justify-between border-b border-[hsl(var(--border))] bg-[hsl(var(--background))] px-6 py-4">
106
+ <h3 className="text-lg font-semibold">文档详情</h3>
107
+ <Button variant="ghost" size="icon" onClick={onClose}>
108
+ <X className="h-4 w-4" />
109
+ </Button>
110
+ </div>
111
+
112
+ <div className="space-y-6 p-6">
113
+ {/* 基本信息 */}
114
+ <section className="space-y-3">
115
+ <DetailRow label="文档 ID" value={data.docId} mono />
116
+ <DetailRow label="OSS Key" value={data.ossKey} mono />
117
+ <div className="flex items-start justify-between gap-4">
118
+ <span className="text-sm text-muted-foreground shrink-0">子空间</span>
119
+ {data.subspace ? (
120
+ <code className="rounded bg-[hsl(var(--muted))] px-1.5 py-0.5 font-mono text-xs">
121
+ {data.subspace}
122
+ </code>
123
+ ) : (
124
+ <span className="text-sm">—</span>
125
+ )}
126
+ </div>
127
+ <div className="flex items-center justify-between">
128
+ <span className="text-sm text-muted-foreground">状态</span>
129
+ <DocStatusBadge status={data.status} />
130
+ </div>
131
+ {data.eTag && <DetailRow label="ETag" value={data.eTag} mono />}
132
+ <DetailRow
133
+ label="切片数"
134
+ value={data.chunkNum?.toString() ?? "—"}
135
+ />
136
+ </section>
137
+
138
+ {/* Metadata */}
139
+ {hasSchema && metadataFields && (
140
+ <MetadataSection
141
+ fields={metadataFields}
142
+ metadata={data.metadata}
143
+ loading={metadataLoading}
144
+ knowledgeBaseName={knowledgeBaseName}
145
+ docId={data.docId}
146
+ subspace={subspace}
147
+ />
56
148
  )}
57
- <DetailRow
58
- label="切片数"
59
- value={document.chunkNum?.toString() ?? ""}
60
- />
61
- </section>
62
-
63
- {/* Metadata */}
64
- {document.metadata && Object.keys(document.metadata).length > 0 && (
65
- <section className="space-y-2">
66
- <h4 className="text-sm font-medium">Metadata</h4>
67
- <JsonViewer data={document.metadata} />
149
+
150
+ {/* 时间信息 */}
151
+ <section className="space-y-3">
152
+ <h4 className="text-sm font-medium">时间信息</h4>
153
+ <div className="flex items-center justify-between">
154
+ <span className="text-sm text-muted-foreground">创建时间</span>
155
+ <RelativeTime timestamp={data.createdAt} />
156
+ </div>
157
+ <div className="flex items-center justify-between">
158
+ <span className="text-sm text-muted-foreground">更新时间</span>
159
+ <RelativeTime timestamp={data.updatedAt} />
160
+ </div>
68
161
  </section>
69
- )}
70
162
 
71
- {/* 时间信息 */}
72
- <section className="space-y-3">
73
- <h4 className="text-sm font-medium">时间信息</h4>
74
- <div className="flex items-center justify-between">
75
- <span className="text-sm text-muted-foreground">创建时间</span>
76
- <RelativeTime timestamp={document.createdAt} />
77
- </div>
78
- <div className="flex items-center justify-between">
79
- <span className="text-sm text-muted-foreground">更新时间</span>
80
- <RelativeTime timestamp={document.updatedAt} />
163
+ {/* 失败详情 */}
164
+ {data.failedDetails && (
165
+ <section className="space-y-2">
166
+ <h4 className="text-sm font-medium text-destructive">失败详情</h4>
167
+ <p className="text-sm text-destructive/80 bg-destructive/5 rounded-md p-3">
168
+ {data.failedDetails}
169
+ </p>
170
+ </section>
171
+ )}
172
+
173
+ {/* 删除按钮 */}
174
+ <Button
175
+ variant="destructive"
176
+ className="w-full"
177
+ onClick={() => onDelete?.(data)}
178
+ >
179
+ <Trash2 className="mr-2 h-4 w-4" />
180
+ 删除文档
181
+ </Button>
182
+ </div>
183
+ </div>
184
+ </>
185
+ );
186
+ }
187
+
188
+ // ---------------------------------------------------------------------------
189
+ // Metadata section — schema-driven display
190
+ // ---------------------------------------------------------------------------
191
+
192
+ type TypePalette = {
193
+ /** Tag background + text classes */
194
+ badge: string;
195
+ /** Vertical accent bar color (left side of each row) */
196
+ bar: string;
197
+ };
198
+
199
+ function getTypePalette(type: MetadataFieldType): TypePalette {
200
+ const base = type.replace(/_list$/, "") as
201
+ | "string"
202
+ | "long"
203
+ | "double"
204
+ | "boolean"
205
+ | "date";
206
+ switch (base) {
207
+ case "long":
208
+ case "double":
209
+ return {
210
+ badge:
211
+ "bg-amber-50 text-amber-700 ring-amber-200/70 dark:bg-amber-950/40 dark:text-amber-300 dark:ring-amber-500/30",
212
+ bar: "bg-amber-400/70 dark:bg-amber-500/60",
213
+ };
214
+ case "boolean":
215
+ return {
216
+ badge:
217
+ "bg-violet-50 text-violet-700 ring-violet-200/70 dark:bg-violet-950/40 dark:text-violet-300 dark:ring-violet-500/30",
218
+ bar: "bg-violet-400/70 dark:bg-violet-500/60",
219
+ };
220
+ case "date":
221
+ return {
222
+ badge:
223
+ "bg-sky-50 text-sky-700 ring-sky-200/70 dark:bg-sky-950/40 dark:text-sky-300 dark:ring-sky-500/30",
224
+ bar: "bg-sky-400/70 dark:bg-sky-500/60",
225
+ };
226
+ case "string":
227
+ default:
228
+ return {
229
+ badge:
230
+ "bg-emerald-50 text-emerald-700 ring-emerald-200/70 dark:bg-emerald-950/40 dark:text-emerald-300 dark:ring-emerald-500/30",
231
+ bar: "bg-emerald-400/70 dark:bg-emerald-500/60",
232
+ };
233
+ }
234
+ }
235
+
236
+ function formatTypeLabel(type: MetadataFieldType): string {
237
+ if (type.endsWith("_list")) return `${type.replace(/_list$/, "")}[]`;
238
+ return type;
239
+ }
240
+
241
+ function TypeBadge({ type }: { type: MetadataFieldType }) {
242
+ const palette = getTypePalette(type);
243
+ return (
244
+ <span
245
+ className={`inline-flex items-center rounded px-1.5 py-px font-mono text-[10px] uppercase tracking-wider ring-1 ring-inset ${palette.badge}`}
246
+ >
247
+ {formatTypeLabel(type)}
248
+ </span>
249
+ );
250
+ }
251
+
252
+ function FormattedValue({
253
+ value,
254
+ type,
255
+ }: {
256
+ value: unknown;
257
+ type: MetadataFieldType;
258
+ }) {
259
+ if (type === "boolean") {
260
+ const bool = Boolean(value);
261
+ return (
262
+ <span
263
+ className={`inline-flex items-center rounded px-1.5 py-0.5 font-mono text-xs ${
264
+ bool
265
+ ? "bg-violet-100 text-violet-700 dark:bg-violet-950/50 dark:text-violet-300"
266
+ : "bg-muted text-muted-foreground"
267
+ }`}
268
+ >
269
+ {bool ? "true" : "false"}
270
+ </span>
271
+ );
272
+ }
273
+
274
+ if (type.endsWith("_list") && Array.isArray(value)) {
275
+ if (value.length === 0)
276
+ return <span className="text-muted-foreground/70 italic">空列表</span>;
277
+ return (
278
+ <div className="flex flex-wrap gap-1">
279
+ {value.map((item, idx) => (
280
+ <span
281
+ key={idx}
282
+ className="inline-flex items-center rounded bg-[hsl(var(--muted))] px-1.5 py-0.5 font-mono text-xs"
283
+ >
284
+ {String(item)}
285
+ </span>
286
+ ))}
287
+ </div>
288
+ );
289
+ }
290
+
291
+ if (type === "long" || type === "double") {
292
+ return <span className="font-mono text-sm">{String(value)}</span>;
293
+ }
294
+
295
+ if (type === "date") {
296
+ return <span className="font-mono text-sm">{String(value)}</span>;
297
+ }
298
+
299
+ // string / fallback
300
+ return <span className="text-sm break-all">{String(value)}</span>;
301
+ }
302
+
303
+ function MetadataSection({
304
+ fields,
305
+ metadata,
306
+ loading,
307
+ knowledgeBaseName,
308
+ docId,
309
+ subspace,
310
+ }: {
311
+ fields: MetadataField[];
312
+ metadata: Record<string, unknown> | undefined;
313
+ loading: boolean;
314
+ knowledgeBaseName: string;
315
+ docId: string;
316
+ subspace?: string;
317
+ }) {
318
+ const [editing, setEditing] = useState(false);
319
+ // The keys present in `values` define which schema fields are "active" in
320
+ // the edit form. Adding a field inserts a key (with empty value); the
321
+ // remove button deletes the key. On save, empty values are stripped by
322
+ // `convertMetadataValues`, matching the backend's overwrite semantics.
323
+ const [values, setValues] = useState<Record<string, string>>({});
324
+ const updateDocumentMutation = useUpdateDocument();
325
+
326
+ // Reset to a clean view whenever we switch to a different document.
327
+ useEffect(() => {
328
+ setEditing(false);
329
+ }, [docId]);
330
+
331
+ function handleStartEdit() {
332
+ // Seed only with fields that currently have a value on the document —
333
+ // unset schema fields stay hidden until the user explicitly adds them.
334
+ const all = metadataToFormValues(metadata, fields);
335
+ const seed: Record<string, string> = {};
336
+ for (const f of fields) {
337
+ const v = metadata?.[f.name];
338
+ if (v === undefined || v === null) continue;
339
+ seed[f.name] = all[f.name];
340
+ }
341
+ setValues(seed);
342
+ setEditing(true);
343
+ }
344
+
345
+ function handleCancel() {
346
+ setEditing(false);
347
+ }
348
+
349
+ function handleAddField(name: string) {
350
+ setValues((prev) => ({ ...prev, [name]: "" }));
351
+ }
352
+
353
+ function handleRemoveField(name: string) {
354
+ setValues((prev) => {
355
+ const next = { ...prev };
356
+ delete next[name];
357
+ return next;
358
+ });
359
+ }
360
+
361
+ // Only convert active fields — schema fields not in `values` should not
362
+ // be sent to the backend even with an empty value.
363
+ const activeFields = useMemo(
364
+ () => fields.filter((f) => f.name in values),
365
+ [fields, values],
366
+ );
367
+
368
+ const previewMetadata = useMemo(
369
+ () => convertMetadataValues(values, activeFields),
370
+ [values, activeFields],
371
+ );
372
+
373
+ const availableFields = useMemo(
374
+ () => fields.filter((f) => !(f.name in values)),
375
+ [fields, values],
376
+ );
377
+
378
+ // View mode: only render fields with actual values on the document.
379
+ const setFields = useMemo(
380
+ () =>
381
+ fields.filter((f) => {
382
+ const v = metadata?.[f.name];
383
+ return v !== undefined && v !== null;
384
+ }),
385
+ [fields, metadata],
386
+ );
387
+
388
+ async function handleSave() {
389
+ try {
390
+ await updateDocumentMutation.mutateAsync({
391
+ knowledgeBaseName,
392
+ docId,
393
+ subspace,
394
+ metadata: previewMetadata,
395
+ });
396
+ toast.success("Metadata 已更新");
397
+ setEditing(false);
398
+ } catch (error) {
399
+ const message =
400
+ error instanceof Error ? error.message : "更新 metadata 失败";
401
+ toast.error(message);
402
+ }
403
+ }
404
+
405
+ return (
406
+ <section className="space-y-2">
407
+ <div className="flex items-center justify-between">
408
+ <div className="flex items-baseline gap-2">
409
+ <h4 className="text-sm font-medium">Metadata</h4>
410
+ {!loading && (
411
+ <span className="font-mono text-[11px] text-muted-foreground/70">
412
+ {editing ? activeFields.length : setFields.length}/{fields.length}
413
+ </span>
414
+ )}
415
+ </div>
416
+ {editing ? (
417
+ <div className="flex items-center gap-2">
418
+ <Button
419
+ variant="ghost"
420
+ size="sm"
421
+ className="h-7 px-2 text-xs"
422
+ onClick={handleCancel}
423
+ disabled={updateDocumentMutation.isPending}
424
+ >
425
+ 取消
426
+ </Button>
427
+ <Button
428
+ size="sm"
429
+ className="h-7 px-2 text-xs"
430
+ onClick={handleSave}
431
+ disabled={updateDocumentMutation.isPending}
432
+ >
433
+ {updateDocumentMutation.isPending ? "保存中..." : "保存"}
434
+ </Button>
81
435
  </div>
82
- </section>
83
-
84
- {/* 失败详情 */}
85
- {document.failedDetails && (
86
- <section className="space-y-2">
87
- <h4 className="text-sm font-medium text-destructive">失败详情</h4>
88
- <p className="text-sm text-destructive/80 bg-destructive/5 rounded-md p-3">
89
- {document.failedDetails}
90
- </p>
91
- </section>
436
+ ) : (
437
+ <Button
438
+ variant="ghost"
439
+ size="sm"
440
+ className="h-7 px-2 text-xs"
441
+ onClick={handleStartEdit}
442
+ disabled={loading}
443
+ >
444
+ <Pencil className="mr-1 h-3 w-3" />
445
+ 编辑
446
+ </Button>
92
447
  )}
448
+ </div>
93
449
 
94
- {/* 删除按钮 */}
95
- <Button
96
- variant="destructive"
97
- className="w-full"
98
- onClick={() => onDelete?.(document)}
99
- >
100
- <Trash2 className="mr-2 h-4 w-4" />
101
- 删除文档
102
- </Button>
450
+ {loading && !editing ? (
451
+ <Skeleton className="h-24 w-full" />
452
+ ) : editing ? (
453
+ <MetadataEditList
454
+ activeFields={activeFields}
455
+ availableFields={availableFields}
456
+ values={values}
457
+ onChange={(name, next) =>
458
+ setValues((prev) => ({ ...prev, [name]: next }))
459
+ }
460
+ onRemove={handleRemoveField}
461
+ onAdd={handleAddField}
462
+ />
463
+ ) : setFields.length === 0 ? (
464
+ <p className="rounded-lg border border-dashed border-[hsl(var(--border))] px-3 py-4 text-center text-xs text-muted-foreground">
465
+ 暂无 metadata,点击「编辑」添加字段
466
+ </p>
467
+ ) : (
468
+ <div className="overflow-hidden rounded-lg border border-[hsl(var(--border))] divide-y divide-[hsl(var(--border))]">
469
+ {setFields.map((field) => (
470
+ <MetadataDisplayRow
471
+ key={field.name}
472
+ field={field}
473
+ value={metadata?.[field.name]}
474
+ />
475
+ ))}
476
+ </div>
477
+ )}
478
+ </section>
479
+ );
480
+ }
481
+
482
+ function MetadataDisplayRow({
483
+ field,
484
+ value,
485
+ }: {
486
+ field: MetadataField;
487
+ value: unknown;
488
+ }) {
489
+ const palette = getTypePalette(field.type);
490
+ return (
491
+ <div className="relative flex items-start gap-3 bg-[hsl(var(--background))] py-2.5 pl-3 pr-3">
492
+ <span
493
+ aria-hidden
494
+ className={`absolute left-0 top-1.5 bottom-1.5 w-0.5 rounded-r-full ${palette.bar}`}
495
+ />
496
+ <div className="min-w-0 flex-1 space-y-1">
497
+ <div className="flex items-center gap-1.5">
498
+ <span className="truncate text-[13px] font-medium leading-tight">
499
+ {field.name}
500
+ </span>
501
+ <TypeBadge type={field.type} />
502
+ </div>
503
+ <FormattedValue value={value} type={field.type} />
103
504
  </div>
104
505
  </div>
105
- </>
506
+ );
507
+ }
508
+
509
+ function MetadataEditList({
510
+ activeFields,
511
+ availableFields,
512
+ values,
513
+ onChange,
514
+ onRemove,
515
+ onAdd,
516
+ }: {
517
+ activeFields: MetadataField[];
518
+ availableFields: MetadataField[];
519
+ values: Record<string, string>;
520
+ onChange: (name: string, next: string) => void;
521
+ onRemove: (name: string) => void;
522
+ onAdd: (name: string) => void;
523
+ }) {
524
+ return (
525
+ <div className="space-y-2">
526
+ {activeFields.length > 0 && (
527
+ <div className="overflow-hidden rounded-lg border border-[hsl(var(--border))] divide-y divide-[hsl(var(--border))]">
528
+ {activeFields.map((field) => {
529
+ const palette = getTypePalette(field.type);
530
+ return (
531
+ <div
532
+ key={field.name}
533
+ className="group relative flex items-start gap-2 bg-[hsl(var(--background))] py-2.5 pl-3 pr-2 transition-colors hover:bg-[hsl(var(--muted))]/30"
534
+ >
535
+ <span
536
+ aria-hidden
537
+ className={`absolute left-0 top-1.5 bottom-1.5 w-0.5 rounded-r-full ${palette.bar}`}
538
+ />
539
+ <div className="min-w-0 flex-1 space-y-1.5">
540
+ <div className="flex items-center gap-1.5">
541
+ <span className="truncate text-[13px] font-medium leading-tight">
542
+ {field.name}
543
+ </span>
544
+ <TypeBadge type={field.type} />
545
+ </div>
546
+ <MetadataFieldInput
547
+ field={field}
548
+ value={values[field.name] ?? ""}
549
+ onChange={(next) => onChange(field.name, next)}
550
+ />
551
+ </div>
552
+ <Button
553
+ type="button"
554
+ variant="ghost"
555
+ size="icon"
556
+ className="h-7 w-7 self-start text-muted-foreground/70 hover:text-destructive"
557
+ onClick={() => onRemove(field.name)}
558
+ title="移除该字段"
559
+ >
560
+ <X className="h-3.5 w-3.5" />
561
+ </Button>
562
+ </div>
563
+ );
564
+ })}
565
+ </div>
566
+ )}
567
+
568
+ {availableFields.length > 0 ? (
569
+ <DropdownMenu>
570
+ <DropdownMenuTrigger asChild>
571
+ <Button
572
+ type="button"
573
+ variant="outline"
574
+ size="sm"
575
+ className="h-8 w-full justify-center border-dashed text-xs font-normal text-muted-foreground hover:text-foreground"
576
+ >
577
+ <Plus className="mr-1 h-3.5 w-3.5" />
578
+ 添加字段
579
+ <span className="ml-1.5 font-mono text-[10px] text-muted-foreground/60">
580
+ {availableFields.length} 可用
581
+ </span>
582
+ </Button>
583
+ </DropdownMenuTrigger>
584
+ <DropdownMenuContent
585
+ align="start"
586
+ className="w-[var(--radix-dropdown-menu-trigger-width)] min-w-[200px]"
587
+ >
588
+ {availableFields.map((field) => (
589
+ <DropdownMenuItem
590
+ key={field.name}
591
+ onSelect={() => onAdd(field.name)}
592
+ className="flex items-center justify-between gap-2"
593
+ >
594
+ <span className="truncate text-sm">{field.name}</span>
595
+ <TypeBadge type={field.type} />
596
+ </DropdownMenuItem>
597
+ ))}
598
+ </DropdownMenuContent>
599
+ </DropdownMenu>
600
+ ) : (
601
+ activeFields.length === 0 && (
602
+ <p className="rounded-lg border border-dashed border-[hsl(var(--border))] px-3 py-4 text-center text-xs text-muted-foreground">
603
+ 该知识库未配置 metadata schema
604
+ </p>
605
+ )
606
+ )}
607
+ </div>
106
608
  );
107
609
  }
108
610