@formmy.app/chat 0.0.17 → 0.0.20

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.
package/README.md CHANGED
@@ -52,8 +52,19 @@ formmy.agents.create({ name, instructions, welcomeMessage?, model? });
52
52
  formmy.agents.update(agentId, { name?, instructions?, model? });
53
53
  formmy.agents.delete(agentId);
54
54
 
55
- formmy.chat.send(message, { agentId, sessionId });
56
- formmy.chat.history(sessionId, agentId);
55
+ formmy.chat.stream({ agentId, message, conversationId? }); // streaming Response
56
+ formmy.chat.send({ agentId, message, conversationId? }); // complete response
57
+
58
+ formmy.conversations.list(agentId, { limit?, cursor? });
59
+ formmy.conversations.get(agentId, conversationId);
60
+
61
+ // Documents (RAG Knowledge Base)
62
+ formmy.documents.create(agentId, { title, content, metadata? });
63
+ formmy.documents.list(agentId);
64
+ formmy.documents.get(agentId, documentId);
65
+ formmy.documents.update(agentId, documentId, { title?, content, metadata? });
66
+ formmy.documents.delete(agentId, documentId);
67
+ formmy.documents.bulkCreate(agentId, documents[]); // max 20
57
68
  ```
58
69
 
59
70
  ### React Components
@@ -79,7 +90,7 @@ const { messages, input, setInput, handleSubmit, isLoading, error, reload, stop
79
90
  ## TypeScript
80
91
 
81
92
  ```typescript
82
- import type { FormmyMessage, Agent, FormmyConfig } from "@formmy.app/chat";
93
+ import type { Message, Agent, FormmyConfig } from "@formmy.app/chat";
83
94
  ```
84
95
 
85
96
  ## License
@@ -14,7 +14,7 @@
14
14
  * const { agents } = await formmy.agents.list();
15
15
  * ```
16
16
  */
17
- import type { FormmyConfig, CreateAgentInput, UpdateAgentInput, AgentsListResponse, AgentResponse, ConversationsListResponse, ConversationResponse } from "./types";
17
+ import type { FormmyConfig, CreateAgentInput, UpdateAgentInput, AgentsListResponse, AgentResponse, ConversationsListResponse, ConversationResponse, CreateDocumentInput, UpdateDocumentInput, DocumentsListResponse, DocumentResponse } from "./types";
18
18
  export declare class FormmyError extends Error {
19
19
  code: string;
20
20
  status: number;
@@ -114,6 +114,36 @@ export declare class Formmy {
114
114
  */
115
115
  get: (agentId: string, conversationId: string) => Promise<ConversationResponse>;
116
116
  };
117
+ get documents(): {
118
+ /**
119
+ * Create a new document in the agent's knowledge base
120
+ */
121
+ create: (agentId: string, data: CreateDocumentInput) => Promise<DocumentResponse>;
122
+ /**
123
+ * List all documents for an agent
124
+ */
125
+ list: (agentId: string) => Promise<DocumentsListResponse>;
126
+ /**
127
+ * Get a specific document by ID
128
+ */
129
+ get: (agentId: string, documentId: string) => Promise<DocumentResponse>;
130
+ /**
131
+ * Update an existing document (replaces content and re-embeds)
132
+ */
133
+ update: (agentId: string, documentId: string, data: UpdateDocumentInput) => Promise<DocumentResponse>;
134
+ /**
135
+ * Delete a document and its embeddings
136
+ */
137
+ delete: (agentId: string, documentId: string) => Promise<{
138
+ success: boolean;
139
+ }>;
140
+ /**
141
+ * Create multiple documents at once (max 20)
142
+ */
143
+ bulkCreate: (agentId: string, documents: CreateDocumentInput[]) => Promise<{
144
+ documents: DocumentResponse["document"][];
145
+ }>;
146
+ };
117
147
  private request;
118
148
  }
119
149
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/core/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,EACb,yBAAyB,EACzB,oBAAoB,EACrB,MAAM,SAAS,CAAC;AAIjB,qBAAa,WAAY,SAAQ,KAAK;IAG3B,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,MAAM;gBAFrB,OAAO,EAAE,MAAM,EACR,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM;CAKxB;AAED,qBAAa,MAAM;IACjB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAS;gBAEZ,MAAM,EAAE,YAAY;IAqBhC,IAAI,MAAM;QAEN;;WAEG;oBACa,OAAO,CAAC,kBAAkB,CAAC;QAI3C;;WAEG;uBACkB,MAAM,KAAG,OAAO,CAAC,aAAa,CAAC;QAOpD;;WAEG;uBACkB,gBAAgB,KAAG,OAAO,CAAC,aAAa,CAAC;QAI9D;;WAEG;0BAEQ,MAAM,QACT,gBAAgB,KACrB,OAAO,CAAC,aAAa,CAAC;QAQzB;;WAEG;0BACqB,MAAM,KAAG,OAAO,CAAC;YAAE,OAAO,EAAE,OAAO,CAAA;SAAE,CAAC;MAOjE;IAMD,IAAI,IAAI;QAEJ;;;;;;;;;;;;;;;WAeG;0BACqB;YACtB,OAAO,EAAE,MAAM,CAAC;YAChB,OAAO,EAAE,MAAM,CAAC;YAChB,cAAc,CAAC,EAAE,MAAM,CAAC;SACzB,KAAG,OAAO,CAAC,QAAQ,CAAC;QA2CrB;;;WAGG;wBACmB;YACpB,OAAO,EAAE,MAAM,CAAC;YAChB,OAAO,EAAE,MAAM,CAAC;YAChB,cAAc,CAAC,EAAE,MAAM,CAAC;SACzB,KAAG,OAAO,CAAC;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,cAAc,EAAE,MAAM,CAAA;SAAE,CAAC;MAsE3D;IAMD,IAAI,aAAa;QAEb;;;;;;;;;;;;;;WAcG;wBAEQ,MAAM,YACL;YAAE,KAAK,CAAC,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE,KAC5C,OAAO,CAAC,yBAAyB,CAAC;QAUrC;;;;;;;;WAQG;uBAEQ,MAAM,kBACC,MAAM,KACrB,OAAO,CAAC,oBAAoB,CAAC;MAOnC;YAMa,OAAO;CA4BtB"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/core/client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAEH,OAAO,KAAK,EACV,YAAY,EACZ,gBAAgB,EAChB,gBAAgB,EAChB,kBAAkB,EAClB,aAAa,EACb,yBAAyB,EACzB,oBAAoB,EACpB,mBAAmB,EACnB,mBAAmB,EACnB,qBAAqB,EACrB,gBAAgB,EACjB,MAAM,SAAS,CAAC;AAIjB,qBAAa,WAAY,SAAQ,KAAK;IAG3B,IAAI,EAAE,MAAM;IACZ,MAAM,EAAE,MAAM;gBAFrB,OAAO,EAAE,MAAM,EACR,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM;CAKxB;AAED,qBAAa,MAAM;IACjB,OAAO,CAAC,SAAS,CAAS;IAC1B,OAAO,CAAC,OAAO,CAAS;gBAEZ,MAAM,EAAE,YAAY;IAqBhC,IAAI,MAAM;QAEN;;WAEG;oBACa,OAAO,CAAC,kBAAkB,CAAC;QAI3C;;WAEG;uBACkB,MAAM,KAAG,OAAO,CAAC,aAAa,CAAC;QAOpD;;WAEG;uBACkB,gBAAgB,KAAG,OAAO,CAAC,aAAa,CAAC;QAI9D;;WAEG;0BAEQ,MAAM,QACT,gBAAgB,KACrB,OAAO,CAAC,aAAa,CAAC;QAQzB;;WAEG;0BACqB,MAAM,KAAG,OAAO,CAAC;YAAE,OAAO,EAAE,OAAO,CAAA;SAAE,CAAC;MAOjE;IAMD,IAAI,IAAI;QAEJ;;;;;;;;;;;;;;;WAeG;0BACqB;YACtB,OAAO,EAAE,MAAM,CAAC;YAChB,OAAO,EAAE,MAAM,CAAC;YAChB,cAAc,CAAC,EAAE,MAAM,CAAC;SACzB,KAAG,OAAO,CAAC,QAAQ,CAAC;QA2CrB;;;WAGG;wBACmB;YACpB,OAAO,EAAE,MAAM,CAAC;YAChB,OAAO,EAAE,MAAM,CAAC;YAChB,cAAc,CAAC,EAAE,MAAM,CAAC;SACzB,KAAG,OAAO,CAAC;YAAE,OAAO,EAAE,MAAM,CAAC;YAAC,cAAc,EAAE,MAAM,CAAA;SAAE,CAAC;MAsE3D;IAMD,IAAI,aAAa;QAEb;;;;;;;;;;;;;;WAcG;wBAEQ,MAAM,YACL;YAAE,KAAK,CAAC,EAAE,MAAM,CAAC;YAAC,MAAM,CAAC,EAAE,MAAM,CAAA;SAAE,KAC5C,OAAO,CAAC,yBAAyB,CAAC;QAUrC;;;;;;;;WAQG;uBAEQ,MAAM,kBACC,MAAM,KACrB,OAAO,CAAC,oBAAoB,CAAC;MAOnC;IAMD,IAAI,SAAS;QAET;;WAEG;0BAEQ,MAAM,QACT,mBAAmB,KACxB,OAAO,CAAC,gBAAgB,CAAC;QAQ5B;;WAEG;wBACmB,MAAM,KAAG,OAAO,CAAC,qBAAqB,CAAC;QAO7D;;WAEG;uBAEQ,MAAM,cACH,MAAM,KACjB,OAAO,CAAC,gBAAgB,CAAC;QAO5B;;WAEG;0BAEQ,MAAM,cACH,MAAM,QACZ,mBAAmB,KACxB,OAAO,CAAC,gBAAgB,CAAC;QAQ5B;;WAEG;0BAEQ,MAAM,cACH,MAAM,KACjB,OAAO,CAAC;YAAE,OAAO,EAAE,OAAO,CAAA;SAAE,CAAC;QAOhC;;WAEG;8BAEQ,MAAM,aACJ,mBAAmB,EAAE,KAC/B,OAAO,CAAC;YAAE,SAAS,EAAE,gBAAgB,CAAC,UAAU,CAAC,EAAE,CAAA;SAAE,CAAC;MAQ5D;YAMa,OAAO;CA4BtB"}
@@ -238,6 +238,49 @@ export class Formmy {
238
238
  };
