@tablestore/tablestore-agent-cli 0.2.6 → 0.2.7

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 (185) hide show
  1. package/dist/dashboard-runtime/dashboard/.next/BUILD_ID +1 -1
  2. package/dist/dashboard-runtime/dashboard/.next/build-manifest.json +3 -3
  3. package/dist/dashboard-runtime/dashboard/.next/prerender-manifest.json +3 -3
  4. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/api-keys/page.js.nft.json +1 -1
  5. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/api-keys/page_client-reference-manifest.js +1 -1
  6. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
  7. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
  8. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/documents/page.js.nft.json +1 -1
  9. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/documents/page_client-reference-manifest.js +1 -1
  10. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/page.js.nft.json +1 -1
  11. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/page_client-reference-manifest.js +1 -1
  12. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/qa/page.js.nft.json +1 -1
  13. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/qa/page_client-reference-manifest.js +1 -1
  14. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/retrieval/page.js.nft.json +1 -1
  15. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/retrieval/page_client-reference-manifest.js +1 -1
  16. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/settings/page.js.nft.json +1 -1
  17. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/settings/page_client-reference-manifest.js +1 -1
  18. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/create/page.js.nft.json +1 -1
  19. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/create/page_client-reference-manifest.js +1 -1
  20. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/page.js.nft.json +1 -1
  21. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/page_client-reference-manifest.js +1 -1
  22. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/llm-providers/[id]/page.js.nft.json +1 -1
  23. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/llm-providers/[id]/page_client-reference-manifest.js +1 -1
  24. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/llm-providers/new/page.js.nft.json +1 -1
  25. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/llm-providers/new/page_client-reference-manifest.js +1 -1
  26. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/llm-providers/page.js.nft.json +1 -1
  27. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/llm-providers/page_client-reference-manifest.js +1 -1
  28. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/dream/[dreamId]/page.js.nft.json +1 -1
  29. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/dream/[dreamId]/page_client-reference-manifest.js +1 -1
  30. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/dream/page.js.nft.json +1 -1
  31. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/dream/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]/tasks/page.js.nft.json +1 -1
  43. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/tasks/page_client-reference-manifest.js +1 -1
  44. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/units/page.js.nft.json +1 -1
  45. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/units/page_client-reference-manifest.js +1 -1
  46. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/create/page.js.nft.json +1 -1
  47. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/create/page_client-reference-manifest.js +1 -1
  48. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/page.js.nft.json +1 -1
  49. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/page_client-reference-manifest.js +1 -1
  50. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/projects/page.js.nft.json +1 -1
  51. package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/projects/page_client-reference-manifest.js +1 -1
  52. package/dist/dashboard-runtime/dashboard/.next/server/app/_global-error.html +1 -1
  53. package/dist/dashboard-runtime/dashboard/.next/server/app/_global-error.rsc +1 -1
  54. package/dist/dashboard-runtime/dashboard/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
  55. package/dist/dashboard-runtime/dashboard/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
  56. package/dist/dashboard-runtime/dashboard/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
  57. package/dist/dashboard-runtime/dashboard/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
  58. package/dist/dashboard-runtime/dashboard/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
  59. package/dist/dashboard-runtime/dashboard/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
  60. package/dist/dashboard-runtime/dashboard/.next/server/app/_not-found.html +1 -1
  61. package/dist/dashboard-runtime/dashboard/.next/server/app/_not-found.rsc +14 -14
  62. package/dist/dashboard-runtime/dashboard/.next/server/app/_not-found.segments/_full.segment.rsc +14 -14
  63. package/dist/dashboard-runtime/dashboard/.next/server/app/_not-found.segments/_head.segment.rsc +3 -3
  64. package/dist/dashboard-runtime/dashboard/.next/server/app/_not-found.segments/_index.segment.rsc +10 -10
  65. package/dist/dashboard-runtime/dashboard/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +3 -3
  66. package/dist/dashboard-runtime/dashboard/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
  67. package/dist/dashboard-runtime/dashboard/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
  68. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/api-keys/[id]/custom-policy/route.js.nft.json +1 -1
  69. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/api-keys/[id]/effective-permissions/route.js.nft.json +1 -1
  70. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/api-keys/[id]/policies/route.js.nft.json +1 -1
  71. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/api-keys/[id]/route.js.nft.json +1 -1
  72. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/api-keys/filter-by-permission/route.js.nft.json +1 -1
  73. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/api-keys/route.js.nft.json +1 -1
  74. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/auth/status/route.js.nft.json +1 -1
  75. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/auth/token/route.js.nft.json +1 -1
  76. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/instances/[name]/route.js.nft.json +1 -1
  77. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/instances/[name]/token/route.js.nft.json +1 -1
  78. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/instances/[name]/use/route.js.nft.json +1 -1
  79. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/instances/route.js.nft.json +1 -1
  80. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/knowledge-bases/[name]/chunks/route.js.nft.json +1 -1
  81. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/knowledge-bases/[name]/documents/[docId]/chunks/route.js.nft.json +1 -1
  82. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/knowledge-bases/[name]/documents/[docId]/route.js.nft.json +1 -1
  83. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/knowledge-bases/[name]/documents/route.js.nft.json +1 -1
  84. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/knowledge-bases/[name]/documents/upload/route.js.nft.json +1 -1
  85. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/knowledge-bases/[name]/retrieve/route.js.nft.json +1 -1
  86. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/knowledge-bases/[name]/route.js.nft.json +1 -1
  87. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/knowledge-bases/route.js.nft.json +1 -1
  88. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/llm/chat/route.js.nft.json +1 -1
  89. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/llm/providers/[id]/models/route.js.nft.json +1 -1
  90. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/llm/providers/[id]/route.js.nft.json +1 -1
  91. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/llm/providers/[id]/test/route.js.nft.json +1 -1
  92. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/llm/providers/route.js.nft.json +1 -1
  93. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/logs/client/route.js.nft.json +1 -1
  94. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/dream-tasks/[dreamId]/actions/apply/route.js.nft.json +1 -1
  95. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/dream-tasks/[dreamId]/actions/route.js.nft.json +1 -1
  96. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/dream-tasks/[dreamId]/cancel/route.js.nft.json +1 -1
  97. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/dream-tasks/[dreamId]/route.js.nft.json +1 -1
  98. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/dream-tasks/route.js.nft.json +1 -1
  99. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/messages/route.js.nft.json +1 -1
  100. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/requests/route.js.nft.json +1 -1
  101. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/route.js.nft.json +1 -1
  102. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/scopes/route.js.nft.json +1 -1
  103. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/search/route.js.nft.json +1 -1
  104. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/tasks/[requestId]/route.js.nft.json +1 -1
  105. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/tasks/route.js.nft.json +1 -1
  106. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/units/[memoryId]/route.js.nft.json +1 -1
  107. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/units/route.js.nft.json +1 -1
  108. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/route.js.nft.json +1 -1
  109. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/oss/list/route.js.nft.json +1 -1
  110. package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/runtime/context/route.js.nft.json +1 -1
  111. package/dist/dashboard-runtime/dashboard/.next/server/app/index.html +1 -1
  112. package/dist/dashboard-runtime/dashboard/.next/server/app/index.rsc +14 -14
  113. package/dist/dashboard-runtime/dashboard/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
  114. package/dist/dashboard-runtime/dashboard/.next/server/app/index.segments/_full.segment.rsc +14 -14
  115. package/dist/dashboard-runtime/dashboard/.next/server/app/index.segments/_head.segment.rsc +3 -3
  116. package/dist/dashboard-runtime/dashboard/.next/server/app/index.segments/_index.segment.rsc +10 -10
  117. package/dist/dashboard-runtime/dashboard/.next/server/app/index.segments/_tree.segment.rsc +2 -2
  118. package/dist/dashboard-runtime/dashboard/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
  119. package/dist/dashboard-runtime/dashboard/.next/server/app/onboarding.html +1 -1
  120. package/dist/dashboard-runtime/dashboard/.next/server/app/onboarding.rsc +17 -17
  121. package/dist/dashboard-runtime/dashboard/.next/server/app/onboarding.segments/_full.segment.rsc +17 -17
  122. package/dist/dashboard-runtime/dashboard/.next/server/app/onboarding.segments/_head.segment.rsc +3 -3
  123. package/dist/dashboard-runtime/dashboard/.next/server/app/onboarding.segments/_index.segment.rsc +10 -10
  124. package/dist/dashboard-runtime/dashboard/.next/server/app/onboarding.segments/_tree.segment.rsc +2 -2
  125. package/dist/dashboard-runtime/dashboard/.next/server/app/onboarding.segments/onboarding/__PAGE__.segment.rsc +4 -4
  126. package/dist/dashboard-runtime/dashboard/.next/server/app/onboarding.segments/onboarding.segment.rsc +4 -4
  127. package/dist/dashboard-runtime/dashboard/.next/server/app/page_client-reference-manifest.js +1 -1
  128. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/{_0lf_p5l._.js → _0pe9ntc._.js} +2 -2
  129. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0tej2s.._.js +3 -0
  130. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_00ofp7q._.js +1 -1
  131. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_0l1.0wg._.js +1 -1
  132. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_app_(dashboard)_memory_[store]_dream_[dreamId]_page_tsx_0wy3tv6._.js +1 -1
  133. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_app_(dashboard)_memory_[store]_dream_page_tsx_0uzzpvs._.js +1 -1
  134. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_app_(dashboard)_memory_[store]_layout_tsx_0rbi41w._.js +1 -1
  135. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_app_(dashboard)_memory_[store]_settings_page_tsx_0y26.xu._.js +1 -1
  136. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_app_(dashboard)_memory_[store]_tasks_page_tsx_0a_bgx4._.js +1 -1
  137. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_app_(dashboard)_memory_[store]_units_page_tsx_0.6xnei._.js +1 -1
  138. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_providers_runtime-context-provider_tsx_0wmj66z._.js +1 -1
  139. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/node_modules__pnpm_00arje5._.js +1 -1
  140. package/dist/dashboard-runtime/dashboard/.next/server/middleware-build-manifest.js +3 -3
  141. package/dist/dashboard-runtime/dashboard/.next/server/pages/404.html +1 -1
  142. package/dist/dashboard-runtime/dashboard/.next/server/pages/500.html +1 -1
  143. package/dist/dashboard-runtime/dashboard/.next/server/server-reference-manifest.js +1 -1
  144. package/dist/dashboard-runtime/dashboard/.next/server/server-reference-manifest.json +1 -1
  145. package/dist/dashboard-runtime/dashboard/.next/static/chunks/05d8-45s941bx.js +1 -0
  146. package/dist/dashboard-runtime/dashboard/.next/static/chunks/{154l918khtf32.js → 076wjt8-f7ws0.js} +1 -1
  147. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0axe89r5c7p_b.js +1 -0
  148. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0czi-68m5cma3.js +1 -0
  149. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0ezfzygzl1hw8.css +1 -0
  150. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0gqhfku~on4t1.js +1 -0
  151. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0i_66eb3teu-..js +1 -0
  152. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0p7-v~ggg-k3s.js +1 -0
  153. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0xnm11dm1-qw2.js +1 -0
  154. package/dist/dashboard-runtime/dashboard/.next/static/chunks/{0za3q13g~ihb2.js → 0yqx-vizpechs.js} +1 -1
  155. package/dist/dashboard-runtime/dashboard/.next/static/chunks/11daw7hfc5lbv.js +1 -0
  156. package/dist/dashboard-runtime/dashboard/.next/static/chunks/{0oh~.z3b9_qzy.js → 17l3ij7h2.vna.js} +1 -1
  157. package/dist/dashboard-runtime/dashboard/src/app/(dashboard)/memory/[store]/dream/[dreamId]/page.tsx +79 -19
  158. package/dist/dashboard-runtime/dashboard/src/app/(dashboard)/memory/[store]/dream/page.tsx +57 -14
  159. package/dist/dashboard-runtime/dashboard/src/app/(dashboard)/memory/[store]/layout.tsx +1 -1
  160. package/dist/dashboard-runtime/dashboard/src/app/(dashboard)/memory/[store]/search/page.tsx +4 -0
  161. package/dist/dashboard-runtime/dashboard/src/app/(dashboard)/memory/[store]/units/page.tsx +1 -2
  162. package/dist/dashboard-runtime/dashboard/src/components/memory/memory-create-form.tsx +35 -1
  163. package/dist/dashboard-runtime/dashboard/src/components/memory/memory-dream-actions-table.tsx +176 -82
  164. package/dist/dashboard-runtime/dashboard/src/components/memory/memory-dream-apply-confirm-dialog.tsx +2 -0
  165. package/dist/dashboard-runtime/dashboard/src/components/memory/memory-dream-create-dialog.tsx +130 -83
  166. package/dist/dashboard-runtime/dashboard/src/components/memory/memory-search-form.tsx +22 -0
  167. package/dist/dashboard-runtime/dashboard/src/components/memory/memory-search-results.tsx +4 -1
  168. package/dist/dashboard-runtime/dashboard/src/components/memory/memory-settings-form.tsx +52 -7
  169. package/dist/dashboard-runtime/dashboard/src/components/memory/memory-tasks-table.tsx +8 -37
  170. package/dist/dashboard-runtime/dashboard/src/hooks/use-task-source-messages.ts +179 -0
  171. package/dist/dashboard-runtime/dashboard/src/types/memory.ts +32 -2
  172. package/package.json +1 -1
  173. package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0gep_x_._.js +0 -3
  174. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0.b6bx-29l5e2.js +0 -1
  175. package/dist/dashboard-runtime/dashboard/.next/static/chunks/05ny4_cp6fkfu.js +0 -1
  176. package/dist/dashboard-runtime/dashboard/.next/static/chunks/097px3urt-4kr.js +0 -1
  177. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0c08tbxyly68e.js +0 -1
  178. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0frefg2bkdon0.css +0 -1
  179. package/dist/dashboard-runtime/dashboard/.next/static/chunks/0w6-j4p-7fybc.js +0 -1
  180. package/dist/dashboard-runtime/dashboard/.next/static/chunks/126jyzsu33t60.js +0 -1
  181. package/dist/dashboard-runtime/dashboard/.next/static/chunks/12~tfkzir29.4.js +0 -1
  182. package/dist/dashboard-runtime/dashboard/.next/static/chunks/14teeoxc_1i46.js +0 -1
  183. /package/dist/dashboard-runtime/dashboard/.next/static/{pE-cQCmJ7b5_xgwqBJ7J3 → -pCWSBA7OQIF0pN0Rem9H}/_buildManifest.js +0 -0
  184. /package/dist/dashboard-runtime/dashboard/.next/static/{pE-cQCmJ7b5_xgwqBJ7J3 → -pCWSBA7OQIF0pN0Rem9H}/_clientMiddlewareManifest.js +0 -0
  185. /package/dist/dashboard-runtime/dashboard/.next/static/{pE-cQCmJ7b5_xgwqBJ7J3 → -pCWSBA7OQIF0pN0Rem9H}/_ssgManifest.js +0 -0
@@ -1,3 +1,3 @@
1
- module.exports=[502482,a=>{"use strict";var b=a.i(634020),c=a.i(412583),d=a.i(880470),e=a.i(907704),f=a.i(364565);let g={"knowledge-base":"知识库",memory:"记忆库","llm-providers":"大模型",projects:"项目管理",documents:"文档",retrieval:"检索测试",qa:"问答测试",search:"记忆检索",units:"长期记忆",messages:"短期记忆",requests:"请求审计",settings:"设置",create:"新建",new:"新建",chat:"对话"};a.s(["PageHeader",0,function({title:a,description:h,hideBreadcrumb:i,children:j,className:k}){let l=(0,d.usePathname)()??"/",m=i?[]:function(a){if(/^\/knowledge-base\/[^/]+(?:\/.*)?$/.test(a)||/^\/memory\/[^/]+(?:\/.*)?$/.test(a))return[];let b=a.split("/").filter(Boolean);if(0===b.length)return[];let c=[],d="";return b.forEach((a,e)=>{d+=`/${a}`;let f=decodeURIComponent(a),h=g[f]??f;c.push({label:h,href:e<b.length-1?d:void 0})}),c}(l);return(0,b.jsxs)("div",{className:(0,f.cn)("mb-5 flex flex-col gap-2",k),children:[m.length>1&&(0,b.jsxs)("nav",{"aria-label":"面包屑",className:"flex items-center gap-1 text-[13px] text-[hsl(var(--muted-foreground))]",children:[(0,b.jsx)(c.default,{href:"/",className:"transition-colors hover:text-[hsl(var(--foreground))]",children:"主页"}),m.map((a,d)=>(0,b.jsxs)("span",{className:"flex items-center gap-1",children:[(0,b.jsx)(e.ChevronRight,{className:"h-3 w-3 opacity-60"}),a.href?(0,b.jsx)(c.default,{href:a.href,className:"transition-colors hover:text-[hsl(var(--foreground))]",children:a.label}):(0,b.jsx)("span",{className:"font-medium text-[hsl(var(--foreground))]",children:a.label})]},`${a.label}-${d}`))]}),(0,b.jsxs)("div",{className:"flex items-start justify-between gap-4",children:[(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsx)("h1",{className:"text-xl font-semibold leading-tight text-[hsl(var(--foreground))]",children:a}),h&&(0,b.jsx)("p",{className:"text-[13px] text-[hsl(var(--muted-foreground))]",children:h})]}),j&&(0,b.jsx)("div",{className:"flex shrink-0 items-center gap-2",children:j})]})]})}])},28303,a=>{"use strict";var b=a.i(634020),c=a.i(502482),d=a.i(880470),e=a.i(71562),f=a.i(771071),g=a.i(680904),h=a.i(263265),i=a.i(147845),j=a.i(1078),k=a.i(776192),l=a.i(172518),m=a.i(470535),n=a.i(692942),o=a.i(933596),p=a.i(895487),q=a.i(421347),r=a.i(225377);let s=g.z.object({memoryStoreName:g.z.string().trim().min(1,"名称不能为空").max(32,"名称不能超过 32 个字符").regex(/^[a-zA-Z0-9_]+$/,"只能包含字母、数字和下划线"),description:g.z.string().trim().max(256,"描述不超过 256 字").optional()});function t(){let a,c=(0,d.useRouter)(),g=(a=(0,p.useQueryClient)(),(0,o.useMutation)({mutationFn:a=>(0,q.createMemoryStore)(a),onSuccess:()=>{(0,r.invalidateMemoryQueries)(a)}})),i=(0,e.useForm)({resolver:(0,f.zodResolver)(s),defaultValues:{memoryStoreName:"",description:""}});async function j(a){try{await g.mutateAsync({memoryStoreName:a.memoryStoreName,description:a.description?.length?a.description:void 0}),h.toast.success("记忆库创建成功"),c.push("/memory")}catch(a){h.toast.error(a instanceof Error?a.message:"创建记忆库失败")}}return(0,b.jsx)(n.Form,{...i,children:(0,b.jsxs)("form",{onSubmit:i.handleSubmit(j),className:"space-y-6",children:[(0,b.jsx)(u,{}),(0,b.jsxs)("section",{className:"rounded-lg border border-[hsl(var(--border))] bg-[hsl(var(--card))] p-5 shadow-sm",children:[(0,b.jsx)(v,{title:"基本信息",description:"名称用于 CLI 的 --store 参数与控制台路由,创建后不可修改;描述帮助团队识别记忆库用途。"}),(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsx)(n.FormField,{control:i.control,name:"memoryStoreName",render:({field:a})=>(0,b.jsxs)(n.FormItem,{children:[(0,b.jsxs)(n.FormLabel,{children:["名称 ",(0,b.jsx)("span",{className:"text-[hsl(var(--destructive))]",children:"*"})]}),(0,b.jsx)(n.FormControl,{children:(0,b.jsx)(l.Input,{placeholder:"my_memory_store",...a})}),(0,b.jsx)(n.FormDescription,{children:"仅支持字母、数字和下划线,最多 32 个字符。"}),(0,b.jsx)(n.FormMessage,{})]})}),(0,b.jsx)(n.FormField,{control:i.control,name:"description",render:({field:a})=>(0,b.jsxs)(n.FormItem,{children:[(0,b.jsx)(n.FormLabel,{children:"描述"}),(0,b.jsx)(n.FormControl,{children:(0,b.jsx)(m.Textarea,{placeholder:"描述这个记忆库的用途...",className:"resize-none",rows:4,...a})}),(0,b.jsx)(n.FormMessage,{})]})})]})]}),(0,b.jsxs)("div",{className:"flex justify-end gap-3 border-t border-[hsl(var(--border-light))] pt-4",children:[(0,b.jsx)(k.Button,{type:"button",variant:"outline",onClick:()=>c.push("/memory"),children:"取消"}),(0,b.jsx)(k.Button,{type:"submit",disabled:g.isPending,children:g.isPending?"创建中...":"创建记忆库"})]})]})})}function u(){return(0,b.jsxs)("div",{className:"animate-home-reveal relative overflow-hidden rounded-lg border border-dashed border-[hsl(var(--primary)/0.35)] bg-gradient-to-br from-[hsl(var(--primary-soft))] via-[hsl(var(--surface))] to-[hsl(var(--surface))] px-5 py-5",role:"region","aria-label":"创建记忆库引导",children:[(0,b.jsx)(j.Sparkles,{className:"pointer-events-none absolute right-3 top-3 h-3.5 w-3.5 text-[hsl(var(--primary)/0.45)]","aria-hidden":!0}),(0,b.jsxs)("div",{className:"flex items-start gap-4",children:[(0,b.jsx)("div",{className:"flex h-11 w-11 shrink-0 items-center justify-center rounded-xl bg-[hsl(var(--primary-soft))] ring-1 ring-[hsl(var(--primary)/0.18)]",children:(0,b.jsx)(i.Brain,{className:"h-5 w-5 text-[hsl(var(--primary))]"})}),(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsx)("h3",{className:"text-sm font-semibold text-[hsl(var(--foreground))]",children:"智能体的长期记忆"}),(0,b.jsxs)("p",{className:"text-xs leading-relaxed text-[hsl(var(--muted-foreground))]",children:["记忆库存放对话中沉淀下来的事实、偏好与上下文, 供后续对话在",(0,b.jsx)("code",{className:"mx-1 rounded bg-[hsl(var(--muted))] px-1 py-0.5 font-mono text-[10px]",children:"应用"}),"+",(0,b.jsx)("code",{className:"mx-1 rounded bg-[hsl(var(--muted))] px-1 py-0.5 font-mono text-[10px]",children:"租户"}),"维度内自动检索与写回。"]})]})]})]})}function v({title:a,description:c}){return(0,b.jsxs)("header",{className:"mb-4 border-b border-[hsl(var(--border-light))] pb-3",children:[(0,b.jsx)("h3",{className:"text-[15px] font-semibold leading-tight text-[hsl(var(--foreground))]",children:a}),(0,b.jsx)("p",{className:"mt-1 text-xs leading-relaxed text-[hsl(var(--muted-foreground))]",children:c})]})}a.s(["default",0,function(){return(0,b.jsxs)("div",{className:"mx-auto max-w-3xl space-y-6",children:[(0,b.jsx)(c.PageHeader,{title:"创建记忆库",description:"登记一个新的记忆库;记忆库是同一应用 + 租户下记忆条目的共享容器"}),(0,b.jsx)(t,{})]})}],28303)}];
1
+ module.exports=[502482,a=>{"use strict";var b=a.i(634020),c=a.i(412583),d=a.i(880470),e=a.i(907704),f=a.i(364565);let g={"knowledge-base":"知识库",memory:"记忆库","llm-providers":"大模型",projects:"项目管理",documents:"文档",retrieval:"检索测试",qa:"问答测试",search:"记忆检索",units:"长期记忆",messages:"短期记忆",requests:"请求审计",settings:"设置",create:"新建",new:"新建",chat:"对话"};a.s(["PageHeader",0,function({title:a,description:h,hideBreadcrumb:i,children:j,className:k}){let l=(0,d.usePathname)()??"/",m=i?[]:function(a){if(/^\/knowledge-base\/[^/]+(?:\/.*)?$/.test(a)||/^\/memory\/[^/]+(?:\/.*)?$/.test(a))return[];let b=a.split("/").filter(Boolean);if(0===b.length)return[];let c=[],d="";return b.forEach((a,e)=>{d+=`/${a}`;let f=decodeURIComponent(a),h=g[f]??f;c.push({label:h,href:e<b.length-1?d:void 0})}),c}(l);return(0,b.jsxs)("div",{className:(0,f.cn)("mb-5 flex flex-col gap-2",k),children:[m.length>1&&(0,b.jsxs)("nav",{"aria-label":"面包屑",className:"flex items-center gap-1 text-[13px] text-[hsl(var(--muted-foreground))]",children:[(0,b.jsx)(c.default,{href:"/",className:"transition-colors hover:text-[hsl(var(--foreground))]",children:"主页"}),m.map((a,d)=>(0,b.jsxs)("span",{className:"flex items-center gap-1",children:[(0,b.jsx)(e.ChevronRight,{className:"h-3 w-3 opacity-60"}),a.href?(0,b.jsx)(c.default,{href:a.href,className:"transition-colors hover:text-[hsl(var(--foreground))]",children:a.label}):(0,b.jsx)("span",{className:"font-medium text-[hsl(var(--foreground))]",children:a.label})]},`${a.label}-${d}`))]}),(0,b.jsxs)("div",{className:"flex items-start justify-between gap-4",children:[(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsx)("h1",{className:"text-xl font-semibold leading-tight text-[hsl(var(--foreground))]",children:a}),h&&(0,b.jsx)("p",{className:"text-[13px] text-[hsl(var(--muted-foreground))]",children:h})]}),j&&(0,b.jsx)("div",{className:"flex shrink-0 items-center gap-2",children:j})]})]})}])},28303,a=>{"use strict";var b=a.i(634020),c=a.i(502482),d=a.i(880470),e=a.i(71562),f=a.i(771071),g=a.i(680904),h=a.i(263265),i=a.i(147845),j=a.i(1078),k=a.i(776192),l=a.i(172518),m=a.i(470535),n=a.i(692942),o=a.i(933596),p=a.i(895487),q=a.i(421347),r=a.i(225377);let s=g.z.object({memoryStoreName:g.z.string().trim().min(1,"名称不能为空").max(32,"名称不能超过 32 个字符").regex(/^[a-zA-Z0-9_]+$/,"只能包含字母、数字和下划线"),description:g.z.string().trim().max(256,"描述不超过 256 字").optional(),extractInstructions:g.z.string().trim().max(4096,"抽取指令不超过 4096 字").optional()});function t(){let a,c=(0,d.useRouter)(),g=(a=(0,p.useQueryClient)(),(0,o.useMutation)({mutationFn:a=>(0,q.createMemoryStore)(a),onSuccess:()=>{(0,r.invalidateMemoryQueries)(a)}})),i=(0,e.useForm)({resolver:(0,f.zodResolver)(s),defaultValues:{memoryStoreName:"",description:"",extractInstructions:""}});async function j(a){try{await g.mutateAsync({memoryStoreName:a.memoryStoreName,description:a.description?.length?a.description:void 0,extractInstructions:a.extractInstructions?.length?a.extractInstructions:void 0}),h.toast.success("记忆库创建成功"),c.push("/memory")}catch(a){h.toast.error(a instanceof Error?a.message:"创建记忆库失败")}}return(0,b.jsx)(n.Form,{...i,children:(0,b.jsxs)("form",{onSubmit:i.handleSubmit(j),className:"space-y-6",children:[(0,b.jsx)(u,{}),(0,b.jsxs)("section",{className:"rounded-lg border border-[hsl(var(--border))] bg-[hsl(var(--card))] p-5 shadow-sm",children:[(0,b.jsx)(v,{title:"基本信息",description:"名称用于 CLI 的 --store 参数与控制台路由,创建后不可修改;描述帮助团队识别记忆库用途。"}),(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsx)(n.FormField,{control:i.control,name:"memoryStoreName",render:({field:a})=>(0,b.jsxs)(n.FormItem,{children:[(0,b.jsxs)(n.FormLabel,{children:["名称 ",(0,b.jsx)("span",{className:"text-[hsl(var(--destructive))]",children:"*"})]}),(0,b.jsx)(n.FormControl,{children:(0,b.jsx)(l.Input,{placeholder:"my_memory_store",...a})}),(0,b.jsx)(n.FormDescription,{children:"仅支持字母、数字和下划线,最多 32 个字符。"}),(0,b.jsx)(n.FormMessage,{})]})}),(0,b.jsx)(n.FormField,{control:i.control,name:"description",render:({field:a})=>(0,b.jsxs)(n.FormItem,{children:[(0,b.jsx)(n.FormLabel,{children:"描述"}),(0,b.jsx)(n.FormControl,{children:(0,b.jsx)(m.Textarea,{placeholder:"描述这个记忆库的用途...",className:"resize-none",rows:4,...a})}),(0,b.jsx)(n.FormMessage,{})]})})]})]}),(0,b.jsxs)("section",{className:"rounded-lg border border-[hsl(var(--border))] bg-[hsl(var(--card))] p-5 shadow-sm",children:[(0,b.jsx)(v,{title:"记忆抽取指令",description:"可选。这里填写的指令会注入到后台记忆抽取的提示词中,用于引导从对话里提炼哪些信息、忽略哪些信息。留空则使用默认抽取策略。"}),(0,b.jsx)(n.FormField,{control:i.control,name:"extractInstructions",render:({field:a})=>(0,b.jsxs)(n.FormItem,{children:[(0,b.jsx)(n.FormLabel,{children:"抽取指令"}),(0,b.jsx)(n.FormControl,{children:(0,b.jsx)(m.Textarea,{placeholder:"例如:重点关注用户的医疗术语与用药偏好;忽略寒暄与客套内容。",className:"resize-none",rows:5,...a})}),(0,b.jsx)(n.FormDescription,{children:"最多 4096 个字符。创建后可在记忆库设置中修改。"}),(0,b.jsx)(n.FormMessage,{})]})})]}),(0,b.jsxs)("div",{className:"flex justify-end gap-3 border-t border-[hsl(var(--border-light))] pt-4",children:[(0,b.jsx)(k.Button,{type:"button",variant:"outline",onClick:()=>c.push("/memory"),children:"取消"}),(0,b.jsx)(k.Button,{type:"submit",disabled:g.isPending,children:g.isPending?"创建中...":"创建记忆库"})]})]})})}function u(){return(0,b.jsxs)("div",{className:"animate-home-reveal relative overflow-hidden rounded-lg border border-dashed border-[hsl(var(--primary)/0.35)] bg-gradient-to-br from-[hsl(var(--primary-soft))] via-[hsl(var(--surface))] to-[hsl(var(--surface))] px-5 py-5",role:"region","aria-label":"创建记忆库引导",children:[(0,b.jsx)(j.Sparkles,{className:"pointer-events-none absolute right-3 top-3 h-3.5 w-3.5 text-[hsl(var(--primary)/0.45)]","aria-hidden":!0}),(0,b.jsxs)("div",{className:"flex items-start gap-4",children:[(0,b.jsx)("div",{className:"flex h-11 w-11 shrink-0 items-center justify-center rounded-xl bg-[hsl(var(--primary-soft))] ring-1 ring-[hsl(var(--primary)/0.18)]",children:(0,b.jsx)(i.Brain,{className:"h-5 w-5 text-[hsl(var(--primary))]"})}),(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsx)("h3",{className:"text-sm font-semibold text-[hsl(var(--foreground))]",children:"智能体的长期记忆"}),(0,b.jsxs)("p",{className:"text-xs leading-relaxed text-[hsl(var(--muted-foreground))]",children:["记忆库存放对话中沉淀下来的事实、偏好与上下文, 供后续对话在",(0,b.jsx)("code",{className:"mx-1 rounded bg-[hsl(var(--muted))] px-1 py-0.5 font-mono text-[10px]",children:"应用"}),"+",(0,b.jsx)("code",{className:"mx-1 rounded bg-[hsl(var(--muted))] px-1 py-0.5 font-mono text-[10px]",children:"租户"}),"维度内自动检索与写回。"]})]})]})]})}function v({title:a,description:c}){return(0,b.jsxs)("header",{className:"mb-4 border-b border-[hsl(var(--border-light))] pb-3",children:[(0,b.jsx)("h3",{className:"text-[15px] font-semibold leading-tight text-[hsl(var(--foreground))]",children:a}),(0,b.jsx)("p",{className:"mt-1 text-xs leading-relaxed text-[hsl(var(--muted-foreground))]",children:c})]})}a.s(["default",0,function(){return(0,b.jsxs)("div",{className:"mx-auto max-w-3xl space-y-6",children:[(0,b.jsx)(c.PageHeader,{title:"创建记忆库",description:"登记一个新的记忆库;记忆库是同一应用 + 租户下记忆条目的共享容器"}),(0,b.jsx)(t,{})]})}],28303)}];
2
2
 
