xyz.quasigod.lab.letta.message
{
"$type": "com.atproto.lexicon.schema",
"defs": {
"main": {
"description": "A letta message persisted in a permissioned space.",
"key": "tid",
"record": {
"properties": {
"agent": {
"description": "The agent this message was produced by or addressed to.",
"format": "at-uri",
"type": "string"
},
"compactedMessageIds": {
"description": "Only on a compaction summary message: the TIDs of the messages summarized into this summary, in seq order. Following these (and any older summary among them) reconstructs the full pre-compaction transcript. Compaction never deletes; it re-marks messages compacted and records them here.",
"items": {
"format": "tid",
"maxLength": 13,
"type": "string"
},
"type": "array"
},
"conversation": {
"description": "The conversation this message belongs to.",
"format": "at-uri",
"type": "string"
},
"createdAt": {
"format": "datetime",
"type": "string"
},
"message": {
"description": "The full message state, enveloped. format + version identify the payload spec; data is the payload in that format. The typed core plus this envelope is the complete interop contract; the data payload is harness-specific.",
"properties": {
"data": {
"description": "The payload in the declared format. Kept unvalidated by the lexicon deliberately: it is the harness's internal, evolving wire format, and declaring it in the lexicon would freeze it under atproto's evolution rules.",
"type": "unknown"
},
"format": {
"description": "Payload format namespace. letta.localMessage: letta's LocalMessage — a role-discriminated union (user/assistant/toolResult) of content parts (text, thinking, image, tool call), provider metadata, and usage. Specified by letta's TypeScript types (src/backend/local/local-message.ts), which letta's compiler enforces on every read and write.",
"knownValues": [
"letta.localMessage"
],
"maxLength": 128,
"type": "string"
},
"version": {
"description": "Payload format version the data conforms to. Bumped when the payload format changes incompatibly; readers branch on format + version.",
"minimum": 1,
"type": "integer"
}
},
"required": [
"format",
"version",
"data"
],
"type": "object"
},
"role": {
"description": "Message role: the sender class. toolResult = an assistant tool call's result, returned as a message.",
"knownValues": [
"user",
"assistant",
"toolResult"
],
"type": "string"
},
"seq": {
"description": "Monotonic per-conversation ordering. Unique within the conversation; minted from the conversation's seq counter (one more than the highest seq of any retained message). Never reused for a message that exists; retained (compacted) messages keep their seq.",
"minimum": 1,
"type": "integer"
},
"status": {
"description": "active: part of the conversation's current context window. compacted: summarized out of the window — retained in the transcript but separated from the active conversation. Absent means active. The window is derived: active messages, in seq order, form the conversation's context; compaction re-marks messages compacted instead of deleting them.",
"knownValues": [
"active",
"compacted"
],
"type": "string"
},
"updatedAt": {
"description": "Set when the message is rewritten in place (interrupted tool calls settled, or re-marked compacted by a compaction).",
"format": "datetime",
"type": "string"
}
},
"required": [
"conversation",
"agent",
"role",
"seq",
"message",
"createdAt"
],
"type": "object"
},
"type": "record"
}
},
"description": "A letta message within a conversation. Core fields are navigable atproto data; `message` carries the full letta message state.",
"id": "xyz.quasigod.lab.letta.message",
"lexicon": 1
}
Metadata
- DID
-
did:plc:7pezv7mb4agwyktraauhl26g - CID
-
bafyreicly7ua7oekkcrtsbjb4mmfaayjanwgcwyrfzu6lqfiqnz3iykzhu - Indexed At
- 2026-08-25 19:16 UTC
- AT-URI
-
at://did:plc:7pezv7mb4agwyktraauhl26g/com.atproto.lexicon.schema/xyz.quasigod.lab.letta.message
Version History (2 versions)
- 2026-08-25 19:16 UTC (current)
- 2026-08-24 16:12 UTC diff
Similar Lexicons
Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.
-
A letta conversation: an ordered message thread bound to an agent. The rkey (TID) is the conversation's id in letta.
-
One turn in a conversation. A reply uses its parent's key plus '.r' and the generation attempt, e.g. '.r0', '.r1'.
-
click.aligned.chat.message record
One turn of a published conversation with an agent. Records exist only for a conversation somebody published; within one, every turn has a record, in order, so the record key's TID ordering is the reading order.
-
chat.yakka.message record
A message in a channel or DM space. The record lives in the *author's* repo within the space, so a message has no single owning collection to sort by — it is identified by (authorDid, tid). One collection serves chann…