codex-usage-tracking 0.19.0__tar.gz → 0.21.0__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 (861) hide show
  1. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/.codex-plugin/plugin.json +1 -1
  2. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/CHANGELOG.md +34 -0
  3. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/PKG-INFO +4 -4
  4. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/README.md +3 -3
  5. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/architecture.md +13 -0
  6. codex_usage_tracking-0.21.0/docs/assets/dashboard-call-investigator-evidence.png +0 -0
  7. codex_usage_tracking-0.21.0/docs/assets/dashboard-call-investigator-preview.png +0 -0
  8. codex_usage_tracking-0.21.0/docs/assets/dashboard-call-investigator.png +0 -0
  9. codex_usage_tracking-0.21.0/docs/assets/dashboard-calls-preview.png +0 -0
  10. codex_usage_tracking-0.21.0/docs/assets/dashboard-calls.png +0 -0
  11. codex_usage_tracking-0.21.0/docs/assets/dashboard-details.png +0 -0
  12. codex_usage_tracking-0.21.0/docs/assets/dashboard-diagnostics.png +0 -0
  13. codex_usage_tracking-0.21.0/docs/assets/dashboard-insights.png +0 -0
  14. codex_usage_tracking-0.21.0/docs/assets/dashboard-threads.png +0 -0
  15. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/cli-json-schemas.md +34 -0
  16. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/cli-reference.md +20 -0
  17. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/dashboard-guide.md +49 -8
  18. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/database-schema.md +34 -1
  19. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/development.md +2 -2
  20. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/install.md +29 -1
  21. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/one-dot-oh-readiness.md +8 -8
  22. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/pricing-and-credits.md +50 -1
  23. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/privacy.md +25 -2
  24. codex_usage_tracking-0.21.0/docs/superpowers/plans/2026-07-15-threads-inline-expansion.md +947 -0
  25. codex_usage_tracking-0.21.0/docs/superpowers/plans/2026-07-16-otel-fast-usage-ingestion.md +1685 -0
  26. codex_usage_tracking-0.21.0/docs/superpowers/plans/2026-07-16-service-tier-billing-readiness.md +577 -0
  27. codex_usage_tracking-0.21.0/docs/superpowers/plans/2026-07-16-windows-filesystem-id-overflow.md +441 -0
  28. codex_usage_tracking-0.21.0/docs/superpowers/plans/2026-07-17-persistent-dashboard-service.md +620 -0
  29. codex_usage_tracking-0.21.0/docs/superpowers/plans/2026-07-17-threads-table-compact-redesign.md +112 -0
  30. codex_usage_tracking-0.21.0/docs/superpowers/specs/2026-07-15-threads-inline-expansion-design.md +153 -0
  31. codex_usage_tracking-0.21.0/docs/superpowers/specs/2026-07-16-otel-fast-usage-ingestion-design.md +310 -0
  32. codex_usage_tracking-0.21.0/docs/superpowers/specs/2026-07-16-windows-filesystem-id-overflow-design.md +92 -0
  33. codex_usage_tracking-0.21.0/docs/superpowers/specs/2026-07-17-persistent-dashboard-service-design.md +186 -0
  34. codex_usage_tracking-0.21.0/docs/superpowers/specs/2026-07-17-threads-table-compact-redesign-design.md +32 -0
  35. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/pyproject.toml +1 -1
  36. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/scripts/smoke_installed_package.py +1 -0
  37. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/skills/codex-usage-tracker/SKILL.md +1 -1
  38. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/skills/codex-usage-tracker/scripts/run_mcp.py +2 -2
  39. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/__init__.py +1 -1
  40. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/cli/commands_lifecycle.py +43 -18
  41. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/cli/dashboard.py +10 -2
  42. codex_usage_tracking-0.21.0/src/codex_usage_tracker/cli/dashboard_service.py +39 -0
  43. codex_usage_tracking-0.21.0/src/codex_usage_tracker/cli/help_i18n.py +182 -0
  44. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/cli/main.py +8 -3
  45. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/cli/parser.py +7 -2
  46. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/cli/parser_data.py +26 -0
  47. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/core/models.py +4 -0
  48. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/core/paths.py +1 -0
  49. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/core/schema.py +4 -0
  50. codex_usage_tracking-0.21.0/src/codex_usage_tracker/dashboard_service.py +360 -0
  51. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/parser/__init__.py +14 -0
  52. codex_usage_tracking-0.21.0/src/codex_usage_tracker/parser/otel.py +342 -0
  53. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/locales/zh-Hans.json +153 -153
  54. codex_usage_tracking-0.21.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/App.js +128 -0
  55. codex_usage_tracking-0.21.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/CacheContextPage.js +1 -0
  56. codex_usage_tracking-0.21.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/CallInvestigatorPage.js +6 -0
  57. codex_usage_tracking-0.21.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/CallsPage.js +16 -0
  58. codex_usage_tracking-0.21.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/CompressionLabPage.js +1 -0
  59. codex_usage_tracking-0.21.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/DataTable.js +11 -0
  60. codex_usage_tracking-0.21.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/DiagnosticsPage.js +1 -0
  61. codex_usage_tracking-0.21.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/EvidenceGrid.js +6 -0
  62. codex_usage_tracking-0.21.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/EvidenceGridControls.css +1 -0
  63. codex_usage_tracking-0.21.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/EvidenceGridControls.js +1 -0
  64. codex_usage_tracking-0.21.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/ExploreRoutePage.js +1 -0
  65. codex_usage_tracking-0.21.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/InvestigatorPage.js +11 -0
  66. codex_usage_tracking-0.21.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/LineChart.js +1 -0
  67. codex_usage_tracking-0.21.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/OverviewPage.css +1 -0
  68. codex_usage_tracking-0.21.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/OverviewPage.js +1 -0
  69. codex_usage_tracking-0.21.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/Panel.js +1 -0
  70. codex_usage_tracking-0.21.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/ReportsPage.js +1 -0
  71. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/SettingsPage.js +2 -2
  72. codex_usage_tracking-0.21.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/StatusBadge.js +1 -0
  73. codex_usage_tracking-0.21.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/ThreadsPage.css +1 -0
  74. codex_usage_tracking-0.21.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/ThreadsPage.js +6 -0
  75. codex_usage_tracking-0.21.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/UsageConstellation.js +12 -0
  76. codex_usage_tracking-0.21.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/UsageDrainPage.js +6 -0
  77. codex_usage_tracking-0.21.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/cartesianRenderer.js +1 -0
  78. codex_usage_tracking-0.21.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/contextEvidenceState.js +1 -0
  79. codex_usage_tracking-0.21.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/dashboardRouter.js +2 -0
  80. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/diagnosticsQueries.js +1 -1
  81. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/echartsRenderer.js +2 -2
  82. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/exploreQueries.js +1 -1
  83. codex_usage_tracking-0.21.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/flowRenderer.js +1 -0
  84. codex_usage_tracking-0.21.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/heatmapRenderer.js +1 -0
  85. codex_usage_tracking-0.21.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/locale-zh-Hans.js +1 -0
  86. codex_usage_tracking-0.21.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/overviewQueries.js +11 -0
  87. codex_usage_tracking-0.21.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/rowActionEvents.js +1 -0
  88. codex_usage_tracking-0.21.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/runtime.js +3 -0
  89. codex_usage_tracking-0.21.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/search.js +6 -0
  90. codex_usage_tracking-0.21.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/tableActions.js +1 -0
  91. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/useBaseQuery.js +1 -1
  92. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/useInfiniteQuery.js +1 -1
  93. codex_usage_tracking-0.21.0/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-call-investigator-evidence.png +0 -0
  94. codex_usage_tracking-0.21.0/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-call-investigator-preview.png +0 -0
  95. codex_usage_tracking-0.21.0/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-call-investigator.png +0 -0
  96. codex_usage_tracking-0.21.0/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-calls-preview.png +0 -0
  97. codex_usage_tracking-0.21.0/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-calls.png +0 -0
  98. codex_usage_tracking-0.21.0/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-details.png +0 -0
  99. codex_usage_tracking-0.21.0/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-diagnostics.png +0 -0
  100. codex_usage_tracking-0.21.0/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-insights.png +0 -0
  101. codex_usage_tracking-0.21.0/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-threads.png +0 -0
  102. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/docs/dashboard-guide.html +1 -0
  103. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/rate_cards/codex-credit-rates.json +23 -0
  104. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/skills/codex-usage-tracker/SKILL.md +1 -1
  105. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/pricing/allowance.py +6 -0
  106. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/pricing/allowance_config.py +28 -2
  107. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/pricing/allowance_rate_card.py +69 -0
  108. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/pricing/allowance_usage.py +50 -3
  109. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/pricing/api.py +2 -0
  110. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/pricing/config.py +120 -13
  111. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/pricing/costing.py +60 -2
  112. codex_usage_tracking-0.21.0/src/codex_usage_tracker/pricing/fast_tier.py +88 -0
  113. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/pricing/openai.py +51 -4
  114. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/reports/support.py +14 -1
  115. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/api.py +17 -10
  116. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/handler.py +7 -0
  117. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/route_inventory.py +10 -0
  118. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/routes.py +1 -0
  119. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/api.py +43 -2
  120. codex_usage_tracking-0.21.0/src/codex_usage_tracker/store/otel_ingest.py +291 -0
  121. codex_usage_tracking-0.21.0/src/codex_usage_tracker/store/otel_reconciliation.py +182 -0
  122. codex_usage_tracking-0.21.0/src/codex_usage_tracker/store/otel_schema.py +89 -0
  123. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/refresh.py +64 -2
  124. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/schema.py +5 -1
  125. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/source_replacement.py +78 -0
  126. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/sources.py +55 -24
  127. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/spans.py +6 -1
  128. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/types.py +6 -11
  129. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracking.egg-info/PKG-INFO +4 -4
  130. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracking.egg-info/SOURCES.txt +36 -1
  131. codex_usage_tracking-0.21.0/tests/cli/test_cli_help_i18n.py +58 -0
  132. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/cli/test_cli_release.py +1 -0
  133. codex_usage_tracking-0.21.0/tests/cli/test_dashboard_service.py +466 -0
  134. codex_usage_tracking-0.21.0/tests/core/test_api_payloads.py +18 -0
  135. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/core/test_schema.py +4 -0
  136. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/dashboard/test_dashboard_payload.py +33 -0
  137. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/dashboard/test_dashboard_server_live_slices.py +6 -0
  138. codex_usage_tracking-0.21.0/tests/otel_helpers.py +245 -0
  139. codex_usage_tracking-0.21.0/tests/parser/test_otel_parser.py +163 -0
  140. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/pricing/test_allowance.py +164 -0
  141. codex_usage_tracking-0.21.0/tests/pricing/test_pricing.py +547 -0
  142. codex_usage_tracking-0.21.0/tests/pricing/test_rate_card.py +101 -0
  143. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/reports/test_support.py +16 -0
  144. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/server/test_server_api.py +23 -5
  145. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/server/test_server_call_detail.py +23 -0
  146. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/store/test_compression_runs.py +2 -2
  147. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/store/test_content_query_exports.py +32 -0
  148. codex_usage_tracking-0.21.0/tests/store/test_otel_ingest.py +240 -0
  149. codex_usage_tracking-0.21.0/tests/store/test_otel_reconciliation.py +269 -0
  150. codex_usage_tracking-0.21.0/tests/store/test_otel_refresh.py +199 -0
  151. codex_usage_tracking-0.21.0/tests/store/test_otel_schema.py +79 -0
  152. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/store/test_source_records.py +29 -0
  153. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/store/test_store_dashboard_mcp.py +6 -6
  154. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/store/test_store_migrations.py +17 -13
  155. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/store/test_store_sources.py +108 -2
  156. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/usage_drain/test_usage_drain_model.py +12 -0
  157. codex_usage_tracking-0.19.0/docs/assets/dashboard-call-investigator-evidence.png +0 -0
  158. codex_usage_tracking-0.19.0/docs/assets/dashboard-call-investigator-preview.png +0 -0
  159. codex_usage_tracking-0.19.0/docs/assets/dashboard-call-investigator.png +0 -0
  160. codex_usage_tracking-0.19.0/docs/assets/dashboard-calls-preview.png +0 -0
  161. codex_usage_tracking-0.19.0/docs/assets/dashboard-calls.png +0 -0
  162. codex_usage_tracking-0.19.0/docs/assets/dashboard-details.png +0 -0
  163. codex_usage_tracking-0.19.0/docs/assets/dashboard-diagnostics.png +0 -0
  164. codex_usage_tracking-0.19.0/docs/assets/dashboard-insights.png +0 -0
  165. codex_usage_tracking-0.19.0/docs/assets/dashboard-threads.png +0 -0
  166. codex_usage_tracking-0.19.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/App.js +0 -133
  167. codex_usage_tracking-0.19.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/CacheContextPage.js +0 -1
  168. codex_usage_tracking-0.19.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/CallInvestigatorPage.js +0 -6
  169. codex_usage_tracking-0.19.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/CallsPage.js +0 -16
  170. codex_usage_tracking-0.19.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/CompressionLabPage.js +0 -1
  171. codex_usage_tracking-0.19.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/DataTable.js +0 -11
  172. codex_usage_tracking-0.19.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/DiagnosticsPage.js +0 -1
  173. codex_usage_tracking-0.19.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/EvidenceGrid.css +0 -1
  174. codex_usage_tracking-0.19.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/EvidenceGrid.js +0 -6
  175. codex_usage_tracking-0.19.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/ExploreRoutePage.js +0 -1
  176. codex_usage_tracking-0.19.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/InvestigatorPage.js +0 -11
  177. codex_usage_tracking-0.19.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/LineChart.js +0 -1
  178. codex_usage_tracking-0.19.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/OverviewPage.css +0 -1
  179. codex_usage_tracking-0.19.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/OverviewPage.js +0 -1
  180. codex_usage_tracking-0.19.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/Panel.js +0 -1
  181. codex_usage_tracking-0.19.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/ReportsPage.js +0 -1
  182. codex_usage_tracking-0.19.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/ThreadsPage.css +0 -1
  183. codex_usage_tracking-0.19.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/ThreadsPage.js +0 -6
  184. codex_usage_tracking-0.19.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/UsageConstellation.js +0 -12
  185. codex_usage_tracking-0.19.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/UsageDrainPage.js +0 -6
  186. codex_usage_tracking-0.19.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/cartesianRenderer.js +0 -1
  187. codex_usage_tracking-0.19.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/contextEvidenceState.js +0 -1
  188. codex_usage_tracking-0.19.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/dashboardRouter.js +0 -2
  189. codex_usage_tracking-0.19.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/flowRenderer.js +0 -1
  190. codex_usage_tracking-0.19.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/heatmapRenderer.js +0 -1
  191. codex_usage_tracking-0.19.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/overviewQueries.js +0 -11
  192. codex_usage_tracking-0.19.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/runtime.js +0 -3
  193. codex_usage_tracking-0.19.0/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-call-investigator-evidence.png +0 -0
  194. codex_usage_tracking-0.19.0/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-call-investigator-preview.png +0 -0
  195. codex_usage_tracking-0.19.0/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-call-investigator.png +0 -0
  196. codex_usage_tracking-0.19.0/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-calls-preview.png +0 -0
  197. codex_usage_tracking-0.19.0/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-calls.png +0 -0
  198. codex_usage_tracking-0.19.0/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-details.png +0 -0
  199. codex_usage_tracking-0.19.0/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-diagnostics.png +0 -0
  200. codex_usage_tracking-0.19.0/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-insights.png +0 -0
  201. codex_usage_tracking-0.19.0/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-threads.png +0 -0
  202. codex_usage_tracking-0.19.0/tests/pricing/test_pricing.py +0 -268
  203. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/.mcp.json +0 -0
  204. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/AGENTS.md +0 -0
  205. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/CONTRIBUTING.md +0 -0
  206. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/LICENSE +0 -0
  207. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/MANIFEST.in +0 -0
  208. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/SECURITY.md +0 -0
  209. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/assets/icon.svg +0 -0
  210. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/adoption-hardening-roadmap.md +0 -0
  211. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/agent-maintainer-guidance.md +0 -0
  212. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/agent-maintainer-hardening-branch-roadmap.md +0 -0
  213. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/agentic-briefing-and-dogfood-roadmap.md +0 -0
  214. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/agentic-investigation-hardening-roadmap.md +0 -0
  215. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/agentic-mcp-skill-roadmap.md +0 -0
  216. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/allowance-intelligence.md +0 -0
  217. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/architecture/decisions/0001-package-domain-boundaries.md +0 -0
  218. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/architecture/decisions/0002-explicit-tach-module-inventory.md +0 -0
  219. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/architecture/decisions/0003-domain-level-tach-boundaries.md +0 -0
  220. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/architecture/decisions/0004-dashboard-typescript-boundaries.md +0 -0
  221. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/architecture/decisions/0005-dashboard-router-and-query-runtime.md +0 -0
  222. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/architecture/decisions/0006-dashboard-visualization-contract.md +0 -0
  223. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/architecture/decisions/0007-dashboard-css-ownership.md +0 -0
  224. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/architecture/decisions/0008-dashboard-usage-constellation.md +0 -0
  225. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/architecture/decisions/0009-compression-mcp-adapter.md +0 -0
  226. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/architecture/decisions/0010-recommendation-engine-boundary.md +0 -0
  227. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/architecture/decisions/0011-compression-dashboard-adapter.md +0 -0
  228. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/architecture-boundary-map.md +0 -0
  229. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/assets/dashboard-diagnostics-git-expanded.png +0 -0
  230. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/assets/frontend-rewrite-references/cache-context-lab-reference.png +0 -0
  231. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/assets/frontend-rewrite-references/call-drilldown-menu-concept-reference.png +0 -0
  232. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/assets/frontend-rewrite-references/calls-analyst-view-reference.png +0 -0
  233. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/assets/frontend-rewrite-references/calls-high-density-reference.png +0 -0
  234. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/assets/frontend-rewrite-references/command-palette-dashboard-reference.png +0 -0
  235. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/assets/frontend-rewrite-references/diagnostics-notebook-reference.png +0 -0
  236. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/assets/frontend-rewrite-references/generated-dashboard-concept-reference.png +0 -0
  237. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/assets/frontend-rewrite-references/generated-maintainer-banner-reference.png +0 -0
  238. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/assets/frontend-rewrite-references/investigator-workbench-reference.png +0 -0
  239. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/assets/frontend-rewrite-references/overview-dashboard-reference.png +0 -0
  240. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/assets/frontend-rewrite-references/projected-weekly-credits-overlap-reference.png +0 -0
  241. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/assets/frontend-rewrite-references/thread-efficiency-reference.png +0 -0
  242. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/assets/frontend-rewrite-references/usage-drain-lab-reference.png +0 -0
  243. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/assets/plugin-prompts.png +0 -0
  244. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/assets/plugin-thread-leaderboard.png +0 -0
  245. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/assets/readme-hero-2.png +0 -0
  246. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/assets/readme-hero.png +0 -0
  247. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/assets/social-preview.png +0 -0
  248. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/assets/ux/call-detail-panel.png +0 -0
  249. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/assets/ux/insight-overview.png +0 -0
  250. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/assets/ux/thread-investigation.png +0 -0
  251. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/call-drilldown-performance-checklist.md +0 -0
  252. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/complexity-hardening-roadmap.md +0 -0
  253. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/compression-lab-roadmap.md +0 -0
  254. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/dashboard-final-redesign-audit.md +0 -0
  255. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/dashboard-final-redesign-parity.md +0 -0
  256. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/dashboard-final-redesign-release-candidate.md +0 -0
  257. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/dashboard-final-redesign-roadmap.md +0 -0
  258. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/dashboard-final-redesign-spec.md +0 -0
  259. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/dashboard-overview-parity.md +0 -0
  260. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/dashboard-query-pipeline-refactor-roadmap.md +0 -0
  261. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/dashboard-route-inventory.md +0 -0
  262. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/examples/remediation-conversation.md +0 -0
  263. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/examples/token-waste-conversation.md +0 -0
  264. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/first-five-minutes.md +0 -0
  265. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/frontend-rewrite-roadmap.md +0 -0
  266. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/local-content-index-roadmap.md +0 -0
  267. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/maintainability-roadmap.md +0 -0
  268. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/maintainability-scorecard.md +0 -0
  269. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/mcp.md +0 -0
  270. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/react-dashboard-0.14-release-roadmap.md +0 -0
  271. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/superpowers/plans/2026-07-11-compression-lab-implementation.md +0 -0
  272. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/superpowers/plans/2026-07-11-page-query-progress.md +0 -0
  273. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/superpowers/plans/2026-07-14-clone-copy-deduplication.md +0 -0
  274. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/superpowers/plans/2026-07-14-limits-intelligence-redesign.md +0 -0
  275. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/superpowers/plans/2026-07-15-capacity-chart-series-encoding.md +0 -0
  276. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/superpowers/plans/2026-07-15-capacity-first-limits.md +0 -0
  277. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/superpowers/plans/2026-07-15-parallel-hardening-ci.md +0 -0
  278. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/superpowers/specs/2026-07-11-compression-lab-design.md +0 -0
  279. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/superpowers/specs/2026-07-11-page-query-progress-design.md +0 -0
  280. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/superpowers/specs/2026-07-14-clone-copy-deduplication-design.md +0 -0
  281. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/superpowers/specs/2026-07-14-limits-intelligence-redesign-design.md +0 -0
  282. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/superpowers/specs/2026-07-15-capacity-chart-series-encoding-design.md +0 -0
  283. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/superpowers/specs/2026-07-15-capacity-first-limits-design.md +0 -0
  284. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/superpowers/specs/2026-07-15-parallel-hardening-ci-design.md +0 -0
  285. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/ui-ux-improvement-plan.md +0 -0
  286. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/docs/usage-drain-modeling.md +0 -0
  287. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/scripts/benchmark_compression_lab.py +0 -0
  288. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/scripts/benchmark_dashboard_routes.py +0 -0
  289. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/scripts/benchmark_refresh_ingestion.py +0 -0
  290. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/scripts/benchmark_synthetic_history.py +0 -0
  291. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/scripts/calibrate_allowance_change_detector.py +0 -0
  292. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/scripts/check_dashboard_source_budgets.py +0 -0
  293. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/scripts/check_release.py +0 -0
  294. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/scripts/check_wemake_baseline.py +0 -0
  295. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/scripts/compression_persistence_benchmark.py +0 -0
  296. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/scripts/compression_revision_benchmark.py +0 -0
  297. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/scripts/dashboard_route_benchmark_support.py +0 -0
  298. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/scripts/generate_social_preview.py +0 -0
  299. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/scripts/install_local_plugin.py +0 -0
  300. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/scripts/model_usage_drain.py +0 -0
  301. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/scripts/smoke_dashboard_server.py +0 -0
  302. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/setup.cfg +0 -0
  303. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/skills/codex-usage-api/SKILL.md +0 -0
  304. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/__main__.py +0 -0
  305. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/allowance.py +0 -0
  306. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/allowance_intelligence/__init__.py +0 -0
  307. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/allowance_intelligence/analysis.py +0 -0
  308. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/allowance_intelligence/capacity_history.py +0 -0
  309. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/allowance_intelligence/change_detection.py +0 -0
  310. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/allowance_intelligence/contracts.py +0 -0
  311. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/allowance_intelligence/cycles.py +0 -0
  312. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/allowance_intelligence/estimation.py +0 -0
  313. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/allowance_intelligence/model.py +0 -0
  314. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/allowance_intelligence/reports.py +0 -0
  315. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/allowance_intelligence/service.py +0 -0
  316. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/allowance_intelligence/statistics.py +0 -0
  317. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/cli/__init__.py +0 -0
  318. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/cli/__main__.py +0 -0
  319. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/cli/commands_data.py +0 -0
  320. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/cli/commands_reports.py +0 -0
  321. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/cli/config.py +0 -0
  322. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/cli/diagnostics.py +0 -0
  323. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/cli/inspect_log_output.py +0 -0
  324. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/cli/mcp_allowance.py +0 -0
  325. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/cli/mcp_compression.py +0 -0
  326. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/cli/mcp_compression_router.py +0 -0
  327. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/cli/mcp_compression_router_payloads.py +0 -0
  328. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/cli/mcp_dashboard.py +0 -0
  329. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/cli/mcp_discovery.py +0 -0
  330. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/cli/mcp_dogfood.py +0 -0
  331. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/cli/mcp_investigations.py +0 -0
  332. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/cli/mcp_runtime.py +0 -0
  333. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/cli/mcp_server.py +0 -0
  334. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/cli/mcp_visualization.py +0 -0
  335. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/cli/output.py +0 -0
  336. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/cli/parser_diagnostics.py +0 -0
  337. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/cli/parser_lifecycle.py +0 -0
  338. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/cli/parser_reports.py +0 -0
  339. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/cli/plugin_installer.py +0 -0
  340. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/compression/__init__.py +0 -0
  341. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/compression/api.py +0 -0
  342. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/compression/attribution.py +0 -0
  343. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/compression/context_detectors.py +0 -0
  344. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/compression/detector_protocol.py +0 -0
  345. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/compression/detector_registry.py +0 -0
  346. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/compression/estimators.py +0 -0
  347. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/compression/evidence.py +0 -0
  348. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/compression/identifiers.py +0 -0
  349. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/compression/jobs.py +0 -0
  350. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/compression/models.py +0 -0
  351. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/compression/output_detectors.py +0 -0
  352. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/compression/payloads.py +0 -0
  353. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/compression/profile.py +0 -0
  354. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/compression/repetition_detectors.py +0 -0
  355. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/compression/request.py +0 -0
  356. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/compression/run_builder.py +0 -0
  357. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/compression/run_cache.py +0 -0
  358. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/compression/simulation_api.py +0 -0
  359. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/compression/simulation_payloads.py +0 -0
  360. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/compression/simulator.py +0 -0
  361. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/compression/streaming_evidence.py +0 -0
  362. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/context/__init__.py +0 -0
  363. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/context/action_timing.py +0 -0
  364. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/context/api.py +0 -0
  365. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/context/constants.py +0 -0
  366. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/context/loader.py +0 -0
  367. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/context/reader.py +0 -0
  368. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/context/serialized.py +0 -0
  369. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/context/summaries.py +0 -0
  370. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/context/token_estimates.py +0 -0
  371. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/context/values.py +0 -0
  372. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/core/__init__.py +0 -0
  373. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/core/api_payloads.py +0 -0
  374. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/core/call_origin.py +0 -0
  375. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/core/command_parsing.py +0 -0
  376. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/core/formatting.py +0 -0
  377. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/core/i18n.py +0 -0
  378. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/core/json_contract_cli.py +0 -0
  379. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/core/json_contract_common.py +0 -0
  380. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/core/json_contract_diagnostics.py +0 -0
  381. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/core/json_contract_server.py +0 -0
  382. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/core/json_contract_summary.py +0 -0
  383. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/core/json_contract_validation.py +0 -0
  384. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/core/json_contract_visualization.py +0 -0
  385. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/core/json_contracts.py +0 -0
  386. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/core/projects.py +0 -0
  387. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/core/redaction.py +0 -0
  388. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/core/threads.py +0 -0
  389. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/core/usage_identity.py +0 -0
  390. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/dashboard/__init__.py +0 -0
  391. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/dashboard/api.py +0 -0
  392. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/dashboard/assets.py +0 -0
  393. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/dashboard/cache_identity.py +0 -0
  394. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/dashboard/load_window.py +0 -0
  395. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/dashboard/pricing_snapshot.py +0 -0
  396. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/diagnostics/__init__.py +0 -0
  397. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/diagnostics/action_hints.py +0 -0
  398. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/diagnostics/api.py +0 -0
  399. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/diagnostics/dedupe.py +0 -0
  400. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/diagnostics/doctor_checks.py +0 -0
  401. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/diagnostics/fact_classifiers.py +0 -0
  402. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/diagnostics/facts.py +0 -0
  403. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/diagnostics/guided_signals.py +0 -0
  404. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/diagnostics/guided_summary.py +0 -0
  405. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/diagnostics/mcp.py +0 -0
  406. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/diagnostics/reports.py +0 -0
  407. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/diagnostics/snapshot_analysis.py +0 -0
  408. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/diagnostics/snapshot_analysis_payloads.py +0 -0
  409. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/diagnostics/snapshot_concentration.py +0 -0
  410. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/diagnostics/snapshot_constants.py +0 -0
  411. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/diagnostics/snapshot_events.py +0 -0
  412. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/diagnostics/snapshot_overview.py +0 -0
  413. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/diagnostics/snapshot_payloads.py +0 -0
  414. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/diagnostics/snapshot_progress.py +0 -0
  415. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/diagnostics/snapshot_report.py +0 -0
  416. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/diagnostics/snapshot_rows.py +0 -0
  417. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/diagnostics/snapshot_source_logs.py +0 -0
  418. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/diagnostics/snapshot_source_scan.py +0 -0
  419. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/diagnostics/snapshots.py +0 -0
  420. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/diagnostics/types.py +0 -0
  421. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/mcp_server.py +0 -0
  422. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/parser/api.py +0 -0
  423. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/parser/jsonl_v1.py +0 -0
  424. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/parser/jsonl_values.py +0 -0
  425. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/parser/state.py +0 -0
  426. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/__init__.py +0 -0
  427. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/assets/icon.svg +0 -0
  428. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard.css +0 -0
  429. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard.js +0 -0
  430. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_actions.js +0 -0
  431. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_analysis.js +0 -0
  432. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_call.css +0 -0
  433. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_call_diagnostics.js +0 -0
  434. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_call_investigator.js +0 -0
  435. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_cells.js +0 -0
  436. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_data.js +0 -0
  437. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_detail.css +0 -0
  438. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_details.js +0 -0
  439. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_diagnostics.js +0 -0
  440. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_diagnostics_facts.js +0 -0
  441. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_diagnostics_snapshots.js +0 -0
  442. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_events.js +0 -0
  443. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_filters.js +0 -0
  444. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_format.js +0 -0
  445. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_i18n.js +0 -0
  446. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_insights.css +0 -0
  447. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_insights.js +0 -0
  448. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_layout.css +0 -0
  449. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_live.js +0 -0
  450. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_payload_cache.js +0 -0
  451. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_responsive.css +0 -0
  452. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_state.js +0 -0
  453. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_status.js +0 -0
  454. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_tables.css +0 -0
  455. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_tables.js +0 -0
  456. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_template.html +0 -0
  457. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_tooltips.js +0 -0
  458. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/locales/ar.json +0 -0
  459. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/locales/de.json +0 -0
  460. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/locales/en.json +0 -0
  461. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/locales/es.json +0 -0
  462. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/locales/fr.json +0 -0
  463. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/locales/it.json +0 -0
  464. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/locales/ja.json +0 -0
  465. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/locales/ko.json +0 -0
  466. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/locales/pt.json +0 -0
  467. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/locales/ru.json +0 -0
  468. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/locales/vi.json +0 -0
  469. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/CallsPage.css +0 -0
  470. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/CompressionLabPage.css +0 -0
  471. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/CoordinateSystem.js +0 -0
  472. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/DataDiffer.js +0 -0
  473. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/ExploreRoutePage.css +0 -0
  474. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/ExploreWorkspaceSwitcher.js +0 -0
  475. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/InvestigatorPage.css +0 -0
  476. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/PageLoadProgress.css +0 -0
  477. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/PageLoadProgress.js +0 -0
  478. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/Primitives.css +0 -0
  479. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/Primitives.js +0 -0
  480. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/ReportsPage.css +0 -0
  481. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/RoamController.js +0 -0
  482. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/SeriesData.js +0 -0
  483. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/SettingsPage.css +0 -0
  484. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/SymbolDraw.js +0 -0
  485. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/UsageConstellation.css +0 -0
  486. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/UsageConstellationCanvas.css +0 -0
  487. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/UsageConstellationCanvas.js +0 -0
  488. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/UsageDrainPage.css +0 -0
  489. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/VisualMapping.js +0 -0
  490. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/accessibilityFeature.js +0 -0
  491. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/annotationFeature.js +0 -0
  492. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/cartesianAxisHelper.js +0 -0
  493. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/chevron-right.js +0 -0
  494. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/dashboard-react.js +0 -0
  495. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/dataStackHelper.js +0 -0
  496. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/extension.js +0 -0
  497. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/filtering.js +0 -0
  498. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/gauge.js +0 -0
  499. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/grid.js +0 -0
  500. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/index.css +0 -0
  501. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/index.js +0 -0
  502. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/index2.js +0 -0
  503. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/infiniteQueryOptions.js +0 -0
  504. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/install.js +0 -0
  505. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/interactionFeature.js +0 -0
  506. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/legendFeature.js +0 -0
  507. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/listComponent.js +0 -0
  508. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/lock-keyhole.js +0 -0
  509. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/queryOptions.js +0 -0
  510. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/router.js +0 -0
  511. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/scaleRawExtentInfo.js +0 -0
  512. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/shield-check.js +0 -0
  513. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/sliderMove.js +0 -0
  514. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/threadSummaryAdapter.js +0 -0
  515. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/tooltipFeature.js +0 -0
  516. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/triangle-alert.js +0 -0
  517. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/useQuery.js +0 -0
  518. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/visualMapFeature.js +0 -0
  519. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/index.html +0 -0
  520. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-diagnostics-git-expanded.png +0 -0
  521. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/docs/assets/plugin-prompts.png +0 -0
  522. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/docs/assets/plugin-thread-leaderboard.png +0 -0
  523. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/docs/examples/remediation-conversation.md +0 -0
  524. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/docs/examples/token-waste-conversation.md +0 -0
  525. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/skills/codex-usage-api/SKILL.md +0 -0
  526. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_installer.py +0 -0
  527. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/pricing/__init__.py +0 -0
  528. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/pricing/allowance_text.py +0 -0
  529. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/pricing/estimates.py +0 -0
  530. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/recommendation_engine/__init__.py +0 -0
  531. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/recommendation_engine/api.py +0 -0
  532. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/recommendation_engine/fact_config.py +0 -0
  533. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/recommendation_engine/materialization.py +0 -0
  534. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/recommendation_engine/query.py +0 -0
  535. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/recommendation_engine/summary_materialization.py +0 -0
  536. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/reports/__init__.py +0 -0
  537. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/reports/action_brief.py +0 -0
  538. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/reports/agentic.py +0 -0
  539. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/reports/agentic_dogfood.py +0 -0
  540. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/reports/agentic_dogfood_markdown.py +0 -0
  541. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/reports/agentic_evidence.py +0 -0
  542. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/reports/agentic_strategy.py +0 -0
  543. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/reports/api.py +0 -0
  544. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/reports/discovery.py +0 -0
  545. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/reports/filters.py +0 -0
  546. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/reports/hypothesis_classification.py +0 -0
  547. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/reports/hypothesis_evaluators.py +0 -0
  548. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/reports/hypothesis_limit_evaluators.py +0 -0
  549. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/reports/hypothesis_results.py +0 -0
  550. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/reports/investigation_walk.py +0 -0
  551. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/reports/project_summary.py +0 -0
  552. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/reports/query.py +0 -0
  553. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/reports/recommendation_builder.py +0 -0
  554. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/reports/recommendations.py +0 -0
  555. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/reports/visualization.py +0 -0
  556. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/reports/visualization_support.py +0 -0
  557. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/__init__.py +0 -0
  558. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/allowance.py +0 -0
  559. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/allowance_v2.py +0 -0
  560. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/analysis_jobs.py +0 -0
  561. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/call_detail.py +0 -0
  562. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/call_lists.py +0 -0
  563. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/compression_routes.py +0 -0
  564. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/context.py +0 -0
  565. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/context_settings.py +0 -0
  566. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/dashboard_pages.py +0 -0
  567. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/dashboard_shell.py +0 -0
  568. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/dedupe.py +0 -0
  569. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/diagnostic_facts.py +0 -0
  570. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/diagnostic_jobs.py +0 -0
  571. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/diagnostic_routes.py +0 -0
  572. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/diagnostic_snapshots.py +0 -0
  573. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/investigations.py +0 -0
  574. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/live_queries.py +0 -0
  575. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/live_rows.py +0 -0
  576. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/open_investigator.py +0 -0
  577. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/query_cache.py +0 -0
  578. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/recommendations.py +0 -0
  579. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/reports.py +0 -0
  580. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/request_guards.py +0 -0
  581. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/request_timing.py +0 -0
  582. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/responses.py +0 -0
  583. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/route_profile.py +0 -0
  584. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/status.py +0 -0
  585. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/summary.py +0 -0
  586. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/threads.py +0 -0
  587. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/usage_refresh.py +0 -0
  588. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/utils.py +0 -0
  589. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/__init__.py +0 -0
  590. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/allowance_intelligence.py +0 -0
  591. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/allowance_materialization.py +0 -0
  592. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/allowance_observations.py +0 -0
  593. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/allowance_schema.py +0 -0
  594. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/compression_candidate_metadata.py +0 -0
  595. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/compression_candidates.py +0 -0
  596. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/compression_capacities.py +0 -0
  597. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/compression_evidence.py +0 -0
  598. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/compression_fact_contract.py +0 -0
  599. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/compression_fact_ingest.py +0 -0
  600. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/compression_fact_manifest.py +0 -0
  601. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/compression_fact_queries.py +0 -0
  602. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/compression_fact_rows.py +0 -0
  603. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/compression_fact_sync.py +0 -0
  604. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/compression_facts.py +0 -0
  605. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/compression_publication.py +0 -0
  606. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/compression_revisions.py +0 -0
  607. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/compression_runs.py +0 -0
  608. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/compression_schema.py +0 -0
  609. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/connection.py +0 -0
  610. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/content_excerpts.py +0 -0
  611. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/content_extract.py +0 -0
  612. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/content_index.py +0 -0
  613. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/content_index_bulk.py +0 -0
  614. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/content_index_event_store.py +0 -0
  615. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/content_index_events.py +0 -0
  616. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/content_index_models.py +0 -0
  617. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/content_index_parallel.py +0 -0
  618. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/content_index_source.py +0 -0
  619. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/content_index_stream.py +0 -0
  620. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/content_patterns.py +0 -0
  621. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/content_persistence.py +0 -0
  622. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/content_provenance.py +0 -0
  623. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/content_query.py +0 -0
  624. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/content_rows.py +0 -0
  625. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/content_search.py +0 -0
  626. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/content_trace.py +0 -0
  627. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/dashboard_queries.py +0 -0
  628. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/dedupe_queries.py +0 -0
  629. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/deduplication.py +0 -0
  630. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/deduplication_schema.py +0 -0
  631. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/diagnostic_api.py +0 -0
  632. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/diagnostic_call_queries.py +0 -0
  633. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/diagnostic_queries.py +0 -0
  634. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/exports.py +0 -0
  635. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/investigation_runs.py +0 -0
  636. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/large_low_output.py +0 -0
  637. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/query_sql.py +0 -0
  638. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/query_values.py +0 -0
  639. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/recommendation_queries.py +0 -0
  640. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/recommendation_schema.py +0 -0
  641. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/refresh_callbacks.py +0 -0
  642. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/refresh_parse.py +0 -0
  643. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/refresh_stream.py +0 -0
  644. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/repeated_files.py +0 -0
  645. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/rows.py +0 -0
  646. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/schema_query_indexes.py +0 -0
  647. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/shell_churn.py +0 -0
  648. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/source_records.py +0 -0
  649. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/summary_queries.py +0 -0
  650. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/thread_summaries.py +0 -0
  651. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/usage_api_queries.py +0 -0
  652. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/usage_record_queries.py +0 -0
  653. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/usage_timing.py +0 -0
  654. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/support.py +0 -0
  655. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/__init__.py +0 -0
  656. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/allowance_breakpoints.py +0 -0
  657. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/allowance_fits.py +0 -0
  658. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/allowance_online.py +0 -0
  659. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/boundary_delta.py +0 -0
  660. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/boundary_delta_core.py +0 -0
  661. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/boundary_delta_rows.py +0 -0
  662. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/boundary_delta_summary.py +0 -0
  663. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/boundary_scopes.py +0 -0
  664. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/boundary_summary.py +0 -0
  665. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/capacity_specs.py +0 -0
  666. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/error_diagnostics.py +0 -0
  667. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/feature_history.py +0 -0
  668. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/features.py +0 -0
  669. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/grace.py +0 -0
  670. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/history_state.py +0 -0
  671. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/model.py +0 -0
  672. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/predictive.py +0 -0
  673. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/predictive_specs.py +0 -0
  674. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/proxy_fit.py +0 -0
  675. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/regime_labels.py +0 -0
  676. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/regime_segments.py +0 -0
  677. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/regression.py +0 -0
  678. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/reports.py +0 -0
  679. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/state_buckets.py +0 -0
  680. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/state_diagnostics.py +0 -0
  681. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/summary_metrics.py +0 -0
  682. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/thread_curves.py +0 -0
  683. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/time_series.py +0 -0
  684. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/token_components.py +0 -0
  685. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/transition_gates.py +0 -0
  686. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/transition_metrics.py +0 -0
  687. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/utils.py +0 -0
  688. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/walk_forward.py +0 -0
  689. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/walk_forward_rows.py +0 -0
  690. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracking.egg-info/dependency_links.txt +0 -0
  691. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracking.egg-info/entry_points.txt +0 -0
  692. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracking.egg-info/requires.txt +0 -0
  693. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracking.egg-info/top_level.txt +0 -0
  694. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/__init__.py +0 -0
  695. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/allowance_intelligence/test_allowance_intelligence.py +0 -0
  696. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/allowance_intelligence/test_analysis.py +0 -0
  697. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/allowance_intelligence/test_capacity_history.py +0 -0
  698. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/allowance_intelligence/test_change_calibration.py +0 -0
  699. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/allowance_intelligence/test_change_detection.py +0 -0
  700. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/allowance_intelligence/test_cycles.py +0 -0
  701. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/allowance_intelligence/test_estimation.py +0 -0
  702. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/allowance_intelligence/test_service.py +0 -0
  703. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/allowance_intelligence/test_statistics.py +0 -0
  704. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/cli/test_allowance_intelligence_cli_mcp.py +0 -0
  705. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/cli/test_cli_benchmarks.py +0 -0
  706. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/cli/test_cli_dashboard.py +0 -0
  707. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/cli/test_cli_inspect_log_output.py +0 -0
  708. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/cli/test_cli_lifecycle.py +0 -0
  709. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/cli/test_cli_module_entrypoints.py +0 -0
  710. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/cli/test_cli_parser_diagnostics.py +0 -0
  711. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/cli/test_commands_reports.py +0 -0
  712. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/cli/test_dashboard_route_benchmark.py +0 -0
  713. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/cli/test_mcp_compression.py +0 -0
  714. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/cli/test_mcp_compression_router.py +0 -0
  715. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/cli/test_mcp_dedupe.py +0 -0
  716. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/cli/test_mcp_integration.py +0 -0
  717. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/cli/test_mcp_launcher.py +0 -0
  718. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/cli/test_mcp_runtime_compatibility.py +0 -0
  719. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/cli/test_mcp_simulation.py +0 -0
  720. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/cli/test_mcp_visualization.py +0 -0
  721. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/cli/test_plugin_installer.py +0 -0
  722. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/compression/compression_helpers.py +0 -0
  723. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/compression/test_attribution.py +0 -0
  724. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/compression/test_context_detectors.py +0 -0
  725. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/compression/test_estimators.py +0 -0
  726. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/compression/test_jobs.py +0 -0
  727. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/compression/test_models.py +0 -0
  728. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/compression/test_output_detectors.py +0 -0
  729. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/compression/test_repetition_detectors.py +0 -0
  730. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/compression/test_run_builder.py +0 -0
  731. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/compression/test_simulator.py +0 -0
  732. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/compression/test_streaming_evidence.py +0 -0
  733. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/context/test_context_action_timing.py +0 -0
  734. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/context/test_context_evidence.py +0 -0
  735. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/context/test_context_scan.py +0 -0
  736. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/context/test_context_serialized.py +0 -0
  737. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/context/test_context_source_scan.py +0 -0
  738. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/context/test_context_summaries.py +0 -0
  739. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/context/test_context_token_estimates.py +0 -0
  740. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/context/test_context_values.py +0 -0
  741. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/core/test_call_origin.py +0 -0
  742. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/core/test_command_parsing.py +0 -0
  743. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/core/test_formatting.py +0 -0
  744. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/core/test_i18n.py +0 -0
  745. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/core/test_json_contracts.py +0 -0
  746. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/core/test_privacy.py +0 -0
  747. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/core/test_projects.py +0 -0
  748. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/core/test_redaction.py +0 -0
  749. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/core/test_threads.py +0 -0
  750. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/core/test_usage_identity.py +0 -0
  751. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/dashboard/dashboard_node_test_helpers.py +0 -0
  752. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/dashboard/test_dashboard_compression_server.py +0 -0
  753. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/dashboard/test_dashboard_data.py +0 -0
  754. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/dashboard/test_dashboard_diagnostics_snapshots.py +0 -0
  755. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/dashboard/test_dashboard_live.py +0 -0
  756. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/dashboard/test_dashboard_payload_privacy.py +0 -0
  757. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/dashboard/test_dashboard_pricing_snapshot.py +0 -0
  758. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/dashboard/test_dashboard_server.py +0 -0
  759. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/dashboard/test_dashboard_state.py +0 -0
  760. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/dashboard/test_dashboard_status.py +0 -0
  761. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/diagnostics/test_diagnostic_fact_classifiers.py +0 -0
  762. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/diagnostics/test_diagnostic_reports.py +0 -0
  763. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/diagnostics/test_diagnostic_snapshot_events.py +0 -0
  764. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/diagnostics/test_diagnostic_snapshot_progress.py +0 -0
  765. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/diagnostics/test_diagnostic_snapshot_report.py +0 -0
  766. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/diagnostics/test_diagnostic_snapshot_source_scan.py +0 -0
  767. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/diagnostics/test_diagnostic_snapshots.py +0 -0
  768. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/diagnostics/test_doctor_first_run.py +0 -0
  769. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/diagnostics/test_module_exports.py +0 -0
  770. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/parser/test_parser.py +0 -0
  771. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/parser/test_parser_deduplication.py +0 -0
  772. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/parser/test_parser_inspect_log.py +0 -0
  773. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/parser/test_parser_observer.py +0 -0
  774. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/parser/test_parser_state.py +0 -0
  775. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/quality/test_static_analysis_policy.py +0 -0
  776. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/reports/test_action_brief.py +0 -0
  777. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/reports/test_action_brief_exports.py +0 -0
  778. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/reports/test_agentic_dogfood.py +0 -0
  779. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/reports/test_agentic_evidence.py +0 -0
  780. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/reports/test_agentic_exports.py +0 -0
  781. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/reports/test_discovery_exports.py +0 -0
  782. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/reports/test_hypothesis_classification.py +0 -0
  783. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/reports/test_hypothesis_evaluator_exports.py +0 -0
  784. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/reports/test_hypothesis_routing.py +0 -0
  785. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/reports/test_indexed_recommendations.py +0 -0
  786. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/reports/test_investigation_walk_exports.py +0 -0
  787. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/reports/test_query_exports.py +0 -0
  788. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/reports/test_recommendations.py +0 -0
  789. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/reports/test_visualization.py +0 -0
  790. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/server/test_analysis_jobs.py +0 -0
  791. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/server/test_compression_routes.py +0 -0
  792. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/server/test_diagnostic_jobs.py +0 -0
  793. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/server/test_query_cache.py +0 -0
  794. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/server/test_refresh_jobs.py +0 -0
  795. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/server/test_refresh_routes.py +0 -0
  796. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/server/test_request_timing.py +0 -0
  797. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/server/test_route_inventory.py +0 -0
  798. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/server/test_server_allowance.py +0 -0
  799. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/server/test_server_allowance_v2.py +0 -0
  800. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/server/test_server_call_lists.py +0 -0
  801. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/server/test_server_context.py +0 -0
  802. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/server/test_server_context_settings.py +0 -0
  803. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/server/test_server_dashboard_shell.py +0 -0
  804. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/server/test_server_dedupe.py +0 -0
  805. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/server/test_server_diagnostic_facts.py +0 -0
  806. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/server/test_server_diagnostic_refresh_auth.py +0 -0
  807. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/server/test_server_diagnostic_snapshots.py +0 -0
  808. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/server/test_server_investigations.py +0 -0
  809. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/server/test_server_live_queries.py +0 -0
  810. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/server/test_server_live_rows.py +0 -0
  811. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/server/test_server_open_investigator.py +0 -0
  812. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/server/test_server_recommendations.py +0 -0
  813. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/server/test_server_request_guards.py +0 -0
  814. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/server/test_server_responses.py +0 -0
  815. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/server/test_server_routes.py +0 -0
  816. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/server/test_server_status.py +0 -0
  817. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/server/test_server_summary.py +0 -0
  818. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/server/test_server_threads.py +0 -0
  819. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/server/test_server_usage_refresh.py +0 -0
  820. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/store/test_allowance_intelligence_queries.py +0 -0
  821. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/store/test_allowance_materialization.py +0 -0
  822. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/store/test_allowance_observations.py +0 -0
  823. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/store/test_compression_evidence.py +0 -0
  824. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/store/test_compression_facts.py +0 -0
  825. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/store/test_compression_publication.py +0 -0
  826. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/store/test_compression_revisions.py +0 -0
  827. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/store/test_content_index.py +0 -0
  828. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/store/test_content_index_refresh.py +0 -0
  829. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/store/test_recommendation_facts.py +0 -0
  830. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/store/test_recommendation_queries.py +0 -0
  831. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/store/test_refresh_callbacks.py +0 -0
  832. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/store/test_refresh_parallel.py +0 -0
  833. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/store/test_store_dashboard_queries.py +0 -0
  834. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/store/test_store_large_batches.py +0 -0
  835. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/store/test_store_query_sql.py +0 -0
  836. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/store/test_usage_deduplication.py +0 -0
  837. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/store/test_usage_deduplication_migration.py +0 -0
  838. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/store_dashboard_helpers.py +0 -0
  839. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/test_check_dashboard_source_budgets.py +0 -0
  840. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/usage_drain/model_test_helpers.py +0 -0
  841. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/usage_drain/test_usage_drain_allowance_fits.py +0 -0
  842. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/usage_drain/test_usage_drain_boundary_delta.py +0 -0
  843. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/usage_drain/test_usage_drain_boundary_delta_summary.py +0 -0
  844. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/usage_drain/test_usage_drain_boundary_summary.py +0 -0
  845. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/usage_drain/test_usage_drain_error_diagnostics.py +0 -0
  846. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/usage_drain/test_usage_drain_feature_history.py +0 -0
  847. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/usage_drain/test_usage_drain_one_percent_capacity.py +0 -0
  848. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/usage_drain/test_usage_drain_predictive.py +0 -0
  849. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/usage_drain/test_usage_drain_regime_segments.py +0 -0
  850. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/usage_drain/test_usage_drain_regression.py +0 -0
  851. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/usage_drain/test_usage_drain_report_helpers.py +0 -0
  852. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/usage_drain/test_usage_drain_report_records.py +0 -0
  853. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/usage_drain/test_usage_drain_reports.py +0 -0
  854. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/usage_drain/test_usage_drain_state_buckets.py +0 -0
  855. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/usage_drain/test_usage_drain_state_diagnostics.py +0 -0
  856. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/usage_drain/test_usage_drain_summary_metrics.py +0 -0
  857. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/usage_drain/test_usage_drain_thread_curves.py +0 -0
  858. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/usage_drain/test_usage_drain_token_components.py +0 -0
  859. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/usage_drain/test_usage_drain_transition_gates.py +0 -0
  860. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/usage_drain/test_usage_drain_transition_metrics.py +0 -0
  861. {codex_usage_tracking-0.19.0 → codex_usage_tracking-0.21.0}/tests/usage_drain/test_usage_drain_walk_forward.py +0 -0
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "codex-usage-tracker",
3
- "version": "0.19.0",
3
+ "version": "0.21.0",
4
4
  "description": "Unofficial local Codex usage dashboard and MCP diagnostics from local session logs.",
