@talqing/sdk 0.1.0 → 0.2.1

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 (216) hide show
  1. package/README.md +22 -3
  2. package/dist/{browser.d.ts → cjs/browser.d.ts} +5 -0
  3. package/dist/cjs/browser.d.ts.map +1 -0
  4. package/dist/cjs/browser.js +465 -0
  5. package/dist/cjs/browser.js.map +1 -0
  6. package/dist/{client.d.ts → cjs/client.d.ts} +3 -0
  7. package/dist/cjs/client.d.ts.map +1 -0
  8. package/dist/cjs/client.js +109 -0
  9. package/dist/cjs/client.js.map +1 -0
  10. package/dist/cjs/gen/apiVersion.d.ts.map +1 -0
  11. package/dist/cjs/gen/apiVersion.js +7 -0
  12. package/dist/cjs/gen/apiVersion.js.map +1 -0
  13. package/dist/cjs/gen/client/client.gen.d.ts.map +1 -0
  14. package/dist/cjs/gen/client/client.gen.js +221 -0
  15. package/dist/cjs/gen/client/client.gen.js.map +1 -0
  16. package/dist/cjs/gen/client/index.d.ts.map +1 -0
  17. package/dist/cjs/gen/client/index.js +18 -0
  18. package/dist/cjs/gen/client/index.js.map +1 -0
  19. package/dist/cjs/gen/client/types.gen.d.ts.map +1 -0
  20. package/dist/cjs/gen/client/types.gen.js +4 -0
  21. package/dist/cjs/gen/client/types.gen.js.map +1 -0
  22. package/dist/cjs/gen/client/utils.gen.d.ts.map +1 -0
  23. package/dist/cjs/gen/client/utils.gen.js +242 -0
  24. package/dist/cjs/gen/client/utils.gen.js.map +1 -0
  25. package/dist/cjs/gen/client.gen.d.ts.map +1 -0
  26. package/dist/cjs/gen/client.gen.js +7 -0
  27. package/dist/cjs/gen/client.gen.js.map +1 -0
  28. package/dist/cjs/gen/core/auth.gen.d.ts.map +1 -0
  29. package/dist/cjs/gen/core/auth.gen.js +19 -0
  30. package/dist/cjs/gen/core/auth.gen.js.map +1 -0
  31. package/dist/cjs/gen/core/bodySerializer.gen.d.ts.map +1 -0
  32. package/dist/cjs/gen/core/bodySerializer.gen.js +61 -0
  33. package/dist/cjs/gen/core/bodySerializer.gen.js.map +1 -0
  34. package/dist/cjs/gen/core/params.gen.d.ts.map +1 -0
  35. package/dist/cjs/gen/core/params.gen.js +113 -0
  36. package/dist/cjs/gen/core/params.gen.js.map +1 -0
  37. package/dist/cjs/gen/core/pathSerializer.gen.d.ts.map +1 -0
  38. package/dist/cjs/gen/core/pathSerializer.gen.js +116 -0
  39. package/dist/cjs/gen/core/pathSerializer.gen.js.map +1 -0
  40. package/dist/cjs/gen/core/queryKeySerializer.gen.d.ts.map +1 -0
  41. package/dist/cjs/gen/core/queryKeySerializer.gen.js +99 -0
  42. package/dist/cjs/gen/core/queryKeySerializer.gen.js.map +1 -0
  43. package/dist/cjs/gen/core/serverSentEvents.gen.d.ts.map +1 -0
  44. package/dist/cjs/gen/core/serverSentEvents.gen.js +136 -0
  45. package/dist/cjs/gen/core/serverSentEvents.gen.js.map +1 -0
  46. package/dist/cjs/gen/core/types.gen.d.ts.map +1 -0
  47. package/dist/cjs/gen/core/types.gen.js +4 -0
  48. package/dist/cjs/gen/core/types.gen.js.map +1 -0
  49. package/dist/cjs/gen/core/utils.gen.d.ts.map +1 -0
  50. package/dist/cjs/gen/core/utils.gen.js +94 -0
  51. package/dist/cjs/gen/core/utils.gen.js.map +1 -0
  52. package/dist/cjs/gen/index.d.ts.map +1 -0
  53. package/dist/cjs/gen/index.js +7 -0
  54. package/dist/cjs/gen/index.js.map +1 -0
  55. package/dist/cjs/gen/sdk.gen.d.ts.map +1 -0
  56. package/dist/cjs/gen/sdk.gen.js +4373 -0
  57. package/dist/cjs/gen/sdk.gen.js.map +1 -0
  58. package/dist/cjs/gen/types.gen.d.ts.map +1 -0
  59. package/dist/cjs/gen/types.gen.js +4 -0
  60. package/dist/cjs/gen/types.gen.js.map +1 -0
  61. package/dist/cjs/index.d.ts.map +1 -0
  62. package/dist/cjs/index.js +27 -0
  63. package/dist/cjs/index.js.map +1 -0
  64. package/dist/cjs/package.json +3 -0
  65. package/dist/cjs/vocabulary.d.ts.map +1 -0
  66. package/dist/cjs/vocabulary.js +13 -0
  67. package/dist/cjs/vocabulary.js.map +1 -0
  68. package/dist/esm/browser.d.ts +158 -0
  69. package/dist/esm/browser.d.ts.map +1 -0
  70. package/dist/{browser.js → esm/browser.js} +30 -28
  71. package/dist/esm/browser.js.map +1 -0
  72. package/dist/esm/client.d.ts +104 -0
  73. package/dist/esm/client.d.ts.map +1 -0
  74. package/dist/{client.js → esm/client.js} +16 -0
  75. package/dist/esm/client.js.map +1 -0
  76. package/dist/esm/gen/apiVersion.d.ts +3 -0
  77. package/dist/esm/gen/apiVersion.d.ts.map +1 -0
  78. package/dist/esm/gen/apiVersion.js.map +1 -0
  79. package/dist/esm/gen/client/client.gen.d.ts +3 -0
  80. package/dist/esm/gen/client/client.gen.d.ts.map +1 -0
  81. package/dist/esm/gen/client/client.gen.js.map +1 -0
  82. package/dist/esm/gen/client/index.d.ts +11 -0
  83. package/dist/esm/gen/client/index.d.ts.map +1 -0
  84. package/dist/esm/gen/client/index.js.map +1 -0
  85. package/dist/esm/gen/client/types.gen.d.ts +121 -0
  86. package/dist/esm/gen/client/types.gen.d.ts.map +1 -0
  87. package/dist/esm/gen/client/types.gen.js.map +1 -0
  88. package/dist/esm/gen/client/utils.gen.d.ts +38 -0
  89. package/dist/esm/gen/client/utils.gen.d.ts.map +1 -0
  90. package/dist/esm/gen/client/utils.gen.js.map +1 -0
  91. package/dist/esm/gen/client.gen.d.ts +13 -0
  92. package/dist/esm/gen/client.gen.d.ts.map +1 -0
  93. package/dist/esm/gen/client.gen.js.map +1 -0
  94. package/dist/esm/gen/core/auth.gen.d.ts +26 -0
  95. package/dist/esm/gen/core/auth.gen.d.ts.map +1 -0
  96. package/dist/esm/gen/core/auth.gen.js.map +1 -0
  97. package/dist/esm/gen/core/bodySerializer.gen.d.ts +26 -0
  98. package/dist/esm/gen/core/bodySerializer.gen.d.ts.map +1 -0
  99. package/dist/esm/gen/core/bodySerializer.gen.js.map +1 -0
  100. package/dist/esm/gen/core/params.gen.d.ts +44 -0
  101. package/dist/esm/gen/core/params.gen.d.ts.map +1 -0
  102. package/dist/esm/gen/core/params.gen.js.map +1 -0
  103. package/dist/esm/gen/core/pathSerializer.gen.d.ts +34 -0
  104. package/dist/esm/gen/core/pathSerializer.gen.d.ts.map +1 -0
  105. package/dist/esm/gen/core/pathSerializer.gen.js.map +1 -0
  106. package/dist/esm/gen/core/queryKeySerializer.gen.d.ts +19 -0
  107. package/dist/esm/gen/core/queryKeySerializer.gen.d.ts.map +1 -0
  108. package/dist/esm/gen/core/queryKeySerializer.gen.js.map +1 -0
  109. package/dist/esm/gen/core/serverSentEvents.gen.d.ts +72 -0
  110. package/dist/esm/gen/core/serverSentEvents.gen.d.ts.map +1 -0
  111. package/dist/esm/gen/core/serverSentEvents.gen.js.map +1 -0
  112. package/dist/esm/gen/core/types.gen.d.ts +84 -0
  113. package/dist/esm/gen/core/types.gen.d.ts.map +1 -0
  114. package/dist/esm/gen/core/types.gen.js.map +1 -0
  115. package/dist/esm/gen/core/utils.gen.d.ts +20 -0
  116. package/dist/esm/gen/core/utils.gen.d.ts.map +1 -0
  117. package/dist/esm/gen/core/utils.gen.js.map +1 -0
  118. package/dist/esm/gen/index.d.ts +3 -0
  119. package/dist/esm/gen/index.d.ts.map +1 -0
  120. package/dist/esm/gen/index.js.map +1 -0
  121. package/dist/esm/gen/sdk.gen.d.ts +2330 -0
  122. package/dist/esm/gen/sdk.gen.d.ts.map +1 -0
  123. package/dist/esm/gen/sdk.gen.js.map +1 -0
  124. package/dist/esm/gen/types.gen.d.ts +17288 -0
  125. package/dist/esm/gen/types.gen.d.ts.map +1 -0
  126. package/dist/esm/gen/types.gen.js.map +1 -0
  127. package/dist/esm/index.d.ts +6 -0
  128. package/dist/esm/index.d.ts.map +1 -0
  129. package/dist/esm/index.js.map +1 -0
  130. package/dist/esm/package.json +3 -0
  131. package/dist/esm/vocabulary.d.ts +67 -0
  132. package/dist/esm/vocabulary.d.ts.map +1 -0
  133. package/dist/esm/vocabulary.js.map +1 -0
  134. package/package.json +31 -10
  135. package/src/browser.tsx +31 -28
  136. package/src/client.ts +17 -0
  137. package/dist/browser.d.ts.map +0 -1
  138. package/dist/browser.js.map +0 -1
  139. package/dist/client.d.ts.map +0 -1
  140. package/dist/client.js.map +0 -1
  141. package/dist/gen/apiVersion.d.ts.map +0 -1
  142. package/dist/gen/apiVersion.js.map +0 -1
  143. package/dist/gen/client/client.gen.d.ts.map +0 -1
  144. package/dist/gen/client/client.gen.js.map +0 -1
  145. package/dist/gen/client/index.d.ts.map +0 -1
  146. package/dist/gen/client/index.js.map +0 -1
  147. package/dist/gen/client/types.gen.d.ts.map +0 -1
  148. package/dist/gen/client/types.gen.js.map +0 -1
  149. package/dist/gen/client/utils.gen.d.ts.map +0 -1
  150. package/dist/gen/client/utils.gen.js.map +0 -1
  151. package/dist/gen/client.gen.d.ts.map +0 -1
  152. package/dist/gen/client.gen.js.map +0 -1
  153. package/dist/gen/core/auth.gen.d.ts.map +0 -1
  154. package/dist/gen/core/auth.gen.js.map +0 -1
  155. package/dist/gen/core/bodySerializer.gen.d.ts.map +0 -1
  156. package/dist/gen/core/bodySerializer.gen.js.map +0 -1
  157. package/dist/gen/core/params.gen.d.ts.map +0 -1
  158. package/dist/gen/core/params.gen.js.map +0 -1
  159. package/dist/gen/core/pathSerializer.gen.d.ts.map +0 -1
  160. package/dist/gen/core/pathSerializer.gen.js.map +0 -1
  161. package/dist/gen/core/queryKeySerializer.gen.d.ts.map +0 -1
  162. package/dist/gen/core/queryKeySerializer.gen.js.map +0 -1
  163. package/dist/gen/core/serverSentEvents.gen.d.ts.map +0 -1
  164. package/dist/gen/core/serverSentEvents.gen.js.map +0 -1
  165. package/dist/gen/core/types.gen.d.ts.map +0 -1
  166. package/dist/gen/core/types.gen.js.map +0 -1
  167. package/dist/gen/core/utils.gen.d.ts.map +0 -1
  168. package/dist/gen/core/utils.gen.js.map +0 -1
  169. package/dist/gen/index.d.ts.map +0 -1
  170. package/dist/gen/index.js.map +0 -1
  171. package/dist/gen/sdk.gen.d.ts.map +0 -1
  172. package/dist/gen/sdk.gen.js.map +0 -1
  173. package/dist/gen/types.gen.d.ts.map +0 -1
  174. package/dist/gen/types.gen.js.map +0 -1
  175. package/dist/index.d.ts.map +0 -1
  176. package/dist/index.js.map +0 -1
  177. package/dist/vocabulary.d.ts.map +0 -1
  178. package/dist/vocabulary.js.map +0 -1
  179. /package/dist/{gen → cjs/gen}/apiVersion.d.ts +0 -0
  180. /package/dist/{gen → cjs/gen}/client/client.gen.d.ts +0 -0
  181. /package/dist/{gen → cjs/gen}/client/index.d.ts +0 -0
  182. /package/dist/{gen → cjs/gen}/client/types.gen.d.ts +0 -0
  183. /package/dist/{gen → cjs/gen}/client/utils.gen.d.ts +0 -0
  184. /package/dist/{gen → cjs/gen}/client.gen.d.ts +0 -0
  185. /package/dist/{gen → cjs/gen}/core/auth.gen.d.ts +0 -0
  186. /package/dist/{gen → cjs/gen}/core/bodySerializer.gen.d.ts +0 -0
  187. /package/dist/{gen → cjs/gen}/core/params.gen.d.ts +0 -0
  188. /package/dist/{gen → cjs/gen}/core/pathSerializer.gen.d.ts +0 -0
  189. /package/dist/{gen → cjs/gen}/core/queryKeySerializer.gen.d.ts +0 -0
  190. /package/dist/{gen → cjs/gen}/core/serverSentEvents.gen.d.ts +0 -0
  191. /package/dist/{gen → cjs/gen}/core/types.gen.d.ts +0 -0
  192. /package/dist/{gen → cjs/gen}/core/utils.gen.d.ts +0 -0
  193. /package/dist/{gen → cjs/gen}/index.d.ts +0 -0
  194. /package/dist/{gen → cjs/gen}/sdk.gen.d.ts +0 -0
  195. /package/dist/{gen → cjs/gen}/types.gen.d.ts +0 -0
  196. /package/dist/{index.d.ts → cjs/index.d.ts} +0 -0
  197. /package/dist/{vocabulary.d.ts → cjs/vocabulary.d.ts} +0 -0
  198. /package/dist/{gen → esm/gen}/apiVersion.js +0 -0
  199. /package/dist/{gen → esm/gen}/client/client.gen.js +0 -0
  200. /package/dist/{gen → esm/gen}/client/index.js +0 -0
  201. /package/dist/{gen → esm/gen}/client/types.gen.js +0 -0
  202. /package/dist/{gen → esm/gen}/client/utils.gen.js +0 -0
  203. /package/dist/{gen → esm/gen}/client.gen.js +0 -0
  204. /package/dist/{gen → esm/gen}/core/auth.gen.js +0 -0
  205. /package/dist/{gen → esm/gen}/core/bodySerializer.gen.js +0 -0
  206. /package/dist/{gen → esm/gen}/core/params.gen.js +0 -0
  207. /package/dist/{gen → esm/gen}/core/pathSerializer.gen.js +0 -0
  208. /package/dist/{gen → esm/gen}/core/queryKeySerializer.gen.js +0 -0
  209. /package/dist/{gen → esm/gen}/core/serverSentEvents.gen.js +0 -0
  210. /package/dist/{gen → esm/gen}/core/types.gen.js +0 -0
  211. /package/dist/{gen → esm/gen}/core/utils.gen.js +0 -0
  212. /package/dist/{gen → esm/gen}/index.js +0 -0
  213. /package/dist/{gen → esm/gen}/sdk.gen.js +0 -0
  214. /package/dist/{gen → esm/gen}/types.gen.js +0 -0
  215. /package/dist/{index.js → esm/index.js} +0 -0
  216. /package/dist/{vocabulary.js → esm/vocabulary.js} +0 -0
