@tuttiai/core 0.6.0 → 0.8.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/index.d.ts CHANGED
@@ -1,6 +1,88 @@
1
+ import { TuttiHooks, TelemetryConfig, TuttiEventType, TuttiEvent, ScoreConfig, AgentResult, Session, LLMProvider, SessionStore, AgentConfig, ChatMessage, Voice, Permission, BudgetConfig, ChatRequest, ChatResponse, StreamChunk } from '@tuttiai/types';
2
+ export { AgentConfig, AgentMemoryConfig, AgentResult, BudgetConfig, ChatMessage, ChatRequest, ChatResponse, ContentBlock, HookContext, LLMProvider, MemoryConfig, Permission, ScoreConfig, Session, SessionStore, StopReason, StreamChunk, TelemetryConfig, TextBlock, TokenUsage, Tool, ToolContext, ToolDefinition, ToolMemoryHelpers, ToolResult, ToolResultBlock, ToolUseBlock, TuttiEvent, TuttiEventHandler, TuttiEventType, TuttiHooks, Voice, VoiceContext } from '@tuttiai/types';
1
3
  import pino from 'pino';
2
- import { TelemetryConfig, TuttiEventType, TuttiEvent, ScoreConfig, AgentResult, Session, LLMProvider, SessionStore, AgentConfig, ChatMessage, Voice, Permission, BudgetConfig, ChatRequest, ChatResponse } from '@tuttiai/types';
3
- export { AgentConfig, AgentMemoryConfig, AgentResult, BudgetConfig, ChatMessage, ChatRequest, ChatResponse, ContentBlock, LLMProvider, MemoryConfig, Permission, ScoreConfig, Session, SessionStore, StopReason, TelemetryConfig, TextBlock, TokenUsage, Tool, ToolContext, ToolDefinition, ToolMemoryHelpers, ToolResult, ToolResultBlock, ToolUseBlock, TuttiEvent, TuttiEventHandler, TuttiEventType, Voice, VoiceContext } from '@tuttiai/types';
4
+
5
+ /**
6
+ * Typed error hierarchy for Tutti. All errors extend TuttiError.
7
+ */
8
+ declare class TuttiError extends Error {
9
+ readonly code: string;
10
+ readonly context: Record<string, unknown>;
11
+ constructor(code: string, message: string, context?: Record<string, unknown>);
12
+ }
13
+ declare class ScoreValidationError extends TuttiError {
14
+ constructor(message: string, context?: {
15
+ field?: string;
16
+ value?: unknown;
17
+ });
18
+ }
19
+ declare class AgentNotFoundError extends TuttiError {
20
+ constructor(agentId: string, available: string[]);
21
+ }
22
+ declare class PermissionError extends TuttiError {
23
+ constructor(voice: string, required: string[], granted: string[]);
24
+ }
25
+ declare class BudgetExceededError extends TuttiError {
26
+ constructor(tokens: number, costUsd: number, limit: string);
27
+ }
28
+ declare class ToolTimeoutError extends TuttiError {
29
+ constructor(tool: string, timeoutMs: number);
30
+ }
31
+ declare class ProviderError extends TuttiError {
32
+ constructor(message: string, context?: {
33
+ provider: string;
34
+ status?: number;
35
+ } & Record<string, unknown>);
36
+ }
37
+ declare class AuthenticationError extends ProviderError {
38
+ constructor(provider: string);
39
+ }
40
+ declare class RateLimitError extends ProviderError {
41
+ readonly retryAfter?: number;
42
+ constructor(provider: string, retryAfter?: number);
43
+ }
44
+ declare class ContextWindowError extends ProviderError {
45
+ readonly maxTokens?: number;
46
+ constructor(provider: string, maxTokens?: number);
47
+ }
48
+ declare class VoiceError extends TuttiError {
49
+ constructor(message: string, context: {
50
+ voice: string;
51
+ tool?: string;
52
+ } & Record<string, unknown>);
53
+ }
54
+ declare class PathTraversalError extends VoiceError {
55
+ constructor(path: string);
56
+ }
57
+ declare class UrlValidationError extends VoiceError {
58
+ constructor(url: string);
59
+ }
60
+
61
+ /**
62
+ * Built-in hook factories for common patterns.
63
+ */
64
+
65
+ /**
66
+ * Logs all LLM calls and tool executions via a pino logger.
67
+ */
68
+ declare function createLoggingHook(log: pino.Logger): TuttiHooks;
69
+ /**
70
+ * Caches tool results by tool name + input hash.
71
+ * The `store` is a simple Map or any get/set interface.
72
+ */
73
+ declare function createCacheHook(store: {
74
+ get(key: string): string | undefined;
75
+ set(key: string, value: string): void;
76
+ }): TuttiHooks;
77
+ /**
78
+ * Blocks specific tool names from being called.
79
+ */
80
+ declare function createBlocklistHook(blockedTools: string[]): TuttiHooks;
81
+ /**
82
+ * Blocks LLM calls once estimated cost exceeds the given USD limit.
83
+ * Tracks cost across the lifetime of the hook instance.
84
+ */
85
+ declare function createMaxCostHook(maxUsd: number): TuttiHooks;
4
86
 
