@lov3kaizen/agentsea-core 0.3.1 → 0.4.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.
package/dist/index.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { Tool, ToolCall, ToolContext, AgentConfig, LLMProvider, MemoryStore, AgentContext, AgentResponse, StreamEvent, Message, ProviderConfig, LLMResponse, LLMStreamChunk, WorkflowConfig, AgentMetrics, SpanContext, OutputFormat, FormatOptions, FormattedContent, VoiceAgentConfig, VoiceMessage, STTConfig, TTSConfig, STTProvider, STTResult, TTSProvider, TTSResult, AudioFormat, TenantStorage, Tenant, TenantStatus, TenantApiKey, TenantQuota } from '@lov3kaizen/agentsea-types';
1
+ import { Tool, ToolCall, ToolContext, AgentConfig, LLMProvider, MemoryStore, AgentContext, AgentResponse, StreamEvent, Message, ProviderConfig, LLMResponse, LLMStreamChunk, ProviderModelConfig, ModelInfo, ModelCapabilities, AnthropicModel, AnthropicConfig, OpenAIModel, OpenAIConfig, GeminiModel, GeminiConfig, OllamaConfig as OllamaConfig$1, AnthropicModelCapabilities, OpenAIModelCapabilities, GeminiModelCapabilities, WorkflowConfig, AgentMetrics, SpanContext, OutputFormat, FormatOptions, FormattedContent, VoiceAgentConfig, VoiceMessage, STTConfig, TTSConfig, STTProvider, STTResult, TTSProvider, TTSResult, AudioFormat, TenantStorage, Tenant, TenantStatus, TenantApiKey, TenantQuota } from '@lov3kaizen/agentsea-types';
2
2
  export * from '@lov3kaizen/agentsea-types';
3
3
  export { AudioFormat, STTConfig, STTProvider, STTResult, TTSConfig, TTSProvider, TTSResult, Tenant, TenantApiKey, TenantContext, TenantQuota, TenantResolver, TenantSettings, TenantStatus, TenantStorage, VoiceAgentConfig, VoiceMessage, VoiceType } from '@lov3kaizen/agentsea-types';
4
4
  import { EventEmitter } from 'events';
@@ -137,6 +137,39 @@ declare class VLLMProvider extends OpenAICompatibleProvider {
137
137
  constructor(config?: Partial<OpenAICompatibleConfig>);
138
138
  }
139
139
 