3
3
  //# sourceMappingURL=dashboard_src_0l1.0wg._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[909598,a=>{"use strict";var b=a.i(634020),c=a.i(971938),d=a.i(880470),e=a.i(263265),f=a.i(700623),g=a.i(637102),h=a.i(776192),i=a.i(604395),j=a.i(843836),k=a.i(887617),l=a.i(324567),m=a.i(865271),n=a.i(983366),o=a.i(421347),p=a.i(225377),q=a.i(739096);let r=new Set(["completed","completed_with_failures","failed","cancelled"]);var s=a.i(933596),t=a.i(895487),u=a.i(1078),v=a.i(36890),w=a.i(663525),x=a.i(350681),y=a.i(109734),z=a.i(223301),A=a.i(434841),B=a.i(726436),C=a.i(364565);let D={ADD:"bg-success-soft text-success",UPDATE:"bg-info-soft text-info",DELETE:"bg-danger-soft text-danger",MERGE:"bg-[hsl(var(--primary-soft))] text-[hsl(var(--primary))]",NOOP:"bg-muted text-muted-foreground"};function E({open:a,onOpenChange:c,memoryStoreName:d,selected:e,onConfirm:f,busy:g}){let i={};for(let a of e)i[a.action]=(i[a.action]??0)+1;let k=(i.DELETE??0)>0,l=e.slice(0,6),m=e.length-l.length;return(0,b.jsx)(j.Dialog,{open:a,onOpenChange:c,children:(0,b.jsxs)(j.DialogContent,{className:"max-w-xl",children:[(0,b.jsxs)(j.DialogHeader,{children:[(0,b.jsx)(j.DialogTitle,{children:"确认应用所选动作"}),(0,b.jsxs)(j.DialogDescription,{children:["将对记忆库 ",(0,b.jsx)("span",{className:"font-mono",children:d})," ","应用 ",e.length," 条动作。该操作会写入记忆库,无法自动撤销。"]})]}),(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsx)("div",{className:"flex flex-wrap items-center gap-2 rounded border border-[hsl(var(--border-light))] bg-[hsl(var(--muted)/0.3)] p-2",children:Object.keys(i).map(a=>(0,b.jsxs)("span",{className:(0,C.cn)("inline-flex items-center gap-1 rounded px-2 py-0.5 text-xs font-mono font-semibold",D[a]??"bg-muted text-muted-foreground"),children:[a," ",(0,b.jsxs)("span",{className:"font-normal opacity-80",children:["×",i[a]]})]},a))}),k&&(0,b.jsx)("p",{className:"rounded border border-[hsl(var(--destructive)/0.3)] bg-danger-soft/40 px-3 py-2 text-xs text-danger",children:"所选动作包含 DELETE,应用后对应记忆将被删除。"}),(0,b.jsxs)("ul",{className:"max-h-72 space-y-1.5 overflow-auto rounded border border-[hsl(var(--border-light))] p-2",children:[l.map(a=>(0,b.jsxs)("li",{className:"flex items-start gap-2 text-xs",children:[(0,b.jsx)("span",{className:(0,C.cn)("mt-0.5 shrink-0 rounded px-1.5 py-0.5 font-mono text-[10px] font-semibold",D[a.action]??"bg-muted text-muted-foreground"),children:a.action}),(0,b.jsx)("span",{className:"line-clamp-2 flex-1 text-foreground/85",children:a.newMemory?.text??a.reason??`(${a.actionId.slice(0,12)}…)`})]},a.actionId)),m>0&&(0,b.jsxs)("li",{className:"pt-1 text-center text-[11px] italic text-muted-foreground",children:[(0,b.jsx)(u.Sparkles,{className:"mr-1 inline-block h-3 w-3"}),"还有 ",m," 条动作未在此预览"]})]})]}),(0,b.jsxs)(j.DialogFooter,{children:[(0,b.jsx)(h.Button,{variant:"outline",onClick:()=>c(!1),disabled:g,children:"取消"}),(0,b.jsx)(h.Button,{variant:k?"destructive":"default",onClick:f,disabled:g,children:g?"应用中…":`确认应用 ${e.length} 条`})]})]})})}let F=[{value:"all",label:"全部状态"},{value:"proposed",label:"待应用"},{value:"applied",label:"已应用"},{value:"skipped",label:"已跳过"},{value:"failed",label:"失败"}],G=[{value:"all",label:"全部类型"},{value:"ADD",label:"ADD"},{value:"UPDATE",label:"UPDATE"},{value:"DELETE",label:"DELETE"},{value:"MERGE",label:"MERGE"},{value:"NOOP",label:"NOOP"}],H=[{value:"created_at_asc",label:"创建时间 ↑"},{value:"created_at_desc",label:"创建时间 ↓"},{value:"confidence_desc",label:"置信度 ↓"}],I={proposed:"bg-info-soft text-info",applied:"bg-success-soft text-success",skipped:"bg-muted text-muted-foreground",failed:"bg-danger-soft text-danger"},J={proposed:"待应用",applied:"已应用",skipped:"已跳过",failed:"失败"},K={ADD:"bg-success-soft text-success",UPDATE:"bg-info-soft text-info",DELETE:"bg-danger-soft text-danger",MERGE:"bg-[hsl(var(--primary-soft))] text-[hsl(var(--primary))]",NOOP:"bg-muted text-muted-foreground"};function L({action:a}){return(0,b.jsx)("span",{className:(0,C.cn)("inline-flex items-center rounded px-1.5 py-0.5 text-[10px] font-mono font-semibold",K[a]??"bg-muted text-muted-foreground"),children:a})}function M({action:a,memoryStoreName:c}){let{action:d,newMemory:e,targetMemoryId:f,targetScope:g,reason:h}=a;if("ADD"===d||"UPDATE"===d){let a=e?.text;return a?(0,b.jsxs)("span",{className:"line-clamp-2 text-xs",children:["UPDATE"===d&&(0,b.jsx)("span",{className:"mr-1 rounded bg-info-soft px-1 py-px text-[10px] text-info",children:"新"}),a]}):(0,b.jsx)("span",{className:"text-muted-foreground",children:"—"})}return"NOOP"===d?(0,b.jsx)("span",{className:"line-clamp-2 text-xs italic text-muted-foreground",children:h||"无操作"}):(0,b.jsx)(N,{memoryStoreName:c,memoryId:f,scope:g,verbPrefix:"DELETE"===d?"删除":"合并"})}function N({memoryStoreName:a,memoryId:c,scope:d,verbPrefix:e}){let f=(0,B.useMemoryUnit)(a,c,d);if(!c)return(0,b.jsx)("span",{className:"text-muted-foreground",children:"—"});if(f.isLoading)return(0,b.jsx)(i.Skeleton,{className:"h-3 w-32"});let g=f.data?.memory?.text;return g?(0,b.jsxs)("span",{className:"line-clamp-2 text-xs",children:[(0,b.jsx)("span",{className:"mr-1 rounded bg-warning-soft px-1 py-px text-[10px] text-warning",children:e}),g]}):(0,b.jsxs)("span",{className:"text-xs text-muted-foreground",children:[e,":原记忆已不可读"]})}function O({status:a}){return(0,b.jsx)("span",{className:(0,C.cn)("inline-flex items-center rounded-full px-2 py-0.5 text-[11px] font-medium select-none whitespace-nowrap",I[a]??"bg-muted text-muted-foreground"),children:J[a]??a})}function P(a){return a&&[a.appId,a.tenantId,a.agentId,a.runId].filter(Boolean).join(" / ")||"-"}function Q({memoryStoreName:a,dreamId:d}){let f,[g,j]=(0,c.useState)("all"),[k,l]=(0,c.useState)("all"),[m,r]=(0,c.useState)("created_at_asc"),[B,C]=(0,c.useState)(0),D=function(a,b,c,d){let{context:e,ready:f}=(0,q.useRuntimeContext)();return(0,n.useQuery)({queryKey:p.queryKeys.dreamActions(e.dataScopeKey,a,b,c,d?.nextToken,d?.limit),queryFn:()=>(0,o.listDreamActions)(a,b,c,d),enabled:f&&!!a&&!!b})}(a,d,(0,c.useMemo)(()=>{let a={orderBy:m};return"all"!==g&&(a.status=g),"all"!==k&&(a.action=k),B>0&&(a.minConfidence=B),a},[g,k,m,B]),{limit:100}),I=D.data?.items??[],[J,K]=(0,c.useState)(new Set),[N,R]=(0,c.useState)(null),[T,U]=(0,c.useState)(!1),V=(f=(0,t.useQueryClient)(),(0,s.useMutation)({mutationFn:({actionIds:b,applier:c})=>(0,o.applyDreamActions)(a,d,b,c),onSuccess:()=>{f.invalidateQueries({queryKey:["memory"],predicate:b=>Array.isArray(b.queryKey)&&b.queryKey.includes(a)&&b.queryKey.includes(d)}),f.invalidateQueries({queryKey:["memory"],predicate:b=>Array.isArray(b.queryKey)&&b.queryKey.includes(a)&&(b.queryKey.includes("units")||b.queryKey.includes("scopes"))})}})),W=I.filter(a=>"proposed"===a.status).length,X=W>0&&I.every(a=>"proposed"!==a.status||J.has(a.actionId)),Y=async()=>{try{let a=await V.mutateAsync({actionIds:Array.from(J)});e.toast.success(`Apply 完成:成功 ${a.applied},失败 ${a.failed}`),K(new Set),U(!1)}catch(b){let a=b instanceof Error?b.message:"应用失败";e.toast.error(a)}};return(0,b.jsx)(A.TooltipProvider,{children:(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-3 rounded-md border border-[hsl(var(--border-light))] p-3",children:[(0,b.jsxs)(w.Select,{value:g,onValueChange:j,children:[(0,b.jsx)(w.SelectTrigger,{className:"h-8 w-32 text-sm",children:(0,b.jsx)(w.SelectValue,{})}),(0,b.jsx)(w.SelectContent,{children:F.map(a=>(0,b.jsx)(w.SelectItem,{value:a.value,children:a.label},a.value))})]}),(0,b.jsxs)(w.Select,{value:k,onValueChange:l,children:[(0,b.jsx)(w.SelectTrigger,{className:"h-8 w-32 text-sm",children:(0,b.jsx)(w.SelectValue,{})}),(0,b.jsx)(w.SelectContent,{children:G.map(a=>(0,b.jsx)(w.SelectItem,{value:a.value,children:a.label},a.value))})]}),(0,b.jsxs)(w.Select,{value:m,onValueChange:a=>r(a),children:[(0,b.jsx)(w.SelectTrigger,{className:"h-8 w-32 text-sm",children:(0,b.jsx)(w.SelectValue,{})}),(0,b.jsx)(w.SelectContent,{children:H.map(a=>(0,b.jsx)(w.SelectItem,{value:a.value,children:a.label},a.value))})]}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("span",{className:"text-xs text-muted-foreground",children:"最小置信度"}),(0,b.jsx)(x.Slider,{value:[B],max:1,step:.05,onValueChange:a=>C(a[0]??0),className:"w-32"}),(0,b.jsx)("span",{className:"font-mono text-xs",children:B.toFixed(2)})]}),(0,b.jsxs)("div",{className:"ml-auto flex items-center gap-2",children:[(0,b.jsxs)("span",{className:"text-xs text-muted-foreground",children:["已选 ",J.size]}),(0,b.jsx)(h.Button,{size:"sm",disabled:0===J.size||V.isPending,onClick:()=>U(!0),children:V.isPending?"应用中…":`Apply selected (${J.size})`})]})]}),D.isLoading?(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(i.Skeleton,{className:"h-10 w-full"}),(0,b.jsx)(i.Skeleton,{className:"h-10 w-full"})]}):0===I.length?(0,b.jsxs)("div",{className:"rounded-lg border border-dashed border-[hsl(var(--border))] py-10 text-center text-sm text-muted-foreground",children:[(0,b.jsx)(u.Sparkles,{className:"mx-auto mb-2 h-6 w-6 text-muted-foreground/60"}),"当前过滤条件下暂无动作"]}):(0,b.jsx)("div",{className:"rounded-lg border border-[hsl(var(--border))]",children:(0,b.jsxs)(z.Table,{children:[(0,b.jsx)(z.TableHeader,{children:(0,b.jsxs)(z.TableRow,{children:[(0,b.jsx)(z.TableHead,{className:"w-8",children:(0,b.jsx)(v.Checkbox,{checked:X,onCheckedChange:()=>{X?K(new Set):K(new Set(I.filter(a=>"proposed"===a.status).map(a=>a.actionId)))},disabled:0===W,"aria-label":"全选可应用动作"})}),(0,b.jsx)(z.TableHead,{children:"类型"}),(0,b.jsx)(z.TableHead,{children:"状态"}),(0,b.jsx)(z.TableHead,{children:"目标 scope"}),(0,b.jsx)(z.TableHead,{children:"影响"}),(0,b.jsx)(z.TableHead,{className:"text-right",children:"置信度"})]})}),(0,b.jsx)(z.TableBody,{children:I.map(c=>{let d="proposed"===c.status;return(0,b.jsxs)(z.TableRow,{className:"cursor-pointer hover:bg-[hsl(var(--accent))]",onClick:()=>R(c),children:[(0,b.jsx)(z.TableCell,{onClick:a=>a.stopPropagation(),children:d?(0,b.jsx)(v.Checkbox,{checked:J.has(c.actionId),onCheckedChange:()=>{var a;return a=c.actionId,void K(b=>{let c=new Set(b);return c.has(a)?c.delete(a):c.add(a),c})},"aria-label":"选择此动作"}):(0,b.jsxs)(A.Tooltip,{children:[(0,b.jsx)(A.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("span",{children:(0,b.jsx)(v.Checkbox,{checked:!1,disabled:!0,"aria-label":"不可选"})})}),(0,b.jsx)(A.TooltipContent,{children:"仅 proposed 状态的动作可以 apply"})]})}),(0,b.jsx)(z.TableCell,{children:(0,b.jsx)(L,{action:c.action})}),(0,b.jsx)(z.TableCell,{children:(0,b.jsx)(O,{status:c.status})}),(0,b.jsx)(z.TableCell,{className:"text-xs",children:P(c.targetScope)}),(0,b.jsx)(z.TableCell,{className:"max-w-md",children:(0,b.jsx)(M,{action:c,memoryStoreName:a})}),(0,b.jsx)(z.TableCell,{className:"text-right font-mono text-xs",children:void 0!==c.confidence?c.confidence.toFixed(2):"-"})]},c.actionId)})})]})}),(0,b.jsx)(y.Sheet,{open:null!==N,onOpenChange:a=>!a&&R(null),children:(0,b.jsx)(y.SheetContent,{className:"w-[560px] sm:max-w-[560px]",children:N&&(0,b.jsx)(S,{detail:N,memoryStoreName:a})})}),(0,b.jsx)(E,{open:T,onOpenChange:U,memoryStoreName:a,selected:I.filter(a=>J.has(a.actionId)),onConfirm:Y,busy:V.isPending})]})})}function R({detail:a,memoryStoreName:c}){let d="UPDATE"===a.action||"DELETE"===a.action||"MERGE"===a.action,e=(0,B.useMemoryUnit)(c,d?a.targetMemoryId:void 0,d?a.targetScope:null,d),f=a.newMemory?.text;if("NOOP"===a.action)return(0,b.jsx)("div",{className:"rounded border border-dashed border-[hsl(var(--border))] bg-[hsl(var(--muted)/0.2)] p-3 text-xs italic text-muted-foreground",children:"NOOP — 无记忆变更"});let g=e.data?.memory?.text,h=e.data?.memory?.unit_type;return(0,b.jsxs)("div",{className:"space-y-3",children:[d&&(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsxs)("p",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[(0,b.jsx)("span",{className:"rounded bg-warning-soft px-1.5 py-px text-[10px] font-semibold text-warning",children:"修改前"}),"目标记忆",h&&(0,b.jsxs)("span",{className:"font-mono text-[10px] text-muted-foreground",children:["· ",h]})]}),e.isLoading?(0,b.jsx)(i.Skeleton,{className:"h-16 w-full"}):g?(0,b.jsx)("pre",{className:"max-h-48 overflow-auto whitespace-pre-wrap rounded bg-[hsl(var(--muted)/0.4)] p-2 text-xs",children:g}):(0,b.jsx)("p",{className:"rounded border border-dashed border-[hsl(var(--border))] p-2 text-xs italic text-muted-foreground",children:"原始记忆已不可读(可能已被其他 dream 任务删除或合并)"})]}),f&&(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsxs)("p",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[(0,b.jsx)("span",{className:(0,C.cn)("rounded px-1.5 py-px text-[10px] font-semibold","ADD"===a.action?"bg-success-soft text-success":"bg-info-soft text-info"),children:"ADD"===a.action?"将新增":"修改后"}),"新记忆",a.newMemory?.unitType&&(0,b.jsxs)("span",{className:"font-mono text-[10px] text-muted-foreground",children:["· ",a.newMemory.unitType]})]}),(0,b.jsx)("pre",{className:"max-h-48 overflow-auto whitespace-pre-wrap rounded bg-[hsl(var(--muted)/0.4)] p-2 text-xs",children:f})]}),"DELETE"===a.action&&(0,b.jsx)("p",{className:"rounded border border-dashed border-[hsl(var(--destructive)/0.3)] bg-danger-soft/40 p-2 text-xs text-danger",children:"应用后这条记忆将被删除。"}),"MERGE"===a.action&&(0,b.jsx)("p",{className:"rounded border border-dashed border-[hsl(var(--border))] p-2 text-xs text-muted-foreground",children:"应用后这条记忆将被合并入相关记忆。"})]})}function S({detail:a,memoryStoreName:c}){return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(y.SheetHeader,{children:[(0,b.jsxs)(y.SheetTitle,{children:[(0,b.jsx)(L,{action:a.action})," 动作详情"]}),(0,b.jsx)(y.SheetDescription,{className:"font-mono text-xs break-all",children:a.actionId})]}),(0,b.jsxs)("div",{className:"space-y-4 overflow-auto py-4 text-sm",children:[(0,b.jsx)(R,{detail:a,memoryStoreName:c}),(0,b.jsxs)("div",{className:"space-y-2 rounded border border-[hsl(var(--border-light))] p-3",children:[(0,b.jsx)(T,{label:"状态",children:(0,b.jsx)(O,{status:a.status})}),(0,b.jsx)(T,{label:"置信度",value:void 0!==a.confidence?a.confidence.toFixed(2):"-"}),(0,b.jsx)(T,{label:"目标 scope",value:P(a.targetScope)}),a.targetMemoryId&&(0,b.jsx)(T,{label:"目标 memory ID",value:a.targetMemoryId,mono:!0}),a.resultMemoryId&&(0,b.jsx)(T,{label:"结果 memory ID",value:a.resultMemoryId,mono:!0})]}),a.reason&&(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:"推理依据"}),(0,b.jsx)("pre",{className:"max-h-40 overflow-auto whitespace-pre-wrap rounded bg-[hsl(var(--muted)/0.4)] p-2 text-xs",children:a.reason})]}),a.skippedReason&&(0,b.jsx)(T,{label:"跳过原因",value:`${a.skippedReason}${a.skippedReasonDetail?`(${a.skippedReasonDetail})`:""}`}),a.error&&(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:"错误"}),(0,b.jsx)("pre",{className:"max-h-40 overflow-auto whitespace-pre-wrap rounded bg-danger-soft p-2 text-xs text-danger",children:a.error})]})]})]})}function T({label:a,value:c,mono:d,children:e}){return(0,b.jsxs)("div",{className:"flex items-start gap-3",children:[(0,b.jsx)("p",{className:"w-28 shrink-0 text-xs text-muted-foreground",children:a}),e?(0,b.jsx)("div",{children:e}):(0,b.jsx)("p",{className:(0,C.cn)("flex-1 text-sm",d&&"font-mono"),children:c??"-"})]})}var U=a.i(601170);let V={queued:"bg-info-soft text-info",running:"bg-info-soft text-info",planning:"bg-info-soft text-info",applying:"bg-info-soft text-info",completed:"bg-success-soft text-success",completed_with_failures:"bg-warning-soft text-warning",failed:"bg-danger-soft text-danger",cancelled:"bg-muted text-muted-foreground"},W={queued:"排队中",running:"运行中",planning:"规划中",applying:"应用中",completed:"已完成",completed_with_failures:"完成(含失败)",failed:"失败",cancelled:"已取消"};function X({status:a}){let c=!r.has(a);return(0,b.jsxs)("span",{className:(0,C.cn)("inline-flex items-center gap-1 rounded-full px-2.5 py-0.5 text-xs font-medium select-none whitespace-nowrap",V[a]??"bg-muted text-muted-foreground"),children:[c&&(0,b.jsxs)("span",{className:"relative flex h-1.5 w-1.5",children:[(0,b.jsx)("span",{className:"absolute inline-flex h-full w-full animate-ping rounded-full bg-current opacity-60"}),(0,b.jsx)("span",{className:"relative inline-flex h-1.5 w-1.5 rounded-full bg-current"})]}),W[a]??a]})}function Y({label:a,value:c}){return(0,b.jsxs)("div",{className:"flex flex-col",children:[(0,b.jsx)("span",{className:"text-xs text-muted-foreground",children:a}),(0,b.jsx)("span",{className:"text-base font-semibold tabular-nums",children:c})]})}a.s(["default",0,function(){let a,u=(0,d.useParams)(),v=(0,d.useRouter)(),w=decodeURIComponent(u.store),x=decodeURIComponent(u.dreamId),y=function(a,b){let{context:c,ready:d}=(0,q.useRuntimeContext)();return(0,n.useQuery)({queryKey:p.queryKeys.dreamTask(c.dataScopeKey,a,b),queryFn:()=>(0,o.getDreamTask)(a,b),enabled:d&&!!a&&!!b,refetchInterval:a=>{let b=a.state.data;return b?!r.has(b.status)&&5e3:5e3},refetchIntervalInBackground:!1})}(w,x),z=(a=(0,t.useQueryClient)(),(0,s.useMutation)({mutationFn:a=>(0,o.cancelDreamTask)(w,a),onSuccess:()=>{a.invalidateQueries({queryKey:["memory"],predicate:a=>Array.isArray(a.queryKey)&&a.queryKey.includes("dream-tasks")&&a.queryKey.includes(w)})}})),[A,B]=(0,c.useState)(!1),[C,D]=(0,c.useState)(!1);if(y.error instanceof Error&&"code"in y.error&&"DREAMING_DISABLED"===y.error.code)return(0,b.jsx)(U.MemoryDreamDisabled,{});let E=y.data,F=E&&r.has(E.status),G=async()=>{try{await z.mutateAsync(x),e.toast.success("已取消任务"),B(!1)}catch(b){let a=b instanceof Error?b.message:"取消失败";e.toast.error(a)}};return(0,b.jsxs)("div",{className:"space-y-5",children:[(0,b.jsx)("div",{className:"flex items-center gap-2",children:(0,b.jsxs)(h.Button,{variant:"ghost",size:"sm",onClick:()=>v.push(`/memory/${encodeURIComponent(w)}/dream`),children:[(0,b.jsx)(f.ArrowLeft,{className:"mr-1 h-3.5 w-3.5"}),"返回记忆整理列表"]})}),y.isLoading?(0,b.jsx)(i.Skeleton,{className:"h-32 w-full"}):E?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{className:"rounded-lg border border-[hsl(var(--border))] p-5",children:[(0,b.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsx)("h2",{className:"font-mono text-base",children:E.dreamId}),(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2 text-xs text-muted-foreground",children:[(0,b.jsx)(X,{status:E.status}),(0,b.jsx)("span",{children:"safe_auto"===E.applyMode?"应用模式:安全变更自动应用":"应用模式:建议(手动 apply)"}),(0,b.jsx)("span",{children:"·"}),(0,b.jsxs)("span",{children:["Scope 输出:","promote_scope"===E.scopeOutputMode?"提升":"保留"]}),!F&&(0,b.jsx)("span",{className:"ml-1 italic",children:"· 每 5 秒自动刷新"})]})]}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(k.RefreshButton,{onClick:()=>y.refetch(),loading:y.isRefetching}),E.lastError&&(0,b.jsxs)(h.Button,{size:"sm",variant:"outline",onClick:()=>D(!0),className:"text-[hsl(var(--destructive))]",children:[(0,b.jsx)(g.AlertTriangle,{className:"mr-1 h-3.5 w-3.5"}),"查看错误"]}),!F&&(0,b.jsx)(h.Button,{size:"sm",variant:"outline",onClick:()=>B(!0),disabled:z.isPending,children:"取消任务"})]})]}),(0,b.jsxs)("div",{className:"mt-5 grid grid-cols-2 gap-4 sm:grid-cols-4",children:[(0,b.jsx)(Y,{label:"会话数",value:E.input.sessionCount}),(0,b.jsx)(Y,{label:"消息数",value:E.input.messageCount}),(0,b.jsx)(Y,{label:"记忆数",value:E.input.memoryCount}),(0,b.jsx)(Y,{label:"动作总数",value:E.actions.total}),(0,b.jsx)(Y,{label:"待应用",value:E.actions.proposed}),(0,b.jsx)(Y,{label:"已应用",value:E.actions.applied}),(0,b.jsx)(Y,{label:"跳过",value:E.actions.skipped}),(0,b.jsx)(Y,{label:"失败",value:E.actions.failed})]}),(0,b.jsxs)("div",{className:"mt-5 flex flex-wrap gap-x-6 gap-y-1 text-xs text-muted-foreground",children:[(0,b.jsxs)("span",{children:["创建:",(0,b.jsx)(m.RelativeTime,{timestamp:new Date(E.createdAt).getTime()})]}),(0,b.jsxs)("span",{children:["更新:",(0,b.jsx)(m.RelativeTime,{timestamp:new Date(E.updatedAt).getTime()})]}),E.finishedAt&&(0,b.jsxs)("span",{children:["完成:",(0,b.jsx)(m.RelativeTime,{timestamp:new Date(E.finishedAt).getTime()})]}),E.input.scopes&&E.input.scopes.length>0&&(0,b.jsxs)("span",{children:["输入 scopes:",E.input.scopes.map(a=>[a.appId,a.tenantId,a.agentId,a.runId].filter(Boolean).join(" / ")||"-").slice(0,3).join(" | "),E.input.scopes.length>3&&` +${E.input.scopes.length-3}`]})]})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("h3",{className:"mb-3 text-sm font-semibold",children:"动作"}),(0,b.jsx)(Q,{memoryStoreName:w,dreamId:x})]}),(0,b.jsx)(l.ConfirmDialog,{open:A,onOpenChange:B,title:"确认取消记忆整理任务",description:"任务将停止后续动作生成,已应用的动作不会回滚。",variant:"danger",onConfirm:G}),(0,b.jsx)(j.Dialog,{open:C,onOpenChange:D,children:(0,b.jsxs)(j.DialogContent,{className:"max-w-2xl",children:[(0,b.jsx)(j.DialogHeader,{children:(0,b.jsx)(j.DialogTitle,{children:"最后一次错误"})}),(0,b.jsx)("pre",{className:"max-h-96 overflow-auto rounded bg-danger-soft p-3 text-xs text-danger",children:E.lastError})]})})]}):(0,b.jsx)("div",{className:"rounded-lg border border-dashed py-10 text-center text-sm text-muted-foreground",children:"任务不存在或已被删除"})]})}],909598)}];
