@hamsa-ai/voice-agents-sdk 0.4.1-beta.1 → 0.4.1-beta.3

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
@@ -254,6 +254,12 @@ agent.on("speaking", () => {
254
254
  agent.on("listening", () => {
255
255
  console.log("The agent is listening");
256
256
  });
257
+
258
+ // Unified agent state change event
259
+ agent.on("agentStateChanged", (state) => {
260
+ console.log("Agent state:", state);
261
+ // state can be: 'idle', 'initializing', 'listening', 'thinking', 'speaking'
262
+ });
257
263
  ```
258
264
 
259
265
  ### Conversation Script Events
@@ -579,6 +585,7 @@ The SDK includes comprehensive TypeScript definitions with detailed analytics in
579
585
  ```typescript
580
586
  import {
581
587
  HamsaVoiceAgent,
588
+ AgentState,
582
589
  CallAnalyticsResult,
583
590
  ParticipantData,
584
591
  CustomEventMetadata,
@@ -637,6 +644,16 @@ agent.on("micUnmuted", () => {
637
644
  console.log("Microphone was unmuted");
638
645
  });
639
646
 
647
+ // Agent state tracking with type safety
648
+ agent.on("agentStateChanged", (state: AgentState) => {
649
+ console.log("Agent state:", state); // 'idle' | 'initializing' | 'listening' | 'thinking' | 'speaking'
650
+
651
+ // TypeScript provides autocomplete and type checking
652
+ if (state === 'thinking') {
653
+ showThinkingIndicator();
654
+ }
655
+ });
656
+
640
657
  // Strongly typed custom events
641
658
  agent.on(
642
659
  "customEvent",
@@ -655,6 +672,41 @@ agent.on("participantConnected", (participant: ParticipantData) => {
655
672
 
656
673
  ## Use Cases
657
674
 
675
+ ### Agent State UI Updates
676
+
677
+ ```javascript
678
+ agent.on("agentStateChanged", (state) => {
679
+ // Update UI based on agent state
680
+ const statusElement = document.getElementById("agent-status");
681
+
682
+ switch (state) {
683
+ case 'idle':
684
+ statusElement.textContent = "Agent is idle";
685
+ statusElement.className = "status-idle";
686
+ break;
687
+ case 'initializing':
688
+ statusElement.textContent = "Agent is starting...";
689
+ statusElement.className = "status-initializing";
690
+ break;
691
+ case 'listening':
692
+ statusElement.textContent = "Agent is listening";
693
+ statusElement.className = "status-listening";
694
+ showMicrophoneAnimation();
695
+ break;
696
+ case 'thinking':
697
+ statusElement.textContent = "Agent is thinking...";
698
+ statusElement.className = "status-thinking";
699
+ showThinkingAnimation();
700
+ break;
701
+ case 'speaking':
702
+ statusElement.textContent = "Agent is speaking";
703
+ statusElement.className = "status-speaking";
704
+ showSpeakerAnimation();
705
+ break;
706
+ }
707
+ });
708
+ ```
709
+
658
710
  ### Real-time Call Quality Monitoring
659
711
 
660
712
  ```javascript