@talk2view/sdk 0.2.0-dev.1 → 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 (41) hide show
  1. package/README.md +87 -1
  2. package/dist/client.d.ts +15 -0
  3. package/dist/client.d.ts.map +1 -1
  4. package/dist/client.js +80 -97
  5. package/dist/client.js.map +1 -1
  6. package/dist/errors.d.ts +2 -1
  7. package/dist/errors.d.ts.map +1 -1
  8. package/dist/errors.js +3 -1
  9. package/dist/errors.js.map +1 -1
  10. package/dist/index.d.ts +12 -0
  11. package/dist/index.d.ts.map +1 -1
  12. package/dist/index.js +19 -0
  13. package/dist/index.js.map +1 -1
  14. package/dist/react/ChatInput.d.ts +2 -1
  15. package/dist/react/ChatInput.d.ts.map +1 -1
  16. package/dist/react/ChatInput.js +13 -11
  17. package/dist/react/ChatInput.js.map +1 -1
  18. package/dist/react/ChatMessage.js +5 -5
  19. package/dist/react/ChatMessage.js.map +1 -1
  20. package/dist/react/ChatPanel.d.ts.map +1 -1
  21. package/dist/react/ChatPanel.js +40 -24
  22. package/dist/react/ChatPanel.js.map +1 -1
  23. package/dist/react/LoginModal.js +2 -2
  24. package/dist/react/LoginModal.js.map +1 -1
  25. package/dist/react/theme.d.ts +17 -0
  26. package/dist/react/theme.d.ts.map +1 -1
  27. package/dist/react/theme.js +18 -0
  28. package/dist/react/theme.js.map +1 -1
  29. package/dist/react/useT2VChat.d.ts.map +1 -1
  30. package/dist/react/useT2VChat.js +6 -5
  31. package/dist/react/useT2VChat.js.map +1 -1
  32. package/dist/react/useT2VTools.d.ts.map +1 -1
  33. package/dist/react/useT2VTools.js +8 -5
  34. package/dist/react/useT2VTools.js.map +1 -1
  35. package/dist/tools.d.ts +6 -0
  36. package/dist/tools.d.ts.map +1 -1
  37. package/dist/tools.js +74 -2
  38. package/dist/tools.js.map +1 -1
  39. package/dist/types.d.ts +3 -0
  40. package/dist/types.d.ts.map +1 -1
  41. package/package.json +1 -1
package/README.md CHANGED
@@ -88,6 +88,13 @@ Every request requires a partner API key (`X-T2V-Partner-Key` header). Keys are
88
88
 
89
89
  The SDK attaches this header automatically.
90
90
 
91
+ **Partner keys are public identifiers**, not secrets. They identify your application but do not grant access to user data — every data-accessing request also requires a user JWT. It is safe to include partner keys in client-side bundles.
92
+
93
+ Best practices:
94
+ - Inject keys via environment variables at build time (e.g. `VITE_T2V_PARTNER_KEY`)
95
+ - Use separate `pk_test_` and `pk_live_` keys for development and production
96
+ - To rotate a key, generate a new key in the Talk2View dashboard, update your app, then deactivate the old key
97
+
91
98
  ### Two-Tier Authentication
92
99
 
93
100
  Talk2View uses two layers of auth on every request:
