@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.
- package/dist/dashboard-runtime/dashboard/.next/BUILD_ID +1 -1
- package/dist/dashboard-runtime/dashboard/.next/build-manifest.json +3 -3
- package/dist/dashboard-runtime/dashboard/.next/prerender-manifest.json +3 -3
- package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/api-keys/page.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/api-keys/page_client-reference-manifest.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/chat/page.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/chat/page_client-reference-manifest.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/documents/page.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/documents/page_client-reference-manifest.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/page.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/page_client-reference-manifest.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/qa/page.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/qa/page_client-reference-manifest.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/retrieval/page.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/retrieval/page_client-reference-manifest.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/settings/page.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/[name]/settings/page_client-reference-manifest.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/create/page.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/create/page_client-reference-manifest.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/page.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/knowledge-base/page_client-reference-manifest.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/llm-providers/[id]/page.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/llm-providers/[id]/page_client-reference-manifest.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/llm-providers/new/page.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/llm-providers/new/page_client-reference-manifest.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/llm-providers/page.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/llm-providers/page_client-reference-manifest.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/dream/[dreamId]/page.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/dream/[dreamId]/page_client-reference-manifest.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/dream/page.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/dream/page_client-reference-manifest.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/messages/page.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/messages/page_client-reference-manifest.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/page.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/page_client-reference-manifest.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/requests/page.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/requests/page_client-reference-manifest.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/search/page.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/search/page_client-reference-manifest.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/settings/page.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/settings/page_client-reference-manifest.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/tasks/page.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/tasks/page_client-reference-manifest.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/units/page.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/units/page_client-reference-manifest.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/create/page.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/create/page_client-reference-manifest.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/page.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/page_client-reference-manifest.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/projects/page.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/projects/page_client-reference-manifest.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/_global-error.html +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/_global-error.rsc +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/_global-error.segments/__PAGE__.segment.rsc +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/_global-error.segments/_full.segment.rsc +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/_global-error.segments/_head.segment.rsc +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/_global-error.segments/_index.segment.rsc +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/_global-error.segments/_tree.segment.rsc +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/_not-found/page_client-reference-manifest.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/_not-found.html +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/_not-found.rsc +14 -14
- package/dist/dashboard-runtime/dashboard/.next/server/app/_not-found.segments/_full.segment.rsc +14 -14
- package/dist/dashboard-runtime/dashboard/.next/server/app/_not-found.segments/_head.segment.rsc +3 -3
- package/dist/dashboard-runtime/dashboard/.next/server/app/_not-found.segments/_index.segment.rsc +10 -10
- package/dist/dashboard-runtime/dashboard/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +3 -3
- package/dist/dashboard-runtime/dashboard/.next/server/app/_not-found.segments/_not-found.segment.rsc +3 -3
- package/dist/dashboard-runtime/dashboard/.next/server/app/_not-found.segments/_tree.segment.rsc +2 -2
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/api-keys/[id]/custom-policy/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/api-keys/[id]/effective-permissions/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/api-keys/[id]/policies/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/api-keys/[id]/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/api-keys/filter-by-permission/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/api-keys/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/auth/status/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/auth/token/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/instances/[name]/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/instances/[name]/token/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/instances/[name]/use/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/instances/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/knowledge-bases/[name]/chunks/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/knowledge-bases/[name]/documents/[docId]/chunks/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/knowledge-bases/[name]/documents/[docId]/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/knowledge-bases/[name]/documents/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/knowledge-bases/[name]/documents/upload/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/knowledge-bases/[name]/retrieve/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/knowledge-bases/[name]/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/knowledge-bases/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/llm/chat/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/llm/providers/[id]/models/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/llm/providers/[id]/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/llm/providers/[id]/test/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/llm/providers/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/logs/client/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/dream-tasks/[dreamId]/actions/apply/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/dream-tasks/[dreamId]/actions/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/dream-tasks/[dreamId]/cancel/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/dream-tasks/[dreamId]/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/dream-tasks/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/messages/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/requests/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/scopes/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/search/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/tasks/[requestId]/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/tasks/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/units/[memoryId]/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/units/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/oss/list/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/runtime/context/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/index.html +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/index.rsc +14 -14
- package/dist/dashboard-runtime/dashboard/.next/server/app/index.segments/__PAGE__.segment.rsc +2 -2
- package/dist/dashboard-runtime/dashboard/.next/server/app/index.segments/_full.segment.rsc +14 -14
- package/dist/dashboard-runtime/dashboard/.next/server/app/index.segments/_head.segment.rsc +3 -3
- package/dist/dashboard-runtime/dashboard/.next/server/app/index.segments/_index.segment.rsc +10 -10
- package/dist/dashboard-runtime/dashboard/.next/server/app/index.segments/_tree.segment.rsc +2 -2
- package/dist/dashboard-runtime/dashboard/.next/server/app/onboarding/page_client-reference-manifest.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/onboarding.html +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/onboarding.rsc +17 -17
- package/dist/dashboard-runtime/dashboard/.next/server/app/onboarding.segments/_full.segment.rsc +17 -17
- package/dist/dashboard-runtime/dashboard/.next/server/app/onboarding.segments/_head.segment.rsc +3 -3
- package/dist/dashboard-runtime/dashboard/.next/server/app/onboarding.segments/_index.segment.rsc +10 -10
- package/dist/dashboard-runtime/dashboard/.next/server/app/onboarding.segments/_tree.segment.rsc +2 -2
- package/dist/dashboard-runtime/dashboard/.next/server/app/onboarding.segments/onboarding/__PAGE__.segment.rsc +4 -4
- package/dist/dashboard-runtime/dashboard/.next/server/app/onboarding.segments/onboarding.segment.rsc +4 -4
- package/dist/dashboard-runtime/dashboard/.next/server/app/page_client-reference-manifest.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/{_0lf_p5l._.js → _0pe9ntc._.js} +2 -2
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0tej2s.._.js +3 -0
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_00ofp7q._.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_0l1.0wg._.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_app_(dashboard)_memory_[store]_dream_[dreamId]_page_tsx_0wy3tv6._.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_app_(dashboard)_memory_[store]_dream_page_tsx_0uzzpvs._.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_app_(dashboard)_memory_[store]_layout_tsx_0rbi41w._.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_app_(dashboard)_memory_[store]_settings_page_tsx_0y26.xu._.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_app_(dashboard)_memory_[store]_tasks_page_tsx_0a_bgx4._.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_app_(dashboard)_memory_[store]_units_page_tsx_0.6xnei._.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_providers_runtime-context-provider_tsx_0wmj66z._.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/node_modules__pnpm_00arje5._.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/middleware-build-manifest.js +3 -3
- package/dist/dashboard-runtime/dashboard/.next/server/pages/404.html +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/pages/500.html +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/server-reference-manifest.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/server-reference-manifest.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/05d8-45s941bx.js +1 -0
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/{154l918khtf32.js → 076wjt8-f7ws0.js} +1 -1
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0axe89r5c7p_b.js +1 -0
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0czi-68m5cma3.js +1 -0
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0ezfzygzl1hw8.css +1 -0
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0gqhfku~on4t1.js +1 -0
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0i_66eb3teu-..js +1 -0
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0p7-v~ggg-k3s.js +1 -0
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0xnm11dm1-qw2.js +1 -0
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/{0za3q13g~ihb2.js → 0yqx-vizpechs.js} +1 -1
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/11daw7hfc5lbv.js +1 -0
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/{0oh~.z3b9_qzy.js → 17l3ij7h2.vna.js} +1 -1
- package/dist/dashboard-runtime/dashboard/src/app/(dashboard)/memory/[store]/dream/[dreamId]/page.tsx +79 -19
- package/dist/dashboard-runtime/dashboard/src/app/(dashboard)/memory/[store]/dream/page.tsx +57 -14
- package/dist/dashboard-runtime/dashboard/src/app/(dashboard)/memory/[store]/layout.tsx +1 -1
- package/dist/dashboard-runtime/dashboard/src/app/(dashboard)/memory/[store]/search/page.tsx +4 -0
- package/dist/dashboard-runtime/dashboard/src/app/(dashboard)/memory/[store]/units/page.tsx +1 -2
- package/dist/dashboard-runtime/dashboard/src/components/memory/memory-create-form.tsx +35 -1
- package/dist/dashboard-runtime/dashboard/src/components/memory/memory-dream-actions-table.tsx +176 -82
- package/dist/dashboard-runtime/dashboard/src/components/memory/memory-dream-apply-confirm-dialog.tsx +2 -0
- package/dist/dashboard-runtime/dashboard/src/components/memory/memory-dream-create-dialog.tsx +130 -83
- package/dist/dashboard-runtime/dashboard/src/components/memory/memory-search-form.tsx +22 -0
- package/dist/dashboard-runtime/dashboard/src/components/memory/memory-search-results.tsx +4 -1
- package/dist/dashboard-runtime/dashboard/src/components/memory/memory-settings-form.tsx +52 -7
- package/dist/dashboard-runtime/dashboard/src/components/memory/memory-tasks-table.tsx +8 -37
- package/dist/dashboard-runtime/dashboard/src/hooks/use-task-source-messages.ts +179 -0
- package/dist/dashboard-runtime/dashboard/src/types/memory.ts +32 -2
- package/package.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0gep_x_._.js +0 -3
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0.b6bx-29l5e2.js +0 -1
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/05ny4_cp6fkfu.js +0 -1
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/097px3urt-4kr.js +0 -1
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0c08tbxyly68e.js +0 -1
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0frefg2bkdon0.css +0 -1
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0w6-j4p-7fybc.js +0 -1
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/126jyzsu33t60.js +0 -1
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/12~tfkzir29.4.js +0 -1
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/14teeoxc_1i46.js +0 -1
- /package/dist/dashboard-runtime/dashboard/.next/static/{pE-cQCmJ7b5_xgwqBJ7J3 → -pCWSBA7OQIF0pN0Rem9H}/_buildManifest.js +0 -0
- /package/dist/dashboard-runtime/dashboard/.next/static/{pE-cQCmJ7b5_xgwqBJ7J3 → -pCWSBA7OQIF0pN0Rem9H}/_clientMiddlewareManifest.js +0 -0
- /package/dist/dashboard-runtime/dashboard/.next/static/{pE-cQCmJ7b5_xgwqBJ7J3 → -pCWSBA7OQIF0pN0Rem9H}/_ssgManifest.js +0 -0
package/dist/dashboard-runtime/dashboard/src/components/memory/memory-dream-create-dialog.tsx
CHANGED
|
@@ -34,7 +34,7 @@ import {
|
|
|
34
34
|
} from "@/components/ui/collapsible";
|
|
35
35
|
import { Form, FormControl, FormField, FormItem, FormLabel, FormMessage } from "@/components/ui/form";
|
|
36
36
|
import { useCreateDreamTask } from "@/hooks/use-create-dream-task";
|
|
37
|
-
import type { MemoryScope } from "@/types/memory";
|
|
37
|
+
import type { DreamTaskType, MemoryScope } from "@/types/memory";
|
|
38
38
|
|
|
39
39
|
interface DreamCreateDialogProps {
|
|
40
40
|
memoryStoreName: string;
|
|
@@ -56,6 +56,7 @@ const scopeSchema = z
|
|
|
56
56
|
});
|
|
57
57
|
|
|
58
58
|
const formSchema = z.object({
|
|
59
|
+
taskType: z.enum(["memory", "skill", "profile"]),
|
|
59
60
|
scopes: z.array(scopeSchema).min(1, "至少一个 scope"),
|
|
60
61
|
applyMode: z.enum(["proposal", "safe_auto"]),
|
|
61
62
|
scopeOutputMode: z.enum(["preserve_scope", "promote_scope"]).optional(),
|
|
@@ -99,6 +100,7 @@ export function MemoryDreamCreateDialog({
|
|
|
99
100
|
const form = useForm<FormValues>({
|
|
100
101
|
resolver: zodResolver(formSchema),
|
|
101
102
|
defaultValues: {
|
|
103
|
+
taskType: "memory",
|
|
102
104
|
scopes: [
|
|
103
105
|
{
|
|
104
106
|
// Filter out wildcard "*" placeholder values from the URL ScopeBar
|
|
@@ -130,6 +132,9 @@ export function MemoryDreamCreateDialog({
|
|
|
130
132
|
name: "scopes",
|
|
131
133
|
});
|
|
132
134
|
|
|
135
|
+
const taskType = form.watch("taskType");
|
|
136
|
+
const isMemoryType = taskType === "memory";
|
|
137
|
+
|
|
133
138
|
const [advancedOpen, setAdvancedOpen] = useState(false);
|
|
134
139
|
const [thresholdsOpen, setThresholdsOpen] = useState(false);
|
|
135
140
|
|
|
@@ -142,6 +147,8 @@ export function MemoryDreamCreateDialog({
|
|
|
142
147
|
if (tUpdate !== undefined) thresholds.update = tUpdate;
|
|
143
148
|
if (tMerge !== undefined) thresholds.merge = tMerge;
|
|
144
149
|
|
|
150
|
+
const isMemory = values.taskType === "memory";
|
|
151
|
+
|
|
145
152
|
try {
|
|
146
153
|
const result = await createMutation.mutateAsync({
|
|
147
154
|
scopes: values.scopes.map((s) => {
|
|
@@ -151,8 +158,9 @@ export function MemoryDreamCreateDialog({
|
|
|
151
158
|
if (s.runId) out.runId = s.runId;
|
|
152
159
|
return out;
|
|
153
160
|
}),
|
|
154
|
-
|
|
155
|
-
...(
|
|
161
|
+
taskType: values.taskType,
|
|
162
|
+
...(isMemory && { applyMode: values.applyMode }),
|
|
163
|
+
...(isMemory && values.scopeOutputMode && { scopeOutputMode: values.scopeOutputMode }),
|
|
156
164
|
...(values.minTimestamp && { minTimestamp: values.minTimestamp }),
|
|
157
165
|
...(values.maxTimestamp && { maxTimestamp: values.maxTimestamp }),
|
|
158
166
|
...(parseOptionalInt(values.maxSessions) !== undefined && {
|
|
@@ -166,12 +174,17 @@ export function MemoryDreamCreateDialog({
|
|
|
166
174
|
}),
|
|
167
175
|
...(values.instructions && { instructions: values.instructions }),
|
|
168
176
|
...(values.clientToken && { clientToken: values.clientToken }),
|
|
169
|
-
...(Object.keys(thresholds).length > 0 && {
|
|
177
|
+
...(isMemory && Object.keys(thresholds).length > 0 && {
|
|
170
178
|
confidenceThresholds: thresholds,
|
|
171
179
|
}),
|
|
172
180
|
});
|
|
173
181
|
|
|
174
|
-
|
|
182
|
+
const TOAST_MSG: Record<DreamTaskType, string> = {
|
|
183
|
+
memory: "记忆整理任务已创建",
|
|
184
|
+
skill: "技能抽取任务已创建",
|
|
185
|
+
profile: "用户画像任务已创建",
|
|
186
|
+
};
|
|
187
|
+
toast.success(TOAST_MSG[values.taskType]);
|
|
175
188
|
onOpenChange(false);
|
|
176
189
|
form.reset();
|
|
177
190
|
router.push(
|
|
@@ -187,15 +200,38 @@ export function MemoryDreamCreateDialog({
|
|
|
187
200
|
<Dialog open={open} onOpenChange={onOpenChange}>
|
|
188
201
|
<DialogContent className="max-w-2xl">
|
|
189
202
|
<DialogHeader>
|
|
190
|
-
<DialogTitle
|
|
203
|
+
<DialogTitle>新建 Dream 任务</DialogTitle>
|
|
191
204
|
<DialogDescription>
|
|
192
|
-
Dream 会读取所选 scopes 下的消息与已有记忆,让 LLM
|
|
193
|
-
|
|
205
|
+
Dream 会读取所选 scopes 下的消息与已有记忆,让 LLM 进行分析处理。
|
|
206
|
+
记忆整理模式建议先用「建议模式」生成提案、人工审核后再应用。
|
|
194
207
|
</DialogDescription>
|
|
195
208
|
</DialogHeader>
|
|
196
209
|
|
|
197
210
|
<Form {...form}>
|
|
198
211
|
<form onSubmit={form.handleSubmit(onSubmit)} className="space-y-5">
|
|
212
|
+
<FormField
|
|
213
|
+
control={form.control}
|
|
214
|
+
name="taskType"
|
|
215
|
+
render={({ field }) => (
|
|
216
|
+
<FormItem>
|
|
217
|
+
<FormLabel>任务类型</FormLabel>
|
|
218
|
+
<Select onValueChange={field.onChange} defaultValue={field.value}>
|
|
219
|
+
<FormControl>
|
|
220
|
+
<SelectTrigger>
|
|
221
|
+
<SelectValue />
|
|
222
|
+
</SelectTrigger>
|
|
223
|
+
</FormControl>
|
|
224
|
+
<SelectContent>
|
|
225
|
+
<SelectItem value="memory">记忆整理 — 整合跨会话记忆</SelectItem>
|
|
226
|
+
<SelectItem value="skill">技能抽取 — 从对话中提取可复用技能</SelectItem>
|
|
227
|
+
<SelectItem value="profile">用户画像 — 整理用户画像</SelectItem>
|
|
228
|
+
</SelectContent>
|
|
229
|
+
</Select>
|
|
230
|
+
<FormMessage />
|
|
231
|
+
</FormItem>
|
|
232
|
+
)}
|
|
233
|
+
/>
|
|
234
|
+
|
|
199
235
|
<section className="space-y-3">
|
|
200
236
|
<div className="flex items-center justify-between">
|
|
201
237
|
<Label className="text-sm font-medium">Scope 范围</Label>
|
|
@@ -240,87 +276,98 @@ export function MemoryDreamCreateDialog({
|
|
|
240
276
|
</div>
|
|
241
277
|
</section>
|
|
242
278
|
|
|
243
|
-
|
|
244
|
-
<
|
|
245
|
-
|
|
246
|
-
|
|
247
|
-
|
|
248
|
-
|
|
249
|
-
<
|
|
250
|
-
|
|
251
|
-
<
|
|
252
|
-
<
|
|
253
|
-
<
|
|
254
|
-
|
|
255
|
-
|
|
256
|
-
|
|
257
|
-
<
|
|
258
|
-
|
|
259
|
-
|
|
260
|
-
|
|
261
|
-
|
|
262
|
-
|
|
263
|
-
|
|
264
|
-
|
|
265
|
-
|
|
266
|
-
|
|
267
|
-
|
|
268
|
-
|
|
269
|
-
|
|
270
|
-
|
|
271
|
-
|
|
272
|
-
|
|
273
|
-
|
|
274
|
-
<
|
|
275
|
-
|
|
276
|
-
|
|
277
|
-
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
<
|
|
281
|
-
<
|
|
282
|
-
|
|
283
|
-
|
|
284
|
-
|
|
285
|
-
<
|
|
286
|
-
|
|
287
|
-
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
|
|
293
|
-
|
|
279
|
+
{isMemoryType && (
|
|
280
|
+
<section className="grid gap-3 sm:grid-cols-2">
|
|
281
|
+
<FormField
|
|
282
|
+
control={form.control}
|
|
283
|
+
name="applyMode"
|
|
284
|
+
render={({ field }) => (
|
|
285
|
+
<FormItem>
|
|
286
|
+
<FormLabel>应用模式</FormLabel>
|
|
287
|
+
<Select onValueChange={field.onChange} defaultValue={field.value}>
|
|
288
|
+
<FormControl>
|
|
289
|
+
<SelectTrigger>
|
|
290
|
+
<SelectValue />
|
|
291
|
+
</SelectTrigger>
|
|
292
|
+
</FormControl>
|
|
293
|
+
<SelectContent>
|
|
294
|
+
<SelectItem value="proposal">
|
|
295
|
+
建议模式(生成后人工 apply,推荐)
|
|
296
|
+
</SelectItem>
|
|
297
|
+
<SelectItem value="safe_auto">
|
|
298
|
+
安全自动(仅 ADD/UPDATE 自动;DELETE/跨 scope 仍需人工)
|
|
299
|
+
</SelectItem>
|
|
300
|
+
</SelectContent>
|
|
301
|
+
</Select>
|
|
302
|
+
<FormMessage />
|
|
303
|
+
</FormItem>
|
|
304
|
+
)}
|
|
305
|
+
/>
|
|
306
|
+
<FormField
|
|
307
|
+
control={form.control}
|
|
308
|
+
name="scopeOutputMode"
|
|
309
|
+
render={({ field }) => (
|
|
310
|
+
<FormItem>
|
|
311
|
+
<FormLabel>Scope 输出模式</FormLabel>
|
|
312
|
+
<Select
|
|
313
|
+
onValueChange={field.onChange}
|
|
314
|
+
value={field.value ?? ""}
|
|
315
|
+
>
|
|
316
|
+
<FormControl>
|
|
317
|
+
<SelectTrigger>
|
|
318
|
+
<SelectValue placeholder="使用默认(preserve_scope)" />
|
|
319
|
+
</SelectTrigger>
|
|
320
|
+
</FormControl>
|
|
321
|
+
<SelectContent>
|
|
322
|
+
<SelectItem value="preserve_scope">保留原 scope</SelectItem>
|
|
323
|
+
<SelectItem value="promote_scope">提升到父级 scope</SelectItem>
|
|
324
|
+
</SelectContent>
|
|
325
|
+
</Select>
|
|
326
|
+
<FormMessage />
|
|
327
|
+
</FormItem>
|
|
328
|
+
)}
|
|
329
|
+
/>
|
|
330
|
+
</section>
|
|
331
|
+
)}
|
|
294
332
|
|
|
295
333
|
<FormField
|
|
296
334
|
control={form.control}
|
|
297
335
|
name="instructions"
|
|
298
|
-
render={({ field }) =>
|
|
299
|
-
<
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
|
|
309
|
-
|
|
336
|
+
render={({ field }) => {
|
|
337
|
+
const placeholder: Record<DreamTaskType, string> = {
|
|
338
|
+
memory: "给 dream 规划器的额外指引",
|
|
339
|
+
skill: "指导技能抽取的方向,例如重点关注的领域",
|
|
340
|
+
profile: "用户画像整理的额外指引,例如需要关注的维度",
|
|
341
|
+
};
|
|
342
|
+
return (
|
|
343
|
+
<FormItem>
|
|
344
|
+
<FormLabel>指令(可选)</FormLabel>
|
|
345
|
+
<FormControl>
|
|
346
|
+
<Textarea
|
|
347
|
+
rows={2}
|
|
348
|
+
placeholder={placeholder[taskType]}
|
|
349
|
+
{...field}
|
|
350
|
+
/>
|
|
351
|
+
</FormControl>
|
|
352
|
+
</FormItem>
|
|
353
|
+
);
|
|
354
|
+
}}
|
|
310
355
|
/>
|
|
311
356
|
|
|
312
|
-
|
|
313
|
-
<
|
|
314
|
-
<
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
-
<
|
|
320
|
-
|
|
321
|
-
|
|
322
|
-
|
|
323
|
-
|
|
357
|
+
{isMemoryType && (
|
|
358
|
+
<Collapsible open={thresholdsOpen} onOpenChange={setThresholdsOpen}>
|
|
359
|
+
<CollapsibleTrigger asChild>
|
|
360
|
+
<Button type="button" variant="ghost" size="sm" className="px-0">
|
|
361
|
+
{thresholdsOpen ? "▾" : "▸"} 置信度阈值
|
|
362
|
+
</Button>
|
|
363
|
+
</CollapsibleTrigger>
|
|
364
|
+
<CollapsibleContent className="grid gap-3 pt-2 sm:grid-cols-3">
|
|
365
|
+
<NumberField name="thresholdAdd" label="add" form={form} placeholder="0.7" />
|
|
366
|
+
<NumberField name="thresholdUpdate" label="update" form={form} placeholder="0.6" />
|
|
367
|
+
<NumberField name="thresholdMerge" label="merge" form={form} placeholder="0.6" />
|
|
368
|
+
</CollapsibleContent>
|
|
369
|
+
</Collapsible>
|
|
370
|
+
)}
|
|
324
371
|
|
|
325
372
|
<Collapsible open={advancedOpen} onOpenChange={setAdvancedOpen}>
|
|
326
373
|
<CollapsibleTrigger asChild>
|
|
@@ -14,6 +14,7 @@ export interface MemorySearchValues {
|
|
|
14
14
|
scope: MemoryScope;
|
|
15
15
|
topK: number;
|
|
16
16
|
enableRerank: boolean;
|
|
17
|
+
minSimilarity: number;
|
|
17
18
|
metadata?: Record<string, string>;
|
|
18
19
|
}
|
|
19
20
|
|
|
@@ -27,6 +28,7 @@ export function MemorySearchForm({ scope, isLoading, onSubmit }: MemorySearchFor
|
|
|
27
28
|
const [query, setQuery] = useState("");
|
|
28
29
|
const [topK, setTopK] = useState(10);
|
|
29
30
|
const [enableRerank, setEnableRerank] = useState(true);
|
|
31
|
+
const [minSimilarity, setMinSimilarity] = useState(0);
|
|
30
32
|
const [metadataJson, setMetadataJson] = useState("");
|
|
31
33
|
const [error, setError] = useState<string | null>(null);
|
|
32
34
|
|
|
@@ -47,6 +49,10 @@ export function MemorySearchForm({ scope, isLoading, onSubmit }: MemorySearchFor
|
|
|
47
49
|
setError("Top K 必须在 0 到 50 之间");
|
|
48
50
|
return;
|
|
49
51
|
}
|
|
52
|
+
if (minSimilarity < 0 || minSimilarity > 1) {
|
|
53
|
+
setError("相似度阈值必须在 0 到 1 之间");
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
50
56
|
|
|
51
57
|
try {
|
|
52
58
|
await onSubmit({
|
|
@@ -54,6 +60,7 @@ export function MemorySearchForm({ scope, isLoading, onSubmit }: MemorySearchFor
|
|
|
54
60
|
scope,
|
|
55
61
|
topK,
|
|
56
62
|
enableRerank,
|
|
63
|
+
minSimilarity,
|
|
57
64
|
metadata: parseJsonObject(metadataJson),
|
|
58
65
|
});
|
|
59
66
|
} catch (err) {
|
|
@@ -100,6 +107,21 @@ export function MemorySearchForm({ scope, isLoading, onSubmit }: MemorySearchFor
|
|
|
100
107
|
</div>
|
|
101
108
|
</div>
|
|
102
109
|
|
|
110
|
+
<div className="space-y-2">
|
|
111
|
+
<Label>相似度阈值</Label>
|
|
112
|
+
<Input
|
|
113
|
+
type="number"
|
|
114
|
+
min={0}
|
|
115
|
+
max={1}
|
|
116
|
+
step={0.05}
|
|
117
|
+
value={minSimilarity}
|
|
118
|
+
onChange={(event) => setMinSimilarity(Number(event.target.value))}
|
|
119
|
+
/>
|
|
120
|
+
<p className="text-xs text-muted-foreground">
|
|
121
|
+
按归一化余弦相似度(0–1)过滤结果,0 表示不过滤。仅返回相似度不低于该值的命中。
|
|
122
|
+
</p>
|
|
123
|
+
</div>
|
|
124
|
+
|
|
103
125
|
<div className="space-y-2">
|
|
104
126
|
<Label>元数据过滤(JSON)</Label>
|
|
105
127
|
<Textarea
|
|
@@ -64,8 +64,11 @@ export function MemorySearchResults({ results, elapsedMs }: MemorySearchResultsP
|
|
|
64
64
|
<Card key={`${hit.unit.id ?? hit.unit.memoryId ?? index}-${index}`}>
|
|
65
65
|
<CardContent className="space-y-3 p-4">
|
|
66
66
|
<div className="flex flex-wrap items-center gap-2">
|
|
67
|
+
{hit.similarity !== undefined && (
|
|
68
|
+
<Badge variant="secondary">相似度 {hit.similarity.toFixed(4)}</Badge>
|
|
69
|
+
)}
|
|
67
70
|
{hit.score !== undefined && (
|
|
68
|
-
<Badge variant="
|
|
71
|
+
<Badge variant="outline">相关度 {hit.score.toFixed(4)}</Badge>
|
|
69
72
|
)}
|
|
70
73
|
{hit.source && <Badge variant="outline">{hit.source}</Badge>}
|
|
71
74
|
{hit.unit.unit_type && <Badge variant="outline">{hit.unit.unit_type}</Badge>}
|
|
@@ -9,6 +9,7 @@ import { Textarea } from "@/components/ui/textarea";
|
|
|
9
9
|
import {
|
|
10
10
|
Form,
|
|
11
11
|
FormControl,
|
|
12
|
+
FormDescription,
|
|
12
13
|
FormField,
|
|
13
14
|
FormItem,
|
|
14
15
|
FormLabel,
|
|
@@ -19,6 +20,11 @@ import type { MemoryStore } from "@/types/memory";
|
|
|
19
20
|
|
|
20
21
|
const updateMemoryStoreSchema = z.object({
|
|
21
22
|
description: z.string().trim().max(256, "描述不超过 256 字").optional(),
|
|
23
|
+
extractInstructions: z
|
|
24
|
+
.string()
|
|
25
|
+
.trim()
|
|
26
|
+
.max(4096, "抽取指令不超过 4096 字")
|
|
27
|
+
.optional(),
|
|
22
28
|
});
|
|
23
29
|
|
|
24
30
|
type UpdateMemoryStoreInput = z.infer<typeof updateMemoryStoreSchema>;
|
|
@@ -32,14 +38,27 @@ export function MemorySettingsForm({ memoryStore }: MemorySettingsFormProps) {
|
|
|
32
38
|
|
|
33
39
|
const form = useForm<UpdateMemoryStoreInput>({
|
|
34
40
|
resolver: zodResolver(updateMemoryStoreSchema),
|
|
35
|
-
defaultValues: {
|
|
41
|
+
defaultValues: {
|
|
42
|
+
description: memoryStore.description ?? "",
|
|
43
|
+
extractInstructions: memoryStore.extractInstructions ?? "",
|
|
44
|
+
},
|
|
36
45
|
});
|
|
37
46
|
|
|
38
47
|
async function onSubmit(values: UpdateMemoryStoreInput) {
|
|
39
48
|
try {
|
|
49
|
+
// The currently-running server build may predate extractInstructions and
|
|
50
|
+
// rejects unknown JSON fields. Only include it in the PATCH when the user
|
|
51
|
+
// actually changed it, so description-only edits keep working. An empty
|
|
52
|
+
// string is a deliberate "clear" (the field uses pointer/PATCH semantics
|
|
53
|
+
// server-side once a newer build is deployed).
|
|
54
|
+
const initialInstructions = memoryStore.extractInstructions ?? "";
|
|
55
|
+
const nextInstructions = values.extractInstructions ?? "";
|
|
56
|
+
const instructionsChanged = nextInstructions !== initialInstructions;
|
|
57
|
+
|
|
40
58
|
await updateStore.mutateAsync({
|
|
41
59
|
memoryStoreName: memoryStore.memoryStoreName,
|
|
42
60
|
description: values.description?.length ? values.description : undefined,
|
|
61
|
+
...(instructionsChanged ? { extractInstructions: nextInstructions } : {}),
|
|
43
62
|
});
|
|
44
63
|
toast.success("记忆库设置已更新");
|
|
45
64
|
} catch (error) {
|
|
@@ -76,14 +95,40 @@ export function MemorySettingsForm({ memoryStore }: MemorySettingsFormProps) {
|
|
|
76
95
|
</FormItem>
|
|
77
96
|
)}
|
|
78
97
|
/>
|
|
79
|
-
|
|
80
|
-
<div className="flex justify-end border-t border-[hsl(var(--border-light))] pt-4">
|
|
81
|
-
<Button type="submit" disabled={updateStore.isPending}>
|
|
82
|
-
{updateStore.isPending ? "保存中..." : "保存更改"}
|
|
83
|
-
</Button>
|
|
84
|
-
</div>
|
|
85
98
|
</div>
|
|
86
99
|
</section>
|
|
100
|
+
|
|
101
|
+
<section className="rounded-lg border border-[hsl(var(--border))] bg-[hsl(var(--card))] p-5 shadow-sm">
|
|
102
|
+
<SettingsSectionHeader
|
|
103
|
+
title="记忆抽取指令"
|
|
104
|
+
description="可选。这里填写的指令会注入到后台记忆抽取的提示词中,用于引导从对话里提炼哪些信息、忽略哪些信息。留空则使用默认抽取策略。"
|
|
105
|
+
/>
|
|
106
|
+
<FormField
|
|
107
|
+
control={form.control}
|
|
108
|
+
name="extractInstructions"
|
|
109
|
+
render={({ field }) => (
|
|
110
|
+
<FormItem>
|
|
111
|
+
<FormLabel>抽取指令</FormLabel>
|
|
112
|
+
<FormControl>
|
|
113
|
+
<Textarea
|
|
114
|
+
placeholder="例如:重点关注用户的医疗术语与用药偏好;忽略寒暄与客套内容。"
|
|
115
|
+
className="resize-none"
|
|
116
|
+
rows={5}
|
|
117
|
+
{...field}
|
|
118
|
+
/>
|
|
119
|
+
</FormControl>
|
|
120
|
+
<FormDescription>最多 4096 个字符。留空表示恢复默认抽取策略。</FormDescription>
|
|
121
|
+
<FormMessage />
|
|
122
|
+
</FormItem>
|
|
123
|
+
)}
|
|
124
|
+
/>
|
|
125
|
+
</section>
|
|
126
|
+
|
|
127
|
+
<div className="flex justify-end border-t border-[hsl(var(--border-light))] pt-4">
|
|
128
|
+
<Button type="submit" disabled={updateStore.isPending}>
|
|
129
|
+
{updateStore.isPending ? "保存中..." : "保存更改"}
|
|
130
|
+
</Button>
|
|
131
|
+
</div>
|
|
87
132
|
</form>
|
|
88
133
|
</Form>
|
|
89
134
|
);
|
|
@@ -20,7 +20,7 @@ import {
|
|
|
20
20
|
import { Skeleton } from "@/components/ui/skeleton";
|
|
21
21
|
import { RelativeTime } from "@/components/shared/relative-time";
|
|
22
22
|
import { useMemoryUnit } from "@/hooks/use-memory-unit";
|
|
23
|
-
import {
|
|
23
|
+
import { useTaskSourceMessages } from "@/hooks/use-task-source-messages";
|
|
24
24
|
import { cn } from "@/lib/utils";
|
|
25
25
|
import type { MemoryScope, MemoryTask, MemoryTaskStatus } from "@/types/memory";
|
|
26
26
|
|
|
@@ -81,26 +81,6 @@ function formatTime(value: string | undefined): string {
|
|
|
81
81
|
return new Date(ms).toLocaleString("zh-CN");
|
|
82
82
|
}
|
|
83
83
|
|
|
84
|
-
/**
|
|
85
|
-
* Compute a tight time window around the task's lifetime so the original-
|
|
86
|
-
* conversation panel only loads messages that plausibly fed this task.
|
|
87
|
-
*
|
|
88
|
-
* The buffers are wide enough to absorb engine-side timestamp skew while
|
|
89
|
-
* still keeping the panel focused on "the messages that this AddMemories
|
|
90
|
-
* call ingested" rather than the entire session history.
|
|
91
|
-
*/
|
|
92
|
-
function taskMessageWindow(task: MemoryTask): {
|
|
93
|
-
minTimestamp?: string;
|
|
94
|
-
maxTimestamp?: string;
|
|
95
|
-
} {
|
|
96
|
-
const created = toEpochMs(task.createdAt);
|
|
97
|
-
const finished = toEpochMs(task.finishedAt) ?? toEpochMs(task.updatedAt);
|
|
98
|
-
if (created === undefined) return {};
|
|
99
|
-
const min = new Date(created - 60_000).toISOString();
|
|
100
|
-
const max = new Date((finished ?? created) + 60_000).toISOString();
|
|
101
|
-
return { minTimestamp: min, maxTimestamp: max };
|
|
102
|
-
}
|
|
103
|
-
|
|
104
84
|
export function MemoryTasksTable({
|
|
105
85
|
tasks,
|
|
106
86
|
memoryStoreName,
|
|
@@ -286,21 +266,10 @@ function OriginalMessagesPanel({
|
|
|
286
266
|
task: MemoryTask;
|
|
287
267
|
memoryStoreName: string;
|
|
288
268
|
}) {
|
|
289
|
-
const {
|
|
290
|
-
const query = useMemoryMessages(
|
|
269
|
+
const { messages, isLoading, precise } = useTaskSourceMessages(
|
|
291
270
|
memoryStoreName,
|
|
292
|
-
task
|
|
293
|
-
undefined,
|
|
294
|
-
50,
|
|
295
|
-
Boolean(memoryStoreName && task.scope?.appId),
|
|
296
|
-
{ minTimestamp, maxTimestamp },
|
|
271
|
+
task,
|
|
297
272
|
);
|
|
298
|
-
|
|
299
|
-
const messages = query.data?.items ?? [];
|
|
300
|
-
// Engine writes both the original turn and any system events in the same
|
|
301
|
-
// table, so on noisy stores this list can have non-conversational rows;
|
|
302
|
-
// we render whatever has a `content` string and let the styling do the
|
|
303
|
-
// rest. The window is already narrowed by createdAt±60s so it's small.
|
|
304
273
|
const renderable = messages.filter(
|
|
305
274
|
(m) => typeof m.content === "string" && m.content.length > 0,
|
|
306
275
|
);
|
|
@@ -310,17 +279,19 @@ function OriginalMessagesPanel({
|
|
|
310
279
|
<header className="mb-2 flex items-center justify-between">
|
|
311
280
|
<h4 className="text-sm font-semibold">原始会话</h4>
|
|
312
281
|
<span className="text-[10px] text-muted-foreground">
|
|
313
|
-
任务时间窗口内的消息
|
|
282
|
+
{precise ? "该任务提取记忆所依据的消息" : "任务时间窗口内的消息"}
|
|
314
283
|
</span>
|
|
315
284
|
</header>
|
|
316
|
-
{
|
|
285
|
+
{isLoading ? (
|
|
317
286
|
<div className="space-y-2">
|
|
318
287
|
<Skeleton className="h-12 w-full" />
|
|
319
288
|
<Skeleton className="h-12 w-full" />
|
|
320
289
|
</div>
|
|
321
290
|
) : renderable.length === 0 ? (
|
|
322
291
|
<p className="rounded border border-dashed border-[hsl(var(--border))] py-4 text-center text-xs italic text-muted-foreground">
|
|
323
|
-
|
|
292
|
+
{precise
|
|
293
|
+
? "未找到该任务对应的原始消息(可能已被清理)"
|
|
294
|
+
: "未在该任务范围内找到原始会话消息"}
|
|
324
295
|
</p>
|
|
325
296
|
) : (
|
|
326
297
|
<ul className="max-h-[420px] space-y-2 overflow-auto pr-1">
|