Spaces:
Build error
Build error
twenty / packages /twenty-server /src /engine /metadata-modules /ai /ai-agent-execution /utils /mapDBPartToUIMessagePart.ts
| import { | |
| type ExtendedFileUIPart, | |
| type ExtendedUIMessagePart, | |
| } from 'twenty-shared/ai'; | |
| import { type AgentMessagePartEntity } from 'src/engine/metadata-modules/ai/ai-agent-execution/entities/agent-message-part.entity'; | |
| // Maps TypeORM entity fields to UI message parts. | |
| // A parallel mapping for GraphQL DTOs exists in the frontend at: | |
| // packages/twenty-front/src/modules/ai/utils/mapDBPartToUIMessagePart.ts | |
| export const mapDBPartToUIMessagePart = ( | |
| part: AgentMessagePartEntity, | |
| ): ExtendedUIMessagePart | null => { | |
| switch (part.type) { | |
| case 'text': | |
| return { | |
| type: 'text', | |
| text: part.textContent ?? '', | |
| }; | |
| case 'reasoning': | |
| return { | |
| type: 'reasoning', | |
| text: part.reasoningContent ?? '', | |
| state: (part.state as 'streaming' | 'done') ?? 'done', | |
| providerMetadata: part.providerMetadata ?? undefined, | |
| }; | |
| case 'file': | |
| return { | |
| type: 'file', | |
| mediaType: part.file?.mimeType ?? 'application/octet-stream', | |
| filename: part.fileFilename ?? '', | |
| url: '', | |
| fileId: part.fileId ?? '', | |
| } as ExtendedFileUIPart; | |
| case 'source-url': | |
| return { | |
| type: 'source-url', | |
| sourceId: part.sourceUrlSourceId ?? '', | |
| url: part.sourceUrlUrl ?? '', | |
| title: part.sourceUrlTitle ?? '', | |
| providerMetadata: part.providerMetadata ?? undefined, | |
| }; | |
| case 'source-document': | |
| return { | |
| type: 'source-document', | |
| sourceId: part.sourceDocumentSourceId ?? '', | |
| mediaType: part.sourceDocumentMediaType ?? '', | |
| title: part.sourceDocumentTitle ?? '', | |
| filename: part.sourceDocumentFilename ?? '', | |
| providerMetadata: part.providerMetadata ?? undefined, | |
| }; | |
| case 'step-start': | |
| return { | |
| type: 'step-start', | |
| }; | |
| case 'data-routing-status': | |
| return null; | |
| default: { | |
| const isStaticToolPart = | |
| part.type.startsWith('tool-') && part.toolCallId !== null; | |
| const isDynamicToolPart = | |
| part.type === 'dynamic-tool' && part.toolCallId !== null; | |
| if (isStaticToolPart || isDynamicToolPart) { | |
| return { | |
| type: part.type, | |
| ...(isDynamicToolPart && { toolName: part.toolName ?? '' }), | |
| toolCallId: part.toolCallId, | |
| input: part.toolInput ?? {}, | |
| output: part.toolOutput, | |
| errorText: part.errorMessage ?? '', | |
| state: part.state, | |
| ...(part.providerExecuted != null && { | |
| providerExecuted: part.providerExecuted, | |
| }), | |
| ...(part.providerMetadata != null && { | |
| callProviderMetadata: part.providerMetadata, | |
| }), | |
| } as ExtendedUIMessagePart; | |
| } | |
| return null; | |
| } | |
| } | |
| }; | |