@talk2view/sdk 0.18.1 → 0.20.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 (120) hide show
  1. package/README.md +71 -103
  2. package/dist/assistant-ui/index.d.ts.map +1 -1
  3. package/dist/assistant-ui/index.js +4 -2
  4. package/dist/assistant-ui/index.js.map +1 -1
  5. package/dist/auth.d.ts +8 -0
  6. package/dist/auth.d.ts.map +1 -1
  7. package/dist/auth.js +27 -11
  8. package/dist/auth.js.map +1 -1
  9. package/dist/chat/auth-gate.d.ts +3 -1
  10. package/dist/chat/auth-gate.d.ts.map +1 -1
  11. package/dist/chat/auth-gate.js +29 -5
  12. package/dist/chat/auth-gate.js.map +1 -1
  13. package/dist/chat/composer-extras.js +2 -2
  14. package/dist/chat/index.d.ts +1 -0
  15. package/dist/chat/index.d.ts.map +1 -1
  16. package/dist/chat/index.js +1 -0
  17. package/dist/chat/index.js.map +1 -1
  18. package/dist/chat/launcher.d.ts.map +1 -1
  19. package/dist/chat/launcher.js +6 -2
  20. package/dist/chat/launcher.js.map +1 -1
  21. package/dist/chat/markdown.d.ts +14 -4
  22. package/dist/chat/markdown.d.ts.map +1 -1
  23. package/dist/chat/markdown.js +28 -1
  24. package/dist/chat/markdown.js.map +1 -1
  25. package/dist/chat/provider.d.ts +7 -0
  26. package/dist/chat/provider.d.ts.map +1 -1
  27. package/dist/chat/provider.js +22 -1
  28. package/dist/chat/provider.js.map +1 -1
  29. package/dist/chat/vendor/LICENSE +21 -0
  30. package/dist/chat/vendor/MANIFEST.json +84 -0
  31. package/dist/chat/vendor/attachment.aui.d.ts.map +1 -1
  32. package/dist/chat/vendor/attachment.aui.js +8 -0
  33. package/dist/chat/vendor/attachment.aui.js.map +1 -1
  34. package/dist/chat/vendor/file.d.ts.map +1 -1
  35. package/dist/chat/vendor/file.js +8 -0
  36. package/dist/chat/vendor/file.js.map +1 -1
  37. package/dist/chat/vendor/follow-up-suggestions.aui.d.ts.map +1 -1
  38. package/dist/chat/vendor/follow-up-suggestions.aui.js +8 -0
  39. package/dist/chat/vendor/follow-up-suggestions.aui.js.map +1 -1
  40. package/dist/chat/vendor/image.d.ts.map +1 -1
  41. package/dist/chat/vendor/image.js +8 -0
  42. package/dist/chat/vendor/image.js.map +1 -1
  43. package/dist/chat/vendor/markdown-text.d.ts.map +1 -1
  44. package/dist/chat/vendor/markdown-text.js +8 -0
  45. package/dist/chat/vendor/markdown-text.js.map +1 -1
  46. package/dist/chat/vendor/reasoning.aui.d.ts.map +1 -1
  47. package/dist/chat/vendor/reasoning.aui.js +8 -0
  48. package/dist/chat/vendor/reasoning.aui.js.map +1 -1
  49. package/dist/chat/vendor/reasoning.d.ts.map +1 -1
  50. package/dist/chat/vendor/reasoning.js +8 -0
  51. package/dist/chat/vendor/reasoning.js.map +1 -1
  52. package/dist/chat/vendor/thread-list.aui.d.ts.map +1 -1
  53. package/dist/chat/vendor/thread-list.aui.js +8 -0
  54. package/dist/chat/vendor/thread-list.aui.js.map +1 -1
  55. package/dist/chat/vendor/thread.aui.d.ts.map +1 -1
  56. package/dist/chat/vendor/thread.aui.js +8 -0
  57. package/dist/chat/vendor/thread.aui.js.map +1 -1
  58. package/dist/chat/vendor/tool-fallback.aui.d.ts.map +1 -1
  59. package/dist/chat/vendor/tool-fallback.aui.js +8 -0
  60. package/dist/chat/vendor/tool-fallback.aui.js.map +1 -1
  61. package/dist/chat/vendor/tool-group.aui.d.ts.map +1 -1
  62. package/dist/chat/vendor/tool-group.aui.js +8 -0
  63. package/dist/chat/vendor/tool-group.aui.js.map +1 -1
  64. package/dist/chat/vendor/tooltip-icon-button.d.ts.map +1 -1
  65. package/dist/chat/vendor/tooltip-icon-button.js +8 -0
  66. package/dist/chat/vendor/tooltip-icon-button.js.map +1 -1
  67. package/dist/chat/views/account.d.ts.map +1 -1
  68. package/dist/chat/views/account.js +6 -0
  69. package/dist/chat/views/account.js.map +1 -1
  70. package/dist/chat/voice-button.d.ts +34 -0
  71. package/dist/chat/voice-button.d.ts.map +1 -0
  72. package/dist/chat/voice-button.js +175 -0
  73. package/dist/chat/voice-button.js.map +1 -0
  74. package/dist/chat-css.js +1 -1
  75. package/dist/chat.css +1 -1
  76. package/dist/chat.isolated.css +176 -3
  77. package/dist/chat.raw.css +176 -3
  78. package/dist/client.d.ts.map +1 -1
  79. package/dist/client.js +49 -0
  80. package/dist/client.js.map +1 -1
  81. package/dist/event-emitter.d.ts +1 -0
  82. package/dist/event-emitter.d.ts.map +1 -1
  83. package/dist/event-emitter.js +3 -0
  84. package/dist/event-emitter.js.map +1 -1
  85. package/dist/index.d.ts +24 -1
  86. package/dist/index.d.ts.map +1 -1
  87. package/dist/index.js +45 -0
  88. package/dist/index.js.map +1 -1
  89. package/dist/streaming.d.ts.map +1 -1
  90. package/dist/streaming.js +5 -1
  91. package/dist/streaming.js.map +1 -1
  92. package/dist/tools.d.ts.map +1 -1
  93. package/dist/tools.js +13 -2
  94. package/dist/tools.js.map +1 -1
  95. package/dist/types.d.ts +60 -0
  96. package/dist/types.d.ts.map +1 -1
  97. package/dist/ui/components/MarkdownRenderer.d.ts +1 -1
  98. package/dist/ui/components/MarkdownRenderer.js +1 -1
  99. package/dist/ui/index.d.ts +10 -0
  100. package/dist/ui/index.d.ts.map +1 -1
  101. package/dist/ui/index.js +10 -0
  102. package/dist/ui/index.js.map +1 -1
  103. package/dist/ui/safeMarkdown.d.ts.map +1 -1
  104. package/dist/ui/safeMarkdown.js +4 -2
  105. package/dist/ui/safeMarkdown.js.map +1 -1
  106. package/dist/voice-error.d.ts +8 -0
  107. package/dist/voice-error.d.ts.map +1 -0
  108. package/dist/voice-error.js +10 -0
  109. package/dist/voice-error.js.map +1 -0
  110. package/dist/voice-facade.d.ts +57 -0
  111. package/dist/voice-facade.d.ts.map +1 -0
  112. package/dist/voice-facade.js +139 -0
  113. package/dist/voice-facade.js.map +1 -0
  114. package/dist/voice.d.ts +157 -0
  115. package/dist/voice.d.ts.map +1 -0
  116. package/dist/voice.js +630 -0
  117. package/dist/voice.js.map +1 -0
  118. package/docs/chat.md +532 -0
  119. package/docs/voice.md +88 -0
  120. package/package.json +22 -9