1
+ module.exports=[909598,a=>{"use strict";var b=a.i(634020),c=a.i(971938),d=a.i(880470),e=a.i(263265),f=a.i(700623),g=a.i(637102),h=a.i(776192),i=a.i(604395),j=a.i(843836),k=a.i(887617),l=a.i(324567),m=a.i(865271),n=a.i(983366),o=a.i(421347),p=a.i(225377),q=a.i(739096);let r=new Set(["completed","completed_with_failures","failed","cancelled"]);var s=a.i(933596),t=a.i(895487),u=a.i(1078),v=a.i(36890),w=a.i(663525),x=a.i(350681),y=a.i(109734),z=a.i(223301),A=a.i(434841),B=a.i(726436),C=a.i(364565);let D={ADD:"bg-success-soft text-success",UPDATE:"bg-info-soft text-info",DELETE:"bg-danger-soft text-danger",MERGE:"bg-[hsl(var(--primary-soft))] text-[hsl(var(--primary))]",NOOP:"bg-muted text-muted-foreground",EMIT_SKILL:"bg-success-soft text-success",EMIT_PROFILE:"bg-[hsl(var(--primary-soft))] text-[hsl(var(--primary))]"};function E({open:a,onOpenChange:c,memoryStoreName:d,selected:e,onConfirm:f,busy:g}){let i={};for(let a of e)i[a.action]=(i[a.action]??0)+1;let k=(i.DELETE??0)>0,l=e.slice(0,6),m=e.length-l.length;return(0,b.jsx)(j.Dialog,{open:a,onOpenChange:c,children:(0,b.jsxs)(j.DialogContent,{className:"max-w-xl",children:[(0,b.jsxs)(j.DialogHeader,{children:[(0,b.jsx)(j.DialogTitle,{children:"确认应用所选动作"}),(0,b.jsxs)(j.DialogDescription,{children:["将对记忆库 ",(0,b.jsx)("span",{className:"font-mono",children:d})," ","应用 ",e.length," 条动作。该操作会写入记忆库,无法自动撤销。"]})]}),(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsx)("div",{className:"flex flex-wrap items-center gap-2 rounded border border-[hsl(var(--border-light))] bg-[hsl(var(--muted)/0.3)] p-2",children:Object.keys(i).map(a=>(0,b.jsxs)("span",{className:(0,C.cn)("inline-flex items-center gap-1 rounded px-2 py-0.5 text-xs font-mono font-semibold",D[a]??"bg-muted text-muted-foreground"),children:[a," ",(0,b.jsxs)("span",{className:"font-normal opacity-80",children:["×",i[a]]})]},a))}),k&&(0,b.jsx)("p",{className:"rounded border border-[hsl(var(--destructive)/0.3)] bg-danger-soft/40 px-3 py-2 text-xs text-danger",children:"所选动作包含 DELETE,应用后对应记忆将被删除。"}),(0,b.jsxs)("ul",{className:"max-h-72 space-y-1.5 overflow-auto rounded border border-[hsl(var(--border-light))] p-2",children:[l.map(a=>(0,b.jsxs)("li",{className:"flex items-start gap-2 text-xs",children:[(0,b.jsx)("span",{className:(0,C.cn)("mt-0.5 shrink-0 rounded px-1.5 py-0.5 font-mono text-[10px] font-semibold",D[a.action]??"bg-muted text-muted-foreground"),children:a.action}),(0,b.jsx)("span",{className:"line-clamp-2 flex-1 text-foreground/85",children:a.newMemory?.text??a.reason??`(${a.actionId.slice(0,12)}…)`})]},a.actionId)),m>0&&(0,b.jsxs)("li",{className:"pt-1 text-center text-[11px] italic text-muted-foreground",children:[(0,b.jsx)(u.Sparkles,{className:"mr-1 inline-block h-3 w-3"}),"还有 ",m," 条动作未在此预览"]})]})]}),(0,b.jsxs)(j.DialogFooter,{children:[(0,b.jsx)(h.Button,{variant:"outline",onClick:()=>c(!1),disabled:g,children:"取消"}),(0,b.jsx)(h.Button,{variant:k?"destructive":"default",onClick:f,disabled:g,children:g?"应用中…":`确认应用 ${e.length} 条`})]})]})})}let F=[{value:"all",label:"全部状态"},{value:"proposed",label:"待应用"},{value:"applied",label:"已应用"},{value:"skipped",label:"已跳过"},{value:"failed",label:"失败"}],G=[{value:"all",label:"全部类型"},{value:"ADD",label:"ADD"},{value:"UPDATE",label:"UPDATE"},{value:"DELETE",label:"DELETE"},{value:"MERGE",label:"MERGE"},{value:"NOOP",label:"NOOP"},{value:"EMIT_SKILL",label:"EMIT_SKILL"},{value:"EMIT_PROFILE",label:"EMIT_PROFILE"}],H=[{value:"created_at_asc",label:"创建时间 ↑"},{value:"created_at_desc",label:"创建时间 ↓"},{value:"confidence_desc",label:"置信度 ↓"}],I={proposed:"bg-info-soft text-info",applied:"bg-success-soft text-success",skipped:"bg-muted text-muted-foreground",failed:"bg-danger-soft text-danger"},J={proposed:"待应用",applied:"已应用",skipped:"已跳过",failed:"失败"},K={ADD:"bg-success-soft text-success",UPDATE:"bg-info-soft text-info",DELETE:"bg-danger-soft text-danger",MERGE:"bg-[hsl(var(--primary-soft))] text-[hsl(var(--primary))]",NOOP:"bg-muted text-muted-foreground",EMIT_SKILL:"bg-success-soft text-success",EMIT_PROFILE:"bg-[hsl(var(--primary-soft))] text-[hsl(var(--primary))]"};function L({action:a}){return(0,b.jsx)("span",{className:(0,C.cn)("inline-flex items-center rounded px-1.5 py-0.5 text-[10px] font-mono font-semibold",K[a]??"bg-muted text-muted-foreground"),children:a})}function M({action:a,memoryStoreName:c}){let{action:d,newMemory:e,newExtract:f,targetMemoryId:g,targetScope:h,reason:i}=a;if("EMIT_SKILL"===d||"EMIT_PROFILE"===d)return f?(0,b.jsxs)("span",{className:"line-clamp-2 text-xs",children:[(0,b.jsx)("span",{className:(0,C.cn)("mr-1 rounded px-1 py-px text-[10px] font-medium","EMIT_SKILL"===d?"bg-success-soft text-success":"bg-[hsl(var(--primary-soft))] text-[hsl(var(--primary))]"),children:"EMIT_SKILL"===d?"技能":"画像"}),f.name,f.description&&(0,b.jsxs)("span",{className:"text-muted-foreground",children:[" — ",f.description]})]}):(0,b.jsx)("span",{className:"text-muted-foreground",children:"—"});if("ADD"===d||"UPDATE"===d){let a=e?.text;return a?(0,b.jsxs)("span",{className:"line-clamp-2 text-xs",children:["UPDATE"===d&&(0,b.jsx)("span",{className:"mr-1 rounded bg-info-soft px-1 py-px text-[10px] text-info",children:"新"}),a]}):(0,b.jsx)("span",{className:"text-muted-foreground",children:"—"})}return"NOOP"===d?(0,b.jsx)("span",{className:"line-clamp-2 text-xs italic text-muted-foreground",children:i||"无操作"}):(0,b.jsx)(N,{memoryStoreName:c,memoryId:g,scope:h,verbPrefix:"DELETE"===d?"删除":"合并"})}function N({memoryStoreName:a,memoryId:c,scope:d,verbPrefix:e}){let f=(0,B.useMemoryUnit)(a,c,d);if(!c)return(0,b.jsx)("span",{className:"text-muted-foreground",children:"—"});if(f.isLoading)return(0,b.jsx)(i.Skeleton,{className:"h-3 w-32"});let g=f.data?.memory?.text;return g?(0,b.jsxs)("span",{className:"line-clamp-2 text-xs",children:[(0,b.jsx)("span",{className:"mr-1 rounded bg-warning-soft px-1 py-px text-[10px] text-warning",children:e}),g]}):(0,b.jsxs)("span",{className:"text-xs text-muted-foreground",children:[e,":原记忆已不可读"]})}function O({status:a}){return(0,b.jsx)("span",{className:(0,C.cn)("inline-flex items-center rounded-full px-2 py-0.5 text-[11px] font-medium select-none whitespace-nowrap",I[a]??"bg-muted text-muted-foreground"),children:J[a]??a})}function P(a){return a&&[a.appId,a.tenantId,a.agentId,a.runId].filter(Boolean).join(" / ")||"-"}function Q({memoryStoreName:a,dreamId:d,taskType:f}){let g,j="skill"===f||"profile"===f,[k,l]=(0,c.useState)("all"),[m,r]=(0,c.useState)("all"),[B,C]=(0,c.useState)("created_at_asc"),[D,I]=(0,c.useState)(0),J=function(a,b,c,d){let{context:e,ready:f}=(0,q.useRuntimeContext)();return(0,n.useQuery)({queryKey:p.queryKeys.dreamActions(e.dataScopeKey,a,b,c,d?.nextToken,d?.limit),queryFn:()=>(0,o.listDreamActions)(a,b,c,d),enabled:f&&!!a&&!!b})}(a,d,(0,c.useMemo)(()=>{let a={orderBy:B};return"all"!==k&&(a.status=k),"all"!==m&&(a.action=m),D>0&&(a.minConfidence=D),a},[k,m,B,D]),{limit:100}),K=J.data?.items??[],[N,R]=(0,c.useState)(new Set),[T,U]=(0,c.useState)(null),[V,W]=(0,c.useState)(!1),X=(g=(0,t.useQueryClient)(),(0,s.useMutation)({mutationFn:({actionIds:b,applier:c})=>(0,o.applyDreamActions)(a,d,b,c),onSuccess:()=>{g.invalidateQueries({queryKey:["memory"],predicate:b=>Array.isArray(b.queryKey)&&b.queryKey.includes(a)&&b.queryKey.includes(d)}),g.invalidateQueries({queryKey:["memory"],predicate:b=>Array.isArray(b.queryKey)&&b.queryKey.includes(a)&&(b.queryKey.includes("units")||b.queryKey.includes("scopes"))})}})),Y=a=>"proposed"===a.status&&"EMIT_SKILL"!==a.action&&"EMIT_PROFILE"!==a.action,Z=K.filter(Y).length,$=Z>0&&K.every(a=>!Y(a)||N.has(a.actionId)),_=async()=>{try{let a=await X.mutateAsync({actionIds:Array.from(N)});e.toast.success(`Apply 完成:成功 ${a.applied},失败 ${a.failed}`),R(new Set),W(!1)}catch(b){let a=b instanceof Error?b.message:"应用失败";e.toast.error(a)}};return(0,b.jsx)(A.TooltipProvider,{children:(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-3 rounded-md border border-[hsl(var(--border-light))] p-3",children:[(0,b.jsxs)(w.Select,{value:k,onValueChange:l,children:[(0,b.jsx)(w.SelectTrigger,{className:"h-8 w-32 text-sm",children:(0,b.jsx)(w.SelectValue,{})}),(0,b.jsx)(w.SelectContent,{children:F.map(a=>(0,b.jsx)(w.SelectItem,{value:a.value,children:a.label},a.value))})]}),!j&&(0,b.jsxs)(w.Select,{value:m,onValueChange:r,children:[(0,b.jsx)(w.SelectTrigger,{className:"h-8 w-32 text-sm",children:(0,b.jsx)(w.SelectValue,{})}),(0,b.jsx)(w.SelectContent,{children:G.map(a=>(0,b.jsx)(w.SelectItem,{value:a.value,children:a.label},a.value))})]}),(0,b.jsxs)(w.Select,{value:B,onValueChange:a=>C(a),children:[(0,b.jsx)(w.SelectTrigger,{className:"h-8 w-32 text-sm",children:(0,b.jsx)(w.SelectValue,{})}),(0,b.jsx)(w.SelectContent,{children:H.map(a=>(0,b.jsx)(w.SelectItem,{value:a.value,children:a.label},a.value))})]}),!j&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("span",{className:"text-xs text-muted-foreground",children:"最小置信度"}),(0,b.jsx)(x.Slider,{value:[D],max:1,step:.05,onValueChange:a=>I(a[0]??0),className:"w-32"}),(0,b.jsx)("span",{className:"font-mono text-xs",children:D.toFixed(2)})]}),(0,b.jsxs)("div",{className:"ml-auto flex items-center gap-2",children:[(0,b.jsxs)("span",{className:"text-xs text-muted-foreground",children:["已选 ",N.size]}),(0,b.jsx)(h.Button,{size:"sm",disabled:0===N.size||X.isPending,onClick:()=>W(!0),children:X.isPending?"应用中…":`Apply selected (${N.size})`})]})]})]}),J.isLoading?(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(i.Skeleton,{className:"h-10 w-full"}),(0,b.jsx)(i.Skeleton,{className:"h-10 w-full"})]}):0===K.length?(0,b.jsxs)("div",{className:"rounded-lg border border-dashed border-[hsl(var(--border))] py-10 text-center text-sm text-muted-foreground",children:[(0,b.jsx)(u.Sparkles,{className:"mx-auto mb-2 h-6 w-6 text-muted-foreground/60"}),j?"暂无产出结果。请确认输入 scope 下有足够的对话消息。":"当前过滤条件下暂无动作"]}):(0,b.jsx)("div",{className:"rounded-lg border border-[hsl(var(--border))]",children:(0,b.jsxs)(z.Table,{children:[(0,b.jsx)(z.TableHeader,{children:(0,b.jsxs)(z.TableRow,{children:[!j&&(0,b.jsx)(z.TableHead,{className:"w-8",children:(0,b.jsx)(v.Checkbox,{checked:$,onCheckedChange:()=>{$?R(new Set):R(new Set(K.filter(Y).map(a=>a.actionId)))},disabled:0===Z,"aria-label":"全选可应用动作"})}),(0,b.jsx)(z.TableHead,{children:j?"产出类型":"类型"}),(0,b.jsx)(z.TableHead,{children:"状态"}),(0,b.jsx)(z.TableHead,{children:"目标 scope"}),(0,b.jsx)(z.TableHead,{children:j?"内容":"影响"}),!j&&(0,b.jsx)(z.TableHead,{className:"text-right",children:"置信度"})]})}),(0,b.jsx)(z.TableBody,{children:K.map(c=>{let d=Y(c);return(0,b.jsxs)(z.TableRow,{className:"cursor-pointer hover:bg-[hsl(var(--accent))]",onClick:()=>U(c),children:[!j&&(0,b.jsx)(z.TableCell,{onClick:a=>a.stopPropagation(),children:d?(0,b.jsx)(v.Checkbox,{checked:N.has(c.actionId),onCheckedChange:()=>{var a;return a=c.actionId,void R(b=>{let c=new Set(b);return c.has(a)?c.delete(a):c.add(a),c})},"aria-label":"选择此动作"}):(0,b.jsxs)(A.Tooltip,{children:[(0,b.jsx)(A.TooltipTrigger,{asChild:!0,children:(0,b.jsx)("span",{children:(0,b.jsx)(v.Checkbox,{checked:!1,disabled:!0,"aria-label":"不可选"})})}),(0,b.jsx)(A.TooltipContent,{children:"仅 proposed 状态的动作可以 apply"})]})}),(0,b.jsx)(z.TableCell,{children:(0,b.jsx)(L,{action:c.action})}),(0,b.jsx)(z.TableCell,{children:(0,b.jsx)(O,{status:c.status})}),(0,b.jsx)(z.TableCell,{className:"text-xs",children:P(c.targetScope)}),(0,b.jsx)(z.TableCell,{className:"max-w-md",children:(0,b.jsx)(M,{action:c,memoryStoreName:a})}),!j&&(0,b.jsx)(z.TableCell,{className:"text-right font-mono text-xs",children:void 0!==c.confidence?c.confidence.toFixed(2):"-"})]},c.actionId)})})]})}),(0,b.jsx)(y.Sheet,{open:null!==T,onOpenChange:a=>!a&&U(null),children:(0,b.jsx)(y.SheetContent,{className:"w-[560px] sm:max-w-[560px]",children:T&&(0,b.jsx)(S,{detail:T,memoryStoreName:a})})}),(0,b.jsx)(E,{open:V,onOpenChange:W,memoryStoreName:a,selected:K.filter(a=>N.has(a.actionId)),onConfirm:_,busy:X.isPending})]})})}function R({detail:a,memoryStoreName:c}){let d="EMIT_SKILL"===a.action||"EMIT_PROFILE"===a.action,e=!d&&("UPDATE"===a.action||"DELETE"===a.action||"MERGE"===a.action),f=(0,B.useMemoryUnit)(c,e?a.targetMemoryId:void 0,e?a.targetScope:null,e),g=a.newMemory?.text;if(d){let c=a.newExtract;if(!c)return(0,b.jsx)("div",{className:"rounded border border-dashed border-[hsl(var(--border))] bg-[hsl(var(--muted)/0.2)] p-3 text-xs italic text-muted-foreground",children:"无抽取结果"});let d="EMIT_SKILL"===a.action||"skill"===c.kind;return(0,b.jsxs)("div",{className:"space-y-2 rounded border border-[hsl(var(--border-light))] p-3",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("span",{className:(0,C.cn)("rounded px-1.5 py-px text-[10px] font-semibold",d?"bg-success-soft text-success":"bg-[hsl(var(--primary-soft))] text-[hsl(var(--primary))]"),children:d?"技能":"画像"}),(0,b.jsx)("span",{className:"text-sm font-medium",children:c.name})]}),c.description&&(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:c.description}),c.instructions&&(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:"指令内容"}),(0,b.jsx)("pre",{className:"max-h-48 overflow-auto whitespace-pre-wrap rounded bg-[hsl(var(--muted)/0.4)] p-2 text-xs",children:c.instructions})]})]})}if("NOOP"===a.action)return(0,b.jsx)("div",{className:"rounded border border-dashed border-[hsl(var(--border))] bg-[hsl(var(--muted)/0.2)] p-3 text-xs italic text-muted-foreground",children:"NOOP — 无记忆变更"});let h=f.data?.memory?.text,j=f.data?.memory?.unit_type;return(0,b.jsxs)("div",{className:"space-y-3",children:[e&&(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsxs)("p",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[(0,b.jsx)("span",{className:"rounded bg-warning-soft px-1.5 py-px text-[10px] font-semibold text-warning",children:"修改前"}),"目标记忆",j&&(0,b.jsxs)("span",{className:"font-mono text-[10px] text-muted-foreground",children:["· ",j]})]}),f.isLoading?(0,b.jsx)(i.Skeleton,{className:"h-16 w-full"}):h?(0,b.jsx)("pre",{className:"max-h-48 overflow-auto whitespace-pre-wrap rounded bg-[hsl(var(--muted)/0.4)] p-2 text-xs",children:h}):(0,b.jsx)("p",{className:"rounded border border-dashed border-[hsl(var(--border))] p-2 text-xs italic text-muted-foreground",children:"原始记忆已不可读(可能已被其他 dream 任务删除或合并)"})]}),g&&(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsxs)("p",{className:"flex items-center gap-2 text-xs text-muted-foreground",children:[(0,b.jsx)("span",{className:(0,C.cn)("rounded px-1.5 py-px text-[10px] font-semibold","ADD"===a.action?"bg-success-soft text-success":"bg-info-soft text-info"),children:"ADD"===a.action?"将新增":"修改后"}),"新记忆",a.newMemory?.unitType&&(0,b.jsxs)("span",{className:"font-mono text-[10px] text-muted-foreground",children:["· ",a.newMemory.unitType]})]}),(0,b.jsx)("pre",{className:"max-h-48 overflow-auto whitespace-pre-wrap rounded bg-[hsl(var(--muted)/0.4)] p-2 text-xs",children:g})]}),"DELETE"===a.action&&(0,b.jsx)("p",{className:"rounded border border-dashed border-[hsl(var(--destructive)/0.3)] bg-danger-soft/40 p-2 text-xs text-danger",children:"应用后这条记忆将被删除。"}),"MERGE"===a.action&&(0,b.jsx)("p",{className:"rounded border border-dashed border-[hsl(var(--border))] p-2 text-xs text-muted-foreground",children:"应用后这条记忆将被合并入相关记忆。"})]})}function S({detail:a,memoryStoreName:c}){return(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)(y.SheetHeader,{children:[(0,b.jsxs)(y.SheetTitle,{children:[(0,b.jsx)(L,{action:a.action})," 动作详情"]}),(0,b.jsx)(y.SheetDescription,{className:"font-mono text-xs break-all",children:a.actionId})]}),(0,b.jsxs)("div",{className:"space-y-4 overflow-auto py-4 text-sm",children:[(0,b.jsx)(R,{detail:a,memoryStoreName:c}),(0,b.jsxs)("div",{className:"space-y-2 rounded border border-[hsl(var(--border-light))] p-3",children:[(0,b.jsx)(T,{label:"状态",children:(0,b.jsx)(O,{status:a.status})}),(0,b.jsx)(T,{label:"置信度",value:void 0!==a.confidence?a.confidence.toFixed(2):"-"}),(0,b.jsx)(T,{label:"目标 scope",value:P(a.targetScope)}),a.targetMemoryId&&(0,b.jsx)(T,{label:"目标 memory ID",value:a.targetMemoryId,mono:!0}),a.resultMemoryId&&(0,b.jsx)(T,{label:"结果 memory ID",value:a.resultMemoryId,mono:!0})]}),a.reason&&(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:"推理依据"}),(0,b.jsx)("pre",{className:"max-h-40 overflow-auto whitespace-pre-wrap rounded bg-[hsl(var(--muted)/0.4)] p-2 text-xs",children:a.reason})]}),a.skippedReason&&(0,b.jsx)(T,{label:"跳过原因",value:`${a.skippedReason}${a.skippedReasonDetail?`(${a.skippedReasonDetail})`:""}`}),a.error&&(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:"错误"}),(0,b.jsx)("pre",{className:"max-h-40 overflow-auto whitespace-pre-wrap rounded bg-danger-soft p-2 text-xs text-danger",children:a.error})]})]})]})}function T({label:a,value:c,mono:d,children:e}){return(0,b.jsxs)("div",{className:"flex items-start gap-3",children:[(0,b.jsx)("p",{className:"w-28 shrink-0 text-xs text-muted-foreground",children:a}),e?(0,b.jsx)("div",{children:e}):(0,b.jsx)("p",{className:(0,C.cn)("flex-1 text-sm",d&&"font-mono"),children:c??"-"})]})}var U=a.i(601170);let V={queued:"bg-info-soft text-info",running:"bg-info-soft text-info",planning:"bg-info-soft text-info",applying:"bg-info-soft text-info",completed:"bg-success-soft text-success",completed_with_failures:"bg-warning-soft text-warning",failed:"bg-danger-soft text-danger",cancelled:"bg-muted text-muted-foreground"},W={queued:"排队中",running:"运行中",planning:"规划中",applying:"应用中",completed:"已完成",completed_with_failures:"完成(含失败)",failed:"失败",cancelled:"已取消"};function X({status:a}){let c=!r.has(a);return(0,b.jsxs)("span",{className:(0,C.cn)("inline-flex items-center gap-1 rounded-full px-2.5 py-0.5 text-xs font-medium select-none whitespace-nowrap",V[a]??"bg-muted text-muted-foreground"),children:[c&&(0,b.jsxs)("span",{className:"relative flex h-1.5 w-1.5",children:[(0,b.jsx)("span",{className:"absolute inline-flex h-full w-full animate-ping rounded-full bg-current opacity-60"}),(0,b.jsx)("span",{className:"relative inline-flex h-1.5 w-1.5 rounded-full bg-current"})]}),W[a]??a]})}let Y={memory:"记忆整理",skill:"技能抽取",profile:"用户画像"},Z={memory:"bg-info-soft text-info",skill:"bg-success-soft text-success",profile:"bg-[hsl(var(--primary-soft,_220_90%_96%))] text-[hsl(var(--primary))]"};function $({label:a,value:c}){return(0,b.jsxs)("div",{className:"flex flex-col",children:[(0,b.jsx)("span",{className:"text-xs text-muted-foreground",children:a}),(0,b.jsx)("span",{className:"text-base font-semibold tabular-nums",children:c})]})}a.s(["default",0,function(){let a,u,v=(0,d.useParams)(),w=(0,d.useRouter)(),x=decodeURIComponent(v.store),y=decodeURIComponent(v.dreamId),z=function(a,b){let{context:c,ready:d}=(0,q.useRuntimeContext)();return(0,n.useQuery)({queryKey:p.queryKeys.dreamTask(c.dataScopeKey,a,b),queryFn:()=>(0,o.getDreamTask)(a,b),enabled:d&&!!a&&!!b,refetchInterval:a=>{let b=a.state.data;return b?!r.has(b.status)&&5e3:5e3},refetchIntervalInBackground:!1})}(x,y),A=(a=(0,t.useQueryClient)(),(0,s.useMutation)({mutationFn:a=>(0,o.cancelDreamTask)(x,a),onSuccess:()=>{a.invalidateQueries({queryKey:["memory"],predicate:a=>Array.isArray(a.queryKey)&&a.queryKey.includes("dream-tasks")&&a.queryKey.includes(x)})}})),[B,D]=(0,c.useState)(!1),[E,F]=(0,c.useState)(!1);if(z.error instanceof Error&&"code"in z.error&&"DREAMING_DISABLED"===z.error.code)return(0,b.jsx)(U.MemoryDreamDisabled,{});let G=z.data,H=G&&r.has(G.status),I=G?.taskType==="skill"||G?.taskType==="profile",J=async()=>{try{await A.mutateAsync(y),e.toast.success("已取消任务"),D(!1)}catch(b){let a=b instanceof Error?b.message:"取消失败";e.toast.error(a)}};return(0,b.jsxs)("div",{className:"space-y-5",children:[(0,b.jsx)("div",{className:"flex items-center gap-2",children:(0,b.jsxs)(h.Button,{variant:"ghost",size:"sm",onClick:()=>w.push(`/memory/${encodeURIComponent(x)}/dream`),children:[(0,b.jsx)(f.ArrowLeft,{className:"mr-1 h-3.5 w-3.5"}),"返回任务列表"]})}),z.isLoading?(0,b.jsx)(i.Skeleton,{className:"h-32 w-full"}):G?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsxs)("div",{className:"rounded-lg border border-[hsl(var(--border))] p-5",children:[(0,b.jsxs)("div",{className:"flex items-start justify-between gap-3",children:[(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)("h2",{className:"font-mono text-base",children:G.dreamId}),(u=G.taskType||"memory",(0,b.jsx)("span",{className:(0,C.cn)("inline-flex rounded-full px-2 py-0.5 text-xs font-medium whitespace-nowrap",Z[u]??"bg-muted text-muted-foreground"),children:Y[u]??u}))]}),(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-2 text-xs text-muted-foreground",children:[(0,b.jsx)(X,{status:G.status}),(!G.taskType||"memory"===G.taskType)&&(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("span",{children:"safe_auto"===G.applyMode?"应用模式:安全变更自动应用":"应用模式:建议(手动 apply)"}),(0,b.jsx)("span",{children:"·"}),(0,b.jsxs)("span",{children:["Scope 输出:","promote_scope"===G.scopeOutputMode?"提升":"保留"]})]}),!H&&(0,b.jsx)("span",{className:"ml-1 italic",children:"· 每 5 秒自动刷新"})]})]}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsx)(k.RefreshButton,{onClick:()=>z.refetch(),loading:z.isRefetching}),G.lastError&&(0,b.jsxs)(h.Button,{size:"sm",variant:"outline",onClick:()=>F(!0),className:"text-[hsl(var(--destructive))]",children:[(0,b.jsx)(g.AlertTriangle,{className:"mr-1 h-3.5 w-3.5"}),"查看错误"]}),!H&&(0,b.jsx)(h.Button,{size:"sm",variant:"outline",onClick:()=>D(!0),disabled:A.isPending,children:"取消任务"})]})]}),(0,b.jsxs)("div",{className:"mt-5 grid grid-cols-2 gap-4 sm:grid-cols-4",children:[(0,b.jsx)($,{label:"会话数",value:G.input.sessionCount}),(0,b.jsx)($,{label:"消息数",value:G.input.messageCount}),(!G.taskType||"memory"===G.taskType)&&(0,b.jsx)($,{label:"记忆数",value:G.input.memoryCount}),(0,b.jsx)($,{label:I?"产出数":"动作总数",value:G.actions.total}),I?(0,b.jsx)($,{label:"已生效",value:G.actions.applied}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)($,{label:"待应用",value:G.actions.proposed}),(0,b.jsx)($,{label:"已应用",value:G.actions.applied}),(0,b.jsx)($,{label:"跳过",value:G.actions.skipped})]}),G.actions.failed>0&&(0,b.jsx)($,{label:"失败",value:G.actions.failed})]}),(0,b.jsxs)("div",{className:"mt-5 flex flex-wrap gap-x-6 gap-y-1 text-xs text-muted-foreground",children:[(0,b.jsxs)("span",{children:["创建:",(0,b.jsx)(m.RelativeTime,{timestamp:new Date(G.createdAt).getTime()})]}),(0,b.jsxs)("span",{children:["更新:",(0,b.jsx)(m.RelativeTime,{timestamp:new Date(G.updatedAt).getTime()})]}),G.finishedAt&&(0,b.jsxs)("span",{children:["完成:",(0,b.jsx)(m.RelativeTime,{timestamp:new Date(G.finishedAt).getTime()})]}),G.input.scopes&&G.input.scopes.length>0&&(0,b.jsxs)("span",{children:["输入 scopes:",G.input.scopes.map(a=>[a.appId,a.tenantId,a.agentId,a.runId].filter(Boolean).join(" / ")||"-").slice(0,3).join(" | "),G.input.scopes.length>3&&` +${G.input.scopes.length-3}`]})]})]}),G.instructions&&(0,b.jsxs)("div",{className:"rounded-lg border border-[hsl(var(--border))] p-4",children:[(0,b.jsx)("h3",{className:"mb-2 text-sm font-semibold",children:"profile"===G.taskType?"画像模板":"skill"===G.taskType?"抽取指引":"额外指引"}),(0,b.jsx)("pre",{className:"max-h-48 overflow-auto whitespace-pre-wrap rounded bg-[hsl(var(--muted)/0.4)] p-3 text-xs",children:G.instructions})]}),(0,b.jsxs)("div",{children:[(0,b.jsx)("h3",{className:"mb-3 text-sm font-semibold",children:I?"产出结果":"动作"}),(0,b.jsx)(Q,{memoryStoreName:x,dreamId:y,taskType:G.taskType})]}),(0,b.jsx)(l.ConfirmDialog,{open:B,onOpenChange:D,title:"确认取消 Dream 任务",description:"任务将停止后续动作生成,已应用的动作不会回滚。",variant:"danger",onConfirm:J}),(0,b.jsx)(j.Dialog,{open:E,onOpenChange:F,children:(0,b.jsxs)(j.DialogContent,{className:"max-w-2xl",children:[(0,b.jsx)(j.DialogHeader,{children:(0,b.jsx)(j.DialogTitle,{children:"最后一次错误"})}),(0,b.jsx)("pre",{className:"max-h-96 overflow-auto rounded bg-danger-soft p-3 text-xs text-danger",children:G.lastError})]})})]}):(0,b.jsx)("div",{className:"rounded-lg border border-dashed py-10 text-center text-sm text-muted-foreground",children:"任务不存在或已被删除"})]})}],909598)}];
2
2
 
