@lov3kaizen/agentsea-core 0.3.0 → 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;
@@ -859,9 +892,13 @@ declare class VoiceAgent {
859
892
  };
860
893
  }
861
894
 
895
+ interface OpenAIWhisperConfig {
896
+ apiKey?: string;
897
+ baseURL?: string;
898
+ }
862
899
  declare class OpenAIWhisperProvider implements STTProvider {
863
900
  private client;
864
- constructor(apiKey?: string);
901
+ constructor(config?: string | OpenAIWhisperConfig);
865
902
  transcribe(audio: Buffer | string, config?: STTConfig): Promise<STTResult>;
866
903
  supportsStreaming(): boolean;
867
904
  getSupportedLanguages(): string[];
@@ -881,9 +918,17 @@ declare class LocalWhisperProvider implements STTProvider {
881
918
  getInstallInstructions(): string;
882
919
  }
883
920
 
921
+ declare class LemonFoxSTTProvider extends OpenAIWhisperProvider {
922
+ constructor(apiKey?: string);
923
+ }
924
+
925
+ interface OpenAITTSConfig {
926
+ apiKey?: string;
927
+ baseURL?: string;
928
+ }
884
929
  declare class OpenAITTSProvider implements TTSProvider {
885
930
  private client;
886
- constructor(apiKey?: string);
931
+ constructor(config?: string | OpenAITTSConfig);
887
932
  synthesize(text: string, config?: TTSConfig): Promise<TTSResult>;
888
933
  synthesizeStream(text: string, config?: TTSConfig): AsyncIterable<Buffer>;
889
934
  supportsStreaming(): boolean;
@@ -939,6 +984,18 @@ declare class PiperTTSProvider implements TTSProvider {
939
984
  }>>;
940
985
  }
941
986
 
987
+ declare class LemonFoxTTSProvider extends OpenAITTSProvider {
988
+ constructor(apiKey?: string);
989
+ getVoices(): Promise<Array<{
990
+ id: string;
991
+ name: string;
992
+ language?: string;
993
+ gender?: 'male' | 'female' | 'neutral';
994
+ }>>;
995
+ getModels(): string[];
996
+ getFormats(): AudioFormat[];
997
+ }
998
+
942
999
  interface TenantManagerConfig {
943
1000
  storage: TenantStorage;
944
1001
  defaultSettings?: Tenant['settings'];
@@ -1015,4 +1072,4 @@ declare class MemoryTenantStorage implements TenantStorage {
1015
1072
  clear(): void;
1016
1073
  }
1017
1074
 
1018
- 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, 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, OpenAITTSProvider, 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;
@@ -859,9 +892,13 @@ declare class VoiceAgent {
859
892
  };
860
893
  }
861
894
 
895
+ interface OpenAIWhisperConfig {
896
+ apiKey?: string;
897
+ baseURL?: string;
898
+ }
862
899
  declare class OpenAIWhisperProvider implements STTProvider {
863
900
  private client;
864
- constructor(apiKey?: string);
901
+ constructor(config?: string | OpenAIWhisperConfig);
865
902
  transcribe(audio: Buffer | string, config?: STTConfig): Promise<STTResult>;
866
903
  supportsStreaming(): boolean;
867
904
  getSupportedLanguages(): string[];
@@ -881,9 +918,17 @@ declare class LocalWhisperProvider implements STTProvider {
881
918
  getInstallInstructions(): string;
882
919
  }
883
920
 
921
+ declare class LemonFoxSTTProvider extends OpenAIWhisperProvider {
922
+ constructor(apiKey?: string);
923
+ }
924
+
925
+ interface OpenAITTSConfig {
926
+ apiKey?: string;
927
+ baseURL?: string;
928
+ }
884
929
  declare class OpenAITTSProvider implements TTSProvider {
885
930
  private client;
886
- constructor(apiKey?: string);
931
+ constructor(config?: string | OpenAITTSConfig);
887
932
  synthesize(text: string, config?: TTSConfig): Promise<TTSResult>;
888
933
  synthesizeStream(text: string, config?: TTSConfig): AsyncIterable<Buffer>;
889
934
  supportsStreaming(): boolean;
@@ -939,6 +984,18 @@ declare class PiperTTSProvider implements TTSProvider {
939
984
  }>>;
940
985
  }
941
986
 
987
+ declare class LemonFoxTTSProvider extends OpenAITTSProvider {
988
+ constructor(apiKey?: string);
989
+ getVoices(): Promise<Array<{
990
+ id: string;
991
+ name: string;
992
+ language?: string;
993
+ gender?: 'male' | 'female' | 'neutral';
994
+ }>>;
995
+ getModels(): string[];
996
+ getFormats(): AudioFormat[];
997
+ }
998
+
942
999
  interface TenantManagerConfig {
943
1000
  storage: TenantStorage;
944
1001
  defaultSettings?: Tenant['settings'];
@@ -1015,4 +1072,4 @@ declare class MemoryTenantStorage implements TenantStorage {
1015
1072
  clear(): void;
1016
1073
  }
1017
1074
 
1018
- 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, 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, OpenAITTSProvider, 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
@@ -45,6 +45,8 @@ __export(index_exports, {
45
45
  GeminiProvider: () => GeminiProvider,
46
46
  LMStudioProvider: () => LMStudioProvider,
47
47
  LRUCache: () => LRUCache,
48
+ LemonFoxSTTProvider: () => LemonFoxSTTProvider,
49
+ LemonFoxTTSProvider: () => LemonFoxTTSProvider,
48
50
  LocalAIProvider: () => LocalAIProvider,
49
51
  LocalWhisperProvider: () => LocalWhisperProvider,
50
52
  Logger: () => Logger,
@@ -95,6 +97,11 @@ __export(index_exports, {
95
97
  WorkflowFactory: () => WorkflowFactory,
96
98
  calculatorTool: () => calculatorTool,
97
99
  createACPTools: () => createACPTools,
100
+ createAnthropicProvider: () => createAnthropicProvider,
101
+ createGeminiProvider: () => createGeminiProvider,
102
+ createOllamaProvider: () => createOllamaProvider,
103
+ createOpenAIProvider: () => createOpenAIProvider,
104
+ createProvider: () => createProvider,
98
105
  defaultLogger: () => defaultLogger,
99
106
  figmaGetCommentsTool: () => figmaGetCommentsTool,
100
107
  figmaGetFileTool: () => figmaGetFileTool,
@@ -2343,6 +2350,91 @@ var VLLMProvider = class extends OpenAICompatibleProvider {
2343
2350
  }
2344
2351
  };
2345
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
+
2346
2438
  // src/memory/buffer-memory.ts
2347
2439
  var BufferMemory = class {
2348
2440
  constructor(maxMessages) {
@@ -5120,12 +5212,18 @@ var VoiceAgent = class {
5120
5212
 
5121
5213
  // src/voice/stt/openai-whisper.ts
5122
5214
  var import_fs3 = require("fs");
5123
- var import_openai3 = __toESM(require("openai"));
5215
+ var import_openai4 = __toESM(require("openai"));
5124
5216
  var OpenAIWhisperProvider = class {
5125
5217
  client;
5126
- constructor(apiKey) {
5127
- this.client = new import_openai3.default({
5128
- apiKey: apiKey || process.env.OPENAI_API_KEY
5218
+ /**
5219
+ * Create an OpenAI Whisper provider
5220
+ * @param config - Configuration object or API key string (for backward compatibility)
5221
+ */
5222
+ constructor(config) {
5223
+ const resolvedConfig = typeof config === "string" ? { apiKey: config } : config || {};
5224
+ this.client = new import_openai4.default({
5225
+ apiKey: resolvedConfig.apiKey || process.env.OPENAI_API_KEY,
5226
+ baseURL: resolvedConfig.baseURL
5129
5227
  });
5130
5228
  }
5131
5229
  /**
@@ -5135,7 +5233,7 @@ var OpenAIWhisperProvider = class {
5135
5233
  try {
5136
5234
  let audioFile;
5137
5235
  if (Buffer.isBuffer(audio)) {
5138
- audioFile = new File([audio], "audio.mp3", { type: "audio/mpeg" });
5236
+ audioFile = await (0, import_openai4.toFile)(audio, "audio.mp3", { type: "audio/mpeg" });
5139
5237
  } else if (typeof audio === "string") {
5140
5238
  audioFile = (0, import_fs3.createReadStream)(audio);
5141
5239
  } else {
@@ -5403,13 +5501,34 @@ Then configure the provider with the correct path.
5403
5501
  }
5404
5502
  };
5405
5503
 
5504
+ // src/voice/stt/lemonfox-stt.ts
5505
+ var LEMONFOX_BASE_URL = "https://api.lemonfox.ai/v1";
5506
+ var LemonFoxSTTProvider = class extends OpenAIWhisperProvider {
5507
+ /**
5508
+ * Create a LemonFox STT provider
5509
+ * @param apiKey - LemonFox API key (defaults to LEMONFOX_API_KEY env var)
5510
+ */
5511
+ constructor(apiKey) {
5512
+ super({
5513
+ apiKey: apiKey || process.env.LEMONFOX_API_KEY,
5514
+ baseURL: LEMONFOX_BASE_URL
5515
+ });
5516
+ }
5517
+ };
5518
+
5406
5519
  // src/voice/tts/openai-tts.ts
5407
- var import_openai4 = __toESM(require("openai"));
5520
+ var import_openai5 = __toESM(require("openai"));
5408
5521
  var OpenAITTSProvider = class {
5409
5522
  client;
5410
- constructor(apiKey) {
5411
- this.client = new import_openai4.default({
5412
- apiKey: apiKey || process.env.OPENAI_API_KEY
5523
+ /**
5524
+ * Create an OpenAI TTS provider
5525
+ * @param config - Configuration object or API key string (for backward compatibility)
5526
+ */
5527
+ constructor(config) {
5528
+ const resolvedConfig = typeof config === "string" ? { apiKey: config } : config || {};
5529
+ this.client = new import_openai5.default({
5530
+ apiKey: resolvedConfig.apiKey || process.env.OPENAI_API_KEY,
5531
+ baseURL: resolvedConfig.baseURL
5413
5532
  });
5414
5533
  }
5415
5534
  /**
@@ -5790,6 +5909,53 @@ Example:
5790
5909
  }
5791
5910
  };
5792
5911
 
5912
+ // src/voice/tts/lemonfox-tts.ts
5913
+ var LEMONFOX_BASE_URL2 = "https://api.lemonfox.ai/v1";
5914
+ var LemonFoxTTSProvider = class extends OpenAITTSProvider {
5915
+ /**
5916
+ * Create a LemonFox TTS provider
5917
+ * @param apiKey - LemonFox API key (defaults to LEMONFOX_API_KEY env var)
5918
+ */
5919
+ constructor(apiKey) {
5920
+ super({
5921
+ apiKey: apiKey || process.env.LEMONFOX_API_KEY,
5922
+ baseURL: LEMONFOX_BASE_URL2
5923
+ });
5924
+ }
5925
+ /**
5926
+ * Get available LemonFox voices
5927
+ *
5928
+ * LemonFox offers 50+ voices across 8 languages.
5929
+ * This returns a sample of common voices; the full list is available at:
5930
+ * https://lemonfox.ai/docs
5931
+ */
5932
+ getVoices() {
5933
+ return Promise.resolve([
5934
+ // OpenAI-compatible voices
5935
+ { id: "alloy", name: "Alloy", gender: "neutral" },
5936
+ { id: "echo", name: "Echo", gender: "male" },
5937
+ { id: "fable", name: "Fable", gender: "neutral" },
5938
+ { id: "onyx", name: "Onyx", gender: "male" },
5939
+ { id: "nova", name: "Nova", gender: "female" },
5940
+ { id: "shimmer", name: "Shimmer", gender: "female" },
5941
+ // LemonFox-specific voices (sample)
5942
+ { id: "sarah", name: "Sarah", gender: "female" }
5943
+ ]);
5944
+ }
5945
+ /**
5946
+ * Get available models
5947
+ */
5948
+ getModels() {
5949
+ return ["tts-1"];
5950
+ }
5951
+ /**
5952
+ * Get supported formats
5953
+ */
5954
+ getFormats() {
5955
+ return ["mp3", "opus", "aac", "flac", "wav", "pcm"];
5956
+ }
5957
+ };
5958
+
5793
5959
  // src/tenant/tenant-manager.ts
5794
5960
  var import_crypto2 = require("crypto");
5795
5961
 
@@ -6134,6 +6300,8 @@ var MemoryTenantStorage = class {
6134
6300
  GeminiProvider,
6135
6301
  LMStudioProvider,
6136
6302
  LRUCache,
6303
+ LemonFoxSTTProvider,
6304
+ LemonFoxTTSProvider,
6137
6305
  LocalAIProvider,
6138
6306
  LocalWhisperProvider,
6139
6307
  Logger,
@@ -6184,6 +6352,11 @@ var MemoryTenantStorage = class {
6184
6352
  WorkflowFactory,
6185
6353
  calculatorTool,
6186
6354
  createACPTools,
6355
+ createAnthropicProvider,
6356
+ createGeminiProvider,
6357
+ createOllamaProvider,
6358
+ createOpenAIProvider,
6359
+ createProvider,
6187
6360
  defaultLogger,
6188
6361
  figmaGetCommentsTool,
6189
6362
  figmaGetFileTool,
package/dist/index.mjs CHANGED
@@ -33,6 +33,8 @@ __export(index_exports, {
33
33
  GeminiProvider: () => GeminiProvider,
34
34
  LMStudioProvider: () => LMStudioProvider,
35
35
  LRUCache: () => LRUCache,
36
+ LemonFoxSTTProvider: () => LemonFoxSTTProvider,
37
+ LemonFoxTTSProvider: () => LemonFoxTTSProvider,
36
38
  LocalAIProvider: () => LocalAIProvider,
37
39
  LocalWhisperProvider: () => LocalWhisperProvider,
38
40
  Logger: () => Logger,
@@ -83,6 +85,11 @@ __export(index_exports, {
83
85
  WorkflowFactory: () => WorkflowFactory,
84
86
  calculatorTool: () => calculatorTool,
85
87
  createACPTools: () => createACPTools,
88
+ createAnthropicProvider: () => createAnthropicProvider,
89
+ createGeminiProvider: () => createGeminiProvider,
90
+ createOllamaProvider: () => createOllamaProvider,
91
+ createOpenAIProvider: () => createOpenAIProvider,
92
+ createProvider: () => createProvider,
86
93
  defaultLogger: () => defaultLogger,
87
94
  figmaGetCommentsTool: () => figmaGetCommentsTool,
88
95
  figmaGetFileTool: () => figmaGetFileTool,
@@ -2333,6 +2340,91 @@ var VLLMProvider = class extends OpenAICompatibleProvider {
2333
2340
  }
2334
2341
  };
2335
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
+
2336
2428
  // src/memory/buffer-memory.ts
2337
2429
  var BufferMemory = class {
2338
2430
  constructor(maxMessages) {
@@ -5121,12 +5213,18 @@ var VoiceAgent = class {
5121
5213
 
5122
5214
  // src/voice/stt/openai-whisper.ts
5123
5215
  import { createReadStream } from "fs";
5124
- import OpenAI3 from "openai";
5216
+ import OpenAI3, { toFile } from "openai";
5125
5217
  var OpenAIWhisperProvider = class {
5126
5218
  client;
5127
- constructor(apiKey) {
5219
+ /**
5220
+ * Create an OpenAI Whisper provider
5221
+ * @param config - Configuration object or API key string (for backward compatibility)
5222
+ */
5223
+ constructor(config) {
5224
+ const resolvedConfig = typeof config === "string" ? { apiKey: config } : config || {};
5128
5225
  this.client = new OpenAI3({
5129
- apiKey: apiKey || process.env.OPENAI_API_KEY
5226
+ apiKey: resolvedConfig.apiKey || process.env.OPENAI_API_KEY,
5227
+ baseURL: resolvedConfig.baseURL
5130
5228
  });
5131
5229
  }
5132
5230
  /**
@@ -5136,7 +5234,7 @@ var OpenAIWhisperProvider = class {
5136
5234
  try {
5137
5235
  let audioFile;
5138
5236
  if (Buffer.isBuffer(audio)) {
5139
- audioFile = new File([audio], "audio.mp3", { type: "audio/mpeg" });
5237
+ audioFile = await toFile(audio, "audio.mp3", { type: "audio/mpeg" });
5140
5238
  } else if (typeof audio === "string") {
5141
5239
  audioFile = createReadStream(audio);
5142
5240
  } else {
@@ -5404,13 +5502,34 @@ Then configure the provider with the correct path.
5404
5502
  }
5405
5503
  };
5406
5504
 
5505
+ // src/voice/stt/lemonfox-stt.ts
5506
+ var LEMONFOX_BASE_URL = "https://api.lemonfox.ai/v1";
5507
+ var LemonFoxSTTProvider = class extends OpenAIWhisperProvider {
5508
+ /**
5509
+ * Create a LemonFox STT provider
5510
+ * @param apiKey - LemonFox API key (defaults to LEMONFOX_API_KEY env var)
5511
+ */
5512
+ constructor(apiKey) {
5513
+ super({
5514
+ apiKey: apiKey || process.env.LEMONFOX_API_KEY,
5515
+ baseURL: LEMONFOX_BASE_URL
5516
+ });
5517
+ }
5518
+ };
5519
+
5407
5520
  // src/voice/tts/openai-tts.ts
5408
5521
  import OpenAI4 from "openai";
5409
5522
  var OpenAITTSProvider = class {
5410
5523
  client;
5411
- constructor(apiKey) {
5524
+ /**
5525
+ * Create an OpenAI TTS provider
5526
+ * @param config - Configuration object or API key string (for backward compatibility)
5527
+ */
5528
+ constructor(config) {
5529
+ const resolvedConfig = typeof config === "string" ? { apiKey: config } : config || {};
5412
5530
  this.client = new OpenAI4({
5413
- apiKey: apiKey || process.env.OPENAI_API_KEY
5531
+ apiKey: resolvedConfig.apiKey || process.env.OPENAI_API_KEY,
5532
+ baseURL: resolvedConfig.baseURL
5414
5533
  });
5415
5534
  }
5416
5535
  /**
@@ -5791,6 +5910,53 @@ Example:
5791
5910
  }
5792
5911
  };
5793
5912
 
5913
+ // src/voice/tts/lemonfox-tts.ts
5914
+ var LEMONFOX_BASE_URL2 = "https://api.lemonfox.ai/v1";
5915
+ var LemonFoxTTSProvider = class extends OpenAITTSProvider {
5916
+ /**
5917
+ * Create a LemonFox TTS provider
5918
+ * @param apiKey - LemonFox API key (defaults to LEMONFOX_API_KEY env var)
5919
+ */
5920
+ constructor(apiKey) {
5921
+ super({
5922
+ apiKey: apiKey || process.env.LEMONFOX_API_KEY,
5923
+ baseURL: LEMONFOX_BASE_URL2
5924
+ });
5925
+ }
5926
+ /**
5927
+ * Get available LemonFox voices
5928
+ *
5929
+ * LemonFox offers 50+ voices across 8 languages.
5930
+ * This returns a sample of common voices; the full list is available at:
5931
+ * https://lemonfox.ai/docs
5932
+ */
5933
+ getVoices() {
5934
+ return Promise.resolve([
5935
+ // OpenAI-compatible voices
5936
+ { id: "alloy", name: "Alloy", gender: "neutral" },
5937
+ { id: "echo", name: "Echo", gender: "male" },
5938
+ { id: "fable", name: "Fable", gender: "neutral" },
5939
+ { id: "onyx", name: "Onyx", gender: "male" },
5940
+ { id: "nova", name: "Nova", gender: "female" },
5941
+ { id: "shimmer", name: "Shimmer", gender: "female" },
5942
+ // LemonFox-specific voices (sample)
5943
+ { id: "sarah", name: "Sarah", gender: "female" }
5944
+ ]);
5945
+ }
5946
+ /**
5947
+ * Get available models
5948
+ */
5949
+ getModels() {
5950
+ return ["tts-1"];
5951
+ }
5952
+ /**
5953
+ * Get supported formats
5954
+ */
5955
+ getFormats() {
5956
+ return ["mp3", "opus", "aac", "flac", "wav", "pcm"];
5957
+ }
5958
+ };
5959
+
5794
5960
  // src/tenant/tenant-manager.ts
5795
5961
  import { randomBytes, createHash } from "crypto";
5796
5962
 
@@ -6143,6 +6309,8 @@ export {
6143
6309
  GeminiProvider,
6144
6310
  LMStudioProvider,
6145
6311
  LRUCache,
6312
+ LemonFoxSTTProvider,
6313
+ LemonFoxTTSProvider,
6146
6314
  LocalAIProvider,
6147
6315
  LocalWhisperProvider,
6148
6316
  Logger,
@@ -6193,6 +6361,11 @@ export {
6193
6361
  WorkflowFactory,
6194
6362
  calculatorTool,
6195
6363
  createACPTools,
6364
+ createAnthropicProvider,
6365
+ createGeminiProvider,
6366
+ createOllamaProvider,
6367
+ createOpenAIProvider,
6368
+ createProvider,
6196
6369
  defaultLogger,
6197
6370
  figmaGetCommentsTool,
6198
6371
  figmaGetFileTool,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lov3kaizen/agentsea-core",
3
- "version": "0.3.0",
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.0"
27
+ "@lov3kaizen/agentsea-types": "0.4.0"
28
28
  },
29
29
  "devDependencies": {
30
30
  "@types/node": "^20.11.0",