@liforma/client 0.2.1 → 0.3.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 (110) hide show
  1. package/CHANGELOG.md +14 -0
  2. package/README.md +28 -1
  3. package/dist/next/index.js +2086 -1429
  4. package/dist/next/index.js.map +1 -1
  5. package/dist/next/react/ExperienceThumbnail.d.ts.map +1 -1
  6. package/dist/next/thumbnail/index.d.ts +2 -1
  7. package/dist/next/thumbnail/index.d.ts.map +1 -1
  8. package/dist/next/thumbnail/lazyLoad.d.ts +2 -0
  9. package/dist/next/thumbnail/lazyLoad.d.ts.map +1 -1
  10. package/dist/next/thumbnail/lazyLoad.test.d.ts +2 -0
  11. package/dist/next/thumbnail/lazyLoad.test.d.ts.map +1 -0
  12. package/dist/next/thumbnail/scrollParallax.d.ts +6 -1
  13. package/dist/next/thumbnail/scrollParallax.d.ts.map +1 -1
  14. package/dist/next/thumbnail/styles.d.ts.map +1 -1
  15. package/dist/next/thumbnail/thumbLoadScheduler.d.ts +14 -0
  16. package/dist/next/thumbnail/thumbLoadScheduler.d.ts.map +1 -0
  17. package/dist/next/v2/embed/iframeHost.d.ts +33 -2
  18. package/dist/next/v2/embed/iframeHost.d.ts.map +1 -1
  19. package/dist/next/v2/embed/playerReachability.d.ts +1 -1
  20. package/dist/next/v2/embed/playerReachability.d.ts.map +1 -1
  21. package/dist/next/v2/embed/protocol.d.ts +53 -0
  22. package/dist/next/v2/embed/protocol.d.ts.map +1 -1
  23. package/dist/next/v2/experience.d.ts +7 -3
  24. package/dist/next/v2/experience.d.ts.map +1 -1
  25. package/dist/next/v2/speech/captureMediaStreamTrack.d.ts +17 -0
  26. package/dist/next/v2/speech/captureMediaStreamTrack.d.ts.map +1 -0
  27. package/dist/next/v2/speech/index.d.ts +4 -0
  28. package/dist/next/v2/speech/index.d.ts.map +1 -0
  29. package/dist/next/v2/speech/speechController.d.ts +16 -0
  30. package/dist/next/v2/speech/speechController.d.ts.map +1 -0
  31. package/dist/next/v2/speech/types.d.ts +176 -0
  32. package/dist/next/v2/speech/types.d.ts.map +1 -0
  33. package/dist/next/v2/types/sessionInteraction.d.ts +6 -3
  34. package/dist/next/v2/types/sessionInteraction.d.ts.map +1 -1
  35. package/dist/npm/index.js +1835 -1178
  36. package/dist/npm/index.js.map +1 -1
  37. package/dist/npm/thumbnail/index.d.ts +2 -1
  38. package/dist/npm/thumbnail/index.d.ts.map +1 -1
  39. package/dist/npm/thumbnail/lazyLoad.d.ts +2 -0
  40. package/dist/npm/thumbnail/lazyLoad.d.ts.map +1 -1
  41. package/dist/npm/thumbnail/scrollParallax.d.ts +6 -1
  42. package/dist/npm/thumbnail/scrollParallax.d.ts.map +1 -1
  43. package/dist/npm/thumbnail/styles.d.ts.map +1 -1
  44. package/dist/npm/thumbnail/thumbLoadScheduler.d.ts +14 -0
  45. package/dist/npm/thumbnail/thumbLoadScheduler.d.ts.map +1 -0
  46. package/dist/npm/v2/embed/iframeHost.d.ts +33 -2
  47. package/dist/npm/v2/embed/iframeHost.d.ts.map +1 -1
  48. package/dist/npm/v2/embed/playerReachability.d.ts +1 -1
  49. package/dist/npm/v2/embed/playerReachability.d.ts.map +1 -1
  50. package/dist/npm/v2/embed/protocol.d.ts +53 -0
  51. package/dist/npm/v2/embed/protocol.d.ts.map +1 -1
  52. package/dist/npm/v2/experience.d.ts +7 -3
  53. package/dist/npm/v2/experience.d.ts.map +1 -1
  54. package/dist/npm/v2/index.d.ts +4 -1
  55. package/dist/npm/v2/index.d.ts.map +1 -1
  56. package/dist/npm/v2/liforma-experience-thumbnail.d.ts.map +1 -1
  57. package/dist/npm/v2/npm.d.ts +4 -2
  58. package/dist/npm/v2/npm.d.ts.map +1 -1
  59. package/dist/npm/v2/speech/captureMediaStreamTrack.d.ts +17 -0
  60. package/dist/npm/v2/speech/captureMediaStreamTrack.d.ts.map +1 -0
  61. package/dist/npm/v2/speech/index.d.ts +4 -0
  62. package/dist/npm/v2/speech/index.d.ts.map +1 -0
  63. package/dist/npm/v2/speech/speechController.d.ts +16 -0
  64. package/dist/npm/v2/speech/speechController.d.ts.map +1 -0
  65. package/dist/npm/v2/speech/types.d.ts +176 -0
  66. package/dist/npm/v2/speech/types.d.ts.map +1 -0
  67. package/dist/npm/v2/types/sessionInteraction.d.ts +6 -3
  68. package/dist/npm/v2/types/sessionInteraction.d.ts.map +1 -1
  69. package/dist/react/component/experienceComponentTypes.d.ts +2 -2
  70. package/dist/react/component/experienceComponentTypes.d.ts.map +1 -1
  71. package/dist/react/index.js +2127 -1461
  72. package/dist/react/index.js.map +1 -1
  73. package/dist/react/react/Experience.d.ts.map +1 -1
  74. package/dist/react/react/ExperienceThumbnail.d.ts.map +1 -1
  75. package/dist/react/thumbnail/index.d.ts +2 -1
  76. package/dist/react/thumbnail/index.d.ts.map +1 -1
  77. package/dist/react/thumbnail/lazyLoad.d.ts +2 -0
  78. package/dist/react/thumbnail/lazyLoad.d.ts.map +1 -1
  79. package/dist/react/thumbnail/lazyLoad.test.d.ts +2 -0
  80. package/dist/react/thumbnail/lazyLoad.test.d.ts.map +1 -0
  81. package/dist/react/thumbnail/scrollParallax.d.ts +6 -1
  82. package/dist/react/thumbnail/scrollParallax.d.ts.map +1 -1
  83. package/dist/react/thumbnail/styles.d.ts.map +1 -1
  84. package/dist/react/thumbnail/thumbLoadScheduler.d.ts +14 -0
  85. package/dist/react/thumbnail/thumbLoadScheduler.d.ts.map +1 -0
  86. package/dist/react/v2/embed/iframeHost.d.ts +33 -2
  87. package/dist/react/v2/embed/iframeHost.d.ts.map +1 -1
  88. package/dist/react/v2/embed/playerReachability.d.ts +1 -1
  89. package/dist/react/v2/embed/playerReachability.d.ts.map +1 -1
  90. package/dist/react/v2/embed/protocol.d.ts +53 -0
  91. package/dist/react/v2/embed/protocol.d.ts.map +1 -1
  92. package/dist/react/v2/experience.d.ts +7 -3
  93. package/dist/react/v2/experience.d.ts.map +1 -1
  94. package/dist/react/v2/speech/captureMediaStreamTrack.d.ts +17 -0
  95. package/dist/react/v2/speech/captureMediaStreamTrack.d.ts.map +1 -0
  96. package/dist/react/v2/speech/index.d.ts +4 -0
  97. package/dist/react/v2/speech/index.d.ts.map +1 -0
  98. package/dist/react/v2/speech/speechController.d.ts +16 -0
  99. package/dist/react/v2/speech/speechController.d.ts.map +1 -0
  100. package/dist/react/v2/speech/types.d.ts +176 -0
  101. package/dist/react/v2/speech/types.d.ts.map +1 -0
  102. package/dist/react/v2/types/sessionInteraction.d.ts +6 -3
  103. package/dist/react/v2/types/sessionInteraction.d.ts.map +1 -1
  104. package/dist/react/v2/types/sessionManifestSchema.d.ts +1 -1
  105. package/dist/sdk/v2/client.js +14 -10
  106. package/dist/sdk/v2/client.js.map +1 -1
  107. package/dist/svelte/Experience.svelte +18 -5
  108. package/dist/svelte/Experience.svelte.d.ts +7 -2
  109. package/dist/svelte/ExperienceThumbnail.svelte +3 -6
  110. package/package.json +4 -2