@@ -687,6 +687,9 @@
687
687
  .t2v-chat .h-\[17px\] {
688
688
  height: 17px !important;
689
689
  }
690
+ .t2v-chat .h-\[20px\] {
691
+ height: 20px !important;
692
+ }
690
693
  .t2v-chat .h-\[29px\] {
691
694
  height: 29px !important;
692
695
  }
@@ -771,6 +774,9 @@
771
774
  .t2v-chat .w-\[14px\] {
772
775
  width: 14px !important;
773
776
  }
777
+ .t2v-chat .w-\[22px\] {
778
+ width: 22px !important;
779
+ }
774
780
  .t2v-chat .w-\[40px\] {
775
781
  width: 40px !important;
776
782
  }
@@ -3251,6 +3257,13 @@
3251
3257
  height: 100%;
3252
3258
  font-family: var(--t2v-font);
3253
3259
  color: var(--foreground);
3260
+ text-align: start;
3261
+ text-transform: none;
3262
+ letter-spacing: normal;
3263
+ word-spacing: normal;
3264
+ line-height: normal;
3265
+ text-indent: 0;
3266
+ white-space: normal;
3254
3267
  }
3255
3268
  .t2v-chat.t2v-portal-host {
3256
3269
  height: auto;
@@ -3332,14 +3345,154 @@
3332
3345
  animation: t2v-cursor-blink 1s step-end infinite;
3333
3346
  }
3334
3347
  }
