| 64 | type TestSession = ProjectSummary['sessions'][number] |
| 65 | |
| 66 | function contextSession( |
| 67 | i: number, |
| 68 | overrides: Partial<TestSession>, |
| 69 | project = 'app', |
| 70 | ): TestSession { |
| 71 | return { |
| 72 | sessionId: `s${i + 1}`, |
| 73 | project, |
| 74 | firstTimestamp: `2026-05-${String(i + 1).padStart(2, '0')}T10:00:00Z`, |
| 75 | lastTimestamp: `2026-05-${String(i + 1).padStart(2, '0')}T10:30:00Z`, |
| 76 | totalCostUSD: 1, |
| 77 | totalInputTokens: 0, |
| 78 | totalOutputTokens: 0, |
| 79 | totalCacheReadTokens: 0, |
| 80 | totalCacheWriteTokens: 0, |
| 81 | apiCalls: 1, |
| 82 | turns: [], |
| 83 | modelBreakdown: {}, |
| 84 | toolBreakdown: {}, |
| 85 | mcpBreakdown: {}, |
| 86 | bashBreakdown: {}, |
| 87 | categoryBreakdown: {} as TestSession['categoryBreakdown'], |
| 88 | skillBreakdown: {}, |
| 89 | ...overrides, |
| 90 | } |
| 91 | } |
| 92 | |
| 93 | function projectWithContextSessions(sessions: TestSession[], project = 'app'): ProjectSummary { |
| 94 | return { |