3
3
  //# sourceMappingURL=dashboard_src_app_%28dashboard%29_memory_%5Bstore%5D_dream_%5BdreamId%5D_page_tsx_0wy3tv6._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[696627,a=>{"use strict";var b=a.i(634020),c=a.i(971938),d=a.i(880470),e=a.i(25825),f=a.i(1078),g=a.i(776192),h=a.i(604395),i=a.i(663525),j=a.i(223301),k=a.i(887617),l=a.i(310215),m=a.i(865271),n=a.i(983366),o=a.i(421347),p=a.i(225377),q=a.i(739096),r=a.i(908264),s=a.i(601170),t=a.i(71562),u=a.i(771071),v=a.i(680904),w=a.i(263265),x=a.i(655295),y=a.i(843836),z=a.i(172518),A=a.i(962491),B=a.i(470535),C=a.i(27692),D=a.i(692942),E=a.i(933596),F=a.i(895487);let G=v.z.object({appId:v.z.string().trim().min(1,"appId 必填"),tenantId:v.z.string().trim().optional(),agentId:v.z.string().trim().optional(),runId:v.z.string().trim().optional()}).refine(a=>Object.values(a).some(a=>a&&"*"!==a),{message:"至少指定一个非通配符字段"}),H=v.z.object({scopes:v.z.array(G).min(1,"至少一个 scope"),applyMode:v.z.enum(["proposal","safe_auto"]),scopeOutputMode:v.z.enum(["preserve_scope","promote_scope"]).optional(),minTimestamp:v.z.string().optional(),maxTimestamp:v.z.string().optional(),maxSessions:v.z.string().optional(),maxMessages:v.z.string().optional(),maxMemories:v.z.string().optional(),instructions:v.z.string().optional(),clientToken:v.z.string().optional(),thresholdAdd:v.z.string().optional(),thresholdUpdate:v.z.string().optional(),thresholdMerge:v.z.string().optional()});function I(a){if(!a)return;let b=Number(a);if(Number.isFinite(b)&&Number.isInteger(b)&&!(b<=0))return b}function J(a){if(!a)return;let b=Number(a);if(Number.isFinite(b))return b}function K({memoryStoreName:a,initialScope:f,open:h,onOpenChange:j}){let k,l=(0,d.useRouter)(),m=(k=(0,F.useQueryClient)(),(0,E.useMutation)({mutationFn:b=>(0,o.createDreamTask)(a,b),onSuccess:()=>{k.invalidateQueries({queryKey:["memory"],predicate:b=>Array.isArray(b.queryKey)&&b.queryKey.includes("dream-tasks")&&b.queryKey.includes(a)})}})),n=(0,t.useForm)({resolver:(0,u.zodResolver)(H),defaultValues:{scopes:[{appId:f?.appId&&"*"!==f.appId?f.appId:"",tenantId:f?.tenantId&&"*"!==f.tenantId?f.tenantId:"",agentId:f?.agentId&&"*"!==f.agentId?f.agentId:"",runId:f?.runId&&"*"!==f.runId?f.runId:""}],applyMode:"proposal"}}),{fields:p,append:q,remove:r}=(0,t.useFieldArray)({control:n.control,name:"scopes"}),[s,v]=(0,c.useState)(!1),[G,O]=(0,c.useState)(!1),P=async b=>{let c={},d=J(b.thresholdAdd),e=J(b.thresholdUpdate),f=J(b.thresholdMerge);void 0!==d&&(c.add=d),void 0!==e&&(c.update=e),void 0!==f&&(c.merge=f);try{let d=await m.mutateAsync({scopes:b.scopes.map(a=>{let b={appId:a.appId};return a.tenantId&&(b.tenantId=a.tenantId),a.agentId&&(b.agentId=a.agentId),a.runId&&(b.runId=a.runId),b}),applyMode:b.applyMode,...b.scopeOutputMode&&{scopeOutputMode:b.scopeOutputMode},...b.minTimestamp&&{minTimestamp:b.minTimestamp},...b.maxTimestamp&&{maxTimestamp:b.maxTimestamp},...void 0!==I(b.maxSessions)&&{maxSessions:I(b.maxSessions)},...void 0!==I(b.maxMessages)&&{maxMessages:I(b.maxMessages)},...void 0!==I(b.maxMemories)&&{maxMemories:I(b.maxMemories)},...b.instructions&&{instructions:b.instructions},...b.clientToken&&{clientToken:b.clientToken},...Object.keys(c).length>0&&{confidenceThresholds:c}});w.toast.success("记忆整理任务已创建"),j(!1),n.reset(),l.push(`/memory/${encodeURIComponent(a)}/dream/${encodeURIComponent(d.dreamId)}`)}catch(b){let a=b instanceof Error?b.message:"创建失败";w.toast.error(a)}};return(0,b.jsx)(y.Dialog,{open:h,onOpenChange:j,children:(0,b.jsxs)(y.DialogContent,{className:"max-w-2xl",children:[(0,b.jsxs)(y.DialogHeader,{children:[(0,b.jsx)(y.DialogTitle,{children:"新建记忆整理任务"}),(0,b.jsx)(y.DialogDescription,{children:"Dream 会读取所选 scopes 下的消息与已有记忆,让 LLM 识别模式后生成动作建议(或自动应用)。 建议先用「建议模式」生成提案、人工审核后再应用。"})]}),(0,b.jsx)(D.Form,{...n,children:(0,b.jsxs)("form",{onSubmit:n.handleSubmit(P),className:"space-y-5",children:[(0,b.jsxs)("section",{className:"space-y-3",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsx)(A.Label,{className:"text-sm font-medium",children:"Scope 范围"}),(0,b.jsxs)(g.Button,{type:"button",size:"sm",variant:"ghost",onClick:()=>q({appId:"",tenantId:"",agentId:"",runId:""}),children:[(0,b.jsx)(e.Plus,{className:"mr-1 h-3.5 w-3.5"}),"添加 scope"]})]}),(0,b.jsx)("div",{className:"space-y-3",children:p.map((a,c)=>(0,b.jsxs)("div",{className:"grid grid-cols-1 gap-2 rounded-md border border-[hsl(var(--border-light))] p-3 sm:grid-cols-4",children:[(0,b.jsx)(L,{name:`scopes.${c}.appId`,label:"应用",form:n,required:!0}),(0,b.jsx)(L,{name:`scopes.${c}.tenantId`,label:"租户",form:n}),(0,b.jsx)(L,{name:`scopes.${c}.agentId`,label:"智能体",form:n}),(0,b.jsx)(L,{name:`scopes.${c}.runId`,label:"会话",form:n}),p.length>1&&(0,b.jsx)("div",{className:"sm:col-span-4 flex justify-end",children:(0,b.jsxs)(g.Button,{type:"button",size:"sm",variant:"ghost",onClick:()=>r(c),className:"text-[hsl(var(--destructive))]",children:[(0,b.jsx)(x.Trash2,{className:"mr-1 h-3 w-3"}),"删除"]})})]},a.id))})]}),(0,b.jsxs)("section",{className:"grid gap-3 sm:grid-cols-2",children:[(0,b.jsx)(D.FormField,{control:n.control,name:"applyMode",render:({field:a})=>(0,b.jsxs)(D.FormItem,{children:[(0,b.jsx)(D.FormLabel,{children:"应用模式"}),(0,b.jsxs)(i.Select,{onValueChange:a.onChange,defaultValue:a.value,children:[(0,b.jsx)(D.FormControl,{children:(0,b.jsx)(i.SelectTrigger,{children:(0,b.jsx)(i.SelectValue,{})})}),(0,b.jsxs)(i.SelectContent,{children:[(0,b.jsx)(i.SelectItem,{value:"proposal",children:"建议模式(生成后人工 apply,推荐)"}),(0,b.jsx)(i.SelectItem,{value:"safe_auto",children:"安全自动(仅 ADD/UPDATE 自动;DELETE/跨 scope 仍需人工)"})]})]}),(0,b.jsx)(D.FormMessage,{})]})}),(0,b.jsx)(D.FormField,{control:n.control,name:"scopeOutputMode",render:({field:a})=>(0,b.jsxs)(D.FormItem,{children:[(0,b.jsx)(D.FormLabel,{children:"Scope 输出模式"}),(0,b.jsxs)(i.Select,{onValueChange:a.onChange,value:a.value??"",children:[(0,b.jsx)(D.FormControl,{children:(0,b.jsx)(i.SelectTrigger,{children:(0,b.jsx)(i.SelectValue,{placeholder:"使用默认(preserve_scope)"})})}),(0,b.jsxs)(i.SelectContent,{children:[(0,b.jsx)(i.SelectItem,{value:"preserve_scope",children:"保留原 scope"}),(0,b.jsx)(i.SelectItem,{value:"promote_scope",children:"提升到父级 scope"})]})]}),(0,b.jsx)(D.FormMessage,{})]})})]}),(0,b.jsx)(D.FormField,{control:n.control,name:"instructions",render:({field:a})=>(0,b.jsxs)(D.FormItem,{children:[(0,b.jsx)(D.FormLabel,{children:"指令(可选)"}),(0,b.jsx)(D.FormControl,{children:(0,b.jsx)(B.Textarea,{rows:2,placeholder:"给 dream 规划器的额外指引",...a})})]})}),(0,b.jsxs)(C.Collapsible,{open:G,onOpenChange:O,children:[(0,b.jsx)(C.CollapsibleTrigger,{asChild:!0,children:(0,b.jsxs)(g.Button,{type:"button",variant:"ghost",size:"sm",className:"px-0",children:[G?"▾":"▸"," 置信度阈值"]})}),(0,b.jsxs)(C.CollapsibleContent,{className:"grid gap-3 pt-2 sm:grid-cols-3",children:[(0,b.jsx)(M,{name:"thresholdAdd",label:"add",form:n,placeholder:"0.7"}),(0,b.jsx)(M,{name:"thresholdUpdate",label:"update",form:n,placeholder:"0.6"}),(0,b.jsx)(M,{name:"thresholdMerge",label:"merge",form:n,placeholder:"0.6"})]})]}),(0,b.jsxs)(C.Collapsible,{open:s,onOpenChange:v,children:[(0,b.jsx)(C.CollapsibleTrigger,{asChild:!0,children:(0,b.jsxs)(g.Button,{type:"button",variant:"ghost",size:"sm",className:"px-0",children:[s?"▾":"▸"," 高级"]})}),(0,b.jsxs)(C.CollapsibleContent,{className:"grid gap-3 pt-2 sm:grid-cols-2",children:[(0,b.jsx)(M,{name:"maxSessions",label:"最大会话数",form:n}),(0,b.jsx)(M,{name:"maxMessages",label:"最大消息数",form:n}),(0,b.jsx)(M,{name:"maxMemories",label:"最大记忆数",form:n}),(0,b.jsx)(N,{name:"minTimestamp",label:"最早时间",form:n}),(0,b.jsx)(N,{name:"maxTimestamp",label:"最晚时间",form:n}),(0,b.jsx)(D.FormField,{control:n.control,name:"clientToken",render:({field:a})=>(0,b.jsxs)(D.FormItem,{children:[(0,b.jsx)(D.FormLabel,{children:"幂等 token"}),(0,b.jsx)(D.FormControl,{children:(0,b.jsx)(z.Input,{placeholder:"可选",...a})})]})})]})]}),(0,b.jsxs)(y.DialogFooter,{children:[(0,b.jsx)(g.Button,{type:"button",variant:"outline",onClick:()=>j(!1),children:"取消"}),(0,b.jsx)(g.Button,{type:"submit",disabled:m.isPending,children:m.isPending?"创建中…":"创建任务"})]})]})})]})})}function L({name:a,label:c,form:d,required:e}){return(0,b.jsx)(D.FormField,{control:d.control,name:a,render:({field:a})=>(0,b.jsxs)(D.FormItem,{children:[(0,b.jsxs)(D.FormLabel,{className:"text-xs",children:[c,e&&(0,b.jsx)("span",{className:"ml-0.5 text-[hsl(var(--destructive))]",children:"*"})]}),(0,b.jsx)(D.FormControl,{children:(0,b.jsx)(z.Input,{className:"h-8 text-sm",...a,value:a.value??""})}),(0,b.jsx)(D.FormMessage,{})]})})}function M({name:a,label:c,form:d,placeholder:e}){return(0,b.jsx)(D.FormField,{control:d.control,name:a,render:({field:a})=>(0,b.jsxs)(D.FormItem,{children:[(0,b.jsx)(D.FormLabel,{className:"text-xs",children:c}),(0,b.jsx)(D.FormControl,{children:(0,b.jsx)(z.Input,{type:"number",className:"h-8 text-sm",placeholder:e,...a,value:"string"==typeof a.value?a.value:""})})]})})}function N({name:a,label:c,form:d}){return(0,b.jsx)(D.FormField,{control:d.control,name:a,render:({field:a})=>(0,b.jsxs)(D.FormItem,{children:[(0,b.jsx)(D.FormLabel,{className:"text-xs",children:c}),(0,b.jsx)(D.FormControl,{children:(0,b.jsx)(z.Input,{type:"datetime-local",className:"h-8 text-sm",...a,value:"string"==typeof a.value?a.value:""})})]})})}var O=a.i(364565);let P=[{value:"all",label:"全部状态"},{value:"queued",label:"排队中"},{value:"running",label:"运行中"},{value:"planning",label:"规划中"},{value:"applying",label:"应用中"},{value:"completed",label:"已完成"},{value:"completed_with_failures",label:"完成(含失败)"},{value:"failed",label:"失败"},{value:"cancelled",label:"已取消"}],Q={queued:"bg-info-soft text-info",running:"bg-info-soft text-info",planning:"bg-info-soft text-info",applying:"bg-info-soft text-info",completed:"bg-success-soft text-success",completed_with_failures:"bg-warning-soft text-warning",failed:"bg-danger-soft text-danger",cancelled:"bg-muted text-muted-foreground"},R={queued:"排队中",running:"运行中",planning:"规划中",applying:"应用中",completed:"已完成",completed_with_failures:"完成(含失败)",failed:"失败",cancelled:"已取消"},S=new Set(["completed","completed_with_failures","failed","cancelled"]);function T({status:a}){let c=!S.has(a);return(0,b.jsxs)("span",{className:(0,O.cn)("inline-flex items-center gap-1 rounded-full px-2.5 py-0.5 text-xs font-medium select-none whitespace-nowrap",Q[a]??"bg-muted text-muted-foreground"),children:[c&&(0,b.jsxs)("span",{className:"relative flex h-1.5 w-1.5",children:[(0,b.jsx)("span",{className:"absolute inline-flex h-full w-full animate-ping rounded-full bg-current opacity-60"}),(0,b.jsx)("span",{className:"relative inline-flex h-1.5 w-1.5 rounded-full bg-current"})]}),R[a]??a]})}a.s(["default",0,function(){let a=decodeURIComponent((0,d.useParams)().store),t=(0,d.useRouter)(),u=(0,d.useSearchParams)().toString(),v=(0,c.useMemo)(()=>(0,r.buildMemoryScope)(new URLSearchParams(u)),[u]),[w,x]=(0,c.useState)("all"),[y,z]=(0,c.useState)(!1),[A,B]=(0,c.useState)(void 0),C=function(a,b,c){let{context:d,ready:e}=(0,q.useRuntimeContext)();return(0,n.useQuery)({queryKey:p.queryKeys.dreamTasks(d.dataScopeKey,a,b,c?.nextToken,c?.limit,{status:c?.status,minTimestamp:c?.minTimestamp,maxTimestamp:c?.maxTimestamp}),queryFn:()=>(0,o.listDreamTasks)(a,b,c),enabled:e&&!!a&&!!b?.appId})}(a,v,{limit:50,nextToken:A,status:"all"===w?void 0:w});if(C.error instanceof Error&&"code"in C.error&&"DREAMING_DISABLED"===C.error.code)return(0,b.jsx)(s.MemoryDreamDisabled,{});let D=C.data?.items??[];return(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("h2",{className:"text-lg font-semibold",children:"记忆整理"}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:"跨会话的记忆整理任务,识别模式后产出动作建议或自动应用"})]}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsxs)(i.Select,{value:w,onValueChange:x,children:[(0,b.jsx)(i.SelectTrigger,{className:"h-8 w-40 text-sm",children:(0,b.jsx)(i.SelectValue,{})}),(0,b.jsx)(i.SelectContent,{children:P.map(a=>(0,b.jsx)(i.SelectItem,{value:a.value,children:a.label},a.value))})]}),(0,b.jsx)(k.RefreshButton,{onClick:()=>C.refetch(),loading:C.isRefetching}),(0,b.jsxs)(g.Button,{size:"sm",onClick:()=>z(!0),children:[(0,b.jsx)(e.Plus,{className:"mr-1 h-3.5 w-3.5"}),"新建任务"]})]})]}),C.isLoading?(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(h.Skeleton,{className:"h-10 w-full"}),(0,b.jsx)(h.Skeleton,{className:"h-10 w-full"}),(0,b.jsx)(h.Skeleton,{className:"h-10 w-full"})]}):0===D.length?(0,b.jsx)(l.EmptyState,{icon:f.Sparkles,title:"暂无记忆整理任务",description:"all"===w?"记忆整理任务跨多个会话整合记忆。第一次使用时,先确保该 scope 下已经写入过几轮对话,再点右上角创建任务。":`当前过滤为「${P.find(a=>a.value===w)?.label??w}」状态,可切到「全部状态」看看`,action:(0,b.jsxs)(g.Button,{onClick:()=>z(!0),children:[(0,b.jsx)(e.Plus,{className:"mr-1 h-3.5 w-3.5"}),"新建任务"]})}):(0,b.jsx)("div",{className:"rounded-lg border border-[hsl(var(--border))]",children:(0,b.jsxs)(j.Table,{children:[(0,b.jsx)(j.TableHeader,{children:(0,b.jsxs)(j.TableRow,{children:[(0,b.jsx)(j.TableHead,{children:"Dream ID"}),(0,b.jsx)(j.TableHead,{children:"状态"}),(0,b.jsx)(j.TableHead,{children:"应用模式"}),(0,b.jsx)(j.TableHead,{className:"text-right",children:"动作"}),(0,b.jsx)(j.TableHead,{children:"创建时间"})]})}),(0,b.jsx)(j.TableBody,{children:D.map(c=>{let d=new Date(c.createdAt).getTime();return(0,b.jsxs)(j.TableRow,{className:"cursor-pointer hover:bg-[hsl(var(--accent))]",onClick:()=>t.push(`/memory/${encodeURIComponent(a)}/dream/${encodeURIComponent(c.dreamId)}`),children:[(0,b.jsx)(j.TableCell,{className:"max-w-[220px] truncate font-mono text-xs",children:c.dreamId}),(0,b.jsx)(j.TableCell,{children:(0,b.jsx)(T,{status:c.status})}),(0,b.jsxs)(j.TableCell,{className:"text-xs",children:["safe_auto"===c.applyMode?"自动":"建议","promote_scope"===c.scopeOutputMode&&(0,b.jsx)("span",{className:"ml-1 text-muted-foreground",children:"· 提升"})]}),(0,b.jsxs)(j.TableCell,{className:"text-right text-xs text-muted-foreground",children:[(0,b.jsx)("span",{className:"font-medium text-foreground",children:c.actionCount??0}),(0,b.jsxs)("span",{className:"ml-1",children:["(",c.proposedCount??0," 待 / ",c.appliedCount??0," 应用 /"," ",c.skippedCount??0," 跳 / ",c.failedCount??0," 败)"]})]}),(0,b.jsx)(j.TableCell,{className:"text-xs text-muted-foreground",children:Number.isFinite(d)?(0,b.jsx)(m.RelativeTime,{timestamp:d}):c.createdAt})]},c.dreamId)})})]})}),C.data?.nextToken&&(0,b.jsx)("div",{className:"flex justify-end",children:(0,b.jsx)(g.Button,{variant:"outline",size:"sm",onClick:()=>B(C.data?.nextToken),children:"加载下一页"})}),(0,b.jsxs)("p",{className:"text-xs text-muted-foreground",children:["当前过滤 scope:",v&&[v.appId,v.tenantId,v.agentId,v.runId].filter(Boolean).join(" / ")||"-"]}),(0,b.jsx)(K,{memoryStoreName:a,initialScope:v,open:y,onOpenChange:z})]})}],696627)}];
