@arbidocs/blocks 0.5.74 → 0.5.75
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/{ConnectedDocumentViewer-JZWQFKYH.cjs → ConnectedDocumentViewer-ID2RG5MF.cjs} +7 -7
- package/dist/{ConnectedDocumentViewer-JZWQFKYH.cjs.map → ConnectedDocumentViewer-ID2RG5MF.cjs.map} +1 -1
- package/dist/{ConnectedDocumentViewer-6GTO2LYM.js → ConnectedDocumentViewer-U5TQ4LFJ.js} +6 -6
- package/dist/{ConnectedDocumentViewer-6GTO2LYM.js.map → ConnectedDocumentViewer-U5TQ4LFJ.js.map} +1 -1
- package/dist/{DocumentReviewCard-BGQUXMPU.cjs → DocumentReviewCard-7OPL6PWG.cjs} +13 -13
- package/dist/{DocumentReviewCard-BGQUXMPU.cjs.map → DocumentReviewCard-7OPL6PWG.cjs.map} +1 -1
- package/dist/{DocumentReviewCard-VJP5VO4F.js → DocumentReviewCard-NDHCFYYT.js} +8 -8
- package/dist/{DocumentReviewCard-VJP5VO4F.js.map → DocumentReviewCard-NDHCFYYT.js.map} +1 -1
- package/dist/{WorkspaceTableView-T26UN2HI.js → WorkspaceTableView-4INHJ7QK.js} +19 -15
- package/dist/WorkspaceTableView-4INHJ7QK.js.map +1 -0
- package/dist/{WorkspaceTableView-KINAZSXG.cjs → WorkspaceTableView-BTUSU3N3.cjs} +21 -17
- package/dist/WorkspaceTableView-BTUSU3N3.cjs.map +1 -0
- package/dist/agents/index.cjs +258 -258
- package/dist/agents/index.js +2 -2
- package/dist/{chunk-YGXW2XAU.js → chunk-3EA2YAGR.js} +3 -3
- package/dist/{chunk-YGXW2XAU.js.map → chunk-3EA2YAGR.js.map} +1 -1
- package/dist/{chunk-W3BECCTZ.cjs → chunk-3JSBH5DI.cjs} +5 -3
- package/dist/chunk-3JSBH5DI.cjs.map +1 -0
- package/dist/{chunk-SYPW2WUW.cjs → chunk-4JKK6S7U.cjs} +5 -5
- package/dist/{chunk-SYPW2WUW.cjs.map → chunk-4JKK6S7U.cjs.map} +1 -1
- package/dist/{chunk-PV5ICMAE.js → chunk-4UMVAJJZ.js} +4 -4
- package/dist/{chunk-PV5ICMAE.js.map → chunk-4UMVAJJZ.js.map} +1 -1
- package/dist/{chunk-4FVKWJT2.cjs → chunk-52VME6ZS.cjs} +18 -18
- package/dist/{chunk-4FVKWJT2.cjs.map → chunk-52VME6ZS.cjs.map} +1 -1
- package/dist/{chunk-FT5WHS5K.cjs → chunk-563BHHHO.cjs} +3 -3
- package/dist/{chunk-FT5WHS5K.cjs.map → chunk-563BHHHO.cjs.map} +1 -1
- package/dist/{chunk-GALELOTT.js → chunk-57S2PLCM.js} +3 -3
- package/dist/{chunk-GALELOTT.js.map → chunk-57S2PLCM.js.map} +1 -1
- package/dist/{chunk-GI3VQ4Q2.js → chunk-5PKIDR2Q.js} +3 -3
- package/dist/{chunk-GI3VQ4Q2.js.map → chunk-5PKIDR2Q.js.map} +1 -1
- package/dist/{chunk-65BJLW4F.js → chunk-63BOGQRQ.js} +6 -4
- package/dist/chunk-63BOGQRQ.js.map +1 -0
- package/dist/{chunk-NTV5XMJT.cjs → chunk-66QN6ZJR.cjs} +34 -34
- package/dist/{chunk-NTV5XMJT.cjs.map → chunk-66QN6ZJR.cjs.map} +1 -1
- package/dist/{chunk-LZSYUVDG.cjs → chunk-AOBNXZLS.cjs} +99 -88
- package/dist/chunk-AOBNXZLS.cjs.map +1 -0
- package/dist/{chunk-URW6E5SG.cjs → chunk-B66CICTP.cjs} +45 -45
- package/dist/{chunk-URW6E5SG.cjs.map → chunk-B66CICTP.cjs.map} +1 -1
- package/dist/{chunk-P66OI6E4.cjs → chunk-E3ILJRG4.cjs} +11 -11
- package/dist/{chunk-P66OI6E4.cjs.map → chunk-E3ILJRG4.cjs.map} +1 -1
- package/dist/{chunk-ZVQK7TNZ.js → chunk-GJKXYX47.js} +3 -3
- package/dist/{chunk-ZVQK7TNZ.js.map → chunk-GJKXYX47.js.map} +1 -1
- package/dist/{chunk-XTEH237Z.js → chunk-IGQJ6ET3.js} +72 -61
- package/dist/chunk-IGQJ6ET3.js.map +1 -0
- package/dist/{chunk-O7TUZNIQ.cjs → chunk-IRI6LPDX.cjs} +4 -4
- package/dist/{chunk-O7TUZNIQ.cjs.map → chunk-IRI6LPDX.cjs.map} +1 -1
- package/dist/{chunk-ND4SFASU.js → chunk-J4SEJSSV.js} +4 -4
- package/dist/{chunk-ND4SFASU.js.map → chunk-J4SEJSSV.js.map} +1 -1
- package/dist/{chunk-WZRWV6EZ.js → chunk-JOFUAQTV.js} +8 -3
- package/dist/chunk-JOFUAQTV.js.map +1 -0
- package/dist/{chunk-J423JAH7.cjs → chunk-KFAFWPZK.cjs} +8 -3
- package/dist/chunk-KFAFWPZK.cjs.map +1 -0
- package/dist/{chunk-7NOVQP2Y.js → chunk-LNXMSIKU.js} +6 -6
- package/dist/{chunk-7NOVQP2Y.js.map → chunk-LNXMSIKU.js.map} +1 -1
- package/dist/{chunk-FZOSUEE5.js → chunk-MP7XCRHV.js} +3 -3
- package/dist/{chunk-FZOSUEE5.js.map → chunk-MP7XCRHV.js.map} +1 -1
- package/dist/{chunk-AWUSTKQ7.cjs → chunk-NJ3YV3VM.cjs} +27 -27
- package/dist/{chunk-AWUSTKQ7.cjs.map → chunk-NJ3YV3VM.cjs.map} +1 -1
- package/dist/{chunk-HO53IJIQ.js → chunk-OUCWTKQT.js} +3 -3
- package/dist/{chunk-HO53IJIQ.js.map → chunk-OUCWTKQT.js.map} +1 -1
- package/dist/{chunk-MZA7GMOH.js → chunk-PBQNZWSX.js} +3 -3
- package/dist/{chunk-MZA7GMOH.js.map → chunk-PBQNZWSX.js.map} +1 -1
- package/dist/{chunk-BPHRHJO6.cjs → chunk-PNWSEIWS.cjs} +4 -4
- package/dist/{chunk-BPHRHJO6.cjs.map → chunk-PNWSEIWS.cjs.map} +1 -1
- package/dist/{chunk-JVHO5PAJ.cjs → chunk-PT6D5B6L.cjs} +5 -5
- package/dist/{chunk-JVHO5PAJ.cjs.map → chunk-PT6D5B6L.cjs.map} +1 -1
- package/dist/{chunk-OBCGNZ54.cjs → chunk-QCFNPQWS.cjs} +53 -53
- package/dist/{chunk-OBCGNZ54.cjs.map → chunk-QCFNPQWS.cjs.map} +1 -1
- package/dist/{chunk-IRY63R4L.cjs → chunk-QQMMCXBP.cjs} +3 -3
- package/dist/{chunk-IRY63R4L.cjs.map → chunk-QQMMCXBP.cjs.map} +1 -1
- package/dist/{chunk-NNFGR27U.js → chunk-QRV4XYFJ.js} +3 -3
- package/dist/{chunk-NNFGR27U.js.map → chunk-QRV4XYFJ.js.map} +1 -1
- package/dist/{chunk-JLR7FXZJ.js → chunk-SK5TP4DP.js} +3 -3
- package/dist/{chunk-JLR7FXZJ.js.map → chunk-SK5TP4DP.js.map} +1 -1
- package/dist/{chunk-2P43MR5P.js → chunk-T3GTQXGP.js} +3 -3
- package/dist/{chunk-2P43MR5P.js.map → chunk-T3GTQXGP.js.map} +1 -1
- package/dist/{chunk-C3XE65OA.cjs → chunk-XTP4OGDG.cjs} +4 -4
- package/dist/{chunk-C3XE65OA.cjs.map → chunk-XTP4OGDG.cjs.map} +1 -1
- package/dist/connect/index.cjs +913 -911
- package/dist/connect/index.cjs.map +1 -1
- package/dist/connect/index.js +28 -26
- package/dist/connect/index.js.map +1 -1
- package/dist/connect/viewer.cjs +5 -5
- package/dist/connect/viewer.js +4 -4
- package/dist/document-tools/index.cjs +17 -17
- package/dist/document-tools/index.js +2 -2
- package/dist/embed/index.cjs +11 -11
- package/dist/embed/index.js +6 -6
- package/dist/files/index.cjs +221 -221
- package/dist/files/index.js +1 -1
- package/dist/index.cjs +307 -307
- package/dist/index.js +3 -3
- package/dist/settings/index.cjs +163 -163
- package/dist/settings/index.js +2 -2
- package/dist/studio/index.cjs +2 -2
- package/dist/studio/index.js +1 -1
- package/dist/styles.css +1 -1
- package/dist/workflow-canvas/index.cjs +24 -24
- package/dist/workflow-canvas/index.js +9 -9
- package/node_modules/@arbidocs/coedit/package.json +1 -1
- package/package.json +5 -5
- package/dist/WorkspaceTableView-KINAZSXG.cjs.map +0 -1
- package/dist/WorkspaceTableView-T26UN2HI.js.map +0 -1
- package/dist/chunk-65BJLW4F.js.map +0 -1
- package/dist/chunk-J423JAH7.cjs.map +0 -1
- package/dist/chunk-LZSYUVDG.cjs.map +0 -1
- package/dist/chunk-W3BECCTZ.cjs.map +0 -1
- package/dist/chunk-WZRWV6EZ.js.map +0 -1
- package/dist/chunk-XTEH237Z.js.map +0 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { DOCUMENTS_ROW_HEIGHT_INITIAL } from './chunk-
|
|
2
|
+
import { DOCUMENTS_ROW_HEIGHT_INITIAL } from './chunk-JOFUAQTV.js';
|
|
3
3
|
import { create } from 'zustand';
|
|
4
4
|
import { persist, createJSONStorage } from 'zustand/middleware';
|
|
5
5
|
|
|
@@ -112,5 +112,5 @@ var useFilesDialogs = create()((set) => ({
|
|
|
112
112
|
}));
|
|
113
113
|
|
|
114
114
|
export { FILES_PREFS_KEY, filesViewMode, useAiReviewStore, useFilesDialogs, useFilesGridStates, useFilesPrefs, useFilesStore, usePendingFolders };
|
|
115
|
-
//# sourceMappingURL=chunk-
|
|
116
|
-
//# sourceMappingURL=chunk-
|
|
115
|
+
//# sourceMappingURL=chunk-GJKXYX47.js.map
|
|
116
|
+
//# sourceMappingURL=chunk-GJKXYX47.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/connection/files/store.ts"],"names":[],"mappings":"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","file":"chunk-ZVQK7TNZ.js","sourcesContent":["/**\n * The Files kits' own state: empty folders the user created (a folder exists only through its\n * documents, so a new one is a placeholder until something is moved into it), per workspace, for\n * the session (kept in `sessionStorage`, so a reload keeps them).\n */\n\nimport type { GridState } from 'ag-grid-community'\nimport { create } from 'zustand'\nimport { createJSONStorage, persist } from 'zustand/middleware'\nimport { DOCUMENTS_ROW_HEIGHT_INITIAL } from '../../files/documentColumns'\nimport type { ExplorerFolder } from '../../files/folders/folderPaths'\n\ninterface FilesState {\n /** Placeholder folder paths per workspace. */\n pendingFolders: Readonly<Record<string, readonly string[]>>\n addPendingFolder: (workspaceId: string, path: string) => void\n removePendingFolder: (workspaceId: string, path: string) => void\n}\n\nexport const useFilesStore = create<FilesState>()(\n persist(\n (set) => ({\n pendingFolders: {},\n addPendingFolder: (workspaceId, path) =>\n set((state) => {\n const current = state.pendingFolders[workspaceId] ?? []\n if (current.includes(path)) return state\n return { pendingFolders: { ...state.pendingFolders, [workspaceId]: [...current, path] } }\n }),\n removePendingFolder: (workspaceId, path) =>\n set((state) => {\n const current = state.pendingFolders[workspaceId] ?? []\n if (!current.includes(path)) return state\n return {\n pendingFolders: {\n ...state.pendingFolders,\n [workspaceId]: current.filter((p) => p !== path),\n },\n }\n }),\n }),\n {\n name: 'arbi_explorer_pending_folders',\n storage: createJSONStorage(() => sessionStorage),\n partialize: (state) => ({ pendingFolders: state.pendingFolders }),\n }\n )\n)\n\nconst NONE: readonly string[] = []\n\n/** A workspace's placeholder folders. */\nexport function usePendingFolders(workspaceId: string | null | undefined): readonly string[] {\n return useFilesStore(\n (state) => (workspaceId ? state.pendingFolders[workspaceId] : undefined) ?? NONE\n )\n}\n\n/** How the files page shows the documents: a table, the explorer, review one by one, or search. */\nexport type FilesViewMode = 'grid' | 'explorer' | 'navigator' | 'search'\n\n/** The files page's own preferences key (`ConnectedFilesPage` `prefsKey`). */\nexport const FILES_PREFS_KEY = 'files'\nconst DEFAULT_VIEW_MODE: FilesViewMode = 'explorer'\n\ninterface FilesPrefsState {\n /** The documents list's tri-state filters (filter id → include / exclude / off). */\n documentFilters: Readonly<Record<string, 'include' | 'exclude' | null>>\n setDocumentFilters: (filters: Record<string, 'include' | 'exclude' | null>) => void\n /**\n * Each files page's view, by its `prefsKey` (a page that is the same kit in another role, e.g.\n * a tabular review in the table view, keeps its own). Absent: that page's default.\n */\n viewModes: Readonly<Record<string, FilesViewMode>>\n /** Set a page's view (default: the files page's). */\n setViewMode: (mode: FilesViewMode, prefsKey?: string) => void\n /** The table's row height (density). */\n rowHeight: number\n setRowHeight: (height: number) => void\n}\n\n/** The Files kits' preferences, kept on this device (`localStorage`) across sessions. */\nexport const useFilesPrefs = create<FilesPrefsState>()(\n persist(\n (set) => ({\n documentFilters: {},\n setDocumentFilters: (documentFilters) => set({ documentFilters }),\n viewModes: {},\n setViewMode: (viewMode, prefsKey = FILES_PREFS_KEY) =>\n set((state) =>\n state.viewModes[prefsKey] === viewMode\n ? state\n : { viewModes: { ...state.viewModes, [prefsKey]: viewMode } }\n ),\n // New users start at the compact minimum (more rows at once).\n rowHeight: DOCUMENTS_ROW_HEIGHT_INITIAL,\n setRowHeight: (rowHeight) => set({ rowHeight }),\n }),\n {\n name: 'arbi_files_prefs',\n storage: createJSONStorage(() => localStorage),\n version: 1,\n // Version 0 kept one view for every files page: it becomes the files page's own.\n migrate: (persisted, version) => {\n const state = (persisted ?? {}) as Record<string, unknown>\n if (version >= 1) return state as Partial<FilesPrefsState>\n const { viewMode, ...rest } = state\n return {\n ...rest,\n viewModes: viewMode ? { [FILES_PREFS_KEY]: viewMode as FilesViewMode } : {},\n } as Partial<FilesPrefsState>\n },\n partialize: (state) => ({\n documentFilters: state.documentFilters,\n viewModes: state.viewModes,\n rowHeight: state.rowHeight,\n }),\n }\n )\n)\n\n/** A files page's view (`prefsKey`, default the files page's), else its `defaultViewMode`. */\nexport function filesViewMode(\n state: Pick<FilesPrefsState, 'viewModes'>,\n prefsKey: string = FILES_PREFS_KEY,\n defaultViewMode: FilesViewMode = DEFAULT_VIEW_MODE\n): FilesViewMode {\n return state.viewModes[prefsKey] ?? defaultViewMode\n}\n\n/** An AI review run: the fields, the documents, and which of them the server finished. */\nexport interface AiReviewRun {\n tags: { id: string; name: string }[]\n docIds: string[]\n /** The documents the server finished (a finished cell with no value will not fill). */\n finishedDocIds?: string[]\n /** It replaces values already there: a cell shows its new value only once finished. */\n replacing?: boolean\n}\n\ninterface AiReviewState {\n /** The AI review dialog is open. */\n open: boolean\n /** The run on screen, kept after closing so \"View results\" can bring the answers back. */\n run: AiReviewRun | null\n setOpen: (open: boolean) => void\n setRun: (run: AiReviewRun | null) => void\n /** The server finished these documents of the run (with or without a value). */\n markFinished: (docIds: string[]) => void\n}\n\n/** The AI review dialog and its run, reachable from outside React (a finished-run notice). */\nexport const useAiReviewStore = create<AiReviewState>()((set) => ({\n open: false,\n run: null,\n setOpen: (open) => set({ open }),\n setRun: (run) => set({ run }),\n markFinished: (docIds) =>\n set((state) => {\n const run = state.run\n if (!run) return state\n const finished = new Set(run.finishedDocIds ?? [])\n const added = docIds.filter((id) => run.docIds.includes(id) && !finished.has(id))\n if (added.length === 0) return state\n return { run: { ...run, finishedDocIds: [...finished, ...added] } }\n }),\n}))\n\ninterface GridStatesState {\n /** AG Grid's saved state (columns, widths, sort) per grid id. */\n gridStates: Readonly<Record<string, GridState>>\n setGridState: (gridId: string, state: GridState) => void\n}\n\n/** The Files grids' saved state, kept on this device, for hosts that keep none of their own. */\nexport const useFilesGridStates = create<GridStatesState>()(\n persist(\n (set) => ({\n gridStates: {},\n setGridState: (gridId, state) =>\n set((current) => ({ gridStates: { ...current.gridStates, [gridId]: state } })),\n }),\n { name: 'arbi_files_grids', storage: createJSONStorage(() => localStorage) }\n )\n)\n\n/** A document the Delete confirmation asks about. */\nexport interface DeleteRequestDocument {\n external_id: string\n file_name?: string | null\n doc_metadata?: { title?: string | null } | null\n}\n\ninterface FilesDialogsState {\n /** Move the selection (or `folder`) to a folder. */\n move: { folder: ExplorerFolder | null } | null\n openMove: (folder?: ExplorerFolder | null) => void\n closeMove: () => void\n /** Edit the selection's labels and fields. */\n bulkTagsOpen: boolean\n setBulkTagsOpen: (open: boolean) => void\n /** Confirm deleting one document. */\n deleteRequest: DeleteRequestDocument | null\n requestDelete: (doc: DeleteRequestDocument | null) => void\n /** Export, copy or move the selection (the page's own dialog, when the host has none). */\n exportOpen: boolean\n setExportOpen: (open: boolean) => void\n}\n\n/** The files page's dialogs, also opened from outside it (commands, the viewer's related files). */\nexport const useFilesDialogs = create<FilesDialogsState>()((set) => ({\n move: null,\n openMove: (folder = null) => set({ move: { folder } }),\n closeMove: () => set({ move: null }),\n bulkTagsOpen: false,\n setBulkTagsOpen: (bulkTagsOpen) => set({ bulkTagsOpen }),\n deleteRequest: null,\n requestDelete: (deleteRequest) => set({ deleteRequest }),\n exportOpen: false,\n setExportOpen: (exportOpen) => set({ exportOpen }),\n}))\n"]}
|
|
1
|
+
{"version":3,"sources":["../src/connection/files/store.ts"],"names":[],"mappings":"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","file":"chunk-GJKXYX47.js","sourcesContent":["/**\n * The Files kits' own state: empty folders the user created (a folder exists only through its\n * documents, so a new one is a placeholder until something is moved into it), per workspace, for\n * the session (kept in `sessionStorage`, so a reload keeps them).\n */\n\nimport type { GridState } from 'ag-grid-community'\nimport { create } from 'zustand'\nimport { createJSONStorage, persist } from 'zustand/middleware'\nimport { DOCUMENTS_ROW_HEIGHT_INITIAL } from '../../files/documentColumns'\nimport type { ExplorerFolder } from '../../files/folders/folderPaths'\n\ninterface FilesState {\n /** Placeholder folder paths per workspace. */\n pendingFolders: Readonly<Record<string, readonly string[]>>\n addPendingFolder: (workspaceId: string, path: string) => void\n removePendingFolder: (workspaceId: string, path: string) => void\n}\n\nexport const useFilesStore = create<FilesState>()(\n persist(\n (set) => ({\n pendingFolders: {},\n addPendingFolder: (workspaceId, path) =>\n set((state) => {\n const current = state.pendingFolders[workspaceId] ?? []\n if (current.includes(path)) return state\n return { pendingFolders: { ...state.pendingFolders, [workspaceId]: [...current, path] } }\n }),\n removePendingFolder: (workspaceId, path) =>\n set((state) => {\n const current = state.pendingFolders[workspaceId] ?? []\n if (!current.includes(path)) return state\n return {\n pendingFolders: {\n ...state.pendingFolders,\n [workspaceId]: current.filter((p) => p !== path),\n },\n }\n }),\n }),\n {\n name: 'arbi_explorer_pending_folders',\n storage: createJSONStorage(() => sessionStorage),\n partialize: (state) => ({ pendingFolders: state.pendingFolders }),\n }\n )\n)\n\nconst NONE: readonly string[] = []\n\n/** A workspace's placeholder folders. */\nexport function usePendingFolders(workspaceId: string | null | undefined): readonly string[] {\n return useFilesStore(\n (state) => (workspaceId ? state.pendingFolders[workspaceId] : undefined) ?? NONE\n )\n}\n\n/** How the files page shows the documents: a table, the explorer, review one by one, or search. */\nexport type FilesViewMode = 'grid' | 'explorer' | 'navigator' | 'search'\n\n/** The files page's own preferences key (`ConnectedFilesPage` `prefsKey`). */\nexport const FILES_PREFS_KEY = 'files'\nconst DEFAULT_VIEW_MODE: FilesViewMode = 'explorer'\n\ninterface FilesPrefsState {\n /** The documents list's tri-state filters (filter id → include / exclude / off). */\n documentFilters: Readonly<Record<string, 'include' | 'exclude' | null>>\n setDocumentFilters: (filters: Record<string, 'include' | 'exclude' | null>) => void\n /**\n * Each files page's view, by its `prefsKey` (a page that is the same kit in another role, e.g.\n * a tabular review in the table view, keeps its own). Absent: that page's default.\n */\n viewModes: Readonly<Record<string, FilesViewMode>>\n /** Set a page's view (default: the files page's). */\n setViewMode: (mode: FilesViewMode, prefsKey?: string) => void\n /** The table's row height (density). */\n rowHeight: number\n setRowHeight: (height: number) => void\n}\n\n/** The Files kits' preferences, kept on this device (`localStorage`) across sessions. */\nexport const useFilesPrefs = create<FilesPrefsState>()(\n persist(\n (set) => ({\n documentFilters: {},\n setDocumentFilters: (documentFilters) => set({ documentFilters }),\n viewModes: {},\n setViewMode: (viewMode, prefsKey = FILES_PREFS_KEY) =>\n set((state) =>\n state.viewModes[prefsKey] === viewMode\n ? state\n : { viewModes: { ...state.viewModes, [prefsKey]: viewMode } }\n ),\n // New users start at the compact minimum (more rows at once).\n rowHeight: DOCUMENTS_ROW_HEIGHT_INITIAL,\n setRowHeight: (rowHeight) => set({ rowHeight }),\n }),\n {\n name: 'arbi_files_prefs',\n storage: createJSONStorage(() => localStorage),\n version: 1,\n // Version 0 kept one view for every files page: it becomes the files page's own.\n migrate: (persisted, version) => {\n const state = (persisted ?? {}) as Record<string, unknown>\n if (version >= 1) return state as Partial<FilesPrefsState>\n const { viewMode, ...rest } = state\n return {\n ...rest,\n viewModes: viewMode ? { [FILES_PREFS_KEY]: viewMode as FilesViewMode } : {},\n } as Partial<FilesPrefsState>\n },\n partialize: (state) => ({\n documentFilters: state.documentFilters,\n viewModes: state.viewModes,\n rowHeight: state.rowHeight,\n }),\n }\n )\n)\n\n/** A files page's view (`prefsKey`, default the files page's), else its `defaultViewMode`. */\nexport function filesViewMode(\n state: Pick<FilesPrefsState, 'viewModes'>,\n prefsKey: string = FILES_PREFS_KEY,\n defaultViewMode: FilesViewMode = DEFAULT_VIEW_MODE\n): FilesViewMode {\n return state.viewModes[prefsKey] ?? defaultViewMode\n}\n\n/** An AI review run: the fields, the documents, and which of them the server finished. */\nexport interface AiReviewRun {\n tags: { id: string; name: string }[]\n docIds: string[]\n /** The documents the server finished (a finished cell with no value will not fill). */\n finishedDocIds?: string[]\n /** It replaces values already there: a cell shows its new value only once finished. */\n replacing?: boolean\n}\n\ninterface AiReviewState {\n /** The AI review dialog is open. */\n open: boolean\n /** The run on screen, kept after closing so \"View results\" can bring the answers back. */\n run: AiReviewRun | null\n setOpen: (open: boolean) => void\n setRun: (run: AiReviewRun | null) => void\n /** The server finished these documents of the run (with or without a value). */\n markFinished: (docIds: string[]) => void\n}\n\n/** The AI review dialog and its run, reachable from outside React (a finished-run notice). */\nexport const useAiReviewStore = create<AiReviewState>()((set) => ({\n open: false,\n run: null,\n setOpen: (open) => set({ open }),\n setRun: (run) => set({ run }),\n markFinished: (docIds) =>\n set((state) => {\n const run = state.run\n if (!run) return state\n const finished = new Set(run.finishedDocIds ?? [])\n const added = docIds.filter((id) => run.docIds.includes(id) && !finished.has(id))\n if (added.length === 0) return state\n return { run: { ...run, finishedDocIds: [...finished, ...added] } }\n }),\n}))\n\ninterface GridStatesState {\n /** AG Grid's saved state (columns, widths, sort) per grid id. */\n gridStates: Readonly<Record<string, GridState>>\n setGridState: (gridId: string, state: GridState) => void\n}\n\n/** The Files grids' saved state, kept on this device, for hosts that keep none of their own. */\nexport const useFilesGridStates = create<GridStatesState>()(\n persist(\n (set) => ({\n gridStates: {},\n setGridState: (gridId, state) =>\n set((current) => ({ gridStates: { ...current.gridStates, [gridId]: state } })),\n }),\n { name: 'arbi_files_grids', storage: createJSONStorage(() => localStorage) }\n )\n)\n\n/** A document the Delete confirmation asks about. */\nexport interface DeleteRequestDocument {\n external_id: string\n file_name?: string | null\n doc_metadata?: { title?: string | null } | null\n}\n\ninterface FilesDialogsState {\n /** Move the selection (or `folder`) to a folder. */\n move: { folder: ExplorerFolder | null } | null\n openMove: (folder?: ExplorerFolder | null) => void\n closeMove: () => void\n /** Edit the selection's labels and fields. */\n bulkTagsOpen: boolean\n setBulkTagsOpen: (open: boolean) => void\n /** Confirm deleting one document. */\n deleteRequest: DeleteRequestDocument | null\n requestDelete: (doc: DeleteRequestDocument | null) => void\n /** Export, copy or move the selection (the page's own dialog, when the host has none). */\n exportOpen: boolean\n setExportOpen: (open: boolean) => void\n}\n\n/** The files page's dialogs, also opened from outside it (commands, the viewer's related files). */\nexport const useFilesDialogs = create<FilesDialogsState>()((set) => ({\n move: null,\n openMove: (folder = null) => set({ move: { folder } }),\n closeMove: () => set({ move: null }),\n bulkTagsOpen: false,\n setBulkTagsOpen: (bulkTagsOpen) => set({ bulkTagsOpen }),\n deleteRequest: null,\n requestDelete: (deleteRequest) => set({ deleteRequest }),\n exportOpen: false,\n setExportOpen: (exportOpen) => set({ exportOpen }),\n}))\n"]}
|
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use client";
|
|
2
|
-
import { useConnectedThreadActivity, useSelectWorkspace } from './chunk-
|
|
3
|
-
import { DocumentUser } from './chunk-
|
|
2
|
+
import { useConnectedThreadActivity, useSelectWorkspace } from './chunk-SK5TP4DP.js';
|
|
3
|
+
import { DocumentUser } from './chunk-OUCWTKQT.js';
|
|
4
4
|
import { buildFactCitations, citedVersionRef, chronologyFactBodies } from './chunk-KGUSKGZE.js';
|
|
5
|
-
import { MessageJsonTree, ProfileCard, AvatarPicker, IdentityVerificationCard, IdentityVerificationDialog, RequireVerified, PasswordChangeDialog, EMAIL_NOTIFICATION_KEYS, EMAIL_NOTIFICATION_CATEGORIES, NotificationCategoryList, toNotificationCategories, toActiveSessionViews, ActiveSessionsDialog, LogoutDialog, toLogoutSessionViews, DeleteAccountDialog, toDeleteBlockerViews } from './chunk-
|
|
5
|
+
import { MessageJsonTree, ProfileCard, AvatarPicker, IdentityVerificationCard, IdentityVerificationDialog, RequireVerified, PasswordChangeDialog, EMAIL_NOTIFICATION_KEYS, EMAIL_NOTIFICATION_CATEGORIES, NotificationCategoryList, toNotificationCategories, toActiveSessionViews, ActiveSessionsDialog, LogoutDialog, toLogoutSessionViews, DeleteAccountDialog, toDeleteBlockerViews } from './chunk-MP7XCRHV.js';
|
|
6
6
|
import { ConnectedMarkdown, InternalDocLink, ExternalLink } from './chunk-QZ5FDIT6.js';
|
|
7
7
|
import { ModalBreadcrumbHeader, ModalCrumbs } from './chunk-RC6VTY2H.js';
|
|
8
|
-
import { SettingsSection, SettingsCard, SettingsActionRow, SettingsRow, SettingsDangerZone } from './chunk-
|
|
8
|
+
import { SettingsSection, SettingsCard, SettingsActionRow, SettingsRow, SettingsDangerZone } from './chunk-PBQNZWSX.js';
|
|
9
9
|
import { EntityTooltip, EntityTooltipHeader, EntityTooltipSection, EntityTooltipHint } from './chunk-3UIJLUXN.js';
|
|
10
10
|
import { useLongPaste, useRecipientDraft, SlashMenu, ContextUsageBar, findMessageDocument, getParticipantTints, flashMessage, parseSlashTokenInProgress, buildSlashItems, filterSlashItems, copyMessageToClipboard, BranchControls, ThreadVisualizer, downloadTableAsCsv, ModelAutoIcon, ModelTierIcon, ModelDot, ModelPricingTip, ModelPickerPopover, ModelOption, ModelMenuDivider, ModelTierOption, ModelConfigureButton, ModelMenuMessage, ModelPickerTrigger, ModelTriggerContent, ModelOptionLabel } from './chunk-V2P2EJBA.js';
|
|
11
11
|
import { Composer, MessageActionMenu, MessageActionButton, MessageFooter, MessageRoot, MessageContent, MessageAuthor, MessageBubble, MessageByline, MessageSubagentBadge, MessageBody, MessageNarration, useStreamAnnouncement, MessageList, WorkflowStepChip, MessageSources, ComposerContainer } from './chunk-AAGR47JS.js';
|
|
@@ -29,14 +29,14 @@ import { initials } from './chunk-5VYJP6XD.js';
|
|
|
29
29
|
import { useBlocksEnvironment } from './chunk-DMVNEIJ4.js';
|
|
30
30
|
import React7, { memo, useMemo, createContext, forwardRef, useCallback, useRef, useLayoutEffect, useEffect, useState, useContext } from 'react';
|
|
31
31
|
import { Users, MessageCircleMore, ArrowUpRight, Send, Settings, Edit3, Copy, Link, Share2, Trash2, Check, Milestone, Clock, RotateCcw, FileText, Loader2, Network, ChevronRight, Download, Monitor, UserCircle, KeyRound, Radio, MessageSquare, Square, ArrowDown, Paperclip, Upload, Search, Eye, X, BadgeCheck, LogIn, Plus, LogOut, ArrowLeft } from 'lucide-react';
|
|
32
|
-
import { useWorkspaces, ArbiBotHeadIcon, useArbiWsStatus, useArbiWsStore, useUserSettings, useMessageTimer, useDocuments, useAvailableModels, formatGbp, useArbiSessionStore, CitationRenderer, useArbiSessionState, selectDraft, useWorkspaceUsers, useArbiSession, buildMentionCandidates, useConversations,
|
|
32
|
+
import { useWorkspaces, ArbiBotHeadIcon, useArbiWsStatus, useArbiWsStore, useUserSettings, useMessageTimer, useDocuments, useAvailableModels, formatGbp, useArbiSessionStore, CitationRenderer, useArbiSessionState, selectDraft, useWorkspaceUsers, useArbiSession, useAssistantName, buildMentionCandidates, useConversations, useLinkMentions, useConversationItems, useDeleteMessage, transcriptSegmentOf, useConfig, useThinkingContent, useCreateFact, useCreateFacts, workflowStepOf, stripSpeakerPrefix, MessageArtifactCard, useConversationData, useBranchNavigation, useArbiHost, useSkills, useBuiltinCommands, useConversationActivity, useMessageDetails, getWorkspaceKind, resolveConfigModel, useProfile, useUpdateProfile, useRequestEmailChange, useConfirmEmailChange, useNameEditor, useAvatarCrop, useEmailChange, ImageCropModal, useIdentityVerification, usePasswordChange, usePasswordChangeForm, useNotificationPreferences, useSessions, useCurrentSessionId, useTerminateSession, useSignOut, useDeleteAccount, useDeleteAccountFlow, useApplyChatModel, AUTO_CHAT_MODEL, formatGbpPerMillionTokens, useConversationTurn, useUploadDocuments, useWorkspaceRole, useArbi, downloadRecoveryFile, LinkedInIcon, GoogleIcon, AppleIcon, ArbiWebSocketProvider, useDocument, useDownloadDocuments, DocumentReview } from '@arbidocs/react';
|
|
33
33
|
import { isAgent, UserEntity, getUserInitials, getUserDisplayName, getUserAvatarColor, agentAvatarColors, Avatar, AvatarImage, AvatarFallback, cn, ShieldIcon, getWorkspaceColor, getDocumentTitle, Button, isImageDocument, formatFriendlyDate, Tooltip, TooltipTrigger, TooltipContent, Dialog, DialogContent, ProviderIcon, getEntityLabel, EntityIcon, TooltipProvider, Select, SelectTrigger, SelectContent, SelectItem, Popover, PopoverTrigger, PopoverContent, Checkbox, ARBI_MARK_SRC, Input } from '@arbidocs/react/ui';
|
|
34
34
|
import { jsx, jsxs, Fragment } from 'react/jsx-runtime';
|
|
35
35
|
import { QueryClient, QueryClientProvider } from '@tanstack/react-query';
|
|
36
36
|
import { mergeAgentSteps, extractSubagentLanes, getCurrentStep, computeRunStats, formatTokens, isNearAiUsageBudget, getSubagentBranchRecord, buildCitationChunkData, topLevelAgentSteps, findMainSiblingLeaf, sliceToSubagentThread, getAgentStepLabel, subagentJobLabel, getStepDisplay, getStepTool, findLeafForTaskMessage, Arbi } from '@arbidocs/sdk/browser';
|
|
37
37
|
import { isAbortError, browserSessionStateStorage, validateRecoveryKeyFile, RECOVERY_KEY_ERRORS, parseRecoveryUrl, prewarmKeyPairs, decryptRecoveryKey, initSodium } from '@arbidocs/client';
|
|
38
38
|
import { useIsOnline } from '@arbidocs/react/document-tools/core';
|
|
39
|
-
import { useMessageChatArtifact,
|
|
39
|
+
import { useMessageChatArtifact, notify } from '@arbidocs/react/shell';
|
|
40
40
|
import { artifactKindFromFileName, viewerTabForArtifactMode, parseVersionRef } from '@arbidocs/react/artifacts';
|
|
41
41
|
import { useVirtualizer } from '@tanstack/react-virtual';
|
|
42
42
|
|
|
@@ -1811,9 +1811,10 @@ var ConversationComposerComponent = function ConversationComposer({
|
|
|
1811
1811
|
};
|
|
1812
1812
|
const { data: users } = useWorkspaceUsers();
|
|
1813
1813
|
const currentUserId = useArbiSession().user?.external_id;
|
|
1814
|
+
const assistantName = useAssistantName();
|
|
1814
1815
|
const mentionCandidates = useMemo(
|
|
1815
|
-
() => buildMentionCandidates(users ?? [], currentUserId),
|
|
1816
|
-
[users, currentUserId]
|
|
1816
|
+
() => buildMentionCandidates(users ?? [], currentUserId, assistantName),
|
|
1817
|
+
[users, currentUserId, assistantName]
|
|
1817
1818
|
);
|
|
1818
1819
|
const mention = useMentionAutocomplete({
|
|
1819
1820
|
value: newMessage,
|
|
@@ -1828,7 +1829,7 @@ var ConversationComposerComponent = function ConversationComposer({
|
|
|
1828
1829
|
value: newMessage,
|
|
1829
1830
|
onValueChange: setNewMessage,
|
|
1830
1831
|
contextKey: currentConversationId,
|
|
1831
|
-
defaultLabel: prefillsAssistant ?
|
|
1832
|
+
defaultLabel: prefillsAssistant ? assistantName : null
|
|
1832
1833
|
});
|
|
1833
1834
|
const slashNav = useListKeyNav({
|
|
1834
1835
|
open: isSlashMenuOpen,
|
|
@@ -2060,6 +2061,7 @@ var MessageComponent = ({
|
|
|
2060
2061
|
const messageRef = useRef(null);
|
|
2061
2062
|
const session = useArbiSessionStore();
|
|
2062
2063
|
const environment = useBlocksEnvironment();
|
|
2064
|
+
const linkMentions = useLinkMentions();
|
|
2063
2065
|
const { notify: notify3 } = environment;
|
|
2064
2066
|
const editingMessageId = useArbiSessionState((state) => state.editingMessageId);
|
|
2065
2067
|
const isEditing = editingMessageId === message.external_id;
|
|
@@ -2189,7 +2191,6 @@ var MessageComponent = ({
|
|
|
2189
2191
|
const isAwaitingAnswer = (isGenerating || isRunningOnServer) && !isStopped && !!message.pendingUserInput;
|
|
2190
2192
|
const showWorkingIndicator = (isGenerating || isRunningOnServer) && !isQueuedAnswer && !responseContent.trim() && !linkedArtifact && !isAwaitingAnswer;
|
|
2191
2193
|
const workingStepLabel = showWorkingIndicator ? getCurrentAgentStepPresentation(message.agentSteps ?? [])?.description : void 0;
|
|
2192
|
-
const workingStepStart = showWorkingIndicator ? getCurrentStep(message.agentSteps ?? [])?.t ?? 0 : 0;
|
|
2193
2194
|
const showEmptyAnswer = !isUser && !isGenerating && !isRunningOnServer && !isFailed && !isStopped && !responseContent.trim() && !linkedArtifact;
|
|
2194
2195
|
const isEmptyStopped = isStopped && !responseContent.trim();
|
|
2195
2196
|
const stoppedQuestion = useMemo(() => {
|
|
@@ -2631,55 +2632,65 @@ var MessageComponent = ({
|
|
|
2631
2632
|
) }) : null,
|
|
2632
2633
|
showWorkingIndicator && // One line of running text, not a flex row: in a narrow column (the viewer docked
|
|
2633
2634
|
// beside the chat) flex items each shrank and wrapped on their own, as columns.
|
|
2634
|
-
/* @__PURE__ */ jsxs(
|
|
2635
|
-
|
|
2636
|
-
|
|
2637
|
-
|
|
2638
|
-
|
|
2639
|
-
|
|
2640
|
-
|
|
2641
|
-
|
|
2642
|
-
|
|
2643
|
-
|
|
2644
|
-
|
|
2645
|
-
|
|
2646
|
-
|
|
2647
|
-
|
|
2648
|
-
|
|
2649
|
-
|
|
2650
|
-
|
|
2651
|
-
|
|
2652
|
-
|
|
2653
|
-
|
|
2654
|
-
|
|
2655
|
-
|
|
2656
|
-
|
|
2657
|
-
|
|
2658
|
-
|
|
2659
|
-
|
|
2660
|
-
|
|
2661
|
-
|
|
2662
|
-
|
|
2663
|
-
|
|
2664
|
-
|
|
2665
|
-
|
|
2666
|
-
|
|
2667
|
-
|
|
2668
|
-
|
|
2669
|
-
|
|
2670
|
-
|
|
2671
|
-
|
|
2672
|
-
|
|
2673
|
-
|
|
2674
|
-
|
|
2675
|
-
|
|
2676
|
-
|
|
2677
|
-
|
|
2678
|
-
|
|
2679
|
-
|
|
2680
|
-
|
|
2681
|
-
|
|
2682
|
-
|
|
2635
|
+
/* @__PURE__ */ jsxs("div", { children: [
|
|
2636
|
+
/* @__PURE__ */ jsxs(
|
|
2637
|
+
"p",
|
|
2638
|
+
{
|
|
2639
|
+
className: "text-muted-foreground italic",
|
|
2640
|
+
"data-testid": `message-thinking-${messageId}`,
|
|
2641
|
+
children: [
|
|
2642
|
+
/* @__PURE__ */ jsx("span", { className: "mr-2 inline-block h-2 w-2 animate-pulse rounded-full bg-current align-middle" }),
|
|
2643
|
+
"Working on the answer\u2026",
|
|
2644
|
+
workingStepLabel && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
2645
|
+
" ",
|
|
2646
|
+
/* @__PURE__ */ jsxs(
|
|
2647
|
+
"span",
|
|
2648
|
+
{
|
|
2649
|
+
className: "not-italic",
|
|
2650
|
+
"data-testid": `message-thinking-step-${messageId}`,
|
|
2651
|
+
children: [
|
|
2652
|
+
"\xB7 ",
|
|
2653
|
+
workingStepLabel
|
|
2654
|
+
]
|
|
2655
|
+
}
|
|
2656
|
+
)
|
|
2657
|
+
] }),
|
|
2658
|
+
isGenerating && /* @__PURE__ */ jsxs(Fragment, { children: [
|
|
2659
|
+
" ",
|
|
2660
|
+
/* @__PURE__ */ jsxs(
|
|
2661
|
+
"span",
|
|
2662
|
+
{
|
|
2663
|
+
className: "whitespace-nowrap not-italic",
|
|
2664
|
+
"data-testid": `message-thinking-elapsed-${messageId}`,
|
|
2665
|
+
children: [
|
|
2666
|
+
"\xB7",
|
|
2667
|
+
" ",
|
|
2668
|
+
/* @__PURE__ */ jsx(
|
|
2669
|
+
MessageLiveSeconds,
|
|
2670
|
+
{
|
|
2671
|
+
conversationId: message.conversation_ext_id,
|
|
2672
|
+
messageId,
|
|
2673
|
+
isUser: false,
|
|
2674
|
+
isGenerating,
|
|
2675
|
+
suffix: "s elapsed"
|
|
2676
|
+
}
|
|
2677
|
+
)
|
|
2678
|
+
]
|
|
2679
|
+
}
|
|
2680
|
+
)
|
|
2681
|
+
] })
|
|
2682
|
+
]
|
|
2683
|
+
}
|
|
2684
|
+
),
|
|
2685
|
+
isGenerating && /* @__PURE__ */ jsx(
|
|
2686
|
+
"p",
|
|
2687
|
+
{
|
|
2688
|
+
className: "text-sm text-muted-foreground",
|
|
2689
|
+
"data-testid": `message-wait-help-${messageId}`,
|
|
2690
|
+
children: "You can stop this answer or choose Ask for status from the menu beside Stop."
|
|
2691
|
+
}
|
|
2692
|
+
)
|
|
2693
|
+
] }),
|
|
2683
2694
|
isQueuedAnswer && !responseContent.trim() && /* @__PURE__ */ jsxs(
|
|
2684
2695
|
"p",
|
|
2685
2696
|
{
|
|
@@ -5298,5 +5309,5 @@ function ArbiChat({ apiUrl, deploymentDomain, className, ...props }) {
|
|
|
5298
5309
|
}
|
|
5299
5310
|
|
|
5300
5311
|
export { AgentSteps, AnswerTable, ArbiChat, AskAgainContext, ConnectedBranchControls, ConnectedCitationRenderer, ConnectedCompactConversation, ConnectedConversationDocumentPicker, ConnectedDangerZone, ConnectedEmbeddedChat, ConnectedForgotPassword, ConnectedIdentityVerification, ConnectedLoginPage, ConnectedLogoutDialog, ConnectedMessage, ConnectedMessageArea, ConnectedMessageList, ConnectedModelSelector, ConnectedNotificationPreferences, ConnectedPasswordChangeDialog, ConnectedProfileCard, ConnectedRequireVerified, ConnectedSecuritySection, ConnectedSessionsRow, ConnectedThreadsPreview, ConnectedUserEntity, ConversationComposer2 as ConversationComposer, EmbeddedChatPanel, MessageDetailsModal, MessageLiveSeconds, PENDING_RECOVERY_KEY, PREMIUM_TIER_TAG, RunningSubagents, STANDARD_TIER_TAG, SessionStatusIcon, SourceChips, WorkflowStepMessage, backUpOnSignup, completeSsoSignIn, defaultHost, renderConnectedUser, renderSessionStatusIcon, resolveSsoName, ssoAccountStatus, useAuthPages, useModelPicker, useOpenChunk, useOpenWorkspaceIcon, useSlashItems, useSsoSignIn, useWorkspaceDocTitles };
|
|
5301
|
-
//# sourceMappingURL=chunk-
|
|
5302
|
-
//# sourceMappingURL=chunk-
|
|
5312
|
+
//# sourceMappingURL=chunk-IGQJ6ET3.js.map
|
|
5313
|
+
//# sourceMappingURL=chunk-IGQJ6ET3.js.map
|