/** * Core foundational types used across multiple domains * Dependencies: None (foundation layer) */ import type { CompletionUsage } from "openai/resources"; /** * Logger interface definition * Compatible with OpenAI package Logger interface */ export interface Logger { error: (...args: unknown[]) => void; warn: (...args: unknown[]) => void; info: (...args: unknown[]) => void; debug: (...args: unknown[]) => void; } /** * Usage statistics for AI operations * Extends OpenAI's Usage format with additional tracking fields */ export interface Usage { prompt_tokens: number; completion_tokens: number; total_tokens: number; model?: string; operation_type?: "agent" | "compact" | "goal_evaluation"; cache_read_input_tokens?: number; cache_creation_input_tokens?: number; cache_creation?: { ephemeral_5m_input_tokens: number; ephemeral_1h_input_tokens: number; }; } /** * Enhanced usage metrics including Claude cache information * Backward compatible with standard OpenAI CompletionUsage */ export interface ClaudeUsage extends CompletionUsage { prompt_tokens: number; completion_tokens: number; total_tokens: number; /** * Number of tokens read from existing cache * Indicates cost savings from cache hits */ cache_read_input_tokens?: number; /** * Number of tokens used to create new cache entries * Investment in future cache hits */ cache_creation_input_tokens?: number; /** * Detailed breakdown of cache creation by duration */ cache_creation?: { /** Tokens cached for 5 minute duration */ ephemeral_5m_input_tokens: number; /** Tokens cached for 1 hour duration */ ephemeral_1h_input_tokens: number; }; } /** * Represents a diff change for tool parameter-based diff display * Contains the old content and new content for comparison */ export interface Change { /** The original content (empty string for additions) */ oldContent: string; /** The new content (empty string for deletions) */ newContent: string; /** Optional starting line number in the original file */ startLineNumber?: number; } export declare class ConfigurationError extends Error { readonly field: string; readonly provided?: unknown | undefined; constructor(message: string, field: string, provided?: unknown | undefined); } export declare const CONFIG_ERRORS: { readonly MISSING_MODEL: "Agent configuration requires model. Provide via constructor or WAVE_MODEL environment variable."; readonly MISSING_FAST_MODEL: "Agent configuration requires fastModel. Provide via constructor or WAVE_FAST_MODEL environment variable."; readonly INVALID_WAVE_MAX_INPUT_TOKENS: "Token limit must be a positive integer."; readonly EMPTY_BASE_URL: "Base URL cannot be empty string."; };