@earendil-works/pi-coding-agent
Version:
Coding agent CLI with read, bash, edit, write tools and session management
49 lines • 2.24 kB
TypeScript
import type { AssistantMessage } from "@earendil-works/pi-ai";
import type { SessionEntry } from "./session-manager.ts";
/**
* Prompt-cache TTL: idle gaps longer than this are worth mentioning as the
* likely cause of a miss. Anthropic's default cache TTL is 5 minutes.
*/
export declare const CACHE_TTL_MS: number;
/** A counted cache miss on a single assistant message. */
export interface CacheMiss {
/** Prompt tokens that were in the previous turn's prompt but not read from cache. */
missedTokens: number;
/** Extra dollars paid vs. a full cache hit; 0 when pricing is unknown. */
missedCost: number;
/** Milliseconds since the previous request (which last refreshed the cache). */
idleMs: number;
/** True when the model changed relative to the previous request. */
modelChanged: boolean;
}
export interface CacheWasteTotals {
missedTokens: number;
missedCost: number;
/** Number of counted misses (turns above the noise floor). */
missCount: number;
}
/** Minimal pricing lookup, satisfied by ModelRuntime. Cost is $/million tokens. */
export interface ModelPriceSource {
getModel(provider: string, modelId: string): {
cost: {
cacheRead: number;
};
} | undefined;
}
/**
* Cumulative cache waste across a session: prompt tokens that should have been
* cache reads (they were in the previous turn's prompt) but were re-billed.
*/
export declare function computeCacheWaste(entries: SessionEntry[], models: ModelPriceSource): CacheWasteTotals;
/**
* All counted cache misses across a session, keyed by the assistant message
* (by reference) that paid for them. Used to re-derive transcript notices when
* rebuilding the chat from entries (resume, post-compaction rebuild).
*/
export declare function collectCacheMisses(entries: SessionEntry[], models: ModelPriceSource): Map<AssistantMessage, CacheMiss>;
/**
* Detect a cache miss on a just-completed assistant message.
* `entries` must not yet contain `message` (message_end fires before persistence).
*/
export declare function detectCacheMiss(entries: SessionEntry[], message: AssistantMessage, models: ModelPriceSource): CacheMiss | undefined;
//# sourceMappingURL=cache-stats.d.ts.map