import type { NonNullableUsage } from './common.js'; export type SkillEvolutionMode = 'native' | 'custom'; export type SkillEvolutionGateInput = { sessionId: string; requestId?: string; requestSetId?: string; turnIndex: number; cwd: string; prompt: string; response: string; }; export type SkillEvolutionGateResult = { run: boolean; reason?: string; }; export type SerializableSkillEvolutionGenerationOptions = { enabled?: boolean; prompt?: string; maxSuggestions?: number; turnComplete?: { enabled?: boolean; reviewThreshold?: number; shouldReviewCallbackId?: string; timeoutMs?: number; onGateError?: 'skip' | 'report_failed'; }; }; export type SerializableSkillEvolutionConfig = { requester: 'sdk'; mode: SkillEvolutionMode; generation?: SerializableSkillEvolutionGenerationOptions; }; export type SerializableEvolutionConfig = { skill?: SerializableSkillEvolutionConfig; }; export type EffectiveSkillEvolutionConfig = { enabled: boolean; requester: 'sdk'; mode: SkillEvolutionMode; generationEnabled: boolean; turnCompleteEnabled: boolean; reviewThreshold: number; cooldownMs: number; maxSuggestions: number; }; export type EffectiveEvolutionConfig = { skill?: EffectiveSkillEvolutionConfig; }; export type SkillEvolutionSuggestion = { skillName: string; action: 'create' | 'update'; summary: string; confidence: number; rationale?: string; }; export type SkillEvolutionResult = { status: 'suggested' | 'no_change' | 'skipped' | 'failed'; attemptId: string; reason?: string; origin: 'turn_complete'; reviewScore?: number; sourceRequestIds?: string[]; modelRequestIds?: string[]; suggestions: SkillEvolutionSuggestion[]; durationMs: number; usage?: NonNullableUsage; };