5
5
  "author": {
6
6
  "name": "Douglas Monsky"
@@ -2,6 +2,40 @@
2
2
 
3
3
  ## Unreleased
4
4
 
5
+ ## 0.21.0 - 2026-07-17
6
+
7
+ - Keep the macOS dashboard available at a stable, localhost-only URL with a
8
+ login LaunchAgent, explicit port-collision handling, health checks, and
9
+ install, status, and uninstall commands.
10
+ - Preserve responsive inline thread expansion while bounding initial work and
11
+ polishing progressive call loading, retry behavior, and row presentation.
12
+ - Preserve full-width Windows filesystem identifiers so distinct sources do
13
+ not collapse during aggregate usage ingestion.
14
+ - Ingest aggregate `response.completed` telemetry from local
15
+ `codex-completions*.jsonl` exporter files and conservatively reconcile exact
16
+ Fast/Standard service-tier evidence to canonical calls without retaining raw
17
+ response bodies or arbitrary OTLP attributes.
18
+ - Show exact service tier separately from the existing Fast proxy in Calls,
19
+ details, and CSV exports; older or unmatched history remains Unknown.
20
+ - Apply documented model-family Fast multipliers to confirmed Codex credit
21
+ estimates with source URL/date/confidence and local overrides while leaving
22
+ standard-credit allowance calibration unchanged.
23
+ - Cache Standard, Batch, Flex, and Priority API pricing together, select the
24
+ observed tier per call, and expose Standard/Priority cost scenarios plus an
25
+ explicit local billing basis without applying ChatGPT Fast multipliers to API
26
+ USD estimates.
27
+ - Preserve exact response tiers in dashboard labels and CSV contracts, clear
28
+ OTel staging on confirmed database reset, and make incremental source cursors
29
+ descriptor-safe across concurrent file rotation. Verify a bounded content
30
+ anchor before resuming so same-inode rewrites cannot silently skip telemetry.
31
+
32
+ ## 0.20.0 - 2026-07-16
33
+
34
+ - Reinvent the Threads tab around inline row expansion, progressively loading and virtualizing every call in the selected thread while preserving explicit investigator actions, deep links, responsive layouts, retry recovery, and aggregate-first privacy boundaries.
35
+ - Complete the Simplified Chinese dashboard experience across React views, visualization metadata, tables, accessibility text, CLI help, and dashboard lifecycle messages while preserving user-provided data verbatim.
36
+ - Improve the Overview token-flow chart at constrained desktop widths with a taller single-column layout, larger Sankey node gaps, and label-safe padding; keep virtualized evidence-table actions on one row.
37
+ - Apply official long-context input, cached-input, and output price multipliers to concrete calls above 272K input tokens when the selected OpenAI service tier publishes long-context rates, while keeping aggregate summaries from being incorrectly thresholded.
38
+
5
39
  ## 0.19.0 - 2026-07-15
6
40
 
7
41
  - Redesign Limits Intelligence around weekly credits-per-percentage capacity
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codex-usage-tracking
3
- Version: 0.19.0
3
+ Version: 0.21.0
4
4
  Summary: Unofficial local Codex plugin and dashboard for investigating aggregate token usage, costs, caching, and thread patterns.
5
5
  Author: Douglas Monsky
6
6
  License-Expression: MIT
@@ -237,12 +237,12 @@ The tracker cannot read your logged-in ChatGPT plan or live remaining usage auto
237
237
 
238
238
  - Local SQLite index at `~/.codex-usage-tracker/usage.sqlite3`.
239
239
  - Static dashboard generation plus localhost live refresh.
240
- - `Overview`, `Investigate`, `Calls`, `Threads`, `Limits`, and `Diagnostics` dashboard views, including evidence-graded weekly allowance analysis and on-demand usage-drain report runs.
240
+ - `Overview`, `Investigate`, `Calls`, `Threads`, `Limits`, and `Diagnostics` dashboard views, including responsive token-flow visualization, evidence-graded weekly allowance analysis, and on-demand usage-drain report runs.
241
241
  - Active-only dashboards by default, with an explicit `All history` toggle for archived sessions.
242
242
  - CLI summaries, queries, CSV export, dashboard generation, doctor checks, and support bundles.
243
243
  - MCP tools for Codex sessions that want to query local usage data.
244
244
  - Companion Codex skills for operational setup and conversational usage analysis.
245
- - Optional local pricing, Codex credit, allowance, threshold, project alias, and privacy-mode configuration.
245
+ - Optional local pricing, Codex credit, allowance, threshold, project alias, and privacy-mode configuration, including per-call long-context pricing above 272K input tokens for OpenAI service tiers that publish long-context rates.
246
246
 
247
247
  ## Dashboard Language
248
248
 
@@ -262,7 +262,7 @@ CODEX_USAGE_TRACKER_LANG=vi codex-usage-tracker serve-dashboard --open
262
262
 
263
263
  The dashboard also includes a language selector. Browser selections are stored locally and can override the generated default for that browser.
264
264
 
265
- Supported dashboard locales include English, Vietnamese, Spanish, French, German, Portuguese, Japanese, Simplified Chinese, Korean, Russian, Italian, and Arabic. This localizes dashboard UI text, not raw Codex log content, thread names, project names, paths, full CLI output, or data exports.
265
+ Supported dashboard locales include English, Vietnamese, Spanish, French, German, Portuguese, Japanese, Simplified Chinese, Korean, Russian, Italian, and Arabic. Simplified Chinese also localizes CLI help and dashboard lifecycle messages. Localization never rewrites raw Codex log content, thread names, project names, paths, or data exports.
266
266
 
267
267
  ### Adding A Dashboard Language
268
268
 
@@ -189,12 +189,12 @@ The tracker cannot read your logged-in ChatGPT plan or live remaining usage auto
189
189
 
190
190
  - Local SQLite index at `~/.codex-usage-tracker/usage.sqlite3`.
191
191
  - Static dashboard generation plus localhost live refresh.
192
- - `Overview`, `Investigate`, `Calls`, `Threads`, `Limits`, and `Diagnostics` dashboard views, including evidence-graded weekly allowance analysis and on-demand usage-drain report runs.
192
+ - `Overview`, `Investigate`, `Calls`, `Threads`, `Limits`, and `Diagnostics` dashboard views, including responsive token-flow visualization, evidence-graded weekly allowance analysis, and on-demand usage-drain report runs.
193
193
  - Active-only dashboards by default, with an explicit `All history` toggle for archived sessions.
194
194
  - CLI summaries, queries, CSV export, dashboard generation, doctor checks, and support bundles.
195
195
  - MCP tools for Codex sessions that want to query local usage data.
196
196
  - Companion Codex skills for operational setup and conversational usage analysis.
197
- - Optional local pricing, Codex credit, allowance, threshold, project alias, and privacy-mode configuration.
197
+ - Optional local pricing, Codex credit, allowance, threshold, project alias, and privacy-mode configuration, including per-call long-context pricing above 272K input tokens for OpenAI service tiers that publish long-context rates.
198
198
 
199
199
  ## Dashboard Language
200
200
 
@@ -214,7 +214,7 @@ CODEX_USAGE_TRACKER_LANG=vi codex-usage-tracker serve-dashboard --open
214
214
 
215
215
  The dashboard also includes a language selector. Browser selections are stored locally and can override the generated default for that browser.
216
216
 
217
- Supported dashboard locales include English, Vietnamese, Spanish, French, German, Portuguese, Japanese, Simplified Chinese, Korean, Russian, Italian, and Arabic. This localizes dashboard UI text, not raw Codex log content, thread names, project names, paths, full CLI output, or data exports.
217
+ Supported dashboard locales include English, Vietnamese, Spanish, French, German, Portuguese, Japanese, Simplified Chinese, Korean, Russian, Italian, and Arabic. Simplified Chinese also localizes CLI help and dashboard lifecycle messages. Localization never rewrites raw Codex log content, thread names, project names, paths, or data exports.
218
218
 
219
219
  ### Adding A Dashboard Language
220
220
 
@@ -17,6 +17,15 @@ Shareable outputs remain aggregate-first and must omit indexed/raw content unles
17
17
  ## Boundaries
18
18
 
19
19
  - `parser.py` converts local JSONL events into aggregate `UsageEvent` records. It also attaches metadata-only call-origin categories, diagnostic facts from `diagnostic_facts.py`, archived-session flags, conservative thread keys, source cursors, and parser diagnostics.
20
+ - `parser/otel.py`, `store/otel_ingest.py`, and `store/otel_reconciliation.py`
21
+ provide aggregate-only completion enrichment from local
22
+ `~/.codex-usage-tracker/otel/codex-completions*.jsonl` files. The importer
23
+ retains only approved completion identifiers, token counters, model/effort,
24
+ application version, and service-tier metadata; response bodies and arbitrary
25
+ OTLP attributes are never persisted. Reconciliation requires one canonical
26
+ call group with the same conversation id and all four token counters. Model
27
+ and effort narrow a match when both sides provide them, but timestamps are not
28
+ identity evidence.
20
29
  - `store/content_index.py` owns normalized local content-index population and cleanup. It may persist bounded local snippets, tool-call metadata, command roots/labels, file path hashes/basenames, parser adapter metadata, source provenance, parse warnings, and FTS5 search rows. Investigation/report builders may persist bounded run summaries in `investigation_runs`. These surfaces must not feed raw/indexed content into default CSV, dashboard HTML, support bundle, or aggregate report payloads.
21
30
  - `call_origin.py` owns the pure call-origin classifier and migrated-row fallback. It must not open source JSONL files; source-log reads belong in refresh/indexing or explicit context loading.
22
31
  - `schema.py` owns persisted SQLite columns and migrations. Add columns or tables there before changing refresh, export, or MCP behavior.
@@ -62,6 +71,10 @@ Shareable outputs remain aggregate-first and must omit indexed/raw content unles
62
71
  totals through `canonical_usage_events`. New physical-row investigation
63
72
  surfaces must be bounded, explicitly labeled, and tested against an
64
73
  original/copy/new-call fixture.
74
+ 15. Treat service tier as exact only when a completion explicitly reports it, or
75
+ when Codex `0.143.0` or newer omits it under the documented Standard
76
+ protocol. Older or unmatched calls remain Unknown. Latency and reasoning
77
+ effort are useful throughput signals, not proof of Fast usage.
65
78
 
66
79
  Normal aggregate responses use a 64-entry, 256-KiB-per-entry process cache.
67
80
  Allowance history and diagnostics use a separate four-entry, 8-MiB-per-entry
@@ -1466,4 +1466,38 @@ Most setup and file-writing commands accept `--json` and return a schema-specifi
1466
1466
  - `init-thresholds --json`, `init-projects --json`
1467
1467
  - `support-bundle --json`
1468
1468
 
1469
+ Refresh and rebuild payloads add bounded OTel counters under
1470
+ `parser_diagnostics`: `otel_files_scanned`, `otel_imported`,
1471
+ `otel_duplicates`, `otel_matched`, `otel_pending`, `otel_ambiguous`, and
1472
+ `otel_conflicts` (zero-valued counters may be omitted from the immediate JSON
1473
+ payload). Stored refresh metadata keeps the same keys with zero defaults so
1474
+ localhost status is stable. These surfaces never expose OTel source paths,
1475
+ semantic fingerprints, response bodies, arbitrary attributes, or staging ids.
1476
+
1477
+ Aggregate call rows may add nullable `service_tier`, `fast`,
1478
+ `service_tier_source`, and `service_tier_confidence` fields. `service_tier`
1479
+ preserves the exact normalized response value such as `priority`, `default`,
1480
+ `standard`, `flex`, or `batch`; `fast` is the derived speed classification.
1481
+
1482
+ Cost-annotated rows may add `standard_cost_usd`, `priority_cost_usd`,
1483
+ `pricing_service_tier`, `billing_basis`, and
1484
+ `cost_semantics="api_token_estimate"`. `estimated_cost_usd` remains the
1485
+ API-token-equivalent estimate selected from the observed tier when pricing-v2
1486
+ contains that table. `billing_basis` is `unknown`, `chatgpt_credits`, or
1487
+ `api_tokens` and describes applicability rather than changing the observed tier.
1488
+
1489
+ Credit-annotated rows may also add `standard_usage_credits`,
1490
+ `fast_usage_credits`, `usage_credit_multiplier`,
1491
+ `usage_credit_multiplier_source`, `usage_credit_multiplier_source_url`,
1492
+ `usage_credit_multiplier_fetched_at`, and
1493
+ `usage_credit_multiplier_confidence`. These are ChatGPT-equivalent credit
1494
+ scenarios and are never used as generic multipliers for API USD. `fast: null`
1495
+ means Unknown; clients must not replace it with the separate throughput proxy.
1496
+ CSV export includes the exact tier, both scenario families, multiplier
1497
+ provenance, and the separately named proxy candidate.
1498
+
1499
+ `rebuild-index` retains aggregate OTel staging for reconciliation. Confirmed
1500
+ `reset-db --yes` clears both `otel_completion_events` and
1501
+ `otel_completion_sources` along with the other tracker-owned rows.
1502
+
1469
1503
  `context` already returns JSON because it is an explicit on-demand context request. Treat `codex-usage-tracker-context-v1` output as sensitive local context even though it is redacted and size-limited by default. `max_entries=0` requests all matching entries and `max_chars=0` removes the character cap for that explicit request. Tool output and compacted replacement history are omitted unless explicitly requested. Compaction entries may include metadata such as `replacement_history_available`, `replacement_entry_count`, and `replacement_history_included`; replacement text appears only when `include_compaction_history` is true for that local request. Evidence responses include `action_timing`, derived from timestamps in the same selected-turn source scan, plus per-entry `action_timing` fields such as `since_turn_start_ms`, `since_previous_entry_ms`, and `reported_duration_ms` when available. MCP returns `codex-usage-tracker-context-disabled-v1` when raw context loading has not been explicitly enabled with `CODEX_USAGE_TRACKER_ALLOW_RAW_CONTEXT=1`.
@@ -81,6 +81,26 @@ codex-usage-tracker serve-dashboard --no-refresh --open
81
81
  codex-usage-tracker serve-dashboard --no-context-api --open
82
82
  ```
83
83
 
84
+ Keep the live dashboard available across terminal and Codex task lifetimes on
85
+ macOS with the user LaunchAgent commands:
86
+
87
+ ```bash
88
+ codex-usage-tracker dashboard-service install
89
+ codex-usage-tracker dashboard-service status
90
+ codex-usage-tracker dashboard-service uninstall
91
+ ```
92
+
93
+ The persistent service defaults to `http://127.0.0.1:47821`, starts at login,
94
+ restarts after failure, and never opens a browser automatically. Installation
95
+ refuses an occupied port rather than silently changing the URL; use
96
+ `dashboard-service install --port PORT` for an explicit alternative. These
97
+ management actions are macOS-only. The foreground `serve-dashboard` command is
98
+ cross-platform and keeps its existing default port `8765`.
99
+
100
+ The persistent process starts with the cached aggregate index so the fixed URL
101
+ binds promptly. Its Refresh and Live controls remain the explicit way to rescan
102
+ Codex logs.
103
+
84
104
  `serve-dashboard --context-api explicit` is the default and keeps context loading as an explicit per-row action. `serve-dashboard --no-context-api` or `--context-api disabled` starts with context loading off; a token-protected button in the local details panel can enable it without restarting the server.
85
105
 
86
106
  `open-dashboard` and `serve-dashboard` refresh active-session logs before opening by default. `serve-dashboard --open` opens the React dashboard; the legacy dashboard remains available at `/dashboard.html` on the same localhost server. Use `--no-refresh` only for an intentionally cached snapshot. The lower-level `dashboard` command writes from the current SQLite index and does not rescan logs.
@@ -6,15 +6,37 @@ This guide uses synthetic aggregate data. The screenshots do not contain real pr
6
6
 
7
7
  ## Open The Dashboard
8
8
 
9
- For the best experience, run the localhost dashboard server:
9
+ On macOS, install the persistent localhost dashboard once:
10
10
 
11
11
  ```bash
12
12
  codex-usage-tracker setup
13
13
  codex-usage-tracker update-pricing
14
14
  codex-usage-tracker update-rate-card
15
+ codex-usage-tracker dashboard-service install
16
+ codex-usage-tracker dashboard-service status
17
+ open http://127.0.0.1:47821
18
+ ```
19
+
20
+ The LaunchAgent starts at login, restarts after a failure, stays bound to
21
+ `127.0.0.1`, and does not open browser tabs automatically. If port `47821` is
22
+ already owned by another process, installation refuses the collision; use
23
+ `dashboard-service install --port PORT` to choose and persist a different
24
+ address. Remove the managed service with
25
+ `codex-usage-tracker dashboard-service uninstall`.
26
+
27
+ Persistent startup serves the cached aggregate index immediately. Use Refresh
28
+ or Live in the dashboard to rescan Codex logs after the page is reachable.
29
+
30
+ For Linux, Windows, or an on-demand macOS session, run the foreground server:
31
+
32
+ ```bash
33
+ codex-usage-tracker setup
15
34
  codex-usage-tracker serve-dashboard --open
16
35
  ```
17
36
 
37
+ The foreground command retains its existing default port `8765` and stops when
38
+ its process exits.
39
+
18
40
  For optional allowance context, initialize a local template and copy values from Codex Usage or `/status`:
19
41
 
20
42
  ```bash
@@ -83,6 +105,7 @@ Open `Overview` when you want a quick read on current aggregate usage before sor
83
105
  - Metric cards summarize loaded aggregate rows without exposing prompts, assistant text, or raw tool output.
84
106
  - Default totals exclude only strict clone/copy fingerprint matches while preserving every physical source row in the local index. The environment status strip shows how many copied rows were excluded; hover it to compare canonical and physical row counts.
85
107
  - Time-series charts open on the most recent dates first and can scroll left for earlier history while keeping the value axis visible.
108
+ - At constrained desktop widths, the analysis charts stack so the token-flow diagram keeps readable label spacing; fixed-height evidence rows keep their action buttons on one line.
86
109
  - `Usage constellation` maps chronology, token volume, cache reuse, model family, waste pressure, and thread continuity in a lazy 3D view. Select a point to open Call Investigator, or switch to the synchronized evidence table for keyboard review and non-WebGL environments.
87
110
  - `Recent Calls` keeps the homepage modular: it shows the latest matching calls and lets any row open Call Investigator directly.
88
111
  - Use `Investigate` or `Calls` when you need deeper ranking, filtering, or evidence review.
@@ -116,6 +139,11 @@ Use `Calls` view when you want to inspect individual model calls.
116
139
  - Time values are shown in your browser's local date/time format while sorting and time filtering still use the logged timestamp.
117
140
  - Calls include `Duration`, derived from turn start for a new turn or the previous same-turn call end for continuations, and `Prev gap`, the elapsed time since the previous call in the resolved thread.
118
141
  - Calls view token columns separate total tokens, cached input, uncached input, and output so the accounting can be scanned without expanding a row.
142
+ - The `Service Tier` column preserves the exact response value with distinct
143
+ labels for Priority/Fast, Fast, Default/Standard, Standard, Flex, Batch, and
144
+ other bounded explicit tiers. It shows `Unknown` when completion telemetry is
145
+ absent. The detail view keeps the older throughput heuristic labeled as a
146
+ separate Fast proxy candidate rather than historical proof.
119
147
  - Source pucks are call-level estimates derived from local event metadata. `User` means the token-count segment included a user message, `Codex` means it followed tool output, compaction, or agent-continuation metadata, and `Unknown` means the source event metadata was unavailable or ambiguous.
120
148
  - Click a column header like `Time`, `Thread`, `Tokens`, `Cost`, or `Cache` to sort. Use the sort menu for `Highest Codex credits`. Click the same header again to reverse the direction.
121
149
  - Hover a row to scan a compact aggregate preview in `Call Details`; click a Calls row to open the dedicated call investigator.
@@ -135,6 +163,16 @@ Useful interpretation notes:
135
163
  - `Cached input` and `Uncached input` are split so cache behavior is visible without storing transcript text.
136
164
  - A cost with `*` means the pricing row is marked as a best-guess estimate.
137
165
  - Codex credits are estimated from aggregate input, cached-input, and output token counters. Direct model matches use the bundled OpenAI Codex rate-card snapshot; inferred labels are marked estimated, and local credit-rate overrides are marked user-provided.
166
+ - Confirmed Fast rows apply the source-stamped model-family multiplier to
167
+ ChatGPT-equivalent Codex credits. API-equivalent USD estimates instead select
168
+ the exact API tier table; the cost detail identifies whether the configured
169
+ billing basis is API tokens, ChatGPT credits, or Unknown without claiming
170
+ actual spend when the basis is unknown.
171
+ - CSV exports include exact tier/provenance, the separate Fast proxy,
172
+ Standard/Priority API cost scenarios, Standard/Fast credit scenarios,
173
+ `billing_basis`, and credit multiplier source URL/date/confidence. Missing
174
+ exact tier evidence remains blank/Unknown instead of being reconstructed from
175
+ duration or reasoning effort.
138
176
  - `Usage observed` is not a live account query. It uses the latest local Codex `token_count.rate_limits` snapshot when present; otherwise configure `~/.codex-usage-tracker/allowance.json` with values copied from Codex Settings > Usage, the Codex Usage dashboard, or `/status` when you want current remaining allowance context.
139
177
 
140
178
  ## Threads View
@@ -146,16 +184,19 @@ Use `Threads` view when you want to understand a work session as a group instead
146
184
  - Threads pages through `/api/threads` on localhost and hydrates the selected
147
185
  thread's supporting calls through `/api/thread-calls`; loaded snapshot rows
148
186
  remain the fallback.
149
- - Switch between the virtualized table, cache-efficiency frontier, and lifecycle
150
- view. Chart selections update the same selected-thread evidence used by the
151
- inspector.
187
+ - Click a thread row to load the first 100 aggregate calls directly beneath it.
188
+ - Only one thread stays expanded at a time.
189
+ - The compact default keeps the most useful comparison columns visible; use
190
+ `Columns` to reveal duration, model/effort mix, token breakdowns, and other
191
+ advanced fields without making the default leaderboard excessively wide.
192
+ - Use `Load 100 more` to request each additional page; visible progress and retry
193
+ keep large threads bounded and recoverable.
194
+ - Parent rows never open a representative call.
195
+ - Explicit child `Open` and `Copy` actions reach Call Investigator.
196
+ - Cache Frontier and Lifecycle remain secondary analysis modes.
152
197
  - Each thread row groups the filtered model calls by thread name, falling back to session id when no name is available.
153
198
  - Thread rows show latest activity, call count, model mix, effort mix, total tokens, estimated cost, Codex credits, cache ratio, and signal count.
154
199
  - Mixed model summaries prefer the primary non-review model; `codex-auto-review` appears as the thread model only for review-only threads.
155
- - Hover or keyboard-select a thread to scan its aggregate inspector. Activating
156
- a row opens the latest supporting call in Call Investigator.
157
- - The inspector's call timeline supports independent sorting, incremental
158
- disclosure, copy-link actions, and direct Call Investigator navigation.
159
200
  - Subagents with logged parent session ids are shown under the parent thread. Auto-review sessions without explicit parent ids may be attached by cwd and nearby activity and are marked as attached or inferred in the details.
160
201
 
161
202
  ### Tools And Files Explorers
@@ -32,6 +32,39 @@ identity, parser coverage, replacement, and refresh revision. Changing or removi
32
32
  a source causes its owned physical rows/materializations to be replaced in a
33
33
  transaction rather than accumulated blindly.
34
34
 
35
+ ## OTel Service-Tier Enrichment (Schemas 30–31)
36
+
37
+ Schema 30 adds nullable `service_tier`, `fast`, `service_tier_source`, and
38
+ `service_tier_confidence` columns to `usage_events`. Null means the tracker does
39
+ not have exact tier evidence; it is not interpreted as Standard.
40
+
41
+ `otel_completion_sources` records device/inode identity, size, the last complete
42
+ byte and line cursor, a bounded SHA-256 resume anchor, and an update timestamp
43
+ for each local `codex-completions*.jsonl` file. The default directory is the
44
+ `otel` sibling of the selected database (`~/.codex-usage-tracker/otel` for the
45
+ default database), so alternate databases do not ingest another tracker
46
+ instance's telemetry.
47
+ `otel_completion_events` stores one semantic
48
+ fingerprint plus aggregate matching fields, the exact normalized response tier,
49
+ derived Fast classification, tier provenance, a
50
+ bounded match status (`pending`, `matched`, `ambiguous`, `conflict`, or
51
+ `invalid`), and the matched aggregate record id when available.
52
+
53
+ Append refresh resumes after the last complete JSONL line, retries a partial
54
+ trailing line, and restarts a cursor after rotation, truncation, or a mismatched
55
+ resume anchor. Schema 31 adds the anchor; a legacy cursor without one is safely
56
+ reread once and then anchored. Cursor identity, size, offsets, and anchor bytes
57
+ come from the open descriptor so a path rotation or same-inode replacement
58
+ cannot persist an offset against different content. Rebuild keeps
59
+ the aggregate OTel staging rows, resets their match pointers, and reconciles
60
+ them against the rebuilt canonical calls. A match requires conversation id plus
61
+ input, cached-input, output, and reasoning-output counters to resolve to exactly
62
+ one canonical group. Existing contradictory tier values are preserved and the
63
+ completion is marked as a conflict.
64
+
65
+ `reset-db --yes` is intentionally different from rebuild: it deletes both OTel
66
+ staging tables and their source cursors along with the other tracker-owned rows.
67
+
35
68
  ## Allowance Intelligence Materializations
36
69
 
37
70
  `allowance_observations` stores normalized structured weekly and 5-hour snapshots,
@@ -68,7 +101,7 @@ Identical keys reuse a completed snapshot or the same in-flight job.
68
101
 
69
102
  ## Privacy And Rebuilds
70
103
 
71
- Allowance materializations and logical identity contain aggregate metadata only.
104
+ Allowance materializations, OTel completion staging, and logical identity contain aggregate metadata only.
72
105
  They do not contain prompts, assistant text, tool output, or raw JSONL content.
73
106
  Rebuilds can recreate them from physical aggregate rows and source provenance.
74
107
  The local content index is a separate opt-in investigation layer and is not used
@@ -174,8 +174,8 @@ python scripts/smoke_installed_package.py --docker
174
174
  To verify the public PyPI package instead of the local checkout:
175
175
 
176
176
  ```bash
177
- python scripts/smoke_installed_package.py --from-pypi --version 0.19.0
178
- python scripts/smoke_installed_package.py --docker --from-pypi --version 0.19.0
177
+ python scripts/smoke_installed_package.py --from-pypi --version 0.21.0
178
+ python scripts/smoke_installed_package.py --docker --from-pypi --version 0.21.0
179
179
  ```
180
180
 
181
181
  `scripts/check_release.py` treats these public-package smoke commands as release-state claims. Keep their `--version` and `codex-usage-tracking==...` values aligned with `pyproject.toml`; the release gate fails when the docs claim a different public version. It also checks that install docs point at the real PyPI distribution, `codex-usage-tracking`, and keep the warning that `codex-usage-tracker` is a different PyPI package.
@@ -11,9 +11,15 @@ python -m pip install --user pipx
11
11
  python -m pipx ensurepath
12
12
  pipx install codex-usage-tracking
13
13
  codex-usage-tracker setup
14
- codex-usage-tracker serve-dashboard --open
14
+ codex-usage-tracker dashboard-service install # macOS
15
15
  ```
16
16
 
17
+ On macOS, the persistent service starts at login, restarts after a failure, and
18
+ keeps the live dashboard available at `http://127.0.0.1:47821` without opening
19
+ browser tabs automatically. Check it with
20
+ `codex-usage-tracker dashboard-service status`. On Linux and Windows, or for a
21
+ one-time macOS session, use `codex-usage-tracker serve-dashboard --open`.
22
+
17
23
  Use the Python launcher that is normal for your platform:
18
24
 
19
25
  - macOS/Linux: `python3` may be the right command instead of `python`.
@@ -112,6 +118,25 @@ codex-usage-tracker install-plugin --python .venv/bin/python --force
112
118
 
113
119
  ## Local Dashboard
114
120
 
121
+ On macOS, install the localhost-only login service once:
122
+
123
+ ```bash
124
+ codex-usage-tracker dashboard-service install
125
+ codex-usage-tracker dashboard-service status
126
+ open http://127.0.0.1:47821
127
+ ```
128
+
129
+ The service uses fixed port `47821` by default and never exposes a non-loopback
130
+ host. If another local process owns that port, installation stops with a clear
131
+ error instead of changing the URL; choose an explicit alternative with
132
+ `codex-usage-tracker dashboard-service install --port PORT`. To remove only the
133
+ tracker-managed LaunchAgent, run
134
+ `codex-usage-tracker dashboard-service uninstall`.
135
+
136
+ The login service binds promptly from the cached aggregate index. Use the
137
+ dashboard's Refresh or Live controls when you want to rescan Codex logs; the
138
+ initial background process does not hold the port closed during a full rescan.
139
+
115
140
  Generate a static dashboard:
116
141
 
117
142
  ```bash
@@ -126,6 +151,9 @@ codex-usage-tracker serve-dashboard --open
126
151
  codex-usage-tracker serve-dashboard --no-context-api --open
127
152
  ```
128
153
 
154
+ Foreground `serve-dashboard` remains the cross-platform, on-demand option and
155
+ retains its existing default port `8765`.
156
+
129
157
  The server binds to localhost, requires a per-server token for refresh/context endpoints, and rejects non-loopback `Host` or cross-origin `Origin` headers.
130
158
  `--no-context-api` starts context loading off; the details panel can enable it later without restarting the server.
131
159
 
@@ -24,12 +24,12 @@ Not guaranteed:
24
24
 
25
25
  ## 1. Public Install And Package Metadata
26
26
 
27
- - [x] Verify the current public PyPI version is visible as `0.19.0`: `python -c "import json, urllib.request; print(json.load(urllib.request.urlopen('https://pypi.org/pypi/codex-usage-tracking/json'))['info']['version'])"`.
28
- - [x] Verify public venv install for `0.19.0`: `python -m venv /tmp/codex-usage-pypi-smoke && . /tmp/codex-usage-pypi-smoke/bin/activate && python -m pip install codex-usage-tracking==0.19.0 && codex-usage-tracker --version`.
29
- - [x] Verify public pipx install path for `0.19.0`: `PIPX_HOME=/tmp/codex-usage-pipx-home PIPX_BIN_DIR=/tmp/codex-usage-pipx-bin pipx install codex-usage-tracking==0.19.0 && /tmp/codex-usage-pipx-bin/codex-usage-tracker --version`.
27
+ - [x] Verify the current public PyPI version is visible as `0.21.0`: `python -c "import json, urllib.request; print(json.load(urllib.request.urlopen('https://pypi.org/pypi/codex-usage-tracking/json'))['info']['version'])"`.
28
+ - [x] Verify public venv install for `0.21.0`: `python -m venv /tmp/codex-usage-pypi-smoke && . /tmp/codex-usage-pypi-smoke/bin/activate && python -m pip install codex-usage-tracking==0.21.0 && codex-usage-tracker --version`.
29
+ - [x] Verify public pipx install path for `0.21.0`: `PIPX_HOME=/tmp/codex-usage-pipx-home PIPX_BIN_DIR=/tmp/codex-usage-pipx-bin pipx install codex-usage-tracking==0.21.0 && /tmp/codex-usage-pipx-bin/codex-usage-tracker --version`.
30
30
  - [x] Verify installed package resources from a built wheel: `python scripts/smoke_installed_package.py`.
31
31
  - [x] Verify installed package resources in Linux Docker: `python scripts/smoke_installed_package.py --docker`.
32
- - [x] Verify public PyPI package in Docker: `python scripts/smoke_installed_package.py --docker --from-pypi --version 0.19.0`.
32
+ - [x] Verify public PyPI package in Docker: `python scripts/smoke_installed_package.py --docker --from-pypi --version 0.21.0`.
33
33
  - [x] Verify PyPI metadata names remain unchanged: `python scripts/check_release.py`.
34
34
  - [x] Add Python 3.14 as an official support target after CI, package classifiers, docs, and installed-package smoke coverage were added. Docker smoke coverage uses `python:3.14-slim` by default. Track this in issue #12.
35
35
 
@@ -134,14 +134,14 @@ Not guaranteed:
134
134
 
135
135
  ## Evidence References
136
136
 
137
- These references are the concrete proof behind completed checklist items. Public package smoke commands are version-specific to `0.19.0`; all repo tests use synthetic or aggregate-only data.
137
+ These references are the concrete proof behind completed checklist items. Public package smoke commands are version-specific to `0.21.0`; all repo tests use synthetic or aggregate-only data.
138
138
 
139
139
  ### Public Install And Package Metadata
140
140
 
141
141
  - Public PyPI version, public venv install, and public pipx install are proven by the exact public-install commands in section 1.
142
142
  - Built-wheel and installed-resource coverage is proven by `scripts/smoke_installed_package.py` and `tests/test_cli_release.py::test_installed_package_smoke_checks_help_for_stable_commands`.
143
143
  - Linux package-resource coverage is proven by `scripts/smoke_installed_package.py --docker`.
144
- - Public PyPI Docker coverage is proven by `scripts/smoke_installed_package.py --docker --from-pypi --version 0.19.0`.
144
+ - Public PyPI Docker coverage is proven by `scripts/smoke_installed_package.py --docker --from-pypi --version 0.21.0`.
145
145
  - PyPI metadata, package/distribution names, package resources, source/wheel member names, Python 3.10-3.14 support metadata, CI workflow requirements, publish workflow safety text, and tracked secret patterns are proven by `scripts/check_release.py`, `scripts/check_release.py --dist`, and `tests/test_cli_release.py::test_release_check_script_passes`.
146
146
 
147
147
  ### Upgrade And Migration
@@ -219,8 +219,8 @@ These references are the concrete proof behind completed checklist items. Public
219
219
  - Publish workflow package name, Trusted Publishing, TestPyPI/PyPI job presence, event guards, no push/PR publishing, no token/password publishing, and manual PyPI main/tag preflight are proven by `scripts/check_release.py::_check_publish_workflow`.
220
220
  - The GitHub `pypi` environment gate is proven by `gh api repos/douglasmonsky/codex-usage-tracker/environments/pypi`, which reports a `required_reviewers` protection rule and `can_admins_bypass=false`.
221
221
  - Dist filename and wheel/sdist member checks are proven by `python -m build`, `python -m twine check dist/*`, and `python scripts/check_release.py --dist`.
222
- - TestPyPI publish process is proven by a workflow-dispatch run on `main`, followed by TestPyPI metadata and clean virtualenv install checks for `codex-usage-tracking==0.19.0`.
223
- - PyPI publish process is proven by a workflow-dispatch run on `main`, protected `pypi` environment approval, PyPI metadata visibility, clean virtualenv install, temporary pipx install, and Docker public-package smoke for `codex-usage-tracking==0.19.0`.
222
+ - TestPyPI publish process is proven by a workflow-dispatch run on `main`, followed by TestPyPI metadata and clean virtualenv install checks for `codex-usage-tracking==0.21.0`.
223
+ - PyPI publish process is proven by a workflow-dispatch run on `main`, protected `pypi` environment approval, PyPI metadata visibility, clean virtualenv install, temporary pipx install, and Docker public-package smoke for `codex-usage-tracking==0.21.0`.
224
224
  - Release recovery documentation is proven by `scripts/check_release.py` required-file and docs checks.
225
225
 
226
226
  ### Known Limitations
@@ -14,7 +14,7 @@ Enable optional cost estimates:
14
14
  codex-usage-tracker update-pricing
15
15
  ```
16
16
 
17
- This fetches OpenAI text-token pricing from `https://developers.openai.com/api/docs/pricing.md`, parses the selected tier, and writes a source-stamped local cache to `~/.codex-usage-tracker/pricing.json`. The default tier is `standard`; other supported tiers are `batch`, `flex`, and `priority`.
17
+ This fetches OpenAI text-token pricing from `https://developers.openai.com/api/docs/pricing.md` once, parses the `standard`, `batch`, `flex`, and `priority` tables, and writes a source-stamped pricing-v2 cache to `~/.codex-usage-tracker/pricing.json`. The top-level `models` object remains the selected-tier compatibility projection, while `api_service_tiers` retains every published table so mixed historical calls can be priced by their observed response tier.
18
18
 
19
19
  The updater supports both the older four-value pricing rows and the newer five-value rows used by GPT-5.6 for input, cached input, cache writes, and output. GPT-5.6 Sol, Terra, and Luna are loaded from the published table, and the documented `gpt-5.6` alias resolves to `gpt-5.6-sol`. Current Codex logs do not expose a separate cache-write token counter, so cost estimates use the logged uncached input, cached input, and output counters without adding an explicit cache-write charge.
20
20
 
@@ -39,6 +39,20 @@ codex-usage-tracker init-pricing
39
39
 
40
40
  Edit `~/.codex-usage-tracker/pricing.json` with USD-per-million-token rates for local overrides or models that are not present in the OpenAI pricing table. Normal reports never contact the network; only `update-pricing` refreshes the local pricing cache.
41
41
 
42
+ ### Billing Basis And Tier Scenarios
43
+
44
+ OTel `service_tier=priority` proves the response tier, but it does not prove whether the call used ChatGPT/Codex credits or an API key. Set the top-level local `billing_basis` only when you know the billing path:
45
+
46
+ ```json
47
+ {
48
+ "billing_basis": "unknown"
49
+ }
50
+ ```
51
+
52
+ Supported values are `unknown`, `chatgpt_credits`, and `api_tokens`. `update-pricing` preserves this local value. Invalid values make the pricing config invalid instead of silently guessing.
53
+
54
+ `estimated_cost_usd` is always an API-token-equivalent estimate. With pricing-v2, it selects the exact observed API table for `priority`, `default`/`standard`, `flex`, or `batch`; it never applies a generic ChatGPT Fast multiplier. Each annotated row also exposes `standard_cost_usd`, `priority_cost_usd`, `pricing_service_tier`, `billing_basis`, and `cost_semantics` so an unknown billing path can be reported as bounded scenarios rather than false actual spend. Pricing-v1 files remain readable and keep their existing single-table behavior.
55
+
42
56
  ## Codex Credits
43
57
 
44
58
  `Codex Credits` is a calculated usage number, not a dashboard-only unit. The tracker uses Codex's logged aggregate token counters and the bundled OpenAI Codex rate-card snapshot to estimate credits consumed by local Codex calls.
@@ -62,6 +76,34 @@ codex-usage-tracker update-rate-card
62
76
 
63
77
  The local snapshot is written to `~/.codex-usage-tracker/rate-card.json`. Each bundled rate and alias includes source URL, fetched date, tier, confidence, and alias rationale where applicable. Use `--source-file` only when you have a reviewed replacement JSON snapshot you want the tracker to validate and use.
64
78
 
79
+ ### Confirmed Fast Usage
80
+
81
+ When a call has exact OTel evidence that `fast=1`, the tracker first computes
82
+ `standard_usage_credits`, then applies the documented model-family Fast
83
+ multiplier to produce `usage_credits`:
84
+
85
+ - GPT-5.6 family: `2.5x`
86
+ - GPT-5.5 family: `2.5x`
87
+ - GPT-5.4 family: `2.0x`
88
+
89
+ The row also exposes `fast_usage_credits`, `usage_credit_multiplier`, and
90
+ source URL/date/confidence fields so the adjustment is auditable independently
91
+ from OTel tier evidence. A confirmed
92
+ Fast call whose model has no documented multiplier stays at `1.0x` and is
93
+ marked `no_documented_fast_multiplier`; the tracker does not guess. Standard
94
+ and Unknown-tier calls also stay at `1.0x`.
95
+
96
+ The bundled `fast_multipliers` rate-card entries are source-stamped. A local
97
+ `allowance.json` may override a model-family entry with `multiplier`,
98
+ `source_name`, `source_url`, and `fetched_at`; valid local entries are marked
99
+ `user_override`, while malformed entries do not replace the bundled value.
100
+
101
+ This adjustment applies only to Codex/ChatGPT usage-credit estimates. It never
102
+ changes API USD estimates, which use the observed API service-tier table and
103
+ aggregate token counters. Allowance-drain calibration uses the
104
+ standard-credit baseline so a newly observed Fast label does not redefine the
105
+ historical credit-to-percentage relationship.
106
+
65
107
  ## Usage Observed
66
108
 
67
109
  `Usage observed` is different from `Codex Credits`. The tracker cannot currently read your logged-in ChatGPT plan, live remaining credits, reset windows, or usage from other agentic surfaces automatically.
@@ -90,6 +132,13 @@ Configure the usage component:
90
132
  - Codex upstream log formats can change, and parser compatibility may require tracker updates before new event shapes are fully understood.
91
133
  - Pricing and rate-card sources can change outside this project. Refresh or pin local files when reports need a known source snapshot.
92
134
  - Local Codex logs may not include usage from other ChatGPT agentic surfaces that share the same allowance.
135
+ - Service tier is exact only when a local completion explicitly reports it or
136
+ Codex `0.143.0` or newer establishes Standard through omission. Older or
137
+ unmatched history remains Unknown; latency and reasoning effort cannot prove
138
+ Fast usage.
139
+ - `priority` can describe ChatGPT Fast mode or API Priority processing. The
140
+ retained telemetry does not identify authentication or billing, so leave
141
+ `billing_basis` as `unknown` unless you have independent evidence.
93
142
  - Live account allowance cannot be read automatically by this local tracker, and the dashboard does not infer live remaining allowance from the logged-in account plan.
94
143
  - Observed local-log snapshots may be stale until Codex records another model call, and may omit other agentic surfaces that share the same allowance.
95
144
  - Pricing can change after a report is generated. Use `pin-pricing` when you need reproducible historical cost estimates.