agim-cli 1.2.126 → 1.2.128
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/CHANGELOG.md +99 -1
- package/dist/core/llm/web-dispatcher.d.ts +9 -1
- package/dist/core/llm/web-dispatcher.d.ts.map +1 -1
- package/dist/core/llm/web-dispatcher.js +11 -3
- package/dist/core/llm/web-dispatcher.js.map +1 -1
- package/dist/web/public/assets/{a2a-DGmlA1kI.js → a2a-CbxNgf9H.js} +2 -2
- package/dist/web/public/assets/{a2a-DGmlA1kI.js.map → a2a-CbxNgf9H.js.map} +1 -1
- package/dist/web/public/assets/{activity-s8eXJqQ-.js → activity-C6r508cN.js} +2 -2
- package/dist/web/public/assets/{activity-s8eXJqQ-.js.map → activity-C6r508cN.js.map} +1 -1
- package/dist/web/public/assets/{admins-BSDr-HXb.js → admins-C0BJw6X9.js} +2 -2
- package/dist/web/public/assets/{admins-BSDr-HXb.js.map → admins-C0BJw6X9.js.map} +1 -1
- package/dist/web/public/assets/{agents-Dp4swPPC.js → agents-DOW1_NGT.js} +2 -2
- package/dist/web/public/assets/{agents-Dp4swPPC.js.map → agents-DOW1_NGT.js.map} +1 -1
- package/dist/web/public/assets/{approvals-BzShPdMC.js → approvals-CyPhYcGG.js} +2 -2
- package/dist/web/public/assets/{approvals-BzShPdMC.js.map → approvals-CyPhYcGG.js.map} +1 -1
- package/dist/web/public/assets/{arrow-up-B0EZtRDW.js → arrow-up-CZr2LH5e.js} +2 -2
- package/dist/web/public/assets/{arrow-up-B0EZtRDW.js.map → arrow-up-CZr2LH5e.js.map} +1 -1
- package/dist/web/public/assets/{asks-BQtIx6ky.js → asks-B6L3PSml.js} +2 -2
- package/dist/web/public/assets/{asks-BQtIx6ky.js.map → asks-B6L3PSml.js.map} +1 -1
- package/dist/web/public/assets/{audit-BDIEW7z9.js → audit-CCGCdw6P.js} +2 -2
- package/dist/web/public/assets/{audit-BDIEW7z9.js.map → audit-CCGCdw6P.js.map} +1 -1
- package/dist/web/public/assets/{bell-Dw3rtAnD.js → bell-OiL3Thk2.js} +2 -2
- package/dist/web/public/assets/{bell-Dw3rtAnD.js.map → bell-OiL3Thk2.js.map} +1 -1
- package/dist/web/public/assets/{bgjobs-DEQOeNl0.js → bgjobs-vhVtnLSx.js} +2 -2
- package/dist/web/public/assets/{bgjobs-DEQOeNl0.js.map → bgjobs-vhVtnLSx.js.map} +1 -1
- package/dist/web/public/assets/{brain-BqR8-Zwv.js → brain-n56pZ1TQ.js} +2 -2
- package/dist/web/public/assets/{brain-BqR8-Zwv.js.map → brain-n56pZ1TQ.js.map} +1 -1
- package/dist/web/public/assets/{briefcase-_b-XDwyU.js → briefcase-BscVfAjp.js} +2 -2
- package/dist/web/public/assets/{briefcase-_b-XDwyU.js.map → briefcase-BscVfAjp.js.map} +1 -1
- package/dist/web/public/assets/{chevron-right-DkURvNIb.js → chevron-right-trO6yoBr.js} +2 -2
- package/dist/web/public/assets/{chevron-right-DkURvNIb.js.map → chevron-right-trO6yoBr.js.map} +1 -1
- package/dist/web/public/assets/{circle-check-D0tRr1mi.js → circle-check-B_d7dBl5.js} +2 -2
- package/dist/web/public/assets/{circle-check-D0tRr1mi.js.map → circle-check-B_d7dBl5.js.map} +1 -1
- package/dist/web/public/assets/{circle-check-big-C737-DM7.js → circle-check-big-D6TvCoDM.js} +2 -2
- package/dist/web/public/assets/{circle-check-big-C737-DM7.js.map → circle-check-big-D6TvCoDM.js.map} +1 -1
- package/dist/web/public/assets/{circle-x-KWl9wiZn.js → circle-x-OcRzGLRb.js} +2 -2
- package/dist/web/public/assets/{circle-x-KWl9wiZn.js.map → circle-x-OcRzGLRb.js.map} +1 -1
- package/dist/web/public/assets/{confirm-dialog-CyTBb_Dj.js → confirm-dialog-DD1ZW1XE.js} +2 -2
- package/dist/web/public/assets/{confirm-dialog-CyTBb_Dj.js.map → confirm-dialog-DD1ZW1XE.js.map} +1 -1
- package/dist/web/public/assets/{data-table-Br_AhsiO.js → data-table-bhqK389v.js} +2 -2
- package/dist/web/public/assets/{data-table-Br_AhsiO.js.map → data-table-bhqK389v.js.map} +1 -1
- package/dist/web/public/assets/{dialog-ChaF-Zu5.js → dialog-D5BsJN2q.js} +2 -2
- package/dist/web/public/assets/{dialog-ChaF-Zu5.js.map → dialog-D5BsJN2q.js.map} +1 -1
- package/dist/web/public/assets/{download-B7FO0Y5B.js → download-CcO4RAuC.js} +2 -2
- package/dist/web/public/assets/{download-B7FO0Y5B.js.map → download-CcO4RAuC.js.map} +1 -1
- package/dist/web/public/assets/{email-DIEmIapc.js → email-Dy3UoyzF.js} +2 -2
- package/dist/web/public/assets/{email-DIEmIapc.js.map → email-Dy3UoyzF.js.map} +1 -1
- package/dist/web/public/assets/{empty-state-CP9D3-8U.js → empty-state-CwUKG8xX.js} +2 -2
- package/dist/web/public/assets/{empty-state-CP9D3-8U.js.map → empty-state-CwUKG8xX.js.map} +1 -1
- package/dist/web/public/assets/{external-link-Ba2-bs-3.js → external-link-wf5VhNXd.js} +2 -2
- package/dist/web/public/assets/{external-link-Ba2-bs-3.js.map → external-link-wf5VhNXd.js.map} +1 -1
- package/dist/web/public/assets/{eye-CcL-RUbp.js → eye-8lKlwbZE.js} +2 -2
- package/dist/web/public/assets/{eye-CcL-RUbp.js.map → eye-8lKlwbZE.js.map} +1 -1
- package/dist/web/public/assets/{facts-DqwcWab7.js → facts-Cfu6Lg3H.js} +2 -2
- package/dist/web/public/assets/{facts-DqwcWab7.js.map → facts-Cfu6Lg3H.js.map} +1 -1
- package/dist/web/public/assets/{goals-DBghjX3s.js → goals-BQkhal_h.js} +2 -2
- package/dist/web/public/assets/{goals-DBghjX3s.js.map → goals-BQkhal_h.js.map} +1 -1
- package/dist/web/public/assets/{health-DV_mII-T.js → health-BObMAngj.js} +2 -2
- package/dist/web/public/assets/{health-DV_mII-T.js.map → health-BObMAngj.js.map} +1 -1
- package/dist/web/public/assets/{heart-pulse-C3TFU_Th.js → heart-pulse-DI33Rxyr.js} +2 -2
- package/dist/web/public/assets/{heart-pulse-C3TFU_Th.js.map → heart-pulse-DI33Rxyr.js.map} +1 -1
- package/dist/web/public/assets/{heartbeat-NRTRObLx.js → heartbeat-Bc4SZawQ.js} +2 -2
- package/dist/web/public/assets/{heartbeat-NRTRObLx.js.map → heartbeat-Bc4SZawQ.js.map} +1 -1
- package/dist/web/public/assets/{hot-BNH34Amf.js → hot-BXYotT26.js} +2 -2
- package/dist/web/public/assets/{hot-BNH34Amf.js.map → hot-BXYotT26.js.map} +1 -1
- package/dist/web/public/assets/{index-igqJknUt.js → index-CGaI-i4K.js} +31 -31
- package/dist/web/public/assets/index-CGaI-i4K.js.map +1 -0
- package/dist/web/public/assets/{installed-B2goeV3S.js → installed-DswmDcea.js} +2 -2
- package/dist/web/public/assets/{installed-B2goeV3S.js.map → installed-DswmDcea.js.map} +1 -1
- package/dist/web/public/assets/{jobs-CZSLi1IN.js → jobs-DWBDqKx-.js} +2 -2
- package/dist/web/public/assets/{jobs-CZSLi1IN.js.map → jobs-DWBDqKx-.js.map} +1 -1
- package/dist/web/public/assets/{layout-BOtnmIxG.js → layout-B5rK_h6Q.js} +2 -2
- package/dist/web/public/assets/{layout-BOtnmIxG.js.map → layout-B5rK_h6Q.js.map} +1 -1
- package/dist/web/public/assets/{layout-CBbV3YNj.js → layout-ByUY6XZQ.js} +2 -2
- package/dist/web/public/assets/{layout-CBbV3YNj.js.map → layout-ByUY6XZQ.js.map} +1 -1
- package/dist/web/public/assets/{layout-CsScgPAG.js → layout-CX3nXpWb.js} +2 -2
- package/dist/web/public/assets/{layout-CsScgPAG.js.map → layout-CX3nXpWb.js.map} +1 -1
- package/dist/web/public/assets/{layout-BboemGJs.js → layout-D7gNMUDZ.js} +2 -2
- package/dist/web/public/assets/{layout-BboemGJs.js.map → layout-D7gNMUDZ.js.map} +1 -1
- package/dist/web/public/assets/{layout-D8Kes1e7.js → layout-DJKxW33x.js} +2 -2
- package/dist/web/public/assets/{layout-D8Kes1e7.js.map → layout-DJKxW33x.js.map} +1 -1
- package/dist/web/public/assets/{llm-78WCRfgL.js → llm-CPOd98Hy.js} +2 -2
- package/dist/web/public/assets/{llm-78WCRfgL.js.map → llm-CPOd98Hy.js.map} +1 -1
- package/dist/web/public/assets/{loader-circle-BMJKoafx.js → loader-circle-BBIfyATA.js} +2 -2
- package/dist/web/public/assets/{loader-circle-BMJKoafx.js.map → loader-circle-BBIfyATA.js.map} +1 -1
- package/dist/web/public/assets/{map-pin-QiHcQUfd.js → map-pin-Bg7JuU7F.js} +2 -2
- package/dist/web/public/assets/{map-pin-QiHcQUfd.js.map → map-pin-Bg7JuU7F.js.map} +1 -1
- package/dist/web/public/assets/{mcp-oeRvo7Aw.js → mcp-DGxGN2iX.js} +2 -2
- package/dist/web/public/assets/{mcp-oeRvo7Aw.js.map → mcp-DGxGN2iX.js.map} +1 -1
- package/dist/web/public/assets/{memos-D7RJn57X.js → memos-LpUpTmYL.js} +2 -2
- package/dist/web/public/assets/{memos-D7RJn57X.js.map → memos-LpUpTmYL.js.map} +1 -1
- package/dist/web/public/assets/{messengers-BORNy_SW.js → messengers-CWMsJz1e.js} +2 -2
- package/dist/web/public/assets/{messengers-BORNy_SW.js.map → messengers-CWMsJz1e.js.map} +1 -1
- package/dist/web/public/assets/native-agent-CPkYGY3I.js +22 -0
- package/dist/web/public/assets/native-agent-CPkYGY3I.js.map +1 -0
- package/dist/web/public/assets/{network-D--kF74M.js → network-DHrX3RcZ.js} +2 -2
- package/dist/web/public/assets/{network-D--kF74M.js.map → network-DHrX3RcZ.js.map} +1 -1
- package/dist/web/public/assets/{outbox-BvhcDpdc.js → outbox-T3NnYmK0.js} +2 -2
- package/dist/web/public/assets/{outbox-BvhcDpdc.js.map → outbox-T3NnYmK0.js.map} +1 -1
- package/dist/web/public/assets/{pagination-Dl8k4a91.js → pagination-ANxQzaRV.js} +2 -2
- package/dist/web/public/assets/{pagination-Dl8k4a91.js.map → pagination-ANxQzaRV.js.map} +1 -1
- package/dist/web/public/assets/{persona-Dy-fuCBR.js → persona-CHz80XDk.js} +2 -2
- package/dist/web/public/assets/{persona-Dy-fuCBR.js.map → persona-CHz80XDk.js.map} +1 -1
- package/dist/web/public/assets/{play-C0gIFP8e.js → play-BNtSkb5l.js} +2 -2
- package/dist/web/public/assets/{play-C0gIFP8e.js.map → play-BNtSkb5l.js.map} +1 -1
- package/dist/web/public/assets/{plus-DW6xBDJv.js → plus-CYsjCf6w.js} +2 -2
- package/dist/web/public/assets/{plus-DW6xBDJv.js.map → plus-CYsjCf6w.js.map} +1 -1
- package/dist/web/public/assets/{policy-DW_kZo8b.js → policy-CtKRzual.js} +2 -2
- package/dist/web/public/assets/{policy-DW_kZo8b.js.map → policy-CtKRzual.js.map} +1 -1
- package/dist/web/public/assets/{refresh-ccw-D6fZ_xYR.js → refresh-ccw-DpPWcwTg.js} +2 -2
- package/dist/web/public/assets/{refresh-ccw-D6fZ_xYR.js.map → refresh-ccw-DpPWcwTg.js.map} +1 -1
- package/dist/web/public/assets/{reminders-1V1_6Rij.js → reminders-R14lWHEJ.js} +2 -2
- package/dist/web/public/assets/{reminders-1V1_6Rij.js.map → reminders-R14lWHEJ.js.map} +1 -1
- package/dist/web/public/assets/{save-S79SG1Qr.js → save-beGooRNy.js} +2 -2
- package/dist/web/public/assets/{save-S79SG1Qr.js.map → save-beGooRNy.js.map} +1 -1
- package/dist/web/public/assets/{schedules-BsknKkCe.js → schedules-fxKnDnxp.js} +2 -2
- package/dist/web/public/assets/{schedules-BsknKkCe.js.map → schedules-fxKnDnxp.js.map} +1 -1
- package/dist/web/public/assets/{search-CKf3g91u.js → search-BzOAg0Rb.js} +2 -2
- package/dist/web/public/assets/{search-CKf3g91u.js.map → search-BzOAg0Rb.js.map} +1 -1
- package/dist/web/public/assets/{search-HQWlCBKK.js → search-DzgimpPy.js} +2 -2
- package/dist/web/public/assets/{search-HQWlCBKK.js.map → search-DzgimpPy.js.map} +1 -1
- package/dist/web/public/assets/security-Dw1mh68G.js +2 -0
- package/dist/web/public/assets/security-Dw1mh68G.js.map +1 -0
- package/dist/web/public/assets/{service-CB-aBmLS.js → service-CB55xtmh.js} +2 -2
- package/dist/web/public/assets/{service-CB-aBmLS.js.map → service-CB55xtmh.js.map} +1 -1
- package/dist/web/public/assets/shield-alert-C2IO43co.js +7 -0
- package/dist/web/public/assets/shield-alert-C2IO43co.js.map +1 -0
- package/dist/web/public/assets/{status-badge-BYFw2Sxd.js → status-badge-wL5IXJx_.js} +2 -2
- package/dist/web/public/assets/{status-badge-BYFw2Sxd.js.map → status-badge-wL5IXJx_.js.map} +1 -1
- package/dist/web/public/assets/{subtasks-CBrBqNyr.js → subtasks-CbLAkygG.js} +2 -2
- package/dist/web/public/assets/{subtasks-CBrBqNyr.js.map → subtasks-CbLAkygG.js.map} +1 -1
- package/dist/web/public/assets/{table-D5hzEZ1F.js → table-9FRavyyI.js} +2 -2
- package/dist/web/public/assets/{table-D5hzEZ1F.js.map → table-9FRavyyI.js.map} +1 -1
- package/dist/web/public/assets/{topn-7_FUU4Zs.js → topn-BE7RU5cV.js} +2 -2
- package/dist/web/public/assets/{topn-7_FUU4Zs.js.map → topn-BE7RU5cV.js.map} +1 -1
- package/dist/web/public/assets/{trash-2-BkaJ1KrC.js → trash-2-DL2FAuYX.js} +2 -2
- package/dist/web/public/assets/{trash-2-BkaJ1KrC.js.map → trash-2-DL2FAuYX.js.map} +1 -1
- package/dist/web/public/assets/{use-background-tasks-Crs1dlm6.js → use-background-tasks-XHuIYwrT.js} +2 -2
- package/dist/web/public/assets/{use-background-tasks-Crs1dlm6.js.map → use-background-tasks-XHuIYwrT.js.map} +1 -1
- package/dist/web/public/assets/{use-llm-admin-CQ3lbm_y.js → use-llm-admin-Dm8PcjN-.js} +2 -2
- package/dist/web/public/assets/{use-llm-admin-CQ3lbm_y.js.map → use-llm-admin-Dm8PcjN-.js.map} +1 -1
- package/dist/web/public/assets/{use-memory-CMOa52NU.js → use-memory-C3GgMqiJ.js} +2 -2
- package/dist/web/public/assets/{use-memory-CMOa52NU.js.map → use-memory-C3GgMqiJ.js.map} +1 -1
- package/dist/web/public/assets/{use-observability-BTRXt3kO.js → use-observability-BQa4b0Uk.js} +2 -2
- package/dist/web/public/assets/{use-observability-BTRXt3kO.js.map → use-observability-BQa4b0Uk.js.map} +1 -1
- package/dist/web/public/assets/{use-settings-D2TsP4vN.js → use-settings-CrkXdLrr.js} +2 -2
- package/dist/web/public/assets/{use-settings-D2TsP4vN.js.map → use-settings-CrkXdLrr.js.map} +1 -1
- package/dist/web/public/assets/{use-workspace-BobEMtXw.js → use-workspace-Csq4sxlY.js} +2 -2
- package/dist/web/public/assets/{use-workspace-BobEMtXw.js.map → use-workspace-Csq4sxlY.js.map} +1 -1
- package/dist/web/public/assets/{useQuery-B6dy499I.js → useQuery-ByZlZXlw.js} +2 -2
- package/dist/web/public/assets/{useQuery-B6dy499I.js.map → useQuery-ByZlZXlw.js.map} +1 -1
- package/dist/web/public/assets/{vector-v7xjphrN.js → vector-BmpvJTWt.js} +2 -2
- package/dist/web/public/assets/{vector-v7xjphrN.js.map → vector-BmpvJTWt.js.map} +1 -1
- package/dist/web/public/assets/{viewer-BSC-2Lhp.js → viewer-BOSX-lUS.js} +2 -2
- package/dist/web/public/assets/{viewer-BSC-2Lhp.js.map → viewer-BOSX-lUS.js.map} +1 -1
- package/dist/web/public/assets/{workspace-BtGPH9Sx.js → workspace-DTbEdEyD.js} +2 -2
- package/dist/web/public/assets/{workspace-BtGPH9Sx.js.map → workspace-DTbEdEyD.js.map} +1 -1
- package/dist/web/public/assets/{workspaces-_PTrUhIq.js → workspaces-BIZGVK8F.js} +2 -2
- package/dist/web/public/assets/{workspaces-_PTrUhIq.js.map → workspaces-BIZGVK8F.js.map} +1 -1
- package/dist/web/public/assets/{x-BHW436CN.js → x-BLllJ8d_.js} +2 -2
- package/dist/web/public/assets/{x-BHW436CN.js.map → x-BLllJ8d_.js.map} +1 -1
- package/dist/web/public/index.html +1 -1
- package/dist/web/server.js +25 -0
- package/dist/web/server.js.map +1 -1
- package/package.json +1 -1
- package/dist/web/public/assets/index-igqJknUt.js.map +0 -1
- package/dist/web/public/assets/native-agent-CNPVWQ9T.js +0 -12
- package/dist/web/public/assets/native-agent-CNPVWQ9T.js.map +0 -1
- package/dist/web/public/assets/security-B8sBUf6e.js +0 -7
- package/dist/web/public/assets/security-B8sBUf6e.js.map +0 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-memory-
|
|
1
|
+
{"version":3,"file":"use-memory-C3GgMqiJ.js","sources":["../../src/hooks/use-memory.ts"],"sourcesContent":["/**\n * useMemory — react-query wrappers for the agent long-term memory.\n *\n * useMemoryUsers() — pick list of users that have\n * facts in the bank\n * useMemoryFacts(query) — pageable facts for one user\n * useDeleteFactById() — single-row delete\n * useBulkDeleteFacts() — multi / category / threshold\n *\n * No SSE channel; memory mutations are operator-driven and the\n * react-query 30s staleTime is enough. Mutations invalidate the\n * full ['memory'] tree so adjacent views (e.g. the user summary's\n * fact_count) stay in sync.\n */\n\nimport { useQueryClient, useQuery, useMutation } from '@tanstack/react-query'\nimport { api } from '@/lib/api/endpoints'\nimport { ApiClientError } from '@/lib/api/client'\nimport type {\n ConsolidateMemoryResponse,\n ConsolidateStatusResponse,\n DeleteMemoryFactsBody,\n DeleteMemoryFactsResponse,\n ListMemoryFactsQuery,\n ListMemoryFactsResponse,\n ListMemoryUsersResponse,\n OkResponse,\n Persona,\n UpdatePersonaBody,\n} from '@/types/api'\n\nexport const memoryKeys = {\n all: ['memory'] as const,\n users: ['memory', 'users'] as const,\n facts: (q: ListMemoryFactsQuery) => ['memory', 'facts', q] as const,\n persona: (user_key: string) => ['memory', 'persona', user_key] as const,\n consolidate: ['memory', 'consolidate'] as const,\n}\n\nexport function useMemoryUsers() {\n return useQuery<ListMemoryUsersResponse>({\n queryKey: memoryKeys.users,\n queryFn: () => api.listMemoryUsers(),\n })\n}\n\nexport function useMemoryFacts(query: ListMemoryFactsQuery, opts: { enabled?: boolean } = {}) {\n return useQuery<ListMemoryFactsResponse>({\n queryKey: memoryKeys.facts(query),\n queryFn: () => api.listMemoryFacts(query),\n // Caller passes enabled=false until a user_key is chosen so the\n // hook doesn't fire with an empty key.\n enabled: opts.enabled !== false && Boolean(query.user_key),\n })\n}\n\nexport function useInvalidateMemory() {\n const qc = useQueryClient()\n return () => qc.invalidateQueries({ queryKey: memoryKeys.all })\n}\n\nexport function useDeleteFactById() {\n const qc = useQueryClient()\n return useMutation<\n OkResponse & { id: number },\n Error,\n { id: number; user_key: string }\n >({\n mutationFn: ({ id, user_key }) => api.deleteMemoryFactById(id, { user_key }),\n onSuccess: () => qc.invalidateQueries({ queryKey: memoryKeys.all }),\n })\n}\n\nexport function useBulkDeleteFacts() {\n const qc = useQueryClient()\n return useMutation<\n DeleteMemoryFactsResponse,\n Error,\n { user_key: string; body: DeleteMemoryFactsBody }\n >({\n mutationFn: ({ user_key, body }) => api.deleteMemoryFacts({ user_key }, body),\n onSuccess: () => qc.invalidateQueries({ queryKey: memoryKeys.all }),\n })\n}\n\n/* ─────────────── Persona ─────────────── */\n\n/** Fetch the persona for a user. The backend returns 404 when the\n * user has no persona yet — we map that to `data: null` so the\n * route can render the \"not set yet\" state without a try/catch. */\nexport function useMemoryPersona(user_key: string, opts: { enabled?: boolean } = {}) {\n return useQuery<Persona | null>({\n queryKey: memoryKeys.persona(user_key),\n queryFn: async () => {\n try {\n return await api.getMemoryPersona({ user_key })\n } catch (err) {\n if (err instanceof ApiClientError && err.status === 404) return null\n throw err\n }\n },\n enabled: opts.enabled !== false && Boolean(user_key),\n })\n}\n\nexport function useUpdatePersona() {\n const qc = useQueryClient()\n return useMutation<\n { ok: boolean },\n Error,\n { user_key: string; body: UpdatePersonaBody }\n >({\n mutationFn: ({ user_key, body }) => api.updateMemoryPersona({ user_key }, body),\n onSuccess: (_data, vars) => {\n qc.invalidateQueries({ queryKey: memoryKeys.persona(vars.user_key) })\n qc.invalidateQueries({ queryKey: memoryKeys.users })\n },\n })\n}\n\nexport function useDeletePersona() {\n const qc = useQueryClient()\n return useMutation<{ ok: boolean }, Error, string>({\n mutationFn: (user_key) => api.deleteMemoryPersona({ user_key }),\n onSuccess: (_data, user_key) => {\n qc.invalidateQueries({ queryKey: memoryKeys.persona(user_key) })\n qc.invalidateQueries({ queryKey: memoryKeys.users })\n },\n })\n}\n\n/* ─────────────── Consolidate ─────────────── */\n\n/** Status of the in-flight + recent consolidation jobs. Polls while\n * the page is open since consolidate runs asynchronously and we\n * want the operator to see when it completes without manual\n * refresh. */\nexport function useConsolidateStatus(opts: { enabled?: boolean } = {}) {\n return useQuery<ConsolidateStatusResponse>({\n queryKey: memoryKeys.consolidate,\n queryFn: () => api.getMemoryConsolidateStatus(),\n refetchInterval: 3000,\n refetchIntervalInBackground: false,\n enabled: opts.enabled !== false,\n })\n}\n\nexport function useTriggerConsolidate() {\n const qc = useQueryClient()\n return useMutation<ConsolidateMemoryResponse, Error, void>({\n mutationFn: () => api.consolidateMemory(),\n onSuccess: () => {\n qc.invalidateQueries({ queryKey: memoryKeys.consolidate })\n qc.invalidateQueries({ queryKey: memoryKeys.all })\n },\n })\n}\n"],"names":["memoryKeys","q","user_key","useMemoryUsers","useQuery","api","useMemoryFacts","query","opts","useDeleteFactById","qc","useQueryClient","useMutation","id","useBulkDeleteFacts","body","useMemoryPersona","err","ApiClientError","useUpdatePersona","_data","vars","useDeletePersona","useConsolidateStatus","useTriggerConsolidate"],"mappings":"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"}
|
package/dist/web/public/assets/{use-observability-BTRXt3kO.js → use-observability-BQa4b0Uk.js}
RENAMED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{u as a}from"./useQuery-
|
|
2
|
-
//# sourceMappingURL=use-observability-
|
|
1
|
+
import{u as a}from"./useQuery-ByZlZXlw.js";import{r as i}from"./index-CGaI-i4K.js";const n={all:["observability"],health:e=>["observability","health",e],topN:(e,t,r,u)=>["observability","topn",e,t,r,u],audit:e=>["observability","audit",e]};function o(e){return a({queryKey:n.health(e),queryFn:()=>i.getHealthSummary({days:e}),refetchInterval:3e4,refetchIntervalInBackground:!1})}function s(e){const t=e.days??7,r=e.limit??10;return a({queryKey:n.topN(e.dim,e.by,t,r),queryFn:()=>i.getHealthTopN({dim:e.dim,by:e.by,days:t,limit:r}),refetchInterval:6e4,refetchIntervalInBackground:!1})}function c(e){return a({queryKey:n.audit(e),queryFn:()=>i.getAudit(e),refetchInterval:1e4,refetchIntervalInBackground:!1})}export{o as a,s as b,c as u};
|
|
2
|
+
//# sourceMappingURL=use-observability-BQa4b0Uk.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-observability-
|
|
1
|
+
{"version":3,"file":"use-observability-BQa4b0Uk.js","sources":["../../src/hooks/use-observability.ts"],"sourcesContent":["/**\n * useObservability — react-query wrappers for the operational\n * dashboard.\n *\n * useHealthSummary({ days }) — totals + byDay roll-up\n * useTopN({ dim, by, days, limit }) — leaderboard by dimension\n * useAudit(query) — recent invocations\n *\n * All three are read-only; observability stays a passive view.\n * Refetch intervals are tuned to match operator expectations:\n * health summary every 30s (background sweep latency); audit\n * every 10s (fresher); TopN every 60s (the leaderboard moves\n * slowly enough).\n */\n\nimport { useQuery } from '@tanstack/react-query'\nimport { api } from '@/lib/api/endpoints'\nimport type {\n AuditResponse,\n HealthSummary,\n ListAuditQuery,\n TopNDim,\n TopNMetric,\n TopNResponse,\n} from '@/types/api'\n\nexport const observabilityKeys = {\n all: ['observability'] as const,\n health: (days: number) => ['observability', 'health', days] as const,\n topN: (dim: TopNDim, by: TopNMetric, days: number, limit: number) =>\n ['observability', 'topn', dim, by, days, limit] as const,\n audit: (q: ListAuditQuery) => ['observability', 'audit', q] as const,\n}\n\nexport function useHealthSummary(days: number) {\n return useQuery<HealthSummary>({\n queryKey: observabilityKeys.health(days),\n queryFn: () => api.getHealthSummary({ days }),\n refetchInterval: 30_000,\n refetchIntervalInBackground: false,\n })\n}\n\nexport function useTopN(opts: { dim: TopNDim; by: TopNMetric; days?: number; limit?: number }) {\n const days = opts.days ?? 7\n const limit = opts.limit ?? 10\n return useQuery<TopNResponse>({\n queryKey: observabilityKeys.topN(opts.dim, opts.by, days, limit),\n queryFn: () => api.getHealthTopN({ dim: opts.dim, by: opts.by, days, limit }),\n refetchInterval: 60_000,\n refetchIntervalInBackground: false,\n })\n}\n\nexport function useAudit(query: ListAuditQuery) {\n return useQuery<AuditResponse>({\n queryKey: observabilityKeys.audit(query),\n queryFn: () => api.getAudit(query),\n refetchInterval: 10_000,\n refetchIntervalInBackground: false,\n })\n}\n"],"names":["observabilityKeys","days","dim","by","limit","q","useHealthSummary","useQuery","api","useTopN","opts","useAudit","query"],"mappings":"mFA0BO,MAAMA,EAAoB,CAC/B,IAAS,CAAC,eAAe,EACzB,OAAUC,GAAiB,CAAC,gBAAiB,SAAUA,CAAI,EAC3D,KAAS,CAACC,EAAcC,EAAgBF,EAAcG,IACpD,CAAC,gBAAiB,OAAQF,EAAKC,EAAIF,EAAMG,CAAK,EAChD,MAAUC,GAAsB,CAAC,gBAAiB,QAASA,CAAC,CAC9D,EAEO,SAASC,EAAiBL,EAAc,CAC7C,OAAOM,EAAwB,CAC7B,SAAUP,EAAkB,OAAOC,CAAI,EACvC,QAAS,IAAMO,EAAI,iBAAiB,CAAE,KAAAP,EAAM,EAC5C,gBAAiB,IACjB,4BAA6B,EAAA,CAC9B,CACH,CAEO,SAASQ,EAAQC,EAAuE,CAC7F,MAAMT,EAAOS,EAAK,MAAQ,EACpBN,EAAQM,EAAK,OAAS,GAC5B,OAAOH,EAAuB,CAC5B,SAAUP,EAAkB,KAAKU,EAAK,IAAKA,EAAK,GAAIT,EAAMG,CAAK,EAC/D,QAAS,IAAMI,EAAI,cAAc,CAAE,IAAKE,EAAK,IAAK,GAAIA,EAAK,GAAI,KAAAT,EAAM,MAAAG,EAAO,EAC5E,gBAAiB,IACjB,4BAA6B,EAAA,CAC9B,CACH,CAEO,SAASO,EAASC,EAAuB,CAC9C,OAAOL,EAAwB,CAC7B,SAAUP,EAAkB,MAAMY,CAAK,EACvC,QAAS,IAAMJ,EAAI,SAASI,CAAK,EACjC,gBAAiB,IACjB,4BAA6B,EAAA,CAC9B,CACH"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{u}from"./useQuery-
|
|
2
|
-
//# sourceMappingURL=use-settings-
|
|
1
|
+
import{u}from"./useQuery-ByZlZXlw.js";import{ac as i,ab as s,r as n}from"./index-CGaI-i4K.js";const r={all:["settings"],env:e=>["settings","env",e],service:["settings","service"],admins:["settings","admins"],config:["settings","config"],workspaces:["settings","workspaces"]};function v(e={}){const t=!!e.reveal;return u({queryKey:r.env(t),queryFn:()=>n.getEnv({reveal:t})})}function l(){const e=i();return s({mutationFn:t=>n.updateEnv(t),onSuccess:()=>e.invalidateQueries({queryKey:["settings","env"]})})}function f(){return u({queryKey:r.service,queryFn:()=>n.getServiceStatus(),refetchInterval:5e3,refetchIntervalInBackground:!1})}function a(e,t){return s({mutationFn:e,onSuccess:()=>t.invalidateQueries({queryKey:r.service})})}function y(){const e=i();return a(()=>n.startService(),e)}function d(){const e=i();return a(()=>n.stopService(),e)}function m(){const e=i();return a(()=>n.restartService(),e)}function q(){return u({queryKey:r.admins,queryFn:()=>n.listAdminAllowlist()})}function g(){const e=i();return s({mutationFn:t=>n.addAdminAllowlist(t),onSuccess:()=>e.invalidateQueries({queryKey:r.admins})})}function p(){const e=i();return s({mutationFn:t=>n.removeAdminAllowlist(t),onSuccess:()=>e.invalidateQueries({queryKey:r.admins})})}function S(){return u({queryKey:r.config,queryFn:()=>n.getConfig()})}function F(){const e=i();return s({mutationFn:t=>n.updateConfig(t),onSuccess:()=>e.invalidateQueries({queryKey:r.config})})}function A(){return u({queryKey:r.workspaces,queryFn:()=>n.listWorkspacesFull()})}function h(){const e=i();return s({mutationFn:t=>n.upsertWorkspace(t),onSuccess:()=>e.invalidateQueries({queryKey:r.workspaces})})}function K(){return s({mutationFn:()=>n.startWechatQr()})}function w(e){return u({queryKey:["settings","wechat-qr",e??""],queryFn:()=>n.getWechatQrStatus({token:e}),enabled:!!e,refetchInterval:2e3,refetchIntervalInBackground:!1})}function Q(){return s({mutationFn:e=>n.testAcpAgent(e)})}function k(){return s({mutationFn:e=>n.discoverAcpAgents(e)})}function W(){return s({mutationFn:()=>n.testEmail()})}function E(){return u({queryKey:["settings","search","providers"],queryFn:()=>n.getSearchProviders()})}function I(){return s({mutationFn:e=>n.testSearchProvider(e)})}function C(){return u({queryKey:["settings","viewer-tunnel"],queryFn:()=>n.getViewerTunnel()})}export{q as a,S as b,k as c,v as d,p as e,m as f,E as g,f as h,y as i,K as j,d as k,Q as l,W as m,I as n,F as o,l as p,h as q,C as r,w as s,A as t,g as u};
|
|
2
|
+
//# sourceMappingURL=use-settings-CrkXdLrr.js.map
|
package/dist/web/public/assets/{use-settings-D2TsP4vN.js.map → use-settings-CrkXdLrr.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-settings-D2TsP4vN.js","sources":["../../src/hooks/use-settings.ts"],"sourcesContent":["/**\n * useSettings — react-query wrappers for the env editor + service\n * control surfaces.\n *\n * useEnv({ reveal }) — env file values (masked when\n * reveal is false)\n * useUpdateEnv() — bulk update\n * useServiceStatus() — pid / mode / uptime\n * useStart/Stop/Restart() — service lifecycle\n *\n * Service status polls every 5s while the page is foreground so\n * the operator sees restart progress live.\n */\n\nimport { useQueryClient, useQuery, useMutation } from '@tanstack/react-query'\nimport { api } from '@/lib/api/endpoints'\nimport type {\n ACPDiscoverBody,\n ACPDiscoverResponse,\n ACPTestBody,\n ACPTestResponse,\n EmailTestResponse,\n ViewerTunnelStatusResponse,\n AddAdminBody,\n AdminAllowlistResponse,\n AdminMutationResponse,\n AppConfig,\n EnvResponse,\n RemoveAdminBody,\n SearchProvidersResponse,\n SearchTestBody,\n SearchTestResponse,\n ServiceActionResponse,\n ServiceStatus,\n UpdateEnvBody,\n WechatQrStartResponse,\n WechatQrStatusResponse,\n WorkspaceConfig,\n} from '@/types/api'\n\nexport const settingsKeys = {\n all: ['settings'] as const,\n env: (reveal: boolean) => ['settings', 'env', reveal] as const,\n service: ['settings', 'service'] as const,\n admins: ['settings', 'admins'] as const,\n config: ['settings', 'config'] as const,\n workspaces: ['settings', 'workspaces'] as const,\n}\n\nexport function useEnv(opts: { reveal?: boolean } = {}) {\n const reveal = !!opts.reveal\n return useQuery<EnvResponse>({\n queryKey: settingsKeys.env(reveal),\n queryFn: () => api.getEnv({ reveal }),\n })\n}\n\nexport function useUpdateEnv() {\n const qc = useQueryClient()\n return useMutation<EnvResponse, Error, UpdateEnvBody>({\n mutationFn: (body) => api.updateEnv(body),\n onSuccess: () => qc.invalidateQueries({ queryKey: ['settings', 'env'] }),\n })\n}\n\nexport function useServiceStatus() {\n return useQuery<ServiceStatus>({\n queryKey: settingsKeys.service,\n queryFn: () => api.getServiceStatus(),\n refetchInterval: 5000,\n refetchIntervalInBackground: false,\n })\n}\n\nfunction makeServiceMutation(\n fn: () => Promise<ServiceActionResponse>,\n qc: ReturnType<typeof useQueryClient>,\n) {\n return useMutation<ServiceActionResponse, Error, void>({\n mutationFn: fn,\n onSuccess: () => qc.invalidateQueries({ queryKey: settingsKeys.service }),\n })\n}\n\nexport function useStartService() {\n const qc = useQueryClient()\n return makeServiceMutation(() => api.startService(), qc)\n}\n\nexport function useStopService() {\n const qc = useQueryClient()\n return makeServiceMutation(() => api.stopService(), qc)\n}\n\nexport function useRestartService() {\n const qc = useQueryClient()\n return makeServiceMutation(() => api.restartService(), qc)\n}\n\n/* ─────────────── Admin allowlist ─────────────── */\n\nexport function useAdminAllowlist() {\n return useQuery<AdminAllowlistResponse>({\n queryKey: settingsKeys.admins,\n queryFn: () => api.listAdminAllowlist(),\n })\n}\n\nexport function useAddAdmin() {\n const qc = useQueryClient()\n return useMutation<AdminMutationResponse, Error, AddAdminBody>({\n mutationFn: (body) => api.addAdminAllowlist(body),\n onSuccess: () => qc.invalidateQueries({ queryKey: settingsKeys.admins }),\n })\n}\n\nexport function useRemoveAdmin() {\n const qc = useQueryClient()\n return useMutation<AdminMutationResponse, Error, RemoveAdminBody>({\n mutationFn: (body) => api.removeAdminAllowlist(body),\n onSuccess: () => qc.invalidateQueries({ queryKey: settingsKeys.admins }),\n })\n}\n\n/* ─────────────── App config ─────────────── */\n\nexport function useConfig() {\n return useQuery<AppConfig>({\n queryKey: settingsKeys.config,\n queryFn: () => api.getConfig(),\n })\n}\n\nexport function useUpdateConfig() {\n const qc = useQueryClient()\n return useMutation<AppConfig, Error, Partial<AppConfig>>({\n mutationFn: (body) => api.updateConfig(body),\n onSuccess: () => qc.invalidateQueries({ queryKey: settingsKeys.config }),\n })\n}\n\n/* ─────────────── Workspaces ─────────────── */\n\nexport function useWorkspaces() {\n return useQuery<{ workspaces: WorkspaceConfig[] }>({\n queryKey: settingsKeys.workspaces,\n queryFn: () => api.listWorkspacesFull(),\n })\n}\n\nexport function useUpsertWorkspace() {\n const qc = useQueryClient()\n return useMutation<\n { ok: boolean; workspace: WorkspaceConfig },\n Error,\n WorkspaceConfig\n >({\n mutationFn: (body) => api.upsertWorkspace(body),\n onSuccess: () => qc.invalidateQueries({ queryKey: settingsKeys.workspaces }),\n })\n}\n\n/* ─────────────── WeChat QR ─────────────── */\n\nexport function useStartWechatQr() {\n return useMutation<WechatQrStartResponse, Error, void>({\n mutationFn: () => api.startWechatQr(),\n })\n}\n\n/** Poll the QR status every 2s while the modal is open. Caller\n * passes `token` once it has it from the start mutation; passing\n * null disables the polling. On status='confirmed' the backend\n * persists wechat-ilink → re-fetch config to update the toggle. */\nexport function useWechatQrStatus(token: string | null) {\n return useQuery<WechatQrStatusResponse>({\n queryKey: ['settings', 'wechat-qr', token ?? ''],\n queryFn: () => api.getWechatQrStatus({ token: token as string }),\n enabled: Boolean(token),\n refetchInterval: 2000,\n refetchIntervalInBackground: false,\n })\n}\n\n/** Probe a single ACP endpoint by fetching its manifest. Used by\n * the \"Test\" buttons in /settings/agents to validate an entry\n * before saving it to config. Errors flow back as ApiError. */\nexport function useTestAcp() {\n return useMutation<ACPTestResponse, Error, ACPTestBody>({\n mutationFn: (body) => api.testAcpAgent(body),\n })\n}\n\n/** Probe a `<baseUrl>/.well-known/acp` doc for an agent list. Used\n * by the \"Discover\" form in /settings/agents to bulk-import. The\n * caller still has to PUT /api/config { acpAgents } to persist. */\nexport function useDiscoverAcp() {\n return useMutation<ACPDiscoverResponse, Error, ACPDiscoverBody>({\n mutationFn: (body) => api.discoverAcpAgents(body),\n })\n}\n\n/** Verify SMTP creds in the running env. Doesn't actually send mail —\n * just `nodemailer.verify()`. Returns `{ ok, message }` on success or\n * throws ApiError otherwise (the route catches + toasts the message). */\nexport function useTestEmail() {\n return useMutation<EmailTestResponse, Error, void>({\n mutationFn: () => api.testEmail(),\n })\n}\n\n/** v1.2.126 — registered web_search providers + their current\n * availability + the resolved chain. Used by /settings/search to\n * paint per-provider rows and the chain preview at the top. Polls\n * once on mount; manual refetch after Save. */\nexport function useSearchProviders() {\n return useQuery<SearchProvidersResponse>({\n queryKey: ['settings', 'search', 'providers'],\n queryFn: () => api.getSearchProviders(),\n })\n}\n\n/** Ping one provider. Always resolves (no throw on provider error —\n * the response carries `{ ok, error }`); throws only on transport\n * error. The page renders the result inline beside the row. */\nexport function useTestSearchProvider() {\n return useMutation<SearchTestResponse, Error, SearchTestBody>({\n mutationFn: (body) => api.testSearchProvider(body),\n })\n}\n\n/** Live viewer config + cloudflared tunnel state. Used by the Viewer\n * card on /settings/viewer to render the \"Tunnel: running / URL: X /\n * binary: …\" panel. Operators click a manual Refresh button to\n * re-fetch — no auto-polling because tunnel state is essentially\n * static between operator actions (start / stop / link expiry). */\nexport function useViewerTunnel() {\n return useQuery<ViewerTunnelStatusResponse>({\n queryKey: ['settings', 'viewer-tunnel'],\n queryFn: () => api.getViewerTunnel(),\n })\n}\n"],"names":["settingsKeys","reveal","useEnv","opts","useQuery","api","useUpdateEnv","qc","useQueryClient","useMutation","body","useServiceStatus","makeServiceMutation","fn","useStartService","useStopService","useRestartService","useAdminAllowlist","useAddAdmin","useRemoveAdmin","useConfig","useUpdateConfig","useWorkspaces","useUpsertWorkspace","useStartWechatQr","useWechatQrStatus","token","useTestAcp","useDiscoverAcp","useTestEmail","useSearchProviders","useTestSearchProvider","useViewerTunnel"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"use-settings-CrkXdLrr.js","sources":["../../src/hooks/use-settings.ts"],"sourcesContent":["/**\n * useSettings — react-query wrappers for the env editor + service\n * control surfaces.\n *\n * useEnv({ reveal }) — env file values (masked when\n * reveal is false)\n * useUpdateEnv() — bulk update\n * useServiceStatus() — pid / mode / uptime\n * useStart/Stop/Restart() — service lifecycle\n *\n * Service status polls every 5s while the page is foreground so\n * the operator sees restart progress live.\n */\n\nimport { useQueryClient, useQuery, useMutation } from '@tanstack/react-query'\nimport { api } from '@/lib/api/endpoints'\nimport type {\n ACPDiscoverBody,\n ACPDiscoverResponse,\n ACPTestBody,\n ACPTestResponse,\n EmailTestResponse,\n ViewerTunnelStatusResponse,\n AddAdminBody,\n AdminAllowlistResponse,\n AdminMutationResponse,\n AppConfig,\n EnvResponse,\n RemoveAdminBody,\n SearchProvidersResponse,\n SearchTestBody,\n SearchTestResponse,\n ServiceActionResponse,\n ServiceStatus,\n UpdateEnvBody,\n WechatQrStartResponse,\n WechatQrStatusResponse,\n WorkspaceConfig,\n} from '@/types/api'\n\nexport const settingsKeys = {\n all: ['settings'] as const,\n env: (reveal: boolean) => ['settings', 'env', reveal] as const,\n service: ['settings', 'service'] as const,\n admins: ['settings', 'admins'] as const,\n config: ['settings', 'config'] as const,\n workspaces: ['settings', 'workspaces'] as const,\n}\n\nexport function useEnv(opts: { reveal?: boolean } = {}) {\n const reveal = !!opts.reveal\n return useQuery<EnvResponse>({\n queryKey: settingsKeys.env(reveal),\n queryFn: () => api.getEnv({ reveal }),\n })\n}\n\nexport function useUpdateEnv() {\n const qc = useQueryClient()\n return useMutation<EnvResponse, Error, UpdateEnvBody>({\n mutationFn: (body) => api.updateEnv(body),\n onSuccess: () => qc.invalidateQueries({ queryKey: ['settings', 'env'] }),\n })\n}\n\nexport function useServiceStatus() {\n return useQuery<ServiceStatus>({\n queryKey: settingsKeys.service,\n queryFn: () => api.getServiceStatus(),\n refetchInterval: 5000,\n refetchIntervalInBackground: false,\n })\n}\n\nfunction makeServiceMutation(\n fn: () => Promise<ServiceActionResponse>,\n qc: ReturnType<typeof useQueryClient>,\n) {\n return useMutation<ServiceActionResponse, Error, void>({\n mutationFn: fn,\n onSuccess: () => qc.invalidateQueries({ queryKey: settingsKeys.service }),\n })\n}\n\nexport function useStartService() {\n const qc = useQueryClient()\n return makeServiceMutation(() => api.startService(), qc)\n}\n\nexport function useStopService() {\n const qc = useQueryClient()\n return makeServiceMutation(() => api.stopService(), qc)\n}\n\nexport function useRestartService() {\n const qc = useQueryClient()\n return makeServiceMutation(() => api.restartService(), qc)\n}\n\n/* ─────────────── Admin allowlist ─────────────── */\n\nexport function useAdminAllowlist() {\n return useQuery<AdminAllowlistResponse>({\n queryKey: settingsKeys.admins,\n queryFn: () => api.listAdminAllowlist(),\n })\n}\n\nexport function useAddAdmin() {\n const qc = useQueryClient()\n return useMutation<AdminMutationResponse, Error, AddAdminBody>({\n mutationFn: (body) => api.addAdminAllowlist(body),\n onSuccess: () => qc.invalidateQueries({ queryKey: settingsKeys.admins }),\n })\n}\n\nexport function useRemoveAdmin() {\n const qc = useQueryClient()\n return useMutation<AdminMutationResponse, Error, RemoveAdminBody>({\n mutationFn: (body) => api.removeAdminAllowlist(body),\n onSuccess: () => qc.invalidateQueries({ queryKey: settingsKeys.admins }),\n })\n}\n\n/* ─────────────── App config ─────────────── */\n\nexport function useConfig() {\n return useQuery<AppConfig>({\n queryKey: settingsKeys.config,\n queryFn: () => api.getConfig(),\n })\n}\n\nexport function useUpdateConfig() {\n const qc = useQueryClient()\n return useMutation<AppConfig, Error, Partial<AppConfig>>({\n mutationFn: (body) => api.updateConfig(body),\n onSuccess: () => qc.invalidateQueries({ queryKey: settingsKeys.config }),\n })\n}\n\n/* ─────────────── Workspaces ─────────────── */\n\nexport function useWorkspaces() {\n return useQuery<{ workspaces: WorkspaceConfig[] }>({\n queryKey: settingsKeys.workspaces,\n queryFn: () => api.listWorkspacesFull(),\n })\n}\n\nexport function useUpsertWorkspace() {\n const qc = useQueryClient()\n return useMutation<\n { ok: boolean; workspace: WorkspaceConfig },\n Error,\n WorkspaceConfig\n >({\n mutationFn: (body) => api.upsertWorkspace(body),\n onSuccess: () => qc.invalidateQueries({ queryKey: settingsKeys.workspaces }),\n })\n}\n\n/* ─────────────── WeChat QR ─────────────── */\n\nexport function useStartWechatQr() {\n return useMutation<WechatQrStartResponse, Error, void>({\n mutationFn: () => api.startWechatQr(),\n })\n}\n\n/** Poll the QR status every 2s while the modal is open. Caller\n * passes `token` once it has it from the start mutation; passing\n * null disables the polling. On status='confirmed' the backend\n * persists wechat-ilink → re-fetch config to update the toggle. */\nexport function useWechatQrStatus(token: string | null) {\n return useQuery<WechatQrStatusResponse>({\n queryKey: ['settings', 'wechat-qr', token ?? ''],\n queryFn: () => api.getWechatQrStatus({ token: token as string }),\n enabled: Boolean(token),\n refetchInterval: 2000,\n refetchIntervalInBackground: false,\n })\n}\n\n/** Probe a single ACP endpoint by fetching its manifest. Used by\n * the \"Test\" buttons in /settings/agents to validate an entry\n * before saving it to config. Errors flow back as ApiError. */\nexport function useTestAcp() {\n return useMutation<ACPTestResponse, Error, ACPTestBody>({\n mutationFn: (body) => api.testAcpAgent(body),\n })\n}\n\n/** Probe a `<baseUrl>/.well-known/acp` doc for an agent list. Used\n * by the \"Discover\" form in /settings/agents to bulk-import. The\n * caller still has to PUT /api/config { acpAgents } to persist. */\nexport function useDiscoverAcp() {\n return useMutation<ACPDiscoverResponse, Error, ACPDiscoverBody>({\n mutationFn: (body) => api.discoverAcpAgents(body),\n })\n}\n\n/** Verify SMTP creds in the running env. Doesn't actually send mail —\n * just `nodemailer.verify()`. Returns `{ ok, message }` on success or\n * throws ApiError otherwise (the route catches + toasts the message). */\nexport function useTestEmail() {\n return useMutation<EmailTestResponse, Error, void>({\n mutationFn: () => api.testEmail(),\n })\n}\n\n/** v1.2.126 — registered web_search providers + their current\n * availability + the resolved chain. Used by /settings/search to\n * paint per-provider rows and the chain preview at the top. Polls\n * once on mount; manual refetch after Save. */\nexport function useSearchProviders() {\n return useQuery<SearchProvidersResponse>({\n queryKey: ['settings', 'search', 'providers'],\n queryFn: () => api.getSearchProviders(),\n })\n}\n\n/** Ping one provider. Always resolves (no throw on provider error —\n * the response carries `{ ok, error }`); throws only on transport\n * error. The page renders the result inline beside the row. */\nexport function useTestSearchProvider() {\n return useMutation<SearchTestResponse, Error, SearchTestBody>({\n mutationFn: (body) => api.testSearchProvider(body),\n })\n}\n\n/** Live viewer config + cloudflared tunnel state. Used by the Viewer\n * card on /settings/viewer to render the \"Tunnel: running / URL: X /\n * binary: …\" panel. Operators click a manual Refresh button to\n * re-fetch — no auto-polling because tunnel state is essentially\n * static between operator actions (start / stop / link expiry). */\nexport function useViewerTunnel() {\n return useQuery<ViewerTunnelStatusResponse>({\n queryKey: ['settings', 'viewer-tunnel'],\n queryFn: () => api.getViewerTunnel(),\n })\n}\n"],"names":["settingsKeys","reveal","useEnv","opts","useQuery","api","useUpdateEnv","qc","useQueryClient","useMutation","body","useServiceStatus","makeServiceMutation","fn","useStartService","useStopService","useRestartService","useAdminAllowlist","useAddAdmin","useRemoveAdmin","useConfig","useUpdateConfig","useWorkspaces","useUpsertWorkspace","useStartWechatQr","useWechatQrStatus","token","useTestAcp","useDiscoverAcp","useTestEmail","useSearchProviders","useTestSearchProvider","useViewerTunnel"],"mappings":"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"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{u}from"./useQuery-
|
|
2
|
-
//# sourceMappingURL=use-workspace-
|
|
1
|
+
import{u}from"./useQuery-ByZlZXlw.js";import{ac as o,ab as i,r as a}from"./index-CGaI-i4K.js";const t={all:["workspace"],files:(e,s)=>["workspace","files",e,s]};function y(){return u({queryKey:["agents","status"],queryFn:()=>a.getAgentsStatus()})}function f(e,s,r={}){return u({queryKey:t.files(e,s),queryFn:()=>a.getWorkspaceFiles({agent:e,...s?{path:s}:{}}),enabled:r.enabled!==!1&&!!e})}function p(){const e=o();return i({mutationFn:({agent:s,path:r,body:n})=>a.writeWorkspaceFile({agent:s,path:r},n),onSuccess:()=>e.invalidateQueries({queryKey:t.all})})}export{f as a,p as b,y as u};
|
|
2
|
+
//# sourceMappingURL=use-workspace-Csq4sxlY.js.map
|
package/dist/web/public/assets/{use-workspace-BobEMtXw.js.map → use-workspace-Csq4sxlY.js.map}
RENAMED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"use-workspace-
|
|
1
|
+
{"version":3,"file":"use-workspace-Csq4sxlY.js","sources":["../../src/hooks/use-workspace.ts"],"sourcesContent":["/**\n * useWorkspace — agent picker source + per-agent file browser +\n * write mutation.\n *\n * useAgentsStatus() — populate the picker\n * useWorkspaceFiles(agent, path) — dir listing or file\n * content (discriminated\n * by `type`)\n * useWriteWorkspaceFile() — PUT a file\n *\n * Both reads stay cached at the default 30s staleTime; the write\n * invalidates so the saved size/mtime re-paint immediately.\n */\n\nimport { useQueryClient, useQuery, useMutation } from '@tanstack/react-query'\nimport { api } from '@/lib/api/endpoints'\nimport type {\n WorkspaceFilesResponse,\n WriteWorkspaceFileBody,\n WriteWorkspaceFileResponse,\n} from '@/types/api'\n\nexport const workspaceKeys = {\n all: ['workspace'] as const,\n files: (agent: string, path: string) =>\n ['workspace', 'files', agent, path] as const,\n}\n\nexport function useAgentsStatus() {\n return useQuery<Record<string, boolean>>({\n queryKey: ['agents', 'status'],\n queryFn: () => api.getAgentsStatus(),\n })\n}\n\nexport function useWorkspaceFiles(\n agent: string,\n path: string,\n opts: { enabled?: boolean } = {},\n) {\n return useQuery<WorkspaceFilesResponse>({\n queryKey: workspaceKeys.files(agent, path),\n queryFn: () => api.getWorkspaceFiles({ agent, ...(path ? { path } : {}) }),\n enabled: opts.enabled !== false && Boolean(agent),\n })\n}\n\nexport function useInvalidateWorkspace() {\n const qc = useQueryClient()\n return () => qc.invalidateQueries({ queryKey: workspaceKeys.all })\n}\n\nexport function useWriteWorkspaceFile() {\n const qc = useQueryClient()\n return useMutation<\n WriteWorkspaceFileResponse,\n Error,\n { agent: string; path: string; body: WriteWorkspaceFileBody }\n >({\n mutationFn: ({ agent, path, body }) =>\n api.writeWorkspaceFile({ agent, path }, body),\n onSuccess: () => qc.invalidateQueries({ queryKey: workspaceKeys.all }),\n })\n}\n"],"names":["workspaceKeys","agent","path","useAgentsStatus","useQuery","api","useWorkspaceFiles","opts","useWriteWorkspaceFile","qc","useQueryClient","useMutation","body"],"mappings":"8FAsBO,MAAMA,EAAgB,CAC3B,IAAO,CAAC,WAAW,EACnB,MAAO,CAACC,EAAeC,IACrB,CAAC,YAAa,QAASD,EAAOC,CAAI,CACtC,EAEO,SAASC,GAAkB,CAChC,OAAOC,EAAkC,CACvC,SAAU,CAAC,SAAU,QAAQ,EAC7B,QAAS,IAAMC,EAAI,gBAAA,CAAgB,CACpC,CACH,CAEO,SAASC,EACdL,EACAC,EACAK,EAA8B,CAAA,EAC9B,CACA,OAAOH,EAAiC,CACtC,SAAUJ,EAAc,MAAMC,EAAOC,CAAI,EACzC,QAAS,IAAMG,EAAI,kBAAkB,CAAE,MAAAJ,EAAO,GAAIC,EAAO,CAAE,KAAAA,GAAS,CAAA,EAAK,EACzE,QAASK,EAAK,UAAY,IAAS,EAAQN,CAAK,CACjD,CACH,CAOO,SAASO,GAAwB,CACtC,MAAMC,EAAKC,EAAA,EACX,OAAOC,EAIL,CACA,WAAY,CAAC,CAAE,MAAAV,EAAO,KAAAC,EAAM,KAAAU,CAAA,IAC1BP,EAAI,mBAAmB,CAAE,MAAAJ,EAAO,KAAAC,CAAA,EAAQU,CAAI,EAC9C,UAAW,IAAMH,EAAG,kBAAkB,CAAE,SAAUT,EAAc,IAAK,CAAA,CACtE,CACH"}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{p as J,Y as N,_ as c,a0 as Q,$ as g,W as _,J as x,U as B,a2 as X,a3 as I,M as Y,K as Z,Z as A,X as z,a1 as V,ac as $}from"./index-
|
|
2
|
-
//# sourceMappingURL=useQuery-
|
|
1
|
+
import{p as J,Y as N,_ as c,a0 as Q,$ as g,W as _,J as x,U as B,a2 as X,a3 as I,M as Y,K as Z,Z as A,X as z,a1 as V,ac as $}from"./index-CGaI-i4K.js";import{e as d}from"./react-C9F3QeMB.js";var G=class extends J{constructor(t,e){super(),this.options=e,this.#s=t,this.#r=null,this.#i=N(),this.bindMethods(),this.setOptions(e)}#s;#t=void 0;#p=void 0;#e=void 0;#a;#u;#i;#r;#v;#l;#d;#o;#h;#n;#f=new Set;bindMethods(){this.refetch=this.refetch.bind(this)}onSubscribe(){this.listeners.size===1&&(this.#t.addObserver(this),j(this.#t,this.options)?this.#c():this.updateResult(),this.#g())}onUnsubscribe(){this.hasListeners()||this.destroy()}shouldFetchOnReconnect(){return P(this.#t,this.options,this.options.refetchOnReconnect)}shouldFetchOnWindowFocus(){return P(this.#t,this.options,this.options.refetchOnWindowFocus)}destroy(){this.listeners=new Set,this.#y(),this.#S(),this.#t.removeObserver(this)}setOptions(t){const e=this.options,s=this.#t;if(this.options=this.#s.defaultQueryOptions(t),this.options.enabled!==void 0&&typeof this.options.enabled!="boolean"&&typeof this.options.enabled!="function"&&typeof c(this.options.enabled,this.#t)!="boolean")throw new Error("Expected enabled to be a boolean or a callback that returns a boolean");this.#O(),this.#t.setOptions(this.options),e._defaulted&&!Q(this.options,e)&&this.#s.getQueryCache().notify({type:"observerOptionsUpdated",query:this.#t,observer:this});const i=this.hasListeners();i&&H(this.#t,s,this.options,e)&&this.#c(),this.updateResult(),i&&(this.#t!==s||c(this.options.enabled,this.#t)!==c(e.enabled,this.#t)||g(this.options.staleTime,this.#t)!==g(e.staleTime,this.#t))&&this.#b();const n=this.#R();i&&(this.#t!==s||c(this.options.enabled,this.#t)!==c(e.enabled,this.#t)||n!==this.#n)&&this.#m(n)}getOptimisticResult(t){const e=this.#s.getQueryCache().build(this.#s,t),s=this.createResult(e,t);return tt(this,s)&&(this.#e=s,this.#u=this.options,this.#a=this.#t.state),s}getCurrentResult(){return this.#e}trackResult(t,e){return new Proxy(t,{get:(s,i)=>(this.trackProp(i),e?.(i),i==="promise"&&(this.trackProp("data"),!this.options.experimental_prefetchInRender&&this.#i.status==="pending"&&this.#i.reject(new Error("experimental_prefetchInRender feature flag is not enabled"))),Reflect.get(s,i))})}trackProp(t){this.#f.add(t)}getCurrentQuery(){return this.#t}refetch({...t}={}){return this.fetch({...t})}fetchOptimistic(t){const e=this.#s.defaultQueryOptions(t),s=this.#s.getQueryCache().build(this.#s,e);return s.fetch().then(()=>this.createResult(s,e))}fetch(t){return this.#c({...t,cancelRefetch:t.cancelRefetch??!0}).then(()=>(this.updateResult(),this.#e))}#c(t){this.#O();let e=this.#t.fetch(this.options,t);return t?.throwOnError||(e=e.catch(_)),e}#b(){this.#y();const t=g(this.options.staleTime,this.#t);if(x.isServer()||this.#e.isStale||!B(t))return;const s=X(this.#e.dataUpdatedAt,t)+1;this.#o=I.setTimeout(()=>{this.#e.isStale||this.updateResult()},s)}#R(){return(typeof this.options.refetchInterval=="function"?this.options.refetchInterval(this.#t):this.options.refetchInterval)??!1}#m(t){this.#S(),this.#n=t,!(x.isServer()||c(this.options.enabled,this.#t)===!1||!B(this.#n)||this.#n===0)&&(this.#h=I.setInterval(()=>{(this.options.refetchIntervalInBackground||Y.isFocused())&&this.#c()},this.#n))}#g(){this.#b(),this.#m(this.#R())}#y(){this.#o!==void 0&&(I.clearTimeout(this.#o),this.#o=void 0)}#S(){this.#h!==void 0&&(I.clearInterval(this.#h),this.#h=void 0)}createResult(t,e){const s=this.#t,i=this.options,n=this.#e,u=this.#a,a=this.#u,b=t!==s?t.state:this.#p,{state:y}=t;let r={...y},l=!1,o;if(e._optimisticResults){const h=this.hasListeners(),m=!h&&j(t,e),O=h&&H(t,s,e,i);(m||O)&&(r={...r,...Z(y.data,t.options)}),e._optimisticResults==="isRestoring"&&(r.fetchStatus="idle")}let{error:R,errorUpdatedAt:S,status:v}=r;o=r.data;let F=!1;if(e.placeholderData!==void 0&&o===void 0&&v==="pending"){let h;n?.isPlaceholderData&&e.placeholderData===a?.placeholderData?(h=n.data,F=!0):h=typeof e.placeholderData=="function"?e.placeholderData(this.#d?.state.data,this.#d):e.placeholderData,h!==void 0&&(v="success",o=A(n?.data,h,e),l=!0)}if(e.select&&o!==void 0&&!F)if(n&&o===u?.data&&e.select===this.#v)o=this.#l;else try{this.#v=e.select,o=e.select(o),o=A(n?.data,o,e),this.#l=o,this.#r=null}catch(h){this.#r=h}this.#r&&(R=this.#r,o=this.#l,S=Date.now(),v="error");const T=r.fetchStatus==="fetching",w=v==="pending",M=v==="error",D=w&&T,k=o!==void 0,p={status:v,fetchStatus:r.fetchStatus,isPending:w,isSuccess:v==="success",isError:M,isInitialLoading:D,isLoading:D,data:o,dataUpdatedAt:r.dataUpdatedAt,error:R,errorUpdatedAt:S,failureCount:r.fetchFailureCount,failureReason:r.fetchFailureReason,errorUpdateCount:r.errorUpdateCount,isFetched:t.isFetched(),isFetchedAfterMount:r.dataUpdateCount>b.dataUpdateCount||r.errorUpdateCount>b.errorUpdateCount,isFetching:T,isRefetching:T&&!w,isLoadingError:M&&!k,isPaused:r.fetchStatus==="paused",isPlaceholderData:l,isRefetchError:M&&k,isStale:U(t,e),refetch:this.refetch,promise:this.#i,isEnabled:c(e.enabled,t)!==!1};if(this.options.experimental_prefetchInRender){const h=p.data!==void 0,m=p.status==="error"&&!h,O=C=>{m?C.reject(p.error):h&&C.resolve(p.data)},L=()=>{const C=this.#i=p.promise=N();O(C)},E=this.#i;switch(E.status){case"pending":t.queryHash===s.queryHash&&O(E);break;case"fulfilled":(m||p.data!==E.value)&&L();break;case"rejected":(!m||p.error!==E.reason)&&L();break}}return p}updateResult(){const t=this.#e,e=this.createResult(this.#t,this.options);if(this.#a=this.#t.state,this.#u=this.options,this.#a.data!==void 0&&(this.#d=this.#t),Q(e,t))return;this.#e=e;const s=()=>{if(!t)return!0;const{notifyOnChangeProps:i}=this.options,n=typeof i=="function"?i():i;if(n==="all"||!n&&!this.#f.size)return!0;const u=new Set(n??this.#f);return this.options.throwOnError&&u.add("error"),Object.keys(this.#e).some(a=>{const f=a;return this.#e[f]!==t[f]&&u.has(f)})};this.#E({listeners:s()})}#O(){const t=this.#s.getQueryCache().build(this.#s,this.options);if(t===this.#t)return;const e=this.#t;this.#t=t,this.#p=t.state,this.hasListeners()&&(e?.removeObserver(this),t.addObserver(this))}onQueryUpdate(){this.updateResult(),this.hasListeners()&&this.#g()}#E(t){z.batch(()=>{t.listeners&&this.listeners.forEach(e=>{e(this.#e)}),this.#s.getQueryCache().notify({query:this.#t,type:"observerResultsUpdated"})})}};function q(t,e){return c(e.enabled,t)!==!1&&t.state.data===void 0&&!(t.state.status==="error"&&c(e.retryOnMount,t)===!1)}function j(t,e){return q(t,e)||t.state.data!==void 0&&P(t,e,e.refetchOnMount)}function P(t,e,s){if(c(e.enabled,t)!==!1&&g(e.staleTime,t)!=="static"){const i=typeof s=="function"?s(t):s;return i==="always"||i!==!1&&U(t,e)}return!1}function H(t,e,s,i){return(t!==e||c(i.enabled,t)===!1)&&(!s.suspense||t.state.status!=="error")&&U(t,s)}function U(t,e){return c(e.enabled,t)!==!1&&t.isStaleByTime(g(e.staleTime,t))}function tt(t,e){return!Q(t.getCurrentResult(),e)}var K=d.createContext(!1),et=()=>d.useContext(K);K.Provider;function st(){let t=!1;return{clearReset:()=>{t=!1},reset:()=>{t=!0},isReset:()=>t}}var it=d.createContext(st()),rt=()=>d.useContext(it),nt=(t,e,s)=>{const i=s?.state.error&&typeof t.throwOnError=="function"?V(t.throwOnError,[s.state.error,s]):t.throwOnError;(t.suspense||t.experimental_prefetchInRender||i)&&(e.isReset()||(t.retryOnMount=!1))},at=t=>{d.useEffect(()=>{t.clearReset()},[t])},ot=({result:t,errorResetBoundary:e,throwOnError:s,query:i,suspense:n})=>t.isError&&!e.isReset()&&!t.isFetching&&i&&(n&&t.data===void 0||V(s,[t.error,i])),ht=t=>{if(t.suspense){const s=n=>n==="static"?n:Math.max(n??1e3,1e3),i=t.staleTime;t.staleTime=typeof i=="function"?(...n)=>s(i(...n)):s(i),typeof t.gcTime=="number"&&(t.gcTime=Math.max(t.gcTime,1e3))}},ct=(t,e)=>t.isLoading&&t.isFetching&&!e,ut=(t,e)=>t?.suspense&&e.isPending,W=(t,e,s)=>e.fetchOptimistic(t).catch(()=>{s.clearReset()});function lt(t,e,s){const i=et(),n=rt(),u=$(),a=u.defaultQueryOptions(t);u.getDefaultOptions().queries?._experimental_beforeQuery?.(a);const f=u.getQueryCache().get(a.queryHash),b=t.subscribed!==!1;a._optimisticResults=i?"isRestoring":b?"optimistic":void 0,ht(a),nt(a,n,f),at(n);const y=!u.getQueryCache().get(a.queryHash),[r]=d.useState(()=>new e(u,a)),l=r.getOptimisticResult(a),o=!i&&b;if(d.useSyncExternalStore(d.useCallback(R=>{const S=o?r.subscribe(z.batchCalls(R)):_;return r.updateResult(),S},[r,o]),()=>r.getCurrentResult(),()=>r.getCurrentResult()),d.useEffect(()=>{r.setOptions(a)},[a,r]),ut(a,l))throw W(a,r,n);if(ot({result:l,errorResetBoundary:n,throwOnError:a.throwOnError,query:f,suspense:a.suspense}))throw l.error;return u.getDefaultOptions().queries?._experimental_afterQuery?.(a,l),a.experimental_prefetchInRender&&!x.isServer()&&ct(l,i)&&(y?W(a,r,n):f?.promise)?.catch(_).finally(()=>{r.updateResult()}),a.notifyOnChangeProps?l:r.trackResult(l)}function vt(t,e){return lt(t,G)}export{vt as u};
|
|
2
|
+
//# sourceMappingURL=useQuery-ByZlZXlw.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useQuery-B6dy499I.js","sources":["../../node_modules/@tanstack/query-core/build/modern/queryObserver.js","../../node_modules/@tanstack/react-query/build/modern/IsRestoringProvider.js","../../node_modules/@tanstack/react-query/build/modern/QueryErrorResetBoundary.js","../../node_modules/@tanstack/react-query/build/modern/errorBoundaryUtils.js","../../node_modules/@tanstack/react-query/build/modern/suspense.js","../../node_modules/@tanstack/react-query/build/modern/useBaseQuery.js","../../node_modules/@tanstack/react-query/build/modern/useQuery.js"],"sourcesContent":["// src/queryObserver.ts\nimport { focusManager } from \"./focusManager.js\";\nimport { environmentManager } from \"./environmentManager.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { fetchState } from \"./query.js\";\nimport { Subscribable } from \"./subscribable.js\";\nimport { pendingThenable } from \"./thenable.js\";\nimport {\n isValidTimeout,\n noop,\n replaceData,\n resolveQueryBoolean,\n resolveStaleTime,\n shallowEqualObjects,\n timeUntilStale\n} from \"./utils.js\";\nimport { timeoutManager } from \"./timeoutManager.js\";\nvar QueryObserver = class extends Subscribable {\n constructor(client, options) {\n super();\n this.options = options;\n this.#client = client;\n this.#selectError = null;\n this.#currentThenable = pendingThenable();\n this.bindMethods();\n this.setOptions(options);\n }\n #client;\n #currentQuery = void 0;\n #currentQueryInitialState = void 0;\n #currentResult = void 0;\n #currentResultState;\n #currentResultOptions;\n #currentThenable;\n #selectError;\n #selectFn;\n #selectResult;\n // This property keeps track of the last query with defined data.\n // It will be used to pass the previous data and query to the placeholder function between renders.\n #lastQueryWithDefinedData;\n #staleTimeoutId;\n #refetchIntervalId;\n #currentRefetchInterval;\n #trackedProps = /* @__PURE__ */ new Set();\n bindMethods() {\n this.refetch = this.refetch.bind(this);\n }\n onSubscribe() {\n if (this.listeners.size === 1) {\n this.#currentQuery.addObserver(this);\n if (shouldFetchOnMount(this.#currentQuery, this.options)) {\n this.#executeFetch();\n } else {\n this.updateResult();\n }\n this.#updateTimers();\n }\n }\n onUnsubscribe() {\n if (!this.hasListeners()) {\n this.destroy();\n }\n }\n shouldFetchOnReconnect() {\n return shouldFetchOn(\n this.#currentQuery,\n this.options,\n this.options.refetchOnReconnect\n );\n }\n shouldFetchOnWindowFocus() {\n return shouldFetchOn(\n this.#currentQuery,\n this.options,\n this.options.refetchOnWindowFocus\n );\n }\n destroy() {\n this.listeners = /* @__PURE__ */ new Set();\n this.#clearStaleTimeout();\n this.#clearRefetchInterval();\n this.#currentQuery.removeObserver(this);\n }\n setOptions(options) {\n const prevOptions = this.options;\n const prevQuery = this.#currentQuery;\n this.options = this.#client.defaultQueryOptions(options);\n if (this.options.enabled !== void 0 && typeof this.options.enabled !== \"boolean\" && typeof this.options.enabled !== \"function\" && typeof resolveQueryBoolean(this.options.enabled, this.#currentQuery) !== \"boolean\") {\n throw new Error(\n \"Expected enabled to be a boolean or a callback that returns a boolean\"\n );\n }\n this.#updateQuery();\n this.#currentQuery.setOptions(this.options);\n if (prevOptions._defaulted && !shallowEqualObjects(this.options, prevOptions)) {\n this.#client.getQueryCache().notify({\n type: \"observerOptionsUpdated\",\n query: this.#currentQuery,\n observer: this\n });\n }\n const mounted = this.hasListeners();\n if (mounted && shouldFetchOptionally(\n this.#currentQuery,\n prevQuery,\n this.options,\n prevOptions\n )) {\n this.#executeFetch();\n }\n this.updateResult();\n if (mounted && (this.#currentQuery !== prevQuery || resolveQueryBoolean(this.options.enabled, this.#currentQuery) !== resolveQueryBoolean(prevOptions.enabled, this.#currentQuery) || resolveStaleTime(this.options.staleTime, this.#currentQuery) !== resolveStaleTime(prevOptions.staleTime, this.#currentQuery))) {\n this.#updateStaleTimeout();\n }\n const nextRefetchInterval = this.#computeRefetchInterval();\n if (mounted && (this.#currentQuery !== prevQuery || resolveQueryBoolean(this.options.enabled, this.#currentQuery) !== resolveQueryBoolean(prevOptions.enabled, this.#currentQuery) || nextRefetchInterval !== this.#currentRefetchInterval)) {\n this.#updateRefetchInterval(nextRefetchInterval);\n }\n }\n getOptimisticResult(options) {\n const query = this.#client.getQueryCache().build(this.#client, options);\n const result = this.createResult(query, options);\n if (shouldAssignObserverCurrentProperties(this, result)) {\n this.#currentResult = result;\n this.#currentResultOptions = this.options;\n this.#currentResultState = this.#currentQuery.state;\n }\n return result;\n }\n getCurrentResult() {\n return this.#currentResult;\n }\n trackResult(result, onPropTracked) {\n return new Proxy(result, {\n get: (target, key) => {\n this.trackProp(key);\n onPropTracked?.(key);\n if (key === \"promise\") {\n this.trackProp(\"data\");\n if (!this.options.experimental_prefetchInRender && this.#currentThenable.status === \"pending\") {\n this.#currentThenable.reject(\n new Error(\n \"experimental_prefetchInRender feature flag is not enabled\"\n )\n );\n }\n }\n return Reflect.get(target, key);\n }\n });\n }\n trackProp(key) {\n this.#trackedProps.add(key);\n }\n getCurrentQuery() {\n return this.#currentQuery;\n }\n refetch({ ...options } = {}) {\n return this.fetch({\n ...options\n });\n }\n fetchOptimistic(options) {\n const defaultedOptions = this.#client.defaultQueryOptions(options);\n const query = this.#client.getQueryCache().build(this.#client, defaultedOptions);\n return query.fetch().then(() => this.createResult(query, defaultedOptions));\n }\n fetch(fetchOptions) {\n return this.#executeFetch({\n ...fetchOptions,\n cancelRefetch: fetchOptions.cancelRefetch ?? true\n }).then(() => {\n this.updateResult();\n return this.#currentResult;\n });\n }\n #executeFetch(fetchOptions) {\n this.#updateQuery();\n let promise = this.#currentQuery.fetch(\n this.options,\n fetchOptions\n );\n if (!fetchOptions?.throwOnError) {\n promise = promise.catch(noop);\n }\n return promise;\n }\n #updateStaleTimeout() {\n this.#clearStaleTimeout();\n const staleTime = resolveStaleTime(\n this.options.staleTime,\n this.#currentQuery\n );\n if (environmentManager.isServer() || this.#currentResult.isStale || !isValidTimeout(staleTime)) {\n return;\n }\n const time = timeUntilStale(this.#currentResult.dataUpdatedAt, staleTime);\n const timeout = time + 1;\n this.#staleTimeoutId = timeoutManager.setTimeout(() => {\n if (!this.#currentResult.isStale) {\n this.updateResult();\n }\n }, timeout);\n }\n #computeRefetchInterval() {\n return (typeof this.options.refetchInterval === \"function\" ? this.options.refetchInterval(this.#currentQuery) : this.options.refetchInterval) ?? false;\n }\n #updateRefetchInterval(nextInterval) {\n this.#clearRefetchInterval();\n this.#currentRefetchInterval = nextInterval;\n if (environmentManager.isServer() || resolveQueryBoolean(this.options.enabled, this.#currentQuery) === false || !isValidTimeout(this.#currentRefetchInterval) || this.#currentRefetchInterval === 0) {\n return;\n }\n this.#refetchIntervalId = timeoutManager.setInterval(() => {\n if (this.options.refetchIntervalInBackground || focusManager.isFocused()) {\n this.#executeFetch();\n }\n }, this.#currentRefetchInterval);\n }\n #updateTimers() {\n this.#updateStaleTimeout();\n this.#updateRefetchInterval(this.#computeRefetchInterval());\n }\n #clearStaleTimeout() {\n if (this.#staleTimeoutId !== void 0) {\n timeoutManager.clearTimeout(this.#staleTimeoutId);\n this.#staleTimeoutId = void 0;\n }\n }\n #clearRefetchInterval() {\n if (this.#refetchIntervalId !== void 0) {\n timeoutManager.clearInterval(this.#refetchIntervalId);\n this.#refetchIntervalId = void 0;\n }\n }\n createResult(query, options) {\n const prevQuery = this.#currentQuery;\n const prevOptions = this.options;\n const prevResult = this.#currentResult;\n const prevResultState = this.#currentResultState;\n const prevResultOptions = this.#currentResultOptions;\n const queryChange = query !== prevQuery;\n const queryInitialState = queryChange ? query.state : this.#currentQueryInitialState;\n const { state } = query;\n let newState = { ...state };\n let isPlaceholderData = false;\n let data;\n if (options._optimisticResults) {\n const mounted = this.hasListeners();\n const fetchOnMount = !mounted && shouldFetchOnMount(query, options);\n const fetchOptionally = mounted && shouldFetchOptionally(query, prevQuery, options, prevOptions);\n if (fetchOnMount || fetchOptionally) {\n newState = {\n ...newState,\n ...fetchState(state.data, query.options)\n };\n }\n if (options._optimisticResults === \"isRestoring\") {\n newState.fetchStatus = \"idle\";\n }\n }\n let { error, errorUpdatedAt, status } = newState;\n data = newState.data;\n let skipSelect = false;\n if (options.placeholderData !== void 0 && data === void 0 && status === \"pending\") {\n let placeholderData;\n if (prevResult?.isPlaceholderData && options.placeholderData === prevResultOptions?.placeholderData) {\n placeholderData = prevResult.data;\n skipSelect = true;\n } else {\n placeholderData = typeof options.placeholderData === \"function\" ? options.placeholderData(\n this.#lastQueryWithDefinedData?.state.data,\n this.#lastQueryWithDefinedData\n ) : options.placeholderData;\n }\n if (placeholderData !== void 0) {\n status = \"success\";\n data = replaceData(\n prevResult?.data,\n placeholderData,\n options\n );\n isPlaceholderData = true;\n }\n }\n if (options.select && data !== void 0 && !skipSelect) {\n if (prevResult && data === prevResultState?.data && options.select === this.#selectFn) {\n data = this.#selectResult;\n } else {\n try {\n this.#selectFn = options.select;\n data = options.select(data);\n data = replaceData(prevResult?.data, data, options);\n this.#selectResult = data;\n this.#selectError = null;\n } catch (selectError) {\n this.#selectError = selectError;\n }\n }\n }\n if (this.#selectError) {\n error = this.#selectError;\n data = this.#selectResult;\n errorUpdatedAt = Date.now();\n status = \"error\";\n }\n const isFetching = newState.fetchStatus === \"fetching\";\n const isPending = status === \"pending\";\n const isError = status === \"error\";\n const isLoading = isPending && isFetching;\n const hasData = data !== void 0;\n const result = {\n status,\n fetchStatus: newState.fetchStatus,\n isPending,\n isSuccess: status === \"success\",\n isError,\n isInitialLoading: isLoading,\n isLoading,\n data,\n dataUpdatedAt: newState.dataUpdatedAt,\n error,\n errorUpdatedAt,\n failureCount: newState.fetchFailureCount,\n failureReason: newState.fetchFailureReason,\n errorUpdateCount: newState.errorUpdateCount,\n isFetched: query.isFetched(),\n isFetchedAfterMount: newState.dataUpdateCount > queryInitialState.dataUpdateCount || newState.errorUpdateCount > queryInitialState.errorUpdateCount,\n isFetching,\n isRefetching: isFetching && !isPending,\n isLoadingError: isError && !hasData,\n isPaused: newState.fetchStatus === \"paused\",\n isPlaceholderData,\n isRefetchError: isError && hasData,\n isStale: isStale(query, options),\n refetch: this.refetch,\n promise: this.#currentThenable,\n isEnabled: resolveQueryBoolean(options.enabled, query) !== false\n };\n const nextResult = result;\n if (this.options.experimental_prefetchInRender) {\n const hasResultData = nextResult.data !== void 0;\n const isErrorWithoutData = nextResult.status === \"error\" && !hasResultData;\n const finalizeThenableIfPossible = (thenable) => {\n if (isErrorWithoutData) {\n thenable.reject(nextResult.error);\n } else if (hasResultData) {\n thenable.resolve(nextResult.data);\n }\n };\n const recreateThenable = () => {\n const pending = this.#currentThenable = nextResult.promise = pendingThenable();\n finalizeThenableIfPossible(pending);\n };\n const prevThenable = this.#currentThenable;\n switch (prevThenable.status) {\n case \"pending\":\n if (query.queryHash === prevQuery.queryHash) {\n finalizeThenableIfPossible(prevThenable);\n }\n break;\n case \"fulfilled\":\n if (isErrorWithoutData || nextResult.data !== prevThenable.value) {\n recreateThenable();\n }\n break;\n case \"rejected\":\n if (!isErrorWithoutData || nextResult.error !== prevThenable.reason) {\n recreateThenable();\n }\n break;\n }\n }\n return nextResult;\n }\n updateResult() {\n const prevResult = this.#currentResult;\n const nextResult = this.createResult(this.#currentQuery, this.options);\n this.#currentResultState = this.#currentQuery.state;\n this.#currentResultOptions = this.options;\n if (this.#currentResultState.data !== void 0) {\n this.#lastQueryWithDefinedData = this.#currentQuery;\n }\n if (shallowEqualObjects(nextResult, prevResult)) {\n return;\n }\n this.#currentResult = nextResult;\n const shouldNotifyListeners = () => {\n if (!prevResult) {\n return true;\n }\n const { notifyOnChangeProps } = this.options;\n const notifyOnChangePropsValue = typeof notifyOnChangeProps === \"function\" ? notifyOnChangeProps() : notifyOnChangeProps;\n if (notifyOnChangePropsValue === \"all\" || !notifyOnChangePropsValue && !this.#trackedProps.size) {\n return true;\n }\n const includedProps = new Set(\n notifyOnChangePropsValue ?? this.#trackedProps\n );\n if (this.options.throwOnError) {\n includedProps.add(\"error\");\n }\n return Object.keys(this.#currentResult).some((key) => {\n const typedKey = key;\n const changed = this.#currentResult[typedKey] !== prevResult[typedKey];\n return changed && includedProps.has(typedKey);\n });\n };\n this.#notify({ listeners: shouldNotifyListeners() });\n }\n #updateQuery() {\n const query = this.#client.getQueryCache().build(this.#client, this.options);\n if (query === this.#currentQuery) {\n return;\n }\n const prevQuery = this.#currentQuery;\n this.#currentQuery = query;\n this.#currentQueryInitialState = query.state;\n if (this.hasListeners()) {\n prevQuery?.removeObserver(this);\n query.addObserver(this);\n }\n }\n onQueryUpdate() {\n this.updateResult();\n if (this.hasListeners()) {\n this.#updateTimers();\n }\n }\n #notify(notifyOptions) {\n notifyManager.batch(() => {\n if (notifyOptions.listeners) {\n this.listeners.forEach((listener) => {\n listener(this.#currentResult);\n });\n }\n this.#client.getQueryCache().notify({\n query: this.#currentQuery,\n type: \"observerResultsUpdated\"\n });\n });\n }\n};\nfunction shouldLoadOnMount(query, options) {\n return resolveQueryBoolean(options.enabled, query) !== false && query.state.data === void 0 && !(query.state.status === \"error\" && resolveQueryBoolean(options.retryOnMount, query) === false);\n}\nfunction shouldFetchOnMount(query, options) {\n return shouldLoadOnMount(query, options) || query.state.data !== void 0 && shouldFetchOn(query, options, options.refetchOnMount);\n}\nfunction shouldFetchOn(query, options, field) {\n if (resolveQueryBoolean(options.enabled, query) !== false && resolveStaleTime(options.staleTime, query) !== \"static\") {\n const value = typeof field === \"function\" ? field(query) : field;\n return value === \"always\" || value !== false && isStale(query, options);\n }\n return false;\n}\nfunction shouldFetchOptionally(query, prevQuery, options, prevOptions) {\n return (query !== prevQuery || resolveQueryBoolean(prevOptions.enabled, query) === false) && (!options.suspense || query.state.status !== \"error\") && isStale(query, options);\n}\nfunction isStale(query, options) {\n return resolveQueryBoolean(options.enabled, query) !== false && query.isStaleByTime(resolveStaleTime(options.staleTime, query));\n}\nfunction shouldAssignObserverCurrentProperties(observer, optimisticResult) {\n if (!shallowEqualObjects(observer.getCurrentResult(), optimisticResult)) {\n return true;\n }\n return false;\n}\nexport {\n QueryObserver\n};\n//# sourceMappingURL=queryObserver.js.map","\"use client\";\n\n// src/IsRestoringProvider.ts\nimport * as React from \"react\";\nvar IsRestoringContext = React.createContext(false);\nvar useIsRestoring = () => React.useContext(IsRestoringContext);\nvar IsRestoringProvider = IsRestoringContext.Provider;\nexport {\n IsRestoringProvider,\n useIsRestoring\n};\n//# sourceMappingURL=IsRestoringProvider.js.map","\"use client\";\n\n// src/QueryErrorResetBoundary.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createValue() {\n let isReset = false;\n return {\n clearReset: () => {\n isReset = false;\n },\n reset: () => {\n isReset = true;\n },\n isReset: () => {\n return isReset;\n }\n };\n}\nvar QueryErrorResetBoundaryContext = React.createContext(createValue());\nvar useQueryErrorResetBoundary = () => React.useContext(QueryErrorResetBoundaryContext);\nvar QueryErrorResetBoundary = ({\n children\n}) => {\n const [value] = React.useState(() => createValue());\n return /* @__PURE__ */ jsx(QueryErrorResetBoundaryContext.Provider, { value, children: typeof children === \"function\" ? children(value) : children });\n};\nexport {\n QueryErrorResetBoundary,\n useQueryErrorResetBoundary\n};\n//# sourceMappingURL=QueryErrorResetBoundary.js.map","\"use client\";\n\n// src/errorBoundaryUtils.ts\nimport * as React from \"react\";\nimport { shouldThrowError } from \"@tanstack/query-core\";\nvar ensurePreventErrorBoundaryRetry = (options, errorResetBoundary, query) => {\n const throwOnError = query?.state.error && typeof options.throwOnError === \"function\" ? shouldThrowError(options.throwOnError, [query.state.error, query]) : options.throwOnError;\n if (options.suspense || options.experimental_prefetchInRender || throwOnError) {\n if (!errorResetBoundary.isReset()) {\n options.retryOnMount = false;\n }\n }\n};\nvar useClearResetErrorBoundary = (errorResetBoundary) => {\n React.useEffect(() => {\n errorResetBoundary.clearReset();\n }, [errorResetBoundary]);\n};\nvar getHasError = ({\n result,\n errorResetBoundary,\n throwOnError,\n query,\n suspense\n}) => {\n return result.isError && !errorResetBoundary.isReset() && !result.isFetching && query && (suspense && result.data === void 0 || shouldThrowError(throwOnError, [result.error, query]));\n};\nexport {\n ensurePreventErrorBoundaryRetry,\n getHasError,\n useClearResetErrorBoundary\n};\n//# sourceMappingURL=errorBoundaryUtils.js.map","// src/suspense.ts\nvar defaultThrowOnError = (_error, query) => query.state.data === void 0;\nvar ensureSuspenseTimers = (defaultedOptions) => {\n if (defaultedOptions.suspense) {\n const MIN_SUSPENSE_TIME_MS = 1e3;\n const clamp = (value) => value === \"static\" ? value : Math.max(value ?? MIN_SUSPENSE_TIME_MS, MIN_SUSPENSE_TIME_MS);\n const originalStaleTime = defaultedOptions.staleTime;\n defaultedOptions.staleTime = typeof originalStaleTime === \"function\" ? (...args) => clamp(originalStaleTime(...args)) : clamp(originalStaleTime);\n if (typeof defaultedOptions.gcTime === \"number\") {\n defaultedOptions.gcTime = Math.max(\n defaultedOptions.gcTime,\n MIN_SUSPENSE_TIME_MS\n );\n }\n }\n};\nvar willFetch = (result, isRestoring) => result.isLoading && result.isFetching && !isRestoring;\nvar shouldSuspend = (defaultedOptions, result) => defaultedOptions?.suspense && result.isPending;\nvar fetchOptimistic = (defaultedOptions, observer, errorResetBoundary) => observer.fetchOptimistic(defaultedOptions).catch(() => {\n errorResetBoundary.clearReset();\n});\nexport {\n defaultThrowOnError,\n ensureSuspenseTimers,\n fetchOptimistic,\n shouldSuspend,\n willFetch\n};\n//# sourceMappingURL=suspense.js.map","\"use client\";\n\n// src/useBaseQuery.ts\nimport * as React from \"react\";\nimport { environmentManager, noop, notifyManager } from \"@tanstack/query-core\";\nimport { useQueryClient } from \"./QueryClientProvider.js\";\nimport { useQueryErrorResetBoundary } from \"./QueryErrorResetBoundary.js\";\nimport {\n ensurePreventErrorBoundaryRetry,\n getHasError,\n useClearResetErrorBoundary\n} from \"./errorBoundaryUtils.js\";\nimport { useIsRestoring } from \"./IsRestoringProvider.js\";\nimport {\n ensureSuspenseTimers,\n fetchOptimistic,\n shouldSuspend,\n willFetch\n} from \"./suspense.js\";\nfunction useBaseQuery(options, Observer, queryClient) {\n if (process.env.NODE_ENV !== \"production\") {\n if (typeof options !== \"object\" || Array.isArray(options)) {\n throw new Error(\n 'Bad argument type. Starting with v5, only the \"Object\" form is allowed when calling query related functions. Please use the error stack to find the culprit call. More info here: https://tanstack.com/query/latest/docs/react/guides/migrating-to-v5#supports-a-single-signature-one-object'\n );\n }\n }\n const isRestoring = useIsRestoring();\n const errorResetBoundary = useQueryErrorResetBoundary();\n const client = useQueryClient(queryClient);\n const defaultedOptions = client.defaultQueryOptions(options);\n client.getDefaultOptions().queries?._experimental_beforeQuery?.(\n defaultedOptions\n );\n const query = client.getQueryCache().get(defaultedOptions.queryHash);\n if (process.env.NODE_ENV !== \"production\") {\n if (!defaultedOptions.queryFn) {\n console.error(\n `[${defaultedOptions.queryHash}]: No queryFn was passed as an option, and no default queryFn was found. The queryFn parameter is only optional when using a default queryFn. More info here: https://tanstack.com/query/latest/docs/framework/react/guides/default-query-function`\n );\n }\n }\n const subscribed = options.subscribed !== false;\n defaultedOptions._optimisticResults = isRestoring ? \"isRestoring\" : subscribed ? \"optimistic\" : void 0;\n ensureSuspenseTimers(defaultedOptions);\n ensurePreventErrorBoundaryRetry(defaultedOptions, errorResetBoundary, query);\n useClearResetErrorBoundary(errorResetBoundary);\n const isNewCacheEntry = !client.getQueryCache().get(defaultedOptions.queryHash);\n const [observer] = React.useState(\n () => new Observer(\n client,\n defaultedOptions\n )\n );\n const result = observer.getOptimisticResult(defaultedOptions);\n const shouldSubscribe = !isRestoring && subscribed;\n React.useSyncExternalStore(\n React.useCallback(\n (onStoreChange) => {\n const unsubscribe = shouldSubscribe ? observer.subscribe(notifyManager.batchCalls(onStoreChange)) : noop;\n observer.updateResult();\n return unsubscribe;\n },\n [observer, shouldSubscribe]\n ),\n () => observer.getCurrentResult(),\n () => observer.getCurrentResult()\n );\n React.useEffect(() => {\n observer.setOptions(defaultedOptions);\n }, [defaultedOptions, observer]);\n if (shouldSuspend(defaultedOptions, result)) {\n throw fetchOptimistic(defaultedOptions, observer, errorResetBoundary);\n }\n if (getHasError({\n result,\n errorResetBoundary,\n throwOnError: defaultedOptions.throwOnError,\n query,\n suspense: defaultedOptions.suspense\n })) {\n throw result.error;\n }\n ;\n client.getDefaultOptions().queries?._experimental_afterQuery?.(\n defaultedOptions,\n result\n );\n if (defaultedOptions.experimental_prefetchInRender && !environmentManager.isServer() && willFetch(result, isRestoring)) {\n const promise = isNewCacheEntry ? (\n // Fetch immediately on render in order to ensure `.promise` is resolved even if the component is unmounted\n fetchOptimistic(defaultedOptions, observer, errorResetBoundary)\n ) : (\n // subscribe to the \"cache promise\" so that we can finalize the currentThenable once data comes in\n query?.promise\n );\n promise?.catch(noop).finally(() => {\n observer.updateResult();\n });\n }\n return !defaultedOptions.notifyOnChangeProps ? observer.trackResult(result) : result;\n}\nexport {\n useBaseQuery\n};\n//# sourceMappingURL=useBaseQuery.js.map","\"use client\";\n\n// src/useQuery.ts\nimport { QueryObserver } from \"@tanstack/query-core\";\nimport { useBaseQuery } from \"./useBaseQuery.js\";\nfunction useQuery(options, queryClient) {\n return useBaseQuery(options, QueryObserver, queryClient);\n}\nexport {\n useQuery\n};\n//# sourceMappingURL=useQuery.js.map"],"names":["QueryObserver","Subscribable","client","options","#client","#selectError","#currentThenable","pendingThenable","#currentQuery","#currentQueryInitialState","#currentResult","#currentResultState","#currentResultOptions","#selectFn","#selectResult","#lastQueryWithDefinedData","#staleTimeoutId","#refetchIntervalId","#currentRefetchInterval","#trackedProps","shouldFetchOnMount","#executeFetch","#updateTimers","shouldFetchOn","#clearStaleTimeout","#clearRefetchInterval","prevOptions","prevQuery","resolveQueryBoolean","#updateQuery","shallowEqualObjects","mounted","shouldFetchOptionally","resolveStaleTime","#updateStaleTimeout","nextRefetchInterval","#computeRefetchInterval","#updateRefetchInterval","query","result","shouldAssignObserverCurrentProperties","onPropTracked","target","key","defaultedOptions","fetchOptions","promise","noop","staleTime","environmentManager","isValidTimeout","timeout","timeUntilStale","timeoutManager","nextInterval","focusManager","prevResult","prevResultState","prevResultOptions","queryInitialState","state","newState","isPlaceholderData","data","fetchOnMount","fetchOptionally","fetchState","error","errorUpdatedAt","status","skipSelect","placeholderData","replaceData","selectError","isFetching","isPending","isError","isLoading","hasData","nextResult","isStale","hasResultData","isErrorWithoutData","finalizeThenableIfPossible","thenable","recreateThenable","pending","prevThenable","shouldNotifyListeners","notifyOnChangeProps","notifyOnChangePropsValue","includedProps","typedKey","#notify","notifyOptions","notifyManager","listener","shouldLoadOnMount","field","value","observer","optimisticResult","IsRestoringContext","React.createContext","useIsRestoring","React.useContext","createValue","isReset","QueryErrorResetBoundaryContext","useQueryErrorResetBoundary","ensurePreventErrorBoundaryRetry","errorResetBoundary","throwOnError","shouldThrowError","useClearResetErrorBoundary","React.useEffect","getHasError","suspense","ensureSuspenseTimers","clamp","originalStaleTime","args","willFetch","isRestoring","shouldSuspend","fetchOptimistic","useBaseQuery","Observer","queryClient","useQueryClient","subscribed","isNewCacheEntry","React.useState","shouldSubscribe","React.useSyncExternalStore","React.useCallback","onStoreChange","unsubscribe","useQuery"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6]}
|
|
1
|
+
{"version":3,"file":"useQuery-ByZlZXlw.js","sources":["../../node_modules/@tanstack/query-core/build/modern/queryObserver.js","../../node_modules/@tanstack/react-query/build/modern/IsRestoringProvider.js","../../node_modules/@tanstack/react-query/build/modern/QueryErrorResetBoundary.js","../../node_modules/@tanstack/react-query/build/modern/errorBoundaryUtils.js","../../node_modules/@tanstack/react-query/build/modern/suspense.js","../../node_modules/@tanstack/react-query/build/modern/useBaseQuery.js","../../node_modules/@tanstack/react-query/build/modern/useQuery.js"],"sourcesContent":["// src/queryObserver.ts\nimport { focusManager } from \"./focusManager.js\";\nimport { environmentManager } from \"./environmentManager.js\";\nimport { notifyManager } from \"./notifyManager.js\";\nimport { fetchState } from \"./query.js\";\nimport { Subscribable } from \"./subscribable.js\";\nimport { pendingThenable } from \"./thenable.js\";\nimport {\n isValidTimeout,\n noop,\n replaceData,\n resolveQueryBoolean,\n resolveStaleTime,\n shallowEqualObjects,\n timeUntilStale\n} from \"./utils.js\";\nimport { timeoutManager } from \"./timeoutManager.js\";\nvar QueryObserver = class extends Subscribable {\n constructor(client, options) {\n super();\n this.options = options;\n this.#client = client;\n this.#selectError = null;\n this.#currentThenable = pendingThenable();\n this.bindMethods();\n this.setOptions(options);\n }\n #client;\n #currentQuery = void 0;\n #currentQueryInitialState = void 0;\n #currentResult = void 0;\n #currentResultState;\n #currentResultOptions;\n #currentThenable;\n #selectError;\n #selectFn;\n #selectResult;\n // This property keeps track of the last query with defined data.\n // It will be used to pass the previous data and query to the placeholder function between renders.\n #lastQueryWithDefinedData;\n #staleTimeoutId;\n #refetchIntervalId;\n #currentRefetchInterval;\n #trackedProps = /* @__PURE__ */ new Set();\n bindMethods() {\n this.refetch = this.refetch.bind(this);\n }\n onSubscribe() {\n if (this.listeners.size === 1) {\n this.#currentQuery.addObserver(this);\n if (shouldFetchOnMount(this.#currentQuery, this.options)) {\n this.#executeFetch();\n } else {\n this.updateResult();\n }\n this.#updateTimers();\n }\n }\n onUnsubscribe() {\n if (!this.hasListeners()) {\n this.destroy();\n }\n }\n shouldFetchOnReconnect() {\n return shouldFetchOn(\n this.#currentQuery,\n this.options,\n this.options.refetchOnReconnect\n );\n }\n shouldFetchOnWindowFocus() {\n return shouldFetchOn(\n this.#currentQuery,\n this.options,\n this.options.refetchOnWindowFocus\n );\n }\n destroy() {\n this.listeners = /* @__PURE__ */ new Set();\n this.#clearStaleTimeout();\n this.#clearRefetchInterval();\n this.#currentQuery.removeObserver(this);\n }\n setOptions(options) {\n const prevOptions = this.options;\n const prevQuery = this.#currentQuery;\n this.options = this.#client.defaultQueryOptions(options);\n if (this.options.enabled !== void 0 && typeof this.options.enabled !== \"boolean\" && typeof this.options.enabled !== \"function\" && typeof resolveQueryBoolean(this.options.enabled, this.#currentQuery) !== \"boolean\") {\n throw new Error(\n \"Expected enabled to be a boolean or a callback that returns a boolean\"\n );\n }\n this.#updateQuery();\n this.#currentQuery.setOptions(this.options);\n if (prevOptions._defaulted && !shallowEqualObjects(this.options, prevOptions)) {\n this.#client.getQueryCache().notify({\n type: \"observerOptionsUpdated\",\n query: this.#currentQuery,\n observer: this\n });\n }\n const mounted = this.hasListeners();\n if (mounted && shouldFetchOptionally(\n this.#currentQuery,\n prevQuery,\n this.options,\n prevOptions\n )) {\n this.#executeFetch();\n }\n this.updateResult();\n if (mounted && (this.#currentQuery !== prevQuery || resolveQueryBoolean(this.options.enabled, this.#currentQuery) !== resolveQueryBoolean(prevOptions.enabled, this.#currentQuery) || resolveStaleTime(this.options.staleTime, this.#currentQuery) !== resolveStaleTime(prevOptions.staleTime, this.#currentQuery))) {\n this.#updateStaleTimeout();\n }\n const nextRefetchInterval = this.#computeRefetchInterval();\n if (mounted && (this.#currentQuery !== prevQuery || resolveQueryBoolean(this.options.enabled, this.#currentQuery) !== resolveQueryBoolean(prevOptions.enabled, this.#currentQuery) || nextRefetchInterval !== this.#currentRefetchInterval)) {\n this.#updateRefetchInterval(nextRefetchInterval);\n }\n }\n getOptimisticResult(options) {\n const query = this.#client.getQueryCache().build(this.#client, options);\n const result = this.createResult(query, options);\n if (shouldAssignObserverCurrentProperties(this, result)) {\n this.#currentResult = result;\n this.#currentResultOptions = this.options;\n this.#currentResultState = this.#currentQuery.state;\n }\n return result;\n }\n getCurrentResult() {\n return this.#currentResult;\n }\n trackResult(result, onPropTracked) {\n return new Proxy(result, {\n get: (target, key) => {\n this.trackProp(key);\n onPropTracked?.(key);\n if (key === \"promise\") {\n this.trackProp(\"data\");\n if (!this.options.experimental_prefetchInRender && this.#currentThenable.status === \"pending\") {\n this.#currentThenable.reject(\n new Error(\n \"experimental_prefetchInRender feature flag is not enabled\"\n )\n );\n }\n }\n return Reflect.get(target, key);\n }\n });\n }\n trackProp(key) {\n this.#trackedProps.add(key);\n }\n getCurrentQuery() {\n return this.#currentQuery;\n }\n refetch({ ...options } = {}) {\n return this.fetch({\n ...options\n });\n }\n fetchOptimistic(options) {\n const defaultedOptions = this.#client.defaultQueryOptions(options);\n const query = this.#client.getQueryCache().build(this.#client, defaultedOptions);\n return query.fetch().then(() => this.createResult(query, defaultedOptions));\n }\n fetch(fetchOptions) {\n return this.#executeFetch({\n ...fetchOptions,\n cancelRefetch: fetchOptions.cancelRefetch ?? true\n }).then(() => {\n this.updateResult();\n return this.#currentResult;\n });\n }\n #executeFetch(fetchOptions) {\n this.#updateQuery();\n let promise = this.#currentQuery.fetch(\n this.options,\n fetchOptions\n );\n if (!fetchOptions?.throwOnError) {\n promise = promise.catch(noop);\n }\n return promise;\n }\n #updateStaleTimeout() {\n this.#clearStaleTimeout();\n const staleTime = resolveStaleTime(\n this.options.staleTime,\n this.#currentQuery\n );\n if (environmentManager.isServer() || this.#currentResult.isStale || !isValidTimeout(staleTime)) {\n return;\n }\n const time = timeUntilStale(this.#currentResult.dataUpdatedAt, staleTime);\n const timeout = time + 1;\n this.#staleTimeoutId = timeoutManager.setTimeout(() => {\n if (!this.#currentResult.isStale) {\n this.updateResult();\n }\n }, timeout);\n }\n #computeRefetchInterval() {\n return (typeof this.options.refetchInterval === \"function\" ? this.options.refetchInterval(this.#currentQuery) : this.options.refetchInterval) ?? false;\n }\n #updateRefetchInterval(nextInterval) {\n this.#clearRefetchInterval();\n this.#currentRefetchInterval = nextInterval;\n if (environmentManager.isServer() || resolveQueryBoolean(this.options.enabled, this.#currentQuery) === false || !isValidTimeout(this.#currentRefetchInterval) || this.#currentRefetchInterval === 0) {\n return;\n }\n this.#refetchIntervalId = timeoutManager.setInterval(() => {\n if (this.options.refetchIntervalInBackground || focusManager.isFocused()) {\n this.#executeFetch();\n }\n }, this.#currentRefetchInterval);\n }\n #updateTimers() {\n this.#updateStaleTimeout();\n this.#updateRefetchInterval(this.#computeRefetchInterval());\n }\n #clearStaleTimeout() {\n if (this.#staleTimeoutId !== void 0) {\n timeoutManager.clearTimeout(this.#staleTimeoutId);\n this.#staleTimeoutId = void 0;\n }\n }\n #clearRefetchInterval() {\n if (this.#refetchIntervalId !== void 0) {\n timeoutManager.clearInterval(this.#refetchIntervalId);\n this.#refetchIntervalId = void 0;\n }\n }\n createResult(query, options) {\n const prevQuery = this.#currentQuery;\n const prevOptions = this.options;\n const prevResult = this.#currentResult;\n const prevResultState = this.#currentResultState;\n const prevResultOptions = this.#currentResultOptions;\n const queryChange = query !== prevQuery;\n const queryInitialState = queryChange ? query.state : this.#currentQueryInitialState;\n const { state } = query;\n let newState = { ...state };\n let isPlaceholderData = false;\n let data;\n if (options._optimisticResults) {\n const mounted = this.hasListeners();\n const fetchOnMount = !mounted && shouldFetchOnMount(query, options);\n const fetchOptionally = mounted && shouldFetchOptionally(query, prevQuery, options, prevOptions);\n if (fetchOnMount || fetchOptionally) {\n newState = {\n ...newState,\n ...fetchState(state.data, query.options)\n };\n }\n if (options._optimisticResults === \"isRestoring\") {\n newState.fetchStatus = \"idle\";\n }\n }\n let { error, errorUpdatedAt, status } = newState;\n data = newState.data;\n let skipSelect = false;\n if (options.placeholderData !== void 0 && data === void 0 && status === \"pending\") {\n let placeholderData;\n if (prevResult?.isPlaceholderData && options.placeholderData === prevResultOptions?.placeholderData) {\n placeholderData = prevResult.data;\n skipSelect = true;\n } else {\n placeholderData = typeof options.placeholderData === \"function\" ? options.placeholderData(\n this.#lastQueryWithDefinedData?.state.data,\n this.#lastQueryWithDefinedData\n ) : options.placeholderData;\n }\n if (placeholderData !== void 0) {\n status = \"success\";\n data = replaceData(\n prevResult?.data,\n placeholderData,\n options\n );\n isPlaceholderData = true;\n }\n }\n if (options.select && data !== void 0 && !skipSelect) {\n if (prevResult && data === prevResultState?.data && options.select === this.#selectFn) {\n data = this.#selectResult;\n } else {\n try {\n this.#selectFn = options.select;\n data = options.select(data);\n data = replaceData(prevResult?.data, data, options);\n this.#selectResult = data;\n this.#selectError = null;\n } catch (selectError) {\n this.#selectError = selectError;\n }\n }\n }\n if (this.#selectError) {\n error = this.#selectError;\n data = this.#selectResult;\n errorUpdatedAt = Date.now();\n status = \"error\";\n }\n const isFetching = newState.fetchStatus === \"fetching\";\n const isPending = status === \"pending\";\n const isError = status === \"error\";\n const isLoading = isPending && isFetching;\n const hasData = data !== void 0;\n const result = {\n status,\n fetchStatus: newState.fetchStatus,\n isPending,\n isSuccess: status === \"success\",\n isError,\n isInitialLoading: isLoading,\n isLoading,\n data,\n dataUpdatedAt: newState.dataUpdatedAt,\n error,\n errorUpdatedAt,\n failureCount: newState.fetchFailureCount,\n failureReason: newState.fetchFailureReason,\n errorUpdateCount: newState.errorUpdateCount,\n isFetched: query.isFetched(),\n isFetchedAfterMount: newState.dataUpdateCount > queryInitialState.dataUpdateCount || newState.errorUpdateCount > queryInitialState.errorUpdateCount,\n isFetching,\n isRefetching: isFetching && !isPending,\n isLoadingError: isError && !hasData,\n isPaused: newState.fetchStatus === \"paused\",\n isPlaceholderData,\n isRefetchError: isError && hasData,\n isStale: isStale(query, options),\n refetch: this.refetch,\n promise: this.#currentThenable,\n isEnabled: resolveQueryBoolean(options.enabled, query) !== false\n };\n const nextResult = result;\n if (this.options.experimental_prefetchInRender) {\n const hasResultData = nextResult.data !== void 0;\n const isErrorWithoutData = nextResult.status === \"error\" && !hasResultData;\n const finalizeThenableIfPossible = (thenable) => {\n if (isErrorWithoutData) {\n thenable.reject(nextResult.error);\n } else if (hasResultData) {\n thenable.resolve(nextResult.data);\n }\n };\n const recreateThenable = () => {\n const pending = this.#currentThenable = nextResult.promise = pendingThenable();\n finalizeThenableIfPossible(pending);\n };\n const prevThenable = this.#currentThenable;\n switch (prevThenable.status) {\n case \"pending\":\n if (query.queryHash === prevQuery.queryHash) {\n finalizeThenableIfPossible(prevThenable);\n }\n break;\n case \"fulfilled\":\n if (isErrorWithoutData || nextResult.data !== prevThenable.value) {\n recreateThenable();\n }\n break;\n case \"rejected\":\n if (!isErrorWithoutData || nextResult.error !== prevThenable.reason) {\n recreateThenable();\n }\n break;\n }\n }\n return nextResult;\n }\n updateResult() {\n const prevResult = this.#currentResult;\n const nextResult = this.createResult(this.#currentQuery, this.options);\n this.#currentResultState = this.#currentQuery.state;\n this.#currentResultOptions = this.options;\n if (this.#currentResultState.data !== void 0) {\n this.#lastQueryWithDefinedData = this.#currentQuery;\n }\n if (shallowEqualObjects(nextResult, prevResult)) {\n return;\n }\n this.#currentResult = nextResult;\n const shouldNotifyListeners = () => {\n if (!prevResult) {\n return true;\n }\n const { notifyOnChangeProps } = this.options;\n const notifyOnChangePropsValue = typeof notifyOnChangeProps === \"function\" ? notifyOnChangeProps() : notifyOnChangeProps;\n if (notifyOnChangePropsValue === \"all\" || !notifyOnChangePropsValue && !this.#trackedProps.size) {\n return true;\n }\n const includedProps = new Set(\n notifyOnChangePropsValue ?? this.#trackedProps\n );\n if (this.options.throwOnError) {\n includedProps.add(\"error\");\n }\n return Object.keys(this.#currentResult).some((key) => {\n const typedKey = key;\n const changed = this.#currentResult[typedKey] !== prevResult[typedKey];\n return changed && includedProps.has(typedKey);\n });\n };\n this.#notify({ listeners: shouldNotifyListeners() });\n }\n #updateQuery() {\n const query = this.#client.getQueryCache().build(this.#client, this.options);\n if (query === this.#currentQuery) {\n return;\n }\n const prevQuery = this.#currentQuery;\n this.#currentQuery = query;\n this.#currentQueryInitialState = query.state;\n if (this.hasListeners()) {\n prevQuery?.removeObserver(this);\n query.addObserver(this);\n }\n }\n onQueryUpdate() {\n this.updateResult();\n if (this.hasListeners()) {\n this.#updateTimers();\n }\n }\n #notify(notifyOptions) {\n notifyManager.batch(() => {\n if (notifyOptions.listeners) {\n this.listeners.forEach((listener) => {\n listener(this.#currentResult);\n });\n }\n this.#client.getQueryCache().notify({\n query: this.#currentQuery,\n type: \"observerResultsUpdated\"\n });\n });\n }\n};\nfunction shouldLoadOnMount(query, options) {\n return resolveQueryBoolean(options.enabled, query) !== false && query.state.data === void 0 && !(query.state.status === \"error\" && resolveQueryBoolean(options.retryOnMount, query) === false);\n}\nfunction shouldFetchOnMount(query, options) {\n return shouldLoadOnMount(query, options) || query.state.data !== void 0 && shouldFetchOn(query, options, options.refetchOnMount);\n}\nfunction shouldFetchOn(query, options, field) {\n if (resolveQueryBoolean(options.enabled, query) !== false && resolveStaleTime(options.staleTime, query) !== \"static\") {\n const value = typeof field === \"function\" ? field(query) : field;\n return value === \"always\" || value !== false && isStale(query, options);\n }\n return false;\n}\nfunction shouldFetchOptionally(query, prevQuery, options, prevOptions) {\n return (query !== prevQuery || resolveQueryBoolean(prevOptions.enabled, query) === false) && (!options.suspense || query.state.status !== \"error\") && isStale(query, options);\n}\nfunction isStale(query, options) {\n return resolveQueryBoolean(options.enabled, query) !== false && query.isStaleByTime(resolveStaleTime(options.staleTime, query));\n}\nfunction shouldAssignObserverCurrentProperties(observer, optimisticResult) {\n if (!shallowEqualObjects(observer.getCurrentResult(), optimisticResult)) {\n return true;\n }\n return false;\n}\nexport {\n QueryObserver\n};\n//# sourceMappingURL=queryObserver.js.map","\"use client\";\n\n// src/IsRestoringProvider.ts\nimport * as React from \"react\";\nvar IsRestoringContext = React.createContext(false);\nvar useIsRestoring = () => React.useContext(IsRestoringContext);\nvar IsRestoringProvider = IsRestoringContext.Provider;\nexport {\n IsRestoringProvider,\n useIsRestoring\n};\n//# sourceMappingURL=IsRestoringProvider.js.map","\"use client\";\n\n// src/QueryErrorResetBoundary.tsx\nimport * as React from \"react\";\nimport { jsx } from \"react/jsx-runtime\";\nfunction createValue() {\n let isReset = false;\n return {\n clearReset: () => {\n isReset = false;\n },\n reset: () => {\n isReset = true;\n },\n isReset: () => {\n return isReset;\n }\n };\n}\nvar QueryErrorResetBoundaryContext = React.createContext(createValue());\nvar useQueryErrorResetBoundary = () => React.useContext(QueryErrorResetBoundaryContext);\nvar QueryErrorResetBoundary = ({\n children\n}) => {\n const [value] = React.useState(() => createValue());\n return /* @__PURE__ */ jsx(QueryErrorResetBoundaryContext.Provider, { value, children: typeof children === \"function\" ? children(value) : children });\n};\nexport {\n QueryErrorResetBoundary,\n useQueryErrorResetBoundary\n};\n//# sourceMappingURL=QueryErrorResetBoundary.js.map","\"use client\";\n\n// src/errorBoundaryUtils.ts\nimport * as React from \"react\";\nimport { shouldThrowError } from \"@tanstack/query-core\";\nvar ensurePreventErrorBoundaryRetry = (options, errorResetBoundary, query) => {\n const throwOnError = query?.state.error && typeof options.throwOnError === \"function\" ? shouldThrowError(options.throwOnError, [query.state.error, query]) : options.throwOnError;\n if (options.suspense || options.experimental_prefetchInRender || throwOnError) {\n if (!errorResetBoundary.isReset()) {\n options.retryOnMount = false;\n }\n }\n};\nvar useClearResetErrorBoundary = (errorResetBoundary) => {\n React.useEffect(() => {\n errorResetBoundary.clearReset();\n }, [errorResetBoundary]);\n};\nvar getHasError = ({\n result,\n errorResetBoundary,\n throwOnError,\n query,\n suspense\n}) => {\n return result.isError && !errorResetBoundary.isReset() && !result.isFetching && query && (suspense && result.data === void 0 || shouldThrowError(throwOnError, [result.error, query]));\n};\nexport {\n ensurePreventErrorBoundaryRetry,\n getHasError,\n useClearResetErrorBoundary\n};\n//# sourceMappingURL=errorBoundaryUtils.js.map","// src/suspense.ts\nvar defaultThrowOnError = (_error, query) => query.state.data === void 0;\nvar ensureSuspenseTimers = (defaultedOptions) => {\n if (defaultedOptions.suspense) {\n const MIN_SUSPENSE_TIME_MS = 1e3;\n const clamp = (value) => value === \"static\" ? value : Math.max(value ?? MIN_SUSPENSE_TIME_MS, MIN_SUSPENSE_TIME_MS);\n const originalStaleTime = defaultedOptions.staleTime;\n defaultedOptions.staleTime = typeof originalStaleTime === \"function\" ? (...args) => clamp(originalStaleTime(...args)) : clamp(originalStaleTime);\n if (typeof defaultedOptions.gcTime === \"number\") {\n defaultedOptions.gcTime = Math.max(\n defaultedOptions.gcTime,\n MIN_SUSPENSE_TIME_MS\n );\n }\n }\n};\nvar willFetch = (result, isRestoring) => result.isLoading && result.isFetching && !isRestoring;\nvar shouldSuspend = (defaultedOptions, result) => defaultedOptions?.suspense && result.isPending;\nvar fetchOptimistic = (defaultedOptions, observer, errorResetBoundary) => observer.fetchOptimistic(defaultedOptions).catch(() => {\n errorResetBoundary.clearReset();\n});\nexport {\n defaultThrowOnError,\n ensureSuspenseTimers,\n fetchOptimistic,\n shouldSuspend,\n willFetch\n};\n//# sourceMappingURL=suspense.js.map","\"use client\";\n\n// src/useBaseQuery.ts\nimport * as React from \"react\";\nimport { environmentManager, noop, notifyManager } from \"@tanstack/query-core\";\nimport { useQueryClient } from \"./QueryClientProvider.js\";\nimport { useQueryErrorResetBoundary } from \"./QueryErrorResetBoundary.js\";\nimport {\n ensurePreventErrorBoundaryRetry,\n getHasError,\n useClearResetErrorBoundary\n} from \"./errorBoundaryUtils.js\";\nimport { useIsRestoring } from \"./IsRestoringProvider.js\";\nimport {\n ensureSuspenseTimers,\n fetchOptimistic,\n shouldSuspend,\n willFetch\n} from \"./suspense.js\";\nfunction useBaseQuery(options, Observer, queryClient) {\n if (process.env.NODE_ENV !== \"production\") {\n if (typeof options !== \"object\" || Array.isArray(options)) {\n throw new Error(\n 'Bad argument type. Starting with v5, only the \"Object\" form is allowed when calling query related functions. Please use the error stack to find the culprit call. More info here: https://tanstack.com/query/latest/docs/react/guides/migrating-to-v5#supports-a-single-signature-one-object'\n );\n }\n }\n const isRestoring = useIsRestoring();\n const errorResetBoundary = useQueryErrorResetBoundary();\n const client = useQueryClient(queryClient);\n const defaultedOptions = client.defaultQueryOptions(options);\n client.getDefaultOptions().queries?._experimental_beforeQuery?.(\n defaultedOptions\n );\n const query = client.getQueryCache().get(defaultedOptions.queryHash);\n if (process.env.NODE_ENV !== \"production\") {\n if (!defaultedOptions.queryFn) {\n console.error(\n `[${defaultedOptions.queryHash}]: No queryFn was passed as an option, and no default queryFn was found. The queryFn parameter is only optional when using a default queryFn. More info here: https://tanstack.com/query/latest/docs/framework/react/guides/default-query-function`\n );\n }\n }\n const subscribed = options.subscribed !== false;\n defaultedOptions._optimisticResults = isRestoring ? \"isRestoring\" : subscribed ? \"optimistic\" : void 0;\n ensureSuspenseTimers(defaultedOptions);\n ensurePreventErrorBoundaryRetry(defaultedOptions, errorResetBoundary, query);\n useClearResetErrorBoundary(errorResetBoundary);\n const isNewCacheEntry = !client.getQueryCache().get(defaultedOptions.queryHash);\n const [observer] = React.useState(\n () => new Observer(\n client,\n defaultedOptions\n )\n );\n const result = observer.getOptimisticResult(defaultedOptions);\n const shouldSubscribe = !isRestoring && subscribed;\n React.useSyncExternalStore(\n React.useCallback(\n (onStoreChange) => {\n const unsubscribe = shouldSubscribe ? observer.subscribe(notifyManager.batchCalls(onStoreChange)) : noop;\n observer.updateResult();\n return unsubscribe;\n },\n [observer, shouldSubscribe]\n ),\n () => observer.getCurrentResult(),\n () => observer.getCurrentResult()\n );\n React.useEffect(() => {\n observer.setOptions(defaultedOptions);\n }, [defaultedOptions, observer]);\n if (shouldSuspend(defaultedOptions, result)) {\n throw fetchOptimistic(defaultedOptions, observer, errorResetBoundary);\n }\n if (getHasError({\n result,\n errorResetBoundary,\n throwOnError: defaultedOptions.throwOnError,\n query,\n suspense: defaultedOptions.suspense\n })) {\n throw result.error;\n }\n ;\n client.getDefaultOptions().queries?._experimental_afterQuery?.(\n defaultedOptions,\n result\n );\n if (defaultedOptions.experimental_prefetchInRender && !environmentManager.isServer() && willFetch(result, isRestoring)) {\n const promise = isNewCacheEntry ? (\n // Fetch immediately on render in order to ensure `.promise` is resolved even if the component is unmounted\n fetchOptimistic(defaultedOptions, observer, errorResetBoundary)\n ) : (\n // subscribe to the \"cache promise\" so that we can finalize the currentThenable once data comes in\n query?.promise\n );\n promise?.catch(noop).finally(() => {\n observer.updateResult();\n });\n }\n return !defaultedOptions.notifyOnChangeProps ? observer.trackResult(result) : result;\n}\nexport {\n useBaseQuery\n};\n//# sourceMappingURL=useBaseQuery.js.map","\"use client\";\n\n// src/useQuery.ts\nimport { QueryObserver } from \"@tanstack/query-core\";\nimport { useBaseQuery } from \"./useBaseQuery.js\";\nfunction useQuery(options, queryClient) {\n return useBaseQuery(options, QueryObserver, queryClient);\n}\nexport {\n useQuery\n};\n//# sourceMappingURL=useQuery.js.map"],"names":["QueryObserver","Subscribable","client","options","#client","#selectError","#currentThenable","pendingThenable","#currentQuery","#currentQueryInitialState","#currentResult","#currentResultState","#currentResultOptions","#selectFn","#selectResult","#lastQueryWithDefinedData","#staleTimeoutId","#refetchIntervalId","#currentRefetchInterval","#trackedProps","shouldFetchOnMount","#executeFetch","#updateTimers","shouldFetchOn","#clearStaleTimeout","#clearRefetchInterval","prevOptions","prevQuery","resolveQueryBoolean","#updateQuery","shallowEqualObjects","mounted","shouldFetchOptionally","resolveStaleTime","#updateStaleTimeout","nextRefetchInterval","#computeRefetchInterval","#updateRefetchInterval","query","result","shouldAssignObserverCurrentProperties","onPropTracked","target","key","defaultedOptions","fetchOptions","promise","noop","staleTime","environmentManager","isValidTimeout","timeout","timeUntilStale","timeoutManager","nextInterval","focusManager","prevResult","prevResultState","prevResultOptions","queryInitialState","state","newState","isPlaceholderData","data","fetchOnMount","fetchOptionally","fetchState","error","errorUpdatedAt","status","skipSelect","placeholderData","replaceData","selectError","isFetching","isPending","isError","isLoading","hasData","nextResult","isStale","hasResultData","isErrorWithoutData","finalizeThenableIfPossible","thenable","recreateThenable","pending","prevThenable","shouldNotifyListeners","notifyOnChangeProps","notifyOnChangePropsValue","includedProps","typedKey","#notify","notifyOptions","notifyManager","listener","shouldLoadOnMount","field","value","observer","optimisticResult","IsRestoringContext","React.createContext","useIsRestoring","React.useContext","createValue","isReset","QueryErrorResetBoundaryContext","useQueryErrorResetBoundary","ensurePreventErrorBoundaryRetry","errorResetBoundary","throwOnError","shouldThrowError","useClearResetErrorBoundary","React.useEffect","getHasError","suspense","ensureSuspenseTimers","clamp","originalStaleTime","args","willFetch","isRestoring","shouldSuspend","fetchOptimistic","useBaseQuery","Observer","queryClient","useQueryClient","subscribed","isNewCacheEntry","React.useState","shouldSubscribe","React.useSyncExternalStore","React.useCallback","onStoreChange","unsubscribe","useQuery"],"mappings":"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","x_google_ignoreList":[0,1,2,3,4,5,6]}
|
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import{ab as S,r as O,ac as K,ae as L,V as e,B as k,c as p,S as Q,l as G,m as X,j as Z,k as V,I as y,a4 as c,G as j,L as J,ad as $,t as Y}from"./index-igqJknUt.js";import{e as g}from"./react-C9F3QeMB.js";import{d as ee,p as te}from"./use-settings-D2TsP4vN.js";import{u as se}from"./useQuery-B6dy499I.js";import{m as ae}from"./use-memory-CMOa52NU.js";import{L as M}from"./loader-circle-BMJKoafx.js";import{S as re}from"./save-S79SG1Qr.js";import{a as oe,E as ne}from"./eye-CcL-RUbp.js";import{C as ie}from"./confirm-dialog-CyTBb_Dj.js";import{E as ce}from"./empty-state-CP9D3-8U.js";import{C as F}from"./circle-x-KWl9wiZn.js";import{R as le}from"./refresh-ccw-D6fZ_xYR.js";import{P}from"./play-C0gIFP8e.js";import{D as de}from"./download-B7FO0Y5B.js";import{T as me}from"./trash-2-BkaJ1KrC.js";import{C as ue}from"./circle-check-big-C737-DM7.js";import"./dialog-ChaF-Zu5.js";import"./x-BHW436CN.js";const D={all:["memory","vector"],status:t=>["memory","vector","status",t??null]};function xe(t={}){return se({queryKey:D.status(t.user_key),queryFn:()=>O.getMemoryVectorStatus(t),refetchInterval:3e3,refetchIntervalInBackground:!1})}function z(t){return()=>{t.invalidateQueries({queryKey:D.all}),t.invalidateQueries({queryKey:ae.all})}}function he(){const t=K(),s=z(t);return S({mutationFn:n=>O.backfillMemoryVector({user_key:n?.user_key},n?.max_rows?{max_rows:n.max_rows}:void 0),onSuccess:s})}function fe(){const t=K();return S({mutationFn:()=>O.downloadMemoryVector(),onSuccess:z(t)})}function pe(){const t=K();return S({mutationFn:s=>O.clearMemoryVector({user_key:s?.user_key}),onSuccess:z(t)})}function W(){return S({mutationFn:()=>O.testMemoryVector()})}const m={backend:"off",localModel:"Xenova/bge-base-zh-v1.5",openaiBaseUrl:"https://api.openai.com/v1",openaiModel:"text-embedding-3-small",openaiApiKey:"",batchSize:"32",hybridWeight:"0.5"};function ve(t){const s=(t.IMHUB_MEMORY_VECTOR_BACKEND||"").toLowerCase();return{backend:s==="local"||s==="openai"?s:"off",localModel:t.IMHUB_MEMORY_VECTOR_LOCAL_MODEL||"",openaiBaseUrl:t.IMHUB_MEMORY_VECTOR_OPENAI_BASE_URL||"",openaiModel:t.IMHUB_MEMORY_VECTOR_OPENAI_MODEL||"",openaiApiKey:"",batchSize:t.IMHUB_MEMORY_VECTOR_BATCH_SIZE||"",hybridWeight:t.IMHUB_MEMORY_VECTOR_HYBRID_WEIGHT||""}}function ge({onSaved:t}){const{t:s}=L(["memory","common"]),n=ee({reveal:!1}),l=g.useMemo(()=>n.data?.env??{},[n.data?.env]),[r,h]=g.useState(m),[N,_]=g.useState(!1),f=g.useRef(m);g.useEffect(()=>{if(!n.data)return;const a=ve(l);h(a),f.current=a},[l,n.data]);const b=te(),E=W(),w=g.useMemo(()=>{const a=f.current;return Object.keys(r).some(d=>r[d]!==a[d])},[r]);function x(a,d){h(o=>({...o,[a]:d}))}function B(a){h(d=>{const o={...d,backend:a};return a==="local"&&!o.localModel.trim()&&(o.localModel=m.localModel),a==="openai"&&(o.openaiBaseUrl.trim()||(o.openaiBaseUrl=m.openaiBaseUrl),o.openaiModel.trim()||(o.openaiModel=m.openaiModel)),a!=="off"&&(o.batchSize.trim()||(o.batchSize=m.batchSize),o.hybridWeight.trim()||(o.hybridWeight=m.hybridWeight)),o})}function A(){if(r.backend==="openai"){if(!r.openaiBaseUrl.trim())return s("vector.form.errors.baseUrlRequired");try{new URL(r.openaiBaseUrl.trim())}catch{return s("vector.form.errors.baseUrlInvalid")}if(!r.openaiModel.trim())return s("vector.form.errors.openaiModelRequired");if(!!!l.IMHUB_MEMORY_VECTOR_OPENAI_API_KEY&&!r.openaiApiKey.trim())return s("vector.form.errors.apiKeyRequired")}if(r.backend==="local"&&!r.localModel.trim())return s("vector.form.errors.localModelRequired");if(r.batchSize.trim()){const a=Number(r.batchSize);if(!Number.isFinite(a)||a<1||a>1024)return s("vector.form.errors.batchSizeRange")}if(r.hybridWeight.trim()){const a=Number(r.hybridWeight);if(!Number.isFinite(a)||a<0||a>1)return s("vector.form.errors.hybridWeightRange")}return null}function I(){const a=f.current,d={},o=(C,U,q)=>{U!==q&&(d[C]=U.trim()===""?null:U.trim())};return o("IMHUB_MEMORY_VECTOR_BACKEND",r.backend,a.backend),o("IMHUB_MEMORY_VECTOR_LOCAL_MODEL",r.localModel,a.localModel),o("IMHUB_MEMORY_VECTOR_OPENAI_BASE_URL",r.openaiBaseUrl,a.openaiBaseUrl),o("IMHUB_MEMORY_VECTOR_OPENAI_MODEL",r.openaiModel,a.openaiModel),o("IMHUB_MEMORY_VECTOR_BATCH_SIZE",r.batchSize,a.batchSize),o("IMHUB_MEMORY_VECTOR_HYBRID_WEIGHT",r.hybridWeight,a.hybridWeight),r.openaiApiKey.trim()&&(d.IMHUB_MEMORY_VECTOR_OPENAI_API_KEY=r.openaiApiKey.trim()),d}async function T(){const a=A();if(a){c.error(a);return}const d=I();if(Object.keys(d).length===0){c.info(s("vector.form.nothingChanged"));return}try{await b.mutateAsync({updates:d}),c.success(s("vector.form.savedToast"));try{const o=await E.mutateAsync();o.ok?c.success(s("vector.actions.testOk")):c.error(s("vector.actions.testFail",{detail:o.error??""}))}catch(o){const{message:C}=j(o,s);c.error(s("vector.actions.testFail",{detail:C}))}t?.()}catch(o){const{message:C}=j(o,s);c.error(C)}}function R(){h(f.current)}const i=b.isPending||E.isPending,u=!!l.IMHUB_MEMORY_VECTOR_OPENAI_API_KEY;return e.jsxs("div",{className:"rounded-md border border-border bg-surface p-3",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx("h2",{className:"text-sm font-medium",children:s("vector.form.title")}),w&&e.jsx(k,{variant:"info",children:s("vector.form.dirty")}),e.jsxs("div",{className:"ml-auto flex items-center gap-2",children:[w&&e.jsx(p,{type:"button",variant:"secondary",size:"sm",onClick:R,disabled:i,children:s("vector.form.discard")}),e.jsxs(p,{type:"button",size:"sm",onClick:()=>void T(),disabled:!w||i,children:[i?e.jsx(M,{className:"h-4 w-4 animate-spin"}):e.jsx(re,{className:"h-4 w-4"}),s("vector.form.saveAndTest")]})]})]}),e.jsx("p",{className:"mt-1 text-xs text-text-dim",children:s("vector.form.hint")}),n.isLoading?e.jsx("div",{className:"mt-3 h-32 w-full rounded-md bg-surface-2 animate-pulse"}):e.jsxs("div",{className:"mt-3 grid grid-cols-1 gap-3 sm:grid-cols-2",children:[e.jsx(v,{label:s("vector.form.backend"),help:s("vector.form.backendHelp"),children:e.jsxs(Q,{value:r.backend,onValueChange:a=>B(a),children:[e.jsx(G,{children:e.jsx(X,{})}),e.jsxs(Z,{children:[e.jsx(V,{value:"off",children:s("vector.form.backendOff")}),e.jsx(V,{value:"local",children:s("vector.form.backendLocal")}),e.jsx(V,{value:"openai",children:s("vector.form.backendOpenai")})]})]})}),r.backend==="local"&&e.jsx(v,{label:s("vector.form.localModel"),help:s("vector.form.localModelHelp"),children:e.jsx(y,{value:r.localModel,placeholder:m.localModel,onChange:a=>x("localModel",a.target.value),className:"font-mono text-xs"})}),r.backend==="openai"&&e.jsxs(e.Fragment,{children:[e.jsx(v,{label:s("vector.form.openaiBaseUrl"),help:s("vector.form.openaiBaseUrlHelp"),children:e.jsx(y,{value:r.openaiBaseUrl,placeholder:m.openaiBaseUrl,onChange:a=>x("openaiBaseUrl",a.target.value),className:"font-mono text-xs"})}),e.jsx(v,{label:s("vector.form.openaiModel"),help:s("vector.form.openaiModelHelp"),children:e.jsx(y,{value:r.openaiModel,placeholder:m.openaiModel,onChange:a=>x("openaiModel",a.target.value),className:"font-mono text-xs"})}),e.jsx(v,{label:s("vector.form.openaiApiKey"),help:s(u?"vector.form.apiKeyKeepHint":"vector.form.apiKeyNewHint"),children:e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(y,{type:N?"text":"password",value:r.openaiApiKey,placeholder:u?l.IMHUB_MEMORY_VECTOR_OPENAI_API_KEY||"••••":"sk-…",onChange:a=>x("openaiApiKey",a.target.value),className:"font-mono text-xs",autoComplete:"off"}),e.jsx(p,{type:"button",variant:"ghost",size:"icon",onClick:()=>_(a=>!a),"aria-label":s("vector.form.toggleApiKey"),children:N?e.jsx(oe,{className:"h-4 w-4"}):e.jsx(ne,{className:"h-4 w-4"})})]})})]}),r.backend!=="off"&&e.jsxs(e.Fragment,{children:[e.jsx(v,{label:s("vector.form.batchSize"),help:s("vector.form.batchSizeHelp"),children:e.jsx(y,{type:"number",min:1,max:1024,step:1,value:r.batchSize,placeholder:m.batchSize,onChange:a=>x("batchSize",a.target.value),className:"font-mono text-xs"})}),e.jsx(v,{label:s("vector.form.hybridWeight"),help:s("vector.form.hybridWeightHelp"),children:e.jsx(y,{type:"number",min:0,max:1,step:.05,value:r.hybridWeight,placeholder:m.hybridWeight,onChange:a=>x("hybridWeight",a.target.value),className:"font-mono text-xs"})})]})]})]})}function v({label:t,help:s,children:n}){return e.jsxs("div",{className:"flex flex-col gap-1",children:[e.jsx(J,{className:"text-xs text-text-dim",children:t}),n,s&&e.jsx("p",{className:"text-[11px] text-text-muted",children:s})]})}function Le(){const{t}=L(["memory","common"]),[s]=$(),n=s.get("user")??"",l=xe(n?{user_key:n}:{}),r=l.data?.status,h=l.data?.coverage,N=l.data?.jobs??[],_=W(),f=fe(),b=he(),E=pe(),[w,x]=g.useState(!1);async function B(){try{const i=await _.mutateAsync();i.ok?c.success(t("vector.actions.testOk")):c.error(t("vector.actions.testFail",{detail:i.error??""}))}catch(i){const{message:u}=j(i,t);c.error(u)}}async function A(){try{const i=await f.mutateAsync();c.success(i.alreadyReady?t("vector.actions.downloadAlreadyReady"):t("vector.actions.downloadStarted"))}catch(i){const{message:u}=j(i,t);c.error(u)}}async function I(){try{await b.mutateAsync(n?{user_key:n}:void 0),c.success(t("vector.actions.backfillStarted"))}catch(i){const{message:u}=j(i,t);c.error(u)}}async function T(){try{const i=await E.mutateAsync(n?{user_key:n}:void 0);c.success(t("vector.actions.clearStarted",{count:i.cleared}))}catch(i){const{message:u}=j(i,t);throw c.error(u),i}}if(l.isLoading)return e.jsx("div",{className:"h-48 w-full rounded-md bg-surface-2 animate-pulse"});if(!r)return e.jsx(ce,{icon:e.jsx(F,{}),title:t("common:states.error"),description:l.error?.message??""});const R=n?t("vector.coverage.scope_user",{userKey:n}):t("vector.coverage.scope_global");return e.jsxs("div",{className:"mx-auto flex max-w-5xl flex-col gap-4",children:[e.jsxs("header",{className:"flex flex-col gap-1",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[e.jsx("h1",{className:"text-xl font-semibold",children:t("vector.title")}),e.jsxs(p,{variant:"ghost",size:"sm",className:"ml-auto",onClick:()=>l.refetch(),disabled:l.isFetching,"aria-label":t("actions.refresh",{ns:"common"}),children:[l.isFetching?e.jsx(M,{className:"h-4 w-4 animate-spin"}):e.jsx(le,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:t("actions.refresh",{ns:"common"})})]})]}),e.jsx("p",{className:"text-sm text-text-dim",children:t("vector.subtitle")})]}),e.jsx(ge,{onSaved:()=>void l.refetch()}),e.jsxs("div",{className:"grid gap-3 md:grid-cols-2",children:[e.jsxs("div",{className:"rounded-md border border-border bg-surface p-3",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2 text-sm",children:[e.jsx("span",{className:"font-medium",children:t("vector.backendLabel")}),e.jsx(k,{variant:"secondary",children:r.backend}),e.jsx(k,{variant:r.ready?"success":"warning",children:r.ready?t("vector.readyTrue"):t("vector.readyFalse")}),r.downloaded&&e.jsx(k,{variant:"info",children:t("vector.downloadedTrue")})]}),e.jsxs("dl",{className:"mt-3 grid grid-cols-[max-content_1fr] gap-x-3 gap-y-1 text-sm",children:[e.jsx("dt",{className:"text-text-dim",children:t("vector.modelLabel")}),e.jsx("dd",{className:"font-mono text-text",children:r.modelId||"—"}),e.jsx("dt",{className:"text-text-dim",children:t("vector.dimsLabel")}),e.jsx("dd",{className:"tabular-nums text-text",children:r.dims||"—"}),r.lastError&&e.jsxs(e.Fragment,{children:[e.jsx("dt",{className:"text-text-dim",children:t("vector.lastError")}),e.jsx("dd",{className:"text-danger text-xs break-all",children:r.lastError})]})]})]}),e.jsxs("div",{className:"rounded-md border border-border bg-surface p-3",children:[e.jsx("div",{className:"text-sm font-medium",children:t("vector.coverage.title")}),e.jsx("div",{className:"mt-1 text-xs text-text-dim",children:R}),e.jsxs("div",{className:"mt-3 grid grid-cols-3 gap-2",children:[e.jsx(H,{label:t("vector.coverage.total"),value:h?.total??0,tone:"info"}),e.jsx(H,{label:t("vector.coverage.withEmbedding"),value:h?.withEmbedding??0,tone:"success"}),e.jsx(H,{label:t("vector.coverage.withDifferentModel"),value:h?.withDifferentModel??0,tone:"warning"})]})]})]}),e.jsxs("div",{className:"rounded-md border border-border bg-surface p-3",children:[e.jsx("div",{className:"text-sm font-medium",children:t("vector.actions.title")}),e.jsxs("div",{className:"mt-3 flex flex-wrap gap-2",children:[e.jsxs(p,{variant:"secondary",size:"sm",onClick:()=>void B(),disabled:_.isPending,children:[_.isPending?e.jsx(M,{className:"h-4 w-4 animate-spin"}):e.jsx(P,{className:"h-4 w-4"}),t("vector.actions.test")]}),r.backend==="local"&&e.jsxs(p,{variant:"secondary",size:"sm",onClick:()=>void A(),disabled:f.isPending,children:[f.isPending?e.jsx(M,{className:"h-4 w-4 animate-spin"}):e.jsx(de,{className:"h-4 w-4"}),t("vector.actions.download")]}),e.jsxs(p,{variant:"default",size:"sm",onClick:()=>void I(),disabled:b.isPending||!r.ready,children:[b.isPending?e.jsx(M,{className:"h-4 w-4 animate-spin"}):e.jsx(P,{className:"h-4 w-4"}),t("vector.actions.backfill")]}),e.jsxs(p,{variant:"destructive",size:"sm",onClick:()=>x(!0),disabled:E.isPending,children:[e.jsx(me,{className:"h-4 w-4"}),t("vector.actions.clear")]})]})]}),e.jsxs("div",{className:"rounded-md border border-border bg-surface p-3",children:[e.jsx("div",{className:"text-sm font-medium",children:t("vector.jobs.title")}),N.length===0?e.jsx("div",{className:"mt-2 text-sm text-text-muted",children:t("vector.jobs.empty")}):e.jsx("ul",{className:"mt-2 flex flex-col gap-1.5 text-sm",children:N.map(i=>e.jsx("li",{children:e.jsx(ye,{job:i})},i.id))})]}),e.jsx(ie,{open:w,onOpenChange:x,title:t("vector.actions.confirmClear"),description:t("vector.actions.confirmClearDesc",{scope:R}),intent:"danger",confirmLabel:t("vector.actions.clear"),onConfirm:T})]})}const be={info:"border-info/30 text-info",success:"border-success/30 text-success",warning:"border-warning/30 text-warning",danger:"border-danger/30 text-danger"};function H({label:t,value:s,tone:n}){return e.jsxs("div",{className:Y("rounded-md border bg-bg px-2 py-2",be[n]),children:[e.jsx("div",{className:"text-[10px] uppercase tracking-wide text-text-dim",children:t}),e.jsx("div",{className:"text-xl font-semibold tabular-nums",children:s})]})}function ye({job:t}){const{t:s}=L("memory"),n=t.phase==="done"?"text-success":t.phase==="failed"?"text-danger":"text-info";return e.jsxs("div",{className:"flex flex-wrap items-center gap-2 text-xs",children:[e.jsx(k,{variant:"outline",children:t.kind}),e.jsxs("span",{className:Y("font-medium",n),children:[t.phase==="running"&&e.jsx(M,{className:"inline h-3 w-3 animate-spin"}),t.phase==="done"&&e.jsx(ue,{className:"inline h-3 w-3"}),t.phase==="failed"&&e.jsx(F,{className:"inline h-3 w-3"})," ",s(`vector.jobs.phase.${t.phase}`)]}),e.jsx("span",{className:"text-text-dim",children:t.message}),e.jsx("span",{className:"ml-auto text-text-muted tabular-nums",children:je(t.finishedAt??t.startedAt)})]})}function je(t){try{const s=new Date(t);return Number.isNaN(s.getTime())?String(t):s.toLocaleString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}catch{return String(t)}}export{Le as default};
|
|
2
|
-
//# sourceMappingURL=vector-
|
|
1
|
+
import{ab as S,r as O,ac as K,ae as L,V as e,B as k,c as p,S as Q,l as G,m as X,j as Z,k as V,I as y,a4 as c,G as j,L as J,ad as $,t as Y}from"./index-CGaI-i4K.js";import{e as g}from"./react-C9F3QeMB.js";import{d as ee,p as te}from"./use-settings-CrkXdLrr.js";import{u as se}from"./useQuery-ByZlZXlw.js";import{m as ae}from"./use-memory-C3GgMqiJ.js";import{L as M}from"./loader-circle-BBIfyATA.js";import{S as re}from"./save-beGooRNy.js";import{a as oe,E as ne}from"./eye-8lKlwbZE.js";import{C as ie}from"./confirm-dialog-DD1ZW1XE.js";import{E as ce}from"./empty-state-CwUKG8xX.js";import{C as F}from"./circle-x-OcRzGLRb.js";import{R as le}from"./refresh-ccw-DpPWcwTg.js";import{P}from"./play-BNtSkb5l.js";import{D as de}from"./download-CcO4RAuC.js";import{T as me}from"./trash-2-DL2FAuYX.js";import{C as ue}from"./circle-check-big-D6TvCoDM.js";import"./dialog-D5BsJN2q.js";import"./x-BLllJ8d_.js";const D={all:["memory","vector"],status:t=>["memory","vector","status",t??null]};function xe(t={}){return se({queryKey:D.status(t.user_key),queryFn:()=>O.getMemoryVectorStatus(t),refetchInterval:3e3,refetchIntervalInBackground:!1})}function z(t){return()=>{t.invalidateQueries({queryKey:D.all}),t.invalidateQueries({queryKey:ae.all})}}function he(){const t=K(),s=z(t);return S({mutationFn:n=>O.backfillMemoryVector({user_key:n?.user_key},n?.max_rows?{max_rows:n.max_rows}:void 0),onSuccess:s})}function fe(){const t=K();return S({mutationFn:()=>O.downloadMemoryVector(),onSuccess:z(t)})}function pe(){const t=K();return S({mutationFn:s=>O.clearMemoryVector({user_key:s?.user_key}),onSuccess:z(t)})}function W(){return S({mutationFn:()=>O.testMemoryVector()})}const m={backend:"off",localModel:"Xenova/bge-base-zh-v1.5",openaiBaseUrl:"https://api.openai.com/v1",openaiModel:"text-embedding-3-small",openaiApiKey:"",batchSize:"32",hybridWeight:"0.5"};function ve(t){const s=(t.IMHUB_MEMORY_VECTOR_BACKEND||"").toLowerCase();return{backend:s==="local"||s==="openai"?s:"off",localModel:t.IMHUB_MEMORY_VECTOR_LOCAL_MODEL||"",openaiBaseUrl:t.IMHUB_MEMORY_VECTOR_OPENAI_BASE_URL||"",openaiModel:t.IMHUB_MEMORY_VECTOR_OPENAI_MODEL||"",openaiApiKey:"",batchSize:t.IMHUB_MEMORY_VECTOR_BATCH_SIZE||"",hybridWeight:t.IMHUB_MEMORY_VECTOR_HYBRID_WEIGHT||""}}function ge({onSaved:t}){const{t:s}=L(["memory","common"]),n=ee({reveal:!1}),l=g.useMemo(()=>n.data?.env??{},[n.data?.env]),[r,h]=g.useState(m),[N,_]=g.useState(!1),f=g.useRef(m);g.useEffect(()=>{if(!n.data)return;const a=ve(l);h(a),f.current=a},[l,n.data]);const b=te(),E=W(),w=g.useMemo(()=>{const a=f.current;return Object.keys(r).some(d=>r[d]!==a[d])},[r]);function x(a,d){h(o=>({...o,[a]:d}))}function B(a){h(d=>{const o={...d,backend:a};return a==="local"&&!o.localModel.trim()&&(o.localModel=m.localModel),a==="openai"&&(o.openaiBaseUrl.trim()||(o.openaiBaseUrl=m.openaiBaseUrl),o.openaiModel.trim()||(o.openaiModel=m.openaiModel)),a!=="off"&&(o.batchSize.trim()||(o.batchSize=m.batchSize),o.hybridWeight.trim()||(o.hybridWeight=m.hybridWeight)),o})}function A(){if(r.backend==="openai"){if(!r.openaiBaseUrl.trim())return s("vector.form.errors.baseUrlRequired");try{new URL(r.openaiBaseUrl.trim())}catch{return s("vector.form.errors.baseUrlInvalid")}if(!r.openaiModel.trim())return s("vector.form.errors.openaiModelRequired");if(!!!l.IMHUB_MEMORY_VECTOR_OPENAI_API_KEY&&!r.openaiApiKey.trim())return s("vector.form.errors.apiKeyRequired")}if(r.backend==="local"&&!r.localModel.trim())return s("vector.form.errors.localModelRequired");if(r.batchSize.trim()){const a=Number(r.batchSize);if(!Number.isFinite(a)||a<1||a>1024)return s("vector.form.errors.batchSizeRange")}if(r.hybridWeight.trim()){const a=Number(r.hybridWeight);if(!Number.isFinite(a)||a<0||a>1)return s("vector.form.errors.hybridWeightRange")}return null}function I(){const a=f.current,d={},o=(C,U,q)=>{U!==q&&(d[C]=U.trim()===""?null:U.trim())};return o("IMHUB_MEMORY_VECTOR_BACKEND",r.backend,a.backend),o("IMHUB_MEMORY_VECTOR_LOCAL_MODEL",r.localModel,a.localModel),o("IMHUB_MEMORY_VECTOR_OPENAI_BASE_URL",r.openaiBaseUrl,a.openaiBaseUrl),o("IMHUB_MEMORY_VECTOR_OPENAI_MODEL",r.openaiModel,a.openaiModel),o("IMHUB_MEMORY_VECTOR_BATCH_SIZE",r.batchSize,a.batchSize),o("IMHUB_MEMORY_VECTOR_HYBRID_WEIGHT",r.hybridWeight,a.hybridWeight),r.openaiApiKey.trim()&&(d.IMHUB_MEMORY_VECTOR_OPENAI_API_KEY=r.openaiApiKey.trim()),d}async function T(){const a=A();if(a){c.error(a);return}const d=I();if(Object.keys(d).length===0){c.info(s("vector.form.nothingChanged"));return}try{await b.mutateAsync({updates:d}),c.success(s("vector.form.savedToast"));try{const o=await E.mutateAsync();o.ok?c.success(s("vector.actions.testOk")):c.error(s("vector.actions.testFail",{detail:o.error??""}))}catch(o){const{message:C}=j(o,s);c.error(s("vector.actions.testFail",{detail:C}))}t?.()}catch(o){const{message:C}=j(o,s);c.error(C)}}function R(){h(f.current)}const i=b.isPending||E.isPending,u=!!l.IMHUB_MEMORY_VECTOR_OPENAI_API_KEY;return e.jsxs("div",{className:"rounded-md border border-border bg-surface p-3",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2",children:[e.jsx("h2",{className:"text-sm font-medium",children:s("vector.form.title")}),w&&e.jsx(k,{variant:"info",children:s("vector.form.dirty")}),e.jsxs("div",{className:"ml-auto flex items-center gap-2",children:[w&&e.jsx(p,{type:"button",variant:"secondary",size:"sm",onClick:R,disabled:i,children:s("vector.form.discard")}),e.jsxs(p,{type:"button",size:"sm",onClick:()=>void T(),disabled:!w||i,children:[i?e.jsx(M,{className:"h-4 w-4 animate-spin"}):e.jsx(re,{className:"h-4 w-4"}),s("vector.form.saveAndTest")]})]})]}),e.jsx("p",{className:"mt-1 text-xs text-text-dim",children:s("vector.form.hint")}),n.isLoading?e.jsx("div",{className:"mt-3 h-32 w-full rounded-md bg-surface-2 animate-pulse"}):e.jsxs("div",{className:"mt-3 grid grid-cols-1 gap-3 sm:grid-cols-2",children:[e.jsx(v,{label:s("vector.form.backend"),help:s("vector.form.backendHelp"),children:e.jsxs(Q,{value:r.backend,onValueChange:a=>B(a),children:[e.jsx(G,{children:e.jsx(X,{})}),e.jsxs(Z,{children:[e.jsx(V,{value:"off",children:s("vector.form.backendOff")}),e.jsx(V,{value:"local",children:s("vector.form.backendLocal")}),e.jsx(V,{value:"openai",children:s("vector.form.backendOpenai")})]})]})}),r.backend==="local"&&e.jsx(v,{label:s("vector.form.localModel"),help:s("vector.form.localModelHelp"),children:e.jsx(y,{value:r.localModel,placeholder:m.localModel,onChange:a=>x("localModel",a.target.value),className:"font-mono text-xs"})}),r.backend==="openai"&&e.jsxs(e.Fragment,{children:[e.jsx(v,{label:s("vector.form.openaiBaseUrl"),help:s("vector.form.openaiBaseUrlHelp"),children:e.jsx(y,{value:r.openaiBaseUrl,placeholder:m.openaiBaseUrl,onChange:a=>x("openaiBaseUrl",a.target.value),className:"font-mono text-xs"})}),e.jsx(v,{label:s("vector.form.openaiModel"),help:s("vector.form.openaiModelHelp"),children:e.jsx(y,{value:r.openaiModel,placeholder:m.openaiModel,onChange:a=>x("openaiModel",a.target.value),className:"font-mono text-xs"})}),e.jsx(v,{label:s("vector.form.openaiApiKey"),help:s(u?"vector.form.apiKeyKeepHint":"vector.form.apiKeyNewHint"),children:e.jsxs("div",{className:"flex items-center gap-1",children:[e.jsx(y,{type:N?"text":"password",value:r.openaiApiKey,placeholder:u?l.IMHUB_MEMORY_VECTOR_OPENAI_API_KEY||"••••":"sk-…",onChange:a=>x("openaiApiKey",a.target.value),className:"font-mono text-xs",autoComplete:"off"}),e.jsx(p,{type:"button",variant:"ghost",size:"icon",onClick:()=>_(a=>!a),"aria-label":s("vector.form.toggleApiKey"),children:N?e.jsx(oe,{className:"h-4 w-4"}):e.jsx(ne,{className:"h-4 w-4"})})]})})]}),r.backend!=="off"&&e.jsxs(e.Fragment,{children:[e.jsx(v,{label:s("vector.form.batchSize"),help:s("vector.form.batchSizeHelp"),children:e.jsx(y,{type:"number",min:1,max:1024,step:1,value:r.batchSize,placeholder:m.batchSize,onChange:a=>x("batchSize",a.target.value),className:"font-mono text-xs"})}),e.jsx(v,{label:s("vector.form.hybridWeight"),help:s("vector.form.hybridWeightHelp"),children:e.jsx(y,{type:"number",min:0,max:1,step:.05,value:r.hybridWeight,placeholder:m.hybridWeight,onChange:a=>x("hybridWeight",a.target.value),className:"font-mono text-xs"})})]})]})]})}function v({label:t,help:s,children:n}){return e.jsxs("div",{className:"flex flex-col gap-1",children:[e.jsx(J,{className:"text-xs text-text-dim",children:t}),n,s&&e.jsx("p",{className:"text-[11px] text-text-muted",children:s})]})}function Le(){const{t}=L(["memory","common"]),[s]=$(),n=s.get("user")??"",l=xe(n?{user_key:n}:{}),r=l.data?.status,h=l.data?.coverage,N=l.data?.jobs??[],_=W(),f=fe(),b=he(),E=pe(),[w,x]=g.useState(!1);async function B(){try{const i=await _.mutateAsync();i.ok?c.success(t("vector.actions.testOk")):c.error(t("vector.actions.testFail",{detail:i.error??""}))}catch(i){const{message:u}=j(i,t);c.error(u)}}async function A(){try{const i=await f.mutateAsync();c.success(i.alreadyReady?t("vector.actions.downloadAlreadyReady"):t("vector.actions.downloadStarted"))}catch(i){const{message:u}=j(i,t);c.error(u)}}async function I(){try{await b.mutateAsync(n?{user_key:n}:void 0),c.success(t("vector.actions.backfillStarted"))}catch(i){const{message:u}=j(i,t);c.error(u)}}async function T(){try{const i=await E.mutateAsync(n?{user_key:n}:void 0);c.success(t("vector.actions.clearStarted",{count:i.cleared}))}catch(i){const{message:u}=j(i,t);throw c.error(u),i}}if(l.isLoading)return e.jsx("div",{className:"h-48 w-full rounded-md bg-surface-2 animate-pulse"});if(!r)return e.jsx(ce,{icon:e.jsx(F,{}),title:t("common:states.error"),description:l.error?.message??""});const R=n?t("vector.coverage.scope_user",{userKey:n}):t("vector.coverage.scope_global");return e.jsxs("div",{className:"mx-auto flex max-w-5xl flex-col gap-4",children:[e.jsxs("header",{className:"flex flex-col gap-1",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-3",children:[e.jsx("h1",{className:"text-xl font-semibold",children:t("vector.title")}),e.jsxs(p,{variant:"ghost",size:"sm",className:"ml-auto",onClick:()=>l.refetch(),disabled:l.isFetching,"aria-label":t("actions.refresh",{ns:"common"}),children:[l.isFetching?e.jsx(M,{className:"h-4 w-4 animate-spin"}):e.jsx(le,{className:"h-4 w-4"}),e.jsx("span",{className:"hidden sm:inline",children:t("actions.refresh",{ns:"common"})})]})]}),e.jsx("p",{className:"text-sm text-text-dim",children:t("vector.subtitle")})]}),e.jsx(ge,{onSaved:()=>void l.refetch()}),e.jsxs("div",{className:"grid gap-3 md:grid-cols-2",children:[e.jsxs("div",{className:"rounded-md border border-border bg-surface p-3",children:[e.jsxs("div",{className:"flex flex-wrap items-center gap-2 text-sm",children:[e.jsx("span",{className:"font-medium",children:t("vector.backendLabel")}),e.jsx(k,{variant:"secondary",children:r.backend}),e.jsx(k,{variant:r.ready?"success":"warning",children:r.ready?t("vector.readyTrue"):t("vector.readyFalse")}),r.downloaded&&e.jsx(k,{variant:"info",children:t("vector.downloadedTrue")})]}),e.jsxs("dl",{className:"mt-3 grid grid-cols-[max-content_1fr] gap-x-3 gap-y-1 text-sm",children:[e.jsx("dt",{className:"text-text-dim",children:t("vector.modelLabel")}),e.jsx("dd",{className:"font-mono text-text",children:r.modelId||"—"}),e.jsx("dt",{className:"text-text-dim",children:t("vector.dimsLabel")}),e.jsx("dd",{className:"tabular-nums text-text",children:r.dims||"—"}),r.lastError&&e.jsxs(e.Fragment,{children:[e.jsx("dt",{className:"text-text-dim",children:t("vector.lastError")}),e.jsx("dd",{className:"text-danger text-xs break-all",children:r.lastError})]})]})]}),e.jsxs("div",{className:"rounded-md border border-border bg-surface p-3",children:[e.jsx("div",{className:"text-sm font-medium",children:t("vector.coverage.title")}),e.jsx("div",{className:"mt-1 text-xs text-text-dim",children:R}),e.jsxs("div",{className:"mt-3 grid grid-cols-3 gap-2",children:[e.jsx(H,{label:t("vector.coverage.total"),value:h?.total??0,tone:"info"}),e.jsx(H,{label:t("vector.coverage.withEmbedding"),value:h?.withEmbedding??0,tone:"success"}),e.jsx(H,{label:t("vector.coverage.withDifferentModel"),value:h?.withDifferentModel??0,tone:"warning"})]})]})]}),e.jsxs("div",{className:"rounded-md border border-border bg-surface p-3",children:[e.jsx("div",{className:"text-sm font-medium",children:t("vector.actions.title")}),e.jsxs("div",{className:"mt-3 flex flex-wrap gap-2",children:[e.jsxs(p,{variant:"secondary",size:"sm",onClick:()=>void B(),disabled:_.isPending,children:[_.isPending?e.jsx(M,{className:"h-4 w-4 animate-spin"}):e.jsx(P,{className:"h-4 w-4"}),t("vector.actions.test")]}),r.backend==="local"&&e.jsxs(p,{variant:"secondary",size:"sm",onClick:()=>void A(),disabled:f.isPending,children:[f.isPending?e.jsx(M,{className:"h-4 w-4 animate-spin"}):e.jsx(de,{className:"h-4 w-4"}),t("vector.actions.download")]}),e.jsxs(p,{variant:"default",size:"sm",onClick:()=>void I(),disabled:b.isPending||!r.ready,children:[b.isPending?e.jsx(M,{className:"h-4 w-4 animate-spin"}):e.jsx(P,{className:"h-4 w-4"}),t("vector.actions.backfill")]}),e.jsxs(p,{variant:"destructive",size:"sm",onClick:()=>x(!0),disabled:E.isPending,children:[e.jsx(me,{className:"h-4 w-4"}),t("vector.actions.clear")]})]})]}),e.jsxs("div",{className:"rounded-md border border-border bg-surface p-3",children:[e.jsx("div",{className:"text-sm font-medium",children:t("vector.jobs.title")}),N.length===0?e.jsx("div",{className:"mt-2 text-sm text-text-muted",children:t("vector.jobs.empty")}):e.jsx("ul",{className:"mt-2 flex flex-col gap-1.5 text-sm",children:N.map(i=>e.jsx("li",{children:e.jsx(ye,{job:i})},i.id))})]}),e.jsx(ie,{open:w,onOpenChange:x,title:t("vector.actions.confirmClear"),description:t("vector.actions.confirmClearDesc",{scope:R}),intent:"danger",confirmLabel:t("vector.actions.clear"),onConfirm:T})]})}const be={info:"border-info/30 text-info",success:"border-success/30 text-success",warning:"border-warning/30 text-warning",danger:"border-danger/30 text-danger"};function H({label:t,value:s,tone:n}){return e.jsxs("div",{className:Y("rounded-md border bg-bg px-2 py-2",be[n]),children:[e.jsx("div",{className:"text-[10px] uppercase tracking-wide text-text-dim",children:t}),e.jsx("div",{className:"text-xl font-semibold tabular-nums",children:s})]})}function ye({job:t}){const{t:s}=L("memory"),n=t.phase==="done"?"text-success":t.phase==="failed"?"text-danger":"text-info";return e.jsxs("div",{className:"flex flex-wrap items-center gap-2 text-xs",children:[e.jsx(k,{variant:"outline",children:t.kind}),e.jsxs("span",{className:Y("font-medium",n),children:[t.phase==="running"&&e.jsx(M,{className:"inline h-3 w-3 animate-spin"}),t.phase==="done"&&e.jsx(ue,{className:"inline h-3 w-3"}),t.phase==="failed"&&e.jsx(F,{className:"inline h-3 w-3"})," ",s(`vector.jobs.phase.${t.phase}`)]}),e.jsx("span",{className:"text-text-dim",children:t.message}),e.jsx("span",{className:"ml-auto text-text-muted tabular-nums",children:je(t.finishedAt??t.startedAt)})]})}function je(t){try{const s=new Date(t);return Number.isNaN(s.getTime())?String(t):s.toLocaleString(void 0,{month:"short",day:"numeric",hour:"2-digit",minute:"2-digit"})}catch{return String(t)}}export{Le as default};
|
|
2
|
+
//# sourceMappingURL=vector-BmpvJTWt.js.map
|