@syntrologie/runtime-sdk 2.3.0 → 2.4.0-canary.10

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 (48) hide show
  1. package/CAPABILITIES.md +50 -0
  2. package/dist/SmartCanvasApp.d.ts +4 -3
  3. package/dist/actions/schema.d.ts +26972 -8
  4. package/dist/actions/schema.js +2 -1
  5. package/dist/api.d.ts +3 -8
  6. package/dist/chunk-4NYS7GAW.js +180 -0
  7. package/dist/chunk-4NYS7GAW.js.map +7 -0
  8. package/dist/{chunk-AYTRRBR5.js → chunk-OGTCFYR3.js} +23 -33
  9. package/dist/chunk-OGTCFYR3.js.map +7 -0
  10. package/dist/{chunk-RUKIPJEJ.js → chunk-RC5YIJSP.js} +578 -421
  11. package/dist/chunk-RC5YIJSP.js.map +7 -0
  12. package/dist/components/ShadowCanvasOverlay.d.ts +1 -20
  13. package/dist/config/schema.d.ts +5229 -0
  14. package/dist/config/schema.js +125 -0
  15. package/dist/config/schema.js.map +7 -0
  16. package/dist/context/ContextManager.d.ts +3 -3
  17. package/dist/context/schema.d.ts +8 -8
  18. package/dist/context/types.d.ts +1 -1
  19. package/dist/decisions/schema.d.ts +1505 -67
  20. package/dist/decisions/schema.js +53 -0
  21. package/dist/decisions/schema.js.map +7 -0
  22. package/dist/decisions/types.d.ts +1 -1
  23. package/dist/hooks/useShadowCanvasConfig.d.ts +4 -4
  24. package/dist/index.js +50 -154
  25. package/dist/index.js.map +4 -4
  26. package/dist/overlays/schema.d.ts +22 -22
  27. package/dist/react.js +3 -2
  28. package/dist/react.js.map +1 -1
  29. package/dist/runtime.d.ts +4 -4
  30. package/dist/smart-canvas.esm.js +44 -47
  31. package/dist/smart-canvas.esm.js.map +4 -4
  32. package/dist/smart-canvas.js +813 -645
  33. package/dist/smart-canvas.js.map +4 -4
  34. package/dist/smart-canvas.min.js +41 -44
  35. package/dist/smart-canvas.min.js.map +4 -4
  36. package/dist/theme/ThemeProvider.d.ts +11 -16
  37. package/dist/theme/defaultTheme.d.ts +6 -1
  38. package/dist/theme/index.d.ts +3 -4
  39. package/dist/theme/types.d.ts +10 -0
  40. package/dist/types.d.ts +17 -76
  41. package/dist/version.d.ts +1 -1
  42. package/package.json +7 -7
  43. package/schema/canvas-config.schema.json +2679 -408
  44. package/scripts/validate-config.mjs +37 -0
  45. package/dist/chunk-AYTRRBR5.js.map +0 -7
  46. package/dist/chunk-RUKIPJEJ.js.map +0 -7
  47. package/dist/theme/extractHostTheme.d.ts +0 -14
  48. package/schema/canvas-config.base.schema.json +0 -351
@@ -10,18 +10,18 @@
10
10
  "actions"
11
11
  ],
12
12
  "properties": {
13
+ "schemaVersion": {
14
+ "type": "string"
15
+ },
13
16
  "fetchedAt": {
14
17
  "type": "string",
15
- "format": "date-time",
16
- "description": "When the config was fetched"
18
+ "format": "date-time"
17
19
  },
18
20
  "configVersion": {
19
- "type": "string",
20
- "description": "Version string for cache invalidation"
21
+ "type": "string"
21
22
  },
22
23
  "canvasTitle": {
23
- "type": "string",
24
- "description": "Display title for the canvas"
24
+ "type": "string"
25
25
  },
26
26
  "tiles": {
27
27
  "type": "array",
@@ -45,19 +45,17 @@
45
45
  "$ref": "#/$defs/launcherConfig",
46
46
  "description": "Launcher button configuration"
47
47
  },
48
- "routes": {
49
- "$ref": "#/$defs/routesConfig",
50
- "description": "Route filtering"
48
+ "verificationSteps": {
49
+ "type": "array",
50
+ "items": {
51
+ "type": "string"
52
+ }
51
53
  }
52
54
  },
53
55
  "additionalProperties": false,
54
56
  "$defs": {
55
57
  "tile": {
56
58
  "type": "object",
57
- "required": [
58
- "id",
59
- "widget"
60
- ],
61
59
  "properties": {
62
60
  "id": {
63
61
  "type": "string"
@@ -69,46 +67,44 @@
69
67
  "type": "number"
70
68
  },
71
69
  "widget": {
72
- "type": "string"
70
+ "type": "string",
71
+ "enum": [
72
+ "adaptive-chatbot:assistant",
73
+ "adaptive-faq:accordion",
74
+ "adaptive-nav:tips"
75
+ ],
76
+ "description": "Registered widget ID. Must match an adaptive widget registration."
73
77
  },
74
78
  "props": {
75
- "type": "object"
79
+ "type": "object",
80
+ "additionalProperties": {}
81
+ },
82
+ "activation": {
83
+ "$ref": "#/$defs/activationConfig",
84
+ "description": "Route and condition-based activation for this tile"
76
85
  },
77
86
  "notifications": {
78
87
  "type": "array",
79
- "description": "Declarative rules mapping EventBus events to toast notifications",
80
88
  "items": {
81
89
  "type": "object",
82
- "required": [
83
- "on",
84
- "title"
85
- ],
86
90
  "properties": {
87
91
  "on": {
88
- "type": "string",
89
- "description": "EventBus event name (exact or regex)"
92
+ "type": "string"
90
93
  },
91
94
  "title": {
92
- "type": "string",
93
- "description": "Toast title (supports {{props.x}})"
95
+ "type": "string"
94
96
  },
95
97
  "body": {
96
- "type": "string",
97
- "description": "Toast body (supports {{props.x}})"
98
+ "type": "string"
98
99
  },
99
100
  "icon": {
100
- "type": "string",
101
- "description": "Icon name or emoji"
101
+ "type": "string"
102
102
  },
103
103
  "ttl": {
104
- "type": "number",
105
- "description": "Auto-dismiss ms (default 8000)",
106
- "default": 8000
104
+ "type": "number"
107
105
  },
108
106
  "cooldown": {
109
- "type": "number",
110
- "description": "Cooldown ms (default 30000)",
111
- "default": 30000
107
+ "type": "number"
112
108
  },
113
109
  "deepLink": {
114
110
  "type": "object",
@@ -117,19 +113,27 @@
117
113
  "type": "string"
118
114
  },
119
115
  "itemId": {
120
- "type": "string",
121
- "description": "Supports {{props.x}}"
116
+ "type": "string"
122
117
  }
123
118
  },
124
119
  "required": [
125
120
  "tileId"
126
- ]
121
+ ],
122
+ "additionalProperties": false
127
123
  }
128
124
  },
125
+ "required": [
126
+ "on",
127
+ "title"
128
+ ],
129
129
  "additionalProperties": false
130
130
  }
131
131
  }
132
132
  },
133
+ "required": [
134
+ "id",
135
+ "widget"
136
+ ],
133
137
  "additionalProperties": false,
134
138
  "allOf": [
135
139
  {
@@ -191,91 +195,9 @@
191
195
  }
192
196
  ]
193
197
  },
194
- "actionStep": {
195
- "oneOf": [
196
- {
197
- "$ref": "#/$defs/addClass"
198
- },
199
- {
200
- "$ref": "#/$defs/addPoints"
201
- },
202
- {
203
- "$ref": "#/$defs/awardBadge"
204
- },
205
- {
206
- "$ref": "#/$defs/badge"
207
- },
208
- {
209
- "$ref": "#/$defs/faqQuestion"
210
- },
211
- {
212
- "$ref": "#/$defs/faqScrollTo"
213
- },
214
- {
215
- "$ref": "#/$defs/faqToggleItem"
216
- },
217
- {
218
- "$ref": "#/$defs/faqUpdate"
219
- },
220
- {
221
- "$ref": "#/$defs/highlight"
222
- },
223
- {
224
- "$ref": "#/$defs/insertHtml"
225
- },
226
- {
227
- "$ref": "#/$defs/modal"
228
- },
229
- {
230
- "$ref": "#/$defs/mountWidget"
231
- },
232
- {
233
- "$ref": "#/$defs/navigate"
234
- },
235
- {
236
- "$ref": "#/$defs/navTip"
237
- },
238
- {
239
- "$ref": "#/$defs/parallel"
240
- },
241
- {
242
- "$ref": "#/$defs/pulse"
243
- },
244
- {
245
- "$ref": "#/$defs/removeClass"
246
- },
247
- {
248
- "$ref": "#/$defs/scrollTo"
249
- },
250
- {
251
- "$ref": "#/$defs/sequence"
252
- },
253
- {
254
- "$ref": "#/$defs/setAttr"
255
- },
256
- {
257
- "$ref": "#/$defs/setStyle"
258
- },
259
- {
260
- "$ref": "#/$defs/setText"
261
- },
262
- {
263
- "$ref": "#/$defs/tooltip"
264
- },
265
- {
266
- "$ref": "#/$defs/tour"
267
- },
268
- {
269
- "$ref": "#/$defs/wait"
270
- }
271
- ]
272
- },
273
198
  "themeConfig": {
274
199
  "type": "object",
275
200
  "properties": {
276
- "name": {
277
- "type": "string"
278
- },
279
201
  "mode": {
280
202
  "type": "string",
281
203
  "enum": [
@@ -283,24 +205,156 @@
283
205
  "light"
284
206
  ]
285
207
  },
286
- "position": {
287
- "type": "string",
288
- "enum": [
289
- "left",
290
- "right"
291
- ]
292
- },
293
- "colorPrimary": {
208
+ "fontFamily": {
294
209
  "type": "string"
295
210
  },
296
- "colorBackground": {
211
+ "colorPrimary": {
297
212
  "type": "string"
298
213
  },
299
- "colorText": {
214
+ "colorPrimaryHover": {
300
215
  "type": "string"
301
216
  },
302
217
  "borderRadius": {
303
218
  "type": "string"
219
+ },
220
+ "canvas": {
221
+ "type": "object",
222
+ "properties": {
223
+ "position": {
224
+ "type": "string",
225
+ "enum": [
226
+ "left",
227
+ "right"
228
+ ]
229
+ },
230
+ "background": {
231
+ "type": "string"
232
+ },
233
+ "blur": {
234
+ "type": "string"
235
+ },
236
+ "border": {
237
+ "type": "string"
238
+ },
239
+ "width": {
240
+ "type": "string"
241
+ }
242
+ },
243
+ "additionalProperties": false
244
+ },
245
+ "launcher": {
246
+ "type": "object",
247
+ "properties": {
248
+ "background": {
249
+ "type": "string"
250
+ },
251
+ "backgroundHover": {
252
+ "type": "string"
253
+ },
254
+ "color": {
255
+ "type": "string"
256
+ },
257
+ "size": {
258
+ "type": "string"
259
+ },
260
+ "shadow": {
261
+ "type": "string"
262
+ }
263
+ },
264
+ "additionalProperties": false
265
+ },
266
+ "tile": {
267
+ "type": "object",
268
+ "properties": {
269
+ "background": {
270
+ "type": "string"
271
+ },
272
+ "backgroundHover": {
273
+ "type": "string"
274
+ },
275
+ "border": {
276
+ "type": "string"
277
+ },
278
+ "borderRadius": {
279
+ "type": "string"
280
+ },
281
+ "shadow": {
282
+ "type": "string"
283
+ },
284
+ "titleColor": {
285
+ "type": "string"
286
+ },
287
+ "textColor": {
288
+ "type": "string"
289
+ },
290
+ "iconBackground": {
291
+ "type": "string"
292
+ },
293
+ "iconShadow": {
294
+ "type": "string"
295
+ }
296
+ },
297
+ "additionalProperties": false
298
+ },
299
+ "overlay": {
300
+ "type": "object",
301
+ "properties": {
302
+ "background": {
303
+ "type": "string"
304
+ },
305
+ "textColor": {
306
+ "type": "string"
307
+ },
308
+ "border": {
309
+ "type": "string"
310
+ },
311
+ "borderRadius": {
312
+ "type": "string"
313
+ },
314
+ "scrimOpacity": {
315
+ "type": "string"
316
+ },
317
+ "highlightRing": {
318
+ "type": "string"
319
+ }
320
+ },
321
+ "additionalProperties": false
322
+ },
323
+ "notification": {
324
+ "type": "object",
325
+ "properties": {
326
+ "background": {
327
+ "type": "string"
328
+ },
329
+ "textColor": {
330
+ "type": "string"
331
+ },
332
+ "textSecondaryColor": {
333
+ "type": "string"
334
+ },
335
+ "border": {
336
+ "type": "string"
337
+ },
338
+ "borderRadius": {
339
+ "type": "string"
340
+ },
341
+ "successColor": {
342
+ "type": "string"
343
+ },
344
+ "warningColor": {
345
+ "type": "string"
346
+ },
347
+ "errorColor": {
348
+ "type": "string"
349
+ },
350
+ "iconBackground": {
351
+ "type": "string"
352
+ },
353
+ "progressGradient": {
354
+ "type": "string"
355
+ }
356
+ },
357
+ "additionalProperties": false
304
358
  }
305
359
  },
306
360
  "additionalProperties": false
@@ -316,31 +370,26 @@
316
370
  },
317
371
  "position": {
318
372
  "type": "string"
319
- }
320
- },
321
- "additionalProperties": false
322
- },
323
- "routesConfig": {
324
- "type": "object",
325
- "properties": {
326
- "exclude": {
327
- "type": "array",
328
- "items": {
329
- "type": "string"
330
- }
331
373
  },
332
- "include": {
333
- "type": "array",
334
- "items": {
335
- "type": "string"
336
- }
374
+ "animate": {
375
+ "type": "boolean"
376
+ },
377
+ "animationStyle": {
378
+ "type": "string",
379
+ "enum": [
380
+ "pulse",
381
+ "bounce",
382
+ "glow"
383
+ ]
384
+ },
385
+ "notificationCount": {
386
+ "type": "number"
337
387
  }
338
388
  },
339
389
  "additionalProperties": false
340
390
  },
341
391
  "activationConfig": {
342
392
  "type": "object",
343
- "description": "Activation configuration for conditional tile rendering",
344
393
  "properties": {
345
394
  "routes": {
346
395
  "$ref": "#/$defs/routeFilter"
@@ -349,6 +398,9 @@
349
398
  "$ref": "#/$defs/decisionStrategy"
350
399
  }
351
400
  },
401
+ "required": [
402
+ "routes"
403
+ ],
352
404
  "additionalProperties": false
353
405
  },
354
406
  "routeFilter": {
@@ -358,44 +410,22 @@
358
410
  "type": "array",
359
411
  "items": {
360
412
  "type": "string"
361
- },
362
- "description": "Routes where the tile should appear"
413
+ }
363
414
  },
364
415
  "exclude": {
365
416
  "type": "array",
366
417
  "items": {
367
418
  "type": "string"
368
- },
369
- "description": "Routes where the tile should NOT appear"
419
+ }
370
420
  }
