online.timtinkers.bot.command

bot.timtinkers.online

Schema Diff

+1 -25

From

CID
bafyreifldz5spcj...
Indexed At
2026-04-08 07:27 UTC
View this version

To

CID
bafyreifeewksgh3...
Indexed At
2026-04-16 21:00 UTC
View this version

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
}

Compare Other Versions

Lexicon Garden

@