3335
- .t2v-chat .aui-modal-button {
3348
+ .t2v-chat .t2v-voice, .t2v-chat.t2v-voice {
3349
+ position: relative;
3350
+ display: flex;
3351
+ align-items: flex-end;
3352
+ }
3353
+ .t2v-chat .t2v-voice {
3354
+ margin-inline-end: 0.5rem;
3355
+ }
3356
+ .t2v-chat.t2v-voice {
3357
+ display: inline-flex;
3358
+ height: auto;
3359
+ }
3360
+ .t2v-chat .t2v-voice-button {
3361
+ display: inline-flex;
3362
+ flex-shrink: 0;
3363
+ align-items: center;
3364
+ justify-content: center;
3365
+ width: 4rem;
3366
+ height: 4rem;
3367
+ padding: 0;
3368
+ border: 0;
3369
+ border-radius: 0;
3370
+ background-color: var(--primary);
3371
+ color: var(--primary-foreground);
3372
+ cursor: pointer;
3373
+ box-shadow: 0 6px 20px -8px rgb(2 28 37 / 0.55);
3374
+ }
3375
+ .t2v-chat .t2v-voice-button:hover {
3376
+ filter: brightness(0.95);
3377
+ }
3378
+ .t2v-chat .t2v-voice-button:active {
3379
+ scale: 0.96;
3380
+ }
3381
+ .t2v-chat .t2v-voice-button:focus-visible {
3382
+ outline: 2px solid var(--ring);
3383
+ outline-offset: 6px;
3384
+ }
3385
+ .t2v-chat .t2v-voice-button[data-state='listening'] {
3386
+ background-color: var(--primary-foreground);
3387
+ color: var(--primary);
3388
+ }
3389
+ .t2v-chat .t2v-voice-spin {
3390
+ animation: t2v-voice-spin 0.9s linear infinite;
3391
+ }
3392
+ @media (prefers-reduced-motion: no-preference) {
3393
+ .t2v-chat .t2v-voice-button {
3394
+ transition: scale 150ms ease-out;
3395
+ }
3396
+ }
3397
+ @media (prefers-reduced-motion: reduce) {
3398
+ .t2v-chat .t2v-voice-button .t2v-wave-bar {
3399
+ animation: none;
3400
+ }
3401
+ }
3402
+ .t2v-chat .t2v-voice-popover {
3403
+ position: absolute;
3404
+ inset-block-end: calc(100% + 0.75rem);
3405
+ inset-inline-end: 0;
3406
+ display: flex;
3407
+ flex-direction: column;
3408
+ align-items: flex-end;
3409
+ gap: 0.5rem;
3410
+ width: max-content;
3411
+ max-width: min(20rem, calc(100vw - 2rem));
3412
+ font-size: 0.8125rem;
3413
+ line-height: 1.4;
3414
+ }
3415
+ .t2v-chat .t2v-voice-status, .t2v-chat .t2v-voice-error {
3416
+ border: 1px solid var(--border);
3417
+ border-radius: var(--radius);
3418
+ background-color: var(--popover);
3419
+ color: var(--popover-foreground);
3420
+ box-shadow: 0 6px 20px -8px rgb(2 28 37 / 0.35);
3421
+ }
3422
+ .t2v-chat .t2v-voice-status {
3423
+ padding: 0.375rem 0.75rem;
3424
+ font-weight: 500;
3425
+ white-space: nowrap;
3426
+ }
3427
+ .t2v-chat .t2v-voice-error {
3428
+ display: flex;
3429
+ align-items: flex-start;
3430
+ gap: 0.5rem;
3431
+ padding: 0.5rem 0.5rem 0.5rem 0.75rem;
3432
+ border-inline-start: 3px solid var(--destructive);
3433
+ }
3434
+ .t2v-chat .t2v-voice-dismiss {
3435
+ display: inline-flex;
3436
+ flex-shrink: 0;
3437
+ padding: 0.125rem;
3438
+ border: 0;
3439
+ background: transparent;
3440
+ color: var(--muted-foreground);
3441
+ cursor: pointer;
3442
+ }
3443
+ .t2v-chat .t2v-voice-dismiss:hover {
3444
+ color: var(--popover-foreground);
3445
+ }
3446
+ .t2v-chat .t2v-voice-dismiss:focus-visible {
3447
+ outline: 2px solid var(--ring);
3448
+ outline-offset: 1px;
3449
+ }
3450
+ .t2v-chat .t2v-voice-approval {
3451
+ width: 20rem;
3452
+ max-width: 100%;
3453
+ color-scheme: light;
3454
+ background-color: #ffffff;
3455
+ box-shadow: 0 16px 48px -24px rgb(0 0 0 / 0.35);
3456
+ --t2v-bg: #ffffff;
3457
+ --t2v-foreground: var(--t2v-smoke);
3458
+ --t2v-surface: var(--t2v-ivory);
3459
+ --t2v-surface-hover: var(--t2v-stone);
3460
+ @supports (color: color-mix(in lab, red, red)) {
3461
+ --t2v-surface-hover: color-mix(in srgb, var(--t2v-stone) 25%, var(--t2v-ivory));
3462
+ }
3463
+ --t2v-muted: var(--t2v-slate);
3464
+ --t2v-border: var(--t2v-stone);
3465
+ --t2v-error: #bb524e;
3466
+ --t2v-radius-sm: calc(var(--radius) * 0.6);
3467
+ --t2v-radius-md: calc(var(--radius) * 0.8);
3468
+ --t2v-radius-lg: var(--radius);
3469
+ --t2v-font-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
3470
+ }
3471
+ .t2v-chat .t2v-voice-approval > [role='region'] {
3472
+ margin: 0 !important;
3473
+ }
3474
+ .t2v-chat .t2v-voice-sr {
3475
+ position: absolute;
3476
+ width: 1px;
3477
+ height: 1px;
3478
+ margin: -1px;
3479
+ padding: 0;
3480
+ overflow: hidden;
3481
+ clip-path: inset(50%);
3482
+ white-space: nowrap;
3483
+ border: 0;
3484
+ }
3485
+ .t2v-chat .t2v-voice-tucked:not([data-on]) {
3486
+ display: none;
3487
+ }
3488
+ .t2v-chat .aui-modal-button, .t2v-chat .t2v-voice-button {
3336
3489
  position: relative;
3337
3490
  --t2v-beam-tail: #26c8b8;
3338
3491
  --t2v-beam-mid: #73ffff;
3339
3492
  --t2v-beam-head: #ffffff;
3340
3493
  --t2v-beam-ring: rgb(115 255 255 / 0.4);
3341
3494
  }
3342
- .t2v-chat .aui-modal-button::before {
3495
+ .t2v-chat .aui-modal-button::before, .t2v-chat .t2v-voice-button::before {
3343
3496
  content: "";
3344
3497
  position: absolute;
3345
3498
  inset: 0;
@@ -3351,11 +3504,26 @@
3351
3504
  animation: t2v-beam 3.2s linear infinite;
3352
3505
  }
3353
3506
  @media (prefers-reduced-motion: reduce) {
3354
- .t2v-chat .aui-modal-button::before {
3507
+ .t2v-chat .aui-modal-button::before, .t2v-chat .t2v-voice-button::before {
3355
3508
  background: linear-gradient(var(--t2v-beam-mid) 0 0);
3356
3509
  animation: t2v-beam-breathe 2.4s ease-in-out infinite;
3357
3510
  }
3358
3511
  }
3512
+ .t2v-chat .t2v-voice-button[data-state='connecting']::before, .t2v-chat .t2v-voice-button[data-state='listening']::before {
3513
+ filter: drop-shadow(0 0 9px var(--t2v-beam-mid));
3514
+ animation-duration: 1.2s;
3515
+ }
3516
+ @media (prefers-reduced-motion: reduce) {
3517
+ .t2v-chat .t2v-voice-button[data-state='connecting']::before, .t2v-chat .t2v-voice-button[data-state='listening']::before {
3518
+ animation-duration: 1.1s;
3519
+ }
3520
+ }
3521
+ .t2v-chat .t2v-voice-button[data-busy] {
3522
+ --t2v-beam-tail: #bb524e;
3523
+ --t2v-beam-mid: #f0a74a;
3524
+ --t2v-beam-head: #fff490;
3525
+ --t2v-beam-ring: rgb(240 167 74 / 0.4);
3526
+ }
3359
3527
  .t2v-chat .t2v-tool-approval-prompt {
3360
3528
  display: -webkit-box;
3361
3529
  -webkit-box-orient: vertical;
@@ -3435,6 +3603,11 @@
3435
3603
  opacity: 0;
3436
3604
  }
3437
3605
  }
3606
+ @keyframes t2v-voice-spin {
3607
+ to {
3608
+ rotate: 360deg;
3609
+ }
3610
+ }
3438
3611
  @keyframes t2v-collapsible-down {
3439
3612
  from {
3440
3613
  height: 0;
package/dist/chat.raw.css CHANGED
@@ -694,6 +694,9 @@
694
694
  .h-\[17px\] {
695
695
  height: 17px;
696
696
  }
697
+ .h-\[20px\] {
698
+ height: 20px;
699
+ }
697
700
  .h-\[29px\] {
698
701
  height: 29px;
699
702
  }
@@ -778,6 +781,9 @@
778
781
  .w-\[14px\] {
779
782
  width: 14px;
780
783
  }
784
+ .w-\[22px\] {
785
+ width: 22px;
786
+ }
781
787
  .w-\[40px\] {
782
788
  width: 40px;
783
789
  }
@@ -3259,6 +3265,13 @@
3259
3265
  height: 100%;
3260
3266
  font-family: var(--t2v-font);
3261
3267
  color: var(--foreground);
3268
+ text-align: start;
3269
+ text-transform: none;
3270
+ letter-spacing: normal;
3271
+ word-spacing: normal;
3272
+ line-height: normal;
3273
+ text-indent: 0;
3274
+ white-space: normal;
3262
3275
  }
3263
3276
  :root.t2v-portal-host {
3264
3277
  height: auto;
@@ -3340,14 +3353,154 @@
3340
3353
  animation: t2v-cursor-blink 1s step-end infinite;
3341
3354
  }
3342
3355
  }
3343
- .aui-modal-button {
3356
+ .t2v-voice, :root.t2v-voice {
3357
+ position: relative;
3358
+ display: flex;
3359
+ align-items: flex-end;
3360
+ }
3361
+ .t2v-voice {
3362
+ margin-inline-end: 0.5rem;
3363
+ }
3364
+ :root.t2v-voice {
3365
+ display: inline-flex;
3366
+ height: auto;
3367
+ }
3368
+ .t2v-voice-button {
3369
+ display: inline-flex;
3370
+ flex-shrink: 0;
3371
+ align-items: center;
3372
+ justify-content: center;
3373
+ width: 4rem;
3374
+ height: 4rem;
3375
+ padding: 0;
3376
+ border: 0;
3377
+ border-radius: 0;
3378
+ background-color: var(--primary);
3379
+ color: var(--primary-foreground);
3380
+ cursor: pointer;
3381
+ box-shadow: 0 6px 20px -8px rgb(2 28 37 / 0.55);
3382
+ }
3383
+ .t2v-voice-button:hover {
3384
+ filter: brightness(0.95);
3385
+ }
3386
+ .t2v-voice-button:active {
3387
+ scale: 0.96;
3388
+ }
3389
+ .t2v-voice-button:focus-visible {
3390
+ outline: 2px solid var(--ring);
3391
+ outline-offset: 6px;
3392
+ }
3393
+ .t2v-voice-button[data-state='listening'] {
3394
+ background-color: var(--primary-foreground);
3395
+ color: var(--primary);
3396
+ }
3397
+ .t2v-voice-spin {
3398
+ animation: t2v-voice-spin 0.9s linear infinite;
3399
+ }
3400
+ @media (prefers-reduced-motion: no-preference) {
3401
+ .t2v-voice-button {
3402
+ transition: scale 150ms ease-out;
3403
+ }
3404
+ }
3405
+ @media (prefers-reduced-motion: reduce) {
3406
+ .t2v-voice-button .t2v-wave-bar {
3407
+ animation: none;
3408
+ }
3409
+ }
3410
+ .t2v-voice-popover {
3411
+ position: absolute;
3412
+ inset-block-end: calc(100% + 0.75rem);
3413
+ inset-inline-end: 0;
3414
+ display: flex;
3415
+ flex-direction: column;
3416
+ align-items: flex-end;
3417
+ gap: 0.5rem;
3418
+ width: max-content;
3419
+ max-width: min(20rem, calc(100vw - 2rem));
3420
+ font-size: 0.8125rem;
3421
+ line-height: 1.4;
3422
+ }
3423
+ .t2v-voice-status, .t2v-voice-error {
3424
+ border: 1px solid var(--border);
3425
+ border-radius: var(--radius);
3426
+ background-color: var(--popover);
3427
+ color: var(--popover-foreground);
3428
+ box-shadow: 0 6px 20px -8px rgb(2 28 37 / 0.35);
3429
+ }
3430
+ .t2v-voice-status {
3431
+ padding: 0.375rem 0.75rem;
3432
+ font-weight: 500;
3433
+ white-space: nowrap;
3434
+ }
3435
+ .t2v-voice-error {
3436
+ display: flex;
3437
+ align-items: flex-start;
3438
+ gap: 0.5rem;
3439
+ padding: 0.5rem 0.5rem 0.5rem 0.75rem;
3440
+ border-inline-start: 3px solid var(--destructive);
3441
+ }
3442
+ .t2v-voice-dismiss {
3443
+ display: inline-flex;
3444
+ flex-shrink: 0;
3445
+ padding: 0.125rem;
3446
+ border: 0;
3447
+ background: transparent;
3448
+ color: var(--muted-foreground);
3449
+ cursor: pointer;
3450
+ }
3451
+ .t2v-voice-dismiss:hover {
3452
+ color: var(--popover-foreground);
3453
+ }
3454
+ .t2v-voice-dismiss:focus-visible {
3455
+ outline: 2px solid var(--ring);
3456
+ outline-offset: 1px;
3457
+ }
3458
+ .t2v-voice-approval {
3459
+ width: 20rem;
3460
+ max-width: 100%;
3461
+ color-scheme: light;
3462
+ background-color: #ffffff;
3463
+ box-shadow: 0 16px 48px -24px rgb(0 0 0 / 0.35);
3464
+ --t2v-bg: #ffffff;
3465
+ --t2v-foreground: var(--t2v-smoke);
3466
+ --t2v-surface: var(--t2v-ivory);
3467
+ --t2v-surface-hover: var(--t2v-stone);
3468
+ @supports (color: color-mix(in lab, red, red)) {
3469
+ --t2v-surface-hover: color-mix(in srgb, var(--t2v-stone) 25%, var(--t2v-ivory));
3470
+ }
3471
+ --t2v-muted: var(--t2v-slate);
3472
+ --t2v-border: var(--t2v-stone);
3473
+ --t2v-error: #bb524e;
3474
+ --t2v-radius-sm: calc(var(--radius) * 0.6);
3475
+ --t2v-radius-md: calc(var(--radius) * 0.8);
3476
+ --t2v-radius-lg: var(--radius);
3477
+ --t2v-font-mono: ui-monospace, SFMono-Regular, Menlo, Consolas, monospace;
3478
+ }
3479
+ .t2v-voice-approval > [role='region'] {
3480
+ margin: 0 !important;
3481
+ }
3482
+ .t2v-voice-sr {
3483
+ position: absolute;
3484
+ width: 1px;
3485
+ height: 1px;
3486
+ margin: -1px;
3487
+ padding: 0;
3488
+ overflow: hidden;
3489
+ clip-path: inset(50%);
3490
+ white-space: nowrap;
3491
+ border: 0;
3492
+ }
3493
+ .t2v-voice-tucked:not([data-on]) {
3494
+ display: none;
3495
+ }
3496
+ .aui-modal-button, .t2v-voice-button {
3344
3497
  position: relative;
3345
3498
  --t2v-beam-tail: #26c8b8;
3346
3499
  --t2v-beam-mid: #73ffff;
3347
3500
  --t2v-beam-head: #ffffff;
3348
3501
  --t2v-beam-ring: rgb(115 255 255 / 0.4);
3349
3502
  }
3350
- .aui-modal-button::before {
3503
+ .aui-modal-button::before, .t2v-voice-button::before {
3351
3504
  content: "";
3352
3505
  position: absolute;
3353
3506
  inset: 0;
@@ -3359,11 +3512,26 @@
3359
3512
  animation: t2v-beam 3.2s linear infinite;
3360
3513
  }
3361
3514
  @media (prefers-reduced-motion: reduce) {
3362
- .aui-modal-button::before {
3515
+ .aui-modal-button::before, .t2v-voice-button::before {
3363
3516
  background: linear-gradient(var(--t2v-beam-mid) 0 0);
3364
3517
  animation: t2v-beam-breathe 2.4s ease-in-out infinite;
3365
3518
  }
3366
3519
  }
3520
+ .t2v-voice-button[data-state='connecting']::before, .t2v-voice-button[data-state='listening']::before {
3521
+ filter: drop-shadow(0 0 9px var(--t2v-beam-mid));
3522
+ animation-duration: 1.2s;
3523
+ }
3524
+ @media (prefers-reduced-motion: reduce) {
3525
+ .t2v-voice-button[data-state='connecting']::before, .t2v-voice-button[data-state='listening']::before {
3526
+ animation-duration: 1.1s;
3527
+ }
3528
+ }
3529
+ .t2v-voice-button[data-busy] {
3530
+ --t2v-beam-tail: #bb524e;
3531
+ --t2v-beam-mid: #f0a74a;
3532
+ --t2v-beam-head: #fff490;
3533
+ --t2v-beam-ring: rgb(240 167 74 / 0.4);
3534
+ }
3367
3535
  .t2v-tool-approval-prompt {
3368
3536
  display: -webkit-box;
3369
3537
  -webkit-box-orient: vertical;
@@ -3443,6 +3611,11 @@
3443
3611
  opacity: 0;
3444
3612
  }
3445
3613
  }
3614
+ @keyframes t2v-voice-spin {
3615
+ to {
3616
+ rotate: 360deg;
3617
+ }
3618
+ }
3446
3619
  @keyframes collapsible-down {
3447
3620
  from {
3448
3621
  height: 0;
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAiBH,OAAO,KAAK,EACV,mBAAmB,EAEnB,SAAS,EACV,MAAM,YAAY,CAAC;AAgBpB,KAAK,aAAa,GAAG,WAAW,GAAG,SAAS,GAAG,WAAW,CAAC;AAE3D,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,cAAc,CAAuC;gBAEjD,MAAM,EAAE,SAAS;IAM7B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAYzB;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IASpB;;;;;;;;OAQG;YACW,iBAAiB;IAe/B;;OAEG;YACW,aAAa;IAiE3B,OAAO,CAAC,YAAY;IAiBpB;;;OAGG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM;IAKvE;;OAEG;IACG,OAAO,CAAC,CAAC,EACb,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,WAAgB,EACzB,YAAY,UAAO,EACnB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,CAAC,CAAC;IAgBb;;;OAGG;IACG,aAAa,CAAC,CAAC,EACnB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,QAAQ,EAClB,YAAY,UAAO,EACnB,OAAO,GAAE,MAA+B,GACvC,OAAO,CAAC,CAAC,CAAC;IAiBb;;;;;;;OAOG;IACI,aAAa,CAClB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,cAAc,CAAC,EAAE,WAAW,GAC3B,cAAc,CAAC,mBAAmB,CAAC;IA+CtC;;;;;;;;;;;;OAYG;IACG,aAAa,IAAI,OAAO,CAAC,aAAa,CAAC;YAI/B,eAAe;YAgBf,cAAc;CAgD7B"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAiBH,OAAO,KAAK,EACV,mBAAmB,EAEnB,SAAS,EACV,MAAM,YAAY,CAAC;AAgBpB,KAAK,aAAa,GAAG,WAAW,GAAG,SAAS,GAAG,WAAW,CAAC;AA0D3D,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,QAAQ,CAAC,cAAc,CAAS;IACxC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,cAAc,CAAuC;gBAEjD,MAAM,EAAE,SAAS;IAQ7B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAYzB;;;;;OAKG;IACH,OAAO,CAAC,YAAY;IASpB;;;;;;;;OAQG;YACW,iBAAiB;IAe/B;;OAEG;YACW,aAAa;IAiE3B,OAAO,CAAC,YAAY;IAiBpB;;;OAGG;IACH,aAAa,CAAC,QAAQ,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,GAAG,MAAM;IAKvE;;OAEG;IACG,OAAO,CAAC,CAAC,EACb,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,WAAgB,EACzB,YAAY,UAAO,EACnB,OAAO,CAAC,EAAE,MAAM,GACf,OAAO,CAAC,CAAC,CAAC;IAgBb;;;OAGG;IACG,aAAa,CAAC,CAAC,EACnB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,QAAQ,EAClB,YAAY,UAAO,EACnB,OAAO,GAAE,MAA+B,GACvC,OAAO,CAAC,CAAC,CAAC;IAiBb;;;;;;;OAOG;IACI,aAAa,CAClB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,EACZ,cAAc,CAAC,EAAE,WAAW,GAC3B,cAAc,CAAC,mBAAmB,CAAC;IA+CtC;;;;;;;;;;;;OAYG;IACG,aAAa,IAAI,OAAO,CAAC,aAAa,CAAC;YAI/B,eAAe;YAgBf,cAAc;CAgD7B"}
package/dist/client.js CHANGED
@@ -9,6 +9,53 @@ const DEFAULT_REQUEST_TIMEOUT = 30_000;
9
9
  // Uploads (attachments, audio) move real bytes — a multi-MB file on a slow link
10
10
  // or a busy backend easily exceeds the 30s API timeout. Give them a wider window.
11
11
  const DEFAULT_UPLOAD_TIMEOUT = 120_000;
12
+ /**
13
+ * A missing or empty key used to travel as the literal header
14
+ * `X-T2V-Partner-Key: undefined` and come back as a 401 three layers away,
15
+ * usually while the developer was looking at something else. It is the first
16
+ * thing an integrator gets wrong — an environment variable that did not load —
17
+ * so say it where it happened, in their own stack trace.
18
+ *
19
+ * The shape check is deliberately loose: a wrong-but-plausible key is the
20
+ * engine's to reject, and this must never refuse a key format Talk2View
21
+ * introduces later.
22
+ */
23
+ function assertPartnerKey(partnerKey) {
24
+ if (typeof partnerKey !== 'string' || partnerKey.trim() === '') {
25
+ throw new PartnerKeyError('No partner key. Pass `partnerKey` when creating the client — ' +
26
+ 'get one at https://dashboard.talk2view.com.', 'partner_key_error', 0);
27
+ }
28
+ // `pk_` and nothing more. The rest of a key's shape is the engine's to know,
29
+ // and a check that encoded today's format would reject tomorrow's. What this
30
+ // catches is the mistake worth catching: a secret in the wrong field.
31
+ if (!partnerKey.startsWith('pk_')) {
32
+ throw new PartnerKeyError(`That does not look like a partner key: "${partnerKey.slice(0, 12)}…". ` +
33
+ 'Partner keys begin with pk_ and are public identifiers rather than ' +
34
+ 'secrets — a server-side API key does not belong here.', 'partner_key_error', 0);
35
+ }
36
+ }
37
+ /**
38
+ * Every request to this address carries the end-user's access token in an
39
+ * `Authorization` header. Over plain http that token crosses the network in
40
+ * the clear, and a typo in an integrator's environment variable is all it
41
+ * takes. Loud, once, rather than silent: a local address is how people
42
+ * develop, so only that is exempt.
43
+ */
44
+ function warnIfInsecure(baseUrl) {
45
+ try {
46
+ const url = new URL(baseUrl);
47
+ if (url.protocol === 'https:')
48
+ return;
49
+ const local = ['localhost', '127.0.0.1', '::1', '0.0.0.0'].includes(url.hostname);
50
+ if (url.protocol === 'http:' && local)
51
+ return;
52
+ console.warn(`[Talk2View] baseUrl is ${url.protocol}//${url.host} — not https. Access tokens ` +
53
+ 'will be sent over an unencrypted connection. Use https outside local development.');
54
+ }
55
+ catch {
56
+ console.warn(`[Talk2View] baseUrl is not a valid URL: ${baseUrl}`);
57
+ }
58
+ }
12
59
  export class T2VClient {
13
60
  baseUrl;
14
61
  partnerKey;
@@ -16,9 +63,11 @@ export class T2VClient {
16
63
  isRefreshing = false;
17
64
  refreshPromise = null;
18
65
  constructor(config) {
66
+ assertPartnerKey(config.partnerKey);
19
67
  this.partnerKey = config.partnerKey;
20
68
  this.baseUrl = config.baseUrl ?? DEFAULT_BASE_URL;
21
69
  this.requestTimeout = config.requestTimeout ?? DEFAULT_REQUEST_TIMEOUT;
70
+ warnIfInsecure(this.baseUrl);
22
71
  }
23
72
  /**
24
73
  * Create an AbortController that auto-aborts after the configured timeout.
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  export declare class TypedEventEmitter<TEvents extends Record<string, unknown[]>> {
2
2
  private listeners;
3
3
  on<K extends keyof TEvents>(event: K, callback: (...args: TEvents[K]) => void): () => void;
4
+ off<K extends keyof TEvents>(event: K, callback: (...args: TEvents[K]) => void): void;
4
5
  emit<K extends keyof TEvents>(event: K, ...args: TEvents[K]): void;
5
6
  removeAllListeners(): void;
6
7
  }
@@ -1 +1 @@
1
- {"version":3,"file":"event-emitter.d.ts","sourceRoot":"","sources":["../src/event-emitter.ts"],"names":[],"mappings":"AAAA,qBAAa,iBAAiB,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;IACtE,OAAO,CAAC,SAAS,CAA+D;IAEhF,EAAE,CAAC,CAAC,SAAS,MAAM,OAAO,EACxB,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,GACtC,MAAM,IAAI;IASb,IAAI,CAAC,CAAC,SAAS,MAAM,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI;IASlE,kBAAkB,IAAI,IAAI;CAG3B"}
1
+ {"version":3,"file":"event-emitter.d.ts","sourceRoot":"","sources":["../src/event-emitter.ts"],"names":[],"mappings":"AAAA,qBAAa,iBAAiB,CAAC,OAAO,SAAS,MAAM,CAAC,MAAM,EAAE,OAAO,EAAE,CAAC;IACtE,OAAO,CAAC,SAAS,CAA+D;IAEhF,EAAE,CAAC,CAAC,SAAS,MAAM,OAAO,EACxB,KAAK,EAAE,CAAC,EACR,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,GACtC,MAAM,IAAI;IASb,GAAG,CAAC,CAAC,SAAS,MAAM,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,QAAQ,EAAE,CAAC,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,KAAK,IAAI,GAAG,IAAI;IAIrF,IAAI,CAAC,CAAC,SAAS,MAAM,OAAO,EAAE,KAAK,EAAE,CAAC,EAAE,GAAG,IAAI,EAAE,OAAO,CAAC,CAAC,CAAC,GAAG,IAAI;IASlE,kBAAkB,IAAI,IAAI;CAG3B"}
@@ -8,6 +8,9 @@ export class TypedEventEmitter {
8
8
  set.add(callback);
9
9
  return () => set.delete(callback);
10
10
  }
11
+ off(event, callback) {
12
+ this.listeners.get(event)?.delete(callback);
13
+ }
11
14
  emit(event, ...args) {
12
15
  const set = this.listeners.get(event);
13
16
  if (set) {
@@ -1 +1 @@
1
- {"version":3,"file":"event-emitter.js","sourceRoot":"","sources":["../src/event-emitter.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,iBAAiB;IACpB,SAAS,GAAG,IAAI,GAAG,EAAoD,CAAC;IAEhF,EAAE,CACA,KAAQ,EACR,QAAuC;QAEvC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QACvC,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC;QACvC,GAAG,CAAC,GAAG,CAAC,QAAwC,CAAC,CAAC;QAClD,OAAO,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,QAAwC,CAAC,CAAC;IACpE,CAAC;IAED,IAAI,CAA0B,KAAQ,EAAE,GAAG,IAAgB;QACzD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,GAAG,EAAE,CAAC;YACR,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;gBACrB,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAED,kBAAkB;QAChB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;CACF"}
1
+ {"version":3,"file":"event-emitter.js","sourceRoot":"","sources":["../src/event-emitter.ts"],"names":[],"mappings":"AAAA,MAAM,OAAO,iBAAiB;IACpB,SAAS,GAAG,IAAI,GAAG,EAAoD,CAAC;IAEhF,EAAE,CACA,KAAQ,EACR,QAAuC;QAEvC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;YAC/B,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,EAAE,IAAI,GAAG,EAAE,CAAC,CAAC;QACvC,CAAC;QACD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAE,CAAC;QACvC,GAAG,CAAC,GAAG,CAAC,QAAwC,CAAC,CAAC;QAClD,OAAO,GAAG,EAAE,CAAC,GAAG,CAAC,MAAM,CAAC,QAAwC,CAAC,CAAC;IACpE,CAAC;IAED,GAAG,CAA0B,KAAQ,EAAE,QAAuC;QAC5E,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,MAAM,CAAC,QAAwC,CAAC,CAAC;IAC9E,CAAC;IAED,IAAI,CAA0B,KAAQ,EAAE,GAAG,IAAgB;QACzD,MAAM,GAAG,GAAG,IAAI,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QACtC,IAAI,GAAG,EAAE,CAAC;YACR,KAAK,MAAM,EAAE,IAAI,GAAG,EAAE,CAAC;gBACrB,EAAE,CAAC,GAAG,IAAI,CAAC,CAAC;YACd,CAAC;QACH,CAAC;IACH,CAAC;IAED,kBAAkB;QAChB,IAAI,CAAC,SAAS,CAAC,KAAK,EAAE,CAAC;IACzB,CAAC;CACF"}
package/dist/index.d.ts CHANGED
@@ -34,6 +34,7 @@ import { T2VAuth } from './auth.js';
34
34
  import { T2VSession } from './sessions.js';
35
35
  import { T2VSkills } from './skills.js';
36
36
  import { T2VTools } from './tools.js';
37
+ import { T2VVoice } from './voice-facade.js';
37
38
  import type { AgentStatus, Attachment, AudioModelsResponse, ChatEvent, ChatMessage, ConversationSnapshot, DisplayMessage, HumanDecision, PartnerConfig, PendingApproval, ModelsResponse, T2VConfig, T2VEventMap, TranscriptionResponse } from './types.js';
38
39
  type SessionClearCallback = () => void;
39
40
  type SessionCreateCallback = (toolNames: string[]) => void;
@@ -74,8 +75,15 @@ export declare class Talk2View {
74
75
  /** True between stop() and stream teardown, so the abort isn't surfaced as an error. */
75
76
  private _stopped;
76
77
  private readonly emitter;
78
+ private _voice;
77
79
  private debug;
78
80
  constructor(config: T2VConfig);
81
+ /**
82
+ * The realtime voice agent (`<VoiceButton>` uses this). A thin facade built
83
+ * on first access; the voice controller and the Pipecat client libraries
84
+ * load on the first `start()`.
85
+ */
86
+ get voice(): T2VVoice;
79
87
  /**
80
88
  * Create a new chat session.
81
89
  */
@@ -258,6 +266,13 @@ export declare class Talk2View {
258
266
  * whatever replaces the conversation it belongs to.
259
267
  */
260
268
  private endCurrentTurn;
269
+ /**
270
+ * A call belongs to the account that started it. A deliberate sign-out or a
271
+ * switch to another account hangs it up (`stopped`); a session that died
272
+ * under it (`null` without {@link T2VAuth.logout}) ends it as `auth_expired`,
273
+ * with an `auth_expired` error, so the end-user is told to sign in again.
274
+ */
275
+ private endVoiceCallForIdentityChange;
261
276
  /**
262
277
  * Drop the cached session when the signed-in identity changes, so the next
263
278
  * chat() opens a fresh session owned by the new user. Unlike {@link clearSession}
@@ -368,11 +383,19 @@ export declare class Talk2View {
368
383
  }
369
384
  export { T2VAuth } from './auth.js';
370
385
  export type { PopupProvider } from './auth.js';
386
+ /** @internal Exported for typing. Construct {@link Talk2View} instead. */
371
387
  export { T2VClient } from './client.js';
388
+ /** @internal Exported for typing. Sessions are created by {@link Talk2View}. */
372
389
  export { T2VSession } from './sessions.js';
373
390
  export { T2VSkills } from './skills.js';
374
391
  export { T2VTools } from './tools.js';
392
+ /** @internal Exported for typing `t2v.on(...)`. Not part of the supported surface. */
375
393
  export { TypedEventEmitter } from './event-emitter.js';
376
394
  export { T2VError, AuthenticationError, PartnerKeyError, SessionError, NetworkError } from './errors.js';
377
- export type { T2VEventMap, T2VConfig, User, Attachment, AttachmentContentPart, MessageContentPart, TextContentPart, ChatEvent, ChatMessage, ConversationSnapshot, ClientTool, ClientToolSchema, ToolHandler, TokenResponse, SignupOutcome, ToolCallInterrupt, AgentStatus, ChatCompletionChunk, RegisterToolsResponse, RegisterSkillsResponse, UserSkill, HumanDecision, PendingApproval, PermissionResult, PermissionCheckResult, ToolPermissionCallback, Model, AudioModel, ModelsResponse, TranscriptionResponse, AudioModelsResponse, GeneratedImageDisplay, ImageFailureDisplay, ImageToolDisplay, ImageGenerationRequest, ImageEditRequest, ImageData, ImagesResponse, ImageModel, ImageModelsResponse, PartnerConfig, UserPreferences, DisplayMessage, ToolStep, } from './types.js';
395
+ export { T2VVoice } from './voice-facade.js';
396
+ /** @internal Exported for typing `t2v.voice`. Not part of the supported surface. */
397
+ export type { T2VVoiceOptions, VoiceControllerLoader } from './voice-facade.js';
398
+ export { VoiceStartError } from './voice-error.js';
399
+ export type { T2VVoiceController, T2VVoiceDeps, VoiceLibs, VoiceLibLoader } from './voice.js';
400
+ export type { T2VEventMap, T2VConfig, User, Attachment, AttachmentContentPart, MessageContentPart, TextContentPart, ChatEvent, ChatMessage, ConversationSnapshot, ClientTool, ClientToolSchema, ToolHandler, TokenResponse, SignupOutcome, ToolCallInterrupt, AgentStatus, ChatCompletionChunk, RegisterToolsResponse, RegisterSkillsResponse, UserSkill, HumanDecision, PendingApproval, PermissionResult, PermissionCheckResult, ToolPermissionCallback, Model, AudioModel, ModelsResponse, TranscriptionResponse, AudioModelsResponse, GeneratedImageDisplay, ImageFailureDisplay, ImageToolDisplay, ImageGenerationRequest, ImageEditRequest, ImageData, ImagesResponse, ImageModel, ImageModelsResponse, PartnerConfig, UserPreferences, DisplayMessage, ToolStep, VoiceSessionResponse, VoiceState, VoiceEndReason, VoiceError, VoiceTranscript, VoiceToolCall, VoicePendingApproval, VoiceEventMap, VoiceIceServer, } from './types.js';
378
401
  //# sourceMappingURL=index.d.ts.map