@teamlearners/clawops 0.5.8 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -128,6 +128,36 @@ declare function mcpServerHTTP(options: {
128
128
  headers?: Record<string, string>;
129
129
  }): MCPServerHTTP;
130
130
 
131
+ interface ProviderInfo {
132
+ provider: string;
133
+ model: string;
134
+ }
135
+ interface SessionTelemetry {
136
+ sessionType: string;
137
+ llm: ProviderInfo | null;
138
+ stt: ProviderInfo | null;
139
+ tts: ProviderInfo | null;
140
+ voice: string | null;
141
+ language: string;
142
+ greetingEnabled: boolean;
143
+ recordingEnabled: boolean;
144
+ toolCount: number;
145
+ mcpServerCount: number;
146
+ builtinTools: string[];
147
+ }
148
+ interface CallMetrics {
149
+ firstResponseMs: number | null;
150
+ turnCount: number;
151
+ toolCallCount: number;
152
+ toolErrorCount: number;
153
+ bargeInCount: number;
154
+ endReason: string | null;
155
+ errors: Array<{
156
+ type: string;
157
+ message: string;
158
+ }>;
159
+ }
160
+
131
161
  /**
132
162
  * CallSession represents an active phone call and provides methods to
133
163
  * send audio, hang up, and listen for lifecycle events.
@@ -173,6 +203,8 @@ declare class CallSession {
173
203
  private _handlers;
174
204
  private _endedPromise;
175
205
  private _resolveEnded;
206
+ private _metrics;
207
+ private _firstResponseSent;
176
208
  constructor(options: {
177
209
  callId: string;
178
210
  fromNumber: string;
@@ -184,6 +216,13 @@ declare class CallSession {
184
216
  setLogger(logger: Logger): void;
185
217
  get status(): CallStatus;
186
218
  get duration(): number;
219
+ get metrics(): Readonly<CallMetrics>;
220
+ recordFirstResponse(): void;
221
+ recordTurn(): void;
222
+ recordToolCall(): void;
223
+ recordToolError(err: Error): void;
224
+ recordBargeIn(): void;
225
+ recordEndReason(reason: string): void;
187
226
  /** Bind transport functions (called internally by the agent). */
188
227
  _bindTransport(send: SendAudioFn, clear: ClearAudioFn, hangup: HangupFn, sendDtmf?: SendDtmfFn, isConnected?: () => boolean): void;
189
228
  /** Send PCM16 or ulaw audio to the caller. */
@@ -272,6 +311,8 @@ interface Session {
272
311
  stop(): Promise<void>;
273
312
  /** Set the logger instance for this session. */
274
313
  setLogger?(logger: Logger): void;
314
+ /** Return session telemetry for reporting. */
315
+ getTelemetry?(): SessionTelemetry | null;
275
316
  }
276
317
  /**
277
318
  * Speech-to-Text provider interface.
@@ -431,6 +472,69 @@ declare class ClawOpsAgent {
431
472
  private _startCallSession;
432
473
  }
433
474
 
475
+ /**
476
+ * Media WebSocket for streaming audio to/from the telephony platform.
477
+ *
478
+ * ClawOps VoiceML Stream protocol:
479
+ * connected -> start -> media (G.711 ulaw 8kHz base64) -> mark -> stop
480
+ */
481
+
482
+ interface MediaStartEvent {
483
+ streamId: string;
484
+ callId: string;
485
+ accountId: string;
486
+ sampleRate: number;
487
+ }
488
+ interface MediaEvent {
489
+ audio: Buffer;
490
+ timestamp: number;
491
+ }
492
+ interface DtmfEvent {
493
+ digit: string;
494
+ track: string;
495
+ }
496
+ declare class MediaWebSocket {
497
+ private _ws;
498
+ private _audioQueue;
499
+ private _sendLoopRunning;
500
+ private _closed;
501
+ private _onAudio;
502
+ private _onStart;
503
+ private _onClose;
504
+ private _onDtmf;
505
+ private _markWaiters;
506
+ private _log;
507
+ setLogger(logger: Logger): void;
508
+ /** Set the handler for inbound audio data. */
509
+ onAudio(handler: (audio: Buffer, timestamp: number) => void): void;
510
+ /** Set the handler for the start event. */
511
+ onStart(handler: (event: MediaStartEvent) => void): void;
512
+ /** Set the handler for connection close. */
513
+ onClose(handler: () => void): void;
514
+ /** Set the handler for inbound DTMF events. */
515
+ onDtmf(handler: (digit: string) => void): void;
516
+ /** Send a single DTMF digit to the platform. */
517
+ sendDtmf(digit: string): void;
518
+ /** Whether the WebSocket is connected. */
519
+ get isConnected(): boolean;
520
+ /** Connect to a media WebSocket URL with Bearer authentication. */
521
+ connect(url: string, apiKey: string): Promise<void>;
522
+ /** Queue base64-encoded audio for sending. */
523
+ sendAudio(audioBase64: string): void;
524
+ /** Clear all queued outbound audio. */
525
+ sendClear(): void;
526
+ /** Send a mark event. */
527
+ sendMark(name: string): void;
528
+ /** Wait for all queued audio to be sent. */
529
+ flush(): Promise<void>;
530
+ /** Wait for a named mark to be echoed back by the server. */
531
+ waitForMark(name: string, timeoutMs?: number): Promise<void>;
532
+ /** Close the media WebSocket. */
533
+ close(): void;
534
+ private _handleMessage;
535
+ private _startSendLoop;
536
+ }
537
+
434
538
  /**
435
539
  * Audio codec utilities: PCM16 <-> ulaw conversion and resampling.
436
540
  */
