xyz.quasigod.lab.letta.message

quasigod.spaces-alpha.bsky.network

{
  "$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
}

Validate Record

Validate a record against xyz.quasigod.lab.letta.message

Validation Options
Treat any remaining unresolved references as valid

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)

Similar Lexicons

Lexicons whose schemas describe something close to this one. Check them before publishing a new one that overlaps.

  • xyz.quasigod.lab.letta.conversation recordnot from the namespace authority

    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'.

  • 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.

  • 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…

Lexicon Garden

@