feat: add connector deletion type and metadata schema to inbox types

This commit is contained in:
Anish Sarkar 2026-02-02 16:30:03 +05:30
parent bf08982029
commit 9e29265a61

View file

@ -7,6 +7,7 @@ import { documentTypeEnum } from "./document.types";
*/
export const inboxItemTypeEnum = z.enum([
"connector_indexing",
"connector_deletion",
"document_processing",
"new_mention",
"page_limit_exceeded",
@ -60,6 +61,17 @@ export const connectorIndexingMetadata = baseInboxItemMetadata.extend({
file_names: z.array(z.string()).optional(),
});
/**
* Connector deletion metadata schema
*/
export const connectorDeletionMetadata = baseInboxItemMetadata.extend({
connector_id: z.number(),
connector_name: z.string(),
connector_type: z.string(),
documents_deleted: z.number(),
error: z.string().optional(),
});
/**
* Document processing metadata schema
*/
@ -110,6 +122,7 @@ export const pageLimitExceededMetadata = baseInboxItemMetadata.extend({
*/
export const inboxItemMetadata = z.union([
connectorIndexingMetadata,
connectorDeletionMetadata,
documentProcessingMetadata,
newMentionMetadata,
pageLimitExceededMetadata,
@ -140,6 +153,11 @@ export const connectorIndexingInboxItem = inboxItem.extend({
metadata: connectorIndexingMetadata,
});
export const connectorDeletionInboxItem = inboxItem.extend({
type: z.literal("connector_deletion"),
metadata: connectorDeletionMetadata,
});
export const documentProcessingInboxItem = inboxItem.extend({
type: z.literal("document_processing"),
metadata: documentProcessingMetadata,
@ -235,6 +253,15 @@ export function isConnectorIndexingMetadata(
return connectorIndexingMetadata.safeParse(metadata).success;
}
/**
* Type guard for ConnectorDeletionMetadata
*/
export function isConnectorDeletionMetadata(
metadata: unknown
): metadata is ConnectorDeletionMetadata {
return connectorDeletionMetadata.safeParse(metadata).success;
}
/**
* Type guard for DocumentProcessingMetadata
*/
@ -268,6 +295,7 @@ export function parseInboxItemMetadata(
metadata: unknown
):
| ConnectorIndexingMetadata
| ConnectorDeletionMetadata
| DocumentProcessingMetadata
| NewMentionMetadata
| PageLimitExceededMetadata
@ -277,6 +305,10 @@ export function parseInboxItemMetadata(
const result = connectorIndexingMetadata.safeParse(metadata);
return result.success ? result.data : null;
}
case "connector_deletion": {
const result = connectorDeletionMetadata.safeParse(metadata);
return result.success ? result.data : null;
}
case "document_processing": {
const result = documentProcessingMetadata.safeParse(metadata);
return result.success ? result.data : null;
@ -303,12 +335,14 @@ export type InboxItemStatusEnum = z.infer<typeof inboxItemStatusEnum>;
export type DocumentProcessingStageEnum = z.infer<typeof documentProcessingStageEnum>;
export type BaseInboxItemMetadata = z.infer<typeof baseInboxItemMetadata>;
export type ConnectorIndexingMetadata = z.infer<typeof connectorIndexingMetadata>;
export type ConnectorDeletionMetadata = z.infer<typeof connectorDeletionMetadata>;
export type DocumentProcessingMetadata = z.infer<typeof documentProcessingMetadata>;
export type NewMentionMetadata = z.infer<typeof newMentionMetadata>;
export type PageLimitExceededMetadata = z.infer<typeof pageLimitExceededMetadata>;
export type InboxItemMetadata = z.infer<typeof inboxItemMetadata>;
export type InboxItem = z.infer<typeof inboxItem>;
export type ConnectorIndexingInboxItem = z.infer<typeof connectorIndexingInboxItem>;
export type ConnectorDeletionInboxItem = z.infer<typeof connectorDeletionInboxItem>;
export type DocumentProcessingInboxItem = z.infer<typeof documentProcessingInboxItem>;
export type NewMentionInboxItem = z.infer<typeof newMentionInboxItem>;
export type PageLimitExceededInboxItem = z.infer<typeof pageLimitExceededInboxItem>;