@livekit/agents-plugin-cartesia 0.0.0-next-20260624041820

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 (59) hide show
  1. package/LICENSE +201 -0
  2. package/README.md +24 -0
  3. package/dist/index.cjs +36 -0
  4. package/dist/index.cjs.map +1 -0
  5. package/dist/index.d.cts +3 -0
  6. package/dist/index.d.ts +3 -0
  7. package/dist/index.d.ts.map +1 -0
  8. package/dist/index.js +14 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/models.cjs +35 -0
  11. package/dist/models.cjs.map +1 -0
  12. package/dist/models.d.cts +27 -0
  13. package/dist/models.d.ts +27 -0
  14. package/dist/models.d.ts.map +1 -0
  15. package/dist/models.js +9 -0
  16. package/dist/models.js.map +1 -0
  17. package/dist/stt.cjs +422 -0
  18. package/dist/stt.cjs.map +1 -0
  19. package/dist/stt.d.cts +53 -0
  20. package/dist/stt.d.ts +53 -0
  21. package/dist/stt.d.ts.map +1 -0
  22. package/dist/stt.js +407 -0
  23. package/dist/stt.js.map +1 -0
  24. package/dist/stt.test.cjs +17 -0
  25. package/dist/stt.test.cjs.map +1 -0
  26. package/dist/stt.test.d.cts +2 -0
  27. package/dist/stt.test.d.ts +2 -0
  28. package/dist/stt.test.d.ts.map +1 -0
  29. package/dist/stt.test.js +16 -0
  30. package/dist/stt.test.js.map +1 -0
  31. package/dist/tts.cjs +596 -0
  32. package/dist/tts.cjs.map +1 -0
  33. package/dist/tts.d.cts +56 -0
  34. package/dist/tts.d.ts +56 -0
  35. package/dist/tts.d.ts.map +1 -0
  36. package/dist/tts.js +596 -0
  37. package/dist/tts.js.map +1 -0
  38. package/dist/tts.test.cjs +17 -0
  39. package/dist/tts.test.cjs.map +1 -0
  40. package/dist/tts.test.d.cts +2 -0
  41. package/dist/tts.test.d.ts +2 -0
  42. package/dist/tts.test.d.ts.map +1 -0
  43. package/dist/tts.test.js +16 -0
  44. package/dist/tts.test.js.map +1 -0
  45. package/dist/types.cjs +124 -0
  46. package/dist/types.cjs.map +1 -0
  47. package/dist/types.d.cts +133 -0
  48. package/dist/types.d.ts +133 -0
  49. package/dist/types.d.ts.map +1 -0
  50. package/dist/types.js +87 -0
  51. package/dist/types.js.map +1 -0
  52. package/package.json +55 -0
  53. package/src/index.ts +19 -0
  54. package/src/models.ts +77 -0
  55. package/src/stt.test.ts +19 -0
  56. package/src/stt.ts +653 -0
  57. package/src/tts.test.ts +19 -0
  58. package/src/tts.ts +799 -0
  59. package/src/types.ts +116 -0
