> ## Documentation Index
> Fetch the complete documentation index at: https://docs.convocore.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Interact channel

> Single bi-directional channel used to drive one agent turn. The client
sends exactly one `InteractObject`; the server streams back chunked
responses until it closes the connection (code `1000`).




## AsyncAPI

````yaml api-reference/asyncapi/interact.yaml interact
id: interact
title: Interact channel
description: |
  Single bi-directional channel used to drive one agent turn. The client
  sends exactly one `InteractObject`; the server streams back chunked
  responses until it closes the connection (code `1000`).
servers:
  - id: euProduction
    protocol: wss
    host: eu-gcp-api.vg-stuff.com
    bindings: []
    variables: []
  - id: naProduction
    protocol: wss
    host: na-gcp-api.vg-stuff.com
    bindings: []
    variables: []
address: /interact
parameters: []
bindings:
  - protocol: ws
    version: 0.1.0
    value:
      method: GET
    schemaProperties:
      - name: method
        type: string
        description: GET
        required: false
operations:
  - &ref_8
    id: sendInteract
    title: Start an agent turn
    description: Open a session and send a single InteractObject to drive one agent turn.
    type: receive
    messages:
      - &ref_10
        id: interactObject
        contentType: application/json
        payload:
          - name: Interact request
            description: The single payload the client sends after opening the socket.
            type: object
            properties:
              - name: agentId
                type: string
                description: The ID of the agent to interact with.
                examples: &ref_0
                  - agt_01HZX2K9ABC
                required: true
              - name: convoId
                type: string
                description: |
                  The conversation ID. Reuse the same `convoId` across turns to
                  keep history; use a fresh one to start a new conversation.
                examples: &ref_1
                  - conv_01HZX2K9XYZ
                required: true
              - name: bucket
                type: string
                description: >
                  Region bucket. Use `voiceglow-eu` for EU and `(default)` for
                  NA.
                enumValues:
                  - voiceglow-eu
                  - (default)
                required: true
              - name: prompt
                type: string
                description: |
                  User message to send to the agent. Special values:
                  - `"start"` — trigger the agent's initial greeting.
                  - `"@cancel:<reason>"` — cancel the in-flight turn.
                  - `"@rewind:<nodeId>"` — rewind a node-based conversation to a
                    specific node.
                examples: &ref_2
                  - Hello, how can you help me?
                  - start
                required: false
              - name: sessionId
                type: string
                description: Optional session id; defaults to `convoId` if omitted.
                required: false
              - name: messageType
                type: string
                description: >
                  Type of input. Use `visual` together with `visualPayload` to
                  send

                  images.
                enumValues:
                  - text
                  - visual
                required: false
              - name: visualPayload
                type: object
                description: 'Image/visual content for `messageType: visual` turns.'
                required: false
                properties:
                  - name: image
                    type: string
                    description: Primary image URL.
                    required: false
                  - name: images
                    type: array
                    description: Additional image URLs.
                    required: false
                    properties:
                      - name: item
                        type: string
                        required: false
                  - name: message
                    type: string
                    description: Optional caption / accompanying user message.
                    required: false
                  - name: imageCount
                    type: integer
                    required: false
              - name: replyTo
                type: object
                description: Reply context when the user is replying to a previous message.
                required: false
                properties:
                  - name: messageId
                    type: string
                    required: false
                  - name: messageContent
                    type: string
                    required: false
                  - name: messageFrom
                    type: string
                    enumValues:
                      - human
                      - bot
                    required: false
                  - name: messageIndex
                    type: integer
                    required: false
                  - name: turnIndex
                    type: integer
                    required: false
              - name: actionMetadata
                type: object
                required: false
                properties:
                  - name: mid
                    type: string
                    description: Client-supplied message id (used for de-duplication).
                    required: false
              - name: agentData
                type: object
                description: >
                  Optional agent override. When provided with at least an `ID`,
                  the

                  server skips loading the agent doc from Firestore and uses
                  this

                  object instead. Mirrors `ChatRuntime`.
                required: false
                properties:
                  - name: ID
                    type: string
                    required: false
                  - name: ownerID
                    type: string
                    required: false
                  - name: title
                    type: string
                    required: false
              - name: workspaceData
                type: object
                description: Optional workspace override (mirrors `WorkspaceModel`).
                required: false
                properties:
                  - name: uid
                    type: string
                    required: false
                  - name: email
                    type: string
                    required: false
              - name: turnsHistory
                type: array
                description: >
                  Optional override of the conversation turns. When provided,
                  the

                  server uses this instead of fetching from Firestore.
                required: false
                properties:
                  - name: from
                    type: string
                    enumValues:
                      - bot
                      - human
                    required: false
                  - name: ts
                    type: number
                    description: Unix timestamp (seconds).
                    required: false
                  - name: modelId
                    type: string
                    description: Model id that produced this turn (bot turns only).
                    required: false
                  - name: messages
                    type: array
                    required: false
                    properties:
                      - name: from
                        type: string
                        enumValues:
                          - bot
                          - human
                        required: false
                      - name: type
                        type: string
                        description: >
                          Message type. Common values include `text`, `visual`,

                          `cardV2`, `carousel`, `ui_engine_form`,
                          `ui_engine_input`,

                          `debug:tell`, `debug:error`, `debug:success`,

                          `context:form_submission`.
                        required: false
                      - name: ts
                        type: number
                        required: false
                      - name: mid
                        type: string
                        required: false
                      - name: item
                        type: object
                        description: >
                          Type-specific payload. Shape depends on `type`. For
                          UI-engine

                          agents, this is one of the `UiEngineMessage` shapes
                          (text /

                          choice / visual / cardV2 / carousel / iFrame / form /
                          input).
                        required: false
                        properties:
                          - name: type
                            type: string
                            description: >
                              Message kind. `form` and `input` are only emitted
                              on web

                              channels (`web-chat` / `text`) when the agent has
                              forms

                              enabled.
                            enumValues:
                              - text
                              - choice
                              - visual
                              - cardV2
                              - carousel
                              - iFrame
                              - form
                              - input
                            required: true
                          - name: payload
                            type: object
                            description: Type-specific payload. See per-type schemas below.
                            required: true
                            properties:
                              - name: message
                                type: string
                                description: Message content. Supports Markdown.
                                required: false
                              - name: buttons
                                type: array
                                required: true
                                properties:
                                  - name: name
                                    type: string
                                    description: Visible label of the button.
                                    required: true
                                  - name: request
                                    type: object
                                    description: >
                                      What happens when the user clicks the
                                      button. Either opens a

                                      URL or sends a user message back into the
                                      conversation.
                                    required: true
                                    properties:
                                      - name: type
                                        type: string
                                        enumValues:
                                          - open_url
                                          - text
                                        required: true
                                      - name: payload
                                        type: object
                                        required: true
                                        properties:
                                          - name: url
                                            type: string
                                            description: >
                                              URL to open when the button is clicked.
                                              Must be a

                                              real URL pulled from the KB / tool
                                              output.
                                            required: true
                                          - name: message
                                            type: string
                                            description: User message that will be sent on click.
                                            required: true
                              - name: image
                                type: string
                                description: >
                                  URL of the image. Must end with a valid image
                                  extension

                                  (`.png`, `.jpg`, `.jpeg`, `.webp`, `.gif`,
                                  ...).
                                required: true
                              - name: imageUrl
                                type: string
                                description: >
                                  Optional image URL. Must end with a valid
                                  image extension.
                                required: false
                              - name: title
                                type: string
                                description: Card title (supports Markdown).
                                required: true
                              - name: description
                                type: object
                                required: false
                                properties:
                                  - name: text
                                    type: string
                                    description: Card description (supports Markdown).
                                    required: false
                              - name: buttons
                                type: array
                                description: Optional call-to-action buttons.
                                required: false
                                properties:
                                  - name: name
                                    type: string
                                    description: Visible label of the button.
                                    required: true
                                  - name: request
                                    type: object
                                    description: >
                                      What happens when the user clicks the
                                      button. Either opens a

                                      URL or sends a user message back into the
                                      conversation.
                                    required: true
                                    properties:
                                      - name: type
                                        type: string
                                        enumValues:
                                          - open_url
                                          - text
                                        required: true
                                      - name: payload
                                        type: object
                                        required: true
                                        properties:
                                          - name: url
                                            type: string
                                            description: >
                                              URL to open when the button is clicked.
                                              Must be a

                                              real URL pulled from the KB / tool
                                              output.
                                            required: true
                                          - name: message
                                            type: string
                                            description: User message that will be sent on click.
                                            required: true
                              - name: cards
                                type: array
                                required: true
                                properties:
                                  - name: imageUrl
                                    type: string
                                    description: >
                                      Optional image URL. Must end with a valid
                                      image extension.
                                    required: false
                                  - name: title
                                    type: string
                                    description: Card title (supports Markdown).
                                    required: true
                                  - name: description
                                    type: object
                                    required: false
                                    properties:
                                      - name: text
                                        type: string
                                        description: Card description (supports Markdown).
                                        required: false
                                  - name: buttons
                                    type: array
                                    description: Optional call-to-action buttons.
                                    required: false
                                    properties:
                                      - name: name
                                        type: string
                                        description: Visible label of the button.
                                        required: true
                                      - name: request
                                        type: object
                                        description: >
                                          What happens when the user clicks the
                                          button. Either opens a

                                          URL or sends a user message back into
                                          the conversation.
                                        required: true
                                        properties:
                                          - name: type
                                            type: string
                                            enumValues:
                                              - open_url
                                              - text
                                            required: true
                                          - name: payload
                                            type: object
                                            required: true
                                            properties:
                                              - name: url
                                                type: string
                                                description: >
                                                  URL to open when the button is clicked.
                                                  Must be a

                                                  real URL pulled from the KB / tool
                                                  output.
                                                required: true
                                              - name: message
                                                type: string
                                                description: User message that will be sent on click.
                                                required: true
                              - name: layout
                                type: string
                                description: >
                                  `vertical` for video embeds (YouTube etc.),
                                  `horizontal` for

                                  general web embeds.
                                enumValues:
                                  - vertical
                                  - horizontal
                                required: true
                              - name: url
                                type: string
                                description: >
                                  Either a plain URL, or the full `<iframe ...>`
                                  HTML string for

                                  custom embeds.
                                required: true
                              - name: title
                                type: string
                                required: false
                              - name: description
                                type: string
                                required: false
                              - name: fields
                                type: array
                                required: true
                                properties:
                                  - name: id
                                    type: string
                                    description: >-
                                      Unique identifier for the field (used as
                                      the form key).
                                    required: true
                                  - name: type
                                    type: string
                                    enumValues:
                                      - text
                                      - email
                                      - password
                                      - number
                                      - tel
                                      - url
                                      - textarea
                                      - select
                                      - checkbox
                                      - radio
                                      - date
                                      - time
                                      - datetime-local
                                      - file
                                    required: true
                                  - name: label
                                    type: string
                                    description: Display label for the field.
                                    required: true
                                  - name: placeholder
                                    type: string
                                    required: false
                                  - name: validation
                                    type: object
                                    description: Optional validation rules.
                                    required: false
                                    properties:
                                      - name: minLength
                                        type: integer
                                        required: false
                                      - name: maxLength
                                        type: integer
                                        required: false
                                      - name: min
                                        type: number
                                        required: false
                                      - name: max
                                        type: number
                                        required: false
                                      - name: pattern
                                        type: string
                                        description: Regex pattern.
                                        required: false
                                      - name: errorMessage
                                        type: string
                                        required: false
                                  - name: options
                                    type: array
                                    description: >
                                      REQUIRED for `type: "select"` and `type:
                                      "radio"`. Must be a

                                      non-empty array of `{ value, label }`
                                      pairs. Never emitted as

                                      empty.
                                    required: false
                                    properties:
                                      - name: value
                                        type: string
                                        required: true
                                      - name: label
                                        type: string
                                        required: true
                                  - name: defaultValue
                                    type: oneOf
                                    required: false
                              - name: submitButton
                                type: object
                                required: false
                                properties:
                                  - name: label
                                    type: string
                                    required: false
                                  - name: style
                                    type: string
                                    enumValues:
                                      - primary
                                      - secondary
                                      - success
                                      - warning
                                      - danger
                                    required: false
                              - name: onSubmit
                                type: object
                                required: true
                                properties:
                                  - name: type
                                    type: string
                                    enumValues:
                                      - submit_form
                                    required: true
                                  - name: message
                                    type: string
                                    description: >-
                                      Bot message sent back after a successful
                                      submission.
                                    required: false
                              - name: submittedData
                                type: array
                                description: >
                                  Populated by the server / client after the
                                  user submits the

                                  form. Used to render the post-submit "filled"
                                  state.
                                required: false
                                properties:
                                  - name: index
                                    type: integer
                                    required: true
                                  - name: label
                                    type: string
                                    required: true
                                  - name: field_id
                                    type: string
                                    required: true
                                  - name: field_type
                                    type: string
                                    required: true
                              - name: isSubmitted
                                type: boolean
                                required: false
                              - name: field
                                type: object
                                description: >
                                  Single input field definition used inside
                                  `form.fields[]` and

                                  `input.field`.
                                required: true
                                properties:
                                  - name: id
                                    type: string
                                    description: >-
                                      Unique identifier for the field (used as
                                      the form key).
                                    required: true
                                  - name: type
                                    type: string
                                    enumValues:
                                      - text
                                      - email
                                      - password
                                      - number
                                      - tel
                                      - url
                                      - textarea
                                      - select
                                      - checkbox
                                      - radio
                                      - date
                                      - time
                                      - datetime-local
                                      - file
                                    required: true
                                  - name: label
                                    type: string
                                    description: Display label for the field.
                                    required: true
                                  - name: placeholder
                                    type: string
                                    required: false
                                  - name: validation
                                    type: object
                                    description: Optional validation rules.
                                    required: false
                                    properties:
                                      - name: minLength
                                        type: integer
                                        required: false
                                      - name: maxLength
                                        type: integer
                                        required: false
                                      - name: min
                                        type: number
                                        required: false
                                      - name: max
                                        type: number
                                        required: false
                                      - name: pattern
                                        type: string
                                        description: Regex pattern.
                                        required: false
                                      - name: errorMessage
                                        type: string
                                        required: false
                                  - name: options
                                    type: array
                                    description: >
                                      REQUIRED for `type: "select"` and `type:
                                      "radio"`. Must be a

                                      non-empty array of `{ value, label }`
                                      pairs. Never emitted as

                                      empty.
                                    required: false
                                    properties:
                                      - name: value
                                        type: string
                                        required: true
                                      - name: label
                                        type: string
                                        required: true
                                  - name: defaultValue
                                    type: oneOf
                                    required: false
                              - name: submitOnEnter
                                type: boolean
                                required: false
                              - name: onSubmit
                                type: object
                                required: true
                                properties:
                                  - name: type
                                    type: string
                                    enumValues:
                                      - submit_input
                                    required: true
                                  - name: message
                                    type: string
                                    description: >-
                                      Bot message sent back after the user
                                      submits.
                                    required: false
                              - name: isSubmitted
                                type: boolean
                                required: false
                          - name: type
                            type: string
                            required: false
                          - name: payload
                            type: object
                            required: false
              - name: lightConvoData
                type: object
                description: >
                  Optional per-conversation user/context metadata. Anything you
                  put

                  here is also surfaced to the agent's system prompt (where
                  supported).
                required: false
                properties:
                  - name: userID
                    type: string
                    required: false
                  - name: userName
                    type: string
                    required: false
                  - name: userEmail
                    type: string
                    required: false
                  - name: userPhone
                    type: string
                    required: false
                  - name: userImage
                    type: string
                    required: false
                  - name: origin
                    type: string
                    description: Channel the conversation originates from.
                    enumValues:
                      - web-chat
                      - voice
                      - telephony
                      - vapi
                      - whatsapp
                      - messenger
                      - instagram
                      - discord
                      - telegram
                      - sms
                      - email
                      - outlook
                      - zoho
                      - gb-chat
                      - slack
                    required: false
                  - name: nodesInfo
                    type: object
                    description: Used by node-based agents to track flow state.
                    required: false
                    properties:
                      - name: currentNode
                        type: string
                        required: false
                  - name: capturedVariables
                    type: object
                    description: Variables collected from the user during the conversation.
                    required: false
              - name: disableUiEngine
                type: boolean
                description: >
                  Force this turn to stream as plain text even if the agent has

                  `vg_enableUIEngine: true`. When omitted (or `false`) and the

                  agent has UI Engine enabled, `chunk` events will arrive with

                  `ui_engine: true` and `chunk.chunk` will be a JSON-stringified

                  `TurnProps` containing `UiEngineMessage[]`. See the top-level

                  "UI Engine vs plain text" section for details. This override
                  is

                  evaluated per request, so the same UI Engine agent can be
                  called

                  in either structured or plain-text mode across different
                  turns.
                required: false
              - name: disableRecordHistory
                type: boolean
                description: Skip persisting this turn to Firestore.
                required: false
              - name: v2
                type: boolean
                description: Force routing to the v2 (node-based) handler.
                required: false
              - name: isTest
                type: boolean
                description: Marks the turn as a test interaction.
                required: false
              - name: isLLMStudio
                type: boolean
                description: Marks the turn as originating from LLM Studio.
                required: false
              - name: kbPreview
                type: boolean
                description: Knowledge-base preview mode (skips node routing).
                required: false
              - name: agentProfileId
                type: string
                description: |
                  Internal profile id (e.g. `agency_plan_builder_v1`) that swaps
                  in a specialized prompt/tool config.
                required: false
              - name: toolTest
                type: object
                description: Run a single tool in test mode.
                required: false
                properties:
                  - name: toolId
                    type: string
                    required: true
                  - name: toolName
                    type: string
                    required: true
                  - name: mode
                    type: string
                    enumValues:
                      - validate
                      - generate-and-test
                    required: true
              - name: formSubmissionMetadata
                type: object
                description: Payload describing a UI-engine form / input submission.
                required: false
                properties:
                  - name: formType
                    type: string
                    enumValues:
                      - ui_engine_form
                      - ui_engine_input
                    required: true
                  - name: formTitle
                    type: string
                    required: false
                  - name: payload
                    type: array
                    required: true
                    properties:
                      - name: index
                        type: integer
                        required: true
                      - name: label
                        type: string
                        required: true
                      - name: field_id
                        type: string
                        required: true
                      - name: field_type
                        type: string
                        required: true
                  - name: updateFormPayload
                    type: object
                    required: false
                    properties:
                      - name: turnIndex
                        type: integer
                        required: false
                      - name: messageIndex
                        type: integer
                        required: false
                  - name: updateInputPayload
                    type: object
                    required: false
                    properties:
                      - name: turnIndex
                        type: integer
                        required: false
                      - name: messageIndex
                        type: integer
                        required: false
              - name: initNodesOptions
                type: object
                description: >-
                  Optional overrides for tools / variables / messages history at
                  session init.
                required: false
        headers: []
        jsonPayloadSchema:
          type: object
          description: |
            Payload sent by the client to start an agent turn. Mirrors
            `EWSInteractModel` in the codebase.
          required:
            - agentId
            - convoId
            - bucket
          properties:
            agentId:
              type: string
              description: The ID of the agent to interact with.
              examples: *ref_0
              x-parser-schema-id: <anonymous-schema-1>
            convoId:
              type: string
              description: |
                The conversation ID. Reuse the same `convoId` across turns to
                keep history; use a fresh one to start a new conversation.
              examples: *ref_1
              x-parser-schema-id: <anonymous-schema-2>
            bucket:
              type: string
              enum:
                - voiceglow-eu
                - (default)
              description: |
                Region bucket. Use `voiceglow-eu` for EU and `(default)` for NA.
              x-parser-schema-id: <anonymous-schema-3>
            prompt:
              type: string
              description: |
                User message to send to the agent. Special values:
                - `"start"` — trigger the agent's initial greeting.
                - `"@cancel:<reason>"` — cancel the in-flight turn.
                - `"@rewind:<nodeId>"` — rewind a node-based conversation to a
                  specific node.
              examples: *ref_2
              x-parser-schema-id: <anonymous-schema-4>
            sessionId:
              type: string
              description: Optional session id; defaults to `convoId` if omitted.
              x-parser-schema-id: <anonymous-schema-5>
            messageType:
              type: string
              enum:
                - text
                - visual
              default: text
              description: >
                Type of input. Use `visual` together with `visualPayload` to
                send

                images.
              x-parser-schema-id: <anonymous-schema-6>
            visualPayload:
              type: object
              description: 'Image/visual content for `messageType: visual` turns.'
              properties:
                image:
                  type: string
                  format: uri
                  description: Primary image URL.
                  x-parser-schema-id: <anonymous-schema-8>
                images:
                  type: array
                  items:
                    type: string
                    format: uri
                    x-parser-schema-id: <anonymous-schema-10>
                  description: Additional image URLs.
                  x-parser-schema-id: <anonymous-schema-9>
                message:
                  type: string
                  description: Optional caption / accompanying user message.
                  x-parser-schema-id: <anonymous-schema-11>
                imageCount:
                  type: integer
                  minimum: 0
                  x-parser-schema-id: <anonymous-schema-12>
              x-parser-schema-id: <anonymous-schema-7>
            replyTo:
              type: object
              description: Reply context when the user is replying to a previous message.
              properties:
                messageId:
                  type: string
                  x-parser-schema-id: <anonymous-schema-14>
                messageContent:
                  type: string
                  x-parser-schema-id: <anonymous-schema-15>
                messageFrom:
                  type: string
                  enum:
                    - human
                    - bot
                  x-parser-schema-id: <anonymous-schema-16>
                messageIndex:
                  type: integer
                  x-parser-schema-id: <anonymous-schema-17>
                turnIndex:
                  type: integer
                  x-parser-schema-id: <anonymous-schema-18>
              x-parser-schema-id: <anonymous-schema-13>
            actionMetadata:
              type: object
              properties:
                mid:
                  type: string
                  description: Client-supplied message id (used for de-duplication).
                  x-parser-schema-id: <anonymous-schema-20>
              x-parser-schema-id: <anonymous-schema-19>
            agentData:
              type: object
              description: >
                Optional agent override. When provided with at least an `ID`,
                the

                server skips loading the agent doc from Firestore and uses this

                object instead. Mirrors `ChatRuntime`.
              additionalProperties: true
              properties:
                ID:
                  type: string
                  x-parser-schema-id: <anonymous-schema-22>
                ownerID:
                  type: string
                  x-parser-schema-id: <anonymous-schema-23>
                title:
                  type: string
                  x-parser-schema-id: <anonymous-schema-24>
              x-parser-schema-id: <anonymous-schema-21>
            workspaceData:
              type: object
              description: Optional workspace override (mirrors `WorkspaceModel`).
              additionalProperties: true
              properties:
                uid:
                  type: string
                  x-parser-schema-id: <anonymous-schema-26>
                email:
                  type: string
                  format: email
                  x-parser-schema-id: <anonymous-schema-27>
              x-parser-schema-id: <anonymous-schema-25>
            turnsHistory:
              type: array
              description: |
                Optional override of the conversation turns. When provided, the
                server uses this instead of fetching from Firestore.
              items: &ref_6
                type: object
                description: One turn in the conversation history.
                properties:
                  from:
                    type: string
                    enum:
                      - bot
                      - human
                    x-parser-schema-id: <anonymous-schema-29>
                  ts:
                    type: number
                    description: Unix timestamp (seconds).
                    x-parser-schema-id: <anonymous-schema-30>
                  modelId:
                    type: string
                    description: Model id that produced this turn (bot turns only).
                    x-parser-schema-id: <anonymous-schema-31>
                  messages:
                    type: array
                    items:
                      type: object
                      properties:
                        from:
                          type: string
                          enum:
                            - bot
                            - human
                          x-parser-schema-id: <anonymous-schema-33>
                        type:
                          type: string
                          description: >
                            Message type. Common values include `text`,
                            `visual`,

                            `cardV2`, `carousel`, `ui_engine_form`,
                            `ui_engine_input`,

                            `debug:tell`, `debug:error`, `debug:success`,

                            `context:form_submission`.
                          x-parser-schema-id: <anonymous-schema-34>
                        ts:
                          type: number
                          x-parser-schema-id: <anonymous-schema-35>
                        mid:
                          type: string
                          x-parser-schema-id: <anonymous-schema-36>
                        item:
                          description: >
                            Type-specific payload. Shape depends on `type`. For
                            UI-engine

                            agents, this is one of the `UiEngineMessage` shapes
                            (text /

                            choice / visual / cardV2 / carousel / iFrame / form
                            / input).
                          oneOf:
                            - type: object
                              description: >
                                One structured UI message produced by the UI
                                Engine. When

                                `vg_enableUIEngine: true` on the agent and
                                `disableUiEngine` is

                                not set on the request, the streamed
                                `chunk.chunk` is a

                                JSON-stringified `TurnProps` whose
                                `messages[].item` entries each

                                match this shape. The `payload` field is
                                discriminated by `type`.


                                Mirrors the Zod schemas in
                                `src/app/Types/uiEngineMessageSchemas.ts`.
                              required:
                                - type
                                - payload
                              properties:
                                type:
                                  type: string
                                  enum:
                                    - text
                                    - choice
                                    - visual
                                    - cardV2
                                    - carousel
                                    - iFrame
                                    - form
                                    - input
                                  description: >
                                    Message kind. `form` and `input` are only
                                    emitted on web

                                    channels (`web-chat` / `text`) when the
                                    agent has forms

                                    enabled.
                                  x-parser-schema-id: <anonymous-schema-38>
                                payload:
                                  description: >-
                                    Type-specific payload. See per-type schemas
                                    below.
                                  oneOf:
                                    - type: object
                                      description: >-
                                        Payload for `type: "text"`. Plain
                                        Markdown message body.
                                      properties:
                                        message:
                                          type: string
                                          description: Message content. Supports Markdown.
                                          x-parser-schema-id: <anonymous-schema-40>
                                      x-parser-schema-id: UiEngineTextPayload
                                    - type: object
                                      description: >-
                                        Payload for `type: "choice"`. Renders an
                                        inline button group.
                                      required:
                                        - buttons
                                      properties:
                                        buttons:
                                          type: array
                                          items: &ref_3
                                            type: object
                                            description: >-
                                              A single clickable button used inside
                                              `choice` and `cardV2`.
                                            required:
                                              - name
                                              - request
                                            properties:
                                              name:
                                                type: string
                                                description: Visible label of the button.
                                                x-parser-schema-id: <anonymous-schema-42>
                                              request:
                                                type: object
                                                required:
                                                  - type
                                                  - payload
                                                description: >
                                                  What happens when the user clicks the
                                                  button. Either opens a

                                                  URL or sends a user message back into
                                                  the conversation.
                                                properties:
                                                  type:
                                                    type: string
                                                    enum:
                                                      - open_url
                                                      - text
                                                    x-parser-schema-id: <anonymous-schema-44>
                                                  payload:
                                                    oneOf:
                                                      - type: object
                                                        description: 'For `type: "open_url"`.'
                                                        required:
                                                          - url
                                                        properties:
                                                          url:
                                                            type: string
                                                            format: uri
                                                            description: >
                                                              URL to open when the button is clicked.
                                                              Must be a

                                                              real URL pulled from the KB / tool
                                                              output.
                                                            x-parser-schema-id: <anonymous-schema-47>
                                                        x-parser-schema-id: <anonymous-schema-46>
                                                      - type: object
                                                        description: 'For `type: "text"`.'
                                                        required:
                                                          - message
                                                        properties:
                                                          message:
                                                            type: string
                                                            description: User message that will be sent on click.
                                                            x-parser-schema-id: <anonymous-schema-49>
                                                        x-parser-schema-id: <anonymous-schema-48>
                                                    x-parser-schema-id: <anonymous-schema-45>
                                                x-parser-schema-id: <anonymous-schema-43>
                                            x-parser-schema-id: UiEngineButton
                                          x-parser-schema-id: <anonymous-schema-41>
                                      x-parser-schema-id: UiEngineChoicePayload
                                    - type: object
                                      description: >-
                                        Payload for `type: "visual"`. Renders a
                                        single image.
                                      required:
                                        - image
                                      properties:
                                        image:
                                          type: string
                                          format: uri
                                          description: >
                                            URL of the image. Must end with a valid
                                            image extension

                                            (`.png`, `.jpg`, `.jpeg`, `.webp`,
                                            `.gif`, ...).
                                          x-parser-schema-id: <anonymous-schema-50>
                                      x-parser-schema-id: UiEngineVisualPayload
                                    - &ref_4
                                      type: object
                                      description: >
                                        Payload for `type: "cardV2"`. A single
                                        card with optional image,

                                        description, and call-to-action buttons.
                                      required:
                                        - title
                                      properties:
                                        imageUrl:
                                          type: string
                                          format: uri
                                          description: >
                                            Optional image URL. Must end with a
                                            valid image extension.
                                          x-parser-schema-id: <anonymous-schema-51>
                                        title:
                                          type: string
                                          description: Card title (supports Markdown).
                                          x-parser-schema-id: <anonymous-schema-52>
                                        description:
                                          type: object
                                          properties:
                                            text:
                                              type: string
                                              description: Card description (supports Markdown).
                                              x-parser-schema-id: <anonymous-schema-54>
                                          x-parser-schema-id: <anonymous-schema-53>
                                        buttons:
                                          type: array
                                          description: Optional call-to-action buttons.
                                          items: *ref_3
                                          x-parser-schema-id: <anonymous-schema-55>
                                      x-parser-schema-id: UiEngineCardPayload
                                    - type: object
                                      description: >-
                                        Payload for `type: "carousel"`. A
                                        horizontal collection of cards.
                                      required:
                                        - cards
                                      properties:
                                        cards:
                                          type: array
                                          items: *ref_4
                                          x-parser-schema-id: <anonymous-schema-56>
                                      x-parser-schema-id: UiEngineCarouselPayload
                                    - type: object
                                      description: >
                                        Payload for `type: "iFrame"`. Embeds an
                                        external URL or raw iframe

                                        markup (e.g. YouTube embed, custom
                                        widget).
                                      required:
                                        - layout
                                        - url
                                      properties:
                                        layout:
                                          type: string
                                          enum:
                                            - vertical
                                            - horizontal
                                          description: >
                                            `vertical` for video embeds (YouTube
                                            etc.), `horizontal` for

                                            general web embeds.
                                          x-parser-schema-id: <anonymous-schema-57>
                                        url:
                                          type: string
                                          description: >
                                            Either a plain URL, or the full `<iframe
                                            ...>` HTML string for

                                            custom embeds.
                                          x-parser-schema-id: <anonymous-schema-58>
                                      x-parser-schema-id: UiEngineIFramePayload
                                    - type: object
                                      description: >
                                        Payload for `type: "form"`. Multi-field
                                        form rendered inline in

                                        the chat. Only emitted on web channels
                                        (`web-chat` / `text`) when

                                        the agent has forms enabled.
                                      required:
                                        - fields
                                        - onSubmit
                                      properties:
                                        title:
                                          type: string
                                          x-parser-schema-id: <anonymous-schema-59>
                                        description:
                                          type: string
                                          x-parser-schema-id: <anonymous-schema-60>
                                        fields:
                                          type: array
                                          items: &ref_5
                                            type: object
                                            description: >
                                              Single input field definition used
                                              inside `form.fields[]` and

                                              `input.field`.
                                            required:
                                              - id
                                              - type
                                              - label
                                            properties:
                                              id:
                                                type: string
                                                description: >-
                                                  Unique identifier for the field (used as
                                                  the form key).
                                                x-parser-schema-id: <anonymous-schema-62>
                                              type:
                                                type: string
                                                enum:
                                                  - text
                                                  - email
                                                  - password
                                                  - number
                                                  - tel
                                                  - url
                                                  - textarea
                                                  - select
                                                  - checkbox
                                                  - radio
                                                  - date
                                                  - time
                                                  - datetime-local
                                                  - file
                                                x-parser-schema-id: <anonymous-schema-63>
                                              label:
                                                type: string
                                                description: Display label for the field.
                                                x-parser-schema-id: <anonymous-schema-64>
                                              placeholder:
                                                type: string
                                                x-parser-schema-id: <anonymous-schema-65>
                                              required:
                                                type: boolean
                                                default: false
                                                x-parser-schema-id: <anonymous-schema-66>
                                              validation:
                                                type: object
                                                description: Optional validation rules.
                                                properties:
                                                  minLength:
                                                    type: integer
                                                    x-parser-schema-id: <anonymous-schema-68>
                                                  maxLength:
                                                    type: integer
                                                    x-parser-schema-id: <anonymous-schema-69>
                                                  min:
                                                    type: number
                                                    x-parser-schema-id: <anonymous-schema-70>
                                                  max:
                                                    type: number
                                                    x-parser-schema-id: <anonymous-schema-71>
                                                  pattern:
                                                    type: string
                                                    description: Regex pattern.
                                                    x-parser-schema-id: <anonymous-schema-72>
                                                  errorMessage:
                                                    type: string
                                                    x-parser-schema-id: <anonymous-schema-73>
                                                x-parser-schema-id: <anonymous-schema-67>
                                              options:
                                                type: array
                                                description: >
                                                  REQUIRED for `type: "select"` and `type:
                                                  "radio"`. Must be a

                                                  non-empty array of `{ value, label }`
                                                  pairs. Never emitted as

                                                  empty.
                                                items:
                                                  type: object
                                                  required:
                                                    - value
                                                    - label
                                                  properties:
                                                    value:
                                                      type: string
                                                      x-parser-schema-id: <anonymous-schema-76>
                                                    label:
                                                      type: string
                                                      x-parser-schema-id: <anonymous-schema-77>
                                                  x-parser-schema-id: <anonymous-schema-75>
                                                x-parser-schema-id: <anonymous-schema-74>
                                              defaultValue:
                                                oneOf:
                                                  - type: string
                                                    x-parser-schema-id: <anonymous-schema-79>
                                                  - type: number
                                                    x-parser-schema-id: <anonymous-schema-80>
                                                  - type: boolean
                                                    x-parser-schema-id: <anonymous-schema-81>
                                                x-parser-schema-id: <anonymous-schema-78>
                                            x-parser-schema-id: UiEngineInputField
                                          x-parser-schema-id: <anonymous-schema-61>
                                        submitButton:
                                          type: object
                                          properties:
                                            label:
                                              type: string
                                              default: Submit
                                              x-parser-schema-id: <anonymous-schema-83>
                                            style:
                                              type: string
                                              enum:
                                                - primary
                                                - secondary
                                                - success
                                                - warning
                                                - danger
                                              default: primary
                                              x-parser-schema-id: <anonymous-schema-84>
                                          x-parser-schema-id: <anonymous-schema-82>
                                        onSubmit:
                                          type: object
                                          required:
                                            - type
                                          properties:
                                            type:
                                              type: string
                                              enum:
                                                - submit_form
                                              x-parser-schema-id: <anonymous-schema-86>
                                            message:
                                              type: string
                                              description: >-
                                                Bot message sent back after a successful
                                                submission.
                                              x-parser-schema-id: <anonymous-schema-87>
                                          x-parser-schema-id: <anonymous-schema-85>
                                        submittedData:
                                          type: array
                                          description: >
                                            Populated by the server / client after
                                            the user submits the

                                            form. Used to render the post-submit
                                            "filled" state.
                                          items:
                                            type: object
                                            required:
                                              - index
                                              - label
                                              - value
                                              - field_id
                                              - field_type
                                            properties:
                                              index:
                                                type: integer
                                                x-parser-schema-id: <anonymous-schema-90>
                                              label:
                                                type: string
                                                x-parser-schema-id: <anonymous-schema-91>
                                              value:
                                                x-parser-schema-id: <anonymous-schema-92>
                                              field_id:
                                                type: string
                                                x-parser-schema-id: <anonymous-schema-93>
                                              field_type:
                                                type: string
                                                x-parser-schema-id: <anonymous-schema-94>
                                            x-parser-schema-id: <anonymous-schema-89>
                                          x-parser-schema-id: <anonymous-schema-88>
                                        isSubmitted:
                                          type: boolean
                                          x-parser-schema-id: <anonymous-schema-95>
                                      x-parser-schema-id: UiEngineFormPayload
                                    - type: object
                                      description: >
                                        Payload for `type: "input"`. A single
                                        inline input field. Only

                                        emitted on web channels (`web-chat` /
                                        `text`) when the agent has

                                        forms enabled.
                                      required:
                                        - field
                                        - onSubmit
                                      properties:
                                        field: *ref_5
                                        submitOnEnter:
                                          type: boolean
                                          default: true
                                          x-parser-schema-id: <anonymous-schema-96>
                                        onSubmit:
                                          type: object
                                          required:
                                            - type
                                          properties:
                                            type:
                                              type: string
                                              enum:
                                                - submit_input
                                              x-parser-schema-id: <anonymous-schema-98>
                                            message:
                                              type: string
                                              description: >-
                                                Bot message sent back after the user
                                                submits.
                                              x-parser-schema-id: <anonymous-schema-99>
                                          x-parser-schema-id: <anonymous-schema-97>
                                        submittedValue:
                                          x-parser-schema-id: <anonymous-schema-100>
                                        isSubmitted:
                                          type: boolean
                                          x-parser-schema-id: <anonymous-schema-101>
                                      x-parser-schema-id: UiEngineInputPayload
                                  x-parser-schema-id: <anonymous-schema-39>
                              x-parser-schema-id: UiEngineMessage
                            - type: object
                              additionalProperties: true
                              properties:
                                type:
                                  type: string
                                  x-parser-schema-id: <anonymous-schema-103>
                                payload:
                                  type: object
                                  additionalProperties: true
                                  x-parser-schema-id: <anonymous-schema-104>
                              x-parser-schema-id: <anonymous-schema-102>
                          x-parser-schema-id: <anonymous-schema-37>
                      x-parser-schema-id: ChatMessage
                    x-parser-schema-id: <anonymous-schema-32>
                x-parser-schema-id: TurnProps
              x-parser-schema-id: <anonymous-schema-28>
            lightConvoData:
              type: object
              description: >
                Optional per-conversation user/context metadata. Anything you
                put

                here is also surfaced to the agent's system prompt (where
                supported).
              additionalProperties: true
              properties:
                userID:
                  type: string
                  x-parser-schema-id: <anonymous-schema-105>
                userName:
                  type: string
                  x-parser-schema-id: <anonymous-schema-106>
                userEmail:
                  type: string
                  format: email
                  x-parser-schema-id: <anonymous-schema-107>
                userPhone:
                  type: string
                  x-parser-schema-id: <anonymous-schema-108>
                userImage:
                  type: string
                  format: uri
                  x-parser-schema-id: <anonymous-schema-109>
                origin:
                  type: string
                  description: Channel the conversation originates from.
                  enum:
                    - web-chat
                    - voice
                    - telephony
                    - vapi
                    - whatsapp
                    - messenger
                    - instagram
                    - discord
                    - telegram
                    - sms
                    - email
                    - outlook
                    - zoho
                    - gb-chat
                    - slack
                  x-parser-schema-id: <anonymous-schema-110>
                nodesInfo:
                  type: object
                  description: Used by node-based agents to track flow state.
                  properties:
                    currentNode:
                      type: string
                      x-parser-schema-id: <anonymous-schema-112>
                  x-parser-schema-id: <anonymous-schema-111>
                capturedVariables:
                  type: object
                  description: Variables collected from the user during the conversation.
                  additionalProperties: true
                  x-parser-schema-id: <anonymous-schema-113>
              x-parser-schema-id: LightConvoData
            disableUiEngine:
              type: boolean
              description: |
                Force this turn to stream as plain text even if the agent has
                `vg_enableUIEngine: true`. When omitted (or `false`) and the
                agent has UI Engine enabled, `chunk` events will arrive with
                `ui_engine: true` and `chunk.chunk` will be a JSON-stringified
                `TurnProps` containing `UiEngineMessage[]`. See the top-level
                "UI Engine vs plain text" section for details. This override is
                evaluated per request, so the same UI Engine agent can be called
                in either structured or plain-text mode across different turns.
              x-parser-schema-id: <anonymous-schema-114>
            disableRecordHistory:
              type: boolean
              description: Skip persisting this turn to Firestore.
              x-parser-schema-id: <anonymous-schema-115>
            v2:
              type: boolean
              description: Force routing to the v2 (node-based) handler.
              x-parser-schema-id: <anonymous-schema-116>
            isTest:
              type: boolean
              description: Marks the turn as a test interaction.
              x-parser-schema-id: <anonymous-schema-117>
            isLLMStudio:
              type: boolean
              description: Marks the turn as originating from LLM Studio.
              x-parser-schema-id: <anonymous-schema-118>
            kbPreview:
              type: boolean
              description: Knowledge-base preview mode (skips node routing).
              x-parser-schema-id: <anonymous-schema-119>
            agentProfileId:
              type: string
              description: |
                Internal profile id (e.g. `agency_plan_builder_v1`) that swaps
                in a specialized prompt/tool config.
              x-parser-schema-id: <anonymous-schema-120>
            toolTest:
              type: object
              description: Run a single tool in test mode.
              required:
                - toolId
                - toolName
                - mode
              properties:
                toolId:
                  type: string
                  x-parser-schema-id: <anonymous-schema-122>
                toolName:
                  type: string
                  x-parser-schema-id: <anonymous-schema-123>
                mode:
                  type: string
                  enum:
                    - validate
                    - generate-and-test
                  x-parser-schema-id: <anonymous-schema-124>
              x-parser-schema-id: <anonymous-schema-121>
            formSubmissionMetadata:
              type: object
              description: Payload describing a UI-engine form / input submission.
              required:
                - formType
                - payload
              properties:
                formType:
                  type: string
                  enum:
                    - ui_engine_form
                    - ui_engine_input
                  x-parser-schema-id: <anonymous-schema-126>
                formTitle:
                  type: string
                  x-parser-schema-id: <anonymous-schema-127>
                payload:
                  type: array
                  items:
                    type: object
                    required:
                      - index
                      - label
                      - value
                      - field_id
                      - field_type
                    properties:
                      index:
                        type: integer
                        x-parser-schema-id: <anonymous-schema-130>
                      label:
                        type: string
                        x-parser-schema-id: <anonymous-schema-131>
                      value:
                        x-parser-schema-id: <anonymous-schema-132>
                      field_id:
                        type: string
                        x-parser-schema-id: <anonymous-schema-133>
                      field_type:
                        type: string
                        x-parser-schema-id: <anonymous-schema-134>
                    x-parser-schema-id: <anonymous-schema-129>
                  x-parser-schema-id: <anonymous-schema-128>
                updateFormPayload:
                  type: object
                  properties:
                    turnIndex:
                      type: integer
                      x-parser-schema-id: <anonymous-schema-136>
                    messageIndex:
                      type: integer
                      x-parser-schema-id: <anonymous-schema-137>
                    updatedPayload:
                      x-parser-schema-id: <anonymous-schema-138>
                  x-parser-schema-id: <anonymous-schema-135>
                updateInputPayload:
                  type: object
                  properties:
                    turnIndex:
                      type: integer
                      x-parser-schema-id: <anonymous-schema-140>
                    messageIndex:
                      type: integer
                      x-parser-schema-id: <anonymous-schema-141>
                    updatedPayload:
                      x-parser-schema-id: <anonymous-schema-142>
                  x-parser-schema-id: <anonymous-schema-139>
              x-parser-schema-id: <anonymous-schema-125>
            initNodesOptions:
              type: object
              description: >-
                Optional overrides for tools / variables / messages history at
                session init.
              additionalProperties: true
              x-parser-schema-id: <anonymous-schema-143>
          examples:
            - summary: Minimal text turn
              value:
                agentId: agt_01HZX2K9ABC
                convoId: conv_01HZX2K9XYZ
                bucket: (default)
                prompt: Hello, how can you help me?
                lightConvoData:
                  userName: John Doe
                  userEmail: john@example.com
                  origin: web-chat
            - summary: Trigger initial greeting
              value:
                agentId: agt_01HZX2K9ABC
                convoId: conv_01HZX2K9XYZ
                bucket: voiceglow-eu
                prompt: start
            - summary: Visual / image turn
              value:
                agentId: agt_01HZX2K9ABC
                convoId: conv_01HZX2K9XYZ
                bucket: (default)
                messageType: visual
                visualPayload:
                  image: https://cdn.example.com/upload/abc.png
                  message: What's in this image?
          x-parser-schema-id: InteractObject
        title: Interact request
        description: The single payload the client sends after opening the socket.
        example: |-
          {
            "summary": "Minimal text turn",
            "value": {
              "agentId": "agt_01HZX2K9ABC",
              "convoId": "conv_01HZX2K9XYZ",
              "bucket": "(default)",
              "prompt": "Hello, how can you help me?",
              "lightConvoData": {
                "userName": "John Doe",
                "userEmail": "john@example.com",
                "origin": "web-chat"
              }
            }
          }
        bindings: []
        extensions:
          - id: x-parser-unique-object-id
            value: interactObject
    bindings: []
    extensions: &ref_7
      - id: x-parser-unique-object-id
        value: interact
  - &ref_9
    id: receiveChunk
    title: Receive streaming chunks
    description: Streamed events emitted by the agent during a turn.
    type: send
    messages:
      - &ref_11
        id: chunkMessage
        contentType: application/json
        payload:
          - name: Streaming chunk
            description: One streamed event from the agent.
            type: object
            properties:
              - name: type
                type: string
                enumValues:
                  - chunk
                  - metadata
                  - debug
                  - action
                  - sync_chat_history
                required: true
              - name: chunk
                type: string
                description: >
                  For `chunk` / `debug`: the streamed text.


                  - When `ui_engine` is `false` (or omitted): plain Markdown
                  text
                    that should be appended to the in-progress assistant message.
                  - When `ui_engine` is `true`: a **JSON-stringified
                  `TurnProps`**
                    snapshot of the assistant turn so far. After
                    `JSON.parse(chunk.chunk)` you get an object whose `messages`
                    array contains `UiEngineMessage` items (`text`, `choice`,
                    `visual`, `cardV2`, `carousel`, `iFrame`, `form`, `input`).
                    Each chunk is a full snapshot — replace, don't append.
                required: false
              - name: chunkIndex
                type: integer
                description: Monotonic chunk counter within the turn.
                required: false
              - name: ui_engine
                type: boolean
                description: |
                  When `true`, `chunk` is a JSON-stringified `TurnProps` whose
                  `messages[].item` entries follow the `UiEngineMessage` schema
                  (parse it client-side). When `false` or omitted, `chunk` is
                  plain Markdown text.
                required: false
              - name: isV2
                type: boolean
                description: Set when emitted by the node-based v2 handler.
                required: false
              - name: action
                type: object
                description: >-
                  Optional structured action emitted by the agent (handoff, tool
                  call, ...).
                required: false
                properties:
                  - name: type
                    type: string
                    enumValues:
                      - request_handoff
                      - tool_call
                    required: true
                  - name: payload
                    type: string
                    description: Free-form payload (e.g. handoff note).
                    required: false
                  - name: toolMetadata
                    type: object
                    required: false
                    properties:
                      - name: toolName
                        type: string
                        required: false
              - name: turns
                type: array
                description: >-
                  Full snapshot of conversation turns (used with
                  `sync_chat_history`).
                required: false
                properties:
                  - name: from
                    type: string
                    enumValues:
                      - bot
                      - human
                    required: false
                  - name: ts
                    type: number
                    description: Unix timestamp (seconds).
                    required: false
                  - name: modelId
                    type: string
                    description: Model id that produced this turn (bot turns only).
                    required: false
                  - name: messages
                    type: array
                    required: false
                    properties:
                      - name: from
                        type: string
                        enumValues:
                          - bot
                          - human
                        required: false
                      - name: type
                        type: string
                        description: >
                          Message type. Common values include `text`, `visual`,

                          `cardV2`, `carousel`, `ui_engine_form`,
                          `ui_engine_input`,

                          `debug:tell`, `debug:error`, `debug:success`,

                          `context:form_submission`.
                        required: false
                      - name: ts
                        type: number
                        required: false
                      - name: mid
                        type: string
                        required: false
                      - name: item
                        type: object
                        description: >
                          Type-specific payload. Shape depends on `type`. For
                          UI-engine

                          agents, this is one of the `UiEngineMessage` shapes
                          (text /

                          choice / visual / cardV2 / carousel / iFrame / form /
                          input).
                        required: false
                        properties:
                          - name: type
                            type: string
                            description: >
                              Message kind. `form` and `input` are only emitted
                              on web

                              channels (`web-chat` / `text`) when the agent has
                              forms

                              enabled.
                            enumValues:
                              - text
                              - choice
                              - visual
                              - cardV2
                              - carousel
                              - iFrame
                              - form
                              - input
                            required: true
                          - name: payload
                            type: object
                            description: Type-specific payload. See per-type schemas below.
                            required: true
                            properties:
                              - name: message
                                type: string
                                description: Message content. Supports Markdown.
                                required: false
                              - name: buttons
                                type: array
                                required: true
                                properties:
                                  - name: name
                                    type: string
                                    description: Visible label of the button.
                                    required: true
                                  - name: request
                                    type: object
                                    description: >
                                      What happens when the user clicks the
                                      button. Either opens a

                                      URL or sends a user message back into the
                                      conversation.
                                    required: true
                                    properties:
                                      - name: type
                                        type: string
                                        enumValues:
                                          - open_url
                                          - text
                                        required: true
                                      - name: payload
                                        type: object
                                        required: true
                                        properties:
                                          - name: url
                                            type: string
                                            description: >
                                              URL to open when the button is clicked.
                                              Must be a

                                              real URL pulled from the KB / tool
                                              output.
                                            required: true
                                          - name: message
                                            type: string
                                            description: User message that will be sent on click.
                                            required: true
                              - name: image
                                type: string
                                description: >
                                  URL of the image. Must end with a valid image
                                  extension

                                  (`.png`, `.jpg`, `.jpeg`, `.webp`, `.gif`,
                                  ...).
                                required: true
                              - name: imageUrl
                                type: string
                                description: >
                                  Optional image URL. Must end with a valid
                                  image extension.
                                required: false
                              - name: title
                                type: string
                                description: Card title (supports Markdown).
                                required: true
                              - name: description
                                type: object
                                required: false
                                properties:
                                  - name: text
                                    type: string
                                    description: Card description (supports Markdown).
                                    required: false
                              - name: buttons
                                type: array
                                description: Optional call-to-action buttons.
                                required: false
                                properties:
                                  - name: name
                                    type: string
                                    description: Visible label of the button.
                                    required: true
                                  - name: request
                                    type: object
                                    description: >
                                      What happens when the user clicks the
                                      button. Either opens a

                                      URL or sends a user message back into the
                                      conversation.
                                    required: true
                                    properties:
                                      - name: type
                                        type: string
                                        enumValues:
                                          - open_url
                                          - text
                                        required: true
                                      - name: payload
                                        type: object
                                        required: true
                                        properties:
                                          - name: url
                                            type: string
                                            description: >
                                              URL to open when the button is clicked.
                                              Must be a

                                              real URL pulled from the KB / tool
                                              output.
                                            required: true
                                          - name: message
                                            type: string
                                            description: User message that will be sent on click.
                                            required: true
                              - name: cards
                                type: array
                                required: true
                                properties:
                                  - name: imageUrl
                                    type: string
                                    description: >
                                      Optional image URL. Must end with a valid
                                      image extension.
                                    required: false
                                  - name: title
                                    type: string
                                    description: Card title (supports Markdown).
                                    required: true
                                  - name: description
                                    type: object
                                    required: false
                                    properties:
                                      - name: text
                                        type: string
                                        description: Card description (supports Markdown).
                                        required: false
                                  - name: buttons
                                    type: array
                                    description: Optional call-to-action buttons.
                                    required: false
                                    properties:
                                      - name: name
                                        type: string
                                        description: Visible label of the button.
                                        required: true
                                      - name: request
                                        type: object
                                        description: >
                                          What happens when the user clicks the
                                          button. Either opens a

                                          URL or sends a user message back into
                                          the conversation.
                                        required: true
                                        properties:
                                          - name: type
                                            type: string
                                            enumValues:
                                              - open_url
                                              - text
                                            required: true
                                          - name: payload
                                            type: object
                                            required: true
                                            properties:
                                              - name: url
                                                type: string
                                                description: >
                                                  URL to open when the button is clicked.
                                                  Must be a

                                                  real URL pulled from the KB / tool
                                                  output.
                                                required: true
                                              - name: message
                                                type: string
                                                description: User message that will be sent on click.
                                                required: true
                              - name: layout
                                type: string
                                description: >
                                  `vertical` for video embeds (YouTube etc.),
                                  `horizontal` for

                                  general web embeds.
                                enumValues:
                                  - vertical
                                  - horizontal
                                required: true
                              - name: url
                                type: string
                                description: >
                                  Either a plain URL, or the full `<iframe ...>`
                                  HTML string for

                                  custom embeds.
                                required: true
                              - name: title
                                type: string
                                required: false
                              - name: description
                                type: string
                                required: false
                              - name: fields
                                type: array
                                required: true
                                properties:
                                  - name: id
                                    type: string
                                    description: >-
                                      Unique identifier for the field (used as
                                      the form key).
                                    required: true
                                  - name: type
                                    type: string
                                    enumValues:
                                      - text
                                      - email
                                      - password
                                      - number
                                      - tel
                                      - url
                                      - textarea
                                      - select
                                      - checkbox
                                      - radio
                                      - date
                                      - time
                                      - datetime-local
                                      - file
                                    required: true
                                  - name: label
                                    type: string
                                    description: Display label for the field.
                                    required: true
                                  - name: placeholder
                                    type: string
                                    required: false
                                  - name: validation
                                    type: object
                                    description: Optional validation rules.
                                    required: false
                                    properties:
                                      - name: minLength
                                        type: integer
                                        required: false
                                      - name: maxLength
                                        type: integer
                                        required: false
                                      - name: min
                                        type: number
                                        required: false
                                      - name: max
                                        type: number
                                        required: false
                                      - name: pattern
                                        type: string
                                        description: Regex pattern.
                                        required: false
                                      - name: errorMessage
                                        type: string
                                        required: false
                                  - name: options
                                    type: array
                                    description: >
                                      REQUIRED for `type: "select"` and `type:
                                      "radio"`. Must be a

                                      non-empty array of `{ value, label }`
                                      pairs. Never emitted as

                                      empty.
                                    required: false
                                    properties:
                                      - name: value
                                        type: string
                                        required: true
                                      - name: label
                                        type: string
                                        required: true
                                  - name: defaultValue
                                    type: oneOf
                                    required: false
                              - name: submitButton
                                type: object
                                required: false
                                properties:
                                  - name: label
                                    type: string
                                    required: false
                                  - name: style
                                    type: string
                                    enumValues:
                                      - primary
                                      - secondary
                                      - success
                                      - warning
                                      - danger
                                    required: false
                              - name: onSubmit
                                type: object
                                required: true
                                properties:
                                  - name: type
                                    type: string
                                    enumValues:
                                      - submit_form
                                    required: true
                                  - name: message
                                    type: string
                                    description: >-
                                      Bot message sent back after a successful
                                      submission.
                                    required: false
                              - name: submittedData
                                type: array
                                description: >
                                  Populated by the server / client after the
                                  user submits the

                                  form. Used to render the post-submit "filled"
                                  state.
                                required: false
                                properties:
                                  - name: index
                                    type: integer
                                    required: true
                                  - name: label
                                    type: string
                                    required: true
                                  - name: field_id
                                    type: string
                                    required: true
                                  - name: field_type
                                    type: string
                                    required: true
                              - name: isSubmitted
                                type: boolean
                                required: false
                              - name: field
                                type: object
                                description: >
                                  Single input field definition used inside
                                  `form.fields[]` and

                                  `input.field`.
                                required: true
                                properties:
                                  - name: id
                                    type: string
                                    description: >-
                                      Unique identifier for the field (used as
                                      the form key).
                                    required: true
                                  - name: type
                                    type: string
                                    enumValues:
                                      - text
                                      - email
                                      - password
                                      - number
                                      - tel
                                      - url
                                      - textarea
                                      - select
                                      - checkbox
                                      - radio
                                      - date
                                      - time
                                      - datetime-local
                                      - file
                                    required: true
                                  - name: label
                                    type: string
                                    description: Display label for the field.
                                    required: true
                                  - name: placeholder
                                    type: string
                                    required: false
                                  - name: validation
                                    type: object
                                    description: Optional validation rules.
                                    required: false
                                    properties:
                                      - name: minLength
                                        type: integer
                                        required: false
                                      - name: maxLength
                                        type: integer
                                        required: false
                                      - name: min
                                        type: number
                                        required: false
                                      - name: max
                                        type: number
                                        required: false
                                      - name: pattern
                                        type: string
                                        description: Regex pattern.
                                        required: false
                                      - name: errorMessage
                                        type: string
                                        required: false
                                  - name: options
                                    type: array
                                    description: >
                                      REQUIRED for `type: "select"` and `type:
                                      "radio"`. Must be a

                                      non-empty array of `{ value, label }`
                                      pairs. Never emitted as

                                      empty.
                                    required: false
                                    properties:
                                      - name: value
                                        type: string
                                        required: true
                                      - name: label
                                        type: string
                                        required: true
                                  - name: defaultValue
                                    type: oneOf
                                    required: false
                              - name: submitOnEnter
                                type: boolean
                                required: false
                              - name: onSubmit
                                type: object
                                required: true
                                properties:
                                  - name: type
                                    type: string
                                    enumValues:
                                      - submit_input
                                    required: true
                                  - name: message
                                    type: string
                                    description: >-
                                      Bot message sent back after the user
                                      submits.
                                    required: false
                              - name: isSubmitted
                                type: boolean
                                required: false
                          - name: type
                            type: string
                            required: false
                          - name: payload
                            type: object
                            required: false
              - name: metadata
                type: object
                description: Final-turn summary (sources, tokens, model used).
                required: false
                properties:
                  - name: sources
                    type: array
                    required: false
                    properties:
                      - name: id
                        type: string
                        required: false
                      - name: namespace
                        type: string
                        required: false
                      - name: similarity
                        type: number
                        required: false
                      - name: tags
                        type: array
                        required: false
                        properties:
                          - name: item
                            type: string
                            required: false
                      - name: payload
                        type: object
                        required: false
                        properties:
                          - name: text
                            type: string
                            required: false
                          - name: chunk_index
                            type: integer
                            required: false
                          - name: doc_id
                            type: string
                            required: false
                          - name: doc_name
                            type: string
                            required: false
                          - name: url
                            type: string
                            required: false
                          - name: urlDescription
                            type: string
                            required: false
                  - name: turns
                    type: array
                    required: false
                    properties:
                      - name: from
                        type: string
                        enumValues:
                          - bot
                          - human
                        required: false
                      - name: ts
                        type: number
                        description: Unix timestamp (seconds).
                        required: false
                      - name: modelId
                        type: string
                        description: Model id that produced this turn (bot turns only).
                        required: false
                      - name: messages
                        type: array
                        required: false
                        properties:
                          - name: from
                            type: string
                            enumValues:
                              - bot
                              - human
                            required: false
                          - name: type
                            type: string
                            description: >
                              Message type. Common values include `text`,
                              `visual`,

                              `cardV2`, `carousel`, `ui_engine_form`,
                              `ui_engine_input`,

                              `debug:tell`, `debug:error`, `debug:success`,

                              `context:form_submission`.
                            required: false
                          - name: ts
                            type: number
                            required: false
                          - name: mid
                            type: string
                            required: false
                          - name: item
                            type: object
                            description: >
                              Type-specific payload. Shape depends on `type`.
                              For UI-engine

                              agents, this is one of the `UiEngineMessage`
                              shapes (text /

                              choice / visual / cardV2 / carousel / iFrame /
                              form / input).
                            required: false
                            properties:
                              - name: type
                                type: string
                                description: >
                                  Message kind. `form` and `input` are only
                                  emitted on web

                                  channels (`web-chat` / `text`) when the agent
                                  has forms

                                  enabled.
                                enumValues:
                                  - text
                                  - choice
                                  - visual
                                  - cardV2
                                  - carousel
                                  - iFrame
                                  - form
                                  - input
                                required: true
                              - name: payload
                                type: object
                                description: >-
                                  Type-specific payload. See per-type schemas
                                  below.
                                required: true
                                properties:
                                  - name: message
                                    type: string
                                    description: Message content. Supports Markdown.
                                    required: false
                                  - name: buttons
                                    type: array
                                    required: true
                                    properties:
                                      - name: name
                                        type: string
                                        description: Visible label of the button.
                                        required: true
                                      - name: request
                                        type: object
                                        description: >
                                          What happens when the user clicks the
                                          button. Either opens a

                                          URL or sends a user message back into
                                          the conversation.
                                        required: true
                                        properties:
                                          - name: type
                                            type: string
                                            enumValues:
                                              - open_url
                                              - text
                                            required: true
                                          - name: payload
                                            type: object
                                            required: true
                                            properties:
                                              - name: url
                                                type: string
                                                description: >
                                                  URL to open when the button is clicked.
                                                  Must be a

                                                  real URL pulled from the KB / tool
                                                  output.
                                                required: true
                                              - name: message
                                                type: string
                                                description: User message that will be sent on click.
                                                required: true
                                  - name: image
                                    type: string
                                    description: >
                                      URL of the image. Must end with a valid
                                      image extension

                                      (`.png`, `.jpg`, `.jpeg`, `.webp`, `.gif`,
                                      ...).
                                    required: true
                                  - name: imageUrl
                                    type: string
                                    description: >
                                      Optional image URL. Must end with a valid
                                      image extension.
                                    required: false
                                  - name: title
                                    type: string
                                    description: Card title (supports Markdown).
                                    required: true
                                  - name: description
                                    type: object
                                    required: false
                                    properties:
                                      - name: text
                                        type: string
                                        description: Card description (supports Markdown).
                                        required: false
                                  - name: buttons
                                    type: array
                                    description: Optional call-to-action buttons.
                                    required: false
                                    properties:
                                      - name: name
                                        type: string
                                        description: Visible label of the button.
                                        required: true
                                      - name: request
                                        type: object
                                        description: >
                                          What happens when the user clicks the
                                          button. Either opens a

                                          URL or sends a user message back into
                                          the conversation.
                                        required: true
                                        properties:
                                          - name: type
                                            type: string
                                            enumValues:
                                              - open_url
                                              - text
                                            required: true
                                          - name: payload
                                            type: object
                                            required: true
                                            properties:
                                              - name: url
                                                type: string
                                                description: >
                                                  URL to open when the button is clicked.
                                                  Must be a

                                                  real URL pulled from the KB / tool
                                                  output.
                                                required: true
                                              - name: message
                                                type: string
                                                description: User message that will be sent on click.
                                                required: true
                                  - name: cards
                                    type: array
                                    required: true
                                    properties:
                                      - name: imageUrl
                                        type: string
                                        description: >
                                          Optional image URL. Must end with a
                                          valid image extension.
                                        required: false
                                      - name: title
                                        type: string
                                        description: Card title (supports Markdown).
                                        required: true
                                      - name: description
                                        type: object
                                        required: false
                                        properties:
                                          - name: text
                                            type: string
                                            description: Card description (supports Markdown).
                                            required: false
                                      - name: buttons
                                        type: array
                                        description: Optional call-to-action buttons.
                                        required: false
                                        properties:
                                          - name: name
                                            type: string
                                            description: Visible label of the button.
                                            required: true
                                          - name: request
                                            type: object
                                            description: >
                                              What happens when the user clicks the
                                              button. Either opens a

                                              URL or sends a user message back into
                                              the conversation.
                                            required: true
                                            properties:
                                              - name: type
                                                type: string
                                                enumValues:
                                                  - open_url
                                                  - text
                                                required: true
                                              - name: payload
                                                type: object
                                                required: true
                                                properties:
                                                  - name: url
                                                    type: string
                                                    description: >
                                                      URL to open when the button is clicked.
                                                      Must be a

                                                      real URL pulled from the KB / tool
                                                      output.
                                                    required: true
                                                  - name: message
                                                    type: string
                                                    description: User message that will be sent on click.
                                                    required: true
                                  - name: layout
                                    type: string
                                    description: >
                                      `vertical` for video embeds (YouTube
                                      etc.), `horizontal` for

                                      general web embeds.
                                    enumValues:
                                      - vertical
                                      - horizontal
                                    required: true
                                  - name: url
                                    type: string
                                    description: >
                                      Either a plain URL, or the full `<iframe
                                      ...>` HTML string for

                                      custom embeds.
                                    required: true
                                  - name: title
                                    type: string
                                    required: false
                                  - name: description
                                    type: string
                                    required: false
                                  - name: fields
                                    type: array
                                    required: true
                                    properties:
                                      - name: id
                                        type: string
                                        description: >-
                                          Unique identifier for the field (used as
                                          the form key).
                                        required: true
                                      - name: type
                                        type: string
                                        enumValues:
                                          - text
                                          - email
                                          - password
                                          - number
                                          - tel
                                          - url
                                          - textarea
                                          - select
                                          - checkbox
                                          - radio
                                          - date
                                          - time
                                          - datetime-local
                                          - file
                                        required: true
                                      - name: label
                                        type: string
                                        description: Display label for the field.
                                        required: true
                                      - name: placeholder
                                        type: string
                                        required: false
                                      - name: validation
                                        type: object
                                        description: Optional validation rules.
                                        required: false
                                        properties:
                                          - name: minLength
                                            type: integer
                                            required: false
                                          - name: maxLength
                                            type: integer
                                            required: false
                                          - name: min
                                            type: number
                                            required: false
                                          - name: max
                                            type: number
                                            required: false
                                          - name: pattern
                                            type: string
                                            description: Regex pattern.
                                            required: false
                                          - name: errorMessage
                                            type: string
                                            required: false
                                      - name: options
                                        type: array
                                        description: >
                                          REQUIRED for `type: "select"` and `type:
                                          "radio"`. Must be a

                                          non-empty array of `{ value, label }`
                                          pairs. Never emitted as

                                          empty.
                                        required: false
                                        properties:
                                          - name: value
                                            type: string
                                            required: true
                                          - name: label
                                            type: string
                                            required: true
                                      - name: defaultValue
                                        type: oneOf
                                        required: false
                                  - name: submitButton
                                    type: object
                                    required: false
                                    properties:
                                      - name: label
                                        type: string
                                        required: false
                                      - name: style
                                        type: string
                                        enumValues:
                                          - primary
                                          - secondary
                                          - success
                                          - warning
                                          - danger
                                        required: false
                                  - name: onSubmit
                                    type: object
                                    required: true
                                    properties:
                                      - name: type
                                        type: string
                                        enumValues:
                                          - submit_form
                                        required: true
                                      - name: message
                                        type: string
                                        description: >-
                                          Bot message sent back after a successful
                                          submission.
                                        required: false
                                  - name: submittedData
                                    type: array
                                    description: >
                                      Populated by the server / client after the
                                      user submits the

                                      form. Used to render the post-submit
                                      "filled" state.
                                    required: false
                                    properties:
                                      - name: index
                                        type: integer
                                        required: true
                                      - name: label
                                        type: string
                                        required: true
                                      - name: field_id
                                        type: string
                                        required: true
                                      - name: field_type
                                        type: string
                                        required: true
                                  - name: isSubmitted
                                    type: boolean
                                    required: false
                                  - name: field
                                    type: object
                                    description: >
                                      Single input field definition used inside
                                      `form.fields[]` and

                                      `input.field`.
                                    required: true
                                    properties:
                                      - name: id
                                        type: string
                                        description: >-
                                          Unique identifier for the field (used as
                                          the form key).
                                        required: true
                                      - name: type
                                        type: string
                                        enumValues:
                                          - text
                                          - email
                                          - password
                                          - number
                                          - tel
                                          - url
                                          - textarea
                                          - select
                                          - checkbox
                                          - radio
                                          - date
                                          - time
                                          - datetime-local
                                          - file
                                        required: true
                                      - name: label
                                        type: string
                                        description: Display label for the field.
                                        required: true
                                      - name: placeholder
                                        type: string
                                        required: false
                                      - name: validation
                                        type: object
                                        description: Optional validation rules.
                                        required: false
                                        properties:
                                          - name: minLength
                                            type: integer
                                            required: false
                                          - name: maxLength
                                            type: integer
                                            required: false
                                          - name: min
                                            type: number
                                            required: false
                                          - name: max
                                            type: number
                                            required: false
                                          - name: pattern
                                            type: string
                                            description: Regex pattern.
                                            required: false
                                          - name: errorMessage
                                            type: string
                                            required: false
                                      - name: options
                                        type: array
                                        description: >
                                          REQUIRED for `type: "select"` and `type:
                                          "radio"`. Must be a

                                          non-empty array of `{ value, label }`
                                          pairs. Never emitted as

                                          empty.
                                        required: false
                                        properties:
                                          - name: value
                                            type: string
                                            required: true
                                          - name: label
                                            type: string
                                            required: true
                                      - name: defaultValue
                                        type: oneOf
                                        required: false
                                  - name: submitOnEnter
                                    type: boolean
                                    required: false
                                  - name: onSubmit
                                    type: object
                                    required: true
                                    properties:
                                      - name: type
                                        type: string
                                        enumValues:
                                          - submit_input
                                        required: true
                                      - name: message
                                        type: string
                                        description: >-
                                          Bot message sent back after the user
                                          submits.
                                        required: false
                                  - name: isSubmitted
                                    type: boolean
                                    required: false
                              - name: type
                                type: string
                                required: false
                              - name: payload
                                type: object
                                required: false
                  - name: inputTokens
                    type: integer
                    required: false
                  - name: outputTokens
                    type: integer
                    required: false
                  - name: llmUsed
                    type: string
                    description: Model id that produced the turn (e.g. `gpt-4o-mini`).
                    required: false
        headers: []
        jsonPayloadSchema:
          type: object
          description: |
            One streamed event from the server. The `type` field discriminates
            between chunked text, UI-engine payloads, debug/tool traces,
            actions, the final metadata payload, and full chat-history syncs.
            Mirrors `EWSChunkModel`.
          required:
            - type
          properties:
            type:
              type: string
              enum:
                - chunk
                - metadata
                - debug
                - action
                - sync_chat_history
              x-parser-schema-id: <anonymous-schema-144>
            chunk:
              type: string
              description: |
                For `chunk` / `debug`: the streamed text.

                - When `ui_engine` is `false` (or omitted): plain Markdown text
                  that should be appended to the in-progress assistant message.
                - When `ui_engine` is `true`: a **JSON-stringified `TurnProps`**
                  snapshot of the assistant turn so far. After
                  `JSON.parse(chunk.chunk)` you get an object whose `messages`
                  array contains `UiEngineMessage` items (`text`, `choice`,
                  `visual`, `cardV2`, `carousel`, `iFrame`, `form`, `input`).
                  Each chunk is a full snapshot — replace, don't append.
              x-parser-schema-id: <anonymous-schema-145>
            chunkIndex:
              type: integer
              description: Monotonic chunk counter within the turn.
              x-parser-schema-id: <anonymous-schema-146>
            ui_engine:
              type: boolean
              description: |
                When `true`, `chunk` is a JSON-stringified `TurnProps` whose
                `messages[].item` entries follow the `UiEngineMessage` schema
                (parse it client-side). When `false` or omitted, `chunk` is
                plain Markdown text.
              x-parser-schema-id: <anonymous-schema-147>
            isV2:
              type: boolean
              description: Set when emitted by the node-based v2 handler.
              x-parser-schema-id: <anonymous-schema-148>
            action:
              type: object
              description: >-
                Optional structured action emitted by the agent (handoff, tool
                call, ...).
              required:
                - type
              properties:
                type:
                  type: string
                  enum:
                    - request_handoff
                    - tool_call
                  x-parser-schema-id: <anonymous-schema-150>
                payload:
                  type: string
                  description: Free-form payload (e.g. handoff note).
                  x-parser-schema-id: <anonymous-schema-151>
                toolMetadata:
                  type: object
                  properties:
                    toolName:
                      type: string
                      x-parser-schema-id: <anonymous-schema-153>
                    input:
                      x-parser-schema-id: <anonymous-schema-154>
                    output:
                      x-parser-schema-id: <anonymous-schema-155>
                  x-parser-schema-id: <anonymous-schema-152>
              x-parser-schema-id: <anonymous-schema-149>
            turns:
              type: array
              description: >-
                Full snapshot of conversation turns (used with
                `sync_chat_history`).
              items: *ref_6
              x-parser-schema-id: <anonymous-schema-156>
            metadata:
              type: object
              description: Final-turn summary (sources, tokens, model used).
              properties:
                sources:
                  type: array
                  items:
                    type: object
                    description: >-
                      A single retrieved KB / vector source returned in
                      `metadata.sources`.
                    properties:
                      id:
                        type: string
                        x-parser-schema-id: <anonymous-schema-159>
                      namespace:
                        type: string
                        x-parser-schema-id: <anonymous-schema-160>
                      similarity:
                        type: number
                        x-parser-schema-id: <anonymous-schema-161>
                      tags:
                        type: array
                        items:
                          type: string
                          x-parser-schema-id: <anonymous-schema-163>
                        x-parser-schema-id: <anonymous-schema-162>
                      payload:
                        type: object
                        properties:
                          text:
                            type: string
                            x-parser-schema-id: <anonymous-schema-165>
                          chunk_index:
                            type: integer
                            x-parser-schema-id: <anonymous-schema-166>
                          doc_id:
                            type: string
                            x-parser-schema-id: <anonymous-schema-167>
                          doc_name:
                            type: string
                            x-parser-schema-id: <anonymous-schema-168>
                          url:
                            type: string
                            x-parser-schema-id: <anonymous-schema-169>
                          urlDescription:
                            type: string
                            x-parser-schema-id: <anonymous-schema-170>
                        x-parser-schema-id: <anonymous-schema-164>
                    x-parser-schema-id: VectorSource
                  x-parser-schema-id: <anonymous-schema-158>
                turns:
                  type: array
                  items: *ref_6
                  x-parser-schema-id: <anonymous-schema-171>
                inputTokens:
                  type: integer
                  x-parser-schema-id: <anonymous-schema-172>
                outputTokens:
                  type: integer
                  x-parser-schema-id: <anonymous-schema-173>
                llmUsed:
                  type: string
                  description: Model id that produced the turn (e.g. `gpt-4o-mini`).
                  x-parser-schema-id: <anonymous-schema-174>
              x-parser-schema-id: <anonymous-schema-157>
          examples:
            - summary: Streaming text chunk
              value:
                type: chunk
                chunk: Sure! I can help with
                chunkIndex: 3
                ui_engine: false
            - summary: UI-engine chunk (snapshot of the bot turn)
              value:
                type: chunk
                chunk: >-
                  {"from":"bot","ts":1719931200,"messages":[{"from":"bot","type":"text","item":{"type":"text","payload":{"message":"Hi!
                  Here are some
                  options:"}}},{"from":"bot","type":"choice","item":{"type":"choice","payload":{"buttons":[{"name":"Pricing","request":{"type":"text","payload":{"message":"Tell
                  me about pricing"}}}]}}}]}
                chunkIndex: 7
                ui_engine: true
            - summary: Tool-call debug
              value:
                type: debug
                chunk: 'Finished tool: KB-Search ...'
                action:
                  type: tool_call
                  toolMetadata:
                    toolName: KB-Search
                    input:
                      query: pricing
                    output: ...
            - summary: Human-handoff request
              value:
                type: action
                action:
                  type: request_handoff
                  payload: User wants to talk to a human about refund.
            - summary: Final metadata
              value:
                type: metadata
                metadata:
                  inputTokens: 1247
                  outputTokens: 512
                  llmUsed: gpt-4o-mini
                  sources: []
                  turns: []
            - summary: Chat history sync (v2 / node-based)
              value:
                type: sync_chat_history
                turns: []
          x-parser-schema-id: ChunkMessage
        title: Streaming chunk
        description: One streamed event from the agent.
        example: |-
          {
            "summary": "Streaming text chunk",
            "value": {
              "type": "chunk",
              "chunk": "Sure! I can help with",
              "chunkIndex": 3,
              "ui_engine": false
            }
          }
        bindings: []
        extensions:
          - id: x-parser-unique-object-id
            value: chunkMessage
    bindings: []
    extensions: *ref_7
sendOperations:
  - *ref_8
receiveOperations:
  - *ref_9
sendMessages:
  - *ref_10
receiveMessages:
  - *ref_11
extensions:
  - id: x-parser-unique-object-id
    value: interact
securitySchemes: []

````