Class: Message
An immutable, validated conversation message from a human participant or the model.
Remarks
Covers only user and assistant roles — system instructions, developer directives, and tool results are not represented here. Constructed from a RawMessage via rawMessageSchema. Temporal fields are normalised to Luxon DateTime instances at construction time. Both content and identity.representation are @nhtio/adk!Tokenizable so token cost can be estimated inline.
A message may carry content (text), attachments (media), or both. The cross-field rule on rawMessageSchema enforces that at least one is present. Downstream code that reaches for message.content must handle the attachments-only case where content is undefined.
Constructors
Constructor
new Message(raw: RawMessage): Message;Parameters
| Parameter | Type | Description |
|---|---|---|
raw | RawMessage | The raw message input validated against rawMessageSchema. |
Returns
Message
Throws
@nhtio/adk!E_INVALID_INITIAL_MESSAGE_VALUE when raw does not satisfy the schema — including the cross-field rule that at least one of content or attachments must be present and non-empty.
Properties
| Property | Modifier | Type | Default value | Description |
|---|---|---|---|---|
attachments | readonly | readonly Media[] | undefined | Media attachments carried by this message. Remarks Always defined as a frozen array — empty when the message has no attachments. Both user and assistant messages may carry attachments. Each entry carries its own trustTier and modalityHazard; the renderer wraps each in its own trust envelope independent of the message envelope. |
content | readonly | Tokenizable | undefined | undefined | The message content as a @nhtio/adk!Tokenizable for inline token estimation, or undefined for attachments-only messages. Remarks undefined when the message was constructed with only attachments. Render code that needs the text portion must guard for the missing case rather than blindly calling message.content.toString(). |
createdAt | readonly | DateTime | undefined | When this message was created. |
id | readonly | string | undefined | Stable unique identifier for this message. |
identity | readonly | Identity | undefined | The identity of the participant who authored this message. |
role | readonly | MessageRole | undefined | Whether this message is from the human participant or the model. |
updatedAt | readonly | DateTime | undefined | When this message was last modified. |
schema | static | ObjectSchema<RawMessage> | rawMessageSchema | Validator schema that accepts a RawMessage object. Remarks Reusable fragment for any schema that needs to validate or nest a message entry — for example, a collection schema that holds an array of messages. |
Methods
isMessage()
static isMessage(value: unknown): value is Message;Returns true if value is a Message instance.
Parameters
| Parameter | Type | Description |
|---|---|---|
value | unknown | The value to test. |
Returns
value is Message
true when value is a Message instance.
Remarks
Uses @nhtio/adk!isInstanceOf for cross-realm safety — instanceof would fail for instances created in a different module copy or VM context.