371
421
  },
372
422
  "additionalProperties": false
373
423
  },
374
- "decisionStrategy": {
375
- "oneOf": [
376
- {
377
- "$ref": "#/$defs/ruleStrategy"
378
- },
379
- {
380
- "$ref": "#/$defs/scoreStrategy"
381
- },
382
- {
383
- "$ref": "#/$defs/modelStrategy"
384
- },
385
- {
386
- "$ref": "#/$defs/externalStrategy"
387
- }
388
- ]
389
- },
390
424
  "ruleStrategy": {
391
425
  "type": "object",
392
- "required": [
393
- "type",
394
- "rules",
395
- "default"
396
- ],
397
426
  "properties": {
398
427
  "type": {
428
+ "type": "string",
399
429
  "const": "rules"
400
430
  },
401
431
  "rules": {
@@ -406,19 +436,18 @@
406
436
  },
407
437
  "default": {}
408
438
  },
439
+ "required": [
440
+ "type",
441
+ "rules",
442
+ "default"
443
+ ],
409
444
  "additionalProperties": false
410
445
  },
411
446
  "scoreStrategy": {
412
447
  "type": "object",
413
- "required": [
414
- "type",
415
- "field",
416
- "threshold",
417
- "above",
418
- "below"
419
- ],
420
448
  "properties": {
421
449
  "type": {
450
+ "type": "string",
422
451
  "const": "score"
423
452
  },
424
453
  "field": {
@@ -430,19 +459,20 @@
430
459
  "above": {},
431
460
  "below": {}
432
461
  },
462
+ "required": [
463
+ "type",
464
+ "field",
465
+ "threshold",
466
+ "above",
467
+ "below"
468
+ ],
433
469
  "additionalProperties": false
434
470
  },
435
471
  "modelStrategy": {
436
472
  "type": "object",
437
- "required": [
438
- "type",
439
- "modelId",
440
- "inputs",
441
- "outputMapping",
442
- "default"
443
- ],
444
473
  "properties": {
445
474
  "type": {
475
+ "type": "string",
446
476
  "const": "model"
447
477
  },
448
478
  "modelId": {
@@ -455,27 +485,32 @@
455
485
  }
456
486
  },
457
487
  "outputMapping": {
458
- "type": "object"
488
+ "type": "object",
489
+ "additionalProperties": {}
459
490
  },
460
491
  "default": {}
461
492
  },
462
- "additionalProperties": false
463
- },
464
- "externalStrategy": {
465
- "type": "object",
466
493
  "required": [
467
494
  "type",
468
- "endpoint",
495
+ "modelId",
496
+ "inputs",
497
+ "outputMapping",
469
498
  "default"
470
499
  ],
500
+ "additionalProperties": false
501
+ },
502
+ "externalStrategy": {
503
+ "type": "object",
471
504
  "properties": {
472
505
  "type": {
506
+ "type": "string",
473
507
  "const": "external"
474
508
  },
475
509
  "endpoint": {
476
510
  "type": "string"
477
511
  },
478
512
  "method": {
513
+ "type": "string",
479
514
  "enum": [
480
515
  "GET",
481
516
  "POST"
@@ -486,14 +521,15 @@
486
521
  "type": "number"
487
522
  }
488
523
  },
524
+ "required": [
525
+ "type",
526
+ "endpoint",
527
+ "default"
528
+ ],
489
529
  "additionalProperties": false
490
530
  },
491
531
  "rule": {
492
532
  "type": "object",
493
- "required": [
494
- "conditions",
495
- "value"
496
- ],
497
533
  "properties": {
498
534
  "conditions": {
499
535
  "type": "array",
@@ -503,57 +539,60 @@
503
539
  },
504
540
  "value": {}
505
541
  },
542
+ "required": [
543
+ "conditions",
544
+ "value"
545
+ ],
506
546
  "additionalProperties": false
507
547
  },
508
548
  "condition": {
509
549
  "oneOf": [
510
550
  {
511
551
  "type": "object",
512
- "required": [
513
- "type",
514
- "url"
515
- ],
516
552
  "properties": {
517
553
  "type": {
554
+ "type": "string",
518
555
  "const": "page_url"
519
556
  },
520
557
  "url": {
521
558
  "type": "string"
522
559
  }
523
560
  },
561
+ "required": [
562
+ "type",
563
+ "url"
564
+ ],
524
565
  "additionalProperties": false
525
566
  },
526
567
  {
527
568
  "type": "object",
528
- "required": [
529
- "type",
530
- "routeId"
531
- ],
532
569
  "properties": {
533
570
  "type": {
571
+ "type": "string",
534
572
  "const": "route"
535
573
  },
536
574
  "routeId": {
537
575
  "type": "string"
538
576
  }
539
577
  },
578
+ "required": [
579
+ "type",
580
+ "routeId"
581
+ ],
540
582
  "additionalProperties": false
541
583
  },
542
584
  {
543
585
  "type": "object",
544
- "required": [
545
- "type",
546
- "anchorId",
547
- "state"
548
- ],
549
586
  "properties": {
550
587
  "type": {
588
+ "type": "string",
551
589
  "const": "anchor_visible"
552
590
  },
553
591
  "anchorId": {
554
592
  "type": "string"
555
593
  },
556
594
  "state": {
595
+ "type": "string",
557
596
  "enum": [
558
597
  "visible",
559
598
  "present",
@@ -561,16 +600,18 @@
561
600
  ]
562
601
  }
563
602
  },
603
+ "required": [
604
+ "type",
605
+ "anchorId",
606
+ "state"
607
+ ],
564
608
  "additionalProperties": false
565
609
  },
566
610
  {
567
611
  "type": "object",
568
- "required": [
569
- "type",
570
- "eventName"
571
- ],
572
612
  "properties": {
573
613
  "type": {
614
+ "type": "string",
574
615
  "const": "event_occurred"
575
616
  },
576
617
  "eventName": {
@@ -580,16 +621,17 @@
580
621
  "type": "number"
581
622
  }
582
623
  },
624
+ "required": [
625
+ "type",
626
+ "eventName"
627
+ ],
583
628
  "additionalProperties": false
584
629
  },
585
630
  {
586
631
  "type": "object",
587
- "required": [
588
- "type",
589
- "key"
590
- ],
591
632
  "properties": {
592
633
  "type": {
634
+ "type": "string",
593
635
  "const": "state_equals"
594
636
  },
595
637
  "key": {
@@ -597,15 +639,17 @@
597
639
  },
598
640
  "value": {}
599
641
  },
642
+ "required": [
643
+ "type",
644
+ "key"
645
+ ],
600
646
  "additionalProperties": false
601
647
  },
602
648
  {
603
649
  "type": "object",
604
- "required": [
605
- "type"
606
- ],
607
650
  "properties": {
608
651
  "type": {
652
+ "type": "string",
609
653
  "const": "viewport"
610
654
  },
611
655
  "minWidth": {
@@ -621,24 +665,23 @@
621
665
  "type": "number"
622
666
  }
623
667
  },
668
+ "required": [
669
+ "type"
670
+ ],
624
671
  "additionalProperties": false
625
672
  },
626
673
  {
627
674
  "type": "object",
628
- "required": [
629
- "type",
630
- "key",
631
- "operator",
632
- "threshold"
633
- ],
634
675
  "properties": {
635
676
  "type": {
677
+ "type": "string",
636
678
  "const": "session_metric"
637
679
  },
638
680
  "key": {
639
681
  "type": "string"
640
682
  },
641
683
  "operator": {
684
+ "type": "string",
642
685
  "enum": [
643
686
  "gte",
644
687
  "lte",
@@ -651,16 +694,19 @@
651
694
  "type": "number"
652
695
  }
653
696
  },
697
+ "required": [
698
+ "type",
699
+ "key",
700
+ "operator",
701
+ "threshold"
702
+ ],
654
703
  "additionalProperties": false
655
704
  },
656
705
  {
657
706
  "type": "object",
658
- "required": [
659
- "type",
660
- "key"
661
- ],
662
707
  "properties": {
663
708
  "type": {
709
+ "type": "string",
664
710
  "const": "dismissed"
665
711
  },
666
712
  "key": {
@@ -670,16 +716,17 @@
670
716
  "type": "boolean"
671
717
  }
672
718
  },
673
- "additionalProperties": false
674
- },
675
- {
676
- "type": "object",
677
719
  "required": [
678
720
  "type",
679
721
  "key"
680
722
  ],
723
+ "additionalProperties": false
724
+ },
725
+ {
726
+ "type": "object",
681
727
  "properties": {
682
728
  "type": {
729
+ "type": "string",
683
730
  "const": "cooldown_active"
684
731
  },
685
732
  "key": {
@@ -689,17 +736,17 @@
689
736
  "type": "boolean"
690
737
  }
691
738
  },
739
+ "required": [
740
+ "type",
741
+ "key"
742
+ ],
692
743
  "additionalProperties": false
693
744
  },
694
745
  {
695
746
  "type": "object",
696
- "required": [
697
- "type",
698
- "key",
699
- "limit"
700
- ],
701
747
  "properties": {
702
748
  "type": {
749
+ "type": "string",
703
750
  "const": "frequency_limit"
704
751
  },
705
752
  "key": {
@@ -712,25 +759,25 @@
712
759
  "type": "boolean"
713
760
  }
714
761
  },
715
- "additionalProperties": false
716
- },
717
- {
718
- "type": "object",
719
762
  "required": [
720
763
  "type",
721
764
  "key",
722
- "operator",
723
- "count"
765
+ "limit"
724
766
  ],
767
+ "additionalProperties": false
768
+ },
769
+ {
770
+ "type": "object",
725
771
  "properties": {
726
772
  "type": {
773
+ "type": "string",
727
774
  "const": "event_count"
728
775
  },
729
776
  "key": {
730
- "type": "string",
731
- "description": "Key referencing a callback registered by the adaptive via accumulator.register()"
777
+ "type": "string"
732
778
  },
733
779
  "operator": {
780
+ "type": "string",
734
781
  "enum": [
735
782
  "gte",
736
783
  "lte",
@@ -745,14 +792,35 @@
745
792
  },
746
793
  "withinMs": {
747
794
  "type": "number",
748
- "exclusiveMinimum": 0,
749
- "description": "Only count events within this time window (ms). Omit = session lifetime."
795
+ "exclusiveMinimum": 0
750
796
  }
751
797
  },
798
+ "required": [
799
+ "type",
800
+ "key",
801
+ "operator",
802
+ "count"
803
+ ],
752
804
  "additionalProperties": false
753
805
  }
754
806
  ]
755
807
  },
808
+ "decisionStrategy": {
809
+ "oneOf": [
810
+ {
811
+ "$ref": "#/$defs/ruleStrategy"
812
+ },
813
+ {
814
+ "$ref": "#/$defs/scoreStrategy"
815
+ },
816
+ {
817
+ "$ref": "#/$defs/modelStrategy"
818
+ },
819
+ {
820
+ "$ref": "#/$defs/externalStrategy"
821
+ }
822
+ ]
823
+ },
756
824
  "setText": {
757
825
  "type": "object",
758
826
  "properties": {
@@ -768,6 +836,10 @@
768
836
  },
769
837
  "label": {
770
838
  "type": "string"
839
+ },
840
+ "activation": {
841
+ "$ref": "#/$defs/activationConfig",
842
+ "description": "Route and condition-based activation for this action"
771
843
  }
772
844
  },
773
845
  "required": [
@@ -795,6 +867,10 @@
795
867
  },
796
868
  "label": {
797
869
  "type": "string"
870
+ },
871
+ "activation": {
872
+ "$ref": "#/$defs/activationConfig",
873
+ "description": "Route and condition-based activation for this action"
798
874
  }
799
875
  },
800
876
  "required": [
@@ -820,6 +896,10 @@
820
896
  },
821
897
  "label": {
822
898
  "type": "string"
899
+ },
900
+ "activation": {
901
+ "$ref": "#/$defs/activationConfig",
902
+ "description": "Route and condition-based activation for this action"
823
903
  }
824
904
  },
825
905
  "required": [
@@ -844,6 +924,10 @@
844
924
  },
845
925
  "label": {
846
926
  "type": "string"
927
+ },
928
+ "activation": {
929
+ "$ref": "#/$defs/activationConfig",
930
+ "description": "Route and condition-based activation for this action"
847
931
  }
848
932
  },
