Service for managing conversation attachments. Handles validation, storage, thumbnails, and CRUD operations.

Constructors

Properties

modalityCache: ModalityCache = ...

Methods

  • Add a new attachment to a conversation detail. Handles validation, storage decision, thumbnail generation, and record creation.

    Parameters

    • conversationDetailId: string

      The ID of the conversation detail

    • input: AddAttachmentInput

      The attachment data and metadata

    • agent: AIAgentEntity

      The AI agent (for limit overrides)

    • model: AIModelEntity

      The AI model (for capability limits)

    • contextUser: UserInfo

      The current user context

    • existingCounts: {
          audios: number;
          documents: number;
          images: number;
          videos: number;
      } = ...

      Current attachment counts for validation

      • audios: number
      • documents: number
      • images: number
      • videos: number

    Returns Promise<AddAttachmentResult>

    The result with created attachment or error

  • Create an attachment record in the database using strongly-typed entity.

    Parameters

    • data: {
          conversationDetailId: string;
          displayOrder: number;
          durationSeconds: number;
          fileId: string;
          fileName: string;
          height: number;
          inlineData: string;
          mimeType: string;
          modalityId: string;
          sizeBytes: number;
          thumbnailBase64: string;
          width: number;
      }
      • conversationDetailId: string
      • displayOrder: number
      • durationSeconds: number
      • fileId: string
      • fileName: string
      • height: number
      • inlineData: string
      • mimeType: string
      • modalityId: string
      • sizeBytes: number
      • thumbnailBase64: string
      • width: number
    • contextUser: UserInfo

    Returns Promise<ConversationDetailAttachmentEntity>

  • Generate a thumbnail for an image. Returns base64-encoded thumbnail data.

    Note: This is a placeholder implementation. In production, you'd use a library like sharp or Jimp for server-side image processing, or Canvas API for client-side.

    Parameters

    • _base64Data: string
    • _mimeType: string
    • _maxDimension: number = 200
    • _quality: number = 0.7

    Returns Promise<string>

  • Upload data to MJStorage

    Parameters

    Returns Promise<{
        error?: string;
        fileId?: string;
        success: boolean;
    }>