1
+ module.exports=[696627,a=>{"use strict";var b=a.i(634020),c=a.i(971938),d=a.i(880470),e=a.i(25825),f=a.i(1078),g=a.i(776192),h=a.i(604395),i=a.i(663525),j=a.i(223301),k=a.i(887617),l=a.i(310215),m=a.i(865271),n=a.i(983366),o=a.i(421347),p=a.i(225377),q=a.i(739096),r=a.i(908264),s=a.i(601170),t=a.i(71562),u=a.i(771071),v=a.i(680904),w=a.i(263265),x=a.i(655295),y=a.i(843836),z=a.i(172518),A=a.i(962491),B=a.i(470535),C=a.i(27692),D=a.i(692942),E=a.i(933596),F=a.i(895487);let G=v.z.object({appId:v.z.string().trim().min(1,"appId 必填"),tenantId:v.z.string().trim().optional(),agentId:v.z.string().trim().optional(),runId:v.z.string().trim().optional()}).refine(a=>Object.values(a).some(a=>a&&"*"!==a),{message:"至少指定一个非通配符字段"}),H=v.z.object({taskType:v.z.enum(["memory","skill","profile"]),scopes:v.z.array(G).min(1,"至少一个 scope"),applyMode:v.z.enum(["proposal","safe_auto"]),scopeOutputMode:v.z.enum(["preserve_scope","promote_scope"]).optional(),minTimestamp:v.z.string().optional(),maxTimestamp:v.z.string().optional(),maxSessions:v.z.string().optional(),maxMessages:v.z.string().optional(),maxMemories:v.z.string().optional(),instructions:v.z.string().optional(),clientToken:v.z.string().optional(),thresholdAdd:v.z.string().optional(),thresholdUpdate:v.z.string().optional(),thresholdMerge:v.z.string().optional()});function I(a){if(!a)return;let b=Number(a);if(Number.isFinite(b)&&Number.isInteger(b)&&!(b<=0))return b}function J(a){if(!a)return;let b=Number(a);if(Number.isFinite(b))return b}function K({memoryStoreName:a,initialScope:f,open:h,onOpenChange:j}){let k,l=(0,d.useRouter)(),m=(k=(0,F.useQueryClient)(),(0,E.useMutation)({mutationFn:b=>(0,o.createDreamTask)(a,b),onSuccess:()=>{k.invalidateQueries({queryKey:["memory"],predicate:b=>Array.isArray(b.queryKey)&&b.queryKey.includes("dream-tasks")&&b.queryKey.includes(a)})}})),n=(0,t.useForm)({resolver:(0,u.zodResolver)(H),defaultValues:{taskType:"memory",scopes:[{appId:f?.appId&&"*"!==f.appId?f.appId:"",tenantId:f?.tenantId&&"*"!==f.tenantId?f.tenantId:"",agentId:f?.agentId&&"*"!==f.agentId?f.agentId:"",runId:f?.runId&&"*"!==f.runId?f.runId:""}],applyMode:"proposal"}}),{fields:p,append:q,remove:r}=(0,t.useFieldArray)({control:n.control,name:"scopes"}),s=n.watch("taskType"),v="memory"===s,[G,O]=(0,c.useState)(!1),[P,Q]=(0,c.useState)(!1),R=async b=>{let c={},d=J(b.thresholdAdd),e=J(b.thresholdUpdate),f=J(b.thresholdMerge);void 0!==d&&(c.add=d),void 0!==e&&(c.update=e),void 0!==f&&(c.merge=f);let g="memory"===b.taskType;try{let d=await m.mutateAsync({scopes:b.scopes.map(a=>{let b={appId:a.appId};return a.tenantId&&(b.tenantId=a.tenantId),a.agentId&&(b.agentId=a.agentId),a.runId&&(b.runId=a.runId),b}),taskType:b.taskType,...g&&{applyMode:b.applyMode},...g&&b.scopeOutputMode&&{scopeOutputMode:b.scopeOutputMode},...b.minTimestamp&&{minTimestamp:b.minTimestamp},...b.maxTimestamp&&{maxTimestamp:b.maxTimestamp},...void 0!==I(b.maxSessions)&&{maxSessions:I(b.maxSessions)},...void 0!==I(b.maxMessages)&&{maxMessages:I(b.maxMessages)},...void 0!==I(b.maxMemories)&&{maxMemories:I(b.maxMemories)},...b.instructions&&{instructions:b.instructions},...b.clientToken&&{clientToken:b.clientToken},...g&&Object.keys(c).length>0&&{confidenceThresholds:c}});w.toast.success({memory:"记忆整理任务已创建",skill:"技能抽取任务已创建",profile:"用户画像任务已创建"}[b.taskType]),j(!1),n.reset(),l.push(`/memory/${encodeURIComponent(a)}/dream/${encodeURIComponent(d.dreamId)}`)}catch(b){let a=b instanceof Error?b.message:"创建失败";w.toast.error(a)}};return(0,b.jsx)(y.Dialog,{open:h,onOpenChange:j,children:(0,b.jsxs)(y.DialogContent,{className:"max-w-2xl",children:[(0,b.jsxs)(y.DialogHeader,{children:[(0,b.jsx)(y.DialogTitle,{children:"新建 Dream 任务"}),(0,b.jsx)(y.DialogDescription,{children:"Dream 会读取所选 scopes 下的消息与已有记忆,让 LLM 进行分析处理。 记忆整理模式建议先用「建议模式」生成提案、人工审核后再应用。"})]}),(0,b.jsx)(D.Form,{...n,children:(0,b.jsxs)("form",{onSubmit:n.handleSubmit(R),className:"space-y-5",children:[(0,b.jsx)(D.FormField,{control:n.control,name:"taskType",render:({field:a})=>(0,b.jsxs)(D.FormItem,{children:[(0,b.jsx)(D.FormLabel,{children:"任务类型"}),(0,b.jsxs)(i.Select,{onValueChange:a.onChange,defaultValue:a.value,children:[(0,b.jsx)(D.FormControl,{children:(0,b.jsx)(i.SelectTrigger,{children:(0,b.jsx)(i.SelectValue,{})})}),(0,b.jsxs)(i.SelectContent,{children:[(0,b.jsx)(i.SelectItem,{value:"memory",children:"记忆整理 — 整合跨会话记忆"}),(0,b.jsx)(i.SelectItem,{value:"skill",children:"技能抽取 — 从对话中提取可复用技能"}),(0,b.jsx)(i.SelectItem,{value:"profile",children:"用户画像 — 整理用户画像"})]})]}),(0,b.jsx)(D.FormMessage,{})]})}),(0,b.jsxs)("section",{className:"space-y-3",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsx)(A.Label,{className:"text-sm font-medium",children:"Scope 范围"}),(0,b.jsxs)(g.Button,{type:"button",size:"sm",variant:"ghost",onClick:()=>q({appId:"",tenantId:"",agentId:"",runId:""}),children:[(0,b.jsx)(e.Plus,{className:"mr-1 h-3.5 w-3.5"}),"添加 scope"]})]}),(0,b.jsx)("div",{className:"space-y-3",children:p.map((a,c)=>(0,b.jsxs)("div",{className:"grid grid-cols-1 gap-2 rounded-md border border-[hsl(var(--border-light))] p-3 sm:grid-cols-4",children:[(0,b.jsx)(L,{name:`scopes.${c}.appId`,label:"应用",form:n,required:!0}),(0,b.jsx)(L,{name:`scopes.${c}.tenantId`,label:"租户",form:n}),(0,b.jsx)(L,{name:`scopes.${c}.agentId`,label:"智能体",form:n}),(0,b.jsx)(L,{name:`scopes.${c}.runId`,label:"会话",form:n}),p.length>1&&(0,b.jsx)("div",{className:"sm:col-span-4 flex justify-end",children:(0,b.jsxs)(g.Button,{type:"button",size:"sm",variant:"ghost",onClick:()=>r(c),className:"text-[hsl(var(--destructive))]",children:[(0,b.jsx)(x.Trash2,{className:"mr-1 h-3 w-3"}),"删除"]})})]},a.id))})]}),v&&(0,b.jsxs)("section",{className:"grid gap-3 sm:grid-cols-2",children:[(0,b.jsx)(D.FormField,{control:n.control,name:"applyMode",render:({field:a})=>(0,b.jsxs)(D.FormItem,{children:[(0,b.jsx)(D.FormLabel,{children:"应用模式"}),(0,b.jsxs)(i.Select,{onValueChange:a.onChange,defaultValue:a.value,children:[(0,b.jsx)(D.FormControl,{children:(0,b.jsx)(i.SelectTrigger,{children:(0,b.jsx)(i.SelectValue,{})})}),(0,b.jsxs)(i.SelectContent,{children:[(0,b.jsx)(i.SelectItem,{value:"proposal",children:"建议模式(生成后人工 apply,推荐)"}),(0,b.jsx)(i.SelectItem,{value:"safe_auto",children:"安全自动(仅 ADD/UPDATE 自动;DELETE/跨 scope 仍需人工)"})]})]}),(0,b.jsx)(D.FormMessage,{})]})}),(0,b.jsx)(D.FormField,{control:n.control,name:"scopeOutputMode",render:({field:a})=>(0,b.jsxs)(D.FormItem,{children:[(0,b.jsx)(D.FormLabel,{children:"Scope 输出模式"}),(0,b.jsxs)(i.Select,{onValueChange:a.onChange,value:a.value??"",children:[(0,b.jsx)(D.FormControl,{children:(0,b.jsx)(i.SelectTrigger,{children:(0,b.jsx)(i.SelectValue,{placeholder:"使用默认(preserve_scope)"})})}),(0,b.jsxs)(i.SelectContent,{children:[(0,b.jsx)(i.SelectItem,{value:"preserve_scope",children:"保留原 scope"}),(0,b.jsx)(i.SelectItem,{value:"promote_scope",children:"提升到父级 scope"})]})]}),(0,b.jsx)(D.FormMessage,{})]})})]}),(0,b.jsx)(D.FormField,{control:n.control,name:"instructions",render:({field:a})=>(0,b.jsxs)(D.FormItem,{children:[(0,b.jsx)(D.FormLabel,{children:"指令(可选)"}),(0,b.jsx)(D.FormControl,{children:(0,b.jsx)(B.Textarea,{rows:2,placeholder:{memory:"给 dream 规划器的额外指引",skill:"指导技能抽取的方向,例如重点关注的领域",profile:"用户画像整理的额外指引,例如需要关注的维度"}[s],...a})})]})}),v&&(0,b.jsxs)(C.Collapsible,{open:P,onOpenChange:Q,children:[(0,b.jsx)(C.CollapsibleTrigger,{asChild:!0,children:(0,b.jsxs)(g.Button,{type:"button",variant:"ghost",size:"sm",className:"px-0",children:[P?"▾":"▸"," 置信度阈值"]})}),(0,b.jsxs)(C.CollapsibleContent,{className:"grid gap-3 pt-2 sm:grid-cols-3",children:[(0,b.jsx)(M,{name:"thresholdAdd",label:"add",form:n,placeholder:"0.7"}),(0,b.jsx)(M,{name:"thresholdUpdate",label:"update",form:n,placeholder:"0.6"}),(0,b.jsx)(M,{name:"thresholdMerge",label:"merge",form:n,placeholder:"0.6"})]})]}),(0,b.jsxs)(C.Collapsible,{open:G,onOpenChange:O,children:[(0,b.jsx)(C.CollapsibleTrigger,{asChild:!0,children:(0,b.jsxs)(g.Button,{type:"button",variant:"ghost",size:"sm",className:"px-0",children:[G?"▾":"▸"," 高级"]})}),(0,b.jsxs)(C.CollapsibleContent,{className:"grid gap-3 pt-2 sm:grid-cols-2",children:[(0,b.jsx)(M,{name:"maxSessions",label:"最大会话数",form:n}),(0,b.jsx)(M,{name:"maxMessages",label:"最大消息数",form:n}),(0,b.jsx)(M,{name:"maxMemories",label:"最大记忆数",form:n}),(0,b.jsx)(N,{name:"minTimestamp",label:"最早时间",form:n}),(0,b.jsx)(N,{name:"maxTimestamp",label:"最晚时间",form:n}),(0,b.jsx)(D.FormField,{control:n.control,name:"clientToken",render:({field:a})=>(0,b.jsxs)(D.FormItem,{children:[(0,b.jsx)(D.FormLabel,{children:"幂等 token"}),(0,b.jsx)(D.FormControl,{children:(0,b.jsx)(z.Input,{placeholder:"可选",...a})})]})})]})]}),(0,b.jsxs)(y.DialogFooter,{children:[(0,b.jsx)(g.Button,{type:"button",variant:"outline",onClick:()=>j(!1),children:"取消"}),(0,b.jsx)(g.Button,{type:"submit",disabled:m.isPending,children:m.isPending?"创建中…":"创建任务"})]})]})})]})})}function L({name:a,label:c,form:d,required:e}){return(0,b.jsx)(D.FormField,{control:d.control,name:a,render:({field:a})=>(0,b.jsxs)(D.FormItem,{children:[(0,b.jsxs)(D.FormLabel,{className:"text-xs",children:[c,e&&(0,b.jsx)("span",{className:"ml-0.5 text-[hsl(var(--destructive))]",children:"*"})]}),(0,b.jsx)(D.FormControl,{children:(0,b.jsx)(z.Input,{className:"h-8 text-sm",...a,value:a.value??""})}),(0,b.jsx)(D.FormMessage,{})]})})}function M({name:a,label:c,form:d,placeholder:e}){return(0,b.jsx)(D.FormField,{control:d.control,name:a,render:({field:a})=>(0,b.jsxs)(D.FormItem,{children:[(0,b.jsx)(D.FormLabel,{className:"text-xs",children:c}),(0,b.jsx)(D.FormControl,{children:(0,b.jsx)(z.Input,{type:"number",className:"h-8 text-sm",placeholder:e,...a,value:"string"==typeof a.value?a.value:""})})]})})}function N({name:a,label:c,form:d}){return(0,b.jsx)(D.FormField,{control:d.control,name:a,render:({field:a})=>(0,b.jsxs)(D.FormItem,{children:[(0,b.jsx)(D.FormLabel,{className:"text-xs",children:c}),(0,b.jsx)(D.FormControl,{children:(0,b.jsx)(z.Input,{type:"datetime-local",className:"h-8 text-sm",...a,value:"string"==typeof a.value?a.value:""})})]})})}var O=a.i(364565);let P=[{value:"all",label:"全部状态"},{value:"queued",label:"排队中"},{value:"running",label:"运行中"},{value:"planning",label:"规划中"},{value:"applying",label:"应用中"},{value:"completed",label:"已完成"},{value:"completed_with_failures",label:"完成(含失败)"},{value:"failed",label:"失败"},{value:"cancelled",label:"已取消"}],Q={queued:"bg-info-soft text-info",running:"bg-info-soft text-info",planning:"bg-info-soft text-info",applying:"bg-info-soft text-info",completed:"bg-success-soft text-success",completed_with_failures:"bg-warning-soft text-warning",failed:"bg-danger-soft text-danger",cancelled:"bg-muted text-muted-foreground"},R={queued:"排队中",running:"运行中",planning:"规划中",applying:"应用中",completed:"已完成",completed_with_failures:"完成(含失败)",failed:"失败",cancelled:"已取消"},S={memory:"记忆整理",skill:"技能抽取",profile:"用户画像"},T={memory:"bg-info-soft text-info",skill:"bg-success-soft text-success",profile:"bg-[hsl(var(--primary-soft,_220_90%_96%))] text-[hsl(var(--primary))]"},U=new Set(["completed","completed_with_failures","failed","cancelled"]);function V({status:a}){let c=!U.has(a);return(0,b.jsxs)("span",{className:(0,O.cn)("inline-flex items-center gap-1 rounded-full px-2.5 py-0.5 text-xs font-medium select-none whitespace-nowrap",Q[a]??"bg-muted text-muted-foreground"),children:[c&&(0,b.jsxs)("span",{className:"relative flex h-1.5 w-1.5",children:[(0,b.jsx)("span",{className:"absolute inline-flex h-full w-full animate-ping rounded-full bg-current opacity-60"}),(0,b.jsx)("span",{className:"relative inline-flex h-1.5 w-1.5 rounded-full bg-current"})]}),R[a]??a]})}a.s(["default",0,function(){let a=decodeURIComponent((0,d.useParams)().store),t=(0,d.useRouter)(),u=(0,d.useSearchParams)().toString(),v=(0,c.useMemo)(()=>(0,r.buildMemoryScope)(new URLSearchParams(u)),[u]),[w,x]=(0,c.useState)("all"),[y,z]=(0,c.useState)(!1),[A,B]=(0,c.useState)(void 0),C=function(a,b,c){let{context:d,ready:e}=(0,q.useRuntimeContext)();return(0,n.useQuery)({queryKey:p.queryKeys.dreamTasks(d.dataScopeKey,a,b,c?.nextToken,c?.limit,{status:c?.status,minTimestamp:c?.minTimestamp,maxTimestamp:c?.maxTimestamp}),queryFn:()=>(0,o.listDreamTasks)(a,b,c),enabled:e&&!!a&&!!b?.appId})}(a,v,{limit:50,nextToken:A,status:"all"===w?void 0:w});if(C.error instanceof Error&&"code"in C.error&&"DREAMING_DISABLED"===C.error.code)return(0,b.jsx)(s.MemoryDreamDisabled,{});let D=C.data?.items??[];return(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("h2",{className:"text-lg font-semibold",children:"Dream 任务管理"}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:"管理记忆整理、技能抽取、用户画像等离线任务"})]}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsxs)(i.Select,{value:w,onValueChange:x,children:[(0,b.jsx)(i.SelectTrigger,{className:"h-8 w-40 text-sm",children:(0,b.jsx)(i.SelectValue,{})}),(0,b.jsx)(i.SelectContent,{children:P.map(a=>(0,b.jsx)(i.SelectItem,{value:a.value,children:a.label},a.value))})]}),(0,b.jsx)(k.RefreshButton,{onClick:()=>C.refetch(),loading:C.isRefetching}),(0,b.jsxs)(g.Button,{size:"sm",onClick:()=>z(!0),children:[(0,b.jsx)(e.Plus,{className:"mr-1 h-3.5 w-3.5"}),"新建任务"]})]})]}),C.isLoading?(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(h.Skeleton,{className:"h-10 w-full"}),(0,b.jsx)(h.Skeleton,{className:"h-10 w-full"}),(0,b.jsx)(h.Skeleton,{className:"h-10 w-full"})]}):0===D.length?(0,b.jsx)(l.EmptyState,{icon:f.Sparkles,title:"暂无 Dream 任务",description:"all"===w?"Dream 任务支持记忆整理、技能抽取、用户画像等功能。第一次使用时,先确保该 scope 下已经写入过几轮对话,再点右上角创建任务。":`当前过滤为「${P.find(a=>a.value===w)?.label??w}」状态,可切到「全部状态」看看`,action:(0,b.jsxs)(g.Button,{onClick:()=>z(!0),children:[(0,b.jsx)(e.Plus,{className:"mr-1 h-3.5 w-3.5"}),"新建任务"]})}):(0,b.jsx)("div",{className:"rounded-lg border border-[hsl(var(--border))]",children:(0,b.jsxs)(j.Table,{children:[(0,b.jsx)(j.TableHeader,{children:(0,b.jsxs)(j.TableRow,{children:[(0,b.jsx)(j.TableHead,{children:"Dream ID"}),(0,b.jsx)(j.TableHead,{children:"类型"}),(0,b.jsx)(j.TableHead,{children:"状态"}),(0,b.jsx)(j.TableHead,{children:"应用模式"}),(0,b.jsx)(j.TableHead,{className:"text-right",children:"产出"}),(0,b.jsx)(j.TableHead,{children:"创建时间"})]})}),(0,b.jsx)(j.TableBody,{children:D.map(c=>{let d,e=new Date(c.createdAt).getTime();return(0,b.jsxs)(j.TableRow,{className:"cursor-pointer hover:bg-[hsl(var(--accent))]",onClick:()=>t.push(`/memory/${encodeURIComponent(a)}/dream/${encodeURIComponent(c.dreamId)}`),children:[(0,b.jsx)(j.TableCell,{className:"max-w-[220px] truncate font-mono text-xs",children:c.dreamId}),(0,b.jsx)(j.TableCell,{children:(d=c.taskType||"memory",(0,b.jsx)("span",{className:(0,O.cn)("inline-flex rounded-full px-2 py-0.5 text-xs font-medium whitespace-nowrap",T[d]??"bg-muted text-muted-foreground"),children:S[d]??d}))}),(0,b.jsx)(j.TableCell,{children:(0,b.jsx)(V,{status:c.status})}),(0,b.jsx)(j.TableCell,{className:"text-xs",children:c.taskType&&"memory"!==c.taskType?(0,b.jsx)("span",{className:"text-muted-foreground",children:"—"}):(0,b.jsxs)(b.Fragment,{children:["safe_auto"===c.applyMode?"自动":"建议","promote_scope"===c.scopeOutputMode&&(0,b.jsx)("span",{className:"ml-1 text-muted-foreground",children:"· 提升"})]})}),(0,b.jsxs)(j.TableCell,{className:"text-right text-xs text-muted-foreground",children:[(0,b.jsx)("span",{className:"font-medium text-foreground",children:c.actionCount??0}),c.taskType&&"memory"!==c.taskType?(0,b.jsxs)("span",{className:"ml-1",children:["条产出",(c.failedCount??0)>0&&(0,b.jsxs)("span",{className:"text-danger",children:[" / ",c.failedCount," 败"]})]}):(0,b.jsxs)("span",{className:"ml-1",children:["(",c.proposedCount??0," 待 / ",c.appliedCount??0," 应用 /"," ",c.skippedCount??0," 跳 / ",c.failedCount??0," 败)"]})]}),(0,b.jsx)(j.TableCell,{className:"text-xs text-muted-foreground",children:Number.isFinite(e)?(0,b.jsx)(m.RelativeTime,{timestamp:e}):c.createdAt})]},c.dreamId)})})]})}),C.data?.nextToken&&(0,b.jsx)("div",{className:"flex justify-end",children:(0,b.jsx)(g.Button,{variant:"outline",size:"sm",onClick:()=>B(C.data?.nextToken),children:"加载下一页"})}),(0,b.jsxs)("p",{className:"text-xs text-muted-foreground",children:["当前过滤 scope:",v&&[v.appId,v.tenantId,v.agentId,v.runId].filter(Boolean).join(" / ")||"-"]}),(0,b.jsx)(K,{memoryStoreName:a,initialScope:v,open:y,onOpenChange:z})]})}],696627)}];
2
2
 
