@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.
Files changed (109) hide show
  1. package/dist/{ConnectedDocumentViewer-JZWQFKYH.cjs → ConnectedDocumentViewer-ID2RG5MF.cjs} +7 -7
  2. package/dist/{ConnectedDocumentViewer-JZWQFKYH.cjs.map → ConnectedDocumentViewer-ID2RG5MF.cjs.map} +1 -1
  3. package/dist/{ConnectedDocumentViewer-6GTO2LYM.js → ConnectedDocumentViewer-U5TQ4LFJ.js} +6 -6
  4. package/dist/{ConnectedDocumentViewer-6GTO2LYM.js.map → ConnectedDocumentViewer-U5TQ4LFJ.js.map} +1 -1
  5. package/dist/{DocumentReviewCard-BGQUXMPU.cjs → DocumentReviewCard-7OPL6PWG.cjs} +13 -13
  6. package/dist/{DocumentReviewCard-BGQUXMPU.cjs.map → DocumentReviewCard-7OPL6PWG.cjs.map} +1 -1
  7. package/dist/{DocumentReviewCard-VJP5VO4F.js → DocumentReviewCard-NDHCFYYT.js} +8 -8
  8. package/dist/{DocumentReviewCard-VJP5VO4F.js.map → DocumentReviewCard-NDHCFYYT.js.map} +1 -1
  9. package/dist/{WorkspaceTableView-T26UN2HI.js → WorkspaceTableView-4INHJ7QK.js} +19 -15
  10. package/dist/WorkspaceTableView-4INHJ7QK.js.map +1 -0
  11. package/dist/{WorkspaceTableView-KINAZSXG.cjs → WorkspaceTableView-BTUSU3N3.cjs} +21 -17
  12. package/dist/WorkspaceTableView-BTUSU3N3.cjs.map +1 -0
  13. package/dist/agents/index.cjs +258 -258
  14. package/dist/agents/index.js +2 -2
  15. package/dist/{chunk-YGXW2XAU.js → chunk-3EA2YAGR.js} +3 -3
  16. package/dist/{chunk-YGXW2XAU.js.map → chunk-3EA2YAGR.js.map} +1 -1
  17. package/dist/{chunk-W3BECCTZ.cjs → chunk-3JSBH5DI.cjs} +5 -3
  18. package/dist/chunk-3JSBH5DI.cjs.map +1 -0
  19. package/dist/{chunk-SYPW2WUW.cjs → chunk-4JKK6S7U.cjs} +5 -5
  20. package/dist/{chunk-SYPW2WUW.cjs.map → chunk-4JKK6S7U.cjs.map} +1 -1
  21. package/dist/{chunk-PV5ICMAE.js → chunk-4UMVAJJZ.js} +4 -4
  22. package/dist/{chunk-PV5ICMAE.js.map → chunk-4UMVAJJZ.js.map} +1 -1
  23. package/dist/{chunk-4FVKWJT2.cjs → chunk-52VME6ZS.cjs} +18 -18
  24. package/dist/{chunk-4FVKWJT2.cjs.map → chunk-52VME6ZS.cjs.map} +1 -1
  25. package/dist/{chunk-FT5WHS5K.cjs → chunk-563BHHHO.cjs} +3 -3
  26. package/dist/{chunk-FT5WHS5K.cjs.map → chunk-563BHHHO.cjs.map} +1 -1
  27. package/dist/{chunk-GALELOTT.js → chunk-57S2PLCM.js} +3 -3
  28. package/dist/{chunk-GALELOTT.js.map → chunk-57S2PLCM.js.map} +1 -1
  29. package/dist/{chunk-GI3VQ4Q2.js → chunk-5PKIDR2Q.js} +3 -3
  30. package/dist/{chunk-GI3VQ4Q2.js.map → chunk-5PKIDR2Q.js.map} +1 -1
  31. package/dist/{chunk-65BJLW4F.js → chunk-63BOGQRQ.js} +6 -4
  32. package/dist/chunk-63BOGQRQ.js.map +1 -0
  33. package/dist/{chunk-NTV5XMJT.cjs → chunk-66QN6ZJR.cjs} +34 -34
  34. package/dist/{chunk-NTV5XMJT.cjs.map → chunk-66QN6ZJR.cjs.map} +1 -1
  35. package/dist/{chunk-LZSYUVDG.cjs → chunk-AOBNXZLS.cjs} +99 -88
  36. package/dist/chunk-AOBNXZLS.cjs.map +1 -0
  37. package/dist/{chunk-URW6E5SG.cjs → chunk-B66CICTP.cjs} +45 -45
  38. package/dist/{chunk-URW6E5SG.cjs.map → chunk-B66CICTP.cjs.map} +1 -1
  39. package/dist/{chunk-P66OI6E4.cjs → chunk-E3ILJRG4.cjs} +11 -11
  40. package/dist/{chunk-P66OI6E4.cjs.map → chunk-E3ILJRG4.cjs.map} +1 -1
  41. package/dist/{chunk-ZVQK7TNZ.js → chunk-GJKXYX47.js} +3 -3
  42. package/dist/{chunk-ZVQK7TNZ.js.map → chunk-GJKXYX47.js.map} +1 -1
  43. package/dist/{chunk-XTEH237Z.js → chunk-IGQJ6ET3.js} +72 -61
  44. package/dist/chunk-IGQJ6ET3.js.map +1 -0
  45. package/dist/{chunk-O7TUZNIQ.cjs → chunk-IRI6LPDX.cjs} +4 -4
  46. package/dist/{chunk-O7TUZNIQ.cjs.map → chunk-IRI6LPDX.cjs.map} +1 -1
  47. package/dist/{chunk-ND4SFASU.js → chunk-J4SEJSSV.js} +4 -4
  48. package/dist/{chunk-ND4SFASU.js.map → chunk-J4SEJSSV.js.map} +1 -1
  49. package/dist/{chunk-WZRWV6EZ.js → chunk-JOFUAQTV.js} +8 -3
  50. package/dist/chunk-JOFUAQTV.js.map +1 -0
  51. package/dist/{chunk-J423JAH7.cjs → chunk-KFAFWPZK.cjs} +8 -3
  52. package/dist/chunk-KFAFWPZK.cjs.map +1 -0
  53. package/dist/{chunk-7NOVQP2Y.js → chunk-LNXMSIKU.js} +6 -6
  54. package/dist/{chunk-7NOVQP2Y.js.map → chunk-LNXMSIKU.js.map} +1 -1
  55. package/dist/{chunk-FZOSUEE5.js → chunk-MP7XCRHV.js} +3 -3
  56. package/dist/{chunk-FZOSUEE5.js.map → chunk-MP7XCRHV.js.map} +1 -1
  57. package/dist/{chunk-AWUSTKQ7.cjs → chunk-NJ3YV3VM.cjs} +27 -27
  58. package/dist/{chunk-AWUSTKQ7.cjs.map → chunk-NJ3YV3VM.cjs.map} +1 -1
  59. package/dist/{chunk-HO53IJIQ.js → chunk-OUCWTKQT.js} +3 -3
  60. package/dist/{chunk-HO53IJIQ.js.map → chunk-OUCWTKQT.js.map} +1 -1
  61. package/dist/{chunk-MZA7GMOH.js → chunk-PBQNZWSX.js} +3 -3
  62. package/dist/{chunk-MZA7GMOH.js.map → chunk-PBQNZWSX.js.map} +1 -1
  63. package/dist/{chunk-BPHRHJO6.cjs → chunk-PNWSEIWS.cjs} +4 -4
  64. package/dist/{chunk-BPHRHJO6.cjs.map → chunk-PNWSEIWS.cjs.map} +1 -1
  65. package/dist/{chunk-JVHO5PAJ.cjs → chunk-PT6D5B6L.cjs} +5 -5
  66. package/dist/{chunk-JVHO5PAJ.cjs.map → chunk-PT6D5B6L.cjs.map} +1 -1
  67. package/dist/{chunk-OBCGNZ54.cjs → chunk-QCFNPQWS.cjs} +53 -53
  68. package/dist/{chunk-OBCGNZ54.cjs.map → chunk-QCFNPQWS.cjs.map} +1 -1
  69. package/dist/{chunk-IRY63R4L.cjs → chunk-QQMMCXBP.cjs} +3 -3
  70. package/dist/{chunk-IRY63R4L.cjs.map → chunk-QQMMCXBP.cjs.map} +1 -1
  71. package/dist/{chunk-NNFGR27U.js → chunk-QRV4XYFJ.js} +3 -3
  72. package/dist/{chunk-NNFGR27U.js.map → chunk-QRV4XYFJ.js.map} +1 -1
  73. package/dist/{chunk-JLR7FXZJ.js → chunk-SK5TP4DP.js} +3 -3
  74. package/dist/{chunk-JLR7FXZJ.js.map → chunk-SK5TP4DP.js.map} +1 -1
  75. package/dist/{chunk-2P43MR5P.js → chunk-T3GTQXGP.js} +3 -3
  76. package/dist/{chunk-2P43MR5P.js.map → chunk-T3GTQXGP.js.map} +1 -1
  77. package/dist/{chunk-C3XE65OA.cjs → chunk-XTP4OGDG.cjs} +4 -4
  78. package/dist/{chunk-C3XE65OA.cjs.map → chunk-XTP4OGDG.cjs.map} +1 -1
  79. package/dist/connect/index.cjs +913 -911
  80. package/dist/connect/index.cjs.map +1 -1
  81. package/dist/connect/index.js +28 -26
  82. package/dist/connect/index.js.map +1 -1
  83. package/dist/connect/viewer.cjs +5 -5
  84. package/dist/connect/viewer.js +4 -4
  85. package/dist/document-tools/index.cjs +17 -17
  86. package/dist/document-tools/index.js +2 -2
  87. package/dist/embed/index.cjs +11 -11
  88. package/dist/embed/index.js +6 -6
  89. package/dist/files/index.cjs +221 -221
  90. package/dist/files/index.js +1 -1
  91. package/dist/index.cjs +307 -307
  92. package/dist/index.js +3 -3
  93. package/dist/settings/index.cjs +163 -163
  94. package/dist/settings/index.js +2 -2
  95. package/dist/studio/index.cjs +2 -2
  96. package/dist/studio/index.js +1 -1
  97. package/dist/styles.css +1 -1
  98. package/dist/workflow-canvas/index.cjs +24 -24
  99. package/dist/workflow-canvas/index.js +9 -9
  100. package/node_modules/@arbidocs/coedit/package.json +1 -1
  101. package/package.json +5 -5
  102. package/dist/WorkspaceTableView-KINAZSXG.cjs.map +0 -1
  103. package/dist/WorkspaceTableView-T26UN2HI.js.map +0 -1
  104. package/dist/chunk-65BJLW4F.js.map +0 -1
  105. package/dist/chunk-J423JAH7.cjs.map +0 -1
  106. package/dist/chunk-LZSYUVDG.cjs.map +0 -1
  107. package/dist/chunk-W3BECCTZ.cjs.map +0 -1
  108. package/dist/chunk-WZRWV6EZ.js.map +0 -1
  109. package/dist/chunk-XTEH237Z.js.map +0 -1
