@minded-ai/mindedjs 1.0.52 → 1.0.53-patch-alpha

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 (54) hide show
  1. package/dist/agent.d.ts +17 -9
  2. package/dist/agent.d.ts.map +1 -1
  3. package/dist/agent.js +75 -5
  4. package/dist/agent.js.map +1 -1
  5. package/dist/cli/index.js +0 -0
  6. package/dist/index.d.ts +3 -1
  7. package/dist/index.d.ts.map +1 -1
  8. package/dist/index.js.map +1 -1
  9. package/dist/nodes/addPromptNode.d.ts.map +1 -1
  10. package/dist/nodes/addPromptNode.js +1 -0
  11. package/dist/nodes/addPromptNode.js.map +1 -1
  12. package/dist/platform/config.d.ts +3 -0
  13. package/dist/platform/config.d.ts.map +1 -1
  14. package/dist/platform/config.js +18 -1
  15. package/dist/platform/config.js.map +1 -1
  16. package/dist/platform/mindedConnection.d.ts +4 -4
  17. package/dist/platform/mindedConnection.d.ts.map +1 -1
  18. package/dist/platform/mindedConnection.js +8 -5
  19. package/dist/platform/mindedConnection.js.map +1 -1
  20. package/dist/platform/mindedConnectionTypes.d.ts +55 -2
  21. package/dist/platform/mindedConnectionTypes.d.ts.map +1 -1
  22. package/dist/platform/mindedConnectionTypes.js +11 -2
  23. package/dist/platform/mindedConnectionTypes.js.map +1 -1
  24. package/dist/types/Agent.types.d.ts +17 -0
  25. package/dist/types/Agent.types.d.ts.map +1 -1
  26. package/dist/types/Agent.types.js.map +1 -1
  27. package/dist/types/Flows.types.d.ts +12 -3
  28. package/dist/types/Flows.types.d.ts.map +1 -1
  29. package/dist/types/Flows.types.js +2 -0
  30. package/dist/types/Flows.types.js.map +1 -1
  31. package/dist/types/Voice.types.d.ts +5 -0
  32. package/dist/types/Voice.types.d.ts.map +1 -0
  33. package/dist/types/Voice.types.js +3 -0
  34. package/dist/types/Voice.types.js.map +1 -0
  35. package/dist/voice/elevenLabsUtils.d.ts +70 -0
  36. package/dist/voice/elevenLabsUtils.d.ts.map +1 -0
  37. package/dist/voice/elevenLabsUtils.js +20 -0
  38. package/dist/voice/elevenLabsUtils.js.map +1 -0
  39. package/dist/voice/voiceSession.d.ts +47 -0
  40. package/dist/voice/voiceSession.d.ts.map +1 -0
  41. package/dist/voice/voiceSession.js +208 -0
  42. package/dist/voice/voiceSession.js.map +1 -0
  43. package/package.json +5 -2
  44. package/src/agent.ts +91 -15
  45. package/src/index.ts +4 -0
  46. package/src/nodes/addPromptNode.ts +1 -0
  47. package/src/platform/config.ts +21 -1
  48. package/src/platform/mindedConnection.ts +15 -9
  49. package/src/platform/mindedConnectionTypes.ts +66 -2
  50. package/src/types/Agent.types.ts +18 -0
  51. package/src/types/Flows.types.ts +11 -1
  52. package/src/types/Voice.types.ts +4 -0
  53. package/src/voice/elevenLabsUtils.ts +101 -0
  54. package/src/voice/voiceSession.ts +251 -0
@@ -1 +1 @@
1
- {"version":3,"file":"mindedConnectionTypes.js","sourceRoot":"","sources":["../../src/platform/mindedConnectionTypes.ts"],"names":[],"mappings":";;;AAUA,IAAY,iCASX;AATD,WAAY,iCAAiC;IAC3C,oEAA+B,CAAA;IAC/B,kEAA6B,CAAA;IAC7B,kFAA6C,CAAA;IAC7C,sEAAiC,CAAA;IACjC,wEAAmC,CAAA;IACnC,oFAA+C,CAAA;IAC/C,gEAA2B,CAAA;IAC3B,4DAAuB,CAAA;AACzB,CAAC,EATW,iCAAiC,iDAAjC,iCAAiC,QAS5C"}
1
+ {"version":3,"file":"mindedConnectionTypes.js","sourceRoot":"","sources":["../../src/platform/mindedConnectionTypes.ts"],"names":[],"mappings":";;;AAWA,IAAY,iCAkBX;AAlBD,WAAY,iCAAiC;IAC3C,oEAA+B,CAAA;IAC/B,kEAA6B,CAAA;IAC7B,gEAA2B,CAAA;IAC3B,4DAAuB,CAAA;IACvB,sDAAiB,CAAA;IACjB,cAAc;IACd,kFAA6C,CAAA;IAC7C,sEAAiC,CAAA;IACjC,wEAAmC,CAAA;IACnC,oFAA+C,CAAA;IAC/C,QAAQ;IACR,8FAAyD,CAAA;IACzD,gGAA2D,CAAA;IAC3D,oGAA+D,CAAA;IAC/D,gGAA2D,CAAA;IAC3D,kGAA6D,CAAA;IAC7D,4HAAuF,CAAA;AACzF,CAAC,EAlBW,iCAAiC,iDAAjC,iCAAiC,QAkB5C"}
@@ -5,7 +5,24 @@ export type MindedSDKConfig = {
5
5
  flows: string[];
6
6
  llm: LLMConfig;
7
7
  tools: string[];
8
+ voice?: {
9
+ firstMessage: string;
10
+ voiceId?: string;
11
+ };
8
12
  };
