ai.syui.log.chat

syui.ai

Schema Diff

+91 -18

From

CID
bafyreifsb3mpeqz...
Indexed At
2026-02-18 17:34 UTC
View this version

To

CID
bafyreiewmxhyabc...
Indexed At
2026-03-12 11:16 UTC
View this version

Compatibility Analysis

Breaking Changes Detected

17 breaking changes, 38 non-breaking changes.

Breaking Changes (17)
  • RemovedVertex RemovedVertex { vertex_id: "ai.syui.log.chat:body.author" }
  • RemovedVertex RemovedVertex { vertex_id: "ai.syui.log.chat:body.createdAt" }
  • RemovedVertex RemovedVertex { vertex_id: "ai.syui.log.chat:body.lang" }
  • RemovedEdge RemovedEdge { src: "ai.syui.log.chat:body", tgt: "ai.syui.log.chat:body.author", kind: "prop", name: Some("author") }
  • RemovedEdge RemovedEdge { src: "ai.syui.log.chat:body", tgt: "ai.syui.log.chat:body.createdAt", kind: "prop", name: Some("createdAt") }
  • RemovedEdge RemovedEdge { src: "ai.syui.log.chat:body", tgt: "ai.syui.log.chat:body.lang", kind: "prop", name: Some("lang") }
  • KindChanged KindChanged { vertex_id: "ai.syui.log.chat:body.content", old_kind: "string", new_kind: "union" }
  • ConstraintAdded ConstraintAdded { vertex_id: "ai.syui.log.chat#translation.title", sort: "maxLength", value: "5000" }
  • ConstraintAdded ConstraintAdded { vertex_id: "ai.syui.log.chat#translation.title", sort: "maxGraphemes", value: "500" }
  • ConstraintAdded ConstraintAdded { vertex_id: "ai.syui.log.chat:body.title", sort: "maxGraphemes", value: "500" }
  • ConstraintAdded ConstraintAdded { vertex_id: "ai.syui.log.chat:body.title", sort: "maxLength", value: "5000" }
  • ConstraintAdded ConstraintAdded { vertex_id: "ai.syui.log.chat:body.tags:items", sort: "maxLength", value: "1280" }
  • ConstraintAdded ConstraintAdded { vertex_id: "ai.syui.log.chat:body.tags:items", sort: "maxGraphemes", value: "128" }
  • ConstraintAdded ConstraintAdded { vertex_id: "ai.syui.log.chat:body.description", sort: "maxLength", value: "30000" }
  • ConstraintAdded ConstraintAdded { vertex_id: "ai.syui.log.chat:body.description", sort: "maxGraphemes", value: "3000" }
  • ConstraintAdded ConstraintAdded { vertex_id: "ai.syui.log.chat#markdown.text", sort: "maxLength", value: "1000000" }
  • ConstraintAdded ConstraintAdded { vertex_id: "ai.syui.log.chat#markdown.text", sort: "maxGraphemes", value: "100000" }