849
933
  "required": [
@@ -871,6 +955,10 @@
871
955
  },
872
956
  "label": {
873
957
  "type": "string"
958
+ },
959
+ "activation": {
960
+ "$ref": "#/$defs/activationConfig",
961
+ "description": "Route and condition-based activation for this action"
874
962
  }
875
963
  },
876
964
  "required": [
@@ -905,6 +993,10 @@
905
993
  },
906
994
  "label": {
907
995
  "type": "string"
996
+ },
997
+ "activation": {
998
+ "$ref": "#/$defs/activationConfig",
999
+ "description": "Route and condition-based activation for this action"
908
1000
  }
909
1001
  },
910
1002
  "required": [
@@ -950,6 +1042,10 @@
950
1042
  },
951
1043
  "label": {
952
1044
  "type": "string"
1045
+ },
1046
+ "activation": {
1047
+ "$ref": "#/$defs/activationConfig",
1048
+ "description": "Route and condition-based activation for this action"
953
1049
  }
954
1050
  },
955
1051
  "required": [
@@ -973,6 +1069,10 @@
973
1069
  },
974
1070
  "label": {
975
1071
  "type": "string"
1072
+ },
1073
+ "activation": {
1074
+ "$ref": "#/$defs/activationConfig",
1075
+ "description": "Route and condition-based activation for this action"
976
1076
  }
977
1077
  },
978
1078
  "required": [
@@ -1005,6 +1105,10 @@
1005
1105
  },
1006
1106
  "label": {
1007
1107
  "type": "string"
1108
+ },
1109
+ "activation": {
1110
+ "$ref": "#/$defs/activationConfig",
1111
+ "description": "Route and condition-based activation for this action"
1008
1112
  }
1009
1113
  },
1010
1114
  "required": [
@@ -1091,6 +1195,10 @@
1091
1195
  },
1092
1196
  "label": {
1093
1197
  "type": "string"
1198
+ },
1199
+ "activation": {
1200
+ "$ref": "#/$defs/activationConfig",
1201
+ "description": "Route and condition-based activation for this action"
1094
1202
  }
1095
1203
  },
1096
1204
  "required": [
@@ -1187,6 +1295,10 @@
1187
1295
  },
1188
1296
  "label": {
1189
1297
  "type": "string"
1298
+ },
1299
+ "activation": {
1300
+ "$ref": "#/$defs/activationConfig",
1301
+ "description": "Route and condition-based activation for this action"
1190
1302
  }
1191
1303
  },
1192
1304
  "required": [
@@ -1233,6 +1345,10 @@
1233
1345
  },
1234
1346
  "label": {
1235
1347
  "type": "string"
1348
+ },
1349
+ "activation": {
1350
+ "$ref": "#/$defs/activationConfig",
1351
+ "description": "Route and condition-based activation for this action"
1236
1352
  }
1237
1353
  },
1238
1354
  "required": [
@@ -1260,6 +1376,10 @@
1260
1376
  },
1261
1377
  "label": {
1262
1378
  "type": "string"
1379
+ },
1380
+ "activation": {
1381
+ "$ref": "#/$defs/activationConfig",
1382
+ "description": "Route and condition-based activation for this action"
1263
1383
  }
1264
1384
  },
1265
1385
  "required": [
@@ -1282,7 +1402,13 @@
1282
1402
  "type": "object",
1283
1403
  "properties": {
1284
1404
  "widgetId": {
1285
- "type": "string"
1405
+ "type": "string",
1406
+ "enum": [
1407
+ "adaptive-chatbot:assistant",
1408
+ "adaptive-faq:accordion",
1409
+ "adaptive-nav:tips"
1410
+ ],
1411
+ "description": "Registered widget ID. Must match an adaptive widget registration."
1286
1412
  },
1287
1413
  "props": {
1288
1414
  "type": "object",
@@ -1299,6 +1425,10 @@
1299
1425
  },
1300
1426
  "label": {
1301
1427
  "type": "string"
1428
+ },
1429
+ "activation": {
1430
+ "$ref": "#/$defs/activationConfig",
1431
+ "description": "Route and condition-based activation for this action"
1302
1432
  }
1303
1433
  },
1304
1434
  "required": [
@@ -1324,6 +1454,10 @@
1324
1454
  },
1325
1455
  "label": {
1326
1456
  "type": "string"
1457
+ },
1458
+ "activation": {
1459
+ "$ref": "#/$defs/activationConfig",
1460
+ "description": "Route and condition-based activation for this action"
1327
1461
  }
1328
1462
  },
1329
1463
  "required": [
@@ -1346,6 +1480,10 @@
1346
1480
  },
1347
1481
  "label": {
1348
1482
  "type": "string"
1483
+ },
1484
+ "activation": {
1485
+ "$ref": "#/$defs/activationConfig",
1486
+ "description": "Route and condition-based activation for this action"
1349
1487
  }
1350
1488
  },
1351
1489
  "required": [
@@ -1376,6 +1514,10 @@
1376
1514
  },
1377
1515
  "label": {
1378
1516
  "type": "string"
1517
+ },
1518
+ "activation": {
1519
+ "$ref": "#/$defs/activationConfig",
1520
+ "description": "Route and condition-based activation for this action"
1379
1521
  }
1380
1522
  },
1381
1523
  "required": [
@@ -1430,6 +1572,10 @@
1430
1572
  },
1431
1573
  "label": {
1432
1574
  "type": "string"
1575
+ },
1576
+ "activation": {
1577
+ "$ref": "#/$defs/activationConfig",
1578
+ "description": "Route and condition-based activation for this action"
1433
1579
  }
1434
1580
  },
