kimi-code-usage 0.1.2__tar.gz → 0.1.3__tar.gz

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (109) hide show
  1. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/PKG-INFO +1 -1
  2. kimi_code_usage-0.1.3/htmlcov/.gitignore +2 -0
  3. kimi_code_usage-0.1.3/htmlcov/class_index.html +281 -0
  4. kimi_code_usage-0.1.3/htmlcov/coverage_html_cb_dd2e7eb5.js +735 -0
  5. kimi_code_usage-0.1.3/htmlcov/favicon_32_cb_c827f16f.png +0 -0
  6. kimi_code_usage-0.1.3/htmlcov/function_index.html +771 -0
  7. kimi_code_usage-0.1.3/htmlcov/index.html +189 -0
  8. kimi_code_usage-0.1.3/htmlcov/keybd_closed_cb_900cfef5.png +0 -0
  9. kimi_code_usage-0.1.3/htmlcov/status.json +1 -0
  10. kimi_code_usage-0.1.3/htmlcov/style_cb_4667309f.css +391 -0
  11. kimi_code_usage-0.1.3/htmlcov/z_581a990e2fe7e610___init___py.html +97 -0
  12. kimi_code_usage-0.1.3/htmlcov/z_581a990e2fe7e610_config_py.html +299 -0
  13. kimi_code_usage-0.1.3/htmlcov/z_581a990e2fe7e610_main_py.html +1202 -0
  14. kimi_code_usage-0.1.3/htmlcov/z_581a990e2fe7e610_mcp_py.html +272 -0
  15. kimi_code_usage-0.1.3/htmlcov/z_aaf3485d2243f1af___init___py.html +203 -0
  16. kimi_code_usage-0.1.3/htmlcov/z_aaf3485d2243f1af_anthropic_py.html +166 -0
  17. kimi_code_usage-0.1.3/htmlcov/z_aaf3485d2243f1af_kimi_py.html +252 -0
  18. kimi_code_usage-0.1.3/htmlcov/z_aaf3485d2243f1af_openai_py.html +171 -0
  19. kimi_code_usage-0.1.3/htmlcov/z_aaf3485d2243f1af_openrouter_py.html +462 -0
  20. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/pyproject.toml +1 -1
  21. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/src/kimi_code_usage/config.py +36 -1
  22. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/src/kimi_code_usage/main.py +440 -35
  23. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/src/kimi_code_usage/mcp.py +71 -2
  24. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/src/kimi_code_usage/providers/__init__.py +35 -2
  25. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/src/kimi_code_usage/providers/anthropic.py +2 -2
  26. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/src/kimi_code_usage/providers/kimi.py +1 -1
  27. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/src/kimi_code_usage/providers/openai.py +2 -2
  28. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/src/kimi_code_usage/providers/openrouter.py +177 -71
  29. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/tests/test_config.py +70 -1
  30. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/tests/test_main.py +297 -253
  31. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/tests/test_mcp.py +98 -1
  32. kimi_code_usage-0.1.3/tests/test_provider_openrouter.py +645 -0
  33. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/tests/test_providers_init.py +2 -2
  34. kimi_code_usage-0.1.2/tests/test_provider_openrouter.py +0 -442
  35. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/.claude/settings.local.json +0 -0
  36. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/.env.example +0 -0
  37. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/.gitignore +0 -0
  38. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/README.md +0 -0
  39. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/README.zh.md +0 -0
  40. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/docs/kimi-code-usage.md +0 -0
  41. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/docs/superpowers/plans/2026-05-09-pace-indicator.md +0 -0
  42. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/docs/superpowers/plans/2026-05-14-pace-theme-thresholds.md +0 -0
  43. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/docs/superpowers/plans/2026-06-10-multi-llm-quota.md +0 -0
  44. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/docs/superpowers/plans/2026-06-10-vscode-extension-ts-strictness.md +0 -0
  45. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/docs/superpowers/specs/2026-05-09-pace-indicator-design.md +0 -0
  46. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/docs/superpowers/specs/2026-05-14-pace-theme-thresholds-design.md +0 -0
  47. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/docs/superpowers/specs/2026-06-10-multi-llm-quota-design.md +0 -0
  48. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/docs/superpowers/specs/2026-06-10-vscode-extension-multi-provider-design.md +0 -0
  49. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/docs/superpowers/specs/2026-06-10-vscode-extension-ts-refactor-design.md +0 -0
  50. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/kimi_usage.code-workspace +0 -0
  51. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/requirements.txt +0 -0
  52. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/src/kimi_code_usage/__init__.py +0 -0
  53. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/tests/__init__.py +0 -0
  54. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/tests/conftest.py +0 -0
  55. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/tests/test_provider_anthropic.py +0 -0
  56. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/tests/test_provider_kimi.py +0 -0
  57. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/tests/test_provider_openai.py +0 -0
  58. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/uv.lock +0 -0
  59. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/vscode-extension/.claude/settings.local.json +0 -0
  60. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/vscode-extension/.github/workflows/ci.yml +0 -0
  61. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/vscode-extension/.prettierignore +0 -0
  62. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/vscode-extension/.prettierrc.json +0 -0
  63. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/vscode-extension/.vscodeignore +0 -0
  64. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/vscode-extension/LICENSE +0 -0
  65. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/vscode-extension/README.md +0 -0
  66. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/vscode-extension/assets/icon.png +0 -0
  67. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/vscode-extension/assets/moon.svg +0 -0
  68. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/vscode-extension/eslint.config.mjs +0 -0
  69. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/vscode-extension/l10n/bundle.l10n.de.json +0 -0
  70. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/vscode-extension/l10n/bundle.l10n.en.json +0 -0
  71. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/vscode-extension/l10n/bundle.l10n.es.json +0 -0
  72. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/vscode-extension/l10n/bundle.l10n.fr.json +0 -0
  73. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/vscode-extension/l10n/bundle.l10n.it.json +0 -0
  74. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/vscode-extension/l10n/bundle.l10n.ja.json +0 -0
  75. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/vscode-extension/l10n/bundle.l10n.ko.json +0 -0
  76. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/vscode-extension/l10n/bundle.l10n.pt.json +0 -0
  77. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/vscode-extension/l10n/bundle.l10n.ru.json +0 -0
  78. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/vscode-extension/l10n/bundle.l10n.zh-cn.json +0 -0
  79. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/vscode-extension/package.json +0 -0
  80. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/vscode-extension/scripts/copy-assets.ts +0 -0
  81. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/vscode-extension/src/__mocks__/vscode.ts +0 -0
  82. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/vscode-extension/src/api.test.ts +0 -0
  83. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/vscode-extension/src/api.ts +0 -0
  84. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/vscode-extension/src/apiCache.test.ts +0 -0
  85. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/vscode-extension/src/apiCache.ts +0 -0
  86. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/vscode-extension/src/config.test.ts +0 -0
  87. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/vscode-extension/src/config.ts +0 -0
  88. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/vscode-extension/src/extension.test.ts +0 -0
  89. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/vscode-extension/src/extension.ts +0 -0
  90. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/vscode-extension/src/historyPanel.test.ts +0 -0
  91. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/vscode-extension/src/historyPanel.ts +0 -0
  92. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/vscode-extension/src/i18n.test.ts +0 -0
  93. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/vscode-extension/src/i18n.ts +0 -0
  94. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/vscode-extension/src/notifier.test.ts +0 -0
  95. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/vscode-extension/src/notifier.ts +0 -0
  96. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/vscode-extension/src/pace.test.ts +0 -0
  97. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/vscode-extension/src/pace.ts +0 -0
  98. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/vscode-extension/src/predict.test.ts +0 -0
  99. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/vscode-extension/src/predict.ts +0 -0
  100. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/vscode-extension/src/statusBar.test.ts +0 -0
  101. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/vscode-extension/src/statusBar.ts +0 -0
  102. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/vscode-extension/src/storage-unlink.test.ts +0 -0
  103. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/vscode-extension/src/storage.test.ts +0 -0
  104. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/vscode-extension/src/storage.ts +0 -0
  105. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/vscode-extension/src/types.ts +0 -0
  106. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/vscode-extension/src/vscode-mock.test.ts +0 -0
  107. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/vscode-extension/tsconfig.eslint.json +0 -0
  108. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/vscode-extension/tsconfig.json +0 -0
  109. {kimi_code_usage-0.1.2 → kimi_code_usage-0.1.3}/vscode-extension/vitest.config.ts +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: kimi-code-usage