@@ -196,6 +203,8 @@ const {
196
203
  isLoading, // boolean — true while streaming
197
204
  error, // string | null
198
205
  threadId, // string | null
206
+ agentStatus, // { type: string; message: string } | null — real-time agent status
207
+ todos, // string — agent's current todo/plan text
199
208
  sendMessage, // (content: string) => Promise<void>
200
209
  clearMessages, // () => void
201
210
  clearError, // () => void
@@ -320,6 +329,43 @@ for await (const event of t2v.chat('Zoom in please')) {
320
329
  }
321
330
  ```
322
331
 
332
+ #### `t2v.clearSession()`
333
+
334
+ Reset the current session. Clears the thread ID so the next `chat()` call starts a fresh conversation.
335
+
336
+ ```typescript
337
+ t2v.clearSession();
338
+ ```
339
+
340
+ #### `t2v.listModels()` / `t2v.listAudioModels()`
341
+
342
+ List available models:
343
+
344
+ ```typescript
345
+ const models = await t2v.listModels(); // Chat/completion models
346
+ const audioModels = await t2v.listAudioModels(); // Speech-to-text models
347
+ ```
348
+
349
+ #### `t2v.transcribe()`
350
+
351
+ Transcribe an audio file using the server's speech-to-text service:
352
+
353
+ ```typescript
354
+ const result = await t2v.transcribe(audioBlob, 'whisper-1', 'en');
355
+ console.log(result.text);
356
+ ```
357
+
358
+ #### `t2v.completions()`
359
+
360
+ Send a raw completions request (non-streaming):
361
+
362
+ ```typescript
363
+ const response = await t2v.completions({
364
+ messages: [{ role: 'user', content: 'Hello' }],
365
+ model: 'gpt-4.1-mini',
366
+ });
367
+ ```
368
+
323
369
  #### `t2v.createSession()` / `t2v.getSession()`
324
370
 
325
371
  For advanced use cases where you need direct session control:
@@ -433,6 +479,19 @@ Stored keys:
433
479
 
434
480
  On logout, all keys are cleared and a `talk2view_auth_cleared` event is dispatched on `window` for cross-component synchronization.
435
481
 
482
+ ### Security Considerations
483
+
484
+ The SDK stores tokens in `localStorage` for persistence across page reloads. This is a deliberate trade-off — `localStorage` is accessible to any JavaScript running on the same origin, which means XSS vulnerabilities could expose tokens.
485
+
486
+ To mitigate this:
487
+
488
+ - **Use a Content Security Policy (CSP)** that restricts script sources to trusted origins
489
+ - **Keep token lifetimes short** — the SDK automatically refreshes tokens, so short-lived access tokens limit the window of exposure
490
+ - **Always serve your application over HTTPS**
491
+ - **Sanitize user-generated content** to prevent XSS injection
492
+
493
+ **CSRF protection:** The SDK sends a custom `X-T2V-Partner-Key` header on every request. Browsers block cross-origin requests with custom headers unless the server explicitly allows the origin via CORS. This makes CSRF attacks infeasible — a forged request from a malicious site would be blocked by the browser's preflight check.
494
+
436
495
  ---
437
496
 
438
497
  ## Error Handling
@@ -447,8 +506,10 @@ The SDK throws typed errors:
447
506
  | `NetworkError` | Network failure, server unreachable |
448
507
  | `T2VError` | Base class for all SDK errors |
449
508
 
509
+ All errors extend `T2VError`, which exposes `message`, `type`, `statusCode`, and `code`:
510
+
450
511
  ```typescript
451
- import { AuthenticationError, NetworkError } from '@talk2view/sdk';
512
+ import { T2VError, AuthenticationError, NetworkError, SessionError } from '@talk2view/sdk';
452
513
 
453
514
  try {
454
515
  await t2v.auth.login(email, password);
@@ -457,14 +518,22 @@ try {
457
518
  console.log('Bad credentials');
458
519
  } else if (err instanceof NetworkError) {
459
520
  console.log('Server unreachable');
521
+ } else if (err instanceof SessionError) {
522
+ console.log('Session issue:', err.message);
523
+ } else if (err instanceof T2VError) {
524
+ // Access the error code for programmatic handling
525
+ console.log(`Error [${err.code}]: ${err.message} (HTTP ${err.statusCode})`);
460
526
  }
461
527
  }
462
528
  ```
463
529
 
530
+ **Rate limiting:** The server may return HTTP 429 when rate limits are exceeded. This surfaces as a `T2VError` with `statusCode: 429`. Rate limiting is enforced server-side; implement app-level retry logic if needed.
531
+
464
532
  In React, the hooks catch errors internally and expose them via the `error` state:
465
533
 
466
534
  ```tsx
467
535
  const { error, clearError } = useT2VAuth();
536
+ const { error: chatError } = useT2VChat({ systemPrompt: '...' });
468
537
  // error is a string message, not a thrown exception
469
538
  ```
470
539
 
@@ -479,6 +548,23 @@ const { error, clearError } = useT2VAuth();
479
548
  | `partnerKey` | `string` | Yes | — | Your partner API key |
480
549
  | `baseUrl` | `string` | No | `'http://localhost:8100'` | Talk2View API server URL |
481
550
  | `model` | `string` | No | Server default | LLM model to use |
551
+ | `requestTimeout` | `number` | No | `30000` | HTTP request timeout in ms. Does not apply to SSE streams after connection. |
552
+
553
+ ---
554
+
555
+ ## System Prompts
556
+
557
+ System prompts set the AI's behavior and context for your application. Pass them to `ChatPanel` or `useT2VChat`:
558
+
559
+ ```tsx
560
+ <ChatPanel systemPrompt="You are a medical imaging assistant. Use the provided tools to control the DICOM viewer." />
561
+ ```
562
+
563
+ Best practices:
564
+ - **Keep prompts concise** — every token in the system prompt is sent with every request and adds to cost
565
+ - **Focus on tools and context** — describe what tools are available and when to use them, rather than general personality traits
566
+ - **Be specific about your domain** — mention the application type and expected user intents
567
+ - **Avoid conflicting instructions** — the system prompt should complement, not contradict, tool descriptions
482
568
 
483
569
  ---
484
570
 
package/dist/client.d.ts CHANGED
@@ -5,9 +5,19 @@ import type { ChatCompletionChunk, T2VConfig } from './types';
5
5
  export declare class T2VClient {
6
6
  private readonly baseUrl;
7
7
  private readonly partnerKey;
8
+ private readonly requestTimeout;
8
9
  private isRefreshing;
9
10
  private refreshPromise;
10
11
  constructor(config: T2VConfig);
12
+ /**
13
+ * Create an AbortController that auto-aborts after the configured timeout.
14
+ */
15
+ private makeTimeoutSignal;
16
+ /**
17
+ * Execute a fetch with network-error wrapping, 401 refresh/retry, and error parsing.
18
+ */
19
+ private fetchWithAuth;
20
+ private buildHeaders;
11
21
  /**
12
22
  * Make an authenticated JSON request.
13
23
  */
@@ -19,6 +29,11 @@ export declare class T2VClient {
19
29
  uploadRequest<T>(endpoint: string, formData: FormData, requiresAuth?: boolean): Promise<T>;
20
30
  /**
21
31
  * Make an authenticated SSE streaming request.
32
+ *
33
+ * The request timeout applies only to the initial POST (connection establishment).
34
+ * Once the SSE stream begins, no timeout is enforced — streams are long-lived by design.
35
+ * Mid-stream re-authentication is not supported; however, in practice access tokens
36
+ * outlive individual streams. The initial POST benefits from 401 refresh+retry.
22
37
  */
23
38
  streamRequest(endpoint: string, body: object): AsyncGenerator<ChatCompletionChunk>;
24
39
  private tryRefreshToken;
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAWH,OAAO,KAAK,EACV,mBAAmB,EAEnB,SAAS,EACV,MAAM,SAAS,CAAC;AAIjB,qBAAa,SAAS;IACpB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,UAAU,CAAS;IACpC,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,cAAc,CAAiC;gBAE3C,MAAM,EAAE,SAAS;IAK7B;;OAEG;IACG,OAAO,CAAC,CAAC,EACb,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,WAAgB,EACzB,YAAY,UAAO,GAClB,OAAO,CAAC,CAAC,CAAC;IAgDb;;;OAGG;IACG,aAAa,CAAC,CAAC,EACnB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,QAAQ,EAClB,YAAY,UAAO,GAClB,OAAO,CAAC,CAAC,CAAC;IAsDb;;OAEG;IACI,aAAa,CAClB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,GACX,cAAc,CAAC,mBAAmB,CAAC;YA6CxB,eAAe;YAgBf,cAAc;CAwB7B"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAWH,OAAO,KAAK,EACV,mBAAmB,EAEnB,SAAS,EACV,MAAM,SAAS,CAAC;AAKjB,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,CAAiC;gBAE3C,MAAM,EAAE,SAAS;IAM7B;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAMzB;;OAEG;YACW,aAAa;IAsD3B,OAAO,CAAC,YAAY;IAiBpB;;OAEG;IACG,OAAO,CAAC,CAAC,EACb,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,WAAgB,EACzB,YAAY,UAAO,GAClB,OAAO,CAAC,CAAC,CAAC;IAcb;;;OAGG;IACG,aAAa,CAAC,CAAC,EACnB,QAAQ,EAAE,MAAM,EAChB,QAAQ,EAAE,QAAQ,EAClB,YAAY,UAAO,GAClB,OAAO,CAAC,CAAC,CAAC;IAiBb;;;;;;;OAOG;IACI,aAAa,CAClB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,GACX,cAAc,CAAC,mBAAmB,CAAC;YAmBxB,eAAe;YAgBf,cAAc;CAwB7B"}
package/dist/client.js CHANGED
@@ -5,67 +5,75 @@ import { AuthenticationError, NetworkError, T2VError } from './errors';
5
5
  import { clearAuth, getAccessToken, getRefreshToken, setAccessToken, setRefreshToken, } from './storage';
6
6
  import { decodeSSEStream } from './streaming';
7
7
  const DEFAULT_BASE_URL = 'https://engine.talk2view.com';
8
+ const DEFAULT_REQUEST_TIMEOUT = 30_000;
8
9
  export class T2VClient {
9
10
  baseUrl;
10
11
  partnerKey;
12
+ requestTimeout;
11
13
  isRefreshing = false;
12
14
  refreshPromise = null;
13
15
  constructor(config) {
14
16
  this.partnerKey = config.partnerKey;
15
17
  this.baseUrl = config.baseUrl ?? DEFAULT_BASE_URL;
18
+ this.requestTimeout = config.requestTimeout ?? DEFAULT_REQUEST_TIMEOUT;
16
19
  }
17
20
  /**
18
- * Make an authenticated JSON request.
21
+ * Create an AbortController that auto-aborts after the configured timeout.
19
22
  */
20
- async request(endpoint, options = {}, requiresAuth = true) {
21
- const headers = {
22
- 'Content-Type': 'application/json',
23
- 'X-T2V-Partner-Key': this.partnerKey,
24
- ...options.headers,
25
- };
26
- if (requiresAuth) {
27
- const token = getAccessToken();
28
- if (token) {
29
- headers['Authorization'] = `Bearer ${token}`;
30
- }
31
- }
23
+ makeTimeoutSignal() {
24
+ const controller = new AbortController();
25
+ const timer = setTimeout(() => controller.abort(), this.requestTimeout);
26
+ return { signal: controller.signal, clear: () => clearTimeout(timer) };
27
+ }
28
+ /**
29
+ * Execute a fetch with network-error wrapping, 401 refresh/retry, and error parsing.
30
+ */
31
+ async fetchWithAuth(endpoint, init, headers, requiresAuth, signal) {
32
+ const fetchInit = signal ? { ...init, headers, signal } : { ...init, headers };
32
33
  let response;
33
34
  try {
34
- response = await fetch(`${this.baseUrl}${endpoint}`, { ...options, headers });
35
+ response = await fetch(`${this.baseUrl}${endpoint}`, fetchInit);
35
36
  }
36
37
  catch (err) {
37
- throw new NetworkError(`Network request failed: ${err instanceof Error ? err.message : 'Unknown error'}`);
38
+ if (err instanceof DOMException && err.name === 'AbortError') {
39
+ throw new NetworkError(`Request timed out after ${this.requestTimeout}ms`);
40
+ }
41
+ throw new NetworkError(`Request failed: ${err instanceof Error ? err.message : 'Unknown error'}`);
38
42
  }
39
- // Handle 401 — try to refresh token
40
43
  if (response.status === 401 && requiresAuth) {
41
44
  const refreshed = await this.tryRefreshToken();
42
45
  if (refreshed) {
43
46
  headers['Authorization'] = `Bearer ${getAccessToken()}`;
44
- const retryResponse = await fetch(`${this.baseUrl}${endpoint}`, { ...options, headers });
47
+ const retryInit = signal ? { ...init, headers, signal } : { ...init, headers };
48
+ let retryResponse;
49
+ try {
50
+ retryResponse = await fetch(`${this.baseUrl}${endpoint}`, retryInit);
51
+ }
52
+ catch (retryErr) {
53
+ if (retryErr instanceof DOMException && retryErr.name === 'AbortError') {
54
+ throw new NetworkError(`Request timed out after ${this.requestTimeout}ms`);
55
+ }
56
+ throw new NetworkError(`Request failed: ${retryErr instanceof Error ? retryErr.message : 'Unknown error'}`);
57
+ }
45
58
  if (!retryResponse.ok) {
46
59
  const error = await retryResponse.json().catch(() => ({ error: { message: 'Request failed' } }));
47
- throw new T2VError(error?.error?.message ?? 'Request failed', error?.error?.type, retryResponse.status);
60
+ throw new T2VError(error?.error?.message ?? 'Request failed', error?.error?.type, retryResponse.status, error?.error?.code);
48
61
  }
49
- return retryResponse.json();
50
- }
51
- else {
52
- clearAuth();
53
- throw new AuthenticationError('Session expired. Please log in again.');
62
+ return retryResponse;
54
63
  }
64
+ clearAuth();
65
+ throw new AuthenticationError('Session expired. Please log in again.');
55
66
  }
56
67
  if (!response.ok) {
57
68
  const error = await response.json().catch(() => ({ error: { message: 'Request failed' } }));
58
- throw new T2VError(error?.error?.message ?? 'Request failed', error?.error?.type, response.status);
69
+ throw new T2VError(error?.error?.message ?? 'Request failed', error?.error?.type, response.status, error?.error?.code);
59
70
  }
60
- return response.json();
71
+ return response;
61
72
  }
62
- /**
63
- * Make an authenticated multipart upload request (e.g. audio files).
64
- * Does NOT set Content-Type — the browser sets it with the correct boundary.
65
- */
66
- async uploadRequest(endpoint, formData, requiresAuth = true) {
73
+ buildHeaders(requiresAuth, extra) {
67
74
  const headers = {
68
75
  'X-T2V-Partner-Key': this.partnerKey,
76
+ ...extra,
69
77
  };
70
78
  if (requiresAuth) {
71
79
  const token = getAccessToken();
@@ -73,83 +81,58 @@ export class T2VClient {
73
81
  headers['Authorization'] = `Bearer ${token}`;
74
82
  }
75
83
  }
76
- let response;
84
+ return headers;
85
+ }
86
+ /**
87
+ * Make an authenticated JSON request.
88
+ */
89
+ async request(endpoint, options = {}, requiresAuth = true) {
90
+ const headers = this.buildHeaders(requiresAuth, {
91
+ 'Content-Type': 'application/json',
92
+ ...options.headers,
93
+ });
94
+ const { signal, clear } = this.makeTimeoutSignal();
77
95
  try {
78
- response = await fetch(`${this.baseUrl}${endpoint}`, {
79
- method: 'POST',
80
- headers,
81
- body: formData,
82
- });
96
+ const response = await this.fetchWithAuth(endpoint, options, headers, requiresAuth, signal);
97
+ return response.json();
83
98
  }
84
- catch (err) {
85
- throw new NetworkError(`Network request failed: ${err instanceof Error ? err.message : 'Unknown error'}`);
99
+ finally {
100
+ clear();
86
101
  }
87
- // Handle 401 — try to refresh token
88
- if (response.status === 401 && requiresAuth) {
89
- const refreshed = await this.tryRefreshToken();
90
- if (refreshed) {
91
- headers['Authorization'] = `Bearer ${getAccessToken()}`;
92
- const retryResponse = await fetch(`${this.baseUrl}${endpoint}`, {
93
- method: 'POST',
94
- headers,
95
- body: formData,
96
- });
97
- if (!retryResponse.ok) {
98
- const error = await retryResponse.json().catch(() => ({ error: { message: 'Upload failed' } }));
99
- throw new T2VError(error?.error?.message ?? 'Upload failed', error?.error?.type, retryResponse.status);
100
- }
101
- return retryResponse.json();
102
- }
103
- else {
104
- clearAuth();
105
- throw new AuthenticationError('Session expired. Please log in again.');
106
- }
102
+ }
103
+ /**
104
+ * Make an authenticated multipart upload request (e.g. audio files).
105
+ * Does NOT set Content-Type — the browser sets it with the correct boundary.
106
+ */
107
+ async uploadRequest(endpoint, formData, requiresAuth = true) {
108
+ const headers = this.buildHeaders(requiresAuth);
109
+ const { signal, clear } = this.makeTimeoutSignal();
110
+ try {
111
+ const response = await this.fetchWithAuth(endpoint, { method: 'POST', body: formData }, headers, requiresAuth, signal);
112
+ return response.json();
107
113
  }
108
- if (!response.ok) {
109
- const error = await response.json().catch(() => ({ error: { message: 'Upload failed' } }));
110
- throw new T2VError(error?.error?.message ?? 'Upload failed', error?.error?.type, response.status);
114
+ finally {
115
+ clear();
111
116
  }
112
- return response.json();
113
117
  }
114
118
  /**
115
119
  * Make an authenticated SSE streaming request.
120
+ *
121
+ * The request timeout applies only to the initial POST (connection establishment).
122
+ * Once the SSE stream begins, no timeout is enforced — streams are long-lived by design.
123
+ * Mid-stream re-authentication is not supported; however, in practice access tokens
124
+ * outlive individual streams. The initial POST benefits from 401 refresh+retry.
116
125
  */
117
126
  async *streamRequest(endpoint, body) {
118
- const headers = {
119
- 'Content-Type': 'application/json',
120
- 'X-T2V-Partner-Key': this.partnerKey,
121
- };
122
- const token = getAccessToken();
123
- if (token) {
124
- headers['Authorization'] = `Bearer ${token}`;
125
- }
126
- const response = await fetch(`${this.baseUrl}${endpoint}`, {
127
- method: 'POST',
128
- headers,
129
- body: JSON.stringify(body),
130
- });
131
- if (!response.ok) {
132
- if (response.status === 401) {
133
- const refreshed = await this.tryRefreshToken();
134
- if (refreshed) {
135
- // Retry with new token
136
- headers['Authorization'] = `Bearer ${getAccessToken()}`;
137
- const retryResponse = await fetch(`${this.baseUrl}${endpoint}`, {
138
- method: 'POST',
139
- headers,
140
- body: JSON.stringify(body),
141
- });
142
- if (!retryResponse.ok) {
143
- throw new T2VError('Stream request failed after token refresh');
144
- }
145
- yield* decodeSSEStream(retryResponse);
146
- return;
147
- }
148
- clearAuth();
149
- throw new AuthenticationError('Session expired. Please log in again.');
150
- }
151
- const error = await response.json().catch(() => ({ error: { message: 'Stream request failed' } }));
152
- throw new T2VError(error?.error?.message ?? 'Stream request failed', error?.error?.type, response.status);
127
+ const headers = this.buildHeaders(true, { 'Content-Type': 'application/json' });
128
+ const serializedBody = JSON.stringify(body);
129
+ const { signal, clear } = this.makeTimeoutSignal();
130
+ let response;
131
+ try {
132
+ response = await this.fetchWithAuth(endpoint, { method: 'POST', body: serializedBody }, headers, true, signal);
133
+ }
134
+ finally {
135
+ clear();
153
136
  }
154
137
  yield* decodeSSEStream(response);
155
138
  }
@@ -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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"}
package/dist/errors.d.ts CHANGED
@@ -4,7 +4,8 @@
4
4
  export declare class T2VError extends Error {
5
5
  readonly type: string;
6
6
  readonly statusCode?: number | undefined;
7
- constructor(message: string, type?: string, statusCode?: number | undefined);
7
+ readonly code?: string | undefined;
8
+ constructor(message: string, type?: string, statusCode?: number | undefined, code?: string | undefined);
8
9
  }
9
10
  export declare class AuthenticationError extends T2VError {
10
11
  constructor(message: string);
@@ -1 +1 @@
1
- {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,QAAS,SAAQ,KAAK;aAGf,IAAI,EAAE,MAAM;aACZ,UAAU,CAAC,EAAE,MAAM;gBAFnC,OAAO,EAAE,MAAM,EACC,IAAI,GAAE,MAAoB,EAC1B,UAAU,CAAC,EAAE,MAAM,YAAA;CAKtC;AAED,qBAAa,mBAAoB,SAAQ,QAAQ;gBACnC,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,eAAgB,SAAQ,QAAQ;gBAC/B,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,YAAa,SAAQ,QAAQ;gBAC5B,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,YAAa,SAAQ,QAAQ;gBAC5B,OAAO,EAAE,MAAM;CAI5B"}
1
+ {"version":3,"file":"errors.d.ts","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,qBAAa,QAAS,SAAQ,KAAK;aAGf,IAAI,EAAE,MAAM;aACZ,UAAU,CAAC,EAAE,MAAM;aACnB,IAAI,CAAC,EAAE,MAAM;gBAH7B,OAAO,EAAE,MAAM,EACC,IAAI,GAAE,MAAoB,EAC1B,UAAU,CAAC,EAAE,MAAM,YAAA,EACnB,IAAI,CAAC,EAAE,MAAM,YAAA;CAKhC;AAED,qBAAa,mBAAoB,SAAQ,QAAQ;gBACnC,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,eAAgB,SAAQ,QAAQ;gBAC/B,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,YAAa,SAAQ,QAAQ;gBAC5B,OAAO,EAAE,MAAM;CAI5B;AAED,qBAAa,YAAa,SAAQ,QAAQ;gBAC5B,OAAO,EAAE,MAAM;CAI5B"}
package/dist/errors.js CHANGED
@@ -4,10 +4,12 @@
4
4
  export class T2VError extends Error {
5
5
  type;
6
6
  statusCode;
7
- constructor(message, type = 'sdk_error', statusCode) {
7
+ code;
8
+ constructor(message, type = 'sdk_error', statusCode, code) {
8
9
  super(message);
9
10
  this.type = type;
10
11
  this.statusCode = statusCode;
12
+ this.code = code;
11
13
  this.name = 'T2VError';
12
14
  }
13
15
  }
@@ -1 +1 @@
1
- {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,OAAO,QAAS,SAAQ,KAAK;IAGf;IACA;IAHlB,YACE,OAAe,EACC,OAAe,WAAW,EAC1B,UAAmB;QAEnC,KAAK,CAAC,OAAO,CAAC,CAAC;QAHC,SAAI,GAAJ,IAAI,CAAsB;QAC1B,eAAU,GAAV,UAAU,CAAS;QAGnC,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;IACzB,CAAC;CACF;AAED,MAAM,OAAO,mBAAoB,SAAQ,QAAQ;IAC/C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,EAAE,sBAAsB,EAAE,GAAG,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAED,MAAM,OAAO,eAAgB,SAAQ,QAAQ;IAC3C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,EAAE,mBAAmB,EAAE,GAAG,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AAED,MAAM,OAAO,YAAa,SAAQ,QAAQ;IACxC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AAED,MAAM,OAAO,YAAa,SAAQ,QAAQ;IACxC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF"}
1
+ {"version":3,"file":"errors.js","sourceRoot":"","sources":["../src/errors.ts"],"names":[],"mappings":"AAAA;;GAEG;AACH,MAAM,OAAO,QAAS,SAAQ,KAAK;IAGf;IACA;IACA;IAJlB,YACE,OAAe,EACC,OAAe,WAAW,EAC1B,UAAmB,EACnB,IAAa;QAE7B,KAAK,CAAC,OAAO,CAAC,CAAC;QAJC,SAAI,GAAJ,IAAI,CAAsB;QAC1B,eAAU,GAAV,UAAU,CAAS;QACnB,SAAI,GAAJ,IAAI,CAAS;QAG7B,IAAI,CAAC,IAAI,GAAG,UAAU,CAAC;IACzB,CAAC;CACF;AAED,MAAM,OAAO,mBAAoB,SAAQ,QAAQ;IAC/C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,EAAE,sBAAsB,EAAE,GAAG,CAAC,CAAC;QAC5C,IAAI,CAAC,IAAI,GAAG,qBAAqB,CAAC;IACpC,CAAC;CACF;AAED,MAAM,OAAO,eAAgB,SAAQ,QAAQ;IAC3C,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,EAAE,mBAAmB,EAAE,GAAG,CAAC,CAAC;QACzC,IAAI,CAAC,IAAI,GAAG,iBAAiB,CAAC;IAChC,CAAC;CACF;AAED,MAAM,OAAO,YAAa,SAAQ,QAAQ;IACxC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF;AAED,MAAM,OAAO,YAAa,SAAQ,QAAQ;IACxC,YAAY,OAAe;QACzB,KAAK,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC;QAChC,IAAI,CAAC,IAAI,GAAG,cAAc,CAAC;IAC7B,CAAC;CACF"}
package/dist/index.d.ts CHANGED
@@ -28,12 +28,14 @@ import { T2VAuth } from './auth';
28
28
  import { T2VSession } from './sessions';
29
29
  import { T2VTools } from './tools';
30
30
  import type { AudioModelsResponse, ChatEvent, ChatMessage, ModelsResponse, T2VConfig, TranscriptionResponse } from './types';
31
+ type SessionClearCallback = () => void;
31
32
  export declare class Talk2View {
32
33
  readonly auth: T2VAuth;
33
34
  readonly tools: T2VTools;
34
35
  private readonly client;
35
36
  readonly config: T2VConfig;
36
37
  private currentSession;
38
+ private sessionClearListeners;
37
39
  constructor(config: T2VConfig);
38
40
  /**
39
41
  * Create a new chat session.
@@ -82,6 +84,16 @@ export declare class Talk2View {
82
84
  * Also deletes the session on the server so conversation history is reset.
83
85
  */
84
86
  clearSession(): void;
87
+ /**
88
+ * Subscribe to session clear events.
89
+ *
90
+ * Listeners are called when {@link clearSession} runs. This allows hooks
91
+ * like `useT2VTools` to reset client-side state (e.g. tool registration)
92
+ * so that tools are re-registered on the next session.
93
+ *
94
+ * @returns An unsubscribe function.
95
+ */
96
+ onSessionClear(callback: SessionClearCallback): () => void;
85
97
  }
86
98
  export { T2VAuth } from './auth';
87
99
  export { T2VClient } from './client';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEjC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,WAAW,EAAS,cAAc,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAEpI,qBAAa,SAAS;IACpB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAY;IACnC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,OAAO,CAAC,cAAc,CAA2B;gBAErC,MAAM,EAAE,SAAS;IAc7B;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC;IAe1C;;;;;OAKG;IACI,IAAI,CACT,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,WAAW,EAAE,CAAA;KAAE,GAC3D,cAAc,CAAC,SAAS,CAAC;IAQ5B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,cAAc,CAAC;IAI3C;;OAEG;IACG,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAIpE;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAIrD;;OAEG;IACG,WAAW,CAAC,IAAI,EAAE;QACtB,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,OAAO,CAAA;SAAE,CAAC,CAAC;QACpD,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,OAAO,CAAC,OAAO,CAAC;IAOpB;;OAEG;IACH,UAAU,IAAI,UAAU,GAAG,IAAI;IAI/B;;;OAGG;IACH,YAAY,IAAI,IAAI;CAQrB;AAGD,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACtG,YAAY,EACV,SAAS,EACT,IAAI,EACJ,SAAS,EACT,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,WAAW,EACX,mBAAmB,EACnB,qBAAqB,EACrB,KAAK,EACL,cAAc,EACd,qBAAqB,EACrB,mBAAmB,EACnB,eAAe,GAChB,MAAM,SAAS,CAAC"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AAEjC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,KAAK,EAAE,mBAAmB,EAAE,SAAS,EAAE,WAAW,EAAS,cAAc,EAAE,SAAS,EAAE,qBAAqB,EAAE,MAAM,SAAS,CAAC;AAEpI,KAAK,oBAAoB,GAAG,MAAM,IAAI,CAAC;AAEvC,qBAAa,SAAS;IACpB,QAAQ,CAAC,IAAI,EAAE,OAAO,CAAC;IACvB,QAAQ,CAAC,KAAK,EAAE,QAAQ,CAAC;IACzB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAY;IACnC,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,OAAO,CAAC,cAAc,CAA2B;IACjD,OAAO,CAAC,qBAAqB,CAAwC;gBAEzD,MAAM,EAAE,SAAS;IAc7B;;OAEG;IACG,aAAa,IAAI,OAAO,CAAC,UAAU,CAAC;IAe1C;;;;;OAKG;IACI,IAAI,CACT,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE;QAAE,YAAY,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,WAAW,EAAE,CAAA;KAAE,GAC3D,cAAc,CAAC,SAAS,CAAC;IAQ5B;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,cAAc,CAAC;IAI3C;;OAEG;IACG,UAAU,CAAC,QAAQ,EAAE,QAAQ,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAIpE;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,mBAAmB,CAAC;IAIrD;;OAEG;IACG,WAAW,CAAC,IAAI,EAAE;QACtB,KAAK,EAAE,MAAM,CAAC;QACd,QAAQ,EAAE,KAAK,CAAC;YAAE,IAAI,EAAE,MAAM,CAAC;YAAC,OAAO,EAAE,OAAO,CAAA;SAAE,CAAC,CAAC;QACpD,UAAU,CAAC,EAAE,MAAM,CAAC;QACpB,WAAW,CAAC,EAAE,MAAM,CAAC;KACtB,GAAG,OAAO,CAAC,OAAO,CAAC;IAOpB;;OAEG;IACH,UAAU,IAAI,UAAU,GAAG,IAAI;IAI/B;;;OAGG;IACH,YAAY,IAAI,IAAI;IAYpB;;;;;;;;OAQG;IACH,cAAc,CAAC,QAAQ,EAAE,oBAAoB,GAAG,MAAM,IAAI;CAM3D;AAGD,OAAO,EAAE,OAAO,EAAE,MAAM,QAAQ,CAAC;AACjC,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,OAAO,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAC;AACnC,OAAO,EAAE,QAAQ,EAAE,mBAAmB,EAAE,eAAe,EAAE,YAAY,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACtG,YAAY,EACV,SAAS,EACT,IAAI,EACJ,SAAS,EACT,WAAW,EACX,UAAU,EACV,gBAAgB,EAChB,WAAW,EACX,aAAa,EACb,iBAAiB,EACjB,WAAW,EACX,mBAAmB,EACnB,qBAAqB,EACrB,KAAK,EACL,cAAc,EACd,qBAAqB,EACrB,mBAAmB,EACnB,eAAe,GAChB,MAAM,SAAS,CAAC"}
package/dist/index.js CHANGED
@@ -34,6 +34,7 @@ export class Talk2View {
34
34
  client;
35
35
  config;
36
36
  currentSession = null;
37
+ sessionClearListeners = new Set();
37
38
  constructor(config) {
38
39
  if (config.voiceApiUrl) {
39
40
  console.warn('[Talk2View] voiceApiUrl is deprecated and has no effect. ' +
@@ -113,6 +114,24 @@ export class Talk2View {
113
114
  this.client.request(`/v1/sessions/${sessionId}`, { method: 'DELETE' }).catch(() => { });
114
115
  }
115
116
  this.currentSession = null;
117
+ for (const listener of this.sessionClearListeners) {
118
+ listener();
119
+ }
120
+ }
121
+ /**
122
+ * Subscribe to session clear events.
123
+ *
124
+ * Listeners are called when {@link clearSession} runs. This allows hooks
125
+ * like `useT2VTools` to reset client-side state (e.g. tool registration)
126
+ * so that tools are re-registered on the next session.
127
+ *
128
+ * @returns An unsubscribe function.
129
+ */
130
+ onSessionClear(callback) {
131
+ this.sessionClearListeners.add(callback);
132
+ return () => {
133
+ this.sessionClearListeners.delete(callback);
134
+ };
116
135
  }
117
136
  }
118
137
  // Re-export types and classes for consumers
package/dist/index.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -6,8 +6,9 @@
6
6
  export interface ChatInputProps {
7
7
  onSend: (message: string) => void;
8
8
  disabled?: boolean;
9
+ compact?: boolean;
9
10
  placeholder?: string;
10
11
  className?: string;
11
12
  }
12
- export declare function ChatInput({ onSend, disabled, placeholder, className, }: ChatInputProps): import("react/jsx-runtime").JSX.Element;
13
+ export declare function ChatInput({ onSend, disabled, compact, placeholder, className, }: ChatInputProps): import("react/jsx-runtime").JSX.Element;
13
14
  //# sourceMappingURL=ChatInput.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"ChatInput.d.ts","sourceRoot":"","sources":["../../src/react/ChatInput.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,SAAS,CAAC,EACxB,MAAM,EACN,QAAgB,EAChB,WAAiC,EACjC,SAAc,GACf,EAAE,cAAc,2CAgOhB"}
1
+ {"version":3,"file":"ChatInput.d.ts","sourceRoot":"","sources":["../../src/react/ChatInput.tsx"],"names":[],"mappings":"AAAA;;;;GAIG;AAOH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,CAAC,OAAO,EAAE,MAAM,KAAK,IAAI,CAAC;IAClC,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,SAAS,CAAC,EACxB,MAAM,EACN,QAAgB,EAChB,OAAe,EACf,WAAiC,EACjC,SAAc,GACf,EAAE,cAAc,2CAkOhB"}