Non-Breaking Changes (38)
  • AddedVertex AddedVertex { vertex_id: "ai.syui.log.chat#markdown" }
  • AddedVertex AddedVertex { vertex_id: "ai.syui.log.chat#markdown.text" }
  • AddedVertex AddedVertex { vertex_id: "ai.syui.log.chat#translation.title" }
  • AddedVertex AddedVertex { vertex_id: "ai.syui.log.chat:body.bskyPostRef" }
  • AddedVertex AddedVertex { vertex_id: "ai.syui.log.chat:body.content:variant0" }
  • AddedVertex AddedVertex { vertex_id: "ai.syui.log.chat:body.coverImage" }
  • AddedVertex AddedVertex { vertex_id: "ai.syui.log.chat:body.description" }
  • AddedVertex AddedVertex { vertex_id: "ai.syui.log.chat:body.langs" }
  • AddedVertex AddedVertex { vertex_id: "ai.syui.log.chat:body.langs:items" }
  • AddedVertex AddedVertex { vertex_id: "ai.syui.log.chat:body.path" }
  • AddedVertex AddedVertex { vertex_id: "ai.syui.log.chat:body.publishedAt" }
  • AddedVertex AddedVertex { vertex_id: "ai.syui.log.chat:body.site" }
  • AddedVertex AddedVertex { vertex_id: "ai.syui.log.chat:body.tags" }
  • AddedVertex AddedVertex { vertex_id: "ai.syui.log.chat:body.tags:items" }
  • AddedVertex AddedVertex { vertex_id: "ai.syui.log.chat:body.textContent" }
  • AddedVertex AddedVertex { vertex_id: "ai.syui.log.chat:body.title" }
  • AddedVertex AddedVertex { vertex_id: "ai.syui.log.chat:body.updatedAt" }
  • AddedEdge AddedEdge { src: "ai.syui.log.chat#markdown", tgt: "ai.syui.log.chat#markdown.text", kind: "prop", name: Some("text") }
  • AddedEdge AddedEdge { src: "ai.syui.log.chat#translation", tgt: "ai.syui.log.chat#translation.title", kind: "prop", name: Some("title") }
  • AddedEdge AddedEdge { src: "ai.syui.log.chat:body", tgt: "ai.syui.log.chat:body.bskyPostRef", kind: "prop", name: Some("bskyPostRef") }
  • AddedEdge AddedEdge { src: "ai.syui.log.chat:body", tgt: "ai.syui.log.chat:body.coverImage", kind: "prop", name: Some("coverImage") }
  • AddedEdge AddedEdge { src: "ai.syui.log.chat:body", tgt: "ai.syui.log.chat:body.description", kind: "prop", name: Some("description") }
  • AddedEdge AddedEdge { src: "ai.syui.log.chat:body", tgt: "ai.syui.log.chat:body.langs", kind: "prop", name: Some("langs") }
  • AddedEdge AddedEdge { src: "ai.syui.log.chat:body", tgt: "ai.syui.log.chat:body.path", kind: "prop", name: Some("path") }
  • AddedEdge AddedEdge { src: "ai.syui.log.chat:body", tgt: "ai.syui.log.chat:body.publishedAt", kind: "prop", name: Some("publishedAt") }
  • AddedEdge AddedEdge { src: "ai.syui.log.chat:body", tgt: "ai.syui.log.chat:body.site", kind: "prop", name: Some("site") }
  • AddedEdge AddedEdge { src: "ai.syui.log.chat:body", tgt: "ai.syui.log.chat:body.tags", kind: "prop", name: Some("tags") }
  • AddedEdge AddedEdge { src: "ai.syui.log.chat:body", tgt: "ai.syui.log.chat:body.textContent", kind: "prop", name: Some("textContent") }
  • AddedEdge AddedEdge { src: "ai.syui.log.chat:body", tgt: "ai.syui.log.chat:body.title", kind: "prop", name: Some("title") }
  • AddedEdge AddedEdge { src: "ai.syui.log.chat:body", tgt: "ai.syui.log.chat:body.updatedAt", kind: "prop", name: Some("updatedAt") }
  • AddedEdge AddedEdge { src: "ai.syui.log.chat:body.content", tgt: "ai.syui.log.chat:body.content:variant0", kind: "variant", name: Some("#markdown") }
  • AddedEdge AddedEdge { src: "ai.syui.log.chat:body.langs", tgt: "ai.syui.log.chat:body.langs:items", kind: "items", name: None }
  • AddedEdge AddedEdge { src: "ai.syui.log.chat:body.tags", tgt: "ai.syui.log.chat:body.tags:items", kind: "items", name: None }
  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "ai.syui.log.chat#translation.content", sort: "maxGraphemes", old_value: "10000", new_value: "100000" }
  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "ai.syui.log.chat#translation.content", sort: "maxLength", old_value: "100000", new_value: "1000000" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "ai.syui.log.chat:body.content", sort: "maxGraphemes" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "ai.syui.log.chat:body.content", sort: "maxLength" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "ai.syui.log.chat:body.lang", sort: "maxLength" }

Migration Guidance

Removed Elements

  • RemovedVertex { vertex_id: "ai.syui.log.chat:body.author" }
  • RemovedVertex { vertex_id: "ai.syui.log.chat:body.createdAt" }
  • RemovedVertex { vertex_id: "ai.syui.log.chat:body.lang" }

