dominus-sdk-nodejs 1.2.18 → 1.2.19
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/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +10 -0
- package/dist/index.js.map +1 -1
- package/dist/namespaces/oracle/OracleSession.d.ts +91 -0
- package/dist/namespaces/oracle/OracleSession.d.ts.map +1 -0
- package/dist/namespaces/oracle/OracleSession.js +187 -0
- package/dist/namespaces/oracle/OracleSession.js.map +1 -0
- package/dist/namespaces/oracle/index.d.ts +78 -0
- package/dist/namespaces/oracle/index.d.ts.map +1 -0
- package/dist/namespaces/oracle/index.js +87 -0
- package/dist/namespaces/oracle/index.js.map +1 -0
- package/dist/namespaces/oracle/internal/AudioCapture.d.ts +42 -0
- package/dist/namespaces/oracle/internal/AudioCapture.d.ts.map +1 -0
- package/dist/namespaces/oracle/internal/AudioCapture.js +316 -0
- package/dist/namespaces/oracle/internal/AudioCapture.js.map +1 -0
- package/dist/namespaces/oracle/internal/OracleWebSocket.d.ts +81 -0
- package/dist/namespaces/oracle/internal/OracleWebSocket.d.ts.map +1 -0
- package/dist/namespaces/oracle/internal/OracleWebSocket.js +204 -0
- package/dist/namespaces/oracle/internal/OracleWebSocket.js.map +1 -0
- package/dist/namespaces/oracle/internal/VADGate.d.ts +75 -0
- package/dist/namespaces/oracle/internal/VADGate.d.ts.map +1 -0
- package/dist/namespaces/oracle/internal/VADGate.js +248 -0
- package/dist/namespaces/oracle/internal/VADGate.js.map +1 -0
- package/dist/namespaces/oracle/types.d.ts +98 -0
- package/dist/namespaces/oracle/types.d.ts.map +1 -0
- package/dist/namespaces/oracle/types.js +28 -0
- package/dist/namespaces/oracle/types.js.map +1 -0
- package/package.json +2 -1
package/dist/index.d.ts
CHANGED
|
@@ -55,6 +55,11 @@
|
|
|
55
55
|
* // Health
|
|
56
56
|
* const status = await dominus.health.check();
|
|
57
57
|
*
|
|
58
|
+
* // Oracle (streaming speech-to-text)
|
|
59
|
+
* const session = dominus.oracle.createSession(userJwt);
|
|
60
|
+
* session.onUtterance = (text) => sendToCurator(text);
|
|
61
|
+
* await session.start();
|
|
62
|
+
*
|
|
58
63
|
* // Crypto helpers
|
|
59
64
|
* import { hashPassword, hashPsk, generateToken } from 'dominus-sdk-nodejs';
|
|
60
65
|
* const hashed = hashPassword("secret");
|
|
@@ -74,6 +79,7 @@ import { CourierNamespace } from './namespaces/courier.js';
|
|
|
74
79
|
import { OpenNamespace } from './namespaces/open.js';
|
|
75
80
|
import { HealthNamespace } from './namespaces/health.js';
|
|
76
81
|
import { SecureNamespace } from './namespaces/secure.js';
|
|
82
|
+
import { OracleNamespace } from './namespaces/oracle/index.js';
|
|
77
83
|
export { DominusError, AuthenticationError, AuthorizationError, NotFoundError, ValidationError, ConflictError, ServiceError, ConnectionError, TimeoutError, SecureTableError, } from './lib/errors.js';
|
|
78
84
|
export { hashPassword, verifyPasswordLocal, hashPsk, verifyPskLocal, generatePskLocal, hashToken, generateToken, } from './lib/crypto.js';
|
|
79
85
|
export { CircuitBreaker, DominusCache, exponentialBackoffWithJitter, dominusCache, orchestratorCircuitBreaker, } from './lib/cache.js';
|
|
@@ -88,6 +94,8 @@ export type { Session, NavItem, NavigationResponse } from './namespaces/portal.j
|
|
|
88
94
|
export type { SendResult } from './namespaces/courier.js';
|
|
89
95
|
export type { HealthStatus } from './namespaces/health.js';
|
|
90
96
|
export type { SecureQueryOptions, SecureAccessContext } from './namespaces/secure.js';
|
|
97
|
+
export type { OracleSessionOptions, VADState } from './namespaces/oracle/index.js';
|
|
98
|
+
export { OracleSession } from './namespaces/oracle/index.js';
|
|
91
99
|
/**
|
|
92
100
|
* Main Dominus SDK class.
|
|
93
101
|
*
|
|
@@ -120,6 +128,8 @@ export declare class Dominus {
|
|
|
120
128
|
readonly open: OpenNamespace;
|
|
121
129
|
/** Health checks */
|
|
122
130
|
readonly health: HealthNamespace;
|
|
131
|
+
/** Streaming speech-to-text (Oracle) */
|
|
132
|
+
readonly oracle: OracleNamespace;
|
|
123
133
|
constructor();
|
|
124
134
|
/**
|
|
125
135
|
* Get a secret value (shortcut for dominus.secrets.get).
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
package/dist/index.js
CHANGED
|
@@ -55,6 +55,11 @@
|
|
|
55
55
|
* // Health
|
|
56
56
|
* const status = await dominus.health.check();
|
|
57
57
|
*
|
|
58
|
+
* // Oracle (streaming speech-to-text)
|
|
59
|
+
* const session = dominus.oracle.createSession(userJwt);
|
|
60
|
+
* session.onUtterance = (text) => sendToCurator(text);
|
|
61
|
+
* await session.start();
|
|
62
|
+
*
|
|
58
63
|
* // Crypto helpers
|
|
59
64
|
* import { hashPassword, hashPsk, generateToken } from 'dominus-sdk-nodejs';
|
|
60
65
|
* const hashed = hashPassword("secret");
|
|
@@ -75,6 +80,7 @@ import { CourierNamespace } from './namespaces/courier.js';
|
|
|
75
80
|
import { OpenNamespace } from './namespaces/open.js';
|
|
76
81
|
import { HealthNamespace } from './namespaces/health.js';
|
|
77
82
|
import { SecureNamespace } from './namespaces/secure.js';
|
|
83
|
+
import { OracleNamespace } from './namespaces/oracle/index.js';
|
|
78
84
|
// Initialize cache with token for encryption
|
|
79
85
|
import { dominusCache } from './lib/cache.js';
|
|
80
86
|
const token = process.env.DOMINUS_TOKEN;
|
|
@@ -87,6 +93,7 @@ export { DominusError, AuthenticationError, AuthorizationError, NotFoundError, V
|
|
|
87
93
|
export { hashPassword, verifyPasswordLocal, hashPsk, verifyPskLocal, generatePskLocal, hashToken, generateToken, } from './lib/crypto.js';
|
|
88
94
|
// Re-export cache utilities (internal but useful)
|
|
89
95
|
export { CircuitBreaker, DominusCache, exponentialBackoffWithJitter, dominusCache, orchestratorCircuitBreaker, } from './lib/cache.js';
|
|
96
|
+
export { OracleSession } from './namespaces/oracle/index.js';
|
|
90
97
|
/**
|
|
91
98
|
* Main Dominus SDK class.
|
|
92
99
|
*
|
|
@@ -119,6 +126,8 @@ export class Dominus {
|
|
|
119
126
|
open;
|
|
120
127
|
/** Health checks */
|
|
121
128
|
health;
|
|
129
|
+
/** Streaming speech-to-text (Oracle) */
|
|
130
|
+
oracle;
|
|
122
131
|
constructor() {
|
|
123
132
|
this._client = getClient();
|
|
124
133
|
// Initialize all namespaces
|
|
@@ -134,6 +143,7 @@ export class Dominus {
|
|
|
134
143
|
this.courier = new CourierNamespace(this._client);
|
|
135
144
|
this.open = new OpenNamespace(this._client);
|
|
136
145
|
this.health = new HealthNamespace(this._client);
|
|
146
|
+
this.oracle = new OracleNamespace(this._client);
|
|
137
147
|
}
|
|
138
148
|
// ========================================
|
|
139
149
|
// ROOT-LEVEL SHORTCUTS - SECRETS
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OracleSession - Main session class for streaming transcription.
|
|
3
|
+
*
|
|
4
|
+
* Provides the public API for Oracle streaming:
|
|
5
|
+
* - start() / stop() lifecycle
|
|
6
|
+
* - Event callbacks for transcripts, VAD state, errors
|
|
7
|
+
* - NO sendAudio() exposed - VAD gates all audio automatically
|
|
8
|
+
*
|
|
9
|
+
* The session handles everything internally:
|
|
10
|
+
* - Microphone access and audio capture
|
|
11
|
+
* - Resampling to 16kHz mono PCM
|
|
12
|
+
* - VAD gating (only sends speech, not silence)
|
|
13
|
+
* - WebSocket connection to Oracle
|
|
14
|
+
* - Ping/pong keepalive during IDLE
|
|
15
|
+
*/
|
|
16
|
+
import type { VADState, ResolvedOracleSessionOptions } from './types.js';
|
|
17
|
+
/**
|
|
18
|
+
* OracleSession - Real-time speech-to-text with VAD gating.
|
|
19
|
+
*
|
|
20
|
+
* Usage:
|
|
21
|
+
* ```typescript
|
|
22
|
+
* const session = dominus.oracle.createSession(userJwt);
|
|
23
|
+
*
|
|
24
|
+
* session.onReady = () => console.log('Ready');
|
|
25
|
+
* session.onInterim = (text) => setLiveText(text);
|
|
26
|
+
* session.onUtterance = (text) => sendToCurator(text);
|
|
27
|
+
* session.onVADStateChange = (state) => updateMicIcon(state);
|
|
28
|
+
*
|
|
29
|
+
* await session.start();
|
|
30
|
+
* // ... user speaks ...
|
|
31
|
+
* await session.stop();
|
|
32
|
+
* ```
|
|
33
|
+
*/
|
|
34
|
+
export declare class OracleSession {
|
|
35
|
+
private userToken;
|
|
36
|
+
private ws;
|
|
37
|
+
private vad;
|
|
38
|
+
private audio;
|
|
39
|
+
private _isActive;
|
|
40
|
+
private _vadState;
|
|
41
|
+
/** Called when session is ready to receive speech */
|
|
42
|
+
onReady: (() => void) | null;
|
|
43
|
+
/** Called with interim transcripts (may change) */
|
|
44
|
+
onInterim: ((text: string) => void) | null;
|
|
45
|
+
/** Called when a transcript segment is finalized */
|
|
46
|
+
onFinal: ((text: string) => void) | null;
|
|
47
|
+
/** Called when user finishes an utterance (trigger for Curator) */
|
|
48
|
+
onUtterance: ((text: string) => void) | null;
|
|
49
|
+
/** Called on any error */
|
|
50
|
+
onError: ((error: Error) => void) | null;
|
|
51
|
+
/** Called when session closes */
|
|
52
|
+
onClose: (() => void) | null;
|
|
53
|
+
/** Called when VAD state changes (for UI indicators) */
|
|
54
|
+
onVADStateChange: ((state: VADState) => void) | null;
|
|
55
|
+
constructor(baseUrl: string, userToken: string, options: ResolvedOracleSessionOptions);
|
|
56
|
+
/**
|
|
57
|
+
* Check if session is currently active.
|
|
58
|
+
*/
|
|
59
|
+
get isActive(): boolean;
|
|
60
|
+
/**
|
|
61
|
+
* Get current VAD state.
|
|
62
|
+
*/
|
|
63
|
+
get vadState(): VADState;
|
|
64
|
+
/**
|
|
65
|
+
* Start the transcription session.
|
|
66
|
+
*
|
|
67
|
+
* - Requests microphone permission
|
|
68
|
+
* - Connects WebSocket to Oracle
|
|
69
|
+
* - Begins VAD-gated audio streaming
|
|
70
|
+
*
|
|
71
|
+
* @throws Error if mic permission denied or connection fails
|
|
72
|
+
*/
|
|
73
|
+
start(): Promise<void>;
|
|
74
|
+
/**
|
|
75
|
+
* Stop the transcription session.
|
|
76
|
+
*
|
|
77
|
+
* - Stops microphone capture
|
|
78
|
+
* - Closes WebSocket connection
|
|
79
|
+
* - Cleans up resources
|
|
80
|
+
*/
|
|
81
|
+
stop(): Promise<void>;
|
|
82
|
+
/**
|
|
83
|
+
* Clean up all resources.
|
|
84
|
+
*/
|
|
85
|
+
private cleanup;
|
|
86
|
+
/**
|
|
87
|
+
* Dispose of all resources (for cleanup on unmount).
|
|
88
|
+
*/
|
|
89
|
+
dispose(): void;
|
|
90
|
+
}
|
|
91
|
+
//# sourceMappingURL=OracleSession.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OracleSession.d.ts","sourceRoot":"","sources":["../../../src/namespaces/oracle/OracleSession.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAKH,OAAO,KAAK,EACV,QAAQ,EACR,4BAA4B,EAC7B,MAAM,YAAY,CAAC;AAEpB;;;;;;;;;;;;;;;;GAgBG;AACH,qBAAa,aAAa;IAgCtB,OAAO,CAAC,SAAS;IA/BnB,OAAO,CAAC,EAAE,CAAkB;IAC5B,OAAO,CAAC,GAAG,CAAU;IACrB,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAoB;IAIrC,qDAAqD;IAC9C,OAAO,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAQ;IAE3C,mDAAmD;IAC5C,SAAS,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,IAAI,CAAQ;IAEzD,oDAAoD;IAC7C,OAAO,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,IAAI,CAAQ;IAEvD,mEAAmE;IAC5D,WAAW,EAAE,CAAC,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC,GAAG,IAAI,CAAQ;IAE3D,0BAA0B;IACnB,OAAO,EAAE,CAAC,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC,GAAG,IAAI,CAAQ;IAEvD,iCAAiC;IAC1B,OAAO,EAAE,CAAC,MAAM,IAAI,CAAC,GAAG,IAAI,CAAQ;IAE3C,wDAAwD;IACjD,gBAAgB,EAAE,CAAC,CAAC,KAAK,EAAE,QAAQ,KAAK,IAAI,CAAC,GAAG,IAAI,CAAQ;gBAGjE,OAAO,EAAE,MAAM,EACP,SAAS,EAAE,MAAM,EACzB,OAAO,EAAE,4BAA4B;IAcvC;;OAEG;IACH,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED;;OAEG;IACH,IAAI,QAAQ,IAAI,QAAQ,CAEvB;IAID;;;;;;;;OAQG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IA4D5B;;;;;;OAMG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAY3B;;OAEG;YACW,OAAO;IAYrB;;OAEG;IACH,OAAO,IAAI,IAAI;CAgBhB"}
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OracleSession - Main session class for streaming transcription.
|
|
3
|
+
*
|
|
4
|
+
* Provides the public API for Oracle streaming:
|
|
5
|
+
* - start() / stop() lifecycle
|
|
6
|
+
* - Event callbacks for transcripts, VAD state, errors
|
|
7
|
+
* - NO sendAudio() exposed - VAD gates all audio automatically
|
|
8
|
+
*
|
|
9
|
+
* The session handles everything internally:
|
|
10
|
+
* - Microphone access and audio capture
|
|
11
|
+
* - Resampling to 16kHz mono PCM
|
|
12
|
+
* - VAD gating (only sends speech, not silence)
|
|
13
|
+
* - WebSocket connection to Oracle
|
|
14
|
+
* - Ping/pong keepalive during IDLE
|
|
15
|
+
*/
|
|
16
|
+
import { OracleWebSocket } from './internal/OracleWebSocket.js';
|
|
17
|
+
import { VADGate } from './internal/VADGate.js';
|
|
18
|
+
import { AudioCapture } from './internal/AudioCapture.js';
|
|
19
|
+
/**
|
|
20
|
+
* OracleSession - Real-time speech-to-text with VAD gating.
|
|
21
|
+
*
|
|
22
|
+
* Usage:
|
|
23
|
+
* ```typescript
|
|
24
|
+
* const session = dominus.oracle.createSession(userJwt);
|
|
25
|
+
*
|
|
26
|
+
* session.onReady = () => console.log('Ready');
|
|
27
|
+
* session.onInterim = (text) => setLiveText(text);
|
|
28
|
+
* session.onUtterance = (text) => sendToCurator(text);
|
|
29
|
+
* session.onVADStateChange = (state) => updateMicIcon(state);
|
|
30
|
+
*
|
|
31
|
+
* await session.start();
|
|
32
|
+
* // ... user speaks ...
|
|
33
|
+
* await session.stop();
|
|
34
|
+
* ```
|
|
35
|
+
*/
|
|
36
|
+
export class OracleSession {
|
|
37
|
+
userToken;
|
|
38
|
+
ws;
|
|
39
|
+
vad;
|
|
40
|
+
audio;
|
|
41
|
+
_isActive = false;
|
|
42
|
+
_vadState = 'idle';
|
|
43
|
+
// ========== EVENT CALLBACKS ==========
|
|
44
|
+
/** Called when session is ready to receive speech */
|
|
45
|
+
onReady = null;
|
|
46
|
+
/** Called with interim transcripts (may change) */
|
|
47
|
+
onInterim = null;
|
|
48
|
+
/** Called when a transcript segment is finalized */
|
|
49
|
+
onFinal = null;
|
|
50
|
+
/** Called when user finishes an utterance (trigger for Curator) */
|
|
51
|
+
onUtterance = null;
|
|
52
|
+
/** Called on any error */
|
|
53
|
+
onError = null;
|
|
54
|
+
/** Called when session closes */
|
|
55
|
+
onClose = null;
|
|
56
|
+
/** Called when VAD state changes (for UI indicators) */
|
|
57
|
+
onVADStateChange = null;
|
|
58
|
+
constructor(baseUrl, userToken, options) {
|
|
59
|
+
this.userToken = userToken;
|
|
60
|
+
// Initialize internal components
|
|
61
|
+
this.ws = new OracleWebSocket(baseUrl, {
|
|
62
|
+
pingIntervalMs: options.pingIntervalMs,
|
|
63
|
+
});
|
|
64
|
+
this.vad = new VADGate(options);
|
|
65
|
+
this.audio = new AudioCapture();
|
|
66
|
+
}
|
|
67
|
+
// ========== PUBLIC GETTERS ==========
|
|
68
|
+
/**
|
|
69
|
+
* Check if session is currently active.
|
|
70
|
+
*/
|
|
71
|
+
get isActive() {
|
|
72
|
+
return this._isActive;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Get current VAD state.
|
|
76
|
+
*/
|
|
77
|
+
get vadState() {
|
|
78
|
+
return this._vadState;
|
|
79
|
+
}
|
|
80
|
+
// ========== LIFECYCLE METHODS ==========
|
|
81
|
+
/**
|
|
82
|
+
* Start the transcription session.
|
|
83
|
+
*
|
|
84
|
+
* - Requests microphone permission
|
|
85
|
+
* - Connects WebSocket to Oracle
|
|
86
|
+
* - Begins VAD-gated audio streaming
|
|
87
|
+
*
|
|
88
|
+
* @throws Error if mic permission denied or connection fails
|
|
89
|
+
*/
|
|
90
|
+
async start() {
|
|
91
|
+
if (this._isActive) {
|
|
92
|
+
return;
|
|
93
|
+
}
|
|
94
|
+
try {
|
|
95
|
+
// 1. Initialize VAD
|
|
96
|
+
await this.vad.initialize();
|
|
97
|
+
// 2. Connect WebSocket with first-message auth
|
|
98
|
+
await this.ws.connect(this.userToken);
|
|
99
|
+
// 3. Wire up transcript events
|
|
100
|
+
this.ws.onTranscript = (text, isFinal, speechFinal) => {
|
|
101
|
+
if (!isFinal) {
|
|
102
|
+
this.onInterim?.(text);
|
|
103
|
+
}
|
|
104
|
+
else {
|
|
105
|
+
this.onFinal?.(text);
|
|
106
|
+
}
|
|
107
|
+
if (speechFinal) {
|
|
108
|
+
this.onUtterance?.(text);
|
|
109
|
+
}
|
|
110
|
+
};
|
|
111
|
+
this.ws.onError = (error) => {
|
|
112
|
+
this.onError?.(error);
|
|
113
|
+
};
|
|
114
|
+
this.ws.onClose = () => {
|
|
115
|
+
this._isActive = false;
|
|
116
|
+
this.onClose?.();
|
|
117
|
+
};
|
|
118
|
+
// 4. Start audio capture
|
|
119
|
+
await this.audio.start();
|
|
120
|
+
// 5. Wire audio through VAD gate
|
|
121
|
+
this.audio.onFrame = (pcmFrame) => {
|
|
122
|
+
this.vad.processFrame(pcmFrame);
|
|
123
|
+
};
|
|
124
|
+
// 6. VAD gate controls what gets sent
|
|
125
|
+
this.vad.onSendAudio = (frames) => {
|
|
126
|
+
frames.forEach((frame) => this.ws.sendBinary(frame));
|
|
127
|
+
};
|
|
128
|
+
this.vad.onStateChange = (state) => {
|
|
129
|
+
this._vadState = state;
|
|
130
|
+
this.onVADStateChange?.(state);
|
|
131
|
+
};
|
|
132
|
+
this._isActive = true;
|
|
133
|
+
this.onReady?.();
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
// Clean up on failure
|
|
137
|
+
await this.cleanup();
|
|
138
|
+
throw error;
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
/**
|
|
142
|
+
* Stop the transcription session.
|
|
143
|
+
*
|
|
144
|
+
* - Stops microphone capture
|
|
145
|
+
* - Closes WebSocket connection
|
|
146
|
+
* - Cleans up resources
|
|
147
|
+
*/
|
|
148
|
+
async stop() {
|
|
149
|
+
if (!this._isActive) {
|
|
150
|
+
return;
|
|
151
|
+
}
|
|
152
|
+
this._isActive = false;
|
|
153
|
+
await this.cleanup();
|
|
154
|
+
this.onClose?.();
|
|
155
|
+
}
|
|
156
|
+
// ========== PRIVATE METHODS ==========
|
|
157
|
+
/**
|
|
158
|
+
* Clean up all resources.
|
|
159
|
+
*/
|
|
160
|
+
async cleanup() {
|
|
161
|
+
// Stop audio capture
|
|
162
|
+
await this.audio.stop();
|
|
163
|
+
// Close WebSocket
|
|
164
|
+
await this.ws.close();
|
|
165
|
+
// Reset VAD state
|
|
166
|
+
this.vad.reset();
|
|
167
|
+
this._vadState = 'idle';
|
|
168
|
+
}
|
|
169
|
+
/**
|
|
170
|
+
* Dispose of all resources (for cleanup on unmount).
|
|
171
|
+
*/
|
|
172
|
+
dispose() {
|
|
173
|
+
this.stop().catch(() => { });
|
|
174
|
+
// Clear all callbacks
|
|
175
|
+
this.onReady = null;
|
|
176
|
+
this.onInterim = null;
|
|
177
|
+
this.onFinal = null;
|
|
178
|
+
this.onUtterance = null;
|
|
179
|
+
this.onError = null;
|
|
180
|
+
this.onClose = null;
|
|
181
|
+
this.onVADStateChange = null;
|
|
182
|
+
// Dispose internal components
|
|
183
|
+
this.audio.dispose();
|
|
184
|
+
this.vad.dispose();
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
//# sourceMappingURL=OracleSession.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OracleSession.js","sourceRoot":"","sources":["../../../src/namespaces/oracle/OracleSession.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;GAcG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,+BAA+B,CAAC;AAChE,OAAO,EAAE,OAAO,EAAE,MAAM,uBAAuB,CAAC;AAChD,OAAO,EAAE,YAAY,EAAE,MAAM,4BAA4B,CAAC;AAM1D;;;;;;;;;;;;;;;;GAgBG;AACH,MAAM,OAAO,aAAa;IAgCd;IA/BF,EAAE,CAAkB;IACpB,GAAG,CAAU;IACb,KAAK,CAAe;IACpB,SAAS,GAAG,KAAK,CAAC;IAClB,SAAS,GAAa,MAAM,CAAC;IAErC,wCAAwC;IAExC,qDAAqD;IAC9C,OAAO,GAAwB,IAAI,CAAC;IAE3C,mDAAmD;IAC5C,SAAS,GAAoC,IAAI,CAAC;IAEzD,oDAAoD;IAC7C,OAAO,GAAoC,IAAI,CAAC;IAEvD,mEAAmE;IAC5D,WAAW,GAAoC,IAAI,CAAC;IAE3D,0BAA0B;IACnB,OAAO,GAAoC,IAAI,CAAC;IAEvD,iCAAiC;IAC1B,OAAO,GAAwB,IAAI,CAAC;IAE3C,wDAAwD;IACjD,gBAAgB,GAAuC,IAAI,CAAC;IAEnE,YACE,OAAe,EACP,SAAiB,EACzB,OAAqC;QAD7B,cAAS,GAAT,SAAS,CAAQ;QAGzB,iCAAiC;QACjC,IAAI,CAAC,EAAE,GAAG,IAAI,eAAe,CAAC,OAAO,EAAE;YACrC,cAAc,EAAE,OAAO,CAAC,cAAc;SACvC,CAAC,CAAC;QAEH,IAAI,CAAC,GAAG,GAAG,IAAI,OAAO,CAAC,OAAO,CAAC,CAAC;QAEhC,IAAI,CAAC,KAAK,GAAG,IAAI,YAAY,EAAE,CAAC;IAClC,CAAC;IAED,uCAAuC;IAEvC;;OAEG;IACH,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED;;OAEG;IACH,IAAI,QAAQ;QACV,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,0CAA0C;IAE1C;;;;;;;;OAQG;IACH,KAAK,CAAC,KAAK;QACT,IAAI,IAAI,CAAC,SAAS,EAAE,CAAC;YACnB,OAAO;QACT,CAAC;QAED,IAAI,CAAC;YACH,oBAAoB;YACpB,MAAM,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,CAAC;YAE5B,+CAA+C;YAC/C,MAAM,IAAI,CAAC,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,SAAS,CAAC,CAAC;YAEtC,+BAA+B;YAC/B,IAAI,CAAC,EAAE,CAAC,YAAY,GAAG,CAAC,IAAY,EAAE,OAAgB,EAAE,WAAoB,EAAE,EAAE;gBAC9E,IAAI,CAAC,OAAO,EAAE,CAAC;oBACb,IAAI,CAAC,SAAS,EAAE,CAAC,IAAI,CAAC,CAAC;gBACzB,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,OAAO,EAAE,CAAC,IAAI,CAAC,CAAC;gBACvB,CAAC;gBACD,IAAI,WAAW,EAAE,CAAC;oBAChB,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,CAAC,CAAC;gBAC3B,CAAC;YACH,CAAC,CAAC;YAEF,IAAI,CAAC,EAAE,CAAC,OAAO,GAAG,CAAC,KAAY,EAAE,EAAE;gBACjC,IAAI,CAAC,OAAO,EAAE,CAAC,KAAK,CAAC,CAAC;YACxB,CAAC,CAAC;YAEF,IAAI,CAAC,EAAE,CAAC,OAAO,GAAG,GAAG,EAAE;gBACrB,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;gBACvB,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;YACnB,CAAC,CAAC;YAEF,yBAAyB;YACzB,MAAM,IAAI,CAAC,KAAK,CAAC,KAAK,EAAE,CAAC;YAEzB,iCAAiC;YACjC,IAAI,CAAC,KAAK,CAAC,OAAO,GAAG,CAAC,QAAqB,EAAE,EAAE;gBAC7C,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;YAClC,CAAC,CAAC;YAEF,sCAAsC;YACtC,IAAI,CAAC,GAAG,CAAC,WAAW,GAAG,CAAC,MAAqB,EAAE,EAAE;gBAC/C,MAAM,CAAC,OAAO,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,IAAI,CAAC,EAAE,CAAC,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC;YACvD,CAAC,CAAC;YAEF,IAAI,CAAC,GAAG,CAAC,aAAa,GAAG,CAAC,KAAe,EAAE,EAAE;gBAC3C,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;gBACvB,IAAI,CAAC,gBAAgB,EAAE,CAAC,KAAK,CAAC,CAAC;YACjC,CAAC,CAAC;YAEF,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;YACtB,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;QACnB,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,sBAAsB;YACtB,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;YACrB,MAAM,KAAK,CAAC;QACd,CAAC;IACH,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,IAAI;QACR,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,OAAO;QACT,CAAC;QAED,IAAI,CAAC,SAAS,GAAG,KAAK,CAAC;QACvB,MAAM,IAAI,CAAC,OAAO,EAAE,CAAC;QACrB,IAAI,CAAC,OAAO,EAAE,EAAE,CAAC;IACnB,CAAC;IAED,wCAAwC;IAExC;;OAEG;IACK,KAAK,CAAC,OAAO;QACnB,qBAAqB;QACrB,MAAM,IAAI,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC;QAExB,kBAAkB;QAClB,MAAM,IAAI,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;QAEtB,kBAAkB;QAClB,IAAI,CAAC,GAAG,CAAC,KAAK,EAAE,CAAC;QACjB,IAAI,CAAC,SAAS,GAAG,MAAM,CAAC;IAC1B,CAAC;IAED;;OAEG;IACH,OAAO;QACL,IAAI,CAAC,IAAI,EAAE,CAAC,KAAK,CAAC,GAAG,EAAE,GAAE,CAAC,CAAC,CAAC;QAE5B,sBAAsB;QACtB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC;QACtB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QACxB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,OAAO,GAAG,IAAI,CAAC;QACpB,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAE7B,8BAA8B;QAC9B,IAAI,CAAC,KAAK,CAAC,OAAO,EAAE,CAAC;QACrB,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,CAAC;IACrB,CAAC;CACF"}
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Oracle Namespace - Real-time streaming speech-to-text.
|
|
3
|
+
*
|
|
4
|
+
* Oracle provides WebSocket-based streaming transcription via Deepgram,
|
|
5
|
+
* with built-in VAD (Voice Activity Detection) for cost optimization.
|
|
6
|
+
*
|
|
7
|
+
* Key features:
|
|
8
|
+
* - Automatic microphone capture and 16kHz resampling
|
|
9
|
+
* - VAD gating: only sends audio when speech is detected
|
|
10
|
+
* - 4-state VAD machine: IDLE → ARMED → SPEAKING → TRAILING
|
|
11
|
+
* - Pre-roll buffer captures word onsets
|
|
12
|
+
* - Ping/pong keepalive during IDLE
|
|
13
|
+
* - NO sendAudio() exposed - VAD handles everything
|
|
14
|
+
*
|
|
15
|
+
* Usage:
|
|
16
|
+
* ```typescript
|
|
17
|
+
* const session = dominus.oracle.createSession(userJwt);
|
|
18
|
+
*
|
|
19
|
+
* session.onReady = () => setListening(true);
|
|
20
|
+
* session.onInterim = (text) => setLiveTranscript(text);
|
|
21
|
+
* session.onUtterance = (text) => sendToCurator(text);
|
|
22
|
+
* session.onVADStateChange = (state) => setMicState(state);
|
|
23
|
+
* session.onError = (error) => showError(error);
|
|
24
|
+
*
|
|
25
|
+
* await session.start();
|
|
26
|
+
* // ... user speaks, transcripts flow back ...
|
|
27
|
+
* await session.stop();
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
import type { DominusClient } from '../../lib/client.js';
|
|
31
|
+
import { OracleSession } from './OracleSession.js';
|
|
32
|
+
import { type OracleSessionOptions } from './types.js';
|
|
33
|
+
export type { OracleSessionOptions, VADState } from './types.js';
|
|
34
|
+
export { OracleSession } from './OracleSession.js';
|
|
35
|
+
/**
|
|
36
|
+
* OracleNamespace - Factory for creating streaming transcription sessions.
|
|
37
|
+
*
|
|
38
|
+
* The Oracle namespace provides a simple API for real-time speech-to-text:
|
|
39
|
+
* - createSession() creates a new transcription session
|
|
40
|
+
* - Sessions handle mic capture, VAD, WebSocket, and transcripts internally
|
|
41
|
+
* - NO raw audio access - VAD is mandatory for cost control
|
|
42
|
+
*/
|
|
43
|
+
export declare class OracleNamespace {
|
|
44
|
+
private baseUrl;
|
|
45
|
+
constructor(_client: DominusClient);
|
|
46
|
+
/**
|
|
47
|
+
* Create a streaming transcription session.
|
|
48
|
+
*
|
|
49
|
+
* The session handles everything internally:
|
|
50
|
+
* - Microphone access and audio capture
|
|
51
|
+
* - Resampling to 16kHz mono PCM
|
|
52
|
+
* - VAD gating (only sends speech, not silence)
|
|
53
|
+
* - WebSocket connection to Oracle
|
|
54
|
+
* - Reconnection on connection loss
|
|
55
|
+
*
|
|
56
|
+
* @param userToken - User JWT from portal.login()
|
|
57
|
+
* @param options - Optional configuration overrides
|
|
58
|
+
* @returns OracleSession ready to start()
|
|
59
|
+
*
|
|
60
|
+
* @example
|
|
61
|
+
* ```typescript
|
|
62
|
+
* const session = dominus.oracle.createSession(userJwt, {
|
|
63
|
+
* prerollMs: 320, // Capture 320ms before speech
|
|
64
|
+
* postrollMs: 400, // Continue 400ms after speech
|
|
65
|
+
* armedConfirmMs: 80, // Require 80ms to confirm speech
|
|
66
|
+
* });
|
|
67
|
+
*
|
|
68
|
+
* session.onUtterance = (text) => {
|
|
69
|
+
* // Called when user finishes speaking
|
|
70
|
+
* await sendToCurator(text);
|
|
71
|
+
* };
|
|
72
|
+
*
|
|
73
|
+
* await session.start();
|
|
74
|
+
* ```
|
|
75
|
+
*/
|
|
76
|
+
createSession(userToken: string, options?: OracleSessionOptions): OracleSession;
|
|
77
|
+
}
|
|
78
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/namespaces/oracle/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAC;AAEzD,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EAEL,KAAK,oBAAoB,EAE1B,MAAM,YAAY,CAAC;AAGpB,YAAY,EAAE,oBAAoB,EAAE,QAAQ,EAAE,MAAM,YAAY,CAAC;AACjE,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD;;;;;;;GAOG;AACH,qBAAa,eAAe;IAC1B,OAAO,CAAC,OAAO,CAAS;gBAGZ,OAAO,EAAE,aAAa;IAIlC;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,aAAa,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,oBAAoB,GAAG,aAAa;CAShF"}
|
|
@@ -0,0 +1,87 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Oracle Namespace - Real-time streaming speech-to-text.
|
|
3
|
+
*
|
|
4
|
+
* Oracle provides WebSocket-based streaming transcription via Deepgram,
|
|
5
|
+
* with built-in VAD (Voice Activity Detection) for cost optimization.
|
|
6
|
+
*
|
|
7
|
+
* Key features:
|
|
8
|
+
* - Automatic microphone capture and 16kHz resampling
|
|
9
|
+
* - VAD gating: only sends audio when speech is detected
|
|
10
|
+
* - 4-state VAD machine: IDLE → ARMED → SPEAKING → TRAILING
|
|
11
|
+
* - Pre-roll buffer captures word onsets
|
|
12
|
+
* - Ping/pong keepalive during IDLE
|
|
13
|
+
* - NO sendAudio() exposed - VAD handles everything
|
|
14
|
+
*
|
|
15
|
+
* Usage:
|
|
16
|
+
* ```typescript
|
|
17
|
+
* const session = dominus.oracle.createSession(userJwt);
|
|
18
|
+
*
|
|
19
|
+
* session.onReady = () => setListening(true);
|
|
20
|
+
* session.onInterim = (text) => setLiveTranscript(text);
|
|
21
|
+
* session.onUtterance = (text) => sendToCurator(text);
|
|
22
|
+
* session.onVADStateChange = (state) => setMicState(state);
|
|
23
|
+
* session.onError = (error) => showError(error);
|
|
24
|
+
*
|
|
25
|
+
* await session.start();
|
|
26
|
+
* // ... user speaks, transcripts flow back ...
|
|
27
|
+
* await session.stop();
|
|
28
|
+
* ```
|
|
29
|
+
*/
|
|
30
|
+
import { BASE_URL } from '../../lib/config.js';
|
|
31
|
+
import { OracleSession } from './OracleSession.js';
|
|
32
|
+
import { DEFAULT_OPTIONS, } from './types.js';
|
|
33
|
+
export { OracleSession } from './OracleSession.js';
|
|
34
|
+
/**
|
|
35
|
+
* OracleNamespace - Factory for creating streaming transcription sessions.
|
|
36
|
+
*
|
|
37
|
+
* The Oracle namespace provides a simple API for real-time speech-to-text:
|
|
38
|
+
* - createSession() creates a new transcription session
|
|
39
|
+
* - Sessions handle mic capture, VAD, WebSocket, and transcripts internally
|
|
40
|
+
* - NO raw audio access - VAD is mandatory for cost control
|
|
41
|
+
*/
|
|
42
|
+
export class OracleNamespace {
|
|
43
|
+
baseUrl;
|
|
44
|
+
// eslint-disable-next-line @typescript-eslint/no-unused-vars
|
|
45
|
+
constructor(_client) {
|
|
46
|
+
this.baseUrl = BASE_URL;
|
|
47
|
+
}
|
|
48
|
+
/**
|
|
49
|
+
* Create a streaming transcription session.
|
|
50
|
+
*
|
|
51
|
+
* The session handles everything internally:
|
|
52
|
+
* - Microphone access and audio capture
|
|
53
|
+
* - Resampling to 16kHz mono PCM
|
|
54
|
+
* - VAD gating (only sends speech, not silence)
|
|
55
|
+
* - WebSocket connection to Oracle
|
|
56
|
+
* - Reconnection on connection loss
|
|
57
|
+
*
|
|
58
|
+
* @param userToken - User JWT from portal.login()
|
|
59
|
+
* @param options - Optional configuration overrides
|
|
60
|
+
* @returns OracleSession ready to start()
|
|
61
|
+
*
|
|
62
|
+
* @example
|
|
63
|
+
* ```typescript
|
|
64
|
+
* const session = dominus.oracle.createSession(userJwt, {
|
|
65
|
+
* prerollMs: 320, // Capture 320ms before speech
|
|
66
|
+
* postrollMs: 400, // Continue 400ms after speech
|
|
67
|
+
* armedConfirmMs: 80, // Require 80ms to confirm speech
|
|
68
|
+
* });
|
|
69
|
+
*
|
|
70
|
+
* session.onUtterance = (text) => {
|
|
71
|
+
* // Called when user finishes speaking
|
|
72
|
+
* await sendToCurator(text);
|
|
73
|
+
* };
|
|
74
|
+
*
|
|
75
|
+
* await session.start();
|
|
76
|
+
* ```
|
|
77
|
+
*/
|
|
78
|
+
createSession(userToken, options) {
|
|
79
|
+
// Merge options with defaults
|
|
80
|
+
const resolvedOptions = {
|
|
81
|
+
...DEFAULT_OPTIONS,
|
|
82
|
+
...options,
|
|
83
|
+
};
|
|
84
|
+
return new OracleSession(this.baseUrl, userToken, resolvedOptions);
|
|
85
|
+
}
|
|
86
|
+
}
|
|
87
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/namespaces/oracle/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAGH,OAAO,EAAE,QAAQ,EAAE,MAAM,qBAAqB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AACnD,OAAO,EACL,eAAe,GAGhB,MAAM,YAAY,CAAC;AAIpB,OAAO,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAEnD;;;;;;;GAOG;AACH,MAAM,OAAO,eAAe;IAClB,OAAO,CAAS;IAExB,6DAA6D;IAC7D,YAAY,OAAsB;QAChC,IAAI,CAAC,OAAO,GAAG,QAAQ,CAAC;IAC1B,CAAC;IAED;;;;;;;;;;;;;;;;;;;;;;;;;;;;;OA6BG;IACH,aAAa,CAAC,SAAiB,EAAE,OAA8B;QAC7D,8BAA8B;QAC9B,MAAM,eAAe,GAAiC;YACpD,GAAG,eAAe;YAClB,GAAG,OAAO;SACX,CAAC;QAEF,OAAO,IAAI,aAAa,CAAC,IAAI,CAAC,OAAO,EAAE,SAAS,EAAE,eAAe,CAAC,CAAC;IACrE,CAAC;CACF"}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* AudioCapture - Microphone capture and resampling (INTERNAL)
|
|
3
|
+
*
|
|
4
|
+
* Handles:
|
|
5
|
+
* - getUserMedia microphone access
|
|
6
|
+
* - AudioWorklet for low-latency processing
|
|
7
|
+
* - Resampling to 16kHz mono if needed
|
|
8
|
+
* - Output 20ms frames (640 bytes PCM16)
|
|
9
|
+
*
|
|
10
|
+
* This module is INTERNAL and should NOT be exported publicly.
|
|
11
|
+
*/
|
|
12
|
+
/**
|
|
13
|
+
* AudioCapture - Main class for microphone capture.
|
|
14
|
+
*
|
|
15
|
+
* Automatically uses AudioWorklet if available, falls back to ScriptProcessor.
|
|
16
|
+
* Outputs 20ms frames (640 bytes PCM16) at 16kHz mono.
|
|
17
|
+
*/
|
|
18
|
+
export declare class AudioCapture {
|
|
19
|
+
private capture;
|
|
20
|
+
private _isCapturing;
|
|
21
|
+
/** Callback for each audio frame */
|
|
22
|
+
onFrame: ((pcmFrame: ArrayBuffer) => void) | null;
|
|
23
|
+
/**
|
|
24
|
+
* Check if currently capturing audio.
|
|
25
|
+
*/
|
|
26
|
+
get isCapturing(): boolean;
|
|
27
|
+
/**
|
|
28
|
+
* Start audio capture from microphone.
|
|
29
|
+
*
|
|
30
|
+
* @throws Error if microphone permission denied or capture fails
|
|
31
|
+
*/
|
|
32
|
+
start(): Promise<void>;
|
|
33
|
+
/**
|
|
34
|
+
* Stop audio capture.
|
|
35
|
+
*/
|
|
36
|
+
stop(): Promise<void>;
|
|
37
|
+
/**
|
|
38
|
+
* Clean up resources.
|
|
39
|
+
*/
|
|
40
|
+
dispose(): void;
|
|
41
|
+
}
|
|
42
|
+
//# sourceMappingURL=AudioCapture.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"AudioCapture.d.ts","sourceRoot":"","sources":["../../../../src/namespaces/oracle/internal/AudioCapture.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AAiRH;;;;;GAKG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,OAAO,CAAwD;IACvE,OAAO,CAAC,YAAY,CAAS;IAE7B,oCAAoC;IAC7B,OAAO,EAAE,CAAC,CAAC,QAAQ,EAAE,WAAW,KAAK,IAAI,CAAC,GAAG,IAAI,CAAQ;IAEhE;;OAEG;IACH,IAAI,WAAW,IAAI,OAAO,CAEzB;IAED;;;;OAIG;IACG,KAAK,IAAI,OAAO,CAAC,IAAI,CAAC;IAqC5B;;OAEG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAU3B;;OAEG;IACH,OAAO,IAAI,IAAI;CAIhB"}
|