UNPKG

crewai-ts

Version:

TypeScript port of crewAI for agent-based workflows

90 lines 2.76 kB
/** * StructuredTaskOutput * Implements type-safe structured output for tasks with optimized memory usage * Designed for: * - Zero-copy transformations where possible * - Minimal memory overhead for large outputs * - Efficient caching of formatted results * - Streaming support for incremental processing */ import { TaskOutput } from './Task.js'; /** * Base metadata interface for all task outputs * Optimized to use optional fields for minimal payload size */ export interface TaskOutputMetadata { taskId: string; agentId: string; executionTime: number; tokenUsage?: { prompt: number; completion: number; total: number; }; iterations?: number; cacheHit?: boolean; retries?: number; formatTime?: number; schemaValidation?: { success: boolean; errorMessage?: string; }; } /** * Enhanced TaskOutput with structured data support * Uses generics for type-safe access to formatted data */ export interface StructuredTaskOutput<T = any> extends TaskOutput { result: string; metadata: TaskOutputMetadata; formattedData?: T; isStreaming?: boolean; streamingComplete?: boolean; getFormatted<R = T>(): R | undefined; asJSON(): string; asPlainText(): string; } /** * Implementation of StructuredTaskOutput * Optimized for memory efficiency and minimal object creation */ export declare class StructuredTaskOutputImpl<T = any> implements StructuredTaskOutput<T> { result: string; metadata: TaskOutputMetadata; formattedData?: T; isStreaming?: boolean; streamingComplete?: boolean; private jsonCache?; constructor(output: TaskOutput, formattedData?: T, isStreaming?: boolean); /** * Get formatted data with type casting if needed * Zero runtime cost for same type, safe casting for different types */ getFormatted<R = T>(): R | undefined; /** * Convert output to JSON string * Uses caching for repeated calls */ asJSON(): string; /** * Get plain text representation * Returns the raw result without formatting */ asPlainText(): string; /** * Update streaming status * Used when receiving chunks in streaming mode */ updateStreamingStatus(complete: boolean, additionalResult?: string): void; /** * Create from a standard TaskOutput * Factory method for convenient creation */ static fromTaskOutput<T>(output: TaskOutput, formattedData?: T): StructuredTaskOutput<T>; /** * Create a streaming output container * For handling incremental results */ static createStreaming<T>(initialOutput: TaskOutput): StructuredTaskOutput<T>; } //# sourceMappingURL=StructuredTaskOutput.d.ts.map