3
3
  //# sourceMappingURL=dashboard_src_app_%28dashboard%29_memory_%5Bstore%5D_dream_page_tsx_0uzzpvs._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[598680,a=>{"use strict";var b=a.i(634020),c=a.i(880470),d=a.i(971938),e=a.i(147845),f=a.i(123028);let g=(0,a.i(750053).default)("file-clock",[["path",{d:"M16 22h2a2 2 0 0 0 2-2V8a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 14 2H6a2 2 0 0 0-2 2v2.85",key:"ryk6xj"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M8 14v2.2l1.6 1",key:"6m4bie"}],["circle",{cx:"8",cy:"16",r:"6",key:"10v15b"}]]);var h=a.i(401605),i=a.i(688189),j=a.i(696844),k=a.i(160318),l=a.i(624215),m=a.i(1078),n=a.i(655295),o=a.i(604395),p=a.i(224666),q=a.i(99443),r=a.i(411697),s=a.i(98791),t=a.i(53520),u=a.i(201927),v=a.i(225896),w=a.i(882725),x=a.i(616106),y=a.i(310581),z=a.i(776192),A=a.i(473524),B=a.i(455553),C=a.i(172518),D=a.i(962491),E=a.i(84252),F=a.i(908264),G=a.i(983366),H=a.i(421347),I=a.i(225377),J=a.i(739096),K=a.i(364565);let L=[{key:"appId",label:"应用",placeholder:"app-001 或 *"},{key:"tenantId",label:"租户",placeholder:"tenant-001"},{key:"agentId",label:"智能体",placeholder:"agent-001"},{key:"runId",label:"会话",placeholder:"run-001"}],M={appId:"*",tenantId:"*",agentId:"*",runId:"*"};function N(a){return[a.appId,a.tenantId,a.agentId,a.runId].map(a=>a||"—").join(" / ")}function O(a,b){return(a.appId??"")===(b.appId??"")&&(a.tenantId??"")===(b.tenantId??"")&&(a.agentId??"")===(b.agentId??"")&&(a.runId??"")===(b.runId??"")}function P(){let a=(0,c.useRouter)(),e=(0,c.usePathname)(),f=(0,c.useSearchParams)().toString(),g=(0,d.useMemo)(()=>(0,F.buildMemoryScope)(new URLSearchParams(f)),[f]),[h,i]=(0,d.useState)(!1),[j,k]=(0,d.useState)(g),[l,m]=(0,d.useState)(null),[n,o]=(0,d.useState)(!1),p=e.split("/").filter(Boolean)[1],q=(0,F.hasWildcardScope)(g);(0,d.useEffect)(()=>{!p||e.includes("/create")||new URLSearchParams(f).get("appId")||a.replace(`${e}?appId=*&tenantId=*&agentId=*&runId=*`)},[f,e,a,p]),(0,d.useEffect)(()=>{k(a=>O(a,g)?a:g),m(null)},[g]);let r=function(a,b){let{context:c,ready:d}=(0,J.useRuntimeContext)(),e={appId:b?.appId||"*",tenantId:b?.tenantId||"*",agentId:b?.agentId||"*",runId:b?.runId||"*"};return(0,G.useQuery)({queryKey:[...I.queryKeys.memoryStoreScopes(c.dataScopeKey,a,e),"all"],queryFn:()=>(0,H.listAllMemoryStoreScopes)(a,e),enabled:d&&!!a,staleTime:3e4})}(p??"",M),s=r.data?.items??[],t=r.data?.truncated??!1,w=(0,F.hasWildcardScope)(g);function B(b){let c={appId:(b.appId??"").trim()||"*",tenantId:(b.tenantId??"").trim()||void 0,agentId:(b.agentId??"").trim()||void 0,runId:(b.runId??"").trim()||void 0};m(null);let d=(0,F.scopeToSearchParams)(c);a.replace(`${e}?${d.toString()}`)}function E(a){k(a),B(a),o(!1),i(!1)}return(0,b.jsx)(A.Card,{className:"border-dashed",children:(0,b.jsxs)(A.CardContent,{className:"p-4",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-4",children:[(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-3",children:[(0,b.jsx)(y.Settings2,{className:"h-4 w-4 text-muted-foreground"}),L.map(({key:a,label:c})=>(0,b.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,b.jsx)("span",{className:"text-xs font-medium text-muted-foreground",children:c}),(0,b.jsx)("span",{className:"rounded-md bg-[hsl(var(--muted))] px-2.5 py-1 text-xs font-mono text-[hsl(var(--foreground))]",children:g[a]??"—"})]},a))]}),(0,b.jsxs)("div",{className:"flex shrink-0 items-center gap-2",children:[q&&(0,b.jsx)("span",{className:"rounded-md bg-amber-50 px-2 py-1 text-xs text-amber-700 dark:bg-amber-950 dark:text-amber-300",children:"只读"}),(0,b.jsx)(Q,{open:n,onOpenChange:o,currentScope:g,knownScopes:s,isLoading:r.isLoading,isFetching:r.isFetching,truncated:t,isWildcardSelected:w,onPickWildcard:()=>E(M),onPickScope:E,onRefresh:()=>r.refetch()}),(0,b.jsxs)(z.Button,{variant:"outline",size:"sm",onClick:()=>i(!h),children:[h?(0,b.jsx)(v.ChevronUp,{className:"mr-1 h-3.5 w-3.5"}):(0,b.jsx)(u.ChevronDown,{className:"mr-1 h-3.5 w-3.5"}),"手动编辑"]})]})]}),h&&(0,b.jsxs)("div",{className:"mt-4 space-y-4 border-t pt-4",children:[(0,b.jsx)("div",{className:"grid gap-3 sm:grid-cols-2 lg:grid-cols-4",children:L.map(({key:a,label:c,placeholder:d})=>(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsxs)(D.Label,{htmlFor:`scope-${a}`,className:"text-xs",children:[c,"appId"===a&&(0,b.jsx)("span",{className:"ml-0.5 text-[hsl(var(--destructive))]",children:"*"})]}),(0,b.jsx)(C.Input,{id:`scope-${a}`,value:j[a]??"",placeholder:d,onChange:b=>{var c;return c=b.target.value,void("appId"===a?k(a=>({...a,appId:c})):k(b=>({...b,[a]:c||void 0})))},className:"h-8 text-sm"})]},a))}),(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[l?(0,b.jsx)("p",{className:"text-xs text-[hsl(var(--destructive))]",children:l}):(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:"写操作需精确 scope,读 / 搜索支持通配符 *。"}),(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsxs)(z.Button,{variant:"outline",size:"sm",onClick:function(){k(M),m(null),a.replace(`${e}?appId=*&tenantId=*&agentId=*&runId=*`)},children:[(0,b.jsx)(x.RotateCcw,{className:"mr-1 h-3 w-3"}),"重置"]}),(0,b.jsx)(z.Button,{size:"sm",onClick:function(){B(j),i(!1)},children:"应用"})]})]})]})]})})}function Q({open:a,onOpenChange:c,currentScope:d,knownScopes:e,isLoading:f,isFetching:g,truncated:h,isWildcardSelected:i,onPickWildcard:j,onPickScope:k,onRefresh:l}){let m=i?"全部数据":N(d);return(0,b.jsxs)(E.Popover,{open:a,onOpenChange:c,children:[(0,b.jsx)(E.PopoverTrigger,{asChild:!0,children:(0,b.jsxs)(z.Button,{variant:"outline",size:"sm",className:"h-8 min-w-[200px] justify-between font-mono text-xs",children:[(0,b.jsx)("span",{className:"truncate",children:m}),(0,b.jsx)(w.ChevronsUpDown,{className:"ml-1 h-3.5 w-3.5 shrink-0 opacity-60"})]})}),(0,b.jsx)(E.PopoverContent,{align:"end",className:"w-[420px] p-0",children:(0,b.jsxs)(B.Command,{shouldFilter:!0,children:[(0,b.jsx)(B.CommandInput,{placeholder:"搜索 scope…",className:"text-xs"}),(0,b.jsxs)(B.CommandList,{className:"max-h-[360px]",children:[(0,b.jsx)(B.CommandEmpty,{children:f?"加载中…":"未找到匹配的 scope"}),(0,b.jsx)(B.CommandGroup,{heading:"预设",children:(0,b.jsxs)(B.CommandItem,{value:"* wildcard 全部数据",onSelect:j,className:"text-xs",children:[(0,b.jsx)(t.Check,{className:(0,K.cn)("mr-2 h-3.5 w-3.5",i?"opacity-100":"opacity-0")}),(0,b.jsx)("span",{className:"font-mono",children:"全部数据(*/*/*/*)"})]})}),e.length>0&&(0,b.jsx)(B.CommandGroup,{heading:h?`已有 scope(仅前 ${e.length} 条)`:`已有 scope(${e.length})`,children:e.map((a,c)=>{let e=N(a),f=!i&&O(a,d);return(0,b.jsxs)(B.CommandItem,{value:e,onSelect:()=>k(a),className:"text-xs",children:[(0,b.jsx)(t.Check,{className:(0,K.cn)("mr-2 h-3.5 w-3.5",f?"opacity-100":"opacity-0")}),(0,b.jsx)("span",{className:"font-mono truncate",children:e})]},`${e}-${c}`)})})]}),(0,b.jsxs)("div",{className:"flex items-center justify-between border-t border-[hsl(var(--border-light))] px-2 py-1.5 text-[10px] text-muted-foreground",children:[(0,b.jsx)("span",{children:f?"查询中…":`${e.length} 条 scope${h?" · 已截断":""}`}),(0,b.jsx)("button",{type:"button",onClick:a=>{a.preventDefault(),l()},disabled:g,className:"rounded px-1.5 py-0.5 hover:bg-[hsl(var(--accent))] disabled:opacity-50",children:"刷新"})]})]})})]})}let R=[{label:"长期记忆",segment:"units",icon:(0,b.jsx)(f.Database,{className:"h-4 w-4"})},{label:"记忆检索",segment:"search",icon:(0,b.jsx)(k.Search,{className:"h-4 w-4"})},{label:"短期记忆",segment:"messages",icon:(0,b.jsx)(i.MessageSquare,{className:"h-4 w-4"})},{label:"记忆抽取",segment:"tasks",icon:(0,b.jsx)(h.ListChecks,{className:"h-4 w-4"})},{label:"请求审计",segment:"requests",icon:(0,b.jsx)(g,{className:"h-4 w-4"})},{label:"记忆整理",segment:"dream",icon:(0,b.jsx)(m.Sparkles,{className:"h-4 w-4"})},{label:"设置",segment:"settings",icon:(0,b.jsx)(l.Settings,{className:"h-4 w-4"})}];function S(){return(0,b.jsxs)(q.DetailSidebar,{children:[(0,b.jsxs)("div",{className:"space-y-3 px-4 pt-4 pb-4 border-b border-[hsl(var(--border-light))]",children:[(0,b.jsx)(o.Skeleton,{className:"h-9 w-9 rounded-lg"}),(0,b.jsx)(o.Skeleton,{className:"h-4 w-3/4"}),(0,b.jsx)(o.Skeleton,{className:"h-3 w-1/2"})]}),(0,b.jsxs)("div",{className:"space-y-1 px-2 py-2",children:[(0,b.jsx)(o.Skeleton,{className:"h-8 w-full"}),(0,b.jsx)(o.Skeleton,{className:"h-8 w-full"}),(0,b.jsx)(o.Skeleton,{className:"h-8 w-full"}),(0,b.jsx)(o.Skeleton,{className:"h-8 w-full"}),(0,b.jsx)(o.Skeleton,{className:"h-8 w-full"})]})]})}a.s(["default",0,function({children:a}){let f=decodeURIComponent((0,c.useParams)().store),g=(0,c.useSearchParams)(),{data:h,isLoading:i}=(0,r.useMemoryStore)(f),[k,l]=(0,d.useState)(!1),m=g.toString()?`?${g.toString()}`:"",t=`/memory/${encodeURIComponent(f)}`,u=R.map(a=>({href:`${t}/${a.segment}${m}`,label:a.label,icon:a.icon}));return i?(0,b.jsx)(q.DetailLayout,{sidebar:(0,b.jsx)(S,{}),children:(0,b.jsxs)("div",{className:"space-y-6",children:[(0,b.jsx)(o.Skeleton,{className:"h-10 w-64"}),(0,b.jsx)(o.Skeleton,{className:"h-28 w-full"}),(0,b.jsx)(o.Skeleton,{className:"h-64 w-full"})]})}):h?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(q.DetailLayout,{sidebar:(0,b.jsxs)(q.DetailSidebar,{children:[(0,b.jsx)(q.DetailSidebarHeader,{icon:(0,b.jsx)(e.Brain,{}),accent:"purple",name:h.memoryStoreName,typeLabel:"记忆库 · MEMORY STORE",description:h.description,actions:(0,b.jsxs)(p.DropdownMenu,{children:[(0,b.jsx)(p.DropdownMenuTrigger,{asChild:!0,children:(0,b.jsx)("button",{type:"button","aria-label":"更多操作",className:"flex h-7 w-7 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)(j.MoreVertical,{className:"h-4 w-4"})})}),(0,b.jsx)(p.DropdownMenuContent,{align:"end",children:(0,b.jsxs)(p.DropdownMenuItem,{onSelect:a=>{a.preventDefault(),l(!0)},className:"text-[hsl(var(--destructive))] focus:bg-[hsl(var(--danger-soft))] focus:text-[hsl(var(--destructive))] hover:bg-[hsl(var(--danger-soft))] hover:text-[hsl(var(--destructive))]",children:[(0,b.jsx)(n.Trash2,{className:"h-3.5 w-3.5"}),"删除记忆库"]})})]})}),(0,b.jsx)(q.DetailSidebarMenu,{items:u}),(0,b.jsx)(q.DetailSidebarBack,{href:"/memory",label:"返回列表"})]}),children:(0,b.jsxs)("div",{className:"space-y-6",children:[(0,b.jsx)(P,{}),(0,b.jsx)("div",{children:a})]})}),(0,b.jsx)(s.MemoryDeleteDialog,{memoryStoreName:f,open:k,onOpenChange:l,redirectToList:!0})]}):(0,b.jsx)(q.DetailLayout,{sidebar:(0,b.jsx)(S,{}),children:(0,b.jsx)("div",{className:"flex items-center justify-center py-20 text-muted-foreground",children:"记忆库不存在或已被删除"})})}],598680)}];
1
+ module.exports=[598680,a=>{"use strict";var b=a.i(634020),c=a.i(880470),d=a.i(971938),e=a.i(147845),f=a.i(123028);let g=(0,a.i(750053).default)("file-clock",[["path",{d:"M16 22h2a2 2 0 0 0 2-2V8a2.4 2.4 0 0 0-.706-1.706l-3.588-3.588A2.4 2.4 0 0 0 14 2H6a2 2 0 0 0-2 2v2.85",key:"ryk6xj"}],["path",{d:"M14 2v5a1 1 0 0 0 1 1h5",key:"wfsgrz"}],["path",{d:"M8 14v2.2l1.6 1",key:"6m4bie"}],["circle",{cx:"8",cy:"16",r:"6",key:"10v15b"}]]);var h=a.i(401605),i=a.i(688189),j=a.i(696844),k=a.i(160318),l=a.i(624215),m=a.i(1078),n=a.i(655295),o=a.i(604395),p=a.i(224666),q=a.i(99443),r=a.i(411697),s=a.i(98791),t=a.i(53520),u=a.i(201927),v=a.i(225896),w=a.i(882725),x=a.i(616106),y=a.i(310581),z=a.i(776192),A=a.i(473524),B=a.i(455553),C=a.i(172518),D=a.i(962491),E=a.i(84252),F=a.i(908264),G=a.i(983366),H=a.i(421347),I=a.i(225377),J=a.i(739096),K=a.i(364565);let L=[{key:"appId",label:"应用",placeholder:"app-001 或 *"},{key:"tenantId",label:"租户",placeholder:"tenant-001"},{key:"agentId",label:"智能体",placeholder:"agent-001"},{key:"runId",label:"会话",placeholder:"run-001"}],M={appId:"*",tenantId:"*",agentId:"*",runId:"*"};function N(a){return[a.appId,a.tenantId,a.agentId,a.runId].map(a=>a||"—").join(" / ")}function O(a,b){return(a.appId??"")===(b.appId??"")&&(a.tenantId??"")===(b.tenantId??"")&&(a.agentId??"")===(b.agentId??"")&&(a.runId??"")===(b.runId??"")}function P(){let a=(0,c.useRouter)(),e=(0,c.usePathname)(),f=(0,c.useSearchParams)().toString(),g=(0,d.useMemo)(()=>(0,F.buildMemoryScope)(new URLSearchParams(f)),[f]),[h,i]=(0,d.useState)(!1),[j,k]=(0,d.useState)(g),[l,m]=(0,d.useState)(null),[n,o]=(0,d.useState)(!1),p=e.split("/").filter(Boolean)[1],q=(0,F.hasWildcardScope)(g);(0,d.useEffect)(()=>{!p||e.includes("/create")||new URLSearchParams(f).get("appId")||a.replace(`${e}?appId=*&tenantId=*&agentId=*&runId=*`)},[f,e,a,p]),(0,d.useEffect)(()=>{k(a=>O(a,g)?a:g),m(null)},[g]);let r=function(a,b){let{context:c,ready:d}=(0,J.useRuntimeContext)(),e={appId:b?.appId||"*",tenantId:b?.tenantId||"*",agentId:b?.agentId||"*",runId:b?.runId||"*"};return(0,G.useQuery)({queryKey:[...I.queryKeys.memoryStoreScopes(c.dataScopeKey,a,e),"all"],queryFn:()=>(0,H.listAllMemoryStoreScopes)(a,e),enabled:d&&!!a,staleTime:3e4})}(p??"",M),s=r.data?.items??[],t=r.data?.truncated??!1,w=(0,F.hasWildcardScope)(g);function B(b){let c={appId:(b.appId??"").trim()||"*",tenantId:(b.tenantId??"").trim()||void 0,agentId:(b.agentId??"").trim()||void 0,runId:(b.runId??"").trim()||void 0};m(null);let d=(0,F.scopeToSearchParams)(c);a.replace(`${e}?${d.toString()}`)}function E(a){k(a),B(a),o(!1),i(!1)}return(0,b.jsx)(A.Card,{className:"border-dashed",children:(0,b.jsxs)(A.CardContent,{className:"p-4",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-4",children:[(0,b.jsxs)("div",{className:"flex flex-wrap items-center gap-3",children:[(0,b.jsx)(y.Settings2,{className:"h-4 w-4 text-muted-foreground"}),L.map(({key:a,label:c})=>(0,b.jsxs)("div",{className:"flex items-center gap-1.5",children:[(0,b.jsx)("span",{className:"text-xs font-medium text-muted-foreground",children:c}),(0,b.jsx)("span",{className:"rounded-md bg-[hsl(var(--muted))] px-2.5 py-1 text-xs font-mono text-[hsl(var(--foreground))]",children:g[a]??"—"})]},a))]}),(0,b.jsxs)("div",{className:"flex shrink-0 items-center gap-2",children:[q&&(0,b.jsx)("span",{className:"rounded-md bg-amber-50 px-2 py-1 text-xs text-amber-700 dark:bg-amber-950 dark:text-amber-300",children:"只读"}),(0,b.jsx)(Q,{open:n,onOpenChange:o,currentScope:g,knownScopes:s,isLoading:r.isLoading,isFetching:r.isFetching,truncated:t,isWildcardSelected:w,onPickWildcard:()=>E(M),onPickScope:E,onRefresh:()=>r.refetch()}),(0,b.jsxs)(z.Button,{variant:"outline",size:"sm",onClick:()=>i(!h),children:[h?(0,b.jsx)(v.ChevronUp,{className:"mr-1 h-3.5 w-3.5"}):(0,b.jsx)(u.ChevronDown,{className:"mr-1 h-3.5 w-3.5"}),"手动编辑"]})]})]}),h&&(0,b.jsxs)("div",{className:"mt-4 space-y-4 border-t pt-4",children:[(0,b.jsx)("div",{className:"grid gap-3 sm:grid-cols-2 lg:grid-cols-4",children:L.map(({key:a,label:c,placeholder:d})=>(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsxs)(D.Label,{htmlFor:`scope-${a}`,className:"text-xs",children:[c,"appId"===a&&(0,b.jsx)("span",{className:"ml-0.5 text-[hsl(var(--destructive))]",children:"*"})]}),(0,b.jsx)(C.Input,{id:`scope-${a}`,value:j[a]??"",placeholder:d,onChange:b=>{var c;return c=b.target.value,void("appId"===a?k(a=>({...a,appId:c})):k(b=>({...b,[a]:c||void 0})))},className:"h-8 text-sm"})]},a))}),(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[l?(0,b.jsx)("p",{className:"text-xs text-[hsl(var(--destructive))]",children:l}):(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:"写操作需精确 scope,读 / 搜索支持通配符 *。"}),(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsxs)(z.Button,{variant:"outline",size:"sm",onClick:function(){k(M),m(null),a.replace(`${e}?appId=*&tenantId=*&agentId=*&runId=*`)},children:[(0,b.jsx)(x.RotateCcw,{className:"mr-1 h-3 w-3"}),"重置"]}),(0,b.jsx)(z.Button,{size:"sm",onClick:function(){B(j),i(!1)},children:"应用"})]})]})]})]})})}function Q({open:a,onOpenChange:c,currentScope:d,knownScopes:e,isLoading:f,isFetching:g,truncated:h,isWildcardSelected:i,onPickWildcard:j,onPickScope:k,onRefresh:l}){let m=i?"全部数据":N(d);return(0,b.jsxs)(E.Popover,{open:a,onOpenChange:c,children:[(0,b.jsx)(E.PopoverTrigger,{asChild:!0,children:(0,b.jsxs)(z.Button,{variant:"outline",size:"sm",className:"h-8 min-w-[200px] justify-between font-mono text-xs",children:[(0,b.jsx)("span",{className:"truncate",children:m}),(0,b.jsx)(w.ChevronsUpDown,{className:"ml-1 h-3.5 w-3.5 shrink-0 opacity-60"})]})}),(0,b.jsx)(E.PopoverContent,{align:"end",className:"w-[420px] p-0",children:(0,b.jsxs)(B.Command,{shouldFilter:!0,children:[(0,b.jsx)(B.CommandInput,{placeholder:"搜索 scope…",className:"text-xs"}),(0,b.jsxs)(B.CommandList,{className:"max-h-[360px]",children:[(0,b.jsx)(B.CommandEmpty,{children:f?"加载中…":"未找到匹配的 scope"}),(0,b.jsx)(B.CommandGroup,{heading:"预设",children:(0,b.jsxs)(B.CommandItem,{value:"* wildcard 全部数据",onSelect:j,className:"text-xs",children:[(0,b.jsx)(t.Check,{className:(0,K.cn)("mr-2 h-3.5 w-3.5",i?"opacity-100":"opacity-0")}),(0,b.jsx)("span",{className:"font-mono",children:"全部数据(*/*/*/*)"})]})}),e.length>0&&(0,b.jsx)(B.CommandGroup,{heading:h?`已有 scope(仅前 ${e.length} 条)`:`已有 scope(${e.length})`,children:e.map((a,c)=>{let e=N(a),f=!i&&O(a,d);return(0,b.jsxs)(B.CommandItem,{value:e,onSelect:()=>k(a),className:"text-xs",children:[(0,b.jsx)(t.Check,{className:(0,K.cn)("mr-2 h-3.5 w-3.5",f?"opacity-100":"opacity-0")}),(0,b.jsx)("span",{className:"font-mono truncate",children:e})]},`${e}-${c}`)})})]}),(0,b.jsxs)("div",{className:"flex items-center justify-between border-t border-[hsl(var(--border-light))] px-2 py-1.5 text-[10px] text-muted-foreground",children:[(0,b.jsx)("span",{children:f?"查询中…":`${e.length} 条 scope${h?" · 已截断":""}`}),(0,b.jsx)("button",{type:"button",onClick:a=>{a.preventDefault(),l()},disabled:g,className:"rounded px-1.5 py-0.5 hover:bg-[hsl(var(--accent))] disabled:opacity-50",children:"刷新"})]})]})})]})}let R=[{label:"长期记忆",segment:"units",icon:(0,b.jsx)(f.Database,{className:"h-4 w-4"})},{label:"记忆检索",segment:"search",icon:(0,b.jsx)(k.Search,{className:"h-4 w-4"})},{label:"短期记忆",segment:"messages",icon:(0,b.jsx)(i.MessageSquare,{className:"h-4 w-4"})},{label:"记忆抽取",segment:"tasks",icon:(0,b.jsx)(h.ListChecks,{className:"h-4 w-4"})},{label:"请求审计",segment:"requests",icon:(0,b.jsx)(g,{className:"h-4 w-4"})},{label:"Dream 任务",segment:"dream",icon:(0,b.jsx)(m.Sparkles,{className:"h-4 w-4"})},{label:"设置",segment:"settings",icon:(0,b.jsx)(l.Settings,{className:"h-4 w-4"})}];function S(){return(0,b.jsxs)(q.DetailSidebar,{children:[(0,b.jsxs)("div",{className:"space-y-3 px-4 pt-4 pb-4 border-b border-[hsl(var(--border-light))]",children:[(0,b.jsx)(o.Skeleton,{className:"h-9 w-9 rounded-lg"}),(0,b.jsx)(o.Skeleton,{className:"h-4 w-3/4"}),(0,b.jsx)(o.Skeleton,{className:"h-3 w-1/2"})]}),(0,b.jsxs)("div",{className:"space-y-1 px-2 py-2",children:[(0,b.jsx)(o.Skeleton,{className:"h-8 w-full"}),(0,b.jsx)(o.Skeleton,{className:"h-8 w-full"}),(0,b.jsx)(o.Skeleton,{className:"h-8 w-full"}),(0,b.jsx)(o.Skeleton,{className:"h-8 w-full"}),(0,b.jsx)(o.Skeleton,{className:"h-8 w-full"})]})]})}a.s(["default",0,function({children:a}){let f=decodeURIComponent((0,c.useParams)().store),g=(0,c.useSearchParams)(),{data:h,isLoading:i}=(0,r.useMemoryStore)(f),[k,l]=(0,d.useState)(!1),m=g.toString()?`?${g.toString()}`:"",t=`/memory/${encodeURIComponent(f)}`,u=R.map(a=>({href:`${t}/${a.segment}${m}`,label:a.label,icon:a.icon}));return i?(0,b.jsx)(q.DetailLayout,{sidebar:(0,b.jsx)(S,{}),children:(0,b.jsxs)("div",{className:"space-y-6",children:[(0,b.jsx)(o.Skeleton,{className:"h-10 w-64"}),(0,b.jsx)(o.Skeleton,{className:"h-28 w-full"}),(0,b.jsx)(o.Skeleton,{className:"h-64 w-full"})]})}):h?(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)(q.DetailLayout,{sidebar:(0,b.jsxs)(q.DetailSidebar,{children:[(0,b.jsx)(q.DetailSidebarHeader,{icon:(0,b.jsx)(e.Brain,{}),accent:"purple",name:h.memoryStoreName,typeLabel:"记忆库 · MEMORY STORE",description:h.description,actions:(0,b.jsxs)(p.DropdownMenu,{children:[(0,b.jsx)(p.DropdownMenuTrigger,{asChild:!0,children:(0,b.jsx)("button",{type:"button","aria-label":"更多操作",className:"flex h-7 w-7 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)(j.MoreVertical,{className:"h-4 w-4"})})}),(0,b.jsx)(p.DropdownMenuContent,{align:"end",children:(0,b.jsxs)(p.DropdownMenuItem,{onSelect:a=>{a.preventDefault(),l(!0)},className:"text-[hsl(var(--destructive))] focus:bg-[hsl(var(--danger-soft))] focus:text-[hsl(var(--destructive))] hover:bg-[hsl(var(--danger-soft))] hover:text-[hsl(var(--destructive))]",children:[(0,b.jsx)(n.Trash2,{className:"h-3.5 w-3.5"}),"删除记忆库"]})})]})}),(0,b.jsx)(q.DetailSidebarMenu,{items:u}),(0,b.jsx)(q.DetailSidebarBack,{href:"/memory",label:"返回列表"})]}),children:(0,b.jsxs)("div",{className:"space-y-6",children:[(0,b.jsx)(P,{}),(0,b.jsx)("div",{children:a})]})}),(0,b.jsx)(s.MemoryDeleteDialog,{memoryStoreName:f,open:k,onOpenChange:l,redirectToList:!0})]}):(0,b.jsx)(q.DetailLayout,{sidebar:(0,b.jsx)(S,{}),children:(0,b.jsx)("div",{className:"flex items-center justify-center py-20 text-muted-foreground",children:"记忆库不存在或已被删除"})})}],598680)}];
2
2
 
