@talk2view/sdk 0.2.0 → 0.2.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +118 -1
- package/dist/client.d.ts +10 -0
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +59 -10
- package/dist/client.js.map +1 -1
- package/dist/errors.d.ts +2 -1
- package/dist/errors.d.ts.map +1 -1
- package/dist/errors.js +3 -1
- package/dist/errors.js.map +1 -1
- package/dist/index.d.ts +16 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +23 -0
- package/dist/index.js.map +1 -1
- package/dist/react/useT2VTools.d.ts.map +1 -1
- package/dist/react/useT2VTools.js +6 -0
- package/dist/react/useT2VTools.js.map +1 -1
- package/dist/skills.d.ts +51 -0
- package/dist/skills.d.ts.map +1 -0
- package/dist/skills.js +94 -0
- package/dist/skills.js.map +1 -0
- package/dist/tools.d.ts +6 -0
- package/dist/tools.d.ts.map +1 -1
- package/dist/tools.js +57 -0
- package/dist/tools.js.map +1 -1
- package/dist/types.d.ts +12 -0
- package/dist/types.d.ts.map +1 -1
- 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
|
|
@@ -294,6 +303,35 @@ t2v.tools.getRegistered() // ClientToolSchema[]
|
|
|
294
303
|
t2v.tools.hasHandler('zoom_in') // boolean
|
|
295
304
|
```
|
|
296
305
|
|
|
306
|
+
#### `t2v.skills`
|
|
307
|
+
|
|
308
|
+
Register user-defined skills — knowledge documents the AI agent can discover and load for specialised expertise. Skills are stored client-side and sent to the server per-session.
|
|
309
|
+
|
|
310
|
+
```typescript
|
|
311
|
+
// Add skills locally
|
|
312
|
+
t2v.skills.add({
|
|
313
|
+
name: 'radiology-workflow',
|
|
314
|
+
description: 'Step-by-step radiology reading workflow',
|
|
315
|
+
content: '## Radiology Reading Workflow\n1. Check study metadata\n2. Apply window/level\n...',
|
|
316
|
+
});
|
|
317
|
+
|
|
318
|
+
// Persist to localStorage
|
|
319
|
+
t2v.skills.save();
|
|
320
|
+
|
|
321
|
+
// Register with server (call after session is created)
|
|
322
|
+
await t2v.skills.register(t2v.skills.getAll());
|
|
323
|
+
|
|
324
|
+
// On next page load, restore from localStorage
|
|
325
|
+
t2v.skills.load();
|
|
326
|
+
|
|
327
|
+
// Manage skills
|
|
328
|
+
t2v.skills.remove('radiology-workflow');
|
|
329
|
+
t2v.skills.getAll(); // UserSkill[]
|
|
330
|
+
t2v.skills.clear(); // Remove all
|
|
331
|
+
```
|
|
332
|
+
|
|
333
|
+
Skills merge with partner-defined and built-in skills. User skills take highest priority. See [Skills documentation](../../docs/skills.md) for details.
|
|
334
|
+
|
|
297
335
|
#### `t2v.chat()`
|
|
298
336
|
|
|
299
337
|
Send a message and stream the response. Tool calls are executed automatically if handlers are registered.
|
|
@@ -320,6 +358,43 @@ for await (const event of t2v.chat('Zoom in please')) {
|
|
|
320
358
|
}
|
|
321
359
|
```
|
|
322
360
|
|
|
361
|
+
#### `t2v.clearSession()`
|
|
362
|
+
|
|
363
|
+
Reset the current session. Clears the thread ID so the next `chat()` call starts a fresh conversation.
|
|
364
|
+
|
|
365
|
+
```typescript
|
|
366
|
+
t2v.clearSession();
|
|
367
|
+
```
|
|
368
|
+
|
|
369
|
+
#### `t2v.listModels()` / `t2v.listAudioModels()`
|
|
370
|
+
|
|
371
|
+
List available models:
|
|
372
|
+
|
|
373
|
+
```typescript
|
|
374
|
+
const models = await t2v.listModels(); // Chat/completion models
|
|
375
|
+
const audioModels = await t2v.listAudioModels(); // Speech-to-text models
|
|
376
|
+
```
|
|
377
|
+
|
|
378
|
+
#### `t2v.transcribe()`
|
|
379
|
+
|
|
380
|
+
Transcribe an audio file using the server's speech-to-text service:
|
|
381
|
+
|
|
382
|
+
```typescript
|
|
383
|
+
const result = await t2v.transcribe(audioBlob, 'whisper-1', 'en');
|
|
384
|
+
console.log(result.text);
|
|
385
|
+
```
|
|
386
|
+
|
|
387
|
+
#### `t2v.completions()`
|
|
388
|
+
|
|
389
|
+
Send a raw completions request (non-streaming):
|
|
390
|
+
|
|
391
|
+
```typescript
|
|
392
|
+
const response = await t2v.completions({
|
|
393
|
+
messages: [{ role: 'user', content: 'Hello' }],
|
|
394
|
+
model: 'gpt-4.1-mini',
|
|
395
|
+
});
|
|
396
|
+
```
|
|
397
|
+
|
|
323
398
|
#### `t2v.createSession()` / `t2v.getSession()`
|
|
324
399
|
|
|
325
400
|
For advanced use cases where you need direct session control:
|
|
@@ -433,6 +508,19 @@ Stored keys:
|
|
|
433
508
|
|
|
434
509
|
On logout, all keys are cleared and a `talk2view_auth_cleared` event is dispatched on `window` for cross-component synchronization.
|
|
435
510
|
|
|
511
|
+
### Security Considerations
|
|
512
|
+
|
|
513
|
+
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.
|
|
514
|
+
|
|
515
|
+
To mitigate this:
|
|
516
|
+
|
|
517
|
+
- **Use a Content Security Policy (CSP)** that restricts script sources to trusted origins
|
|
518
|
+
- **Keep token lifetimes short** — the SDK automatically refreshes tokens, so short-lived access tokens limit the window of exposure
|
|
519
|
+
- **Always serve your application over HTTPS**
|
|
520
|
+
- **Sanitize user-generated content** to prevent XSS injection
|
|
521
|
+
|
|
522
|
+
**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.
|
|
523
|
+
|
|
436
524
|
---
|
|
437
525
|
|
|
438
526
|
## Error Handling
|
|
@@ -447,8 +535,10 @@ The SDK throws typed errors:
|
|
|
447
535
|
| `NetworkError` | Network failure, server unreachable |
|
|
448
536
|
| `T2VError` | Base class for all SDK errors |
|
|
449
537
|
|
|
538
|
+
All errors extend `T2VError`, which exposes `message`, `type`, `statusCode`, and `code`:
|
|
539
|
+
|
|
450
540
|
```typescript
|
|
451
|
-
import { AuthenticationError, NetworkError } from '@talk2view/sdk';
|
|
541
|
+
import { T2VError, AuthenticationError, NetworkError, SessionError } from '@talk2view/sdk';
|
|
452
542
|
|
|
453
543
|
try {
|
|
454
544
|
await t2v.auth.login(email, password);
|
|
@@ -457,14 +547,22 @@ try {
|
|
|
457
547
|
console.log('Bad credentials');
|
|
458
548
|
} else if (err instanceof NetworkError) {
|
|
459
549
|
console.log('Server unreachable');
|
|
550
|
+
} else if (err instanceof SessionError) {
|
|
551
|
+
console.log('Session issue:', err.message);
|
|
552
|
+
} else if (err instanceof T2VError) {
|
|
553
|
+
// Access the error code for programmatic handling
|
|
554
|
+
console.log(`Error [${err.code}]: ${err.message} (HTTP ${err.statusCode})`);
|
|
460
555
|
}
|
|
461
556
|
}
|
|
462
557
|
```
|
|
463
558
|
|
|
559
|
+
**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.
|
|
560
|
+
|
|
464
561
|
In React, the hooks catch errors internally and expose them via the `error` state:
|
|
465
562
|
|
|
466
563
|
```tsx
|
|
467
564
|
const { error, clearError } = useT2VAuth();
|
|
565
|
+
const { error: chatError } = useT2VChat({ systemPrompt: '...' });
|
|
468
566
|
// error is a string message, not a thrown exception
|
|
469
567
|
```
|
|
470
568
|
|
|
@@ -479,6 +577,23 @@ const { error, clearError } = useT2VAuth();
|
|
|
479
577
|
| `partnerKey` | `string` | Yes | — | Your partner API key |
|
|
480
578
|
| `baseUrl` | `string` | No | `'http://localhost:8100'` | Talk2View API server URL |
|
|
481
579
|
| `model` | `string` | No | Server default | LLM model to use |
|
|
580
|
+
| `requestTimeout` | `number` | No | `30000` | HTTP request timeout in ms. Does not apply to SSE streams after connection. |
|
|
581
|
+
|
|
582
|
+
---
|
|
583
|
+
|
|
584
|
+
## System Prompts
|
|
585
|
+
|
|
586
|
+
System prompts set the AI's behavior and context for your application. Pass them to `ChatPanel` or `useT2VChat`:
|
|
587
|
+
|
|
588
|
+
```tsx
|
|
589
|
+
<ChatPanel systemPrompt="You are a medical imaging assistant. Use the provided tools to control the DICOM viewer." />
|
|
590
|
+
```
|
|
591
|
+
|
|
592
|
+
Best practices:
|
|
593
|
+
- **Keep prompts concise** — every token in the system prompt is sent with every request and adds to cost
|
|
594
|
+
- **Focus on tools and context** — describe what tools are available and when to use them, rather than general personality traits
|
|
595
|
+
- **Be specific about your domain** — mention the application type and expected user intents
|
|
596
|
+
- **Avoid conflicting instructions** — the system prompt should complement, not contradict, tool descriptions
|
|
482
597
|
|
|
483
598
|
---
|
|
484
599
|
|
|
@@ -575,6 +690,8 @@ import type {
|
|
|
575
690
|
ToolCallInterrupt,
|
|
576
691
|
ChatCompletionChunk,
|
|
577
692
|
RegisterToolsResponse,
|
|
693
|
+
UserSkill,
|
|
694
|
+
RegisterSkillsResponse,
|
|
578
695
|
} from '@talk2view/sdk';
|
|
579
696
|
|
|
580
697
|
// React types
|
package/dist/client.d.ts
CHANGED
|
@@ -5,9 +5,14 @@ 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;
|
|
11
16
|
/**
|
|
12
17
|
* Execute a fetch with network-error wrapping, 401 refresh/retry, and error parsing.
|
|
13
18
|
*/
|
|
@@ -24,6 +29,11 @@ export declare class T2VClient {
|
|
|
24
29
|
uploadRequest<T>(endpoint: string, formData: FormData, requiresAuth?: boolean): Promise<T>;
|
|
25
30
|
/**
|
|
26
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.
|
|
27
37
|
*/
|
|
28
38
|
streamRequest(endpoint: string, body: object): AsyncGenerator<ChatCompletionChunk>;
|
|
29
39
|
private tryRefreshToken;
|
package/dist/client.d.ts.map
CHANGED
|
@@ -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;
|
|
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,34 +5,59 @@ 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;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Create an AbortController that auto-aborts after the configured timeout.
|
|
22
|
+
*/
|
|
23
|
+
makeTimeoutSignal() {
|
|
24
|
+
const controller = new AbortController();
|
|
25
|
+
const timer = setTimeout(() => controller.abort(), this.requestTimeout);
|
|
26
|
+
return { signal: controller.signal, clear: () => clearTimeout(timer) };
|
|
16
27
|
}
|
|
17
28
|
/**
|
|
18
29
|
* Execute a fetch with network-error wrapping, 401 refresh/retry, and error parsing.
|
|
19
30
|
*/
|
|
20
|
-
async fetchWithAuth(endpoint, init, headers, requiresAuth) {
|
|
31
|
+
async fetchWithAuth(endpoint, init, headers, requiresAuth, signal) {
|
|
32
|
+
const fetchInit = signal ? { ...init, headers, signal } : { ...init, headers };
|
|
21
33
|
let response;
|
|
22
34
|
try {
|
|
23
|
-
response = await fetch(`${this.baseUrl}${endpoint}`,
|
|
35
|
+
response = await fetch(`${this.baseUrl}${endpoint}`, fetchInit);
|
|
24
36
|
}
|
|
25
37
|
catch (err) {
|
|
38
|
+
if (err instanceof DOMException && err.name === 'AbortError') {
|
|
39
|
+
throw new NetworkError(`Request timed out after ${this.requestTimeout}ms`);
|
|
40
|
+
}
|
|
26
41
|
throw new NetworkError(`Request failed: ${err instanceof Error ? err.message : 'Unknown error'}`);
|
|
27
42
|
}
|
|
28
43
|
if (response.status === 401 && requiresAuth) {
|
|
29
44
|
const refreshed = await this.tryRefreshToken();
|
|
30
45
|
if (refreshed) {
|
|
31
46
|
headers['Authorization'] = `Bearer ${getAccessToken()}`;
|
|
32
|
-
const
|
|
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
|
+
}
|
|
33
58
|
if (!retryResponse.ok) {
|
|
34
59
|
const error = await retryResponse.json().catch(() => ({ error: { message: 'Request failed' } }));
|
|
35
|
-
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);
|
|
36
61
|
}
|
|
37
62
|
return retryResponse;
|
|
38
63
|
}
|
|
@@ -41,7 +66,7 @@ export class T2VClient {
|
|
|
41
66
|
}
|
|
42
67
|
if (!response.ok) {
|
|
43
68
|
const error = await response.json().catch(() => ({ error: { message: 'Request failed' } }));
|
|
44
|
-
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);
|
|
45
70
|
}
|
|
46
71
|
return response;
|
|
47
72
|
}
|
|
@@ -66,8 +91,14 @@ export class T2VClient {
|
|
|
66
91
|
'Content-Type': 'application/json',
|
|
67
92
|
...options.headers,
|
|
68
93
|
});
|
|
69
|
-
const
|
|
70
|
-
|
|
94
|
+
const { signal, clear } = this.makeTimeoutSignal();
|
|
95
|
+
try {
|
|
96
|
+
const response = await this.fetchWithAuth(endpoint, options, headers, requiresAuth, signal);
|
|
97
|
+
return response.json();
|
|
98
|
+
}
|
|
99
|
+
finally {
|
|
100
|
+
clear();
|
|
101
|
+
}
|
|
71
102
|
}
|
|
72
103
|
/**
|
|
73
104
|
* Make an authenticated multipart upload request (e.g. audio files).
|
|
@@ -75,16 +106,34 @@ export class T2VClient {
|
|
|
75
106
|
*/
|
|
76
107
|
async uploadRequest(endpoint, formData, requiresAuth = true) {
|
|
77
108
|
const headers = this.buildHeaders(requiresAuth);
|
|
78
|
-
const
|
|
79
|
-
|
|
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();
|
|
113
|
+
}
|
|
114
|
+
finally {
|
|
115
|
+
clear();
|
|
116
|
+
}
|
|
80
117
|
}
|
|
81
118
|
/**
|
|
82
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.
|
|
83
125
|
*/
|
|
84
126
|
async *streamRequest(endpoint, body) {
|
|
85
127
|
const headers = this.buildHeaders(true, { 'Content-Type': 'application/json' });
|
|
86
128
|
const serializedBody = JSON.stringify(body);
|
|
87
|
-
const
|
|
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();
|
|
136
|
+
}
|
|
88
137
|
yield* decodeSSEStream(response);
|
|
89
138
|
}
|
|
90
139
|
async tryRefreshToken() {
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,mBAAmB,EAAE,YAAY,EAAE,QAAQ,EAAE,MAAM,UAAU,CAAC;AACvE,OAAO,EACL,SAAS,EACT,cAAc,EACd,eAAe,EACf,cAAc,EACd,eAAe,GAChB,MAAM,WAAW,CAAC;AACnB,OAAO,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAO9C,MAAM,gBAAgB,GAAG,8BAA8B,CAAC;
|
|
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
|
-
|
|
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);
|
package/dist/errors.d.ts.map
CHANGED
|
@@ -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;
|
|
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
|
-
|
|
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
|
}
|
package/dist/errors.js.map
CHANGED
|
@@ -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;
|
|
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
|
@@ -26,14 +26,18 @@
|
|
|
26
26
|
*/
|
|
27
27
|
import { T2VAuth } from './auth';
|
|
28
28
|
import { T2VSession } from './sessions';
|
|
29
|
+
import { T2VSkills } from './skills';
|
|
29
30
|
import { T2VTools } from './tools';
|
|
30
31
|
import type { AudioModelsResponse, ChatEvent, ChatMessage, ModelsResponse, T2VConfig, TranscriptionResponse } from './types';
|
|
32
|
+
type SessionClearCallback = () => void;
|
|
31
33
|
export declare class Talk2View {
|
|
32
34
|
readonly auth: T2VAuth;
|
|
33
35
|
readonly tools: T2VTools;
|
|
36
|
+
readonly skills: T2VSkills;
|
|
34
37
|
private readonly client;
|
|
35
38
|
readonly config: T2VConfig;
|
|
36
39
|
private currentSession;
|
|
40
|
+
private sessionClearListeners;
|
|
37
41
|
constructor(config: T2VConfig);
|
|
38
42
|
/**
|
|
39
43
|
* Create a new chat session.
|
|
@@ -82,11 +86,22 @@ export declare class Talk2View {
|
|
|
82
86
|
* Also deletes the session on the server so conversation history is reset.
|
|
83
87
|
*/
|
|
84
88
|
clearSession(): void;
|
|
89
|
+
/**
|
|
90
|
+
* Subscribe to session clear events.
|
|
91
|
+
*
|
|
92
|
+
* Listeners are called when {@link clearSession} runs. This allows hooks
|
|
93
|
+
* like `useT2VTools` to reset client-side state (e.g. tool registration)
|
|
94
|
+
* so that tools are re-registered on the next session.
|
|
95
|
+
*
|
|
96
|
+
* @returns An unsubscribe function.
|
|
97
|
+
*/
|
|
98
|
+
onSessionClear(callback: SessionClearCallback): () => void;
|
|
85
99
|
}
|
|
86
100
|
export { T2VAuth } from './auth';
|
|
87
101
|
export { T2VClient } from './client';
|
|
88
102
|
export { T2VSession } from './sessions';
|
|
103
|
+
export { T2VSkills } from './skills';
|
|
89
104
|
export { T2VTools } from './tools';
|
|
90
105
|
export { T2VError, AuthenticationError, PartnerKeyError, SessionError, NetworkError } from './errors';
|
|
91
|
-
export type { T2VConfig, User, ChatEvent, ChatMessage, ClientTool, ClientToolSchema, ToolHandler, TokenResponse, ToolCallInterrupt, AgentStatus, ChatCompletionChunk, RegisterToolsResponse, Model, ModelsResponse, TranscriptionResponse, AudioModelsResponse, UserPreferences, } from './types';
|
|
106
|
+
export type { T2VConfig, User, ChatEvent, ChatMessage, ClientTool, ClientToolSchema, ToolHandler, TokenResponse, ToolCallInterrupt, AgentStatus, ChatCompletionChunk, RegisterToolsResponse, RegisterSkillsResponse, UserSkill, Model, ModelsResponse, TranscriptionResponse, AudioModelsResponse, UserPreferences, } from './types';
|
|
92
107
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -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;
|
|
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,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,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,QAAQ,CAAC,MAAM,EAAE,SAAS,CAAC;IAC3B,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;IAe7B;;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,SAAS,EAAE,MAAM,UAAU,CAAC;AACrC,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,sBAAsB,EACtB,SAAS,EACT,KAAK,EACL,cAAc,EACd,qBAAqB,EACrB,mBAAmB,EACnB,eAAe,GAChB,MAAM,SAAS,CAAC"}
|
package/dist/index.js
CHANGED
|
@@ -27,13 +27,16 @@
|
|
|
27
27
|
import { T2VAuth } from './auth';
|
|
28
28
|
import { T2VClient } from './client';
|
|
29
29
|
import { T2VSession } from './sessions';
|
|
30
|
+
import { T2VSkills } from './skills';
|
|
30
31
|
import { T2VTools } from './tools';
|
|
31
32
|
export class Talk2View {
|
|
32
33
|
auth;
|
|
33
34
|
tools;
|
|
35
|
+
skills;
|
|
34
36
|
client;
|
|
35
37
|
config;
|
|
36
38
|
currentSession = null;
|
|
39
|
+
sessionClearListeners = new Set();
|
|
37
40
|
constructor(config) {
|
|
38
41
|
if (config.voiceApiUrl) {
|
|
39
42
|
console.warn('[Talk2View] voiceApiUrl is deprecated and has no effect. ' +
|
|
@@ -44,6 +47,7 @@ export class Talk2View {
|
|
|
44
47
|
this.client = new T2VClient(config);
|
|
45
48
|
this.auth = new T2VAuth(this.client);
|
|
46
49
|
this.tools = new T2VTools(this.client);
|
|
50
|
+
this.skills = new T2VSkills(this.client);
|
|
47
51
|
}
|
|
48
52
|
/**
|
|
49
53
|
* Create a new chat session.
|
|
@@ -113,12 +117,31 @@ export class Talk2View {
|
|
|
113
117
|
this.client.request(`/v1/sessions/${sessionId}`, { method: 'DELETE' }).catch(() => { });
|
|
114
118
|
}
|
|
115
119
|
this.currentSession = null;
|
|
120
|
+
for (const listener of this.sessionClearListeners) {
|
|
121
|
+
listener();
|
|
122
|
+
}
|
|
123
|
+
}
|
|
124
|
+
/**
|
|
125
|
+
* Subscribe to session clear events.
|
|
126
|
+
*
|
|
127
|
+
* Listeners are called when {@link clearSession} runs. This allows hooks
|
|
128
|
+
* like `useT2VTools` to reset client-side state (e.g. tool registration)
|
|
129
|
+
* so that tools are re-registered on the next session.
|
|
130
|
+
*
|
|
131
|
+
* @returns An unsubscribe function.
|
|
132
|
+
*/
|
|
133
|
+
onSessionClear(callback) {
|
|
134
|
+
this.sessionClearListeners.add(callback);
|
|
135
|
+
return () => {
|
|
136
|
+
this.sessionClearListeners.delete(callback);
|
|
137
|
+
};
|
|
116
138
|
}
|
|
117
139
|
}
|
|
118
140
|
// Re-export types and classes for consumers
|
|
119
141
|
export { T2VAuth } from './auth';
|
|
120
142
|
export { T2VClient } from './client';
|
|
121
143
|
export { T2VSession } from './sessions';
|
|
144
|
+
export { T2VSkills } from './skills';
|
|
122
145
|
export { T2VTools } from './tools';
|
|
123
146
|
export { T2VError, AuthenticationError, PartnerKeyError, SessionError, NetworkError } from './errors';
|
|
124
147
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,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;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useT2VTools.d.ts","sourceRoot":"","sources":["../../src/react/useT2VTools.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAGpF,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,CAAC,KAAK,EAAE,CAAC,gBAAgB,GAAG,UAAU,CAAC,EAAE,KAAK,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC5F,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,wBAAgB,WAAW,IAAI,iBAAiB,
|
|
1
|
+
{"version":3,"file":"useT2VTools.d.ts","sourceRoot":"","sources":["../../src/react/useT2VTools.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,MAAM,UAAU,CAAC;AAGpF,MAAM,WAAW,iBAAiB;IAChC,aAAa,EAAE,CAAC,KAAK,EAAE,CAAC,gBAAgB,GAAG,UAAU,CAAC,EAAE,KAAK,OAAO,CAAC,qBAAqB,CAAC,CAAC;IAC5F,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,YAAY,EAAE,OAAO,CAAC;CACvB;AAED,wBAAgB,WAAW,IAAI,iBAAiB,CAgC/C"}
|
|
@@ -17,6 +17,12 @@ export function useT2VTools() {
|
|
|
17
17
|
setRegisteredTools([]);
|
|
18
18
|
}
|
|
19
19
|
}, [isAuthenticated]);
|
|
20
|
+
// Reset when session is cleared (tools are session-scoped on the server)
|
|
21
|
+
useEffect(() => {
|
|
22
|
+
return t2v.onSessionClear(() => {
|
|
23
|
+
setRegisteredTools([]);
|
|
24
|
+
});
|
|
25
|
+
}, [t2v]);
|
|
20
26
|
return {
|
|
21
27
|
registerTools,
|
|
22
28
|
registeredTools,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"useT2VTools.js","sourceRoot":"","sources":["../../src/react/useT2VTools.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEzD,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAQvC,MAAM,UAAU,WAAW;IACzB,MAAM,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG,MAAM,EAAE,CAAC;IAC1C,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAW,EAAE,CAAC,CAAC;IAErE,MAAM,aAAa,GAAG,WAAW,CAC/B,KAAK,EAAE,KAAwC,EAAE,EAAE;QACjD,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACjD,kBAAkB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACxC,OAAO,QAAQ,CAAC;IAClB,CAAC,EACD,CAAC,GAAG,CAAC,CACN,CAAC;IAEF,0BAA0B;IAC1B,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,kBAAkB,CAAC,EAAE,CAAC,CAAC;QACzB,CAAC;IACH,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;IAEtB,OAAO;QACL,aAAa;QACb,eAAe;QACf,YAAY,EAAE,eAAe,CAAC,MAAM,GAAG,CAAC;KACzC,CAAC;AACJ,CAAC"}
|
|
1
|
+
{"version":3,"file":"useT2VTools.js","sourceRoot":"","sources":["../../src/react/useT2VTools.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,OAAO,CAAC;AAEzD,OAAO,EAAE,MAAM,EAAE,MAAM,eAAe,CAAC;AAQvC,MAAM,UAAU,WAAW;IACzB,MAAM,EAAE,GAAG,EAAE,eAAe,EAAE,GAAG,MAAM,EAAE,CAAC;IAC1C,MAAM,CAAC,eAAe,EAAE,kBAAkB,CAAC,GAAG,QAAQ,CAAW,EAAE,CAAC,CAAC;IAErE,MAAM,aAAa,GAAG,WAAW,CAC/B,KAAK,EAAE,KAAwC,EAAE,EAAE;QACjD,MAAM,QAAQ,GAAG,MAAM,GAAG,CAAC,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACjD,kBAAkB,CAAC,QAAQ,CAAC,UAAU,CAAC,CAAC;QACxC,OAAO,QAAQ,CAAC;IAClB,CAAC,EACD,CAAC,GAAG,CAAC,CACN,CAAC;IAEF,0BAA0B;IAC1B,SAAS,CAAC,GAAG,EAAE;QACb,IAAI,CAAC,eAAe,EAAE,CAAC;YACrB,kBAAkB,CAAC,EAAE,CAAC,CAAC;QACzB,CAAC;IACH,CAAC,EAAE,CAAC,eAAe,CAAC,CAAC,CAAC;IAEtB,yEAAyE;IACzE,SAAS,CAAC,GAAG,EAAE;QACb,OAAO,GAAG,CAAC,cAAc,CAAC,GAAG,EAAE;YAC7B,kBAAkB,CAAC,EAAE,CAAC,CAAC;QACzB,CAAC,CAAC,CAAC;IACL,CAAC,EAAE,CAAC,GAAG,CAAC,CAAC,CAAC;IAEV,OAAO;QACL,aAAa;QACb,eAAe;QACf,YAAY,EAAE,eAAe,CAAC,MAAM,GAAG,CAAC;KACzC,CAAC;AACJ,CAAC"}
|
package/dist/skills.d.ts
ADDED
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skills module — register user-defined skills for the current session.
|
|
3
|
+
*
|
|
4
|
+
* Skills are knowledge documents (markdown) that the AI agent can discover
|
|
5
|
+
* and load to gain specialised expertise. They are stored client-side
|
|
6
|
+
* and sent to the server at session start.
|
|
7
|
+
*/
|
|
8
|
+
import type { T2VClient } from './client';
|
|
9
|
+
import type { RegisterSkillsResponse, UserSkill } from './types';
|
|
10
|
+
export declare class T2VSkills {
|
|
11
|
+
private readonly client;
|
|
12
|
+
private skills;
|
|
13
|
+
constructor(client: T2VClient);
|
|
14
|
+
/**
|
|
15
|
+
* Register skills with the server for the current session.
|
|
16
|
+
*
|
|
17
|
+
* Sends all provided skills to the server where they are merged with
|
|
18
|
+
* partner and built-in skills (user skills take highest priority).
|
|
19
|
+
*
|
|
20
|
+
* Call this once at session start, before sending messages.
|
|
21
|
+
*/
|
|
22
|
+
register(skills: UserSkill[]): Promise<RegisterSkillsResponse>;
|
|
23
|
+
/**
|
|
24
|
+
* Add a skill to the local list (does NOT register with server).
|
|
25
|
+
* Call `register()` afterwards to sync with the server.
|
|
26
|
+
*/
|
|
27
|
+
add(skill: UserSkill): void;
|
|
28
|
+
/**
|
|
29
|
+
* Remove a skill from the local list by name.
|
|
30
|
+
* Call `register()` afterwards to sync with the server.
|
|
31
|
+
*/
|
|
32
|
+
remove(name: string): boolean;
|
|
33
|
+
/**
|
|
34
|
+
* Get all locally-stored skills.
|
|
35
|
+
*/
|
|
36
|
+
getAll(): UserSkill[];
|
|
37
|
+
/**
|
|
38
|
+
* Save skills to localStorage for persistence across page reloads.
|
|
39
|
+
*/
|
|
40
|
+
save(): void;
|
|
41
|
+
/**
|
|
42
|
+
* Load skills from localStorage.
|
|
43
|
+
* Does NOT register them — call `register()` to sync with the server.
|
|
44
|
+
*/
|
|
45
|
+
load(): UserSkill[];
|
|
46
|
+
/**
|
|
47
|
+
* Clear all locally-stored skills (and remove from localStorage).
|
|
48
|
+
*/
|
|
49
|
+
clear(): void;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=skills.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills.d.ts","sourceRoot":"","sources":["../src/skills.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,KAAK,EAAE,sBAAsB,EAAE,SAAS,EAAE,MAAM,SAAS,CAAC;AAIjE,qBAAa,SAAS;IAGR,OAAO,CAAC,QAAQ,CAAC,MAAM;IAFnC,OAAO,CAAC,MAAM,CAAmB;gBAEJ,MAAM,EAAE,SAAS;IAE9C;;;;;;;OAOG;IACG,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,OAAO,CAAC,sBAAsB,CAAC;IASpE;;;OAGG;IACH,GAAG,CAAC,KAAK,EAAE,SAAS,GAAG,IAAI;IAS3B;;;OAGG;IACH,MAAM,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO;IAM7B;;OAEG;IACH,MAAM,IAAI,SAAS,EAAE;IAIrB;;OAEG;IACH,IAAI,IAAI,IAAI;IAKZ;;;OAGG;IACH,IAAI,IAAI,SAAS,EAAE;IAanB;;OAEG;IACH,KAAK,IAAI,IAAI;CAMd"}
|
package/dist/skills.js
ADDED
|
@@ -0,0 +1,94 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Skills module — register user-defined skills for the current session.
|
|
3
|
+
*
|
|
4
|
+
* Skills are knowledge documents (markdown) that the AI agent can discover
|
|
5
|
+
* and load to gain specialised expertise. They are stored client-side
|
|
6
|
+
* and sent to the server at session start.
|
|
7
|
+
*/
|
|
8
|
+
const STORAGE_KEY = 't2v_user_skills';
|
|
9
|
+
export class T2VSkills {
|
|
10
|
+
client;
|
|
11
|
+
skills = [];
|
|
12
|
+
constructor(client) {
|
|
13
|
+
this.client = client;
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Register skills with the server for the current session.
|
|
17
|
+
*
|
|
18
|
+
* Sends all provided skills to the server where they are merged with
|
|
19
|
+
* partner and built-in skills (user skills take highest priority).
|
|
20
|
+
*
|
|
21
|
+
* Call this once at session start, before sending messages.
|
|
22
|
+
*/
|
|
23
|
+
async register(skills) {
|
|
24
|
+
this.skills = [...skills];
|
|
25
|
+
return this.client.request('/v1/skills/register', {
|
|
26
|
+
method: 'POST',
|
|
27
|
+
body: JSON.stringify({ skills }),
|
|
28
|
+
});
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* Add a skill to the local list (does NOT register with server).
|
|
32
|
+
* Call `register()` afterwards to sync with the server.
|
|
33
|
+
*/
|
|
34
|
+
add(skill) {
|
|
35
|
+
const idx = this.skills.findIndex((s) => s.name === skill.name);
|
|
36
|
+
if (idx >= 0) {
|
|
37
|
+
this.skills[idx] = skill;
|
|
38
|
+
}
|
|
39
|
+
else {
|
|
40
|
+
this.skills.push(skill);
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Remove a skill from the local list by name.
|
|
45
|
+
* Call `register()` afterwards to sync with the server.
|
|
46
|
+
*/
|
|
47
|
+
remove(name) {
|
|
48
|
+
const before = this.skills.length;
|
|
49
|
+
this.skills = this.skills.filter((s) => s.name !== name);
|
|
50
|
+
return this.skills.length < before;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Get all locally-stored skills.
|
|
54
|
+
*/
|
|
55
|
+
getAll() {
|
|
56
|
+
return [...this.skills];
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Save skills to localStorage for persistence across page reloads.
|
|
60
|
+
*/
|
|
61
|
+
save() {
|
|
62
|
+
if (typeof localStorage === 'undefined')
|
|
63
|
+
return;
|
|
64
|
+
localStorage.setItem(STORAGE_KEY, JSON.stringify(this.skills));
|
|
65
|
+
}
|
|
66
|
+
/**
|
|
67
|
+
* Load skills from localStorage.
|
|
68
|
+
* Does NOT register them — call `register()` to sync with the server.
|
|
69
|
+
*/
|
|
70
|
+
load() {
|
|
71
|
+
if (typeof localStorage === 'undefined')
|
|
72
|
+
return [];
|
|
73
|
+
try {
|
|
74
|
+
const raw = localStorage.getItem(STORAGE_KEY);
|
|
75
|
+
if (raw) {
|
|
76
|
+
this.skills = JSON.parse(raw);
|
|
77
|
+
}
|
|
78
|
+
}
|
|
79
|
+
catch {
|
|
80
|
+
// Ignore corrupt data
|
|
81
|
+
}
|
|
82
|
+
return [...this.skills];
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Clear all locally-stored skills (and remove from localStorage).
|
|
86
|
+
*/
|
|
87
|
+
clear() {
|
|
88
|
+
this.skills = [];
|
|
89
|
+
if (typeof localStorage !== 'undefined') {
|
|
90
|
+
localStorage.removeItem(STORAGE_KEY);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
//# sourceMappingURL=skills.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"skills.js","sourceRoot":"","sources":["../src/skills.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAKH,MAAM,WAAW,GAAG,iBAAiB,CAAC;AAEtC,MAAM,OAAO,SAAS;IAGS;IAFrB,MAAM,GAAgB,EAAE,CAAC;IAEjC,YAA6B,MAAiB;QAAjB,WAAM,GAAN,MAAM,CAAW;IAAG,CAAC;IAElD;;;;;;;OAOG;IACH,KAAK,CAAC,QAAQ,CAAC,MAAmB;QAChC,IAAI,CAAC,MAAM,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;QAE1B,OAAO,IAAI,CAAC,MAAM,CAAC,OAAO,CAAyB,qBAAqB,EAAE;YACxE,MAAM,EAAE,MAAM;YACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,MAAM,EAAE,CAAC;SACjC,CAAC,CAAC;IACL,CAAC;IAED;;;OAGG;IACH,GAAG,CAAC,KAAgB;QAClB,MAAM,GAAG,GAAG,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,KAAK,CAAC,IAAI,CAAC,CAAC;QAChE,IAAI,GAAG,IAAI,CAAC,EAAE,CAAC;YACb,IAAI,CAAC,MAAM,CAAC,GAAG,CAAC,GAAG,KAAK,CAAC;QAC3B,CAAC;aAAM,CAAC;YACN,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC1B,CAAC;IACH,CAAC;IAED;;;OAGG;IACH,MAAM,CAAC,IAAY;QACjB,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC;QAClC,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,KAAK,IAAI,CAAC,CAAC;QACzD,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,GAAG,MAAM,CAAC;IACrC,CAAC;IAED;;OAEG;IACH,MAAM;QACJ,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,IAAI;QACF,IAAI,OAAO,YAAY,KAAK,WAAW;YAAE,OAAO;QAChD,YAAY,CAAC,OAAO,CAAC,WAAW,EAAE,IAAI,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,CAAC;IACjE,CAAC;IAED;;;OAGG;IACH,IAAI;QACF,IAAI,OAAO,YAAY,KAAK,WAAW;YAAE,OAAO,EAAE,CAAC;QACnD,IAAI,CAAC;YACH,MAAM,GAAG,GAAG,YAAY,CAAC,OAAO,CAAC,WAAW,CAAC,CAAC;YAC9C,IAAI,GAAG,EAAE,CAAC;gBACR,IAAI,CAAC,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;YAChC,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,sBAAsB;QACxB,CAAC;QACD,OAAO,CAAC,GAAG,IAAI,CAAC,MAAM,CAAC,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,KAAK;QACH,IAAI,CAAC,MAAM,GAAG,EAAE,CAAC;QACjB,IAAI,OAAO,YAAY,KAAK,WAAW,EAAE,CAAC;YACxC,YAAY,CAAC,UAAU,CAAC,WAAW,CAAC,CAAC;QACvC,CAAC;IACH,CAAC;CACF"}
|
package/dist/tools.d.ts
CHANGED
|
@@ -8,6 +8,12 @@ export declare class T2VTools {
|
|
|
8
8
|
private handlers;
|
|
9
9
|
private schemas;
|
|
10
10
|
constructor(client: T2VClient);
|
|
11
|
+
/**
|
|
12
|
+
* Validate tool arguments against the registered schema.
|
|
13
|
+
* Returns an error message string, or null if valid.
|
|
14
|
+
*/
|
|
15
|
+
private validateArgs;
|
|
16
|
+
private checkType;
|
|
11
17
|
/**
|
|
12
18
|
* Register a handler for a specific tool name.
|
|
13
19
|
* When the agent calls this tool, the handler executes locally.
|
package/dist/tools.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEhG,qBAAa,QAAQ;IAIP,OAAO,CAAC,QAAQ,CAAC,MAAM;IAHnC,OAAO,CAAC,QAAQ,CAAuC;IACvD,OAAO,CAAC,OAAO,CAA0B;gBAEZ,MAAM,EAAE,SAAS;IAE9C;;;OAGG;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI;IAIpD;;;;;OAKG;IACG,QAAQ,CAAC,KAAK,EAAE,CAAC,gBAAgB,GAAG,UAAU,CAAC,EAAE,GAAG,OAAO,CAAC,qBAAqB,CAAC;IA2BxF;;;OAGG;IACG,eAAe,CACnB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;
|
|
1
|
+
{"version":3,"file":"tools.d.ts","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAC1C,OAAO,KAAK,EAAE,UAAU,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,WAAW,EAAE,MAAM,SAAS,CAAC;AAEhG,qBAAa,QAAQ;IAIP,OAAO,CAAC,QAAQ,CAAC,MAAM;IAHnC,OAAO,CAAC,QAAQ,CAAuC;IACvD,OAAO,CAAC,OAAO,CAA0B;gBAEZ,MAAM,EAAE,SAAS;IAE9C;;;OAGG;IACH,OAAO,CAAC,YAAY;IAkCpB,OAAO,CAAC,SAAS;IAkBjB;;;OAGG;IACH,MAAM,CAAC,QAAQ,EAAE,MAAM,EAAE,OAAO,EAAE,WAAW,GAAG,IAAI;IAIpD;;;;;OAKG;IACG,QAAQ,CAAC,KAAK,EAAE,CAAC,gBAAgB,GAAG,UAAU,CAAC,EAAE,GAAG,OAAO,CAAC,qBAAqB,CAAC;IA2BxF;;;OAGG;IACG,eAAe,CACnB,QAAQ,EAAE,MAAM,EAChB,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAC5B,OAAO,CAAC;QAAE,MAAM,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IA0ChD;;OAEG;IACH,UAAU,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO;IAIrC;;OAEG;IACH,aAAa,IAAI,gBAAgB,EAAE;CAGpC"}
|
package/dist/tools.js
CHANGED
|
@@ -8,6 +8,56 @@ export class T2VTools {
|
|
|
8
8
|
constructor(client) {
|
|
9
9
|
this.client = client;
|
|
10
10
|
}
|
|
11
|
+
/**
|
|
12
|
+
* Validate tool arguments against the registered schema.
|
|
13
|
+
* Returns an error message string, or null if valid.
|
|
14
|
+
*/
|
|
15
|
+
validateArgs(toolName, args) {
|
|
16
|
+
const schema = this.schemas.find((s) => s.name === toolName);
|
|
17
|
+
if (!schema)
|
|
18
|
+
return null; // no schema to validate against
|
|
19
|
+
const { properties, required } = schema.parameters;
|
|
20
|
+
// Check required fields
|
|
21
|
+
if (required) {
|
|
22
|
+
for (const field of required) {
|
|
23
|
+
if (!(field in args) || args[field] === undefined) {
|
|
24
|
+
return `Missing required argument: ${field}`;
|
|
25
|
+
}
|
|
26
|
+
}
|
|
27
|
+
}
|
|
28
|
+
// Type-check provided fields
|
|
29
|
+
for (const [key, value] of Object.entries(args)) {
|
|
30
|
+
const propSchema = properties[key];
|
|
31
|
+
if (!propSchema)
|
|
32
|
+
continue; // allow extra properties
|
|
33
|
+
const expectedType = propSchema.type;
|
|
34
|
+
if (expectedType && !this.checkType(value, expectedType)) {
|
|
35
|
+
return `Argument "${key}" expected type "${expectedType}", got ${typeof value}`;
|
|
36
|
+
}
|
|
37
|
+
// Enum constraint
|
|
38
|
+
if (propSchema.enum && !propSchema.enum.includes(String(value))) {
|
|
39
|
+
return `Argument "${key}" must be one of: ${propSchema.enum.join(', ')}`;
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
return null;
|
|
43
|
+
}
|
|
44
|
+
checkType(value, expectedType) {
|
|
45
|
+
switch (expectedType) {
|
|
46
|
+
case 'string':
|
|
47
|
+
return typeof value === 'string';
|
|
48
|
+
case 'number':
|
|
49
|
+
case 'integer':
|
|
50
|
+
return typeof value === 'number';
|
|
51
|
+
case 'boolean':
|
|
52
|
+
return typeof value === 'boolean';
|
|
53
|
+
case 'array':
|
|
54
|
+
return Array.isArray(value);
|
|
55
|
+
case 'object':
|
|
56
|
+
return typeof value === 'object' && value !== null && !Array.isArray(value);
|
|
57
|
+
default:
|
|
58
|
+
return true;
|
|
59
|
+
}
|
|
60
|
+
}
|
|
11
61
|
/**
|
|
12
62
|
* Register a handler for a specific tool name.
|
|
13
63
|
* When the agent calls this tool, the handler executes locally.
|
|
@@ -55,6 +105,13 @@ export class T2VTools {
|
|
|
55
105
|
isError: true,
|
|
56
106
|
};
|
|
57
107
|
}
|
|
108
|
+
const validationError = this.validateArgs(toolName, args);
|
|
109
|
+
if (validationError) {
|
|
110
|
+
return {
|
|
111
|
+
result: JSON.stringify({ error: validationError }),
|
|
112
|
+
isError: true,
|
|
113
|
+
};
|
|
114
|
+
}
|
|
58
115
|
try {
|
|
59
116
|
const raw = await handler(args);
|
|
60
117
|
const result = typeof raw === 'string' ? raw : JSON.stringify(raw) ?? '';
|
package/dist/tools.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"tools.js","sourceRoot":"","sources":["../src/tools.ts"],"names":[],"mappings":"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"}
|
package/dist/types.d.ts
CHANGED
|
@@ -4,6 +4,8 @@ export interface T2VConfig {
|
|
|
4
4
|
/** @deprecated Voice requests now route through baseUrl. This option will be removed in a future version. */
|
|
5
5
|
voiceApiUrl?: string;
|
|
6
6
|
model?: string;
|
|
7
|
+
/** Timeout in milliseconds for HTTP requests. Defaults to 30000 (30s). Does not apply to SSE streams after connection. */
|
|
8
|
+
requestTimeout?: number;
|
|
7
9
|
}
|
|
8
10
|
export interface LoginRequest {
|
|
9
11
|
email: string;
|
|
@@ -124,6 +126,15 @@ export interface RegisterToolsResponse {
|
|
|
124
126
|
registered: string[];
|
|
125
127
|
count: number;
|
|
126
128
|
}
|
|
129
|
+
export interface UserSkill {
|
|
130
|
+
name: string;
|
|
131
|
+
description: string;
|
|
132
|
+
content: string;
|
|
133
|
+
}
|
|
134
|
+
export interface RegisterSkillsResponse {
|
|
135
|
+
registered: string[];
|
|
136
|
+
count: number;
|
|
137
|
+
}
|
|
127
138
|
export interface Model {
|
|
128
139
|
id: string;
|
|
129
140
|
object: string;
|
|
@@ -148,6 +159,7 @@ export interface APIErrorBody {
|
|
|
148
159
|
error: {
|
|
149
160
|
type: string;
|
|
150
161
|
message: string;
|
|
162
|
+
code?: string;
|
|
151
163
|
};
|
|
152
164
|
}
|
|
153
165
|
//# sourceMappingURL=types.d.ts.map
|
package/dist/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6GAA6G;IAC7G,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,SAAS;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,6GAA6G;IAC7G,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,0HAA0H;IAC1H,cAAc,CAAC,EAAE,MAAM,CAAC;CACzB;AAID,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,MAAM,CAAC;IACd,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,IAAI;IACnB,EAAE,EAAE,MAAM,CAAC;IACX,KAAK,EAAE,MAAM,CAAC;IACd,aAAa,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACzC;AAED,MAAM,WAAW,aAAa;IAC5B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,IAAI,GAAG,IAAI,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,eAAe;IAC9B,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,UAAU,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;CACpB;AAID,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,QAAQ,GAAG,MAAM,GAAG,WAAW,GAAG,MAAM,CAAC;IAC/C,OAAO,EAAE,MAAM,CAAC;IAChB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,WAAW,EAAE,CAAC;IACxB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAID,MAAM,WAAW,wBAAwB;IACvC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,yBAAyB;IACxC,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,EAAE,wBAAwB,CAAC;IAChC,aAAa,EAAE,MAAM,GAAG,IAAI,CAAC;CAC9B;AAED,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,WAAW,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,mBAAmB;IAClC,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,yBAAyB,EAAE,CAAC;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,iBAAiB,CAAC;IAC9B,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAID,MAAM,MAAM,SAAS,GACjB;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACjC;IAAE,IAAI,EAAE,WAAW,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAC;IAAC,UAAU,EAAE,MAAM,CAAC;IAAC,SAAS,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;CAAE,GAC/F;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,QAAQ,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GAClC;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,GACnD;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC;AAIrC,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,gBAAgB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE;QACV,IAAI,EAAE,QAAQ,CAAC;QACf,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,mBAAmB,CAAC,CAAC;QAChD,QAAQ,CAAC,EAAE,MAAM,EAAE,CAAC;QACpB,oBAAoB,CAAC,EAAE,OAAO,CAAC;KAChC,CAAC;IACF,aAAa,CAAC,EAAE,OAAO,CAAC;CACzB;AAED,MAAM,MAAM,WAAW,GAAG,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;AAE7E,MAAM,WAAW,UAAW,SAAQ,gBAAgB;IAClD,OAAO,EAAE,WAAW,CAAC;CACtB;AAED,MAAM,WAAW,qBAAqB;IACpC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf;AAID,MAAM,WAAW,SAAS;IACxB,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,UAAU,EAAE,MAAM,EAAE,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;CACf;AAID,MAAM,WAAW,KAAK;IACpB,EAAE,EAAE,MAAM,CAAC;IACX,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,KAAK,EAAE,CAAC;CACf;AAID,MAAM,WAAW,qBAAqB;IACpC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,MAAM,MAAM,mBAAmB,GAAG,cAAc,CAAC;AAIjD,MAAM,WAAW,eAAe;IAC9B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,GAAG,QAAQ,GAAG,OAAO,CAAC;CACzC;AAID,MAAM,WAAW,YAAY;IAC3B,KAAK,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;QACb,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,CAAC,EAAE,MAAM,CAAC;KACf,CAAC;CACH"}
|