@skillhq/concierge 1.5.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 (138) hide show
  1. package/README.md +91 -0
  2. package/dist/cli/program.d.ts +3 -0
  3. package/dist/cli/program.d.ts.map +1 -0
  4. package/dist/cli/program.js +46 -0
  5. package/dist/cli/program.js.map +1 -0
  6. package/dist/cli/shared.d.ts +18 -0
  7. package/dist/cli/shared.d.ts.map +1 -0
  8. package/dist/cli/shared.js +2 -0
  9. package/dist/cli/shared.js.map +1 -0
  10. package/dist/cli.d.ts +3 -0
  11. package/dist/cli.d.ts.map +1 -0
  12. package/dist/cli.js +5 -0
  13. package/dist/cli.js.map +1 -0
  14. package/dist/commands/call.d.ts +7 -0
  15. package/dist/commands/call.d.ts.map +1 -0
  16. package/dist/commands/call.js +409 -0
  17. package/dist/commands/call.js.map +1 -0
  18. package/dist/commands/config.d.ts +4 -0
  19. package/dist/commands/config.d.ts.map +1 -0
  20. package/dist/commands/config.js +120 -0
  21. package/dist/commands/config.js.map +1 -0
  22. package/dist/commands/find-contact.d.ts +4 -0
  23. package/dist/commands/find-contact.d.ts.map +1 -0
  24. package/dist/commands/find-contact.js +57 -0
  25. package/dist/commands/find-contact.js.map +1 -0
  26. package/dist/commands/server.d.ts +7 -0
  27. package/dist/commands/server.d.ts.map +1 -0
  28. package/dist/commands/server.js +212 -0
  29. package/dist/commands/server.js.map +1 -0
  30. package/dist/index.d.ts +4 -0
  31. package/dist/index.d.ts.map +1 -0
  32. package/dist/index.js +3 -0
  33. package/dist/index.js.map +1 -0
  34. package/dist/lib/call/audio/mulaw.d.ts +35 -0
  35. package/dist/lib/call/audio/mulaw.d.ts.map +1 -0
  36. package/dist/lib/call/audio/mulaw.js +109 -0
  37. package/dist/lib/call/audio/mulaw.js.map +1 -0
  38. package/dist/lib/call/audio/pcm-utils.d.ts +62 -0
  39. package/dist/lib/call/audio/pcm-utils.d.ts.map +1 -0
  40. package/dist/lib/call/audio/pcm-utils.js +149 -0
  41. package/dist/lib/call/audio/pcm-utils.js.map +1 -0
  42. package/dist/lib/call/audio/resample.d.ts +34 -0
  43. package/dist/lib/call/audio/resample.d.ts.map +1 -0
  44. package/dist/lib/call/audio/resample.js +97 -0
  45. package/dist/lib/call/audio/resample.js.map +1 -0
  46. package/dist/lib/call/audio/streaming-decoder.d.ts +45 -0
  47. package/dist/lib/call/audio/streaming-decoder.d.ts.map +1 -0
  48. package/dist/lib/call/audio/streaming-decoder.js +110 -0
  49. package/dist/lib/call/audio/streaming-decoder.js.map +1 -0
  50. package/dist/lib/call/call-server.d.ts +110 -0
  51. package/dist/lib/call/call-server.d.ts.map +1 -0
  52. package/dist/lib/call/call-server.js +681 -0
  53. package/dist/lib/call/call-server.js.map +1 -0
  54. package/dist/lib/call/call-session.d.ts +133 -0
  55. package/dist/lib/call/call-session.d.ts.map +1 -0
  56. package/dist/lib/call/call-session.js +890 -0
  57. package/dist/lib/call/call-session.js.map +1 -0
  58. package/dist/lib/call/call-types.d.ts +133 -0
  59. package/dist/lib/call/call-types.d.ts.map +1 -0
  60. package/dist/lib/call/call-types.js +16 -0
  61. package/dist/lib/call/call-types.js.map +1 -0
  62. package/dist/lib/call/conversation-ai.d.ts +56 -0
  63. package/dist/lib/call/conversation-ai.d.ts.map +1 -0
  64. package/dist/lib/call/conversation-ai.js +276 -0
  65. package/dist/lib/call/conversation-ai.js.map +1 -0
  66. package/dist/lib/call/eval/codec-test.d.ts +45 -0
  67. package/dist/lib/call/eval/codec-test.d.ts.map +1 -0
  68. package/dist/lib/call/eval/codec-test.js +169 -0
  69. package/dist/lib/call/eval/codec-test.js.map +1 -0
  70. package/dist/lib/call/eval/conversation-scripts.d.ts +55 -0
  71. package/dist/lib/call/eval/conversation-scripts.d.ts.map +1 -0
  72. package/dist/lib/call/eval/conversation-scripts.js +359 -0
  73. package/dist/lib/call/eval/conversation-scripts.js.map +1 -0
  74. package/dist/lib/call/eval/eval-runner.d.ts +64 -0
  75. package/dist/lib/call/eval/eval-runner.d.ts.map +1 -0
  76. package/dist/lib/call/eval/eval-runner.js +369 -0
  77. package/dist/lib/call/eval/eval-runner.js.map +1 -0
  78. package/dist/lib/call/eval/index.d.ts +9 -0
  79. package/dist/lib/call/eval/index.d.ts.map +1 -0
  80. package/dist/lib/call/eval/index.js +9 -0
  81. package/dist/lib/call/eval/index.js.map +1 -0
  82. package/dist/lib/call/eval/integration-test-suite.d.ts +71 -0
  83. package/dist/lib/call/eval/integration-test-suite.d.ts.map +1 -0
  84. package/dist/lib/call/eval/integration-test-suite.js +519 -0
  85. package/dist/lib/call/eval/integration-test-suite.js.map +1 -0
  86. package/dist/lib/call/eval/turn-taking-test.d.ts +84 -0
  87. package/dist/lib/call/eval/turn-taking-test.d.ts.map +1 -0
  88. package/dist/lib/call/eval/turn-taking-test.js +260 -0
  89. package/dist/lib/call/eval/turn-taking-test.js.map +1 -0
  90. package/dist/lib/call/index.d.ts +12 -0
  91. package/dist/lib/call/index.d.ts.map +1 -0
  92. package/dist/lib/call/index.js +17 -0
  93. package/dist/lib/call/index.js.map +1 -0
  94. package/dist/lib/call/providers/deepgram.d.ts +81 -0
  95. package/dist/lib/call/providers/deepgram.d.ts.map +1 -0
  96. package/dist/lib/call/providers/deepgram.js +279 -0
  97. package/dist/lib/call/providers/deepgram.js.map +1 -0
  98. package/dist/lib/call/providers/elevenlabs.d.ts +78 -0
  99. package/dist/lib/call/providers/elevenlabs.d.ts.map +1 -0
  100. package/dist/lib/call/providers/elevenlabs.js +272 -0
  101. package/dist/lib/call/providers/elevenlabs.js.map +1 -0
  102. package/dist/lib/call/providers/local-deps.d.ts +18 -0
  103. package/dist/lib/call/providers/local-deps.d.ts.map +1 -0
  104. package/dist/lib/call/providers/local-deps.js +114 -0
  105. package/dist/lib/call/providers/local-deps.js.map +1 -0
  106. package/dist/lib/call/providers/twilio.d.ts +53 -0
  107. package/dist/lib/call/providers/twilio.d.ts.map +1 -0
  108. package/dist/lib/call/providers/twilio.js +173 -0
  109. package/dist/lib/call/providers/twilio.js.map +1 -0
  110. package/dist/lib/concierge-client-types.d.ts +68 -0
  111. package/dist/lib/concierge-client-types.d.ts.map +1 -0
  112. package/dist/lib/concierge-client-types.js +2 -0
  113. package/dist/lib/concierge-client-types.js.map +1 -0
  114. package/dist/lib/concierge-client.d.ts +29 -0
  115. package/dist/lib/concierge-client.d.ts.map +1 -0
  116. package/dist/lib/concierge-client.js +534 -0
  117. package/dist/lib/concierge-client.js.map +1 -0
  118. package/dist/lib/config.d.ts +9 -0
  119. package/dist/lib/config.d.ts.map +1 -0
  120. package/dist/lib/config.js +66 -0
  121. package/dist/lib/config.js.map +1 -0
  122. package/dist/lib/output.d.ts +7 -0
  123. package/dist/lib/output.d.ts.map +1 -0
  124. package/dist/lib/output.js +114 -0
  125. package/dist/lib/output.js.map +1 -0
  126. package/dist/lib/utils/contact-extractor.d.ts +12 -0
  127. package/dist/lib/utils/contact-extractor.d.ts.map +1 -0
  128. package/dist/lib/utils/contact-extractor.js +159 -0
  129. package/dist/lib/utils/contact-extractor.js.map +1 -0
  130. package/dist/lib/utils/formatters.d.ts +15 -0
  131. package/dist/lib/utils/formatters.d.ts.map +1 -0
  132. package/dist/lib/utils/formatters.js +107 -0
  133. package/dist/lib/utils/formatters.js.map +1 -0
  134. package/dist/lib/utils/url-parser.d.ts +11 -0
  135. package/dist/lib/utils/url-parser.d.ts.map +1 -0
  136. package/dist/lib/utils/url-parser.js +103 -0
  137. package/dist/lib/utils/url-parser.js.map +1 -0
  138. package/package.json +67 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"call-session.js","sourceRoot":"","sources":["../../../src/lib/call/call-session.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,133 @@
1
+ /**
2
+ * Type definitions for the voice call system
3
+ */
4
+ export type CallStatus = 'initiating' | 'ringing' | 'in-progress' | 'completed' | 'failed' | 'busy' | 'no-answer' | 'canceled';
5
+ export interface CallConfig {
6
+ twilioAccountSid: string;
7
+ twilioAuthToken: string;
8
+ twilioPhoneNumber: string;
9
+ deepgramApiKey: string;
10
+ elevenLabsApiKey: string;
11
+ elevenLabsVoiceId: string;
12
+ anthropicApiKey: string;
13
+ serverPort: number;
14
+ publicUrl: string;
15
+ }
16
+ export declare function validateCallConfig(config: Partial<CallConfig>): config is CallConfig;
17
+ export interface CallRequest {
18
+ phoneNumber: string;
19
+ goal: string;
20
+ context?: string;
21
+ }
22
+ export interface CallState {
23
+ callId: string;
24
+ callSid?: string;
25
+ phoneNumber: string;
26
+ goal: string;
27
+ context?: string;
28
+ status: CallStatus;
29
+ startedAt: Date;
30
+ endedAt?: Date;
31
+ transcript: TranscriptEntry[];
32
+ summary?: string;
33
+ }
34
+ export interface TranscriptEntry {
35
+ role: 'assistant' | 'human';
36
+ text: string;
37
+ timestamp: Date;
38
+ isFinal: boolean;
39
+ }
40
+ export type ServerMessage = {
41
+ type: 'call_started';
42
+ callId: string;
43
+ callSid?: string;
44
+ } | {
45
+ type: 'call_ringing';
46
+ callId: string;
47
+ } | {
48
+ type: 'call_connected';
49
+ callId: string;
50
+ } | {
51
+ type: 'transcript';
52
+ callId: string;
53
+ text: string;
54
+ role: 'assistant' | 'human';
55
+ isFinal: boolean;
56
+ } | {
57
+ type: 'call_ended';
58
+ callId: string;
59
+ summary: string;
60
+ status: CallStatus;
61
+ } | {
62
+ type: 'error';
63
+ callId?: string;
64
+ message: string;
65
+ };
66
+ export type ClientMessage = {
67
+ type: 'initiate_call';
68
+ phoneNumber: string;
69
+ goal: string;
70
+ context?: string;
71
+ } | {
72
+ type: 'speak';
73
+ callId: string;
74
+ text: string;
75
+ } | {
76
+ type: 'hangup';
77
+ callId: string;
78
+ };
79
+ export interface TwilioMediaMessage {
80
+ event: 'connected' | 'start' | 'media' | 'stop' | 'mark';
81
+ sequenceNumber?: string;
82
+ streamSid?: string;
83
+ start?: {
84
+ streamSid: string;
85
+ accountSid: string;
86
+ callSid: string;
87
+ tracks: string[];
88
+ customParameters: Record<string, string>;
89
+ mediaFormat: {
90
+ encoding: string;
91
+ sampleRate: number;
92
+ channels: number;
93
+ };
94
+ };
95
+ media?: {
96
+ track: 'inbound' | 'outbound';
97
+ chunk: string;
98
+ timestamp: string;
99
+ payload: string;
100
+ };
101
+ mark?: {
102
+ name: string;
103
+ };
104
+ stop?: {
105
+ accountSid: string;
106
+ callSid: string;
107
+ };
108
+ }
109
+ export interface TwilioVoiceWebhook {
110
+ CallSid: string;
111
+ AccountSid: string;
112
+ From: string;
113
+ To: string;
114
+ CallStatus: 'queued' | 'ringing' | 'in-progress' | 'completed' | 'busy' | 'failed' | 'no-answer' | 'canceled';
115
+ ApiVersion: string;
116
+ Direction: 'inbound' | 'outbound-api' | 'outbound-dial';
117
+ ForwardedFrom?: string;
118
+ CallerName?: string;
119
+ ParentCallSid?: string;
120
+ Duration?: string;
121
+ CallDuration?: string;
122
+ }
123
+ export interface ElevenLabsVoiceSettings {
124
+ stability: number;
125
+ similarity_boost: number;
126
+ style?: number;
127
+ use_speaker_boost?: boolean;
128
+ }
129
+ export interface AudioChunk {
130
+ data: Buffer;
131
+ timestamp: number;
132
+ }
133
+ //# sourceMappingURL=call-types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"call-types.d.ts","sourceRoot":"","sources":["../../../src/lib/call/call-types.ts"],"names":[],"mappings":"AAAA;;GAEG;AAGH,MAAM,MAAM,UAAU,GAClB,YAAY,GACZ,SAAS,GACT,aAAa,GACb,WAAW,GACX,QAAQ,GACR,MAAM,GACN,WAAW,GACX,UAAU,CAAC;AAGf,MAAM,WAAW,UAAU;IACzB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,cAAc,EAAE,MAAM,CAAC;IACvB,gBAAgB,EAAE,MAAM,CAAC;IACzB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,eAAe,EAAE,MAAM,CAAC;IACxB,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,MAAM,CAAC;CACnB;AAGD,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,OAAO,CAAC,UAAU,CAAC,GAAG,MAAM,IAAI,UAAU,CAYpF;AAGD,MAAM,WAAW,WAAW;IAC1B,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAGD,MAAM,WAAW,SAAS;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,UAAU,CAAC;IACnB,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,CAAC,EAAE,IAAI,CAAC;IACf,UAAU,EAAE,eAAe,EAAE,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAGD,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,IAAI,CAAC;IAChB,OAAO,EAAE,OAAO,CAAC;CAClB;AAGD,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAC1D;IAAE,IAAI,EAAE,cAAc,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GACxC;IAAE,IAAI,EAAE,gBAAgB,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,GAC1C;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,WAAW,GAAG,OAAO,CAAC;IAAC,OAAO,EAAE,OAAO,CAAA;CAAE,GACnG;IAAE,IAAI,EAAE,YAAY,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,UAAU,CAAA;CAAE,GAC3E;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAA;CAAE,CAAC;AAGxD,MAAM,MAAM,aAAa,GACrB;IAAE,IAAI,EAAE,eAAe,CAAC;IAAC,WAAW,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,CAAC,EAAE,MAAM,CAAA;CAAE,GAC9E;IAAE,IAAI,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,CAAC;IAAC,IAAI,EAAE,MAAM,CAAA;CAAE,GAC/C;IAAE,IAAI,EAAE,QAAQ,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,CAAC;AAGvC,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,WAAW,GAAG,OAAO,GAAG,OAAO,GAAG,MAAM,GAAG,MAAM,CAAC;IACzD,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE;QACN,SAAS,EAAE,MAAM,CAAC;QAClB,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;QAChB,MAAM,EAAE,MAAM,EAAE,CAAC;QACjB,gBAAgB,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;QACzC,WAAW,EAAE;YACX,QAAQ,EAAE,MAAM,CAAC;YACjB,UAAU,EAAE,MAAM,CAAC;YACnB,QAAQ,EAAE,MAAM,CAAC;SAClB,CAAC;KACH,CAAC;IACF,KAAK,CAAC,EAAE;QACN,KAAK,EAAE,SAAS,GAAG,UAAU,CAAC;QAC9B,KAAK,EAAE,MAAM,CAAC;QACd,SAAS,EAAE,MAAM,CAAC;QAClB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,IAAI,CAAC,EAAE;QACL,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,IAAI,CAAC,EAAE;QACL,UAAU,EAAE,MAAM,CAAC;QACnB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAGD,MAAM,WAAW,kBAAkB;IACjC,OAAO,EAAE,MAAM,CAAC;IAChB,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,EAAE,EAAE,MAAM,CAAC;IACX,UAAU,EAAE,QAAQ,GAAG,SAAS,GAAG,aAAa,GAAG,WAAW,GAAG,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,UAAU,CAAC;IAC9G,UAAU,EAAE,MAAM,CAAC;IACnB,SAAS,EAAE,SAAS,GAAG,cAAc,GAAG,eAAe,CAAC;IACxD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAGD,MAAM,WAAW,uBAAuB;IACtC,SAAS,EAAE,MAAM,CAAC;IAClB,gBAAgB,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B;AAGD,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;CACnB"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * Type definitions for the voice call system
3
+ */
4
+ // Validate call config has all required fields
5
+ export function validateCallConfig(config) {
6
+ return !!(config.twilioAccountSid &&
7
+ config.twilioAuthToken &&
8
+ config.twilioPhoneNumber &&
9
+ config.deepgramApiKey &&
10
+ config.elevenLabsApiKey &&
11
+ config.elevenLabsVoiceId &&
12
+ config.anthropicApiKey &&
13
+ config.serverPort &&
14
+ config.publicUrl);
15
+ }
16
+ //# sourceMappingURL=call-types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"call-types.js","sourceRoot":"","sources":["../../../src/lib/call/call-types.ts"],"names":[],"mappings":"AAAA;;GAEG;AA0BH,+CAA+C;AAC/C,MAAM,UAAU,kBAAkB,CAAC,MAA2B;IAC5D,OAAO,CAAC,CAAC,CACP,MAAM,CAAC,gBAAgB;QACvB,MAAM,CAAC,eAAe;QACtB,MAAM,CAAC,iBAAiB;QACxB,MAAM,CAAC,cAAc;QACrB,MAAM,CAAC,gBAAgB;QACvB,MAAM,CAAC,iBAAiB;QACxB,MAAM,CAAC,eAAe;QACtB,MAAM,CAAC,UAAU;QACjB,MAAM,CAAC,SAAS,CACjB,CAAC;AACJ,CAAC"}
@@ -0,0 +1,56 @@
1
+ /**
2
+ * AI Conversation Manager - Uses Claude to generate responses
3
+ */
4
+ export interface ConversationMessage {
5
+ role: 'user' | 'assistant';
6
+ content: string;
7
+ }
8
+ export interface ConversationConfig {
9
+ apiKey: string;
10
+ goal: string;
11
+ context?: string;
12
+ model?: string;
13
+ }
14
+ export interface TurnContext {
15
+ shortAcknowledgement?: boolean;
16
+ lastAssistantUtterance?: string;
17
+ lastAssistantQuestion?: string;
18
+ }
19
+ export declare function isLikelyShortAcknowledgement(text: string): boolean;
20
+ export declare function extractMostRecentQuestion(text: string): string | undefined;
21
+ export declare class ConversationAI {
22
+ private client;
23
+ private messages;
24
+ private readonly goal;
25
+ private readonly context;
26
+ private readonly model;
27
+ private isComplete;
28
+ constructor(config: ConversationConfig);
29
+ /**
30
+ * Generate the initial greeting
31
+ * NOTE: Greeting should NEVER mark conversation as complete
32
+ */
33
+ getGreeting(): Promise<string>;
34
+ /**
35
+ * Generate a response to what the human said
36
+ */
37
+ respond(humanSaid: string, turnContext?: TurnContext): Promise<string | null>;
38
+ /**
39
+ * Internal method to call Claude and get a response
40
+ */
41
+ private formatApiError;
42
+ private generateResponse;
43
+ /**
44
+ * Check if the conversation is complete
45
+ */
46
+ get complete(): boolean;
47
+ /**
48
+ * Get conversation history
49
+ */
50
+ getHistory(): ConversationMessage[];
51
+ /**
52
+ * Mark the conversation as complete (e.g., if human hangs up)
53
+ */
54
+ markComplete(): void;
55
+ }
56
+ //# sourceMappingURL=conversation-ai.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-ai.d.ts","sourceRoot":"","sources":["../../../src/lib/call/conversation-ai.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,MAAM,GAAG,WAAW,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,WAAW,WAAW;IAC1B,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,sBAAsB,CAAC,EAAE,MAAM,CAAC;IAChC,qBAAqB,CAAC,EAAE,MAAM,CAAC;CAChC;AAqBD,wBAAgB,4BAA4B,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAWlE;AAED,wBAAgB,yBAAyB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAU1E;AA+FD,qBAAa,cAAc;IACzB,OAAO,CAAC,MAAM,CAAY;IAC1B,OAAO,CAAC,QAAQ,CAA6B;IAC7C,OAAO,CAAC,QAAQ,CAAC,IAAI,CAAS;IAC9B,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,UAAU,CAAS;gBAEf,MAAM,EAAE,kBAAkB;IAQtC;;;OAGG;IACG,WAAW,IAAI,OAAO,CAAC,MAAM,CAAC;IAwBpC;;OAEG;IACG,OAAO,CAAC,SAAS,EAAE,MAAM,EAAE,WAAW,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC;IA6BnF;;OAEG;IACH,OAAO,CAAC,cAAc;YAiBR,gBAAgB;IA6C9B;;OAEG;IACH,IAAI,QAAQ,IAAI,OAAO,CAEtB;IAED;;OAEG;IACH,UAAU,IAAI,mBAAmB,EAAE;IAInC;;OAEG;IACH,YAAY,IAAI,IAAI;CAGrB"}
@@ -0,0 +1,276 @@
1
+ /**
2
+ * AI Conversation Manager - Uses Claude to generate responses
3
+ */
4
+ import Anthropic from '@anthropic-ai/sdk';
5
+ const SHORT_ACK_VALUES = new Set([
6
+ 'yes',
7
+ 'yeah',
8
+ 'yep',
9
+ 'yup',
10
+ 'sure',
11
+ 'ok',
12
+ 'okay',
13
+ 'true',
14
+ 'correct',
15
+ 'right',
16
+ 'no',
17
+ 'nope',
18
+ 'nah',
19
+ 'mmhmm',
20
+ 'mhm',
21
+ 'uhhuh',
22
+ ]);
23
+ export function isLikelyShortAcknowledgement(text) {
24
+ const normalized = text
25
+ .toLowerCase()
26
+ .replace(/[^a-z0-9\s]/g, ' ')
27
+ .replace(/\s+/g, ' ')
28
+ .trim();
29
+ if (!normalized)
30
+ return false;
31
+ const words = normalized.split(' ');
32
+ if (words.length > 4)
33
+ return false;
34
+ return words.every((word) => SHORT_ACK_VALUES.has(word));
35
+ }
36
+ export function extractMostRecentQuestion(text) {
37
+ const trimmed = text.trim();
38
+ if (!trimmed || !trimmed.includes('?'))
39
+ return undefined;
40
+ const segments = trimmed
41
+ .split(/(?<=[?!.])\s+/)
42
+ .map((segment) => segment.trim())
43
+ .filter(Boolean);
44
+ const question = [...segments].reverse().find((segment) => segment.includes('?'));
45
+ return question;
46
+ }
47
+ const SYSTEM_PROMPT = `You are an AI assistant making a phone call on behalf of a customer. YOU are the caller seeking assistance - the person who answers is the one providing service to you.
48
+
49
+ CRITICAL ROLE REMINDER - READ THIS CAREFULLY:
50
+ - YOU are calling THEM for help - you are the customer/caller
51
+ - THEY work at the hotel/restaurant - THEY make bookings, THEY have confirmation numbers
52
+ - NEVER switch roles mid-conversation - you are ALWAYS the customer
53
+
54
+ THINGS YOU SHOULD NEVER SAY (these are hotel employee phrases):
55
+ - "Does this all look correct to you?" - backwards, YOU should ask THEM to confirm
56
+ - "Please let me know if you need anything else from me" - backwards, THEY serve YOU
57
+ - "I've noted all the details" - YOU don't take notes, THEY do
58
+ - "How can I assist/help you?" - backwards, they help you
59
+ - Any phrase that sounds like YOU are the service provider
60
+
61
+ THINGS YOU SHOULD SAY INSTEAD:
62
+ - "Could you please confirm the booking is complete?"
63
+ - "What's the confirmation number?"
64
+ - "Could you send the confirmation to [email]?"
65
+ - "Is there anything else you need from me to complete the booking?"
66
+ - "Thank you for your help!"
67
+
68
+ AI DISCLOSURE:
69
+ - In your greeting, clearly state you are an AI assistant calling on behalf of a customer
70
+ - Example: "Hi, this is an AI assistant calling on behalf of [customer name]. I'm hoping to book a room at your hotel."
71
+ - Be upfront about being an AI - never try to hide it
72
+ - If asked about being an AI, confirm it honestly
73
+
74
+ VOICE-FRIENDLY FORMATTING:
75
+ - Spell out numbers for dates: "March twelfth to fourteenth" not "March 12-14"
76
+ - Spell out prices clearly: "three hundred ninety-three dollars" or "three fifty"
77
+ - Don't use abbreviations: say "okay" not "OK", "dollars" not "$"
78
+ - Avoid symbols that don't speak well
79
+
80
+ SPELLING OUT CONTACT INFORMATION:
81
+ When providing customer contact info, spell it out clearly for the listener:
82
+
83
+ For EMAIL addresses:
84
+ - Say it phonetically: "john dot smith at gmail dot com"
85
+ - Spell unusual parts: "That's J-O-H-N dot S-M-I-T-H at gmail dot com"
86
+ - Always clarify common confusions: "dot" not "period", "at" not "@"
87
+
88
+ For PHONE numbers:
89
+ - Say digits in groups: "five five five, one two three, four five six seven"
90
+ - Use words for clarity: "area code five five five, then one two three, four five six seven"
91
+
92
+ For NAMES:
93
+ - Offer to spell unusual names: "Smith, that's S-M-I-T-H"
94
+ - Confirm spelling if asked: "Yes, John is J-O-H-N"
95
+
96
+ CONVERSATION GUIDELINES:
97
+ 1. Keep responses SHORT (prefer 1 sentence; 2 max) - this is voice, not text
98
+ 2. Don't repeat information you've already stated - the human heard you
99
+ 3. Listen and respond to what they JUST said, don't rehash the whole context
100
+ 4. Be polite but efficient
101
+ 5. Don't say "um", "uh", or filler words
102
+ 6. If asked to hold, say "Sure, I'll hold"
103
+ 7. Keep most turns under ~30 words (except when spelling an email/phone)
104
+ 8. Ask only ONE question per turn unless absolutely necessary
105
+ 9. If the human gives a very short acknowledgement ("yes", "sure", "true"), treat it as answering your most recent question and move to the next step
106
+
107
+ AVOID REPETITION:
108
+ - Once you've stated the dates, price, or room name, don't keep repeating them
109
+ - Trust that the human remembers the context
110
+ - Only restate details if they specifically ask for clarification
111
+ - Each response should ADD new information or move the conversation forward
112
+ - Avoid repetitive enthusiasm ("wonderful", "perfect", "excellent") on every turn
113
+ - If they say "yes/no", acknowledge briefly and ask only the next required detail
114
+ - After a detail is confirmed, don't ask to reconfirm the same detail again
115
+
116
+ COMPLETING A BOOKING:
117
+ When the hotel/restaurant agrees to the booking, YOU should:
118
+ 1. Ask for the confirmation number (they give it to you, not the other way around)
119
+ 2. Provide the customer's email for the confirmation to be sent
120
+ 3. Ask if they need anything else to complete it (phone number, credit card on file, etc.)
121
+ 4. Thank THEM for their help
122
+
123
+ Example good closing:
124
+ "Great! Could you please send the confirmation to derek at example dot com? And what's the confirmation number for my records?"
125
+
126
+ Example BAD closing (never do this):
127
+ "I've noted all the details. Does this look correct to you? Let me know if you need anything else."
128
+
129
+ EXAMPLE CONCISE STYLE:
130
+ - Good: "Great, thanks. Please send the payment link to alexanderderekrein at gmail dot com."
131
+ - Too verbose: "Wonderful, that's excellent, thank you so much. Just to confirm everything again..."
132
+
133
+ ENDING THE CALL:
134
+ - Only include [CALL_COMPLETE] when the goal is FULLY achieved
135
+ - NEVER use [CALL_COMPLETE] on your first message
136
+ - NEVER use [CALL_COMPLETE] until after at least 2-3 exchanges
137
+ - Put [CALL_COMPLETE] at the very END of your final message
138
+ - Before ending, make sure you GOT a confirmation number FROM them`;
139
+ export class ConversationAI {
140
+ client;
141
+ messages = [];
142
+ goal;
143
+ context;
144
+ model;
145
+ isComplete = false;
146
+ constructor(config) {
147
+ this.client = new Anthropic({ apiKey: config.apiKey });
148
+ this.goal = config.goal;
149
+ this.context = config.context || '';
150
+ // Use a fast current Haiku model for phone-call latency.
151
+ this.model = config.model || 'claude-haiku-4-5';
152
+ }
153
+ /**
154
+ * Generate the initial greeting
155
+ * NOTE: Greeting should NEVER mark conversation as complete
156
+ */
157
+ async getGreeting() {
158
+ const userMessage = `[CALL STARTED - YOU ARE THE CALLER]
159
+ Goal: ${this.goal}
160
+ ${this.context ? `Context: ${this.context}` : ''}
161
+
162
+ Generate a brief greeting to start the call. Remember:
163
+ - YOU are calling THEM - you are the customer seeking their help
164
+ - Introduce yourself as an AI assistant calling on behalf of a customer
165
+ - State your general purpose (e.g., "I'm calling about booking a room")
166
+ - Do NOT ask "How can I assist you?" - YOU need THEIR assistance
167
+ - Do NOT include [CALL_COMPLETE]
168
+ - Keep it to 1 sentence when possible (2 max), ideally under 30 words`;
169
+ const response = await this.generateResponse(userMessage);
170
+ // Safety: Never allow greeting to mark conversation complete
171
+ if (this.isComplete) {
172
+ console.log('[ConversationAI] WARNING: Greeting tried to mark complete - resetting');
173
+ this.isComplete = false;
174
+ }
175
+ return response;
176
+ }
177
+ /**
178
+ * Generate a response to what the human said
179
+ */
180
+ async respond(humanSaid, turnContext) {
181
+ if (this.isComplete) {
182
+ return null;
183
+ }
184
+ if (!turnContext?.shortAcknowledgement) {
185
+ return this.generateResponse(humanSaid);
186
+ }
187
+ const contextLines = [
188
+ '[TURN CONTEXT]',
189
+ 'The human gave a short acknowledgement likely answering your most recent question.',
190
+ ];
191
+ if (turnContext.lastAssistantQuestion) {
192
+ contextLines.push(`Most recent question you asked: "${turnContext.lastAssistantQuestion}"`);
193
+ }
194
+ else if (turnContext.lastAssistantUtterance) {
195
+ contextLines.push(`Your previous spoken turn: "${turnContext.lastAssistantUtterance}"`);
196
+ }
197
+ contextLines.push('Interpret the acknowledgement as a direct answer to your latest question, then proceed to exactly one next question without rehashing earlier context.', '', `Human said: ${humanSaid}`);
198
+ return this.generateResponse(contextLines.join('\n'));
199
+ }
200
+ /**
201
+ * Internal method to call Claude and get a response
202
+ */
203
+ formatApiError(error) {
204
+ if (error instanceof Error) {
205
+ const maybeApiError = error;
206
+ const parts = [];
207
+ if (maybeApiError.name)
208
+ parts.push(maybeApiError.name);
209
+ if (typeof maybeApiError.status === 'number')
210
+ parts.push(`HTTP ${maybeApiError.status}`);
211
+ if (maybeApiError.error?.type)
212
+ parts.push(maybeApiError.error.type);
213
+ parts.push(maybeApiError.error?.message ?? maybeApiError.message);
214
+ return parts.filter(Boolean).join(' | ');
215
+ }
216
+ return String(error);
217
+ }
218
+ async generateResponse(userInput) {
219
+ // Add user message to history
220
+ this.messages.push({ role: 'user', content: userInput });
221
+ const systemWithGoal = `${SYSTEM_PROMPT}
222
+
223
+ YOUR GOAL FOR THIS CALL: ${this.goal}
224
+ ${this.context ? `ADDITIONAL CONTEXT: ${this.context}` : ''}`;
225
+ try {
226
+ const response = await this.client.messages.create({
227
+ model: this.model,
228
+ max_tokens: 150, // Keep responses short for voice
229
+ system: systemWithGoal,
230
+ messages: this.messages,
231
+ });
232
+ // Extract text response
233
+ let text = '';
234
+ for (const block of response.content) {
235
+ if (block.type === 'text') {
236
+ text += block.text;
237
+ }
238
+ }
239
+ // Check if call should end
240
+ if (text.includes('[CALL_COMPLETE]')) {
241
+ this.isComplete = true;
242
+ text = text.replace('[CALL_COMPLETE]', '').trim();
243
+ }
244
+ // Add assistant response to history
245
+ this.messages.push({ role: 'assistant', content: text });
246
+ return text;
247
+ }
248
+ catch (error) {
249
+ const details = this.formatApiError(error);
250
+ console.error(`[ConversationAI] Error: ${details}`);
251
+ // Remove the user message we just added since we failed to respond.
252
+ // Don't add fallback text to history - it pollutes the context.
253
+ this.messages.pop();
254
+ throw new Error(`Conversation AI request failed: ${details}`);
255
+ }
256
+ }
257
+ /**
258
+ * Check if the conversation is complete
259
+ */
260
+ get complete() {
261
+ return this.isComplete;
262
+ }
263
+ /**
264
+ * Get conversation history
265
+ */
266
+ getHistory() {
267
+ return [...this.messages];
268
+ }
269
+ /**
270
+ * Mark the conversation as complete (e.g., if human hangs up)
271
+ */
272
+ markComplete() {
273
+ this.isComplete = true;
274
+ }
275
+ }
276
+ //# sourceMappingURL=conversation-ai.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"conversation-ai.js","sourceRoot":"","sources":["../../../src/lib/call/conversation-ai.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,45 @@
1
+ /**
2
+ * Codec Integration Test
3
+ *
4
+ * Verifies that the audio pipeline produces valid µ-law audio:
5
+ * 1. ElevenLabs TTS → MP3 (always, regardless of output_format)
6
+ * 2. ffmpeg streaming decoder → µ-law 8kHz
7
+ * 3. Validate µ-law format and duration
8
+ *
9
+ * This catches regressions like:
10
+ * - Wrong codec (sending MP3 as µ-law)
11
+ * - Sample rate mismatches
12
+ * - Truncated audio
13
+ */
14
+ export interface CodecTestResult {
15
+ success: boolean;
16
+ inputFormat: string;
17
+ inputSize: number;
18
+ outputFormat: string;
19
+ outputSize: number;
20
+ expectedDurationMs: number;
21
+ actualDurationMs: number;
22
+ durationMatchesExpected: boolean;
23
+ isValidMulaw: boolean;
24
+ errors: string[];
25
+ }
26
+ /**
27
+ * Validate that data looks like valid µ-law audio
28
+ * µ-law has specific characteristics:
29
+ * - Single byte per sample
30
+ * - Values distributed across 0-255 range (compressed)
31
+ * - 8kHz sample rate
32
+ */
33
+ export declare function validateMulawFormat(data: Buffer): {
34
+ valid: boolean;
35
+ reason?: string;
36
+ };
37
+ /**
38
+ * Test the streaming decoder with known MP3 input
39
+ */
40
+ export declare function testStreamingDecoder(mp3Data: Buffer, expectedDurationMs: number, toleranceMs?: number): Promise<CodecTestResult>;
41
+ /**
42
+ * Test the full TTS pipeline
43
+ */
44
+ export declare function testTTSPipeline(text: string, apiKey: string, voiceId: string): Promise<CodecTestResult>;
45
+ //# sourceMappingURL=codec-test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"codec-test.d.ts","sourceRoot":"","sources":["../../../../src/lib/call/eval/codec-test.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAIH,MAAM,WAAW,eAAe;IAC9B,OAAO,EAAE,OAAO,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,UAAU,EAAE,MAAM,CAAC;IACnB,kBAAkB,EAAE,MAAM,CAAC;IAC3B,gBAAgB,EAAE,MAAM,CAAC;IACzB,uBAAuB,EAAE,OAAO,CAAC;IACjC,YAAY,EAAE,OAAO,CAAC;IACtB,MAAM,EAAE,MAAM,EAAE,CAAC;CAClB;AAED;;;;;;GAMG;AACH,wBAAgB,mBAAmB,CAAC,IAAI,EAAE,MAAM,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAuCrF;AAED;;GAEG;AACH,wBAAsB,oBAAoB,CACxC,OAAO,EAAE,MAAM,EACf,kBAAkB,EAAE,MAAM,EAC1B,WAAW,GAAE,MAAY,GACxB,OAAO,CAAC,eAAe,CAAC,CAyE1B;AAED;;GAEG;AACH,wBAAsB,eAAe,CAAC,IAAI,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,GAAG,OAAO,CAAC,eAAe,CAAC,CAgD7G"}