1435
1581
  "required": [
@@ -1596,30 +1742,278 @@
1596
1742
  "conditions": {
1597
1743
  "type": "array",
1598
1744
  "items": {
1599
- "type": "object",
1600
- "properties": {
1601
- "type": {
1602
- "type": "string"
1603
- }
1604
- },
1605
- "required": [
1606
- "type"
1607
- ],
1608
- "additionalProperties": true
1609
- }
1610
- },
1611
- "value": {}
1612
- },
1613
- "required": [
1614
- "conditions"
1615
- ],
1616
- "additionalProperties": false
1617
- }
1618
- },
1619
- "default": {}
1620
- },
1621
- "required": [
1622
- "type",
1745
+ "anyOf": [
1746
+ {
1747
+ "type": "object",
1748
+ "properties": {
1749
+ "type": {
1750
+ "type": "string",
1751
+ "const": "page_url"
1752
+ },
1753
+ "url": {
1754
+ "type": "string"
1755
+ }
1756
+ },
1757
+ "required": [
1758
+ "type",
1759
+ "url"
1760
+ ],
1761
+ "additionalProperties": false
1762
+ },
1763
+ {
1764
+ "type": "object",
1765
+ "properties": {
1766
+ "type": {
1767
+ "type": "string",
1768
+ "const": "route"
1769
+ },
1770
+ "routeId": {
1771
+ "type": "string"
1772
+ }
1773
+ },
1774
+ "required": [
1775
+ "type",
1776
+ "routeId"
1777
+ ],
1778
+ "additionalProperties": false
1779
+ },
1780
+ {
1781
+ "type": "object",
1782
+ "properties": {
1783
+ "type": {
1784
+ "type": "string",
1785
+ "const": "anchor_visible"
1786
+ },
1787
+ "anchorId": {
1788
+ "type": "string"
1789
+ },
1790
+ "state": {
1791
+ "type": "string",
1792
+ "enum": [
1793
+ "visible",
1794
+ "present",
1795
+ "absent"
1796
+ ]
1797
+ }
1798
+ },
1799
+ "required": [
1800
+ "type",
1801
+ "anchorId",
1802
+ "state"
1803
+ ],
1804
+ "additionalProperties": false
1805
+ },
1806
+ {
1807
+ "type": "object",
1808
+ "properties": {
1809
+ "type": {
1810
+ "type": "string",
1811
+ "const": "event_occurred"
1812
+ },
1813
+ "eventName": {
1814
+ "type": "string"
1815
+ },
1816
+ "withinMs": {
1817
+ "type": "number"
1818
+ }
1819
+ },
1820
+ "required": [
1821
+ "type",
1822
+ "eventName"
1823
+ ],
1824
+ "additionalProperties": false
1825
+ },
1826
+ {
1827
+ "type": "object",
1828
+ "properties": {
1829
+ "type": {
1830
+ "type": "string",
1831
+ "const": "state_equals"
1832
+ },
1833
+ "key": {
1834
+ "type": "string"
1835
+ },
1836
+ "value": {}
1837
+ },
1838
+ "required": [
1839
+ "type",
1840
+ "key"
1841
+ ],
1842
+ "additionalProperties": false
1843
+ },
1844
+ {
1845
+ "type": "object",
1846
+ "properties": {
1847
+ "type": {
1848
+ "type": "string",
1849
+ "const": "viewport"
1850
+ },
1851
+ "minWidth": {
1852
+ "type": "number"
1853
+ },
1854
+ "maxWidth": {
1855
+ "type": "number"
1856
+ },
1857
+ "minHeight": {
1858
+ "type": "number"
1859
+ },
1860
+ "maxHeight": {
1861
+ "type": "number"
1862
+ }
1863
+ },
1864
+ "required": [
1865
+ "type"
1866
+ ],
1867
+ "additionalProperties": false
1868
+ },
1869
+ {
1870
+ "type": "object",
1871
+ "properties": {
1872
+ "type": {
1873
+ "type": "string",
1874
+ "const": "session_metric"
1875
+ },
1876
+ "key": {
1877
+ "type": "string"
1878
+ },
1879
+ "operator": {
1880
+ "type": "string",
1881
+ "enum": [
1882
+ "gte",
1883
+ "lte",
1884
+ "eq",
1885
+ "gt",
1886
+ "lt"
1887
+ ]
1888
+ },
1889
+ "threshold": {
1890
+ "type": "number"
1891
+ }
1892
+ },
1893
+ "required": [
1894
+ "type",
1895
+ "key",
1896
+ "operator",
1897
+ "threshold"
1898
+ ],
1899
+ "additionalProperties": false
1900
+ },
1901
+ {
1902
+ "type": "object",
1903
+ "properties": {
1904
+ "type": {
1905
+ "type": "string",
1906
+ "const": "dismissed"
1907
+ },
1908
+ "key": {
1909
+ "type": "string"
1910
+ },
1911
+ "inverted": {
1912
+ "type": "boolean"
1913
+ }
1914
+ },
1915
+ "required": [
1916
+ "type",
1917
+ "key"
1918
+ ],
1919
+ "additionalProperties": false
1920
+ },
1921
+ {
1922
+ "type": "object",
1923
+ "properties": {
1924
+ "type": {
1925
+ "type": "string",
1926
+ "const": "cooldown_active"
1927
+ },
1928
+ "key": {
1929
+ "type": "string"
1930
+ },
1931
+ "inverted": {
1932
+ "type": "boolean"
1933
+ }
1934
+ },
1935
+ "required": [
1936
+ "type",
1937
+ "key"
1938
+ ],
1939
+ "additionalProperties": false
1940
+ },
1941
+ {
1942
+ "type": "object",
1943
+ "properties": {
1944
+ "type": {
1945
+ "type": "string",
1946
+ "const": "frequency_limit"
1947
+ },
1948
+ "key": {
1949
+ "type": "string"
1950
+ },
1951
+ "limit": {
1952
+ "type": "number"
1953
+ },
1954
+ "inverted": {
1955
+ "type": "boolean"
1956
+ }
1957
+ },
1958
+ "required": [
1959
+ "type",
1960
+ "key",
1961
+ "limit"
1962
+ ],
1963
+ "additionalProperties": false
1964
+ },
1965
+ {
1966
+ "type": "object",
1967
+ "properties": {
1968
+ "type": {
1969
+ "type": "string",
1970
+ "const": "event_count"
1971
+ },
1972
+ "key": {
1973
+ "type": "string"
1974
+ },
1975
+ "operator": {
1976
+ "type": "string",
1977
+ "enum": [
1978
+ "gte",
1979
+ "lte",
1980
+ "eq",
1981
+ "gt",
1982
+ "lt"
1983
+ ]
1984
+ },
1985
+ "count": {
1986
+ "type": "integer",
1987
+ "minimum": 0
1988
+ },
1989
+ "withinMs": {
1990
+ "type": "number",
1991
+ "exclusiveMinimum": 0
1992
+ }
1993
+ },
1994
+ "required": [
1995
+ "type",
1996
+ "key",
1997
+ "operator",
1998
+ "count"
1999
+ ],
2000
+ "additionalProperties": false
2001
+ }
2002
+ ]
2003
+ }
2004
+ },
2005
+ "value": {}
2006
+ },
2007
+ "required": [
2008
+ "conditions"
2009
+ ],
2010
+ "additionalProperties": false
2011
+ }
2012
+ },
2013
+ "default": {}
2014
+ },
2015
+ "required": [
2016
+ "type",
1623
2017
  "rules"
1624
2018
  ],
1625
2019
  "additionalProperties": false
@@ -1974,16 +2368,264 @@
1974
2368
  "conditions": {
1975
2369
  "type": "array",
1976
2370
  "items": {
1977
- "type": "object",
1978
- "properties": {
1979
- "type": {
1980
- "type": "string"
2371
+ "anyOf": [
2372
+ {
2373
+ "type": "object",
2374
+ "properties": {
2375
+ "type": {
2376
+ "type": "string",
2377
+ "const": "page_url"
2378
+ },
2379
+ "url": {
2380
+ "type": "string"
2381
+ }
2382
+ },
2383
+ "required": [
2384
+ "type",
2385
+ "url"
2386
+ ],
2387
+ "additionalProperties": false
2388
+ },
2389
+ {
2390
+ "type": "object",
2391
+ "properties": {
2392
+ "type": {
2393
+ "type": "string",
2394
+ "const": "route"
2395
+ },
2396
+ "routeId": {
2397
+ "type": "string"
2398
+ }
2399
+ },
2400
+ "required": [
2401
+ "type",
2402
+ "routeId"
2403
+ ],
2404
+ "additionalProperties": false
2405
+ },
2406
+ {
2407
+ "type": "object",
2408
+ "properties": {
2409
+ "type": {
2410
+ "type": "string",
2411
+ "const": "anchor_visible"
2412
+ },
2413
+ "anchorId": {
2414
+ "type": "string"
2415
+ },
2416
+ "state": {
2417
+ "type": "string",
2418
+ "enum": [
2419
+ "visible",
2420
+ "present",
2421
+ "absent"
2422
+ ]
2423
+ }
2424
+ },
2425
+ "required": [
2426
+ "type",
2427
+ "anchorId",
2428
+ "state"
2429
+ ],
2430
+ "additionalProperties": false
2431
+ },
2432
+ {
2433
+ "type": "object",
2434
+ "properties": {
2435
+ "type": {
2436
+ "type": "string",
2437
+ "const": "event_occurred"
2438
+ },
2439
+ "eventName": {
2440
+ "type": "string"
2441
+ },
2442
+ "withinMs": {
2443
+ "type": "number"
2444
+ }
2445
+ },
2446
+ "required": [
2447
+ "type",
2448
+ "eventName"
2449
+ ],
2450
+ "additionalProperties": false
2451
+ },
2452
+ {
2453
+ "type": "object",
2454
+ "properties": {
2455
+ "type": {
2456
+ "type": "string",
2457
+ "const": "state_equals"
2458
+ },
2459
+ "key": {
2460
+ "type": "string"
2461
+ },
2462
+ "value": {}
2463
+ },
2464
+ "required": [
2465
+ "type",
2466
+ "key"
2467
+ ],
2468
+ "additionalProperties": false
2469
+ },
2470
+ {
2471
+ "type": "object",
2472
+ "properties": {
2473
+ "type": {
2474
+ "type": "string",
2475
+ "const": "viewport"
2476
+ },
2477
+ "minWidth": {
2478
+ "type": "number"
2479
+ },
2480
+ "maxWidth": {
2481
+ "type": "number"
2482
+ },
2483
+ "minHeight": {
2484
+ "type": "number"
2485
+ },
2486
+ "maxHeight": {
2487
+ "type": "number"
2488
+ }
2489
+ },
2490
+ "required": [
2491
+ "type"
2492
+ ],
2493
+ "additionalProperties": false
2494
+ },
2495
+ {
2496
+ "type": "object",
2497
+ "properties": {
2498
+ "type": {
2499
+ "type": "string",
2500
+ "const": "session_metric"
2501
+ },
2502
+ "key": {
2503
+ "type": "string"
2504
+ },
2505
+ "operator": {
2506
+ "type": "string",
2507
+ "enum": [
2508
+ "gte",
2509
+ "lte",
2510
+ "eq",
2511
+ "gt",
2512
+ "lt"
2513
+ ]
2514
+ },
2515
+ "threshold": {
2516
+ "type": "number"
2517
+ }
2518
+ },
2519
+ "required": [
2520
+ "type",
2521
+ "key",
2522
+ "operator",
2523
+ "threshold"
2524
+ ],
2525
+ "additionalProperties": false
2526
+ },
2527
+ {
2528
+ "type": "object",
2529
+ "properties": {
2530
+ "type": {
2531
+ "type": "string",
2532
+ "const": "dismissed"
2533
+ },
2534
+ "key": {
2535
+ "type": "string"
2536
+ },
2537
+ "inverted": {
2538
+ "type": "boolean"
2539
+ }
2540
+ },
2541
+ "required": [
2542
+ "type",
2543
+ "key"
2544
+ ],
2545
+ "additionalProperties": false
2546
+ },
2547
+ {
2548
+ "type": "object",
2549
+ "properties": {
2550
+ "type": {
2551
+ "type": "string",
2552
+ "const": "cooldown_active"
2553
+ },
2554
+ "key": {
2555
+ "type": "string"
2556
+ },
2557
+ "inverted": {
2558
+ "type": "boolean"
2559
+ }
2560
+ },
2561
+ "required": [
2562
+ "type",
2563
+ "key"
2564
+ ],
2565
+ "additionalProperties": false
2566
+ },
2567
+ {
2568
+ "type": "object",
2569
+ "properties": {
2570
+ "type": {
2571
+ "type": "string",
2572
+ "const": "frequency_limit"
2573
+ },
2574
+ "key": {
2575
+ "type": "string"
2576
+ },
2577
+ "limit": {
2578
+ "type": "number"
2579
+ },
2580
+ "inverted": {
2581
+ "type": "boolean"
2582
+ }
2583
+ },
2584
+ "required": [
2585
+ "type",
2586
+ "key",
2587
+ "limit"
2588
+ ],
2589
+ "additionalProperties": false
2590
+ },
2591
+ {
2592
+ "type": "object",
2593
+ "properties": {
2594
+ "type": {
2595
+ "type": "string",
2596
+ "const": "event_count"
2597
+ },
2598
+ "key": {
2599
+ "type": "string"
2600
+ },
2601
+ "operator": {
2602
+ "type": "string",
2603
+ "enum": [
2604
+ "gte",
2605
+ "lte",
2606
+ "eq",
2607
+ "gt",
2608
+ "lt"
2609
+ ]
2610
+ },
2611
+ "count": {
2612
+ "type": "integer",
2613
+ "minimum": 0
2614
+ },
2615
+ "withinMs": {
2616
+ "type": "number",
2617
+ "exclusiveMinimum": 0
2618
+ }
2619
+ },
2620
+ "required": [
2621
+ "type",
2622
+ "key",
2623
+ "operator",
2624
+ "count"
2625
+ ],
2626
+ "additionalProperties": false
1981
2627
  }
1982
- },
1983
- "required": [
1984
- "type"
1985
- ],
1986
- "additionalProperties": true
2628
+ ]
1987
2629
  }
1988
2630
  },
1989
2631
  "value": {}
@@ -2105,87 +2747,397 @@
2105
2747
  "type": "string"
2106
2748
  }
2107
2749
  },
