@lov3kaizen/agentsea-core 0.6.0 → 1.0.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/README.md CHANGED
@@ -8,16 +8,19 @@
8
8
 
9
9
  ## Features
10
10
 
11
- - Multi-Provider Support - Anthropic Claude, OpenAI GPT, Google Gemini
12
- - Local & Open Source Models - Ollama, LM Studio, LocalAI, Text Generation WebUI, vLLM
13
- - Voice Support (TTS/STT) - OpenAI Whisper, ElevenLabs, Piper TTS
14
- - MCP Protocol - First-class Model Context Protocol integration
15
- - ACP Protocol - Agentic Commerce Protocol for e-commerce integration
16
- - Multi-Agent Workflows - Sequential, parallel, and supervisor orchestration
17
- - Conversation Schemas - Structured conversational experiences with validation
18
- - Advanced Memory - Buffer, Redis, and summary-based memory stores
19
- - Built-in Tools - 8 production-ready tools + custom tool support
20
- - Full Observability - Logging, metrics, and distributed tracing
11
+ - **Multi-Provider Support** - Anthropic Claude, OpenAI GPT, Google Gemini
12
+ - **Per-Model Type Safety** - Compile-time validation of model-specific options
13
+ - **Local & Open Source Models** - Ollama, LM Studio, LocalAI, Text Generation WebUI, vLLM
14
+ - **Voice Support (TTS/STT)** - OpenAI Whisper, ElevenLabs, Piper TTS, Local Whisper
15
+ - **MCP Protocol** - First-class Model Context Protocol integration
16
+ - **ACP Protocol** - Agentic Commerce Protocol for e-commerce (14 operations)
17
+ - **Multi-Agent Workflows** - Sequential, parallel, and supervisor orchestration
18
+ - **Conversation Schemas** - Structured conversational experiences with validation
19
+ - **Advanced Memory** - Buffer, Redis, summary, and tenant-based memory stores
20
+ - **Built-in Tools** - 13 coding tools + 8 general tools + custom tool support
21
+ - **Isomorphic Tool Definitions** - Server, client, and hybrid tool types
22
+ - **Multi-Tenancy** - Built-in tenant isolation for SaaS applications
23
+ - **Full Observability** - Logging, metrics, and distributed tracing
21
24
 
22
25
  ## Installation
23
26
 
@@ -40,11 +43,10 @@ import {
40
43
  calculatorTool,
41
44
  } from '@lov3kaizen/agentsea-core';
42
45
 
