@wave-av/sdk 2.0.0 → 2.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (99) hide show
  1. package/dist/audience.d.ts +104 -0
  2. package/dist/audience.d.ts.map +1 -0
  3. package/dist/camera-control.d.ts +54 -0
  4. package/dist/camera-control.d.ts.map +1 -0
  5. package/dist/captions.d.ts +362 -0
  6. package/dist/captions.d.ts.map +1 -0
  7. package/dist/chapters.d.ts +315 -0
  8. package/dist/chapters.d.ts.map +1 -0
  9. package/dist/client.d.ts +191 -0
  10. package/dist/client.d.ts.map +1 -0
  11. package/dist/clips.d.ts +258 -0
  12. package/dist/clips.d.ts.map +1 -0
  13. package/dist/cloud-switcher.d.ts +65 -0
  14. package/dist/cloud-switcher.d.ts.map +1 -0
  15. package/dist/collab-types.d.ts +204 -0
  16. package/dist/collab-types.d.ts.map +1 -0
  17. package/dist/collab.d.ts +226 -0
  18. package/dist/collab.d.ts.map +1 -0
  19. package/dist/connect.d.ts +88 -0
  20. package/dist/connect.d.ts.map +1 -0
  21. package/dist/creator.d.ts +109 -0
  22. package/dist/creator.d.ts.map +1 -0
  23. package/dist/desktop.d.ts +95 -0
  24. package/dist/desktop.d.ts.map +1 -0
  25. package/dist/distribution.d.ts +92 -0
  26. package/dist/distribution.d.ts.map +1 -0
  27. package/dist/drm.d.ts +87 -0
  28. package/dist/drm.d.ts.map +1 -0
  29. package/dist/edge.d.ts +112 -0
  30. package/dist/edge.d.ts.map +1 -0
  31. package/dist/editor-types.d.ts +236 -0
  32. package/dist/editor-types.d.ts.map +1 -0
  33. package/dist/editor.d.ts +206 -0
  34. package/dist/editor.d.ts.map +1 -0
  35. package/dist/fleet.d.ts +207 -0
  36. package/dist/fleet.d.ts.map +1 -0
  37. package/dist/ghost.d.ts +213 -0
  38. package/dist/ghost.d.ts.map +1 -0
  39. package/dist/index.d.ts +144 -0
  40. package/dist/index.d.ts.map +1 -0
  41. package/dist/marketplace.d.ts +90 -0
  42. package/dist/marketplace.d.ts.map +1 -0
  43. package/dist/mesh.d.ts +237 -0
  44. package/dist/mesh.d.ts.map +1 -0
  45. package/dist/notifications.d.ts +82 -0
  46. package/dist/notifications.d.ts.map +1 -0
  47. package/dist/phone.d.ts +369 -0
  48. package/dist/phone.d.ts.map +1 -0
  49. package/dist/pipeline.d.ts +409 -0
  50. package/dist/pipeline.d.ts.map +1 -0
  51. package/dist/podcast.d.ts +113 -0
  52. package/dist/podcast.d.ts.map +1 -0
  53. package/dist/prism.d.ts +132 -0
  54. package/dist/prism.d.ts.map +1 -0
  55. package/dist/prompter.d.ts +184 -0
  56. package/dist/prompter.d.ts.map +1 -0
  57. package/dist/pulse.d.ts +156 -0
  58. package/dist/pulse.d.ts.map +1 -0
  59. package/dist/qr.d.ts +82 -0
  60. package/dist/qr.d.ts.map +1 -0
  61. package/dist/replay.d.ts +52 -0
  62. package/dist/replay.d.ts.map +1 -0
  63. package/dist/scene-types.d.ts +190 -0
  64. package/dist/scene-types.d.ts.map +1 -0
  65. package/dist/scene.d.ts +213 -0
  66. package/dist/scene.d.ts.map +1 -0
  67. package/dist/search-types.d.ts +210 -0
  68. package/dist/search-types.d.ts.map +1 -0
  69. package/dist/search.d.ts +250 -0
  70. package/dist/search.d.ts.map +1 -0
  71. package/dist/sentiment.d.ts +378 -0
  72. package/dist/sentiment.d.ts.map +1 -0
  73. package/dist/signage.d.ts +101 -0
  74. package/dist/signage.d.ts.map +1 -0
  75. package/dist/slides.d.ts +68 -0
  76. package/dist/slides.d.ts.map +1 -0
  77. package/dist/studio-ai-types.d.ts +198 -0
  78. package/dist/studio-ai-types.d.ts.map +1 -0
  79. package/dist/studio-ai.d.ts +218 -0
  80. package/dist/studio-ai.d.ts.map +1 -0
  81. package/dist/studio-types.d.ts +267 -0
  82. package/dist/studio-types.d.ts.map +1 -0
  83. package/dist/studio.d.ts +234 -0
  84. package/dist/studio.d.ts.map +1 -0
  85. package/dist/telemetry.d.ts +76 -0
  86. package/dist/telemetry.d.ts.map +1 -0
  87. package/dist/transcribe-types.d.ts +153 -0
  88. package/dist/transcribe-types.d.ts.map +1 -0
  89. package/dist/transcribe.d.ts +218 -0
  90. package/dist/transcribe.d.ts.map +1 -0
  91. package/dist/usb.d.ts +64 -0
  92. package/dist/usb.d.ts.map +1 -0
  93. package/dist/vault.d.ts +121 -0
  94. package/dist/vault.d.ts.map +1 -0
  95. package/dist/voice.d.ts +307 -0
  96. package/dist/voice.d.ts.map +1 -0
  97. package/dist/zoom.d.ts +91 -0
  98. package/dist/zoom.d.ts.map +1 -0
  99. package/package.json +1 -1