2108
- "additionalProperties": false
2750
+ "additionalProperties": false
2751
+ },
2752
+ {
2753
+ "type": "null"
2754
+ }
2755
+ ]
2756
+ }
2757
+ },
2758
+ "required": [
2759
+ "kind",
2760
+ "config"
2761
+ ],
2762
+ "additionalProperties": false
2763
+ }
2764
+ },
2765
+ "itemId": {
2766
+ "type": "string"
2767
+ },
2768
+ "order": {
2769
+ "type": "array",
2770
+ "items": {
2771
+ "type": "string"
2772
+ }
2773
+ },
2774
+ "position": {
2775
+ "type": "string",
2776
+ "enum": [
2777
+ "prepend",
2778
+ "append",
2779
+ "before",
2780
+ "after"
2781
+ ]
2782
+ },
2783
+ "anchorId": {
2784
+ "type": "string"
2785
+ }
2786
+ },
2787
+ "required": [
2788
+ "kind",
2789
+ "operation"
2790
+ ],
2791
+ "additionalProperties": false
2792
+ },
2793
+ "awardBadge": {
2794
+ "type": "object",
2795
+ "properties": {
2796
+ "kind": {
2797
+ "type": "string",
2798
+ "const": "gamification:awardBadge"
2799
+ },
2800
+ "badgeId": {
2801
+ "type": "string"
2802
+ },
2803
+ "anchorId": {
2804
+ "type": "string"
2805
+ },
2806
+ "label": {
2807
+ "type": "string"
2808
+ },
2809
+ "activation": {
2810
+ "type": "object",
2811
+ "properties": {
2812
+ "routes": {
2813
+ "type": "object",
2814
+ "properties": {
2815
+ "include": {
2816
+ "type": "array",
2817
+ "items": {
2818
+ "type": "string"
2819
+ }
2820
+ },
2821
+ "exclude": {
2822
+ "type": "array",
2823
+ "items": {
2824
+ "type": "string"
2825
+ }
2826
+ }
2827
+ },
2828
+ "additionalProperties": false
2829
+ },
2830
+ "strategy": {
2831
+ "anyOf": [
2832
+ {
2833
+ "type": "object",
2834
+ "properties": {
2835
+ "type": {
2836
+ "type": "string",
2837
+ "const": "rules"
2838
+ },
2839
+ "rules": {
2840
+ "type": "array",
2841
+ "items": {
2842
+ "type": "object",
2843
+ "properties": {
2844
+ "conditions": {
2845
+ "type": "array",
2846
+ "items": {
2847
+ "type": "object",
2848
+ "properties": {
2849
+ "type": {
2850
+ "type": "string"
2851
+ }
2852
+ },
2853
+ "required": [
2854
+ "type"
2855
+ ],
2856
+ "additionalProperties": true
2857
+ }
2858
+ },
2859
+ "value": {}
2860
+ },
2861
+ "required": [
2862
+ "conditions"
2863
+ ],
2864
+ "additionalProperties": false
2865
+ }
2866
+ },
2867
+ "default": {}
2868
+ },
2869
+ "required": [
2870
+ "type",
2871
+ "rules"
2872
+ ],
2873
+ "additionalProperties": false
2874
+ },
2875
+ {
2876
+ "type": "object",
2877
+ "properties": {
2878
+ "type": {
2879
+ "type": "string",
2880
+ "const": "score"
2881
+ },
2882
+ "field": {
2883
+ "type": "string"
2884
+ },
2885
+ "threshold": {
2886
+ "type": "number"
2887
+ },
2888
+ "above": {},
2889
+ "below": {}
2890
+ },
2891
+ "required": [
2892
+ "type",
2893
+ "field",
2894
+ "threshold"
2895
+ ],
2896
+ "additionalProperties": false
2897
+ },
2898
+ {
2899
+ "type": "object",
2900
+ "properties": {
2901
+ "type": {
2902
+ "type": "string",
2903
+ "const": "model"
2904
+ },
2905
+ "modelId": {
2906
+ "type": "string"
2907
+ },
2908
+ "inputs": {
2909
+ "type": "array",
2910
+ "items": {
2911
+ "type": "string"
2912
+ }
2913
+ },
2914
+ "outputMapping": {
2915
+ "type": "object",
2916
+ "additionalProperties": {}
2917
+ },
2918
+ "default": {}
2919
+ },
2920
+ "required": [
2921
+ "type",
2922
+ "modelId",
2923
+ "inputs",
2924
+ "outputMapping"
2925
+ ],
2926
+ "additionalProperties": false
2927
+ },
2928
+ {
2929
+ "type": "object",
2930
+ "properties": {
2931
+ "type": {
2932
+ "type": "string",
2933
+ "const": "external"
2934
+ },
2935
+ "endpoint": {
2936
+ "type": "string"
2937
+ },
2938
+ "method": {
2939
+ "type": "string",
2940
+ "enum": [
2941
+ "GET",
2942
+ "POST"
2943
+ ]
2944
+ },
2945
+ "default": {},
2946
+ "timeoutMs": {
2947
+ "type": "number"
2948
+ }
2949
+ },
2950
+ "required": [
2951
+ "type",
2952
+ "endpoint"
2953
+ ],
2954
+ "additionalProperties": false
2955
+ }
2956
+ ]
2957
+ }
2958
+ },
2959
+ "required": [
2960
+ "routes"
2961
+ ],
2962
+ "additionalProperties": false
2963
+ }
2964
+ },
2965
+ "required": [
2966
+ "kind",
2967
+ "badgeId"
2968
+ ],
2969
+ "additionalProperties": false
2970
+ },
2971
+ "addPoints": {
2972
+ "type": "object",
2973
+ "properties": {
2974
+ "kind": {
2975
+ "type": "string",
2976
+ "const": "gamification:addPoints"
2977
+ },
2978
+ "points": {
2979
+ "type": "number"
2980
+ },
2981
+ "reason": {
2982
+ "type": "string"
2983
+ },
2984
+ "label": {
2985
+ "type": "string"
2986
+ },
2987
+ "activation": {
2988
+ "type": "object",
2989
+ "properties": {
2990
+ "routes": {
2991
+ "type": "object",
2992
+ "properties": {
2993
+ "include": {
2994
+ "type": "array",
2995
+ "items": {
2996
+ "type": "string"
2997
+ }
2998
+ },
2999
+ "exclude": {
3000
+ "type": "array",
3001
+ "items": {
3002
+ "type": "string"
3003
+ }
3004
+ }
3005
+ },
3006
+ "additionalProperties": false
3007
+ },
3008
+ "strategy": {
3009
+ "anyOf": [
3010
+ {
3011
+ "type": "object",
3012
+ "properties": {
3013
+ "type": {
3014
+ "type": "string",
3015
+ "const": "rules"
3016
+ },
3017
+ "rules": {
3018
+ "type": "array",
3019
+ "items": {
3020
+ "type": "object",
3021
+ "properties": {
3022
+ "conditions": {
3023
+ "type": "array",
3024
+ "items": {
3025
+ "type": "object",
3026
+ "properties": {
3027
+ "type": {
3028
+ "type": "string"
3029
+ }
3030
+ },
3031
+ "required": [
3032
+ "type"
3033
+ ],
3034
+ "additionalProperties": true
3035
+ }
3036
+ },
3037
+ "value": {}
3038
+ },
3039
+ "required": [
3040
+ "conditions"
3041
+ ],
3042
+ "additionalProperties": false
3043
+ }
3044
+ },
3045
+ "default": {}
3046
+ },
3047
+ "required": [
3048
+ "type",
3049
+ "rules"
3050
+ ],
3051
+ "additionalProperties": false
3052
+ },
3053
+ {
3054
+ "type": "object",
3055
+ "properties": {
3056
+ "type": {
3057
+ "type": "string",
3058
+ "const": "score"
3059
+ },
3060
+ "field": {
3061
+ "type": "string"
3062
+ },
3063
+ "threshold": {
3064
+ "type": "number"
3065
+ },
3066
+ "above": {},
3067
+ "below": {}
3068
+ },
3069
+ "required": [
3070
+ "type",
3071
+ "field",
3072
+ "threshold"
3073
+ ],
3074
+ "additionalProperties": false
3075
+ },
3076
+ {
3077
+ "type": "object",
3078
+ "properties": {
3079
+ "type": {
3080
+ "type": "string",
3081
+ "const": "model"
3082
+ },
3083
+ "modelId": {
3084
+ "type": "string"
3085
+ },
3086
+ "inputs": {
3087
+ "type": "array",
3088
+ "items": {
3089
+ "type": "string"
3090
+ }
3091
+ },
3092
+ "outputMapping": {
3093
+ "type": "object",
3094
+ "additionalProperties": {}
3095
+ },
3096
+ "default": {}
2109
3097
  },
2110
- {
2111
- "type": "null"
2112
- }
2113
- ]
2114
- }
2115
- },
2116
- "required": [
2117
- "kind",
2118
- "config"
2119
- ],
2120
- "additionalProperties": false
2121
- }
2122
- },
2123
- "itemId": {
2124
- "type": "string"
2125
- },
2126
- "order": {
2127
- "type": "array",
2128
- "items": {
2129
- "type": "string"
2130
- }
2131
- },
2132
- "position": {
2133
- "type": "string",
2134
- "enum": [
2135
- "prepend",
2136
- "append",
2137
- "before",
2138
- "after"
2139
- ]
2140
- },
2141
- "anchorId": {
2142
- "type": "string"
2143
- }
2144
- },
2145
- "required": [
2146
- "kind",
2147
- "operation"
2148
- ],
2149
- "additionalProperties": false
2150
- },
2151
- "awardBadge": {
2152
- "type": "object",
2153
- "properties": {
2154
- "kind": {
2155
- "type": "string",
2156
- "const": "gamification:awardBadge"
2157
- },
2158
- "badgeId": {
2159
- "type": "string"
2160
- },
2161
- "anchorId": {
2162
- "type": "string"
2163
- },
2164
- "label": {
2165
- "type": "string"
2166
- }
2167
- },
2168
- "required": [
2169
- "kind",
2170
- "badgeId"
2171
- ],
2172
- "additionalProperties": false
2173
- },
2174
- "addPoints": {
2175
- "type": "object",
2176
- "properties": {
2177
- "kind": {
2178
- "type": "string",
2179
- "const": "gamification:addPoints"
2180
- },
2181
- "points": {
2182
- "type": "number"
2183
- },
2184
- "reason": {
2185
- "type": "string"
2186
- },
2187
- "label": {
2188
- "type": "string"
3098
+ "required": [
3099
+ "type",
3100
+ "modelId",
3101
+ "inputs",
3102
+ "outputMapping"
3103
+ ],
3104
+ "additionalProperties": false
3105
+ },
3106
+ {
3107
+ "type": "object",
3108
+ "properties": {
3109
+ "type": {
3110
+ "type": "string",
3111
+ "const": "external"
3112
+ },
3113
+ "endpoint": {
3114
+ "type": "string"
3115
+ },
3116
+ "method": {
3117
+ "type": "string",
3118
+ "enum": [
3119
+ "GET",
3120
+ "POST"
3121
+ ]
3122
+ },
3123
+ "default": {},
3124
+ "timeoutMs": {
3125
+ "type": "number"
3126
+ }
3127
+ },
3128
+ "required": [
3129
+ "type",
3130
+ "endpoint"
3131
+ ],
3132
+ "additionalProperties": false
3133
+ }
3134
+ ]
3135
+ }
3136
+ },
3137
+ "required": [
3138
+ "routes"
3139
+ ],
3140
+ "additionalProperties": false
2189
3141
  }
2190
3142
  },
