import type { ReaderExpectedUse } from './ReaderPolicy'; export type SourceUsageSurface = 'chat' | 'task' | 'run' | 'message' | 'tool-call' | 'upload' | 'ui-open'; export type SourceUsageConfidence = 'low' | 'medium' | 'high'; export type L0SourceSummaryMode = 'context-inferred' | 'lightweight-preview' | 'old-cache'; export type L0SourceEvidence = 'path' | 'mime' | 'message-context' | 'tool-history' | 'user-description' | 'neighbor-files' | 'old-cache' | 'local-preview'; export interface SourceUsageMention { surface: SourceUsageSurface; resource: string; title?: string; excerpt?: string; mentionedAs?: string; actor?: string; timestamp: string; confidence: SourceUsageConfidence; } export interface SourceRecentAction { action: 'uploaded' | 'opened' | 'edited' | 'moved' | 'renamed' | 'attached' | 'referenced' | 'generated'; resource: string; timestamp: string; actor?: string; } export interface RelatedSource { source: string; relation: 'same-folder' | 'linked-from-message' | 'generated-from' | 'attached-together' | 'referenced-by-same-run'; } export interface SourceUsageRecord { surface: SourceUsageSurface; resource: string; text?: string; title?: string; actor?: string; timestamp: string; action?: SourceRecentAction['action']; attachment?: { name?: string; url?: string; id?: string; }; } export interface BuildSourceUsageContextInput { source: string; records: SourceUsageRecord[]; maxExcerptLength?: number; } export interface SourceUsageContext { source: string; mentions: SourceUsageMention[]; recentActions: SourceRecentAction[]; relatedSources?: RelatedSource[]; } export type L0GenerationAction = 'create-l0' | 'reader-required' | 'skip'; export interface L0SourceSummaryPlan { action: L0GenerationAction; mode?: L0SourceSummaryMode; evidence: L0SourceEvidence[]; confidence: SourceUsageConfidence; previewSuggestion?: { pages?: string; bytes?: number; lines?: string; }; reason: string; } export interface L0SourceSummaryInput { source: string; sourceUsageContext: SourceUsageContext; requestedEvidence?: ReaderExpectedUse; oldCacheFresh?: boolean; lightweightPreviewAvailable?: boolean; pathHint?: string; } export interface L0SourceSummary { source: string; summary?: string; mode: L0SourceSummaryMode; confidence: SourceUsageConfidence; evidence: L0SourceEvidence[]; previewRange?: { pages?: string; bytes?: number; lines?: string; }; readerConfirmed: false; sourceUsageContext?: SourceUsageContext; } export interface CreateL0SourceSummaryInput { source: string; summary?: string; mode: L0SourceSummaryMode; confidence: SourceUsageConfidence; evidence: L0SourceEvidence[]; previewRange?: { pages?: string; bytes?: number; lines?: string; }; sourceUsageContext?: SourceUsageContext; maxExcerptLength?: number; } export declare function chooseL0SourceSummaryPlan(input: L0SourceSummaryInput): L0SourceSummaryPlan; export declare function createL0SourceSummary(input: CreateL0SourceSummaryInput): L0SourceSummary; export declare function boundSourceUsageContext(context: SourceUsageContext, maxExcerptLength?: number): SourceUsageContext; export declare function buildSourceUsageContext(input: BuildSourceUsageContextInput): SourceUsageContext;