@@ -1,5 +1,5 @@
1
1
  "use client";
2
- import { DOCUMENTS_ROW_HEIGHT_INITIAL } from './chunk-WZRWV6EZ.js';
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-ZVQK7TNZ.js.map
116
- //# sourceMappingURL=chunk-ZVQK7TNZ.js.map
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-JLR7FXZJ.js';
3
- import { DocumentUser } from './chunk-HO53IJIQ.js';
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-FZOSUEE5.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-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-MZA7GMOH.js';
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, ASSISTANT_MENTION_LABEL, 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';
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, linkMentions, notify } from '@arbidocs/react/shell';
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 ? ASSISTANT_MENTION_LABEL : null
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
- "p",
2636
- {
2637
- className: "text-muted-foreground italic",
2638
- "data-testid": `message-thinking-${messageId}`,
2639
- children: [
2640
- /* @__PURE__ */ jsx("span", { className: "mr-2 inline-block h-2 w-2 animate-pulse rounded-full bg-current align-middle" }),
2641
- "Working on the answer\u2026",
2642
- workingStepLabel && /* @__PURE__ */ jsxs(Fragment, { children: [
2643
- " ",
2644
- /* @__PURE__ */ jsxs(
2645
- "span",
2646
- {
2647
- className: "not-italic",
2648
- "data-testid": `message-thinking-step-${messageId}`,
2649
- children: [
2650
- "\xB7 ",
2651
- workingStepLabel
2652
- ]
2653
- }
2654
- )
2655
- ] }),
2656
- isGenerating && /* @__PURE__ */ jsxs(Fragment, { children: [
2657
- " ",
2658
- /* @__PURE__ */ jsxs(
2659
- "span",
2660
- {
2661
- className: "whitespace-nowrap not-italic",
2662
- "data-testid": `message-thinking-elapsed-${messageId}`,
2663
- children: [
2664
- "\xB7",
2665
- " ",
2666
- /* @__PURE__ */ jsx(
2667
- MessageLiveSeconds,
2668
- {
2669
- conversationId: message.conversation_ext_id,
2670
- messageId,
2671
- isUser: false,
2672
- isGenerating,
2673
- offsetSeconds: workingStepStart
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-XTEH237Z.js.map
5302
- //# sourceMappingURL=chunk-XTEH237Z.js.map
5312
+ //# sourceMappingURL=chunk-IGQJ6ET3.js.map
5313
+ //# sourceMappingURL=chunk-IGQJ6ET3.js.map