@vibecheckai/cli 3.2.2 → 3.2.4

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.
Files changed (170) hide show
  1. package/bin/.generated +25 -25
  2. package/bin/dev/run-v2-torture.js +30 -30
  3. package/bin/runners/ENHANCEMENT_GUIDE.md +121 -121
  4. package/bin/runners/lib/__tests__/entitlements-v2.test.js +295 -295
  5. package/bin/runners/lib/agent-firewall/ai/false-positive-analyzer.js +474 -0
  6. package/bin/runners/lib/agent-firewall/claims/extractor.js +117 -28
  7. package/bin/runners/lib/agent-firewall/evidence/env-evidence.js +23 -14
  8. package/bin/runners/lib/agent-firewall/evidence/route-evidence.js +72 -1
  9. package/bin/runners/lib/agent-firewall/interceptor/base.js +2 -2
  10. package/bin/runners/lib/agent-firewall/policy/default-policy.json +6 -0
  11. package/bin/runners/lib/agent-firewall/policy/engine.js +34 -3
  12. package/bin/runners/lib/agent-firewall/policy/rules/fake-success.js +29 -4
  13. package/bin/runners/lib/agent-firewall/policy/rules/ghost-route.js +12 -0
  14. package/bin/runners/lib/agent-firewall/truthpack/loader.js +21 -0
  15. package/bin/runners/lib/agent-firewall/utils/ignore-checker.js +118 -0
  16. package/bin/runners/lib/analyzers.js +606 -325
  17. package/bin/runners/lib/auth-truth.js +193 -193
  18. package/bin/runners/lib/backup.js +62 -62
  19. package/bin/runners/lib/billing.js +107 -107
  20. package/bin/runners/lib/claims.js +118 -118
  21. package/bin/runners/lib/cli-ui.js +540 -540
  22. package/bin/runners/lib/contracts/auth-contract.js +202 -202
  23. package/bin/runners/lib/contracts/env-contract.js +181 -181
  24. package/bin/runners/lib/contracts/external-contract.js +206 -206
  25. package/bin/runners/lib/contracts/guard.js +168 -168
  26. package/bin/runners/lib/contracts/index.js +89 -89
  27. package/bin/runners/lib/contracts/plan-validator.js +311 -311
  28. package/bin/runners/lib/contracts/route-contract.js +199 -199
  29. package/bin/runners/lib/contracts.js +804 -804
  30. package/bin/runners/lib/detect.js +89 -89
  31. package/bin/runners/lib/doctor/autofix.js +254 -254
  32. package/bin/runners/lib/doctor/index.js +37 -37
  33. package/bin/runners/lib/doctor/modules/dependencies.js +325 -325
  34. package/bin/runners/lib/doctor/modules/index.js +46 -46
  35. package/bin/runners/lib/doctor/modules/network.js +250 -250
  36. package/bin/runners/lib/doctor/modules/project.js +312 -312
  37. package/bin/runners/lib/doctor/modules/runtime.js +224 -224
  38. package/bin/runners/lib/doctor/modules/security.js +348 -348
  39. package/bin/runners/lib/doctor/modules/system.js +213 -213
  40. package/bin/runners/lib/doctor/modules/vibecheck.js +394 -394
  41. package/bin/runners/lib/doctor/reporter.js +262 -262
  42. package/bin/runners/lib/doctor/service.js +262 -262
  43. package/bin/runners/lib/doctor/types.js +113 -113
  44. package/bin/runners/lib/doctor/ui.js +263 -263
  45. package/bin/runners/lib/doctor-v2.js +608 -608
  46. package/bin/runners/lib/drift.js +425 -425
  47. package/bin/runners/lib/enforcement.js +72 -72
  48. package/bin/runners/lib/engines/accessibility-engine.js +190 -0
  49. package/bin/runners/lib/engines/api-consistency-engine.js +162 -0
  50. package/bin/runners/lib/engines/ast-cache.js +99 -0
  51. package/bin/runners/lib/engines/code-quality-engine.js +255 -0
  52. package/bin/runners/lib/engines/console-logs-engine.js +115 -0
  53. package/bin/runners/lib/engines/cross-file-analysis-engine.js +268 -0
  54. package/bin/runners/lib/engines/dead-code-engine.js +198 -0
  55. package/bin/runners/lib/engines/deprecated-api-engine.js +226 -0
  56. package/bin/runners/lib/engines/empty-catch-engine.js +150 -0
  57. package/bin/runners/lib/engines/file-filter.js +131 -0
  58. package/bin/runners/lib/engines/hardcoded-secrets-engine.js +251 -0
  59. package/bin/runners/lib/engines/mock-data-engine.js +272 -0
  60. package/bin/runners/lib/engines/parallel-processor.js +71 -0
  61. package/bin/runners/lib/engines/performance-issues-engine.js +265 -0
  62. package/bin/runners/lib/engines/security-vulnerabilities-engine.js +243 -0
  63. package/bin/runners/lib/engines/todo-fixme-engine.js +115 -0
  64. package/bin/runners/lib/engines/type-aware-engine.js +152 -0
  65. package/bin/runners/lib/engines/unsafe-regex-engine.js +225 -0
  66. package/bin/runners/lib/engines/vibecheck-engines/README.md +53 -0
  67. package/bin/runners/lib/engines/vibecheck-engines/index.js +15 -0
  68. package/bin/runners/lib/engines/vibecheck-engines/lib/ast-cache.js +164 -0
  69. package/bin/runners/lib/engines/vibecheck-engines/lib/code-quality-engine.js +291 -0
  70. package/bin/runners/lib/engines/vibecheck-engines/lib/console-logs-engine.js +83 -0
  71. package/bin/runners/lib/engines/vibecheck-engines/lib/dead-code-engine.js +198 -0
  72. package/bin/runners/lib/engines/vibecheck-engines/lib/deprecated-api-engine.js +275 -0
  73. package/bin/runners/lib/engines/vibecheck-engines/lib/empty-catch-engine.js +167 -0
  74. package/bin/runners/lib/engines/vibecheck-engines/lib/file-filter.js +217 -0
  75. package/bin/runners/lib/engines/vibecheck-engines/lib/hardcoded-secrets-engine.js +139 -0
  76. package/bin/runners/lib/engines/vibecheck-engines/lib/mock-data-engine.js +140 -0
  77. package/bin/runners/lib/engines/vibecheck-engines/lib/parallel-processor.js +164 -0
  78. package/bin/runners/lib/engines/vibecheck-engines/lib/performance-issues-engine.js +234 -0
  79. package/bin/runners/lib/engines/vibecheck-engines/lib/type-aware-engine.js +217 -0
  80. package/bin/runners/lib/engines/vibecheck-engines/lib/unsafe-regex-engine.js +78 -0
  81. package/bin/runners/lib/engines/vibecheck-engines/package.json +13 -0
  82. package/bin/runners/lib/enterprise-detect.js +603 -603
  83. package/bin/runners/lib/enterprise-init.js +942 -942
  84. package/bin/runners/lib/env-resolver.js +417 -417
  85. package/bin/runners/lib/env-template.js +66 -66
  86. package/bin/runners/lib/env.js +189 -189
  87. package/bin/runners/lib/extractors/client-calls.js +990 -990
  88. package/bin/runners/lib/extractors/fastify-route-dump.js +573 -573
  89. package/bin/runners/lib/extractors/fastify-routes.js +426 -426
  90. package/bin/runners/lib/extractors/index.js +363 -363
  91. package/bin/runners/lib/extractors/next-routes.js +524 -524
  92. package/bin/runners/lib/extractors/proof-graph.js +431 -431
  93. package/bin/runners/lib/extractors/route-matcher.js +451 -451
  94. package/bin/runners/lib/extractors/truthpack-v2.js +377 -377
  95. package/bin/runners/lib/extractors/ui-bindings.js +547 -547
  96. package/bin/runners/lib/findings-schema.js +281 -281
  97. package/bin/runners/lib/firewall-prompt.js +50 -50
  98. package/bin/runners/lib/global-flags.js +213 -213
  99. package/bin/runners/lib/graph/graph-builder.js +265 -265
  100. package/bin/runners/lib/graph/html-renderer.js +413 -413
  101. package/bin/runners/lib/graph/index.js +32 -32
  102. package/bin/runners/lib/graph/runtime-collector.js +215 -215
  103. package/bin/runners/lib/graph/static-extractor.js +518 -518
  104. package/bin/runners/lib/html-report.js +650 -650
  105. package/bin/runners/lib/interactive-menu.js +1496 -1496
  106. package/bin/runners/lib/llm.js +75 -75
  107. package/bin/runners/lib/meter.js +61 -61
  108. package/bin/runners/lib/missions/evidence.js +126 -126
  109. package/bin/runners/lib/patch.js +40 -40
  110. package/bin/runners/lib/permissions/auth-model.js +213 -213
  111. package/bin/runners/lib/permissions/idor-prover.js +205 -205
  112. package/bin/runners/lib/permissions/index.js +45 -45
  113. package/bin/runners/lib/permissions/matrix-builder.js +198 -198
  114. package/bin/runners/lib/pkgjson.js +28 -28
  115. package/bin/runners/lib/policy.js +295 -295
  116. package/bin/runners/lib/preflight.js +142 -142
  117. package/bin/runners/lib/reality/correlation-detectors.js +359 -359
  118. package/bin/runners/lib/reality/index.js +318 -318
  119. package/bin/runners/lib/reality/request-hashing.js +416 -416
  120. package/bin/runners/lib/reality/request-mapper.js +453 -453
  121. package/bin/runners/lib/reality/safety-rails.js +463 -463
  122. package/bin/runners/lib/reality/semantic-snapshot.js +408 -408
  123. package/bin/runners/lib/reality/toast-detector.js +393 -393
  124. package/bin/runners/lib/reality-findings.js +84 -84
  125. package/bin/runners/lib/receipts.js +179 -179
  126. package/bin/runners/lib/redact.js +29 -29
  127. package/bin/runners/lib/replay/capsule-manager.js +154 -154
  128. package/bin/runners/lib/replay/index.js +263 -263
  129. package/bin/runners/lib/replay/player.js +348 -348
  130. package/bin/runners/lib/replay/recorder.js +331 -331
  131. package/bin/runners/lib/report-output.js +187 -187
  132. package/bin/runners/lib/report.js +135 -135
  133. package/bin/runners/lib/route-detection.js +1140 -1140
  134. package/bin/runners/lib/sandbox/index.js +59 -59
  135. package/bin/runners/lib/sandbox/proof-chain.js +399 -399
  136. package/bin/runners/lib/sandbox/sandbox-runner.js +205 -205
  137. package/bin/runners/lib/sandbox/worktree.js +174 -174
  138. package/bin/runners/lib/scan-output.js +525 -190
  139. package/bin/runners/lib/schema-validator.js +350 -350
  140. package/bin/runners/lib/schemas/contracts.schema.json +160 -160
  141. package/bin/runners/lib/schemas/finding.schema.json +100 -100
  142. package/bin/runners/lib/schemas/mission-pack.schema.json +206 -206
  143. package/bin/runners/lib/schemas/proof-graph.schema.json +176 -176
  144. package/bin/runners/lib/schemas/reality-report.schema.json +162 -162
  145. package/bin/runners/lib/schemas/share-pack.schema.json +180 -180
  146. package/bin/runners/lib/schemas/ship-report.schema.json +117 -117
  147. package/bin/runners/lib/schemas/truthpack-v2.schema.json +303 -303
  148. package/bin/runners/lib/schemas/validator.js +438 -438
  149. package/bin/runners/lib/score-history.js +282 -282
  150. package/bin/runners/lib/share-pack.js +239 -239
  151. package/bin/runners/lib/snippets.js +67 -67
  152. package/bin/runners/lib/status-output.js +253 -253
  153. package/bin/runners/lib/terminal-ui.js +351 -271
  154. package/bin/runners/lib/upsell.js +510 -510
  155. package/bin/runners/lib/usage.js +153 -153
  156. package/bin/runners/lib/validate-patch.js +156 -156
  157. package/bin/runners/lib/verdict-engine.js +628 -628
  158. package/bin/runners/reality/engine.js +917 -917
  159. package/bin/runners/reality/flows.js +122 -122
  160. package/bin/runners/reality/report.js +378 -378
  161. package/bin/runners/reality/session.js +193 -193
  162. package/bin/runners/runGuard.js +168 -168
  163. package/bin/runners/runProof.zip +0 -0
  164. package/bin/runners/runProve.js +8 -0
  165. package/bin/runners/runReality.js +14 -0
  166. package/bin/runners/runScan.js +17 -1
  167. package/bin/runners/runTruth.js +15 -3
  168. package/mcp-server/tier-auth.js +4 -4
  169. package/mcp-server/tools/index.js +72 -72
  170. package/package.json +1 -1
