dominus-sdk-nodejs-dev 1.2.18 → 1.2.44
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 +15 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +14 -0
- package/dist/index.js.map +1 -1
- package/dist/lib/client.d.ts +2 -0
- package/dist/lib/client.d.ts.map +1 -1
- package/dist/lib/client.js +14 -7
- package/dist/lib/client.js.map +1 -1
- package/dist/namespaces/admin.d.ts +54 -0
- package/dist/namespaces/admin.d.ts.map +1 -0
- package/dist/namespaces/admin.js +60 -0
- package/dist/namespaces/admin.js.map +1 -0
- package/dist/namespaces/auth.d.ts +6 -0
- package/dist/namespaces/auth.d.ts.map +1 -1
- package/dist/namespaces/auth.js +25 -5
- package/dist/namespaces/auth.js.map +1 -1
- package/dist/namespaces/db.d.ts +9 -0
- package/dist/namespaces/db.d.ts.map +1 -1
- package/dist/namespaces/db.js +23 -1
- package/dist/namespaces/db.js.map +1 -1
- package/dist/namespaces/ddl.d.ts +193 -0
- package/dist/namespaces/ddl.d.ts.map +1 -1
- package/dist/namespaces/ddl.js +135 -0
- package/dist/namespaces/ddl.js.map +1 -1
- package/dist/namespaces/files.d.ts +153 -0
- package/dist/namespaces/files.d.ts.map +1 -1
- package/dist/namespaces/files.js +125 -0
- package/dist/namespaces/files.js.map +1 -1
- package/dist/namespaces/oracle/OracleSession.d.ts +92 -0
- package/dist/namespaces/oracle/OracleSession.d.ts.map +1 -0
- package/dist/namespaces/oracle/OracleSession.js +219 -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 +209 -0
- package/dist/namespaces/oracle/internal/OracleWebSocket.js.map +1 -0
- package/dist/namespaces/oracle/internal/VADGate.d.ts +76 -0
- package/dist/namespaces/oracle/internal/VADGate.d.ts.map +1 -0
- package/dist/namespaces/oracle/internal/VADGate.js +260 -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/dist/namespaces/portal.d.ts +1 -0
- package/dist/namespaces/portal.d.ts.map +1 -1
- package/dist/namespaces/portal.js +2 -0
- package/dist/namespaces/portal.js.map +1 -1
- package/package.json +2 -1
|
@@ -31,6 +31,81 @@ export interface FileInfo {
|
|
|
31
31
|
path?: string;
|
|
32
32
|
actor?: string;
|
|
33
33
|
}
|
|
34
|
+
export interface BrowseResult {
|
|
35
|
+
path: string;
|
|
36
|
+
folders: FolderInfo[];
|
|
37
|
+
files: BrowseFileInfo[];
|
|
38
|
+
cursor?: string;
|
|
39
|
+
}
|
|
40
|
+
export interface FolderInfo {
|
|
41
|
+
name: string;
|
|
42
|
+
path: string;
|
|
43
|
+
}
|
|
44
|
+
export interface BrowseFileInfo {
|
|
45
|
+
id: string;
|
|
46
|
+
name: string;
|
|
47
|
+
path: string;
|
|
48
|
+
size_bytes: number;
|
|
49
|
+
content_type: string;
|
|
50
|
+
created_at: string;
|
|
51
|
+
}
|
|
52
|
+
export interface StorageStats {
|
|
53
|
+
total_objects: number;
|
|
54
|
+
total_size_bytes: number;
|
|
55
|
+
by_category: Record<string, CategoryStats>;
|
|
56
|
+
}
|
|
57
|
+
export interface CategoryStats {
|
|
58
|
+
count: number;
|
|
59
|
+
size: number;
|
|
60
|
+
}
|
|
61
|
+
export interface CategoriesResponse {
|
|
62
|
+
categories: CategoryInfo[];
|
|
63
|
+
}
|
|
64
|
+
export interface CategoryInfo {
|
|
65
|
+
name: string;
|
|
66
|
+
object_count: number;
|
|
67
|
+
total_size_bytes: number;
|
|
68
|
+
}
|
|
69
|
+
export interface CreateFolderResult {
|
|
70
|
+
created: boolean;
|
|
71
|
+
exists?: boolean;
|
|
72
|
+
path: string;
|
|
73
|
+
placeholder_id?: string;
|
|
74
|
+
message?: string;
|
|
75
|
+
}
|
|
76
|
+
export interface DeleteFolderResult {
|
|
77
|
+
deleted: boolean;
|
|
78
|
+
path: string;
|
|
79
|
+
deleted_count?: number;
|
|
80
|
+
retained_count?: number;
|
|
81
|
+
has_compliance?: boolean;
|
|
82
|
+
compliance_count?: number;
|
|
83
|
+
message?: string;
|
|
84
|
+
errors?: string[];
|
|
85
|
+
}
|
|
86
|
+
export interface FactoryResetResult {
|
|
87
|
+
reset: boolean;
|
|
88
|
+
deleted_count: number;
|
|
89
|
+
retained_count: number;
|
|
90
|
+
by_category: Record<string, {
|
|
91
|
+
deleted: number;
|
|
92
|
+
retained: number;
|
|
93
|
+
}>;
|
|
94
|
+
initialized_folders?: string[];
|
|
95
|
+
message?: string;
|
|
96
|
+
errors?: string[];
|
|
97
|
+
}
|
|
98
|
+
export interface ViewInfo {
|
|
99
|
+
name: string;
|
|
100
|
+
object_count: number;
|
|
101
|
+
total_size_bytes: number;
|
|
102
|
+
is_reserved: boolean;
|
|
103
|
+
}
|
|
104
|
+
export interface ViewsResult {
|
|
105
|
+
views: ViewInfo[];
|
|
106
|
+
total_views: number;
|
|
107
|
+
is_admin: boolean;
|
|
108
|
+
}
|
|
34
109
|
export declare class FilesNamespace {
|
|
35
110
|
private client;
|
|
36
111
|
constructor(client: DominusClient);
|
|
@@ -103,5 +178,83 @@ export declare class FilesNamespace {
|
|
|
103
178
|
tags?: Record<string, string>;
|
|
104
179
|
description?: string;
|
|
105
180
|
}): Promise<Record<string, unknown>>;
|
|
181
|
+
/**
|
|
182
|
+
* Browse storage with hierarchical navigation.
|
|
183
|
+
*
|
|
184
|
+
* @param options - Browse options
|
|
185
|
+
*/
|
|
186
|
+
browse(options: {
|
|
187
|
+
category: string;
|
|
188
|
+
path?: string;
|
|
189
|
+
includeSubfolders?: boolean;
|
|
190
|
+
limit?: number;
|
|
191
|
+
cursor?: string;
|
|
192
|
+
}): Promise<BrowseResult>;
|
|
193
|
+
/**
|
|
194
|
+
* Get storage statistics.
|
|
195
|
+
*/
|
|
196
|
+
getStorageStats(): Promise<StorageStats>;
|
|
197
|
+
/**
|
|
198
|
+
* List all categories (root folders) in storage.
|
|
199
|
+
*/
|
|
200
|
+
listCategories(): Promise<CategoriesResponse>;
|
|
201
|
+
/**
|
|
202
|
+
* List storage views filtered by user access.
|
|
203
|
+
*
|
|
204
|
+
* Views are the root-level scopes in the path structure:
|
|
205
|
+
* - 'admin' - System/admin files (admin-only)
|
|
206
|
+
* - 'shared' - Non-tenant-specific files (all users)
|
|
207
|
+
* - '{tenant_slug}' - Tenant-specific files (user must have access)
|
|
208
|
+
*
|
|
209
|
+
* Admin users (with 'admin' or 'admin-view' scope) see ALL views.
|
|
210
|
+
* Regular users see 'shared' + their active_tenant view.
|
|
211
|
+
*
|
|
212
|
+
* @param options - Optional user context for filtering
|
|
213
|
+
* @param options.userScopes - User's scopes (e.g., ['admin', 'admin-view'])
|
|
214
|
+
* @param options.activeTenant - User's active tenant slug
|
|
215
|
+
*/
|
|
216
|
+
listViews(options?: {
|
|
217
|
+
userScopes?: string[];
|
|
218
|
+
activeTenant?: string;
|
|
219
|
+
}): Promise<ViewsResult>;
|
|
220
|
+
/**
|
|
221
|
+
* List categories within a specific view (scope).
|
|
222
|
+
*
|
|
223
|
+
* @param view - View/scope name (admin, shared, or tenant slug)
|
|
224
|
+
*/
|
|
225
|
+
listCategoriesInView(view: string): Promise<CategoriesResponse>;
|
|
226
|
+
/**
|
|
227
|
+
* Create a virtual folder.
|
|
228
|
+
*
|
|
229
|
+
* @param options - Folder creation options
|
|
230
|
+
*/
|
|
231
|
+
createFolder(options: {
|
|
232
|
+
category: string;
|
|
233
|
+
path: string;
|
|
234
|
+
}): Promise<CreateFolderResult>;
|
|
235
|
+
/**
|
|
236
|
+
* Delete a virtual folder and all its contents.
|
|
237
|
+
*
|
|
238
|
+
* @param options - Folder deletion options
|
|
239
|
+
*/
|
|
240
|
+
deleteFolder(options: {
|
|
241
|
+
category: string;
|
|
242
|
+
path: string;
|
|
243
|
+
force?: boolean;
|
|
244
|
+
}): Promise<DeleteFolderResult>;
|
|
245
|
+
/**
|
|
246
|
+
* Factory reset - delete ALL objects in the project/environment.
|
|
247
|
+
*
|
|
248
|
+
* WARNING: This will permanently delete all files in storage.
|
|
249
|
+
* Compliance objects will be moved to retention unless force=true.
|
|
250
|
+
*
|
|
251
|
+
* @param options - Reset options
|
|
252
|
+
* @param options.force - If true, hard delete even compliance objects
|
|
253
|
+
* @param options.reinitializeStructure - If true (default), recreate default folder structure after reset
|
|
254
|
+
*/
|
|
255
|
+
factoryReset(options?: {
|
|
256
|
+
force?: boolean;
|
|
257
|
+
reinitializeStructure?: boolean;
|
|
258
|
+
}): Promise<FactoryResetResult>;
|
|
106
259
|
}
|
|
107
260
|
//# sourceMappingURL=files.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../src/namespaces/files.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEtD,MAAM,WAAW,YAAY;IAC3B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,cAAc;IAC7B,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,CAAC,GAAG,EAAE,MAAM,GAAG,OAAO,CAAC;CACxB;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,UAAU;IACzB,OAAO,EAAE,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAAC;IACxC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,MAAM,CAAC;CACf;AAED,MAAM,WAAW,QAAQ;IACvB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,qBAAa,cAAc;IACb,OAAO,CAAC,MAAM;gBAAN,MAAM,EAAE,aAAa;IAEzC;;;;;;OAMG;IACG,MAAM,CACV,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE;QACP,WAAW,CAAC,EAAE,MAAM,CAAC;QACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,IAAI,CAAC,EAAE,MAAM,CAAC;QACd,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAC9B,UAAU,CAAC,EAAE,OAAO,CAAC;QACrB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,aAAa,CAAC,EAAE,MAAM,CAAC;KACnB,GACL,OAAO,CAAC,YAAY,CAAC;IAmCxB;;;;OAIG;IACG,QAAQ,CACZ,OAAO,EAAE,QAAQ,GAAG;QAAE,cAAc,CAAC,EAAE,MAAM,CAAA;KAAE,GAC9C,OAAO,CAAC,cAAc,CAAC;IAgB1B;;;;OAIG;IACG,KAAK,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC,WAAW,CAAC;IAgBpD;;;;OAIG;IACG,IAAI,CACR,OAAO,GAAE;QACP,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,MAAM,CAAC,EAAE,MAAM,CAAC;QAChB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC;KACZ,GACL,OAAO,CAAC,UAAU,CAAC;IAetB;;;;OAIG;IACG,MAAM,CAAC,OAAO,EAAE,QAAQ,GAAG,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAA;KAAE,CAAC;IAgB9D;;;;;OAKG;IACG,IAAI,CACR,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;QAAE,WAAW,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE,GAClD,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAcnC;;;;;OAKG;IACG,UAAU,CACd,MAAM,EAAE,MAAM,EACd,OAAO,EAAE;QAAE,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QAAC,WAAW,CAAC,EAAE,MAAM,CAAA;KAAE,GAC/D,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"files.d.ts","sourceRoot":"","sources":["../../src/namespaces/files.ts"],"names":[],"mappings":"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"}
|
package/dist/namespaces/files.js
CHANGED
|
@@ -157,5 +157,130 @@ export class FilesNamespace {
|
|
|
157
157
|
body,
|
|
158
158
|
});
|
|
159
159
|
}
|
|
160
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
161
|
+
// Storage Browser Methods
|
|
162
|
+
// ─────────────────────────────────────────────────────────────────────────────
|
|
163
|
+
/**
|
|
164
|
+
* Browse storage with hierarchical navigation.
|
|
165
|
+
*
|
|
166
|
+
* @param options - Browse options
|
|
167
|
+
*/
|
|
168
|
+
async browse(options) {
|
|
169
|
+
return this.client.request({
|
|
170
|
+
endpoint: '/api/archivist/browse',
|
|
171
|
+
body: {
|
|
172
|
+
category: options.category,
|
|
173
|
+
path: options.path,
|
|
174
|
+
include_subfolders: options.includeSubfolders ?? true,
|
|
175
|
+
limit: options.limit ?? 100,
|
|
176
|
+
cursor: options.cursor,
|
|
177
|
+
},
|
|
178
|
+
});
|
|
179
|
+
}
|
|
180
|
+
/**
|
|
181
|
+
* Get storage statistics.
|
|
182
|
+
*/
|
|
183
|
+
async getStorageStats() {
|
|
184
|
+
return this.client.request({
|
|
185
|
+
endpoint: '/api/archivist/stats',
|
|
186
|
+
method: 'GET',
|
|
187
|
+
});
|
|
188
|
+
}
|
|
189
|
+
/**
|
|
190
|
+
* List all categories (root folders) in storage.
|
|
191
|
+
*/
|
|
192
|
+
async listCategories() {
|
|
193
|
+
return this.client.request({
|
|
194
|
+
endpoint: '/api/archivist/categories',
|
|
195
|
+
method: 'GET',
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
/**
|
|
199
|
+
* List storage views filtered by user access.
|
|
200
|
+
*
|
|
201
|
+
* Views are the root-level scopes in the path structure:
|
|
202
|
+
* - 'admin' - System/admin files (admin-only)
|
|
203
|
+
* - 'shared' - Non-tenant-specific files (all users)
|
|
204
|
+
* - '{tenant_slug}' - Tenant-specific files (user must have access)
|
|
205
|
+
*
|
|
206
|
+
* Admin users (with 'admin' or 'admin-view' scope) see ALL views.
|
|
207
|
+
* Regular users see 'shared' + their active_tenant view.
|
|
208
|
+
*
|
|
209
|
+
* @param options - Optional user context for filtering
|
|
210
|
+
* @param options.userScopes - User's scopes (e.g., ['admin', 'admin-view'])
|
|
211
|
+
* @param options.activeTenant - User's active tenant slug
|
|
212
|
+
*/
|
|
213
|
+
async listViews(options) {
|
|
214
|
+
// Use POST with base64-encoded body (consistent with all other orchestrator endpoints)
|
|
215
|
+
return this.client.request({
|
|
216
|
+
endpoint: '/api/archivist/views',
|
|
217
|
+
method: 'POST',
|
|
218
|
+
body: {
|
|
219
|
+
user_scopes: options?.userScopes || [],
|
|
220
|
+
active_tenant: options?.activeTenant || null,
|
|
221
|
+
},
|
|
222
|
+
});
|
|
223
|
+
}
|
|
224
|
+
/**
|
|
225
|
+
* List categories within a specific view (scope).
|
|
226
|
+
*
|
|
227
|
+
* @param view - View/scope name (admin, shared, or tenant slug)
|
|
228
|
+
*/
|
|
229
|
+
async listCategoriesInView(view) {
|
|
230
|
+
return this.client.request({
|
|
231
|
+
endpoint: `/api/archivist/views/${encodeURIComponent(view)}/categories`,
|
|
232
|
+
method: 'GET',
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Create a virtual folder.
|
|
237
|
+
*
|
|
238
|
+
* @param options - Folder creation options
|
|
239
|
+
*/
|
|
240
|
+
async createFolder(options) {
|
|
241
|
+
return this.client.request({
|
|
242
|
+
endpoint: '/api/archivist/folder',
|
|
243
|
+
body: {
|
|
244
|
+
category: options.category,
|
|
245
|
+
path: options.path,
|
|
246
|
+
},
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* Delete a virtual folder and all its contents.
|
|
251
|
+
*
|
|
252
|
+
* @param options - Folder deletion options
|
|
253
|
+
*/
|
|
254
|
+
async deleteFolder(options) {
|
|
255
|
+
return this.client.request({
|
|
256
|
+
endpoint: '/api/archivist/folder',
|
|
257
|
+
method: 'DELETE',
|
|
258
|
+
body: {
|
|
259
|
+
category: options.category,
|
|
260
|
+
path: options.path,
|
|
261
|
+
force: options.force ?? false,
|
|
262
|
+
},
|
|
263
|
+
});
|
|
264
|
+
}
|
|
265
|
+
/**
|
|
266
|
+
* Factory reset - delete ALL objects in the project/environment.
|
|
267
|
+
*
|
|
268
|
+
* WARNING: This will permanently delete all files in storage.
|
|
269
|
+
* Compliance objects will be moved to retention unless force=true.
|
|
270
|
+
*
|
|
271
|
+
* @param options - Reset options
|
|
272
|
+
* @param options.force - If true, hard delete even compliance objects
|
|
273
|
+
* @param options.reinitializeStructure - If true (default), recreate default folder structure after reset
|
|
274
|
+
*/
|
|
275
|
+
async factoryReset(options) {
|
|
276
|
+
return this.client.request({
|
|
277
|
+
endpoint: '/api/archivist/factory-reset',
|
|
278
|
+
body: {
|
|
279
|
+
confirm: 'FACTORY_RESET',
|
|
280
|
+
force: options?.force ?? false,
|
|
281
|
+
reinitialize_structure: options?.reinitializeStructure ?? true,
|
|
282
|
+
},
|
|
283
|
+
});
|
|
284
|
+
}
|
|
160
285
|
}
|
|
161
286
|
//# sourceMappingURL=files.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/namespaces/files.ts"],"names":[],"mappings":"AAAA;;;;GAIG;
|
|
1
|
+
{"version":3,"file":"files.js","sourceRoot":"","sources":["../../src/namespaces/files.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,92 @@
|
|
|
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
|
+
private pendingUtterance;
|
|
42
|
+
/** Called when session is ready to receive speech */
|
|
43
|
+
onReady: (() => void) | null;
|
|
44
|
+
/** Called with interim transcripts (may change) */
|
|
45
|
+
onInterim: ((text: string) => void) | null;
|
|
46
|
+
/** Called when a transcript segment is finalized */
|
|
47
|
+
onFinal: ((text: string) => void) | null;
|
|
48
|
+
/** Called when user finishes an utterance (trigger for Curator) */
|
|
49
|
+
onUtterance: ((text: string) => void) | null;
|
|
50
|
+
/** Called on any error */
|
|
51
|
+
onError: ((error: Error) => void) | null;
|
|
52
|
+
/** Called when session closes */
|
|
53
|
+
onClose: (() => void) | null;
|
|
54
|
+
/** Called when VAD state changes (for UI indicators) */
|
|
55
|
+
onVADStateChange: ((state: VADState) => void) | null;
|
|
56
|
+
constructor(baseUrl: string, userToken: string, options: ResolvedOracleSessionOptions);
|
|
57
|
+
/**
|
|
58
|
+
* Check if session is currently active.
|
|
59
|
+
*/
|
|
60
|
+
get isActive(): boolean;
|
|
61
|
+
/**
|
|
62
|
+
* Get current VAD state.
|
|
63
|
+
*/
|
|
64
|
+
get vadState(): VADState;
|
|
65
|
+
/**
|
|
66
|
+
* Start the transcription session.
|
|
67
|
+
*
|
|
68
|
+
* - Requests microphone permission
|
|
69
|
+
* - Connects WebSocket to Oracle
|
|
70
|
+
* - Begins VAD-gated audio streaming
|
|
71
|
+
*
|
|
72
|
+
* @throws Error if mic permission denied or connection fails
|
|
73
|
+
*/
|
|
74
|
+
start(): Promise<void>;
|
|
75
|
+
/**
|
|
76
|
+
* Stop the transcription session.
|
|
77
|
+
*
|
|
78
|
+
* - Stops microphone capture
|
|
79
|
+
* - Closes WebSocket connection
|
|
80
|
+
* - Cleans up resources
|
|
81
|
+
*/
|
|
82
|
+
stop(): Promise<void>;
|
|
83
|
+
/**
|
|
84
|
+
* Clean up all resources.
|
|
85
|
+
*/
|
|
86
|
+
private cleanup;
|
|
87
|
+
/**
|
|
88
|
+
* Dispose of all resources (for cleanup on unmount).
|
|
89
|
+
*/
|
|
90
|
+
dispose(): void;
|
|
91
|
+
}
|
|
92
|
+
//# 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;IAqCtB,OAAO,CAAC,SAAS;IApCnB,OAAO,CAAC,EAAE,CAAkB;IAC5B,OAAO,CAAC,GAAG,CAAU;IACrB,OAAO,CAAC,KAAK,CAAe;IAC5B,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,SAAS,CAAoB;IAKrC,OAAO,CAAC,gBAAgB,CAAM;IAI9B,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;IAsF5B;;;;;;OAMG;IACG,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;IAY3B;;OAEG;YACW,OAAO;IAerB;;OAEG;IACH,OAAO,IAAI,IAAI;CAgBhB"}
|
|
@@ -0,0 +1,219 @@
|
|
|
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
|
+
// Track accumulated transcript for utterance detection
|
|
44
|
+
// Since VAD stops sending audio before Deepgram's utterance_end_ms,
|
|
45
|
+
// we use VAD TRAILING→IDLE transition as utterance boundary
|
|
46
|
+
pendingUtterance = '';
|
|
47
|
+
// ========== EVENT CALLBACKS ==========
|
|
48
|
+
/** Called when session is ready to receive speech */
|
|
49
|
+
onReady = null;
|
|
50
|
+
/** Called with interim transcripts (may change) */
|
|
51
|
+
onInterim = null;
|
|
52
|
+
/** Called when a transcript segment is finalized */
|
|
53
|
+
onFinal = null;
|
|
54
|
+
/** Called when user finishes an utterance (trigger for Curator) */
|
|
55
|
+
onUtterance = null;
|
|
56
|
+
/** Called on any error */
|
|
57
|
+
onError = null;
|
|
58
|
+
/** Called when session closes */
|
|
59
|
+
onClose = null;
|
|
60
|
+
/** Called when VAD state changes (for UI indicators) */
|
|
61
|
+
onVADStateChange = null;
|
|
62
|
+
constructor(baseUrl, userToken, options) {
|
|
63
|
+
this.userToken = userToken;
|
|
64
|
+
// Initialize internal components
|
|
65
|
+
this.ws = new OracleWebSocket(baseUrl, {
|
|
66
|
+
pingIntervalMs: options.pingIntervalMs,
|
|
67
|
+
});
|
|
68
|
+
this.vad = new VADGate(options);
|
|
69
|
+
this.audio = new AudioCapture();
|
|
70
|
+
}
|
|
71
|
+
// ========== PUBLIC GETTERS ==========
|
|
72
|
+
/**
|
|
73
|
+
* Check if session is currently active.
|
|
74
|
+
*/
|
|
75
|
+
get isActive() {
|
|
76
|
+
return this._isActive;
|
|
77
|
+
}
|
|
78
|
+
/**
|
|
79
|
+
* Get current VAD state.
|
|
80
|
+
*/
|
|
81
|
+
get vadState() {
|
|
82
|
+
return this._vadState;
|
|
83
|
+
}
|
|
84
|
+
// ========== LIFECYCLE METHODS ==========
|
|
85
|
+
/**
|
|
86
|
+
* Start the transcription session.
|
|
87
|
+
*
|
|
88
|
+
* - Requests microphone permission
|
|
89
|
+
* - Connects WebSocket to Oracle
|
|
90
|
+
* - Begins VAD-gated audio streaming
|
|
91
|
+
*
|
|
92
|
+
* @throws Error if mic permission denied or connection fails
|
|
93
|
+
*/
|
|
94
|
+
async start() {
|
|
95
|
+
if (this._isActive) {
|
|
96
|
+
return;
|
|
97
|
+
}
|
|
98
|
+
try {
|
|
99
|
+
// 1. Initialize VAD
|
|
100
|
+
await this.vad.initialize();
|
|
101
|
+
// 2. Connect WebSocket with first-message auth
|
|
102
|
+
await this.ws.connect(this.userToken);
|
|
103
|
+
// 3. Wire up transcript events
|
|
104
|
+
// Note: Deepgram's speech_final requires 2s silence, but VAD only sends 400ms trailing.
|
|
105
|
+
// So we accumulate is_final text and emit on VAD TRAILING→IDLE transition.
|
|
106
|
+
this.ws.onTranscript = (text, isFinal, speechFinal) => {
|
|
107
|
+
if (!isFinal) {
|
|
108
|
+
// Interim: show in live view (may change)
|
|
109
|
+
this.onInterim?.(text);
|
|
110
|
+
}
|
|
111
|
+
else {
|
|
112
|
+
// Final: accumulate for utterance
|
|
113
|
+
this.onFinal?.(text);
|
|
114
|
+
// Accumulate finals - space-separated
|
|
115
|
+
if (this.pendingUtterance) {
|
|
116
|
+
this.pendingUtterance += ' ' + text;
|
|
117
|
+
}
|
|
118
|
+
else {
|
|
119
|
+
this.pendingUtterance = text;
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
// If Deepgram does send speech_final, honor it
|
|
123
|
+
if (speechFinal && text) {
|
|
124
|
+
this.pendingUtterance = ''; // Clear since we're emitting
|
|
125
|
+
this.onUtterance?.(text);
|
|
126
|
+
}
|
|
127
|
+
};
|
|
128
|
+
this.ws.onError = (error) => {
|
|
129
|
+
this.onError?.(error);
|
|
130
|
+
};
|
|
131
|
+
this.ws.onClose = () => {
|
|
132
|
+
this._isActive = false;
|
|
133
|
+
this.onClose?.();
|
|
134
|
+
};
|
|
135
|
+
// 4. Start audio capture
|
|
136
|
+
await this.audio.start();
|
|
137
|
+
// 5. Wire audio through VAD gate
|
|
138
|
+
this.audio.onFrame = (pcmFrame) => {
|
|
139
|
+
this.vad.processFrame(pcmFrame);
|
|
140
|
+
};
|
|
141
|
+
// 6. VAD gate controls what gets sent
|
|
142
|
+
this.vad.onSendAudio = (frames) => {
|
|
143
|
+
frames.forEach((frame) => this.ws.sendBinary(frame));
|
|
144
|
+
};
|
|
145
|
+
this.vad.onStateChange = (state) => {
|
|
146
|
+
const prevState = this._vadState;
|
|
147
|
+
this._vadState = state;
|
|
148
|
+
this.onVADStateChange?.(state);
|
|
149
|
+
// When VAD transitions to IDLE from TRAILING, emit accumulated utterance
|
|
150
|
+
// This is our primary utterance boundary since Deepgram's speech_final
|
|
151
|
+
// requires 2s silence but VAD only sends 400ms trailing
|
|
152
|
+
if (state === 'idle' && (prevState === 'trailing' || prevState === 'speaking')) {
|
|
153
|
+
if (this.pendingUtterance.trim()) {
|
|
154
|
+
console.log('[OracleSDK] VAD→IDLE: emitting utterance', {
|
|
155
|
+
text: this.pendingUtterance.substring(0, 50),
|
|
156
|
+
});
|
|
157
|
+
this.onUtterance?.(this.pendingUtterance.trim());
|
|
158
|
+
this.pendingUtterance = '';
|
|
159
|
+
}
|
|
160
|
+
}
|
|
161
|
+
};
|
|
162
|
+
this._isActive = true;
|
|
163
|
+
this.onReady?.();
|
|
164
|
+
}
|
|
165
|
+
catch (error) {
|
|
166
|
+
// Clean up on failure
|
|
167
|
+
await this.cleanup();
|
|
168
|
+
throw error;
|
|
169
|
+
}
|
|
170
|
+
}
|
|
171
|
+
/**
|
|
172
|
+
* Stop the transcription session.
|
|
173
|
+
*
|
|
174
|
+
* - Stops microphone capture
|
|
175
|
+
* - Closes WebSocket connection
|
|
176
|
+
* - Cleans up resources
|
|
177
|
+
*/
|
|
178
|
+
async stop() {
|
|
179
|
+
if (!this._isActive) {
|
|
180
|
+
return;
|
|
181
|
+
}
|
|
182
|
+
this._isActive = false;
|
|
183
|
+
await this.cleanup();
|
|
184
|
+
this.onClose?.();
|
|
185
|
+
}
|
|
186
|
+
// ========== PRIVATE METHODS ==========
|
|
187
|
+
/**
|
|
188
|
+
* Clean up all resources.
|
|
189
|
+
*/
|
|
190
|
+
async cleanup() {
|
|
191
|
+
// Stop audio capture
|
|
192
|
+
await this.audio.stop();
|
|
193
|
+
// Close WebSocket
|
|
194
|
+
await this.ws.close();
|
|
195
|
+
// Reset VAD state
|
|
196
|
+
this.vad.reset();
|
|
197
|
+
this._vadState = 'idle';
|
|
198
|
+
// Clear pending utterance
|
|
199
|
+
this.pendingUtterance = '';
|
|
200
|
+
}
|
|
201
|
+
/**
|
|
202
|
+
* Dispose of all resources (for cleanup on unmount).
|
|
203
|
+
*/
|
|
204
|
+
dispose() {
|
|
205
|
+
this.stop().catch(() => { });
|
|
206
|
+
// Clear all callbacks
|
|
207
|
+
this.onReady = null;
|
|
208
|
+
this.onInterim = null;
|
|
209
|
+
this.onFinal = null;
|
|
210
|
+
this.onUtterance = null;
|
|
211
|
+
this.onError = null;
|
|
212
|
+
this.onClose = null;
|
|
213
|
+
this.onVADStateChange = null;
|
|
214
|
+
// Dispose internal components
|
|
215
|
+
this.audio.dispose();
|
|
216
|
+
this.vad.dispose();
|
|
217
|
+
}
|
|
218
|
+
}
|
|
219
|
+
//# sourceMappingURL=OracleSession.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"OracleSession.js","sourceRoot":"","sources":["../../../src/namespaces/oracle/OracleSession.ts"],"names":[],"mappings":"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"}
|