agentdial 1.0.0

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 (97) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/LICENSE +21 -0
  3. package/README.md +310 -0
  4. package/dist/adapters/discord.d.ts +24 -0
  5. package/dist/adapters/discord.d.ts.map +1 -0
  6. package/dist/adapters/discord.js +129 -0
  7. package/dist/adapters/discord.js.map +1 -0
  8. package/dist/adapters/email.d.ts +38 -0
  9. package/dist/adapters/email.d.ts.map +1 -0
  10. package/dist/adapters/email.js +187 -0
  11. package/dist/adapters/email.js.map +1 -0
  12. package/dist/adapters/index.d.ts +12 -0
  13. package/dist/adapters/index.d.ts.map +1 -0
  14. package/dist/adapters/index.js +36 -0
  15. package/dist/adapters/index.js.map +1 -0
  16. package/dist/adapters/slack.d.ts +27 -0
  17. package/dist/adapters/slack.d.ts.map +1 -0
  18. package/dist/adapters/slack.js +173 -0
  19. package/dist/adapters/slack.js.map +1 -0
  20. package/dist/adapters/telegram.d.ts +28 -0
  21. package/dist/adapters/telegram.d.ts.map +1 -0
  22. package/dist/adapters/telegram.js +155 -0
  23. package/dist/adapters/telegram.js.map +1 -0
  24. package/dist/adapters/twilio-sms.d.ts +36 -0
  25. package/dist/adapters/twilio-sms.d.ts.map +1 -0
  26. package/dist/adapters/twilio-sms.js +187 -0
  27. package/dist/adapters/twilio-sms.js.map +1 -0
  28. package/dist/adapters/twilio-whatsapp.d.ts +37 -0
  29. package/dist/adapters/twilio-whatsapp.d.ts.map +1 -0
  30. package/dist/adapters/twilio-whatsapp.js +188 -0
  31. package/dist/adapters/twilio-whatsapp.js.map +1 -0
  32. package/dist/adapters/types.d.ts +349 -0
  33. package/dist/adapters/types.d.ts.map +1 -0
  34. package/dist/adapters/types.js +82 -0
  35. package/dist/adapters/types.js.map +1 -0
  36. package/dist/adapters/voice.d.ts +54 -0
  37. package/dist/adapters/voice.d.ts.map +1 -0
  38. package/dist/adapters/voice.js +250 -0
  39. package/dist/adapters/voice.js.map +1 -0
  40. package/dist/commands/channels.d.ts +5 -0
  41. package/dist/commands/channels.d.ts.map +1 -0
  42. package/dist/commands/channels.js +188 -0
  43. package/dist/commands/channels.js.map +1 -0
  44. package/dist/commands/mcp-serve.d.ts +14 -0
  45. package/dist/commands/mcp-serve.d.ts.map +1 -0
  46. package/dist/commands/mcp-serve.js +479 -0
  47. package/dist/commands/mcp-serve.js.map +1 -0
  48. package/dist/commands/serve.d.ts +6 -0
  49. package/dist/commands/serve.d.ts.map +1 -0
  50. package/dist/commands/serve.js +128 -0
  51. package/dist/commands/serve.js.map +1 -0
  52. package/dist/commands/setup.d.ts +4 -0
  53. package/dist/commands/setup.d.ts.map +1 -0
  54. package/dist/commands/setup.js +174 -0
  55. package/dist/commands/setup.js.map +1 -0
  56. package/dist/commands/status.d.ts +4 -0
  57. package/dist/commands/status.d.ts.map +1 -0
  58. package/dist/commands/status.js +86 -0
  59. package/dist/commands/status.js.map +1 -0
  60. package/dist/commands/test.d.ts +5 -0
  61. package/dist/commands/test.d.ts.map +1 -0
  62. package/dist/commands/test.js +48 -0
  63. package/dist/commands/test.js.map +1 -0
  64. package/dist/commands/voice.d.ts +6 -0
  65. package/dist/commands/voice.d.ts.map +1 -0
  66. package/dist/commands/voice.js +192 -0
  67. package/dist/commands/voice.js.map +1 -0
  68. package/dist/index.d.ts +3 -0
  69. package/dist/index.d.ts.map +1 -0
  70. package/dist/index.js +119 -0
  71. package/dist/index.js.map +1 -0
  72. package/dist/lib/config.d.ts +7 -0
  73. package/dist/lib/config.d.ts.map +1 -0
  74. package/dist/lib/config.js +36 -0
  75. package/dist/lib/config.js.map +1 -0
  76. package/dist/lib/constants.d.ts +13 -0
  77. package/dist/lib/constants.d.ts.map +1 -0
  78. package/dist/lib/constants.js +52 -0
  79. package/dist/lib/constants.js.map +1 -0
  80. package/dist/lib/credentials.d.ts +7 -0
  81. package/dist/lib/credentials.d.ts.map +1 -0
  82. package/dist/lib/credentials.js +61 -0
  83. package/dist/lib/credentials.js.map +1 -0
  84. package/dist/lib/gateway.d.ts +27 -0
  85. package/dist/lib/gateway.d.ts.map +1 -0
  86. package/dist/lib/gateway.js +103 -0
  87. package/dist/lib/gateway.js.map +1 -0
  88. package/dist/lib/identity.d.ts +5 -0
  89. package/dist/lib/identity.d.ts.map +1 -0
  90. package/dist/lib/identity.js +36 -0
  91. package/dist/lib/identity.js.map +1 -0
  92. package/dist/lib/ui.d.ts +12 -0
  93. package/dist/lib/ui.d.ts.map +1 -0
  94. package/dist/lib/ui.js +91 -0
  95. package/dist/lib/ui.js.map +1 -0
  96. package/package.json +95 -0
  97. package/templates/IDENTITY.md +59 -0