@@ -1,162 +1,162 @@
1
- {
2
- "$schema": "https://json-schema.org/draft/2020-12/schema",
3
- "$id": "https://vibecheck.dev/schemas/reality-report.schema.json",
4
- "title": "Vibecheck Reality Report",
5
- "description": "Runtime verification results from Playwright crawl",
6
- "type": "object",
7
- "required": ["meta", "actions", "requests", "signals"],
8
- "properties": {
9
- "meta": {
10
- "type": "object",
11
- "required": ["version", "generatedAt", "baseUrl"],
12
- "properties": {
13
- "version": { "type": "string", "const": "2.0.0" },
14
- "generatedAt": { "type": "string", "format": "date-time" },
15
- "baseUrl": { "type": "string", "format": "uri" },
16
- "durationMs": { "type": "integer" },
17
- "browser": { "type": "string" },
18
- "viewport": {
19
- "type": "object",
20
- "properties": {
21
- "width": { "type": "integer" },
22
- "height": { "type": "integer" }
23
- }
24
- },
25
- "passes": {
26
- "type": "array",
27
- "items": { "type": "string", "enum": ["anon", "auth"] }
28
- }
29
- }
30
- },
31
- "actions": {
32
- "type": "array",
33
- "items": { "$ref": "#/$defs/action" }
34
- },
35
- "requests": {
36
- "type": "array",
37
- "items": { "$ref": "#/$defs/request" }
38
- },
39
- "signals": {
40
- "type": "array",
41
- "items": { "$ref": "#/$defs/signal" }
42
- },
43
- "actionOutcomes": {
44
- "type": "array",
45
- "items": { "$ref": "#/$defs/actionOutcome" }
46
- },
47
- "coverage": {
48
- "type": "object",
49
- "properties": {
50
- "routesHit": { "type": "array", "items": { "type": "string" } },
51
- "routesMissed": { "type": "array", "items": { "type": "string" } },
52
- "percent": { "type": "number" }
53
- }
54
- },
55
- "auth": {
56
- "type": "object",
57
- "properties": {
58
- "verified": { "type": "boolean" },
59
- "protectedRoutesTestedAnon": { "type": "array", "items": { "type": "string" } },
60
- "protectedRoutesTestedAuth": { "type": "array", "items": { "type": "string" } },
61
- "bypassDetected": { "type": "array", "items": { "type": "string" } }
62
- }
63
- }
64
- },
65
- "$defs": {
66
- "action": {
67
- "type": "object",
68
- "required": ["id", "type", "selector", "timestamp"],
69
- "properties": {
70
- "id": { "type": "string" },
71
- "type": { "type": "string", "enum": ["click", "submit", "navigate", "type", "scroll"] },
72
- "selector": { "type": "string" },
73
- "labelHint": { "type": "string" },
74
- "url": { "type": "string" },
75
- "timestamp": { "type": "integer" },
76
- "durationMs": { "type": "integer" },
77
- "screenshot": { "type": "string" },
78
- "requestIds": {
79
- "type": "array",
80
- "items": { "type": "string" }
81
- },
82
- "uiChange": { "$ref": "#/$defs/uiChange" }
83
- }
84
- },
85
- "uiChange": {
86
- "type": "object",
87
- "required": ["score", "meaningful"],
88
- "properties": {
89
- "score": { "type": "number", "minimum": 0, "maximum": 1 },
90
- "meaningful": { "type": "boolean" },
91
- "reasons": {
92
- "type": "array",
93
- "items": { "type": "string" }
94
- },
95
- "beforeSemanticHash": { "type": "string" },
96
- "afterSemanticHash": { "type": "string" },
97
- "semanticDiffSummary": {
98
- "type": "object",
99
- "properties": {
100
- "added": { "type": "array", "items": { "type": "string" } },
101
- "removed": { "type": "array", "items": { "type": "string" } },
102
- "changed": { "type": "array", "items": { "type": "string" } }
103
- }
104
- },
105
- "routeChanged": { "type": "boolean" },
106
- "dialogOpened": { "type": "boolean" },
107
- "dialogClosed": { "type": "boolean" },
108
- "errorsChanged": { "type": "boolean" }
109
- }
110
- },
111
- "request": {
112
- "type": "object",
113
- "required": ["id", "method", "url", "timestamp"],
114
- "properties": {
115
- "id": { "type": "string" },
116
- "method": { "type": "string" },
117
- "url": { "type": "string" },
118
- "normalizedPath": { "type": "string" },
119
- "status": { "type": "integer" },
120
- "timestamp": { "type": "integer" },
121
- "durationMs": { "type": "integer" },
122
- "triggeredBy": { "type": "string" },
123
- "responseType": { "type": "string" },
124
- "isApi": { "type": "boolean" },
125
- "isMutation": { "type": "boolean" }
126
- }
127
- },
128
- "signal": {
129
- "type": "object",
130
- "required": ["kind", "atMs"],
131
- "properties": {
132
- "kind": {
133
- "type": "string",
134
- "enum": ["toast_success", "toast_error", "toast_info", "toast_unknown", "alert_appeared", "dialog_opened", "dialog_closed", "spinner_started", "spinner_ended", "route_changed"]
135
- },
136
- "atMs": { "type": "integer" },
137
- "libraryHint": { "type": "string" },
138
- "message": { "type": "string" },
139
- "selectorHint": { "type": "string" },
140
- "screenshot": { "type": "string" },
141
- "actionId": { "type": "string" }
142
- }
143
- },
144
- "actionOutcome": {
145
- "type": "object",
146
- "required": ["actionId", "outcome"],
147
- "properties": {
148
- "actionId": { "type": "string" },
149
- "actionType": { "type": "string" },
150
- "selector": { "type": "string" },
151
- "outcome": {
152
- "type": "string",
153
- "enum": ["success_confirmed", "success_silent", "mutation_failed", "toast_only", "error_shown", "no_effect", "ui_changed", "unknown"]
154
- },
155
- "uiChangeScore": { "type": "number" },
156
- "toastKinds": { "type": "array", "items": { "type": "string" } },
157
- "requestCount": { "type": "integer" },
158
- "mutationCount": { "type": "integer" }
159
- }
160
- }
161
- }
162
- }
1
+ {
2
+ "$schema": "https://json-schema.org/draft/2020-12/schema",
3
+ "$id": "https://vibecheck.dev/schemas/reality-report.schema.json",
4
+ "title": "Vibecheck Reality Report",
5
+ "description": "Runtime verification results from Playwright crawl",
6
+ "type": "object",
7
+ "required": ["meta", "actions", "requests", "signals"],
8
+ "properties": {
9
+ "meta": {
10
+ "type": "object",
11
+ "required": ["version", "generatedAt", "baseUrl"],
12
+ "properties": {
13
+ "version": { "type": "string", "const": "2.0.0" },
14
+ "generatedAt": { "type": "string", "format": "date-time" },
15
+ "baseUrl": { "type": "string", "format": "uri" },
16
+ "durationMs": { "type": "integer" },
17
+ "browser": { "type": "string" },
18
+ "viewport": {
19
+ "type": "object",
20
+ "properties": {
21
+ "width": { "type": "integer" },
22
+ "height": { "type": "integer" }
23
+ }
24
+ },
25
+ "passes": {
26
+ "type": "array",
27
+ "items": { "type": "string", "enum": ["anon", "auth"] }
28
+ }
29
+ }
30
+ },
31
+ "actions": {
32
+ "type": "array",
33
+ "items": { "$ref": "#/$defs/action" }
34
+ },
35
+ "requests": {
36
+ "type": "array",
37
+ "items": { "$ref": "#/$defs/request" }
38
+ },
39
+ "signals": {
40
+ "type": "array",
41
+ "items": { "$ref": "#/$defs/signal" }
42
+ },
43
+ "actionOutcomes": {
44
+ "type": "array",
45
+ "items": { "$ref": "#/$defs/actionOutcome" }
46
+ },
47
+ "coverage": {
48
+ "type": "object",
49
+ "properties": {
50
+ "routesHit": { "type": "array", "items": { "type": "string" } },
51
+ "routesMissed": { "type": "array", "items": { "type": "string" } },
52
+ "percent": { "type": "number" }
53
+ }
54
+ },
55
+ "auth": {
56
+ "type": "object",
57
+ "properties": {
58
+ "verified": { "type": "boolean" },
59
+ "protectedRoutesTestedAnon": { "type": "array", "items": { "type": "string" } },
60
+ "protectedRoutesTestedAuth": { "type": "array", "items": { "type": "string" } },
61
+ "bypassDetected": { "type": "array", "items": { "type": "string" } }
62
+ }
63
+ }
64
+ },
65
+ "$defs": {
66
+ "action": {
67
+ "type": "object",
68
+ "required": ["id", "type", "selector", "timestamp"],
69
+ "properties": {
70
+ "id": { "type": "string" },
71
+ "type": { "type": "string", "enum": ["click", "submit", "navigate", "type", "scroll"] },
72
+ "selector": { "type": "string" },
73
+ "labelHint": { "type": "string" },
74
+ "url": { "type": "string" },
75
+ "timestamp": { "type": "integer" },
76
+ "durationMs": { "type": "integer" },
77
+ "screenshot": { "type": "string" },
78
+ "requestIds": {
79
+ "type": "array",
80
+ "items": { "type": "string" }
81
+ },
82
+ "uiChange": { "$ref": "#/$defs/uiChange" }
83
+ }
84
+ },
85
+ "uiChange": {
86
+ "type": "object",
87
+ "required": ["score", "meaningful"],
88
+ "properties": {
89
+ "score": { "type": "number", "minimum": 0, "maximum": 1 },
90
+ "meaningful": { "type": "boolean" },
91
+ "reasons": {
92
+ "type": "array",
93
+ "items": { "type": "string" }
94
+ },
95
+ "beforeSemanticHash": { "type": "string" },
96
+ "afterSemanticHash": { "type": "string" },
97
+ "semanticDiffSummary": {
98
+ "type": "object",
99
+ "properties": {
100
+ "added": { "type": "array", "items": { "type": "string" } },
101
+ "removed": { "type": "array", "items": { "type": "string" } },
102
+ "changed": { "type": "array", "items": { "type": "string" } }
103
+ }
104
+ },
105
+ "routeChanged": { "type": "boolean" },
106
+ "dialogOpened": { "type": "boolean" },
107
+ "dialogClosed": { "type": "boolean" },
108
+ "errorsChanged": { "type": "boolean" }
109
+ }
110
+ },
111
+ "request": {
112
+ "type": "object",
113
+ "required": ["id", "method", "url", "timestamp"],
114
+ "properties": {
115
+ "id": { "type": "string" },
116
+ "method": { "type": "string" },
117
+ "url": { "type": "string" },
118
+ "normalizedPath": { "type": "string" },
119
+ "status": { "type": "integer" },
120
+ "timestamp": { "type": "integer" },
121
+ "durationMs": { "type": "integer" },
122
+ "triggeredBy": { "type": "string" },
123
+ "responseType": { "type": "string" },
124
+ "isApi": { "type": "boolean" },
125
+ "isMutation": { "type": "boolean" }
126
+ }
127
+ },
128
+ "signal": {
129
+ "type": "object",
130
+ "required": ["kind", "atMs"],
131
+ "properties": {
132
+ "kind": {
133
+ "type": "string",
134
+ "enum": ["toast_success", "toast_error", "toast_info", "toast_unknown", "alert_appeared", "dialog_opened", "dialog_closed", "spinner_started", "spinner_ended", "route_changed"]
135
+ },
136
+ "atMs": { "type": "integer" },
137
+ "libraryHint": { "type": "string" },
138
+ "message": { "type": "string" },
139
+ "selectorHint": { "type": "string" },
140
+ "screenshot": { "type": "string" },
141
+ "actionId": { "type": "string" }
142
+ }
143
+ },
144
+ "actionOutcome": {
145
+ "type": "object",
146
+ "required": ["actionId", "outcome"],
147
+ "properties": {
148
+ "actionId": { "type": "string" },
149
+ "actionType": { "type": "string" },
150
+ "selector": { "type": "string" },
151
+ "outcome": {
152
+ "type": "string",
153
+ "enum": ["success_confirmed", "success_silent", "mutation_failed", "toast_only", "error_shown", "no_effect", "ui_changed", "unknown"]
154
+ },
155
+ "uiChangeScore": { "type": "number" },
156
+ "toastKinds": { "type": "array", "items": { "type": "string" } },
157
+ "requestCount": { "type": "integer" },
158
+ "mutationCount": { "type": "integer" }
159
+ }
160
+ }
161
+ }
162
+ }