Skip to content

Variable: GenieAttachmentSchema

const GenieAttachmentSchema: ZodObject<{ attachment_id: ZodOptional<ZodString>; attachment_type: ZodOptional<ZodCustom<AttachmentType, AttachmentType>>; query: ZodOptional<ZodObject<{ description: ZodOptional<ZodString>; id: ZodOptional<ZodString>; last_updated_timestamp: ZodOptional<ZodNumber>; parameters: ZodOptional<ZodArray<ZodObject<{ keyword: ZodOptional<ZodString>; sql_type: ZodOptional<ZodString>; value: ZodOptional<ZodString>; }, $strip>>>; query: ZodOptional<ZodString>; query_result_metadata: ZodOptional<ZodObject<{ is_truncated: ZodOptional<ZodBoolean>; row_count: ZodOptional<ZodNumber>; }, $strip>>; statement_id: ZodOptional<ZodString>; thoughts: ZodOptional<ZodArray<ZodObject<{ content: ZodString; thought_type: ZodCustom<GenieThoughtType, GenieThoughtType>; }, $strip>>>; title: ZodOptional<ZodString>; }, $strip>>; suggested_questions: ZodOptional<ZodObject<{ questions: ZodOptional<ZodArray<ZodString>>; }, $strip>>; text: ZodOptional<ZodObject<{ content: ZodOptional<ZodString>; id: ZodOptional<ZodString>; purpose: ZodOptional<ZodCustom<GenieTextAttachmentPurpose, GenieTextAttachmentPurpose>>; }, $strip>>; }, $strip>

GenieAttachment with:

  • query re-typed to the thoughts-aware GenieQueryAttachmentSchema.
  • attachment_type discriminator literal (AttachmentType) so consumers can switch (att.attachment_type) to narrow which sub-object is populated. Optional on the wire (Genie doesn’t send it); callers compute it with detectAttachmentType when they want the literal up-front.

text is re-typed to the forward-compatible GenieTextAttachmentSchema. attachment_id and suggested_questions pass through unchanged. attachment_id is genuinely optional on the wire: the first text attachment Genie emits per turn (the “main answer text”) arrives with no id, only the follow-up text attachment gets one.