@tablestore/tablestore-agent-cli 0.4.0 → 0.4.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/dashboard-runtime/dashboard/.next/BUILD_ID +1 -1
- package/dist/dashboard-runtime/dashboard/.next/build-manifest.json +3 -3
- package/dist/dashboard-runtime/dashboard/.next/prerender-manifest.json +3 -3
- package/dist/dashboard-runtime/dashboard/.next/required-server-files.json +4 -4
- 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]/scope/page.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/scope/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/[store]/wiki/page.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/(dashboard)/memory/[store]/wiki/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.js.nft.json +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 +16 -16
- package/dist/dashboard-runtime/dashboard/.next/server/app/_not-found.segments/_full.segment.rsc +16 -16
- 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 +11 -11
- package/dist/dashboard-runtime/dashboard/.next/server/app/_not-found.segments/_not-found/__PAGE__.segment.rsc +4 -4
- 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/connectivity/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 +3 -3
- 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-kb-sync/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]/file-memory/[action]/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 +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 +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 +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/[store]/wikis/artifacts/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/wikis/ingest/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/wikis/page/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/wikis/pages/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/wikis/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/wikis/search/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/wikis/source/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/[store]/wikis/sources/route.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/api/v1/memory/stores/route.js +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 +15 -15
- 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 +15 -15
- 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 +11 -11
- 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.js.nft.json +1 -1
- 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 +18 -18
- package/dist/dashboard-runtime/dashboard/.next/server/app/onboarding.segments/_full.segment.rsc +18 -18
- 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 +11 -11
- 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.js.nft.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/app/page_client-reference-manifest.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/0p91_next_dist_esm_build_templates_app-route_0n~ec7s.js +11 -11
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/[root-of-the-server]__0-e5iv2._.js +3 -0
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/[root-of-the-server]__03j_ekh._.js +3 -0
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/[root-of-the-server]__07k_8vo._.js +3 -0
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/[root-of-the-server]__0esucs7._.js +3 -0
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/[root-of-the-server]__0z19yd0._.js +3 -0
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/[root-of-the-server]__07er-7t._.js +3 -0
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/[root-of-the-server]__09556l4._.js +3 -0
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0ejd~qu._.js +3 -0
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0hbevlv._.js +3 -0
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0xqm21n._.js +3 -0
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0-yhfok._.js +3 -0
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0.eh64w._.js +3 -0
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_06umrt-._.js +3 -0
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0a-deba._.js +3 -0
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0au8umj._.js +3 -0
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0f3_q1r._.js +3 -0
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0fz3kge._.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0gt9qp0._.js +3 -0
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0ih5--w._.js +3 -0
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0j4mfzx._.js +3 -0
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/{_06ofr7j._.js → _0j_44th._.js} +2 -2
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/{_06.3nzk._.js → _0mn4dgd._.js} +2 -2
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/{_0d_nd-j._.js → _0nc~.w2._.js} +2 -2
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0p-bup8._.js +3 -0
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0psdvqq._.js +3 -0
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0rd1b-.._.js +3 -0
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0t_-u16._.js +3 -0
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0u0~-~-._.js +3 -0
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0vw3mzw._.js +3 -0
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0ww5s91._.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0xm2tp8._.js +3 -0
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0xutx8t._.js +3 -0
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_0ggq95f._.js +3 -0
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_0x60pxf._.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_0xaihln._.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_app_(dashboard)_api-keys_page_tsx_0lb6fu7._.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]_scope_page_tsx_01rq2zq._.js +3 -0
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_app_(dashboard)_memory_[store]_search_page_tsx_0rj3dkc._.js +3 -0
- 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_components_memory_memory-files-browser_tsx_0o2~94-._.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_i18n_i18n-context_tsx_0c39ewr._.js +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/node_modules__pnpm_03py6n-._.js +3 -0
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/node_modules__pnpm_08hzj0f._.js +3 -0
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/node_modules__pnpm_0_mks~s._.js +3 -0
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/node_modules__pnpm_0xbb09m._.js +3 -0
- 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-b36b4si6az5.js +1 -0
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0-q4fucd6l5ip.js +1 -0
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/{14t.r5~ls3k0x.js → 03qrjs4w.7yz3.js} +1 -1
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/04uxooijjqs-9.js +1 -0
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/08tm8srceyz1j.js +1 -0
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/08tpejw1f.2jd.js +1 -0
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0b_~fcwy9vo2r.js +1 -0
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0crw5ciecbvir.js +1 -0
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0cy7y~ef_6m-s.js +1 -0
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0dl5t6e508o8k.js +1 -0
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0expqv.~8a3wr.js +1 -0
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0gdmaffoezvcu.js +1 -0
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0hoybc7spk4vg.js +1 -0
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/{0k6m5~gmu0f8w.js → 0k9my4lhyvwbd.js} +1 -1
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0lfx3ykqc9uiy.js +1 -0
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0m2j5ne9j7dft.js +1 -0
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0m50djlkcegw9.js +1 -0
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0mg.g5g33nh.~.js +1 -0
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0mit8g2.vh7a9.js +1 -0
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0o9quk2z~1ez0.js +1 -0
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0o~zjik9-6a1f.js +1 -0
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0p6zd_ss6.14_.js +1 -0
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0qccdw9ussvne.js +1 -0
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/{1204oli3aouy7.js → 0teq2sa-33s3g.js} +1 -1
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0upl.e~taktf9.js +1 -0
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0v1ulq51wmrto.js +5 -0
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0v5mmaebktnw1.css +1 -0
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0vp-dv9_z334e.js +1 -0
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0w9eqc5ya-oai.js +1 -0
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0x0ppjv_4yap7.js +1 -0
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0xbqtv-jcph-2.js +1 -0
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0~m6ml547qzpo.js +1 -0
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/10s~90qej98.b.js +1 -0
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/12vri~chu44bu.js +9 -0
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/13jqvu~hww3b4.js +1 -0
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/{0idn9fvygbi9d.js → 13wh4v_j6tlns.js} +1 -1
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/16.18mrzg-4wl.js +1 -0
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/162doi8c0o5ot.js +1 -0
- package/dist/dashboard-runtime/dashboard/server.js +1 -1
- package/dist/dashboard-runtime/dashboard/src/app/(dashboard)/memory/[store]/dream/[dreamId]/page.tsx +6 -1
- package/dist/dashboard-runtime/dashboard/src/app/(dashboard)/memory/[store]/dream/page.tsx +3 -2
- package/dist/dashboard-runtime/dashboard/src/app/(dashboard)/memory/[store]/layout.tsx +5 -2
- package/dist/dashboard-runtime/dashboard/src/app/(dashboard)/memory/[store]/scope/page.tsx +24 -16
- package/dist/dashboard-runtime/dashboard/src/app/(dashboard)/memory/[store]/search/page.tsx +77 -21
- package/dist/dashboard-runtime/dashboard/src/app/(dashboard)/memory/[store]/settings/page.tsx +18 -2
- package/dist/dashboard-runtime/dashboard/src/app/(dashboard)/memory/[store]/units/page.tsx +89 -47
- package/dist/dashboard-runtime/dashboard/src/app/api/v1/llm/chat/memory-retrieval.ts +72 -4
- package/dist/dashboard-runtime/dashboard/src/app/api/v1/memory/stores/[store]/route.ts +19 -2
- package/dist/dashboard-runtime/dashboard/src/app/api/v1/memory/stores/[store]/scopes/route.ts +123 -8
- package/dist/dashboard-runtime/dashboard/src/app/api/v1/memory/stores/[store]/search/route.ts +21 -8
- package/dist/dashboard-runtime/dashboard/src/app/api/v1/memory/stores/route.ts +11 -4
- package/dist/dashboard-runtime/dashboard/src/components/chat/chat-config-context.tsx +2 -5
- package/dist/dashboard-runtime/dashboard/src/components/chat/wiki-bind-section.tsx +2 -4
- package/dist/dashboard-runtime/dashboard/src/components/layout/language-toggle.tsx +19 -16
- package/dist/dashboard-runtime/dashboard/src/components/layout/sidebar-mobile.tsx +1 -1
- package/dist/dashboard-runtime/dashboard/src/components/memory/file-details-panel.tsx +32 -10
- package/dist/dashboard-runtime/dashboard/src/components/memory/file-mutation-dialogs.tsx +14 -2
- package/dist/dashboard-runtime/dashboard/src/components/memory/memory-add-dialog.tsx +21 -3
- package/dist/dashboard-runtime/dashboard/src/components/memory/memory-create-form.tsx +50 -38
- package/dist/dashboard-runtime/dashboard/src/components/memory/memory-files-browser.tsx +46 -10
- package/dist/dashboard-runtime/dashboard/src/components/memory/memory-requests-table.tsx +7 -6
- package/dist/dashboard-runtime/dashboard/src/components/memory/memory-scope-bar.tsx +13 -4
- package/dist/dashboard-runtime/dashboard/src/components/memory/memory-search-form.tsx +384 -70
- package/dist/dashboard-runtime/dashboard/src/components/memory/memory-search-results.tsx +238 -57
- package/dist/dashboard-runtime/dashboard/src/components/memory/memory-settings-form.tsx +88 -1
- package/dist/dashboard-runtime/dashboard/src/components/memory/memory-store-card.tsx +4 -1
- package/dist/dashboard-runtime/dashboard/src/components/memory/memory-tasks-table.tsx +3 -2
- package/dist/dashboard-runtime/dashboard/src/components/memory/memory-unit-detail-panel.tsx +19 -4
- package/dist/dashboard-runtime/dashboard/src/components/memory/memory-unit-table.tsx +8 -5
- package/dist/dashboard-runtime/dashboard/src/components/memory/scope-directory-explorer.tsx +384 -0
- package/dist/dashboard-runtime/dashboard/src/components/memory/scope-filter-builder.tsx +393 -0
- package/dist/dashboard-runtime/dashboard/src/components/memory/scope-workspace.tsx +6 -2
- package/dist/dashboard-runtime/dashboard/src/components/shared/copyable-id.tsx +69 -0
- package/dist/dashboard-runtime/dashboard/src/hooks/use-chat-history.ts +2 -3
- package/dist/dashboard-runtime/dashboard/src/i18n/locales/en.ts +121 -14
- package/dist/dashboard-runtime/dashboard/src/i18n/locales/zh.ts +116 -12
- package/dist/dashboard-runtime/dashboard/src/lib/memory-storage-mode.ts +140 -33
- package/dist/dashboard-runtime/dashboard/src/lib/memory-units-view.ts +9 -0
- package/dist/dashboard-runtime/dashboard/src/lib/memory.ts +2 -7
- package/dist/dashboard-runtime/dashboard/src/lib/query-keys.ts +13 -0
- package/dist/dashboard-runtime/dashboard/src/lib/scope-directory.ts +97 -0
- package/dist/dashboard-runtime/dashboard/src/lib/server/memory-store-contract.ts +41 -0
- package/dist/dashboard-runtime/dashboard/src/lib/server/scope-filter-validation.ts +186 -0
- package/dist/dashboard-runtime/dashboard/src/schemas/llm-chat.ts +5 -2
- package/dist/dashboard-runtime/dashboard/src/services/memory.ts +16 -6
- package/dist/dashboard-runtime/dashboard/src/types/memory.ts +95 -4
- package/dist/dashboard-runtime/node_modules/@img/{sharp-libvips-darwin-arm64 → sharp-libvips-linux-x64}/README.md +2 -2
- package/dist/dashboard-runtime/node_modules/@img/{sharp-libvips-darwin-arm64 → sharp-libvips-linux-x64}/lib/glib-2.0/include/glibconfig.h +9 -8
- package/dist/dashboard-runtime/node_modules/@img/{sharp-libvips-darwin-arm64/lib/libvips-cpp.8.17.3.dylib → sharp-libvips-linux-x64/lib/libvips-cpp.so.8.17.3} +0 -0
- package/dist/dashboard-runtime/node_modules/@img/{sharp-libvips-darwin-arm64 → sharp-libvips-linux-x64}/package.json +11 -5
- package/dist/dashboard-runtime/node_modules/@img/sharp-linux-x64/lib/sharp-linux-x64.node +0 -0
- package/dist/dashboard-runtime/node_modules/@img/{sharp-darwin-arm64 → sharp-linux-x64}/package.json +13 -7
- package/dist/dashboard-runtime/node_modules/@tablestore/tablestore-agent-sdk/dist/tsconfig.tsbuildinfo +1 -1
- package/dist/node_modules/@tablestore/tablestore-agent-sdk/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +1 -1
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/[root-of-the-server]__0is6qso._.js +0 -3
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/[root-of-the-server]__0q9fgt6._.js +0 -3
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/[root-of-the-server]__0w_ig2a._.js +0 -3
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/[root-of-the-server]__0zmo~nd._.js +0 -3
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/[root-of-the-server]__13g_f9w._.js +0 -3
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/[root-of-the-server]__05kcz99._.js +0 -3
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/[root-of-the-server]__06l7w~r._.js +0 -3
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/[root-of-the-server]__07fsbff._.js +0 -3
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0_6myqa._.js +0 -3
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/[root-of-the-server]__0d-z.x1._.js +0 -3
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_00.la1c._.js +0 -3
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_01r6jx1._.js +0 -3
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_04rasxw._.js +0 -3
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_05__-74._.js +0 -3
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_05wwgdw._.js +0 -3
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0f.xs7l._.js +0 -3
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0jt60z2._.js +0 -3
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0k7q0ug._.js +0 -3
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0kaclzw._.js +0 -3
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0lstkpb._.js +0 -3
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0qw41co._.js +0 -3
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0vfgz-v._.js +0 -3
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_0y4mxf8._.js +0 -3
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/_119lxvo._.js +0 -3
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_079nj-_._.js +0 -3
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/dashboard_src_0bhjp9s._.js +0 -3
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/node_modules__pnpm_0..ymrl._.js +0 -3
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/node_modules__pnpm_00arje5._.js +0 -3
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/node_modules__pnpm_08h.f_8._.js +0 -3
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/node_modules__pnpm_0pf30rh._.js +0 -3
- package/dist/dashboard-runtime/dashboard/.next/server/chunks/ssr/node_modules__pnpm_12_d6fg._.js +0 -3
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0-88a30l.a1sg.js +0 -1
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/01nixb3ddw4hy.js +0 -1
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/01u9hj_9~5-vg.js +0 -1
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/02q3tpry1ajx9.js +0 -1
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/057-rg6~0wki8.css +0 -1
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/05d8-45s941bx.js +0 -1
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/07q8af71w17xl.js +0 -1
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/07v6llp0fv6iq.js +0 -1
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0a9.rr50h5ypa.js +0 -1
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0axnv6wy1_hr7.js +0 -1
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0bbcwyy.xvpd0.js +0 -1
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0cfrd_r4jr_ip.js +0 -9
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0dpj.6wcf.qn8.js +0 -1
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0gt8u.o_c_nix.js +0 -1
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0hh2728tmgrdk.js +0 -1
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0jjiw-agnutux.js +0 -1
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0nw7q~w~vg.-y.js +0 -1
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0o-j8g9gp_c1r.js +0 -1
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0pm6vv5wntle..js +0 -1
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0qr499bd44k.g.js +0 -1
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0sx_fx5r7nq4b.js +0 -1
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0tbu6y0a22ok8.js +0 -1
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0u6c8q4k~6aiy.js +0 -1
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0u7fh6be6noif.js +0 -1
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0wcf_hdt9arma.js +0 -5
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0xash~4j8pl87.js +0 -1
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0xi6y8g4l~vzr.js +0 -1
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0y45-~ia9sqr0.js +0 -1
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/0yvc~t7p88wsf.js +0 -1
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/10684vn7g6wln.js +0 -1
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/14rpr3z1.lmgj.js +0 -1
- package/dist/dashboard-runtime/dashboard/.next/static/chunks/15043qe~kvq-v.js +0 -1
- package/dist/dashboard-runtime/dashboard/tsconfig.tsbuildinfo +0 -1
- package/dist/dashboard-runtime/node_modules/@img/sharp-darwin-arm64/lib/sharp-darwin-arm64.node +0 -0
- /package/dist/dashboard-runtime/dashboard/.next/static/{bKUtNfKb47TOc1cpUk74A → mCNgeSYc3Dx3KiZXWf-5A}/_buildManifest.js +0 -0
- /package/dist/dashboard-runtime/dashboard/.next/static/{bKUtNfKb47TOc1cpUk74A → mCNgeSYc3Dx3KiZXWf-5A}/_clientMiddlewareManifest.js +0 -0
- /package/dist/dashboard-runtime/dashboard/.next/static/{bKUtNfKb47TOc1cpUk74A → mCNgeSYc3Dx3KiZXWf-5A}/_ssgManifest.js +0 -0
- /package/dist/dashboard-runtime/node_modules/@img/{sharp-libvips-darwin-arm64 → sharp-libvips-linux-x64}/lib/index.js +0 -0
- /package/dist/dashboard-runtime/node_modules/@img/{sharp-libvips-darwin-arm64 → sharp-libvips-linux-x64}/versions.json +0 -0
|
@@ -1,7 +1,12 @@
|
|
|
1
1
|
import type { TranslateFn } from "@/i18n/i18n-context";
|
|
2
2
|
import { newId } from "@/lib/random-id";
|
|
3
3
|
|
|
4
|
-
|
|
4
|
+
/**
|
|
5
|
+
* `managed-file` is a console capability label for the current
|
|
6
|
+
* messages -> [file] contract. It is never sent as the legacy storageMode
|
|
7
|
+
* wire field.
|
|
8
|
+
*/
|
|
9
|
+
export type StorageMode = "ots" | "managed-file" | "file+ots" | "filemem";
|
|
5
10
|
export type MemoryInputType = "short-term" | "file";
|
|
6
11
|
export type MemoryStorageStructure = "structured" | "file";
|
|
7
12
|
export type MemoryDetailSegment =
|
|
@@ -23,6 +28,17 @@ export interface MemoryStorageSelection {
|
|
|
23
28
|
storageStructures: MemoryStorageStructure[];
|
|
24
29
|
}
|
|
25
30
|
|
|
31
|
+
export interface MemoryStoreTypeContract {
|
|
32
|
+
inputType: "messages" | "file";
|
|
33
|
+
outputTypes: MemoryStorageStructure[];
|
|
34
|
+
}
|
|
35
|
+
|
|
36
|
+
export interface MemoryStoreTypeSource {
|
|
37
|
+
inputType?: "messages" | "file";
|
|
38
|
+
outputTypes?: MemoryStorageStructure[];
|
|
39
|
+
storageMode?: string | null;
|
|
40
|
+
}
|
|
41
|
+
|
|
26
42
|
export const FILEMEM_DEFAULT_RUN_ID = "__default__";
|
|
27
43
|
|
|
28
44
|
function createRandomRunId(): string {
|
|
@@ -38,11 +54,19 @@ export function normalizeMemoryRunId(
|
|
|
38
54
|
return !runId || runId === FILEMEM_DEFAULT_RUN_ID ? createRunId() : runId;
|
|
39
55
|
}
|
|
40
56
|
|
|
41
|
-
export const STORAGE_MODE_VALUES
|
|
57
|
+
export const STORAGE_MODE_VALUES = [
|
|
42
58
|
"ots",
|
|
59
|
+
"managed-file",
|
|
43
60
|
"file+ots",
|
|
44
61
|
"filemem",
|
|
45
|
-
];
|
|
62
|
+
] as const satisfies readonly StorageMode[];
|
|
63
|
+
|
|
64
|
+
export function isKnownStorageMode(value: unknown): value is StorageMode {
|
|
65
|
+
return (
|
|
66
|
+
typeof value === "string" &&
|
|
67
|
+
(STORAGE_MODE_VALUES as readonly string[]).includes(value)
|
|
68
|
+
);
|
|
69
|
+
}
|
|
46
70
|
|
|
47
71
|
const STRUCTURED_DETAIL_SEGMENTS: MemoryDetailSegment[] = [
|
|
48
72
|
"scope",
|
|
@@ -56,7 +80,18 @@ const STRUCTURED_DETAIL_SEGMENTS: MemoryDetailSegment[] = [
|
|
|
56
80
|
"settings",
|
|
57
81
|
];
|
|
58
82
|
const FILE_DETAIL_SEGMENTS: MemoryDetailSegment[] = [
|
|
83
|
+
"scope",
|
|
84
|
+
"units",
|
|
85
|
+
"wiki",
|
|
86
|
+
"settings",
|
|
87
|
+
];
|
|
88
|
+
const MANAGED_FILE_DETAIL_SEGMENTS: MemoryDetailSegment[] = [
|
|
89
|
+
"scope",
|
|
59
90
|
"units",
|
|
91
|
+
"search",
|
|
92
|
+
"messages",
|
|
93
|
+
"tasks",
|
|
94
|
+
"requests",
|
|
60
95
|
"wiki",
|
|
61
96
|
"settings",
|
|
62
97
|
];
|
|
@@ -67,7 +102,7 @@ const STRUCTURED_CARD_SHORTCUTS: MemoryCardShortcut[] = [
|
|
|
67
102
|
"consolidate",
|
|
68
103
|
];
|
|
69
104
|
const FILE_CARD_SHORTCUTS: MemoryCardShortcut[] = ["files"];
|
|
70
|
-
const
|
|
105
|
+
const SEARCHABLE_CARD_ACTIONS: MemoryCardAction[] = [
|
|
71
106
|
"units",
|
|
72
107
|
"search",
|
|
73
108
|
"settings",
|
|
@@ -84,6 +119,7 @@ export function parseKnownStorageMode(
|
|
|
84
119
|
value: string | undefined | null,
|
|
85
120
|
): StorageMode | null {
|
|
86
121
|
if (value === "ots") return "ots";
|
|
122
|
+
if (value === "managed-file") return "managed-file";
|
|
87
123
|
if (value === "file+ots" || value === "oss+ots") return "file+ots";
|
|
88
124
|
if (value === "filemem") return "filemem";
|
|
89
125
|
return null;
|
|
@@ -111,6 +147,23 @@ export function toggleMemoryFileStorage(
|
|
|
111
147
|
};
|
|
112
148
|
}
|
|
113
149
|
|
|
150
|
+
export function toggleMemoryStructuredStorage(
|
|
151
|
+
selection: MemoryStorageSelection,
|
|
152
|
+
): MemoryStorageSelection {
|
|
153
|
+
if (selection.inputType === "file") {
|
|
154
|
+
return memoryStorageSelectionForInput("file");
|
|
155
|
+
}
|
|
156
|
+
if (selection.storageStructures.includes("structured")) {
|
|
157
|
+
return selection.storageStructures.includes("file")
|
|
158
|
+
? { inputType: "short-term", storageStructures: ["file"] }
|
|
159
|
+
: selection;
|
|
160
|
+
}
|
|
161
|
+
return {
|
|
162
|
+
inputType: "short-term",
|
|
163
|
+
storageStructures: ["structured", "file"],
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
|
|
114
167
|
export function storageSelectionToMode(
|
|
115
168
|
selection: MemoryStorageSelection,
|
|
116
169
|
): StorageMode {
|
|
@@ -128,19 +181,39 @@ export function storageSelectionToMode(
|
|
|
128
181
|
if (
|
|
129
182
|
!hasDuplicates &&
|
|
130
183
|
selection.inputType === "short-term" &&
|
|
131
|
-
structures.
|
|
184
|
+
structures.size > 0
|
|
132
185
|
) {
|
|
133
|
-
if (structures.size === 1) return "ots";
|
|
186
|
+
if (structures.size === 1 && structures.has("structured")) return "ots";
|
|
187
|
+
if (structures.size === 1 && structures.has("file")) return "managed-file";
|
|
134
188
|
if (structures.size === 2 && structures.has("file")) return "file+ots";
|
|
135
189
|
}
|
|
136
190
|
throw new Error("Invalid memory input and storage structure combination");
|
|
137
191
|
}
|
|
138
192
|
|
|
193
|
+
/**
|
|
194
|
+
* Convert the console selection to the current server contract. New stores
|
|
195
|
+
* must use inputType/outputTypes instead of the legacy storageMode alias so a
|
|
196
|
+
* messages -> file-only store is not collapsed into one of the old modes.
|
|
197
|
+
*/
|
|
198
|
+
export function storageSelectionToStoreType(
|
|
199
|
+
selection: MemoryStorageSelection,
|
|
200
|
+
): MemoryStoreTypeContract {
|
|
201
|
+
// Reuse the strict combination validation above before translating labels.
|
|
202
|
+
storageSelectionToMode(selection);
|
|
203
|
+
return {
|
|
204
|
+
inputType: selection.inputType === "short-term" ? "messages" : "file",
|
|
205
|
+
outputTypes: [...selection.storageStructures],
|
|
206
|
+
};
|
|
207
|
+
}
|
|
208
|
+
|
|
139
209
|
export function storageModeToSelection(
|
|
140
210
|
value: string | undefined | null,
|
|
141
211
|
): MemoryStorageSelection {
|
|
142
212
|
const mode = normalizeStorageMode(value);
|
|
143
213
|
if (mode === "filemem") return memoryStorageSelectionForInput("file");
|
|
214
|
+
if (mode === "managed-file") {
|
|
215
|
+
return { inputType: "short-term", storageStructures: ["file"] };
|
|
216
|
+
}
|
|
144
217
|
if (mode === "file+ots") {
|
|
145
218
|
return {
|
|
146
219
|
inputType: "short-term",
|
|
@@ -150,25 +223,47 @@ export function storageModeToSelection(
|
|
|
150
223
|
return memoryStorageSelectionForInput("short-term");
|
|
151
224
|
}
|
|
152
225
|
|
|
226
|
+
export function resolveMemoryStoreTypeContract(
|
|
227
|
+
store: MemoryStoreTypeSource,
|
|
228
|
+
): MemoryStoreTypeContract {
|
|
229
|
+
const fallback = storageSelectionToStoreType(
|
|
230
|
+
storageModeToSelection(store.storageMode),
|
|
231
|
+
);
|
|
232
|
+
return {
|
|
233
|
+
inputType: store.inputType ?? fallback.inputType,
|
|
234
|
+
outputTypes:
|
|
235
|
+
store.outputTypes && store.outputTypes.length > 0
|
|
236
|
+
? [...store.outputTypes]
|
|
237
|
+
: fallback.outputTypes,
|
|
238
|
+
};
|
|
239
|
+
}
|
|
240
|
+
|
|
153
241
|
export function storageModeCapabilities(value: string | undefined | null) {
|
|
154
242
|
const mode = normalizeStorageMode(value);
|
|
155
|
-
const structured = mode
|
|
243
|
+
const structured = mode === "ots" || mode === "file+ots";
|
|
244
|
+
const acceptsMessages = mode !== "filemem";
|
|
245
|
+
let detailSegments = FILE_DETAIL_SEGMENTS;
|
|
246
|
+
if (mode === "managed-file") {
|
|
247
|
+
detailSegments = MANAGED_FILE_DETAIL_SEGMENTS;
|
|
248
|
+
} else if (structured) {
|
|
249
|
+
detailSegments = STRUCTURED_DETAIL_SEGMENTS;
|
|
250
|
+
}
|
|
156
251
|
return {
|
|
157
252
|
mode,
|
|
158
|
-
files: mode
|
|
253
|
+
files: mode === "managed-file" || mode === "file+ots" || mode === "filemem",
|
|
159
254
|
structured,
|
|
160
255
|
writableFiles: mode === "filemem",
|
|
161
256
|
forceLocalRetrieval: mode === "filemem",
|
|
162
257
|
structuredAutoSave: structured,
|
|
163
258
|
supportsExtraction: structured,
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
],
|
|
259
|
+
acceptsMessages,
|
|
260
|
+
discoverableScopes: acceptsMessages,
|
|
261
|
+
detailSegments: [...detailSegments],
|
|
167
262
|
cardShortcuts: [
|
|
168
263
|
...(structured ? STRUCTURED_CARD_SHORTCUTS : FILE_CARD_SHORTCUTS),
|
|
169
264
|
],
|
|
170
265
|
cardActions: [
|
|
171
|
-
...(
|
|
266
|
+
...(mode === "filemem" ? FILE_CARD_ACTIONS : SEARCHABLE_CARD_ACTIONS),
|
|
172
267
|
],
|
|
173
268
|
} as const;
|
|
174
269
|
}
|
|
@@ -199,15 +294,19 @@ export function storageModeLabel(
|
|
|
199
294
|
): string {
|
|
200
295
|
const mode = normalizeStorageMode(value);
|
|
201
296
|
if (t) {
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
)
|
|
297
|
+
if (mode === "filemem") {
|
|
298
|
+
return t("memory.storageMode.writableFileLabel");
|
|
299
|
+
}
|
|
300
|
+
if (mode === "managed-file") {
|
|
301
|
+
return t("memory.storageMode.managedFileLabel");
|
|
302
|
+
}
|
|
303
|
+
if (mode === "file+ots") {
|
|
304
|
+
return t("memory.storageMode.projectedFileLabel");
|
|
305
|
+
}
|
|
306
|
+
return t("memory.storageMode.apiOnlyLabel");
|
|
209
307
|
}
|
|
210
308
|
if (mode === "filemem") return "Writable File Memory";
|
|
309
|
+
if (mode === "managed-file") return "Managed File Memory";
|
|
211
310
|
if (mode === "file+ots") return "Read-only File Projection";
|
|
212
311
|
return "API-only Memory";
|
|
213
312
|
}
|
|
@@ -216,14 +315,16 @@ export function resolveRetrievalMode(
|
|
|
216
315
|
mode: "search" | "local" | undefined,
|
|
217
316
|
storageMode: string | boolean | undefined | null,
|
|
218
317
|
): "search" | "local" {
|
|
219
|
-
|
|
220
|
-
|
|
221
|
-
|
|
222
|
-
|
|
223
|
-
|
|
224
|
-
|
|
318
|
+
let resolvedStorage: StorageMode;
|
|
319
|
+
if (typeof storageMode === "boolean") {
|
|
320
|
+
resolvedStorage = storageMode ? "file+ots" : "ots";
|
|
321
|
+
} else {
|
|
322
|
+
resolvedStorage = normalizeStorageMode(storageMode);
|
|
323
|
+
}
|
|
225
324
|
if (resolvedStorage === "filemem") return "local";
|
|
226
|
-
if (resolvedStorage === "ots"
|
|
325
|
+
if (resolvedStorage === "ots" || resolvedStorage === "managed-file") {
|
|
326
|
+
return "search";
|
|
327
|
+
}
|
|
227
328
|
return mode === "local" ? "local" : "search";
|
|
228
329
|
}
|
|
229
330
|
|
|
@@ -233,17 +334,23 @@ export function storageModeDescription(
|
|
|
233
334
|
): string {
|
|
234
335
|
const mode = normalizeStorageMode(value);
|
|
235
336
|
if (t) {
|
|
236
|
-
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
|
|
240
|
-
|
|
241
|
-
|
|
242
|
-
)
|
|
337
|
+
if (mode === "filemem") {
|
|
338
|
+
return t("memory.storageMode.writableFileDescription");
|
|
339
|
+
}
|
|
340
|
+
if (mode === "managed-file") {
|
|
341
|
+
return t("memory.storageMode.managedFileDescription");
|
|
342
|
+
}
|
|
343
|
+
if (mode === "file+ots") {
|
|
344
|
+
return t("memory.storageMode.projectedFileDescription");
|
|
345
|
+
}
|
|
346
|
+
return t("memory.storageMode.apiOnlyDescription");
|
|
243
347
|
}
|
|
244
348
|
if (mode === "filemem") {
|
|
245
349
|
return "Writable file memory with JSON API CRUD, version history, and local lexical retrieval.";
|
|
246
350
|
}
|
|
351
|
+
if (mode === "managed-file") {
|
|
352
|
+
return "Short-term messages are consolidated into a managed, read-only file tree.";
|
|
353
|
+
}
|
|
247
354
|
if (mode === "file+ots") {
|
|
248
355
|
return "Read-only file projection browsed through the JSON file API.";
|
|
249
356
|
}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
export type MemoryUnitsViewMode = "units" | "files";
|
|
2
|
+
|
|
3
|
+
/** Adding a message only invalidates the structured list while that list is
|
|
4
|
+
* active. The files view disables its units query and must not refetch it. */
|
|
5
|
+
export function shouldRefreshUnitsAfterAdd(
|
|
6
|
+
viewMode: MemoryUnitsViewMode,
|
|
7
|
+
): boolean {
|
|
8
|
+
return viewMode === "units";
|
|
9
|
+
}
|
|
@@ -27,14 +27,9 @@ export function hasPreciseScope(scope: MemoryScope): boolean {
|
|
|
27
27
|
);
|
|
28
28
|
}
|
|
29
29
|
|
|
30
|
-
/**
|
|
30
|
+
/** The current SearchMemories contract only requires an exact appId. */
|
|
31
31
|
export function hasSearchableScope(scope: MemoryScope): boolean {
|
|
32
|
-
return
|
|
33
|
-
!!scope.appId &&
|
|
34
|
-
scope.appId !== "*" &&
|
|
35
|
-
!!scope.tenantId &&
|
|
36
|
-
scope.tenantId !== "*"
|
|
37
|
-
);
|
|
32
|
+
return !!scope.appId && scope.appId !== "*";
|
|
38
33
|
}
|
|
39
34
|
|
|
40
35
|
export function scopeToSearchParams(scope: MemoryScope): URLSearchParams {
|
|
@@ -294,6 +294,19 @@ export const queryKeys = {
|
|
|
294
294
|
nextToken,
|
|
295
295
|
limit,
|
|
296
296
|
] as const,
|
|
297
|
+
memoryScopeDirectory: (
|
|
298
|
+
scopeKey: string,
|
|
299
|
+
memoryStoreName: string,
|
|
300
|
+
requestKey: string,
|
|
301
|
+
) =>
|
|
302
|
+
[
|
|
303
|
+
"memory",
|
|
304
|
+
scopeKey,
|
|
305
|
+
"stores",
|
|
306
|
+
memoryStoreName,
|
|
307
|
+
"scope-directory",
|
|
308
|
+
requestKey,
|
|
309
|
+
] as const,
|
|
297
310
|
memoryTasks: (
|
|
298
311
|
scopeKey: string,
|
|
299
312
|
memoryStoreName: string,
|
|
@@ -0,0 +1,97 @@
|
|
|
1
|
+
import type {
|
|
2
|
+
MemoryScopeDirectoryEntry,
|
|
3
|
+
ScopeDirectoryFilter,
|
|
4
|
+
} from "@/types/memory";
|
|
5
|
+
import { buildScopeWorkspaceHref } from "@/lib/scope-workspace";
|
|
6
|
+
|
|
7
|
+
export type ScopeDirectoryTypeFilter = "all" | "conversation" | "wiki";
|
|
8
|
+
export type ScopeDirectoryMatchOp = "eq" | "prefix" | "wildcard";
|
|
9
|
+
|
|
10
|
+
export interface ScopeDirectoryFilterInput {
|
|
11
|
+
scopeType: ScopeDirectoryTypeFilter;
|
|
12
|
+
field?: string;
|
|
13
|
+
op?: ScopeDirectoryMatchOp;
|
|
14
|
+
value?: string;
|
|
15
|
+
}
|
|
16
|
+
|
|
17
|
+
/** React state boundary for opaque pagination tokens. Tokens must never
|
|
18
|
+
* survive a Store or runtime data-scope transition. */
|
|
19
|
+
export function buildScopeDirectoryStateKey(
|
|
20
|
+
dataScopeKey: string,
|
|
21
|
+
memoryStoreName: string,
|
|
22
|
+
): string {
|
|
23
|
+
return JSON.stringify([dataScopeKey, memoryStoreName]);
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
function isNonEmptyString(value: unknown): value is string {
|
|
27
|
+
return typeof value === "string" && value.length > 0;
|
|
28
|
+
}
|
|
29
|
+
|
|
30
|
+
/** Only an exact four-part conversation Scope can open the point-lookup
|
|
31
|
+
* workspace. Directory entries with omitted dimensions remain browseable but
|
|
32
|
+
* must not be turned into a different Scope by filling synthetic sentinels. */
|
|
33
|
+
export function buildScopeDirectoryWorkspaceHref(
|
|
34
|
+
memoryStoreName: string,
|
|
35
|
+
entry: MemoryScopeDirectoryEntry,
|
|
36
|
+
): string | null {
|
|
37
|
+
if (
|
|
38
|
+
entry.scopeType !== "conversation" ||
|
|
39
|
+
!isNonEmptyString(entry.appId) ||
|
|
40
|
+
!isNonEmptyString(entry.tenantId) ||
|
|
41
|
+
!isNonEmptyString(entry.agentId) ||
|
|
42
|
+
!isNonEmptyString(entry.runId)
|
|
43
|
+
) {
|
|
44
|
+
return null;
|
|
45
|
+
}
|
|
46
|
+
return buildScopeWorkspaceHref(memoryStoreName, {
|
|
47
|
+
appId: entry.appId,
|
|
48
|
+
tenantId: entry.tenantId,
|
|
49
|
+
agentId: entry.agentId,
|
|
50
|
+
runId: entry.runId,
|
|
51
|
+
});
|
|
52
|
+
}
|
|
53
|
+
|
|
54
|
+
/** Build the small visual filter form into the server's full Filter AST. */
|
|
55
|
+
export function buildScopeDirectoryFilter(
|
|
56
|
+
input: ScopeDirectoryFilterInput,
|
|
57
|
+
): ScopeDirectoryFilter {
|
|
58
|
+
const conditions: ScopeDirectoryFilter[] = [];
|
|
59
|
+
if (input.scopeType !== "all") {
|
|
60
|
+
conditions.push({
|
|
61
|
+
op: "eq",
|
|
62
|
+
field: "scopeType",
|
|
63
|
+
value: input.scopeType,
|
|
64
|
+
});
|
|
65
|
+
}
|
|
66
|
+
const field = input.field?.trim();
|
|
67
|
+
const value = input.value?.trim();
|
|
68
|
+
if (field && value) {
|
|
69
|
+
conditions.push({
|
|
70
|
+
op: input.op ?? "eq",
|
|
71
|
+
field,
|
|
72
|
+
value,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
// A filter-only query is how callers request the whole heterogeneous
|
|
76
|
+
// directory. Omitting both scope and filter would mean the legacy default
|
|
77
|
+
// conversation scope instead.
|
|
78
|
+
if (conditions.length === 0) {
|
|
79
|
+
return { op: "exists", field: "scopeType" };
|
|
80
|
+
}
|
|
81
|
+
return conditions.length === 1 ? conditions[0] : { op: "and", conditions };
|
|
82
|
+
}
|
|
83
|
+
|
|
84
|
+
/** Legacy stores may reject a Filter AST with a generic 400. Scope-only
|
|
85
|
+
* requests must never be classified this way because they sent no Filter. */
|
|
86
|
+
export function isScopeDirectoryUnsupported(
|
|
87
|
+
error: unknown,
|
|
88
|
+
usedFilter: boolean,
|
|
89
|
+
): boolean {
|
|
90
|
+
if (!usedFilter || !(error instanceof Error)) return false;
|
|
91
|
+
const code =
|
|
92
|
+
"code" in error && typeof error.code === "string" ? error.code : "";
|
|
93
|
+
return (
|
|
94
|
+
code === "INVALID_PARAMETER" ||
|
|
95
|
+
error.message.toLowerCase().includes("invalid parameter")
|
|
96
|
+
);
|
|
97
|
+
}
|
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
import {
|
|
2
|
+
parseKnownStorageMode,
|
|
3
|
+
type StorageMode,
|
|
4
|
+
} from "@/lib/memory-storage-mode";
|
|
5
|
+
|
|
6
|
+
type MemoryStoreWire = Record<string, unknown> & {
|
|
7
|
+
storageMode?: unknown;
|
|
8
|
+
inputType?: unknown;
|
|
9
|
+
outputTypes?: unknown;
|
|
10
|
+
};
|
|
11
|
+
|
|
12
|
+
/**
|
|
13
|
+
* The current service omits storageMode for stores created with the new
|
|
14
|
+
* inputType/outputTypes contract. Keep one derived legacy label at the BFF
|
|
15
|
+
* boundary so the existing capability matrix remains correct while the UI
|
|
16
|
+
* also exposes the authoritative fields.
|
|
17
|
+
*/
|
|
18
|
+
export function normalizeMemoryStoreContract<T extends MemoryStoreWire>(
|
|
19
|
+
store: T,
|
|
20
|
+
): T & { storageMode: StorageMode } {
|
|
21
|
+
const knownStorageMode =
|
|
22
|
+
typeof store.storageMode === "string"
|
|
23
|
+
? parseKnownStorageMode(store.storageMode)
|
|
24
|
+
: null;
|
|
25
|
+
if (knownStorageMode) {
|
|
26
|
+
return { ...store, storageMode: knownStorageMode };
|
|
27
|
+
}
|
|
28
|
+
|
|
29
|
+
const outputs = new Set(
|
|
30
|
+
Array.isArray(store.outputTypes) ? store.outputTypes : [],
|
|
31
|
+
);
|
|
32
|
+
let storageMode: StorageMode = "ots";
|
|
33
|
+
if (store.inputType === "file") {
|
|
34
|
+
storageMode = "filemem";
|
|
35
|
+
} else if (outputs.has("file") && outputs.has("structured")) {
|
|
36
|
+
storageMode = "file+ots";
|
|
37
|
+
} else if (outputs.has("file")) {
|
|
38
|
+
storageMode = "managed-file";
|
|
39
|
+
}
|
|
40
|
+
return { ...store, storageMode };
|
|
41
|
+
}
|
|
@@ -0,0 +1,186 @@
|
|
|
1
|
+
import type { ScopeDirectoryFilter } from "@/types/memory";
|
|
2
|
+
|
|
3
|
+
const FILTER_FIELD_PATTERN = /^[A-Za-z][A-Za-z0-9_]{0,63}$/;
|
|
4
|
+
const MAX_FILTER_DEPTH = 8;
|
|
5
|
+
const MAX_FILTER_LEAVES = 64;
|
|
6
|
+
|
|
7
|
+
type FilterParseResult = { filter: ScopeDirectoryFilter } | { error: string };
|
|
8
|
+
|
|
9
|
+
function isRecord(value: unknown): value is Record<string, unknown> {
|
|
10
|
+
return value !== null && typeof value === "object" && !Array.isArray(value);
|
|
11
|
+
}
|
|
12
|
+
|
|
13
|
+
function hasOnlyKeys(
|
|
14
|
+
value: Record<string, unknown>,
|
|
15
|
+
allowed: readonly string[],
|
|
16
|
+
): boolean {
|
|
17
|
+
return Object.keys(value).every((key) => allowed.includes(key));
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
function parseField(value: unknown): string | null {
|
|
21
|
+
if (typeof value !== "string") return null;
|
|
22
|
+
const field = value.trim();
|
|
23
|
+
return FILTER_FIELD_PATTERN.test(field) ? field : null;
|
|
24
|
+
}
|
|
25
|
+
|
|
26
|
+
function parseFilterNode(
|
|
27
|
+
value: unknown,
|
|
28
|
+
depth: number,
|
|
29
|
+
counter: { leaves: number },
|
|
30
|
+
): FilterParseResult {
|
|
31
|
+
if (depth >= MAX_FILTER_DEPTH) {
|
|
32
|
+
return { error: `filter exceeds maximum depth ${MAX_FILTER_DEPTH}` };
|
|
33
|
+
}
|
|
34
|
+
if (!isRecord(value) || typeof value.op !== "string") {
|
|
35
|
+
return { error: "filter nodes must be objects with a string op" };
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
const op = value.op.trim().toLowerCase();
|
|
39
|
+
const field = parseField(value.field);
|
|
40
|
+
if (["eq", "prefix", "wildcard"].includes(op)) {
|
|
41
|
+
if (!hasOnlyKeys(value, ["op", "field", "value"])) {
|
|
42
|
+
return { error: `filter ${op} contains unknown fields` };
|
|
43
|
+
}
|
|
44
|
+
if (!field || typeof value.value !== "string") {
|
|
45
|
+
return { error: `filter ${op} requires a valid field and string value` };
|
|
46
|
+
}
|
|
47
|
+
// Keep operand constraints aligned with scopedirectory.Filter.Validate in
|
|
48
|
+
// the service. It intentionally caps wildcard patterns only; imposing
|
|
49
|
+
// invented limits on eq/prefix/range/in here would reject valid requests.
|
|
50
|
+
if (op === "wildcard" && [...value.value].length > 32) {
|
|
51
|
+
return { error: "filter wildcard value exceeds 32 characters" };
|
|
52
|
+
}
|
|
53
|
+
counter.leaves += 1;
|
|
54
|
+
if (counter.leaves > MAX_FILTER_LEAVES) {
|
|
55
|
+
return {
|
|
56
|
+
error: `filter exceeds maximum leaf count ${MAX_FILTER_LEAVES}`,
|
|
57
|
+
};
|
|
58
|
+
}
|
|
59
|
+
return {
|
|
60
|
+
filter: {
|
|
61
|
+
op: op as "eq" | "prefix" | "wildcard",
|
|
62
|
+
field,
|
|
63
|
+
value: value.value,
|
|
64
|
+
},
|
|
65
|
+
};
|
|
66
|
+
}
|
|
67
|
+
|
|
68
|
+
if (op === "in") {
|
|
69
|
+
if (!hasOnlyKeys(value, ["op", "field", "values"])) {
|
|
70
|
+
return { error: "filter in contains unknown fields" };
|
|
71
|
+
}
|
|
72
|
+
if (
|
|
73
|
+
!field ||
|
|
74
|
+
!Array.isArray(value.values) ||
|
|
75
|
+
value.values.length === 0 ||
|
|
76
|
+
value.values.some((item) => typeof item !== "string")
|
|
77
|
+
) {
|
|
78
|
+
return { error: "filter in requires a valid field and string values" };
|
|
79
|
+
}
|
|
80
|
+
counter.leaves += 1;
|
|
81
|
+
if (counter.leaves > MAX_FILTER_LEAVES) {
|
|
82
|
+
return {
|
|
83
|
+
error: `filter exceeds maximum leaf count ${MAX_FILTER_LEAVES}`,
|
|
84
|
+
};
|
|
85
|
+
}
|
|
86
|
+
return { filter: { op: "in", field, values: value.values as string[] } };
|
|
87
|
+
}
|
|
88
|
+
|
|
89
|
+
if (op === "range") {
|
|
90
|
+
if (!hasOnlyKeys(value, ["op", "field", "gt", "gte", "lt", "lte"])) {
|
|
91
|
+
return { error: "filter range contains unknown fields" };
|
|
92
|
+
}
|
|
93
|
+
const bounds = ["gt", "gte", "lt", "lte"] as const;
|
|
94
|
+
const presentBounds = bounds.filter((key) => value[key] !== undefined);
|
|
95
|
+
if (
|
|
96
|
+
!field ||
|
|
97
|
+
presentBounds.length === 0 ||
|
|
98
|
+
presentBounds.some((key) => typeof value[key] !== "string")
|
|
99
|
+
) {
|
|
100
|
+
return {
|
|
101
|
+
error:
|
|
102
|
+
"filter range requires a valid field and at least one string bound",
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
if (
|
|
106
|
+
(value.gt !== undefined && value.gte !== undefined) ||
|
|
107
|
+
(value.lt !== undefined && value.lte !== undefined)
|
|
108
|
+
) {
|
|
109
|
+
return { error: "filter range cannot combine gt/gte or lt/lte" };
|
|
110
|
+
}
|
|
111
|
+
counter.leaves += 1;
|
|
112
|
+
if (counter.leaves > MAX_FILTER_LEAVES) {
|
|
113
|
+
return {
|
|
114
|
+
error: `filter exceeds maximum leaf count ${MAX_FILTER_LEAVES}`,
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
return {
|
|
118
|
+
filter: {
|
|
119
|
+
op: "range",
|
|
120
|
+
field,
|
|
121
|
+
...(typeof value.gt === "string" ? { gt: value.gt } : {}),
|
|
122
|
+
...(typeof value.gte === "string" ? { gte: value.gte } : {}),
|
|
123
|
+
...(typeof value.lt === "string" ? { lt: value.lt } : {}),
|
|
124
|
+
...(typeof value.lte === "string" ? { lte: value.lte } : {}),
|
|
125
|
+
},
|
|
126
|
+
};
|
|
127
|
+
}
|
|
128
|
+
|
|
129
|
+
if (op === "exists") {
|
|
130
|
+
if (!hasOnlyKeys(value, ["op", "field"]) || !field) {
|
|
131
|
+
return { error: "filter exists requires exactly one known field" };
|
|
132
|
+
}
|
|
133
|
+
counter.leaves += 1;
|
|
134
|
+
if (counter.leaves > MAX_FILTER_LEAVES) {
|
|
135
|
+
return {
|
|
136
|
+
error: `filter exceeds maximum leaf count ${MAX_FILTER_LEAVES}`,
|
|
137
|
+
};
|
|
138
|
+
}
|
|
139
|
+
return { filter: { op: "exists", field } };
|
|
140
|
+
}
|
|
141
|
+
|
|
142
|
+
if (op === "and" || op === "or") {
|
|
143
|
+
if (!hasOnlyKeys(value, ["op", "conditions"])) {
|
|
144
|
+
return { error: `filter ${op} contains unknown fields` };
|
|
145
|
+
}
|
|
146
|
+
if (!Array.isArray(value.conditions) || value.conditions.length === 0) {
|
|
147
|
+
return { error: `filter ${op} requires non-empty conditions` };
|
|
148
|
+
}
|
|
149
|
+
const conditions: ScopeDirectoryFilter[] = [];
|
|
150
|
+
for (const condition of value.conditions) {
|
|
151
|
+
const parsed = parseFilterNode(condition, depth + 1, counter);
|
|
152
|
+
if ("error" in parsed) return parsed;
|
|
153
|
+
conditions.push(parsed.filter);
|
|
154
|
+
}
|
|
155
|
+
return { filter: { op, conditions } };
|
|
156
|
+
}
|
|
157
|
+
|
|
158
|
+
if (op === "not") {
|
|
159
|
+
if (!hasOnlyKeys(value, ["op", "condition", "conditions"])) {
|
|
160
|
+
return { error: "filter not contains unknown fields" };
|
|
161
|
+
}
|
|
162
|
+
const legacyConditions = Array.isArray(value.conditions)
|
|
163
|
+
? value.conditions
|
|
164
|
+
: [];
|
|
165
|
+
if (
|
|
166
|
+
(value.condition !== undefined && legacyConditions.length !== 0) ||
|
|
167
|
+
(value.condition === undefined && legacyConditions.length !== 1)
|
|
168
|
+
) {
|
|
169
|
+
return { error: "filter not requires exactly one condition" };
|
|
170
|
+
}
|
|
171
|
+
const parsed = parseFilterNode(
|
|
172
|
+
value.condition ?? legacyConditions[0],
|
|
173
|
+
depth + 1,
|
|
174
|
+
counter,
|
|
175
|
+
);
|
|
176
|
+
return "error" in parsed
|
|
177
|
+
? parsed
|
|
178
|
+
: { filter: { op: "not", condition: parsed.filter } };
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
return { error: `unsupported filter op: ${op}` };
|
|
182
|
+
}
|
|
183
|
+
|
|
184
|
+
export function parseScopeDirectoryFilter(value: unknown): FilterParseResult {
|
|
185
|
+
return parseFilterNode(value, 0, { leaves: 0 });
|
|
186
|
+
}
|
|
@@ -1,7 +1,10 @@
|
|
|
1
1
|
import { z } from "zod";
|
|
2
2
|
|
|
3
3
|
import { normalizeFileMemoryStoreName } from "@/lib/file-memory-core";
|
|
4
|
-
import {
|
|
4
|
+
import {
|
|
5
|
+
FILEMEM_DEFAULT_RUN_ID,
|
|
6
|
+
STORAGE_MODE_VALUES,
|
|
7
|
+
} from "@/lib/memory-storage-mode";
|
|
5
8
|
|
|
6
9
|
export const chatRoleSchema = z.enum(["user", "assistant", "system"]);
|
|
7
10
|
|
|
@@ -67,7 +70,7 @@ const browserFileContextSchema = z.object({
|
|
|
67
70
|
const chatMemoryWireSchema = z
|
|
68
71
|
.object({
|
|
69
72
|
memoryStoreName: z.string().min(1),
|
|
70
|
-
storageMode: z.enum(
|
|
73
|
+
storageMode: z.enum(STORAGE_MODE_VALUES).optional(),
|
|
71
74
|
scope: z.object({
|
|
72
75
|
appId: nonWildcardId,
|
|
73
76
|
tenantId: nonWildcardId,
|