@@ -521,6 +625,7 @@ declare class PipelineSession implements Session {
521
625
  setToolRegistry(registry: ToolRegistry): void;
522
626
  setRecorder(recorder: AudioRecorder): void;
523
627
  setBuiltinTools(tools: Set<BuiltinTool>): void;
628
+ getTelemetry(): SessionTelemetry;
524
629
  setLogger(logger: Logger): void;
525
630
  start(callSession: CallSession, tools?: ToolRegistry): Promise<void>;
526
631
  feedAudio(audio: Buffer): void;
@@ -575,6 +680,7 @@ declare class OpenAIRealtime implements Session {
575
680
  private _builtinTools;
576
681
  setLogger(logger: Logger): void;
577
682
  setBuiltinTools(tools: Set<BuiltinTool>): void;
683
+ getTelemetry(): SessionTelemetry;
578
684
  private _ws;
579
685
  private _call;
580
686
  private _tools;
@@ -648,6 +754,7 @@ declare class GeminiRealtime implements Session {
648
754
  setRecorder(recorder: AudioRecorder): void;
649
755
  setBuiltinTools(tools: Set<BuiltinTool>): void;
650
756
  setLogger(logger: Logger): void;
757
+ getTelemetry(): SessionTelemetry;
651
758
  start(callSession: CallSession, tools?: ToolRegistry): Promise<void>;
652
759
  feedAudio(audio: Buffer): void;
653
760
  feedDtmf(digits: string): Promise<void>;
@@ -686,6 +793,8 @@ interface DeepgramSTTOptions {
686
793
  declare class DeepgramSTT implements STT {
687
794
  private _options;
688
795
  private _log;
796
+ get provider(): string;
797
+ get model(): string;
689
798
  setLogger(logger: Logger): void;
690
799
  constructor(options?: DeepgramSTTOptions);
691
800
  transcribe(audioStream: AsyncIterable<Buffer>, options?: {
@@ -717,6 +826,9 @@ interface ElevenLabsTTSOptions {
717
826
  declare class ElevenLabsTTS implements TTS {
718
827
  private _options;
719
828
  private _log;
829
+ get provider(): string;
830
+ get model(): string;
831
+ get voiceId(): string;
720
832
  setLogger(logger: Logger): void;
721
833
  constructor(options?: ElevenLabsTTSOptions);
722
834
  synthesize(text: string | AsyncIterable<string>, options?: {
@@ -743,6 +855,8 @@ interface OpenAILLMOptions {
743
855
  }
744
856
  declare class OpenAILLM implements LLM {
745
857
  private _options;
858
+ get provider(): string;
859
+ get model(): string;
746
860
  constructor(options?: OpenAILLMOptions);
747
861
  generate(messages: ConversationMessage[], options?: {
748
862
  tools?: ToolRegistry;
@@ -767,6 +881,8 @@ interface AnthropicLLMOptions {
767
881
  }
768
882
  declare class AnthropicLLM implements LLM {
769
883
  private _options;
884
+ get provider(): string;
885
+ get model(): string;
770
886
  constructor(options?: AnthropicLLMOptions);
771
887
  generate(messages: ConversationMessage[], options?: {
772
888
  tools?: ToolRegistry;
@@ -791,6 +907,8 @@ interface GeminiLLMOptions {
791
907
  }
792
908
  declare class GeminiLLM implements LLM {
793
909
  private _options;
910
+ get provider(): string;
911
+ get model(): string;
794
912
  constructor(options?: GeminiLLMOptions);
795
913
  generate(messages: ConversationMessage[], options?: {
796
914
  tools?: ToolRegistry;
@@ -819,6 +937,8 @@ interface OpenAICompatLLMOptions {
819
937
  }
820
938
  declare class OpenAICompatLLM implements LLM {
821
939
  private _options;
940
+ get provider(): string;
941
+ get model(): string;
822
942
  constructor(options: OpenAICompatLLMOptions);
823
943
  generate(messages: ConversationMessage[], options?: {
824
944
  tools?: ToolRegistry;
@@ -844,6 +964,8 @@ interface OllamaLLMOptions {
844
964
  }
845
965
  declare class OllamaLLM implements LLM {
846
966
  private _inner;
967
+ get provider(): string;
968
+ get model(): string;
847
969
  constructor(options?: OllamaLLMOptions);
848
970
  generate(messages: ConversationMessage[], options?: {
849
971
  tools?: ToolRegistry;
@@ -860,6 +982,8 @@ interface MistralLLMOptions {
860
982
  }
861
983
  declare class MistralLLM implements LLM {
862
984
  private _inner;
985
+ get provider(): string;
986
+ get model(): string;
863
987
  constructor(options?: MistralLLMOptions);
864
988
  generate(messages: ConversationMessage[], options?: {
865
989
  tools?: ToolRegistry;
@@ -876,6 +1000,8 @@ interface GroqLLMOptions {
876
1000
  }
877
1001
  declare class GroqLLM implements LLM {
878
1002
  private _inner;
1003
+ get provider(): string;
1004
+ get model(): string;
879
1005
  constructor(options?: GroqLLMOptions);
880
1006
  generate(messages: ConversationMessage[], options?: {
881
1007
  tools?: ToolRegistry;
@@ -892,6 +1018,8 @@ interface PerplexityLLMOptions {
892
1018
  }
893
1019
  declare class PerplexityLLM implements LLM {
894
1020
  private _inner;
1021
+ get provider(): string;
1022
+ get model(): string;
895
1023
  constructor(options?: PerplexityLLMOptions);
896
1024
  generate(messages: ConversationMessage[], options?: {
897
1025
  tools?: ToolRegistry;
@@ -908,6 +1036,8 @@ interface TogetherLLMOptions {
908
1036
  }
909
1037
  declare class TogetherLLM implements LLM {
910
1038
  private _inner;
1039
+ get provider(): string;
1040
+ get model(): string;
911
1041
  constructor(options?: TogetherLLMOptions);
912
1042
  generate(messages: ConversationMessage[], options?: {
913
1043
  tools?: ToolRegistry;
@@ -924,6 +1054,8 @@ interface FireworksLLMOptions {
924
1054
  }
925
1055
  declare class FireworksLLM implements LLM {
926
1056
  private _inner;
1057
+ get provider(): string;
1058
+ get model(): string;
927
1059
  constructor(options?: FireworksLLMOptions);
928
1060
  generate(messages: ConversationMessage[], options?: {
929
1061
  tools?: ToolRegistry;
@@ -940,6 +1072,8 @@ interface DeepSeekLLMOptions {
940
1072
  }
941
1073
  declare class DeepSeekLLM implements LLM {
942
1074
  private _inner;
1075
+ get provider(): string;
1076
+ get model(): string;
943
1077
  constructor(options?: DeepSeekLLMOptions);
944
1078
  generate(messages: ConversationMessage[], options?: {
945
1079
  tools?: ToolRegistry;
@@ -956,6 +1090,8 @@ interface XaiLLMOptions {
956
1090
  }
957
1091
  declare class XaiLLM implements LLM {
958
1092
  private _inner;
1093
+ get provider(): string;
1094
+ get model(): string;
959
1095
  constructor(options?: XaiLLMOptions);
960
1096
  generate(messages: ConversationMessage[], options?: {
961
1097
  tools?: ToolRegistry;
@@ -1004,4 +1140,4 @@ declare function createAgentLogger(userLogger?: Logger): Logger;
1004
1140
  */
1005
1141
  declare function createPipelineLogger(parent: Logger): Logger;
1006
1142
 
1007
- export { type AgentEventType, AnthropicLLM, type AnthropicLLMOptions, AudioRecorder, BUILTIN_TOOL_NAMES, BuiltinTool, type CallDirection, CallSession, type CallStatus, ClawOpsAgent, type ClawOpsAgentOptions, type ConversationMessage, DECODE_TABLE, DeepSeekLLM, type DeepSeekLLMOptions, DeepgramSTT, type DeepgramSTTOptions, ElevenLabsTTS, type ElevenLabsTTSOptions, FireworksLLM, type FireworksLLMOptions, type FunctionTool, GeminiLLM, type GeminiLLMOptions, GeminiRealtime, type GeminiRealtimeOptions, GroqLLM, type GroqLLMOptions, type LLM, type LLMChunk, MCPClient, type MCPServerConfig, type MCPServerHTTP, type MCPServerStdio, MistralLLM, type MistralLLMOptions, OllamaLLM, type OllamaLLMOptions, OpenAICompatLLM, type OpenAICompatLLMOptions, OpenAILLM, type OpenAILLMOptions, OpenAIRealtime, type OpenAIRealtimeOptions, type OpenAIToolDefinition, PerplexityLLM, type PerplexityLLMOptions, PipelineSession, type PipelineSessionOptions, type STT, type Session, type SpeechEvent, type TTS, TogetherLLM, type TogetherLLMOptions, type ToolCallRequest, ToolRegistry, type TracingConfig, XaiLLM, type XaiLLMOptions, createAgentLogger, createPipelineLogger, executeBuiltinTool, functionTool, getBuiltinToolSchemas, getTracingConfig, isBuiltinTool, mcpServerHTTP, mcpServerStdio, pcm16ToUlaw, resamplePcm16, resetTracingConfig, setTracingConfig, ulawToPcm16, zodToToolParams };
1143
+ export { type AgentEventType, AnthropicLLM, type AnthropicLLMOptions, AudioRecorder, BUILTIN_TOOL_NAMES, BuiltinTool, type CallDirection, CallSession, type CallStatus, ClawOpsAgent, type ClawOpsAgentOptions, type ConversationMessage, DECODE_TABLE, DeepSeekLLM, type DeepSeekLLMOptions, DeepgramSTT, type DeepgramSTTOptions, type DtmfEvent, ElevenLabsTTS, type ElevenLabsTTSOptions, FireworksLLM, type FireworksLLMOptions, type FunctionTool, GeminiLLM, type GeminiLLMOptions, GeminiRealtime, type GeminiRealtimeOptions, GroqLLM, type GroqLLMOptions, type LLM, type LLMChunk, MCPClient, type MCPServerConfig, type MCPServerHTTP, type MCPServerStdio, type MediaEvent, type MediaStartEvent, MediaWebSocket, MistralLLM, type MistralLLMOptions, OllamaLLM, type OllamaLLMOptions, OpenAICompatLLM, type OpenAICompatLLMOptions, OpenAILLM, type OpenAILLMOptions, OpenAIRealtime, type OpenAIRealtimeOptions, type OpenAIToolDefinition, PerplexityLLM, type PerplexityLLMOptions, PipelineSession, type PipelineSessionOptions, type STT, type Session, type SpeechEvent, type TTS, TogetherLLM, type TogetherLLMOptions, type ToolCallRequest, ToolRegistry, type TracingConfig, XaiLLM, type XaiLLMOptions, createAgentLogger, createPipelineLogger, executeBuiltinTool, functionTool, getBuiltinToolSchemas, getTracingConfig, isBuiltinTool, mcpServerHTTP, mcpServerStdio, pcm16ToUlaw, resamplePcm16, resetTracingConfig, setTracingConfig, ulawToPcm16, zodToToolParams };
@@ -128,6 +128,36 @@ declare function mcpServerHTTP(options: {
128
128
  headers?: Record<string, string>;
129
129
  }): MCPServerHTTP;
130
130
 
131
+ interface ProviderInfo {
132
+ provider: string;
133
+ model: string;
134
+ }
135
+ interface SessionTelemetry {
136
+ sessionType: string;
137
+ llm: ProviderInfo | null;
138
+ stt: ProviderInfo | null;
139
+ tts: ProviderInfo | null;
140
+ voice: string | null;
141
+ language: string;
142
+ greetingEnabled: boolean;
143
+ recordingEnabled: boolean;
144
+ toolCount: number;
145
+ mcpServerCount: number;
146
+ builtinTools: string[];
147
+ }
148
+ interface CallMetrics {
149
+ firstResponseMs: number | null;
150
+ turnCount: number;
151
+ toolCallCount: number;
152
+ toolErrorCount: number;
153
+ bargeInCount: number;
154
+ endReason: string | null;
155
+ errors: Array<{
156
+ type: string;
157
+ message: string;
158
+ }>;
159
+ }
160
+
131
161
  /**
132
162
  * CallSession represents an active phone call and provides methods to
133
163
  * send audio, hang up, and listen for lifecycle events.
@@ -173,6 +203,8 @@ declare class CallSession {
173
203
  private _handlers;
174
204
  private _endedPromise;
175
205
  private _resolveEnded;
206
+ private _metrics;
207
+ private _firstResponseSent;
176
208
  constructor(options: {
177
209
  callId: string;
178
210
  fromNumber: string;
@@ -184,6 +216,13 @@ declare class CallSession {
184
216
  setLogger(logger: Logger): void;
185
217
  get status(): CallStatus;
186
218
  get duration(): number;
219
+ get metrics(): Readonly<CallMetrics>;
220
+ recordFirstResponse(): void;
221
+ recordTurn(): void;
222
+ recordToolCall(): void;
223
+ recordToolError(err: Error): void;
224
+ recordBargeIn(): void;
225
+ recordEndReason(reason: string): void;
187
226
  /** Bind transport functions (called internally by the agent). */
188
227
  _bindTransport(send: SendAudioFn, clear: ClearAudioFn, hangup: HangupFn, sendDtmf?: SendDtmfFn, isConnected?: () => boolean): void;
189
228
  /** Send PCM16 or ulaw audio to the caller. */
@@ -272,6 +311,8 @@ interface Session {
272
311
  stop(): Promise<void>;
273
312
  /** Set the logger instance for this session. */
274
313
  setLogger?(logger: Logger): void;
314
+ /** Return session telemetry for reporting. */
315
+ getTelemetry?(): SessionTelemetry | null;
275
316
  }
276
317
  /**
277
318
  * Speech-to-Text provider interface.
@@ -431,6 +472,69 @@ declare class ClawOpsAgent {
431
472
  private _startCallSession;
432
473
  }
433
474
 
475
+ /**
476
+ * Media WebSocket for streaming audio to/from the telephony platform.
477
+ *
478
+ * ClawOps VoiceML Stream protocol:
479
+ * connected -> start -> media (G.711 ulaw 8kHz base64) -> mark -> stop
480
+ */
481
+
482
+ interface MediaStartEvent {
483
+ streamId: string;
484
+ callId: string;
485
+ accountId: string;
486
+ sampleRate: number;
487
+ }
488
+ interface MediaEvent {
489
+ audio: Buffer;
490
+ timestamp: number;
491
+ }
492
+ interface DtmfEvent {
493
+ digit: string;
494
+ track: string;
495
+ }
496
+ declare class MediaWebSocket {
497
+ private _ws;
498
+ private _audioQueue;
499
+ private _sendLoopRunning;
500
+ private _closed;
501
+ private _onAudio;
502
+ private _onStart;
503
+ private _onClose;
504
+ private _onDtmf;
505
+ private _markWaiters;
506
+ private _log;
507
+ setLogger(logger: Logger): void;
508
+ /** Set the handler for inbound audio data. */
509
+ onAudio(handler: (audio: Buffer, timestamp: number) => void): void;
510
+ /** Set the handler for the start event. */
511
+ onStart(handler: (event: MediaStartEvent) => void): void;
512
+ /** Set the handler for connection close. */
513
+ onClose(handler: () => void): void;
514
+ /** Set the handler for inbound DTMF events. */
515
+ onDtmf(handler: (digit: string) => void): void;
516
+ /** Send a single DTMF digit to the platform. */
517
+ sendDtmf(digit: string): void;
518
+ /** Whether the WebSocket is connected. */
519
+ get isConnected(): boolean;
520
+ /** Connect to a media WebSocket URL with Bearer authentication. */
521
+ connect(url: string, apiKey: string): Promise<void>;
522
+ /** Queue base64-encoded audio for sending. */
523
+ sendAudio(audioBase64: string): void;
524
+ /** Clear all queued outbound audio. */
525
+ sendClear(): void;
526
+ /** Send a mark event. */
527
+ sendMark(name: string): void;
528
+ /** Wait for all queued audio to be sent. */
529
+ flush(): Promise<void>;
530
+ /** Wait for a named mark to be echoed back by the server. */
531
+ waitForMark(name: string, timeoutMs?: number): Promise<void>;
532
+ /** Close the media WebSocket. */
533
+ close(): void;
534
+ private _handleMessage;
535
+ private _startSendLoop;
536
+ }
537
+
434
538
  /**
435
539
  * Audio codec utilities: PCM16 <-> ulaw conversion and resampling.
436
540
  */
@@ -521,6 +625,7 @@ declare class PipelineSession implements Session {
521
625
  setToolRegistry(registry: ToolRegistry): void;
522
626
  setRecorder(recorder: AudioRecorder): void;
523
627
  setBuiltinTools(tools: Set<BuiltinTool>): void;
628
+ getTelemetry(): SessionTelemetry;
524
629
  setLogger(logger: Logger): void;
525
630
  start(callSession: CallSession, tools?: ToolRegistry): Promise<void>;
526
631
  feedAudio(audio: Buffer): void;
@@ -575,6 +680,7 @@ declare class OpenAIRealtime implements Session {
575
680
  private _builtinTools;
576
681
  setLogger(logger: Logger): void;
577
682
  setBuiltinTools(tools: Set<BuiltinTool>): void;
683
+ getTelemetry(): SessionTelemetry;
578
684
  private _ws;
579
685
  private _call;
580
686
  private _tools;
@@ -648,6 +754,7 @@ declare class GeminiRealtime implements Session {
648
754
  setRecorder(recorder: AudioRecorder): void;
649
755
  setBuiltinTools(tools: Set<BuiltinTool>): void;
650
756
  setLogger(logger: Logger): void;
757
+ getTelemetry(): SessionTelemetry;
651
758
  start(callSession: CallSession, tools?: ToolRegistry): Promise<void>;
652
759
  feedAudio(audio: Buffer): void;
653
760
  feedDtmf(digits: string): Promise<void>;
@@ -686,6 +793,8 @@ interface DeepgramSTTOptions {
686
793
  declare class DeepgramSTT implements STT {
687
794
  private _options;
688
795
  private _log;
796
+ get provider(): string;
797
+ get model(): string;
689
798
  setLogger(logger: Logger): void;
690
799
  constructor(options?: DeepgramSTTOptions);
691
800
  transcribe(audioStream: AsyncIterable<Buffer>, options?: {
@@ -717,6 +826,9 @@ interface ElevenLabsTTSOptions {
717
826
  declare class ElevenLabsTTS implements TTS {
718
827
  private _options;
719
828
  private _log;
829
+ get provider(): string;
830
+ get model(): string;
831
+ get voiceId(): string;
720
832
  setLogger(logger: Logger): void;
721
833
  constructor(options?: ElevenLabsTTSOptions);
722
834
  synthesize(text: string | AsyncIterable<string>, options?: {
@@ -743,6 +855,8 @@ interface OpenAILLMOptions {
743
855
  }
744
856
  declare class OpenAILLM implements LLM {
745
857
  private _options;
858
+ get provider(): string;
859
+ get model(): string;
746
860
  constructor(options?: OpenAILLMOptions);
747
861
  generate(messages: ConversationMessage[], options?: {
748
862
  tools?: ToolRegistry;
@@ -767,6 +881,8 @@ interface AnthropicLLMOptions {
767
881
  }
768
882
  declare class AnthropicLLM implements LLM {
769
883
  private _options;
884
+ get provider(): string;
885
+ get model(): string;
770
886
  constructor(options?: AnthropicLLMOptions);
771
887
  generate(messages: ConversationMessage[], options?: {
772
888
  tools?: ToolRegistry;
@@ -791,6 +907,8 @@ interface GeminiLLMOptions {
791
907
  }
792
908
  declare class GeminiLLM implements LLM {
793
909
  private _options;
910
+ get provider(): string;
911
+ get model(): string;
794
912
  constructor(options?: GeminiLLMOptions);
795
913
  generate(messages: ConversationMessage[], options?: {
796
914
  tools?: ToolRegistry;
@@ -819,6 +937,8 @@ interface OpenAICompatLLMOptions {
819
937
  }
820
938
  declare class OpenAICompatLLM implements LLM {
821
939
  private _options;
940
+ get provider(): string;
941
+ get model(): string;
822
942
  constructor(options: OpenAICompatLLMOptions);
823
943
  generate(messages: ConversationMessage[], options?: {
824
944
  tools?: ToolRegistry;
@@ -844,6 +964,8 @@ interface OllamaLLMOptions {
844
964
  }
845
965
  declare class OllamaLLM implements LLM {
846
966
  private _inner;
967
+ get provider(): string;
968
+ get model(): string;
847
969
  constructor(options?: OllamaLLMOptions);
848
970
  generate(messages: ConversationMessage[], options?: {
849
971
  tools?: ToolRegistry;
@@ -860,6 +982,8 @@ interface MistralLLMOptions {
860
982
  }
861
983
  declare class MistralLLM implements LLM {
862
984
  private _inner;
985
+ get provider(): string;
986
+ get model(): string;
863
987
  constructor(options?: MistralLLMOptions);
864
988
  generate(messages: ConversationMessage[], options?: {
865
989
  tools?: ToolRegistry;
@@ -876,6 +1000,8 @@ interface GroqLLMOptions {
876
1000
  }
877
1001
  declare class GroqLLM implements LLM {
878
1002
  private _inner;
1003
+ get provider(): string;
1004
+ get model(): string;
879
1005
  constructor(options?: GroqLLMOptions);
880
1006
  generate(messages: ConversationMessage[], options?: {
881
1007
  tools?: ToolRegistry;
@@ -892,6 +1018,8 @@ interface PerplexityLLMOptions {
892
1018
  }
893
1019
  declare class PerplexityLLM implements LLM {
894
1020
  private _inner;
1021
+ get provider(): string;
1022
+ get model(): string;
895
1023
  constructor(options?: PerplexityLLMOptions);
896
1024
  generate(messages: ConversationMessage[], options?: {
897
1025
  tools?: ToolRegistry;
@@ -908,6 +1036,8 @@ interface TogetherLLMOptions {
908
1036
  }
909
1037
  declare class TogetherLLM implements LLM {
910
1038
  private _inner;
1039
+ get provider(): string;
1040
+ get model(): string;
911
1041
  constructor(options?: TogetherLLMOptions);
912
1042
  generate(messages: ConversationMessage[], options?: {
913
1043
  tools?: ToolRegistry;
@@ -924,6 +1054,8 @@ interface FireworksLLMOptions {
924
1054
  }
925
1055
  declare class FireworksLLM implements LLM {
926
1056
  private _inner;
1057
+ get provider(): string;
1058
+ get model(): string;
927
1059
  constructor(options?: FireworksLLMOptions);
928
1060
  generate(messages: ConversationMessage[], options?: {
929
1061
  tools?: ToolRegistry;
@@ -940,6 +1072,8 @@ interface DeepSeekLLMOptions {
940
1072
  }
941
1073
  declare class DeepSeekLLM implements LLM {
942
1074
  private _inner;
1075
+ get provider(): string;
1076
+ get model(): string;
943
1077
  constructor(options?: DeepSeekLLMOptions);
944
1078
  generate(messages: ConversationMessage[], options?: {
945
1079
  tools?: ToolRegistry;
@@ -956,6 +1090,8 @@ interface XaiLLMOptions {
956
1090
  }
957
1091
  declare class XaiLLM implements LLM {
958
1092
  private _inner;
1093
+ get provider(): string;
1094
+ get model(): string;
959
1095
  constructor(options?: XaiLLMOptions);
960
1096
  generate(messages: ConversationMessage[], options?: {
961
1097
  tools?: ToolRegistry;
@@ -1004,4 +1140,4 @@ declare function createAgentLogger(userLogger?: Logger): Logger;
1004
1140
  */
1005
1141
  declare function createPipelineLogger(parent: Logger): Logger;
1006
1142
 
1007
- export { type AgentEventType, AnthropicLLM, type AnthropicLLMOptions, AudioRecorder, BUILTIN_TOOL_NAMES, BuiltinTool, type CallDirection, CallSession, type CallStatus, ClawOpsAgent, type ClawOpsAgentOptions, type ConversationMessage, DECODE_TABLE, DeepSeekLLM, type DeepSeekLLMOptions, DeepgramSTT, type DeepgramSTTOptions, ElevenLabsTTS, type ElevenLabsTTSOptions, FireworksLLM, type FireworksLLMOptions, type FunctionTool, GeminiLLM, type GeminiLLMOptions, GeminiRealtime, type GeminiRealtimeOptions, GroqLLM, type GroqLLMOptions, type LLM, type LLMChunk, MCPClient, type MCPServerConfig, type MCPServerHTTP, type MCPServerStdio, MistralLLM, type MistralLLMOptions, OllamaLLM, type OllamaLLMOptions, OpenAICompatLLM, type OpenAICompatLLMOptions, OpenAILLM, type OpenAILLMOptions, OpenAIRealtime, type OpenAIRealtimeOptions, type OpenAIToolDefinition, PerplexityLLM, type PerplexityLLMOptions, PipelineSession, type PipelineSessionOptions, type STT, type Session, type SpeechEvent, type TTS, TogetherLLM, type TogetherLLMOptions, type ToolCallRequest, ToolRegistry, type TracingConfig, XaiLLM, type XaiLLMOptions, createAgentLogger, createPipelineLogger, executeBuiltinTool, functionTool, getBuiltinToolSchemas, getTracingConfig, isBuiltinTool, mcpServerHTTP, mcpServerStdio, pcm16ToUlaw, resamplePcm16, resetTracingConfig, setTracingConfig, ulawToPcm16, zodToToolParams };
1143
+ export { type AgentEventType, AnthropicLLM, type AnthropicLLMOptions, AudioRecorder, BUILTIN_TOOL_NAMES, BuiltinTool, type CallDirection, CallSession, type CallStatus, ClawOpsAgent, type ClawOpsAgentOptions, type ConversationMessage, DECODE_TABLE, DeepSeekLLM, type DeepSeekLLMOptions, DeepgramSTT, type DeepgramSTTOptions, type DtmfEvent, ElevenLabsTTS, type ElevenLabsTTSOptions, FireworksLLM, type FireworksLLMOptions, type FunctionTool, GeminiLLM, type GeminiLLMOptions, GeminiRealtime, type GeminiRealtimeOptions, GroqLLM, type GroqLLMOptions, type LLM, type LLMChunk, MCPClient, type MCPServerConfig, type MCPServerHTTP, type MCPServerStdio, type MediaEvent, type MediaStartEvent, MediaWebSocket, MistralLLM, type MistralLLMOptions, OllamaLLM, type OllamaLLMOptions, OpenAICompatLLM, type OpenAICompatLLMOptions, OpenAILLM, type OpenAILLMOptions, OpenAIRealtime, type OpenAIRealtimeOptions, type OpenAIToolDefinition, PerplexityLLM, type PerplexityLLMOptions, PipelineSession, type PipelineSessionOptions, type STT, type Session, type SpeechEvent, type TTS, TogetherLLM, type TogetherLLMOptions, type ToolCallRequest, ToolRegistry, type TracingConfig, XaiLLM, type XaiLLMOptions, createAgentLogger, createPipelineLogger, executeBuiltinTool, functionTool, getBuiltinToolSchemas, getTracingConfig, isBuiltinTool, mcpServerHTTP, mcpServerStdio, pcm16ToUlaw, resamplePcm16, resetTracingConfig, setTracingConfig, ulawToPcm16, zodToToolParams };