@@ -0,0 +1,349 @@
1
+ import { z } from "zod";
2
+ export declare const ChannelTypeSchema: z.ZodEnum<["telegram", "discord", "slack", "sms", "whatsapp", "email", "voice", "teams", "messenger", "web"]>;
3
+ export type ChannelType = z.infer<typeof ChannelTypeSchema>;
4
+ export declare const GatewayMessageSchema: z.ZodObject<{
5
+ id: z.ZodString;
6
+ channel: z.ZodEnum<["telegram", "discord", "slack", "sms", "whatsapp", "email", "voice", "teams", "messenger", "web"]>;
7
+ from: z.ZodString;
8
+ text: z.ZodString;
9
+ timestamp: z.ZodNumber;
10
+ threadId: z.ZodOptional<z.ZodString>;
11
+ replyTo: z.ZodOptional<z.ZodString>;
12
+ attachments: z.ZodOptional<z.ZodArray<z.ZodObject<{
13
+ type: z.ZodEnum<["image", "audio", "video", "file"]>;
14
+ url: z.ZodString;
15
+ name: z.ZodOptional<z.ZodString>;
16
+ mimeType: z.ZodOptional<z.ZodString>;
17
+ }, "strip", z.ZodTypeAny, {
18
+ type: "image" | "audio" | "video" | "file";
19
+ url: string;
20
+ name?: string | undefined;
21
+ mimeType?: string | undefined;
22
+ }, {
23
+ type: "image" | "audio" | "video" | "file";
24
+ url: string;
25
+ name?: string | undefined;
26
+ mimeType?: string | undefined;
27
+ }>, "many">>;
28
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
29
+ }, "strip", z.ZodTypeAny, {
30
+ id: string;
31
+ channel: "telegram" | "discord" | "slack" | "sms" | "whatsapp" | "email" | "voice" | "teams" | "messenger" | "web";
32
+ from: string;
33
+ text: string;
34
+ timestamp: number;
35
+ threadId?: string | undefined;
36
+ replyTo?: string | undefined;
37
+ attachments?: {
38
+ type: "image" | "audio" | "video" | "file";
39
+ url: string;
40
+ name?: string | undefined;
41
+ mimeType?: string | undefined;
42
+ }[] | undefined;
43
+ metadata?: Record<string, unknown> | undefined;
44
+ }, {
45
+ id: string;
46
+ channel: "telegram" | "discord" | "slack" | "sms" | "whatsapp" | "email" | "voice" | "teams" | "messenger" | "web";
47
+ from: string;
48
+ text: string;
49
+ timestamp: number;
50
+ threadId?: string | undefined;
51
+ replyTo?: string | undefined;
52
+ attachments?: {
53
+ type: "image" | "audio" | "video" | "file";
54
+ url: string;
55
+ name?: string | undefined;
56
+ mimeType?: string | undefined;
57
+ }[] | undefined;
58
+ metadata?: Record<string, unknown> | undefined;
59
+ }>;
60
+ export type GatewayMessage = z.infer<typeof GatewayMessageSchema>;
61
+ export declare const ActionSchema: z.ZodObject<{
62
+ label: z.ZodString;
63
+ type: z.ZodEnum<["url", "callback", "reply"]>;
64
+ value: z.ZodString;
65
+ }, "strip", z.ZodTypeAny, {
66
+ value: string;
67
+ type: "url" | "callback" | "reply";
68
+ label: string;
69
+ }, {
70
+ value: string;
71
+ type: "url" | "callback" | "reply";
72
+ label: string;
73
+ }>;
74
+ export type Action = z.infer<typeof ActionSchema>;
75
+ export declare const RichCardSchema: z.ZodObject<{
76
+ title: z.ZodString;
77
+ description: z.ZodOptional<z.ZodString>;
78
+ imageUrl: z.ZodOptional<z.ZodString>;
79
+ actions: z.ZodOptional<z.ZodArray<z.ZodObject<{
80
+ label: z.ZodString;
81
+ type: z.ZodEnum<["url", "callback", "reply"]>;
82
+ value: z.ZodString;
83
+ }, "strip", z.ZodTypeAny, {
84
+ value: string;
85
+ type: "url" | "callback" | "reply";
86
+ label: string;
87
+ }, {
88
+ value: string;
89
+ type: "url" | "callback" | "reply";
90
+ label: string;
91
+ }>, "many">>;
92
+ }, "strip", z.ZodTypeAny, {
93
+ title: string;
94
+ description?: string | undefined;
95
+ imageUrl?: string | undefined;
96
+ actions?: {
97
+ value: string;
98
+ type: "url" | "callback" | "reply";
99
+ label: string;
100
+ }[] | undefined;
101
+ }, {
102
+ title: string;
103
+ description?: string | undefined;
104
+ imageUrl?: string | undefined;
105
+ actions?: {
106
+ value: string;
107
+ type: "url" | "callback" | "reply";
108
+ label: string;
109
+ }[] | undefined;
110
+ }>;
111
+ export type RichCard = z.infer<typeof RichCardSchema>;
112
+ export declare const GatewayResponseSchema: z.ZodObject<{
113
+ text: z.ZodString;
114
+ cards: z.ZodOptional<z.ZodArray<z.ZodObject<{
115
+ title: z.ZodString;
116
+ description: z.ZodOptional<z.ZodString>;
117
+ imageUrl: z.ZodOptional<z.ZodString>;
118
+ actions: z.ZodOptional<z.ZodArray<z.ZodObject<{
119
+ label: z.ZodString;
120
+ type: z.ZodEnum<["url", "callback", "reply"]>;
121
+ value: z.ZodString;
122
+ }, "strip", z.ZodTypeAny, {
123
+ value: string;
124
+ type: "url" | "callback" | "reply";
125
+ label: string;
126
+ }, {
127
+ value: string;
128
+ type: "url" | "callback" | "reply";
129
+ label: string;
130
+ }>, "many">>;
131
+ }, "strip", z.ZodTypeAny, {
132
+ title: string;
133
+ description?: string | undefined;
134
+ imageUrl?: string | undefined;
135
+ actions?: {
136
+ value: string;
137
+ type: "url" | "callback" | "reply";
138
+ label: string;
139
+ }[] | undefined;
140
+ }, {
141
+ title: string;
142
+ description?: string | undefined;
143
+ imageUrl?: string | undefined;
144
+ actions?: {
145
+ value: string;
146
+ type: "url" | "callback" | "reply";
147
+ label: string;
148
+ }[] | undefined;
149
+ }>, "many">>;
150
+ actions: z.ZodOptional<z.ZodArray<z.ZodObject<{
151
+ label: z.ZodString;
152
+ type: z.ZodEnum<["url", "callback", "reply"]>;
153
+ value: z.ZodString;
154
+ }, "strip", z.ZodTypeAny, {
155
+ value: string;
156
+ type: "url" | "callback" | "reply";
157
+ label: string;
158
+ }, {
159
+ value: string;
160
+ type: "url" | "callback" | "reply";
161
+ label: string;
162
+ }>, "many">>;
163
+ metadata: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
164
+ }, "strip", z.ZodTypeAny, {
165
+ text: string;
166
+ metadata?: Record<string, unknown> | undefined;
167
+ actions?: {
168
+ value: string;
169
+ type: "url" | "callback" | "reply";
170
+ label: string;
171
+ }[] | undefined;
172
+ cards?: {
173
+ title: string;
174
+ description?: string | undefined;
175
+ imageUrl?: string | undefined;
176
+ actions?: {
177
+ value: string;
178
+ type: "url" | "callback" | "reply";
179
+ label: string;
180
+ }[] | undefined;
181
+ }[] | undefined;
182
+ }, {
183
+ text: string;
184
+ metadata?: Record<string, unknown> | undefined;
185
+ actions?: {
186
+ value: string;
187
+ type: "url" | "callback" | "reply";
188
+ label: string;
189
+ }[] | undefined;
190
+ cards?: {
191
+ title: string;
192
+ description?: string | undefined;
193
+ imageUrl?: string | undefined;
194
+ actions?: {
195
+ value: string;
196
+ type: "url" | "callback" | "reply";
197
+ label: string;
198
+ }[] | undefined;
199
+ }[] | undefined;
200
+ }>;
201
+ export type GatewayResponse = z.infer<typeof GatewayResponseSchema>;
202
+ export declare const ChannelConfigSchema: z.ZodObject<{
203
+ channel: z.ZodEnum<["telegram", "discord", "slack", "sms", "whatsapp", "email", "voice", "teams", "messenger", "web"]>;
204
+ enabled: z.ZodDefault<z.ZodBoolean>;
205
+ credentials: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
206
+ webhookUrl: z.ZodOptional<z.ZodString>;
207
+ options: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
208
+ }, "strip", z.ZodTypeAny, {
209
+ channel: "telegram" | "discord" | "slack" | "sms" | "whatsapp" | "email" | "voice" | "teams" | "messenger" | "web";
210
+ enabled: boolean;
211
+ credentials?: Record<string, string> | undefined;
212
+ options?: Record<string, unknown> | undefined;
213
+ webhookUrl?: string | undefined;
214
+ }, {
215
+ channel: "telegram" | "discord" | "slack" | "sms" | "whatsapp" | "email" | "voice" | "teams" | "messenger" | "web";
216
+ credentials?: Record<string, string> | undefined;
217
+ options?: Record<string, unknown> | undefined;
218
+ enabled?: boolean | undefined;
219
+ webhookUrl?: string | undefined;
220
+ }>;
221
+ export type ChannelConfig = z.infer<typeof ChannelConfigSchema>;
222
+ export interface ChannelStatus {
223
+ channel: ChannelType;
224
+ connected: boolean;
225
+ latencyMs: number | null;
226
+ lastMessage: number | null;
227
+ error: string | null;
228
+ }
229
+ export interface ChannelAdapter {
230
+ readonly name: ChannelType;
231
+ readonly displayName: string;
232
+ readonly free: boolean;
233
+ readonly cost?: string;
234
+ readonly setupTime: string;
235
+ setup(config: ChannelConfig): Promise<void>;
236
+ connect(): Promise<void>;
237
+ disconnect(): Promise<void>;
238
+ send(to: string, response: GatewayResponse): Promise<void>;
239
+ onMessage(handler: (msg: GatewayMessage) => Promise<GatewayResponse>): void;
240
+ test(): Promise<{
241
+ ok: boolean;
242
+ error?: string;
243
+ }>;
244
+ status(): Promise<ChannelStatus>;
245
+ }
246
+ export declare const IdentityChannelSchema: z.ZodObject<{
247
+ enabled: z.ZodDefault<z.ZodBoolean>;
248
+ handle: z.ZodOptional<z.ZodString>;
249
+ webhook: z.ZodOptional<z.ZodString>;
250
+ }, "strip", z.ZodTypeAny, {
251
+ enabled: boolean;
252
+ handle?: string | undefined;
253
+ webhook?: string | undefined;
254
+ }, {
255
+ enabled?: boolean | undefined;
256
+ handle?: string | undefined;
257
+ webhook?: string | undefined;
258
+ }>;
259
+ export declare const IdentitySchema: z.ZodObject<{
260
+ name: z.ZodString;
261
+ tagline: z.ZodOptional<z.ZodString>;
262
+ version: z.ZodDefault<z.ZodString>;
263
+ agent_url: z.ZodOptional<z.ZodString>;
264
+ channels: z.ZodOptional<z.ZodRecord<z.ZodEnum<["telegram", "discord", "slack", "sms", "whatsapp", "email", "voice", "teams", "messenger", "web"]>, z.ZodObject<{
265
+ enabled: z.ZodDefault<z.ZodBoolean>;
266
+ handle: z.ZodOptional<z.ZodString>;
267
+ webhook: z.ZodOptional<z.ZodString>;
268
+ }, "strip", z.ZodTypeAny, {
269
+ enabled: boolean;
270
+ handle?: string | undefined;
271
+ webhook?: string | undefined;
272
+ }, {
273
+ enabled?: boolean | undefined;
274
+ handle?: string | undefined;
275
+ webhook?: string | undefined;
276
+ }>>>;
277
+ }, "strip", z.ZodTypeAny, {
278
+ name: string;
279
+ version: string;
280
+ tagline?: string | undefined;
281
+ agent_url?: string | undefined;
282
+ channels?: Partial<Record<"telegram" | "discord" | "slack" | "sms" | "whatsapp" | "email" | "voice" | "teams" | "messenger" | "web", {
283
+ enabled: boolean;
284
+ handle?: string | undefined;
285
+ webhook?: string | undefined;
286
+ }>> | undefined;
287
+ }, {
288
+ name: string;
289
+ tagline?: string | undefined;
290
+ version?: string | undefined;
291
+ agent_url?: string | undefined;
292
+ channels?: Partial<Record<"telegram" | "discord" | "slack" | "sms" | "whatsapp" | "email" | "voice" | "teams" | "messenger" | "web", {
293
+ enabled?: boolean | undefined;
294
+ handle?: string | undefined;
295
+ webhook?: string | undefined;
296
+ }>> | undefined;
297
+ }>;
298
+ export type Identity = z.infer<typeof IdentitySchema>;
299
+ export declare const AgentDialConfigSchema: z.ZodObject<{
300
+ identityFile: z.ZodDefault<z.ZodString>;
301
+ agentUrl: z.ZodOptional<z.ZodString>;
302
+ gatewayPort: z.ZodDefault<z.ZodNumber>;
303
+ channels: z.ZodOptional<z.ZodRecord<z.ZodEnum<["telegram", "discord", "slack", "sms", "whatsapp", "email", "voice", "teams", "messenger", "web"]>, z.ZodObject<{
304
+ channel: z.ZodEnum<["telegram", "discord", "slack", "sms", "whatsapp", "email", "voice", "teams", "messenger", "web"]>;
305
+ enabled: z.ZodDefault<z.ZodBoolean>;
306
+ credentials: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
307
+ webhookUrl: z.ZodOptional<z.ZodString>;
308
+ options: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodUnknown>>;
309
+ }, "strip", z.ZodTypeAny, {
310
+ channel: "telegram" | "discord" | "slack" | "sms" | "whatsapp" | "email" | "voice" | "teams" | "messenger" | "web";
311
+ enabled: boolean;
312
+ credentials?: Record<string, string> | undefined;
313
+ options?: Record<string, unknown> | undefined;
314
+ webhookUrl?: string | undefined;
315
+ }, {
316
+ channel: "telegram" | "discord" | "slack" | "sms" | "whatsapp" | "email" | "voice" | "teams" | "messenger" | "web";
317
+ credentials?: Record<string, string> | undefined;
318
+ options?: Record<string, unknown> | undefined;
319
+ enabled?: boolean | undefined;
320
+ webhookUrl?: string | undefined;
321
+ }>>>;
322
+ logLevel: z.ZodDefault<z.ZodEnum<["debug", "info", "warn", "error"]>>;
323
+ }, "strip", z.ZodTypeAny, {
324
+ identityFile: string;
325
+ gatewayPort: number;
326
+ logLevel: "debug" | "info" | "warn" | "error";
327
+ channels?: Partial<Record<"telegram" | "discord" | "slack" | "sms" | "whatsapp" | "email" | "voice" | "teams" | "messenger" | "web", {
328
+ channel: "telegram" | "discord" | "slack" | "sms" | "whatsapp" | "email" | "voice" | "teams" | "messenger" | "web";
329
+ enabled: boolean;
330
+ credentials?: Record<string, string> | undefined;
331
+ options?: Record<string, unknown> | undefined;
332
+ webhookUrl?: string | undefined;
333
+ }>> | undefined;
334
+ agentUrl?: string | undefined;
335
+ }, {
336
+ channels?: Partial<Record<"telegram" | "discord" | "slack" | "sms" | "whatsapp" | "email" | "voice" | "teams" | "messenger" | "web", {
337
+ channel: "telegram" | "discord" | "slack" | "sms" | "whatsapp" | "email" | "voice" | "teams" | "messenger" | "web";
338
+ credentials?: Record<string, string> | undefined;
339
+ options?: Record<string, unknown> | undefined;
340
+ enabled?: boolean | undefined;
341
+ webhookUrl?: string | undefined;
342
+ }>> | undefined;
343
+ identityFile?: string | undefined;
344
+ agentUrl?: string | undefined;
345
+ gatewayPort?: number | undefined;
346
+ logLevel?: "debug" | "info" | "warn" | "error" | undefined;
347
+ }>;
348
+ export type AgentDialConfig = z.infer<typeof AgentDialConfigSchema>;
349
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/adapters/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,82 @@
1
+ import { z } from "zod";
2
+ // ── Channel Types ──
3
+ export const ChannelTypeSchema = z.enum([
4
+ "telegram",
5
+ "discord",
6
+ "slack",
7
+ "sms",
8
+ "whatsapp",
9
+ "email",
10
+ "voice",
11
+ "teams",
12
+ "messenger",
13
+ "web",
14
+ ]);
15
+ // ── Gateway Message (incoming from any channel) ──
16
+ export const GatewayMessageSchema = z.object({
17
+ id: z.string(),
18
+ channel: ChannelTypeSchema,
19
+ from: z.string(),
20
+ text: z.string(),
21
+ timestamp: z.number(),
22
+ threadId: z.string().optional(),
23
+ replyTo: z.string().optional(),
24
+ attachments: z
25
+ .array(z.object({
26
+ type: z.enum(["image", "audio", "video", "file"]),
27
+ url: z.string(),
28
+ name: z.string().optional(),
29
+ mimeType: z.string().optional(),
30
+ }))
31
+ .optional(),
32
+ metadata: z.record(z.unknown()).optional(),
33
+ });
34
+ // ── Rich Card (for structured responses) ──
35
+ export const ActionSchema = z.object({
36
+ label: z.string(),
37
+ type: z.enum(["url", "callback", "reply"]),
38
+ value: z.string(),
39
+ });
40
+ export const RichCardSchema = z.object({
41
+ title: z.string(),
42
+ description: z.string().optional(),
43
+ imageUrl: z.string().optional(),
44
+ actions: z.array(ActionSchema).optional(),
45
+ });
46
+ // ── Gateway Response (outgoing to any channel) ──
47
+ export const GatewayResponseSchema = z.object({
48
+ text: z.string(),
49
+ cards: z.array(RichCardSchema).optional(),
50
+ actions: z.array(ActionSchema).optional(),
51
+ metadata: z.record(z.unknown()).optional(),
52
+ });
53
+ // ── Channel Config ──
54
+ export const ChannelConfigSchema = z.object({
55
+ channel: ChannelTypeSchema,
56
+ enabled: z.boolean().default(false),
57
+ credentials: z.record(z.string()).optional(),
58
+ webhookUrl: z.string().optional(),
59
+ options: z.record(z.unknown()).optional(),
60
+ });
61
+ // ── Identity (parsed from IDENTITY.md) ──
62
+ export const IdentityChannelSchema = z.object({
63
+ enabled: z.boolean().default(false),
64
+ handle: z.string().optional(),
65
+ webhook: z.string().optional(),
66
+ });
67
+ export const IdentitySchema = z.object({
68
+ name: z.string(),
69
+ tagline: z.string().optional(),
70
+ version: z.string().default("1.0.0"),
71
+ agent_url: z.string().optional(),
72
+ channels: z.record(ChannelTypeSchema, IdentityChannelSchema).optional(),
73
+ });
74
+ // ── Agent Dial Config ──
75
+ export const AgentDialConfigSchema = z.object({
76
+ identityFile: z.string().default("IDENTITY.md"),
77
+ agentUrl: z.string().optional(),
78
+ gatewayPort: z.number().default(3141),
79
+ channels: z.record(ChannelTypeSchema, ChannelConfigSchema).optional(),
80
+ logLevel: z.enum(["debug", "info", "warn", "error"]).default("info"),
81
+ });
82
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/adapters/types.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,54 @@
1
+ import type { ChannelAdapter, ChannelConfig, ChannelStatus, GatewayMessage, GatewayResponse } from "./types.js";
2
+ export type VoiceProvider = "openai-realtime" | "elevenlabs" | "deepgram" | "vapi" | "livekit" | "custom";
3
+ export interface VoiceProviderMeta {
4
+ id: VoiceProvider;
5
+ name: string;
6
+ cost: string;
7
+ description: string;
8
+ credentialKeys: string[];
9
+ }
10
+ export declare const VOICE_PROVIDERS: VoiceProviderMeta[];
11
+ export interface TwilioVoicePayload {
12
+ CallSid: string;
13
+ From: string;
14
+ To: string;
15
+ CallStatus: string;
16
+ Direction: string;
17
+ SpeechResult?: string;
18
+ Confidence?: string;
19
+ Digits?: string;
20
+ [key: string]: string | undefined;
21
+ }
22
+ export declare class VoiceAdapter implements ChannelAdapter {
23
+ readonly name: "voice";
24
+ readonly displayName = "Voice (Twilio)";
25
+ readonly free = false;
26
+ readonly cost = "$0.014/min + provider";
27
+ readonly setupTime = "5 min";
28
+ private accountSid;
29
+ private authToken;
30
+ private phoneNumber;
31
+ private webhookUrl;
32
+ private voiceProvider;
33
+ private messageHandler;
34
+ private connected;
35
+ private lastMessageTs;
36
+ setup(config: ChannelConfig): Promise<void>;
37
+ connect(): Promise<void>;
38
+ disconnect(): Promise<void>;
39
+ send(_to: string, _response: GatewayResponse): Promise<void>;
40
+ onMessage(handler: (msg: GatewayMessage) => Promise<GatewayResponse>): void;
41
+ /**
42
+ * Handle incoming Twilio voice webhook.
43
+ * Returns TwiML that gathers speech, sends it to the agent, and speaks the response.
44
+ */
45
+ handleWebhook(payload: TwilioVoicePayload): Promise<string>;
46
+ test(): Promise<{
47
+ ok: boolean;
48
+ error?: string;
49
+ }>;
50
+ status(): Promise<ChannelStatus>;
51
+ /** Current voice provider selection */
52
+ getProvider(): VoiceProvider;
53
+ }
54
+ //# sourceMappingURL=voice.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"voice.d.ts","sourceRoot":"","sources":["../../src/adapters/voice.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EACV,cAAc,EACd,aAAa,EACb,aAAa,EACb,cAAc,EACd,eAAe,EAChB,MAAM,YAAY,CAAC;AAIpB,MAAM,MAAM,aAAa,GACrB,iBAAiB,GACjB,YAAY,GACZ,UAAU,GACV,MAAM,GACN,SAAS,GACT,QAAQ,CAAC;AAEb,MAAM,WAAW,iBAAiB;IAChC,EAAE,EAAE,aAAa,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,EAAE,MAAM,CAAC;IACpB,cAAc,EAAE,MAAM,EAAE,CAAC;CAC1B;AAED,eAAO,MAAM,eAAe,EAAE,iBAAiB,EA2C9C,CAAC;AAIF,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAAC;CACnC;AA8CD,qBAAa,YAAa,YAAW,cAAc;IACjD,QAAQ,CAAC,IAAI,EAAG,OAAO,CAAU;IACjC,QAAQ,CAAC,WAAW,oBAAoB;IACxC,QAAQ,CAAC,IAAI,SAAS;IACtB,QAAQ,CAAC,IAAI,2BAA2B;IACxC,QAAQ,CAAC,SAAS,WAAW;IAE7B,OAAO,CAAC,UAAU,CAAM;IACxB,OAAO,CAAC,SAAS,CAAM;IACvB,OAAO,CAAC,WAAW,CAAM;IACzB,OAAO,CAAC,UAAU,CAAM;IACxB,OAAO,CAAC,aAAa,CAAoC;IACzD,OAAO,CAAC,cAAc,CAEN;IAChB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,aAAa,CAAuB;IAEtC,KAAK,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,IAAI,CAAC;IAoC3C,OAAO,IAAI,OAAO,CAAC,IAAI,CAAC;IAkBxB,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAI3B,IAAI,CAAC,GAAG,EAAE,MAAM,EAAE,SAAS,EAAE,eAAe,GAAG,OAAO,CAAC,IAAI,CAAC;IAOlE,SAAS,CAAC,OAAO,EAAE,CAAC,GAAG,EAAE,cAAc,KAAK,OAAO,CAAC,eAAe,CAAC,GAAG,IAAI;IAI3E;;;OAGG;IACG,aAAa,CAAC,OAAO,EAAE,kBAAkB,GAAG,OAAO,CAAC,MAAM,CAAC;IAmC3D,IAAI,IAAI,OAAO,CAAC;QAAE,EAAE,EAAE,OAAO,CAAC;QAAC,KAAK,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;IA6BhD,MAAM,IAAI,OAAO,CAAC,aAAa,CAAC;IAsBtC,uCAAuC;IACvC,WAAW,IAAI,aAAa;CAG7B"}