@@ -0,0 +1,315 @@
1
+ /**
2
+ * WAVE SDK - Chapters API
3
+ *
4
+ * Manage video chapters and smart chapter generation.
5
+ *
6
+ * NOTE: This is a client SDK. All authorization checks are performed server-side.
7
+ * The API will return 403 Forbidden if the user lacks required permissions.
8
+ */
9
+ import type { WaveClient, PaginationParams, PaginatedResponse, Timestamps, Metadata } from './client';
10
+ /**
11
+ * Chapter status
12
+ */
13
+ export type ChapterStatus = 'pending' | 'processing' | 'ready' | 'failed';
14
+ /**
15
+ * Chapter
16
+ */
17
+ export interface Chapter extends Timestamps {
18
+ id: string;
19
+ media_id: string;
20
+ title: string;
21
+ description?: string;
22
+ start_time: number;
23
+ end_time?: number;
24
+ thumbnail_url?: string;
25
+ order: number;
26
+ is_auto_generated: boolean;
27
+ confidence?: number;
28
+ metadata?: Metadata;
29
+ }
30
+ /**
31
+ * Chapter set (collection of chapters for a media)
32
+ */
33
+ export interface ChapterSet extends Timestamps {
34
+ id: string;
35
+ organization_id: string;
36
+ media_id: string;
37
+ media_type: 'video' | 'audio' | 'stream';
38
+ name: string;
39
+ status: ChapterStatus;
40
+ is_default: boolean;
41
+ is_auto_generated: boolean;
42
+ chapters: Chapter[];
43
+ chapter_count: number;
44
+ error?: string;
45
+ metadata?: Metadata;
46
+ }
47
+ /**
48
+ * Generate chapters request
49
+ */
50
+ export interface GenerateChaptersRequest {
51
+ media_id: string;
52
+ media_type: 'video' | 'audio' | 'stream';
53
+ name?: string;
54
+ /** Minimum chapter duration in seconds */
55
+ min_duration?: number;
56
+ /** Maximum number of chapters */
57
+ max_chapters?: number;
58
+ /** Detection method */
59
+ method?: 'scene' | 'topic' | 'combined';
60
+ /** Use transcript for topic detection */
61
+ use_transcript?: boolean;
62
+ /** Caption track ID if using transcript */
63
+ caption_track_id?: string;
64
+ /** Generate thumbnails for chapters */
65
+ generate_thumbnails?: boolean;
66
+ /** Set as default chapter set */
67
+ set_as_default?: boolean;
68
+ /** Webhook URL for completion */
69
+ webhook_url?: string;
70
+ metadata?: Metadata;
71
+ }
72
+ /**
73
+ * Create chapter set request
74
+ */
75
+ export interface CreateChapterSetRequest {
76
+ media_id: string;
77
+ media_type: 'video' | 'audio' | 'stream';
78
+ name: string;
79
+ chapters: CreateChapterRequest[];
80
+ set_as_default?: boolean;
81
+ metadata?: Metadata;
82
+ }
83
+ /**
84
+ * Create chapter request
85
+ */
86
+ export interface CreateChapterRequest {
87
+ title: string;
88
+ description?: string;
89
+ start_time: number;
90
+ end_time?: number;
91
+ thumbnail_url?: string;
92
+ metadata?: Metadata;
93
+ }
94
+ /**
95
+ * Update chapter request
96
+ */
97
+ export interface UpdateChapterRequest {
98
+ title?: string;
99
+ description?: string;
100
+ start_time?: number;
101
+ end_time?: number;
102
+ thumbnail_url?: string;
103
+ order?: number;
104
+ metadata?: Metadata;
105
+ }
106
+ /**
107
+ * Update chapter set request
108
+ */
109
+ export interface UpdateChapterSetRequest {
110
+ name?: string;
111
+ is_default?: boolean;
112
+ metadata?: Metadata;
113
+ }
114
+ /**
115
+ * List chapter sets params
116
+ */
117
+ export interface ListChapterSetsParams extends PaginationParams {
118
+ media_id?: string;
119
+ media_type?: 'video' | 'audio' | 'stream';
120
+ status?: ChapterStatus;
121
+ is_auto_generated?: boolean;
122
+ }
123
+ /**
124
+ * Chapters API client
125
+ *
126
+ * All operations require appropriate permissions. Authorization is enforced
127
+ * server-side - the API returns 403 if the authenticated user lacks access.
128
+ *
129
+ * @example
130
+ * ```typescript
131
+ * import { WaveClient } from '@wave/sdk';
132
+ * import { ChaptersAPI } from '@wave/sdk/chapters';
133
+ *
134
+ * const client = new WaveClient({ apiKey: 'your-api-key' });
135
+ * const chapters = new ChaptersAPI(client);
136
+ *
137
+ * // Generate chapters automatically
138
+ * const chapterSet = await chapters.generate({
139
+ * media_id: 'video_123',
140
+ * media_type: 'video',
141
+ * method: 'combined',
142
+ * generate_thumbnails: true,
143
+ * });
144
+ *
145
+ * // Wait for processing
146
+ * const ready = await chapters.waitForReady(chapterSet.id);
147
+ * console.log('Chapters:', ready.chapters);
148
+ * ```
149
+ */
150
+ export declare class ChaptersAPI {
151
+ private readonly client;
152
+ private readonly basePath;
153
+ constructor(client: WaveClient);
154
+ /**
155
+ * Generate chapters using AI
156
+ *
157
+ * Requires: chapters:generate permission
158
+ */
159
+ generate(request: GenerateChaptersRequest): Promise<ChapterSet>;
160
+ /**
161
+ * Create a chapter set manually
162
+ *
163
+ * Requires: chapters:create permission
164
+ */
165
+ createSet(request: CreateChapterSetRequest): Promise<ChapterSet>;
166
+ /**
167
+ * Get a chapter set by ID
168
+ *
169
+ * Requires: chapters:read permission
170
+ */
171
+ getSet(setId: string): Promise<ChapterSet>;
172
+ /**
173
+ * Update a chapter set
174
+ *
175
+ * Requires: chapters:update permission
176
+ */
177
+ updateSet(setId: string, request: UpdateChapterSetRequest): Promise<ChapterSet>;
178
+ /**
179
+ * Remove a chapter set
180
+ *
181
+ * Requires: chapters:remove permission (canDelete verified server-side)
182
+ */
183
+ removeSet(setId: string): Promise<void>;
184
+ /**
185
+ * List chapter sets
186
+ *
187
+ * Requires: chapters:read permission
188
+ */
189
+ listSets(params?: ListChapterSetsParams): Promise<PaginatedResponse<ChapterSet>>;
190
+ /**
191
+ * Get the default chapter set for a media
192
+ *
193
+ * Requires: chapters:read permission
194
+ */
195
+ getDefaultSet(mediaId: string, mediaType: 'video' | 'audio' | 'stream'): Promise<ChapterSet | null>;
196
+ /**
197
+ * Duplicate a chapter set
198
+ *
199
+ * Requires: chapters:create permission
200
+ */
201
+ duplicateSet(setId: string, name?: string): Promise<ChapterSet>;
202
+ /**
203
+ * Add a chapter to a set
204
+ *
205
+ * Requires: chapters:update permission
206
+ */
207
+ addChapter(setId: string, chapter: CreateChapterRequest): Promise<Chapter>;
208
+ /**
209
+ * Get a chapter by ID
210
+ *
211
+ * Requires: chapters:read permission
212
+ */
213
+ getChapter(setId: string, chapterId: string): Promise<Chapter>;
214
+ /**
215
+ * Update a chapter
216
+ *
217
+ * Requires: chapters:update permission
218
+ */
219
+ updateChapter(setId: string, chapterId: string, request: UpdateChapterRequest): Promise<Chapter>;
220
+ /**
221
+ * Remove a chapter
222
+ *
223
+ * Requires: chapters:update permission (server-side RBAC enforced)
224
+ */
225
+ removeChapter(setId: string, chapterId: string): Promise<void>;
226
+ /**
227
+ * Reorder chapters
228
+ *
229
+ * Requires: chapters:update permission
230
+ */
231
+ reorderChapters(setId: string, chapterIds: string[]): Promise<ChapterSet>;
232
+ /**
233
+ * Bulk update chapters
234
+ *
235
+ * Requires: chapters:update permission
236
+ */
237
+ bulkUpdateChapters(setId: string, updates: Array<{
238
+ id: string;
239
+ } & Partial<UpdateChapterRequest>>): Promise<{
240
+ updated: number;
241
+ }>;
242
+ /**
243
+ * Generate thumbnail for a chapter
244
+ *
245
+ * Requires: chapters:update permission
246
+ */
247
+ generateThumbnail(setId: string, chapterId: string, options?: {
248
+ time?: number;
249
+ }): Promise<Chapter>;
250
+ /**
251
+ * Generate thumbnails for all chapters in a set
252
+ *
253
+ * Requires: chapters:update permission
254
+ */
255
+ generateAllThumbnails(setId: string): Promise<{
256
+ generated: number;
257
+ }>;
258
+ /**
259
+ * Export chapters in various formats
260
+ *
261
+ * Requires: chapters:read permission
262
+ */
263
+ exportChapters(setId: string, format: 'json' | 'youtube' | 'webvtt' | 'ffmpeg'): Promise<{
264
+ content: string;
265
+ format: string;
266
+ }>;
267
+ /**
268
+ * Import chapters from a format
269
+ *
270
+ * Requires: chapters:create permission
271
+ */
272
+ importChapters(mediaId: string, mediaType: 'video' | 'audio' | 'stream', format: 'json' | 'youtube' | 'webvtt' | 'ffmpeg', content: string, options?: {
273
+ name?: string;
274
+ set_as_default?: boolean;
275
+ }): Promise<ChapterSet>;
276
+ /**
277
+ * Wait for chapter generation to complete
278
+ */
279
+ waitForReady(setId: string, options?: {
280
+ pollInterval?: number;
281
+ timeout?: number;
282
+ onProgress?: (set: ChapterSet) => void;
283
+ }): Promise<ChapterSet>;
284
+ /**
285
+ * Get chapter at a specific time
286
+ *
287
+ * Requires: chapters:read permission
288
+ */
289
+ getChapterAtTime(setId: string, time: number): Promise<Chapter | null>;
290
+ /**
291
+ * Merge chapters
292
+ *
293
+ * Requires: chapters:update permission
294
+ */
295
+ mergeChapters(setId: string, chapterIds: string[], options?: {
296
+ title?: string;
297
+ description?: string;
298
+ }): Promise<Chapter>;
299
+ /**
300
+ * Split a chapter at a specific time
301
+ *
302
+ * Requires: chapters:update permission
303
+ */
304
+ splitChapter(setId: string, chapterId: string, splitTime: number, options?: {
305
+ first_title?: string;
306
+ second_title?: string;
307
+ }): Promise<{
308
+ first: Chapter;
309
+ second: Chapter;
310
+ }>;
311
+ }
312
+ /**
313
+ * Create a Chapters API instance
314
+ */
315
+ export declare function createChaptersAPI(client: WaveClient): ChaptersAPI;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chapters.d.ts","sourceRoot":"","sources":["../src/chapters.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,191 @@
1
+ /**
2
+ * WAVE SDK - Base API Client
3
+ *
4
+ * Core HTTP client with authentication, rate limiting, and retry logic.
5
+ */
6
+ import { EventEmitter } from 'eventemitter3';
7
+ import type { TelemetryConfig } from './telemetry';
8
+ /**
9
+ * SDK configuration options
10
+ */
11
+ export interface WaveClientConfig {
12
+ /** API key for authentication */
13
+ apiKey: string;
14
+ /** Organization ID for tenant isolation */
15
+ organizationId?: string;
16
+ /** Base URL for the API (default: https://api.wave.online) */
17
+ baseUrl?: string;
18
+ /** Request timeout in milliseconds (default: 30000) */
19
+ timeout?: number;
20
+ /** Maximum retry attempts for failed requests (default: 3) */
21
+ maxRetries?: number;
22
+ /** Enable debug logging */
23
+ debug?: boolean;
24
+ /** Custom headers to include in all requests */
25
+ customHeaders?: Record<string, string>;
26
+ /** Optional telemetry configuration for OpenTelemetry integration */
27
+ telemetry?: TelemetryConfig;
28
+ }
29
+ /**
30
+ * Request options for individual API calls
31
+ */
32
+ export interface RequestOptions extends RequestInit {
33
+ /** Skip retry logic for this request */
34
+ noRetry?: boolean;
35
+ /** Custom timeout for this request */
36
+ timeout?: number;
37
+ /** Query parameters */
38
+ params?: Record<string, string | number | boolean | undefined>;
39
+ }
40
+ /**
41
+ * API error response structure
42
+ */
43
+ export interface WaveAPIErrorResponse {
44
+ error: {
45
+ code: string;
46
+ message: string;
47
+ details?: Record<string, unknown>;
48
+ };
49
+ request_id?: string;
50
+ }
51
+ /**
52
+ * WAVE SDK Error class
53
+ */
54
+ export declare class WaveError extends Error {
55
+ readonly code: string;
56
+ readonly statusCode: number;
57
+ readonly requestId?: string;
58
+ readonly details?: Record<string, unknown>;
59
+ readonly retryable: boolean;
60
+ constructor(message: string, code: string, statusCode: number, requestId?: string, details?: Record<string, unknown>);
61
+ private isRetryable;
62
+ }
63
+ /**
64
+ * Rate limit error with retry information
65
+ */
66
+ export declare class RateLimitError extends WaveError {
67
+ readonly retryAfter: number;
68
+ constructor(message: string, retryAfter: number, requestId?: string);
69
+ }
70
+ export interface WaveClientEvents {
71
+ 'request.start': (url: string, method: string) => void;
72
+ 'request.success': (url: string, method: string, duration: number) => void;
73
+ 'request.error': (url: string, method: string, error: Error) => void;
74
+ 'request.retry': (url: string, method: string, attempt: number, delay: number) => void;
75
+ 'rate_limit.hit': (retryAfter: number) => void;
76
+ }
77
+ /**
78
+ * WAVE API Base Client
79
+ *
80
+ * Handles authentication, rate limiting, and retry logic for all API requests.
81
+ *
82
+ * @example
83
+ * ```typescript
84
+ * const client = new WaveClient({
85
+ * apiKey: process.env.WAVE_API_KEY!,
86
+ * organizationId: 'org_123',
87
+ * });
88
+ *
89
+ * // Make a request
90
+ * const response = await client.get('/v1/clips');
91
+ * ```
92
+ */
93
+ export declare class WaveClient extends EventEmitter<WaveClientEvents> {
94
+ protected readonly config: Required<Omit<WaveClientConfig, 'customHeaders' | 'telemetry'>> & {
95
+ customHeaders: Record<string, string>;
96
+ telemetry?: TelemetryConfig;
97
+ };
98
+ constructor(config: WaveClientConfig);
99
+ /**
100
+ * Make a GET request
101
+ */
102
+ get<T>(path: string, options?: RequestOptions): Promise<T>;
103
+ /**
104
+ * Make a POST request
105
+ */
106
+ post<T>(path: string, body?: unknown, options?: RequestOptions): Promise<T>;
107
+ /**
108
+ * Make a PUT request
109
+ */
110
+ put<T>(path: string, body?: unknown, options?: RequestOptions): Promise<T>;
111
+ /**
112
+ * Make a PATCH request
113
+ */
114
+ patch<T>(path: string, body?: unknown, options?: RequestOptions): Promise<T>;
115
+ /**
116
+ * Make a DELETE request
117
+ */
118
+ delete<T>(path: string, options?: RequestOptions): Promise<T>;
119
+ /**
120
+ * Make an API request with retry logic
121
+ */
122
+ protected request<T>(path: string, options?: RequestOptions): Promise<T>;
123
+ /**
124
+ * Execute request with exponential backoff retry
125
+ */
126
+ private executeWithRetry;
127
+ /**
128
+ * Fetch with timeout
129
+ */
130
+ private fetchWithTimeout;
131
+ /**
132
+ * Build request headers
133
+ */
134
+ private buildHeaders;
135
+ /**
136
+ * Parse error response
137
+ */
138
+ private parseErrorResponse;
139
+ /**
140
+ * Parse Retry-After header
141
+ */
142
+ private parseRetryAfter;
143
+ /**
144
+ * Calculate exponential backoff delay
145
+ */
146
+ private calculateBackoff;
147
+ /**
148
+ * Sleep utility
149
+ */
150
+ private sleep;
151
+ /**
152
+ * Log debug message
153
+ */
154
+ protected log(message: string, ...args: unknown[]): void;
155
+ }
156
+ /**
157
+ * Create a new WAVE client instance
158
+ */
159
+ export declare function createClient(config: WaveClientConfig): WaveClient;
160
+ /**
161
+ * Standard pagination parameters
162
+ */
163
+ export interface PaginationParams {
164
+ limit?: number;
165
+ offset?: number;
166
+ cursor?: string;
167
+ }
168
+ /**
169
+ * Standard paginated response
170
+ */
171
+ export interface PaginatedResponse<T> {
172
+ data: T[];
173
+ total: number;
174
+ has_more: boolean;
175
+ next_cursor?: string;
176
+ }
177
+ /**
178
+ * Media types supported by WAVE
179
+ */
180
+ export type MediaType = 'video' | 'audio' | 'image';
181
+ /**
182
+ * Standard timestamp fields
183
+ */
184
+ export interface Timestamps {
185
+ created_at: string;
186
+ updated_at: string;
187
+ }
188
+ /**
189
+ * Standard metadata object
190
+ */
191
+ export type Metadata = Record<string, string | number | boolean>;
@@ -0,0 +1 @@
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}