Skip to content
Merged
Show file tree
Hide file tree
Changes from 1 commit
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Next Next commit
improvement(knowledge): make connector-synced document chunks readonly
  • Loading branch information
waleedlatif1 committed Mar 6, 2026
commit c12506ad08ba876c4451e165044ebfd2bf997b82
Original file line number Diff line number Diff line change
Expand Up @@ -45,6 +45,10 @@ interface ChunkContextMenuProps {
* Whether add chunk is disabled
*/
disableAddChunk?: boolean
/**
* Whether the document is synced from a connector (chunks are read-only)
*/
isConnectorDocument?: boolean
/**
* Number of selected chunks (for batch operations)
*/
Expand Down Expand Up @@ -80,6 +84,7 @@ export function ChunkContextMenu({
disableToggleEnabled = false,
disableDelete = false,
disableAddChunk = false,
isConnectorDocument = false,
selectedCount = 1,
enabledCount = 0,
disabledCount = 0,
Expand Down Expand Up @@ -134,7 +139,7 @@ export function ChunkContextMenu({
onClose()
}}
>
Edit
{isConnectorDocument ? 'View' : 'Edit'}
</PopoverItem>
)}
{!isMultiSelect && onCopyContent && (
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -50,6 +50,8 @@ export function EditChunkModal({
maxChunkSize,
}: EditChunkModalProps) {
const userPermissions = useUserPermissionsContext()
const isConnectorDocument = Boolean(document?.connectorId)
const canEditChunk = userPermissions.canEdit && !isConnectorDocument
const {
mutate: updateChunk,
isPending: isSaving,
Expand Down Expand Up @@ -186,7 +188,9 @@ export function EditChunkModal({
<ModalContent size='lg'>
<ModalHeader>
<div className='flex items-center gap-[8px]'>
<span>Edit Chunk #{chunk.chunkIndex}</span>
<span>
{canEditChunk ? 'Edit' : 'View'} Chunk #{chunk.chunkIndex}
</span>
{/* Navigation Controls */}
<div className='flex items-center gap-[6px]'>
<Tooltip.Root>
Expand Down Expand Up @@ -270,11 +274,15 @@ export function EditChunkModal({
value={editedContent}
onChange={(e) => setEditedContent(e.target.value)}
placeholder={
userPermissions.canEdit ? 'Enter chunk content...' : 'Read-only view'
canEditChunk
? 'Enter chunk content...'
: isConnectorDocument
? 'This chunk is synced from a connector and cannot be edited'
: 'Read-only view'
}
rows={20}
disabled={isSaving || isNavigating || !userPermissions.canEdit}
readOnly={!userPermissions.canEdit}
disabled={isSaving || isNavigating || !canEditChunk}
readOnly={!canEditChunk}
/>
)}
</div>
Expand Down Expand Up @@ -306,7 +314,7 @@ export function EditChunkModal({
>
Cancel
</Button>
{userPermissions.canEdit && (
{canEditChunk && (
<Button
variant='tertiary'
onClick={handleSaveContent}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -384,6 +384,7 @@ export function Document({

const combinedError = documentError || searchError || initialError

const isConnectorDocument = Boolean(documentData?.connectorId)
const effectiveKnowledgeBaseName = knowledgeBase?.name || knowledgeBaseName || 'Knowledge Base'
const effectiveDocumentName = documentData?.filename || documentName || 'Document'

Expand Down Expand Up @@ -781,7 +782,9 @@ export function Document({
<Button
onClick={() => setIsCreateChunkModalOpen(true)}
disabled={
documentData?.processingStatus === 'failed' || !userPermissions.canEdit
documentData?.processingStatus === 'failed' ||
!userPermissions.canEdit ||
isConnectorDocument
}
variant='tertiary'
className='h-[32px] rounded-[6px]'
Expand All @@ -792,6 +795,11 @@ export function Document({
{!userPermissions.canEdit && (
<Tooltip.Content>Write permission required to create chunks</Tooltip.Content>
)}
{userPermissions.canEdit && isConnectorDocument && (
<Tooltip.Content>
Chunks from connector-synced documents are read-only
</Tooltip.Content>
)}
Comment thread
waleedlatif1 marked this conversation as resolved.
</Tooltip.Root>
</div>
</div>
Expand Down Expand Up @@ -1217,13 +1225,20 @@ export function Document({
: undefined
}
onAddChunk={
userPermissions.canEdit && documentData?.processingStatus !== 'failed'
userPermissions.canEdit &&
documentData?.processingStatus !== 'failed' &&
!isConnectorDocument
? () => setIsCreateChunkModalOpen(true)
: undefined
}
disableToggleEnabled={!userPermissions.canEdit}
disableDelete={!userPermissions.canEdit}
disableAddChunk={!userPermissions.canEdit || documentData?.processingStatus === 'failed'}
disableAddChunk={
!userPermissions.canEdit ||
documentData?.processingStatus === 'failed' ||
isConnectorDocument
}
isConnectorDocument={isConnectorDocument}
/>
</div>
)
Expand Down