@ak--47/dungeon-master 1.0.0 → 1.2.0

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 (104) hide show
  1. package/README.md +7 -7
  2. package/dungeons/technical/ad-spend-schema.json +128 -0
  3. package/dungeons/technical/ad-spend.js +116 -0
  4. package/dungeons/technical/anonymous-users-schema.json +92 -0
  5. package/dungeons/technical/anonymous-users.js +102 -0
  6. package/dungeons/technical/array-of-object-lookup-schema.json +191 -0
  7. package/dungeons/{array-of-object-lookup.js → technical/array-of-object-lookup.js} +12 -5
  8. package/dungeons/technical/experiments-schema.json +203 -0
  9. package/dungeons/technical/experiments.js +168 -0
  10. package/dungeons/technical/foobar-schema.json +362 -0
  11. package/dungeons/{foobar.js → technical/foobar.js} +3 -3
  12. package/dungeons/technical/group-analytics-schema.json +241 -0
  13. package/dungeons/technical/group-analytics.js +151 -0
  14. package/dungeons/technical/mirror-strategies-schema.json +84 -0
  15. package/dungeons/technical/mirror-strategies.js +126 -0
  16. package/dungeons/technical/nested-objects-schema.json +145 -0
  17. package/dungeons/technical/nested-objects.js +207 -0
  18. package/dungeons/technical/retention-cadence-schema.json +37 -0
  19. package/dungeons/{retention-cadence.js → technical/retention-cadence.js} +2 -3
  20. package/dungeons/technical/sanity-schema.json +185 -0
  21. package/dungeons/{sanity.js → technical/sanity.js} +4 -2
  22. package/dungeons/technical/scale-test-schema.json +70 -0
  23. package/dungeons/technical/scale-test.js +90 -0
  24. package/dungeons/technical/scd-schema.json +467 -0
  25. package/dungeons/{scd.js → technical/scd.js} +20 -10
  26. package/dungeons/technical/simple-schema.json +362 -0
  27. package/dungeons/{simple.js → technical/simple.js} +7 -7
  28. package/dungeons/technical/simplest-schema.json +724 -0
  29. package/dungeons/{simplest.js → technical/simplest.js} +7 -7
  30. package/dungeons/technical/text-generation-schema.json +1062 -0
  31. package/dungeons/{text-generation.js → technical/text-generation.js} +24 -11
  32. package/dungeons/vertical/community-schema.json +579 -0
  33. package/dungeons/vertical/community.js +794 -0
  34. package/dungeons/vertical/devtools-schema.json +601 -0
  35. package/dungeons/vertical/devtools.js +843 -0
  36. package/dungeons/vertical/ecommerce-schema.json +604 -0
  37. package/dungeons/{ecommerce.js → vertical/ecommerce.js} +43 -5
  38. package/dungeons/vertical/education-schema.json +5686 -0
  39. package/dungeons/{education.js → vertical/education.js} +70 -39
  40. package/dungeons/vertical/fintech-schema.json +630 -0
  41. package/dungeons/{fintech.js → vertical/fintech.js} +107 -56
  42. package/dungeons/vertical/fitness-schema.json +530 -0
  43. package/dungeons/vertical/fitness.js +808 -0
  44. package/dungeons/vertical/food-delivery-schema.json +36728 -0
  45. package/dungeons/{food.js → vertical/food-delivery.js} +67 -26
  46. package/dungeons/vertical/gaming-schema.json +438 -0
  47. package/dungeons/{gaming.js → vertical/gaming.js} +29 -16
  48. package/dungeons/vertical/healthcare-schema.json +549 -0
  49. package/dungeons/vertical/healthcare.js +775 -0
  50. package/dungeons/vertical/insurance-application-schema.json +485 -0
  51. package/dungeons/{insurance-application.js → vertical/insurance-application.js} +41 -31
  52. package/dungeons/vertical/logistics-schema.json +574 -0
  53. package/dungeons/vertical/logistics.js +799 -0
  54. package/dungeons/vertical/marketplace-schema.json +533 -0
  55. package/dungeons/vertical/marketplace.js +850 -0
  56. package/dungeons/vertical/media-schema.json +4749 -0
  57. package/dungeons/{media.js → vertical/media.js} +103 -19
  58. package/dungeons/vertical/rpg-schema.json +2491 -0
  59. package/dungeons/{rpg.js → vertical/rpg.js} +87 -60
  60. package/dungeons/vertical/sass-schema.json +3128 -0
  61. package/dungeons/{sass.js → vertical/sass.js} +65 -26
  62. package/dungeons/vertical/social-schema.json +620 -0
  63. package/dungeons/{social.js → vertical/social.js} +76 -17
  64. package/dungeons/vertical/travel-schema.json +580 -0
  65. package/dungeons/vertical/travel.js +742 -0
  66. package/index.js +20 -16
  67. package/lib/core/config-validator.js +286 -1
  68. package/lib/core/context.js +16 -5
  69. package/lib/core/storage.js +2 -0
  70. package/lib/generators/adspend.js +3 -3
  71. package/lib/generators/events.js +141 -14
  72. package/lib/generators/funnels.js +67 -7
  73. package/lib/generators/text.js +2 -2
  74. package/lib/orchestrators/user-loop.js +444 -22
  75. package/lib/templates/soup-presets.js +2 -2
  76. package/lib/utils/utils.js +4 -5
  77. package/package.json +4 -3
  78. package/scripts/dungeon-to-json.mjs +163 -0
  79. package/scripts/extract-dungeon-schema.mjs +343 -0
  80. package/scripts/json-to-dungeon.mjs +200 -0
  81. package/scripts/run-dungeon.mjs +76 -0
  82. package/scripts/run-many.mjs +118 -0
  83. package/scripts/verify-runner.mjs +42 -0
  84. package/types.d.ts +316 -1
  85. package/dungeons/array-of-object-lookup-schema.json +0 -327
  86. package/dungeons/ecommerce-schema.json +0 -462
  87. package/dungeons/education-schema.json +0 -2409
  88. package/dungeons/fintech-schema.json +0 -14034
  89. package/dungeons/foobar-schema.json +0 -403
  90. package/dungeons/food-delivery-schema.json +0 -192
  91. package/dungeons/food-delivery.js +0 -602
  92. package/dungeons/food-schema.json +0 -1152
  93. package/dungeons/gaming-schema.json +0 -1270
  94. package/dungeons/insurance-application-schema.json +0 -204
  95. package/dungeons/media-schema.json +0 -906
  96. package/dungeons/retention-cadence-schema.json +0 -78
  97. package/dungeons/rpg-schema.json +0 -4526
  98. package/dungeons/sanity-schema.json +0 -255
  99. package/dungeons/sass-schema.json +0 -1291
  100. package/dungeons/scd-schema.json +0 -919
  101. package/dungeons/simple-schema.json +0 -608
  102. package/dungeons/simplest-schema.json +0 -1418
  103. package/dungeons/social-schema.json +0 -1118
  104. package/dungeons/text-generation-schema.json +0 -3096
