xyz.quasigod.lab.letta.conversation
Schema Diff
+54 -46
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
"$type": "com.atproto.lexicon.schema",
3
3
"defs": {
4
4
"main": {
5
-
"properties": {
6
-
"agentId": {
7
-
"maxLength": 128,
8
-
"type": "string"
5
+
"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.",
6
+
"key": "tid",
7
+
"record": {
8
+
"properties": {
9
+
"agent": {
10
+
"description": "The agent this conversation belongs to.",
11
+
"format": "at-uri",
12
+
"type": "string"
13
+
},
14
+
"createdAt": {
15
+
"format": "datetime",
16
+
"type": "string"
17
+
},
18
+
"hidden": {
19
+
"description": "Hidden conversations are excluded from listings. Expected to be false.",
20
+
"type": "boolean"
21
+
},
22
+
"model": {
23
+
"description": "Optional per-conversation model override.",
24
+
"maxLength": 256,
25
+
"type": "string"
26
+
},
27
+
"modelSettings": {
28
+
"description": "Optional per-conversation model settings override.",
29
+
"ref": "xyz.quasigod.lab.letta.defs#modelSettings",
30
+
"type": "ref"
31
+
},
32
+
"role": {
33
+
"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.",
34
+
"knownValues": [
35
+
"primary",
36
+
"fork"
37
+
],
38
+
"type": "string"
39
+
},
40
+
"title": {
41
+
"description": "Optional display title.",
42
+
"maxLength": 256,
43
+
"type": "string"
44
+
},
45
+
"updatedAt": {
46
+
"format": "datetime",
47
+
"type": "string"
48
+
}
9
49
},
10
-
"createdAt": {
11
-
"format": "datetime",
12
-
"type": "string"
13
-
},
14
-
"forkedFrom": {
15
-
"description": "Source conversation id, set on forks.",
16
-
"maxLength": 128,
17
-
"type": "string"
18
-
},
19
-
"hidden": {
20
-
"type": "boolean"
21
-
},
22
-
"id": {
23
-
"maxLength": 128,
24
-
"type": "string"
25
-
},
26
-
"lastSeq": {
27
-
"description": "Highest message seq written to this conversation.",
28
-
"minimum": 0,
29
-
"type": "integer"
30
-
},
31
-
"model": {
32
-
"type": "string"
33
-
},
34
-
"modelSettings": {
35
-
"type": "unknown"
36
-
},
37
-
"name": {
38
-
"maxLength": 512,
39
-
"type": "string"
40
-
},
41
-
"updatedAt": {
42
-
"format": "datetime",
43
-
"type": "string"
44
-
}
50
+
"required": [
51
+
"agent",
52
+
"role",
53
+
"lastSeq",
54
+
"createdAt",
55
+
"updatedAt"
56
+
],
57
+
"type": "object"
45
58
},
46
-
"required": [
47
-
"id",
48
-
"agentId",
49
-
"createdAt",
50
-
"lastSeq"
51
-
],
52
-
"type": "object"
59
+
"type": "record"
53
60
}
54
61
},
62
+
"description": "A letta conversation: an ordered message thread bound to an agent. The rkey (TID) is the conversation's id in letta.",
55
63
"id": "xyz.quasigod.lab.letta.conversation",
56
64
"lexicon": 1
57
65
}