ai.syui.log.chat
Schema Diff
+91 -18
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
}