13
+ /**
14
+ * Parameters for the Agent invoke method
15
+ */
16
+ export interface AgentInvokeParams {
17
+ /** The payload/data associated with the trigger */
18
+ triggerBody: any;
19
+ /** The name/type of the trigger being invoked */
20
+ triggerName: string;
21
+ /** Optional session identifier for conversation continuity */
22
+ sessionId?: string;
23
+ /** Optional name of the application triggering the agent in case of an app trigger */
24
+ appName?: string;
25
+ }
9
26
  export declare enum FlowHistoryType {
10
27
  TRIGGER_INVOCATION = "triggerInvocation",
11
28
  APP_ACTION_INVOCATION = "appActionInvocation"
@@ -1 +1 @@
1
- {"version":3,"file":"Agent.types.d.ts","sourceRoot":"","sources":["../../src/types/Agent.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAC9F,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,MAAM,aAAa,CAAC,MAAM,EAAE,CAAC,SAAS,MAAM,yBAAyB,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,yBAAyB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAEvM,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,EAAE,SAAS,CAAC;IACf,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB,CAAA;AAED,oBAAY,eAAe;IACzB,kBAAkB,sBAAsB;IACxC,qBAAqB,wBAAwB;CAC9C;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,eAAe,CAAC;CACvB;AAED,MAAM,WAAW,wBAAyB,SAAQ,WAAW;IAC3D,IAAI,EAAE,eAAe,CAAC,kBAAkB,CAAC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,GAAG,CAAC;CAClB;AAED,MAAM,WAAW,0BAA2B,SAAQ,WAAW;IAC7D,IAAI,EAAE,eAAe,CAAC,qBAAqB,CAAC;IAC5C,SAAS,EAAE,MAAM,CAAC;CACnB"}
1
+ {"version":3,"file":"Agent.types.d.ts","sourceRoot":"","sources":["../../src/types/Agent.types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,yBAAyB,EAAE,0BAA0B,EAAE,MAAM,uBAAuB,CAAC;AAC9F,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAExC,MAAM,MAAM,aAAa,CAAC,MAAM,EAAE,CAAC,SAAS,MAAM,yBAAyB,CAAC,MAAM,CAAC,IAAI,CAAC,KAAK,EAAE,CAAC,EAAE,OAAO,EAAE,yBAAyB,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,KAAK,OAAO,CAAC,CAAC,0BAA0B,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;AAEvM,MAAM,MAAM,eAAe,GAAG;IAC5B,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,GAAG,EAAE,SAAS,CAAC;IACf,KAAK,EAAE,MAAM,EAAE,CAAC;IAChB,KAAK,CAAC,EAAE;QACN,YAAY,EAAE,MAAM,CAAC;QACrB,OAAO,CAAC,EAAE,MAAM,CAAC;KAClB,CAAA;CACF,CAAA;AAED;;GAEG;AACH,MAAM,WAAW,iBAAiB;IAChC,mDAAmD;IACnD,WAAW,EAAE,GAAG,CAAC;IACjB,iDAAiD;IACjD,WAAW,EAAE,MAAM,CAAC;IACpB,8DAA8D;IAC9D,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,sFAAsF;IACtF,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,oBAAY,eAAe;IACzB,kBAAkB,sBAAsB;IACxC,qBAAqB,wBAAwB;CAC9C;AAED,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,eAAe,CAAC;CACvB;AAED,MAAM,WAAW,wBAAyB,SAAQ,WAAW;IAC3D,IAAI,EAAE,eAAe,CAAC,kBAAkB,CAAC;IACzC,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,EAAE,MAAM,CAAC;IACpB,WAAW,EAAE,GAAG,CAAC;CAClB;AAED,MAAM,WAAW,0BAA2B,SAAQ,WAAW;IAC7D,IAAI,EAAE,eAAe,CAAC,qBAAqB,CAAC;IAC5C,SAAS,EAAE,MAAM,CAAC;CACnB"}
@@ -1 +1 @@
1
- {"version":3,"file":"Agent.types.js","sourceRoot":"","sources":["../../src/types/Agent.types.ts"],"names":[],"mappings":";;;AAWA,IAAY,eAGX;AAHD,WAAY,eAAe;IACzB,2DAAwC,CAAA;IACxC,gEAA6C,CAAA;AAC/C,CAAC,EAHW,eAAe,+BAAf,eAAe,QAG1B;AAWA,CAAC;AAKD,CAAC"}
1
+ {"version":3,"file":"Agent.types.js","sourceRoot":"","sources":["../../src/types/Agent.types.ts"],"names":[],"mappings":";;;AA6BA,IAAY,eAGX;AAHD,WAAY,eAAe;IACzB,2DAAwC,CAAA;IACxC,gEAA6C,CAAA;AAC/C,CAAC,EAHW,eAAe,+BAAf,eAAe,QAG1B;AAWA,CAAC;AAKD,CAAC"}
@@ -25,7 +25,8 @@ export interface BaseNode {
25
25
  export declare enum TriggerType {
26
26
  APP = "app",
27
27
  WEBHOOK = "webhook",
28
- MANUAL = "manual"
28
+ MANUAL = "manual",
29
+ VOICE = "voice"
29
30
  }
30
31
  export interface BaseTriggerNode extends BaseNode {
31
32
  type: NodeType.TRIGGER;
@@ -47,6 +48,13 @@ export interface AppTriggerNode extends BaseTriggerNode, BaseAppNode {
47
48
  export interface WebhookTriggerNode extends BaseTriggerNode {
48
49
  triggerType: TriggerType.WEBHOOK;
49
50
  }
51
+ export interface VoiceTriggerNode extends BaseTriggerNode {
52
+ triggerType: TriggerType.VOICE;
53
+ /**
54
+ * Text that will be spoken as the very first message in a voice interaction.
55
+ */
56
+ firstMessage: string;
57
+ }
50
58
  export interface ManualTriggerNode extends BaseTriggerNode {
51
59
  triggerType: TriggerType.MANUAL;
52
60
  }
@@ -55,7 +63,7 @@ export interface PromptNode extends BaseNode {
55
63
  prompt: string;
56
64
  llmConfig?: LLMConfig;
57
65
  }
58
- export type TriggerNode = AppTriggerNode | WebhookTriggerNode | ManualTriggerNode;
66
+ export type TriggerNode = AppTriggerNode | WebhookTriggerNode | ManualTriggerNode | VoiceTriggerNode;
59
67
  export interface JunctionNode extends BaseNode {
60
68
  type: NodeType.JUNCTION;
61
69
  }
@@ -127,6 +135,7 @@ export interface Flow {
127
135
  }
128
136
  export declare enum KnownTriggerNames {
129
137
  WEBHOOK = "webhook",
130
- DASHBOARD_MESSAGE = "dashboard_message"
138
+ DASHBOARD_MESSAGE = "dashboard_message",
139
+ VOICE_MESSAGE = "voice_message"
131
140
  }
132
141
  //# sourceMappingURL=Flows.types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"Flows.types.d.ts","sourceRoot":"","sources":["../../src/types/Flows.types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"Flows.types.d.ts","sourceRoot":"","sources":["../../src/types/Flows.types.ts"],"names":[],"mappings":"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"}
@@ -20,6 +20,7 @@ var TriggerType;
20
20
  TriggerType["APP"] = "app";
21
21
  TriggerType["WEBHOOK"] = "webhook";
22
22
  TriggerType["MANUAL"] = "manual";
23
+ TriggerType["VOICE"] = "voice";
23
24
  })(TriggerType || (exports.TriggerType = TriggerType = {}));
24
25
  var AppNodeMetadataType;
25
26
  (function (AppNodeMetadataType) {
@@ -38,5 +39,6 @@ var KnownTriggerNames;
38
39
  (function (KnownTriggerNames) {
39
40
  KnownTriggerNames["WEBHOOK"] = "webhook";
40
41
  KnownTriggerNames["DASHBOARD_MESSAGE"] = "dashboard_message";
42
+ KnownTriggerNames["VOICE_MESSAGE"] = "voice_message";
41
43
  })(KnownTriggerNames || (exports.KnownTriggerNames = KnownTriggerNames = {}));
42
44
  //# sourceMappingURL=Flows.types.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"Flows.types.js","sourceRoot":"","sources":["../../src/types/Flows.types.ts"],"names":[],"mappings":";;;AAMA,IAAY,QAMX;AAND,WAAY,QAAQ;IAClB,+BAAmB,CAAA;IACnB,iCAAqB,CAAA;IACrB,yBAAa,CAAA;IACb,gCAAoB,CAAA;IACpB,sCAA0B,CAAA;AAC5B,CAAC,EANW,QAAQ,wBAAR,QAAQ,QAMnB;AAED,IAAY,QAIX;AAJD,WAAY,QAAQ;IAClB,kDAAsC,CAAA;IACtC,gDAAoC,CAAA;IACpC,wCAA4B,CAAA;AAC9B,CAAC,EAJW,QAAQ,wBAAR,QAAQ,QAInB;AAUD,IAAY,WAIX;AAJD,WAAY,WAAW;IACrB,0BAAW,CAAA;IACX,kCAAmB,CAAA;IACnB,gCAAiB,CAAA;AACnB,CAAC,EAJW,WAAW,2BAAX,WAAW,QAItB;AAiFD,IAAY,mBAEX;AAFD,WAAY,mBAAmB;IAC7B,2CAAoB,CAAA;AACtB,CAAC,EAFW,mBAAmB,mCAAnB,mBAAmB,QAE9B;AAsBD,IAAY,oBAOX;AAPD,WAAY,oBAAoB;IAC9B,yCAAiB,CAAA;IACjB,yCAAiB,CAAA;IACjB,2CAAmB,CAAA;IACnB,uCAAe,CAAA;IACf,yCAAiB,CAAA;IACjB,mCAAW,CAAA;AACb,CAAC,EAPW,oBAAoB,oCAApB,oBAAoB,QAO/B;AAQD,IAAY,iBAGX;AAHD,WAAY,iBAAiB;IAC3B,wCAAmB,CAAA;IACnB,4DAAuC,CAAA;AACzC,CAAC,EAHW,iBAAiB,iCAAjB,iBAAiB,QAG5B"}
1
+ {"version":3,"file":"Flows.types.js","sourceRoot":"","sources":["../../src/types/Flows.types.ts"],"names":[],"mappings":";;;AAMA,IAAY,QAMX;AAND,WAAY,QAAQ;IAClB,+BAAmB,CAAA;IACnB,iCAAqB,CAAA;IACrB,yBAAa,CAAA;IACb,gCAAoB,CAAA;IACpB,sCAA0B,CAAA;AAC5B,CAAC,EANW,QAAQ,wBAAR,QAAQ,QAMnB;AAED,IAAY,QAIX;AAJD,WAAY,QAAQ;IAClB,kDAAsC,CAAA;IACtC,gDAAoC,CAAA;IACpC,wCAA4B,CAAA;AAC9B,CAAC,EAJW,QAAQ,wBAAR,QAAQ,QAInB;AAUD,IAAY,WAKX;AALD,WAAY,WAAW;IACrB,0BAAW,CAAA;IACX,kCAAmB,CAAA;IACnB,gCAAiB,CAAA;IACjB,8BAAe,CAAA;AACjB,CAAC,EALW,WAAW,2BAAX,WAAW,QAKtB;AAyFD,IAAY,mBAEX;AAFD,WAAY,mBAAmB;IAC7B,2CAAoB,CAAA;AACtB,CAAC,EAFW,mBAAmB,mCAAnB,mBAAmB,QAE9B;AAsBD,IAAY,oBAOX;AAPD,WAAY,oBAAoB;IAC9B,yCAAiB,CAAA;IACjB,yCAAiB,CAAA;IACjB,2CAAmB,CAAA;IACnB,uCAAe,CAAA;IACf,yCAAiB,CAAA;IACjB,mCAAW,CAAA;AACb,CAAC,EAPW,oBAAoB,oCAApB,oBAAoB,QAO/B;AAQD,IAAY,iBAIX;AAJD,WAAY,iBAAiB;IAC3B,wCAAmB,CAAA;IACnB,4DAAuC,CAAA;IACvC,oDAA+B,CAAA;AACjC,CAAC,EAJW,iBAAiB,iCAAjB,iBAAiB,QAI5B"}
@@ -0,0 +1,5 @@
1
+ export type ElevenLabsContext = {
2
+ sessionId: string;
3
+ mindedToken: string;
4
+ };
5
+ //# sourceMappingURL=Voice.types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Voice.types.d.ts","sourceRoot":"","sources":["../../src/types/Voice.types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,iBAAiB,GAAG;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,WAAW,EAAE,MAAM,CAAC;CACrB,CAAA"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=Voice.types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Voice.types.js","sourceRoot":"","sources":["../../src/types/Voice.types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,70 @@
1
+ /** ElevenLabs LLM proxy request body shape */
2
+ export interface LLMRequestBody {
3
+ messages: Array<{
4
+ content: string;
5
+ role: string;
6
+ tool_call_id?: string;
7
+ }>;
8
+ model: string;
9
+ max_tokens: number;
10
+ stream: boolean;
11
+ temperature: number;
12
+ tools: null;
13
+ }
14
+ interface BaseEvent {
15
+ type: string;
16
+ }
17
+ interface UserTranscriptEvent extends BaseEvent {
18
+ type: 'user_transcript';
19
+ user_transcription_event: {
20
+ user_transcript: string;
21
+ };
22
+ }
23
+ interface AgentResponseEvent extends BaseEvent {
24
+ type: 'agent_response';
25
+ agent_response_event: {
26
+ agent_response: string;
27
+ };
28
+ }
29
+ interface AudioResponseEvent extends BaseEvent {
30
+ type: 'audio';
31
+ audio_event: {
32
+ audio_base_64: string;
33
+ event_id: number;
34
+ };
35
+ }
36
+ interface InterruptionEvent extends BaseEvent {
37
+ type: 'interruption';
38
+ interruption_event: {
39
+ event_id: number;
40
+ };
41
+ }
42
+ interface PingEvent extends BaseEvent {
43
+ type: 'ping';
44
+ ping_event: {
45
+ event_id: number;
46
+ ping_ms: number;
47
+ };
48
+ }
49
+ interface ConversationInitiationMetadataEvent extends BaseEvent {
50
+ type: 'conversation_initiation_metadata';
51
+ conversation_initiation_metadata_event: {
52
+ conversation_id: string;
53
+ };
54
+ }
55
+ export interface AgentResponseCorrectionEvent extends BaseEvent {
56
+ type: 'agent_response_correction';
57
+ agent_response_correction_event: {
58
+ corrected_agent_response: string;
59
+ original_agent_response: string;
60
+ };
61
+ }
62
+ /** Union of all possible WebSocket events we care about */
63
+ export type ElevenLabsWebSocketEvent = UserTranscriptEvent | AgentResponseEvent | AudioResponseEvent | InterruptionEvent | PingEvent | ConversationInitiationMetadataEvent | AgentResponseCorrectionEvent;
64
+ /** Fetch signed URL from ElevenLabs API */
65
+ export declare const getSignedUrl: ({ agentId, apiKey }: {
66
+ agentId: string;
67
+ apiKey: string;
68
+ }) => Promise<string>;
69
+ export {};
70
+ //# sourceMappingURL=elevenLabsUtils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elevenLabsUtils.d.ts","sourceRoot":"","sources":["../../src/voice/elevenLabsUtils.ts"],"names":[],"mappings":"AAAA,8CAA8C;AAC9C,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,KAAK,CAAC;QACd,OAAO,EAAE,MAAM,CAAC;QAChB,IAAI,EAAE,MAAM,CAAC;QACb,YAAY,CAAC,EAAE,MAAM,CAAC;KACvB,CAAC,CAAC;IACH,KAAK,EAAE,MAAM,CAAC;IACd,UAAU,EAAE,MAAM,CAAC;IACnB,MAAM,EAAE,OAAO,CAAC;IAChB,WAAW,EAAE,MAAM,CAAC;IACpB,KAAK,EAAE,IAAI,CAAC;CACb;AAID,UAAU,SAAS;IACjB,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,mBAAoB,SAAQ,SAAS;IAC7C,IAAI,EAAE,iBAAiB,CAAC;IACxB,wBAAwB,EAAE;QACxB,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAED,UAAU,kBAAmB,SAAQ,SAAS;IAC5C,IAAI,EAAE,gBAAgB,CAAC;IACvB,oBAAoB,EAAE;QACpB,cAAc,EAAE,MAAM,CAAC;KACxB,CAAC;CACH;AAED,UAAU,kBAAmB,SAAQ,SAAS;IAC5C,IAAI,EAAE,OAAO,CAAC;IACd,WAAW,EAAE;QACX,aAAa,EAAE,MAAM,CAAC;QACtB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED,UAAU,iBAAkB,SAAQ,SAAS;IAC3C,IAAI,EAAE,cAAc,CAAC;IACrB,kBAAkB,EAAE;QAClB,QAAQ,EAAE,MAAM,CAAC;KAClB,CAAC;CACH;AAED,UAAU,SAAU,SAAQ,SAAS;IACnC,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE;QACV,QAAQ,EAAE,MAAM,CAAC;QACjB,OAAO,EAAE,MAAM,CAAC;KACjB,CAAC;CACH;AAED,UAAU,mCAAoC,SAAQ,SAAS;IAC7D,IAAI,EAAE,kCAAkC,CAAC;IACzC,sCAAsC,EAAE;QACtC,eAAe,EAAE,MAAM,CAAC;KACzB,CAAC;CACH;AAED,MAAM,WAAW,4BAA6B,SAAQ,SAAS;IAC7D,IAAI,EAAE,2BAA2B,CAAC;IAClC,+BAA+B,EAAE;QAC/B,wBAAwB,EAAE,MAAM,CAAC;QACjC,uBAAuB,EAAE,MAAM,CAAC;KACjC,CAAC;CACH;AAED,2DAA2D;AAC3D,MAAM,MAAM,wBAAwB,GAChC,mBAAmB,GACnB,kBAAkB,GAClB,kBAAkB,GAClB,iBAAiB,GACjB,SAAS,GACT,mCAAmC,GACnC,4BAA4B,CAAC;AAIjC,2CAA2C;AAC3C,eAAO,MAAM,YAAY,GAAU,qBAAqB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,MAAM,CAAA;CAAE,KAAG,OAAO,CAAC,MAAM,CAe3G,CAAC"}
@@ -0,0 +1,20 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getSignedUrl = void 0;
4
+ // ----------------- ElevenLabs Utility Functions -----------------
5
+ /** Fetch signed URL from ElevenLabs API */
6
+ const getSignedUrl = async ({ agentId, apiKey }) => {
7
+ const response = await fetch(`https://api.elevenlabs.io/v1/convai/conversation/get_signed_url?agent_id=${agentId}`, {
8
+ method: 'GET',
9
+ headers: {
10
+ 'xi-api-key': apiKey,
11
+ },
12
+ });
13
+ if (!response.ok) {
14
+ throw new Error(`Failed to fetch signed url - status ${response.status}`);
15
+ }
16
+ const body = await response.json();
17
+ return body.signed_url;
18
+ };
19
+ exports.getSignedUrl = getSignedUrl;
20
+ //# sourceMappingURL=elevenLabsUtils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"elevenLabsUtils.js","sourceRoot":"","sources":["../../src/voice/elevenLabsUtils.ts"],"names":[],"mappings":";;;AAkFA,mEAAmE;AAEnE,2CAA2C;AACpC,MAAM,YAAY,GAAG,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAuC,EAAmB,EAAE;IAC9G,MAAM,QAAQ,GAAG,MAAM,KAAK,CAC1B,4EAA4E,OAAO,EAAE,EACrF;QACE,MAAM,EAAE,KAAK;QACb,OAAO,EAAE;YACP,YAAY,EAAE,MAAM;SACrB;KACF,CACF,CAAC;IACF,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;QACjB,MAAM,IAAI,KAAK,CAAC,uCAAuC,QAAQ,CAAC,MAAM,EAAE,CAAC,CAAC;IAC5E,CAAC;IACD,MAAM,IAAI,GAAG,MAAM,QAAQ,CAAC,IAAI,EAAE,CAAC;IACnC,OAAO,IAAI,CAAC,UAAU,CAAC;AACzB,CAAC,CAAC;AAfW,QAAA,YAAY,gBAevB"}
@@ -0,0 +1,47 @@
1
+ import { Agent } from '../agent';
2
+ /**
3
+ * Voice Conversation class for managing individual ElevenLabs voice conversations
4
+ */
5
+ export declare class VoiceSession {
6
+ private agent;
7
+ private sessionId;
8
+ private firstMessage;
9
+ private voiceId?;
10
+ private elevenLabsSocket?;
11
+ private onAudioCallback?;
12
+ private onInterruptionCallback?;
13
+ private onMessageCallback?;
14
+ private onDisconnectCallback?;
15
+ constructor({ agent, sessionId, firstMessage, voiceId }: {
16
+ agent: Agent;
17
+ sessionId: string;
18
+ firstMessage: string;
19
+ voiceId?: string;
20
+ });
21
+ /**
22
+ * Initialize the voice conversation connection
23
+ */
24
+ init(): Promise<void>;
25
+ private sendToElevenLabs;
26
+ private waitForSocketOpen;
27
+ private setupSocketHandlers;
28
+ private updateAgentResponse;
29
+ hangup(): void;
30
+ /**
31
+ * Set callback for audio data in base64 format
32
+ */
33
+ onAudio(callback: (data: string) => void): void;
34
+ /**
35
+ * Set callback for interruption events
36
+ */
37
+ onInterruption(callback: () => void): void;
38
+ /**
39
+ * Set callback for disconnect events
40
+ */
41
+ onDisconnect(callback: () => void): void;
42
+ /**
43
+ * User audio in base64 format
44
+ */
45
+ sendAudio(audioData: string): void;
46
+ }
47
+ //# sourceMappingURL=voiceSession.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"voiceSession.d.ts","sourceRoot":"","sources":["../../src/voice/voiceSession.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAWjC;;GAEG;AACH,qBAAa,YAAY;IACvB,OAAO,CAAC,KAAK,CAAQ;IACrB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,YAAY,CAAS;IAC7B,OAAO,CAAC,OAAO,CAAC,CAAS;IACzB,OAAO,CAAC,gBAAgB,CAAC,CAAY;IAErC,OAAO,CAAC,eAAe,CAAC,CAAyB;IACjD,OAAO,CAAC,sBAAsB,CAAC,CAAa;IAC5C,OAAO,CAAC,iBAAiB,CAAC,CAA+C;IACzE,OAAO,CAAC,oBAAoB,CAAC,CAAa;gBAE9B,EAAE,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,OAAO,EAAE,EAAE;QAAE,KAAK,EAAE,KAAK,CAAC;QAAC,SAAS,EAAE,MAAM,CAAC;QAAC,YAAY,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAA;KAAE;IAQpI;;OAEG;IACU,IAAI,IAAI,OAAO,CAAC,IAAI,CAAC;YAoBpB,gBAAgB;YAQhB,iBAAiB;IAsB/B,OAAO,CAAC,mBAAmB;YAmGb,mBAAmB;IAe1B,MAAM,IAAI,IAAI;IAKrB;;OAEG;IACH,OAAO,CAAC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,GAAG,IAAI;IAI/C;;OAEG;IACH,cAAc,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAI1C;;OAEG;IACH,YAAY,CAAC,QAAQ,EAAE,MAAM,IAAI,GAAG,IAAI;IAIxC;;OAEG;IACH,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,IAAI;CAGnC"}
@@ -0,0 +1,208 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.VoiceSession = void 0;
4
+ const ws_1 = require("ws");
5
+ const mindedConnectionTypes_1 = require("../platform/mindedConnectionTypes");
6
+ const config_1 = require("../platform/config");
7
+ const elevenLabsUtils_1 = require("./elevenLabsUtils");
8
+ const messages_1 = require("@langchain/core/messages");
9
+ /**
10
+ * Voice Conversation class for managing individual ElevenLabs voice conversations
11
+ */
12
+ class VoiceSession {
13
+ constructor({ agent, sessionId, firstMessage, voiceId }) {
14
+ console.debug('Starting voice session', { sessionId, firstMessage, voiceId });
15
+ this.agent = agent;
16
+ this.sessionId = sessionId;
17
+ this.firstMessage = firstMessage;
18
+ this.voiceId = voiceId;
19
+ }
20
+ /**
21
+ * Initialize the voice conversation connection
22
+ */
23
+ async init() {
24
+ const { elevenLabsKey, elevenLabsAgentId } = (0, config_1.getConfig)();
25
+ if (!elevenLabsKey) {
26
+ throw new Error('Missing ElevenLabs key - set ELEVEN_LABS_KEY env var');
27
+ }
28
+ if (!elevenLabsAgentId) {
29
+ throw new Error('Missing ElevenLabs agent id - set ELEVEN_LABS_AGENT_ID env var');
30
+ }
31
+ const signedUrl = await (0, elevenLabsUtils_1.getSignedUrl)({
32
+ agentId: elevenLabsAgentId,
33
+ apiKey: elevenLabsKey
34
+ });
35
+ this.elevenLabsSocket = new ws_1.WebSocket(signedUrl);
36
+ this.setupSocketHandlers();
37
+ }
38
+ async sendToElevenLabs(message) {
39
+ if (!this.elevenLabsSocket) {
40
+ throw new Error('Socket not initialized');
41
+ }
42
+ await this.waitForSocketOpen(this.elevenLabsSocket);
43
+ this.elevenLabsSocket.send(message);
44
+ }
45
+ async waitForSocketOpen(socket) {
46
+ if (socket.readyState === ws_1.WebSocket.OPEN) {
47
+ return;
48
+ }
49
+ return new Promise((resolve, reject) => {
50
+ const timeoutMs = 10000;
51
+ const intervalMs = 100;
52
+ let tries = 0;
53
+ const interval = setInterval(() => {
54
+ if (socket.readyState === ws_1.WebSocket.OPEN) {
55
+ clearInterval(interval);
56
+ resolve();
57
+ }
58
+ tries++;
59
+ if (tries >= timeoutMs) {
60
+ clearInterval(interval);
61
+ reject(new Error('Socket not open'));
62
+ }
63
+ }, intervalMs);
64
+ });
65
+ }
66
+ setupSocketHandlers() {
67
+ const socket = this.elevenLabsSocket; // non-null assertion once, we ensured it's assigned in init()
68
+ socket.onopen = () => {
69
+ console.debug('Connected to voice provider');
70
+ const initiationData = {
71
+ type: 'conversation_initiation_client_data',
72
+ conversation_config_override: {
73
+ agent: {
74
+ first_message: this.firstMessage,
75
+ language: 'en',
76
+ },
77
+ ...(this.voiceId ? { tts: { voice_id: this.voiceId } } : {}),
78
+ },
79
+ };
80
+ this.sendToElevenLabs(JSON.stringify(initiationData));
81
+ this.sendToElevenLabs(JSON.stringify({ type: 'contextual_update', text: JSON.stringify({ sessionId: this.sessionId, mindedToken: (0, config_1.getConfig)().token }) }));
82
+ };
83
+ socket.onclose = () => {
84
+ var _a;
85
+ console.debug('Disconnected from voice provider');
86
+ (_a = this.onDisconnectCallback) === null || _a === void 0 ? void 0 : _a.call(this);
87
+ this.agent.voiceSessions.delete(this.sessionId);
88
+ };
89
+ socket.onerror = (err) => {
90
+ console.error('[ElevenLabsVoice] WebSocket error', err);
91
+ };
92
+ socket.onmessage = async (event) => {
93
+ var _a, _b, _c;
94
+ const data = JSON.parse(event.data.toString());
95
+ switch (data.type) {
96
+ case 'ping':
97
+ setTimeout(() => {
98
+ this.sendToElevenLabs(JSON.stringify({ type: 'pong', event_id: data.ping_event.event_id }));
99
+ }, data.ping_event.ping_ms);
100
+ break;
101
+ case 'user_transcript':
102
+ console.debug('User transcript received', data.user_transcription_event.user_transcript);
103
+ if (this.onMessageCallback) {
104
+ this.onMessageCallback(data.user_transcription_event.user_transcript, new messages_1.HumanMessage(data.user_transcription_event.user_transcript));
105
+ }
106
+ break;
107
+ case 'agent_response':
108
+ if (this.onMessageCallback) {
109
+ this.onMessageCallback(data.agent_response_event.agent_response, new messages_1.AIMessage(data.agent_response_event.agent_response));
110
+ }
111
+ break;
112
+ case 'interruption':
113
+ console.debug('Interruption received');
114
+ (_a = this.onInterruptionCallback) === null || _a === void 0 ? void 0 : _a.call(this);
115
+ // Send interruption event to dashboard if connected
116
+ if ((0, config_1.getConfig)().dashboardConnected) {
117
+ try {
118
+ (_b = this.agent.mindedConnection) === null || _b === void 0 ? void 0 : _b.emit(mindedConnectionTypes_1.MindedConnectionSocketMessageType.DASHBOARD_VOICE_INTERRUPTION, {
119
+ type: mindedConnectionTypes_1.MindedConnectionSocketMessageType.DASHBOARD_VOICE_INTERRUPTION,
120
+ sessionId: this.sessionId,
121
+ timestamp: Date.now(),
122
+ });
123
+ }
124
+ catch (error) {
125
+ console.error('[ElevenLabsVoice] Error sending interruption to dashboard', error);
126
+ }
127
+ }
128
+ break;
129
+ case 'audio':
130
+ if (this.onAudioCallback) {
131
+ this.onAudioCallback(data.audio_event.audio_base_64);
132
+ }
133
+ if ((0, config_1.getConfig)().dashboardConnected) {
134
+ try {
135
+ await ((_c = this.agent.mindedConnection) === null || _c === void 0 ? void 0 : _c.awaitEmit(mindedConnectionTypes_1.MindedConnectionSocketMessageType.DASHBOARD_VOICE_AGENT_AUDIO, {
136
+ sessionId: this.sessionId,
137
+ audioData: data.audio_event.audio_base_64,
138
+ }));
139
+ }
140
+ catch (error) {
141
+ console.error('[ElevenLabsVoice] Error sending audio to dashboard', error);
142
+ }
143
+ }
144
+ break;
145
+ case 'conversation_initiation_metadata':
146
+ console.debug('ElevenLabs conversation initiation metadata', data);
147
+ break;
148
+ case 'agent_response_correction':
149
+ try {
150
+ console.debug('Agent response correction received', data.agent_response_correction_event);
151
+ await this.updateAgentResponse(data.agent_response_correction_event.original_agent_response, data.agent_response_correction_event.corrected_agent_response);
152
+ }
153
+ catch (error) {
154
+ console.error('[ElevenLabsVoice] Error updating agent response', error);
155
+ }
156
+ break;
157
+ default:
158
+ console.debug('Received unknown message from ElevenLabs', data);
159
+ break;
160
+ }
161
+ };
162
+ }
163
+ async updateAgentResponse(originalAgentResponse, correctedAgentResponse) {
164
+ const graphState = await this.agent.compiledGraph.getState(this.agent.getLangraphConfig(this.sessionId));
165
+ const agentMessage = graphState.values.messages.find((message) => message.content === originalAgentResponse && message instanceof messages_1.AIMessage);
166
+ if (agentMessage) {
167
+ agentMessage.content = correctedAgentResponse;
168
+ const currentNodeId = graphState.tasks[graphState.tasks.length - 1].name;
169
+ await this.agent.compiledGraph.updateState(this.agent.getLangraphConfig(this.sessionId), {
170
+ messages: graphState.values.messages,
171
+ }, currentNodeId);
172
+ }
173
+ else {
174
+ console.warn('Agent message not found for correction', originalAgentResponse);
175
+ }
176
+ }
177
+ hangup() {
178
+ var _a, _b;
179
+ (_a = this.onDisconnectCallback) === null || _a === void 0 ? void 0 : _a.call(this);
180
+ (_b = this.elevenLabsSocket) === null || _b === void 0 ? void 0 : _b.close();
181
+ }
182
+ /**
183
+ * Set callback for audio data in base64 format
184
+ */
185
+ onAudio(callback) {
186
+ this.onAudioCallback = callback;
187
+ }
188
+ /**
189
+ * Set callback for interruption events
190
+ */
191
+ onInterruption(callback) {
192
+ this.onInterruptionCallback = callback;
193
+ }
194
+ /**
195
+ * Set callback for disconnect events
196
+ */
197
+ onDisconnect(callback) {
198
+ this.onDisconnectCallback = callback;
199
+ }
200
+ /**
201
+ * User audio in base64 format
202
+ */
203
+ sendAudio(audioData) {
204
+ this.sendToElevenLabs(JSON.stringify({ user_audio_chunk: audioData }));
205
+ }
206
+ }
207
+ exports.VoiceSession = VoiceSession;
208
+ //# sourceMappingURL=voiceSession.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"voiceSession.js","sourceRoot":"","sources":["../../src/voice/voiceSession.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@minded-ai/mindedjs",
3
- "version": "1.0.52",
3
+ "version": "1.0.53-patch-alpha",
4
4
  "description": "MindedJS is a TypeScript library for building agents.",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -17,6 +17,7 @@
17
17
  "test": "NODE_ENV=test mocha --parallel --jobs auto --retries 1 -r ts-node/register -r ./test/setup.ts \"test/**/*.test.ts\"",
18
18
  "testFile": "NODE_ENV=test mocha -r ts-node/register -r ./test/setup.ts",
19
19
  "order-refund": "cd examples/orderRefundAgent && nodemon --watch '**/*.ts' --exec 'ts-node' orderRefundAgent.ts",
20
+ "example-voice": "cd examples/voice && nodemon --watch '**/*.ts' --exec 'ts-node' voiceAgent.ts",
20
21
  "lint": "eslint .",
21
22
  "lintFix": "eslint --fix .",
22
23
  "generateApiDocs": "typedoc src --out docs/api-reference ./src"
@@ -29,6 +30,7 @@
29
30
  "@types/mocha": "^10.0.6",
30
31
  "@types/node": "^20.11.19",
31
32
  "@types/sinon": "^17.0.4",
33
+ "@types/ws": "^8.18.1",
32
34
  "chai": "^4.3.10",
33
35
  "dotenv": "^16.4.5",
34
36
  "eslint": "^9.27.0",
@@ -51,6 +53,7 @@
51
53
  "langchain": "^0.3.25",
52
54
  "socket.io-client": "^4.8.1",
53
55
  "uuid": "^11.1.0",
56
+ "ws": "^8.15.1",
54
57
  "zod": "^3.24.4"
55
58
  }
56
- }
59
+ }