3
3
  //# sourceMappingURL=dashboard_src_app_%28dashboard%29_memory_%5Bstore%5D_layout_tsx_0rbi41w._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[732759,a=>{"use strict";var b=a.i(634020),c=a.i(880470),d=a.i(604395),e=a.i(411697),f=a.i(71562),g=a.i(771071),h=a.i(680904),i=a.i(263265),j=a.i(776192),k=a.i(470535),l=a.i(692942),m=a.i(933596),n=a.i(895487),o=a.i(421347),p=a.i(225377);let q=h.z.object({description:h.z.string().trim().max(256,"描述不超过 256 字").optional()});function r({memoryStore:a}){let c,d=(c=(0,n.useQueryClient)(),(0,m.useMutation)({mutationFn:a=>(0,o.updateMemoryStore)(a),onSuccess:()=>{(0,p.invalidateMemoryQueries)(c)}})),e=(0,f.useForm)({resolver:(0,g.zodResolver)(q),defaultValues:{description:a.description??""}});async function h(b){try{await d.mutateAsync({memoryStoreName:a.memoryStoreName,description:b.description?.length?b.description:void 0}),i.toast.success("记忆库设置已更新")}catch(a){i.toast.error(a instanceof Error?a.message:"更新记忆库失败")}}return(0,b.jsx)(l.Form,{...e,children:(0,b.jsx)("form",{onSubmit:e.handleSubmit(h),className:"space-y-6",children:(0,b.jsxs)("section",{className:"rounded-lg border border-[hsl(var(--border))] bg-[hsl(var(--card))] p-5 shadow-sm",children:[(0,b.jsx)(s,{title:"基本信息",description:"调整记忆库的描述,帮助团队识别用途。名称在创建后不可修改。"}),(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsx)(t,{label:"名称",value:a.memoryStoreName}),(0,b.jsx)(l.FormField,{control:e.control,name:"description",render:({field:a})=>(0,b.jsxs)(l.FormItem,{children:[(0,b.jsx)(l.FormLabel,{children:"描述"}),(0,b.jsx)(l.FormControl,{children:(0,b.jsx)(k.Textarea,{placeholder:"描述这个记忆库的用途...",className:"resize-none",rows:4,...a})}),(0,b.jsx)(l.FormMessage,{})]})}),(0,b.jsx)("div",{className:"flex justify-end border-t border-[hsl(var(--border-light))] pt-4",children:(0,b.jsx)(j.Button,{type:"submit",disabled:d.isPending,children:d.isPending?"保存中...":"保存更改"})})]})]})})})}function s({title:a,description:c}){return(0,b.jsxs)("header",{className:"mb-4 border-b border-[hsl(var(--border-light))] pb-3",children:[(0,b.jsx)("h3",{className:"text-[15px] font-semibold leading-tight text-[hsl(var(--foreground))]",children:a}),(0,b.jsx)("p",{className:"mt-1 text-xs leading-relaxed text-[hsl(var(--muted-foreground))]",children:c})]})}function t({label:a,value:c}){return(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsx)("span",{className:"text-sm text-muted-foreground",children:a}),(0,b.jsx)("span",{className:"text-sm font-medium",children:c})]})}function u(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",second:"2-digit"})}catch{return String(a)}}function v({title:a,description:c}){return(0,b.jsxs)("header",{className:"mb-4 border-b border-[hsl(var(--border-light))] pb-3",children:[(0,b.jsx)("h3",{className:"text-[15px] font-semibold leading-tight text-[hsl(var(--foreground))]",children:a}),(0,b.jsx)("p",{className:"mt-1 text-xs leading-relaxed text-[hsl(var(--muted-foreground))]",children:c})]})}function w({label:a,value:c}){return(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsx)("span",{className:"text-sm text-muted-foreground",children:a}),(0,b.jsx)("span",{className:"text-sm font-medium",children:c})]})}a.s(["default",0,function(){let a=decodeURIComponent((0,c.useParams)().store),{data:f,isLoading:g}=(0,e.useMemoryStore)(a);return g?(0,b.jsxs)("div",{className:"space-y-6",children:[(0,b.jsx)(d.Skeleton,{className:"h-8 w-48"}),(0,b.jsx)(d.Skeleton,{className:"h-32 w-full"})]}):f?(0,b.jsxs)("div",{className:"grid gap-6 xl:grid-cols-[minmax(0,1fr)_320px]",children:[(0,b.jsx)(r,{memoryStore:f}),(0,b.jsx)("aside",{className:"space-y-6",children:(0,b.jsxs)("section",{className:"rounded-lg border border-[hsl(var(--border))] bg-[hsl(var(--card))] p-5 shadow-sm",children:[(0,b.jsx)(v,{title:"记忆库信息",description:"只读元数据,由服务端维护。"}),(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsx)(w,{label:"OTS 实例",value:f.otsInstance??"-"}),(0,b.jsx)(w,{label:"创建时间",value:u(f.createdAt)}),(0,b.jsx)(w,{label:"更新时间",value:u(f.updatedAt)}),f.lastSeenAt&&(0,b.jsx)(w,{label:"最近活跃",value:u(f.lastSeenAt)})]})]})})]}):(0,b.jsx)("div",{className:"py-12 text-center text-muted-foreground",children:"记忆库不存在"})}],732759)}];