239
239
  }
240
240
  // ═══════════════════════════════════════════════════════════════════════════
241
+ // Documents Namespace (RAG Knowledge Base)
242
+ // ═══════════════════════════════════════════════════════════════════════════
243
+ get documents() {
244
+ return {
245
+ /**
246
+ * Create a new document in the agent's knowledge base
247
+ */
248
+ create: async (agentId, data) => {
249
+ return this.request("POST", `?intent=documents.create&agentId=${agentId}`, data);
250
+ },
251
+ /**
252
+ * List all documents for an agent
253
+ */
254
+ list: async (agentId) => {
255
+ return this.request("GET", `?intent=documents.list&agentId=${agentId}`);
256
+ },
257
+ /**
258
+ * Get a specific document by ID
259
+ */
260
+ get: async (agentId, documentId) => {
261
+ return this.request("GET", `?intent=documents.get&agentId=${agentId}&documentId=${documentId}`);
262
+ },
263
+ /**
264
+ * Update an existing document (replaces content and re-embeds)
265
+ */
266
+ update: async (agentId, documentId, data) => {
267
+ return this.request("POST", `?intent=documents.update&agentId=${agentId}&documentId=${documentId}`, data);
268
+ },
269
+ /**
270
+ * Delete a document and its embeddings
271
+ */
272
+ delete: async (agentId, documentId) => {
273
+ return this.request("POST", `?intent=documents.delete&agentId=${agentId}&documentId=${documentId}`);
274
+ },
275
+ /**
276
+ * Create multiple documents at once (max 20)
277
+ */
278
+ bulkCreate: async (agentId, documents) => {
279
+ return this.request("POST", `?intent=documents.bulkCreate&agentId=${agentId}`, { documents });
280
+ },
281
+ };
282
+ }
283
+ // ═══════════════════════════════════════════════════════════════════════════
241
284
  // Private methods
242
285
  // ═══════════════════════════════════════════════════════════════════════════