140
+ interface TypeSafeProvider<TConfig extends ProviderModelConfig> {
141
+ readonly config: TConfig;
142
+ readonly provider: AnthropicProvider | OpenAIProvider | GeminiProvider | OllamaProvider;
143
+ getModelInfo(): ModelInfo | undefined;
144
+ supportsCapability(capability: keyof ModelCapabilities): boolean;
145
+ }
146
+ declare function createProvider<TConfig extends ProviderModelConfig>(config: TConfig): TypeSafeProvider<TConfig>;
147
+ declare function createAnthropicProvider<TModel extends AnthropicModel>(config: AnthropicConfig<TModel>, options?: {
148
+ apiKey?: string;
149
+ }): TypeSafeProvider<AnthropicConfig<TModel>> & {
150
+ provider: AnthropicProvider;
151
+ };
152
+ declare function createOpenAIProvider<TModel extends OpenAIModel>(config: OpenAIConfig<TModel>, options?: {
153
+ apiKey?: string;
154
+ }): TypeSafeProvider<OpenAIConfig<TModel>> & {
155
+ provider: OpenAIProvider;
156
+ };
157
+ declare function createGeminiProvider<TModel extends GeminiModel>(config: GeminiConfig<TModel>, options?: {
158
+ apiKey?: string;
159
+ }): TypeSafeProvider<GeminiConfig<TModel>> & {
160
+ provider: GeminiProvider;
161
+ };
162
+ declare function createOllamaProvider(config: OllamaConfig$1, options?: {
163
+ baseUrl?: string;
164
+ timeout?: number;
165
+ }): TypeSafeProvider<OllamaConfig$1> & {
166
+ provider: OllamaProvider;
167
+ };
168
+ type ExtractModel<T extends ProviderModelConfig> = T['model'];
169
+ type ExtractProviderName<T extends ProviderModelConfig> = T['provider'];
170
+ type ConfigSupports<T extends ProviderModelConfig, TCapability extends keyof ModelCapabilities> = T extends AnthropicConfig<infer M> ? M extends keyof AnthropicModelCapabilities ? AnthropicModelCapabilities[M][TCapability] extends true ? true : false : false : T extends OpenAIConfig<infer M> ? M extends keyof OpenAIModelCapabilities ? OpenAIModelCapabilities[M][TCapability] extends true ? true : false : false : T extends GeminiConfig<infer M> ? M extends keyof GeminiModelCapabilities ? GeminiModelCapabilities[M][TCapability] extends true ? true : false : false : false;
171
+ type RequireCapability<T extends ProviderModelConfig, TCapability extends keyof ModelCapabilities> = ConfigSupports<T, TCapability> extends true ? T : never;
172
+
140
173
  declare class BufferMemory implements MemoryStore {
141
174
  private maxMessages?;
142
175
  private store;
@@ -1039,4 +1072,4 @@ declare class MemoryTenantStorage implements TenantStorage {
1039
1072
  clear(): void;
1040
1073
  }
1041
1074
 
1042
- export { type ACPAddress, type ACPCart, type ACPCartItem, type ACPCheckoutSession, ACPClient, type ACPConfig, type ACPCustomer, type ACPDelegatedPaymentConfig, type ACPOrder, type ACPPaginationMeta, type ACPPaymentIntent, type ACPPaymentMethod, type ACPProduct, type ACPProductSearchQuery, type ACPProductSearchResult, type ACPProductVariant, type ACPResponse, type ACPWebhookEvent, Agent, AnthropicProvider, BufferMemory, Cache, ContentFormatter, ConversationManager, ConversationSchema, ConversationSchemaBuilder, type ConversationSchemaConfig, type ConversationState, type ConversationStep, type ConversationTurn, ElevenLabsTTSProvider, GeminiProvider, LMStudioProvider, LRUCache, LemonFoxSTTProvider, LemonFoxTTSProvider, LocalAIProvider, LocalWhisperProvider, type LogLevel, Logger, type LoggerConfig, type MCPCallToolRequest, type MCPCallToolResponse, MCPClient, type MCPListToolsRequest, type MCPListToolsResponse, type MCPMessage, type MCPPrompt, type MCPReadResourceRequest, type MCPReadResourceResponse, MCPRegistry, type MCPResource, type MCPServerCapabilities, type MCPServerConfig, type MCPServerInfo, type MCPTool, type MCPTransport, MemoryTenantStorage, MetricsCollector, OllamaProvider, OpenAICompatibleProvider, OpenAIProvider, type OpenAITTSConfig, OpenAITTSProvider, type OpenAIWhisperConfig, OpenAIWhisperProvider, ParallelWorkflow, PiperTTSProvider, RateLimiter, RedisMemory, SSETransport, SequentialWorkflow, SlidingWindowRateLimiter, type Span, StdioTransport, SummaryMemory, SupervisorWorkflow, TenantBufferMemory, TenantManager, type TenantManagerConfig, TextGenerationWebUIProvider, ToolRegistry, Tracer, VLLMProvider, VoiceAgent, Workflow, WorkflowFactory, calculatorTool, createACPTools, defaultLogger, figmaGetCommentsTool, figmaGetFileTool, figmaGetImagesTool, figmaGetNodesTool, figmaPostCommentTool, fileListTool, fileReadTool, fileWriteTool, globalMetrics, globalTracer, httpRequestTool, mcpToolToAgenticTool, n8nExecuteWorkflowTool, n8nGetExecutionTool, n8nGetWorkflowTool, n8nListWorkflowsTool, n8nTriggerWebhookTool, stringTransformTool, textSummaryTool };
1075
+ export { type ACPAddress, type ACPCart, type ACPCartItem, type ACPCheckoutSession, ACPClient, type ACPConfig, type ACPCustomer, type ACPDelegatedPaymentConfig, type ACPOrder, type ACPPaginationMeta, type ACPPaymentIntent, type ACPPaymentMethod, type ACPProduct, type ACPProductSearchQuery, type ACPProductSearchResult, type ACPProductVariant, type ACPResponse, type ACPWebhookEvent, Agent, AnthropicProvider, BufferMemory, Cache, type ConfigSupports, ContentFormatter, ConversationManager, ConversationSchema, ConversationSchemaBuilder, type ConversationSchemaConfig, type ConversationState, type ConversationStep, type ConversationTurn, ElevenLabsTTSProvider, type ExtractModel, type ExtractProviderName, GeminiProvider, LMStudioProvider, LRUCache, LemonFoxSTTProvider, LemonFoxTTSProvider, LocalAIProvider, LocalWhisperProvider, type LogLevel, Logger, type LoggerConfig, type MCPCallToolRequest, type MCPCallToolResponse, MCPClient, type MCPListToolsRequest, type MCPListToolsResponse, type MCPMessage, type MCPPrompt, type MCPReadResourceRequest, type MCPReadResourceResponse, MCPRegistry, type MCPResource, type MCPServerCapabilities, type MCPServerConfig, type MCPServerInfo, type MCPTool, type MCPTransport, MemoryTenantStorage, MetricsCollector, OllamaProvider, OpenAICompatibleProvider, OpenAIProvider, type OpenAITTSConfig, OpenAITTSProvider, type OpenAIWhisperConfig, OpenAIWhisperProvider, ParallelWorkflow, PiperTTSProvider, RateLimiter, RedisMemory, type RequireCapability, SSETransport, SequentialWorkflow, SlidingWindowRateLimiter, type Span, StdioTransport, SummaryMemory, SupervisorWorkflow, TenantBufferMemory, TenantManager, type TenantManagerConfig, TextGenerationWebUIProvider, ToolRegistry, Tracer, type TypeSafeProvider, VLLMProvider, VoiceAgent, Workflow, WorkflowFactory, calculatorTool, createACPTools, createAnthropicProvider, createGeminiProvider, createOllamaProvider, createOpenAIProvider, createProvider, defaultLogger, figmaGetCommentsTool, figmaGetFileTool, figmaGetImagesTool, figmaGetNodesTool, figmaPostCommentTool, fileListTool, fileReadTool, fileWriteTool, globalMetrics, globalTracer, httpRequestTool, mcpToolToAgenticTool, n8nExecuteWorkflowTool, n8nGetExecutionTool, n8nGetWorkflowTool, n8nListWorkflowsTool, n8nTriggerWebhookTool, stringTransformTool, textSummaryTool };
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Tool, ToolCall, ToolContext, AgentConfig, LLMProvider, MemoryStore, AgentContext, AgentResponse, StreamEvent, Message, ProviderConfig, LLMResponse, LLMStreamChunk, WorkflowConfig, AgentMetrics, SpanContext, OutputFormat, FormatOptions, FormattedContent, VoiceAgentConfig, VoiceMessage, STTConfig, TTSConfig, STTProvider, STTResult, TTSProvider, TTSResult, AudioFormat, TenantStorage, Tenant, TenantStatus, TenantApiKey, TenantQuota } from '@lov3kaizen/agentsea-types';
1
+ import { Tool, ToolCall, ToolContext, AgentConfig, LLMProvider, MemoryStore, AgentContext, AgentResponse, StreamEvent, Message, ProviderConfig, LLMResponse, LLMStreamChunk, ProviderModelConfig, ModelInfo, ModelCapabilities, AnthropicModel, AnthropicConfig, OpenAIModel, OpenAIConfig, GeminiModel, GeminiConfig, OllamaConfig as OllamaConfig$1, AnthropicModelCapabilities, OpenAIModelCapabilities, GeminiModelCapabilities, WorkflowConfig, AgentMetrics, SpanContext, OutputFormat, FormatOptions, FormattedContent, VoiceAgentConfig, VoiceMessage, STTConfig, TTSConfig, STTProvider, STTResult, TTSProvider, TTSResult, AudioFormat, TenantStorage, Tenant, TenantStatus, TenantApiKey, TenantQuota } from '@lov3kaizen/agentsea-types';
2
2
  export * from '@lov3kaizen/agentsea-types';
