@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
@@ -26,7 +26,7 @@ import { EmptyState } from "@/components/shared/empty-state";
26
26
  import { RelativeTime } from "@/components/shared/relative-time";
27
27
  import { useDreamTasks } from "@/hooks/use-dream-tasks";
28
28
  import { buildMemoryScope } from "@/lib/memory";
29
- import type { DreamTask, DreamTaskStatus, MemoryScope } from "@/types/memory";
29
+ import type { DreamTask, DreamTaskStatus, DreamTaskType, MemoryScope } from "@/types/memory";
30
30
  import { MemoryDreamDisabled } from "@/components/memory/memory-dream-disabled";
31
31
  import { MemoryDreamCreateDialog } from "@/components/memory/memory-dream-create-dialog";
32
32
  import { cn } from "@/lib/utils";
@@ -65,6 +65,18 @@ const STATUS_LABEL: Record<DreamTaskStatus, string> = {
65
65
  cancelled: "已取消",
66
66
  };
67
67
 
68
+ const TASK_TYPE_LABEL: Record<DreamTaskType, string> = {
69
+ memory: "记忆整理",
70
+ skill: "技能抽取",
71
+ profile: "用户画像",
72
+ };
73
+
74
+ const TASK_TYPE_CLASS: Record<DreamTaskType, string> = {
75
+ memory: "bg-info-soft text-info",
76
+ skill: "bg-success-soft text-success",
77
+ profile: "bg-[hsl(var(--primary-soft,_220_90%_96%))] text-[hsl(var(--primary))]",
78
+ };
79
+
68
80
  const TERMINAL_STATUSES: ReadonlySet<DreamTaskStatus> = new Set([
69
81
  "completed",
70
82
  "completed_with_failures",
@@ -136,9 +148,9 @@ export default function DreamTasksPage() {
136
148
  <div className="space-y-4">
137
149
  <div className="flex items-center justify-between gap-3">
138
150
  <div>
139
- <h2 className="text-lg font-semibold">记忆整理</h2>
151
+ <h2 className="text-lg font-semibold">Dream 任务管理</h2>
140
152
  <p className="text-xs text-muted-foreground">
141
- 跨会话的记忆整理任务,识别模式后产出动作建议或自动应用
153
+ 管理记忆整理、技能抽取、用户画像等离线任务
142
154
  </p>
143
155
  </div>
144
156
  <div className="flex items-center gap-2">
@@ -174,10 +186,10 @@ export default function DreamTasksPage() {
174
186
  ) : tasks.length === 0 ? (
175
187
  <EmptyState
176
188
  icon={Sparkles}
177
- title="暂无记忆整理任务"
189
+ title="暂无 Dream 任务"
178
190
  description={
179
191
  status === "all"
180
- ? "记忆整理任务跨多个会话整合记忆。第一次使用时,先确保该 scope 下已经写入过几轮对话,再点右上角创建任务。"
192
+ ? "Dream 任务支持记忆整理、技能抽取、用户画像等功能。第一次使用时,先确保该 scope 下已经写入过几轮对话,再点右上角创建任务。"
181
193
  : `当前过滤为「${STATUS_OPTIONS.find((o) => o.value === status)?.label ?? status}」状态,可切到「全部状态」看看`
182
194
  }
183
195
  action={
@@ -193,9 +205,10 @@ export default function DreamTasksPage() {
193
205
  <TableHeader>
194
206
  <TableRow>
195
207
  <TableHead>Dream ID</TableHead>
208
+ <TableHead>类型</TableHead>
196
209
  <TableHead>状态</TableHead>
197
210
  <TableHead>应用模式</TableHead>
198
- <TableHead className="text-right">动作</TableHead>
211
+ <TableHead className="text-right">产出</TableHead>
199
212
  <TableHead>创建时间</TableHead>
200
213
  </TableRow>
201
214
  </TableHeader>
@@ -215,24 +228,54 @@ export default function DreamTasksPage() {
215
228
  <TableCell className="max-w-[220px] truncate font-mono text-xs">
216
229
  {task.dreamId}
217
230
  </TableCell>
231
+ <TableCell>
232
+ {(() => {
233
+ const tt = (task.taskType || "memory") as DreamTaskType;
234
+ return (
235
+ <span
236
+ className={cn(
237
+ "inline-flex rounded-full px-2 py-0.5 text-xs font-medium whitespace-nowrap",
238
+ TASK_TYPE_CLASS[tt] ?? "bg-muted text-muted-foreground",
239
+ )}
240
+ >
241
+ {TASK_TYPE_LABEL[tt] ?? tt}
242
+ </span>
243
+ );
244
+ })()}
245
+ </TableCell>
218
246
  <TableCell>
219
247
  <StatusPill status={task.status} />
220
248
  </TableCell>
221
249
  <TableCell className="text-xs">
222
- {task.applyMode === "safe_auto" ? "自动" : "建议"}
223
- {task.scopeOutputMode === "promote_scope" && (
224
- <span className="ml-1 text-muted-foreground">· 提升</span>
250
+ {(task.taskType && task.taskType !== "memory") ? (
251
+ <span className="text-muted-foreground">—</span>
252
+ ) : (
253
+ <>
254
+ {task.applyMode === "safe_auto" ? "自动" : "建议"}
255
+ {task.scopeOutputMode === "promote_scope" && (
256
+ <span className="ml-1 text-muted-foreground">· 提升</span>
257
+ )}
258
+ </>
225
259
  )}
226
260
  </TableCell>
227
261
  <TableCell className="text-right text-xs text-muted-foreground">
228
262
  <span className="font-medium text-foreground">
229
263
  {task.actionCount ?? 0}
230
264
  </span>
231
- <span className="ml-1">
232
- ({task.proposedCount ?? 0} 待 / {task.appliedCount ?? 0} 应用 /
233
- {" "}
234
- {task.skippedCount ?? 0} / {task.failedCount ?? 0} 败)
235
- </span>
265
+ {(task.taskType && task.taskType !== "memory") ? (
266
+ <span className="ml-1">
267
+ 条产出
268
+ {(task.failedCount ?? 0) > 0 && (
269
+ <span className="text-danger"> / {task.failedCount} 败</span>
270
+ )}
271
+ </span>
272
+ ) : (
273
+ <span className="ml-1">
274
+ ({task.proposedCount ?? 0} 待 / {task.appliedCount ?? 0} 应用 /
275
+ {" "}
276
+ {task.skippedCount ?? 0} 跳 / {task.failedCount ?? 0} 败)
277
+ </span>
278
+ )}
236
279
  </TableCell>
237
280
  <TableCell className="text-xs text-muted-foreground">
238
281
  {Number.isFinite(createdMs) ? (
@@ -52,7 +52,7 @@ const TABS = [
52
52
  icon: <FileClock className="h-4 w-4" />,
53
53
  },
54
54
  {
55
- label: "记忆整理",
55
+ label: "Dream 任务",
56
56
  segment: "dream",
57
57
  icon: <Sparkles className="h-4 w-4" />,
58
58
  },
@@ -32,6 +32,10 @@ export default function MemorySearchPage() {
32
32
  scope: values.scope,
33
33
  topK: values.topK,
34
34
  enableRerank: values.enableRerank,
35
+ // Only forward the threshold when the user opts in (> 0); the server
36
+ // treats 0 as "no filter", and omitting it keeps the request
37
+ // byte-compatible with servers that predate the minSimilarity field.
38
+ ...(values.minSimilarity > 0 ? { minSimilarity: values.minSimilarity } : {}),
35
39
  metadata: values.metadata,
36
40
  });
37
41
  setResults(response.results ?? []);
@@ -140,7 +140,6 @@ export default function MemoryUnitsPage() {
140
140
 
141
141
  // Display data: searched unit or paginated list
142
142
  const displayUnits = searchedUnit ? [searchedUnit] : units;
143
- const displayTotal = searchedUnit ? 1 : (unitsQuery.data?.totalCount ?? 0);
144
143
 
145
144
  if (unitsQuery.isLoading && !searchedUnit) {
146
145
  return (
@@ -154,7 +153,7 @@ export default function MemoryUnitsPage() {
154
153
 
155
154
  return (
156
155
  <div className="space-y-4">
157
- <PageHeader title={`长期记忆 (${displayTotal})`}>
156
+ <PageHeader title="长期记忆">
158
157
  <div className="flex items-center gap-2">
159
158
  <RefreshButton
160
159
  loading={unitsQuery.isRefetching}
@@ -28,6 +28,11 @@ const createMemoryStoreSchema = z.object({
28
28
  .max(32, "名称不能超过 32 个字符")
29
29
  .regex(/^[a-zA-Z0-9_]+$/, "只能包含字母、数字和下划线"),
30
30
  description: z.string().trim().max(256, "描述不超过 256 字").optional(),
31
+ extractInstructions: z
32
+ .string()
33
+ .trim()
34
+ .max(4096, "抽取指令不超过 4096 字")
35
+ .optional(),
31
36
  });
32
37
 
33
38
  type CreateMemoryStoreInput = z.infer<typeof createMemoryStoreSchema>;
@@ -38,7 +43,7 @@ export function MemoryCreateForm() {
38
43
 
39
44
  const form = useForm<CreateMemoryStoreInput>({
40
45
  resolver: zodResolver(createMemoryStoreSchema),
41
- defaultValues: { memoryStoreName: "", description: "" },
46
+ defaultValues: { memoryStoreName: "", description: "", extractInstructions: "" },
42
47
  });
43
48
 
44
49
  async function onSubmit(values: CreateMemoryStoreInput) {
@@ -46,6 +51,9 @@ export function MemoryCreateForm() {
46
51
  await createStore.mutateAsync({
47
52
  memoryStoreName: values.memoryStoreName,
48
53
  description: values.description?.length ? values.description : undefined,
54
+ extractInstructions: values.extractInstructions?.length
55
+ ? values.extractInstructions
56
+ : undefined,
49
57
  });
50
58
  toast.success("记忆库创建成功");
51
59
  router.push("/memory");
@@ -108,6 +116,32 @@ export function MemoryCreateForm() {
108
116
  </div>
109
117
  </section>
110
118
 
119
+ <section className="rounded-lg border border-[hsl(var(--border))] bg-[hsl(var(--card))] p-5 shadow-sm">
120
+ <FormSectionHeader
121
+ title="记忆抽取指令"
122
+ description="可选。这里填写的指令会注入到后台记忆抽取的提示词中,用于引导从对话里提炼哪些信息、忽略哪些信息。留空则使用默认抽取策略。"
123
+ />
124
+ <FormField
125
+ control={form.control}
126
+ name="extractInstructions"
127
+ render={({ field }) => (
128
+ <FormItem>
129
+ <FormLabel>抽取指令</FormLabel>
130
+ <FormControl>
131
+ <Textarea
132
+ placeholder="例如:重点关注用户的医疗术语与用药偏好;忽略寒暄与客套内容。"
133
+ className="resize-none"
134
+ rows={5}
135
+ {...field}
136
+ />
137
+ </FormControl>
138
+ <FormDescription>最多 4096 个字符。创建后可在记忆库设置中修改。</FormDescription>
139
+ <FormMessage />
140
+ </FormItem>
141
+ )}
142
+ />
143
+ </section>
144
+
111
145
  <div className="flex justify-end gap-3 border-t border-[hsl(var(--border-light))] pt-4">
112
146
  <Button
113
147
  type="button"
@@ -53,6 +53,7 @@ import { MemoryDreamApplyConfirmDialog } from "./memory-dream-apply-confirm-dial
53
53
  interface DreamActionsTableProps {
54
54
  memoryStoreName: string;
55
55
  dreamId: string;
56
+ taskType?: string;
56
57
  }
57
58
 
58
59
  const STATUS_OPTIONS: Array<{ value: DreamActionStatus | "all"; label: string }> = [
@@ -70,6 +71,8 @@ const ACTION_OPTIONS: Array<{ value: DreamActionType | "all"; label: string }> =
70
71
  { value: "DELETE", label: "DELETE" },
71
72
  { value: "MERGE", label: "MERGE" },
72
73
  { value: "NOOP", label: "NOOP" },
74
+ { value: "EMIT_SKILL", label: "EMIT_SKILL" },
75
+ { value: "EMIT_PROFILE", label: "EMIT_PROFILE" },
73
76
  ];
74
77
 
75
78
  const ORDER_OPTIONS: Array<{ value: DreamActionListOrderBy; label: string }> = [
@@ -98,6 +101,8 @@ const ACTION_CLASS: Record<DreamActionType, string> = {
98
101
  DELETE: "bg-danger-soft text-danger",
99
102
  MERGE: "bg-[hsl(var(--primary-soft))] text-[hsl(var(--primary))]",
100
103
  NOOP: "bg-muted text-muted-foreground",
104
+ EMIT_SKILL: "bg-success-soft text-success",
105
+ EMIT_PROFILE: "bg-[hsl(var(--primary-soft))] text-[hsl(var(--primary))]",
101
106
  };
102
107
 
103
108
  function ActionBadge({ action }: { action: DreamActionType }) {
@@ -137,7 +142,29 @@ function ActionRowPreview({
137
142
  action: DreamActionRecord;
138
143
  memoryStoreName: string;
139
144
  }) {
140
- const { action: type, newMemory, targetMemoryId, targetScope, reason } = action;
145
+ const { action: type, newMemory, newExtract, targetMemoryId, targetScope, reason } = action;
146
+
147
+ if (type === "EMIT_SKILL" || type === "EMIT_PROFILE") {
148
+ if (!newExtract) return <span className="text-muted-foreground">—</span>;
149
+ return (
150
+ <span className="line-clamp-2 text-xs">
151
+ <span
152
+ className={cn(
153
+ "mr-1 rounded px-1 py-px text-[10px] font-medium",
154
+ type === "EMIT_SKILL"
155
+ ? "bg-success-soft text-success"
156
+ : "bg-[hsl(var(--primary-soft))] text-[hsl(var(--primary))]",
157
+ )}
158
+ >
159
+ {type === "EMIT_SKILL" ? "技能" : "画像"}
160
+ </span>
161
+ {newExtract.name}
162
+ {newExtract.description && (
163
+ <span className="text-muted-foreground"> — {newExtract.description}</span>
164
+ )}
165
+ </span>
166
+ );
167
+ }
141
168
 
142
169
  if (type === "ADD" || type === "UPDATE") {
143
170
  const text = newMemory?.text;
@@ -240,7 +267,9 @@ function scopeLabel(scope?: MemoryScope): string {
240
267
  export function MemoryDreamActionsTable({
241
268
  memoryStoreName,
242
269
  dreamId,
270
+ taskType,
243
271
  }: DreamActionsTableProps) {
272
+ const isExtractTask = taskType === "skill" || taskType === "profile";
244
273
  const [statusFilter, setStatusFilter] = useState<string>("all");
245
274
  const [actionFilter, setActionFilter] = useState<string>("all");
246
275
  const [orderBy, setOrderBy] = useState<DreamActionListOrderBy>("created_at_asc");
@@ -263,12 +292,17 @@ export function MemoryDreamActionsTable({
263
292
 
264
293
  const applyMutation = useApplyDreamActions(memoryStoreName, dreamId);
265
294
 
266
- const proposedCount = actions.filter((a) => a.status === "proposed").length;
295
+ const isApplyable = (a: DreamActionRecord) =>
296
+ a.status === "proposed" &&
297
+ a.action !== "EMIT_SKILL" &&
298
+ a.action !== "EMIT_PROFILE";
299
+
300
+ const proposedCount = actions.filter(isApplyable).length;
267
301
 
268
302
  const allSelectedProposedSelected =
269
303
  proposedCount > 0 &&
270
304
  actions.every(
271
- (a) => a.status !== "proposed" || selected.has(a.actionId),
305
+ (a) => !isApplyable(a) || selected.has(a.actionId),
272
306
  );
273
307
 
274
308
  const toggleAll = () => {
@@ -276,7 +310,7 @@ export function MemoryDreamActionsTable({
276
310
  setSelected(new Set());
277
311
  } else {
278
312
  setSelected(
279
- new Set(actions.filter((a) => a.status === "proposed").map((a) => a.actionId)),
313
+ new Set(actions.filter(isApplyable).map((a) => a.actionId)),
280
314
  );
281
315
  }
282
316
  };
@@ -322,18 +356,20 @@ export function MemoryDreamActionsTable({
322
356
  ))}
323
357
  </SelectContent>
324
358
  </Select>
325
- <Select value={actionFilter} onValueChange={setActionFilter}>
326
- <SelectTrigger className="h-8 w-32 text-sm">
327
- <SelectValue />
328
- </SelectTrigger>
329
- <SelectContent>
330
- {ACTION_OPTIONS.map((opt) => (
331
- <SelectItem key={opt.value} value={opt.value}>
332
- {opt.label}
333
- </SelectItem>
334
- ))}
335
- </SelectContent>
336
- </Select>
359
+ {!isExtractTask && (
360
+ <Select value={actionFilter} onValueChange={setActionFilter}>
361
+ <SelectTrigger className="h-8 w-32 text-sm">
362
+ <SelectValue />
363
+ </SelectTrigger>
364
+ <SelectContent>
365
+ {ACTION_OPTIONS.map((opt) => (
366
+ <SelectItem key={opt.value} value={opt.value}>
367
+ {opt.label}
368
+ </SelectItem>
369
+ ))}
370
+ </SelectContent>
371
+ </Select>
372
+ )}
337
373
  <Select
338
374
  value={orderBy}
339
375
  onValueChange={(v) => setOrderBy(v as DreamActionListOrderBy)}
@@ -349,31 +385,35 @@ export function MemoryDreamActionsTable({
349
385
  ))}
350
386
  </SelectContent>
351
387
  </Select>
352
- <div className="flex items-center gap-2">
353
- <span className="text-xs text-muted-foreground">最小置信度</span>
354
- <Slider
355
- value={[minConfidence]}
356
- max={1}
357
- step={0.05}
358
- onValueChange={(v) => setMinConfidence(v[0] ?? 0)}
359
- className="w-32"
360
- />
361
- <span className="font-mono text-xs">
362
- {minConfidence.toFixed(2)}
363
- </span>
364
- </div>
365
- <div className="ml-auto flex items-center gap-2">
366
- <span className="text-xs text-muted-foreground">
367
- 已选 {selected.size}
368
- </span>
369
- <Button
370
- size="sm"
371
- disabled={selected.size === 0 || applyMutation.isPending}
372
- onClick={() => setConfirmOpen(true)}
373
- >
374
- {applyMutation.isPending ? "应用中…" : `Apply selected (${selected.size})`}
375
- </Button>
376
- </div>
388
+ {!isExtractTask && (
389
+ <>
390
+ <div className="flex items-center gap-2">
391
+ <span className="text-xs text-muted-foreground">最小置信度</span>
392
+ <Slider
393
+ value={[minConfidence]}
394
+ max={1}
395
+ step={0.05}
396
+ onValueChange={(v) => setMinConfidence(v[0] ?? 0)}
397
+ className="w-32"
398
+ />
399
+ <span className="font-mono text-xs">
400
+ {minConfidence.toFixed(2)}
401
+ </span>
402
+ </div>
403
+ <div className="ml-auto flex items-center gap-2">
404
+ <span className="text-xs text-muted-foreground">
405
+ 已选 {selected.size}
406
+ </span>
407
+ <Button
408
+ size="sm"
409
+ disabled={selected.size === 0 || applyMutation.isPending}
410
+ onClick={() => setConfirmOpen(true)}
411
+ >
412
+ {applyMutation.isPending ? "应用中…" : `Apply selected (${selected.size})`}
413
+ </Button>
414
+ </div>
415
+ </>
416
+ )}
377
417
  </div>
378
418
 
379
419
  {query.isLoading ? (
@@ -384,57 +424,65 @@ export function MemoryDreamActionsTable({
384
424
  ) : actions.length === 0 ? (
385
425
  <div className="rounded-lg border border-dashed border-[hsl(var(--border))] py-10 text-center text-sm text-muted-foreground">
386
426
  <Sparkles className="mx-auto mb-2 h-6 w-6 text-muted-foreground/60" />
387
- 当前过滤条件下暂无动作
427
+ {isExtractTask
428
+ ? "暂无产出结果。请确认输入 scope 下有足够的对话消息。"
429
+ : "当前过滤条件下暂无动作"}
388
430
  </div>
389
431
  ) : (
390
432
  <div className="rounded-lg border border-[hsl(var(--border))]">
391
433
  <Table>
392
434
  <TableHeader>
393
435
  <TableRow>
394
- <TableHead className="w-8">
395
- <Checkbox
396
- checked={allSelectedProposedSelected}
397
- onCheckedChange={toggleAll}
398
- disabled={proposedCount === 0}
399
- aria-label="全选可应用动作"
400
- />
401
- </TableHead>
402
- <TableHead>类型</TableHead>
436
+ {!isExtractTask && (
437
+ <TableHead className="w-8">
438
+ <Checkbox
439
+ checked={allSelectedProposedSelected}
440
+ onCheckedChange={toggleAll}
441
+ disabled={proposedCount === 0}
442
+ aria-label="全选可应用动作"
443
+ />
444
+ </TableHead>
445
+ )}
446
+ <TableHead>{isExtractTask ? "产出类型" : "类型"}</TableHead>
403
447
  <TableHead>状态</TableHead>
404
448
  <TableHead>目标 scope</TableHead>
405
- <TableHead>影响</TableHead>
406
- <TableHead className="text-right">置信度</TableHead>
449
+ <TableHead>{isExtractTask ? "内容" : "影响"}</TableHead>
450
+ {!isExtractTask && (
451
+ <TableHead className="text-right">置信度</TableHead>
452
+ )}
407
453
  </TableRow>
408
454
  </TableHeader>
409
455
  <TableBody>
410
456
  {actions.map((action) => {
411
- const isProposed = action.status === "proposed";
457
+ const canApply = isApplyable(action);
412
458
  return (
413
459
  <TableRow
414
460
  key={action.actionId}
415
461
  className="cursor-pointer hover:bg-[hsl(var(--accent))]"
416
462
  onClick={() => setDetail(action)}
417
463
  >
418
- <TableCell onClick={(e) => e.stopPropagation()}>
419
- {isProposed ? (
420
- <Checkbox
421
- checked={selected.has(action.actionId)}
422
- onCheckedChange={() => toggleOne(action.actionId)}
423
- aria-label="选择此动作"
424
- />
425
- ) : (
426
- <Tooltip>
427
- <TooltipTrigger asChild>
428
- <span>
429
- <Checkbox checked={false} disabled aria-label="不可选" />
430
- </span>
431
- </TooltipTrigger>
432
- <TooltipContent>
433
- 仅 proposed 状态的动作可以 apply
434
- </TooltipContent>
435
- </Tooltip>
436
- )}
437
- </TableCell>
464
+ {!isExtractTask && (
465
+ <TableCell onClick={(e) => e.stopPropagation()}>
466
+ {canApply ? (
467
+ <Checkbox
468
+ checked={selected.has(action.actionId)}
469
+ onCheckedChange={() => toggleOne(action.actionId)}
470
+ aria-label="选择此动作"
471
+ />
472
+ ) : (
473
+ <Tooltip>
474
+ <TooltipTrigger asChild>
475
+ <span>
476
+ <Checkbox checked={false} disabled aria-label="不可选" />
477
+ </span>
478
+ </TooltipTrigger>
479
+ <TooltipContent>
480
+ 仅 proposed 状态的动作可以 apply
481
+ </TooltipContent>
482
+ </Tooltip>
483
+ )}
484
+ </TableCell>
485
+ )}
438
486
  <TableCell>
439
487
  <ActionBadge action={action.action} />
440
488
  </TableCell>
@@ -450,11 +498,13 @@ export function MemoryDreamActionsTable({
450
498
  memoryStoreName={memoryStoreName}
451
499
  />
452
500
  </TableCell>
453
- <TableCell className="text-right font-mono text-xs">
454
- {action.confidence !== undefined
455
- ? action.confidence.toFixed(2)
456
- : "-"}
457
- </TableCell>
501
+ {!isExtractTask && (
502
+ <TableCell className="text-right font-mono text-xs">
503
+ {action.confidence !== undefined
504
+ ? action.confidence.toFixed(2)
505
+ : "-"}
506
+ </TableCell>
507
+ )}
458
508
  </TableRow>
459
509
  );
460
510
  })}
@@ -509,10 +559,14 @@ function ActionMemoryPreviewPanel({
509
559
  detail: DreamActionRecord;
510
560
  memoryStoreName: string;
511
561
  }) {
562
+ const isExtract =
563
+ detail.action === "EMIT_SKILL" || detail.action === "EMIT_PROFILE";
564
+
512
565
  const wantsBefore =
513
- detail.action === "UPDATE" ||
514
- detail.action === "DELETE" ||
515
- detail.action === "MERGE";
566
+ !isExtract &&
567
+ (detail.action === "UPDATE" ||
568
+ detail.action === "DELETE" ||
569
+ detail.action === "MERGE");
516
570
 
517
571
  const beforeQuery = useMemoryUnit(
518
572
  memoryStoreName,
@@ -523,6 +577,46 @@ function ActionMemoryPreviewPanel({
523
577
 
524
578
  const newText = detail.newMemory?.text;
525
579
 
580
+ if (isExtract) {
581
+ const extract = detail.newExtract;
582
+ if (!extract) {
583
+ return (
584
+ <div className="rounded border border-dashed border-[hsl(var(--border))] bg-[hsl(var(--muted)/0.2)] p-3 text-xs italic text-muted-foreground">
585
+ 无抽取结果
586
+ </div>
587
+ );
588
+ }
589
+ const isSkill = detail.action === "EMIT_SKILL" || extract.kind === "skill";
590
+ return (
591
+ <div className="space-y-2 rounded border border-[hsl(var(--border-light))] p-3">
592
+ <div className="flex items-center gap-2">
593
+ <span
594
+ className={cn(
595
+ "rounded px-1.5 py-px text-[10px] font-semibold",
596
+ isSkill
597
+ ? "bg-success-soft text-success"
598
+ : "bg-[hsl(var(--primary-soft))] text-[hsl(var(--primary))]",
599
+ )}
600
+ >
601
+ {isSkill ? "技能" : "画像"}
602
+ </span>
603
+ <span className="text-sm font-medium">{extract.name}</span>
604
+ </div>
605
+ {extract.description && (
606
+ <p className="text-xs text-muted-foreground">{extract.description}</p>
607
+ )}
608
+ {extract.instructions && (
609
+ <div className="space-y-1">
610
+ <p className="text-xs text-muted-foreground">指令内容</p>
611
+ <pre className="max-h-48 overflow-auto whitespace-pre-wrap rounded bg-[hsl(var(--muted)/0.4)] p-2 text-xs">
612
+ {extract.instructions}
613
+ </pre>
614
+ </div>
615
+ )}
616
+ </div>
617
+ );
618
+ }
619
+
526
620
  if (detail.action === "NOOP") {
527
621
  return (
528
622
  <div className="rounded border border-dashed border-[hsl(var(--border))] bg-[hsl(var(--muted)/0.2)] p-3 text-xs italic text-muted-foreground">
@@ -29,6 +29,8 @@ const ACTION_CLASS: Record<DreamActionType, string> = {
29
29
  DELETE: "bg-danger-soft text-danger",
30
30
  MERGE: "bg-[hsl(var(--primary-soft))] text-[hsl(var(--primary))]",
31
31
  NOOP: "bg-muted text-muted-foreground",
32
+ EMIT_SKILL: "bg-success-soft text-success",
33
+ EMIT_PROFILE: "bg-[hsl(var(--primary-soft))] text-[hsl(var(--primary))]",
32
34
  };
33
35
 
34
36
  const PREVIEW_LIMIT = 6;