Added Elements

  • AddedVertex { vertex_id: "ai.syui.log.chat#markdown" }
  • AddedVertex { vertex_id: "ai.syui.log.chat#markdown.text" }
  • AddedVertex { vertex_id: "ai.syui.log.chat#translation.title" }
  • AddedVertex { vertex_id: "ai.syui.log.chat:body.bskyPostRef" }
  • AddedVertex { vertex_id: "ai.syui.log.chat:body.content:variant0" }
  • AddedVertex { vertex_id: "ai.syui.log.chat:body.coverImage" }
  • AddedVertex { vertex_id: "ai.syui.log.chat:body.description" }
  • AddedVertex { vertex_id: "ai.syui.log.chat:body.langs" }
  • AddedVertex { vertex_id: "ai.syui.log.chat:body.langs:items" }
  • AddedVertex { vertex_id: "ai.syui.log.chat:body.path" }
  • AddedVertex { vertex_id: "ai.syui.log.chat:body.publishedAt" }
  • AddedVertex { vertex_id: "ai.syui.log.chat:body.site" }
  • AddedVertex { vertex_id: "ai.syui.log.chat:body.tags" }
  • AddedVertex { vertex_id: "ai.syui.log.chat:body.tags:items" }
  • AddedVertex { vertex_id: "ai.syui.log.chat:body.textContent" }
  • AddedVertex { vertex_id: "ai.syui.log.chat:body.title" }
  • AddedVertex { vertex_id: "ai.syui.log.chat:body.updatedAt" }

Constraint Changes

  • ConstraintAdded ConstraintAdded { vertex_id: "ai.syui.log.chat:body.tags:items", sort: "maxGraphemes", value: "128" }
  • ConstraintAdded ConstraintAdded { vertex_id: "ai.syui.log.chat:body.tags:items", sort: "maxLength", value: "1280" }
  • ConstraintAdded ConstraintAdded { vertex_id: "ai.syui.log.chat:body.description", sort: "maxLength", value: "30000" }
  • ConstraintAdded ConstraintAdded { vertex_id: "ai.syui.log.chat:body.description", sort: "maxGraphemes", value: "3000" }
  • ConstraintAdded ConstraintAdded { vertex_id: "ai.syui.log.chat#translation.title", sort: "maxGraphemes", value: "500" }
  • ConstraintAdded ConstraintAdded { vertex_id: "ai.syui.log.chat#translation.title", sort: "maxLength", value: "5000" }
  • ConstraintAdded ConstraintAdded { vertex_id: "ai.syui.log.chat#markdown.text", sort: "maxLength", value: "1000000" }
  • ConstraintAdded ConstraintAdded { vertex_id: "ai.syui.log.chat#markdown.text", sort: "maxGraphemes", value: "100000" }
  • ConstraintAdded ConstraintAdded { vertex_id: "ai.syui.log.chat:body.title", sort: "maxGraphemes", value: "500" }
  • ConstraintAdded ConstraintAdded { vertex_id: "ai.syui.log.chat:body.title", sort: "maxLength", value: "5000" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "ai.syui.log.chat:body.lang", sort: "maxLength" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "ai.syui.log.chat:body.content", sort: "maxLength" }
  • ConstraintRemoved ConstraintRemoved { vertex_id: "ai.syui.log.chat:body.content", sort: "maxGraphemes" }
  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "ai.syui.log.chat#translation.content", sort: "maxLength", old_value: "100000", new_value: "1000000" }
  • ConstraintRelaxed ConstraintRelaxed { vertex_id: "ai.syui.log.chat#translation.content", sort: "maxGraphemes", old_value: "10000", new_value: "100000" }