43
- // Create agent
44
46
  const agent = new Agent(
45
47
  {
46
48
  name: 'assistant',
47
- model: 'claude-sonnet-4-20250514',
49
+ model: 'claude-sonnet-4-6',
48
50
  provider: 'anthropic',
49
51
  systemPrompt: 'You are a helpful assistant.',
50
52
  tools: [calculatorTool],
@@ -54,7 +56,6 @@ const agent = new Agent(
54
56
  new BufferMemory(50),
55
57
  );
56
58
 
57
- // Execute
58
59
  const response = await agent.execute('What is 42 * 58?', {
59
60
  conversationId: 'user-123',
60
61
  sessionData: {},
@@ -64,44 +65,380 @@ const response = await agent.execute('What is 42 * 58?', {
64
65
  console.log(response.content);
65
66
  ```
66
67
 
67
- ## Multi-Provider Support
68
+ ## Providers
69
+
70
+ ### Cloud Providers
68
71
 
69
72
  ```typescript
70
73
  import {
71
- GeminiProvider,
72
- OpenAIProvider,
73
74
  AnthropicProvider,
75
+ OpenAIProvider,
76
+ GeminiProvider,
77
+ } from '@lov3kaizen/agentsea-core';
78
+
79
+ // Anthropic Claude (Opus 4.6, Sonnet 4.5, Haiku 4.5, and earlier)
80
+ const claude = new AnthropicProvider(process.env.ANTHROPIC_API_KEY);
81
+
82
+ // OpenAI (GPT-5, GPT-4.1, o3, o4-mini, GPT-4o, and more)
83
+ const openai = new OpenAIProvider(process.env.OPENAI_API_KEY);
84
+
85
+ // Google Gemini
86
+ const gemini = new GeminiProvider(process.env.GEMINI_API_KEY);
87
+ ```
88
+
89
+ ### Local Providers
90
+
91
+ ```typescript
92
+ import {
74
93
  OllamaProvider,
94
+ LMStudioProvider,
95
+ LocalAIProvider,
96
+ TextGenerationWebUIProvider,
97
+ VLLMProvider,
98
+ OpenAICompatibleProvider,
75
99
  } from '@lov3kaizen/agentsea-core';
76
100
 
77
- // Use any provider
78
- const geminiAgent = new Agent(config, new GeminiProvider(apiKey), toolRegistry);
79
- const openaiAgent = new Agent(config, new OpenAIProvider(apiKey), toolRegistry);
80
- const claudeAgent = new Agent(
81
- config,
82
- new AnthropicProvider(apiKey),
83
- toolRegistry,
84
- );
85
- const ollamaAgent = new Agent(config, new OllamaProvider(), toolRegistry);
101
+ // Ollama
102
+ const ollama = new OllamaProvider({ baseUrl: 'http://localhost:11434' });
103
+
104
+ // LM Studio
105
+ const lmstudio = new LMStudioProvider({ baseUrl: 'http://localhost:1234/v1' });
106
+
107
+ // LocalAI
108
+ const localai = new LocalAIProvider({ baseUrl: 'http://localhost:8080/v1' });
109
+
110
+ // Any OpenAI-compatible endpoint
111
+ const custom = new OpenAICompatibleProvider({
112
+ baseUrl: 'http://your-server/v1',
113
+ apiKey: 'optional-key',
114
+ });
115
+ ```
116
+
117
+ ### Per-Model Type Safety
118
+
119
+ Get compile-time validation for model-specific options:
120
+
121
+ ```typescript
122
+ import { anthropic, openai, createProvider } from '@lov3kaizen/agentsea-core';
123
+
124
+ // Claude supports tools, system prompts, and extended thinking
125
+ const claudeConfig = anthropic('claude-sonnet-4-6', {
126
+ tools: [myTool],
127
+ systemPrompt: 'You are a helpful assistant',
128
+ thinking: { type: 'enabled', budgetTokens: 10000 },
129
+ });
130
+
131
+ // o3 supports tools and reasoning effort
132
+ const o3Config = openai('o3', {
133
+ tools: [myTool],
134
+ reasoningEffort: 'high',
135
+ });
136
+
137
+ // Create type-safe provider from config
138
+ const provider = createProvider(claudeConfig);
139
+ ```
140
+
141
+ ## Tools
142
+
143
+ ### Built-in Tools
144
+
145
+ ```typescript
146
+ import {
147
+ // General tools
148
+ calculatorTool,
149
+ // Coding tools
150
+ fileReadTool,
151
+ fileWriteTool,
152
+ fileListTool,
153
+ shellExecuteTool,
154
+ codeEditTool,
155
+ globTool,
156
+ grepTool,
157
+ gitStatusTool,
158
+ gitDiffTool,
159
+ gitAddTool,
160
+ gitCommitTool,
161
+ gitLogTool,
162
+ gitBranchTool,
163
+ } from '@lov3kaizen/agentsea-core';
164
+ ```
165
+
166
+ ### Custom Tools
167
+
168
+ ```typescript
169
+ import { z } from 'zod';
170
+
171
+ const weatherTool = {
172
+ name: 'get_weather',
173
+ description: 'Get current weather for a location',
174
+ parameters: z.object({
175
+ location: z.string().describe('City name'),
176
+ }),
177
+ execute: async (params) => {
178
+ return `Weather in ${params.location}: Sunny, 72°F`;
179
+ },
180
+ };
181
+
182
+ toolRegistry.register(weatherTool);
183
+ ```
184
+
185
+ ### Isomorphic Tool Definitions
186
+
187
+ Define tools that work on server, client, or both:
188
+
189
+ ```typescript
190
+ import { serverTool, clientTool, hybridTool } from '@lov3kaizen/agentsea-core';
191
+ import { z } from 'zod';
192
+
193
+ // Server-only tool
194
+ const dbQuery = serverTool({
195
+ name: 'db_query',
196
+ description: 'Query the database',
197
+ parameters: z.object({ sql: z.string() }),
198
+ execute: async (params) => {
199
+ /* server-side only */
200
+ },
201
+ });
202
+
203
+ // Client-only tool (runs in browser)
204
+ const showModal = clientTool({
205
+ name: 'show_modal',
206
+ description: 'Show a modal dialog',
207
+ parameters: z.object({ message: z.string() }),
208
+ execute: async (params) => {
209
+ /* client-side only */
210
+ },
211
+ });
212
+
213
+ // Hybrid tool (runs on both)
214
+ const logger = hybridTool({
215
+ name: 'log',
216
+ description: 'Log a message',
217
+ parameters: z.object({ message: z.string() }),
218
+ executeServer: async (params) => {
219
+ /* server impl */
220
+ },
221
+ executeClient: async (params) => {
222
+ /* client impl */
223
+ },
224
+ });
225
+ ```
226
+
227
+ ## Memory
228
+
229
+ ```typescript
230
+ import {
231
+ BufferMemory,
232
+ RedisMemory,
233
+ SummaryMemory,
234
+ TenantBufferMemory,
235
+ } from '@lov3kaizen/agentsea-core';
236
+
237
+ // Simple buffer (keep last N messages)
238
+ const buffer = new BufferMemory(50);
239
+
240
+ // Redis-backed for persistence
241
+ const redis = new RedisMemory({ url: 'redis://localhost:6379' });
242
+
243
+ // Summary-based (compresses old conversations)
244
+ const summary = new SummaryMemory(provider);
245
+
246
+ // Multi-tenant (isolates memory per tenant)
247
+ const tenant = new TenantBufferMemory(100);
248
+ ```
249
+
250
+ ## Workflows
251
+
252
+ Orchestrate multiple agents in different patterns:
253
+
254
+ ```typescript
255
+ import {
256
+ SequentialWorkflow,
257
+ ParallelWorkflow,
258
+ SupervisorWorkflow,
259
+ } from '@lov3kaizen/agentsea-core';
260
+
261
+ // Sequential: agents run one after another
262
+ const sequential = new SequentialWorkflow({
263
+ name: 'research-pipeline',
264
+ agents: [researchAgent, analyzeAgent, summaryAgent],
265
+ });
266
+
267
+ // Parallel: agents run simultaneously
268
+ const parallel = new ParallelWorkflow({
269
+ name: 'multi-analysis',
270
+ agents: [sentimentAgent, topicAgent, entityAgent],
271
+ });
272
+
273
+ // Supervisor: one agent delegates to others
274
+ const supervised = new SupervisorWorkflow({
275
+ name: 'managed-team',
276
+ supervisor: managerAgent,
277
+ workers: [codeAgent, testAgent, reviewAgent],
278
+ });
279
+
280
+ const result = await sequential.execute('Research AI trends', context);
281
+ ```
282
+
283
+ ## MCP Integration
284
+
285
+ ```typescript
286
+ import { MCPRegistry } from '@lov3kaizen/agentsea-core';
287
+
288
+ const mcpRegistry = new MCPRegistry();
289
+
290
+ await mcpRegistry.addServer({
291
+ name: 'filesystem',
292
+ command: 'npx',
293
+ args: ['-y', '@modelcontextprotocol/server-filesystem', '/tmp'],
294
+ transport: 'stdio',
295
+ });
296
+
297
+ const mcpTools = mcpRegistry.getTools();
298
+ const agent = new Agent({ tools: mcpTools }, provider, toolRegistry);
299
+ ```
300
+
301
+ ## ACP (Agentic Commerce Protocol)
302
+
303
+ ```typescript
304
+ import { ACPClient, createACPTools } from '@lov3kaizen/agentsea-core';
305
+
306
+ const acpClient = new ACPClient({
307
+ baseUrl: 'https://api.yourcommerce.com/v1',
308
+ apiKey: process.env.ACP_API_KEY,
309
+ merchantId: process.env.ACP_MERCHANT_ID,
310
+ });
311
+
312
+ // 14 commerce operations: search, cart, checkout, payments, orders
313
+ const acpTools = createACPTools(acpClient);
314
+ ```
315
+
316
+ ## Voice
317
+
318
+ ```typescript
319
+ import {
320
+ VoiceAgent,
321
+ OpenAIWhisperProvider,
322
+ OpenAITTSProvider,
323
+ } from '@lov3kaizen/agentsea-core';
324
+
325
+ const voiceAgent = new VoiceAgent(agent, {
326
+ sttProvider: new OpenAIWhisperProvider(process.env.OPENAI_API_KEY),
327
+ ttsProvider: new OpenAITTSProvider(process.env.OPENAI_API_KEY),
328
+ ttsConfig: { voice: 'nova' },
329
+ });
330
+
331
+ const result = await voiceAgent.processVoice(audioBuffer, context);
332
+ ```
333
+
334
+ **Supported Providers:**
335
+
336
+ - **STT:** OpenAI Whisper, Local Whisper
337
+ - **TTS:** OpenAI TTS, ElevenLabs, Piper TTS
338
+
339
+ ## Conversation Schemas
340
+
341
+ ```typescript
342
+ import { ConversationSchema } from '@lov3kaizen/agentsea-core';
343
+ import { z } from 'zod';
344
+
345
+ const schema = new ConversationSchema({
346
+ name: 'booking',
347
+ startStep: 'destination',
348
+ steps: [
349
+ {
350
+ id: 'destination',
351
+ prompt: 'Where would you like to go?',
352
+ schema: z.object({ city: z.string() }),
353
+ next: 'dates',
354
+ },
355
+ {
356
+ id: 'dates',
357
+ prompt: 'What dates?',
358
+ schema: z.object({ checkIn: z.string(), checkOut: z.string() }),
359
+ next: 'confirm',
360
+ },
361
+ ],
362
+ });
363
+ ```
364
+
365
+ ## Observability
366
+
367
+ ```typescript
368
+ import {
369
+ Logger,
370
+ defaultLogger,
371
+ MetricsCollector,
372
+ globalMetrics,
373
+ Tracer,
374
+ globalTracer,
375
+ } from '@lov3kaizen/agentsea-core';
376
+
377
+ // Structured logging
378
+ const logger = new Logger({ level: 'info', pretty: true });
379
+ logger.info('Agent started', { agent: 'assistant' });
380
+
381
+ // Metrics collection
382
+ globalMetrics.increment('agent.requests');
383
+ globalMetrics.histogram('agent.latency', 150);
384
+
385
+ // Distributed tracing
386
+ const span = globalTracer.startSpan('agent.execute');
387
+ span.end();
86
388
  ```
87
389
 
88
- ## Documentation
390
+ ## Utilities
391
+
392
+ ```typescript
393
+ import {
394
+ RateLimiter,
395
+ LRUCache,
396
+ ContentFormatter,
397
+ } from '@lov3kaizen/agentsea-core';
398
+
399
+ // Rate limiting
400
+ const limiter = new RateLimiter({ maxRequests: 100, windowMs: 60000 });
401
+
402
+ // LRU caching
403
+ const cache = new LRUCache<string>({ maxSize: 1000 });
404
+
405
+ // Content formatting
406
+ const formatted = ContentFormatter.format(response);
407
+ ```
408
+
409
+ ## API Reference
410
+
411
+ ### Agent
412
+
413
+ | Method | Description |
414
+ | ---------------------------------- | -------------------------------------------- |
415
+ | `execute(input, context)` | Execute agent with input and return response |
416
+ | `executeStream(input, context)` | Stream agent response chunks |
417
+ | `registerProvider(name, provider)` | Register a provider |
89
418
 
90
- Full documentation available at [agentsea.dev](https://agentsea.dev)
419
+ ### ToolRegistry
91
420
 
92
- - [Quick Start](https://agentsea.dev/docs/quick-start)
93
- - [Agents](https://agentsea.dev/docs/agents)
94
- - [Tools](https://agentsea.dev/docs/tools)
95
- - [Workflows](https://agentsea.dev/docs/workflows)
96
- - [Memory](https://agentsea.dev/docs/memory)
97
- - [MCP Integration](https://agentsea.dev/docs/mcp-overview)
98
- - [API Reference](https://agentsea.dev/api)
421
+ | Method | Description |
422
+ | -------------------------------- | ------------------------- |
423
+ | `register(tool)` | Register a tool |
424
+ | `get(name)` | Get a tool by name |
425
+ | `list()` | List all registered tools |
426
+ | `execute(name, params, context)` | Execute a tool |
99
427
 
100
428
  ## Related Packages
101
429
 
102
- - [@lov3kaizen/agentsea-cli](https://www.npmjs.com/package/@lov3kaizen/agentsea-cli) - Command-line interface
103
- - [@lov3kaizen/agentsea-nestjs](https://www.npmjs.com/package/@lov3kaizen/agentsea-nestjs) - NestJS integration
104
- - [@lov3kaizen/agentsea-react](https://www.npmjs.com/package/@lov3kaizen/agentsea-react) - React components
430
+ | Package | Description |
431
+ | ------------------------------------------------ | ------------------------------------------ |
432
+ | [@lov3kaizen/agentsea-cli](../cli) | Command-line interface with agentic coding |
433
+ | [@lov3kaizen/agentsea-nestjs](../nestjs) | NestJS integration |
434
+ | [@lov3kaizen/agentsea-crews](../crews) | Multi-agent orchestration |
435
+ | [@lov3kaizen/agentsea-memory](../memory) | Advanced memory systems |
436
+ | [@lov3kaizen/agentsea-cache](../cache) | Intelligent LLM caching |
437
+ | [@lov3kaizen/agentsea-guardrails](../guardrails) | Safety & validation |
438
+ | [@lov3kaizen/agentsea-evaluate](../evaluate) | LLM evaluation |
439
+ | [@lov3kaizen/agentsea-redteam](../redteam) | Red teaming & security |
440
+ | [@lov3kaizen/agentsea-analytics](../analytics) | Conversation analytics |
441
+ | [@lov3kaizen/agentsea-react](../react) | React components |
105
442
 
106
443
  ## License
107
444
 
package/dist/index.d.mts CHANGED
@@ -1,4 +1,4 @@
1
- import { Tool, ToolCall, ToolContext, AgentConfig, LLMProvider, MemoryStore, AgentContext, AgentResponse, StreamEvent, RetryConfig, Message, ProviderConfig, LLMResponse, LLMStreamChunk, ProviderModelConfig, ModelInfo, ModelCapabilities, AnthropicModel, AnthropicConfig, OpenAIModel, OpenAIConfig, GeminiModel, GeminiConfig, OllamaConfig as OllamaConfig$1, AnthropicModelCapabilities, OpenAIModelCapabilities, GeminiModelCapabilities, MistralConfig, MistralModelCapabilities, DeepSeekConfig, DeepSeekModelCapabilities, XAIConfig, XAIModelCapabilities, 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, RetryConfig, Message, ProviderConfig, LLMResponse, LLMStreamChunk, ProviderModelConfig, ModelCapabilities, AnthropicConfig, AnthropicModelCapabilities, OpenAIConfig, OpenAIModelCapabilities, GeminiConfig, GeminiModelCapabilities, MistralConfig, MistralModelCapabilities, DeepSeekConfig, DeepSeekModelCapabilities, XAIConfig, XAIModelCapabilities, ModelInfo, AnthropicModel, GeminiModel, OllamaConfig as OllamaConfig$1, OpenAIModel, 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 { z } from 'zod';
@@ -193,6 +193,7 @@ declare const calculatorClient: ClientTool<z.ZodObject<{
193
193
  declare class AnthropicProvider implements LLMProvider {
194
194
  private client;
195
195
  constructor(apiKey?: string);
196
+ private buildRequestParams;
196
197
  generateResponse(messages: Message[], config: ProviderConfig): Promise<LLMResponse>;
197
198
  streamResponse(messages: Message[], config: ProviderConfig): AsyncIterable<LLMStreamChunk>;
198
199
  parseToolCalls(response: LLMResponse): ToolCall[];
package/dist/index.d.ts CHANGED
@@ -1,4 +1,4 @@
1
- import { Tool, ToolCall, ToolContext, AgentConfig, LLMProvider, MemoryStore, AgentContext, AgentResponse, StreamEvent, RetryConfig, Message, ProviderConfig, LLMResponse, LLMStreamChunk, ProviderModelConfig, ModelInfo, ModelCapabilities, AnthropicModel, AnthropicConfig, OpenAIModel, OpenAIConfig, GeminiModel, GeminiConfig, OllamaConfig as OllamaConfig$1, AnthropicModelCapabilities, OpenAIModelCapabilities, GeminiModelCapabilities, MistralConfig, MistralModelCapabilities, DeepSeekConfig, DeepSeekModelCapabilities, XAIConfig, XAIModelCapabilities, 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, RetryConfig, Message, ProviderConfig, LLMResponse, LLMStreamChunk, ProviderModelConfig, ModelCapabilities, AnthropicConfig, AnthropicModelCapabilities, OpenAIConfig, OpenAIModelCapabilities, GeminiConfig, GeminiModelCapabilities, MistralConfig, MistralModelCapabilities, DeepSeekConfig, DeepSeekModelCapabilities, XAIConfig, XAIModelCapabilities, ModelInfo, AnthropicModel, GeminiModel, OllamaConfig as OllamaConfig$1, OpenAIModel, 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 { z } from 'zod';
@@ -193,6 +193,7 @@ declare const calculatorClient: ClientTool<z.ZodObject<{
193
193
  declare class AnthropicProvider implements LLMProvider {
194
194
  private client;
195
195
  constructor(apiKey?: string);
196
+ private buildRequestParams;
196
197
  generateResponse(messages: Message[], config: ProviderConfig): Promise<LLMResponse>;
197
198
  streamResponse(messages: Message[], config: ProviderConfig): AsyncIterable<LLMStreamChunk>;
198
199
  parseToolCalls(response: LLMResponse): ToolCall[];
package/dist/index.js CHANGED
@@ -34,7 +34,6 @@ __export(index_exports, {
34
34
  ACPClient: () => ACPClient,
35
35
  Agent: () => Agent,
36
36
  AnthropicProvider: () => AnthropicProvider,
37
- AudioFormat: () => import_agentsea_types.AudioFormat,
38
37
  BufferMemory: () => BufferMemory,
39
38
  Cache: () => Cache,
40
39
  ContentFormatter: () => ContentFormatter,
@@ -64,35 +63,19 @@ __export(index_exports, {
64
63
  RateLimiter: () => RateLimiter,
65
64
  RedisMemory: () => RedisMemory,
66
65
  SSETransport: () => SSETransport,
67
- STTConfig: () => import_agentsea_types.STTConfig,
68
- STTProvider: () => import_agentsea_types.STTProvider,
69
- STTResult: () => import_agentsea_types.STTResult,
70
66
  SequentialWorkflow: () => SequentialWorkflow,
71
67
  SlidingWindowRateLimiter: () => SlidingWindowRateLimiter,
72
68
  StdioTransport: () => StdioTransport,
73
69
  SummaryMemory: () => SummaryMemory,
74
70
  SupervisorWorkflow: () => SupervisorWorkflow,
75
- TTSConfig: () => import_agentsea_types.TTSConfig,
76
- TTSProvider: () => import_agentsea_types.TTSProvider,
77
- TTSResult: () => import_agentsea_types.TTSResult,
78
- Tenant: () => import_agentsea_types2.Tenant,
79
- TenantApiKey: () => import_agentsea_types2.TenantApiKey,
80
71
  TenantBufferMemory: () => TenantBufferMemory,
81
- TenantContext: () => import_agentsea_types2.TenantContext,
82
72
  TenantManager: () => TenantManager,
83
- TenantQuota: () => import_agentsea_types2.TenantQuota,
84
- TenantResolver: () => import_agentsea_types2.TenantResolver,
85
- TenantSettings: () => import_agentsea_types2.TenantSettings,
86
- TenantStatus: () => import_agentsea_types2.TenantStatus,
87
- TenantStorage: () => import_agentsea_types2.TenantStorage,
73
+ TenantStatus: () => import_agentsea_types.TenantStatus,
88
74
  TextGenerationWebUIProvider: () => TextGenerationWebUIProvider,
89
75
  ToolRegistry: () => ToolRegistry,
90
76
  Tracer: () => Tracer,
91
77
  VLLMProvider: () => VLLMProvider,
92
78
  VoiceAgent: () => VoiceAgent,
93
- VoiceAgentConfig: () => import_agentsea_types.VoiceAgentConfig,
94
- VoiceMessage: () => import_agentsea_types.VoiceMessage,
95
- VoiceType: () => import_agentsea_types.VoiceType,
96
79
  Workflow: () => Workflow,
97
80
  WorkflowFactory: () => WorkflowFactory,
98
81
  calculatorClient: () => calculatorClient,
@@ -312,6 +295,10 @@ var Agent = class {
312
295
  this.toolRegistry = toolRegistry;
313
296
  this.memory = memory;
314
297
  }
298
+ config;
299
+ provider;
300
+ toolRegistry;
301
+ memory;
315
302
  iterationCount = 0;
316
303
  /**
317
304
  * Execute the agent with the given input
@@ -1798,7 +1785,7 @@ var grepTool = {
1798
1785
  // src/tools/built-in/git.tool.ts
1799
1786
  var import_child_process2 = require("child_process");
1800
1787
  var import_zod11 = require("zod");
1801
- var GIT_TIMEOUT_MS = 15e3;
1788
+ var GIT_TIMEOUT_MS = 3e4;
1802
1789
  function gitExec(args, cwd) {
1803
1790
  return (0, import_child_process2.execSync)(`git ${args}`, {
1804
1791
  cwd: cwd || process.cwd(),
@@ -2158,6 +2145,8 @@ var calculatorClient = calculatorDef.client(({ operation, a, b }) => {
2158
2145
  // src/providers/anthropic.ts
2159
2146
  var import_sdk = __toESM(require("@anthropic-ai/sdk"));
2160
2147
  var import_zod_to_json_schema = require("zod-to-json-schema");
2148
+ var SAMPLING_REMOVED = /^claude-(opus-4-[789]|fable-5|mythos-5)/;
2149
+ var ADAPTIVE_THINKING = /^claude-(opus-4-[6789]|sonnet-4-6|fable-5|mythos-5)/;
2161
2150
  var AnthropicProvider = class {
2162
2151
  client;
2163
2152
  constructor(apiKey) {
@@ -2165,6 +2154,30 @@ var AnthropicProvider = class {
2165
2154
  apiKey: apiKey || process.env.ANTHROPIC_API_KEY
2166
2155
  });
2167
2156
  }
2157
+ /**
2158
+ * Build model-aware request parameters. Modern Claude models reject
2159
+ * removed sampling params, and Claude 4+ rejects temperature and
2160
+ * top_p together — temperature wins when both are configured.
2161
+ */
2162
+ buildRequestParams(config, defaultMaxTokens) {
2163
+ const params = {
2164
+ max_tokens: config.maxTokens || defaultMaxTokens
2165
+ };
2166
+ if (!SAMPLING_REMOVED.test(config.model)) {
2167
+ if (config.temperature !== void 0) {
2168
+ params.temperature = config.temperature;
2169
+ } else if (config.topP !== void 0) {
2170
+ params.top_p = config.topP;
2171
+ }
2172
+ }
2173
+ if (config.thinking && ADAPTIVE_THINKING.test(config.model)) {
2174
+ params.thinking = config.thinking === true ? { type: "adaptive" } : config.thinking;
2175
+ }
2176
+ if (config.effort && ADAPTIVE_THINKING.test(config.model)) {
2177
+ params.output_config = { effort: config.effort };
2178
+ }
2179
+ return params;
2180
+ }
2168
2181
  /**
2169
2182
  * Generate a response from Claude
2170
2183
  */
@@ -2177,14 +2190,12 @@ var AnthropicProvider = class {
2177
2190
  })) : void 0;
2178
2191
  const response = await this.client.messages.create({
2179
2192
  model: config.model,
2180
- max_tokens: config.maxTokens || 1024,
2181
- temperature: config.temperature,
2182
2193
  system: config.systemPrompt,
2183
2194
  messages: anthropicMessages,
2184
2195
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
2185
2196
  tools,
2186
- top_p: config.topP,
2187
- stop_sequences: config.stopSequences
2197
+ stop_sequences: config.stopSequences,
2198
+ ...this.buildRequestParams(config, 16e3)
2188
2199
  });
2189
2200
  const textContent = response.content.filter((block) => block.type === "text").map((block) => block.text).join("\n");
2190
2201
  return {
@@ -2209,14 +2220,12 @@ var AnthropicProvider = class {
2209
2220
  })) : void 0;
2210
2221
  const stream = await this.client.messages.stream({
2211
2222
  model: config.model,
2212
- max_tokens: config.maxTokens || 1024,
2213
- temperature: config.temperature,
2214
2223
  system: config.systemPrompt,
2215
2224
  messages: anthropicMessages,
2216
2225
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
2217
2226
  tools,
2218
- top_p: config.topP,
2219
- stop_sequences: config.stopSequences
2227
+ stop_sequences: config.stopSequences,
2228
+ ...this.buildRequestParams(config, 64e3)
2220
2229
  });
2221
2230
  for await (const event of stream) {
2222
2231
  if (event.type === "content_block_delta") {
@@ -2398,6 +2407,9 @@ var OpenAIProvider = class {
2398
2407
  const choice = rawResponse.choices[0];
2399
2408
  if (choice?.message.tool_calls) {
2400
2409
  for (const toolCall of choice.message.tool_calls) {
2410
+ if (toolCall.type !== "function") {
2411
+ continue;
2412
+ }
2401
2413
  toolCalls.push({
2402
2414
  id: toolCall.id,
2403
2415
  tool: toolCall.function.name,
@@ -2457,7 +2469,7 @@ var GeminiProvider = class {
2457
2469
  * Generate a response from the Gemini model
2458
2470
  */
2459
2471
  async generateResponse(messages, config) {
2460
- const model = this.getModel(config.model || "gemini-pro");
2472
+ const model = this.getModel(config.model || "gemini-3.1-pro-preview");
2461
2473
  const contents = this.convertMessages(messages);
2462
2474
  const generationConfig = {
2463
2475
  temperature: config.temperature || 0.7,
@@ -2491,7 +2503,7 @@ var GeminiProvider = class {
2491
2503
  * Stream responses from Gemini
2492
2504
  */
2493
2505
  async *streamResponse(messages, config) {
2494
- const model = this.getModel(config.model || "gemini-pro");
2506
+ const model = this.getModel(config.model || "gemini-3.1-pro-preview");
2495
2507
  const contents = this.convertMessages(messages);
2496
2508
  const generationConfig = {
2497
2509
  temperature: config.temperature || 0.7,
@@ -2974,6 +2986,9 @@ var OpenAICompatibleProvider = class {
2974
2986
  const choice = rawResponse.choices[0];
2975
2987
  if (choice?.message.tool_calls) {
2976
2988
  for (const toolCall of choice.message.tool_calls) {
2989
+ if (toolCall.type !== "function") {
2990
+ continue;
2991
+ }
2977
2992
  toolCalls.push({
2978
2993
  id: toolCall.id,
2979
2994
  tool: toolCall.function.name,
@@ -3174,6 +3189,7 @@ var BufferMemory = class {
3174
3189
  constructor(maxMessages) {
3175
3190
  this.maxMessages = maxMessages;
3176
3191
  }
3192
+ maxMessages;
3177
3193
  store = /* @__PURE__ */ new Map();
3178
3194
  /**
3179
3195
  * Save messages to memory
@@ -3294,11 +3310,14 @@ var RedisMemory = class {
3294
3310
 
3295
3311
  // src/memory/summary-memory.ts
3296
3312
  var SummaryMemory = class {
3297
- constructor(provider, maxRecentMessages = 10, summaryModel = "claude-3-haiku-20240307") {
3313
+ constructor(provider, maxRecentMessages = 10, summaryModel = "claude-haiku-4-5") {
3298
3314
  this.provider = provider;
3299
3315
  this.maxRecentMessages = maxRecentMessages;
3300
3316
  this.summaryModel = summaryModel;
3301
3317
  }
3318
+ provider;
3319
+ maxRecentMessages;
3320
+ summaryModel;
3302
3321
  store = /* @__PURE__ */ new Map();
3303
3322
  /**
3304
3323
  * Save messages with automatic summarization
@@ -3388,6 +3407,7 @@ var TenantBufferMemory = class {
3388
3407
  constructor(maxMessages) {
3389
3408
  this.maxMessages = maxMessages;
3390
3409
  }
3410
+ maxMessages;
3391
3411
  store = /* @__PURE__ */ new Map();
3392
3412
  /**
3393
3413
  * Save messages to memory with tenant isolation
@@ -3497,6 +3517,10 @@ var Workflow = class {
3497
3517
  this.memory = memory;
3498
3518
  this.initializeAgents();
3499
3519
  }
3520
+ config;
3521
+ provider;
3522
+ toolRegistry;
3523
+ memory;
3500
3524
  agents = /* @__PURE__ */ new Map();
3501
3525
  /**
3502
3526
  * Initialize all agents in the workflow
@@ -4045,6 +4069,8 @@ var RateLimiter = class {
4045
4069
  this.tokens = maxTokens;
4046
4070
  this.lastRefill = Date.now();
4047
4071
  }
4072
+ maxTokens;
4073
+ refillRate;
4048
4074
  tokens;
4049
4075
  lastRefill;
4050
4076
  /**
@@ -4103,6 +4129,8 @@ var SlidingWindowRateLimiter = class {
4103
4129
  this.maxRequests = maxRequests;
4104
4130
  this.windowMs = windowMs;
4105
4131
  }
4132
+ maxRequests;
4133
+ windowMs;
4106
4134
  requests = /* @__PURE__ */ new Map();
4107
4135
  /**
4108
4136
  * Check if request is allowed
@@ -4147,6 +4175,7 @@ var Cache = class {
4147
4175
  constructor(defaultTTL) {
4148
4176
  this.defaultTTL = defaultTTL;
4149
4177
  }
4178
+ defaultTTL;
4150
4179
  store = /* @__PURE__ */ new Map();
4151
4180
  /**
4152
4181
  * Set a value in the cache
@@ -4249,6 +4278,7 @@ var LRUCache = class {
4249
4278
  constructor(maxSize) {
4250
4279
  this.maxSize = maxSize;
4251
4280
  }
4281
+ maxSize;
4252
4282
  cache = /* @__PURE__ */ new Map();
4253
4283
  /**
4254
4284
  * Get a value from the cache
@@ -4316,6 +4346,9 @@ var StdioTransport = class extends import_events.EventEmitter {
4316
4346
  this.args = args;
4317
4347
  this.env = env;
4318
4348
  }
4349
+ command;
4350
+ args;
4351
+ env;
4319
4352
  process = null;
4320
4353
  connected = false;
4321
4354
  buffer = "";
@@ -4387,6 +4420,7 @@ var SSETransport = class extends import_events.EventEmitter {
4387
4420
  super();
4388
4421
  this.url = url;
4389
4422
  }
4423
+ url;
4390
4424
  eventSource = null;
4391
4425
  connected = false;
4392
4426
  async connect() {
@@ -4454,6 +4488,7 @@ var MCPClient = class extends import_events2.EventEmitter {
4454
4488
  super();
4455
4489
  this.config = config;
4456
4490
  }
4491
+ config;
4457
4492
  transport = null;
4458
4493
  serverInfo = null;
4459
4494
  requestId = 0;
@@ -5746,9 +5781,6 @@ Respond naturally while ensuring you gather the required information.`;
5746
5781
  }
5747
5782
  };
5748
5783
 
5749
- // src/types/voice.ts
5750
- var import_agentsea_types = require("@lov3kaizen/agentsea-types");
5751
-
5752
5784
  // src/voice/voice-agent.ts
5753
5785
  var import_fs5 = require("fs");
5754
5786
  var import_path3 = require("path");
@@ -6706,7 +6738,7 @@ var LemonFoxTTSProvider = class extends OpenAITTSProvider {
6706
6738
  var import_crypto2 = require("crypto");
6707
6739
 
6708
6740
  // src/types/tenant.ts
6709
- var import_agentsea_types2 = require("@lov3kaizen/agentsea-types");
6741
+ var import_agentsea_types = require("@lov3kaizen/agentsea-types");
6710
6742
 
6711
6743
  // src/tenant/tenant-manager.ts
6712
6744
  var TenantManager = class {
@@ -6735,7 +6767,7 @@ var TenantManager = class {
6735
6767
  slug: data.slug,
6736
6768
  metadata: data.metadata,
6737
6769
  settings: { ...this.defaultSettings, ...data.settings },
6738
- status: import_agentsea_types2.TenantStatus.ACTIVE
6770
+ status: import_agentsea_types.TenantStatus.ACTIVE
6739
6771
  });
6740
6772
  return tenant;
6741
6773
  }
@@ -6765,13 +6797,13 @@ var TenantManager = class {
6765
6797
  * Suspend tenant
6766
6798
  */
6767
6799
  async suspendTenant(tenantId) {
6768
- return this.updateTenant(tenantId, { status: import_agentsea_types2.TenantStatus.SUSPENDED });
6800
+ return this.updateTenant(tenantId, { status: import_agentsea_types.TenantStatus.SUSPENDED });
6769
6801
  }
6770
6802
  /**
6771
6803
  * Activate tenant
6772
6804
  */
6773
6805
  async activateTenant(tenantId) {
6774
- return this.updateTenant(tenantId, { status: import_agentsea_types2.TenantStatus.ACTIVE });
6806
+ return this.updateTenant(tenantId, { status: import_agentsea_types.TenantStatus.ACTIVE });
6775
6807
  }
6776
6808
  /**
6777
6809
  * Delete tenant and all associated data
@@ -6821,7 +6853,7 @@ var TenantManager = class {
6821
6853
  return null;
6822
6854
  }
6823
6855
  const tenant = await this.storage.getTenant(apiKey.tenantId);
6824
- if (!tenant || tenant.status !== import_agentsea_types2.TenantStatus.ACTIVE) {
6856
+ if (!tenant || tenant.status !== import_agentsea_types.TenantStatus.ACTIVE) {
6825
6857
  return null;
6826
6858
  }
6827
6859
  return tenant;
@@ -7035,7 +7067,6 @@ var MemoryTenantStorage = class {
7035
7067
  ACPClient,
7036
7068
  Agent,
7037
7069
  AnthropicProvider,
7038
- AudioFormat,
7039
7070
  BufferMemory,
7040
7071
  Cache,
7041
7072
  ContentFormatter,
@@ -7065,35 +7096,19 @@ var MemoryTenantStorage = class {
7065
7096
  RateLimiter,
7066
7097
  RedisMemory,
7067
7098
  SSETransport,
7068
- STTConfig,
7069
- STTProvider,
7070
- STTResult,
7071
7099
  SequentialWorkflow,
7072
7100
  SlidingWindowRateLimiter,
7073
7101
  StdioTransport,
7074
7102
  SummaryMemory,
7075
7103
  SupervisorWorkflow,
7076
- TTSConfig,
7077
- TTSProvider,
7078
- TTSResult,
7079
- Tenant,
7080
- TenantApiKey,
7081
7104
  TenantBufferMemory,
7082
- TenantContext,
7083
7105
  TenantManager,
7084
- TenantQuota,
7085
- TenantResolver,
7086
- TenantSettings,
7087
7106
  TenantStatus,
7088
- TenantStorage,
7089
7107
  TextGenerationWebUIProvider,
7090
7108
  ToolRegistry,
7091
7109
  Tracer,
7092
7110
  VLLMProvider,
7093
7111
  VoiceAgent,
7094
- VoiceAgentConfig,
7095
- VoiceMessage,
7096
- VoiceType,
7097
7112
  Workflow,
7098
7113
  WorkflowFactory,
7099
7114
  calculatorClient,
package/dist/index.mjs CHANGED
@@ -22,7 +22,6 @@ __export(index_exports, {
22
22
  ACPClient: () => ACPClient,
23
23
  Agent: () => Agent,
24
24
  AnthropicProvider: () => AnthropicProvider,
25
- AudioFormat: () => AudioFormat,
26
25
  BufferMemory: () => BufferMemory,
27
26
  Cache: () => Cache,
28
27
  ContentFormatter: () => ContentFormatter,
@@ -52,35 +51,19 @@ __export(index_exports, {
52
51
  RateLimiter: () => RateLimiter,
53
52
  RedisMemory: () => RedisMemory,
54
53
  SSETransport: () => SSETransport,
55
- STTConfig: () => STTConfig,
56
- STTProvider: () => STTProvider,
57
- STTResult: () => STTResult,
58
54
  SequentialWorkflow: () => SequentialWorkflow,
59
55
  SlidingWindowRateLimiter: () => SlidingWindowRateLimiter,
60
56
  StdioTransport: () => StdioTransport,
61
57
  SummaryMemory: () => SummaryMemory,
62
58
  SupervisorWorkflow: () => SupervisorWorkflow,
63
- TTSConfig: () => TTSConfig,
64
- TTSProvider: () => TTSProvider,
65
- TTSResult: () => TTSResult,
66
- Tenant: () => Tenant,
67
- TenantApiKey: () => TenantApiKey,
68
59
  TenantBufferMemory: () => TenantBufferMemory,
69
- TenantContext: () => TenantContext,
70
60
  TenantManager: () => TenantManager,
71
- TenantQuota: () => TenantQuota,
72
- TenantResolver: () => TenantResolver,
73
- TenantSettings: () => TenantSettings,
74
61
  TenantStatus: () => TenantStatus,
75
- TenantStorage: () => TenantStorage,
76
62
  TextGenerationWebUIProvider: () => TextGenerationWebUIProvider,
77
63
  ToolRegistry: () => ToolRegistry,
78
64
  Tracer: () => Tracer,
79
65
  VLLMProvider: () => VLLMProvider,
80
66
  VoiceAgent: () => VoiceAgent,
81
- VoiceAgentConfig: () => VoiceAgentConfig,
82
- VoiceMessage: () => VoiceMessage,
83
- VoiceType: () => VoiceType,
84
67
  Workflow: () => Workflow,
85
68
  WorkflowFactory: () => WorkflowFactory,
86
69
  calculatorClient: () => calculatorClient,
@@ -300,6 +283,10 @@ var Agent = class {
300
283
  this.toolRegistry = toolRegistry;
301
284
  this.memory = memory;
302
285
  }
286
+ config;
287
+ provider;
288
+ toolRegistry;
289
+ memory;
303
290
  iterationCount = 0;
304
291
  /**
305
292
  * Execute the agent with the given input
@@ -1786,7 +1773,7 @@ var grepTool = {
1786
1773
  // src/tools/built-in/git.tool.ts
1787
1774
  import { execSync as execSync2 } from "child_process";
1788
1775
  import { z as z11 } from "zod";
1789
- var GIT_TIMEOUT_MS = 15e3;
1776
+ var GIT_TIMEOUT_MS = 3e4;
1790
1777
  function gitExec(args, cwd) {
1791
1778
  return execSync2(`git ${args}`, {
1792
1779
  cwd: cwd || process.cwd(),
@@ -2146,6 +2133,8 @@ var calculatorClient = calculatorDef.client(({ operation, a, b }) => {
2146
2133
  // src/providers/anthropic.ts
2147
2134
  import Anthropic from "@anthropic-ai/sdk";
2148
2135
  import { zodToJsonSchema } from "zod-to-json-schema";
2136
+ var SAMPLING_REMOVED = /^claude-(opus-4-[789]|fable-5|mythos-5)/;
2137
+ var ADAPTIVE_THINKING = /^claude-(opus-4-[6789]|sonnet-4-6|fable-5|mythos-5)/;
2149
2138
  var AnthropicProvider = class {
2150
2139
  client;
2151
2140
  constructor(apiKey) {
@@ -2153,6 +2142,30 @@ var AnthropicProvider = class {
2153
2142
  apiKey: apiKey || process.env.ANTHROPIC_API_KEY
2154
2143
  });
2155
2144
  }
2145
+ /**
2146
+ * Build model-aware request parameters. Modern Claude models reject
2147
+ * removed sampling params, and Claude 4+ rejects temperature and
2148
+ * top_p together — temperature wins when both are configured.
2149
+ */
2150
+ buildRequestParams(config, defaultMaxTokens) {
2151
+ const params = {
2152
+ max_tokens: config.maxTokens || defaultMaxTokens
2153
+ };
2154
+ if (!SAMPLING_REMOVED.test(config.model)) {
2155
+ if (config.temperature !== void 0) {
2156
+ params.temperature = config.temperature;
2157
+ } else if (config.topP !== void 0) {
2158
+ params.top_p = config.topP;
2159
+ }
2160
+ }
2161
+ if (config.thinking && ADAPTIVE_THINKING.test(config.model)) {
2162
+ params.thinking = config.thinking === true ? { type: "adaptive" } : config.thinking;
2163
+ }
2164
+ if (config.effort && ADAPTIVE_THINKING.test(config.model)) {
2165
+ params.output_config = { effort: config.effort };
2166
+ }
2167
+ return params;
2168
+ }
2156
2169
  /**
2157
2170
  * Generate a response from Claude
2158
2171
  */
@@ -2165,14 +2178,12 @@ var AnthropicProvider = class {
2165
2178
  })) : void 0;
2166
2179
  const response = await this.client.messages.create({
2167
2180
  model: config.model,
2168
- max_tokens: config.maxTokens || 1024,
2169
- temperature: config.temperature,
2170
2181
  system: config.systemPrompt,
2171
2182
  messages: anthropicMessages,
2172
2183
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
2173
2184
  tools,
2174
- top_p: config.topP,
2175
- stop_sequences: config.stopSequences
2185
+ stop_sequences: config.stopSequences,
2186
+ ...this.buildRequestParams(config, 16e3)
2176
2187
  });
2177
2188
  const textContent = response.content.filter((block) => block.type === "text").map((block) => block.text).join("\n");
2178
2189
  return {
@@ -2197,14 +2208,12 @@ var AnthropicProvider = class {
2197
2208
  })) : void 0;
2198
2209
  const stream = await this.client.messages.stream({
2199
2210
  model: config.model,
2200
- max_tokens: config.maxTokens || 1024,
2201
- temperature: config.temperature,
2202
2211
  system: config.systemPrompt,
2203
2212
  messages: anthropicMessages,
2204
2213
  // eslint-disable-next-line @typescript-eslint/no-explicit-any
2205
2214
  tools,
2206
- top_p: config.topP,
2207
- stop_sequences: config.stopSequences
2215
+ stop_sequences: config.stopSequences,
2216
+ ...this.buildRequestParams(config, 64e3)
2208
2217
  });
2209
2218
  for await (const event of stream) {
2210
2219
  if (event.type === "content_block_delta") {
@@ -2386,6 +2395,9 @@ var OpenAIProvider = class {
2386
2395
  const choice = rawResponse.choices[0];
2387
2396
  if (choice?.message.tool_calls) {
2388
2397
  for (const toolCall of choice.message.tool_calls) {
2398
+ if (toolCall.type !== "function") {
2399
+ continue;
2400
+ }
2389
2401
  toolCalls.push({
2390
2402
  id: toolCall.id,
2391
2403
  tool: toolCall.function.name,
@@ -2447,7 +2459,7 @@ var GeminiProvider = class {
2447
2459
  * Generate a response from the Gemini model
2448
2460
  */
2449
2461
  async generateResponse(messages, config) {
2450
- const model = this.getModel(config.model || "gemini-pro");
2462
+ const model = this.getModel(config.model || "gemini-3.1-pro-preview");
2451
2463
  const contents = this.convertMessages(messages);
2452
2464
  const generationConfig = {
2453
2465
  temperature: config.temperature || 0.7,
@@ -2481,7 +2493,7 @@ var GeminiProvider = class {
2481
2493
  * Stream responses from Gemini
2482
2494
  */
2483
2495
  async *streamResponse(messages, config) {
2484
- const model = this.getModel(config.model || "gemini-pro");
2496
+ const model = this.getModel(config.model || "gemini-3.1-pro-preview");
2485
2497
  const contents = this.convertMessages(messages);
2486
2498
  const generationConfig = {
2487
2499
  temperature: config.temperature || 0.7,
@@ -2964,6 +2976,9 @@ var OpenAICompatibleProvider = class {
2964
2976
  const choice = rawResponse.choices[0];
2965
2977
  if (choice?.message.tool_calls) {
2966
2978
  for (const toolCall of choice.message.tool_calls) {
2979
+ if (toolCall.type !== "function") {
2980
+ continue;
2981
+ }
2967
2982
  toolCalls.push({
2968
2983
  id: toolCall.id,
2969
2984
  tool: toolCall.function.name,
@@ -3164,6 +3179,7 @@ var BufferMemory = class {
3164
3179
  constructor(maxMessages) {
3165
3180
  this.maxMessages = maxMessages;
3166
3181
  }
3182
+ maxMessages;
3167
3183
  store = /* @__PURE__ */ new Map();
3168
3184
  /**
3169
3185
  * Save messages to memory
@@ -3284,11 +3300,14 @@ var RedisMemory = class {
3284
3300
 
3285
3301
  // src/memory/summary-memory.ts
3286
3302
  var SummaryMemory = class {
3287
- constructor(provider, maxRecentMessages = 10, summaryModel = "claude-3-haiku-20240307") {
3303
+ constructor(provider, maxRecentMessages = 10, summaryModel = "claude-haiku-4-5") {
3288
3304
  this.provider = provider;
3289
3305
  this.maxRecentMessages = maxRecentMessages;
3290
3306
  this.summaryModel = summaryModel;
3291
3307
  }
3308
+ provider;
3309
+ maxRecentMessages;
3310
+ summaryModel;
3292
3311
  store = /* @__PURE__ */ new Map();
3293
3312
  /**
3294
3313
  * Save messages with automatic summarization
@@ -3378,6 +3397,7 @@ var TenantBufferMemory = class {
3378
3397
  constructor(maxMessages) {
3379
3398
  this.maxMessages = maxMessages;
3380
3399
  }
3400
+ maxMessages;
3381
3401
  store = /* @__PURE__ */ new Map();
3382
3402
  /**
3383
3403
  * Save messages to memory with tenant isolation
@@ -3487,6 +3507,10 @@ var Workflow = class {
3487
3507
  this.memory = memory;
3488
3508
  this.initializeAgents();
3489
3509
  }
3510
+ config;
3511
+ provider;
3512
+ toolRegistry;
3513
+ memory;
3490
3514
  agents = /* @__PURE__ */ new Map();
3491
3515
  /**
3492
3516
  * Initialize all agents in the workflow
@@ -4035,6 +4059,8 @@ var RateLimiter = class {
4035
4059
  this.tokens = maxTokens;
4036
4060
  this.lastRefill = Date.now();
4037
4061
  }
4062
+ maxTokens;
4063
+ refillRate;
4038
4064
  tokens;
4039
4065
  lastRefill;
4040
4066
  /**
@@ -4093,6 +4119,8 @@ var SlidingWindowRateLimiter = class {
4093
4119
  this.maxRequests = maxRequests;
4094
4120
  this.windowMs = windowMs;
4095
4121
  }
4122
+ maxRequests;
4123
+ windowMs;
4096
4124
  requests = /* @__PURE__ */ new Map();
4097
4125
  /**
4098
4126
  * Check if request is allowed
@@ -4137,6 +4165,7 @@ var Cache = class {
4137
4165
  constructor(defaultTTL) {
4138
4166
  this.defaultTTL = defaultTTL;
4139
4167
  }
4168
+ defaultTTL;
4140
4169
  store = /* @__PURE__ */ new Map();
4141
4170
  /**
4142
4171
  * Set a value in the cache
@@ -4239,6 +4268,7 @@ var LRUCache = class {
4239
4268
  constructor(maxSize) {
4240
4269
  this.maxSize = maxSize;
4241
4270
  }
4271
+ maxSize;
4242
4272
  cache = /* @__PURE__ */ new Map();
4243
4273
  /**
4244
4274
  * Get a value from the cache
@@ -4306,6 +4336,9 @@ var StdioTransport = class extends EventEmitter {
4306
4336
  this.args = args;
4307
4337
  this.env = env;
4308
4338
  }
4339
+ command;
4340
+ args;
4341
+ env;
4309
4342
  process = null;
4310
4343
  connected = false;
4311
4344
  buffer = "";
@@ -4377,6 +4410,7 @@ var SSETransport = class extends EventEmitter {
4377
4410
  super();
4378
4411
  this.url = url;
4379
4412
  }
4413
+ url;
4380
4414
  eventSource = null;
4381
4415
  connected = false;
4382
4416
  async connect() {
@@ -4444,6 +4478,7 @@ var MCPClient = class extends EventEmitter2 {
4444
4478
  super();
4445
4479
  this.config = config;
4446
4480
  }
4481
+ config;
4447
4482
  transport = null;
4448
4483
  serverInfo = null;
4449
4484
  requestId = 0;
@@ -5736,20 +5771,6 @@ Respond naturally while ensuring you gather the required information.`;
5736
5771
  }
5737
5772
  };
5738
5773
 
5739
- // src/types/voice.ts
5740
- import {
5741
- AudioFormat,
5742
- VoiceType,
5743
- STTConfig,
5744
- TTSConfig,
5745
- STTResult,
5746
- TTSResult,
5747
- STTProvider,
5748
- TTSProvider,
5749
- VoiceMessage,
5750
- VoiceAgentConfig
5751
- } from "@lov3kaizen/agentsea-types";
5752
-
5753
5774
  // src/voice/voice-agent.ts
5754
5775
  import { writeFileSync } from "fs";
5755
5776
  import { join as join3 } from "path";
@@ -6707,16 +6728,7 @@ var LemonFoxTTSProvider = class extends OpenAITTSProvider {
6707
6728
  import { randomBytes, createHash } from "crypto";
6708
6729
 
6709
6730
  // src/types/tenant.ts
6710
- import {
6711
- Tenant,
6712
- TenantStatus,
6713
- TenantSettings,
6714
- TenantContext,
6715
- TenantApiKey,
6716
- TenantQuota,
6717
- TenantStorage,
6718
- TenantResolver
6719
- } from "@lov3kaizen/agentsea-types";
6731
+ import { TenantStatus } from "@lov3kaizen/agentsea-types";
6720
6732
 
6721
6733
  // src/tenant/tenant-manager.ts
6722
6734
  var TenantManager = class {
@@ -7044,7 +7056,6 @@ export {
7044
7056
  ACPClient,
7045
7057
  Agent,
7046
7058
  AnthropicProvider,
7047
- AudioFormat,
7048
7059
  BufferMemory,
7049
7060
  Cache,
7050
7061
  ContentFormatter,
@@ -7074,35 +7085,19 @@ export {
7074
7085
  RateLimiter,
7075
7086
  RedisMemory,
7076
7087
  SSETransport,
7077
- STTConfig,
7078
- STTProvider,
7079
- STTResult,
7080
7088
  SequentialWorkflow,
7081
7089
  SlidingWindowRateLimiter,
7082
7090
  StdioTransport,
7083
7091
  SummaryMemory,
7084
7092
  SupervisorWorkflow,
7085
- TTSConfig,
7086
- TTSProvider,
7087
- TTSResult,
7088
- Tenant,
7089
- TenantApiKey,
7090
7093
  TenantBufferMemory,
7091
- TenantContext,
7092
7094
  TenantManager,
7093
- TenantQuota,
7094
- TenantResolver,
7095
- TenantSettings,
7096
7095
  TenantStatus,
7097
- TenantStorage,
7098
7096
  TextGenerationWebUIProvider,
7099
7097
  ToolRegistry,
7100
7098
  Tracer,
7101
7099
  VLLMProvider,
7102
7100
  VoiceAgent,
7103
- VoiceAgentConfig,
7104
- VoiceMessage,
7105
- VoiceType,
7106
7101
  Workflow,
7107
7102
  WorkflowFactory,
7108
7103
  calculatorClient,
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lov3kaizen/agentsea-core",
3
- "version": "0.6.0",
3
+ "version": "1.0.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",
@@ -16,23 +16,23 @@
16
16
  "README.md"
17
17
  ],
18
18
  "dependencies": {
19
- "@anthropic-ai/sdk": "^0.32.0",
20
- "@google/generative-ai": "^0.21.0",
21
- "openai": "^4.73.0",
22
- "fast-glob": "^3.3.2",
23
- "zod": "^3.22.4",
24
- "zod-to-json-schema": "^3.22.4",
25
- "winston": "^3.11.0",
26
- "ioredis": "^5.3.2",
27
- "marked": "^12.0.0",
28
- "@lov3kaizen/agentsea-types": "0.6.0"
19
+ "@anthropic-ai/sdk": "^0.104.1",
20
+ "@google/generative-ai": "^0.24.1",
21
+ "openai": "^6.42.0",
22
+ "fast-glob": "^3.3.3",
23
+ "zod": "^3.25.76",
24
+ "zod-to-json-schema": "^3.24.6",
25
+ "winston": "^3.19.0",
26
+ "ioredis": "^5.11.1",
27
+ "marked": "^12.0.2",
28
+ "@lov3kaizen/agentsea-types": "1.0.0"
29
29
  },
30
30
  "devDependencies": {
31
- "@types/node": "^20.11.0",
32
- "@vitest/coverage-v8": "^1.2.0",
33
- "tsup": "^8.0.1",
34
- "typescript": "^5.3.3",
35
- "vitest": "^1.2.0"
31
+ "@types/node": "^20.19.0",
32
+ "@vitest/coverage-v8": "^3.2.6",
33
+ "tsup": "^8.5.1",
34
+ "typescript": "^5.9.3",
35
+ "vitest": "^3.2.6"
36
36
  },
37
37
  "keywords": [
38
38
  "agentsea",