@tablestore/tablestore-agent-cli 0.2.6 → 0.2.8
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/commands/configure.d.ts.map +1 -1
- package/dist/commands/configure.js +10 -5
- package/dist/commands/configure.js.map +1 -1
- package/dist/commands/dashboard.d.ts.map +1 -1
- package/dist/commands/dashboard.js +7 -1
- package/dist/commands/dashboard.js.map +1 -1
- package/dist/commands/doctor.d.ts.map +1 -1
- package/dist/commands/doctor.js +46 -11
- package/dist/commands/doctor.js.map +1 -1
- 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/[root-of-the-server]__0.y01v.._.js +8 -8
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/[root-of-the-server]__04zbudf._.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/[root-of-the-server]__05eryp~._.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/[root-of-the-server]__06fva9g._.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/[root-of-the-server]__0cyd2qb._.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/[root-of-the-server]__0wa~r66._.js +8 -8
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/[root-of-the-server]__10k~3sa._.js +8 -8
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/0b1r_app_(dashboard)_knowledge-base_[name]_documents_documents-client_tsx_0g2uxmt._.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0brqbty._.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/{_0nmv74v._.js → _0l-4ms-._.js} +2 -2
- 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/{_0jl78rk._.js → _0x05u0y._.js} +2 -2
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0~5g0_a._.js +1 -1
- 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_0o9jhcn._.js +2 -2
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_0y49vhd._.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_10dsqx~._.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/0-ldkvvj51n5..js +5 -0
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/01ccz9pw1s5-1.js +1 -0
- 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/{0ro5-~k1_6.ji.js → 0b2g7gajnlz-x.js} +2 -2
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0czi-68m5cma3.js +1 -0
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/{0u6g.bq1prqh8.js → 0eg702en0ykod.js} +1 -1
- 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/0jwl.kgoaubdz.js +1 -0
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0o3sqa_d7_k15.js +1 -0
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0oatn7x1t1x~~.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/0zp_ao86_7617.js +1 -0
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/11daw7hfc5lbv.js +1 -0
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/140~~66uc8843.css +1 -0
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/1692-f0t3ef~c.js +1 -0
- package/dist/dashboard-runtime/dashboard/src/app/(dashboard)/layout.tsx +7 -2
- 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 +157 -66
- 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/app/api/v1/instances/[name]/route.ts +3 -0
- package/dist/dashboard-runtime/dashboard/src/app/api/v1/instances/[name]/token/route.ts +1 -0
- package/dist/dashboard-runtime/dashboard/src/app/api/v1/instances/[name]/use/route.ts +1 -0
- package/dist/dashboard-runtime/dashboard/src/app/api/v1/instances/route.ts +2 -0
- package/dist/dashboard-runtime/dashboard/src/components/instance/connect-instance-form.tsx +49 -10
- package/dist/dashboard-runtime/dashboard/src/components/instance/edit-instance-dialog.tsx +8 -0
- 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-dream-tasks.ts +96 -13
- package/dist/dashboard-runtime/dashboard/src/hooks/use-task-source-messages.ts +179 -0
- package/dist/dashboard-runtime/dashboard/src/lib/memory.ts +75 -1
- package/dist/dashboard-runtime/dashboard/src/lib/server/sdk-client.ts +17 -3
- package/dist/dashboard-runtime/dashboard/src/schemas/instance.ts +56 -4
- package/dist/dashboard-runtime/dashboard/src/types/instance.ts +10 -2
- package/dist/dashboard-runtime/dashboard/src/types/memory.ts +32 -2
- package/dist/dashboard-runtime/node_modules/@tablestore/tablestore-agent-sdk/dist/internal/auth-options.d.ts +25 -0
- package/dist/dashboard-runtime/node_modules/@tablestore/tablestore-agent-sdk/dist/internal/auth-options.d.ts.map +1 -0
- package/dist/dashboard-runtime/node_modules/@tablestore/tablestore-agent-sdk/dist/internal/auth-options.js +29 -0
- package/dist/dashboard-runtime/node_modules/@tablestore/tablestore-agent-sdk/dist/internal/auth-options.js.map +1 -0
- package/dist/dashboard-runtime/node_modules/@tablestore/tablestore-agent-sdk/dist/kb-client.d.ts.map +1 -1
- package/dist/dashboard-runtime/node_modules/@tablestore/tablestore-agent-sdk/dist/kb-client.js +4 -5
- package/dist/dashboard-runtime/node_modules/@tablestore/tablestore-agent-sdk/dist/kb-client.js.map +1 -1
- package/dist/dashboard-runtime/node_modules/@tablestore/tablestore-agent-sdk/dist/managed-ots.d.ts.map +1 -1
- package/dist/dashboard-runtime/node_modules/@tablestore/tablestore-agent-sdk/dist/managed-ots.js +11 -2
- package/dist/dashboard-runtime/node_modules/@tablestore/tablestore-agent-sdk/dist/managed-ots.js.map +1 -1
- package/dist/dashboard-runtime/node_modules/@tablestore/tablestore-agent-sdk/dist/memory-client.d.ts.map +1 -1
- package/dist/dashboard-runtime/node_modules/@tablestore/tablestore-agent-sdk/dist/memory-client.js +2 -3
- package/dist/dashboard-runtime/node_modules/@tablestore/tablestore-agent-sdk/dist/memory-client.js.map +1 -1
- package/dist/dashboard-runtime/node_modules/@tablestore/tablestore-agent-sdk/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/dashboard-runtime/node_modules/@tablestore/tablestore-agent-shared/dist/config.d.ts.map +1 -1
- package/dist/dashboard-runtime/node_modules/@tablestore/tablestore-agent-shared/dist/config.js +9 -1
- package/dist/dashboard-runtime/node_modules/@tablestore/tablestore-agent-shared/dist/config.js.map +1 -1
- package/dist/dashboard-runtime/node_modules/@tablestore/tablestore-agent-shared/dist/constants.d.ts +9 -1
- package/dist/dashboard-runtime/node_modules/@tablestore/tablestore-agent-shared/dist/constants.d.ts.map +1 -1
- package/dist/dashboard-runtime/node_modules/@tablestore/tablestore-agent-shared/dist/constants.js +18 -0
- package/dist/dashboard-runtime/node_modules/@tablestore/tablestore-agent-shared/dist/constants.js.map +1 -1
- package/dist/dashboard-runtime/node_modules/@tablestore/tablestore-agent-shared/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/dashboard-runtime/node_modules/@tablestore/tablestore-agent-shared/dist/types.d.ts +9 -0
- package/dist/dashboard-runtime/node_modules/@tablestore/tablestore-agent-shared/dist/types.d.ts.map +1 -1
- package/dist/node_modules/@tablestore/tablestore-agent-sdk/dist/internal/auth-options.d.ts +25 -0
- package/dist/node_modules/@tablestore/tablestore-agent-sdk/dist/internal/auth-options.d.ts.map +1 -0
- package/dist/node_modules/@tablestore/tablestore-agent-sdk/dist/internal/auth-options.js +29 -0
- package/dist/node_modules/@tablestore/tablestore-agent-sdk/dist/internal/auth-options.js.map +1 -0
- package/dist/node_modules/@tablestore/tablestore-agent-sdk/dist/kb-client.d.ts.map +1 -1
- package/dist/node_modules/@tablestore/tablestore-agent-sdk/dist/kb-client.js +4 -5
- package/dist/node_modules/@tablestore/tablestore-agent-sdk/dist/kb-client.js.map +1 -1
- package/dist/node_modules/@tablestore/tablestore-agent-sdk/dist/managed-ots.d.ts.map +1 -1
- package/dist/node_modules/@tablestore/tablestore-agent-sdk/dist/managed-ots.js +11 -2
- package/dist/node_modules/@tablestore/tablestore-agent-sdk/dist/managed-ots.js.map +1 -1
- package/dist/node_modules/@tablestore/tablestore-agent-sdk/dist/memory-client.d.ts.map +1 -1
- package/dist/node_modules/@tablestore/tablestore-agent-sdk/dist/memory-client.js +2 -3
- package/dist/node_modules/@tablestore/tablestore-agent-sdk/dist/memory-client.js.map +1 -1
- package/dist/node_modules/@tablestore/tablestore-agent-sdk/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/node_modules/@tablestore/tablestore-agent-shared/dist/config.d.ts.map +1 -1
- package/dist/node_modules/@tablestore/tablestore-agent-shared/dist/config.js +9 -1
- package/dist/node_modules/@tablestore/tablestore-agent-shared/dist/config.js.map +1 -1
- package/dist/node_modules/@tablestore/tablestore-agent-shared/dist/constants.d.ts +9 -1
- package/dist/node_modules/@tablestore/tablestore-agent-shared/dist/constants.d.ts.map +1 -1
- package/dist/node_modules/@tablestore/tablestore-agent-shared/dist/constants.js +18 -0
- package/dist/node_modules/@tablestore/tablestore-agent-shared/dist/constants.js.map +1 -1
- package/dist/node_modules/@tablestore/tablestore-agent-shared/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/node_modules/@tablestore/tablestore-agent-shared/dist/types.d.ts +9 -0
- package/dist/node_modules/@tablestore/tablestore-agent-shared/dist/types.d.ts.map +1 -1
- package/package.json +2 -2
- 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/0draec5luxua1.js +0 -1
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0f60fxsrh4wbq.js +0 -5
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0frefg2bkdon0.css +0 -1
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0oh~.z3b9_qzy.js +0 -1
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0w6-j4p-7fybc.js +0 -1
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0za3q13g~ihb2.js +0 -1
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/11fppb7wskgrx.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 → sk6oO3r92_OgCvicmyYrR}/_buildManifest.js +0 -0
- /package/dist/dashboard-runtime/dashboard/.next/static/{pE-cQCmJ7b5_xgwqBJ7J3 → sk6oO3r92_OgCvicmyYrR}/_clientMiddlewareManifest.js +0 -0
- /package/dist/dashboard-runtime/dashboard/.next/static/{pE-cQCmJ7b5_xgwqBJ7J3 → sk6oO3r92_OgCvicmyYrR}/_ssgManifest.js +0 -0
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[947161,128974,a=>{"use strict";var b=a.i(933596),c=a.i(983366),d=a.i(895487),e=a.i(263265),f=a.i(353141);async function g(){return(0,f.apiGet)("/api/v1/instances")}async function h(a){return(0,f.apiGet)(`/api/v1/instances/${encodeURIComponent(a)}`)}async function i(a){return(0,f.apiPost)("/api/v1/instances",a)}async function j(a){return(0,f.apiPost)("/api/v1/instances",a)}async function k(a,b){return(0,f.apiPut)(`/api/v1/instances/${encodeURIComponent(a)}`,b)}async function l(a){return(0,f.apiDelete)(`/api/v1/instances/${encodeURIComponent(a)}`)}async function m(a){return(0,f.apiPost)(`/api/v1/instances/${encodeURIComponent(a)}/use`)}async function n(a){return(0,f.apiGet)(`/api/v1/instances/${encodeURIComponent(a)}/token`)}var o=a.i(225377),p=a.i(739096);function q(a){(0,o.invalidateInstanceScopedQueries)(a)}function r(a){(0,o.resetInstanceScopedQueries)(a)}function s(a){a.invalidateQueries({queryKey:o.RUNTIME_CONTEXT_QUERY_KEY})}a.s(["useConnectInstance",0,function(){let a=(0,d.useQueryClient)();return(0,b.useMutation)({mutationFn:a=>i(a),onSuccess:()=>{r(a),s(a),e.toast.success("项目已创建")},onError:a=>{e.toast.error(a instanceof Error?a.message:"创建项目失败")}})},"useDeleteInstance",0,function(){let a=(0,d.useQueryClient)();return(0,b.useMutation)({mutationFn:a=>l(a),onSuccess:()=>{q(a),s(a),e.toast.success("项目已删除")},onError:a=>{e.toast.error(a instanceof Error?a.message:"删除项目失败")}})},"useExportInstanceToken",0,function(){return(0,b.useMutation)({mutationFn:a=>n(a),onError:a=>{e.toast.error(a instanceof Error?a.message:"导出 Token 失败")}})},"useImportInstance",0,function(){let a=(0,d.useQueryClient)();return(0,b.useMutation)({mutationFn:a=>j(a),onSuccess:()=>{r(a),s(a),e.toast.success("Token 已导入")},onError:a=>{e.toast.error(a instanceof Error?a.message:"导入 Token 失败")}})},"useInstance",0,function(a){let{context:b,ready:d}=(0,p.useRuntimeContext)();return(0,c.useQuery)({queryKey:o.queryKeys.instance(b.dataScopeKey,a),queryFn:()=>h(a),enabled:d&&!!a,staleTime:3e4})},"useInstances",0,function(){let{context:a,ready:b}=(0,p.useRuntimeContext)();return(0,c.useQuery)({queryKey:o.queryKeys.instances(a.dataScopeKey),queryFn:g,enabled:b,staleTime:3e4})},"useSwitchInstance",0,function(){let a=(0,d.useQueryClient)(),{context:c}=(0,p.useRuntimeContext)();return(0,b.useMutation)({mutationFn:a=>m(a),onSuccess:({activeInstance:b})=>{r(a),s(a),e.toast.success("已切换当前项目")},onError:a=>{e.toast.error(a instanceof Error?a.message:"切换项目失败")}})},"useUpdateInstance",0,function(a){let c=(0,d.useQueryClient)();return(0,b.useMutation)({mutationFn:b=>k(a,b),onSuccess:()=>{q(c),c.invalidateQueries({queryKey:["instance"]}),s(c),e.toast.success("项目已更新")},onError:a=>{e.toast.error(a instanceof Error?a.message:"更新项目失败")}})}],947161),a.s(["isImportPayload",0,function(a){return"string"==typeof a.token}],128974)},419446,a=>{"use strict";var b=a.i(634020),c=a.i(971938),d=a.i(771071),e=a.i(71562),f=a.i(244401),g=a.i(680904);let h=g.z.string().trim().regex(/^[a-z0-9-]{1,32}$/,"名称需为 1-32 位小写字母、数字或连字符").refine(a=>"default"!==a,'名称 "default" 为保留字'),i=(a,b=512)=>g.z.string().trim().min(1,`请输入${a}`).max(b),j=(a=512)=>g.z.string().trim().max(a).optional().or(g.z.literal("")),k=g.z.object({name:h,accessKeyId:i("AccessKey ID",128),accessKeySecret:i("AccessKey Secret",512),otsEndpoint:i("OTS Endpoint",256),otsInstanceName:i("OTS 实例名",128),ossEndpoint:j(256),ossBucketName:j(128),region:j(64),activate:g.z.boolean().optional()});g.z.object({accessKeyId:j(128),accessKeySecret:j(512),otsEndpoint:j(256),otsInstanceName:j(128),ossEndpoint:j(256),ossBucketName:j(128),region:j(64),activate:g.z.boolean().optional()}).refine(a=>{let b=!!(a.accessKeyId&&a.accessKeyId.length>0);return!!(a.accessKeySecret&&a.accessKeySecret.length>0)===b},{message:"AccessKey ID 与 Secret 必须成对更新,要么同时填写、要么同时留空",path:["accessKeySecret"]});let l=g.z.object({name:h,accessKeyId:j(128),accessKeySecret:j(512),otsEndpoint:i("OTS Endpoint",256),otsInstanceName:i("OTS 实例名",128),ossEndpoint:j(256),ossBucketName:j(128),region:j(64),activate:g.z.boolean().optional()}).refine(a=>{let b=!!(a.accessKeyId&&a.accessKeyId.length>0);return!!(a.accessKeySecret&&a.accessKeySecret.length>0)===b},{message:"AccessKey ID 与 Secret 必须成对更新,要么同时填写、要么同时留空",path:["accessKeySecret"]}),m=g.z.object({token:g.z.string().trim().min(10,"Token 长度不足,无法解析").max(4096),name:h.optional(),activate:g.z.boolean().optional()});var n=a.i(776192),o=a.i(692942),p=a.i(172518),q=a.i(663525),r=a.i(16038),s=a.i(470535);let t=k.extend({otsEndpoint:g.z.string().trim().url("请输入合法的 OTS Endpoint URL"),ossEndpoint:g.z.string().trim().url("请输入合法的 OSS Endpoint URL").optional().or(g.z.literal(""))}),u=m.pick({token:!0}),v=[{value:"cn-beijing",label:"华北 2(北京)"},{value:"cn-hangzhou",label:"华东 1(杭州)"},{value:"cn-shanghai",label:"华东 2(上海)"},{value:"cn-shenzhen",label:"华南 1(深圳)"},{value:"__custom__",label:"其它(自定义)"}];a.s(["ConnectInstanceForm",0,function({mode:a,defaultValues:g,accessKeyIdPlaceholder:h,accessKeySecretPlaceholder:i,onSubmit:j,busy:k,lockName:m,submitLabel:w}){let[x,y]=(0,c.useState)("manual"),z="edit"===a,A=g?.region??"cn-hangzhou",B=(0,c.useMemo)(()=>v.some(a=>a.value===A),[A]),[C,D]=(0,c.useState)(B?A:"__custom__"),E=(0,c.useMemo)(()=>(0,d.zodResolver)(z?l:t),[z]),F=(0,e.useForm)({resolver:E,defaultValues:{name:g?.name??"",accessKeyId:z?"":g?.accessKeyId??"",accessKeySecret:z?"":g?.accessKeySecret??"",otsEndpoint:g?.otsEndpoint??"",otsInstanceName:g?.otsInstanceName??"",ossEndpoint:g?.ossEndpoint??"",ossBucketName:g?.ossBucketName??"",region:A}}),G=(0,e.useForm)({resolver:(0,d.zodResolver)(u),defaultValues:{token:""}});async function H(a){let b=a.ossEndpoint?.trim()||void 0,c=a.ossBucketName?.trim()||void 0;b&&c&&(b=function(a,b){try{let c=new URL(a);if(c.hostname.startsWith(`${b}.`))return c.hostname=c.hostname.slice(b.length+1),c.toString().replace(/\/$/,"")}catch{}return a}(b,c));let d={...a,ossEndpoint:b,ossBucketName:c};await j(d)}async function I(a){let b={token:a.token.trim()};await j(b)}let J="create"===a;return(0,b.jsxs)(r.Tabs,{value:x,onValueChange:a=>y(a),className:"w-full",children:[J&&(0,b.jsxs)(r.TabsList,{className:"grid w-full grid-cols-2",children:[(0,b.jsx)(r.TabsTrigger,{value:"manual",children:"手动填写"}),(0,b.jsx)(r.TabsTrigger,{value:"token",children:"导入 Token"})]}),(0,b.jsx)(r.TabsContent,{value:"manual",className:"mt-4",children:(0,b.jsx)(o.Form,{...F,children:(0,b.jsxs)("form",{onSubmit:F.handleSubmit(H),className:"space-y-4",children:[(0,b.jsx)(o.FormField,{control:F.control,name:"name",render:({field:a})=>(0,b.jsxs)(o.FormItem,{children:[(0,b.jsx)(o.FormLabel,{children:"项目名称"}),(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(p.Input,{...a,placeholder:"prod-main",disabled:m||k,autoComplete:"off"})}),(0,b.jsx)(o.FormDescription,{children:"仅用于本地区分,不会发送到服务端。"}),(0,b.jsx)(o.FormMessage,{})]})}),(0,b.jsx)(o.FormField,{control:F.control,name:"region",render:({field:a})=>(0,b.jsxs)(o.FormItem,{children:[(0,b.jsx)(o.FormLabel,{children:"Region"}),"__custom__"===C?(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(p.Input,{...a,placeholder:"cn-xxx",disabled:k})}),(0,b.jsx)(n.Button,{type:"button",variant:"outline",size:"sm",onClick:()=>{D("cn-hangzhou"),a.onChange("cn-hangzhou")},disabled:k,children:"使用预设"})]}):(0,b.jsxs)(q.Select,{value:C,onValueChange:b=>{D(b),"__custom__"!==b?a.onChange(b):a.onChange("")},disabled:k,children:[(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(q.SelectTrigger,{children:(0,b.jsx)(q.SelectValue,{})})}),(0,b.jsx)(q.SelectContent,{children:v.map(a=>(0,b.jsx)(q.SelectItem,{value:a.value,children:a.label},a.value))})]}),(0,b.jsx)(o.FormMessage,{})]})}),(0,b.jsxs)("div",{className:"grid gap-4 sm:grid-cols-2",children:[(0,b.jsx)(o.FormField,{control:F.control,name:"accessKeyId",render:({field:a})=>(0,b.jsxs)(o.FormItem,{children:[(0,b.jsx)(o.FormLabel,{children:"AccessKey ID"}),(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(p.Input,{...a,autoComplete:"off",disabled:k,placeholder:z&&h?`${h} \xb7 留空表示保留`:void 0})}),z&&(0,b.jsx)(o.FormDescription,{children:"AK 与 SK 必须成对更新,留空则保留现有凭证。"}),(0,b.jsx)(o.FormMessage,{})]})}),(0,b.jsx)(o.FormField,{control:F.control,name:"accessKeySecret",render:({field:a})=>(0,b.jsxs)(o.FormItem,{children:[(0,b.jsx)(o.FormLabel,{children:"AccessKey Secret"}),(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(p.Input,{...a,type:"password",autoComplete:"new-password",disabled:k,placeholder:z&&i?`${i} \xb7 留空表示保留`:void 0})}),(0,b.jsx)(o.FormMessage,{})]})})]}),(0,b.jsxs)("div",{className:"grid gap-4 sm:grid-cols-2",children:[(0,b.jsx)(o.FormField,{control:F.control,name:"otsEndpoint",render:({field:a})=>(0,b.jsxs)(o.FormItem,{children:[(0,b.jsx)(o.FormLabel,{children:"OTS Endpoint"}),(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(p.Input,{...a,placeholder:"https://xxx.cn-hangzhou.ots.aliyuncs.com",disabled:k})}),(0,b.jsx)(o.FormMessage,{})]})}),(0,b.jsx)(o.FormField,{control:F.control,name:"otsInstanceName",render:({field:a})=>(0,b.jsxs)(o.FormItem,{children:[(0,b.jsx)(o.FormLabel,{children:"OTS 实例名"}),(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(p.Input,{...a,disabled:k})}),(0,b.jsx)(o.FormMessage,{})]})})]}),(0,b.jsxs)("div",{className:"flex items-start gap-2 rounded-md border border-[hsl(var(--border))] bg-[hsl(var(--muted)/0.4)] px-3 py-2 text-xs text-[hsl(var(--muted-foreground))]",children:[(0,b.jsx)(f.Info,{className:"mt-0.5 h-3.5 w-3.5 shrink-0 text-[hsl(var(--primary))]"}),(0,b.jsx)("span",{children:"OSS 信息为可选项。若需上传文档到知识库,OSS Endpoint 与 Bucket 必填; 留空则项目只能用于查询与检索,文件上传功能将不可用。"})]}),(0,b.jsxs)("div",{className:"grid gap-4 sm:grid-cols-2",children:[(0,b.jsx)(o.FormField,{control:F.control,name:"ossEndpoint",render:({field:a})=>(0,b.jsxs)(o.FormItem,{children:[(0,b.jsx)(o.FormLabel,{children:"OSS Endpoint(可选)"}),(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(p.Input,{...a,placeholder:"https://oss-cn-hangzhou.aliyuncs.com",disabled:k})}),(0,b.jsx)(o.FormMessage,{})]})}),(0,b.jsx)(o.FormField,{control:F.control,name:"ossBucketName",render:({field:a})=>(0,b.jsxs)(o.FormItem,{children:[(0,b.jsx)(o.FormLabel,{children:"OSS Bucket(可选)"}),(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(p.Input,{...a,disabled:k})}),(0,b.jsx)(o.FormMessage,{})]})})]}),(0,b.jsx)("div",{className:"flex justify-end pt-2",children:(0,b.jsx)(n.Button,{type:"submit",disabled:k,children:k?"提交中...":w??("edit"===a?"保存":"创建项目")})})]})})}),J&&(0,b.jsx)(r.TabsContent,{value:"token",className:"mt-4",children:(0,b.jsx)(o.Form,{...G,children:(0,b.jsxs)("form",{onSubmit:G.handleSubmit(I),className:"space-y-4",children:[(0,b.jsx)(o.FormField,{control:G.control,name:"token",render:({field:a})=>(0,b.jsxs)(o.FormItem,{children:[(0,b.jsx)(o.FormLabel,{children:"项目 Token"}),(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(s.Textarea,{...a,rows:5,placeholder:"粘贴从其他环境导出的项目 Token",disabled:k})}),(0,b.jsx)(o.FormDescription,{children:"Token 中已包含 AK/SK、Endpoint 等全部连接信息。"}),(0,b.jsx)(o.FormMessage,{})]})}),(0,b.jsx)("div",{className:"flex justify-end pt-2",children:(0,b.jsx)(n.Button,{type:"submit",disabled:k,children:k?"导入中...":"导入并连接"})})]})})})]})}],419446)}];
|
|
1
|
+
module.exports=[947161,128974,a=>{"use strict";var b=a.i(933596),c=a.i(983366),d=a.i(895487),e=a.i(263265),f=a.i(353141);async function g(){return(0,f.apiGet)("/api/v1/instances")}async function h(a){return(0,f.apiGet)(`/api/v1/instances/${encodeURIComponent(a)}`)}async function i(a){return(0,f.apiPost)("/api/v1/instances",a)}async function j(a){return(0,f.apiPost)("/api/v1/instances",a)}async function k(a,b){return(0,f.apiPut)(`/api/v1/instances/${encodeURIComponent(a)}`,b)}async function l(a){return(0,f.apiDelete)(`/api/v1/instances/${encodeURIComponent(a)}`)}async function m(a){return(0,f.apiPost)(`/api/v1/instances/${encodeURIComponent(a)}/use`)}async function n(a){return(0,f.apiGet)(`/api/v1/instances/${encodeURIComponent(a)}/token`)}var o=a.i(225377),p=a.i(739096);function q(a){(0,o.invalidateInstanceScopedQueries)(a)}function r(a){(0,o.resetInstanceScopedQueries)(a)}function s(a){a.invalidateQueries({queryKey:o.RUNTIME_CONTEXT_QUERY_KEY})}a.s(["useConnectInstance",0,function(){let a=(0,d.useQueryClient)();return(0,b.useMutation)({mutationFn:a=>i(a),onSuccess:()=>{r(a),s(a),e.toast.success("项目已创建")},onError:a=>{e.toast.error(a instanceof Error?a.message:"创建项目失败")}})},"useDeleteInstance",0,function(){let a=(0,d.useQueryClient)();return(0,b.useMutation)({mutationFn:a=>l(a),onSuccess:()=>{q(a),s(a),e.toast.success("项目已删除")},onError:a=>{e.toast.error(a instanceof Error?a.message:"删除项目失败")}})},"useExportInstanceToken",0,function(){return(0,b.useMutation)({mutationFn:a=>n(a),onError:a=>{e.toast.error(a instanceof Error?a.message:"导出 Token 失败")}})},"useImportInstance",0,function(){let a=(0,d.useQueryClient)();return(0,b.useMutation)({mutationFn:a=>j(a),onSuccess:()=>{r(a),s(a),e.toast.success("Token 已导入")},onError:a=>{e.toast.error(a instanceof Error?a.message:"导入 Token 失败")}})},"useInstance",0,function(a){let{context:b,ready:d}=(0,p.useRuntimeContext)();return(0,c.useQuery)({queryKey:o.queryKeys.instance(b.dataScopeKey,a),queryFn:()=>h(a),enabled:d&&!!a,staleTime:3e4})},"useInstances",0,function(){let{context:a,ready:b}=(0,p.useRuntimeContext)();return(0,c.useQuery)({queryKey:o.queryKeys.instances(a.dataScopeKey),queryFn:g,enabled:b,staleTime:3e4})},"useSwitchInstance",0,function(){let a=(0,d.useQueryClient)(),{context:c}=(0,p.useRuntimeContext)();return(0,b.useMutation)({mutationFn:a=>m(a),onSuccess:({activeInstance:b})=>{r(a),s(a),e.toast.success("已切换当前项目")},onError:a=>{e.toast.error(a instanceof Error?a.message:"切换项目失败")}})},"useUpdateInstance",0,function(a){let c=(0,d.useQueryClient)();return(0,b.useMutation)({mutationFn:b=>k(a,b),onSuccess:()=>{q(c),c.invalidateQueries({queryKey:["instance"]}),s(c),e.toast.success("项目已更新")},onError:a=>{e.toast.error(a instanceof Error?a.message:"更新项目失败")}})}],947161),a.s(["isImportPayload",0,function(a){return"string"==typeof a.token}],128974)},419446,a=>{"use strict";var b=a.i(634020),c=a.i(971938),d=a.i(771071),e=a.i(71562),f=a.i(244401),g=a.i(680904);let h=g.z.string().trim().regex(/^[a-z0-9-]{1,32}$/,"名称需为 1-32 位小写字母、数字或连字符").refine(a=>"default"!==a,'名称 "default" 为保留字'),i=(a,b=512)=>g.z.string().trim().min(1,`请输入${a}`).max(b),j=(a=512)=>g.z.string().trim().max(a).optional().or(g.z.literal("")),k={message:"AccessKey ID 与 Secret 必须成对填写",path:["accessKeySecret"]},l={message:"请至少提供 API Key,或 AccessKey ID + Secret",path:["apiKey"]};function m(a){return a.refine(a=>!!a.accessKeyId==!!a.accessKeySecret,k).refine(a=>!!(a.accessKeyId&&a.accessKeySecret)||!!a.apiKey,l)}let n=g.z.object({name:h,accessKeyId:j(128),accessKeySecret:j(512),apiKey:j(512),otsEndpoint:i("OTS Endpoint",256),otsInstanceName:i("OTS 实例名",128),ossEndpoint:j(256),ossBucketName:j(128),region:j(64),activate:g.z.boolean().optional()});m(n),g.z.object({accessKeyId:j(128),accessKeySecret:j(512),apiKey:j(512),otsEndpoint:j(256),otsInstanceName:j(128),ossEndpoint:j(256),ossBucketName:j(128),region:j(64),activate:g.z.boolean().optional()}).refine(a=>{let b=!!(a.accessKeyId&&a.accessKeyId.length>0);return!!(a.accessKeySecret&&a.accessKeySecret.length>0)===b},{message:"AccessKey ID 与 Secret 必须成对更新,要么同时填写、要么同时留空",path:["accessKeySecret"]});let o=g.z.object({name:h,accessKeyId:j(128),accessKeySecret:j(512),apiKey:j(512),otsEndpoint:i("OTS Endpoint",256),otsInstanceName:i("OTS 实例名",128),ossEndpoint:j(256),ossBucketName:j(128),region:j(64),activate:g.z.boolean().optional()}).refine(a=>{let b=!!(a.accessKeyId&&a.accessKeyId.length>0);return!!(a.accessKeySecret&&a.accessKeySecret.length>0)===b},{message:"AccessKey ID 与 Secret 必须成对更新,要么同时填写、要么同时留空",path:["accessKeySecret"]}),p=g.z.object({token:g.z.string().trim().min(10,"Token 长度不足,无法解析").max(4096),name:h.optional(),activate:g.z.boolean().optional()});var q=a.i(776192),r=a.i(692942),s=a.i(172518),t=a.i(663525),u=a.i(16038),v=a.i(470535);let w=m(n.extend({otsEndpoint:g.z.string().trim().url("请输入合法的 OTS Endpoint URL"),ossEndpoint:g.z.string().trim().url("请输入合法的 OSS Endpoint URL").optional().or(g.z.literal(""))})),x=p.pick({token:!0}),y=[{value:"cn-beijing",label:"华北 2(北京)"},{value:"cn-hangzhou",label:"华东 1(杭州)"},{value:"cn-shanghai",label:"华东 2(上海)"},{value:"cn-shenzhen",label:"华南 1(深圳)"},{value:"__custom__",label:"其它(自定义)"}];a.s(["ConnectInstanceForm",0,function({mode:a,defaultValues:g,accessKeyIdPlaceholder:h,accessKeySecretPlaceholder:i,apiKeyPlaceholder:j,onSubmit:k,busy:l,lockName:m,submitLabel:n}){let[p,z]=(0,c.useState)("manual"),A="edit"===a,B=g?.region??"cn-hangzhou",C=(0,c.useMemo)(()=>y.some(a=>a.value===B),[B]),[D,E]=(0,c.useState)(C?B:"__custom__"),F=(0,c.useMemo)(()=>(0,d.zodResolver)(A?o:w),[A]),G=(0,e.useForm)({resolver:F,defaultValues:{name:g?.name??"",accessKeyId:A?"":g?.accessKeyId??"",accessKeySecret:A?"":g?.accessKeySecret??"",apiKey:A?"":g?.apiKey??"",otsEndpoint:g?.otsEndpoint??"",otsInstanceName:g?.otsInstanceName??"",ossEndpoint:g?.ossEndpoint??"",ossBucketName:g?.ossBucketName??"",region:B}}),H=(0,e.useForm)({resolver:(0,d.zodResolver)(x),defaultValues:{token:""}});async function I(a){let b=a.ossEndpoint?.trim()||void 0,c=a.ossBucketName?.trim()||void 0;b&&c&&(b=function(a,b){try{let c=new URL(a);if(c.hostname.startsWith(`${b}.`))return c.hostname=c.hostname.slice(b.length+1),c.toString().replace(/\/$/,"")}catch{}return a}(b,c));let d={...a,ossEndpoint:b,ossBucketName:c};await k(d)}async function J(a){let b={token:a.token.trim()};await k(b)}let K="create"===a;return(0,b.jsxs)(u.Tabs,{value:p,onValueChange:a=>z(a),className:"w-full",children:[K&&(0,b.jsxs)(u.TabsList,{className:"grid w-full grid-cols-2",children:[(0,b.jsx)(u.TabsTrigger,{value:"manual",children:"手动填写"}),(0,b.jsx)(u.TabsTrigger,{value:"token",children:"导入 Token"})]}),(0,b.jsx)(u.TabsContent,{value:"manual",className:"mt-4",children:(0,b.jsx)(r.Form,{...G,children:(0,b.jsxs)("form",{onSubmit:G.handleSubmit(I),className:"space-y-4",children:[(0,b.jsx)(r.FormField,{control:G.control,name:"name",render:({field:a})=>(0,b.jsxs)(r.FormItem,{children:[(0,b.jsx)(r.FormLabel,{children:"项目名称"}),(0,b.jsx)(r.FormControl,{children:(0,b.jsx)(s.Input,{...a,placeholder:"prod-main",disabled:m||l,autoComplete:"off"})}),(0,b.jsx)(r.FormDescription,{children:"仅用于本地区分,不会发送到服务端。"}),(0,b.jsx)(r.FormMessage,{})]})}),(0,b.jsx)(r.FormField,{control:G.control,name:"region",render:({field:a})=>(0,b.jsxs)(r.FormItem,{children:[(0,b.jsx)(r.FormLabel,{children:"Region"}),"__custom__"===D?(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsx)(r.FormControl,{children:(0,b.jsx)(s.Input,{...a,placeholder:"cn-xxx",disabled:l})}),(0,b.jsx)(q.Button,{type:"button",variant:"outline",size:"sm",onClick:()=>{E("cn-hangzhou"),a.onChange("cn-hangzhou")},disabled:l,children:"使用预设"})]}):(0,b.jsxs)(t.Select,{value:D,onValueChange:b=>{E(b),"__custom__"!==b?a.onChange(b):a.onChange("")},disabled:l,children:[(0,b.jsx)(r.FormControl,{children:(0,b.jsx)(t.SelectTrigger,{children:(0,b.jsx)(t.SelectValue,{})})}),(0,b.jsx)(t.SelectContent,{children:y.map(a=>(0,b.jsx)(t.SelectItem,{value:a.value,children:a.label},a.value))})]}),(0,b.jsx)(r.FormMessage,{})]})}),(0,b.jsxs)("div",{className:"grid gap-4 sm:grid-cols-2",children:[(0,b.jsx)(r.FormField,{control:G.control,name:"accessKeyId",render:({field:a})=>(0,b.jsxs)(r.FormItem,{children:[(0,b.jsx)(r.FormLabel,{children:"AccessKey ID"}),(0,b.jsx)(r.FormControl,{children:(0,b.jsx)(s.Input,{...a,autoComplete:"off",disabled:l,placeholder:A&&h?`${h} \xb7 留空表示保留`:void 0})}),A&&(0,b.jsx)(r.FormDescription,{children:"AK 与 SK 必须成对更新,留空则保留现有凭证。"}),(0,b.jsx)(r.FormMessage,{})]})}),(0,b.jsx)(r.FormField,{control:G.control,name:"accessKeySecret",render:({field:a})=>(0,b.jsxs)(r.FormItem,{children:[(0,b.jsx)(r.FormLabel,{children:"AccessKey Secret"}),(0,b.jsx)(r.FormControl,{children:(0,b.jsx)(s.Input,{...a,type:"password",autoComplete:"new-password",disabled:l,placeholder:A&&i?`${i} \xb7 留空表示保留`:void 0})}),(0,b.jsx)(r.FormMessage,{})]})})]}),(0,b.jsx)(r.FormField,{control:G.control,name:"apiKey",render:({field:a})=>(0,b.jsxs)(r.FormItem,{children:[(0,b.jsx)(r.FormLabel,{children:"API Key(可选)"}),(0,b.jsx)(r.FormControl,{children:(0,b.jsx)(s.Input,{...a,type:"password",autoComplete:"new-password",disabled:l,placeholder:A&&j?`${j} \xb7 留空表示保留`:"sk-..."})}),(0,b.jsx)(r.FormDescription,{children:"可替代 AccessKey 作为数据面访问凭证;同时填写时 API Key 优先。 需 HTTPS 端点,且无法自动创建实例 / 使用 OSS 上传(那些仍需 AK/SK)。"}),(0,b.jsx)(r.FormMessage,{})]})}),(0,b.jsxs)("div",{className:"grid gap-4 sm:grid-cols-2",children:[(0,b.jsx)(r.FormField,{control:G.control,name:"otsEndpoint",render:({field:a})=>(0,b.jsxs)(r.FormItem,{children:[(0,b.jsx)(r.FormLabel,{children:"OTS Endpoint"}),(0,b.jsx)(r.FormControl,{children:(0,b.jsx)(s.Input,{...a,placeholder:"https://xxx.cn-hangzhou.ots.aliyuncs.com",disabled:l})}),(0,b.jsx)(r.FormMessage,{})]})}),(0,b.jsx)(r.FormField,{control:G.control,name:"otsInstanceName",render:({field:a})=>(0,b.jsxs)(r.FormItem,{children:[(0,b.jsx)(r.FormLabel,{children:"OTS 实例名"}),(0,b.jsx)(r.FormControl,{children:(0,b.jsx)(s.Input,{...a,disabled:l})}),(0,b.jsx)(r.FormMessage,{})]})})]}),(0,b.jsxs)("div",{className:"flex items-start gap-2 rounded-md border border-[hsl(var(--border))] bg-[hsl(var(--muted)/0.4)] px-3 py-2 text-xs text-[hsl(var(--muted-foreground))]",children:[(0,b.jsx)(f.Info,{className:"mt-0.5 h-3.5 w-3.5 shrink-0 text-[hsl(var(--primary))]"}),(0,b.jsx)("span",{children:"OSS 信息为可选项。若需上传文档到知识库,OSS Endpoint 与 Bucket 必填; 留空则项目只能用于查询与检索,文件上传功能将不可用。"})]}),(0,b.jsxs)("div",{className:"grid gap-4 sm:grid-cols-2",children:[(0,b.jsx)(r.FormField,{control:G.control,name:"ossEndpoint",render:({field:a})=>(0,b.jsxs)(r.FormItem,{children:[(0,b.jsx)(r.FormLabel,{children:"OSS Endpoint(可选)"}),(0,b.jsx)(r.FormControl,{children:(0,b.jsx)(s.Input,{...a,placeholder:"https://oss-cn-hangzhou.aliyuncs.com",disabled:l})}),(0,b.jsx)(r.FormMessage,{})]})}),(0,b.jsx)(r.FormField,{control:G.control,name:"ossBucketName",render:({field:a})=>(0,b.jsxs)(r.FormItem,{children:[(0,b.jsx)(r.FormLabel,{children:"OSS Bucket(可选)"}),(0,b.jsx)(r.FormControl,{children:(0,b.jsx)(s.Input,{...a,disabled:l})}),(0,b.jsx)(r.FormMessage,{})]})})]}),(0,b.jsx)("div",{className:"flex justify-end pt-2",children:(0,b.jsx)(q.Button,{type:"submit",disabled:l,children:l?"提交中...":n??("edit"===a?"保存":"创建项目")})})]})})}),K&&(0,b.jsx)(u.TabsContent,{value:"token",className:"mt-4",children:(0,b.jsx)(r.Form,{...H,children:(0,b.jsxs)("form",{onSubmit:H.handleSubmit(J),className:"space-y-4",children:[(0,b.jsx)(r.FormField,{control:H.control,name:"token",render:({field:a})=>(0,b.jsxs)(r.FormItem,{children:[(0,b.jsx)(r.FormLabel,{children:"项目 Token"}),(0,b.jsx)(r.FormControl,{children:(0,b.jsx)(v.Textarea,{...a,rows:5,placeholder:"粘贴从其他环境导出的项目 Token",disabled:l})}),(0,b.jsx)(r.FormDescription,{children:"Token 中已包含 AK/SK、Endpoint 等全部连接信息。"}),(0,b.jsx)(r.FormMessage,{})]})}),(0,b.jsx)("div",{className:"flex justify-end pt-2",children:(0,b.jsx)(q.Button,{type:"submit",disabled:l,children:l?"导入中...":"导入并连接"})})]})})})]})}],419446)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=dashboard_src_0y49vhd._.js.map
|
|
@@ -1,3 +1,3 @@
|
|
|
1
|
-
module.exports=[419446,a=>{"use strict";var b=a.i(634020),c=a.i(971938),d=a.i(771071),e=a.i(71562),f=a.i(244401),g=a.i(680904);let h=g.z.string().trim().regex(/^[a-z0-9-]{1,32}$/,"名称需为 1-32 位小写字母、数字或连字符").refine(a=>"default"!==a,'名称 "default" 为保留字'),i=(a,b=512)=>g.z.string().trim().min(1,`请输入${a}`).max(b),j=(a=512)=>g.z.string().trim().max(a).optional().or(g.z.literal("")),k=g.z.object({name:h,accessKeyId:i("AccessKey ID",128),accessKeySecret:i("AccessKey Secret",512),otsEndpoint:i("OTS Endpoint",256),otsInstanceName:i("OTS 实例名",128),ossEndpoint:j(256),ossBucketName:j(128),region:j(64),activate:g.z.boolean().optional()});g.z.object({accessKeyId:j(128),accessKeySecret:j(512),otsEndpoint:j(256),otsInstanceName:j(128),ossEndpoint:j(256),ossBucketName:j(128),region:j(64),activate:g.z.boolean().optional()}).refine(a=>{let b=!!(a.accessKeyId&&a.accessKeyId.length>0);return!!(a.accessKeySecret&&a.accessKeySecret.length>0)===b},{message:"AccessKey ID 与 Secret 必须成对更新,要么同时填写、要么同时留空",path:["accessKeySecret"]});let l=g.z.object({name:h,accessKeyId:j(128),accessKeySecret:j(512),otsEndpoint:i("OTS Endpoint",256),otsInstanceName:i("OTS 实例名",128),ossEndpoint:j(256),ossBucketName:j(128),region:j(64),activate:g.z.boolean().optional()}).refine(a=>{let b=!!(a.accessKeyId&&a.accessKeyId.length>0);return!!(a.accessKeySecret&&a.accessKeySecret.length>0)===b},{message:"AccessKey ID 与 Secret 必须成对更新,要么同时填写、要么同时留空",path:["accessKeySecret"]}),m=g.z.object({token:g.z.string().trim().min(10,"Token 长度不足,无法解析").max(4096),name:h.optional(),activate:g.z.boolean().optional()});var n=a.i(776192),o=a.i(692942),p=a.i(172518),q=a.i(663525),r=a.i(16038),s=a.i(470535);let t=k.extend({otsEndpoint:g.z.string().trim().url("请输入合法的 OTS Endpoint URL"),ossEndpoint:g.z.string().trim().url("请输入合法的 OSS Endpoint URL").optional().or(g.z.literal(""))}),u=m.pick({token:!0}),v=[{value:"cn-beijing",label:"华北 2(北京)"},{value:"cn-hangzhou",label:"华东 1(杭州)"},{value:"cn-shanghai",label:"华东 2(上海)"},{value:"cn-shenzhen",label:"华南 1(深圳)"},{value:"__custom__",label:"其它(自定义)"}];a.s(["ConnectInstanceForm",0,function({mode:a,defaultValues:g,accessKeyIdPlaceholder:h,accessKeySecretPlaceholder:i,onSubmit:j,busy:k,lockName:m,submitLabel:w}){let[x,y]=(0,c.useState)("manual"),z="edit"===a,A=g?.region??"cn-hangzhou",B=(0,c.useMemo)(()=>v.some(a=>a.value===A),[A]),[C,D]=(0,c.useState)(B?A:"__custom__"),E=(0,c.useMemo)(()=>(0,d.zodResolver)(z?l:t),[z]),F=(0,e.useForm)({resolver:E,defaultValues:{name:g?.name??"",accessKeyId:z?"":g?.accessKeyId??"",accessKeySecret:z?"":g?.accessKeySecret??"",otsEndpoint:g?.otsEndpoint??"",otsInstanceName:g?.otsInstanceName??"",ossEndpoint:g?.ossEndpoint??"",ossBucketName:g?.ossBucketName??"",region:A}}),G=(0,e.useForm)({resolver:(0,d.zodResolver)(u),defaultValues:{token:""}});async function H(a){let b=a.ossEndpoint?.trim()||void 0,c=a.ossBucketName?.trim()||void 0;b&&c&&(b=function(a,b){try{let c=new URL(a);if(c.hostname.startsWith(`${b}.`))return c.hostname=c.hostname.slice(b.length+1),c.toString().replace(/\/$/,"")}catch{}return a}(b,c));let d={...a,ossEndpoint:b,ossBucketName:c};await j(d)}async function I(a){let b={token:a.token.trim()};await j(b)}let J="create"===a;return(0,b.jsxs)(r.Tabs,{value:x,onValueChange:a=>y(a),className:"w-full",children:[J&&(0,b.jsxs)(r.TabsList,{className:"grid w-full grid-cols-2",children:[(0,b.jsx)(r.TabsTrigger,{value:"manual",children:"手动填写"}),(0,b.jsx)(r.TabsTrigger,{value:"token",children:"导入 Token"})]}),(0,b.jsx)(r.TabsContent,{value:"manual",className:"mt-4",children:(0,b.jsx)(o.Form,{...F,children:(0,b.jsxs)("form",{onSubmit:F.handleSubmit(H),className:"space-y-4",children:[(0,b.jsx)(o.FormField,{control:F.control,name:"name",render:({field:a})=>(0,b.jsxs)(o.FormItem,{children:[(0,b.jsx)(o.FormLabel,{children:"项目名称"}),(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(p.Input,{...a,placeholder:"prod-main",disabled:m||k,autoComplete:"off"})}),(0,b.jsx)(o.FormDescription,{children:"仅用于本地区分,不会发送到服务端。"}),(0,b.jsx)(o.FormMessage,{})]})}),(0,b.jsx)(o.FormField,{control:F.control,name:"region",render:({field:a})=>(0,b.jsxs)(o.FormItem,{children:[(0,b.jsx)(o.FormLabel,{children:"Region"}),"__custom__"===C?(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(p.Input,{...a,placeholder:"cn-xxx",disabled:k})}),(0,b.jsx)(n.Button,{type:"button",variant:"outline",size:"sm",onClick:()=>{D("cn-hangzhou"),a.onChange("cn-hangzhou")},disabled:k,children:"使用预设"})]}):(0,b.jsxs)(q.Select,{value:C,onValueChange:b=>{D(b),"__custom__"!==b?a.onChange(b):a.onChange("")},disabled:k,children:[(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(q.SelectTrigger,{children:(0,b.jsx)(q.SelectValue,{})})}),(0,b.jsx)(q.SelectContent,{children:v.map(a=>(0,b.jsx)(q.SelectItem,{value:a.value,children:a.label},a.value))})]}),(0,b.jsx)(o.FormMessage,{})]})}),(0,b.jsxs)("div",{className:"grid gap-4 sm:grid-cols-2",children:[(0,b.jsx)(o.FormField,{control:F.control,name:"accessKeyId",render:({field:a})=>(0,b.jsxs)(o.FormItem,{children:[(0,b.jsx)(o.FormLabel,{children:"AccessKey ID"}),(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(p.Input,{...a,autoComplete:"off",disabled:k,placeholder:z&&h?`${h} \xb7 留空表示保留`:void 0})}),z&&(0,b.jsx)(o.FormDescription,{children:"AK 与 SK 必须成对更新,留空则保留现有凭证。"}),(0,b.jsx)(o.FormMessage,{})]})}),(0,b.jsx)(o.FormField,{control:F.control,name:"accessKeySecret",render:({field:a})=>(0,b.jsxs)(o.FormItem,{children:[(0,b.jsx)(o.FormLabel,{children:"AccessKey Secret"}),(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(p.Input,{...a,type:"password",autoComplete:"new-password",disabled:k,placeholder:z&&i?`${i} \xb7 留空表示保留`:void 0})}),(0,b.jsx)(o.FormMessage,{})]})})]}),(0,b.jsxs)("div",{className:"grid gap-4 sm:grid-cols-2",children:[(0,b.jsx)(o.FormField,{control:F.control,name:"otsEndpoint",render:({field:a})=>(0,b.jsxs)(o.FormItem,{children:[(0,b.jsx)(o.FormLabel,{children:"OTS Endpoint"}),(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(p.Input,{...a,placeholder:"https://xxx.cn-hangzhou.ots.aliyuncs.com",disabled:k})}),(0,b.jsx)(o.FormMessage,{})]})}),(0,b.jsx)(o.FormField,{control:F.control,name:"otsInstanceName",render:({field:a})=>(0,b.jsxs)(o.FormItem,{children:[(0,b.jsx)(o.FormLabel,{children:"OTS 实例名"}),(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(p.Input,{...a,disabled:k})}),(0,b.jsx)(o.FormMessage,{})]})})]}),(0,b.jsxs)("div",{className:"flex items-start gap-2 rounded-md border border-[hsl(var(--border))] bg-[hsl(var(--muted)/0.4)] px-3 py-2 text-xs text-[hsl(var(--muted-foreground))]",children:[(0,b.jsx)(f.Info,{className:"mt-0.5 h-3.5 w-3.5 shrink-0 text-[hsl(var(--primary))]"}),(0,b.jsx)("span",{children:"OSS 信息为可选项。若需上传文档到知识库,OSS Endpoint 与 Bucket 必填; 留空则项目只能用于查询与检索,文件上传功能将不可用。"})]}),(0,b.jsxs)("div",{className:"grid gap-4 sm:grid-cols-2",children:[(0,b.jsx)(o.FormField,{control:F.control,name:"ossEndpoint",render:({field:a})=>(0,b.jsxs)(o.FormItem,{children:[(0,b.jsx)(o.FormLabel,{children:"OSS Endpoint(可选)"}),(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(p.Input,{...a,placeholder:"https://oss-cn-hangzhou.aliyuncs.com",disabled:k})}),(0,b.jsx)(o.FormMessage,{})]})}),(0,b.jsx)(o.FormField,{control:F.control,name:"ossBucketName",render:({field:a})=>(0,b.jsxs)(o.FormItem,{children:[(0,b.jsx)(o.FormLabel,{children:"OSS Bucket(可选)"}),(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(p.Input,{...a,disabled:k})}),(0,b.jsx)(o.FormMessage,{})]})})]}),(0,b.jsx)("div",{className:"flex justify-end pt-2",children:(0,b.jsx)(n.Button,{type:"submit",disabled:k,children:k?"提交中...":w??("edit"===a?"保存":"创建项目")})})]})})}),J&&(0,b.jsx)(r.TabsContent,{value:"token",className:"mt-4",children:(0,b.jsx)(o.Form,{...G,children:(0,b.jsxs)("form",{onSubmit:G.handleSubmit(I),className:"space-y-4",children:[(0,b.jsx)(o.FormField,{control:G.control,name:"token",render:({field:a})=>(0,b.jsxs)(o.FormItem,{children:[(0,b.jsx)(o.FormLabel,{children:"项目 Token"}),(0,b.jsx)(o.FormControl,{children:(0,b.jsx)(s.Textarea,{...a,rows:5,placeholder:"粘贴从其他环境导出的项目 Token",disabled:k})}),(0,b.jsx)(o.FormDescription,{children:"Token 中已包含 AK/SK、Endpoint 等全部连接信息。"}),(0,b.jsx)(o.FormMessage,{})]})}),(0,b.jsx)("div",{className:"flex justify-end pt-2",children:(0,b.jsx)(n.Button,{type:"submit",disabled:k,children:k?"导入中...":"导入并连接"})})]})})})]})}],419446)},947161,128974,a=>{"use strict";var b=a.i(933596),c=a.i(983366),d=a.i(895487),e=a.i(263265),f=a.i(353141);async function g(){return(0,f.apiGet)("/api/v1/instances")}async function h(a){return(0,f.apiGet)(`/api/v1/instances/${encodeURIComponent(a)}`)}async function i(a){return(0,f.apiPost)("/api/v1/instances",a)}async function j(a){return(0,f.apiPost)("/api/v1/instances",a)}async function k(a,b){return(0,f.apiPut)(`/api/v1/instances/${encodeURIComponent(a)}`,b)}async function l(a){return(0,f.apiDelete)(`/api/v1/instances/${encodeURIComponent(a)}`)}async function m(a){return(0,f.apiPost)(`/api/v1/instances/${encodeURIComponent(a)}/use`)}async function n(a){return(0,f.apiGet)(`/api/v1/instances/${encodeURIComponent(a)}/token`)}var o=a.i(225377),p=a.i(739096);function q(a){(0,o.invalidateInstanceScopedQueries)(a)}function r(a){(0,o.resetInstanceScopedQueries)(a)}function s(a){a.invalidateQueries({queryKey:o.RUNTIME_CONTEXT_QUERY_KEY})}a.s(["useConnectInstance",0,function(){let a=(0,d.useQueryClient)();return(0,b.useMutation)({mutationFn:a=>i(a),onSuccess:()=>{r(a),s(a),e.toast.success("项目已创建")},onError:a=>{e.toast.error(a instanceof Error?a.message:"创建项目失败")}})},"useDeleteInstance",0,function(){let a=(0,d.useQueryClient)();return(0,b.useMutation)({mutationFn:a=>l(a),onSuccess:()=>{q(a),s(a),e.toast.success("项目已删除")},onError:a=>{e.toast.error(a instanceof Error?a.message:"删除项目失败")}})},"useExportInstanceToken",0,function(){return(0,b.useMutation)({mutationFn:a=>n(a),onError:a=>{e.toast.error(a instanceof Error?a.message:"导出 Token 失败")}})},"useImportInstance",0,function(){let a=(0,d.useQueryClient)();return(0,b.useMutation)({mutationFn:a=>j(a),onSuccess:()=>{r(a),s(a),e.toast.success("Token 已导入")},onError:a=>{e.toast.error(a instanceof Error?a.message:"导入 Token 失败")}})},"useInstance",0,function(a){let{context:b,ready:d}=(0,p.useRuntimeContext)();return(0,c.useQuery)({queryKey:o.queryKeys.instance(b.dataScopeKey,a),queryFn:()=>h(a),enabled:d&&!!a,staleTime:3e4})},"useInstances",0,function(){let{context:a,ready:b}=(0,p.useRuntimeContext)();return(0,c.useQuery)({queryKey:o.queryKeys.instances(a.dataScopeKey),queryFn:g,enabled:b,staleTime:3e4})},"useSwitchInstance",0,function(){let a=(0,d.useQueryClient)(),{context:c}=(0,p.useRuntimeContext)();return(0,b.useMutation)({mutationFn:a=>m(a),onSuccess:({activeInstance:b})=>{r(a),s(a),e.toast.success("已切换当前项目")},onError:a=>{e.toast.error(a instanceof Error?a.message:"切换项目失败")}})},"useUpdateInstance",0,function(a){let c=(0,d.useQueryClient)();return(0,b.useMutation)({mutationFn:b=>k(a,b),onSuccess:()=>{q(c),c.invalidateQueries({queryKey:["instance"]}),s(c),e.toast.success("项目已更新")},onError:a=>{e.toast.error(a instanceof Error?a.message:"更新项目失败")}})}],947161),a.s(["isImportPayload",0,function(a){return"string"==typeof a.token}],128974)}];
|
|
1
|
+
module.exports=[419446,a=>{"use strict";var b=a.i(634020),c=a.i(971938),d=a.i(771071),e=a.i(71562),f=a.i(244401),g=a.i(680904);let h=g.z.string().trim().regex(/^[a-z0-9-]{1,32}$/,"名称需为 1-32 位小写字母、数字或连字符").refine(a=>"default"!==a,'名称 "default" 为保留字'),i=(a,b=512)=>g.z.string().trim().min(1,`请输入${a}`).max(b),j=(a=512)=>g.z.string().trim().max(a).optional().or(g.z.literal("")),k={message:"AccessKey ID 与 Secret 必须成对填写",path:["accessKeySecret"]},l={message:"请至少提供 API Key,或 AccessKey ID + Secret",path:["apiKey"]};function m(a){return a.refine(a=>!!a.accessKeyId==!!a.accessKeySecret,k).refine(a=>!!(a.accessKeyId&&a.accessKeySecret)||!!a.apiKey,l)}let n=g.z.object({name:h,accessKeyId:j(128),accessKeySecret:j(512),apiKey:j(512),otsEndpoint:i("OTS Endpoint",256),otsInstanceName:i("OTS 实例名",128),ossEndpoint:j(256),ossBucketName:j(128),region:j(64),activate:g.z.boolean().optional()});m(n),g.z.object({accessKeyId:j(128),accessKeySecret:j(512),apiKey:j(512),otsEndpoint:j(256),otsInstanceName:j(128),ossEndpoint:j(256),ossBucketName:j(128),region:j(64),activate:g.z.boolean().optional()}).refine(a=>{let b=!!(a.accessKeyId&&a.accessKeyId.length>0);return!!(a.accessKeySecret&&a.accessKeySecret.length>0)===b},{message:"AccessKey ID 与 Secret 必须成对更新,要么同时填写、要么同时留空",path:["accessKeySecret"]});let o=g.z.object({name:h,accessKeyId:j(128),accessKeySecret:j(512),apiKey:j(512),otsEndpoint:i("OTS Endpoint",256),otsInstanceName:i("OTS 实例名",128),ossEndpoint:j(256),ossBucketName:j(128),region:j(64),activate:g.z.boolean().optional()}).refine(a=>{let b=!!(a.accessKeyId&&a.accessKeyId.length>0);return!!(a.accessKeySecret&&a.accessKeySecret.length>0)===b},{message:"AccessKey ID 与 Secret 必须成对更新,要么同时填写、要么同时留空",path:["accessKeySecret"]}),p=g.z.object({token:g.z.string().trim().min(10,"Token 长度不足,无法解析").max(4096),name:h.optional(),activate:g.z.boolean().optional()});var q=a.i(776192),r=a.i(692942),s=a.i(172518),t=a.i(663525),u=a.i(16038),v=a.i(470535);let w=m(n.extend({otsEndpoint:g.z.string().trim().url("请输入合法的 OTS Endpoint URL"),ossEndpoint:g.z.string().trim().url("请输入合法的 OSS Endpoint URL").optional().or(g.z.literal(""))})),x=p.pick({token:!0}),y=[{value:"cn-beijing",label:"华北 2(北京)"},{value:"cn-hangzhou",label:"华东 1(杭州)"},{value:"cn-shanghai",label:"华东 2(上海)"},{value:"cn-shenzhen",label:"华南 1(深圳)"},{value:"__custom__",label:"其它(自定义)"}];a.s(["ConnectInstanceForm",0,function({mode:a,defaultValues:g,accessKeyIdPlaceholder:h,accessKeySecretPlaceholder:i,apiKeyPlaceholder:j,onSubmit:k,busy:l,lockName:m,submitLabel:n}){let[p,z]=(0,c.useState)("manual"),A="edit"===a,B=g?.region??"cn-hangzhou",C=(0,c.useMemo)(()=>y.some(a=>a.value===B),[B]),[D,E]=(0,c.useState)(C?B:"__custom__"),F=(0,c.useMemo)(()=>(0,d.zodResolver)(A?o:w),[A]),G=(0,e.useForm)({resolver:F,defaultValues:{name:g?.name??"",accessKeyId:A?"":g?.accessKeyId??"",accessKeySecret:A?"":g?.accessKeySecret??"",apiKey:A?"":g?.apiKey??"",otsEndpoint:g?.otsEndpoint??"",otsInstanceName:g?.otsInstanceName??"",ossEndpoint:g?.ossEndpoint??"",ossBucketName:g?.ossBucketName??"",region:B}}),H=(0,e.useForm)({resolver:(0,d.zodResolver)(x),defaultValues:{token:""}});async function I(a){let b=a.ossEndpoint?.trim()||void 0,c=a.ossBucketName?.trim()||void 0;b&&c&&(b=function(a,b){try{let c=new URL(a);if(c.hostname.startsWith(`${b}.`))return c.hostname=c.hostname.slice(b.length+1),c.toString().replace(/\/$/,"")}catch{}return a}(b,c));let d={...a,ossEndpoint:b,ossBucketName:c};await k(d)}async function J(a){let b={token:a.token.trim()};await k(b)}let K="create"===a;return(0,b.jsxs)(u.Tabs,{value:p,onValueChange:a=>z(a),className:"w-full",children:[K&&(0,b.jsxs)(u.TabsList,{className:"grid w-full grid-cols-2",children:[(0,b.jsx)(u.TabsTrigger,{value:"manual",children:"手动填写"}),(0,b.jsx)(u.TabsTrigger,{value:"token",children:"导入 Token"})]}),(0,b.jsx)(u.TabsContent,{value:"manual",className:"mt-4",children:(0,b.jsx)(r.Form,{...G,children:(0,b.jsxs)("form",{onSubmit:G.handleSubmit(I),className:"space-y-4",children:[(0,b.jsx)(r.FormField,{control:G.control,name:"name",render:({field:a})=>(0,b.jsxs)(r.FormItem,{children:[(0,b.jsx)(r.FormLabel,{children:"项目名称"}),(0,b.jsx)(r.FormControl,{children:(0,b.jsx)(s.Input,{...a,placeholder:"prod-main",disabled:m||l,autoComplete:"off"})}),(0,b.jsx)(r.FormDescription,{children:"仅用于本地区分,不会发送到服务端。"}),(0,b.jsx)(r.FormMessage,{})]})}),(0,b.jsx)(r.FormField,{control:G.control,name:"region",render:({field:a})=>(0,b.jsxs)(r.FormItem,{children:[(0,b.jsx)(r.FormLabel,{children:"Region"}),"__custom__"===D?(0,b.jsxs)("div",{className:"flex gap-2",children:[(0,b.jsx)(r.FormControl,{children:(0,b.jsx)(s.Input,{...a,placeholder:"cn-xxx",disabled:l})}),(0,b.jsx)(q.Button,{type:"button",variant:"outline",size:"sm",onClick:()=>{E("cn-hangzhou"),a.onChange("cn-hangzhou")},disabled:l,children:"使用预设"})]}):(0,b.jsxs)(t.Select,{value:D,onValueChange:b=>{E(b),"__custom__"!==b?a.onChange(b):a.onChange("")},disabled:l,children:[(0,b.jsx)(r.FormControl,{children:(0,b.jsx)(t.SelectTrigger,{children:(0,b.jsx)(t.SelectValue,{})})}),(0,b.jsx)(t.SelectContent,{children:y.map(a=>(0,b.jsx)(t.SelectItem,{value:a.value,children:a.label},a.value))})]}),(0,b.jsx)(r.FormMessage,{})]})}),(0,b.jsxs)("div",{className:"grid gap-4 sm:grid-cols-2",children:[(0,b.jsx)(r.FormField,{control:G.control,name:"accessKeyId",render:({field:a})=>(0,b.jsxs)(r.FormItem,{children:[(0,b.jsx)(r.FormLabel,{children:"AccessKey ID"}),(0,b.jsx)(r.FormControl,{children:(0,b.jsx)(s.Input,{...a,autoComplete:"off",disabled:l,placeholder:A&&h?`${h} \xb7 留空表示保留`:void 0})}),A&&(0,b.jsx)(r.FormDescription,{children:"AK 与 SK 必须成对更新,留空则保留现有凭证。"}),(0,b.jsx)(r.FormMessage,{})]})}),(0,b.jsx)(r.FormField,{control:G.control,name:"accessKeySecret",render:({field:a})=>(0,b.jsxs)(r.FormItem,{children:[(0,b.jsx)(r.FormLabel,{children:"AccessKey Secret"}),(0,b.jsx)(r.FormControl,{children:(0,b.jsx)(s.Input,{...a,type:"password",autoComplete:"new-password",disabled:l,placeholder:A&&i?`${i} \xb7 留空表示保留`:void 0})}),(0,b.jsx)(r.FormMessage,{})]})})]}),(0,b.jsx)(r.FormField,{control:G.control,name:"apiKey",render:({field:a})=>(0,b.jsxs)(r.FormItem,{children:[(0,b.jsx)(r.FormLabel,{children:"API Key(可选)"}),(0,b.jsx)(r.FormControl,{children:(0,b.jsx)(s.Input,{...a,type:"password",autoComplete:"new-password",disabled:l,placeholder:A&&j?`${j} \xb7 留空表示保留`:"sk-..."})}),(0,b.jsx)(r.FormDescription,{children:"可替代 AccessKey 作为数据面访问凭证;同时填写时 API Key 优先。 需 HTTPS 端点,且无法自动创建实例 / 使用 OSS 上传(那些仍需 AK/SK)。"}),(0,b.jsx)(r.FormMessage,{})]})}),(0,b.jsxs)("div",{className:"grid gap-4 sm:grid-cols-2",children:[(0,b.jsx)(r.FormField,{control:G.control,name:"otsEndpoint",render:({field:a})=>(0,b.jsxs)(r.FormItem,{children:[(0,b.jsx)(r.FormLabel,{children:"OTS Endpoint"}),(0,b.jsx)(r.FormControl,{children:(0,b.jsx)(s.Input,{...a,placeholder:"https://xxx.cn-hangzhou.ots.aliyuncs.com",disabled:l})}),(0,b.jsx)(r.FormMessage,{})]})}),(0,b.jsx)(r.FormField,{control:G.control,name:"otsInstanceName",render:({field:a})=>(0,b.jsxs)(r.FormItem,{children:[(0,b.jsx)(r.FormLabel,{children:"OTS 实例名"}),(0,b.jsx)(r.FormControl,{children:(0,b.jsx)(s.Input,{...a,disabled:l})}),(0,b.jsx)(r.FormMessage,{})]})})]}),(0,b.jsxs)("div",{className:"flex items-start gap-2 rounded-md border border-[hsl(var(--border))] bg-[hsl(var(--muted)/0.4)] px-3 py-2 text-xs text-[hsl(var(--muted-foreground))]",children:[(0,b.jsx)(f.Info,{className:"mt-0.5 h-3.5 w-3.5 shrink-0 text-[hsl(var(--primary))]"}),(0,b.jsx)("span",{children:"OSS 信息为可选项。若需上传文档到知识库,OSS Endpoint 与 Bucket 必填; 留空则项目只能用于查询与检索,文件上传功能将不可用。"})]}),(0,b.jsxs)("div",{className:"grid gap-4 sm:grid-cols-2",children:[(0,b.jsx)(r.FormField,{control:G.control,name:"ossEndpoint",render:({field:a})=>(0,b.jsxs)(r.FormItem,{children:[(0,b.jsx)(r.FormLabel,{children:"OSS Endpoint(可选)"}),(0,b.jsx)(r.FormControl,{children:(0,b.jsx)(s.Input,{...a,placeholder:"https://oss-cn-hangzhou.aliyuncs.com",disabled:l})}),(0,b.jsx)(r.FormMessage,{})]})}),(0,b.jsx)(r.FormField,{control:G.control,name:"ossBucketName",render:({field:a})=>(0,b.jsxs)(r.FormItem,{children:[(0,b.jsx)(r.FormLabel,{children:"OSS Bucket(可选)"}),(0,b.jsx)(r.FormControl,{children:(0,b.jsx)(s.Input,{...a,disabled:l})}),(0,b.jsx)(r.FormMessage,{})]})})]}),(0,b.jsx)("div",{className:"flex justify-end pt-2",children:(0,b.jsx)(q.Button,{type:"submit",disabled:l,children:l?"提交中...":n??("edit"===a?"保存":"创建项目")})})]})})}),K&&(0,b.jsx)(u.TabsContent,{value:"token",className:"mt-4",children:(0,b.jsx)(r.Form,{...H,children:(0,b.jsxs)("form",{onSubmit:H.handleSubmit(J),className:"space-y-4",children:[(0,b.jsx)(r.FormField,{control:H.control,name:"token",render:({field:a})=>(0,b.jsxs)(r.FormItem,{children:[(0,b.jsx)(r.FormLabel,{children:"项目 Token"}),(0,b.jsx)(r.FormControl,{children:(0,b.jsx)(v.Textarea,{...a,rows:5,placeholder:"粘贴从其他环境导出的项目 Token",disabled:l})}),(0,b.jsx)(r.FormDescription,{children:"Token 中已包含 AK/SK、Endpoint 等全部连接信息。"}),(0,b.jsx)(r.FormMessage,{})]})}),(0,b.jsx)("div",{className:"flex justify-end pt-2",children:(0,b.jsx)(q.Button,{type:"submit",disabled:l,children:l?"导入中...":"导入并连接"})})]})})})]})}],419446)},947161,128974,a=>{"use strict";var b=a.i(933596),c=a.i(983366),d=a.i(895487),e=a.i(263265),f=a.i(353141);async function g(){return(0,f.apiGet)("/api/v1/instances")}async function h(a){return(0,f.apiGet)(`/api/v1/instances/${encodeURIComponent(a)}`)}async function i(a){return(0,f.apiPost)("/api/v1/instances",a)}async function j(a){return(0,f.apiPost)("/api/v1/instances",a)}async function k(a,b){return(0,f.apiPut)(`/api/v1/instances/${encodeURIComponent(a)}`,b)}async function l(a){return(0,f.apiDelete)(`/api/v1/instances/${encodeURIComponent(a)}`)}async function m(a){return(0,f.apiPost)(`/api/v1/instances/${encodeURIComponent(a)}/use`)}async function n(a){return(0,f.apiGet)(`/api/v1/instances/${encodeURIComponent(a)}/token`)}var o=a.i(225377),p=a.i(739096);function q(a){(0,o.invalidateInstanceScopedQueries)(a)}function r(a){(0,o.resetInstanceScopedQueries)(a)}function s(a){a.invalidateQueries({queryKey:o.RUNTIME_CONTEXT_QUERY_KEY})}a.s(["useConnectInstance",0,function(){let a=(0,d.useQueryClient)();return(0,b.useMutation)({mutationFn:a=>i(a),onSuccess:()=>{r(a),s(a),e.toast.success("项目已创建")},onError:a=>{e.toast.error(a instanceof Error?a.message:"创建项目失败")}})},"useDeleteInstance",0,function(){let a=(0,d.useQueryClient)();return(0,b.useMutation)({mutationFn:a=>l(a),onSuccess:()=>{q(a),s(a),e.toast.success("项目已删除")},onError:a=>{e.toast.error(a instanceof Error?a.message:"删除项目失败")}})},"useExportInstanceToken",0,function(){return(0,b.useMutation)({mutationFn:a=>n(a),onError:a=>{e.toast.error(a instanceof Error?a.message:"导出 Token 失败")}})},"useImportInstance",0,function(){let a=(0,d.useQueryClient)();return(0,b.useMutation)({mutationFn:a=>j(a),onSuccess:()=>{r(a),s(a),e.toast.success("Token 已导入")},onError:a=>{e.toast.error(a instanceof Error?a.message:"导入 Token 失败")}})},"useInstance",0,function(a){let{context:b,ready:d}=(0,p.useRuntimeContext)();return(0,c.useQuery)({queryKey:o.queryKeys.instance(b.dataScopeKey,a),queryFn:()=>h(a),enabled:d&&!!a,staleTime:3e4})},"useInstances",0,function(){let{context:a,ready:b}=(0,p.useRuntimeContext)();return(0,c.useQuery)({queryKey:o.queryKeys.instances(a.dataScopeKey),queryFn:g,enabled:b,staleTime:3e4})},"useSwitchInstance",0,function(){let a=(0,d.useQueryClient)(),{context:c}=(0,p.useRuntimeContext)();return(0,b.useMutation)({mutationFn:a=>m(a),onSuccess:({activeInstance:b})=>{r(a),s(a),e.toast.success("已切换当前项目")},onError:a=>{e.toast.error(a instanceof Error?a.message:"切换项目失败")}})},"useUpdateInstance",0,function(a){let c=(0,d.useQueryClient)();return(0,b.useMutation)({mutationFn:b=>k(a,b),onSuccess:()=>{q(c),c.invalidateQueries({queryKey:["instance"]}),s(c),e.toast.success("项目已更新")},onError:a=>{e.toast.error(a instanceof Error?a.message:"更新项目失败")}})}],947161),a.s(["isImportPayload",0,function(a){return"string"==typeof a.token}],128974)}];
|
|
2
2
|
|
|
3
3
|
//# sourceMappingURL=dashboard_src_10dsqx~._.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(201927),f=a.i(907704),g=a.i(25825),h=a.i(1078),i=a.i(776192),j=a.i(604395),k=a.i(663525),l=a.i(223301),m=a.i(887617),n=a.i(310215),o=a.i(865271),p=a.i(149086),q=a.i(421347),r=a.i(225377),s=a.i(739096),t=a.i(908264),u=a.i(601170),v=a.i(71562),w=a.i(771071),x=a.i(680904),y=a.i(263265),z=a.i(655295),A=a.i(843836),B=a.i(172518),C=a.i(962491),D=a.i(470535),E=a.i(27692),F=a.i(692942),G=a.i(933596),H=a.i(895487);let I=x.z.object({appId:x.z.string().trim().min(1,"appId 必填"),tenantId:x.z.string().trim().optional(),agentId:x.z.string().trim().optional(),runId:x.z.string().trim().optional()}).refine(a=>Object.values(a).some(a=>a&&"*"!==a),{message:"至少指定一个非通配符字段"}),J=x.z.object({taskType:x.z.enum(["memory","skill","profile"]),scopes:x.z.array(I).min(1,"至少一个 scope"),applyMode:x.z.enum(["proposal","safe_auto"]),scopeOutputMode:x.z.enum(["preserve_scope","promote_scope"]).optional(),minTimestamp:x.z.string().optional(),maxTimestamp:x.z.string().optional(),maxSessions:x.z.string().optional(),maxMessages:x.z.string().optional(),maxMemories:x.z.string().optional(),instructions:x.z.string().optional(),clientToken:x.z.string().optional(),thresholdAdd:x.z.string().optional(),thresholdUpdate:x.z.string().optional(),thresholdMerge:x.z.string().optional()});function K(a){if(!a)return;let b=Number(a);if(Number.isFinite(b)&&Number.isInteger(b)&&!(b<=0))return b}function L(a){if(!a)return;let b=Number(a);if(Number.isFinite(b))return b}function M({memoryStoreName:a,initialScope:e,open:f,onOpenChange:h}){let j,l=(0,d.useRouter)(),m=(j=(0,H.useQueryClient)(),(0,G.useMutation)({mutationFn:b=>(0,q.createDreamTask)(a,b),onSuccess:()=>{j.invalidateQueries({queryKey:["memory"],predicate:b=>Array.isArray(b.queryKey)&&b.queryKey.includes("dream-tasks")&&b.queryKey.includes(a)})}})),n=(0,v.useForm)({resolver:(0,w.zodResolver)(J),defaultValues:{taskType:"memory",scopes:[{appId:e?.appId&&"*"!==e.appId?e.appId:"",tenantId:e?.tenantId&&"*"!==e.tenantId?e.tenantId:"",agentId:e?.agentId&&"*"!==e.agentId?e.agentId:"",runId:e?.runId&&"*"!==e.runId?e.runId:""}],applyMode:"proposal"}}),{fields:o,append:p,remove:r}=(0,v.useFieldArray)({control:n.control,name:"scopes"}),s=n.watch("taskType"),t="memory"===s,[u,x]=(0,c.useState)(!1),[I,Q]=(0,c.useState)(!1),R=async b=>{let c={},d=L(b.thresholdAdd),e=L(b.thresholdUpdate),f=L(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!==K(b.maxSessions)&&{maxSessions:K(b.maxSessions)},...void 0!==K(b.maxMessages)&&{maxMessages:K(b.maxMessages)},...void 0!==K(b.maxMemories)&&{maxMemories:K(b.maxMemories)},...b.instructions&&{instructions:b.instructions},...b.clientToken&&{clientToken:b.clientToken},...g&&Object.keys(c).length>0&&{confidenceThresholds:c}});y.toast.success({memory:"记忆整理任务已创建",skill:"技能抽取任务已创建",profile:"用户画像任务已创建"}[b.taskType]),h(!1),n.reset(),l.push(`/memory/${encodeURIComponent(a)}/dream/${encodeURIComponent(d.dreamId)}`)}catch(b){let a=b instanceof Error?b.message:"创建失败";y.toast.error(a)}};return(0,b.jsx)(A.Dialog,{open:f,onOpenChange:h,children:(0,b.jsxs)(A.DialogContent,{className:"max-w-2xl",children:[(0,b.jsxs)(A.DialogHeader,{children:[(0,b.jsx)(A.DialogTitle,{children:"新建 Dream 任务"}),(0,b.jsx)(A.DialogDescription,{children:"Dream 会读取所选 scopes 下的消息与已有记忆,让 LLM 进行分析处理。 记忆整理模式建议先用「建议模式」生成提案、人工审核后再应用。"})]}),(0,b.jsx)(F.Form,{...n,children:(0,b.jsxs)("form",{onSubmit:n.handleSubmit(R),className:"space-y-5",children:[(0,b.jsx)(F.FormField,{control:n.control,name:"taskType",render:({field:a})=>(0,b.jsxs)(F.FormItem,{children:[(0,b.jsx)(F.FormLabel,{children:"任务类型"}),(0,b.jsxs)(k.Select,{onValueChange:a.onChange,defaultValue:a.value,children:[(0,b.jsx)(F.FormControl,{children:(0,b.jsx)(k.SelectTrigger,{children:(0,b.jsx)(k.SelectValue,{})})}),(0,b.jsxs)(k.SelectContent,{children:[(0,b.jsx)(k.SelectItem,{value:"memory",children:"记忆整理 — 整合跨会话记忆"}),(0,b.jsx)(k.SelectItem,{value:"skill",children:"技能抽取 — 从对话中提取可复用技能"}),(0,b.jsx)(k.SelectItem,{value:"profile",children:"用户画像 — 整理用户画像"})]})]}),(0,b.jsx)(F.FormMessage,{})]})}),(0,b.jsxs)("section",{className:"space-y-3",children:[(0,b.jsxs)("div",{className:"flex items-center justify-between",children:[(0,b.jsx)(C.Label,{className:"text-sm font-medium",children:"Scope 范围"}),(0,b.jsxs)(i.Button,{type:"button",size:"sm",variant:"ghost",onClick:()=>p({appId:"",tenantId:"",agentId:"",runId:""}),children:[(0,b.jsx)(g.Plus,{className:"mr-1 h-3.5 w-3.5"}),"添加 scope"]})]}),(0,b.jsx)("div",{className:"space-y-3",children:o.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)(N,{name:`scopes.${c}.appId`,label:"应用",form:n,required:!0}),(0,b.jsx)(N,{name:`scopes.${c}.tenantId`,label:"租户",form:n}),(0,b.jsx)(N,{name:`scopes.${c}.agentId`,label:"智能体",form:n}),(0,b.jsx)(N,{name:`scopes.${c}.runId`,label:"会话",form:n}),o.length>1&&(0,b.jsx)("div",{className:"sm:col-span-4 flex justify-end",children:(0,b.jsxs)(i.Button,{type:"button",size:"sm",variant:"ghost",onClick:()=>r(c),className:"text-[hsl(var(--destructive))]",children:[(0,b.jsx)(z.Trash2,{className:"mr-1 h-3 w-3"}),"删除"]})})]},a.id))})]}),t&&(0,b.jsxs)("section",{className:"grid gap-3 sm:grid-cols-2",children:[(0,b.jsx)(F.FormField,{control:n.control,name:"applyMode",render:({field:a})=>(0,b.jsxs)(F.FormItem,{children:[(0,b.jsx)(F.FormLabel,{children:"应用模式"}),(0,b.jsxs)(k.Select,{onValueChange:a.onChange,defaultValue:a.value,children:[(0,b.jsx)(F.FormControl,{children:(0,b.jsx)(k.SelectTrigger,{children:(0,b.jsx)(k.SelectValue,{})})}),(0,b.jsxs)(k.SelectContent,{children:[(0,b.jsx)(k.SelectItem,{value:"proposal",children:"建议模式(生成后人工 apply,推荐)"}),(0,b.jsx)(k.SelectItem,{value:"safe_auto",children:"安全自动(仅 ADD/UPDATE 自动;DELETE/跨 scope 仍需人工)"})]})]}),(0,b.jsx)(F.FormMessage,{})]})}),(0,b.jsx)(F.FormField,{control:n.control,name:"scopeOutputMode",render:({field:a})=>(0,b.jsxs)(F.FormItem,{children:[(0,b.jsx)(F.FormLabel,{children:"Scope 输出模式"}),(0,b.jsxs)(k.Select,{onValueChange:a.onChange,value:a.value??"",children:[(0,b.jsx)(F.FormControl,{children:(0,b.jsx)(k.SelectTrigger,{children:(0,b.jsx)(k.SelectValue,{placeholder:"使用默认(preserve_scope)"})})}),(0,b.jsxs)(k.SelectContent,{children:[(0,b.jsx)(k.SelectItem,{value:"preserve_scope",children:"保留原 scope"}),(0,b.jsx)(k.SelectItem,{value:"promote_scope",children:"提升到父级 scope"})]})]}),(0,b.jsx)(F.FormMessage,{})]})})]}),(0,b.jsx)(F.FormField,{control:n.control,name:"instructions",render:({field:a})=>(0,b.jsxs)(F.FormItem,{children:[(0,b.jsx)(F.FormLabel,{children:"指令(可选)"}),(0,b.jsx)(F.FormControl,{children:(0,b.jsx)(D.Textarea,{rows:2,placeholder:{memory:"给 dream 规划器的额外指引",skill:"指导技能抽取的方向,例如重点关注的领域",profile:"用户画像整理的额外指引,例如需要关注的维度"}[s],...a})})]})}),t&&(0,b.jsxs)(E.Collapsible,{open:I,onOpenChange:Q,children:[(0,b.jsx)(E.CollapsibleTrigger,{asChild:!0,children:(0,b.jsxs)(i.Button,{type:"button",variant:"ghost",size:"sm",className:"px-0",children:[I?"▾":"▸"," 置信度阈值"]})}),(0,b.jsxs)(E.CollapsibleContent,{className:"grid gap-3 pt-2 sm:grid-cols-3",children:[(0,b.jsx)(O,{name:"thresholdAdd",label:"add",form:n,placeholder:"0.7"}),(0,b.jsx)(O,{name:"thresholdUpdate",label:"update",form:n,placeholder:"0.6"}),(0,b.jsx)(O,{name:"thresholdMerge",label:"merge",form:n,placeholder:"0.6"})]})]}),(0,b.jsxs)(E.Collapsible,{open:u,onOpenChange:x,children:[(0,b.jsx)(E.CollapsibleTrigger,{asChild:!0,children:(0,b.jsxs)(i.Button,{type:"button",variant:"ghost",size:"sm",className:"px-0",children:[u?"▾":"▸"," 高级"]})}),(0,b.jsxs)(E.CollapsibleContent,{className:"grid gap-3 pt-2 sm:grid-cols-2",children:[(0,b.jsx)(O,{name:"maxSessions",label:"最大会话数",form:n}),(0,b.jsx)(O,{name:"maxMessages",label:"最大消息数",form:n}),(0,b.jsx)(O,{name:"maxMemories",label:"最大记忆数",form:n}),(0,b.jsx)(P,{name:"minTimestamp",label:"最早时间",form:n}),(0,b.jsx)(P,{name:"maxTimestamp",label:"最晚时间",form:n}),(0,b.jsx)(F.FormField,{control:n.control,name:"clientToken",render:({field:a})=>(0,b.jsxs)(F.FormItem,{children:[(0,b.jsx)(F.FormLabel,{children:"幂等 token"}),(0,b.jsx)(F.FormControl,{children:(0,b.jsx)(B.Input,{placeholder:"可选",...a})})]})})]})]}),(0,b.jsxs)(A.DialogFooter,{children:[(0,b.jsx)(i.Button,{type:"button",variant:"outline",onClick:()=>h(!1),children:"取消"}),(0,b.jsx)(i.Button,{type:"submit",disabled:m.isPending,children:m.isPending?"创建中…":"创建任务"})]})]})})]})})}function N({name:a,label:c,form:d,required:e}){return(0,b.jsx)(F.FormField,{control:d.control,name:a,render:({field:a})=>(0,b.jsxs)(F.FormItem,{children:[(0,b.jsxs)(F.FormLabel,{className:"text-xs",children:[c,e&&(0,b.jsx)("span",{className:"ml-0.5 text-[hsl(var(--destructive))]",children:"*"})]}),(0,b.jsx)(F.FormControl,{children:(0,b.jsx)(B.Input,{className:"h-8 text-sm",...a,value:a.value??""})}),(0,b.jsx)(F.FormMessage,{})]})})}function O({name:a,label:c,form:d,placeholder:e}){return(0,b.jsx)(F.FormField,{control:d.control,name:a,render:({field:a})=>(0,b.jsxs)(F.FormItem,{children:[(0,b.jsx)(F.FormLabel,{className:"text-xs",children:c}),(0,b.jsx)(F.FormControl,{children:(0,b.jsx)(B.Input,{type:"number",className:"h-8 text-sm",placeholder:e,...a,value:"string"==typeof a.value?a.value:""})})]})})}function P({name:a,label:c,form:d}){return(0,b.jsx)(F.FormField,{control:d.control,name:a,render:({field:a})=>(0,b.jsxs)(F.FormItem,{children:[(0,b.jsx)(F.FormLabel,{className:"text-xs",children:c}),(0,b.jsx)(F.FormControl,{children:(0,b.jsx)(B.Input,{type:"datetime-local",className:"h-8 text-sm",...a,value:"string"==typeof a.value?a.value:""})})]})})}var Q=a.i(364565);let R=[{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:"已取消"}],S={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"},T={queued:"排队中",running:"运行中",planning:"规划中",applying:"应用中",completed:"已完成",completed_with_failures:"完成(含失败)",failed:"失败",cancelled:"已取消"},U={memory:"记忆整理",skill:"技能抽取",profile:"用户画像"},V={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))]"},W=new Set(["completed","completed_with_failures","failed","cancelled"]);function X({status:a}){let c=!W.has(a);return(0,b.jsxs)("span",{className:(0,Q.cn)("inline-flex items-center gap-1 rounded-full px-2.5 py-0.5 text-xs font-medium select-none whitespace-nowrap",S[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"})]}),T[a]??a]})}a.s(["default",0,function(){let a=decodeURIComponent((0,d.useParams)().store),v=(0,d.useRouter)(),w=(0,d.useSearchParams)().toString(),x=(0,c.useMemo)(()=>(0,t.buildMemoryScope)(new URLSearchParams(w)),[w]),[y,z]=(0,c.useState)("all"),[A,B]=(0,c.useState)(!1),[C,D]=(0,c.useState)(new Set),E=function(a,b,d){let{context:e,ready:f}=(0,s.useRuntimeContext)(),g=d?.limit??50,h={status:d?.status,minTimestamp:d?.minTimestamp,maxTimestamp:d?.maxTimestamp},i=(0,p.useInfiniteQuery)({queryKey:r.queryKeys.dreamTasks(e.dataScopeKey,a,b,void 0,g,h),queryFn:({pageParam:c})=>(0,q.listDreamTasks)(a,b,{limit:g,nextToken:"string"==typeof c?c:void 0,status:h.status,minTimestamp:h.minTimestamp,maxTimestamp:h.maxTimestamp}),getNextPageParam:a=>a.nextToken??void 0,initialPageParam:void 0,enabled:f&&!!a&&!!b?.appId}),j=(i.data?.pages?.length??0)>=25;(0,c.useEffect)(()=>{!i.hasNextPage||i.isFetchingNextPage||j||i.fetchNextPage()},[i.hasNextPage,i.isFetchingNextPage,j,i]);let k=(i.data?.pages??[]).flatMap(a=>a.items??[]),l=i.error&&"code"in i.error?i.error.code??null:null;return{tasks:k,isLoading:i.isLoading,isRefetching:i.isRefetching,isFetchingNextPage:i.isFetchingNextPage,hasNextPage:!!i.hasNextPage,truncated:!!i.hasNextPage&&j,fetchNextPage:()=>{i.hasNextPage&&!i.isFetchingNextPage&&i.fetchNextPage()},refetch:()=>{i.refetch()},error:i.error??null,errorCode:l}}(a,x,{limit:50,status:"all"===y?void 0:y});if("DREAMING_DISABLED"===E.errorCode)return(0,b.jsx)(u.MemoryDreamDisabled,{});let F=E.tasks,G=(0,t.groupDreamTasksByScope)(F),H=G.length>1,I=c=>{let d,e=new Date(c.createdAt).getTime();return(0,b.jsxs)(l.TableRow,{className:"cursor-pointer hover:bg-[hsl(var(--accent))]",onClick:()=>v.push(`/memory/${encodeURIComponent(a)}/dream/${encodeURIComponent(c.dreamId)}`),children:[(0,b.jsx)(l.TableCell,{className:"max-w-[220px] truncate font-mono text-xs",children:c.dreamId}),(0,b.jsx)(l.TableCell,{children:(d=c.taskType||"memory",(0,b.jsx)("span",{className:(0,Q.cn)("inline-flex rounded-full px-2 py-0.5 text-xs font-medium whitespace-nowrap",V[d]??"bg-muted text-muted-foreground"),children:U[d]??d}))}),(0,b.jsx)(l.TableCell,{children:(0,b.jsx)(X,{status:c.status})}),(0,b.jsx)(l.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)(l.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)(l.TableCell,{className:"text-xs text-muted-foreground",children:Number.isFinite(e)?(0,b.jsx)(o.RelativeTime,{timestamp:e}):c.createdAt})]},c.dreamId)};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)(k.Select,{value:y,onValueChange:z,children:[(0,b.jsx)(k.SelectTrigger,{className:"h-8 w-40 text-sm",children:(0,b.jsx)(k.SelectValue,{})}),(0,b.jsx)(k.SelectContent,{children:R.map(a=>(0,b.jsx)(k.SelectItem,{value:a.value,children:a.label},a.value))})]}),(0,b.jsx)(m.RefreshButton,{onClick:()=>E.refetch(),loading:E.isRefetching}),(0,b.jsxs)(i.Button,{size:"sm",onClick:()=>B(!0),children:[(0,b.jsx)(g.Plus,{className:"mr-1 h-3.5 w-3.5"}),"新建任务"]})]})]}),E.isLoading?(0,b.jsxs)("div",{className:"space-y-2",children:[(0,b.jsx)(j.Skeleton,{className:"h-10 w-full"}),(0,b.jsx)(j.Skeleton,{className:"h-10 w-full"}),(0,b.jsx)(j.Skeleton,{className:"h-10 w-full"})]}):0===F.length?(0,b.jsx)(n.EmptyState,{icon:h.Sparkles,title:"暂无 Dream 任务",description:"all"===y?"Dream 任务支持记忆整理、技能抽取、用户画像等功能。第一次使用时,先确保该 scope 下已经写入过几轮对话,再点右上角创建任务。":`当前过滤为「${R.find(a=>a.value===y)?.label??y}」状态,可切到「全部状态」看看`,action:(0,b.jsxs)(i.Button,{onClick:()=>B(!0),children:[(0,b.jsx)(g.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)(l.Table,{children:[(0,b.jsx)(l.TableHeader,{children:(0,b.jsxs)(l.TableRow,{children:[(0,b.jsx)(l.TableHead,{children:"Dream ID"}),(0,b.jsx)(l.TableHead,{children:"类型"}),(0,b.jsx)(l.TableHead,{children:"状态"}),(0,b.jsx)(l.TableHead,{children:"应用模式"}),(0,b.jsx)(l.TableHead,{className:"text-right",children:"产出"}),(0,b.jsx)(l.TableHead,{children:"创建时间"})]})}),(0,b.jsx)(l.TableBody,{children:H?G.map(a=>{let d=C.has(a.key);return(0,b.jsxs)(c.Fragment,{children:[(0,b.jsx)(l.TableRow,{className:"cursor-pointer select-none bg-muted/40 hover:bg-muted/60",onClick:()=>{var b;return b=a.key,void D(a=>{let c=new Set(a);return c.has(b)?c.delete(b):c.add(b),c})},children:(0,b.jsx)(l.TableCell,{colSpan:6,className:"py-2",children:(0,b.jsxs)("div",{className:"flex items-center gap-2",children:[d?(0,b.jsx)(f.ChevronRight,{className:"h-3.5 w-3.5 shrink-0 text-muted-foreground"}):(0,b.jsx)(e.ChevronDown,{className:"h-3.5 w-3.5 shrink-0 text-muted-foreground"}),(0,b.jsx)("span",{className:"break-all font-mono text-xs font-medium text-foreground",children:a.label}),(0,b.jsxs)("span",{className:"shrink-0 rounded-full bg-muted px-2 py-0.5 text-[11px] text-muted-foreground",children:[a.tasks.length," 个任务"]})]})})}),!d&&a.tasks.map(I)]},a.key)}):F.map(I)})]})}),E.isFetchingNextPage&&(0,b.jsx)("p",{className:"text-center text-xs text-muted-foreground",children:"正在加载更多任务…"}),E.truncated&&!E.isFetchingNextPage&&(0,b.jsxs)("div",{className:"flex items-center justify-center gap-2 text-xs text-muted-foreground",children:[(0,b.jsx)("span",{children:"任务较多,已先加载一部分"}),(0,b.jsx)(i.Button,{variant:"outline",size:"sm",onClick:()=>E.fetchNextPage(),children:"继续加载"})]}),(0,b.jsxs)("p",{className:"text-xs text-muted-foreground",children:["当前过滤 scope:",x&&[x.appId,x.tenantId,x.agentId,x.runId].filter(Boolean).join(" / ")||"-",H&&" · 已按 scope 分组,组内按创建时间倒序(新→旧)"]}),(0,b.jsx)(M,{memoryStoreName:a,initialScope:x,open:A,onOpenChange:B})]})}],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.
|
|
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
|