243
286
  async request(method, path, body) {
@@ -1 +1 @@
1
- {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/core/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.js","sourceRoot":"","sources":["../../src/core/client.ts"],"names":[],"mappings":"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"}
@@ -110,6 +110,32 @@ export interface ConversationMessage {
110
110
  export interface ConversationDetail extends ConversationSummary {
111
111
  messages: ConversationMessage[];
112
112
  }
113
+ export interface Document {
114
+ id: string;
115
+ title: string;
116
+ contextType: string;
117
+ status: string;
118
+ chunkCount: number;
119
+ metadata?: Record<string, unknown>;
120
+ createdAt: string;
121
+ updatedAt: string;
122
+ }
123
+ export interface CreateDocumentInput {
124
+ title: string;
125
+ content: string;
126
+ metadata?: Record<string, unknown>;
127
+ }
128
+ export interface UpdateDocumentInput {
129
+ title?: string;
130
+ content: string;
131
+ metadata?: Record<string, unknown>;
132
+ }
133
+ export interface DocumentsListResponse {
134
+ documents: Document[];
135
+ }
136
+ export interface DocumentResponse {
137
+ document: Document;
138
+ }
113
139
  export interface ApiResponse<T> {
114
140
  data?: T;
115
141
  error?: string;
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/core/types.ts"],"names":[],"mappings":"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"}
@@ -42,6 +42,15 @@ export interface UseFormmyVoiceOptions {
42
42
  onStatusChange?: (status: VoiceStatus) => void;
43
43
  onError?: (error: Error) => void;
44
44
  onTranscript?: (transcript: VoiceTranscript) => void;
45
+ /** Override WebSocket URL (bypasses publishableKey) */
46
+ wsUrl?: string;
47
+ /** Intermediate AudioNode or factory for playback routing (e.g. GainNode → AnalyserNode → destination).
48
+ * Factory receives the SDK's AudioContext so all nodes share the same context. */
49
+ audioDestination?: AudioNode | ((ctx: AudioContext) => AudioNode);
50
+ /** Raw mic audio callback — Float32Array per frame, for visualizations or analysis */
51
+ onMicAudio?: (float32: Float32Array) => void;
52
+ /** Catch-all for server events (artifact, toolUse, custom) */
53
+ onServerEvent?: (eventType: string, payload: unknown) => void;
45
54
  }
46
55
  export interface UseFormmyVoiceReturn {
47
56
  start: () => Promise<void>;
@@ -57,5 +66,5 @@ export interface UseFormmyVoiceReturn {
57
66
  error: Error | null;
58
67
  transcripts: VoiceTranscript[];
59
68
  }
60
- export declare function useFormmyVoice({ agentId, voiceId, sensitivity, systemPrompt, tools, onToolUse, onStatusChange: onStatusChangeCb, onError: onErrorCb, onTranscript: onTranscriptCb }: UseFormmyVoiceOptions): UseFormmyVoiceReturn;
69
+ export declare function useFormmyVoice({ agentId, voiceId, sensitivity, systemPrompt, tools, onToolUse, onStatusChange: onStatusChangeCb, onError: onErrorCb, onTranscript: onTranscriptCb, wsUrl, audioDestination, onMicAudio, onServerEvent }: UseFormmyVoiceOptions): UseFormmyVoiceReturn;
61
70
  //# sourceMappingURL=use-formmy-voice.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"use-formmy-voice.d.ts","sourceRoot":"","sources":["../../src/hooks/use-formmy-voice.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAIH,OAAO,EAAqB,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAElG,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACxC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAAE,CAAC,CAAC;IACvF,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACpF,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;IAC/C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,YAAY,CAAC,EAAE,CAAC,UAAU,EAAE,eAAe,KAAK,IAAI,CAAC;CACtD;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,WAAW,EAAE,eAAe,EAAE,CAAC;CAChC;AAED,wBAAgB,cAAc,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,gBAAgB,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,cAAc,EAAE,EAAE,qBAAqB,GAAG,oBAAoB,CA2GjO"}
1
+ {"version":3,"file":"use-formmy-voice.d.ts","sourceRoot":"","sources":["../../src/hooks/use-formmy-voice.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAIH,OAAO,EAAqB,KAAK,WAAW,EAAE,KAAK,eAAe,EAAE,MAAM,uBAAuB,CAAC;AAElG,MAAM,WAAW,qBAAqB;IACpC,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,KAAK,CAAC;IACxC,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC;QAAC,WAAW,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAA;KAAE,CAAC,CAAC;IACvF,SAAS,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,KAAK,OAAO,CAAC,MAAM,CAAC,CAAC;IACpF,cAAc,CAAC,EAAE,CAAC,MAAM,EAAE,WAAW,KAAK,IAAI,CAAC;IAC/C,OAAO,CAAC,EAAE,CAAC,KAAK,EAAE,KAAK,KAAK,IAAI,CAAC;IACjC,YAAY,CAAC,EAAE,CAAC,UAAU,EAAE,eAAe,KAAK,IAAI,CAAC;IACrD,uDAAuD;IACvD,KAAK,CAAC,EAAE,MAAM,CAAC;IACf;uFACmF;IACnF,gBAAgB,CAAC,EAAE,SAAS,GAAG,CAAC,CAAC,GAAG,EAAE,YAAY,KAAK,SAAS,CAAC,CAAC;IAClE,sFAAsF;IACtF,UAAU,CAAC,EAAE,CAAC,OAAO,EAAE,YAAY,KAAK,IAAI,CAAC;IAC7C,8DAA8D;IAC9D,aAAa,CAAC,EAAE,CAAC,SAAS,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,KAAK,IAAI,CAAC;CAC/D;AAED,MAAM,WAAW,oBAAoB;IACnC,KAAK,EAAE,MAAM,OAAO,CAAC,IAAI,CAAC,CAAC;IAC3B,IAAI,EAAE,MAAM,IAAI,CAAC;IACjB,UAAU,EAAE,MAAM,IAAI,CAAC;IACvB,QAAQ,EAAE,CAAC,KAAK,EAAE,OAAO,KAAK,IAAI,CAAC;IACnC,QAAQ,EAAE,CAAC,IAAI,EAAE,MAAM,KAAK,IAAI,CAAC;IACjC,gBAAgB,EAAE,MAAM,IAAI,CAAC;IAC7B,MAAM,EAAE,WAAW,CAAC;IACpB,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,WAAW,EAAE,OAAO,CAAC;IACrB,KAAK,EAAE,KAAK,GAAG,IAAI,CAAC;IACpB,WAAW,EAAE,eAAe,EAAE,CAAC;CAChC;AAED,wBAAgB,cAAc,CAAC,EAAE,OAAO,EAAE,OAAO,EAAE,WAAW,EAAE,YAAY,EAAE,KAAK,EAAE,SAAS,EAAE,cAAc,EAAE,gBAAgB,EAAE,OAAO,EAAE,SAAS,EAAE,YAAY,EAAE,cAAc,EAAE,KAAK,EAAE,gBAAgB,EAAE,UAAU,EAAE,aAAa,EAAE,EAAE,qBAAqB,GAAG,oBAAoB,CA+GrR"}
@@ -30,7 +30,7 @@
30
30
  import { useState, useRef, useCallback, useEffect } from "react";
31
31
  import { useFormmy } from "../ui/provider";
32
32
  import { FormmyVoiceClient } from "../voice/voice-client";
33
- export function useFormmyVoice({ agentId, voiceId, sensitivity, systemPrompt, tools, onToolUse, onStatusChange: onStatusChangeCb, onError: onErrorCb, onTranscript: onTranscriptCb }) {
33
+ export function useFormmyVoice({ agentId, voiceId, sensitivity, systemPrompt, tools, onToolUse, onStatusChange: onStatusChangeCb, onError: onErrorCb, onTranscript: onTranscriptCb, wsUrl, audioDestination, onMicAudio, onServerEvent }) {
34
34
  const { publishableKey, baseUrl } = useFormmy();
35
35
  const clientRef = useRef(null);
36
36
  const [status, setStatus] = useState("idle");
@@ -60,6 +60,8 @@ export function useFormmyVoice({ agentId, voiceId, sensitivity, systemPrompt, to
60
60
  systemPrompt,
61
61
  tools,
62
62
  onToolUse,
63
+ wsUrl,
64
+ audioDestination,
63
65
  });
64
66
  client.on({
65
67
  onStatusChange: (s) => {
@@ -83,12 +85,14 @@ export function useFormmyVoice({ agentId, voiceId, sensitivity, systemPrompt, to
83
85
  setError(err);
84
86
  onErrorCb?.(err);
85
87
  },
88
+ onMicAudio,
89
+ onServerEvent,
86
90
  });
87
91
  clientRef.current = client;
88
92
  setError(null);
89
93
  setTranscripts([]);
90
94
  await client.connect();
91
- }, [baseUrl, publishableKey, agentId, voiceId, sensitivity, systemPrompt, tools, onToolUse, onStatusChangeCb, onErrorCb, onTranscriptCb]);
95
+ }, [baseUrl, publishableKey, agentId, voiceId, sensitivity, systemPrompt, tools, onToolUse, onStatusChangeCb, onErrorCb, onTranscriptCb, wsUrl, audioDestination, onMicAudio, onServerEvent]);
92
96
  const stop = useCallback(() => {
93
97
  clientRef.current?.disconnect();
94
98
  clientRef.current = null;
@@ -1 +1 @@
1
- {"version":3,"file":"use-formmy-voice.js","sourceRoot":"","sources":["../../src/hooks/use-formmy-voice.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"use-formmy-voice.js","sourceRoot":"","sources":["../../src/hooks/use-formmy-voice.ts"],"names":[],"mappings":"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"}
@@ -29,6 +29,11 @@ export interface FormmyVoiceClientConfig {
29
29
  inputSchema: Record<string, any>;
30
30
  }>;
31
31
  onToolUse?: (toolUseId: string, toolName: string, input: string) => Promise<string>;
32
+ /** Override WebSocket URL (for first-party usage without pk) */
33
+ wsUrl?: string;
34
+ /** Intermediate AudioNode or factory for playback (e.g. GainNode → AnalyserNode → destination).
35
+ * Factory receives the SDK's AudioContext so all nodes share the same context. */
36
+ audioDestination?: AudioNode | ((ctx: AudioContext) => AudioNode);
32
37
  }
33
38
  export interface VoiceEventHandlers {
34
39
  onStatusChange?: (status: VoiceStatus) => void;
@@ -36,6 +41,8 @@ export interface VoiceEventHandlers {
36
41
  onError?: (error: Error) => void;
37
42
  /** Catch-all for any server event (artifact, toolUse, custom events) */
38
43
  onServerEvent?: (eventType: string, payload: unknown) => void;
44
+ /** Raw mic audio frame (Float32Array) for external intensity analysis */
45
+ onMicAudio?: (float32: Float32Array) => void;
39
46
  }
40
47
  export declare class FormmyVoiceClient {
41
48
  private config;
@@ -47,6 +54,7 @@ export declare class FormmyVoiceClient {
47
54
  private status;
48
55
  private isMuted;
49
56
  private _playbackCtx;
57
+ private _resolvedDestination;
50
58
  private audioQueue;
51
59
  private currentSource;
52
60
  private contentEndReceived;
@@ -104,7 +112,8 @@ export declare class FormmyVoiceClient {
104
112
  private float32ToBase64PCM16;
105
113
  private playAudioChunk;
106
114
  private playNextInQueue;
107
- private getPlaybackContext;
115
+ private getDestination;
116
+ getPlaybackContext(): AudioContext;
108
117
  private stopPlayback;
109
118
  }
110
119
  //# sourceMappingURL=voice-client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"voice-client.d.ts","sourceRoot":"","sources":["../../src/voice/voice-client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"voice-client.d.ts","sourceRoot":"","sources":["../../src/voice/voice-client.ts"],"names":[],"mappings":"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"}
@@ -21,6 +21,7 @@ export class FormmyVoiceClient {
21
21
  isMuted = false;
22
22
  // Playback via BufferSource queue (uses native audio pipeline for AEC compatibility)
23
23
  _playbackCtx = null;
24
+ _resolvedDestination = null;
24
25
  audioQueue = [];
25
26
  currentSource = null;
26
27
  contentEndReceived = false;
@@ -63,10 +64,16 @@ export class FormmyVoiceClient {
63
64
  // AudioContext for mic input
64
65
  this.audioContext = new AudioContext({ sampleRate: 16000 });
65
66
  // WebSocket
66
- const base = this.config.baseUrl.replace(/^http/, "ws");
67
- const voiceId = this.config.voiceId || "carlos";
68
- const sensitivity = this.config.sensitivity || "MEDIUM";
69
- const wsUrl = `${base}/api/voice/v2?chatbotId=${this.config.agentId}&pk=${this.config.publishableKey}&voiceId=${voiceId}&sensitivity=${sensitivity}`;
67
+ let wsUrl;
68
+ if (this.config.wsUrl) {
69
+ wsUrl = this.config.wsUrl;
70
+ }
71
+ else {
72
+ const base = this.config.baseUrl.replace(/^http/, "ws");
73
+ const voiceId = this.config.voiceId || "carlos";
74
+ const sensitivity = this.config.sensitivity || "MEDIUM";
75
+ wsUrl = `${base}/api/voice/v2?chatbotId=${this.config.agentId}&pk=${this.config.publishableKey}&voiceId=${voiceId}&sensitivity=${sensitivity}`;
76
+ }
70
77
  this.ws = new WebSocket(wsUrl);
71
78
  this.ws.onopen = () => {
72
79
  // Wait for "initialized" event (auto-handshake)
@@ -78,6 +85,13 @@ export class FormmyVoiceClient {
78
85
  this.handlers.onError?.(new Error("WebSocket connection failed"));
79
86
  };
80
87
  this.ws.onclose = () => {
88
+ // Always release mic immediately on any unexpected close
89
+ if (!this.intentionalClose) {
90
+ this.mediaStream?.getTracks().forEach((t) => t.stop());
91
+ this.mediaStream = null;
92
+ this.workletNode?.disconnect();
93
+ this.workletNode = null;
94
+ }
81
95
  if (this.intentionalClose) {
82
96
  this.setStatus("idle");
83
97
  return;
@@ -87,6 +101,7 @@ export class FormmyVoiceClient {
87
101
  const delay = FormmyVoiceClient.RECONNECT_BASE_MS * Math.pow(2, this.reconnectAttempts);
88
102
  this.reconnectAttempts++;
89
103
  this.handlers.onError?.(new Error(`Connection lost. Reconnecting (${this.reconnectAttempts}/${FormmyVoiceClient.MAX_RECONNECT_ATTEMPTS})...`));
104
+ this.setStatus("idle"); // Reset to idle so connect() guard passes
90
105
  setTimeout(() => this.connect(), delay);
91
106
  }
92
107
  else {
@@ -137,6 +152,7 @@ export class FormmyVoiceClient {
137
152
  this.activeContent = null;
138
153
  // Cleanup playback
139
154
  this.stopPlayback();
155
+ this._resolvedDestination = null;
140
156
  this._playbackCtx?.close();
141
157
  this._playbackCtx = null;
142
158
  this.contentEndReceived = false;
@@ -179,6 +195,11 @@ export class FormmyVoiceClient {
179
195
  // ─── Private ──────────────────────────────────────────────────────────
180
196
  setStatus(status) {
181
197
  this.status = status;
198
+ // Release mic on error to avoid holding the indicator
199
+ if (status === "error") {
200
+ this.mediaStream?.getTracks().forEach((t) => t.stop());
201
+ this.mediaStream = null;
202
+ }
182
203
  this.handlers.onStatusChange?.(status);
183
204
  }
184
205
  handleMessage(message) {
@@ -320,9 +341,11 @@ export class FormmyVoiceClient {
320
341
  URL.revokeObjectURL(url);
321
342
  this.workletNode = new AudioWorkletNode(this.audioContext, "audio-capture-processor");
322
343
  this.workletNode.port.onmessage = (e) => {
344
+ const float32 = e.data;
345
+ this.handlers.onMicAudio?.(float32);
323
346
  if (this.isMuted || !this.ws || this.ws.readyState !== WebSocket.OPEN)
324
347
  return;
325
- this.sendAudioChunk(e.data);
348
+ this.sendAudioChunk(float32);
326
349
  };
327
350
  source.connect(this.workletNode);
328
351
  // Don't connect to destination to avoid feedback
@@ -331,9 +354,11 @@ export class FormmyVoiceClient {
331
354
  // Fallback: ScriptProcessor (2048 samples = ~128ms at 16kHz)
332
355
  const processor = this.audioContext.createScriptProcessor(2048, 1, 1);
333
356
  processor.onaudioprocess = (e) => {
357
+ const float32 = e.inputBuffer.getChannelData(0);
358
+ this.handlers.onMicAudio?.(float32);
334
359
  if (this.isMuted || !this.ws || this.ws.readyState !== WebSocket.OPEN)
335
360
  return;
336
- this.sendAudioChunk(e.inputBuffer.getChannelData(0));
361
+ this.sendAudioChunk(float32);
337
362
  };
338
363
  source.connect(processor);
339
364
  processor.connect(this.audioContext.destination);
@@ -394,7 +419,7 @@ export class FormmyVoiceClient {
394
419
  audioBuffer.copyToChannel(float32, 0);
395
420
  const source = ctx.createBufferSource();
396
421
  source.buffer = audioBuffer;
397
- source.connect(ctx.destination);
422
+ source.connect(this.getDestination());
398
423
  this.audioQueue.push(source);
399
424
  this.isPlayingAudio = true;
400
425
  if (!this.currentSource)
@@ -420,6 +445,20 @@ export class FormmyVoiceClient {
420
445
  next.onended = () => this.playNextInQueue();
421
446
  next.start();
422
447
  }
448
+ getDestination() {
449
+ if (this._resolvedDestination)
450
+ return this._resolvedDestination;
451
+ const ctx = this.getPlaybackContext();
452
+ const dest = this.config.audioDestination;
453
+ if (!dest)
454
+ return ctx.destination;
455
+ if (typeof dest === "function") {
456
+ this._resolvedDestination = dest(ctx);
457
+ return this._resolvedDestination;
458
+ }
459
+ this._resolvedDestination = dest;
460
+ return this._resolvedDestination;
461
+ }
423
462
  getPlaybackContext() {
424
463
  if (!this._playbackCtx || this._playbackCtx.state === "closed") {
425
464
  this._playbackCtx = new AudioContext({ sampleRate: 24000 });
@@ -1 +1 @@
1
- {"version":3,"file":"voice-client.js","sourceRoot":"","sources":["../../src/voice/voice-client.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AA6BH,MAAM,OAAO,iBAAiB;IA4BR;IA3BZ,EAAE,GAAqB,IAAI,CAAC;IAC5B,WAAW,GAAuB,IAAI,CAAC;IACvC,YAAY,GAAwB,IAAI,CAAC;IACzC,WAAW,GAA4B,IAAI,CAAC;IAC5C,cAAc,GAAG,KAAK,CAAC;IACvB,MAAM,GAAgB,MAAM,CAAC;IAC7B,OAAO,GAAG,KAAK,CAAC;IAExB,qFAAqF;IAC7E,YAAY,GAAwB,IAAI,CAAC;IACzC,UAAU,GAA4B,EAAE,CAAC;IACzC,aAAa,GAAiC,IAAI,CAAC;IACnD,kBAAkB,GAAG,KAAK,CAAC;IAEnC,iBAAiB;IACT,iBAAiB,GAAG,CAAC,CAAC;IACtB,MAAM,CAAU,sBAAsB,GAAG,CAAC,CAAC;IAC3C,MAAM,CAAU,iBAAiB,GAAG,IAAI,CAAC;IACzC,gBAAgB,GAAG,KAAK,CAAC;IAEjC,sBAAsB;IACd,aAAa,GAA4D,IAAI,CAAC;IAC9E,cAAc,GAAG,EAAE,CAAC;IACpB,mBAAmB,GAAG,EAAE,CAAC;IAEzB,QAAQ,GAAuB,EAAE,CAAC;IAE1C,YAAoB,MAA+B;QAA/B,WAAM,GAAN,MAAM,CAAyB;IAAG,CAAC;IAEvD;;OAEG;IACH,EAAE,CAAC,QAA4B;QAC7B,IAAI,CAAC,QAAQ,GAAG,EAAE,GAAG,IAAI,CAAC,QAAQ,EAAE,GAAG,QAAQ,EAAE,CAAC;IACpD,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,OAAO;QACX,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM;YAAE,OAAO;QACnC,IAAI,CAAC,SAAS,CAAC,YAAY,CAAC,CAAC;QAE7B,IAAI,CAAC;YACH,cAAc;YACd,IAAI,CAAC,WAAW,GAAG,MAAM,SAAS,CAAC,YAAY,CAAC,YAAY,CAAC;gBAC3D,KAAK,EAAE;oBACL,UAAU,EAAE,KAAK;oBACjB,YAAY,EAAE,CAAC;oBACf,gBAAgB,EAAE,IAAI;oBACtB,gBAAgB,EAAE,IAAI;iBACvB;aACF,CAAC,CAAC;YAEH,6BAA6B;YAC7B,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;YAE5D,YAAY;YACZ,MAAM,IAAI,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,EAAE,IAAI,CAAC,CAAC;YACxD,MAAM,OAAO,GAAG,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,QAAQ,CAAC;YAChD,MAAM,WAAW,GAAG,IAAI,CAAC,MAAM,CAAC,WAAW,IAAI,QAAQ,CAAC;YACxD,MAAM,KAAK,GAAG,GAAG,IAAI,2BAA2B,IAAI,CAAC,MAAM,CAAC,OAAO,OAAO,IAAI,CAAC,MAAM,CAAC,cAAc,YAAY,OAAO,gBAAgB,WAAW,EAAE,CAAC;YAErJ,IAAI,CAAC,EAAE,GAAG,IAAI,SAAS,CAAC,KAAK,CAAC,CAAC;YAE/B,IAAI,CAAC,EAAE,CAAC,MAAM,GAAG,GAAG,EAAE;gBACpB,gDAAgD;YAClD,CAAC,CAAC;YAEF,IAAI,CAAC,EAAE,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,EAAE;gBACxB,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC;YACzC,CAAC,CAAC;YAEF,IAAI,CAAC,EAAE,CAAC,OAAO,GAAG,GAAG,EAAE;gBACrB,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC,CAAC;YACpE,CAAC,CAAC;YAEF,IAAI,CAAC,EAAE,CAAC,OAAO,GAAG,GAAG,EAAE;gBACrB,IAAI,IAAI,CAAC,gBAAgB,EAAE,CAAC;oBAC1B,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;oBACvB,OAAO;gBACT,CAAC;gBACD,0CAA0C;gBAC1C,IAAI,IAAI,CAAC,iBAAiB,GAAG,iBAAiB,CAAC,sBAAsB,IAAI,IAAI,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;oBAChG,MAAM,KAAK,GAAG,iBAAiB,CAAC,iBAAiB,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,CAAC,iBAAiB,CAAC,CAAC;oBACxF,IAAI,CAAC,iBAAiB,EAAE,CAAC;oBACzB,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,KAAK,CAAC,kCAAkC,IAAI,CAAC,iBAAiB,IAAI,iBAAiB,CAAC,sBAAsB,MAAM,CAAC,CAAC,CAAC;oBAC/I,UAAU,CAAC,GAAG,EAAE,CAAC,IAAI,CAAC,OAAO,EAAE,EAAE,KAAK,CAAC,CAAC;gBAC1C,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;oBACxB,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,KAAK,CAAC,+CAA+C,CAAC,CAAC,CAAC;gBACtF,CAAC;YACH,CAAC,CAAC;QACJ,CAAC;QAAC,OAAO,GAAQ,EAAE,CAAC;YAClB,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YACxB,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,GAAG,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED;;OAEG;IACH,UAAU;QACR,IAAI,CAAC,gBAAgB,GAAG,IAAI,CAAC;QAC7B,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;QAC3B,IAAI,CAAC,YAAY,EAAE,CAAC;QAEpB,0CAA0C;QAC1C,IAAI,IAAI,CAAC,EAAE,EAAE,CAAC;YACZ,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;gBAC1C,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YACzD,CAAC;YACD,MAAM,EAAE,GAAG,IAAI,CAAC,EAAE,CAAC;YACnB,IAAI,CAAC,EAAE,GAAG,IAAI,CAAC;YACf,kCAAkC;YAClC,MAAM,YAAY,GAAG,IAAI,OAAO,CAAO,CAAC,OAAO,EAAE,EAAE;gBACjD,EAAE,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,OAAO,EAAE,CAAC;gBAC7B,EAAE,CAAC,KAAK,EAAE,CAAC;YACb,CAAC,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,CAAC,YAAY,EAAE,IAAI,OAAO,CAAO,CAAC,CAAC,EAAE,EAAE,CAAC,UAAU,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE;gBACpF,IAAI,CAAC;oBAAC,EAAE,CAAC,KAAK,EAAE,CAAC;gBAAC,CAAC;gBAAC,MAAM,CAAC,CAAA,CAAC;YAC9B,CAAC,CAAC,CAAC;QACL,CAAC;QAED,IAAI,CAAC,WAAW,EAAE,UAAU,EAAE,CAAC;QAC/B,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAExB,IAAI,CAAC,WAAW,EAAE,SAAS,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;QACvD,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC;QAExB,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC;QAC3B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QAEzB,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;QACzB,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;QAC9B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAE1B,mBAAmB;QACnB,IAAI,CAAC,YAAY,EAAE,CAAC;QACpB,IAAI,CAAC,YAAY,EAAE,KAAK,EAAE,CAAC;QAC3B,IAAI,CAAC,YAAY,GAAG,IAAI,CAAC;QACzB,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;QAEhC,IAAI,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;IACzB,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,IAAY;QACnB,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI;YAAE,OAAO;QAC9D,IAAI,CAAC,IAAI,CAAC,IAAI,EAAE;YAAE,OAAO;QACzB,IAAI,CAAC,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,SAAS,EAAE,EAAE,OAAO,EAAE,IAAI,CAAC,IAAI,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;IACnF,CAAC;IAED;;OAEG;IACH,QAAQ,CAAC,KAAc;QACrB,IAAI,CAAC,OAAO,GAAG,KAAK,CAAC;IACvB,CAAC;IAED;;OAEG;IACH,QAAQ;QACN,OAAO,IAAI,CAAC,OAAO,CAAC;IACtB,CAAC;IAED;;OAEG;IACH,SAAS;QACP,OAAO,IAAI,CAAC,MAAM,CAAC;IACrB,CAAC;IAED;;OAEG;IACH,YAAY;QACV,OAAO,IAAI,CAAC,cAAc,CAAC;IAC7B,CAAC;IAED,yEAAyE;IAEjE,SAAS,CAAC,MAAmB;QACnC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,QAAQ,CAAC,cAAc,EAAE,CAAC,MAAM,CAAC,CAAC;IACzC,CAAC;IAEO,aAAa,CAAC,OAAY;QAChC,MAAM,SAAS,GAAG,MAAM,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC,CAAC;QAEtD,QAAQ,SAAS,EAAE,CAAC;YAClB,KAAK,aAAa;gBAChB,mFAAmF;gBACnF,IAAI,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,EAAE,CAAC;oBAC9B,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,aAAa,EAAE,EAAE,KAAK,EAAE,IAAI,CAAC,MAAM,CAAC,KAAK,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;gBAC5F,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;gBACzI,CAAC;gBACD,MAAM;YAER,KAAK,iBAAiB;gBACpB,yCAAyC;gBACzC,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,IAAI,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;gBACvI,MAAM;YAER,KAAK,eAAe,CAAC,CAAC,CAAC;gBACrB,MAAM,EAAE,SAAS,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,aAAa,CAAC;gBACrE,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;gBACnE,IAAI,IAAI,CAAC,MAAM,CAAC,SAAS,EAAE,CAAC;oBAC1B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,SAAS,EAAE,QAAQ,EAAE,OAAO,CAAC;yBAChD,IAAI,CAAC,MAAM,CAAC,EAAE;wBACb,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;oBAC5F,CAAC,CAAC;yBACD,KAAK,CAAC,GAAG,CAAC,EAAE;wBACX,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,MAAM,EAAE,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,GAAG,CAAC,OAAO,EAAE,CAAC,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;oBACpI,CAAC,CAAC,CAAC;gBACP,CAAC;gBACD,MAAM;YACR,CAAC;YAED,KAAK,OAAO;gBACV,+DAA+D;gBAC/D,IAAI,CAAC,iBAAiB,GAAG,CAAC,CAAC;gBAC3B,IAAI,CAAC,gBAAgB,GAAG,KAAK,CAAC;gBAC9B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;gBACxB,IAAI,CAAC,iBAAiB,EAAE,CAAC;gBACzB,IAAI,CAAC,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;gBAC7D,MAAM;YAER,KAAK,aAAa;gBAChB,IAAI,CAAC,cAAc,CAAC,OAAO,CAAC,KAAK,CAAC,WAAW,CAAC,OAAO,CAAC,CAAC;gBACvD,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU;oBAAE,IAAI,CAAC,SAAS,CAAC,UAAU,CAAC,CAAC;gBAC3D,MAAM;YAER,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,MAAM,IAAI,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;gBAC9C,IAAI,IAAI,CAAC,aAAa,EAAE,IAAI,KAAK,MAAM,EAAE,CAAC;oBACxC,IAAI,CAAC,cAAc,IAAI,IAAI,CAAC;oBAC5B,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,cAAc,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;gBAC5F,CAAC;qBAAM,IAAI,IAAI,CAAC,aAAa,EAAE,IAAI,KAAK,WAAW,IAAI,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC;oBAClF,IAAI,CAAC,mBAAmB,IAAI,IAAI,CAAC;oBACjC,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,mBAAmB,EAAE,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;gBACtG,CAAC;gBACD,MAAM;YACR,CAAC;YAED,KAAK,cAAc,CAAC,CAAC,CAAC;gBACpB,MAAM,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,YAAY,CAAC;gBACtC,IAAI,EAAE,EAAE,IAAI,KAAK,MAAM,IAAI,CAAC,EAAE,CAAC,IAAI,KAAK,MAAM,IAAI,EAAE,CAAC,IAAI,KAAK,WAAW,CAAC,EAAE,CAAC;oBAC3E,IAAI,OAAO,GAAG,IAAI,CAAC;oBACnB,IAAI,EAAE,CAAC,qBAAqB,EAAE,CAAC;wBAC7B,IAAI,CAAC;4BACH,MAAM,MAAM,GAAG,IAAI,CAAC,KAAK,CAAC,EAAE,CAAC,qBAAqB,CAAC,CAAC;4BACpD,IAAI,EAAE,CAAC,IAAI,KAAK,WAAW,IAAI,MAAM,CAAC,eAAe,KAAK,aAAa,EAAE,CAAC;gCACxE,OAAO,GAAG,KAAK,CAAC;4BAClB,CAAC;wBACH,CAAC;wBAAC,MAAM,CAAC,CAAA,CAAC;oBACZ,CAAC;oBACD,IAAI,CAAC,aAAa,GAAG;wBACnB,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,WAAW;wBAC/C,OAAO;qBACR,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;gBAC5B,CAAC;gBACD,MAAM;YACR,CAAC;YAED,KAAK,YAAY,CAAC,CAAC,CAAC;gBAClB,MAAM,EAAE,UAAU,EAAE,GAAG,OAAO,CAAC,KAAK,CAAC,UAAU,CAAC;gBAEhD,IAAI,UAAU,KAAK,aAAa,EAAE,CAAC;oBACjC,8BAA8B;oBAC9B,IAAI,CAAC,YAAY,EAAE,CAAC;oBACpB,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;oBACzB,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;oBAC9B,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;oBAC1B,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;gBAC1B,CAAC;qBAAM,CAAC;oBACN,6BAA6B;oBAC7B,IAAI,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,CAAC;wBAC/B,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,IAAI,EAAE,IAAI,CAAC,cAAc,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;wBAChG,IAAI,CAAC,cAAc,GAAG,EAAE,CAAC;oBAC3B,CAAC;oBACD,IAAI,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,EAAE,CAAC;wBACpC,IAAI,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,IAAI,EAAE,IAAI,CAAC,mBAAmB,CAAC,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,CAAC,CAAC;wBAC1G,IAAI,CAAC,mBAAmB,GAAG,EAAE,CAAC;oBAChC,CAAC;oBACD,+EAA+E;oBAC/E,IAAI,CAAC,kBAAkB,GAAG,IAAI,CAAC;oBAC/B,IAAI,CAAC,IAAI,CAAC,cAAc,EAAE,CAAC;wBACzB,qEAAqE;wBACrE,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;wBAChC,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;oBAC1B,CAAC;gBACH,CAAC;gBACD,MAAM;YACR,CAAC;YAED,KAAK,OAAO;gBACV,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;gBACxB,IAAI,CAAC,QAAQ,CAAC,OAAO,EAAE,CAAC,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAAC;gBAChE,MAAM;YAER;gBACE,0DAA0D;gBAC1D,IAAI,CAAC,QAAQ,CAAC,aAAa,EAAE,CAAC,SAAS,EAAE,OAAO,CAAC,KAAK,CAAC,SAAS,CAAC,CAAC,CAAC;gBACnE,MAAM;QACV,CAAC;IACH,CAAC;IAEO,KAAK,CAAC,iBAAiB;QAC7B,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,CAAC,IAAI,CAAC,WAAW;YAAE,OAAO;QAEpD,MAAM,MAAM,GAAG,IAAI,CAAC,YAAY,CAAC,uBAAuB,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;QAE3E,IAAI,CAAC;YACH,MAAM,WAAW,GAAG;;;;;;;;;OASnB,CAAC;YACF,MAAM,IAAI,GAAG,IAAI,IAAI,CAAC,CAAC,WAAW,CAAC,EAAE,EAAE,IAAI,EAAE,wBAAwB,EAAE,CAAC,CAAC;YACzE,MAAM,GAAG,GAAG,GAAG,CAAC,eAAe,CAAC,IAAI,CAAC,CAAC;YACtC,MAAM,IAAI,CAAC,YAAY,CAAC,YAAY,CAAC,SAAS,CAAC,GAAG,CAAC,CAAC;YACpD,GAAG,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC;YAEzB,IAAI,CAAC,WAAW,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,YAAY,EAAE,yBAAyB,CAAC,CAAC;YAEtF,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,SAAS,GAAG,CAAC,CAAC,EAAE,EAAE;gBACtC,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI;oBAAE,OAAO;gBAC9E,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,IAAoB,CAAC,CAAC;YAC9C,CAAC,CAAC;YAEF,MAAM,CAAC,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,CAAC;YACjC,iDAAiD;QACnD,CAAC;QAAC,MAAM,CAAC;YACP,6DAA6D;YAC7D,MAAM,SAAS,GAAG,IAAI,CAAC,YAAY,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC,EAAE,CAAC,CAAC,CAAC;YACtE,SAAS,CAAC,cAAc,GAAG,CAAC,CAAC,EAAE,EAAE;gBAC/B,IAAI,IAAI,CAAC,OAAO,IAAI,CAAC,IAAI,CAAC,EAAE,IAAI,IAAI,CAAC,EAAE,CAAC,UAAU,KAAK,SAAS,CAAC,IAAI;oBAAE,OAAO;gBAC9E,IAAI,CAAC,cAAc,CAAC,CAAC,CAAC,WAAW,CAAC,cAAc,CAAC,CAAC,CAAC,CAAC,CAAC;YACvD,CAAC,CAAC;YACF,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;YAC1B,SAAS,CAAC,OAAO,CAAC,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC;QACnD,CAAC;IACH,CAAC;IAED;;;OAGG;IACK,eAAe,GAAmB,EAAE,CAAC;IAErC,cAAc,CAAC,OAAqB;QAC1C,IAAI,IAAI,CAAC,OAAO;YAAE,OAAO;QAEzB,6DAA6D;QAC7D,MAAM,KAAK,GAAG,GAAG,CAAC;QAClB,KAAK,IAAI,MAAM,GAAG,CAAC,EAAE,MAAM,GAAG,OAAO,CAAC,MAAM,EAAE,MAAM,IAAI,KAAK,EAAE,CAAC;YAC9D,IAAI,CAAC,eAAe,CAAC,IAAI,CAAC,OAAO,CAAC,KAAK,CAAC,MAAM,EAAE,MAAM,GAAG,KAAK,CAAC,CAAC,CAAC;QACnE,CAAC;QACD,IAAI,CAAC,eAAe,EAAE,CAAC;IACzB,CAAC;IAEO,eAAe;QACrB,MAAM,KAAK,GAAG,CAAC,CAAC;QAChB,OAAO,IAAI,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,IAAI,IAAI,CAAC,EAAE,EAAE,UAAU,KAAK,SAAS,CAAC,IAAI,EAAE,CAAC;YACjF,MAAM,KAAK,GAAG,IAAI,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;YACpD,KAAK,MAAM,KAAK,IAAI,KAAK,EAAE,CAAC;gBAC1B,MAAM,MAAM,GAAG,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;gBAChD,IAAI,CAAC,EAAG,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,EAAE,KAAK,EAAE,EAAE,UAAU,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,EAAE,EAAE,CAAC,CAAC,CAAC;YAChF,CAAC;QACH,CAAC;IACH,CAAC;IAEO,oBAAoB,CAAC,OAAqB;QAChD,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;QAC7C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,OAAO,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACxC,MAAM,CAAC,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAChD,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC;QAC7C,CAAC;QACD,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;QAC3C,IAAI,MAAM,GAAG,EAAE,CAAC;QAChB,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACtC,MAAM,IAAI,MAAM,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;QAC1C,CAAC;QACD,OAAO,IAAI,CAAC,MAAM,CAAC,CAAC;IACtB,CAAC;IAEO,cAAc,CAAC,WAAmB;QACxC,MAAM,GAAG,GAAG,IAAI,CAAC,kBAAkB,EAAE,CAAC;QACtC,IAAI,CAAC;YACH,MAAM,YAAY,GAAG,IAAI,CAAC,WAAW,CAAC,CAAC;YACvC,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC;YAClD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,YAAY,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBAC7C,KAAK,CAAC,CAAC,CAAC,GAAG,YAAY,CAAC,UAAU,CAAC,CAAC,CAAC,CAAC;YACxC,CAAC;YAED,MAAM,KAAK,GAAG,IAAI,UAAU,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC3C,MAAM,OAAO,GAAG,IAAI,YAAY,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC;YAC/C,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;gBACtC,OAAO,CAAC,CAAC,CAAC,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;YAC3D,CAAC;YAED,MAAM,WAAW,GAAG,GAAG,CAAC,YAAY,CAAC,CAAC,EAAE,OAAO,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;YAC/D,WAAW,CAAC,aAAa,CAAC,OAAO,EAAE,CAAC,CAAC,CAAC;YAEtC,MAAM,MAAM,GAAG,GAAG,CAAC,kBAAkB,EAAE,CAAC;YACxC,MAAM,CAAC,MAAM,GAAG,WAAW,CAAC;YAC5B,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,WAAW,CAAC,CAAC;YAChC,IAAI,CAAC,UAAU,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;YAE7B,IAAI,CAAC,cAAc,GAAG,IAAI,CAAC;YAC3B,IAAI,CAAC,IAAI,CAAC,aAAa;gBAAE,IAAI,CAAC,eAAe,EAAE,CAAC;QAClD,CAAC;QAAC,MAAM,CAAC,CAAA,CAAC;IACZ,CAAC;IAEO,eAAe;QACrB,MAAM,IAAI,GAAG,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACrC,IAAI,CAAC,IAAI,EAAE,CAAC;YACV,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;YAC1B,IAAI,IAAI,CAAC,kBAAkB,EAAE,CAAC;gBAC5B,kEAAkE;gBAClE,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;gBAChC,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;gBAC5B,IAAI,IAAI,CAAC,MAAM,KAAK,UAAU;oBAAE,IAAI,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC;YAC1D,CAAC;YACD,gEAAgE;YAChE,OAAO;QACT,CAAC;QACD,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC1B,IAAI,CAAC,OAAO,GAAG,GAAG,EAAE,CAAC,IAAI,CAAC,eAAe,EAAE,CAAC;QAC5C,IAAI,CAAC,KAAK,EAAE,CAAC;IACf,CAAC;IAEO,kBAAkB;QACxB,IAAI,CAAC,IAAI,CAAC,YAAY,IAAI,IAAI,CAAC,YAAY,CAAC,KAAK,KAAK,QAAQ,EAAE,CAAC;YAC/D,IAAI,CAAC,YAAY,GAAG,IAAI,YAAY,CAAC,EAAE,UAAU,EAAE,KAAK,EAAE,CAAC,CAAC;QAC9D,CAAC;QACD,OAAO,IAAI,CAAC,YAAY,CAAC;IAC3B,CAAC;IAEO,YAAY;QAClB,IAAI,IAAI,CAAC,aAAa,EAAE,CAAC;YACvB,IAAI,CAAC;gBAAC,IAAI,CAAC,aAAa,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;gBAAC,IAAI,CAAC,aAAa,CAAC,UAAU,EAAE,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;YAC7E,IAAI,CAAC,aAAa,GAAG,IAAI,CAAC;QAC5B,CAAC;QACD,IAAI,CAAC,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,EAAE;YAC5B,IAAI,CAAC;gBAAC,CAAC,CAAC,UAAU,EAAE,CAAC;YAAC,CAAC;YAAC,MAAM,CAAC,CAAA,CAAC;QAClC,CAAC,CAAC,CAAC;QACH,IAAI,CAAC,UAAU,GAAG,EAAE,CAAC;QACrB,IAAI,CAAC,cAAc,GAAG,KAAK,CAAC;QAC5B,IAAI,CAAC,kBAAkB,GAAG,KAAK,CAAC;IAClC,CAAC"}
1
+ {"version":3,"file":"voice-client.js","sourceRoot":"","sources":["../../src/voice/voice-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,127 @@
1
+ # Getting Started
2
+
3
+ Formmy lets you add AI chat agents to any app. Agents can answer questions using your knowledge base (RAG), capture leads, display interactive UI artifacts, and hold real-time voice conversations.
4
+
5
+ ## Installation
6
+
7
+ ```bash
8
+ npm install @formmy.app/chat
9
+ ```
10
+
11
+ Peer dependencies:
12
+
13
+ ```bash
14
+ npm install react ai @ai-sdk/react
15
+ ```
16
+
17
+ ## API Keys
18
+
19
+ | Key | Prefix | Use |
20
+ |-----|--------|-----|
21
+ | Secret | `formmy_sk_live_` | Backend — full API access |
22
+ | Publishable | `formmy_pk_live_` | Frontend — chat & voice only, domain-restricted |
23
+
24
+ Get your keys at [formmy.app/dashboard/api-keys](https://formmy.app/dashboard/api-keys).
25
+
26
+ ## Quick Start — Chat Widget
27
+
28
+ Drop a chat bubble into any React app in 3 lines:
29
+
30
+ ```tsx
31
+ import { FormmyProvider, ChatBubble } from "@formmy.app/chat/react";
32
+
33
+ function App() {
34
+ return (
35
+ <FormmyProvider publishableKey="formmy_pk_live_xxx">
36
+ <YourApp />
37
+ <ChatBubble agentId="agent_xxx" position="bottom-right" theme="light" />
38
+ </FormmyProvider>
39
+ );
40
+ }
41
+ ```
42
+
43
+ ## Quick Start — Headless Hook
44
+
45
+ Build a fully custom chat UI:
46
+
47
+ ```tsx
48
+ import { useFormmyChat } from "@formmy.app/chat/react";
49
+
50
+ function CustomChat({ agentId }: { agentId: string }) {
51
+ const { messages, input, setInput, handleSubmit, isLoading } = useFormmyChat({
52
+ agentId,
53
+ });
54
+
55
+ return (
56
+ <div>
57
+ {messages.map((msg) => (
58
+ <div key={msg.id}>
59
+ <strong>{msg.role}:</strong> {msg.content}
60
+ </div>
61
+ ))}
62
+ <form onSubmit={handleSubmit}>
63
+ <input
64
+ value={input}
65
+ onChange={(e) => setInput(e.target.value)}
66
+ placeholder="Type a message..."
67
+ />
68
+ <button type="submit" disabled={isLoading}>
69
+ Send
70
+ </button>
71
+ </form>
72
+ </div>
73
+ );
74
+ }
75
+ ```
76
+
77
+ ## Quick Start — Backend
78
+
79
+ ```typescript
80
+ import { Formmy } from "@formmy.app/chat";
81
+
82
+ const formmy = new Formmy({ secretKey: "formmy_sk_live_xxx" });
83
+
84
+ const agents = await formmy.agents.list();
85
+
86
+ const response = await formmy.chat.send("Hello!", {
87
+ agentId: "agent_xxx",
88
+ sessionId: "user_123",
89
+ });
90
+ ```
91
+
92
+ ## Quick Start — Documents (RAG)
93
+
94
+ Upload documents to your agent's knowledge base so it can answer questions with your data:
95
+
96
+ ```typescript
97
+ import { Formmy } from "@formmy.app/chat";
98
+
99
+ const formmy = new Formmy({ secretKey: "formmy_sk_live_xxx" });
100
+
101
+ // Upload a document
102
+ const doc = await formmy.documents.create("agent_xxx", {
103
+ title: "Return Policy",
104
+ content: "We accept returns within 30 days of purchase...",
105
+ });
106
+
107
+ // List all documents
108
+ const { documents } = await formmy.documents.list("agent_xxx");
109
+
110
+ // Bulk upload (max 20)
111
+ await formmy.documents.bulkCreate("agent_xxx", [
112
+ { title: "FAQ", content: "..." },
113
+ { title: "Pricing", content: "..." },
114
+ ]);
115
+
116
+ // Update content (re-embeds automatically)
117
+ await formmy.documents.update("agent_xxx", doc.document.id, {
118
+ content: "Updated return policy...",
119
+ });
120
+
121
+ // Delete
122
+ await formmy.documents.delete("agent_xxx", doc.document.id);
123
+ ```
124
+
125
+ ## Next Steps
126
+
127
+ - [Voice API](./voice-api.md) — real-time voice conversations over WebSocket
@@ -0,0 +1,439 @@
1
+ # Voice API
2
+
3
+ Real-time bidirectional voice conversations with Formmy agents over WebSocket. Powered by Amazon Nova Sonic.
4
+
5
+ ## Overview
6
+
7
+ - Full-duplex audio: user and agent can speak simultaneously (barge-in)
8
+ - Server-side VAD (voice activity detection) — no client-side logic needed
9
+ - Tool execution during voice calls (server-side and client-side)
10
+ - Available on **PRO**, **ENTERPRISE**, and **TRIAL** plans
11
+ - Cost: **5 credits per minute**
12
+
13
+ ### Available Voices
14
+
15
+ | Voice | Language | Gender |
16
+ |-------|----------|--------|
17
+ | `carlos` | Spanish (MX) | Male |
18
+ | `lupe` | Spanish (MX) | Female |
19
+ | `tiffany` | English (US) | Female |
20
+ | `matthew` | English (US) | Male |
21
+ | `amy` | English (GB) | Female |
22
+ | `ambre` | French | Female |
23
+ | `florian` | French | Male |
24
+ | `beatrice` | Italian | Female |
25
+ | `lorenzo` | Italian | Male |
26
+ | `greta` | German | Female |
27
+ | `lennart` | German | Male |
28
+
29
+ ## Authentication
30
+
31
+ ### Get Voice Config (REST)
32
+
33
+ Before connecting, fetch the agent's voice configuration:
34
+
35
+ ```http
36
+ GET /api/v2/sdk?intent=voice.config&agentId=AGENT_ID
37
+ X-Publishable-Key: formmy_pk_live_xxx
38
+ ```
39
+
40
+ Response:
41
+
42
+ ```json
43
+ {
44
+ "chatbotId": "xxx",
45
+ "name": "Agent Name",
46
+ "voiceEnabled": true,
47
+ "voiceId": "carlos",
48
+ "protocol": {
49
+ "websocket": "/api/voice/v2",
50
+ "params": ["chatbotId", "pk", "voiceId"],
51
+ "audioInput": { "format": "pcm", "sampleRate": 16000, "channels": 1, "encoding": "base64" },
52
+ "audioOutput": { "format": "pcm", "sampleRate": 24000, "channels": 1, "encoding": "base64" }
53
+ }
54
+ }
55
+ ```
56
+
57
+ ### WebSocket Connection
58
+
59
+ ```
60
+ wss://formmy.app/api/voice/v2?chatbotId=CHATBOT_ID&pk=formmy_pk_live_xxx&voiceId=carlos
61
+ ```
62
+
63
+ | Parameter | Required | Description |
64
+ |-----------|----------|-------------|
65
+ | `chatbotId` | Yes | Agent ID |
66
+ | `pk` | Yes (SDK) | Publishable key |
67
+ | `voiceId` | No | Voice to use (default: `carlos`) |
68
+ | `sensitivity` | No | Turn-taking sensitivity: `HIGH`, `MEDIUM` (default), `LOW` |
69
+
70
+ The publishable key must be active, have prefix `formmy_pk_live_`, and belong to the chatbot's owner.
71
+
72
+ ## Audio Formats
73
+
74
+ | Direction | Sample Rate | Channels | Bit Depth | Encoding |
75
+ |-----------|-------------|----------|-----------|----------|
76
+ | Input (client → server) | 16 kHz | 1 (mono) | 16-bit PCM signed LE | base64 |
77
+ | Output (server → client) | 24 kHz | 1 (mono) | 16-bit PCM signed LE | base64 |
78
+
79
+ Send audio chunks every 20–50ms. Max chunk size: 320 bytes (10ms at 16 kHz).
80
+
81
+ ## Session Lifecycle
82
+
83
+ ```
84
+ Client Server
85
+ │ │
86
+ ├─── WebSocket connect ────────────→ │
87
+ │ │
88
+ │ ←── initialized ──────────────── │
89
+ │ { chatbotId, chatbotName } │
90
+ │ │
91
+ ├─── registerTools (optional) ─────→ │ ← only if client tools
92
+ │ ←── toolsRegistered ────────────── │
93
+ │ │
94
+ ├─── sessionStart ─────────────────→ │
95
+ │ │
96
+ │ ←── ready ────────────────────── │
97
+ │ { sessionId } │
98
+ │ │
99
+ ├─── audioStart ───────────────────→ │ (once)
100
+ ├─── audioInput ───────────────────→ │ (continuous, never stop)
101
+ │ ... │
102
+ │ │
103
+ │ ←── agentSpeaking: true ──────── │
104
+ │ ←── audioOutput (chunks) ──────── │
105
+ │ ←── clientToolUse ─────────────── │ ← if tool invoked
106
+ ├─── toolResult ───────────────────→ │
107
+ │ ←── agentSpeaking: false ─────── │
108
+ │ │
109
+ │ (keep sending audioInput) │ ← CRITICAL for barge-in
110
+ │ │
111
+ ├─── close ────────────────────────→ │
112
+ ```
113
+
114
+ ## Session Options
115
+
116
+ The `sessionStart` event accepts optional parameters to customize the session:
117
+
118
+ | Option | Type | Description |
119
+ |--------|------|-------------|
120
+ | `systemPrompt` | string | Overrides the agent's default system prompt for this session |
121
+
122
+ Example:
123
+
124
+ ```json
125
+ {
126
+ "event": "sessionStart",
127
+ "systemPrompt": "You are a customer support agent. Be concise and helpful."
128
+ }
129
+ ```
130
+
131
+ When `systemPrompt` is provided, the agent's default greeting instruction is skipped and your custom prompt is used instead.
132
+
133
+ ## Client → Server Events
134
+
135
+ All messages are JSON: `{ "event": "eventName", ...payload }`.
136
+
137
+ | Event | Payload | Description |
138
+ |-------|---------|-------------|
139
+ | `registerTools` | `{ tools: [{ name, description, inputSchema }] }` | Register client-side tools. Send **before** `sessionStart`. |
140
+ | `sessionStart` | `{ systemPrompt?: string }` | Start session. Send after receiving `initialized`. |
141
+ | `audioStart` | `{}` | Signal mic is active. Send once before first `audioInput`. |
142
+ | `audioInput` | `{ content: "<base64>" }` | PCM 16kHz mono audio chunk. Send continuously — **never stop**. |
143
+ | `audioEnd` | `{}` | Optional. Signals user stopped talking (Nova handles this via VAD). |
144
+ | `textInput` | `{ content: "text" }` | Send a text message during voice session. |
145
+ | `clientToolResult` | `{ toolUseId, toolName, result }` | Response to a `clientToolUse` request. |
146
+ | `close` | `{}` | Gracefully end the session. |
147
+
148
+ ## Server → Client Events
149
+
150
+ | Event | Payload | Description |
151
+ |-------|---------|-------------|
152
+ | `initialized` | `{ chatbotId, chatbotName, message }` | Server ready. Respond with `sessionStart`. |
153
+ | `ready` | `{ sessionId, message }` | Session active. Start streaming audio. |
154
+ | `audioOutput` | `{ content: "<base64>" }` | Agent audio (PCM 24kHz mono). Play immediately — do not buffer. |
155
+ | `agentSpeaking` | `{ speaking: true/false }` | UI indicator only. **Do NOT pause the microphone.** |
156
+ | `clientToolUse` | `{ toolUseId, toolName, content }` | Server requests client to execute a registered tool. |
157
+ | `toolsRegistered` | `{ count, names }` | Confirmation of registered tools. |
158
+ | `contentStart` | Nova passthrough | Content block started. |
159
+ | `contentEnd` | Nova passthrough | Content block ended. |
160
+ | `textOutput` | Nova passthrough | Text transcription. |
161
+ | `toolUse` | Nova passthrough | Server-side tool invocation. |
162
+ | `artifact` | `{ type, data }` | UI artifact to display (product card, gallery, etc). |
163
+ | `error` | `{ message }` | Error description. |
164
+
165
+ ## Tool Handling
166
+
167
+ ### Server-Side Tools (automatic)
168
+
169
+ The agent has built-in tools (searchContext, saveLead, openArtifact, searchPictures) that execute server-side. No client action needed — results feed back into the conversation automatically.
170
+
171
+ ### Client-Side Tools
172
+
173
+ Register tools before starting the session:
174
+
175
+ ```javascript
176
+ ws.send(JSON.stringify({
177
+ event: "registerTools",
178
+ tools: [{
179
+ name: "showNotification",
180
+ description: "Show a notification to the user",
181
+ inputSchema: {
182
+ type: "object",
183
+ properties: {
184
+ message: { type: "string" }
185
+ },
186
+ required: ["message"]
187
+ }
188
+ }]
189
+ }));
190
+ ```
191
+
192
+ When the agent invokes your tool, you'll receive a `clientToolUse` event:
193
+
194
+ ```json
195
+ { "event": "clientToolUse", "toolUseId": "xyz", "toolName": "showNotification", "content": "{\"message\":\"Done!\"}" }
196
+ ```
197
+
198
+ Respond with the result:
199
+
200
+ ```javascript
201
+ ws.send(JSON.stringify({
202
+ event: "clientToolResult",
203
+ toolUseId: "xyz",
204
+ toolName: "showNotification",
205
+ result: "Notification shown"
206
+ }));
207
+ ```
208
+
209
+ ## Barge-In Rules
210
+
211
+ Barge-in (interrupting the agent mid-speech) is handled entirely server-side by Nova's VAD. For it to work:
212
+
213
+ 1. **NEVER stop the microphone** when `agentSpeaking` is true
214
+ 2. **NEVER implement client-side VAD** — Nova handles turn-taking
215
+ 3. **Queue audio output chunks** and play in order — don't buffer everything first
216
+ 4. When the user interrupts, Nova detects it and the agent stops speaking automatically
217
+
218
+ ## Web Example (JavaScript)
219
+
220
+ ```javascript
221
+ const ws = new WebSocket(
222
+ "wss://formmy.app/api/voice/v2?chatbotId=YOUR_ID&pk=formmy_pk_live_xxx&voiceId=carlos"
223
+ );
224
+
225
+ const audioCtx = new AudioContext({ sampleRate: 24000 });
226
+
227
+ ws.onmessage = (e) => {
228
+ const msg = JSON.parse(e.data);
229
+
230
+ switch (msg.event) {
231
+ case "initialized":
232
+ ws.send(JSON.stringify({ event: "sessionStart" }));
233
+ break;
234
+
235
+ case "ready":
236
+ startMicrophone();
237
+ break;
238
+
239
+ case "audioOutput":
240
+ playAudioChunk(msg.content); // decode base64 → PCM → play
241
+ break;
242
+
243
+ case "error":
244
+ console.error("Voice error:", msg.message);
245
+ break;
246
+ }
247
+ };
248
+
249
+ async function startMicrophone() {
250
+ const stream = await navigator.mediaDevices.getUserMedia({
251
+ audio: { sampleRate: 16000, channelCount: 1, echoCancellation: true }
252
+ });
253
+
254
+ const source = audioCtx.createMediaStreamSource(stream);
255
+ const processor = audioCtx.createScriptProcessor(512, 1, 1);
256
+
257
+ // Send audioStart once
258
+ ws.send(JSON.stringify({ event: "audioStart" }));
259
+
260
+ processor.onaudioprocess = (e) => {
261
+ const float32 = e.inputBuffer.getChannelData(0);
262
+ const pcm16 = new Int16Array(float32.length);
263
+ for (let i = 0; i < float32.length; i++) {
264
+ pcm16[i] = Math.max(-32768, Math.min(32767, Math.round(float32[i] * 32767)));
265
+ }
266
+ const base64 = btoa(String.fromCharCode(...new Uint8Array(pcm16.buffer)));
267
+ ws.send(JSON.stringify({ event: "audioInput", content: base64 }));
268
+ };
269
+
270
+ source.connect(processor);
271
+ processor.connect(audioCtx.destination);
272
+ }
273
+
274
+ function playAudioChunk(base64) {
275
+ const bytes = atob(base64);
276
+ const pcm16 = new Int16Array(
277
+ new Uint8Array([...bytes].map((c) => c.charCodeAt(0))).buffer
278
+ );
279
+ const float32 = new Float32Array(pcm16.length);
280
+ for (let i = 0; i < pcm16.length; i++) {
281
+ float32[i] = pcm16[i] / 32768;
282
+ }
283
+ const buffer = audioCtx.createBuffer(1, float32.length, 24000);
284
+ buffer.getChannelData(0).set(float32);
285
+ const source = audioCtx.createBufferSource();
286
+ source.buffer = buffer;
287
+ source.connect(audioCtx.destination);
288
+ source.start();
289
+ }
290
+ ```
291
+
292
+ ## Android Example (Kotlin)
293
+
294
+ ```kotlin
295
+ val client = OkHttpClient()
296
+ val url = "wss://formmy.app/api/voice/v2?chatbotId=$chatbotId&pk=$publishableKey&voiceId=carlos"
297
+
298
+ val ws = client.newWebSocket(Request.Builder().url(url).build(), object : WebSocketListener() {
299
+ override fun onMessage(ws: WebSocket, text: String) {
300
+ val msg = JSONObject(text)
301
+ when (msg.getString("event")) {
302
+ "initialized" -> ws.send("""{"event":"sessionStart"}""")
303
+ "ready" -> startAudioCapture(ws)
304
+ "audioOutput" -> playPcm24k(Base64.decode(msg.getString("content"), Base64.DEFAULT))
305
+ "error" -> Log.e("Voice", msg.getString("message"))
306
+ }
307
+ }
308
+ })
309
+
310
+ fun startAudioCapture(ws: WebSocket) {
311
+ ws.send("""{"event":"audioStart"}""")
312
+ val bufferSize = AudioRecord.getMinBufferSize(16000, AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT)
313
+ val recorder = AudioRecord(MediaRecorder.AudioSource.VOICE_COMMUNICATION, 16000,
314
+ AudioFormat.CHANNEL_IN_MONO, AudioFormat.ENCODING_PCM_16BIT, bufferSize)
315
+ recorder.startRecording()
316
+
317
+ thread {
318
+ val buffer = ByteArray(640) // 20ms at 16kHz
319
+ while (isActive) {
320
+ val read = recorder.read(buffer, 0, buffer.size)
321
+ if (read > 0) {
322
+ val b64 = Base64.encodeToString(buffer.copyOf(read), Base64.NO_WRAP)
323
+ ws.send("""{"event":"audioInput","content":"$b64"}""")
324
+ }
325
+ }
326
+ }
327
+ }
328
+
329
+ fun playPcm24k(pcmData: ByteArray) {
330
+ val track = AudioTrack.Builder()
331
+ .setAudioAttributes(AudioAttributes.Builder()
332
+ .setUsage(AudioAttributes.USAGE_MEDIA)
333
+ .setContentType(AudioAttributes.CONTENT_TYPE_SPEECH).build())
334
+ .setAudioFormat(AudioFormat.Builder()
335
+ .setSampleRate(24000)
336
+ .setChannelMask(AudioFormat.CHANNEL_OUT_MONO)
337
+ .setEncoding(AudioFormat.ENCODING_PCM_16BIT).build())
338
+ .setTransferMode(AudioTrack.MODE_STREAM)
339
+ .setBufferSizeInBytes(pcmData.size)
340
+ .build()
341
+ track.play()
342
+ track.write(pcmData, 0, pcmData.size)
343
+ }
344
+ ```
345
+
346
+ **Important for Android**: Use `VOICE_COMMUNICATION` audio source for built-in echo cancellation.
347
+
348
+ ## Client-Side Tools (React SDK)
349
+
350
+ Register tools that execute in the browser during a voice session. The agent can invoke them mid-conversation and use the results to continue speaking.
351
+
352
+ ```tsx
353
+ import { useFormmyVoice } from '@formmy.app/chat/react';
354
+
355
+ function VoiceWithTools() {
356
+ const { start, stop, status, transcripts } = useFormmyVoice({
357
+ agentId: 'agent_123',
358
+ voiceId: 'lupe',
359
+ sensitivity: 'HIGH',
360
+ systemPrompt: 'Eres un agente de soporte. Sé conciso y útil.',
361
+ tools: [
362
+ {
363
+ name: 'getStorybank',
364
+ description: 'Fetch stories available for this session',
365
+ inputSchema: {
366
+ type: 'object',
367
+ properties: { category: { type: 'string' } },
368
+ required: ['category'],
369
+ },
370
+ },
371
+ ],
372
+ onToolUse: async (toolUseId, toolName, input) => {
373
+ const params = JSON.parse(input);
374
+ if (toolName === 'getStorybank') {
375
+ const stories = await fetchStories(params.category);
376
+ return JSON.stringify(stories);
377
+ }
378
+ return JSON.stringify({ error: 'Unknown tool' });
379
+ },
380
+ });
381
+
382
+ return (
383
+ <button onClick={status === 'idle' ? start : stop}>
384
+ {status === 'idle' ? 'Call' : 'Hang up'}
385
+ </button>
386
+ );
387
+ }
388
+ ```
389
+
390
+ **Flow**: `initialized` → `registerTools` → `toolsRegistered` → `sessionStart` → `ready`. Without tools, the flow skips straight to `sessionStart` as before.
391
+
392
+ ## Cross-Modal: Text During Voice
393
+
394
+ Send text messages during an active voice session using `sendText()`. The agent processes the text and responds with voice audio.
395
+
396
+ ```typescript
397
+ import { useFormmyVoice } from '@formmy.app/chat/react';
398
+
399
+ function VoiceWithText() {
400
+ const { start, stop, status, sendText, transcripts } = useFormmyVoice({
401
+ agentId: 'agent_123',
402
+ });
403
+ const [text, setText] = useState('');
404
+
405
+ return (
406
+ <div>
407
+ <button onClick={status === 'idle' ? start : stop}>
408
+ {status === 'idle' ? 'Call' : 'Hang up'}
409
+ </button>
410
+ {status !== 'idle' && (
411
+ <form onSubmit={(e) => { e.preventDefault(); sendText(text); setText(''); }}>
412
+ <input value={text} onChange={(e) => setText(e.target.value)} placeholder="Type a message..." />
413
+ <button type="submit">Send</button>
414
+ </form>
415
+ )}
416
+ </div>
417
+ );
418
+ }
419
+ ```
420
+
421
+ **Raw WebSocket** (non-React):
422
+ ```javascript
423
+ ws.send(JSON.stringify({ event: { textInput: { content: "Hello" } } }));
424
+ ```
425
+
426
+ > **Note**: Do not mix `textInput` with `audioStart/audioInput` simultaneously. Use one modality at a time.
427
+
428
+ ## Troubleshooting
429
+
430
+ | Problem | Cause | Fix |
431
+ |---------|-------|-----|
432
+ | Barge-in doesn't work | Client pauses mic on `agentSpeaking: true` | Never pause the microphone |
433
+ | High audio latency | Buffering all chunks before playback | Play each `audioOutput` chunk immediately |
434
+ | Echo / feedback loop | No echo cancellation | Enable AEC (`echoCancellation: true` on Web, `VOICE_COMMUNICATION` on Android) |
435
+ | Connection closes immediately | Missing `chatbotId` or invalid key | Check URL params and key format |
436
+ | "Voice requires PRO plan" | Account on FREE/STARTER plan | Upgrade to PRO or higher |
437
+ | Duplicate connection closes previous | Only one voice session per agent allowed | Close previous session before opening new one |
438
+ | No audio from agent | Not playing `audioOutput` events | Decode base64 → PCM → play through AudioContext/AudioTrack |
439
+ | Can't send text during voice | Using wrong event format or no method | Use `sendText()` from the hook or send raw `textInput` event via WebSocket |
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@formmy.app/chat",
3
- "version": "0.0.17",
3
+ "version": "0.0.20",
4
4
  "description": "Official React SDK for Formmy Chat - AI chatbot widgets and headless hooks",
5
5
  "type": "module",
6
6
  "main": "./dist/index.js",
@@ -18,6 +18,7 @@
18
18
  },
19
19
  "files": [
20
20
  "dist",
21
+ "docs",
21
22
  "README.md",
22
23
  "LICENSE"
23
24
  ],