3
3
  export { AudioFormat, STTConfig, STTProvider, STTResult, TTSConfig, TTSProvider, TTSResult, Tenant, TenantApiKey, TenantContext, TenantQuota, TenantResolver, TenantSettings, TenantStatus, TenantStorage, VoiceAgentConfig, VoiceMessage, VoiceType } from '@lov3kaizen/agentsea-types';
4
4
  import { EventEmitter } from 'events';
@@ -137,6 +137,39 @@ declare class VLLMProvider extends OpenAICompatibleProvider {
137
137
  constructor(config?: Partial<OpenAICompatibleConfig>);
138
138
  }
139
139
 
140
+ interface TypeSafeProvider<TConfig extends ProviderModelConfig> {
141
+ readonly config: TConfig;
142
+ readonly provider: AnthropicProvider | OpenAIProvider | GeminiProvider | OllamaProvider;
143
+ getModelInfo(): ModelInfo | undefined;
144
+ supportsCapability(capability: keyof ModelCapabilities): boolean;
145
+ }
146
+ declare function createProvider<TConfig extends ProviderModelConfig>(config: TConfig): TypeSafeProvider<TConfig>;
147
+ declare function createAnthropicProvider<TModel extends AnthropicModel>(config: AnthropicConfig<TModel>, options?: {
148
+ apiKey?: string;
149
+ }): TypeSafeProvider<AnthropicConfig<TModel>> & {
150
+ provider: AnthropicProvider;
151
+ };
152
+ declare function createOpenAIProvider<TModel extends OpenAIModel>(config: OpenAIConfig<TModel>, options?: {
153
+ apiKey?: string;
154
+ }): TypeSafeProvider<OpenAIConfig<TModel>> & {
155
+ provider: OpenAIProvider;
156
+ };
157
+ declare function createGeminiProvider<TModel extends GeminiModel>(config: GeminiConfig<TModel>, options?: {
158
+ apiKey?: string;
159
+ }): TypeSafeProvider<GeminiConfig<TModel>> & {
160
+ provider: GeminiProvider;
161
+ };
162
+ declare function createOllamaProvider(config: OllamaConfig$1, options?: {
163
+ baseUrl?: string;
164
+ timeout?: number;
165
+ }): TypeSafeProvider<OllamaConfig$1> & {
166
+ provider: OllamaProvider;
167
+ };
168
+ type ExtractModel<T extends ProviderModelConfig> = T['model'];
169
+ type ExtractProviderName<T extends ProviderModelConfig> = T['provider'];
170
+ type ConfigSupports<T extends ProviderModelConfig, TCapability extends keyof ModelCapabilities> = T extends AnthropicConfig<infer M> ? M extends keyof AnthropicModelCapabilities ? AnthropicModelCapabilities[M][TCapability] extends true ? true : false : false : T extends OpenAIConfig<infer M> ? M extends keyof OpenAIModelCapabilities ? OpenAIModelCapabilities[M][TCapability] extends true ? true : false : false : T extends GeminiConfig<infer M> ? M extends keyof GeminiModelCapabilities ? GeminiModelCapabilities[M][TCapability] extends true ? true : false : false : false;
171
+ type RequireCapability<T extends ProviderModelConfig, TCapability extends keyof ModelCapabilities> = ConfigSupports<T, TCapability> extends true ? T : never;
172
+
140
173
  declare class BufferMemory implements MemoryStore {
141
174
  private maxMessages?;
142
175
  private store;
@@ -1039,4 +1072,4 @@ declare class MemoryTenantStorage implements TenantStorage {
1039
1072
  clear(): void;
1040
1073
  }
1041
1074
 
1042
- export { type ACPAddress, type ACPCart, type ACPCartItem, type ACPCheckoutSession, ACPClient, type ACPConfig, type ACPCustomer, type ACPDelegatedPaymentConfig, type ACPOrder, type ACPPaginationMeta, type ACPPaymentIntent, type ACPPaymentMethod, type ACPProduct, type ACPProductSearchQuery, type ACPProductSearchResult, type ACPProductVariant, type ACPResponse, type ACPWebhookEvent, Agent, AnthropicProvider, BufferMemory, Cache, ContentFormatter, ConversationManager, ConversationSchema, ConversationSchemaBuilder, type ConversationSchemaConfig, type ConversationState, type ConversationStep, type ConversationTurn, ElevenLabsTTSProvider, GeminiProvider, LMStudioProvider, LRUCache, LemonFoxSTTProvider, LemonFoxTTSProvider, LocalAIProvider, LocalWhisperProvider, type LogLevel, Logger, type LoggerConfig, type MCPCallToolRequest, type MCPCallToolResponse, MCPClient, type MCPListToolsRequest, type MCPListToolsResponse, type MCPMessage, type MCPPrompt, type MCPReadResourceRequest, type MCPReadResourceResponse, MCPRegistry, type MCPResource, type MCPServerCapabilities, type MCPServerConfig, type MCPServerInfo, type MCPTool, type MCPTransport, MemoryTenantStorage, MetricsCollector, OllamaProvider, OpenAICompatibleProvider, OpenAIProvider, type OpenAITTSConfig, OpenAITTSProvider, type OpenAIWhisperConfig, OpenAIWhisperProvider, ParallelWorkflow, PiperTTSProvider, RateLimiter, RedisMemory, SSETransport, SequentialWorkflow, SlidingWindowRateLimiter, type Span, StdioTransport, SummaryMemory, SupervisorWorkflow, TenantBufferMemory, TenantManager, type TenantManagerConfig, TextGenerationWebUIProvider, ToolRegistry, Tracer, VLLMProvider, VoiceAgent, Workflow, WorkflowFactory, calculatorTool, createACPTools, defaultLogger, figmaGetCommentsTool, figmaGetFileTool, figmaGetImagesTool, figmaGetNodesTool, figmaPostCommentTool, fileListTool, fileReadTool, fileWriteTool, globalMetrics, globalTracer, httpRequestTool, mcpToolToAgenticTool, n8nExecuteWorkflowTool, n8nGetExecutionTool, n8nGetWorkflowTool, n8nListWorkflowsTool, n8nTriggerWebhookTool, stringTransformTool, textSummaryTool };
1075
+ export { type ACPAddress, type ACPCart, type ACPCartItem, type ACPCheckoutSession, ACPClient, type ACPConfig, type ACPCustomer, type ACPDelegatedPaymentConfig, type ACPOrder, type ACPPaginationMeta, type ACPPaymentIntent, type ACPPaymentMethod, type ACPProduct, type ACPProductSearchQuery, type ACPProductSearchResult, type ACPProductVariant, type ACPResponse, type ACPWebhookEvent, Agent, AnthropicProvider, BufferMemory, Cache, type ConfigSupports, ContentFormatter, ConversationManager, ConversationSchema, ConversationSchemaBuilder, type ConversationSchemaConfig, type ConversationState, type ConversationStep, type ConversationTurn, ElevenLabsTTSProvider, type ExtractModel, type ExtractProviderName, GeminiProvider, LMStudioProvider, LRUCache, LemonFoxSTTProvider, LemonFoxTTSProvider, LocalAIProvider, LocalWhisperProvider, type LogLevel, Logger, type LoggerConfig, type MCPCallToolRequest, type MCPCallToolResponse, MCPClient, type MCPListToolsRequest, type MCPListToolsResponse, type MCPMessage, type MCPPrompt, type MCPReadResourceRequest, type MCPReadResourceResponse, MCPRegistry, type MCPResource, type MCPServerCapabilities, type MCPServerConfig, type MCPServerInfo, type MCPTool, type MCPTransport, MemoryTenantStorage, MetricsCollector, OllamaProvider, OpenAICompatibleProvider, OpenAIProvider, type OpenAITTSConfig, OpenAITTSProvider, type OpenAIWhisperConfig, OpenAIWhisperProvider, ParallelWorkflow, PiperTTSProvider, RateLimiter, RedisMemory, type RequireCapability, SSETransport, SequentialWorkflow, SlidingWindowRateLimiter, type Span, StdioTransport, SummaryMemory, SupervisorWorkflow, TenantBufferMemory, TenantManager, type TenantManagerConfig, TextGenerationWebUIProvider, ToolRegistry, Tracer, type TypeSafeProvider, VLLMProvider, VoiceAgent, Workflow, WorkflowFactory, calculatorTool, createACPTools, createAnthropicProvider, createGeminiProvider, createOllamaProvider, createOpenAIProvider, createProvider, defaultLogger, figmaGetCommentsTool, figmaGetFileTool, figmaGetImagesTool, figmaGetNodesTool, figmaPostCommentTool, fileListTool, fileReadTool, fileWriteTool, globalMetrics, globalTracer, httpRequestTool, mcpToolToAgenticTool, n8nExecuteWorkflowTool, n8nGetExecutionTool, n8nGetWorkflowTool, n8nListWorkflowsTool, n8nTriggerWebhookTool, stringTransformTool, textSummaryTool };
package/dist/index.js CHANGED
@@ -97,6 +97,11 @@ __export(index_exports, {
97
97
  WorkflowFactory: () => WorkflowFactory,
98
98
  calculatorTool: () => calculatorTool,
99
99
  createACPTools: () => createACPTools,
100
+ createAnthropicProvider: () => createAnthropicProvider,
101
+ createGeminiProvider: () => createGeminiProvider,
102
+ createOllamaProvider: () => createOllamaProvider,
103
+ createOpenAIProvider: () => createOpenAIProvider,
104
+ createProvider: () => createProvider,
100
105
  defaultLogger: () => defaultLogger,
101
106
  figmaGetCommentsTool: () => figmaGetCommentsTool,
102
107
  figmaGetFileTool: () => figmaGetFileTool,
@@ -2345,6 +2350,91 @@ var VLLMProvider = class extends OpenAICompatibleProvider {
2345
2350
  }
2346
2351
  };
2347
2352
 
2353
+ // src/providers/type-safe-provider.ts
2354
+ function createProvider(config) {
2355
+ let provider;
2356
+ switch (config.provider) {
2357
+ case "anthropic":
2358
+ provider = new AnthropicProvider();
2359
+ break;
2360
+ case "openai":
2361
+ provider = new OpenAIProvider();
2362
+ break;
2363
+ case "gemini":
2364
+ provider = new GeminiProvider();
2365
+ break;
2366
+ case "ollama":
2367
+ provider = new OllamaProvider();
2368
+ break;
2369
+ default: {
2370
+ const exhaustiveCheck = config;
2371
+ throw new Error(`Unknown provider: ${exhaustiveCheck.provider}`);
2372
+ }
2373
+ }
2374
+ return {
2375
+ config,
2376
+ provider,
2377
+ getModelInfo() {
2378
+ return (0, types_exports.getModelInfo)(config.model);
2379
+ },
2380
+ supportsCapability(capability) {
2381
+ return (0, types_exports.modelSupportsCapability)(config.model, capability);
2382
+ }
2383
+ };
2384
+ }
2385
+ function createAnthropicProvider(config, options) {
2386
+ const provider = new AnthropicProvider(options?.apiKey);
2387
+ return {
2388
+ config,
2389
+ provider,
2390
+ getModelInfo() {
2391
+ return (0, types_exports.getModelInfo)(config.model);
2392
+ },
2393
+ supportsCapability(capability) {
2394
+ return (0, types_exports.modelSupportsCapability)(config.model, capability);
2395
+ }
2396
+ };
2397
+ }
2398
+ function createOpenAIProvider(config, options) {
2399
+ const provider = new OpenAIProvider(options?.apiKey);
2400
+ return {
2401
+ config,
2402
+ provider,
2403
+ getModelInfo() {
2404
+ return (0, types_exports.getModelInfo)(config.model);
2405
+ },
2406
+ supportsCapability(capability) {
2407
+ return (0, types_exports.modelSupportsCapability)(config.model, capability);
2408
+ }
2409
+ };
2410
+ }
2411
+ function createGeminiProvider(config, options) {
2412
+ const provider = new GeminiProvider(options?.apiKey);
2413
+ return {
2414
+ config,
2415
+ provider,
2416
+ getModelInfo() {
2417
+ return (0, types_exports.getModelInfo)(config.model);
2418
+ },
2419
+ supportsCapability(capability) {
2420
+ return (0, types_exports.modelSupportsCapability)(config.model, capability);
2421
+ }
2422
+ };
2423
+ }
2424
+ function createOllamaProvider(config, options) {
2425
+ const provider = new OllamaProvider(options);
2426
+ return {
2427
+ config,
2428
+ provider,
2429
+ getModelInfo() {
2430
+ return (0, types_exports.getModelInfo)(config.model);
2431
+ },
2432
+ supportsCapability(capability) {
2433
+ return (0, types_exports.modelSupportsCapability)(config.model, capability);
2434
+ }
2435
+ };
2436
+ }
2437
+
2348
2438
  // src/memory/buffer-memory.ts
2349
2439
  var BufferMemory = class {
2350
2440
  constructor(maxMessages) {
@@ -5122,7 +5212,7 @@ var VoiceAgent = class {
5122
5212
 
5123
5213
  // src/voice/stt/openai-whisper.ts
5124
5214
  var import_fs3 = require("fs");
5125
- var import_openai3 = __toESM(require("openai"));
5215
+ var import_openai4 = __toESM(require("openai"));
5126
5216
  var OpenAIWhisperProvider = class {
5127
5217
  client;
5128
5218
  /**
@@ -5131,7 +5221,7 @@ var OpenAIWhisperProvider = class {
5131
5221
  */
5132
5222
  constructor(config) {
5133
5223
  const resolvedConfig = typeof config === "string" ? { apiKey: config } : config || {};
5134
- this.client = new import_openai3.default({
5224
+ this.client = new import_openai4.default({
5135
5225
  apiKey: resolvedConfig.apiKey || process.env.OPENAI_API_KEY,
5136
5226
  baseURL: resolvedConfig.baseURL
5137
5227
  });
@@ -5143,7 +5233,7 @@ var OpenAIWhisperProvider = class {
5143
5233
  try {
5144
5234
  let audioFile;
5145
5235
  if (Buffer.isBuffer(audio)) {
5146
- audioFile = await (0, import_openai3.toFile)(audio, "audio.mp3", { type: "audio/mpeg" });
5236
+ audioFile = await (0, import_openai4.toFile)(audio, "audio.mp3", { type: "audio/mpeg" });
5147
5237
  } else if (typeof audio === "string") {
5148
5238
  audioFile = (0, import_fs3.createReadStream)(audio);
5149
5239
  } else {
@@ -5427,7 +5517,7 @@ var LemonFoxSTTProvider = class extends OpenAIWhisperProvider {
5427
5517
  };
5428
5518
 
5429
5519
  // src/voice/tts/openai-tts.ts
5430
- var import_openai4 = __toESM(require("openai"));
5520
+ var import_openai5 = __toESM(require("openai"));
5431
5521
  var OpenAITTSProvider = class {
5432
5522
  client;
5433
5523
  /**
@@ -5436,7 +5526,7 @@ var OpenAITTSProvider = class {
5436
5526
  */
5437
5527
  constructor(config) {
5438
5528
  const resolvedConfig = typeof config === "string" ? { apiKey: config } : config || {};
5439
- this.client = new import_openai4.default({
5529
+ this.client = new import_openai5.default({
5440
5530
  apiKey: resolvedConfig.apiKey || process.env.OPENAI_API_KEY,
5441
5531
  baseURL: resolvedConfig.baseURL
5442
5532
  });
@@ -6262,6 +6352,11 @@ var MemoryTenantStorage = class {
6262
6352
  WorkflowFactory,
6263
6353
  calculatorTool,
6264
6354
  createACPTools,
6355
+ createAnthropicProvider,
6356
+ createGeminiProvider,
6357
+ createOllamaProvider,
6358
+ createOpenAIProvider,
6359
+ createProvider,
6265
6360
  defaultLogger,
6266
6361
  figmaGetCommentsTool,
6267
6362
  figmaGetFileTool,
package/dist/index.mjs CHANGED
@@ -85,6 +85,11 @@ __export(index_exports, {
85
85
  WorkflowFactory: () => WorkflowFactory,
86
86
  calculatorTool: () => calculatorTool,
87
87
  createACPTools: () => createACPTools,
88
+ createAnthropicProvider: () => createAnthropicProvider,
89
+ createGeminiProvider: () => createGeminiProvider,
90
+ createOllamaProvider: () => createOllamaProvider,
91
+ createOpenAIProvider: () => createOpenAIProvider,
92
+ createProvider: () => createProvider,
88
93
  defaultLogger: () => defaultLogger,
89
94
  figmaGetCommentsTool: () => figmaGetCommentsTool,
90
95
  figmaGetFileTool: () => figmaGetFileTool,
@@ -2335,6 +2340,91 @@ var VLLMProvider = class extends OpenAICompatibleProvider {
2335
2340
  }
2336
2341
  };
2337
2342
 
2343
+ // src/providers/type-safe-provider.ts
2344
+ function createProvider(config) {
2345
+ let provider;
2346
+ switch (config.provider) {
2347
+ case "anthropic":
2348
+ provider = new AnthropicProvider();
2349
+ break;
2350
+ case "openai":
2351
+ provider = new OpenAIProvider();
2352
+ break;
2353
+ case "gemini":
2354
+ provider = new GeminiProvider();
2355
+ break;
2356
+ case "ollama":
2357
+ provider = new OllamaProvider();
2358
+ break;
2359
+ default: {
2360
+ const exhaustiveCheck = config;
2361
+ throw new Error(`Unknown provider: ${exhaustiveCheck.provider}`);
2362
+ }
2363
+ }
2364
+ return {
2365
+ config,
2366
+ provider,
2367
+ getModelInfo() {
2368
+ return (0, types_exports.getModelInfo)(config.model);
2369
+ },
2370
+ supportsCapability(capability) {
2371
+ return (0, types_exports.modelSupportsCapability)(config.model, capability);
2372
+ }
2373
+ };
2374
+ }
2375
+ function createAnthropicProvider(config, options) {
2376
+ const provider = new AnthropicProvider(options?.apiKey);
2377
+ return {
2378
+ config,
2379
+ provider,
2380
+ getModelInfo() {
2381
+ return (0, types_exports.getModelInfo)(config.model);
2382
+ },
2383
+ supportsCapability(capability) {
2384
+ return (0, types_exports.modelSupportsCapability)(config.model, capability);
2385
+ }
2386
+ };
2387
+ }
2388
+ function createOpenAIProvider(config, options) {
2389
+ const provider = new OpenAIProvider(options?.apiKey);
2390
+ return {
2391
+ config,
2392
+ provider,
2393
+ getModelInfo() {
2394
+ return (0, types_exports.getModelInfo)(config.model);
2395
+ },
2396
+ supportsCapability(capability) {
2397
+ return (0, types_exports.modelSupportsCapability)(config.model, capability);
2398
+ }
2399
+ };
2400
+ }
2401
+ function createGeminiProvider(config, options) {
2402
+ const provider = new GeminiProvider(options?.apiKey);
2403
+ return {
2404
+ config,
2405
+ provider,
2406
+ getModelInfo() {
2407
+ return (0, types_exports.getModelInfo)(config.model);
2408
+ },
2409
+ supportsCapability(capability) {
2410
+ return (0, types_exports.modelSupportsCapability)(config.model, capability);
2411
+ }
2412
+ };
2413
+ }
2414
+ function createOllamaProvider(config, options) {
2415
+ const provider = new OllamaProvider(options);
2416
+ return {
2417
+ config,
2418
+ provider,
2419
+ getModelInfo() {
2420
+ return (0, types_exports.getModelInfo)(config.model);
2421
+ },
2422
+ supportsCapability(capability) {
2423
+ return (0, types_exports.modelSupportsCapability)(config.model, capability);
2424
+ }
2425
+ };
2426
+ }
2427
+
2338
2428
  // src/memory/buffer-memory.ts
2339
2429
  var BufferMemory = class {
2340
2430
  constructor(maxMessages) {
@@ -6271,6 +6361,11 @@ export {
6271
6361
  WorkflowFactory,
6272
6362
  calculatorTool,
6273
6363
  createACPTools,
6364
+ createAnthropicProvider,
6365
+ createGeminiProvider,
6366
+ createOllamaProvider,
6367
+ createOpenAIProvider,
6368
+ createProvider,
6274
6369
  defaultLogger,
6275
6370
  figmaGetCommentsTool,
6276
6371
  figmaGetFileTool,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lov3kaizen/agentsea-core",
3
- "version": "0.3.1",
3
+ "version": "0.4.0",
4
4
  "description": "AgentSea - Unite and orchestrate AI agents. A production-ready ADK for building agentic AI applications with multi-provider support.",
5
5
  "main": "./dist/index.js",
6
6
  "types": "./dist/index.d.ts",
@@ -24,7 +24,7 @@
24
24
  "winston": "^3.11.0",
25
25
  "ioredis": "^5.3.2",
26
26
  "marked": "^12.0.0",
27
- "@lov3kaizen/agentsea-types": "0.3.1"
27
+ "@lov3kaizen/agentsea-types": "0.4.0"
28
28
  },
29
29
  "devDependencies": {
30
30
  "@types/node": "^20.11.0",