2191
3143
  "required": [
@@ -2256,16 +3208,264 @@
2256
3208
  "conditions": {
2257
3209
  "type": "array",
2258
3210
  "items": {
2259
- "type": "object",
2260
- "properties": {
2261
- "type": {
2262
- "type": "string"
3211
+ "anyOf": [
3212
+ {
3213
+ "type": "object",
3214
+ "properties": {
3215
+ "type": {
3216
+ "type": "string",
3217
+ "const": "page_url"
3218
+ },
3219
+ "url": {
3220
+ "type": "string"
3221
+ }
3222
+ },
3223
+ "required": [
3224
+ "type",
3225
+ "url"
3226
+ ],
3227
+ "additionalProperties": false
3228
+ },
3229
+ {
3230
+ "type": "object",
3231
+ "properties": {
3232
+ "type": {
3233
+ "type": "string",
3234
+ "const": "route"
3235
+ },
3236
+ "routeId": {
3237
+ "type": "string"
3238
+ }
3239
+ },
3240
+ "required": [
3241
+ "type",
3242
+ "routeId"
3243
+ ],
3244
+ "additionalProperties": false
3245
+ },
3246
+ {
3247
+ "type": "object",
3248
+ "properties": {
3249
+ "type": {
3250
+ "type": "string",
3251
+ "const": "anchor_visible"
3252
+ },
3253
+ "anchorId": {
3254
+ "type": "string"
3255
+ },
3256
+ "state": {
3257
+ "type": "string",
3258
+ "enum": [
3259
+ "visible",
3260
+ "present",
3261
+ "absent"
3262
+ ]
3263
+ }
3264
+ },
3265
+ "required": [
3266
+ "type",
3267
+ "anchorId",
3268
+ "state"
3269
+ ],
3270
+ "additionalProperties": false
3271
+ },
3272
+ {
3273
+ "type": "object",
3274
+ "properties": {
3275
+ "type": {
3276
+ "type": "string",
3277
+ "const": "event_occurred"
3278
+ },
3279
+ "eventName": {
3280
+ "type": "string"
3281
+ },
3282
+ "withinMs": {
3283
+ "type": "number"
3284
+ }
3285
+ },
3286
+ "required": [
3287
+ "type",
3288
+ "eventName"
3289
+ ],
3290
+ "additionalProperties": false
3291
+ },
3292
+ {
3293
+ "type": "object",
3294
+ "properties": {
3295
+ "type": {
3296
+ "type": "string",
3297
+ "const": "state_equals"
3298
+ },
3299
+ "key": {
3300
+ "type": "string"
3301
+ },
3302
+ "value": {}
3303
+ },
3304
+ "required": [
3305
+ "type",
3306
+ "key"
3307
+ ],
3308
+ "additionalProperties": false
3309
+ },
3310
+ {
3311
+ "type": "object",
3312
+ "properties": {
3313
+ "type": {
3314
+ "type": "string",
3315
+ "const": "viewport"
3316
+ },
3317
+ "minWidth": {
3318
+ "type": "number"
3319
+ },
3320
+ "maxWidth": {
3321
+ "type": "number"
3322
+ },
3323
+ "minHeight": {
3324
+ "type": "number"
3325
+ },
3326
+ "maxHeight": {
3327
+ "type": "number"
3328
+ }
3329
+ },
3330
+ "required": [
3331
+ "type"
3332
+ ],
3333
+ "additionalProperties": false
3334
+ },
3335
+ {
3336
+ "type": "object",
3337
+ "properties": {
3338
+ "type": {
3339
+ "type": "string",
3340
+ "const": "session_metric"
3341
+ },
3342
+ "key": {
3343
+ "type": "string"
3344
+ },
3345
+ "operator": {
3346
+ "type": "string",
3347
+ "enum": [
3348
+ "gte",
3349
+ "lte",
3350
+ "eq",
3351
+ "gt",
3352
+ "lt"
3353
+ ]
3354
+ },
3355
+ "threshold": {
3356
+ "type": "number"
3357
+ }
3358
+ },
3359
+ "required": [
3360
+ "type",
3361
+ "key",
3362
+ "operator",
3363
+ "threshold"
3364
+ ],
3365
+ "additionalProperties": false
3366
+ },
3367
+ {
3368
+ "type": "object",
3369
+ "properties": {
3370
+ "type": {
3371
+ "type": "string",
3372
+ "const": "dismissed"
3373
+ },
3374
+ "key": {
3375
+ "type": "string"
3376
+ },
3377
+ "inverted": {
3378
+ "type": "boolean"
3379
+ }
3380
+ },
3381
+ "required": [
3382
+ "type",
3383
+ "key"
3384
+ ],
3385
+ "additionalProperties": false
3386
+ },
3387
+ {
3388
+ "type": "object",
3389
+ "properties": {
3390
+ "type": {
3391
+ "type": "string",
3392
+ "const": "cooldown_active"
3393
+ },
3394
+ "key": {
3395
+ "type": "string"
3396
+ },
3397
+ "inverted": {
3398
+ "type": "boolean"
3399
+ }
3400
+ },
3401
+ "required": [
3402
+ "type",
3403
+ "key"
3404
+ ],
3405
+ "additionalProperties": false
3406
+ },
3407
+ {
3408
+ "type": "object",
3409
+ "properties": {
3410
+ "type": {
3411
+ "type": "string",
3412
+ "const": "frequency_limit"
3413
+ },
3414
+ "key": {
3415
+ "type": "string"
3416
+ },
3417
+ "limit": {
3418
+ "type": "number"
3419
+ },
3420
+ "inverted": {
3421
+ "type": "boolean"
3422
+ }
3423
+ },
3424
+ "required": [
3425
+ "type",
3426
+ "key",
3427
+ "limit"
3428
+ ],
3429
+ "additionalProperties": false
3430
+ },
3431
+ {
3432
+ "type": "object",
3433
+ "properties": {
3434
+ "type": {
3435
+ "type": "string",
3436
+ "const": "event_count"
3437
+ },
3438
+ "key": {
3439
+ "type": "string"
3440
+ },
3441
+ "operator": {
3442
+ "type": "string",
3443
+ "enum": [
3444
+ "gte",
3445
+ "lte",
3446
+ "eq",
3447
+ "gt",
3448
+ "lt"
3449
+ ]
3450
+ },
3451
+ "count": {
3452
+ "type": "integer",
3453
+ "minimum": 0
3454
+ },
3455
+ "withinMs": {
3456
+ "type": "number",
3457
+ "exclusiveMinimum": 0
3458
+ }
3459
+ },
3460
+ "required": [
3461
+ "type",
3462
+ "key",
3463
+ "operator",
3464
+ "count"
3465
+ ],
3466
+ "additionalProperties": false
2263
3467
  }
2264
- },
2265
- "required": [
2266
- "type"
2267
- ],
2268
- "additionalProperties": true
3468
+ ]
2269
3469
  }
2270
3470
  },
2271
3471
  "value": {}
@@ -2628,16 +3828,264 @@
2628
3828
  "conditions": {
2629
3829
  "type": "array",
2630
3830
  "items": {
2631
- "type": "object",
2632
- "properties": {
2633
- "type": {
2634
- "type": "string"
3831
+ "anyOf": [
3832
+ {
3833
+ "type": "object",
3834
+ "properties": {
3835
+ "type": {
3836
+ "type": "string",
3837
+ "const": "page_url"
3838
+ },
3839
+ "url": {
3840
+ "type": "string"
3841
+ }
3842
+ },
3843
+ "required": [
3844
+ "type",
3845
+ "url"
3846
+ ],
3847
+ "additionalProperties": false
3848
+ },
3849
+ {
3850
+ "type": "object",
3851
+ "properties": {
3852
+ "type": {
3853
+ "type": "string",
3854
+ "const": "route"
3855
+ },
3856
+ "routeId": {
3857
+ "type": "string"
3858
+ }
3859
+ },
3860
+ "required": [
3861
+ "type",
3862
+ "routeId"
3863
+ ],
3864
+ "additionalProperties": false
3865
+ },
3866
+ {
3867
+ "type": "object",
3868
+ "properties": {
3869
+ "type": {
3870
+ "type": "string",
3871
+ "const": "anchor_visible"
3872
+ },
3873
+ "anchorId": {
3874
+ "type": "string"
3875
+ },
3876
+ "state": {
3877
+ "type": "string",
3878
+ "enum": [
3879
+ "visible",
3880
+ "present",
3881
+ "absent"
3882
+ ]
3883
+ }
3884
+ },
3885
+ "required": [
3886
+ "type",
3887
+ "anchorId",
3888
+ "state"
3889
+ ],
3890
+ "additionalProperties": false
3891
+ },
3892
+ {
3893
+ "type": "object",
3894
+ "properties": {
3895
+ "type": {
3896
+ "type": "string",
3897
+ "const": "event_occurred"
3898
+ },
3899
+ "eventName": {
3900
+ "type": "string"
3901
+ },
3902
+ "withinMs": {
3903
+ "type": "number"
3904
+ }
3905
+ },
3906
+ "required": [
3907
+ "type",
3908
+ "eventName"
3909
+ ],
3910
+ "additionalProperties": false
3911
+ },
3912
+ {
3913
+ "type": "object",
3914
+ "properties": {
3915
+ "type": {
3916
+ "type": "string",
3917
+ "const": "state_equals"
3918
+ },
3919
+ "key": {
3920
+ "type": "string"
3921
+ },
3922
+ "value": {}
3923
+ },
3924
+ "required": [
3925
+ "type",
3926
+ "key"
3927
+ ],
3928
+ "additionalProperties": false
3929
+ },
3930
+ {
3931
+ "type": "object",
3932
+ "properties": {
3933
+ "type": {
3934
+ "type": "string",
3935
+ "const": "viewport"
3936
+ },
3937
+ "minWidth": {
3938
+ "type": "number"
3939
+ },
3940
+ "maxWidth": {
3941
+ "type": "number"
3942
+ },
3943
+ "minHeight": {
3944
+ "type": "number"
3945
+ },
3946
+ "maxHeight": {
3947
+ "type": "number"
3948
+ }
3949
+ },
3950
+ "required": [
3951
+ "type"
3952
+ ],
3953
+ "additionalProperties": false
3954
+ },
3955
+ {
3956
+ "type": "object",
3957
+ "properties": {
3958
+ "type": {
3959
+ "type": "string",
3960
+ "const": "session_metric"
3961
+ },
3962
+ "key": {
3963
+ "type": "string"
3964
+ },
3965
+ "operator": {
3966
+ "type": "string",
3967
+ "enum": [
3968
+ "gte",
3969
+ "lte",
3970
+ "eq",
3971
+ "gt",
3972
+ "lt"
3973
+ ]
3974
+ },
3975
+ "threshold": {
3976
+ "type": "number"
3977
+ }
3978
+ },
3979
+ "required": [
3980
+ "type",
3981
+ "key",
3982
+ "operator",
3983
+ "threshold"
3984
+ ],
3985
+ "additionalProperties": false
3986
+ },
3987
+ {
3988
+ "type": "object",
3989
+ "properties": {
3990
+ "type": {
3991
+ "type": "string",
3992
+ "const": "dismissed"
3993
+ },
3994
+ "key": {
3995
+ "type": "string"
3996
+ },
3997
+ "inverted": {
3998
+ "type": "boolean"
3999
+ }
4000
+ },
4001
+ "required": [
4002
+ "type",
4003
+ "key"
4004
+ ],
4005
+ "additionalProperties": false
4006
+ },
4007
+ {
4008
+ "type": "object",
4009
+ "properties": {
4010
+ "type": {
4011
+ "type": "string",
4012
+ "const": "cooldown_active"
4013
+ },
4014
+ "key": {
4015
+ "type": "string"
4016
+ },
4017
+ "inverted": {
4018
+ "type": "boolean"
4019
+ }
4020
+ },
4021
+ "required": [
4022
+ "type",
4023
+ "key"
4024
+ ],
4025
+ "additionalProperties": false
4026
+ },
4027
+ {
4028
+ "type": "object",
4029
+ "properties": {
4030
+ "type": {
4031
+ "type": "string",
4032
+ "const": "frequency_limit"
4033
+ },
4034
+ "key": {
4035
+ "type": "string"
4036
+ },
4037
+ "limit": {
4038
+ "type": "number"
4039
+ },
4040
+ "inverted": {
4041
+ "type": "boolean"
4042
+ }
4043
+ },
4044
+ "required": [
4045
+ "type",
4046
+ "key",
4047
+ "limit"
4048
+ ],
4049
+ "additionalProperties": false
4050
+ },
4051
+ {
4052
+ "type": "object",
4053
+ "properties": {
4054
+ "type": {
4055
+ "type": "string",
4056
+ "const": "event_count"
4057
+ },
4058
+ "key": {
4059
+ "type": "string"
4060
+ },
4061
+ "operator": {
4062
+ "type": "string",
4063
+ "enum": [
4064
+ "gte",
4065
+ "lte",
4066
+ "eq",
4067
+ "gt",
4068
+ "lt"
4069
+ ]
4070
+ },
4071
+ "count": {
4072
+ "type": "integer",
4073
+ "minimum": 0
4074
+ },
4075
+ "withinMs": {
4076
+ "type": "number",
4077
+ "exclusiveMinimum": 0
4078
+ }
4079
+ },
4080
+ "required": [
4081
+ "type",
4082
+ "key",
4083
+ "operator",
4084
+ "count"
4085
+ ],
4086
+ "additionalProperties": false
2635
4087
  }
2636
- },
2637
- "required": [
2638
- "type"
2639
- ],
2640
- "additionalProperties": true
4088
+ ]
2641
4089
  }
2642
4090
  },
2643
4091
  "value": {}
@@ -2857,16 +4305,264 @@
2857
4305
  "conditions": {
2858
4306
  "type": "array",
2859
4307
  "items": {
2860
- "type": "object",
2861
- "properties": {
2862
- "type": {
2863
- "type": "string"
4308
+ "anyOf": [
4309
+ {
4310
+ "type": "object",
4311
+ "properties": {
4312
+ "type": {
4313
+ "type": "string",
4314
+ "const": "page_url"
4315
+ },
4316
+ "url": {
4317
+ "type": "string"
4318
+ }
4319
+ },
4320
+ "required": [
4321
+ "type",
4322
+ "url"
4323
+ ],
4324
+ "additionalProperties": false
4325
+ },
4326
+ {
4327
+ "type": "object",
4328
+ "properties": {
4329
+ "type": {
4330
+ "type": "string",
4331
+ "const": "route"
4332
+ },
4333
+ "routeId": {
4334
+ "type": "string"
4335
+ }
4336
+ },
4337
+ "required": [
4338
+ "type",
4339
+ "routeId"
4340
+ ],
4341
+ "additionalProperties": false
4342
+ },
4343
+ {
4344
+ "type": "object",
4345
+ "properties": {
4346
+ "type": {
4347
+ "type": "string",
4348
+ "const": "anchor_visible"
4349
+ },
4350
+ "anchorId": {
4351
+ "type": "string"
4352
+ },
4353
+ "state": {
4354
+ "type": "string",
4355
+ "enum": [
4356
+ "visible",
4357
+ "present",
4358
+ "absent"
4359
+ ]
4360
+ }
4361
+ },
4362
+ "required": [
4363
+ "type",
4364
+ "anchorId",
4365
+ "state"
4366
+ ],
4367
+ "additionalProperties": false
4368
+ },
4369
+ {
4370
+ "type": "object",
4371
+ "properties": {
4372
+ "type": {
4373
+ "type": "string",
4374
+ "const": "event_occurred"
4375
+ },
4376
+ "eventName": {
4377
+ "type": "string"
4378
+ },
4379
+ "withinMs": {
4380
+ "type": "number"
4381
+ }
4382
+ },
4383
+ "required": [
4384
+ "type",
4385
+ "eventName"
4386
+ ],
4387
+ "additionalProperties": false
4388
+ },
4389
+ {
4390
+ "type": "object",
4391
+ "properties": {
4392
+ "type": {
4393
+ "type": "string",
4394
+ "const": "state_equals"
4395
+ },
4396
+ "key": {
4397
+ "type": "string"
4398
+ },
4399
+ "value": {}
4400
+ },
4401
+ "required": [
4402
+ "type",
4403
+ "key"
4404
+ ],
4405
+ "additionalProperties": false
4406
+ },
4407
+ {
4408
+ "type": "object",
4409
+ "properties": {
4410
+ "type": {
4411
+ "type": "string",
4412
+ "const": "viewport"
4413
+ },
4414
+ "minWidth": {
4415
+ "type": "number"
4416
+ },
4417
+ "maxWidth": {
4418
+ "type": "number"
4419
+ },
4420
+ "minHeight": {
4421
+ "type": "number"
4422
+ },
4423
+ "maxHeight": {
4424
+ "type": "number"
4425
+ }
4426
+ },
4427
+ "required": [
4428
+ "type"
4429
+ ],
4430
+ "additionalProperties": false
4431
+ },
4432
+ {
4433
+ "type": "object",
4434
+ "properties": {
4435
+ "type": {
4436
+ "type": "string",
4437
+ "const": "session_metric"
4438
+ },
4439
+ "key": {
4440
+ "type": "string"
4441
+ },
4442
+ "operator": {
4443
+ "type": "string",
4444
+ "enum": [
4445
+ "gte",
4446
+ "lte",
4447
+ "eq",
4448
+ "gt",
4449
+ "lt"
4450
+ ]
4451
+ },
4452
+ "threshold": {
4453
+ "type": "number"
4454
+ }
4455
+ },
4456
+ "required": [
4457
+ "type",
4458
+ "key",
4459
+ "operator",
4460
+ "threshold"
4461
+ ],
4462
+ "additionalProperties": false
4463
+ },
4464
+ {
4465
+ "type": "object",
4466
+ "properties": {
4467
+ "type": {
4468
+ "type": "string",
4469
+ "const": "dismissed"
4470
+ },
4471
+ "key": {
4472
+ "type": "string"
4473
+ },
4474
+ "inverted": {
4475
+ "type": "boolean"
4476
+ }
4477
+ },
4478
+ "required": [
4479
+ "type",
4480
+ "key"
4481
+ ],
4482
+ "additionalProperties": false
4483
+ },
4484
+ {
4485
+ "type": "object",
4486
+ "properties": {
4487
+ "type": {
4488
+ "type": "string",
4489
+ "const": "cooldown_active"
4490
+ },
4491
+ "key": {
4492
+ "type": "string"
4493
+ },
4494
+ "inverted": {
4495
+ "type": "boolean"
4496
+ }
4497
+ },
4498
+ "required": [
4499
+ "type",
4500
+ "key"
4501
+ ],
4502
+ "additionalProperties": false
4503
+ },
4504
+ {
4505
+ "type": "object",
4506
+ "properties": {
4507
+ "type": {
4508
+ "type": "string",
4509
+ "const": "frequency_limit"
4510
+ },
4511
+ "key": {
4512
+ "type": "string"
4513
+ },
4514
+ "limit": {
4515
+ "type": "number"
4516
+ },
4517
+ "inverted": {
4518
+ "type": "boolean"
4519
+ }
4520
+ },
4521
+ "required": [
4522
+ "type",
4523
+ "key",
4524
+ "limit"
4525
+ ],
4526
+ "additionalProperties": false
4527
+ },
4528
+ {
4529
+ "type": "object",
4530
+ "properties": {
4531
+ "type": {
4532
+ "type": "string",
4533
+ "const": "event_count"
4534
+ },
4535
+ "key": {
4536
+ "type": "string"
4537
+ },
4538
+ "operator": {
4539
+ "type": "string",
4540
+ "enum": [
4541
+ "gte",
4542
+ "lte",
4543
+ "eq",
4544
+ "gt",
4545
+ "lt"
4546
+ ]
4547
+ },
4548
+ "count": {
4549
+ "type": "integer",
4550
+ "minimum": 0
4551
+ },
4552
+ "withinMs": {
4553
+ "type": "number",
4554
+ "exclusiveMinimum": 0
4555
+ }
4556
+ },
4557
+ "required": [
4558
+ "type",
4559
+ "key",
4560
+ "operator",
4561
+ "count"
4562
+ ],
4563
+ "additionalProperties": false
2864
4564
  }
2865
- },
2866
- "required": [
2867
- "type"
2868
- ],
2869
- "additionalProperties": true
4565
+ ]
2870
4566
  }
2871
4567
  },
2872
4568
  "value": {}
@@ -3127,16 +4823,264 @@
3127
4823
  "conditions": {
3128
4824
  "type": "array",
3129
4825
  "items": {
3130
- "type": "object",
3131
- "properties": {
3132
- "type": {
3133
- "type": "string"
4826
+ "anyOf": [
4827
+ {
4828
+ "type": "object",
4829
+ "properties": {
4830
+ "type": {
4831
+ "type": "string",
4832
+ "const": "page_url"
4833
+ },
4834
+ "url": {
4835
+ "type": "string"
4836
+ }
4837
+ },
4838
+ "required": [
4839
+ "type",
4840
+ "url"
4841
+ ],
4842
+ "additionalProperties": false
4843
+ },
4844
+ {
4845
+ "type": "object",
4846
+ "properties": {
4847
+ "type": {
4848
+ "type": "string",
4849
+ "const": "route"
4850
+ },
4851
+ "routeId": {
4852
+ "type": "string"
4853
+ }
4854
+ },
4855
+ "required": [
4856
+ "type",
4857
+ "routeId"
4858
+ ],
4859
+ "additionalProperties": false
4860
+ },
4861
+ {
4862
+ "type": "object",
4863
+ "properties": {
4864
+ "type": {
4865
+ "type": "string",
4866
+ "const": "anchor_visible"
4867
+ },
4868
+ "anchorId": {
4869
+ "type": "string"
4870
+ },
4871
+ "state": {
4872
+ "type": "string",
4873
+ "enum": [
4874
+ "visible",
4875
+ "present",
4876
+ "absent"
4877
+ ]
4878
+ }
4879
+ },
4880
+ "required": [
4881
+ "type",
4882
+ "anchorId",
4883
+ "state"
4884
+ ],
4885
+ "additionalProperties": false
4886
+ },
4887
+ {
4888
+ "type": "object",
4889
+ "properties": {
4890
+ "type": {
4891
+ "type": "string",
4892
+ "const": "event_occurred"
4893
+ },
4894
+ "eventName": {
4895
+ "type": "string"
4896
+ },
4897
+ "withinMs": {
4898
+ "type": "number"
4899
+ }
4900
+ },
4901
+ "required": [
4902
+ "type",
4903
+ "eventName"
4904
+ ],
4905
+ "additionalProperties": false
4906
+ },
4907
+ {
4908
+ "type": "object",
4909
+ "properties": {
4910
+ "type": {
4911
+ "type": "string",
4912
+ "const": "state_equals"
4913
+ },
4914
+ "key": {
4915
+ "type": "string"
4916
+ },
4917
+ "value": {}
4918
+ },
4919
+ "required": [
4920
+ "type",
4921
+ "key"
4922
+ ],
4923
+ "additionalProperties": false
4924
+ },
4925
+ {
4926
+ "type": "object",
4927
+ "properties": {
4928
+ "type": {
4929
+ "type": "string",
4930
+ "const": "viewport"
4931
+ },
4932
+ "minWidth": {
4933
+ "type": "number"
4934
+ },
4935
+ "maxWidth": {
4936
+ "type": "number"
4937
+ },
4938
+ "minHeight": {
4939
+ "type": "number"
4940
+ },
4941
+ "maxHeight": {
4942
+ "type": "number"
4943
+ }
4944
+ },
4945
+ "required": [
4946
+ "type"
4947
+ ],
4948
+ "additionalProperties": false
4949
+ },
4950
+ {
4951
+ "type": "object",
4952
+ "properties": {
4953
+ "type": {
4954
+ "type": "string",
4955
+ "const": "session_metric"
4956
+ },
4957
+ "key": {
4958
+ "type": "string"
4959
+ },
4960
+ "operator": {
4961
+ "type": "string",
4962
+ "enum": [
4963
+ "gte",
4964
+ "lte",
4965
+ "eq",
4966
+ "gt",
4967
+ "lt"
4968
+ ]
4969
+ },
4970
+ "threshold": {
4971
+ "type": "number"
4972
+ }
4973
+ },
4974
+ "required": [
4975
+ "type",
4976
+ "key",
4977
+ "operator",
4978
+ "threshold"
4979
+ ],
4980
+ "additionalProperties": false
4981
+ },
4982
+ {
4983
+ "type": "object",
4984
+ "properties": {
4985
+ "type": {
4986
+ "type": "string",
4987
+ "const": "dismissed"
4988
+ },
4989
+ "key": {
4990
+ "type": "string"
4991
+ },
4992
+ "inverted": {
4993
+ "type": "boolean"
4994
+ }
4995
+ },
4996
+ "required": [
4997
+ "type",
4998
+ "key"
4999
+ ],
5000
+ "additionalProperties": false
5001
+ },
5002
+ {
5003
+ "type": "object",
5004
+ "properties": {
5005
+ "type": {
5006
+ "type": "string",
5007
+ "const": "cooldown_active"
5008
+ },
5009
+ "key": {
5010
+ "type": "string"
5011
+ },
5012
+ "inverted": {
5013
+ "type": "boolean"
5014
+ }
5015
+ },
5016
+ "required": [
5017
+ "type",
5018
+ "key"
5019
+ ],
5020
+ "additionalProperties": false
5021
+ },
5022
+ {
5023
+ "type": "object",
5024
+ "properties": {
5025
+ "type": {
5026
+ "type": "string",
5027
+ "const": "frequency_limit"
5028
+ },
5029
+ "key": {
5030
+ "type": "string"
5031
+ },
5032
+ "limit": {
5033
+ "type": "number"
5034
+ },
5035
+ "inverted": {
5036
+ "type": "boolean"
5037
+ }
5038
+ },
5039
+ "required": [
5040
+ "type",
5041
+ "key",
5042
+ "limit"
5043
+ ],
5044
+ "additionalProperties": false
5045
+ },
5046
+ {
5047
+ "type": "object",
5048
+ "properties": {
5049
+ "type": {
5050
+ "type": "string",
5051
+ "const": "event_count"
5052
+ },
5053
+ "key": {
5054
+ "type": "string"
5055
+ },
5056
+ "operator": {
5057
+ "type": "string",
5058
+ "enum": [
5059
+ "gte",
5060
+ "lte",
5061
+ "eq",
5062
+ "gt",
5063
+ "lt"
5064
+ ]
5065
+ },
5066
+ "count": {
5067
+ "type": "integer",
5068
+ "minimum": 0
5069
+ },
5070
+ "withinMs": {
5071
+ "type": "number",
5072
+ "exclusiveMinimum": 0
5073
+ }
5074
+ },
5075
+ "required": [
5076
+ "type",
5077
+ "key",
5078
+ "operator",
5079
+ "count"
5080
+ ],
5081
+ "additionalProperties": false
3134
5082
  }
3135
- },
3136
- "required": [
3137
- "type"
3138
- ],
3139
- "additionalProperties": true
5083
+ ]
3140
5084
  }
3141
5085
  },
3142
5086
  "value": {}
@@ -3409,16 +5353,264 @@
3409
5353
  "conditions": {
3410
5354
  "type": "array",
3411
5355
  "items": {
3412
- "type": "object",
3413
- "properties": {
3414
- "type": {
3415
- "type": "string"
5356
+ "anyOf": [
5357
+ {
5358
+ "type": "object",
5359
+ "properties": {
5360
+ "type": {
5361
+ "type": "string",
5362
+ "const": "page_url"
5363
+ },
5364
+ "url": {
5365
+ "type": "string"
5366
+ }
5367
+ },
5368
+ "required": [
5369
+ "type",
5370
+ "url"
5371
+ ],
5372
+ "additionalProperties": false
5373
+ },
5374
+ {
5375
+ "type": "object",
5376
+ "properties": {
5377
+ "type": {
5378
+ "type": "string",
5379
+ "const": "route"
5380
+ },
5381
+ "routeId": {
5382
+ "type": "string"
5383
+ }
5384
+ },
5385
+ "required": [
5386
+ "type",
5387
+ "routeId"
5388
+ ],
5389
+ "additionalProperties": false
5390
+ },
5391
+ {
5392
+ "type": "object",
5393
+ "properties": {
5394
+ "type": {
5395
+ "type": "string",
5396
+ "const": "anchor_visible"
5397
+ },
5398
+ "anchorId": {
5399
+ "type": "string"
5400
+ },
5401
+ "state": {
5402
+ "type": "string",
5403
+ "enum": [
5404
+ "visible",
5405
+ "present",
5406
+ "absent"
5407
+ ]
5408
+ }
5409
+ },
5410
+ "required": [
5411
+ "type",
5412
+ "anchorId",
5413
+ "state"
5414
+ ],
5415
+ "additionalProperties": false
5416
+ },
5417
+ {
5418
+ "type": "object",
5419
+ "properties": {
5420
+ "type": {
5421
+ "type": "string",
5422
+ "const": "event_occurred"
5423
+ },
5424
+ "eventName": {
5425
+ "type": "string"
5426
+ },
5427
+ "withinMs": {
5428
+ "type": "number"
5429
+ }
5430
+ },
5431
+ "required": [
5432
+ "type",
5433
+ "eventName"
5434
+ ],
5435
+ "additionalProperties": false
5436
+ },
5437
+ {
5438
+ "type": "object",
5439
+ "properties": {
5440
+ "type": {
5441
+ "type": "string",
5442
+ "const": "state_equals"
5443
+ },
5444
+ "key": {
5445
+ "type": "string"
5446
+ },
5447
+ "value": {}
5448
+ },
5449
+ "required": [
5450
+ "type",
5451
+ "key"
5452
+ ],
5453
+ "additionalProperties": false
5454
+ },
5455
+ {
5456
+ "type": "object",
5457
+ "properties": {
5458
+ "type": {
5459
+ "type": "string",
5460
+ "const": "viewport"
5461
+ },
5462
+ "minWidth": {
5463
+ "type": "number"
5464
+ },
5465
+ "maxWidth": {
5466
+ "type": "number"
5467
+ },
5468
+ "minHeight": {
5469
+ "type": "number"
5470
+ },
5471
+ "maxHeight": {
5472
+ "type": "number"
5473
+ }
5474
+ },
5475
+ "required": [
5476
+ "type"
5477
+ ],
5478
+ "additionalProperties": false
5479
+ },
5480
+ {
5481
+ "type": "object",
5482
+ "properties": {
5483
+ "type": {
5484
+ "type": "string",
5485
+ "const": "session_metric"
5486
+ },
5487
+ "key": {
5488
+ "type": "string"
5489
+ },
5490
+ "operator": {
5491
+ "type": "string",
5492
+ "enum": [
5493
+ "gte",
5494
+ "lte",
5495
+ "eq",
5496
+ "gt",
5497
+ "lt"
5498
+ ]
5499
+ },
5500
+ "threshold": {
5501
+ "type": "number"
5502
+ }
5503
+ },
5504
+ "required": [
5505
+ "type",
5506
+ "key",
5507
+ "operator",
5508
+ "threshold"
5509
+ ],
5510
+ "additionalProperties": false
5511
+ },
5512
+ {
5513
+ "type": "object",
5514
+ "properties": {
5515
+ "type": {
5516
+ "type": "string",
5517
+ "const": "dismissed"
5518
+ },
5519
+ "key": {
5520
+ "type": "string"
5521
+ },
5522
+ "inverted": {
5523
+ "type": "boolean"
5524
+ }
5525
+ },
5526
+ "required": [
5527
+ "type",
5528
+ "key"
5529
+ ],
5530
+ "additionalProperties": false
5531
+ },
5532
+ {
5533
+ "type": "object",
5534
+ "properties": {
5535
+ "type": {
5536
+ "type": "string",
5537
+ "const": "cooldown_active"
5538
+ },
5539
+ "key": {
5540
+ "type": "string"
5541
+ },
5542
+ "inverted": {
5543
+ "type": "boolean"
5544
+ }
5545
+ },
5546
+ "required": [
5547
+ "type",
5548
+ "key"
5549
+ ],
5550
+ "additionalProperties": false
5551
+ },
5552
+ {
5553
+ "type": "object",
5554
+ "properties": {
5555
+ "type": {
5556
+ "type": "string",
5557
+ "const": "frequency_limit"
5558
+ },
5559
+ "key": {
5560
+ "type": "string"
5561
+ },
5562
+ "limit": {
5563
+ "type": "number"
5564
+ },
5565
+ "inverted": {
5566
+ "type": "boolean"
5567
+ }
5568
+ },
5569
+ "required": [
5570
+ "type",
5571
+ "key",
5572
+ "limit"
5573
+ ],
5574
+ "additionalProperties": false
5575
+ },
5576
+ {
5577
+ "type": "object",
5578
+ "properties": {
5579
+ "type": {
5580
+ "type": "string",
5581
+ "const": "event_count"
5582
+ },
5583
+ "key": {
5584
+ "type": "string"
5585
+ },
5586
+ "operator": {
5587
+ "type": "string",
5588
+ "enum": [
5589
+ "gte",
5590
+ "lte",
5591
+ "eq",
5592
+ "gt",
5593
+ "lt"
5594
+ ]
5595
+ },
5596
+ "count": {
5597
+ "type": "integer",
5598
+ "minimum": 0
5599
+ },
5600
+ "withinMs": {
5601
+ "type": "number",
5602
+ "exclusiveMinimum": 0
5603
+ }
5604
+ },
5605
+ "required": [
5606
+ "type",
5607
+ "key",
5608
+ "operator",
5609
+ "count"
5610
+ ],
5611
+ "additionalProperties": false
3416
5612
  }
3417
- },
3418
- "required": [
3419
- "type"
3420
- ],
3421
- "additionalProperties": true
5613
+ ]
3422
5614
  }
3423
5615
  },
3424
5616
  "value": {}
@@ -3601,6 +5793,85 @@
3601
5793
  }
3602
5794
  },
3603
5795
  "additionalProperties": false
5796
+ },
5797
+ "actionStep": {
5798
+ "oneOf": [
5799
+ {
5800
+ "$ref": "#/$defs/addClass"
5801
+ },
5802
+ {
5803
+ "$ref": "#/$defs/addPoints"
5804
+ },
5805
+ {
5806
+ "$ref": "#/$defs/awardBadge"
5807
+ },
5808
+ {
5809
+ "$ref": "#/$defs/badge"
5810
+ },
5811
+ {
5812
+ "$ref": "#/$defs/faqQuestion"
5813
+ },
5814
+ {
5815
+ "$ref": "#/$defs/faqScrollTo"
5816
+ },
5817
+ {
5818
+ "$ref": "#/$defs/faqToggleItem"
5819
+ },
5820
+ {
5821
+ "$ref": "#/$defs/faqUpdate"
5822
+ },
5823
+ {
5824
+ "$ref": "#/$defs/highlight"
5825
+ },
5826
+ {
5827
+ "$ref": "#/$defs/insertHtml"
5828
+ },
5829
+ {
5830
+ "$ref": "#/$defs/modal"
5831
+ },
5832
+ {
5833
+ "$ref": "#/$defs/mountWidget"
5834
+ },
5835
+ {
5836
+ "$ref": "#/$defs/navigate"
5837
+ },
5838
+ {
5839
+ "$ref": "#/$defs/navTip"
5840
+ },
5841
+ {
5842
+ "$ref": "#/$defs/parallel"
5843
+ },
5844
+ {
5845
+ "$ref": "#/$defs/pulse"
5846
+ },
5847
+ {
5848
+ "$ref": "#/$defs/removeClass"
5849
+ },
5850
+ {
5851
+ "$ref": "#/$defs/scrollTo"
5852
+ },
5853
+ {
5854
+ "$ref": "#/$defs/sequence"
5855
+ },
5856
+ {
5857
+ "$ref": "#/$defs/setAttr"
5858
+ },
5859
+ {
5860
+ "$ref": "#/$defs/setStyle"
5861
+ },
5862
+ {
5863
+ "$ref": "#/$defs/setText"
5864
+ },
5865
+ {
5866
+ "$ref": "#/$defs/tooltip"
5867
+ },
5868
+ {
5869
+ "$ref": "#/$defs/tour"
5870
+ },
5871
+ {
5872
+ "$ref": "#/$defs/wait"
5873
+ }
5874
+ ]
3604
5875
  }
3605
5876
  }
3606
5877
  }