Additional Notes

  • Breaking: RemovedEdge { src: "ai.syui.log.chat:body", tgt: "ai.syui.log.chat:body.author", kind: "prop", name: Some("author") }
  • Breaking: RemovedEdge { src: "ai.syui.log.chat:body", tgt: "ai.syui.log.chat:body.createdAt", kind: "prop", name: Some("createdAt") }
  • Breaking: RemovedEdge { src: "ai.syui.log.chat:body", tgt: "ai.syui.log.chat:body.lang", kind: "prop", name: Some("lang") }
  • Breaking: KindChanged { vertex_id: "ai.syui.log.chat:body.content", old_kind: "string", new_kind: "union" }
  • Non-breaking: AddedEdge { src: "ai.syui.log.chat#markdown", tgt: "ai.syui.log.chat#markdown.text", kind: "prop", name: Some("text") }
  • Non-breaking: AddedEdge { src: "ai.syui.log.chat#translation", tgt: "ai.syui.log.chat#translation.title", kind: "prop", name: Some("title") }
  • Non-breaking: AddedEdge { src: "ai.syui.log.chat:body", tgt: "ai.syui.log.chat:body.bskyPostRef", kind: "prop", name: Some("bskyPostRef") }
  • Non-breaking: AddedEdge { src: "ai.syui.log.chat:body", tgt: "ai.syui.log.chat:body.coverImage", kind: "prop", name: Some("coverImage") }
  • Non-breaking: AddedEdge { src: "ai.syui.log.chat:body", tgt: "ai.syui.log.chat:body.description", kind: "prop", name: Some("description") }
  • Non-breaking: AddedEdge { src: "ai.syui.log.chat:body", tgt: "ai.syui.log.chat:body.langs", kind: "prop", name: Some("langs") }
  • Non-breaking: AddedEdge { src: "ai.syui.log.chat:body", tgt: "ai.syui.log.chat:body.path", kind: "prop", name: Some("path") }
  • Non-breaking: AddedEdge { src: "ai.syui.log.chat:body", tgt: "ai.syui.log.chat:body.publishedAt", kind: "prop", name: Some("publishedAt") }
  • Non-breaking: AddedEdge { src: "ai.syui.log.chat:body", tgt: "ai.syui.log.chat:body.site", kind: "prop", name: Some("site") }
  • Non-breaking: AddedEdge { src: "ai.syui.log.chat:body", tgt: "ai.syui.log.chat:body.tags", kind: "prop", name: Some("tags") }
  • Non-breaking: AddedEdge { src: "ai.syui.log.chat:body", tgt: "ai.syui.log.chat:body.textContent", kind: "prop", name: Some("textContent") }
  • Non-breaking: AddedEdge { src: "ai.syui.log.chat:body", tgt: "ai.syui.log.chat:body.title", kind: "prop", name: Some("title") }
  • Non-breaking: AddedEdge { src: "ai.syui.log.chat:body", tgt: "ai.syui.log.chat:body.updatedAt", kind: "prop", name: Some("updatedAt") }
  • Non-breaking: AddedEdge { src: "ai.syui.log.chat:body.content", tgt: "ai.syui.log.chat:body.content:variant0", kind: "variant", name: Some("#markdown") }
  • Non-breaking: AddedEdge { src: "ai.syui.log.chat:body.langs", tgt: "ai.syui.log.chat:body.langs:items", kind: "items", name: None }
  • Non-breaking: AddedEdge { src: "ai.syui.log.chat:body.tags", tgt: "ai.syui.log.chat:body.tags:items", kind: "items", name: None }
