crewai-ts
Version:
TypeScript port of crewAI for agent-based workflows
90 lines • 2.76 kB
TypeScript
/**
* 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