@radaros/core 0.3.7 → 0.3.8

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/dist/index.d.ts CHANGED
@@ -151,6 +151,23 @@ interface ToolCacheConfig {
151
151
  /** Time-to-live in milliseconds. Cached results expire after this duration. */
152
152
  ttl: number;
153
153
  }
154
+ interface SandboxConfig {
155
+ /** Explicit on/off toggle. Defaults to true when config object is provided. */
156
+ enabled?: boolean;
157
+ /** Execution timeout in milliseconds. Default: 30000 (30s). */
158
+ timeout?: number;
159
+ /** Maximum heap memory in MB. Default: 256. */
160
+ maxMemoryMB?: number;
161
+ /** Allow outbound network from the sandbox. Default: false. */
162
+ allowNetwork?: boolean;
163
+ /** Allow filesystem access. Default: false. */
164
+ allowFS?: boolean | {
165
+ readOnly?: string[];
166
+ readWrite?: string[];
167
+ };
168
+ /** Whitelisted environment variables forwarded to the sandbox. */
169
+ env?: Record<string, string>;
170
+ }
154
171
  interface ToolDef {
155
172
  name: string;
156
173
  description: string;
@@ -160,6 +177,10 @@ interface ToolDef {
160
177
  rawJsonSchema?: Record<string, unknown>;
161
178
  /** Enable result caching for this tool. */
162
179
  cache?: ToolCacheConfig;
180
+ /** Run this tool in a sandboxed subprocess. Off by default. */
181
+ sandbox?: boolean | SandboxConfig;
182
+ /** Require human approval before executing this tool. */
183
+ requiresApproval?: boolean | ((args: Record<string, unknown>) => boolean);
163
184
  }
164
185
  interface ToolCallResult {
165
186
  toolCallId: string;
@@ -304,6 +325,44 @@ interface RetryConfig {
304
325
  }
305
326
  declare function withRetry<T>(fn: () => Promise<T>, config?: Partial<RetryConfig>): Promise<T>;
306
327
 
328
+ interface ApprovalRequest {
329
+ requestId: string;
330
+ toolName: string;
331
+ args: unknown;
332
+ agentName: string;
333
+ runId: string;
334
+ }
335
+ interface ApprovalDecision {
336
+ approved: boolean;
337
+ reason?: string;
338
+ }
339
+ interface ApprovalConfig {
340
+ /** Which tools require approval: "none" (default), "all", or an array of tool names. */
341
+ policy: "none" | "all" | string[];
342
+ /** Callback invoked when approval is needed. Return a decision. */
343
+ onApproval?: (request: ApprovalRequest) => Promise<ApprovalDecision>;
344
+ /** Timeout in ms for waiting on human response. Default: 300000 (5 min). Auto-deny on timeout. */
345
+ timeout?: number;
346
+ }
347
+ declare class ApprovalManager {
348
+ private policy;
349
+ private onApproval?;
350
+ private timeout;
351
+ private eventBus?;
352
+ private pending;
353
+ constructor(config: ApprovalConfig & {
354
+ eventBus?: EventBus;
355
+ });
356
+ needsApproval(toolName: string, args: Record<string, unknown>, toolRequiresApproval?: boolean | ((args: Record<string, unknown>) => boolean)): boolean;
357
+ check(toolName: string, args: unknown, ctx: RunContext, agentName: string): Promise<ApprovalDecision>;
358
+ /** Externally approve a pending request (for event-driven mode). */
359
+ approve(requestId: string, reason?: string): void;
360
+ /** Externally deny a pending request (for event-driven mode). */
361
+ deny(requestId: string, reason?: string): void;
362
+ private callbackMode;
363
+ private eventMode;
364
+ }
365
+
307
366
  interface AgentConfig {
308
367
  name: string;
309
368
  model: ModelProvider;
@@ -334,6 +393,10 @@ interface AgentConfig {
334
393
  retry?: Partial<RetryConfig>;
335
394
  /** Maximum context window tokens. History is auto-trimmed to fit. */
336
395
  maxContextTokens?: number;
396
+ /** Default sandbox config applied to ALL tools unless the tool explicitly sets sandbox: false. Off by default. */
397
+ sandbox?: boolean | SandboxConfig;
398
+ /** Human-in-the-loop approval configuration for tool calls. */
399
+ approval?: ApprovalConfig;
337
400
  }
338
401
  interface RunOpts {
339
402
  sessionId?: string;
@@ -440,6 +503,38 @@ type AgentEventMap = {
440
503
  "voice.disconnected": {
441
504
  agentName: string;
442
505
  };
506
+ "browser.screenshot": {
507
+ data: Buffer;
508
+ };
509
+ "browser.action": {
510
+ action: unknown;
511
+ };
512
+ "browser.step": {
513
+ index: number;
514
+ action: unknown;
515
+ pageUrl: string;
516
+ screenshot: Buffer;
517
+ };
518
+ "browser.done": {
519
+ result: string;
520
+ success: boolean;
521
+ steps: unknown[];
522
+ };
523
+ "browser.error": {
524
+ error: Error;
525
+ };
526
+ "tool.approval.request": {
527
+ requestId: string;
528
+ toolName: string;
529
+ args: unknown;
530
+ agentName: string;
531
+ runId: string;
532
+ };
533
+ "tool.approval.response": {
534
+ requestId: string;
535
+ approved: boolean;
536
+ reason?: string;
537
+ };
443
538
  };
444
539
 
445
540
  type EventKey = keyof AgentEventMap;
@@ -462,10 +557,12 @@ declare class Agent {
462
557
  private llmLoop;
463
558
  private logger;
464
559
  private storageInitPromise;
560
+ private _toolExecutor;
465
561
  get tools(): ToolDef[];
466
562
  get modelId(): string;
467
563
  get providerId(): string;
468
564
  get hasStructuredOutput(): boolean;
565
+ get approvalManager(): ApprovalManager | null;
469
566
  get structuredOutputSchema(): zod.ZodSchema | undefined;
470
567
  constructor(config: AgentConfig);
471
568
  run(input: MessageContent, opts?: RunOpts): Promise<RunOutput>;
@@ -475,12 +572,24 @@ declare class Agent {
475
572
  private trimHistoryByTokens;
476
573
  }
477
574
 
575
+ interface ToolExecutorConfig {
576
+ concurrency?: number;
577
+ sandbox?: boolean | SandboxConfig;
578
+ approval?: ApprovalConfig & {
579
+ eventBus?: EventBus;
580
+ };
581
+ agentName?: string;
582
+ }
478
583
  declare class ToolExecutor {
479
584
  private tools;
480
585
  private concurrency;
481
586
  private cache;
482
587
  private cachedDefs;
483
- constructor(tools: ToolDef[], concurrency?: number);
588
+ private agentSandbox?;
589
+ private approvalManager?;
590
+ private agentName;
591
+ constructor(tools: ToolDef[], configOrConcurrency?: number | ToolExecutorConfig);
592
+ getApprovalManager(): ApprovalManager | undefined;
484
593
  clearCache(): void;
485
594
  private getCacheKey;
486
595
  private getCached;
@@ -609,6 +718,135 @@ declare class Workflow<TState extends Record<string, unknown> = Record<string, u
609
718
  }): Promise<WorkflowResult<TState>>;
610
719
  }
611
720
 
721
+ type AudioFormat = "pcm16" | "g711_ulaw" | "g711_alaw";
722
+ interface TurnDetectionConfig {
723
+ /** Server-side VAD type. */
724
+ type: "server_vad";
725
+ /** Activation threshold (0-1). Lower = more sensitive. */
726
+ threshold?: number;
727
+ /** Duration of speech (ms) required to open the turn. */
728
+ prefixPaddingMs?: number;
729
+ /** Duration of silence (ms) required to close the turn. */
730
+ silenceDurationMs?: number;
731
+ }
732
+ interface RealtimeSessionConfig {
733
+ instructions?: string;
734
+ voice?: string;
735
+ tools?: ToolDefinition[];
736
+ inputAudioFormat?: AudioFormat;
737
+ outputAudioFormat?: AudioFormat;
738
+ turnDetection?: TurnDetectionConfig | null;
739
+ temperature?: number;
740
+ maxResponseOutputTokens?: number | "inf";
741
+ apiKey?: string;
742
+ }
743
+ interface RealtimeToolCall {
744
+ id: string;
745
+ name: string;
746
+ arguments: string;
747
+ }
748
+ type RealtimeEventMap = {
749
+ audio: {
750
+ data: Buffer;
751
+ mimeType?: string;
752
+ };
753
+ text: {
754
+ text: string;
755
+ };
756
+ transcript: {
757
+ text: string;
758
+ role: "user" | "assistant";
759
+ };
760
+ tool_call: RealtimeToolCall;
761
+ interrupted: {};
762
+ error: {
763
+ error: Error;
764
+ };
765
+ connected: {};
766
+ disconnected: {};
767
+ };
768
+ type RealtimeEvent = keyof RealtimeEventMap;
769
+ interface RealtimeConnection {
770
+ sendAudio(data: Buffer): void;
771
+ sendText(text: string): void;
772
+ sendToolResult(callId: string, result: string): void;
773
+ interrupt(): void;
774
+ close(): Promise<void>;
775
+ on<K extends RealtimeEvent>(event: K, handler: (data: RealtimeEventMap[K]) => void): void;
776
+ off<K extends RealtimeEvent>(event: K, handler: (data: RealtimeEventMap[K]) => void): void;
777
+ }
778
+ interface RealtimeProvider {
779
+ readonly providerId: string;
780
+ readonly modelId: string;
781
+ connect(config: RealtimeSessionConfig): Promise<RealtimeConnection>;
782
+ }
783
+ interface VoiceAgentConfig {
784
+ name: string;
785
+ provider: RealtimeProvider;
786
+ instructions?: string;
787
+ tools?: ToolDef[];
788
+ voice?: string;
789
+ turnDetection?: TurnDetectionConfig | null;
790
+ inputAudioFormat?: AudioFormat;
791
+ outputAudioFormat?: AudioFormat;
792
+ temperature?: number;
793
+ maxResponseOutputTokens?: number | "inf";
794
+ eventBus?: EventBus;
795
+ logLevel?: LogLevel;
796
+ /** User-scoped memory — persists facts about a user across sessions. */
797
+ userMemory?: UserMemory;
798
+ /** LLM model used for auto-extracting user facts from transcripts (required if userMemory is set). */
799
+ model?: ModelProvider;
800
+ /** Default session ID (can be overridden per connect()). */
801
+ sessionId?: string;
802
+ /** Default user ID (can be overridden per connect()). */
803
+ userId?: string;
804
+ }
805
+ type VoiceSessionEventMap = RealtimeEventMap & {
806
+ tool_call_start: {
807
+ name: string;
808
+ args: unknown;
809
+ };
810
+ tool_result: {
811
+ name: string;
812
+ result: string;
813
+ };
814
+ };
815
+ type VoiceSessionEvent = keyof VoiceSessionEventMap;
816
+ interface VoiceSession {
817
+ sendAudio(data: Buffer): void;
818
+ sendText(text: string): void;
819
+ interrupt(): void;
820
+ close(): Promise<void>;
821
+ on<K extends VoiceSessionEvent>(event: K, handler: (data: VoiceSessionEventMap[K]) => void): void;
822
+ off<K extends VoiceSessionEvent>(event: K, handler: (data: VoiceSessionEventMap[K]) => void): void;
823
+ }
824
+
825
+ interface OpenAIRealtimeConfig {
826
+ apiKey?: string;
827
+ baseURL?: string;
828
+ }
829
+ declare class OpenAIRealtimeProvider implements RealtimeProvider {
830
+ readonly providerId = "openai-realtime";
831
+ readonly modelId: string;
832
+ private apiKey?;
833
+ private baseURL?;
834
+ constructor(modelId?: string, config?: OpenAIRealtimeConfig);
835
+ connect(config: RealtimeSessionConfig): Promise<RealtimeConnection>;
836
+ private buildSessionPayload;
837
+ }
838
+
839
+ interface GoogleLiveConfig {
840
+ apiKey?: string;
841
+ }
842
+ declare class GoogleLiveProvider implements RealtimeProvider {
843
+ readonly providerId = "google-live";
844
+ readonly modelId: string;
845
+ private apiKey?;
846
+ constructor(modelId?: string, config?: GoogleLiveConfig);
847
+ connect(config: RealtimeSessionConfig): Promise<RealtimeConnection>;
848
+ }
849
+
612
850
  type ProviderFactory = (modelId: string, config?: Record<string, unknown>) => ModelProvider;
613
851
  declare class ModelRegistry {
614
852
  private factories;
@@ -635,6 +873,24 @@ declare function vertex(modelId: string, config?: {
635
873
  location?: string;
636
874
  credentials?: string;
637
875
  }): ModelProvider;
876
+ /**
877
+ * Shorthand for `new OpenAIRealtimeProvider(modelId, config)`.
878
+ *
879
+ * @example
880
+ * const agent = new VoiceAgent({
881
+ * provider: openaiRealtime("gpt-4o-realtime-preview"),
882
+ * });
883
+ */
884
+ declare function openaiRealtime(modelId?: string, config?: OpenAIRealtimeConfig): RealtimeProvider;
885
+ /**
886
+ * Shorthand for `new GoogleLiveProvider(modelId, config)`.
887
+ *
888
+ * @example
889
+ * const agent = new VoiceAgent({
890
+ * provider: googleLive(),
891
+ * });
892
+ */
893
+ declare function googleLive(modelId?: string, config?: GoogleLiveConfig): RealtimeProvider;
638
894
 
639
895
  interface OpenAIConfig {
640
896
  apiKey?: string;
@@ -770,8 +1026,18 @@ declare function defineTool<T extends z.ZodObject<any>>(config: {
770
1026
  parameters: T;
771
1027
  execute: (args: z.infer<T>, ctx: RunContext) => Promise<string | ToolResult>;
772
1028
  cache?: ToolCacheConfig;
1029
+ sandbox?: boolean | SandboxConfig;
1030
+ requiresApproval?: boolean | ((args: Record<string, unknown>) => boolean);
773
1031
  }): ToolDef;
774
1032
 
1033
+ declare function resolveSandboxConfig(toolLevel?: boolean | SandboxConfig, agentLevel?: boolean | SandboxConfig): SandboxConfig | null;
1034
+ declare class Sandbox {
1035
+ private config;
1036
+ constructor(config: SandboxConfig);
1037
+ execute(toolExecuteFn: (args: Record<string, unknown>, ctx: RunContext) => Promise<string | ToolResult>, args: Record<string, unknown>, ctx: RunContext): Promise<string | ToolResult>;
1038
+ private getWorkerPath;
1039
+ }
1040
+
775
1041
  declare class InMemoryStorage implements StorageDriver {
776
1042
  private store;
777
1043
  private makeKey;
@@ -1392,110 +1658,6 @@ declare class A2ARemoteAgent {
1392
1658
  private partsToText;
1393
1659
  }
1394
1660
 
1395
- type AudioFormat = "pcm16" | "g711_ulaw" | "g711_alaw";
1396
- interface TurnDetectionConfig {
1397
- /** Server-side VAD type. */
1398
- type: "server_vad";
1399
- /** Activation threshold (0-1). Lower = more sensitive. */
1400
- threshold?: number;
1401
- /** Duration of speech (ms) required to open the turn. */
1402
- prefixPaddingMs?: number;
1403
- /** Duration of silence (ms) required to close the turn. */
1404
- silenceDurationMs?: number;
1405
- }
1406
- interface RealtimeSessionConfig {
1407
- instructions?: string;
1408
- voice?: string;
1409
- tools?: ToolDefinition[];
1410
- inputAudioFormat?: AudioFormat;
1411
- outputAudioFormat?: AudioFormat;
1412
- turnDetection?: TurnDetectionConfig | null;
1413
- temperature?: number;
1414
- maxResponseOutputTokens?: number | "inf";
1415
- apiKey?: string;
1416
- }
1417
- interface RealtimeToolCall {
1418
- id: string;
1419
- name: string;
1420
- arguments: string;
1421
- }
1422
- type RealtimeEventMap = {
1423
- audio: {
1424
- data: Buffer;
1425
- mimeType?: string;
1426
- };
1427
- text: {
1428
- text: string;
1429
- };
1430
- transcript: {
1431
- text: string;
1432
- role: "user" | "assistant";
1433
- };
1434
- tool_call: RealtimeToolCall;
1435
- interrupted: {};
1436
- error: {
1437
- error: Error;
1438
- };
1439
- connected: {};
1440
- disconnected: {};
1441
- };
1442
- type RealtimeEvent = keyof RealtimeEventMap;
1443
- interface RealtimeConnection {
1444
- sendAudio(data: Buffer): void;
1445
- sendText(text: string): void;
1446
- sendToolResult(callId: string, result: string): void;
1447
- interrupt(): void;
1448
- close(): Promise<void>;
1449
- on<K extends RealtimeEvent>(event: K, handler: (data: RealtimeEventMap[K]) => void): void;
1450
- off<K extends RealtimeEvent>(event: K, handler: (data: RealtimeEventMap[K]) => void): void;
1451
- }
1452
- interface RealtimeProvider {
1453
- readonly providerId: string;
1454
- readonly modelId: string;
1455
- connect(config: RealtimeSessionConfig): Promise<RealtimeConnection>;
1456
- }
1457
- interface VoiceAgentConfig {
1458
- name: string;
1459
- provider: RealtimeProvider;
1460
- instructions?: string;
1461
- tools?: ToolDef[];
1462
- voice?: string;
1463
- turnDetection?: TurnDetectionConfig | null;
1464
- inputAudioFormat?: AudioFormat;
1465
- outputAudioFormat?: AudioFormat;
1466
- temperature?: number;
1467
- maxResponseOutputTokens?: number | "inf";
1468
- eventBus?: EventBus;
1469
- logLevel?: LogLevel;
1470
- /** User-scoped memory — persists facts about a user across sessions. */
1471
- userMemory?: UserMemory;
1472
- /** LLM model used for auto-extracting user facts from transcripts (required if userMemory is set). */
1473
- model?: ModelProvider;
1474
- /** Default session ID (can be overridden per connect()). */
1475
- sessionId?: string;
1476
- /** Default user ID (can be overridden per connect()). */
1477
- userId?: string;
1478
- }
1479
- type VoiceSessionEventMap = RealtimeEventMap & {
1480
- tool_call_start: {
1481
- name: string;
1482
- args: unknown;
1483
- };
1484
- tool_result: {
1485
- name: string;
1486
- result: string;
1487
- };
1488
- };
1489
- type VoiceSessionEvent = keyof VoiceSessionEventMap;
1490
- interface VoiceSession {
1491
- sendAudio(data: Buffer): void;
1492
- sendText(text: string): void;
1493
- interrupt(): void;
1494
- close(): Promise<void>;
1495
- on<K extends VoiceSessionEvent>(event: K, handler: (data: VoiceSessionEventMap[K]) => void): void;
1496
- off<K extends VoiceSessionEvent>(event: K, handler: (data: VoiceSessionEventMap[K]) => void): void;
1497
- }
1498
-
1499
1661
  declare class VoiceAgent {
1500
1662
  readonly name: string;
1501
1663
  private config;
@@ -1519,31 +1681,6 @@ declare class VoiceAgent {
1519
1681
  private handleToolCall;
1520
1682
  }
1521
1683
 
1522
- interface OpenAIRealtimeConfig {
1523
- apiKey?: string;
1524
- baseURL?: string;
1525
- }
1526
- declare class OpenAIRealtimeProvider implements RealtimeProvider {
1527
- readonly providerId = "openai-realtime";
1528
- readonly modelId: string;
1529
- private apiKey?;
1530
- private baseURL?;
1531
- constructor(modelId?: string, config?: OpenAIRealtimeConfig);
1532
- connect(config: RealtimeSessionConfig): Promise<RealtimeConnection>;
1533
- private buildSessionPayload;
1534
- }
1535
-
1536
- interface GoogleLiveConfig {
1537
- apiKey?: string;
1538
- }
1539
- declare class GoogleLiveProvider implements RealtimeProvider {
1540
- readonly providerId = "google-live";
1541
- readonly modelId: string;
1542
- private apiKey?;
1543
- constructor(modelId?: string, config?: GoogleLiveConfig);
1544
- connect(config: RealtimeSessionConfig): Promise<RealtimeConnection>;
1545
- }
1546
-
1547
1684
  /**
1548
1685
  * Base class for all RadarOS Toolkits.
1549
1686
  * A Toolkit is a collection of related tools that share configuration.
@@ -1708,4 +1845,4 @@ declare class DuckDuckGoToolkit extends Toolkit {
1708
1845
  private searchNews;
1709
1846
  }
1710
1847
 
1711
- export { type A2AAgentCard, type A2AArtifact, type A2ADataPart, type A2AFilePart, type A2AJsonRpcRequest, type A2AJsonRpcResponse, type A2AMessage, type A2APart, A2ARemoteAgent, type A2ARemoteAgentConfig, type A2ASendParams, type A2ASkill, type A2ATask, type A2ATaskQueryParams, type A2ATaskState, type A2ATextPart, Agent, type AgentConfig, type AgentEventMap, type AgentHooks, type AgentStep, AnthropicProvider, type AppendResult, type Artifact, type AudioFormat, type AudioPart, type BM25Document, BM25Index, type BM25Result, BaseVectorStore, type ChatMessage, type ConditionStep, type ContentPart, type DuckDuckGoConfig, DuckDuckGoToolkit, type EmbeddingProvider, EventBus, type FilePart, type FunctionStep, type GmailConfig, GmailToolkit, GoogleEmbedding, type GoogleEmbeddingConfig, type GoogleLiveConfig, GoogleLiveProvider, GoogleProvider, type GuardrailResult, type HackerNewsConfig, HackerNewsToolkit, type HybridSearchConfig, type ImagePart, InMemoryStorage, InMemoryVectorStore, type InputGuardrail, KnowledgeBase, type KnowledgeBaseConfig, type KnowledgeBaseToolConfig, LLMLoop, type LogLevel, Logger, type LoggerConfig, MCPToolProvider, type MCPToolProviderConfig, Memory, type MemoryConfig, type MemoryEntry, type MessageContent, type MessageRole, type ModelConfig, type ModelProvider, ModelRegistry, type ModelResponse, MongoDBStorage, type MongoDBVectorConfig, MongoDBVectorStore, OllamaProvider, OpenAIEmbedding, type OpenAIEmbeddingConfig, OpenAIProvider, type OpenAIRealtimeConfig, OpenAIRealtimeProvider, type OutputGuardrail, type ParallelStep, type PgVectorConfig, PgVectorStore, PostgresStorage, type QdrantConfig, QdrantVectorStore, type RRFOptions, type RankedItem, type RealtimeConnection, type RealtimeEvent, type RealtimeEventMap, type RealtimeProvider, type RealtimeSessionConfig, type RealtimeToolCall, type ReasoningConfig, type RetryConfig, RunContext, type RunOpts, type RunOutput, type SearchMode, type Session, SessionManager, type SessionManagerConfig, SqliteStorage, type StepDef, type StepResult, type StorageDriver, type StreamChunk, Team, type TeamConfig, TeamMode, type TextPart, type TokenUsage, type ToolCacheConfig, type ToolCall, type ToolCallResult, type ToolDef, type ToolDefinition, ToolExecutor, type ToolResult, Toolkit, type TurnDetectionConfig, type UserFact, UserMemory, type UserMemoryConfig, type VectorDocument, type VectorSearchOptions, type VectorSearchResult, type VectorStore, type VertexAIConfig, VertexAIProvider, VoiceAgent, type VoiceAgentConfig, type VoiceSession, type VoiceSessionEvent, type VoiceSessionEventMap, type WebSearchConfig, WebSearchToolkit, type WhatsAppConfig, WhatsAppToolkit, Workflow, type WorkflowConfig, type WorkflowResult, anthropic, defineTool, getTextContent, google, isMultiModal, ollama, openai, reciprocalRankFusion, registry, vertex, withRetry };
1848
+ export { type A2AAgentCard, type A2AArtifact, type A2ADataPart, type A2AFilePart, type A2AJsonRpcRequest, type A2AJsonRpcResponse, type A2AMessage, type A2APart, A2ARemoteAgent, type A2ARemoteAgentConfig, type A2ASendParams, type A2ASkill, type A2ATask, type A2ATaskQueryParams, type A2ATaskState, type A2ATextPart, Agent, type AgentConfig, type AgentEventMap, type AgentHooks, type AgentStep, AnthropicProvider, type AppendResult, type ApprovalConfig, type ApprovalDecision, ApprovalManager, type ApprovalRequest, type Artifact, type AudioFormat, type AudioPart, type BM25Document, BM25Index, type BM25Result, BaseVectorStore, type ChatMessage, type ConditionStep, type ContentPart, type DuckDuckGoConfig, DuckDuckGoToolkit, type EmbeddingProvider, EventBus, type FilePart, type FunctionStep, type GmailConfig, GmailToolkit, GoogleEmbedding, type GoogleEmbeddingConfig, type GoogleLiveConfig, GoogleLiveProvider, GoogleProvider, type GuardrailResult, type HackerNewsConfig, HackerNewsToolkit, type HybridSearchConfig, type ImagePart, InMemoryStorage, InMemoryVectorStore, type InputGuardrail, KnowledgeBase, type KnowledgeBaseConfig, type KnowledgeBaseToolConfig, LLMLoop, type LogLevel, Logger, type LoggerConfig, MCPToolProvider, type MCPToolProviderConfig, Memory, type MemoryConfig, type MemoryEntry, type MessageContent, type MessageRole, type ModelConfig, type ModelProvider, ModelRegistry, type ModelResponse, MongoDBStorage, type MongoDBVectorConfig, MongoDBVectorStore, OllamaProvider, OpenAIEmbedding, type OpenAIEmbeddingConfig, OpenAIProvider, type OpenAIRealtimeConfig, OpenAIRealtimeProvider, type OutputGuardrail, type ParallelStep, type PgVectorConfig, PgVectorStore, PostgresStorage, type QdrantConfig, QdrantVectorStore, type RRFOptions, type RankedItem, type RealtimeConnection, type RealtimeEvent, type RealtimeEventMap, type RealtimeProvider, type RealtimeSessionConfig, type RealtimeToolCall, type ReasoningConfig, type RetryConfig, RunContext, type RunOpts, type RunOutput, Sandbox, type SandboxConfig, type SearchMode, type Session, SessionManager, type SessionManagerConfig, SqliteStorage, type StepDef, type StepResult, type StorageDriver, type StreamChunk, Team, type TeamConfig, TeamMode, type TextPart, type TokenUsage, type ToolCacheConfig, type ToolCall, type ToolCallResult, type ToolDef, type ToolDefinition, ToolExecutor, type ToolResult, Toolkit, type TurnDetectionConfig, type UserFact, UserMemory, type UserMemoryConfig, type VectorDocument, type VectorSearchOptions, type VectorSearchResult, type VectorStore, type VertexAIConfig, VertexAIProvider, VoiceAgent, type VoiceAgentConfig, type VoiceSession, type VoiceSessionEvent, type VoiceSessionEventMap, type WebSearchConfig, WebSearchToolkit, type WhatsAppConfig, WhatsAppToolkit, Workflow, type WorkflowConfig, type WorkflowResult, anthropic, defineTool, getTextContent, google, googleLive, isMultiModal, ollama, openai, openaiRealtime, reciprocalRankFusion, registry, resolveSandboxConfig, vertex, withRetry };