xyz.quasigod.lab.letta.conversation
Schema Diff
+56 -48
Compatibility Analysis
Breaking Changes Detected
25 breaking changes, 16 non-breaking changes.
Breaking Changes (25)
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "xyz.quasigod.lab.letta.conversation:body", src: "xyz.quasigod.lab.letta.conversation:body", tgt: "xyz.quasigod.lab.letta.conversation:body.createdAt", kind: "prop", name: Some("createdAt") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "xyz.quasigod.lab.letta.conversation:body", src: "xyz.quasigod.lab.letta.conversation:body", tgt: "xyz.quasigod.lab.letta.conversation:body.updatedAt", kind: "prop", name: Some("updatedAt") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "xyz.quasigod.lab.letta.conversation:body", src: "xyz.quasigod.lab.letta.conversation:body", tgt: "xyz.quasigod.lab.letta.conversation:body.agent", kind: "prop", name: Some("agent") }
- RequiredEdgeAdded RequiredEdgeAdded { vertex_id: "xyz.quasigod.lab.letta.conversation:body", src: "xyz.quasigod.lab.letta.conversation:body", tgt: "xyz.quasigod.lab.letta.conversation:body.role", kind: "prop", name: Some("role") }
- RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "xyz.quasigod.lab.letta.conversation", src: "xyz.quasigod.lab.letta.conversation", tgt: "xyz.quasigod.lab.letta.conversation.id", kind: "prop", name: Some("id") }
- RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "xyz.quasigod.lab.letta.conversation", src: "xyz.quasigod.lab.letta.conversation", tgt: "xyz.quasigod.lab.letta.conversation.createdAt", kind: "prop", name: Some("createdAt") }
- RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "xyz.quasigod.lab.letta.conversation", src: "xyz.quasigod.lab.letta.conversation", tgt: "xyz.quasigod.lab.letta.conversation.agentId", kind: "prop", name: Some("agentId") }
- RequiredEdgeRemoved RequiredEdgeRemoved { vertex_id: "xyz.quasigod.lab.letta.conversation", src: "xyz.quasigod.lab.letta.conversation", tgt: "xyz.quasigod.lab.letta.conversation.lastSeq", kind: "prop", name: Some("lastSeq") }
- RemovedVertex RemovedVertex { vertex_id: "xyz.quasigod.lab.letta.conversation.agentId" }
- RemovedVertex RemovedVertex { vertex_id: "xyz.quasigod.lab.letta.conversation.createdAt" }
- RemovedVertex RemovedVertex { vertex_id: "xyz.quasigod.lab.letta.conversation.forkedFrom" }
- RemovedVertex RemovedVertex { vertex_id: "xyz.quasigod.lab.letta.conversation.hidden" }
- RemovedVertex RemovedVertex { vertex_id: "xyz.quasigod.lab.letta.conversation.id" }
- RemovedVertex RemovedVertex { vertex_id: "xyz.quasigod.lab.letta.conversation.lastSeq" }
- RemovedVertex RemovedVertex { vertex_id: "xyz.quasigod.lab.letta.conversation.model" }
- RemovedVertex RemovedVertex { vertex_id: "xyz.quasigod.lab.letta.conversation.modelSettings" }
- RemovedVertex RemovedVertex { vertex_id: "xyz.quasigod.lab.letta.conversation.name" }
- RemovedVertex RemovedVertex { vertex_id: "xyz.quasigod.lab.letta.conversation.updatedAt" }
- RemovedEdge RemovedEdge { src: "xyz.quasigod.lab.letta.conversation", tgt: "xyz.quasigod.lab.letta.conversation.forkedFrom", kind: "prop", name: Some("forkedFrom") }
- RemovedEdge RemovedEdge { src: "xyz.quasigod.lab.letta.conversation", tgt: "xyz.quasigod.lab.letta.conversation.hidden", kind: "prop", name: Some("hidden") }
- RemovedEdge RemovedEdge { src: "xyz.quasigod.lab.letta.conversation", tgt: "xyz.quasigod.lab.letta.conversation.model", kind: "prop", name: Some("model") }
- RemovedEdge RemovedEdge { src: "xyz.quasigod.lab.letta.conversation", tgt: "xyz.quasigod.lab.letta.conversation.modelSettings", kind: "prop", name: Some("modelSettings") }
- RemovedEdge RemovedEdge { src: "xyz.quasigod.lab.letta.conversation", tgt: "xyz.quasigod.lab.letta.conversation.name", kind: "prop", name: Some("name") }
- RemovedEdge RemovedEdge { src: "xyz.quasigod.lab.letta.conversation", tgt: "xyz.quasigod.lab.letta.conversation.updatedAt", kind: "prop", name: Some("updatedAt") }
- KindChanged KindChanged { vertex_id: "xyz.quasigod.lab.letta.conversation", old_kind: "object", new_kind: "record" }
Non-Breaking Changes (16)
- AddedVertex AddedVertex { vertex_id: "xyz.quasigod.lab.letta.conversation:body" }
- AddedVertex AddedVertex { vertex_id: "xyz.quasigod.lab.letta.conversation:body.agent" }
- AddedVertex AddedVertex { vertex_id: "xyz.quasigod.lab.letta.conversation:body.createdAt" }
- AddedVertex AddedVertex { vertex_id: "xyz.quasigod.lab.letta.conversation:body.hidden" }
- AddedVertex AddedVertex { vertex_id: "xyz.quasigod.lab.letta.conversation:body.model" }
- AddedVertex AddedVertex { vertex_id: "xyz.quasigod.lab.letta.conversation:body.modelSettings" }
- AddedVertex AddedVertex { vertex_id: "xyz.quasigod.lab.letta.conversation:body.role" }
- AddedVertex AddedVertex { vertex_id: "xyz.quasigod.lab.letta.conversation:body.title" }
- AddedVertex AddedVertex { vertex_id: "xyz.quasigod.lab.letta.conversation:body.updatedAt" }
- AddedVertex AddedVertex { vertex_id: "xyz.quasigod.lab.letta.defs#modelSettings" }
- AddedEdge AddedEdge { src: "xyz.quasigod.lab.letta.conversation", tgt: "xyz.quasigod.lab.letta.conversation:body", kind: "record-schema", name: None }
- AddedEdge AddedEdge { src: "xyz.quasigod.lab.letta.conversation:body", tgt: "xyz.quasigod.lab.letta.conversation:body.hidden", kind: "prop", name: Some("hidden") }
- AddedEdge AddedEdge { src: "xyz.quasigod.lab.letta.conversation:body", tgt: "xyz.quasigod.lab.letta.conversation:body.model", kind: "prop", name: Some("model") }
- AddedEdge AddedEdge { src: "xyz.quasigod.lab.letta.conversation:body", tgt: "xyz.quasigod.lab.letta.conversation:body.modelSettings", kind: "prop", name: Some("modelSettings") }
- AddedEdge AddedEdge { src: "xyz.quasigod.lab.letta.conversation:body", tgt: "xyz.quasigod.lab.letta.conversation:body.title", kind: "prop", name: Some("title") }
- AddedEdge AddedEdge { src: "xyz.quasigod.lab.letta.conversation:body.modelSettings", tgt: "xyz.quasigod.lab.letta.defs#modelSettings", kind: "ref", name: None }
Migration Guidance
Removed Elements
RemovedVertex { vertex_id: "xyz.quasigod.lab.letta.conversation.agentId" }RemovedVertex { vertex_id: "xyz.quasigod.lab.letta.conversation.createdAt" }RemovedVertex { vertex_id: "xyz.quasigod.lab.letta.conversation.forkedFrom" }RemovedVertex { vertex_id: "xyz.quasigod.lab.letta.conversation.hidden" }RemovedVertex { vertex_id: "xyz.quasigod.lab.letta.conversation.id" }RemovedVertex { vertex_id: "xyz.quasigod.lab.letta.conversation.lastSeq" }RemovedVertex { vertex_id: "xyz.quasigod.lab.letta.conversation.model" }RemovedVertex { vertex_id: "xyz.quasigod.lab.letta.conversation.modelSettings" }RemovedVertex { vertex_id: "xyz.quasigod.lab.letta.conversation.name" }RemovedVertex { vertex_id: "xyz.quasigod.lab.letta.conversation.updatedAt" }
Added Elements
AddedVertex { vertex_id: "xyz.quasigod.lab.letta.conversation:body" }AddedVertex { vertex_id: "xyz.quasigod.lab.letta.conversation:body.agent" }AddedVertex { vertex_id: "xyz.quasigod.lab.letta.conversation:body.createdAt" }AddedVertex { vertex_id: "xyz.quasigod.lab.letta.conversation:body.hidden" }AddedVertex { vertex_id: "xyz.quasigod.lab.letta.conversation:body.model" }AddedVertex { vertex_id: "xyz.quasigod.lab.letta.conversation:body.modelSettings" }AddedVertex { vertex_id: "xyz.quasigod.lab.letta.conversation:body.role" }AddedVertex { vertex_id: "xyz.quasigod.lab.letta.conversation:body.title" }AddedVertex { vertex_id: "xyz.quasigod.lab.letta.conversation:body.updatedAt" }AddedVertex { vertex_id: "xyz.quasigod.lab.letta.defs#modelSettings" }
Additional Notes
- Breaking: RequiredEdgeAdded { vertex_id: "xyz.quasigod.lab.letta.conversation:body", src: "xyz.quasigod.lab.letta.conversation:body", tgt: "xyz.quasigod.lab.letta.conversation:body.createdAt", kind: "prop", name: Some("createdAt") }
- Breaking: RequiredEdgeAdded { vertex_id: "xyz.quasigod.lab.letta.conversation:body", src: "xyz.quasigod.lab.letta.conversation:body", tgt: "xyz.quasigod.lab.letta.conversation:body.updatedAt", kind: "prop", name: Some("updatedAt") }
- Breaking: RequiredEdgeAdded { vertex_id: "xyz.quasigod.lab.letta.conversation:body", src: "xyz.quasigod.lab.letta.conversation:body", tgt: "xyz.quasigod.lab.letta.conversation:body.agent", kind: "prop", name: Some("agent") }
- Breaking: RequiredEdgeAdded { vertex_id: "xyz.quasigod.lab.letta.conversation:body", src: "xyz.quasigod.lab.letta.conversation:body", tgt: "xyz.quasigod.lab.letta.conversation:body.role", kind: "prop", name: Some("role") }
- Breaking: RequiredEdgeRemoved { vertex_id: "xyz.quasigod.lab.letta.conversation", src: "xyz.quasigod.lab.letta.conversation", tgt: "xyz.quasigod.lab.letta.conversation.id", kind: "prop", name: Some("id") }
- Breaking: RequiredEdgeRemoved { vertex_id: "xyz.quasigod.lab.letta.conversation", src: "xyz.quasigod.lab.letta.conversation", tgt: "xyz.quasigod.lab.letta.conversation.createdAt", kind: "prop", name: Some("createdAt") }
- Breaking: RequiredEdgeRemoved { vertex_id: "xyz.quasigod.lab.letta.conversation", src: "xyz.quasigod.lab.letta.conversation", tgt: "xyz.quasigod.lab.letta.conversation.agentId", kind: "prop", name: Some("agentId") }
- Breaking: RequiredEdgeRemoved { vertex_id: "xyz.quasigod.lab.letta.conversation", src: "xyz.quasigod.lab.letta.conversation", tgt: "xyz.quasigod.lab.letta.conversation.lastSeq", kind: "prop", name: Some("lastSeq") }
- Breaking: RemovedEdge { src: "xyz.quasigod.lab.letta.conversation", tgt: "xyz.quasigod.lab.letta.conversation.forkedFrom", kind: "prop", name: Some("forkedFrom") }
- Breaking: RemovedEdge { src: "xyz.quasigod.lab.letta.conversation", tgt: "xyz.quasigod.lab.letta.conversation.hidden", kind: "prop", name: Some("hidden") }
- Breaking: RemovedEdge { src: "xyz.quasigod.lab.letta.conversation", tgt: "xyz.quasigod.lab.letta.conversation.model", kind: "prop", name: Some("model") }
- Breaking: RemovedEdge { src: "xyz.quasigod.lab.letta.conversation", tgt: "xyz.quasigod.lab.letta.conversation.modelSettings", kind: "prop", name: Some("modelSettings") }
- Breaking: RemovedEdge { src: "xyz.quasigod.lab.letta.conversation", tgt: "xyz.quasigod.lab.letta.conversation.name", kind: "prop", name: Some("name") }
- Breaking: RemovedEdge { src: "xyz.quasigod.lab.letta.conversation", tgt: "xyz.quasigod.lab.letta.conversation.updatedAt", kind: "prop", name: Some("updatedAt") }
- Breaking: KindChanged { vertex_id: "xyz.quasigod.lab.letta.conversation", old_kind: "object", new_kind: "record" }
- Non-breaking: AddedEdge { src: "xyz.quasigod.lab.letta.conversation", tgt: "xyz.quasigod.lab.letta.conversation:body", kind: "record-schema", name: None }
- Non-breaking: AddedEdge { src: "xyz.quasigod.lab.letta.conversation:body", tgt: "xyz.quasigod.lab.letta.conversation:body.hidden", kind: "prop", name: Some("hidden") }
- Non-breaking: AddedEdge { src: "xyz.quasigod.lab.letta.conversation:body", tgt: "xyz.quasigod.lab.letta.conversation:body.model", kind: "prop", name: Some("model") }
- Non-breaking: AddedEdge { src: "xyz.quasigod.lab.letta.conversation:body", tgt: "xyz.quasigod.lab.letta.conversation:body.modelSettings", kind: "prop", name: Some("modelSettings") }
- Non-breaking: AddedEdge { src: "xyz.quasigod.lab.letta.conversation:body", tgt: "xyz.quasigod.lab.letta.conversation:body.title", kind: "prop", name: Some("title") }
- Non-breaking: AddedEdge { src: "xyz.quasigod.lab.letta.conversation:body.modelSettings", tgt: "xyz.quasigod.lab.letta.defs#modelSettings", kind: "ref", name: None }
1
1
{
2
2
"id": "xyz.quasigod.lab.letta.conversation",
3
3
"defs": {
4
4
"main": {
5
-
"type": "object",
6
-
"required": [
7
-
"id",
8
-
"agentId",
9
-
"createdAt",
10
-
"lastSeq"
11
-
],
12
-
"properties": {
13
-
"id": {
14
-
"type": "string",
15
-
"maxLength": 128
16
-
},
17
-
"name": {
18
-
"type": "string",
19
-
"maxLength": 512
20
-
},
21
-
"model": {
22
-
"type": "string"
23
-
},
24
-
"hidden": {
25
-
"type": "boolean"
26
-
},
27
-
"agentId": {
28
-
"type": "string",
29
-
"maxLength": 128
30
-
},
31
-
"lastSeq": {
32
-
"type": "integer",
33
-
"minimum": 0,
34
-
"description": "Highest message seq written to this conversation."
35
-
},
36
-
"createdAt": {
37
-
"type": "string",
38
-
"format": "datetime"
39
-
},
40
-
"updatedAt": {
41
-
"type": "string",
42
-
"format": "datetime"
43
-
},
44
-
"forkedFrom": {
45
-
"type": "string",
46
-
"maxLength": 128,
47
-
"description": "Source conversation id, set on forks."
48
-
},
49
-
"modelSettings": {
50
-
"type": "unknown"
5
+
"key": "tid",
6
+
"type": "record",
7
+
"record": {
8
+
"type": "object",
9
+
"required": [
10
+
"agent",
11
+
"role",
12
+
"lastSeq",
13
+
"createdAt",
14
+
"updatedAt"
15
+
],
16
+
"properties": {
17
+
"role": {
18
+
"type": "string",
19
+
"description": "primary: the agent's main thread (exactly one per agent, referenced by the agent's primaryConversation). fork: a branched copy of a message prefix.",
20
+
"knownValues": [
21
+
"primary",
22
+
"fork"
23
+
]
24
+
},
25
+
"agent": {
26
+
"type": "string",
27
+
"format": "at-uri",
28
+
"description": "The agent this conversation belongs to."
29
+
},
30
+
"model": {
31
+
"type": "string",
32
+
"maxLength": 256,
33
+
"description": "Optional per-conversation model override."
34
+
},
35
+
"title": {
36
+
"type": "string",
37
+
"maxLength": 256,
38
+
"description": "Optional display title."
39
+
},
40
+
"hidden": {
41
+
"type": "boolean",
42
+
"description": "Hidden conversations are excluded from listings. Expected to be false."
43
+
},
44
+
"createdAt": {
45
+
"type": "string",
46
+
"format": "datetime"
47
+
},
48
+
"updatedAt": {
49
+
"type": "string",
50
+
"format": "datetime"
51
+
},
52
+
"modelSettings": {
53
+
"ref": "xyz.quasigod.lab.letta.defs#modelSettings",
54
+
"type": "ref",
55
+
"description": "Optional per-conversation model settings override."
56
+
}
51
57
}
52
-
}
58
+
},
59
+
"description": "A letta conversation persisted in a permissioned space. The record is write-once config: the message thread is the messages referencing this conversation, and the in-context window is derived from their status+seq (see xyz.quasigod.lab.letta.message), so appending a message never rewrites this record."
53
60
}
54
61
},
55
62
"$type": "com.atproto.lexicon.schema",
56
-
"lexicon": 1
63
+
"lexicon": 1,
64
+
"description": "A letta conversation: an ordered message thread bound to an agent. The rkey (TID) is the conversation's id in letta."
57
65
}