package/CHANGELOG.md CHANGED
@@ -1,5 +1,19 @@
1
1
  # @liforma/client changelog
2
2
 
3
+ ## 0.3.0 — 2026-08-06
4
+
5
+ ### Added
6
+
7
+ - `Experience.speech` controller: `speak`, `play`, `createUtterance`, `interrupt`
8
+ - `speech.play` audio sources: PCM, encoded bytes/Blob, CORS URL, and host `MediaStreamTrack`
9
+ - Speech types/errors exported from `@liforma/client` (`UnsupportedSpeechOperationError`, …)
10
+ - README section for bring-your-own voice
11
+
12
+ ### Notes
13
+
14
+ - Encoded/URL decode runs in the player; MediaStreamTrack capture runs in the host SDK
15
+ - Requires session capabilities `textSpeech` / `externalSpeechAudio` as appropriate
16
+
3
17
  ## 0.2.1 — 2026-08-05
4
18
 
5
19
  ### Changed
package/README.md CHANGED
@@ -92,11 +92,38 @@ export function Demo() {
92
92
 
93
93
  Never put API keys in browser code. Details: [Server sessions](https://docs.liforma.ai/avatar-experiences/server-sessions), [Browser embeds](https://docs.liforma.ai/avatar-experiences/browser-embeds).
94
94
 
95
+ ## Speech API
96
+
97
+ ```ts
98
+ import { Experience } from '@liforma/client';
99
+
100
+ const experience = await Experience.startSession({ experienceId: 'exp_…' });
101
+ await experience.attach({ container: '#avatar' });
102
+
103
+ experience.on('started', async () => {
104
+ // Liforma TTS
105
+ await experience.speech.speak({ text: 'Hello from Liforma.' });
106
+
107
+ // Bring-your-own: PCM, encoded bytes, URL, or MediaStreamTrack
108
+ await experience.speech.play({
109
+ audio: { url: 'https://cdn.example.com/line.mp3' },
110
+ queue: 'append'
111
+ });
112
+ });
113
+ ```
114
+
115
+ | Capability | Methods |
116
+ |------------|---------|
117
+ | `textSpeech` | `speech.speak` |
118
+ | `externalSpeechAudio` | `speech.play`, `speech.createUtterance`, `speech.interrupt` |
119
+
120
+ Streaming vendors: open one utterance per agent turn, `write` PCM chunks, `close` on turn end — see [Bring your own voice](https://docs.liforma.ai/avatar-experiences/bring-your-own-voice).
121
+
95
122
  ## More components
96
123
 
97
124
  - [ExperienceThumbnail](https://docs.liforma.ai/avatar-experiences/experience-thumbnail) — gallery cards (no session)
98
125
  - [ExperienceWidget](https://docs.liforma.ai/avatar-experiences/experience-widget) — corner launcher
99
- - [Experience API](https://docs.liforma.ai/avatar-experiences/experience-api) — `speak()`, listen, events
126
+ - [Experience API](https://docs.liforma.ai/avatar-experiences/experience-api) — `speech.*`, listen, events
100
127
 
101
128
  ## License
102
129