package/README.md CHANGED
@@ -15,7 +15,8 @@ Two entrypoints:
15
15
  npm install @talqing/sdk
16
16
  ```
17
17
 
18
- Node 20 or newer. `react` and `react-dom` are peer dependencies of the
18
+ Node 20 or newer. Both entrypoints ship ESM and CommonJS, so `import` and
19
+ `require` both work. `react` and `react-dom` are peer dependencies of the
19
20
  `/browser` entrypoint only — a server-side consumer never installs them.
20
21
 
21
22
  ## Authentication
@@ -149,18 +150,36 @@ Voice and video agents take a LiveKit room token. The `/browser` entrypoint
149
150
  wraps the whole join — installing this package is all a tenant needs.
150
151
 
151
152
  ```tsx
153
+ import { useEffect } from "react";
152
154
  import { TalqingSessionProvider, useTalqingSession } from "@talqing/sdk/browser";
153
155
 
154
- function App({ agentId }: { agentId: string }) {
156
+ function CallSession({ agentId, onLeave }: { agentId: string; onLeave: () => void }) {
155
157
  const session = useTalqingSession({ client: talqing, agentId });
158
+
159
+ useEffect(() => {
160
+ void session.start();
161
+ return () => void session.end();
162
+ }, []);
163
+
156
164
  return (
157
165
  <TalqingSessionProvider session={session}>
158
- <Call />
166
+ <Call onLeave={onLeave} />
159
167
  </TalqingSessionProvider>
160
168
  );
161
169
  }
162
170
  ```
163
171
 
172
+ One session is one call: start it when the component mounts and end it on the
173
+ way out. Place the second call by mounting a second session — render
174
+ `<CallSession>` while a call is up and drop it to hang up — rather than
175
+ `start()`ing a session that has already run. A finished session's token names
176
+ the room that call used, and the API will not let a second call rejoin it.
177
+
178
+ Pass `callOptions.contact_key` — your own id for the person on the call — if an
179
+ agent should recognise a returning caller. Each call mints its own key when you
180
+ leave it out, so two calls from the same person arrive as two strangers and an
181
+ agent set to carry past conversations has nothing to carry.
182
+
164
183
  It also carries `useTalqingImages` for attaching a photo mid-call,
165
184
  `useTalqingFrontendRpcs` for tools that call back into your page,
166
185
  `useTalqingUserdata`, `useTalqingAvatarTrack` and `TalqingVideoTrack` for a
@@ -39,6 +39,11 @@ export declare const TALQING_AUDIO_CAPTURE_DEFAULTS: {
39
39
  readonly noiseSuppression: true;
40
40
  readonly autoGainControl: true;
41
41
  };
42
+ /** One session, one call — `start()` it when this mounts and `end()` it on the
43
+ * way out, the lifecycle LiveKit's own session docs describe. A second call is
44
+ * a second mount, so give the component holding this a `key` that changes per
45
+ * call. Starting a finished session again would rejoin the room the last call
46
+ * used, which the API refuses. */
42
47
  export declare function useTalqingSession({ client, agentId, roomOptions, callOptions, onTokenDetails, }: TalqingBrowserSessionOptions): TalqingSession;
43
48
  export declare function TalqingSessionProvider({ session, children, audio, }: {
44
49
  session: TalqingSession;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.d.ts","sourceRoot":"","sources":["../../src/browser.tsx"],"names":[],"mappings":"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"}
@@ -0,0 +1,465 @@
1
+ "use strict";
2
+ "use client";
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.TALQING_SCREEN_SHARE_PUBLISH = exports.TALQING_SCREEN_SHARE_CAPTURE = exports.TALQING_IMAGE_MAX_EDGE_PX = exports.TALQING_IMAGE_MAX_BYTES = exports.TALQING_IMAGE_TOPIC = exports.TALQING_AUDIO_CAPTURE_DEFAULTS = exports.TalqingRpcError = void 0;
5
+ exports.createTalqingTokenSource = createTalqingTokenSource;
6
+ exports.useTalqingSession = useTalqingSession;
7
+ exports.TalqingSessionProvider = TalqingSessionProvider;
8
+ exports.useTalqingConnection = useTalqingConnection;
9
+ exports.setTalqingUserdata = setTalqingUserdata;
10
+ exports.getTalqingUserdata = getTalqingUserdata;
11
+ exports.useTalqingUserdata = useTalqingUserdata;
12
+ exports.talqingImageRejection = talqingImageRejection;
13
+ exports.talqingDownscaleImage = talqingDownscaleImage;
14
+ exports.talqingImageDataUrl = talqingImageDataUrl;
15
+ exports.useTalqingImages = useTalqingImages;
16
+ exports.useTalqingAgent = useTalqingAgent;
17
+ exports.useTalqingMessages = useTalqingMessages;
18
+ exports.useTalqingScreenShare = useTalqingScreenShare;
19
+ exports.useTalqingAvatarTrack = useTalqingAvatarTrack;
20
+ exports.TalqingVideoTrack = TalqingVideoTrack;
21
+ exports.useTalqingRpcHandlers = useTalqingRpcHandlers;
22
+ exports.useTalqingFrontendRpcs = useTalqingFrontendRpcs;
23
+ exports.setTalqingBrowserLogLevel = setTalqingBrowserLogLevel;
24
+ const jsx_runtime_1 = require("react/jsx-runtime");
25
+ const react_1 = require("react");
26
+ const livekit_client_1 = require("livekit-client");
27
+ const components_react_1 = require("@livekit/components-react");
28
+ class TalqingRpcError extends Error {
29
+ constructor(code, message, data) {
30
+ super(message);
31
+ this.name = "TalqingRpcError";
32
+ this.code = code;
33
+ this.data = data;
34
+ }
35
+ }
36
+ exports.TalqingRpcError = TalqingRpcError;
37
+ function createTalqingTokenSource(client, agentId, options = {}, onTokenDetails) {
38
+ // One source is one call, and it mints once. LiveKit sources normally cache
39
+ // for themselves; `TokenSource.literal` is the variant that leaves caching to
40
+ // us, and this is us doing it.
41
+ //
42
+ // It has to be done, because minting is not free here: POST /v1/calls/token
43
+ // files the session row the call is later read back from. The framework asks
44
+ // three times per call — to warm the connection, to connect, and once more as
45
+ // the call ends to drop what it assumes is a cached token — and only the
46
+ // middle one is a call anybody placed. Minting for the third filed a session
47
+ // nobody ever joined, which sat in the tenant's call list as queued for good.
48
+ //
49
+ // Freshness comes from a new source per call, never from re-minting inside
50
+ // one: the token names the room, and this call has exactly one. Mount the
51
+ // session per call and end it on unmount, as LiveKit's own session lifecycle
52
+ // does, and that holds by construction.
53
+ let minted = null;
54
+ return livekit_client_1.TokenSource.literal(() => {
55
+ // A mint that failed is not this call's token, and the surface will offer
56
+ // the call again — so keep the rejection out of the cache.
57
+ minted ?? (minted = (async () => {
58
+ const details = await client.calls.token({
59
+ tokenRequest: { ...options, agent_id: agentId, contact_key: options.contact_key ?? null },
60
+ });
61
+ onTokenDetails?.(details);
62
+ return {
63
+ serverUrl: details.server_url,
64
+ participantToken: details.participant_token,
65
+ };
66
+ })().catch((err) => {
67
+ minted = null;
68
+ throw err;
69
+ }));
70
+ return minted;
71
+ });
72
+ }
73
+ /* Echo cancellation is what stops the agent hearing its own speech through the
74
+ * caller's microphone and interrupting itself. It is a default rather than
75
+ * something each app remembers, because a call without it is broken in a way
76
+ * that sounds like a bad model. Pass `roomOptions.audioCaptureDefaults` to
77
+ * override. */
78
+ exports.TALQING_AUDIO_CAPTURE_DEFAULTS = {
79
+ echoCancellation: true,
80
+ noiseSuppression: true,
81
+ autoGainControl: true,
82
+ };
83
+ /** One session, one call — `start()` it when this mounts and `end()` it on the
84
+ * way out, the lifecycle LiveKit's own session docs describe. A second call is
85
+ * a second mount, so give the component holding this a `key` that changes per
86
+ * call. Starting a finished session again would rejoin the room the last call
87
+ * used, which the API refuses. */
88
+ function useTalqingSession({ client, agentId, roomOptions, callOptions, onTokenDetails, }) {
89
+ const tokenSource = (0, react_1.useMemo)(() => createTalqingTokenSource(client, agentId, callOptions, onTokenDetails), [client, agentId, callOptions, onTokenDetails]);
90
+ const room = (0, react_1.useMemo)(() => new livekit_client_1.Room({ audioCaptureDefaults: exports.TALQING_AUDIO_CAPTURE_DEFAULTS, ...roomOptions }), [roomOptions]);
91
+ return (0, components_react_1.useSession)(tokenSource, { room });
92
+ }
93
+ function TalqingSessionProvider({ session, children, audio = true, }) {
94
+ return ((0, jsx_runtime_1.jsxs)(components_react_1.SessionProvider, { session: session, children: [children, audio ? (0, jsx_runtime_1.jsx)(components_react_1.RoomAudioRenderer, {}) : null] }));
95
+ }
96
+ function useTalqingConnection() {
97
+ const ctx = (0, components_react_1.useSessionContext)();
98
+ return {
99
+ isConnected: ctx.isConnected,
100
+ connectionState: ctx.connectionState,
101
+ room: ctx.room,
102
+ start: ctx.start,
103
+ end: ctx.end,
104
+ };
105
+ }
106
+ async function setTalqingUserdata(room, patch, responseTimeout = 3) {
107
+ const agent = [...room.remoteParticipants.values()].find((participant) => participant.kind === livekit_client_1.ParticipantKind.AGENT);
108
+ if (!agent)
109
+ return { ok: false, error: "agent participant is not connected" };
110
+ const response = await room.localParticipant.performRpc({
111
+ destinationIdentity: agent.identity,
112
+ method: "talqing.client.userdata_set",
113
+ payload: JSON.stringify(patch),
114
+ responseTimeout,
115
+ });
116
+ return JSON.parse(response || "{}");
117
+ }
118
+ async function getTalqingUserdata(room, keys, responseTimeout = 3) {
119
+ const agent = [...room.remoteParticipants.values()].find((participant) => participant.kind === livekit_client_1.ParticipantKind.AGENT);
120
+ if (!agent)
121
+ throw new Error("agent participant is not connected");
122
+ const response = await room.localParticipant.performRpc({
123
+ destinationIdentity: agent.identity,
124
+ method: "talqing.client.userdata_get",
125
+ payload: JSON.stringify(keys ? { keys } : {}),
126
+ responseTimeout,
127
+ });
128
+ const parsed = JSON.parse(response || "{}");
129
+ if (parsed.ok === false) {
130
+ throw new Error(String(parsed.error || "userdata RPC failed"));
131
+ }
132
+ return parsed;
133
+ }
134
+ function useTalqingUserdata() {
135
+ const { room } = useTalqingConnection();
136
+ return (0, react_1.useMemo)(() => ({
137
+ get: (keys, responseTimeout) => {
138
+ if (!room)
139
+ throw new Error("room is not connected");
140
+ return getTalqingUserdata(room, keys, responseTimeout);
141
+ },
142
+ set: (patch, responseTimeout) => {
143
+ if (!room)
144
+ throw new Error("room is not connected");
145
+ return setTalqingUserdata(room, patch, responseTimeout);
146
+ },
147
+ }), [room]);
148
+ }
149
+ /* ── images ───────────────────────────────────────────────────────────────
150
+ *
151
+ * A caller attaches a photo on a web voice or video call and the agent sees
152
+ * it. The bytes go over a LiveKit byte stream on the `talqing.images` topic,
153
+ * addressed to the agent; the agent answers on an RPC back, and the id
154
+ * `sendFile` returns is the id that ack carries, so there is nothing to
155
+ * correlate by hand.
156
+ *
157
+ * The agent deliberately does NOT speak when a photo lands — the caller is
158
+ * mid-conversation and about to say what it is for. The image is in the
159
+ * model's view for their next turn.
160
+ */
161
+ exports.TALQING_IMAGE_TOPIC = "talqing.images";
162
+ /** Decoded size the server refuses above. The downscale below keeps a phone
163
+ * photo far under it; this is the belt for a file that is not a photo. */
164
+ exports.TALQING_IMAGE_MAX_BYTES = 10 * 1024 * 1024;
165
+ /** Longest side the server stores. Downscaling to it before sending is a
166
+ * courtesy to the data channel, which is ordered and reliable and will
167
+ * happily spend a minute pushing 10 MB past a call's audio. */
168
+ exports.TALQING_IMAGE_MAX_EDGE_PX = 1568;
169
+ const TALQING_IMAGE_TYPES = ["image/jpeg", "image/png", "image/webp"];
170
+ /** How long to wait for the agent's ack before saying we do not know. Without
171
+ * it a thumbnail sits on "sending" for the rest of the call when the worker
172
+ * dies mid-upload. */
173
+ const TALQING_IMAGE_ACK_TIMEOUT_MS = 30000;
174
+ /** Refuse what the browser can see is wrong, instantly and with no round trip.
175
+ * Returns the sentence to show, or null when the file is fine. The server
176
+ * re-validates everything regardless — this exists so the common mistakes cost
177
+ * nothing to catch. */
178
+ function talqingImageRejection(file) {
179
+ if (!TALQING_IMAGE_TYPES.includes(file.type)) {
180
+ return "that file is not a JPEG, PNG or WebP";
181
+ }
182
+ if (file.size > exports.TALQING_IMAGE_MAX_BYTES)
183
+ return "images are 10 MB or smaller";
184
+ return null;
185
+ }
186
+ /** Downscale to the longest edge the server keeps, re-encoding as JPEG or PNG.
187
+ *
188
+ * Also what normalizes whatever the OS handed the file input — this is how a
189
+ * Safari HEIC becomes a JPEG. Throws if the image cannot be decoded, which is
190
+ * the third dropzone check. */
191
+ async function talqingDownscaleImage(file) {
192
+ const bitmap = await createImageBitmap(file);
193
+ try {
194
+ const longest = Math.max(bitmap.width, bitmap.height);
195
+ const scale = longest > exports.TALQING_IMAGE_MAX_EDGE_PX ? exports.TALQING_IMAGE_MAX_EDGE_PX / longest : 1;
196
+ const canvas = document.createElement("canvas");
197
+ canvas.width = Math.max(1, Math.round(bitmap.width * scale));
198
+ canvas.height = Math.max(1, Math.round(bitmap.height * scale));
199
+ const context = canvas.getContext("2d");
200
+ if (!context)
201
+ throw new Error("this browser cannot resize images");
202
+ context.drawImage(bitmap, 0, 0, canvas.width, canvas.height);
203
+ // PNG keeps transparency; everything else becomes a JPEG, including the
204
+ // HEIC the OS decoded for us.
205
+ const type = file.type === "image/png" ? "image/png" : "image/jpeg";
206
+ const blob = await new Promise((resolve) => canvas.toBlob(resolve, type, 0.85));
207
+ if (!blob)
208
+ throw new Error("that image could not be read");
209
+ return blob;
210
+ }
211
+ finally {
212
+ bitmap.close();
213
+ }
214
+ }
215
+ /** Validate and downscale a file into the `data:` URL a text message carries.
216
+ *
217
+ * `createTextMessage` takes `images: [{data_url, filename}]`; this produces the
218
+ * `data_url`. It doubles as the thumbnail's `src`, so there is no object URL to
219
+ * create and revoke. Throws the sentence to show if the file is refused. */
220
+ async function talqingImageDataUrl(file) {
221
+ const rejection = talqingImageRejection(file);
222
+ if (rejection)
223
+ throw new Error(rejection);
224
+ const blob = await talqingDownscaleImage(file);
225
+ return await new Promise((resolve, reject) => {
226
+ const reader = new FileReader();
227
+ reader.onerror = () => reject(new Error("that image could not be read"));
228
+ reader.onload = () => resolve(String(reader.result));
229
+ reader.readAsDataURL(blob);
230
+ });
231
+ }
232
+ /** Send images to the agent on this call, and follow what became of each.
233
+ *
234
+ * `send` resolves once the bytes are on their way; the outcome arrives on the
235
+ * returned list, which is what a thumbnail should render.
236
+ *
237
+ * Takes the `Room` rather than reading it from the session context: a byte
238
+ * stream and an RPC handler are room-level things, and passing the room keeps
239
+ * this usable from a surface that manages its own connection —
240
+ * `useTalqingConnection().room` inside a provider, or the Room you built. */
241
+ function useTalqingImages(room) {
242
+ const [sent, setSent] = (0, react_1.useState)([]);
243
+ const timers = (0, react_1.useRef)(new Map());
244
+ const settle = (0, react_1.useCallback)((streamId, patch) => {
245
+ const timer = timers.current.get(streamId);
246
+ if (timer) {
247
+ clearTimeout(timer);
248
+ timers.current.delete(streamId);
249
+ }
250
+ setSent((images) => images.map((image) => (image.streamId === streamId ? { ...image, ...patch } : image)));
251
+ }, []);
252
+ (0, react_1.useEffect)(() => {
253
+ if (!room)
254
+ return;
255
+ room.registerRpcMethod("talqing.image_result", async (data) => {
256
+ const { stream_id, ok, error } = JSON.parse(data.payload || "{}");
257
+ settle(stream_id, {
258
+ status: ok ? "sent" : "failed",
259
+ error: ok ? undefined : error || "that image was not accepted",
260
+ });
261
+ return "{}";
262
+ });
263
+ return () => room.unregisterRpcMethod("talqing.image_result");
264
+ }, [room, settle]);
265
+ const pending = timers.current;
266
+ (0, react_1.useEffect)(() => () => {
267
+ pending.forEach(clearTimeout);
268
+ pending.clear();
269
+ }, [pending]);
270
+ const send = (0, react_1.useCallback)(async (file) => {
271
+ if (!room)
272
+ throw new Error("the call is not connected");
273
+ const agent = [...room.remoteParticipants.values()].find((participant) => participant.kind === livekit_client_1.ParticipantKind.AGENT);
274
+ if (!agent)
275
+ throw new Error("agent participant is not connected");
276
+ const rejection = talqingImageRejection(file);
277
+ if (rejection)
278
+ throw new Error(rejection);
279
+ const blob = await talqingDownscaleImage(file);
280
+ // Addressed to the agent, never broadcast: on video the avatar worker is
281
+ // a participant too, and a broadcast sends the bytes twice.
282
+ const { id } = await room.localParticipant.sendFile(new File([blob], file.name, { type: blob.type }), {
283
+ topic: exports.TALQING_IMAGE_TOPIC,
284
+ mimeType: blob.type,
285
+ destinationIdentities: [agent.identity],
286
+ });
287
+ const image = {
288
+ streamId: id,
289
+ name: file.name,
290
+ previewUrl: URL.createObjectURL(blob),
291
+ status: "sending",
292
+ };
293
+ setSent((images) => [...images, image]);
294
+ timers.current.set(id, setTimeout(() => settle(id, {
295
+ status: "unknown",
296
+ // Four states, not two: the one people forget is the agent going
297
+ // away mid-upload, where no ack is ever coming.
298
+ error: "we did not hear back — the agent may not have received it",
299
+ }), TALQING_IMAGE_ACK_TIMEOUT_MS));
300
+ return image;
301
+ }, [room, settle]);
302
+ const clear = (0, react_1.useCallback)(() => {
303
+ setSent((images) => {
304
+ images.forEach((image) => URL.revokeObjectURL(image.previewUrl));
305
+ return [];
306
+ });
307
+ }, []);
308
+ return { send, sent, clear };
309
+ }
310
+ function useTalqingAgent() {
311
+ const agent = (0, components_react_1.useAgent)();
312
+ return {
313
+ state: agent.state,
314
+ isFinished: agent.isFinished,
315
+ };
316
+ }
317
+ function useTalqingMessages() {
318
+ const messages = (0, components_react_1.useSessionMessages)();
319
+ return {
320
+ messages: messages.messages,
321
+ send: messages.send,
322
+ isSending: messages.isSending,
323
+ };
324
+ }
325
+ /* Screen share, with the four settings that decide whether the agent can read
326
+ * what is on it.
327
+ *
328
+ * Only the first is obvious, and every one of them is upstream of anything we
329
+ * could do on our side:
330
+ *
331
+ * - `contentHint: "text"` tells the encoder to preserve spatial detail. The
332
+ * default for a screen share on an SVC codec is `motion`, which trades
333
+ * exactly that away — the wrong trade for reading code, and no JPEG quality
334
+ * setting downstream recovers it.
335
+ * - `videoCodec: "h264"` is what keeps that hint. `livekit-client` forces
336
+ * `contentHint = "motion"` on screen shares published as vp9 or av1,
337
+ * together with `scalabilityMode: "L1T3"`. **Publishing on an SVC codec will
338
+ * cost you legibility**, and it is the first thing to check if the agent
339
+ * starts misreading identifiers.
340
+ * - `screenShareEncoding.maxFramerate: 1` is the frame-rate cap that actually
341
+ * binds. `resolution.frameRate` reaches `getDisplayMedia` as a bare number,
342
+ * which WebRTC reads as `ideal` — a wish, not a limit. The default publish
343
+ * ceiling is 15 fps, and every delivered frame is copied into the agent's
344
+ * process before it can be dropped, so this is the single biggest lever on
345
+ * what a call costs the worker. One frame a second is ample: the agent is
346
+ * handed the newest frame at the end of each turn, and turns are seconds
347
+ * apart.
348
+ * - `resolution` is set explicitly rather than inherited. The default is 1080p
349
+ * by `ideal`, which is a strong hint and not a guarantee.
350
+ *
351
+ * The picker cannot be opened for the person — `getDisplayMedia` requires a
352
+ * transient user activation — so `start()` must be called from a click. The
353
+ * agent asking out loud is what prompts it; there is no version of this where
354
+ * the agent turns sharing on.
355
+ */
356
+ exports.TALQING_SCREEN_SHARE_CAPTURE = {
357
+ resolution: { width: 1920, height: 1080, frameRate: 1 },
358
+ contentHint: "text",
359
+ };
360
+ exports.TALQING_SCREEN_SHARE_PUBLISH = {
361
+ videoCodec: "h264",
362
+ screenShareEncoding: { maxBitrate: 1000000, maxFramerate: 1 },
363
+ };
364
+ function useTalqingScreenShare() {
365
+ const { toggle, enabled, pending } = (0, components_react_1.useTrackToggle)({
366
+ source: livekit_client_1.Track.Source.ScreenShare,
367
+ captureOptions: exports.TALQING_SCREEN_SHARE_CAPTURE,
368
+ publishOptions: exports.TALQING_SCREEN_SHARE_PUBLISH,
369
+ });
370
+ return (0, react_1.useMemo)(() => ({
371
+ /** Whether a screen is being shared right now. */
372
+ enabled,
373
+ /** True while the browser picker is open or the track is publishing. */
374
+ pending,
375
+ /** Opens the browser's share picker. Must be called from a user gesture. */
376
+ start: () => toggle(true),
377
+ /** Stops sharing. The agent is told it can no longer see on the next turn. */
378
+ stop: () => toggle(false),
379
+ }), [enabled, pending, toggle]);
380
+ }
381
+ function useTalqingAvatarTrack() {
382
+ const { agent } = (0, components_react_1.useVoiceAssistant)();
383
+ const remoteParticipants = (0, components_react_1.useRemoteParticipants)();
384
+ const worker = remoteParticipants.find((participant) => participant.kind === livekit_client_1.ParticipantKind.AGENT &&
385
+ participant.attributes["lk.publish_on_behalf"] === agent?.identity);
386
+ const agentTracks = (0, components_react_1.useParticipantTracks)([livekit_client_1.Track.Source.Camera, livekit_client_1.Track.Source.ScreenShare], agent?.identity);
387
+ const workerTracks = (0, components_react_1.useParticipantTracks)([livekit_client_1.Track.Source.Camera, livekit_client_1.Track.Source.ScreenShare], worker?.identity);
388
+ return (workerTracks.find((track) => track.source === livekit_client_1.Track.Source.Camera) ??
389
+ workerTracks.find((track) => track.source === livekit_client_1.Track.Source.ScreenShare) ??
390
+ agentTracks.find((track) => track.source === livekit_client_1.Track.Source.Camera) ??
391
+ agentTracks.find((track) => track.source === livekit_client_1.Track.Source.ScreenShare));
392
+ }
393
+ function TalqingVideoTrack({ track, className, }) {
394
+ return ((0, jsx_runtime_1.jsx)(components_react_1.VideoTrack, { trackRef: track, width: track.publication.dimensions?.width ?? 0, height: track.publication.dimensions?.height ?? 0, className: className }));
395
+ }
396
+ function useTalqingRpcHandlers(handlers, enabled = true) {
397
+ const { room, isConnected } = useTalqingConnection();
398
+ (0, react_1.useEffect)(() => {
399
+ if (!enabled || !room || !isConnected)
400
+ return;
401
+ room.registerRpcMethod("talqing.frontend_rpc", async (data) => {
402
+ try {
403
+ const envelope = JSON.parse(data.payload || "{}");
404
+ const isWildcard = handlers[envelope.method] === undefined;
405
+ const handler = handlers[envelope.method] ?? handlers["*"];
406
+ if (!handler) {
407
+ throw new TalqingRpcError(1404, `No frontend RPC handler registered for ${envelope.method}`);
408
+ }
409
+ return await handler({
410
+ payload: isWildcard
411
+ ? JSON.stringify(envelope)
412
+ : envelope.payload === undefined
413
+ ? "{}"
414
+ : JSON.stringify(envelope.payload),
415
+ responseTimeout: data.responseTimeout,
416
+ callerIdentity: data.callerIdentity,
417
+ });
418
+ }
419
+ catch (error) {
420
+ if (error instanceof TalqingRpcError) {
421
+ throw new livekit_client_1.RpcError(error.code, error.message, error.data);
422
+ }
423
+ throw new livekit_client_1.RpcError(1500, error instanceof Error ? error.message : "RPC handler failed");
424
+ }
425
+ });
426
+ return () => {
427
+ room.unregisterRpcMethod("talqing.frontend_rpc");
428
+ };
429
+ }, [enabled, handlers, isConnected, room]);
430
+ }
431
+ function useTalqingFrontendRpcs(enabled = true) {
432
+ const [actions, setActions] = (0, react_1.useState)({});
433
+ const handlers = (0, react_1.useMemo)(() => ({
434
+ "*": async (data) => {
435
+ const payload = JSON.parse(data.payload || "{}");
436
+ const method = String(payload.method || "");
437
+ if (method) {
438
+ setActions((current) => ({
439
+ ...current,
440
+ [method]: {
441
+ payload: payload.payload,
442
+ at: Date.now(),
443
+ },
444
+ }));
445
+ }
446
+ return "ok";
447
+ },
448
+ }), []);
449
+ useTalqingRpcHandlers(handlers, enabled);
450
+ return {
451
+ actions,
452
+ clear: () => setActions({}),
453
+ };
454
+ }
455
+ function setTalqingBrowserLogLevel(level) {
456
+ const levels = {
457
+ debug: livekit_client_1.LogLevel.debug,
458
+ info: livekit_client_1.LogLevel.info,
459
+ warn: livekit_client_1.LogLevel.warn,
460
+ error: livekit_client_1.LogLevel.error,
461
+ silent: livekit_client_1.LogLevel.silent,
462
+ };
463
+ (0, livekit_client_1.setLogLevel)(levels[level]);
464
+ }
465
+ //# sourceMappingURL=browser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"browser.js","sourceRoot":"","sources":["../../src/browser.tsx"],"names":[],"mappings":"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"}
@@ -43,6 +43,7 @@ export interface Page<T> {
43
43
  type Throwing<T> = {
44
44
  [K in keyof T]: T[K] extends (...args: infer A) => Promise<infer R> ? (...args: A) => Promise<Exclude<R, undefined>> : Throwing<T[K]>;
45
45
  };
46
+ declare const TALQING_API_ERROR: unique symbol;
46
47
  /** Every error this API returns, in the one shape it returns them in. */
47
48
  export declare class TalqingApiError extends Error {
48
49
  readonly name = "TalqingApiError";
@@ -50,6 +51,8 @@ export declare class TalqingApiError extends Error {
50
51
  /** Per-field problems, when the failure had more than one. Always present. */
51
52
  readonly errors: string[];
52
53
  readonly response: Response;
54
+ readonly [TALQING_API_ERROR] = true;
55
+ static [Symbol.hasInstance](value: unknown): value is TalqingApiError;
53
56
  constructor(body: ErrorResponse, response: Response);
54
57
  }
55
58
  export interface TalqingClientOptions {
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/client.ts"],"names":[],"mappings":"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"}