<!doctype html>
<html lang="en">
<head>
<title>Code coverage report for All files</title>
<meta charset="utf-8" />
<link rel="stylesheet" href="prettify.css" />
<link rel="stylesheet" href="base.css" />
<link rel="shortcut icon" type="image/x-icon" href="favicon.png" />
<meta name="viewport" content="width=device-width, initial-scale=1" />
<style type='text/css'>
.coverage-summary .sorter {
background-image: url(sort-arrow-sprite.png);
}
</style>
</head>
<body>
<div class='wrapper'>
<div class='pad1'>
<h1>All files</h1>
<div class='clearfix'>
<div class='fl pad1y space-right2'>
<span class="strong">69.24% </span>
<span class="quiet">Statements</span>
<span class='fraction'>367/530</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">65.93% </span>
<span class="quiet">Branches</span>
<span class='fraction'>120/182</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">58.25% </span>
<span class="quiet">Functions</span>
<span class='fraction'>60/103</span>
</div>
<div class='fl pad1y space-right2'>
<span class="strong">70.8% </span>
<span class="quiet">Lines</span>
<span class='fraction'>354/500</span>
</div>
</div>
<p class="quiet">
Press <em>n</em> or <em>j</em> to go to the next uncovered block, <em>b</em>, <em>p</em> or <em>k</em> for the previous block.
</p>
<template id="filterTemplate">
<div class="quiet">
Filter:
<input type="search" id="fileSearch">
</div>
</template>
</div>
<div class='status-line medium'></div>
<div class="pad1">
<table class="coverage-summary">
<thead>
<tr>
<th data-col="file" data-fmt="html" data-html="true" class="file">File</th>
<th data-col="pic" data-type="number" data-fmt="html" data-html="true" class="pic"></th>
<th data-col="statements" data-type="number" data-fmt="pct" class="pct">Statements</th>
<th data-col="statements_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="branches" data-type="number" data-fmt="pct" class="pct">Branches</th>
<th data-col="branches_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="functions" data-type="number" data-fmt="pct" class="pct">Functions</th>
<th data-col="functions_raw" data-type="number" data-fmt="html" class="abs"></th>
<th data-col="lines" data-type="number" data-fmt="pct" class="pct">Lines</th>
<th data-col="lines_raw" data-type="number" data-fmt="html" class="abs"></th>
</tr>
</thead>
<tbody><tr>
<td class="file high" data-value="services"><a href="services/index.html">services</a></td>
<td data-value="100" class="pic high">
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="75" class="abs high">75/75</td>
<td data-value="93.1" class="pct high">93.1%</td>
<td data-value="29" class="abs high">27/29</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="13" class="abs high">13/13</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="75" class="abs high">75/75</td>
</tr>
<tr>
<td class="file medium" data-value="ui/chat/components"><a href="ui/chat/components/index.html">ui/chat/components</a></td>
<td data-value="51.83" class="pic medium">
<div class="chart"><div class="cover-fill" style="width: 51%"></div><div class="cover-empty" style="width: 49%"></div></div>
</td>
<td data-value="51.83" class="pct medium">51.83%</td>
<td data-value="218" class="abs medium">113/218</td>
<td data-value="32.14" class="pct low">32.14%</td>
<td data-value="56" class="abs low">18/56</td>
<td data-value="42" class="pct low">42%</td>
<td data-value="50" class="abs low">21/50</td>
<td data-value="53.62" class="pct medium">53.62%</td>
<td data-value="207" class="abs medium">111/207</td>
</tr>
<tr>
<td class="file medium" data-value="ui/chat/services"><a href="ui/chat/services/index.html">ui/chat/services</a></td>
<td data-value="70.85" class="pic medium">
<div class="chart"><div class="cover-fill" style="width: 70%"></div><div class="cover-empty" style="width: 30%"></div></div>
</td>
<td data-value="70.85" class="pct medium">70.85%</td>
<td data-value="199" class="abs medium">141/199</td>
<td data-value="72.5" class="pct medium">72.5%</td>
<td data-value="80" class="abs medium">58/80</td>
<td data-value="57.57" class="pct medium">57.57%</td>
<td data-value="33" class="abs medium">19/33</td>
<td data-value="72.82" class="pct medium">72.82%</td>
<td data-value="184" class="abs medium">134/184</td>
</tr>
<tr>
<td class="file high" data-value="ui/chat/utils"><a href="ui/chat/utils/index.html">ui/chat/utils</a></td>
<td data-value="100" class="pic high">
<div class="chart"><div class="cover-fill cover-full" style="width: 100%"></div><div class="cover-empty" style="width: 0%"></div></div>
</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="38" class="abs high">38/38</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="17" class="abs high">17/17</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="7" class="abs high">7/7</td>
<td data-value="100" class="pct high">100%</td>
<td data-value="34" class="abs high">34/34</td>
</tr>
</tbody>
</table>
</div>
<div class='push'></div><!-- for sticky footer -->
</div><!-- /wrapper -->
<div class='footer quiet pad2 space-top1 center small'>
Code coverage generated by
<a href="https://istanbul.js.org/" target="_blank" rel="noopener noreferrer">istanbul</a>
at 2026-02-05T23:55:39.354Z
</div>
<script src="prettify.js"></script>
<script>
window.onload = function () {
prettyPrint();
};
</script>
<script src="sorter.js"></script>
<script src="block-navigation.js"></script>
</body>
</html>