import { Effect, Stream } from 'effect'; import * as Schema from 'effect/Schema'; import type * as SchemaTypes from 'effect/Schema'; import type { StreamEvent } from '../stream/events'; import type { AgentConfig, AgentInvocationMetadata, AgentMessage, AgentResponse, AgentStreamOptions } from './agent'; import { type PromptSourceService as PromptSourceServiceApi } from './prompt-source'; import type { ProviderDefinition } from '../platform/provider'; import type { Tool as FredTool } from '../tool/tool'; import { MCPServerRegistry } from '../mcp'; import type { Tracer } from '../tracing'; import type { ToolGateServiceApi, ToolGateContext } from '../tool-gate/types'; import type { FrameworkConfig } from '../config/types'; import { type AgentStatusService } from '../observability/status'; type ObservabilityServiceApi = { logStructured: (options: { level: 'trace' | 'debug' | 'info' | 'warning' | 'error' | 'fatal'; message: string; metadata?: Record; }) => Effect.Effect; recordTokenUsage: (options: { provider: string; model: string; inputTokens: number; outputTokens: number; }) => Effect.Effect; recordModelCost: (options: { provider: string; model: string; inputTokens: number; outputTokens: number; }) => Effect.Effect; }; export interface MCPClientMetrics { totalConnections: number; activeConnections: number; failedConnections: number; closedConnections: number; connectionsByAgent: Record; lastConnectionTime?: Date; lastDisconnectionTime?: Date; } type AgentRuntimeOptions = AgentInvocationMetadata & { policyContext?: ToolGateContext & { conversationId?: string; }; }; /** Minimal tool registry interface for agent factory tool resolution */ export interface ToolRegistryLike { getMissingToolIds(ids: string[]): string[]; getTools(ids: string[]): FredTool[]; hasTool(id: string): boolean; registerTool(tool: FredTool): void; } type TemplateEngineLike = { resolveBody: (template: string, context: any, filePath: string) => Effect.Effect; }; export declare class AgentFactory { private toolRegistry; private handoffHandler?; private mcpClients; private tracer?; private observabilityService?; private agentStatusService?; private defaultSystemMessage?; private metrics; private shutdownHooksRegistered; private globalVariablesResolver?; private toolGateService?; private mcpServerRegistry?; private templateEngine?; private templateCustomNamespaces; private envAllowlist; private templateFredConfig; private promptSourceService; constructor(toolRegistry: ToolRegistryLike, tracer?: Tracer, promptSourceService?: PromptSourceServiceApi); setToolRegistry(toolRegistry: ToolRegistryLike): void; setGlobalVariablesResolver(resolver: () => Record): void; setTemplateEngine(engine?: TemplateEngineLike): void; setTemplateCustomNamespaces(namespaces: Record): void; setEnvAllowlist(envAllowlist: string[]): void; setTemplateFredConfig(config: Partial): void; setPromptSourceService(service: PromptSourceServiceApi): void; setDefaultSystemMessage(systemMessage?: string): void; setTracer(tracer?: Tracer): void; setObservabilityService(observabilityService?: ObservabilityServiceApi): void; setAgentStatusService(agentStatusService?: AgentStatusService): void; private logWarning; setToolGateService(toolGateService?: ToolGateServiceApi): void; setMCPServerRegistry(registry: MCPServerRegistry): void; setHandoffHandler(handler: { getAgent: (id: string) => any; getAvailableAgents: () => string[]; }): void; cleanupMCPClients(agentId: string): Promise; cleanupAllMCPClients(): Promise; getMCPMetrics(): MCPClientMetrics; registerShutdownHooks(): void; createAgent(config: AgentConfig, provider: ProviderDefinition): Effect.Effect<{ run: (input: SchemaTypes.Schema.Type, messages?: AgentMessage[], runtimeOptions?: AgentRuntimeOptions) => Effect.Effect>, Error>; processMessage: (message: string, messages?: AgentMessage[], runtimeOptions?: AgentRuntimeOptions) => Effect.Effect>, Error>; streamMessage?: (message: string, messages?: AgentMessage[], options?: AgentStreamOptions) => Stream.Stream; }, Error>; } export {}; //# sourceMappingURL=factory.d.ts.map