5
87
  declare const createLogger: (name: string) => pino.Logger<never, boolean>;
6
88
  declare const logger: pino.Logger<never, boolean>;
@@ -74,6 +156,11 @@ declare class TuttiRuntime {
74
156
  * Optionally pass a session_id to continue a conversation.
75
157
  */
76
158
  run(agent_name: string, input: string, session_id?: string): Promise<AgentResult>;
159
+ /**
160
+ * Provide an answer to a pending human-in-the-loop request.
161
+ * Call this when a `hitl:requested` event fires to resume the agent.
162
+ */
163
+ answer(sessionId: string, answer: string): void;
77
164
  /** Retrieve an existing session. */
78
165
  getSession(id: string): Session | undefined;
79
166
  }
@@ -83,9 +170,16 @@ declare class AgentRunner {
83
170
  private events;
84
171
  private sessions;
85
172
  private semanticMemory?;
86
- constructor(provider: LLMProvider, events: EventBus, sessions: SessionStore, semanticMemory?: SemanticMemoryStore | undefined);
173
+ private globalHooks?;
174
+ private pendingHitl;
175
+ constructor(provider: LLMProvider, events: EventBus, sessions: SessionStore, semanticMemory?: SemanticMemoryStore | undefined, globalHooks?: TuttiHooks | undefined);
176
+ private safeHook;
177
+ /** Resolve a pending human-in-the-loop request for a session. */
178
+ answer(sessionId: string, answer: string): void;
87
179
  run(agent: AgentConfig, input: string, session_id?: string): Promise<AgentResult>;
88
180
  private executeWithTimeout;
181
+ private streamToResponse;
182
+ private createHitlTool;
89
183
  private executeTool;
90
184
  }
91
185
 
@@ -215,6 +309,7 @@ declare class AnthropicProvider implements LLMProvider {
215
309
  private client;
216
310
  constructor(options?: AnthropicProviderOptions);
217
311
  chat(request: ChatRequest): Promise<ChatResponse>;
312
+ stream(request: ChatRequest): AsyncGenerator<StreamChunk>;
218
313
  }
219
314
 
220
315
  interface OpenAIProviderOptions {
@@ -227,6 +322,7 @@ declare class OpenAIProvider implements LLMProvider {
227
322
  private client;
228
323
  constructor(options?: OpenAIProviderOptions);
229
324
  chat(request: ChatRequest): Promise<ChatResponse>;
325
+ stream(request: ChatRequest): AsyncGenerator<StreamChunk>;
230
326
  }
231
327
 
232
328
  interface GeminiProviderOptions {
@@ -237,6 +333,7 @@ declare class GeminiProvider implements LLMProvider {
237
333
  private client;
238
334
  constructor(options?: GeminiProviderOptions);
239
335
  chat(request: ChatRequest): Promise<ChatResponse>;
336
+ stream(request: ChatRequest): AsyncGenerator<StreamChunk>;
240
337
  }
241
338
 
242
- export { AgentRouter, AgentRunner, AnthropicProvider, type AnthropicProviderOptions, EventBus, GeminiProvider, type GeminiProviderOptions, InMemorySemanticStore, InMemorySessionStore, type MemoryEntry, OpenAIProvider, type OpenAIProviderOptions, PermissionGuard, PostgresSessionStore, PromptGuard, ScoreLoader, SecretsManager, type SemanticMemoryStore, TokenBudget, TuttiRuntime, TuttiTracer, createLogger, defineScore, initTelemetry, logger, shutdownTelemetry, validateScore };
339
+ export { AgentNotFoundError, AgentRouter, AgentRunner, AnthropicProvider, type AnthropicProviderOptions, AuthenticationError, BudgetExceededError, ContextWindowError, EventBus, GeminiProvider, type GeminiProviderOptions, InMemorySemanticStore, InMemorySessionStore, type MemoryEntry, OpenAIProvider, type OpenAIProviderOptions, PathTraversalError, PermissionError, PermissionGuard, PostgresSessionStore, PromptGuard, ProviderError, RateLimitError, ScoreLoader, ScoreValidationError, SecretsManager, type SemanticMemoryStore, TokenBudget, ToolTimeoutError, TuttiError, TuttiRuntime, TuttiTracer, UrlValidationError, VoiceError, createBlocklistHook, createCacheHook, createLogger, createLoggingHook, createMaxCostHook, defineScore, initTelemetry, logger, shutdownTelemetry, validateScore };