@pushwoosh/rpc-gateway-ai-assistant 0.1.194 → 0.1.196

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/data.js CHANGED
@@ -485,6 +485,128 @@ export const data = {
485
485
  }
486
486
  }
487
487
  },
488
+ "pushwoosh.aibuilder.v1.Timer": {
489
+ "type": "I",
490
+ "fields": {
491
+ "endTime": {
492
+ "type": "string"
493
+ },
494
+ "timezone": {
495
+ "type": "string"
496
+ },
497
+ "language": {
498
+ "type": "string"
499
+ },
500
+ "showLabels": {
501
+ "type": "boolean"
502
+ },
503
+ "backgroundColor": {
504
+ "type": "string"
505
+ },
506
+ "digitColor": {
507
+ "type": "string"
508
+ },
509
+ "labelColor": {
510
+ "type": "string"
511
+ },
512
+ "digitFontSize": {
513
+ "type": "number"
514
+ },
515
+ "labelFontSize": {
516
+ "type": "number"
517
+ },
518
+ "width": {
519
+ "type": "number"
520
+ },
521
+ "height": {
522
+ "type": "number"
523
+ },
524
+ "digitFontFamily": {
525
+ "type": "string"
526
+ },
527
+ "labelFontFamily": {
528
+ "type": "string"
529
+ }
530
+ }
531
+ },
532
+ "pushwoosh.aibuilder.v1.RawHtml": {
533
+ "type": "I",
534
+ "fields": {
535
+ "html": {
536
+ "type": "string"
537
+ },
538
+ "translations": {
539
+ "type": "string",
540
+ "mapKeyType": "string"
541
+ }
542
+ }
543
+ },
544
+ "pushwoosh.aibuilder.v1.MenuItem": {
545
+ "type": "I",
546
+ "fields": {
547
+ "text": {
548
+ "type": "string"
549
+ },
550
+ "url": {
551
+ "type": "string"
552
+ },
553
+ "target": {
554
+ "type": "string"
555
+ },
556
+ "translations": {
557
+ "type": "string",
558
+ "mapKeyType": "string"
559
+ }
560
+ }
561
+ },
562
+ "pushwoosh.aibuilder.v1.MenuLayout": {
563
+ "type": "E",
564
+ "values": [
565
+ "MENU_LAYOUT_UNSPECIFIED",
566
+ "MENU_LAYOUT_HORIZONTAL",
567
+ "MENU_LAYOUT_VERTICAL"
568
+ ]
569
+ },
570
+ "pushwoosh.aibuilder.v1.Menu": {
571
+ "type": "I",
572
+ "fields": {
573
+ "items": {
574
+ "type": "pushwoosh.aibuilder.v1.MenuItem",
575
+ "array": true
576
+ },
577
+ "linkColor": {
578
+ "type": "string"
579
+ },
580
+ "textColor": {
581
+ "type": "string"
582
+ },
583
+ "fontFamily": {
584
+ "type": "string"
585
+ },
586
+ "fontWeight": {
587
+ "type": "number"
588
+ },
589
+ "fontSize": {
590
+ "type": "number"
591
+ },
592
+ "letterSpacing": {
593
+ "type": "number"
594
+ },
595
+ "layout": {
596
+ "type": "pushwoosh.aibuilder.v1.MenuLayout"
597
+ },
598
+ "align": {
599
+ "type": "pushwoosh.aibuilder.v1.TextAlign"
600
+ },
601
+ "separator": {
602
+ "type": "string"
603
+ },
604
+ "itemPadding": {
605
+ "type": "pushwoosh.aibuilder.v1.EdgeInsets",
606
+ "optional": true
607
+ }
608
+ }
609
+ },
488
610
  "pushwoosh.aibuilder.v1.ContentItem": {
489
611
  "type": "I",
490
612
  "fields": {
@@ -503,6 +625,15 @@ export const data = {
503
625
  "form": {
504
626
  "type": "pushwoosh.aibuilder.v1.Form"
505
627
  },
628
+ "timer": {
629
+ "type": "pushwoosh.aibuilder.v1.Timer"
630
+ },
631
+ "rawHtml": {
632
+ "type": "pushwoosh.aibuilder.v1.RawHtml"
633
+ },
634
+ "menu": {
635
+ "type": "pushwoosh.aibuilder.v1.Menu"
636
+ },
506
637
  "padding": {
507
638
  "type": "pushwoosh.aibuilder.v1.EdgeInsets",
508
639
  "optional": true
@@ -515,7 +646,10 @@ export const data = {
515
646
  "buttonGroup",
516
647
  "list",
517
648
  "image",
518
- "form"
649
+ "form",
650
+ "timer",
651
+ "rawHtml",
652
+ "menu"
519
653
  ]
520
654
  }
521
655
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@pushwoosh/rpc-gateway-ai-assistant",
3
- "version": "0.1.194",
3
+ "version": "0.1.196",
4
4
  "description": "AI Assistant api gateway HTTP API Types and Data",
5
5
  "main": "index.js",
6
6
  "module": "index.js",
@@ -424,6 +424,86 @@ export type Form = {
424
424
  submitLabel: string;
425
425
  submitStyles?: ButtonStyles;
426
426
  };
427
+ /**
428
+ * Countdown timer. Renders in email HTML as an animated GIF served by this
429
+ * service's public /timer/v1/countdown.gif endpoint (regenerated per open).
430
+ * Client-managed for the MVP: the LLM neither sees nor generates timers.
431
+ */
432
+ export type Timer = {
433
+ /**
434
+ * Countdown target as local wall-clock time in `timezone`
435
+ * ("2026-12-01T00:00:00") — mirrors the Unlayer widget's
436
+ * endTime+timezone pair.
437
+ */
438
+ endTime: string;
439
+ /** IANA zone name; empty = UTC. */
440
+ timezone: string;
441
+ /** Unit-label language (ISO 639-1); empty/unknown = "en". */
442
+ language: string;
443
+ showLabels: boolean;
444
+ /**
445
+ * Hex "#rrggbb"; empty = renderer defaults (white bg, dark digits,
446
+ * gray labels).
447
+ */
448
+ backgroundColor: string;
449
+ digitColor: string;
450
+ labelColor: string;
451
+ /** px; 0 = 40 */
452
+ digitFontSize: number;
453
+ /** px; 0 = 16 */
454
+ labelFontSize: number;
455
+ /** Canvas size in px; 0 = derived from the font sizes. */
456
+ width: number;
457
+ height: number;
458
+ /**
459
+ * Font families carried for fidelity/round-trip; the GIF renderer
460
+ * currently always uses Open Sans.
461
+ */
462
+ digitFontFamily: string;
463
+ labelFontFamily: string;
464
+ };
465
+ /**
466
+ * An Unlayer HTML widget. The markup is deliberately kept verbatim: unlike
467
+ * TextBlock.text this is a complete, user-authored HTML fragment and flattening
468
+ * or sanitising it would change the email. The editor previews it in a sandbox;
469
+ * the final email renderer emits it as-is.
470
+ */
471
+ export type RawHtml = {
472
+ html: string;
473
+ /**
474
+ * Per-language overrides of `html`; same client-managed contract as
475
+ * TextBlock.translations.
476
+ */
477
+ translations: Record<string, string>;
478
+ };
479
+ export type MenuItem = {
480
+ text: string;
481
+ url: string;
482
+ /** Unlayer stores browser targets as "_self" / "_blank". */
483
+ target: string;
484
+ translations: Record<string, string>;
485
+ };
486
+ export type MenuLayout =
487
+ /** renders as HORIZONTAL */
488
+ 'MENU_LAYOUT_UNSPECIFIED' | 'MENU_LAYOUT_HORIZONTAL' | 'MENU_LAYOUT_VERTICAL';
489
+ /**
490
+ * Unlayer's stock Menu widget. These are the presentation fields exported by
491
+ * Unlayer itself; keeping them together avoids approximating a menu as a text
492
+ * run and preserves each link as a distinct editable item.
493
+ */
494
+ export type Menu = {
495
+ items: MenuItem[];
496
+ linkColor: string;
497
+ textColor: string;
498
+ fontFamily: string;
499
+ fontWeight: number;
500
+ fontSize: number;
501
+ letterSpacing: number;
502
+ layout: MenuLayout;
503
+ align: TextAlign;
504
+ separator: string;
505
+ itemPadding?: EdgeInsets;
506
+ };
427
507
  export type ContentItem_item_text = {
428
508
  type: 'text';
429
509
  data: TextBlock;
@@ -444,7 +524,19 @@ export type ContentItem_item_form = {
444
524
  type: 'form';
445
525
  data: Form;
446
526
  };
447
- export type ContentItem_item = ContentItem_item_text | ContentItem_item_buttonGroup | ContentItem_item_list | ContentItem_item_image | ContentItem_item_form;
527
+ export type ContentItem_item_timer = {
528
+ type: 'timer';
529
+ data: Timer;
530
+ };
531
+ export type ContentItem_item_rawHtml = {
532
+ type: 'rawHtml';
533
+ data: RawHtml;
534
+ };
535
+ export type ContentItem_item_menu = {
536
+ type: 'menu';
537
+ data: Menu;
538
+ };
539
+ export type ContentItem_item = ContentItem_item_text | ContentItem_item_buttonGroup | ContentItem_item_list | ContentItem_item_image | ContentItem_item_form | ContentItem_item_timer | ContentItem_item_rawHtml | ContentItem_item_menu;
448
540
  export type ContentItem = {
449
541
  /**
450
542
  * Container padding of the item. Unset = client's default inter-item gap;