/** * [WHO]: insights extension default export (/insights command) * [FROM]: Depends on node:path, node:fs/promises, core/extensions-host/types, core/session/session-manager, ./types, ./stats, ./insights-engine, ./html-report, ./prompts, ./session-scanner * [TO]: Auto-loaded by builtin-extensions.ts as a default extension * [HERE]: extensions/builtin/insights/index.ts - /insights command entry; usage-report pipeline * * /insights command — generate a usage report analyzing Catui sessions. * * 1:1 port of Claude Code src/commands/insights.ts generateUsageReport() pipeline. * * Pipeline: * 1. scanAllSessions() — filesystem metadata only (no JSONL parsing) * 2. Load SessionMeta — cache-first, parse uncached * 3. Deduplicate session branches * 4. Filter substantive sessions (≥2 user messages, ≥1 minute) * 5. Facet extraction — cache-first, LLM for uncached (max 50) * 6. Filter minimal sessions (warmup_minimal only) * 7. aggregateData() — cross-session statistics * 8. generateParallelInsights() — 7+ parallel LLM calls * 9. generateHtmlReport() — HTML report with charts * 10. Save report + terminal summary */ import type { ExtensionAPI } from "../../../core/extensions-host/types.js"; export type InsightsProgressCallback = (phase: string, detail?: string) => void; export default function insightsExtension(api: ExtensionAPI): Promise;