3
- Version: 0.1.2
3
+ Version: 0.1.3
4
4
  Summary: A curated Kimi Coding Plan usage monitor with aesthetic CLI and MCP server.
5
5
  Project-URL: Homepage, https://github.com/Golden0Voyager/kimi-code-usage
6
6
  Project-URL: Repository, https://github.com/Golden0Voyager/kimi-code-usage
@@ -0,0 +1,2 @@
1
+ # Created by coverage.py
2
+ *
@@ -0,0 +1,281 @@
1
+ <!DOCTYPE html>
2
+ <html lang="en">
3
+ <head>
4
+ <meta http-equiv="Content-Type" content="text/html; charset=utf-8">
5
+ <title>Coverage report</title>
6
+ <link rel="icon" sizes="32x32" href="favicon_32_cb_c827f16f.png">
7
+ <link rel="stylesheet" href="style_cb_4667309f.css" type="text/css">
8
+ <script src="coverage_html_cb_dd2e7eb5.js" defer></script>
9
+ </head>
10
+ <body class="indexfile">
11
+ <header>
12
+ <div class="content">
13
+ <h1>Coverage report:
14
+ <span class="pc_cov">95%</span>
15
+ </h1>
16
+ <aside id="help_panel_wrapper">
17
+ <input id="help_panel_state" type="checkbox">
18
+ <label for="help_panel_state">
19
+ <img id="keyboard_icon" src="keybd_closed_cb_900cfef5.png" alt="Show/hide keyboard shortcuts">
20
+ </label>
21
+ <div id="help_panel">
22
+ <p class="legend">Shortcuts on this page</p>
23
+ <div class="keyhelp">
24
+ <p>
25
+ <kbd>f</kbd>
26
+ <kbd>n</kbd>
27
+ <kbd>s</kbd>
28
+ <kbd>m</kbd>
29
+ <kbd>x</kbd>
30
+ <kbd>c</kbd>
31
+ &nbsp; change column sorting
32
+ </p>
33
+ <p>
34
+ <kbd>[</kbd>
35
+ <kbd>]</kbd>
36
+ &nbsp; prev/next file
37
+ </p>
38
+ <p>
39
+ <kbd>?</kbd> &nbsp; show/hide this help
40
+ </p>
41
+ </div>
42
+ </div>
43
+ </aside>
44
+ <form id="filter_container">
45
+ <input id="filter" type="text" value="" placeholder="filter...">
46
+ <div>
47
+ <input id="hide100" type="checkbox" >
48
+ <label for="hide100">hide covered</label>
49
+ </div>
50
+ </form>
51
+ <h2>
52
+ <a class="button" href="index.html">Files</a>
53
+ <a class="button" href="function_index.html">Functions</a>
54
+ <a class="button current">Classes</a>
55
+ </h2>
56
+ <p class="text">
57
+ <a class="nav" href="https://coverage.readthedocs.io/en/7.14.1">coverage.py v7.14.1</a>,
58
+ created at 2026-06-14 14:57 +0800
59
+ </p>
60
+ </div>
61
+ </header>
62
+ <main id="index">
63
+ <table class="index" data-sortable>
64
+ <thead>
65
+ <tr class="tablehead" title="Click to sort">
66
+ <th id="file" class="name" aria-sort="none" data-shortcut="f">File<span class="arrows"></span></th>
67
+ <th id="region" class="name" aria-sort="none" data-default-sort-order="ascending" data-shortcut="n">class<span class="arrows"></span></th>
68
+ <th class="spacer">&nbsp;</th>
69
+ <th id="statements" aria-sort="none" data-default-sort-order="descending" data-shortcut="s">statements<span class="arrows"></span></th>
70
+ <th id="missing" aria-sort="none" data-default-sort-order="descending" data-shortcut="m">missing<span class="arrows"></span></th>
71
+ <th id="excluded" aria-sort="none" data-default-sort-order="descending" data-shortcut="x">excluded<span class="arrows"></span></th>
72
+ <th class="spacer">&nbsp;</th>
73
+ <th id="coverage" aria-sort="none" data-shortcut="c">coverage<span class="arrows"></span></th>
74
+ </tr>
75
+ </thead>
76
+ <tbody>
77
+ <tr class="region">
78
+ <td class="name"><a href="z_581a990e2fe7e610___init___py.html">src<span class="sep">/</span>kimi_code_usage<span class="sep">/</span>__init__.py</a></td>
79
+ <td class="name"><a href="z_581a990e2fe7e610___init___py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
80
+ <td class="spacer">&nbsp;</td>
81
+ <td>0</td>
82
+ <td>0</td>
83
+ <td>0</td>
84
+ <td class="spacer">&nbsp;</td>
85
+ <td data-ratio="0 0">100%</td>
86
+ </tr>
87
+ <tr class="region">
88
+ <td class="name"><a href="z_581a990e2fe7e610_config_py.html#t10">src<span class="sep">/</span>kimi_code_usage<span class="sep">/</span>config.py</a></td>
89
+ <td class="name"><a href="z_581a990e2fe7e610_config_py.html#t10"><data value='ProviderConfig'>ProviderConfig</data></a></td>
90
+ <td class="spacer">&nbsp;</td>
91
+ <td>0</td>
92
+ <td>0</td>
93
+ <td>0</td>
94
+ <td class="spacer">&nbsp;</td>
95
+ <td data-ratio="0 0">100%</td>
96
+ </tr>
97
+ <tr class="region">
98
+ <td class="name"><a href="z_581a990e2fe7e610_config_py.html#t17">src<span class="sep">/</span>kimi_code_usage<span class="sep">/</span>config.py</a></td>
99
+ <td class="name"><a href="z_581a990e2fe7e610_config_py.html#t17"><data value='AppConfig'>AppConfig</data></a></td>
100
+ <td class="spacer">&nbsp;</td>
101
+ <td>1</td>
102
+ <td>0</td>
103
+ <td>0</td>
104
+ <td class="spacer">&nbsp;</td>
105
+ <td data-ratio="1 1">100%</td>
106
+ </tr>
107
+ <tr class="region">
108
+ <td class="name"><a href="z_581a990e2fe7e610_config_py.html#t32">src<span class="sep">/</span>kimi_code_usage<span class="sep">/</span>config.py</a></td>
109
+ <td class="name"><a href="z_581a990e2fe7e610_config_py.html#t32"><data value='ConfigResolver'>ConfigResolver</data></a></td>
110
+ <td class="spacer">&nbsp;</td>
111
+ <td>70</td>
112
+ <td>3</td>
113
+ <td>0</td>
114
+ <td class="spacer">&nbsp;</td>
115
+ <td data-ratio="67 70">96%</td>
116
+ </tr>
117
+ <tr class="region">
118
+ <td class="name"><a href="z_581a990e2fe7e610_config_py.html">src<span class="sep">/</span>kimi_code_usage<span class="sep">/</span>config.py</a></td>
119
+ <td class="name"><a href="z_581a990e2fe7e610_config_py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
120
+ <td class="spacer">&nbsp;</td>
121
+ <td>51</td>
122
+ <td>1</td>
123
+ <td>0</td>
124
+ <td class="spacer">&nbsp;</td>
125
+ <td data-ratio="50 51">98%</td>
126
+ </tr>
127
+ <tr class="region">
128
+ <td class="name"><a href="z_581a990e2fe7e610_main_py.html">src<span class="sep">/</span>kimi_code_usage<span class="sep">/</span>main.py</a></td>
129
+ <td class="name"><a href="z_581a990e2fe7e610_main_py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
130
+ <td class="spacer">&nbsp;</td>
131
+ <td>658</td>
132
+ <td>36</td>
133
+ <td>14</td>
134
+ <td class="spacer">&nbsp;</td>
135
+ <td data-ratio="622 658">95%</td>
136
+ </tr>
137
+ <tr class="region">
138
+ <td class="name"><a href="z_581a990e2fe7e610_mcp_py.html">src<span class="sep">/</span>kimi_code_usage<span class="sep">/</span>mcp.py</a></td>
139
+ <td class="name"><a href="z_581a990e2fe7e610_mcp_py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
140
+ <td class="spacer">&nbsp;</td>
141
+ <td>122</td>
142
+ <td>17</td>
143
+ <td>0</td>
144
+ <td class="spacer">&nbsp;</td>
145
+ <td data-ratio="105 122">86%</td>
146
+ </tr>
147
+ <tr class="region">
148
+ <td class="name"><a href="z_aaf3485d2243f1af___init___py.html#t8">src<span class="sep">/</span>kimi_code_usage<span class="sep">/</span>providers<span class="sep">/</span>__init__.py</a></td>
149
+ <td class="name"><a href="z_aaf3485d2243f1af___init___py.html#t8"><data value='ModelUsage'>ModelUsage</data></a></td>
150
+ <td class="spacer">&nbsp;</td>
151
+ <td>0</td>
152
+ <td>0</td>
153
+ <td>0</td>
154
+ <td class="spacer">&nbsp;</td>
155
+ <td data-ratio="0 0">100%</td>
156
+ </tr>
157
+ <tr class="region">
158
+ <td class="name"><a href="z_aaf3485d2243f1af___init___py.html#t18">src<span class="sep">/</span>kimi_code_usage<span class="sep">/</span>providers<span class="sep">/</span>__init__.py</a></td>
159
+ <td class="name"><a href="z_aaf3485d2243f1af___init___py.html#t18"><data value='DailyUsage'>DailyUsage</data></a></td>
160
+ <td class="spacer">&nbsp;</td>
161
+ <td>0</td>
162
+ <td>0</td>
163
+ <td>0</td>
164
+ <td class="spacer">&nbsp;</td>
165
+ <td data-ratio="0 0">100%</td>
166
+ </tr>
167
+ <tr class="region">
168
+ <td class="name"><a href="z_aaf3485d2243f1af___init___py.html#t25">src<span class="sep">/</span>kimi_code_usage<span class="sep">/</span>providers<span class="sep">/</span>__init__.py</a></td>
169
+ <td class="name"><a href="z_aaf3485d2243f1af___init___py.html#t25"><data value='ActivityTotals'>ActivityTotals</data></a></td>
170
+ <td class="spacer">&nbsp;</td>
171
+ <td>0</td>
172
+ <td>0</td>
173
+ <td>0</td>
174
+ <td class="spacer">&nbsp;</td>
175
+ <td data-ratio="0 0">100%</td>
176
+ </tr>
177
+ <tr class="region">
178
+ <td class="name"><a href="z_aaf3485d2243f1af___init___py.html#t34">src<span class="sep">/</span>kimi_code_usage<span class="sep">/</span>providers<span class="sep">/</span>__init__.py</a></td>
179
+ <td class="name"><a href="z_aaf3485d2243f1af___init___py.html#t34"><data value='ProviderUsage'>ProviderUsage</data></a></td>
180
+ <td class="spacer">&nbsp;</td>
181
+ <td>0</td>
182
+ <td>0</td>
183
+ <td>0</td>
184
+ <td class="spacer">&nbsp;</td>
185
+ <td data-ratio="0 0">100%</td>
186
+ </tr>
187
+ <tr class="region">
188
+ <td class="name"><a href="z_aaf3485d2243f1af___init___py.html">src<span class="sep">/</span>kimi_code_usage<span class="sep">/</span>providers<span class="sep">/</span>__init__.py</a></td>
189
+ <td class="name"><a href="z_aaf3485d2243f1af___init___py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
190
+ <td class="spacer">&nbsp;</td>
191
+ <td>72</td>
192
+ <td>0</td>
193
+ <td>0</td>
194
+ <td class="spacer">&nbsp;</td>
195
+ <td data-ratio="72 72">100%</td>
196
+ </tr>
197
+ <tr class="region">
198
+ <td class="name"><a href="z_aaf3485d2243f1af_anthropic_py.html">src<span class="sep">/</span>kimi_code_usage<span class="sep">/</span>providers<span class="sep">/</span>anthropic.py</a></td>
199
+ <td class="name"><a href="z_aaf3485d2243f1af_anthropic_py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
200
+ <td class="spacer">&nbsp;</td>
201
+ <td>21</td>
202
+ <td>0</td>
203
+ <td>0</td>
204
+ <td class="spacer">&nbsp;</td>
205
+ <td data-ratio="21 21">100%</td>
206
+ </tr>
207
+ <tr class="region">
208
+ <td class="name"><a href="z_aaf3485d2243f1af_kimi_py.html#t63">src<span class="sep">/</span>kimi_code_usage<span class="sep">/</span>providers<span class="sep">/</span>kimi.py</a></td>
209
+ <td class="name"><a href="z_aaf3485d2243f1af_kimi_py.html#t63"><data value='KimiRow'>KimiRow</data></a></td>
210
+ <td class="spacer">&nbsp;</td>
211
+ <td>5</td>
212
+ <td>0</td>
213
+ <td>0</td>
214
+ <td class="spacer">&nbsp;</td>
215
+ <td data-ratio="5 5">100%</td>
216
+ </tr>
217
+ <tr class="region">
218
+ <td class="name"><a href="z_aaf3485d2243f1af_kimi_py.html">src<span class="sep">/</span>kimi_code_usage<span class="sep">/</span>providers<span class="sep">/</span>kimi.py</a></td>
219
+ <td class="name"><a href="z_aaf3485d2243f1af_kimi_py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
220
+ <td class="spacer">&nbsp;</td>
221
+ <td>117</td>
222
+ <td>0</td>
223
+ <td>0</td>
224
+ <td class="spacer">&nbsp;</td>
225
+ <td data-ratio="117 117">100%</td>
226
+ </tr>
227
+ <tr class="region">
228
+ <td class="name"><a href="z_aaf3485d2243f1af_openai_py.html">src<span class="sep">/</span>kimi_code_usage<span class="sep">/</span>providers<span class="sep">/</span>openai.py</a></td>
229
+ <td class="name"><a href="z_aaf3485d2243f1af_openai_py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
230
+ <td class="spacer">&nbsp;</td>
231
+ <td>43</td>
232
+ <td>0</td>
233
+ <td>0</td>
234
+ <td class="spacer">&nbsp;</td>
235
+ <td data-ratio="43 43">100%</td>
236
+ </tr>
237
+ <tr class="region">
238
+ <td class="name"><a href="z_aaf3485d2243f1af_openrouter_py.html">src<span class="sep">/</span>kimi_code_usage<span class="sep">/</span>providers<span class="sep">/</span>openrouter.py</a></td>
239
+ <td class="name"><a href="z_aaf3485d2243f1af_openrouter_py.html"><data value=''><span class='no-noun'>(no class)</span></data></a></td>
240
+ <td class="spacer">&nbsp;</td>
241
+ <td>172</td>
242
+ <td>8</td>
243
+ <td>0</td>
244
+ <td class="spacer">&nbsp;</td>
245
+ <td data-ratio="164 172">95%</td>
246
+ </tr>
247
+ </tbody>
248
+ <tfoot>
249
+ <tr class="total">
250
+ <td class="name">Total</td>
251
+ <td class="name">&nbsp;</td>
252
+ <td class="spacer">&nbsp;</td>
253
+ <td>1332</td>
254
+ <td>65</td>
255
+ <td>14</td>
256
+ <td class="spacer">&nbsp;</td>
257
+ <td data-ratio="1267 1332">95%</td>
258
+ </tr>
259
+ </tfoot>
260
+ </table>
261
+ <p id="no_rows">
262
+ No items found using the specified filter.
263
+ </p>
264
+ </main>
265
+ <footer>
266
+ <div class="content">
267
+ <p>
268
+ <a class="nav" href="https://coverage.readthedocs.io/en/7.14.1">coverage.py v7.14.1</a>,
269
+ created at 2026-06-14 14:57 +0800
270
+ </p>
271
+ </div>
272
+ <aside class="hidden">
273
+ <a id="prevFileLink" class="nav" href=""></a>
274
+ <a id="nextFileLink" class="nav" href=""></a>
275
+ <button type="button" class="button_prev_file" data-shortcut="["></button>
276
+ <button type="button" class="button_next_file" data-shortcut="]"></button>
277
+ <button type="button" class="button_show_hide_help" data-shortcut="?"></button>
278
+ </aside>
279
+ </footer>
280
+ </body>
281
+ </html>