online.timtinkers.bot.command
Schema Diff
+1 -25
Compatibility Analysis
Breaking Changes Detected
13 breaking changes, 0 non-breaking changes.
Breaking Changes (13)
- RemovedVertex RemovedVertex { vertex_id: "online.timtinkers.bot.command:body.responseFacets" }
- RemovedVertex RemovedVertex { vertex_id: "online.timtinkers.bot.command:body.responseFacets:items" }
- RemovedVertex RemovedVertex { vertex_id: "online.timtinkers.bot.command:body.responseTemplateFacets" }
- RemovedVertex RemovedVertex { vertex_id: "online.timtinkers.bot.command:body.responseTemplateFacets:items" }
- RemovedVertex RemovedVertex { vertex_id: "online.timtinkers.bot.command:body.rngTemplateFacets" }
- RemovedVertex RemovedVertex { vertex_id: "online.timtinkers.bot.command:body.rngTemplateFacets:items" }
- RemovedEdge RemovedEdge { src: "online.timtinkers.bot.command:body", tgt: "online.timtinkers.bot.command:body.responseFacets", kind: "prop", name: Some("responseFacets") }
- RemovedEdge RemovedEdge { src: "online.timtinkers.bot.command:body", tgt: "online.timtinkers.bot.command:body.responseTemplateFacets", kind: "prop", name: Some("responseTemplateFacets") }
- RemovedEdge RemovedEdge { src: "online.timtinkers.bot.command:body", tgt: "online.timtinkers.bot.command:body.rngTemplateFacets", kind: "prop", name: Some("rngTemplateFacets") }
- RemovedEdge RemovedEdge { src: "online.timtinkers.bot.command:body.responseFacets", tgt: "online.timtinkers.bot.command:body.responseFacets:items", kind: "items", name: None }
- RemovedEdge RemovedEdge { src: "online.timtinkers.bot.command:body.responseTemplateFacets", tgt: "online.timtinkers.bot.command:body.responseTemplateFacets:items", kind: "items", name: None }
- RemovedEdge RemovedEdge { src: "online.timtinkers.bot.command:body.rngTemplateFacets", tgt: "online.timtinkers.bot.command:body.rngTemplateFacets:items", kind: "items", name: None }
- ConstraintTightened ConstraintTightened { vertex_id: "online.timtinkers.bot.command#parameter.required", sort: "default", old_value: "true", new_value: "false" }
Migration Guidance
Removed Elements
RemovedVertex { vertex_id: "online.timtinkers.bot.command:body.responseFacets" }RemovedVertex { vertex_id: "online.timtinkers.bot.command:body.responseFacets:items" }RemovedVertex { vertex_id: "online.timtinkers.bot.command:body.responseTemplateFacets" }RemovedVertex { vertex_id: "online.timtinkers.bot.command:body.responseTemplateFacets:items" }RemovedVertex { vertex_id: "online.timtinkers.bot.command:body.rngTemplateFacets" }RemovedVertex { vertex_id: "online.timtinkers.bot.command:body.rngTemplateFacets:items" }
Constraint Changes
- ConstraintTightened ConstraintTightened { vertex_id: "online.timtinkers.bot.command#parameter.required", sort: "default", old_value: "true", new_value: "false" }
Additional Notes
- Breaking: RemovedEdge { src: "online.timtinkers.bot.command:body", tgt: "online.timtinkers.bot.command:body.responseFacets", kind: "prop", name: Some("responseFacets") }
- Breaking: RemovedEdge { src: "online.timtinkers.bot.command:body", tgt: "online.timtinkers.bot.command:body.responseTemplateFacets", kind: "prop", name: Some("responseTemplateFacets") }
- Breaking: RemovedEdge { src: "online.timtinkers.bot.command:body", tgt: "online.timtinkers.bot.command:body.rngTemplateFacets", kind: "prop", name: Some("rngTemplateFacets") }
- Breaking: RemovedEdge { src: "online.timtinkers.bot.command:body.responseFacets", tgt: "online.timtinkers.bot.command:body.responseFacets:items", kind: "items", name: None }
- Breaking: RemovedEdge { src: "online.timtinkers.bot.command:body.responseTemplateFacets", tgt: "online.timtinkers.bot.command:body.responseTemplateFacets:items", kind: "items", name: None }
- Breaking: RemovedEdge { src: "online.timtinkers.bot.command:body.rngTemplateFacets", tgt: "online.timtinkers.bot.command:body.rngTemplateFacets:items", kind: "items", name: None }
1
1
{
2
2
"id": "online.timtinkers.bot.command",
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
10
"trigger",
11
11
"commandType",
12
12
"createdAt"
13
13
],
14
14
"properties": {
15
15
"rngMax": {
16
16
"type": "integer",
17
17
"description": "Maximum value for RNG (inclusive, required for rngCommand type)"
18
18
},
19
19
"rngMin": {
20
20
"type": "integer",
21
21
"description": "Minimum value for RNG (inclusive, required for rngCommand type)"
22
22
},
23
23
"trigger": {
24
24
"type": "string",
25
25
"maxLength": 50,
26
26
"minLength": 1,
27
27
"description": "The command trigger without prefix (e.g., 'socials', 'hug', 'd6')"
28
28
},
29
29
"response": {
30
30
"type": "string",
31
31
"maxLength": 3000,
32
32
"description": "Static response text (required for simpleCommand type)",
33
33
"maxGraphemes": 300
34
34
},
35
35
"createdAt": {
36
36
"type": "string",
37
37
"format": "datetime"
38
38
},
39
39
"parameters": {
40
40
"type": "array",
41
41
"items": {
42
42
"ref": "#parameter",
43
43
"type": "ref"
44
44
},
45
45
"maxLength": 10,
46
46
"minLength": 1,
47
47
"description": "Parameter definitions (required for parameterizedCommand type)"
48
48
},
49
49
"commandType": {
50
50
"ref": "#commandType",
51
51
"type": "ref",
52
52
"description": "The type of command (simple, parameterized, or rng)"
53
53
},
54
54
"description": {
55
55
"type": "string",
56
56
"maxLength": 300,
57
57
"description": "Optional help text describing what the command does"
58
58
},
59
59
"rngTemplate": {
60
60
"type": "string",
61
61
"maxLength": 3000,
62
62
"description": "Template with {result} placeholder for RNG result and optional {paramName} for input (required for rngCommand type)",
63
63
"maxGraphemes": 300
64
64
},
65
65
"rngParameter": {
66
66
"ref": "#parameter",
67
67
"type": "ref",
68
68
"description": "Optional parameter definition for rngCommand type (e.g., target user for 'stinky' command)"
69
69
},
70
-
"responseFacets": {
71
-
"type": "array",
72
-
"items": {
73
-
"ref": "place.stream.richtext.facet",
74
-
"type": "ref"
75
-
},
76
-
"description": "Annotations of response text (mentions, URLs, etc)"
77
-
},
78
70
"responseTemplate": {
79
71
"type": "string",
80
72
"maxLength": 3000,
81
73
"description": "Template with {paramName} placeholders (required for parameterizedCommand type)",
82
74
"maxGraphemes": 300
83
-
},
84
-
"rngTemplateFacets": {
85
-
"type": "array",
86
-
"items": {
87
-
"ref": "place.stream.richtext.facet",
88
-
"type": "ref"
89
-
},
90
-
"description": "Annotations for RNG template text"
91
-
},
92
-
"responseTemplateFacets": {
93
-
"type": "array",
94
-
"items": {
95
-
"ref": "place.stream.richtext.facet",
96
-
"type": "ref"
97
-
},
98
-
"description": "Annotations for template text (mentions, URLs, etc). Indices should reference the template string before substitution."
99
75
}
100
76
}
101
77
},
102
78
"description": "Record representing a chat bot command. Commands can be simple (static response), parameterized (template-based with arguments), or RNG-based (random number generation)."
103
79
},
104
80
"parameter": {
105
81
"type": "object",
106
82
"required": [
107
83
"name",
108
84
"type"
109
85
],
110
86
"properties": {
111
87
"name": {
112
88
"type": "string",
113
89
"maxLength": 30,
114
90
"minLength": 1,
115
91
"description": "Parameter name used in template (e.g., 'target' for {target})"
116
92
},
117
93
"type": {
118
94
"enum": [
119
95
"string",
120
96
"handle",
121
97
"number"
122
98
],
123
99
"type": "string",
124
100
"description": "Expected parameter type for validation"
125
101
},
126
102
"required": {
127
103
"type": "boolean",
128
-
"default": true,
104
+
"default": false,
129
105
"description": "Whether this parameter must be provided"
130
106
},
131
107
"description": {
132
108
"type": "string",
133
109
"maxLength": 200,
134
110
"description": "Help text for this parameter"
135
111
}
136
112
},
137
113
"description": "Definition of a command parameter"
138
114
},
139
115
"rngCommand": {
140
116
"type": "token",
141
117
"description": "A command that generates a random number within a specified range and formats it using a template"
142
118
},
143
119
"commandType": {
144
120
"type": "string",
145
121
"knownValues": [
146
122
"online.timtinkers.bot.command#simpleCommand",
147
123
"online.timtinkers.bot.command#parameterizedCommand",
148
124
"online.timtinkers.bot.command#rngCommand"
149
125
]
150
126
},
151
127
"simpleCommand": {
152
128
"type": "token",
153
129
"description": "A command that returns a static response with no parameters"
154
130
},
155
131
"parameterizedCommand": {
156
132
"type": "token",
157
133
"description": "A command that accepts one or more parameters and uses a response template"
158
134
}
159
135
},
160
136
"$type": "com.atproto.lexicon.schema",
161
137
"lexicon": 1
162
138
}