1 1
{
2 2
  "id": "ai.syui.log.chat",
3 3
  "defs": {
4 4
    "main": {
5 5
      "key": "tid",
6 6
      "type": "record",
7 7
      "record": {
8 8
        "type": "object",
9 9
        "required": [
10 -
          "content",
11 -
          "author",
12 -
          "createdAt"
10 +
          "site",
11 +
          "title",
12 +
          "publishedAt"
13 13
        ],
14 14
        "properties": {
15 -
          "lang": {
15 +
          "path": {
16 16
            "type": "string",
17 -
            "maxLength": 10,
18 -
            "description": "Language code of the original content (e.g., 'ja', 'en')."
17 +
            "description": "Combine with site URL to construct a canonical URL to the message."
19 18
          },
20 19
          "root": {
21 20
            "type": "string",
22 21
            "format": "at-uri",
23 -
            "description": "AT-URI of the root message in the thread."
22 +
            "description": "AT-URI of the root message in a thread."
24 23
          },
25 -
          "author": {
24 +
          "site": {
26 25
            "type": "string",
27 -
            "format": "did",
28 -
            "description": "DID of the message author."
26 +
            "format": "uri",
27 +
            "description": "Points to a publication record (at://) or a publication URL (https://)."
28 +
          },
29 +
          "tags": {
30 +
            "type": "array",
31 +
            "items": {
32 +
              "type": "string",
33 +
              "maxLength": 1280,
34 +
              "maxGraphemes": 128
35 +
            },
36 +
            "description": "Tags to categorize the message."
29 37
          },
38 +
          "langs": {
39 +
            "type": "array",
40 +
            "items": {
41 +
              "type": "string",
42 +
              "format": "language"
43 +
            },
44 +
            "maxLength": 3,
45 +
            "description": "Indicates human language of message content."
46 +
          },
47 +
          "title": {
48 +
            "type": "string",
49 +
            "maxLength": 5000,
50 +
            "description": "Title of the message or thread topic.",
51 +
            "maxGraphemes": 500
52 +
          },
30 53
          "parent": {
31 54
            "type": "string",
32 55
            "format": "at-uri",
33 56
            "description": "AT-URI of the parent message being replied to."
34 57
          },
35 58
          "content": {
59 +
            "refs": [
60 +
              "#markdown"
61 +
            ],
62 +
            "type": "union",
63 +
            "closed": false,
64 +
            "description": "Open union for content. Supports markdown and other formats via $type."
65 +
          },
66 +
          "updatedAt": {
36 67
            "type": "string",
37 -
            "maxLength": 100000,
38 -
            "description": "The content of the message.",
39 -
            "maxGraphemes": 10000
68 +
            "format": "datetime",
69 +
            "description": "Timestamp of the message's last edit."
70 +
          },
71 +
          "coverImage": {
72 +
            "type": "blob",
73 +
            "accept": [
74 +
              "image/*"
75 +
            ],
76 +
            "maxSize": 1000000,
77 +
            "description": "Cover image. Less than 1MB."
40 78
          },
41 -
          "createdAt": {
79 +
          "bskyPostRef": {
80 +
            "ref": "com.atproto.repo.strongRef",
81 +
            "type": "ref",
82 +
            "description": "Strong reference to a Bluesky post."
83 +
          },
84 +
          "description": {
42 85
            "type": "string",
86 +
            "maxLength": 30000,
87 +
            "description": "A brief description or excerpt from the message.",
88 +
            "maxGraphemes": 3000
89 +
          },
90 +
          "publishedAt": {
91 +
            "type": "string",
43 92
            "format": "datetime",
44 -
            "description": "Client-declared timestamp when this message was created."
93 +
            "description": "Timestamp of the message's publish time."
94 +
          },
95 +
          "textContent": {
96 +
            "type": "string",
97 +
            "description": "Plaintext representation of the message content. Should not contain markdown or other formatting."
45 98
          },
46 99
          "translations": {
47 100
            "ref": "#translationMap",
48 101
            "type": "ref",
49 102
            "description": "Translations of the message in other languages."
50 103
          }
51 104
        }
52 105
      },
53 -
      "description": "Record containing a chat message in a conversation."
106 +
      "description": "Record containing a chat message. Compatible with site.standard.document."
54 107
    },
108 +
    "markdown": {
109 +
      "type": "object",
110 +
      "required": [
111 +
        "text"
112 +
      ],
113 +
      "properties": {
114 +
        "text": {
115 +
          "type": "string",
116 +
          "maxLength": 1000000,
117 +
          "description": "Markdown text content.",
118 +
          "maxGraphemes": 100000
119 +
        }
120 +
      },
121 +
      "description": "Markdown content format."
122 +
    },
55 123
    "translation": {
56 124
      "type": "object",
57 125
      "properties": {
126 +
        "title": {
127 +
          "type": "string",
128 +
          "maxLength": 5000,
129 +
          "maxGraphemes": 500
130 +
        },
58 131
        "content": {
59 132
          "type": "string",
60 -
          "maxLength": 100000,
61 -
          "maxGraphemes": 10000
133 +
          "maxLength": 1000000,
134 +
          "maxGraphemes": 100000
62 135
        }
63 136
      },
64 137
      "description": "A translation of a chat message."
65 138
    },
66 139
    "translationMap": {
67 140
      "type": "object",
68 141
      "properties": {
69 142
        "en": {
70 143
          "ref": "#translation",
71 144
          "type": "ref"
72 145
        },
73 146
        "ja": {
74 147
          "ref": "#translation",
75 148
          "type": "ref"
76 149
        }
77 150
      },
78 151
      "description": "Map of language codes to translations."
79 152
    }
80 153
  },
81 154
  "$type": "com.atproto.lexicon.schema",
82 155
  "lexicon": 1
83 156
}

Compare Other Versions

Lexicon Garden

@