@zackbart/connecta 0.34.0 → 0.34.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +30 -0
- package/README.md +3 -2
- package/bin/version.mjs +1 -1
- package/dist/catalog-drift.d.ts +30 -26
- package/dist/catalog-drift.js +169 -84
- package/dist/catalog-service.js +1 -1
- package/dist/connectors/api-connector.d.ts +3 -0
- package/dist/connectors/api-connector.js +5 -1
- package/dist/connectors/option-shapes.js +1 -1
- package/dist/connectors/remote-mcp.d.ts +2 -0
- package/dist/connectors/remote-mcp.js +5 -1
- package/dist/describe-config.d.ts +2 -0
- package/dist/describe-config.js +1 -0
- package/dist/invocation.js +3 -2
- package/dist/meta-tools.js +3 -2
- package/dist/operator-ui/config-summary.js +3 -0
- package/dist/operator-ui/connection-map.js +2 -1
- package/dist/operator-ui/endpoints.js +1 -1
- package/dist/operator-ui/generated.js +3 -3
- package/dist/operator-ui/health.js +52 -0
- package/dist/operator-ui/overview.js +6 -17
- package/dist/operator-ui/view.d.ts +3 -4
- package/dist/operator-ui/view.js +29 -11
- package/dist/provider.d.ts +6 -1
- package/dist/provider.js +18 -1
- package/dist/providers/_shared/google/workspace.d.ts +3 -0
- package/dist/providers/_shared/google/workspace.js +1 -1
- package/dist/providers/basecamp/index.d.ts +2 -0
- package/dist/providers/breeze/index.d.ts +2 -0
- package/dist/providers/ccb/index.d.ts +2 -0
- package/dist/providers/ccb/index.js +1 -1
- package/dist/providers/cloudflare/index.d.ts +2 -0
- package/dist/providers/cloudflare/index.js +5 -1
- package/dist/providers/cloudflare/openapi.generated.js +3296 -3206
- package/dist/providers/cloudflare/rest.js +19 -0
- package/dist/providers/cloudflare/skill.generated.js +2 -2
- package/dist/providers/cloudflare/value-safety.js +51 -18
- package/dist/providers/intercom/index.d.ts +24 -0
- package/dist/providers/intercom/index.js +121 -0
- package/dist/providers/intercom/skill.generated.js +8 -0
- package/dist/providers/linear/index.js +204 -19
- package/dist/providers/linear/skill.generated.js +2 -2
- package/dist/providers/mixpanel/index.d.ts +2 -0
- package/dist/providers/mixpanel/index.js +21 -17
- package/dist/providers/mixpanel/skill.generated.js +1 -1
- package/dist/providers/notion/index.d.ts +2 -0
- package/dist/providers/notion/index.js +1 -1
- package/dist/providers/overflow/index.d.ts +2 -0
- package/dist/providers/planning-center/index.d.ts +2 -0
- package/dist/providers/revenuecat/index.d.ts +5 -3
- package/dist/providers/revenuecat/index.js +147 -7
- package/dist/providers/revenuecat/skill.generated.js +3 -3
- package/dist/providers/stripe/index.d.ts +2 -0
- package/dist/providers/stripe/index.js +50 -30
- package/dist/providers/stripe/skill.generated.js +2 -1
- package/dist/providers/tithely/index.d.ts +2 -0
- package/dist/providers/vercel/index.d.ts +2 -0
- package/dist/providers/vercel/index.js +1 -1
- package/dist/providers/vercel/openapi.generated.js +391 -374
- package/dist/providers/vercel/skill.generated.js +1 -1
- package/dist/providers/vercel/value-safety.js +14 -4
- package/dist/registry.d.ts +10 -14
- package/dist/registry.js +62 -62
- package/dist/routes/ui-data.js +8 -2
- package/dist/skills.js +8 -2
- package/dist/types.d.ts +18 -4
- package/dist/version.d.ts +1 -1
- package/dist/version.js +1 -1
- package/documentation/architecture.md +48 -5
- package/documentation/code-mode.md +7 -5
- package/documentation/integrating.md +55 -1
- package/documentation/meta-tools.md +2 -2
- package/documentation/operating.md +1 -1
- package/documentation/operator-tests.md +8 -2
- package/documentation/operator-ui.md +58 -11
- package/documentation/provider-auth-migration.md +22 -0
- package/package.json +5 -1
- package/templates/node/package.json +1 -1
|
@@ -26,246 +26,431 @@ const UPSERT = "An upsert: supplying a record id overwrites that record in place
|
|
|
26
26
|
* caller gets and the verdict a check reads can never disagree. It is a
|
|
27
27
|
* superset: Linear's hosted `tools/list` varies by plan and enabled features,
|
|
28
28
|
* so a name this workspace never returns costs nothing, while an unlisted new
|
|
29
|
-
* one fails closed. The genuine creates —
|
|
30
|
-
* tools — are plain writes rather than
|
|
29
|
+
* one without an explicit read annotation fails closed. The genuine creates —
|
|
30
|
+
* the `create_*_label` and attachment tools — are plain writes rather than
|
|
31
|
+
* destructive.
|
|
31
32
|
*/
|
|
32
33
|
const LINEAR_CLASSIFICATION = {
|
|
33
34
|
tools: {
|
|
34
35
|
// Issues
|
|
35
36
|
list_issues: {
|
|
37
|
+
schemaDigest: "sha256:294b644db541de9f1f4cec011164fe7cec29153aa12d5d94d0748fe35fe973d4",
|
|
36
38
|
"verdict": "read",
|
|
37
39
|
"reason": "Reads existing Linear list issues data without changing workspace state.",
|
|
38
40
|
},
|
|
39
41
|
get_issue: {
|
|
42
|
+
schemaDigest: "sha256:33b204248ae63119751ed4cbade909b05cfbd9aa241cd39e4cec5690d062688e",
|
|
40
43
|
"verdict": "read",
|
|
41
44
|
"reason": "Reads existing Linear get issue data without changing workspace state.",
|
|
42
45
|
},
|
|
43
46
|
list_issue_statuses: {
|
|
47
|
+
schemaDigest: "sha256:8a740e800811796eab16dee1c22db5d8e3c971bebf3ccec7d7d2ee36157f4316",
|
|
44
48
|
"verdict": "read",
|
|
45
49
|
"reason": "Reads existing Linear list issue statuses data without changing workspace state.",
|
|
46
50
|
},
|
|
47
51
|
get_issue_status: {
|
|
52
|
+
schemaDigest: "sha256:ea4e287dc5fc9b930b790430ca02f221a75444d789a252d87aff838767ce4f05",
|
|
48
53
|
"verdict": "read",
|
|
49
54
|
"reason": "Reads existing Linear get issue status data without changing workspace state.",
|
|
50
55
|
},
|
|
51
56
|
list_issue_labels: {
|
|
57
|
+
schemaDigest: "sha256:5eb361d26464fcaef257499c150bf9cb9349308d03ef31c119e826752cbc998e",
|
|
52
58
|
"verdict": "read",
|
|
53
59
|
"reason": "Reads existing Linear list issue labels data without changing workspace state.",
|
|
54
60
|
},
|
|
55
|
-
save_issue: {
|
|
61
|
+
save_issue: {
|
|
62
|
+
schemaDigest: "sha256:23a22fd38cd3234f3a112c460daf04779034e54e45ed00ca27232574f3d60547",
|
|
63
|
+
verdict: "destructive",
|
|
64
|
+
reason: UPSERT,
|
|
65
|
+
},
|
|
66
|
+
save_issue_label: {
|
|
67
|
+
schemaDigest: "sha256:a39c5e1194b33f1a07139c6c2219a991a818f7027b26aef059959bc67248d528",
|
|
68
|
+
verdict: "destructive",
|
|
69
|
+
reason: UPSERT,
|
|
70
|
+
},
|
|
71
|
+
retire_issue_label: {
|
|
72
|
+
schemaDigest: "sha256:d9f254b2c134123d14a9b91ed0df063d45aa99d85f2ccdaf90ac57aa3c50a3de",
|
|
73
|
+
verdict: "destructive",
|
|
74
|
+
reason: "Retires an existing issue label or group, including child labels, so it cannot be applied to new records.",
|
|
75
|
+
},
|
|
76
|
+
restore_issue_label: {
|
|
77
|
+
schemaDigest: "sha256:d9f254b2c134123d14a9b91ed0df063d45aa99d85f2ccdaf90ac57aa3c50a3de",
|
|
78
|
+
verdict: "destructive",
|
|
79
|
+
reason: "Restores an existing issue label or group and every child label, including children retired separately.",
|
|
80
|
+
},
|
|
56
81
|
create_issue_label: {
|
|
82
|
+
schemaDigest: "sha256:92a9bbefc33410795f6c23ae609b1cb61d6168b36b5b60f4563090e468c7f53c",
|
|
57
83
|
"verdict": "write",
|
|
58
84
|
"reason": "Creates Linear state through create_issue_label; the reviewed operation only appends.",
|
|
59
85
|
},
|
|
60
86
|
// Projects
|
|
61
87
|
list_projects: {
|
|
88
|
+
schemaDigest: "sha256:3cadc9d39d1372e89bf671ae44b88aee4d7bc0d23af24979e2401facedd0253f",
|
|
62
89
|
"verdict": "read",
|
|
63
90
|
"reason": "Reads existing Linear list projects data without changing workspace state.",
|
|
64
91
|
},
|
|
65
92
|
get_project: {
|
|
93
|
+
schemaDigest: "sha256:e752476aabfdf9d25b03a57f682f6fcb187b10d823a3c6371abe49f7dda8a6e0",
|
|
66
94
|
"verdict": "read",
|
|
67
95
|
"reason": "Reads existing Linear get project data without changing workspace state.",
|
|
68
96
|
},
|
|
69
97
|
list_project_labels: {
|
|
98
|
+
schemaDigest: "sha256:5eb361d26464fcaef257499c150bf9cb9349308d03ef31c119e826752cbc998e",
|
|
70
99
|
"verdict": "read",
|
|
71
100
|
"reason": "Reads existing Linear list project labels data without changing workspace state.",
|
|
72
101
|
},
|
|
73
|
-
save_project: {
|
|
102
|
+
save_project: {
|
|
103
|
+
schemaDigest: "sha256:2531c09aba662f0793dad42fa43d32708fe68047479cf2c00b32f368e1014413",
|
|
104
|
+
verdict: "destructive",
|
|
105
|
+
reason: UPSERT,
|
|
106
|
+
},
|
|
107
|
+
save_project_label: {
|
|
108
|
+
schemaDigest: "sha256:703b141f537e40c693fd6cf5e6fc8ba97359830f943e022f4b32414562e72719",
|
|
109
|
+
verdict: "destructive",
|
|
110
|
+
reason: UPSERT,
|
|
111
|
+
},
|
|
112
|
+
retire_project_label: {
|
|
113
|
+
schemaDigest: "sha256:d9f254b2c134123d14a9b91ed0df063d45aa99d85f2ccdaf90ac57aa3c50a3de",
|
|
114
|
+
verdict: "destructive",
|
|
115
|
+
reason: "Retires an existing project label or group, including child labels, so it cannot be applied to new records.",
|
|
116
|
+
},
|
|
117
|
+
restore_project_label: {
|
|
118
|
+
schemaDigest: "sha256:d9f254b2c134123d14a9b91ed0df063d45aa99d85f2ccdaf90ac57aa3c50a3de",
|
|
119
|
+
verdict: "destructive",
|
|
120
|
+
reason: "Restores an existing project label or group and every child label, including children retired separately.",
|
|
121
|
+
},
|
|
74
122
|
// Milestones
|
|
75
123
|
list_milestones: {
|
|
124
|
+
schemaDigest: "sha256:97e2d99f903538f1a99d7aef71bb8215dc99279e4395310c14a1c5c67852444a",
|
|
76
125
|
"verdict": "read",
|
|
77
126
|
"reason": "Reads existing Linear list milestones data without changing workspace state.",
|
|
78
127
|
},
|
|
79
128
|
get_milestone: {
|
|
129
|
+
schemaDigest: "sha256:5631cd5fdcd020ad3b57ee65dc92ec32a8be0df06136a7bcb1a83e5fb333df71",
|
|
80
130
|
"verdict": "read",
|
|
81
131
|
"reason": "Reads existing Linear get milestone data without changing workspace state.",
|
|
82
132
|
},
|
|
83
|
-
save_milestone: {
|
|
133
|
+
save_milestone: {
|
|
134
|
+
schemaDigest: "sha256:d55f3018b2e8693c950e71751a6769f056f85cc51f351c1df26674f45eda4974",
|
|
135
|
+
verdict: "destructive",
|
|
136
|
+
reason: UPSERT,
|
|
137
|
+
},
|
|
84
138
|
// Initiatives
|
|
85
139
|
list_initiatives: {
|
|
140
|
+
schemaDigest: "sha256:7d4bf3b546207ae0e41e215dc1f115ae05c61125b3299335a290e42498a63704",
|
|
86
141
|
"verdict": "read",
|
|
87
142
|
"reason": "Reads existing Linear list initiatives data without changing workspace state.",
|
|
88
143
|
},
|
|
89
144
|
get_initiative: {
|
|
145
|
+
schemaDigest: "sha256:dda5376b85019b51df65b94ed0baed0bf2715d59567ff6169bbcf67c6794ba81",
|
|
90
146
|
"verdict": "read",
|
|
91
147
|
"reason": "Reads existing Linear get initiative data without changing workspace state.",
|
|
92
148
|
},
|
|
93
149
|
list_initiative_labels: {
|
|
150
|
+
schemaDigest: "sha256:8c844c2f031db6e3c2665dac47e3ea8b006330b4bcc6df4b6479055e57ee057d",
|
|
94
151
|
"verdict": "read",
|
|
95
152
|
"reason": "Reads existing Linear list initiative labels data without changing workspace state.",
|
|
96
153
|
},
|
|
97
|
-
save_initiative: {
|
|
154
|
+
save_initiative: {
|
|
155
|
+
schemaDigest: "sha256:65a4b02ead7630b12db3d9811192fb2595b8a34c79e1146a19318d640bf8b104",
|
|
156
|
+
verdict: "destructive",
|
|
157
|
+
reason: UPSERT,
|
|
158
|
+
},
|
|
159
|
+
save_initiative_label: {
|
|
160
|
+
schemaDigest: "sha256:23a42a87a9420428381a719b5a64d4514c5edd97bddb885517ade6306d36bbe0",
|
|
161
|
+
verdict: "destructive",
|
|
162
|
+
reason: UPSERT,
|
|
163
|
+
},
|
|
164
|
+
retire_initiative_label: {
|
|
165
|
+
schemaDigest: "sha256:d9f254b2c134123d14a9b91ed0df063d45aa99d85f2ccdaf90ac57aa3c50a3de",
|
|
166
|
+
verdict: "destructive",
|
|
167
|
+
reason: "Retires an existing initiative label or group, including child labels, so it cannot be applied to new records.",
|
|
168
|
+
},
|
|
169
|
+
restore_initiative_label: {
|
|
170
|
+
schemaDigest: "sha256:d9f254b2c134123d14a9b91ed0df063d45aa99d85f2ccdaf90ac57aa3c50a3de",
|
|
171
|
+
verdict: "destructive",
|
|
172
|
+
reason: "Restores an existing initiative label or group and every child label, including children retired separately.",
|
|
173
|
+
},
|
|
98
174
|
create_initiative_label: {
|
|
175
|
+
schemaDigest: "sha256:442e098c4e81e46071f13f9359dd296acd1cb03eee0c71d68fc7a329cc503277",
|
|
99
176
|
"verdict": "write",
|
|
100
177
|
"reason": "Creates Linear state through create_initiative_label; the reviewed operation only appends.",
|
|
101
178
|
},
|
|
179
|
+
// Saved views
|
|
180
|
+
list_custom_views: {
|
|
181
|
+
schemaDigest: "sha256:ec3cbc000f325d82c0b4949acf6995cf4c11d4b4084c84037ee5aa5801eea92d",
|
|
182
|
+
verdict: "read",
|
|
183
|
+
reason: "Lists accessible saved view metadata without changing views or their matching records.",
|
|
184
|
+
},
|
|
102
185
|
// Cycles
|
|
103
186
|
list_cycles: {
|
|
187
|
+
schemaDigest: "sha256:39d0ade50e1bbe3e68f366b12b9ce001d4ab39dda416e061cc670c402963237f",
|
|
104
188
|
"verdict": "read",
|
|
105
189
|
"reason": "Reads existing Linear list cycles data without changing workspace state.",
|
|
106
190
|
},
|
|
107
191
|
// Comments
|
|
108
192
|
list_comments: {
|
|
193
|
+
schemaDigest: "sha256:cd004335be5c0e9dfcd7997be16527cbaaf1eafddfa1ff0c367d904fb4c7372b",
|
|
109
194
|
"verdict": "read",
|
|
110
195
|
"reason": "Reads existing Linear list comments data without changing workspace state.",
|
|
111
196
|
},
|
|
112
|
-
save_comment: {
|
|
197
|
+
save_comment: {
|
|
198
|
+
schemaDigest: "sha256:795f5d486218ccfe5d2d3480d8624feecb0af92cbff80804c3030a994aa343aa",
|
|
199
|
+
verdict: "destructive",
|
|
200
|
+
reason: UPSERT,
|
|
201
|
+
},
|
|
113
202
|
delete_comment: {
|
|
203
|
+
schemaDigest: "sha256:2c78afdc6b2a0e16421b88ad51e84fcc86f64ae7b551eae01a2f3c8437ebbb2b",
|
|
114
204
|
"verdict": "destructive",
|
|
115
205
|
"reason": "Changes or removes existing Linear state through delete_comment.",
|
|
116
206
|
},
|
|
117
207
|
// Documents
|
|
118
208
|
list_documents: {
|
|
209
|
+
schemaDigest: "sha256:0c34f1ad0045ed166a200790b80cc274357f8dd916bade75267ce17ad3a0cd70",
|
|
119
210
|
"verdict": "read",
|
|
120
211
|
"reason": "Reads existing Linear list documents data without changing workspace state.",
|
|
121
212
|
},
|
|
122
213
|
get_document: {
|
|
214
|
+
schemaDigest: "sha256:3cb4635f04b8a5b10b6973a579123b0ff38b9942a4e5c019140c94c67bd23c29",
|
|
123
215
|
"verdict": "read",
|
|
124
216
|
"reason": "Reads existing Linear get document data without changing workspace state.",
|
|
125
217
|
},
|
|
126
|
-
save_document: {
|
|
218
|
+
save_document: {
|
|
219
|
+
schemaDigest: "sha256:a1022c0e1a427aca42a5032acc1fe798eb41a6b503a9b8f2b0b1842bcc42b77a",
|
|
220
|
+
verdict: "destructive",
|
|
221
|
+
reason: UPSERT,
|
|
222
|
+
},
|
|
223
|
+
// Inbox
|
|
224
|
+
get_notifications: {
|
|
225
|
+
schemaDigest: "sha256:eae99e7b6395842bd0aa3008dc4b8b75c12be444bca1111f68352127db852750",
|
|
226
|
+
verdict: "read",
|
|
227
|
+
reason: "Lists the authenticated user's inbox notifications without marking or snoozing them.",
|
|
228
|
+
},
|
|
229
|
+
mark_notification: {
|
|
230
|
+
schemaDigest: "sha256:96190ee9b29c980c1df2bf741ec1eebc49eed9a87f6db74d89bfa87b800b7fac",
|
|
231
|
+
verdict: "write",
|
|
232
|
+
reason: "Changes read/unread or snooze state in the authenticated user's inbox; the reviewed operation removes no workspace record.",
|
|
233
|
+
},
|
|
127
234
|
// Teams and users
|
|
128
235
|
list_teams: {
|
|
236
|
+
schemaDigest: "sha256:35496fcc47293f7976a418f5babd99f063465c9b614606b1feb0ab13879a4048",
|
|
129
237
|
"verdict": "read",
|
|
130
238
|
"reason": "Reads existing Linear list teams data without changing workspace state.",
|
|
131
239
|
},
|
|
132
|
-
get_team: {
|
|
240
|
+
get_team: {
|
|
241
|
+
schemaDigest: "sha256:4e62e3954a183e2256921cd40450335d3fcd6b4ba52354854a4257efabebf256",
|
|
242
|
+
"verdict": "read",
|
|
243
|
+
"reason": "Reads existing Linear get team data without changing workspace state.",
|
|
244
|
+
},
|
|
133
245
|
list_users: {
|
|
246
|
+
schemaDigest: "sha256:2ce638c3be81ff50ac7a4f2c929cce39a62a011aad006ba9a26569a45ad095e5",
|
|
134
247
|
"verdict": "read",
|
|
135
248
|
"reason": "Reads existing Linear list users data without changing workspace state.",
|
|
136
249
|
},
|
|
137
|
-
get_user: {
|
|
250
|
+
get_user: {
|
|
251
|
+
schemaDigest: "sha256:5046c1d7d44be9142585a2fbd71785fb6f5832b99d723763251913e1a4ccc6f9",
|
|
252
|
+
"verdict": "read",
|
|
253
|
+
"reason": "Reads existing Linear get user data without changing workspace state.",
|
|
254
|
+
},
|
|
138
255
|
get_workspace: {
|
|
256
|
+
schemaDigest: "sha256:caa1215d2278f303733e5fcb008a09853e2bc0e4d5545416a1f40eb4e3ba29fe",
|
|
139
257
|
"verdict": "read",
|
|
140
258
|
"reason": "Reads existing Linear get workspace data without changing workspace state.",
|
|
141
259
|
},
|
|
260
|
+
get_triage_responsibility: {
|
|
261
|
+
schemaDigest: "sha256:8ee4f3c9799a763001089d1a56691020fac5bf9866b80bdbc21495702051737b",
|
|
262
|
+
verdict: "read",
|
|
263
|
+
reason: "Reads a team's current triage responsibility and upcoming rotation shifts without changing assignments.",
|
|
264
|
+
},
|
|
142
265
|
// Templates
|
|
143
266
|
list_templates: {
|
|
267
|
+
schemaDigest: "sha256:387aea405fd7d1ebd9b44228865f55dcc03cdbf1ff82dfe6a6766994177b3531",
|
|
144
268
|
"verdict": "read",
|
|
145
269
|
"reason": "Reads existing Linear list templates data without changing workspace state.",
|
|
146
270
|
},
|
|
147
271
|
get_template: {
|
|
272
|
+
schemaDigest: "sha256:b5feb94b620c9466a87c0feb232e19223e73abb1965579208c1aa47e6ef2b082",
|
|
148
273
|
"verdict": "read",
|
|
149
274
|
"reason": "Reads existing Linear get template data without changing workspace state.",
|
|
150
275
|
},
|
|
151
276
|
// Status updates
|
|
152
277
|
get_status_updates: {
|
|
278
|
+
schemaDigest: "sha256:af40904370cffcca265f1a05bff133d561c7009f6960a84096025cf8163663f3",
|
|
153
279
|
"verdict": "read",
|
|
154
280
|
"reason": "Reads existing Linear get status updates data without changing workspace state.",
|
|
155
281
|
},
|
|
156
|
-
save_status_update: {
|
|
282
|
+
save_status_update: {
|
|
283
|
+
schemaDigest: "sha256:5078fdc9f3ea4ee104d05def28e45949083d4f2ff6f2435bd6b856abccbece75",
|
|
284
|
+
verdict: "destructive",
|
|
285
|
+
reason: UPSERT,
|
|
286
|
+
},
|
|
157
287
|
delete_status_update: {
|
|
288
|
+
schemaDigest: "sha256:5e4e4cdac2d818bdc2a572947a11a28b251797e59affea97aa3b853f5439bf7f",
|
|
158
289
|
"verdict": "destructive",
|
|
159
290
|
"reason": "Changes or removes existing Linear state through delete_status_update.",
|
|
160
291
|
},
|
|
161
292
|
// Releases
|
|
162
293
|
list_release_pipelines: {
|
|
294
|
+
schemaDigest: "sha256:7a20220ffbd895f834a0bd85ab6a444fbe7d71ee5b1d5dcbf8c109c7451984e0",
|
|
163
295
|
"verdict": "read",
|
|
164
296
|
"reason": "Reads existing Linear list release pipelines data without changing workspace state.",
|
|
165
297
|
},
|
|
166
298
|
list_releases: {
|
|
299
|
+
schemaDigest: "sha256:c9c6fa51eb980c3304a37f64e2a73f6e2e03e252330fcdb4ab9fc2e995c949cc",
|
|
167
300
|
"verdict": "read",
|
|
168
301
|
"reason": "Reads existing Linear list releases data without changing workspace state.",
|
|
169
302
|
},
|
|
170
303
|
get_release: {
|
|
304
|
+
schemaDigest: "sha256:6adeb4b4a0cb4888cfb45bf0a0d047f6de516dc05b7067912f5ba77025155fdb",
|
|
171
305
|
"verdict": "read",
|
|
172
306
|
"reason": "Reads existing Linear get release data without changing workspace state.",
|
|
173
307
|
},
|
|
174
308
|
list_release_notes: {
|
|
309
|
+
schemaDigest: "sha256:b0f1da15034143f29d44d949ea08bdfec2509ef196175a7a8ee5db11b655b06a",
|
|
175
310
|
"verdict": "read",
|
|
176
311
|
"reason": "Reads existing Linear list release notes data without changing workspace state.",
|
|
177
312
|
},
|
|
178
313
|
get_release_note: {
|
|
314
|
+
schemaDigest: "sha256:d28c0187ad65bca21b32451f8ab1d4a1c1a26efb485b9d4395e9b3d41555f532",
|
|
179
315
|
"verdict": "read",
|
|
180
316
|
"reason": "Reads existing Linear get release note data without changing workspace state.",
|
|
181
317
|
},
|
|
182
|
-
save_release: {
|
|
183
|
-
|
|
318
|
+
save_release: {
|
|
319
|
+
schemaDigest: "sha256:97db7fa9246750a0533d07ed73d633fadc3fe2f27f2bf95deb6ea86bbcb2bc4b",
|
|
320
|
+
verdict: "destructive",
|
|
321
|
+
reason: UPSERT,
|
|
322
|
+
},
|
|
323
|
+
save_release_note: {
|
|
324
|
+
schemaDigest: "sha256:933c46faa3bb1edb4e9cc89299ab7dbcdaafab4bee6615aa43d538703fe4dab7",
|
|
325
|
+
verdict: "destructive",
|
|
326
|
+
reason: UPSERT,
|
|
327
|
+
},
|
|
184
328
|
// Code review
|
|
185
329
|
list_diffs: {
|
|
330
|
+
schemaDigest: "sha256:1eccf293d83cd2d962e6f840cd42dac43eaee1a15cbf7ea6b78bd6b55fe94313",
|
|
186
331
|
"verdict": "read",
|
|
187
332
|
"reason": "Reads existing Linear list diffs data without changing workspace state.",
|
|
188
333
|
},
|
|
189
|
-
get_diff: {
|
|
334
|
+
get_diff: {
|
|
335
|
+
schemaDigest: "sha256:692aaf3e4a1adb0b82e38bf01574b6615747f48619e295f0377255cf2fd3dbaa",
|
|
336
|
+
"verdict": "read",
|
|
337
|
+
"reason": "Reads existing Linear get diff data without changing workspace state.",
|
|
338
|
+
},
|
|
190
339
|
get_diff_threads: {
|
|
340
|
+
schemaDigest: "sha256:98b66ecda18665bf883e70169c472802105fc113c0f39d3e25da76824b3e3457",
|
|
191
341
|
"verdict": "read",
|
|
192
342
|
"reason": "Reads existing Linear get diff threads data without changing workspace state.",
|
|
193
343
|
},
|
|
194
|
-
save_diff_comment: {
|
|
344
|
+
save_diff_comment: {
|
|
345
|
+
schemaDigest: "sha256:29a06cce756a5f3a6987693129a260659cad50083f7400723fb0b8bc9dd2b8bb",
|
|
346
|
+
verdict: "destructive",
|
|
347
|
+
reason: UPSERT,
|
|
348
|
+
},
|
|
195
349
|
resolve_diff_thread: {
|
|
350
|
+
schemaDigest: "sha256:e493a5e74c1fd7e7bf104dbed8032c721c15209991aa12686c7f46b82a49ab2e",
|
|
196
351
|
"verdict": "destructive",
|
|
197
352
|
"reason": "Changes or removes existing Linear state through resolve_diff_thread.",
|
|
198
353
|
},
|
|
199
354
|
delete_diff_comment: {
|
|
355
|
+
schemaDigest: "sha256:88db600198790b6c99b6e9397d26649f49d48b0deaa758dc64e6f8b516d817c7",
|
|
200
356
|
"verdict": "destructive",
|
|
201
357
|
"reason": "Changes or removes existing Linear state through delete_diff_comment.",
|
|
202
358
|
},
|
|
203
359
|
submit_diff_review: {
|
|
360
|
+
schemaDigest: "sha256:97aa13f00d23db8d16191104dae0ddd2a3dd1c047415bf770474be0180320acf",
|
|
204
361
|
"verdict": "destructive",
|
|
205
362
|
"reason": "Changes or removes existing Linear state through submit_diff_review.",
|
|
206
363
|
},
|
|
207
|
-
|
|
364
|
+
update_diff: {
|
|
365
|
+
schemaDigest: "sha256:8e5b77961d3d344b99a68cb82901d3764f6fb4c700f42c3c2fc59ea12a490f27",
|
|
366
|
+
verdict: "destructive",
|
|
367
|
+
reason: "Changes an existing diff's metadata, review requests, issue links or status; combined updates can partially succeed.",
|
|
368
|
+
},
|
|
369
|
+
merge_diff: {
|
|
370
|
+
schemaDigest: "sha256:e809bf0416c3cfb99794448eb66f69f83bbd7a451604faec7f622f47025f17fc",
|
|
371
|
+
"verdict": "destructive",
|
|
372
|
+
"reason": "Changes or removes existing Linear state through merge_diff.",
|
|
373
|
+
},
|
|
208
374
|
// Attachments
|
|
209
375
|
get_attachment: {
|
|
376
|
+
schemaDigest: "sha256:158ac0e0add99d9a9109a4f3549266be8f2d1eb5fa0832c861a4c56c20708a3b",
|
|
210
377
|
"verdict": "read",
|
|
211
378
|
"reason": "Reads existing Linear get attachment data without changing workspace state.",
|
|
212
379
|
},
|
|
213
380
|
prepare_attachment_upload: {
|
|
381
|
+
schemaDigest: "sha256:641559612992b1f6c1cd69fec3c66b898c12d2a21bc58973589be81fc2612c9c",
|
|
214
382
|
verdict: "write",
|
|
215
383
|
reason: "Mints an upload URL: a side effect, but it changes no existing record.",
|
|
216
384
|
},
|
|
217
385
|
create_attachment_from_upload: {
|
|
386
|
+
schemaDigest: "sha256:10818ba9327b9b70816512fd557ed3b4b85776f47cf8ca498f0d3ba17953dc2a",
|
|
218
387
|
"verdict": "write",
|
|
219
388
|
"reason": "Creates Linear state through create_attachment_from_upload; the reviewed operation only appends.",
|
|
220
389
|
},
|
|
221
390
|
create_attachment: {
|
|
391
|
+
schemaDigest: "sha256:0a4e4d5f6b62b5fbfd52d466d8b3167005e3574f3d00cf92e2fbfbbe769d8a1e",
|
|
222
392
|
"verdict": "write",
|
|
223
393
|
"reason": "Creates Linear state through create_attachment; the reviewed operation only appends.",
|
|
224
394
|
},
|
|
225
395
|
delete_attachment: {
|
|
396
|
+
schemaDigest: "sha256:ef21d1c1a7d09827b3c44bdefe18fc2dec28af468d19d2060f97df0a0f76bd0e",
|
|
226
397
|
"verdict": "destructive",
|
|
227
398
|
"reason": "Changes or removes existing Linear state through delete_attachment.",
|
|
228
399
|
},
|
|
229
400
|
// Explicit issue access.
|
|
230
401
|
share_issue: {
|
|
402
|
+
schemaDigest: "sha256:f41410b4cf5effc62a03ad26bcf76ba792a1f7bea52a78da9183b5279b4a0433",
|
|
231
403
|
verdict: "destructive",
|
|
232
404
|
reason: "Changes who can see an existing issue.",
|
|
233
405
|
},
|
|
234
406
|
unshare_issue: {
|
|
407
|
+
schemaDigest: "sha256:f41410b4cf5effc62a03ad26bcf76ba792a1f7bea52a78da9183b5279b4a0433",
|
|
235
408
|
verdict: "destructive",
|
|
236
409
|
reason: "Changes who can see an existing issue.",
|
|
237
410
|
},
|
|
238
411
|
// Agent skills
|
|
239
412
|
list_agent_skills: {
|
|
413
|
+
schemaDigest: "sha256:38fc34a53e932314e0bf6abc6493bca1256d37a951befceb95c1fe13bfa46ebd",
|
|
240
414
|
"verdict": "read",
|
|
241
415
|
"reason": "Reads existing Linear list agent skills data without changing workspace state.",
|
|
242
416
|
},
|
|
243
417
|
get_agent_skill: {
|
|
418
|
+
schemaDigest: "sha256:deb4296f3f7612ffb1af1e6ec75976acdc04ba12aff6c129a92b5a87e7a9ee09",
|
|
244
419
|
"verdict": "read",
|
|
245
420
|
"reason": "Reads existing Linear get agent skill data without changing workspace state.",
|
|
246
421
|
},
|
|
247
422
|
// Documentation search
|
|
248
423
|
search_documentation: {
|
|
424
|
+
schemaDigest: "sha256:c2b89b06275e7b0cb63b73af749ae88b694446066058584e65c9208e33339efa",
|
|
249
425
|
"verdict": "read",
|
|
250
426
|
"reason": "Reads existing Linear search documentation data without changing workspace state.",
|
|
251
427
|
},
|
|
252
428
|
// Customer requests (plan-gated)
|
|
253
429
|
list_customers: {
|
|
254
430
|
"verdict": "read",
|
|
431
|
+
optional: true,
|
|
255
432
|
"reason": "Reads existing Linear list customers data without changing workspace state.",
|
|
256
433
|
},
|
|
257
|
-
|
|
434
|
+
list_customer_needs: {
|
|
435
|
+
verdict: "read",
|
|
436
|
+
optional: true,
|
|
437
|
+
reason: "Lists customer requests for an issue, project or initiative; announced in Linear's 2026-10-08 changelog and plan-gated in hosted catalogs.",
|
|
438
|
+
},
|
|
439
|
+
save_customer: { verdict: "destructive", optional: true, reason: UPSERT },
|
|
258
440
|
delete_customer: {
|
|
259
441
|
"verdict": "destructive",
|
|
442
|
+
optional: true,
|
|
260
443
|
"reason": "Changes or removes existing Linear state through delete_customer.",
|
|
261
444
|
},
|
|
262
|
-
save_customer_need: { verdict: "destructive", reason: UPSERT },
|
|
445
|
+
save_customer_need: { verdict: "destructive", optional: true, reason: UPSERT },
|
|
263
446
|
delete_customer_need: {
|
|
264
447
|
"verdict": "destructive",
|
|
448
|
+
optional: true,
|
|
265
449
|
"reason": "Changes or removes existing Linear state through delete_customer_need.",
|
|
266
450
|
},
|
|
267
451
|
// Markdown helper.
|
|
268
452
|
extract_images: {
|
|
453
|
+
schemaDigest: "sha256:1d7273f64621448fd901fb4ac94ee3b29a4c4a833f0b27083775bd685f8a401c",
|
|
269
454
|
verdict: "read",
|
|
270
455
|
reason: "Reads images out of content it is handed and touches no workspace state; the hosted server ships it annotated readOnlyHint: true and idempotentHint: true.",
|
|
271
456
|
},
|
|
@@ -302,7 +487,7 @@ export const linear = defineProvider({
|
|
|
302
487
|
// the summary without the description.
|
|
303
488
|
const accessNote = access === "read-only"
|
|
304
489
|
? "Read-only connection: bound to Linear's read-only endpoint, whose token is scope-limited downstream, so every write fails at Linear regardless of arguments. Route writes to a connector configured for read-write access."
|
|
305
|
-
: "Read-write connection: treat every `save_`, `create_`, `delete_`, `resolve_`, `submit_`, and `merge_` operation as a write. Connecta classifies the maintained writes explicitly, and a read-only endpoint refuses them. Unknown tools without an explicit, uncontradicted read annotation fail closed.";
|
|
490
|
+
: "Read-write connection: treat every `save_`, `create_`, `delete_`, `retire_`, `restore_`, `mark_`, `update_`, `resolve_`, `submit_`, `share_`, `unshare_`, `prepare_`, and `merge_` operation as a write. Connecta classifies the maintained writes explicitly, and a read-only endpoint refuses them. Unknown tools without an explicit, uncontradicted read annotation fail closed.";
|
|
306
491
|
return remoteMcp(id, {
|
|
307
492
|
url: LINEAR_MCP_ENDPOINTS[access],
|
|
308
493
|
...provider.connectorOptions,
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
// Generated by scripts/generate-providers.mjs; do not edit.
|
|
2
2
|
export const skill = {
|
|
3
|
-
"content": "- Issue arguments use `state`, not `status`. Resolve team-specific states through `list_issue_statuses` and use the value format required by the live input schema.\n- Resolve identity before acting. `list_teams`, `list_users`, `list_projects`, `list_issue_statuses`, and `list_issue_labels` return the ids that create and update arguments expect; do not guess a team, status, label, or assignee id.\n- Issues carry a human identifier like `ENG-123` — team key, dash, number — alongside a UUID. Use the identifier the request gave you and resolve it with `get_issue` or `list_issues` when a tool wants an id; never fabricate an identifier or renumber one.\n- `save_*` tools are upserts: omit the record id to create, supply it to update in place. Read the record first when you mean to update, and send only the fields you intend to change — an upsert overwrites what you restate.\n-
|
|
3
|
+
"content": "- Issue arguments use `state`, not `status`. Resolve team-specific states through `list_issue_statuses` and use the value format required by the live input schema.\n- Resolve identity before acting. `list_teams`, `list_users`, `list_projects`, `list_issue_statuses`, and `list_issue_labels` return the ids that create and update arguments expect; do not guess a team, status, label, or assignee id.\n- Issues carry a human identifier like `ENG-123` — team key, dash, number — alongside a UUID. Use the identifier the request gave you and resolve it with `get_issue` or `list_issues` when a tool wants an id; never fabricate an identifier or renumber one.\n- `save_*` tools are upserts: omit the record id to create, supply it to update in place. Read the record first when you mean to update, and send only the fields you intend to change — an upsert overwrites what you restate.\n- Prefer `save_issue_label`, `save_project_label`, and `save_initiative_label` for label upserts. The deprecated `create_issue_label` and `create_initiative_label` remain create-only writes. Resolve existing labels with the corresponding `list_*_labels`; when updating issue or project labels, `teamId` disambiguates a name and cannot move the label to another team.\n- `retire_*_label` prevents new uses while preserving labels on existing records. Retiring a group retires its children; restoring a group restores every child, including children retired separately. Check the group and child scope before either lifecycle write.\n- `get_notifications` only reads the authenticated user's inbox. `mark_notification` writes read/unread or snooze state; resolve notification ids from that inbox before marking.\n- Read `get_diff` before `update_diff` and send only intended changes. Combined updates can partially succeed: inspect the result and reread before deciding whether any remaining change needs another call; never blindly replay the whole write. Use `merge_diff` to merge and `submit_diff_review` to approve or request changes.\n- Projects, milestones, and initiatives nest: initiatives contain projects, projects contain milestones and issues, and cycles are per-team time boxes. Scope a search by team or project rather than listing the workspace and filtering afterwards.\n- List tools paginate with a cursor. Thread the returned cursor for the next page instead of raising the page size, and reduce pages inside `execute_code` before returning them.\n- This workspace's catalog is not the whole product. Customer requests, releases, and code review are plan- and feature-gated, so search the catalog for what this connector actually exposes rather than assuming a tool exists.\n- Linear meters the underlying API per user per hour, shared with everything else that credential does. Reuse discovery results within a run and avoid speculative fan-out.\n- An `auth_required` failure means this connector's Linear authorization is missing or expired: run `authorize_connector` for this connector id, then retry the same call unchanged.",
|
|
4
4
|
"instructionsHeading": "Workspace instructions",
|
|
5
5
|
"fragments": {
|
|
6
|
-
"content": "- Issue arguments use `state`, not `status`. Resolve team-specific states through `list_issue_statuses` and use the value format required by the live input schema.\n- Resolve identity before acting. `list_teams`, `list_users`, `list_projects`, `list_issue_statuses`, and `list_issue_labels` return the ids that create and update arguments expect; do not guess a team, status, label, or assignee id.\n- Issues carry a human identifier like `ENG-123` — team key, dash, number — alongside a UUID. Use the identifier the request gave you and resolve it with `get_issue` or `list_issues` when a tool wants an id; never fabricate an identifier or renumber one.\n- `save_*` tools are upserts: omit the record id to create, supply it to update in place. Read the record first when you mean to update, and send only the fields you intend to change — an upsert overwrites what you restate.\n-
|
|
6
|
+
"content": "- Issue arguments use `state`, not `status`. Resolve team-specific states through `list_issue_statuses` and use the value format required by the live input schema.\n- Resolve identity before acting. `list_teams`, `list_users`, `list_projects`, `list_issue_statuses`, and `list_issue_labels` return the ids that create and update arguments expect; do not guess a team, status, label, or assignee id.\n- Issues carry a human identifier like `ENG-123` — team key, dash, number — alongside a UUID. Use the identifier the request gave you and resolve it with `get_issue` or `list_issues` when a tool wants an id; never fabricate an identifier or renumber one.\n- `save_*` tools are upserts: omit the record id to create, supply it to update in place. Read the record first when you mean to update, and send only the fields you intend to change — an upsert overwrites what you restate.\n- Prefer `save_issue_label`, `save_project_label`, and `save_initiative_label` for label upserts. The deprecated `create_issue_label` and `create_initiative_label` remain create-only writes. Resolve existing labels with the corresponding `list_*_labels`; when updating issue or project labels, `teamId` disambiguates a name and cannot move the label to another team.\n- `retire_*_label` prevents new uses while preserving labels on existing records. Retiring a group retires its children; restoring a group restores every child, including children retired separately. Check the group and child scope before either lifecycle write.\n- `get_notifications` only reads the authenticated user's inbox. `mark_notification` writes read/unread or snooze state; resolve notification ids from that inbox before marking.\n- Read `get_diff` before `update_diff` and send only intended changes. Combined updates can partially succeed: inspect the result and reread before deciding whether any remaining change needs another call; never blindly replay the whole write. Use `merge_diff` to merge and `submit_diff_review` to approve or request changes.\n- Projects, milestones, and initiatives nest: initiatives contain projects, projects contain milestones and issues, and cycles are per-team time boxes. Scope a search by team or project rather than listing the workspace and filtering afterwards.\n- List tools paginate with a cursor. Thread the returned cursor for the next page instead of raising the page size, and reduce pages inside `execute_code` before returning them.\n- This workspace's catalog is not the whole product. Customer requests, releases, and code review are plan- and feature-gated, so search the catalog for what this connector actually exposes rather than assuming a tool exists.\n- Linear meters the underlying API per user per hour, shared with everything else that credential does. Reuse discovery results within a run and avoid speculative fan-out.\n- An `auth_required` failure means this connector's Linear authorization is missing or expired: run `authorize_connector` for this connector id, then retry the same call unchanged."
|
|
7
7
|
}
|
|
8
8
|
};
|
|
@@ -22,6 +22,8 @@ interface MixpanelCommonOptions {
|
|
|
22
22
|
instructions?: string;
|
|
23
23
|
/** Connector-specific inline result limit; omit to inherit the deployment. */
|
|
24
24
|
maxResultBytes?: number;
|
|
25
|
+
/** Serve only read-classified tools on every endpoint. Defaults to false. */
|
|
26
|
+
readOnly?: boolean;
|
|
25
27
|
/**
|
|
26
28
|
* Optional per-runtime policy. API mode defaults to 60 calls/hour and five
|
|
27
29
|
* concurrent calls across all tools and projects. MCP mode has no default:
|
|
@@ -12,10 +12,10 @@ export const MIXPANEL_MCP_ENDPOINTS = {
|
|
|
12
12
|
in: "https://mcp-in.mixpanel.com/mcp",
|
|
13
13
|
};
|
|
14
14
|
/**
|
|
15
|
-
* Reviewed
|
|
16
|
-
*
|
|
17
|
-
*
|
|
18
|
-
*
|
|
15
|
+
* Reviewed against https://docs.mixpanel.com/docs/mcp and the 2026-10-19 live
|
|
16
|
+
* US describe schemas (#343, #703). Eleven of the 64 previously pinned tools
|
|
17
|
+
* changed since the 2026-08-30 review (#395, #512); unchanged pins are retained.
|
|
18
|
+
* Get-Audit-Log is documented beta-only: no live schema digest is claimed.
|
|
19
19
|
*/
|
|
20
20
|
const MIXPANEL_CLASSIFICATION = {
|
|
21
21
|
tools: {
|
|
@@ -47,7 +47,7 @@ const MIXPANEL_CLASSIFICATION = {
|
|
|
47
47
|
"Get-Dashboard": {
|
|
48
48
|
"verdict": "read",
|
|
49
49
|
"reason": "Retrieves Mixpanel dashboard information without changing vendor state.",
|
|
50
|
-
"schemaDigest": "sha256:
|
|
50
|
+
"schemaDigest": "sha256:0af78ab95566a20eeba08af6922f2017d98503e2b14dcbe8d7e2ac54eef870d7",
|
|
51
51
|
},
|
|
52
52
|
"Get-Business-Context": {
|
|
53
53
|
"verdict": "read",
|
|
@@ -64,10 +64,14 @@ const MIXPANEL_CLASSIFICATION = {
|
|
|
64
64
|
"reason": "Retrieves Mixpanel organizations information without changing vendor state.",
|
|
65
65
|
"schemaDigest": "sha256:e4c23f123dde073e00038d92ebd53f45157c83a4d3a2ff686ab1b66c859f4a11",
|
|
66
66
|
},
|
|
67
|
+
"Get-Audit-Log": {
|
|
68
|
+
"verdict": "read",
|
|
69
|
+
"reason": "Queries existing organization audit history; limited-access beta requiring organization admin or owner access.",
|
|
70
|
+
},
|
|
67
71
|
"Get-Events": {
|
|
68
72
|
"verdict": "read",
|
|
69
73
|
"reason": "Retrieves Mixpanel events information without changing vendor state.",
|
|
70
|
-
"schemaDigest": "sha256:
|
|
74
|
+
"schemaDigest": "sha256:09d7874b0c60cf790944b8998ee943f200912eac4349dfa80d0f2ae82a7a7998",
|
|
71
75
|
},
|
|
72
76
|
"List-Properties": {
|
|
73
77
|
"verdict": "read",
|
|
@@ -112,7 +116,7 @@ const MIXPANEL_CLASSIFICATION = {
|
|
|
112
116
|
"List-Cohorts": {
|
|
113
117
|
"verdict": "read",
|
|
114
118
|
"reason": "Retrieves Mixpanel cohorts information without changing vendor state.",
|
|
115
|
-
"schemaDigest": "sha256:
|
|
119
|
+
"schemaDigest": "sha256:505ff07f668186b670bcce28aa339076140b85896eb4f64afad78d963018297a",
|
|
116
120
|
},
|
|
117
121
|
"Describe-Cohort-Schema": {
|
|
118
122
|
"verdict": "read",
|
|
@@ -127,7 +131,7 @@ const MIXPANEL_CLASSIFICATION = {
|
|
|
127
131
|
"Get-Metric": {
|
|
128
132
|
"verdict": "read",
|
|
129
133
|
"reason": "Retrieves Mixpanel metric information without changing vendor state.",
|
|
130
|
-
"schemaDigest": "sha256:
|
|
134
|
+
"schemaDigest": "sha256:451e867abd1162f25bec96f76cb1b1d1d84eb33c04fe4d804e729810d93d26d7",
|
|
131
135
|
},
|
|
132
136
|
"List-Metrics": {
|
|
133
137
|
"verdict": "read",
|
|
@@ -145,9 +149,9 @@ const MIXPANEL_CLASSIFICATION = {
|
|
|
145
149
|
"schemaDigest": "sha256:26a3f3e0b4e52135d74335dd769103303071fc48c15b1df40efd2dfa5a353848",
|
|
146
150
|
},
|
|
147
151
|
"Get-Experiment": {
|
|
148
|
-
"verdict": "
|
|
149
|
-
"reason": "
|
|
150
|
-
"schemaDigest": "sha256:
|
|
152
|
+
"verdict": "destructive",
|
|
153
|
+
"reason": "Optional compute flags persist refreshed result caches and may auto-conclude an experiment; the full tool can modify existing state.",
|
|
154
|
+
"schemaDigest": "sha256:aebe329b5c5f3a9a465d40f12af1d6336d1304cc949c291eea752a5dd532e6fa",
|
|
151
155
|
},
|
|
152
156
|
"Get-Experiment-Setup-Guidance": {
|
|
153
157
|
"verdict": "read",
|
|
@@ -197,12 +201,12 @@ const MIXPANEL_CLASSIFICATION = {
|
|
|
197
201
|
"Create-Dashboard": {
|
|
198
202
|
"verdict": "write",
|
|
199
203
|
"reason": "Create Dashboard creates or appends Mixpanel state; it has side effects.",
|
|
200
|
-
"schemaDigest": "sha256:
|
|
204
|
+
"schemaDigest": "sha256:59fbe58cc8b69b31adfa7015e541d495abc566f56b1320e10ad77288ff9facf0",
|
|
201
205
|
},
|
|
202
206
|
"Update-Dashboard": {
|
|
203
207
|
"verdict": "destructive",
|
|
204
208
|
"reason": "Update Dashboard changes existing Mixpanel state or removes it.",
|
|
205
|
-
"schemaDigest": "sha256:
|
|
209
|
+
"schemaDigest": "sha256:6f2f11e94a13667848bdcb30531a7ff478a8c53460a5e0859f8241b64d0008da",
|
|
206
210
|
},
|
|
207
211
|
"Duplicate-Dashboard": {
|
|
208
212
|
"verdict": "write",
|
|
@@ -307,22 +311,22 @@ const MIXPANEL_CLASSIFICATION = {
|
|
|
307
311
|
"Create-Metric": {
|
|
308
312
|
"verdict": "write",
|
|
309
313
|
"reason": "Create Metric creates or appends Mixpanel state; it has side effects.",
|
|
310
|
-
"schemaDigest": "sha256:
|
|
314
|
+
"schemaDigest": "sha256:c10bc660e0664a9aba6450a45b50fb1fbea6a4fac809fd5390616416f72e04d6",
|
|
311
315
|
},
|
|
312
316
|
"Update-Metric": {
|
|
313
317
|
"verdict": "destructive",
|
|
314
318
|
"reason": "Update Metric changes existing Mixpanel state or removes it.",
|
|
315
|
-
"schemaDigest": "sha256:
|
|
319
|
+
"schemaDigest": "sha256:ca03823ea995d0ae53807a60b1dd0d47f1667b28cfd24cdab52a9fc66f0c2834",
|
|
316
320
|
},
|
|
317
321
|
"Create-Experiment": {
|
|
318
322
|
"verdict": "write",
|
|
319
323
|
"reason": "Create Experiment creates or appends Mixpanel state; it has side effects.",
|
|
320
|
-
"schemaDigest": "sha256:
|
|
324
|
+
"schemaDigest": "sha256:ce64eafec7f2490fa3c76030c75340bf5dd282a9d0bfb0c5353bcdc3b50f602d",
|
|
321
325
|
},
|
|
322
326
|
"Update-Experiment": {
|
|
323
327
|
"verdict": "destructive",
|
|
324
328
|
"reason": "Update Experiment changes existing Mixpanel state or removes it.",
|
|
325
|
-
"schemaDigest": "sha256:
|
|
329
|
+
"schemaDigest": "sha256:27c0e2b58fbb1468dda938c4112560e9481f58bc4ddafd4a94bad56666c5b12c",
|
|
326
330
|
},
|
|
327
331
|
"Create-Feature-Flag": {
|
|
328
332
|
"verdict": "write",
|