/** Skill segmentation and ResultEntry projection for loaded traces. */ import type { ResultEntry, ToolCallInfo, TraceSourceMetadata, TurnInfo } from '../types/index.js'; import { type CcSession } from './trace-source.js'; import type { TraceSession, TraceSourceKind } from './trace-ir.js'; export interface SkillSegment { skillName: string; attribution?: { source: 'skill-tool' | 'command-name' | 'business-action' | 'read-skill-md' | 'skill-script' | 'general'; confidence: number; rawSkillRef?: string; pluginName?: string; commandName?: string; }; sessionId: string; traceSessionId?: string; traceId?: string; sourceTrace?: string; sourceKind?: TraceSourceKind; traceRole?: 'standalone' | 'main' | 'subagent'; traceLabel?: string; sourceMetadata?: TraceSourceMetadata; segmentIndex: number; startRecordIndex?: number; endRecordIndex?: number; startTimestamp: string; endTimestamp: string; /** False when timestamps are unavailable and the epoch value is only a deterministic placeholder. */ timestampObserved?: boolean; cwd?: string; turns: TurnInfo[]; toolCalls: ToolCallInfo[]; metrics: { durationMs: number; inputTokens: number; outputTokens: number; cacheReadTokens: number; cacheCreationTokens: number; /** True only after a valid source usage event was attributed to this segment. */ tokenUsageObserved: boolean; numTurns: number; numToolCalls: number; numToolFailures: number; numToolCancelled?: number; numToolUnknown: number; }; } export declare const UNOBSERVED_TRACE_TIMESTAMP = "1970-01-01T00:00:00.000Z"; export declare function skillSegmentTimestampObserved(segment: SkillSegment): boolean; /** * 扫描 Trace IR events, 按 skill 信号把 tool calls 切成多段。 * 一个 session 可能产生 1-N 个 SkillSegment。 */ export declare function segmentTraceBySkill(session: TraceSession): SkillSegment[]; /** @deprecated Compatibility entry point for Claude-shaped fixtures. */ export declare function segmentBySkill(session: TraceSession | CcSession): SkillSegment[]; /** * SkillSegment[] → ResultEntry[] (omk 内部分析路径的标准输入)。 * * 映射规则(详见 docs/skill-health-spec.md): * - 每 segment 一个 ResultEntry * - sample_id 锚定 traceId + skillName + startRecordIndex * - variant key = skill 名(复用 omk 的 variant 维度作为 skill 分组维度) */ export declare function segmentsToResultEntries(segments: SkillSegment[]): ResultEntry[];