@@ -1,8 +1,8 @@
1
1
  import dayjs from "dayjs";
2
2
  import utc from "dayjs/plugin/utc.js";
3
3
  import "dotenv/config";
4
- import { weighNumRange, range, date, initChance, exhaust, choose, integer } from "../lib/utils/utils.js";
5
- import { createTextGenerator, generateBatch } from "../lib/generators/text.js";
4
+ import { weighNumRange, range, date, initChance, exhaust, choose, integer } from "../../lib/utils/utils.js";
5
+ import { createTextGenerator, generateBatch } from "../../lib/generators/text.js";
6
6
 
7
7
  const SEED = "SUPER DUPER DANGEROUS BROOO";
8
8
  dayjs.extend(utc);
@@ -10,7 +10,7 @@ const chance = initChance(SEED);
10
10
  const num_users = 8_000;
11
11
  const days = 92;
12
12
 
13
- /** @typedef {import("../types.js").Dungeon} Dungeon */
13
+ /** @typedef {import("../../types").Dungeon} Dungeon */
14
14
 
15
15
  /*
16
16
  * ============================================================================
@@ -416,7 +416,6 @@ const dungeon = {
416
416
  hasAdSpend: false,
417
417
  hasAvatar: false,
418
418
 
419
- batchSize: 2_500_000,
420
419
  concurrency: 1,
421
420
  writeToDisk: false,
422
421
 
@@ -435,7 +434,8 @@ const dungeon = {
435
434
  has_screenshot: [true, true, false, false], // 50% have screenshots
436
435
  channel: ["email", "phone", "chat", "portal"],
437
436
  is_resolved: [true, true, true, false], // 75% resolved
438
- resolution_time_minutes: weighNumRange(15, 2880, 0.6) // 15min to 2 days
437
+ resolution_time_minutes: weighNumRange(15, 2880, 0.6), // 15min to 2 days
438
+ auto_escalated: [false],
439
439
  }
440
440
  },
441
441
  {
@@ -576,7 +576,9 @@ const dungeon = {
576
576
  is_reproducible: [true, true, true, false], // 75% reproducible
577
577
  affects_workflow: [true, true, false], // 67% affect workflow
578
578
  has_screenshot: [true, true, false], // 67% include screenshots
579
- reporter_role: ["admin", "user", "developer", "qa_tester"]
579
+ reporter_role: ["admin", "user", "developer", "qa_tester"],
580
+ requires_immediate_review: [false],
581
+ estimated_fix_hours: weighNumRange(1, 8, 0.4),
580
582
  }
581
583
  },
582
584
  {
@@ -726,9 +728,18 @@ const dungeon = {
726
728
  affects_production: [true, false, false], // 33% affect production
727
729
  resolution_status: ["open", "investigating", "resolved", "closed"]
728
730
  }
731
+ },
732
+ {
733
+ event: "satisfaction_survey_triggered",
734
+ weight: 0,
735
+ isStrictEvent: true,
736
+ properties: {
737
+ survey_type: ["quarterly_nps"],
738
+ score: weighNumRange(1, 10, 0.3),
739
+ }
729
740
  }
730
741
  ],
731
-
742
+
732
743
  funnels: [
733
744
 
734
745
  ],
@@ -746,7 +757,7 @@ const dungeon = {
746
757
 
747
758
  userProps: {
748
759
  account_age_days: weighNumRange(0, 1095, 0.4),
749
- user_tier: ["free", "free", "basic", "pro", "enterprise"],
760
+ user_tier: ["free", "free", "basic", "pro", "enterprise"],
750
761
  signup_method: ["email", "google", "microsoft", "sso", "invite"],
751
762
  notification_enabled: [true, true, false],
752
763
  has_purchased: [true, false, false],
@@ -756,7 +767,9 @@ const dungeon = {
756
767
  technical_expertise: ["beginner", "intermediate", "advanced", "expert"],
757
768
  engagement_score: weighNumRange(0, 100, 0.3), // Most users low engagement
758
769
  last_active_days_ago: weighNumRange(0, 30, 0.6),
759
- preferred_communication: ["email", "chat", "phone", "self_service"]
770
+ preferred_communication: ["email", "chat", "phone", "self_service"],
771
+ is_power_user: [false],
772
+ risk_level: ["healthy"],
760
773
  },
761
774
 
762
775
  // ============= Slowly Changing Dimensions =============
@@ -794,12 +807,12 @@ const dungeon = {
794
807
  if (meta.profile.user_tier === "enterprise" && record.length > 5) {
795
808
  const lastEvent = record[record.length - 1];
796
809
  record.push({
810
+ ...lastEvent,
797
811
  event: "satisfaction_survey_triggered",
798
812
  time: lastEvent.time,
799
813
  user_id: lastEvent.user_id,
800
- product_tier: "enterprise",
801
814
  survey_type: "quarterly_nps",
802
- score: chance.integer({ min: 1, max: 10 })
815
+ score: chance.integer({ min: 1, max: 10 }),
803
816
  });
804
817
  }
805
818
  return record;
@@ -0,0 +1,579 @@
1
+ {
2
+ "events": [
3
+ {
4
+ "event": "account created",
5
+ "isFirstEvent": true,
6
+ "properties": {
7
+ "referral_source": [
8
+ "organic",
9
+ "google_search",
10
+ "reddit_referral",
11
+ "youtube_link",
12
+ "friend_invite"
13
+ ]
14
+ }
15
+ },
16
+ {
17
+ "event": "article viewed",
18
+ "weight": 9,
19
+ "properties": {
20
+ "wiki_id": {
21
+ "$type": "string"
22
+ },
23
+ "content_hub": [
24
+ "gaming",
25
+ "anime",
26
+ "movies",
27
+ "tv",
28
+ "comics",
29
+ "music"
30
+ ],
31
+ "view_count": {
32
+ "$range": [
33
+ 23,
34
+ 79
35
+ ]
36
+ },
37
+ "time_on_page_sec": {
38
+ "$range": [
39
+ 123,
40
+ 496
41
+ ]
42
+ },
43
+ "is_weekend": [
44
+ false
45
+ ]
46
+ }
47
+ },
48
+ {
49
+ "event": "article published",
50
+ "weight": 3,
51
+ "properties": {
52
+ "wiki_id": {
53
+ "$type": "string"
54
+ },
55
+ "content_hub": [
56
+ "gaming",
57
+ "anime",
58
+ "movies",
59
+ "tv",
60
+ "comics",
61
+ "music"
62
+ ],
63
+ "word_count": {
64
+ "$range": [
65
+ 802,
66
+ 4228
67
+ ]
68
+ },
69
+ "has_images": [
70
+ true,
71
+ false
72
+ ],
73
+ "category": [
74
+ "lore",
75
+ "character",
76
+ "episode_guide",
77
+ "review",
78
+ "tutorial",
79
+ "news"
80
+ ],
81
+ "is_weekend": [
82
+ false
83
+ ],
84
+ "poll_enabled": [
85
+ false
86
+ ]
87
+ }
88
+ },
89
+ {
90
+ "event": "article edited",
91
+ "weight": 4,
92
+ "properties": {
93
+ "wiki_id": {
94
+ "$type": "string"
95
+ },
96
+ "content_hub": [
97
+ "gaming",
98
+ "anime",
99
+ "movies",
100
+ "tv",
101
+ "comics",
102
+ "music"
103
+ ],
104
+ "edit_type": [
105
+ "content",
106
+ "formatting",
107
+ "grammar",
108
+ "citation",
109
+ "revert"
110
+ ],
111
+ "edit_quality": [
112
+ 2,
113
+ 3
114
+ ],
115
+ "chars_changed": {
116
+ "$range": [
117
+ 372,
118
+ 1596
119
+ ]
120
+ }
121
+ }
122
+ },
123
+ {
124
+ "event": "discussion posted",
125
+ "weight": 5,
126
+ "properties": {
127
+ "community_id": {
128
+ "$type": "string"
129
+ },
130
+ "content_hub": [
131
+ "gaming",
132
+ "anime",
133
+ "movies",
134
+ "tv",
135
+ "comics",
136
+ "music"
137
+ ],
138
+ "topic_type": [
139
+ "theory",
140
+ "question",
141
+ "news",
142
+ "review",
143
+ "recommendation",
144
+ "debate"
145
+ ],
146
+ "reply_count": [
147
+ 35,
148
+ 18,
149
+ 39,
150
+ 13,
151
+ 14
152
+ ],
153
+ "discussion_mode": [
154
+ "classic"
155
+ ]
156
+ }
157
+ },
158
+ {
159
+ "event": "comment posted",
160
+ "weight": 6,
161
+ "properties": {
162
+ "community_id": {
163
+ "$type": "string"
164
+ },
165
+ "content_hub": [
166
+ "gaming",
167
+ "anime",
168
+ "movies",
169
+ "tv",
170
+ "comics",
171
+ "music"
172
+ ],
173
+ "comment_length": {
174
+ "$range": [
175
+ 93,
176
+ 411
177
+ ]
178
+ },
179
+ "is_reply": [
180
+ true,
181
+ false
182
+ ],
183
+ "discussion_mode": [
184
+ "classic"
185
+ ]
186
+ }
187
+ },
188
+ {
189
+ "event": "upvote given",
190
+ "weight": 7,
191
+ "properties": {
192
+ "content_type": [
193
+ "article",
194
+ "discussion",
195
+ "comment"
196
+ ],
197
+ "content_hub": [
198
+ "gaming",
199
+ "anime",
200
+ "movies",
201
+ "tv",
202
+ "comics",
203
+ "music"
204
+ ],
205
+ "upvote_count": [
206
+ 3,
207
+ 5
208
+ ]
209
+ }
210
+ },
211
+ {
212
+ "event": "search performed",
213
+ "weight": 6,
214
+ "properties": {
215
+ "search_term": [
216
+ "walkthrough",
217
+ "character list",
218
+ "ending explained",
219
+ "tier list",
220
+ "release date",
221
+ "easter eggs",
222
+ "best builds",
223
+ "lore timeline",
224
+ "voice actors",
225
+ "soundtrack"
226
+ ],
227
+ "results_count": {
228
+ "$range": [
229
+ 11,
230
+ 38
231
+ ]
232
+ },
233
+ "content_hub": [
234
+ "gaming",
235
+ "anime",
236
+ "movies",
237
+ "tv",
238
+ "comics",
239
+ "music"
240
+ ]
241
+ }
242
+ },
243
+ {
244
+ "event": "wiki page created",
245
+ "weight": 2,
246
+ "properties": {
247
+ "wiki_id": {
248
+ "$type": "string"
249
+ },
250
+ "content_hub": [
251
+ "gaming",
252
+ "anime",
253
+ "movies",
254
+ "tv",
255
+ "comics",
256
+ "music"
257
+ ],
258
+ "page_type": [
259
+ "character",
260
+ "location",
261
+ "item",
262
+ "episode",
263
+ "concept",
264
+ "organization"
265
+ ],
266
+ "word_count": {
267
+ "$range": [
268
+ 536,
269
+ 2605
270
+ ]
271
+ }
272
+ }
273
+ },
274
+ {
275
+ "event": "media uploaded",
276
+ "weight": 2,
277
+ "properties": {
278
+ "media_type": [
279
+ "image",
280
+ "gif",
281
+ "video_clip",
282
+ "screenshot"
283
+ ],
284
+ "file_size_kb": {
285
+ "$range": [
286
+ 882,
287
+ 4292
288
+ ]
289
+ },
290
+ "content_hub": [
291
+ "gaming",
292
+ "anime",
293
+ "movies",
294
+ "tv",
295
+ "comics",
296
+ "music"
297
+ ]
298
+ }
299
+ },
300
+ {
301
+ "event": "moderation action",
302
+ "weight": 2,
303
+ "properties": {
304
+ "action_type": [
305
+ "warn",
306
+ "edit_revert",
307
+ "content_removal",
308
+ "user_mute",
309
+ "spam_flag",
310
+ "lock_thread"
311
+ ],
312
+ "severity": [
313
+ "low",
314
+ "medium",
315
+ "high"
316
+ ],
317
+ "content_hub": [
318
+ "gaming",
319
+ "anime",
320
+ "movies",
321
+ "tv",
322
+ "comics",
323
+ "music"
324
+ ],
325
+ "resolution_time_hours": [
326
+ 11,
327
+ 12
328
+ ]
329
+ }
330
+ },
331
+ {
332
+ "event": "user followed",
333
+ "weight": 3,
334
+ "properties": {
335
+ "follow_source": [
336
+ "profile",
337
+ "article",
338
+ "discussion",
339
+ "recommendation"
340
+ ]
341
+ }
342
+ },
343
+ {
344
+ "event": "notification received",
345
+ "weight": 6,
346
+ "properties": {
347
+ "notification_type": [
348
+ "reply",
349
+ "mention",
350
+ "upvote",
351
+ "follow",
352
+ "article_update",
353
+ "moderation"
354
+ ],
355
+ "channel": [
356
+ "push",
357
+ "email",
358
+ "in_app"
359
+ ],
360
+ "opened": [
361
+ true,
362
+ false
363
+ ]
364
+ }
365
+ },
366
+ {
367
+ "event": "support ticket created",
368
+ "properties": {
369
+ "category": [
370
+ "bug_report",
371
+ "content_dispute",
372
+ "account_issue",
373
+ "feature_request",
374
+ "abuse_report",
375
+ "other"
376
+ ],
377
+ "priority": [
378
+ "low",
379
+ "medium",
380
+ "high"
381
+ ],
382
+ "resolution_hours": {
383
+ "$range": [
384
+ 19,
385
+ 74
386
+ ]
387
+ }
388
+ }
389
+ },
390
+ {
391
+ "event": "profile updated",
392
+ "weight": 2,
393
+ "properties": {
394
+ "field_updated": [
395
+ "avatar",
396
+ "bio",
397
+ "display_name",
398
+ "preferred_hub",
399
+ "notification_settings",
400
+ "badges"
401
+ ]
402
+ }
403
+ },
404
+ {
405
+ "event": "app session",
406
+ "weight": 8,
407
+ "properties": {
408
+ "session_duration_sec": {
409
+ "$range": [
410
+ 250,
411
+ 2913
412
+ ]
413
+ },
414
+ "pages_viewed": [
415
+ 8,
416
+ 7,
417
+ 22,
418
+ 9,
419
+ 23
420
+ ]
421
+ }
422
+ },
423
+ {
424
+ "event": "report submitted",
425
+ "properties": {
426
+ "report_type": [
427
+ "spam",
428
+ "harassment",
429
+ "misinformation",
430
+ "vandalism",
431
+ "copyright",
432
+ "other"
433
+ ],
434
+ "content_type": [
435
+ "article",
436
+ "comment",
437
+ "discussion",
438
+ "media"
439
+ ]
440
+ }
441
+ },
442
+ {
443
+ "event": "account deactivated",
444
+ "isChurnEvent": true,
445
+ "returnLikelihood": 0.15,
446
+ "isStrictEvent": true,
447
+ "properties": {
448
+ "reason": [
449
+ "lost_interest",
450
+ "toxicity",
451
+ "no_time",
452
+ "switched_platform",
453
+ "privacy_concern"
454
+ ]
455
+ }
456
+ }
457
+ ],
458
+ "funnels": [
459
+ {
460
+ "sequence": [
461
+ "account created",
462
+ "search performed",
463
+ "article viewed",
464
+ "discussion posted"
465
+ ],
466
+ "name": "Onboarding Flow",
467
+ "isFirstFunnel": true,
468
+ "conversionRate": 40,
469
+ "timeToConvert": 72,
470
+ "weight": 3
471
+ },
472
+ {
473
+ "sequence": [
474
+ "article viewed",
475
+ "article published",
476
+ "comment posted"
477
+ ],
478
+ "name": "Content Creation",
479
+ "conversionRate": 35,
480
+ "timeToConvert": 48,
481
+ "weight": 5
482
+ },
483
+ {
484
+ "sequence": [
485
+ "article viewed",
486
+ "upvote given",
487
+ "comment posted",
488
+ "discussion posted"
489
+ ],
490
+ "name": "Engagement Loop",
491
+ "conversionRate": 30,
492
+ "timeToConvert": 96,
493
+ "weight": 4
494
+ },
495
+ {
496
+ "sequence": [
497
+ "article published",
498
+ "profile updated",
499
+ "notification received"
500
+ ],
501
+ "name": "Creator to Supporter",
502
+ "conversionRate": 45,
503
+ "timeToConvert": 168,
504
+ "weight": 2
505
+ },
506
+ {
507
+ "sequence": [
508
+ "report submitted",
509
+ "moderation action"
510
+ ],
511
+ "name": "Moderation Pipeline",
512
+ "conversionRate": 60,
513
+ "timeToConvert": 48,
514
+ "weight": 2
515
+ }
516
+ ],
517
+ "superProps": {
518
+ "subscription_tier": [
519
+ "free",
520
+ "supporter",
521
+ "pro"
522
+ ],
523
+ "platform": [
524
+ "ios",
525
+ "android",
526
+ "web"
527
+ ],
528
+ "content_hub": [
529
+ "gaming",
530
+ "anime",
531
+ "movies",
532
+ "tv",
533
+ "comics",
534
+ "music"
535
+ ]
536
+ },
537
+ "userProps": {
538
+ "role": [
539
+ "reader",
540
+ "contributor",
541
+ "moderator",
542
+ "creator"
543
+ ],
544
+ "contributor_level": [
545
+ "newcomer"
546
+ ],
547
+ "articles_created": [
548
+ 0
549
+ ],
550
+ "reputation_score": {
551
+ "$range": [
552
+ 20,
553
+ 76
554
+ ]
555
+ },
556
+ "preferred_hub": [
557
+ "gaming",
558
+ "anime",
559
+ "movies",
560
+ "tv",
561
+ "comics",
562
+ "music"
563
+ ]
564
+ },
565
+ "scdProps": {
566
+ "contributor_level": {
567
+ "type": "user",
568
+ "frequency": "month",
569
+ "timing": "fuzzy",
570
+ "max": 8,
571
+ "values": [
572
+ "newcomer",
573
+ "regular",
574
+ "trusted",
575
+ "admin"
576
+ ]
577
+ }
578
+ }
579
+ }