1
+ module.exports=[732759,a=>{"use strict";var b=a.i(634020),c=a.i(880470),d=a.i(604395),e=a.i(411697),f=a.i(71562),g=a.i(771071),h=a.i(680904),i=a.i(263265),j=a.i(776192),k=a.i(470535),l=a.i(692942),m=a.i(933596),n=a.i(895487),o=a.i(421347),p=a.i(225377);let q=h.z.object({description:h.z.string().trim().max(256,"描述不超过 256 字").optional(),extractInstructions:h.z.string().trim().max(4096,"抽取指令不超过 4096 字").optional()});function r({memoryStore:a}){let c,d=(c=(0,n.useQueryClient)(),(0,m.useMutation)({mutationFn:a=>(0,o.updateMemoryStore)(a),onSuccess:()=>{(0,p.invalidateMemoryQueries)(c)}})),e=(0,f.useForm)({resolver:(0,g.zodResolver)(q),defaultValues:{description:a.description??"",extractInstructions:a.extractInstructions??""}});async function h(b){try{let c=a.extractInstructions??"",e=b.extractInstructions??"",f=e!==c;await d.mutateAsync({memoryStoreName:a.memoryStoreName,description:b.description?.length?b.description:void 0,...f?{extractInstructions:e}:{}}),i.toast.success("记忆库设置已更新")}catch(a){i.toast.error(a instanceof Error?a.message:"更新记忆库失败")}}return(0,b.jsx)(l.Form,{...e,children:(0,b.jsxs)("form",{onSubmit:e.handleSubmit(h),className:"space-y-6",children:[(0,b.jsxs)("section",{className:"rounded-lg border border-[hsl(var(--border))] bg-[hsl(var(--card))] p-5 shadow-sm",children:[(0,b.jsx)(s,{title:"基本信息",description:"调整记忆库的描述,帮助团队识别用途。名称在创建后不可修改。"}),(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsx)(t,{label:"名称",value:a.memoryStoreName}),(0,b.jsx)(l.FormField,{control:e.control,name:"description",render:({field:a})=>(0,b.jsxs)(l.FormItem,{children:[(0,b.jsx)(l.FormLabel,{children:"描述"}),(0,b.jsx)(l.FormControl,{children:(0,b.jsx)(k.Textarea,{placeholder:"描述这个记忆库的用途...",className:"resize-none",rows:4,...a})}),(0,b.jsx)(l.FormMessage,{})]})})]})]}),(0,b.jsxs)("section",{className:"rounded-lg border border-[hsl(var(--border))] bg-[hsl(var(--card))] p-5 shadow-sm",children:[(0,b.jsx)(s,{title:"记忆抽取指令",description:"可选。这里填写的指令会注入到后台记忆抽取的提示词中,用于引导从对话里提炼哪些信息、忽略哪些信息。留空则使用默认抽取策略。"}),(0,b.jsx)(l.FormField,{control:e.control,name:"extractInstructions",render:({field:a})=>(0,b.jsxs)(l.FormItem,{children:[(0,b.jsx)(l.FormLabel,{children:"抽取指令"}),(0,b.jsx)(l.FormControl,{children:(0,b.jsx)(k.Textarea,{placeholder:"例如:重点关注用户的医疗术语与用药偏好;忽略寒暄与客套内容。",className:"resize-none",rows:5,...a})}),(0,b.jsx)(l.FormDescription,{children:"最多 4096 个字符。留空表示恢复默认抽取策略。"}),(0,b.jsx)(l.FormMessage,{})]})})]}),(0,b.jsx)("div",{className:"flex justify-end border-t border-[hsl(var(--border-light))] pt-4",children:(0,b.jsx)(j.Button,{type:"submit",disabled:d.isPending,children:d.isPending?"保存中...":"保存更改"})})]})})}function s({title:a,description:c}){return(0,b.jsxs)("header",{className:"mb-4 border-b border-[hsl(var(--border-light))] pb-3",children:[(0,b.jsx)("h3",{className:"text-[15px] font-semibold leading-tight text-[hsl(var(--foreground))]",children:a}),(0,b.jsx)("p",{className:"mt-1 text-xs leading-relaxed text-[hsl(var(--muted-foreground))]",children:c})]})}function t({label:a,value:c}){return(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsx)("span",{className:"text-sm text-muted-foreground",children:a}),(0,b.jsx)("span",{className:"text-sm font-medium",children:c})]})}function u(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",second:"2-digit"})}catch{return String(a)}}function v({title:a,description:c}){return(0,b.jsxs)("header",{className:"mb-4 border-b border-[hsl(var(--border-light))] pb-3",children:[(0,b.jsx)("h3",{className:"text-[15px] font-semibold leading-tight text-[hsl(var(--foreground))]",children:a}),(0,b.jsx)("p",{className:"mt-1 text-xs leading-relaxed text-[hsl(var(--muted-foreground))]",children:c})]})}function w({label:a,value:c}){return(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsx)("span",{className:"text-sm text-muted-foreground",children:a}),(0,b.jsx)("span",{className:"text-sm font-medium",children:c})]})}a.s(["default",0,function(){let a=decodeURIComponent((0,c.useParams)().store),{data:f,isLoading:g}=(0,e.useMemoryStore)(a);return g?(0,b.jsxs)("div",{className:"space-y-6",children:[(0,b.jsx)(d.Skeleton,{className:"h-8 w-48"}),(0,b.jsx)(d.Skeleton,{className:"h-32 w-full"})]}):f?(0,b.jsxs)("div",{className:"grid gap-6 xl:grid-cols-[minmax(0,1fr)_320px]",children:[(0,b.jsx)(r,{memoryStore:f}),(0,b.jsx)("aside",{className:"space-y-6",children:(0,b.jsxs)("section",{className:"rounded-lg border border-[hsl(var(--border))] bg-[hsl(var(--card))] p-5 shadow-sm",children:[(0,b.jsx)(v,{title:"记忆库信息",description:"只读元数据,由服务端维护。"}),(0,b.jsxs)("div",{className:"space-y-3",children:[(0,b.jsx)(w,{label:"OTS 实例",value:f.otsInstance??"-"}),(0,b.jsx)(w,{label:"创建时间",value:u(f.createdAt)}),(0,b.jsx)(w,{label:"更新时间",value:u(f.updatedAt)}),f.lastSeenAt&&(0,b.jsx)(w,{label:"最近活跃",value:u(f.lastSeenAt)})]})]})})]}):(0,b.jsx)("div",{className:"py-12 text-center text-muted-foreground",children:"记忆库不存在"})}],732759)}];
2
2
 
3
3
  //# sourceMappingURL=dashboard_src_app_%28dashboard%29_memory_%5Bstore%5D_settings_page_tsx_0y26.xu._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[470260,a=>{"use strict";var b=a.i(634020),c=a.i(971938),d=a.i(880470),e=a.i(401605),f=a.i(776192),g=a.i(604395),h=a.i(663525),i=a.i(887617),j=a.i(310215),k=a.i(983366),l=a.i(421347),m=a.i(225377),n=a.i(739096),o=a.i(908264),p=a.i(87491),q=a.i(843836),r=a.i(223301),s=a.i(865271),t=a.i(726436),u=a.i(854341),v=a.i(364565);let w={queued:"bg-info-soft text-info",running:"bg-info-soft text-info",completed:"bg-success-soft text-success",failed:"bg-danger-soft text-danger",needs_reconcile:"bg-warning-soft text-warning"},x={queued:"排队中",running:"处理中",completed:"已完成",failed:"失败",needs_reconcile:"待修复"};function y({status:a}){return(0,b.jsx)("span",{className:(0,v.cn)("inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-medium select-none whitespace-nowrap",w[a]??"bg-muted text-muted-foreground"),children:x[a]??a})}function z(a){return a&&[a.appId,a.tenantId,a.agentId,a.runId].filter(Boolean).join(" / ")||"-"}function A(a){if(null==a)return;if("number"==typeof a)return a;let b=new Date(a).getTime();return Number.isFinite(b)?b:void 0}function B(a){if(!a)return"-";let b=A(a);return void 0===b?a:new Date(b).toLocaleString("zh-CN")}function C({tasks:a,memoryStoreName:d}){let[e,g]=(0,c.useState)(null),[h,i]=(0,c.useState)(!1);return 0===a.length?(0,b.jsx)("div",{className:"rounded-lg border border-dashed border-[hsl(var(--border))] py-10 text-center text-sm text-muted-foreground",children:"当前 scope 下暂无任务"}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{className:"rounded-lg border border-[hsl(var(--border))]",children:(0,b.jsxs)(r.Table,{children:[(0,b.jsx)(r.TableHeader,{children:(0,b.jsxs)(r.TableRow,{children:[(0,b.jsx)(r.TableHead,{children:"任务 ID"}),(0,b.jsx)(r.TableHead,{children:"Scope"}),(0,b.jsx)(r.TableHead,{children:"状态"}),(0,b.jsx)(r.TableHead,{className:"text-right",children:"接收消息数"}),(0,b.jsx)(r.TableHead,{className:"text-right",children:"提取记忆数"}),(0,b.jsx)(r.TableHead,{children:"更新时间"}),(0,b.jsx)(r.TableHead,{className:"text-right",children:"操作"})]})}),(0,b.jsx)(r.TableBody,{children:a.map(a=>{let c=A(a.updatedAt);return(0,b.jsxs)(r.TableRow,{className:"cursor-pointer hover:bg-[hsl(var(--accent))]",onClick:()=>{g(a),i(!0)},children:[(0,b.jsx)(r.TableCell,{className:"max-w-[180px] truncate font-mono text-xs",children:a.requestId}),(0,b.jsx)(r.TableCell,{className:"text-xs",children:z(a.scope)}),(0,b.jsx)(r.TableCell,{children:(0,b.jsx)(y,{status:a.status})}),(0,b.jsx)(r.TableCell,{className:"text-right text-sm",children:a.acceptedMessages??"-"}),(0,b.jsx)(r.TableCell,{className:"text-right text-sm",children:a.derivedUnitIds?.length??0}),(0,b.jsx)(r.TableCell,{className:"text-xs text-muted-foreground",children:void 0!==c?(0,b.jsx)(s.RelativeTime,{timestamp:c}):"-"}),(0,b.jsx)(r.TableCell,{className:"text-right",onClick:a=>a.stopPropagation(),children:(0,b.jsxs)(f.Button,{size:"sm",variant:"ghost",onClick:()=>{g(a),i(!0)},children:[(0,b.jsx)(p.Eye,{className:"mr-1 h-3.5 w-3.5"}),"详情"]})})]},a.requestId)})})]})}),(0,b.jsx)(D,{task:e,memoryStoreName:d,open:h,onOpenChange:i})]})}function D({task:a,memoryStoreName:c,open:d,onOpenChange:e}){return a?(0,b.jsx)(q.Dialog,{open:d,onOpenChange:e,children:(0,b.jsxs)(q.DialogContent,{className:"max-w-4xl",children:[(0,b.jsxs)(q.DialogHeader,{children:[(0,b.jsx)(q.DialogTitle,{children:"任务详情"}),(0,b.jsx)("p",{className:"mt-1 break-all font-mono text-xs text-muted-foreground",children:a.requestId})]}),(0,b.jsx)(E,{task:a}),(0,b.jsxs)("div",{className:"grid gap-4 lg:grid-cols-2",children:[(0,b.jsx)(F,{task:a,memoryStoreName:c}),(0,b.jsx)(G,{task:a,memoryStoreName:c})]}),a.lastError&&(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"mb-1 text-xs text-muted-foreground",children:"最后一次错误"}),(0,b.jsx)("pre",{className:"max-h-40 overflow-auto whitespace-pre-wrap rounded border border-[hsl(var(--border-light))] bg-danger-soft/40 p-2 text-xs text-danger",children:a.lastError})]})]})}):null}function E({task:a}){let c=a.derivedUnitIds?.length??0;return(0,b.jsxs)("div",{className:"grid gap-3 rounded border border-[hsl(var(--border-light))] p-3 sm:grid-cols-2 lg:grid-cols-3",children:[(0,b.jsx)(I,{label:"状态",children:(0,b.jsx)(y,{status:a.status})}),(0,b.jsx)(I,{label:"Scope",mono:!0,value:z(a.scope)}),(0,b.jsx)(I,{label:"接收消息数 / 提取记忆数",children:(0,b.jsxs)("span",{className:"font-mono text-sm",children:[a.acceptedMessages??"-",(0,b.jsx)("span",{className:"text-muted-foreground",children:" → "}),c]})}),(0,b.jsx)(I,{label:"创建时间",value:B(a.createdAt)}),(0,b.jsx)(I,{label:"完成时间",value:B(a.finishedAt)}),(0,b.jsx)(I,{label:"事件类型",value:a.eventType}),(0,b.jsxs)("div",{className:"sm:col-span-2 lg:col-span-3 space-y-1",children:[(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:"会话键"}),(0,b.jsx)("p",{className:"break-all font-mono text-xs text-foreground/90",children:a.conversationKey??"-"})]})]})}function F({task:a,memoryStoreName:c}){var d;let e,f,{minTimestamp:h,maxTimestamp:i}=(e=A((d=a).createdAt),f=A(d.finishedAt)??A(d.updatedAt),void 0===e?{}:{minTimestamp:new Date(e-6e4).toISOString(),maxTimestamp:new Date((f??e)+6e4).toISOString()}),j=(0,u.useMemoryMessages)(c,a.scope,void 0,50,!!(c&&a.scope?.appId),{minTimestamp:h,maxTimestamp:i}),k=(j.data?.items??[]).filter(a=>"string"==typeof a.content&&a.content.length>0);return(0,b.jsxs)("section",{className:"rounded border border-[hsl(var(--border-light))] p-3",children:[(0,b.jsxs)("header",{className:"mb-2 flex items-center justify-between",children:[(0,b.jsx)("h4",{className:"text-sm font-semibold",children:"原始会话"}),(0,b.jsx)("span",{className:"text-[10px] text-muted-foreground",children:"任务时间窗口内的消息"})]}),j.isLoading?(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(g.Skeleton,{className:"h-12 w-full"}),(0,b.jsx)(g.Skeleton,{className:"h-12 w-full"})]}):0===k.length?(0,b.jsx)("p",{className:"rounded border border-dashed border-[hsl(var(--border))] py-4 text-center text-xs italic text-muted-foreground",children:"未在该时间窗口内找到原始会话消息"}):(0,b.jsx)("ul",{className:"max-h-[420px] space-y-2 overflow-auto pr-1",children:k.map((a,c)=>(0,b.jsxs)("li",{className:"rounded border border-[hsl(var(--border-light))] bg-[hsl(var(--muted)/0.3)] p-2",children:[(0,b.jsxs)("div",{className:"mb-1 flex items-center gap-2 text-[10px] text-muted-foreground",children:[(0,b.jsx)("span",{className:"rounded bg-[hsl(var(--surface))] px-1.5 py-px font-mono",children:a.role??"-"}),a.speaker&&(0,b.jsx)("span",{className:"font-mono",children:a.speaker}),a.timestamp&&(0,b.jsx)("span",{className:"ml-auto",children:new Date(a.timestamp).toLocaleTimeString("zh-CN")})]}),(0,b.jsx)("p",{className:"whitespace-pre-wrap break-words text-xs text-foreground/90",children:a.content})]},a.messageId??c))})]})}function G({task:a,memoryStoreName:c}){let d=a.derivedUnitIds??[];return(0,b.jsxs)("section",{className:"rounded border border-[hsl(var(--border-light))] p-3",children:[(0,b.jsxs)("header",{className:"mb-2 flex items-center justify-between",children:[(0,b.jsx)("h4",{className:"text-sm font-semibold",children:"提取的记忆"}),(0,b.jsxs)("span",{className:"text-[10px] text-muted-foreground",children:["共 ",d.length," 条"]})]}),0===d.length?(0,b.jsx)("p",{className:"rounded border border-dashed border-[hsl(var(--border))] py-4 text-center text-xs italic text-muted-foreground",children:"completed"===a.status?"本次未提取出新记忆":"任务尚未提取记忆"}):(0,b.jsx)("ul",{className:"max-h-[420px] space-y-2 overflow-auto pr-1",children:d.map(d=>(0,b.jsx)(H,{memoryStoreName:c,memoryId:d,scope:a.scope},d))})]})}function H({memoryStoreName:a,memoryId:c,scope:d}){let e=(0,t.useMemoryUnit)(a,c,d),f=e.data?.memory;return(0,b.jsxs)("li",{className:"rounded border border-[hsl(var(--border-light))] bg-[hsl(var(--muted)/0.3)] p-2",children:[(0,b.jsxs)("div",{className:"mb-1 flex items-center gap-2 text-[10px] text-muted-foreground",children:[(0,b.jsx)("span",{className:"break-all font-mono",children:c}),f?.unit_type&&(0,b.jsx)("span",{className:"ml-auto rounded bg-[hsl(var(--surface))] px-1.5 py-px font-mono",children:f.unit_type})]}),e.isLoading?(0,b.jsx)(g.Skeleton,{className:"h-8 w-full"}):f?.text?(0,b.jsx)("p",{className:"whitespace-pre-wrap break-words text-xs text-foreground/90",children:f.text}):(0,b.jsx)("p",{className:"text-xs italic text-muted-foreground",children:"记忆已不可读(可能已被删除或合并)"})]})}function I({label:a,value:c,mono:d,children:e}){return(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:a}),e?(0,b.jsx)("div",{className:"text-sm font-medium",children:e}):(0,b.jsx)("p",{className:(0,v.cn)("break-all text-sm font-medium",d&&"font-mono"),children:c??"-"})]})}let J=[{value:"all",label:"全部状态"},{value:"queued",label:"排队中"},{value:"running",label:"处理中"},{value:"completed",label:"已完成"},{value:"failed",label:"失败"},{value:"needs_reconcile",label:"待修复"}];a.s(["default",0,function(){let a=decodeURIComponent((0,d.useParams)().store),p=(0,d.useSearchParams)().toString(),q=(0,c.useMemo)(()=>(0,o.buildMemoryScope)(new URLSearchParams(p)),[p]),[r,s]=(0,c.useState)("all"),[t,u]=(0,c.useState)(void 0),v=function(a,b,c){let{context:d,ready:e}=(0,n.useRuntimeContext)();return(0,k.useQuery)({queryKey:m.queryKeys.memoryTasks(d.dataScopeKey,a,b,c?.nextToken,c?.limit,{status:c?.status,minTimestamp:c?.minTimestamp,maxTimestamp:c?.maxTimestamp}),queryFn:()=>(0,l.listMemoryTasks)(a,b,c),enabled:e&&!!a&&!!b?.appId})}(a,q,{limit:50,nextToken:t,status:"all"===r?void 0:r}),w=v.data?.items??[];return(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("h2",{className:"text-lg font-semibold",children:"记忆抽取任务"}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:"每条 AddMemories 调用对应一个任务记录,展示从消息到记忆条目的处理状态"})]}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsxs)(h.Select,{value:r,onValueChange:s,children:[(0,b.jsx)(h.SelectTrigger,{className:"h-8 w-32 text-sm",children:(0,b.jsx)(h.SelectValue,{})}),(0,b.jsx)(h.SelectContent,{children:J.map(a=>(0,b.jsx)(h.SelectItem,{value:a.value,children:a.label},a.value))})]}),(0,b.jsx)(i.RefreshButton,{onClick:()=>v.refetch(),loading:v.isRefetching})]})]}),v.isLoading?(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(g.Skeleton,{className:"h-10 w-full"}),(0,b.jsx)(g.Skeleton,{className:"h-10 w-full"}),(0,b.jsx)(g.Skeleton,{className:"h-10 w-full"})]}):0===w.length?(0,b.jsx)(j.EmptyState,{icon:e.ListChecks,title:"暂无任务",description:"all"===r?"该 scope 下还没有 AddMemories 调用产生的入库任务。可以在长期记忆 / 检索 Tab 触发记忆写入,或调用 CLI memory add 后回到这里查看进度。":`当前过滤为「${J.find(a=>a.value===r)?.label??r}」状态,可以切到「全部状态」看是否被过滤掉了`}):(0,b.jsx)(C,{tasks:w,memoryStoreName:a}),v.data?.nextToken&&(0,b.jsx)("div",{className:"flex justify-end",children:(0,b.jsx)(f.Button,{variant:"outline",size:"sm",onClick:()=>u(v.data?.nextToken),children:"加载下一页"})})]})}],470260)}];
1
+ module.exports=[470260,a=>{"use strict";var b=a.i(634020),c=a.i(971938),d=a.i(880470),e=a.i(401605),f=a.i(776192),g=a.i(604395),h=a.i(663525),i=a.i(887617),j=a.i(310215),k=a.i(983366),l=a.i(421347),m=a.i(225377),n=a.i(739096),o=a.i(908264),p=a.i(87491),q=a.i(843836),r=a.i(223301),s=a.i(865271),t=a.i(726436),u=a.i(564339),v=a.i(333646),w=a.i(956241),x=a.i(35686);function y(a,b){let c=new Set(b);return a.filter(a=>!c.has(a))}var z=class extends w.Subscribable{#a;#b;#c;#d;#e;#f;#g;#h;#i;#j=[];constructor(a,b,c){super(),this.#a=a,this.#d=c,this.#c=[],this.#e=[],this.#b=[],this.setQueries(b)}onSubscribe(){1===this.listeners.size&&this.#e.forEach(a=>{a.subscribe(b=>{this.#k(a,b)})})}onUnsubscribe(){this.listeners.size||this.destroy()}destroy(){this.listeners=new Set,this.#e.forEach(a=>{a.destroy()})}setQueries(a,b){this.#c=a,this.#d=b,u.notifyManager.batch(()=>{let a=this.#e,b=this.#l(this.#c);b.forEach(a=>a.observer.setOptions(a.defaultedQueryOptions));let c=b.map(a=>a.observer),d=c.map(a=>a.getCurrentResult()),e=a.length!==c.length,f=c.some((b,c)=>b!==a[c]),g=e||f,h=!!g||d.some((a,b)=>{let c=this.#b[b];return!c||!(0,x.shallowEqualObjects)(a,c)});(g||h)&&(g&&(this.#j=b,this.#e=c),this.#b=d,this.hasListeners()&&(g&&(y(a,c).forEach(a=>{a.destroy()}),y(c,a).forEach(a=>{a.subscribe(b=>{this.#k(a,b)})})),this.#m()))})}getCurrentResult(){return this.#b}getQueries(){return this.#e.map(a=>a.getCurrentQuery())}getObservers(){return this.#e}getOptimisticResult(a,b){let c=this.#l(a),d=c.map(a=>a.observer.getOptimisticResult(a.defaultedQueryOptions)),e=c.map(a=>a.defaultedQueryOptions.queryHash);return[d,a=>this.#n(a??d,b,e),()=>this.#o(d,c)]}#o(a,b){return b.map((c,d)=>{let e=a[d];return c.defaultedQueryOptions.notifyOnChangeProps?e:c.observer.trackResult(e,a=>{b.forEach(b=>{b.observer.trackProp(a)})})})}#n(a,b,c){if(b){let d=this.#i,e=void 0!==c&&void 0!==d&&(d.length!==c.length||c.some((a,b)=>a!==d[b]));return(!this.#f||this.#b!==this.#h||e||b!==this.#g)&&(this.#g=b,this.#h=this.#b,void 0!==c&&(this.#i=c),this.#f=(0,x.replaceEqualDeep)(this.#f,b(a))),this.#f}return a}#l(a){let b=new Map;this.#e.forEach(a=>{let c=a.options.queryHash;if(!c)return;let d=b.get(c);d?d.push(a):b.set(c,[a])});let c=[];return a.forEach(a=>{let d=this.#a.defaultQueryOptions(a),e=b.get(d.queryHash)?.shift()??new v.QueryObserver(this.#a,d);c.push({defaultedQueryOptions:d,observer:e})}),c}#k(a,b){let c=this.#e.indexOf(a);if(-1!==c){var d;let a;this.#b=(d=this.#b,(a=d.slice(0))[c]=b,a),this.#m()}}#m(){if(this.hasListeners()){let a=this.#f,b=this.#o(this.#b,this.#j);a!==this.#n(b,this.#d?.combine)&&u.notifyManager.batch(()=>{this.listeners.forEach(a=>{a(this.#b)})})}}},A=a.i(895487),B=a.i(947083),C=a.i(880822),D=a.i(328266),E=a.i(654939);function F(a){if(null==a)return;if("number"==typeof a)return a;let b=new Date(a).getTime();return Number.isFinite(b)?b:void 0}var G=a.i(364565);let H={queued:"bg-info-soft text-info",running:"bg-info-soft text-info",completed:"bg-success-soft text-success",failed:"bg-danger-soft text-danger",needs_reconcile:"bg-warning-soft text-warning"},I={queued:"排队中",running:"处理中",completed:"已完成",failed:"失败",needs_reconcile:"待修复"};function J({status:a}){return(0,b.jsx)("span",{className:(0,G.cn)("inline-flex items-center rounded-full px-2.5 py-0.5 text-xs font-medium select-none whitespace-nowrap",H[a]??"bg-muted text-muted-foreground"),children:I[a]??a})}function K(a){return a&&[a.appId,a.tenantId,a.agentId,a.runId].filter(Boolean).join(" / ")||"-"}function L(a){if(null==a)return;if("number"==typeof a)return a;let b=new Date(a).getTime();return Number.isFinite(b)?b:void 0}function M(a){if(!a)return"-";let b=L(a);return void 0===b?a:new Date(b).toLocaleString("zh-CN")}function N({tasks:a,memoryStoreName:d}){let[e,g]=(0,c.useState)(null),[h,i]=(0,c.useState)(!1);return 0===a.length?(0,b.jsx)("div",{className:"rounded-lg border border-dashed border-[hsl(var(--border))] py-10 text-center text-sm text-muted-foreground",children:"当前 scope 下暂无任务"}):(0,b.jsxs)(b.Fragment,{children:[(0,b.jsx)("div",{className:"rounded-lg border border-[hsl(var(--border))]",children:(0,b.jsxs)(r.Table,{children:[(0,b.jsx)(r.TableHeader,{children:(0,b.jsxs)(r.TableRow,{children:[(0,b.jsx)(r.TableHead,{children:"任务 ID"}),(0,b.jsx)(r.TableHead,{children:"Scope"}),(0,b.jsx)(r.TableHead,{children:"状态"}),(0,b.jsx)(r.TableHead,{className:"text-right",children:"接收消息数"}),(0,b.jsx)(r.TableHead,{className:"text-right",children:"提取记忆数"}),(0,b.jsx)(r.TableHead,{children:"更新时间"}),(0,b.jsx)(r.TableHead,{className:"text-right",children:"操作"})]})}),(0,b.jsx)(r.TableBody,{children:a.map(a=>{let c=L(a.updatedAt);return(0,b.jsxs)(r.TableRow,{className:"cursor-pointer hover:bg-[hsl(var(--accent))]",onClick:()=>{g(a),i(!0)},children:[(0,b.jsx)(r.TableCell,{className:"max-w-[180px] truncate font-mono text-xs",children:a.requestId}),(0,b.jsx)(r.TableCell,{className:"text-xs",children:K(a.scope)}),(0,b.jsx)(r.TableCell,{children:(0,b.jsx)(J,{status:a.status})}),(0,b.jsx)(r.TableCell,{className:"text-right text-sm",children:a.acceptedMessages??"-"}),(0,b.jsx)(r.TableCell,{className:"text-right text-sm",children:a.derivedUnitIds?.length??0}),(0,b.jsx)(r.TableCell,{className:"text-xs text-muted-foreground",children:void 0!==c?(0,b.jsx)(s.RelativeTime,{timestamp:c}):"-"}),(0,b.jsx)(r.TableCell,{className:"text-right",onClick:a=>a.stopPropagation(),children:(0,b.jsxs)(f.Button,{size:"sm",variant:"ghost",onClick:()=>{g(a),i(!0)},children:[(0,b.jsx)(p.Eye,{className:"mr-1 h-3.5 w-3.5"}),"详情"]})})]},a.requestId)})})]})}),(0,b.jsx)(O,{task:e,memoryStoreName:d,open:h,onOpenChange:i})]})}function O({task:a,memoryStoreName:c,open:d,onOpenChange:e}){return a?(0,b.jsx)(q.Dialog,{open:d,onOpenChange:e,children:(0,b.jsxs)(q.DialogContent,{className:"max-w-4xl",children:[(0,b.jsxs)(q.DialogHeader,{children:[(0,b.jsx)(q.DialogTitle,{children:"任务详情"}),(0,b.jsx)("p",{className:"mt-1 break-all font-mono text-xs text-muted-foreground",children:a.requestId})]}),(0,b.jsx)(P,{task:a}),(0,b.jsxs)("div",{className:"grid gap-4 lg:grid-cols-2",children:[(0,b.jsx)(Q,{task:a,memoryStoreName:c}),(0,b.jsx)(R,{task:a,memoryStoreName:c})]}),a.lastError&&(0,b.jsxs)("div",{children:[(0,b.jsx)("p",{className:"mb-1 text-xs text-muted-foreground",children:"最后一次错误"}),(0,b.jsx)("pre",{className:"max-h-40 overflow-auto whitespace-pre-wrap rounded border border-[hsl(var(--border-light))] bg-danger-soft/40 p-2 text-xs text-danger",children:a.lastError})]})]})}):null}function P({task:a}){let c=a.derivedUnitIds?.length??0;return(0,b.jsxs)("div",{className:"grid gap-3 rounded border border-[hsl(var(--border-light))] p-3 sm:grid-cols-2 lg:grid-cols-3",children:[(0,b.jsx)(T,{label:"状态",children:(0,b.jsx)(J,{status:a.status})}),(0,b.jsx)(T,{label:"Scope",mono:!0,value:K(a.scope)}),(0,b.jsx)(T,{label:"接收消息数 / 提取记忆数",children:(0,b.jsxs)("span",{className:"font-mono text-sm",children:[a.acceptedMessages??"-",(0,b.jsx)("span",{className:"text-muted-foreground",children:" → "}),c]})}),(0,b.jsx)(T,{label:"创建时间",value:M(a.createdAt)}),(0,b.jsx)(T,{label:"完成时间",value:M(a.finishedAt)}),(0,b.jsx)(T,{label:"事件类型",value:a.eventType}),(0,b.jsxs)("div",{className:"sm:col-span-2 lg:col-span-3 space-y-1",children:[(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:"会话键"}),(0,b.jsx)("p",{className:"break-all font-mono text-xs text-foreground/90",children:a.conversationKey??"-"})]})]})}function Q({task:a,memoryStoreName:d}){let{messages:e,isLoading:f,precise:h}=function(a,b){var d;let e,f,{context:g,ready:h}=(0,n.useRuntimeContext)(),i=b?.scope??null,j=b?.derivedUnitIds??[],o=h&&!!a&&!!i?.appId,p=function({queries:a,...b}){let d=(0,A.useQueryClient)(void 0),e=(0,B.useIsRestoring)(),f=(0,C.useQueryErrorResetBoundary)(),g=c.useMemo(()=>a.map(a=>{let b=d.defaultQueryOptions(a);return b._optimisticResults=e?"isRestoring":"optimistic",b}),[a,d,e]);g.forEach(a=>{(0,E.ensureSuspenseTimers)(a);let b=d.getQueryCache().get(a.queryHash);(0,D.ensurePreventErrorBoundaryRetry)(a,f,b)}),(0,D.useClearResetErrorBoundary)(f);let[h]=c.useState(()=>new z(d,g,b)),[i,j,k]=h.getOptimisticResult(g,b.combine),l=!e&&!1!==b.subscribed;c.useSyncExternalStore(c.useCallback(a=>l?h.subscribe(u.notifyManager.batchCalls(a)):x.noop,[h,l]),()=>h.getCurrentResult(),()=>h.getCurrentResult()),c.useEffect(()=>{h.setQueries(g,b)},[g,b,h]);let m=i.some((a,b)=>(0,E.shouldSuspend)(g[b],a))?i.flatMap((a,b)=>{let c=g[b];if(c&&(0,E.shouldSuspend)(c,a)){let a=new v.QueryObserver(d,c);return(0,E.fetchOptimistic)(c,a,f)}return[]}):[];if(m.length>0)throw Promise.all(m);let n=i.find((a,b)=>{let c=g[b];return c&&(0,D.getHasError)({result:a,errorResetBoundary:f,throwOnError:c.throwOnError,query:d.getQueryCache().get(c.queryHash),suspense:c.suspense})});if(n?.error)throw n.error;return j(k())}({queries:j.map(b=>({queryKey:m.queryKeys.memoryUnit(g.dataScopeKey,a,b,i),queryFn:()=>(0,l.getMemoryUnit)({memoryStoreName:a,memoryId:b,scope:i}),enabled:o&&!!b&&"-"!==b,staleTime:3e4}))}),q=j.length>0&&p.some(a=>a.isLoading),{refIds:r,minTs:s,maxTs:t}=function(a){let b=new Set,c=1/0,d=-1/0;for(let e of a)if(e)for(let a of e.source_turn_refs??[]){a?.messageId&&b.add(a.messageId);let e=a?.timestampMs;"number"==typeof e&&Number.isFinite(e)&&(e<c&&(c=e),e>d&&(d=e))}return{refIds:b,minTs:c,maxTs:d}}(p.map(a=>a.data?.memory)),w=Number.isFinite(s)&&Number.isFinite(t),y=F(b?.createdAt),G=F(b?.finishedAt)??F(b?.updatedAt)??y,H=w?s-2e3:void 0!==y?y-6e4:void 0,I=w?t+2e3:void 0!==G?G+6e4:void 0,J=void 0!==H?new Date(H).toISOString():void 0,K=void 0!==I?new Date(I).toISOString():void 0,L=(0,k.useQuery)({queryKey:m.queryKeys.memoryMessages(g.dataScopeKey,a,i,void 0,100,{minTimestamp:J,maxTimestamp:K}),queryFn:()=>(0,l.listMemoryMessages)(a,i,{limit:100,minTimestamp:J,maxTimestamp:K}),enabled:o&&!q&&(void 0!==J||void 0!==K),staleTime:3e4}),{messages:M,precise:N}=(d=L.data?.items??[],(f=(e=r.size>0)?d.filter(a=>a.messageId&&r.has(a.messageId)):[...d]).sort((a,b)=>(F(a.timestamp)??0)-(F(b.timestamp)??0)),{messages:f,precise:e});return{messages:M,isLoading:q||L.isLoading,precise:N}}(d,a),i=e.filter(a=>"string"==typeof a.content&&a.content.length>0);return(0,b.jsxs)("section",{className:"rounded border border-[hsl(var(--border-light))] p-3",children:[(0,b.jsxs)("header",{className:"mb-2 flex items-center justify-between",children:[(0,b.jsx)("h4",{className:"text-sm font-semibold",children:"原始会话"}),(0,b.jsx)("span",{className:"text-[10px] text-muted-foreground",children:h?"该任务提取记忆所依据的消息":"任务时间窗口内的消息"})]}),f?(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(g.Skeleton,{className:"h-12 w-full"}),(0,b.jsx)(g.Skeleton,{className:"h-12 w-full"})]}):0===i.length?(0,b.jsx)("p",{className:"rounded border border-dashed border-[hsl(var(--border))] py-4 text-center text-xs italic text-muted-foreground",children:h?"未找到该任务对应的原始消息(可能已被清理)":"未在该任务范围内找到原始会话消息"}):(0,b.jsx)("ul",{className:"max-h-[420px] space-y-2 overflow-auto pr-1",children:i.map((a,c)=>(0,b.jsxs)("li",{className:"rounded border border-[hsl(var(--border-light))] bg-[hsl(var(--muted)/0.3)] p-2",children:[(0,b.jsxs)("div",{className:"mb-1 flex items-center gap-2 text-[10px] text-muted-foreground",children:[(0,b.jsx)("span",{className:"rounded bg-[hsl(var(--surface))] px-1.5 py-px font-mono",children:a.role??"-"}),a.speaker&&(0,b.jsx)("span",{className:"font-mono",children:a.speaker}),a.timestamp&&(0,b.jsx)("span",{className:"ml-auto",children:new Date(a.timestamp).toLocaleTimeString("zh-CN")})]}),(0,b.jsx)("p",{className:"whitespace-pre-wrap break-words text-xs text-foreground/90",children:a.content})]},a.messageId??c))})]})}function R({task:a,memoryStoreName:c}){let d=a.derivedUnitIds??[];return(0,b.jsxs)("section",{className:"rounded border border-[hsl(var(--border-light))] p-3",children:[(0,b.jsxs)("header",{className:"mb-2 flex items-center justify-between",children:[(0,b.jsx)("h4",{className:"text-sm font-semibold",children:"提取的记忆"}),(0,b.jsxs)("span",{className:"text-[10px] text-muted-foreground",children:["共 ",d.length," 条"]})]}),0===d.length?(0,b.jsx)("p",{className:"rounded border border-dashed border-[hsl(var(--border))] py-4 text-center text-xs italic text-muted-foreground",children:"completed"===a.status?"本次未提取出新记忆":"任务尚未提取记忆"}):(0,b.jsx)("ul",{className:"max-h-[420px] space-y-2 overflow-auto pr-1",children:d.map(d=>(0,b.jsx)(S,{memoryStoreName:c,memoryId:d,scope:a.scope},d))})]})}function S({memoryStoreName:a,memoryId:c,scope:d}){let e=(0,t.useMemoryUnit)(a,c,d),f=e.data?.memory;return(0,b.jsxs)("li",{className:"rounded border border-[hsl(var(--border-light))] bg-[hsl(var(--muted)/0.3)] p-2",children:[(0,b.jsxs)("div",{className:"mb-1 flex items-center gap-2 text-[10px] text-muted-foreground",children:[(0,b.jsx)("span",{className:"break-all font-mono",children:c}),f?.unit_type&&(0,b.jsx)("span",{className:"ml-auto rounded bg-[hsl(var(--surface))] px-1.5 py-px font-mono",children:f.unit_type})]}),e.isLoading?(0,b.jsx)(g.Skeleton,{className:"h-8 w-full"}):f?.text?(0,b.jsx)("p",{className:"whitespace-pre-wrap break-words text-xs text-foreground/90",children:f.text}):(0,b.jsx)("p",{className:"text-xs italic text-muted-foreground",children:"记忆已不可读(可能已被删除或合并)"})]})}function T({label:a,value:c,mono:d,children:e}){return(0,b.jsxs)("div",{className:"space-y-1",children:[(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:a}),e?(0,b.jsx)("div",{className:"text-sm font-medium",children:e}):(0,b.jsx)("p",{className:(0,G.cn)("break-all text-sm font-medium",d&&"font-mono"),children:c??"-"})]})}let U=[{value:"all",label:"全部状态"},{value:"queued",label:"排队中"},{value:"running",label:"处理中"},{value:"completed",label:"已完成"},{value:"failed",label:"失败"},{value:"needs_reconcile",label:"待修复"}];a.s(["default",0,function(){let a=decodeURIComponent((0,d.useParams)().store),p=(0,d.useSearchParams)().toString(),q=(0,c.useMemo)(()=>(0,o.buildMemoryScope)(new URLSearchParams(p)),[p]),[r,s]=(0,c.useState)("all"),[t,u]=(0,c.useState)(void 0),v=function(a,b,c){let{context:d,ready:e}=(0,n.useRuntimeContext)();return(0,k.useQuery)({queryKey:m.queryKeys.memoryTasks(d.dataScopeKey,a,b,c?.nextToken,c?.limit,{status:c?.status,minTimestamp:c?.minTimestamp,maxTimestamp:c?.maxTimestamp}),queryFn:()=>(0,l.listMemoryTasks)(a,b,c),enabled:e&&!!a&&!!b?.appId})}(a,q,{limit:50,nextToken:t,status:"all"===r?void 0:r}),w=v.data?.items??[];return(0,b.jsxs)("div",{className:"space-y-4",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between gap-3",children:[(0,b.jsxs)("div",{children:[(0,b.jsx)("h2",{className:"text-lg font-semibold",children:"记忆抽取任务"}),(0,b.jsx)("p",{className:"text-xs text-muted-foreground",children:"每条 AddMemories 调用对应一个任务记录,展示从消息到记忆条目的处理状态"})]}),(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[(0,b.jsxs)(h.Select,{value:r,onValueChange:s,children:[(0,b.jsx)(h.SelectTrigger,{className:"h-8 w-32 text-sm",children:(0,b.jsx)(h.SelectValue,{})}),(0,b.jsx)(h.SelectContent,{children:U.map(a=>(0,b.jsx)(h.SelectItem,{value:a.value,children:a.label},a.value))})]}),(0,b.jsx)(i.RefreshButton,{onClick:()=>v.refetch(),loading:v.isRefetching})]})]}),v.isLoading?(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(g.Skeleton,{className:"h-10 w-full"}),(0,b.jsx)(g.Skeleton,{className:"h-10 w-full"}),(0,b.jsx)(g.Skeleton,{className:"h-10 w-full"})]}):0===w.length?(0,b.jsx)(j.EmptyState,{icon:e.ListChecks,title:"暂无任务",description:"all"===r?"该 scope 下还没有 AddMemories 调用产生的入库任务。可以在长期记忆 / 检索 Tab 触发记忆写入,或调用 CLI memory add 后回到这里查看进度。":`当前过滤为「${U.find(a=>a.value===r)?.label??r}」状态,可以切到「全部状态」看是否被过滤掉了`}):(0,b.jsx)(N,{tasks:w,memoryStoreName:a}),v.data?.nextToken&&(0,b.jsx)("div",{className:"flex justify-end",children:(0,b.jsx)(f.Button,{variant:"outline",size:"sm",onClick:()=>u(v.data?.nextToken),children:"加载下一页"})})]})}],470260)}];
2
2
 
3
3
  //# sourceMappingURL=dashboard_src_app_%28dashboard%29_memory_%5Bstore%5D_tasks_page_tsx_0a_bgx4._.js.map
@@ -1,3 +1,3 @@
1
- module.exports=[325909,a=>{"use strict";var b=a.i(634020),c=a.i(971938),d=a.i(880470),e=a.i(465173),f=a.i(907704),g=a.i(25825),h=a.i(160318),i=a.i(263265),j=a.i(776192),k=a.i(172518),l=a.i(502482),m=a.i(324567),n=a.i(887617),o=a.i(604395),p=a.i(434841),q=a.i(983366),r=a.i(421347),s=a.i(225377),t=a.i(739096),u=a.i(933596),v=a.i(895487),w=a.i(908264),x=a.i(843836),y=a.i(962491),z=a.i(470535);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(112537),D=a.i(655295),E=a.i(223301);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)]})})}var K=a.i(726436);function L({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 M({memoryStoreName:a,scope:c,unit:d,open:e,onOpenChange:f}){let g=d?G(d):void 0,h=(0,K.useMemoryUnit)(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)(L,{label:"ID",children:(0,b.jsx)("span",{className:"break-all font-mono text-xs",children:i.id??i.memoryId??"-"})}),(0,b.jsx)(L,{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)(L,{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)(L,{label:"范围",children:(0,w.formatScope)(i.scope)}),(0,b.jsx)(L,{label:"类型",children:i.unit_type??"-"}),(0,b.jsx)(L,{label:"重要度",children:i.salience??"-"}),(0,b.jsx)(L,{label:"版本",children:i.version??"-"}),i.metadata&&(0,b.jsx)(L,{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 N=a.i(353141);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),[L,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(!L.trim())return void i.toast.error("请输入记忆 ID");if(!C.appId)return void i.toast.error("请先设置精确的范围");S(!0);try{let a=await (0,N.apiGet)(`/api/v1/memory/stores/${encodeURIComponent(z)}/units/${encodeURIComponent(L.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:L,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)(M,{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})]})}],325909)}];
1
+ module.exports=[325909,a=>{"use strict";var b=a.i(634020),c=a.i(971938),d=a.i(880470),e=a.i(465173),f=a.i(907704),g=a.i(25825),h=a.i(160318),i=a.i(263265),j=a.i(776192),k=a.i(172518),l=a.i(502482),m=a.i(324567),n=a.i(887617),o=a.i(604395),p=a.i(434841),q=a.i(983366),r=a.i(421347),s=a.i(225377),t=a.i(739096),u=a.i(933596),v=a.i(895487),w=a.i(908264),x=a.i(843836),y=a.i(962491),z=a.i(470535);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(112537),D=a.i(655295),E=a.i(223301);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)]})})}var K=a.i(726436);function L({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 M({memoryStoreName:a,scope:c,unit:d,open:e,onOpenChange:f}){let g=d?G(d):void 0,h=(0,K.useMemoryUnit)(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)(L,{label:"ID",children:(0,b.jsx)("span",{className:"break-all font-mono text-xs",children:i.id??i.memoryId??"-"})}),(0,b.jsx)(L,{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)(L,{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)(L,{label:"范围",children:(0,w.formatScope)(i.scope)}),(0,b.jsx)(L,{label:"类型",children:i.unit_type??"-"}),(0,b.jsx)(L,{label:"重要度",children:i.salience??"-"}),(0,b.jsx)(L,{label:"版本",children:i.version??"-"}),i.metadata&&(0,b.jsx)(L,{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 N=a.i(353141);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),[L,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(!L.trim())return void i.toast.error("请输入记忆 ID");if(!C.appId)return void i.toast.error("请先设置精确的范围");S(!0);try{let a=await (0,N.apiGet)(`/api/v1/memory/stores/${encodeURIComponent(z)}/units/${encodeURIComponent(L.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;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:"长期记忆",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:L,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)(M,{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})]})}],325909)}];
2
2
 
3
3
  //# sourceMappingURL=dashboard_src_app_%28dashboard%29_memory_%5Bstore%5D_units_page_tsx_0.6xnei._.js.map