package/src/types.ts ADDED
@@ -0,0 +1,116 @@
1
+ // SPDX-FileCopyrightText: 2025 LiveKit, Inc.
2
+ //
3
+ // SPDX-License-Identifier: Apache-2.0
4
+ import { z } from 'zod';
5
+
6
+ // ============================================================================
7
+ // Cartesia WebSocket API Schemas
8
+ // Ref: https://docs.cartesia.ai/api-reference/tts/websocket
9
+ // ============================================================================
10
+
11
+ /** Word timestamps schema - contains timing info for each word */
12
+ export const cartesiaWordTimestampsSchema = z.object({
13
+ words: z.array(z.string()),
14
+ start: z.array(z.number()),
15
+ end: z.array(z.number()),
16
+ });
17
+
18
+ /** Audio chunk message - type: "chunk" with base64-encoded audio data */
19
+ export const cartesiaChunkMessageSchema = z.object({
20
+ type: z.literal('chunk'),
21
+ data: z.string(),
22
+ done: z.boolean(),
23
+ status_code: z.number(),
24
+ step_time: z.number(),
25
+ context_id: z.string(),
26
+ });
27
+
28
+ /** Word timestamps message - type: "timestamps" with word timing data */
29
+ export const cartesiaTimestampsMessageSchema = z.object({
30
+ type: z.literal('timestamps'),
31
+ done: z.boolean(),
32
+ status_code: z.number(),
33
+ context_id: z.string(),
34
+ word_timestamps: cartesiaWordTimestampsSchema,
35
+ });
36
+
37
+ /** Done message - type: "done" indicates completion */
38
+ export const cartesiaDoneMessageSchema = z.object({
39
+ type: z.literal('done'),
40
+ done: z.boolean(),
41
+ status_code: z.number(),
42
+ context_id: z.string(),
43
+ });
44
+
45
+ /** Flush done message - type: "flush_done" indicates flush completion */
46
+ export const cartesiaFlushDoneMessageSchema = z.object({
47
+ type: z.literal('flush_done'),
48
+ done: z.boolean(),
49
+ flush_done: z.boolean(),
50
+ flush_id: z.number(),
51
+ status_code: z.number(),
52
+ context_id: z.string(),
53
+ });
54
+
55
+ /** Error message - has error field */
56
+ export const cartesiaErrorMessageSchema = z.object({
57
+ type: z.string(),
58
+ done: z.boolean(),
59
+ error: z.string(),
60
+ status_code: z.number(),
61
+ context_id: z.string(),
62
+ });
63
+
64
+ /** Union of all possible Cartesia server messages using discriminated union on 'type' */
65
+ export const cartesiaServerMessageSchema = z.discriminatedUnion('type', [
66
+ cartesiaChunkMessageSchema,
67
+ cartesiaTimestampsMessageSchema,
68
+ cartesiaDoneMessageSchema,
69
+ cartesiaFlushDoneMessageSchema,
70
+ ]);
71
+
72
+ // Fallback schema for error messages (can't be in discriminated union due to dynamic type)
73
+ export const cartesiaMessageSchema = z.union([
74
+ cartesiaServerMessageSchema,
75
+ cartesiaErrorMessageSchema,
76
+ ]);
77
+
78
+ // ============================================================================
79
+ // Type exports from Zod schemas
80
+ // ============================================================================
81
+
82
+ export type CartesiaWordTimestamps = z.infer<typeof cartesiaWordTimestampsSchema>;
83
+ export type CartesiaChunkMessage = z.infer<typeof cartesiaChunkMessageSchema>;
84
+ export type CartesiaTimestampsMessage = z.infer<typeof cartesiaTimestampsMessageSchema>;
85
+ export type CartesiaDoneMessage = z.infer<typeof cartesiaDoneMessageSchema>;
86
+ export type CartesiaFlushDoneMessage = z.infer<typeof cartesiaFlushDoneMessageSchema>;
87
+ export type CartesiaErrorMessage = z.infer<typeof cartesiaErrorMessageSchema>;
88
+ export type CartesiaServerMessage = z.infer<typeof cartesiaMessageSchema>;
89
+
90
+ // ============================================================================
91
+ // Helper type guards for message discrimination
92
+ // ============================================================================
93
+
94
+ export function isChunkMessage(msg: CartesiaServerMessage): msg is CartesiaChunkMessage {
95
+ return 'type' in msg && msg.type === 'chunk';
96
+ }
97
+
98
+ export function isTimestampsMessage(msg: CartesiaServerMessage): msg is CartesiaTimestampsMessage {
99
+ return 'type' in msg && msg.type === 'timestamps';
100
+ }
101
+
102
+ export function isDoneMessage(msg: CartesiaServerMessage): msg is CartesiaDoneMessage {
103
+ return 'type' in msg && msg.type === 'done';
104
+ }
105
+
106
+ export function isFlushDoneMessage(msg: CartesiaServerMessage): msg is CartesiaFlushDoneMessage {
107
+ return 'type' in msg && msg.type === 'flush_done';
108
+ }
109
+
110
+ export function isErrorMessage(msg: CartesiaServerMessage): msg is CartesiaErrorMessage {
111
+ return 'error' in msg && typeof msg.error === 'string';
112
+ }
113
+
114
+ export function hasWordTimestamps(msg: CartesiaServerMessage): msg is CartesiaTimestampsMessage {
115
+ return isTimestampsMessage(msg);
116
+ }