codex-usage-tracking 0.20.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 (823) hide show
  1. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/.codex-plugin/plugin.json +1 -1
  2. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/CHANGELOG.md +27 -0
  3. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/PKG-INFO +1 -1
  4. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/architecture.md +13 -0
  5. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/cli-json-schemas.md +34 -0
  6. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/cli-reference.md +20 -0
  7. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/dashboard-guide.md +44 -3
  8. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/database-schema.md +34 -1
  9. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/development.md +2 -2
  10. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/install.md +29 -1
  11. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/one-dot-oh-readiness.md +8 -8
  12. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/pricing-and-credits.md +50 -1
  13. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/privacy.md +25 -2
  14. codex_usage_tracking-0.21.0/docs/superpowers/plans/2026-07-16-otel-fast-usage-ingestion.md +1685 -0
  15. codex_usage_tracking-0.21.0/docs/superpowers/plans/2026-07-16-service-tier-billing-readiness.md +577 -0
  16. codex_usage_tracking-0.21.0/docs/superpowers/plans/2026-07-16-windows-filesystem-id-overflow.md +441 -0
  17. codex_usage_tracking-0.21.0/docs/superpowers/plans/2026-07-17-persistent-dashboard-service.md +620 -0
  18. codex_usage_tracking-0.21.0/docs/superpowers/plans/2026-07-17-threads-table-compact-redesign.md +112 -0
  19. codex_usage_tracking-0.21.0/docs/superpowers/specs/2026-07-16-otel-fast-usage-ingestion-design.md +310 -0
  20. codex_usage_tracking-0.21.0/docs/superpowers/specs/2026-07-16-windows-filesystem-id-overflow-design.md +92 -0
  21. codex_usage_tracking-0.21.0/docs/superpowers/specs/2026-07-17-persistent-dashboard-service-design.md +186 -0
  22. codex_usage_tracking-0.21.0/docs/superpowers/specs/2026-07-17-threads-table-compact-redesign-design.md +32 -0
  23. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/pyproject.toml +1 -1
  24. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/scripts/smoke_installed_package.py +1 -0
  25. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/skills/codex-usage-tracker/SKILL.md +1 -1
  26. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/skills/codex-usage-tracker/scripts/run_mcp.py +2 -2
  27. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/__init__.py +1 -1
  28. codex_usage_tracking-0.21.0/src/codex_usage_tracker/cli/dashboard_service.py +39 -0
  29. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/cli/help_i18n.py +5 -0
  30. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/cli/main.py +2 -0
  31. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/cli/parser.py +2 -0
  32. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/cli/parser_data.py +26 -0
  33. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/core/models.py +4 -0
  34. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/core/paths.py +1 -0
  35. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/core/schema.py +4 -0
  36. codex_usage_tracking-0.21.0/src/codex_usage_tracker/dashboard_service.py +360 -0
  37. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/parser/__init__.py +14 -0
  38. codex_usage_tracking-0.21.0/src/codex_usage_tracker/parser/otel.py +342 -0
  39. codex_usage_tracking-0.21.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/App.js +128 -0
  40. codex_usage_tracking-0.21.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/CallInvestigatorPage.js +6 -0
  41. codex_usage_tracking-0.21.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/CallsPage.js +16 -0
  42. codex_usage_tracking-0.21.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/ReportsPage.js +1 -0
  43. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/SettingsPage.js +1 -1
  44. codex_usage_tracking-0.21.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/ThreadsPage.css +1 -0
  45. codex_usage_tracking-0.21.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/ThreadsPage.js +6 -0
  46. codex_usage_tracking-0.21.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/contextEvidenceState.js +1 -0
  47. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/dashboardRouter.js +1 -1
  48. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/useBaseQuery.js +1 -1
  49. codex_usage_tracking-0.21.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/useInfiniteQuery.js +1 -0
  50. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/rate_cards/codex-credit-rates.json +23 -0
  51. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/skills/codex-usage-tracker/SKILL.md +1 -1
  52. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/pricing/allowance.py +6 -0
  53. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/pricing/allowance_config.py +28 -2
  54. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/pricing/allowance_rate_card.py +69 -0
  55. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/pricing/allowance_usage.py +50 -3
  56. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/pricing/api.py +2 -0
  57. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/pricing/config.py +110 -12
  58. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/pricing/costing.py +34 -2
  59. codex_usage_tracking-0.21.0/src/codex_usage_tracker/pricing/fast_tier.py +88 -0
  60. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/pricing/openai.py +31 -3
  61. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/reports/support.py +14 -1
  62. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/handler.py +7 -0
  63. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/route_inventory.py +10 -0
  64. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/routes.py +1 -0
  65. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/api.py +43 -2
  66. codex_usage_tracking-0.21.0/src/codex_usage_tracker/store/otel_ingest.py +291 -0
  67. codex_usage_tracking-0.21.0/src/codex_usage_tracker/store/otel_reconciliation.py +182 -0
  68. codex_usage_tracking-0.21.0/src/codex_usage_tracker/store/otel_schema.py +89 -0
  69. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/refresh.py +64 -2
  70. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/schema.py +5 -1
  71. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/source_replacement.py +78 -0
  72. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/sources.py +55 -24
  73. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/spans.py +6 -1
  74. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/types.py +6 -11
  75. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracking.egg-info/PKG-INFO +1 -1
  76. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracking.egg-info/SOURCES.txt +25 -0
  77. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/cli/test_cli_release.py +1 -0
  78. codex_usage_tracking-0.21.0/tests/cli/test_dashboard_service.py +466 -0
  79. codex_usage_tracking-0.21.0/tests/core/test_api_payloads.py +18 -0
  80. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/core/test_schema.py +4 -0
  81. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/dashboard/test_dashboard_payload.py +33 -0
  82. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/dashboard/test_dashboard_server_live_slices.py +6 -0
  83. codex_usage_tracking-0.21.0/tests/otel_helpers.py +245 -0
  84. codex_usage_tracking-0.21.0/tests/parser/test_otel_parser.py +163 -0
  85. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/pricing/test_allowance.py +164 -0
  86. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/pricing/test_pricing.py +211 -0
  87. codex_usage_tracking-0.21.0/tests/pricing/test_rate_card.py +101 -0
  88. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/reports/test_support.py +16 -0
  89. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/server/test_server_call_detail.py +23 -0
  90. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/store/test_compression_runs.py +2 -2
  91. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/store/test_content_query_exports.py +32 -0
  92. codex_usage_tracking-0.21.0/tests/store/test_otel_ingest.py +240 -0
  93. codex_usage_tracking-0.21.0/tests/store/test_otel_reconciliation.py +269 -0
  94. codex_usage_tracking-0.21.0/tests/store/test_otel_refresh.py +199 -0
  95. codex_usage_tracking-0.21.0/tests/store/test_otel_schema.py +79 -0
  96. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/store/test_source_records.py +29 -0
  97. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/store/test_store_dashboard_mcp.py +6 -6
  98. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/store/test_store_migrations.py +17 -13
  99. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/store/test_store_sources.py +108 -2
  100. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/usage_drain/test_usage_drain_model.py +12 -0
  101. codex_usage_tracking-0.20.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/App.js +0 -128
  102. codex_usage_tracking-0.20.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/CallInvestigatorPage.js +0 -6
  103. codex_usage_tracking-0.20.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/CallsPage.js +0 -16
  104. codex_usage_tracking-0.20.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/ReportsPage.js +0 -1
  105. codex_usage_tracking-0.20.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/ThreadsPage.css +0 -1
  106. codex_usage_tracking-0.20.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/ThreadsPage.js +0 -6
  107. codex_usage_tracking-0.20.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/contextEvidenceState.js +0 -1
  108. codex_usage_tracking-0.20.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/useInfiniteQuery.js +0 -1
  109. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/.mcp.json +0 -0
  110. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/AGENTS.md +0 -0
  111. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/CONTRIBUTING.md +0 -0
  112. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/LICENSE +0 -0
  113. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/MANIFEST.in +0 -0
  114. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/README.md +0 -0
  115. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/SECURITY.md +0 -0
  116. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/assets/icon.svg +0 -0
  117. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/adoption-hardening-roadmap.md +0 -0
  118. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/agent-maintainer-guidance.md +0 -0
  119. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/agent-maintainer-hardening-branch-roadmap.md +0 -0
  120. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/agentic-briefing-and-dogfood-roadmap.md +0 -0
  121. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/agentic-investigation-hardening-roadmap.md +0 -0
  122. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/agentic-mcp-skill-roadmap.md +0 -0
  123. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/allowance-intelligence.md +0 -0
  124. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/architecture/decisions/0001-package-domain-boundaries.md +0 -0
  125. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/architecture/decisions/0002-explicit-tach-module-inventory.md +0 -0
  126. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/architecture/decisions/0003-domain-level-tach-boundaries.md +0 -0
  127. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/architecture/decisions/0004-dashboard-typescript-boundaries.md +0 -0
  128. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/architecture/decisions/0005-dashboard-router-and-query-runtime.md +0 -0
  129. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/architecture/decisions/0006-dashboard-visualization-contract.md +0 -0
  130. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/architecture/decisions/0007-dashboard-css-ownership.md +0 -0
  131. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/architecture/decisions/0008-dashboard-usage-constellation.md +0 -0
  132. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/architecture/decisions/0009-compression-mcp-adapter.md +0 -0
  133. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/architecture/decisions/0010-recommendation-engine-boundary.md +0 -0
  134. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/architecture/decisions/0011-compression-dashboard-adapter.md +0 -0
  135. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/architecture-boundary-map.md +0 -0
  136. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/assets/dashboard-call-investigator-evidence.png +0 -0
  137. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/assets/dashboard-call-investigator-preview.png +0 -0
  138. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/assets/dashboard-call-investigator.png +0 -0
  139. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/assets/dashboard-calls-preview.png +0 -0
  140. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/assets/dashboard-calls.png +0 -0
  141. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/assets/dashboard-details.png +0 -0
  142. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/assets/dashboard-diagnostics-git-expanded.png +0 -0
  143. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/assets/dashboard-diagnostics.png +0 -0
  144. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/assets/dashboard-insights.png +0 -0
  145. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/assets/dashboard-threads.png +0 -0
  146. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/assets/frontend-rewrite-references/cache-context-lab-reference.png +0 -0
  147. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/assets/frontend-rewrite-references/call-drilldown-menu-concept-reference.png +0 -0
  148. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/assets/frontend-rewrite-references/calls-analyst-view-reference.png +0 -0
  149. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/assets/frontend-rewrite-references/calls-high-density-reference.png +0 -0
  150. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/assets/frontend-rewrite-references/command-palette-dashboard-reference.png +0 -0
  151. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/assets/frontend-rewrite-references/diagnostics-notebook-reference.png +0 -0
  152. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/assets/frontend-rewrite-references/generated-dashboard-concept-reference.png +0 -0
  153. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/assets/frontend-rewrite-references/generated-maintainer-banner-reference.png +0 -0
  154. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/assets/frontend-rewrite-references/investigator-workbench-reference.png +0 -0
  155. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/assets/frontend-rewrite-references/overview-dashboard-reference.png +0 -0
  156. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/assets/frontend-rewrite-references/projected-weekly-credits-overlap-reference.png +0 -0
  157. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/assets/frontend-rewrite-references/thread-efficiency-reference.png +0 -0
  158. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/assets/frontend-rewrite-references/usage-drain-lab-reference.png +0 -0
  159. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/assets/plugin-prompts.png +0 -0
  160. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/assets/plugin-thread-leaderboard.png +0 -0
  161. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/assets/readme-hero-2.png +0 -0
  162. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/assets/readme-hero.png +0 -0
  163. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/assets/social-preview.png +0 -0
  164. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/assets/ux/call-detail-panel.png +0 -0
  165. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/assets/ux/insight-overview.png +0 -0
  166. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/assets/ux/thread-investigation.png +0 -0
  167. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/call-drilldown-performance-checklist.md +0 -0
  168. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/complexity-hardening-roadmap.md +0 -0
  169. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/compression-lab-roadmap.md +0 -0
  170. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/dashboard-final-redesign-audit.md +0 -0
  171. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/dashboard-final-redesign-parity.md +0 -0
  172. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/dashboard-final-redesign-release-candidate.md +0 -0
  173. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/dashboard-final-redesign-roadmap.md +0 -0
  174. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/dashboard-final-redesign-spec.md +0 -0
  175. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/dashboard-overview-parity.md +0 -0
  176. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/dashboard-query-pipeline-refactor-roadmap.md +0 -0
  177. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/dashboard-route-inventory.md +0 -0
  178. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/examples/remediation-conversation.md +0 -0
  179. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/examples/token-waste-conversation.md +0 -0
  180. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/first-five-minutes.md +0 -0
  181. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/frontend-rewrite-roadmap.md +0 -0
  182. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/local-content-index-roadmap.md +0 -0
  183. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/maintainability-roadmap.md +0 -0
  184. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/maintainability-scorecard.md +0 -0
  185. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/mcp.md +0 -0
  186. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/react-dashboard-0.14-release-roadmap.md +0 -0
  187. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/superpowers/plans/2026-07-11-compression-lab-implementation.md +0 -0
  188. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/superpowers/plans/2026-07-11-page-query-progress.md +0 -0
  189. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/superpowers/plans/2026-07-14-clone-copy-deduplication.md +0 -0
  190. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/superpowers/plans/2026-07-14-limits-intelligence-redesign.md +0 -0
  191. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/superpowers/plans/2026-07-15-capacity-chart-series-encoding.md +0 -0
  192. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/superpowers/plans/2026-07-15-capacity-first-limits.md +0 -0
  193. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/superpowers/plans/2026-07-15-parallel-hardening-ci.md +0 -0
  194. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/superpowers/plans/2026-07-15-threads-inline-expansion.md +0 -0
  195. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/superpowers/specs/2026-07-11-compression-lab-design.md +0 -0
  196. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/superpowers/specs/2026-07-11-page-query-progress-design.md +0 -0
  197. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/superpowers/specs/2026-07-14-clone-copy-deduplication-design.md +0 -0
  198. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/superpowers/specs/2026-07-14-limits-intelligence-redesign-design.md +0 -0
  199. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/superpowers/specs/2026-07-15-capacity-chart-series-encoding-design.md +0 -0
  200. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/superpowers/specs/2026-07-15-capacity-first-limits-design.md +0 -0
  201. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/superpowers/specs/2026-07-15-parallel-hardening-ci-design.md +0 -0
  202. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/superpowers/specs/2026-07-15-threads-inline-expansion-design.md +0 -0
  203. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/ui-ux-improvement-plan.md +0 -0
  204. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/docs/usage-drain-modeling.md +0 -0
  205. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/scripts/benchmark_compression_lab.py +0 -0
  206. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/scripts/benchmark_dashboard_routes.py +0 -0
  207. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/scripts/benchmark_refresh_ingestion.py +0 -0
  208. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/scripts/benchmark_synthetic_history.py +0 -0
  209. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/scripts/calibrate_allowance_change_detector.py +0 -0
  210. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/scripts/check_dashboard_source_budgets.py +0 -0
  211. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/scripts/check_release.py +0 -0
  212. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/scripts/check_wemake_baseline.py +0 -0
  213. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/scripts/compression_persistence_benchmark.py +0 -0
  214. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/scripts/compression_revision_benchmark.py +0 -0
  215. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/scripts/dashboard_route_benchmark_support.py +0 -0
  216. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/scripts/generate_social_preview.py +0 -0
  217. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/scripts/install_local_plugin.py +0 -0
  218. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/scripts/model_usage_drain.py +0 -0
  219. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/scripts/smoke_dashboard_server.py +0 -0
  220. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/setup.cfg +0 -0
  221. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/skills/codex-usage-api/SKILL.md +0 -0
  222. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/__main__.py +0 -0
  223. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/allowance.py +0 -0
  224. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/allowance_intelligence/__init__.py +0 -0
  225. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/allowance_intelligence/analysis.py +0 -0
  226. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/allowance_intelligence/capacity_history.py +0 -0
  227. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/allowance_intelligence/change_detection.py +0 -0
  228. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/allowance_intelligence/contracts.py +0 -0
  229. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/allowance_intelligence/cycles.py +0 -0
  230. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/allowance_intelligence/estimation.py +0 -0
  231. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/allowance_intelligence/model.py +0 -0
  232. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/allowance_intelligence/reports.py +0 -0
  233. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/allowance_intelligence/service.py +0 -0
  234. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/allowance_intelligence/statistics.py +0 -0
  235. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/cli/__init__.py +0 -0
  236. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/cli/__main__.py +0 -0
  237. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/cli/commands_data.py +0 -0
  238. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/cli/commands_lifecycle.py +0 -0
  239. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/cli/commands_reports.py +0 -0
  240. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/cli/config.py +0 -0
  241. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/cli/dashboard.py +0 -0
  242. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/cli/diagnostics.py +0 -0
  243. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/cli/inspect_log_output.py +0 -0
  244. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/cli/mcp_allowance.py +0 -0
  245. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/cli/mcp_compression.py +0 -0
  246. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/cli/mcp_compression_router.py +0 -0
  247. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/cli/mcp_compression_router_payloads.py +0 -0
  248. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/cli/mcp_dashboard.py +0 -0
  249. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/cli/mcp_discovery.py +0 -0
  250. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/cli/mcp_dogfood.py +0 -0
  251. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/cli/mcp_investigations.py +0 -0
  252. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/cli/mcp_runtime.py +0 -0
  253. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/cli/mcp_server.py +0 -0
  254. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/cli/mcp_visualization.py +0 -0
  255. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/cli/output.py +0 -0
  256. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/cli/parser_diagnostics.py +0 -0
  257. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/cli/parser_lifecycle.py +0 -0
  258. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/cli/parser_reports.py +0 -0
  259. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/cli/plugin_installer.py +0 -0
  260. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/compression/__init__.py +0 -0
  261. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/compression/api.py +0 -0
  262. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/compression/attribution.py +0 -0
  263. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/compression/context_detectors.py +0 -0
  264. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/compression/detector_protocol.py +0 -0
  265. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/compression/detector_registry.py +0 -0
  266. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/compression/estimators.py +0 -0
  267. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/compression/evidence.py +0 -0
  268. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/compression/identifiers.py +0 -0
  269. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/compression/jobs.py +0 -0
  270. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/compression/models.py +0 -0
  271. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/compression/output_detectors.py +0 -0
  272. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/compression/payloads.py +0 -0
  273. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/compression/profile.py +0 -0
  274. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/compression/repetition_detectors.py +0 -0
  275. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/compression/request.py +0 -0
  276. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/compression/run_builder.py +0 -0
  277. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/compression/run_cache.py +0 -0
  278. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/compression/simulation_api.py +0 -0
  279. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/compression/simulation_payloads.py +0 -0
  280. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/compression/simulator.py +0 -0
  281. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/compression/streaming_evidence.py +0 -0
  282. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/context/__init__.py +0 -0
  283. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/context/action_timing.py +0 -0
  284. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/context/api.py +0 -0
  285. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/context/constants.py +0 -0
  286. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/context/loader.py +0 -0
  287. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/context/reader.py +0 -0
  288. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/context/serialized.py +0 -0
  289. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/context/summaries.py +0 -0
  290. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/context/token_estimates.py +0 -0
  291. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/context/values.py +0 -0
  292. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/core/__init__.py +0 -0
  293. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/core/api_payloads.py +0 -0
  294. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/core/call_origin.py +0 -0
  295. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/core/command_parsing.py +0 -0
  296. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/core/formatting.py +0 -0
  297. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/core/i18n.py +0 -0
  298. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/core/json_contract_cli.py +0 -0
  299. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/core/json_contract_common.py +0 -0
  300. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/core/json_contract_diagnostics.py +0 -0
  301. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/core/json_contract_server.py +0 -0
  302. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/core/json_contract_summary.py +0 -0
  303. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/core/json_contract_validation.py +0 -0
  304. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/core/json_contract_visualization.py +0 -0
  305. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/core/json_contracts.py +0 -0
  306. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/core/projects.py +0 -0
  307. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/core/redaction.py +0 -0
  308. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/core/threads.py +0 -0
  309. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/core/usage_identity.py +0 -0
  310. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/dashboard/__init__.py +0 -0
  311. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/dashboard/api.py +0 -0
  312. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/dashboard/assets.py +0 -0
  313. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/dashboard/cache_identity.py +0 -0
  314. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/dashboard/load_window.py +0 -0
  315. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/dashboard/pricing_snapshot.py +0 -0
  316. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/diagnostics/__init__.py +0 -0
  317. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/diagnostics/action_hints.py +0 -0
  318. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/diagnostics/api.py +0 -0
  319. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/diagnostics/dedupe.py +0 -0
  320. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/diagnostics/doctor_checks.py +0 -0
  321. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/diagnostics/fact_classifiers.py +0 -0
  322. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/diagnostics/facts.py +0 -0
  323. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/diagnostics/guided_signals.py +0 -0
  324. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/diagnostics/guided_summary.py +0 -0
  325. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/diagnostics/mcp.py +0 -0
  326. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/diagnostics/reports.py +0 -0
  327. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/diagnostics/snapshot_analysis.py +0 -0
  328. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/diagnostics/snapshot_analysis_payloads.py +0 -0
  329. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/diagnostics/snapshot_concentration.py +0 -0
  330. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/diagnostics/snapshot_constants.py +0 -0
  331. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/diagnostics/snapshot_events.py +0 -0
  332. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/diagnostics/snapshot_overview.py +0 -0
  333. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/diagnostics/snapshot_payloads.py +0 -0
  334. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/diagnostics/snapshot_progress.py +0 -0
  335. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/diagnostics/snapshot_report.py +0 -0
  336. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/diagnostics/snapshot_rows.py +0 -0
  337. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/diagnostics/snapshot_source_logs.py +0 -0
  338. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/diagnostics/snapshot_source_scan.py +0 -0
  339. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/diagnostics/snapshots.py +0 -0
  340. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/diagnostics/types.py +0 -0
  341. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/mcp_server.py +0 -0
  342. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/parser/api.py +0 -0
  343. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/parser/jsonl_v1.py +0 -0
  344. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/parser/jsonl_values.py +0 -0
  345. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/parser/state.py +0 -0
  346. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/__init__.py +0 -0
  347. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/assets/icon.svg +0 -0
  348. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard.css +0 -0
  349. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard.js +0 -0
  350. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_actions.js +0 -0
  351. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_analysis.js +0 -0
  352. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_call.css +0 -0
  353. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_call_diagnostics.js +0 -0
  354. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_call_investigator.js +0 -0
  355. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_cells.js +0 -0
  356. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_data.js +0 -0
  357. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_detail.css +0 -0
  358. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_details.js +0 -0
  359. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_diagnostics.js +0 -0
  360. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_diagnostics_facts.js +0 -0
  361. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_diagnostics_snapshots.js +0 -0
  362. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_events.js +0 -0
  363. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_filters.js +0 -0
  364. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_format.js +0 -0
  365. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_i18n.js +0 -0
  366. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_insights.css +0 -0
  367. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_insights.js +0 -0
  368. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_layout.css +0 -0
  369. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_live.js +0 -0
  370. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_payload_cache.js +0 -0
  371. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_responsive.css +0 -0
  372. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_state.js +0 -0
  373. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_status.js +0 -0
  374. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_tables.css +0 -0
  375. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_tables.js +0 -0
  376. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_template.html +0 -0
  377. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_tooltips.js +0 -0
  378. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/locales/ar.json +0 -0
  379. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/locales/de.json +0 -0
  380. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/locales/en.json +0 -0
  381. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/locales/es.json +0 -0
  382. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/locales/fr.json +0 -0
  383. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/locales/it.json +0 -0
  384. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/locales/ja.json +0 -0
  385. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/locales/ko.json +0 -0
  386. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/locales/pt.json +0 -0
  387. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/locales/ru.json +0 -0
  388. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/locales/vi.json +0 -0
  389. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/locales/zh-Hans.json +0 -0
  390. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/CacheContextPage.js +0 -0
  391. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/CallsPage.css +0 -0
  392. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/CompressionLabPage.css +0 -0
  393. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/CompressionLabPage.js +0 -0
  394. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/CoordinateSystem.js +0 -0
  395. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/DataDiffer.js +0 -0
  396. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/DataTable.js +0 -0
  397. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/DiagnosticsPage.js +0 -0
  398. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/EvidenceGrid.js +0 -0
  399. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/EvidenceGridControls.css +0 -0
  400. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/EvidenceGridControls.js +0 -0
  401. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/ExploreRoutePage.css +0 -0
  402. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/ExploreRoutePage.js +0 -0
  403. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/ExploreWorkspaceSwitcher.js +0 -0
  404. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/InvestigatorPage.css +0 -0
  405. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/InvestigatorPage.js +0 -0
  406. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/LineChart.js +0 -0
  407. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/OverviewPage.css +0 -0
  408. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/OverviewPage.js +0 -0
  409. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/PageLoadProgress.css +0 -0
  410. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/PageLoadProgress.js +0 -0
  411. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/Panel.js +0 -0
  412. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/Primitives.css +0 -0
  413. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/Primitives.js +0 -0
  414. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/ReportsPage.css +0 -0
  415. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/RoamController.js +0 -0
  416. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/SeriesData.js +0 -0
  417. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/SettingsPage.css +0 -0
  418. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/StatusBadge.js +0 -0
  419. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/SymbolDraw.js +0 -0
  420. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/UsageConstellation.css +0 -0
  421. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/UsageConstellation.js +0 -0
  422. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/UsageConstellationCanvas.css +0 -0
  423. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/UsageConstellationCanvas.js +0 -0
  424. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/UsageDrainPage.css +0 -0
  425. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/UsageDrainPage.js +0 -0
  426. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/VisualMapping.js +0 -0
  427. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/accessibilityFeature.js +0 -0
  428. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/annotationFeature.js +0 -0
  429. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/cartesianAxisHelper.js +0 -0
  430. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/cartesianRenderer.js +0 -0
  431. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/chevron-right.js +0 -0
  432. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/dashboard-react.js +0 -0
  433. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/dataStackHelper.js +0 -0
  434. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/diagnosticsQueries.js +0 -0
  435. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/echartsRenderer.js +0 -0
  436. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/exploreQueries.js +0 -0
  437. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/extension.js +0 -0
  438. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/filtering.js +0 -0
  439. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/flowRenderer.js +0 -0
  440. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/gauge.js +0 -0
  441. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/grid.js +0 -0
  442. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/heatmapRenderer.js +0 -0
  443. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/index.css +0 -0
  444. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/index.js +0 -0
  445. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/index2.js +0 -0
  446. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/infiniteQueryOptions.js +0 -0
  447. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/install.js +0 -0
  448. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/interactionFeature.js +0 -0
  449. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/legendFeature.js +0 -0
  450. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/listComponent.js +0 -0
  451. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/locale-zh-Hans.js +0 -0
  452. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/lock-keyhole.js +0 -0
  453. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/overviewQueries.js +0 -0
  454. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/queryOptions.js +0 -0
  455. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/router.js +0 -0
  456. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/rowActionEvents.js +0 -0
  457. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/runtime.js +0 -0
  458. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/scaleRawExtentInfo.js +0 -0
  459. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/search.js +0 -0
  460. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/shield-check.js +0 -0
  461. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/sliderMove.js +0 -0
  462. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/tableActions.js +0 -0
  463. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/threadSummaryAdapter.js +0 -0
  464. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/tooltipFeature.js +0 -0
  465. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/triangle-alert.js +0 -0
  466. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/useQuery.js +0 -0
  467. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/assets/visualMapFeature.js +0 -0
  468. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/dashboard/react/index.html +0 -0
  469. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-call-investigator-evidence.png +0 -0
  470. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-call-investigator-preview.png +0 -0
  471. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-call-investigator.png +0 -0
  472. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-calls-preview.png +0 -0
  473. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-calls.png +0 -0
  474. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-details.png +0 -0
  475. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-diagnostics-git-expanded.png +0 -0
  476. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-diagnostics.png +0 -0
  477. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-insights.png +0 -0
  478. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-threads.png +0 -0
  479. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/docs/assets/plugin-prompts.png +0 -0
  480. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/docs/assets/plugin-thread-leaderboard.png +0 -0
  481. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/docs/dashboard-guide.html +0 -0
  482. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/docs/examples/remediation-conversation.md +0 -0
  483. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/docs/examples/token-waste-conversation.md +0 -0
  484. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_data/skills/codex-usage-api/SKILL.md +0 -0
  485. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/plugin_installer.py +0 -0
  486. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/pricing/__init__.py +0 -0
  487. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/pricing/allowance_text.py +0 -0
  488. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/pricing/estimates.py +0 -0
  489. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/recommendation_engine/__init__.py +0 -0
  490. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/recommendation_engine/api.py +0 -0
  491. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/recommendation_engine/fact_config.py +0 -0
  492. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/recommendation_engine/materialization.py +0 -0
  493. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/recommendation_engine/query.py +0 -0
  494. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/recommendation_engine/summary_materialization.py +0 -0
  495. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/reports/__init__.py +0 -0
  496. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/reports/action_brief.py +0 -0
  497. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/reports/agentic.py +0 -0
  498. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/reports/agentic_dogfood.py +0 -0
  499. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/reports/agentic_dogfood_markdown.py +0 -0
  500. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/reports/agentic_evidence.py +0 -0
  501. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/reports/agentic_strategy.py +0 -0
  502. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/reports/api.py +0 -0
  503. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/reports/discovery.py +0 -0
  504. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/reports/filters.py +0 -0
  505. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/reports/hypothesis_classification.py +0 -0
  506. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/reports/hypothesis_evaluators.py +0 -0
  507. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/reports/hypothesis_limit_evaluators.py +0 -0
  508. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/reports/hypothesis_results.py +0 -0
  509. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/reports/investigation_walk.py +0 -0
  510. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/reports/project_summary.py +0 -0
  511. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/reports/query.py +0 -0
  512. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/reports/recommendation_builder.py +0 -0
  513. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/reports/recommendations.py +0 -0
  514. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/reports/visualization.py +0 -0
  515. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/reports/visualization_support.py +0 -0
  516. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/__init__.py +0 -0
  517. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/allowance.py +0 -0
  518. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/allowance_v2.py +0 -0
  519. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/analysis_jobs.py +0 -0
  520. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/api.py +0 -0
  521. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/call_detail.py +0 -0
  522. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/call_lists.py +0 -0
  523. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/compression_routes.py +0 -0
  524. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/context.py +0 -0
  525. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/context_settings.py +0 -0
  526. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/dashboard_pages.py +0 -0
  527. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/dashboard_shell.py +0 -0
  528. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/dedupe.py +0 -0
  529. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/diagnostic_facts.py +0 -0
  530. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/diagnostic_jobs.py +0 -0
  531. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/diagnostic_routes.py +0 -0
  532. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/diagnostic_snapshots.py +0 -0
  533. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/investigations.py +0 -0
  534. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/live_queries.py +0 -0
  535. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/live_rows.py +0 -0
  536. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/open_investigator.py +0 -0
  537. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/query_cache.py +0 -0
  538. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/recommendations.py +0 -0
  539. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/reports.py +0 -0
  540. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/request_guards.py +0 -0
  541. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/request_timing.py +0 -0
  542. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/responses.py +0 -0
  543. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/route_profile.py +0 -0
  544. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/status.py +0 -0
  545. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/summary.py +0 -0
  546. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/threads.py +0 -0
  547. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/usage_refresh.py +0 -0
  548. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/server/utils.py +0 -0
  549. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/__init__.py +0 -0
  550. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/allowance_intelligence.py +0 -0
  551. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/allowance_materialization.py +0 -0
  552. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/allowance_observations.py +0 -0
  553. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/allowance_schema.py +0 -0
  554. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/compression_candidate_metadata.py +0 -0
  555. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/compression_candidates.py +0 -0
  556. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/compression_capacities.py +0 -0
  557. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/compression_evidence.py +0 -0
  558. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/compression_fact_contract.py +0 -0
  559. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/compression_fact_ingest.py +0 -0
  560. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/compression_fact_manifest.py +0 -0
  561. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/compression_fact_queries.py +0 -0
  562. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/compression_fact_rows.py +0 -0
  563. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/compression_fact_sync.py +0 -0
  564. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/compression_facts.py +0 -0
  565. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/compression_publication.py +0 -0
  566. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/compression_revisions.py +0 -0
  567. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/compression_runs.py +0 -0
  568. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/compression_schema.py +0 -0
  569. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/connection.py +0 -0
  570. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/content_excerpts.py +0 -0
  571. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/content_extract.py +0 -0
  572. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/content_index.py +0 -0
  573. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/content_index_bulk.py +0 -0
  574. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/content_index_event_store.py +0 -0
  575. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/content_index_events.py +0 -0
  576. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/content_index_models.py +0 -0
  577. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/content_index_parallel.py +0 -0
  578. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/content_index_source.py +0 -0
  579. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/content_index_stream.py +0 -0
  580. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/content_patterns.py +0 -0
  581. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/content_persistence.py +0 -0
  582. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/content_provenance.py +0 -0
  583. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/content_query.py +0 -0
  584. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/content_rows.py +0 -0
  585. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/content_search.py +0 -0
  586. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/content_trace.py +0 -0
  587. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/dashboard_queries.py +0 -0
  588. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/dedupe_queries.py +0 -0
  589. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/deduplication.py +0 -0
  590. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/deduplication_schema.py +0 -0
  591. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/diagnostic_api.py +0 -0
  592. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/diagnostic_call_queries.py +0 -0
  593. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/diagnostic_queries.py +0 -0
  594. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/exports.py +0 -0
  595. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/investigation_runs.py +0 -0
  596. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/large_low_output.py +0 -0
  597. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/query_sql.py +0 -0
  598. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/query_values.py +0 -0
  599. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/recommendation_queries.py +0 -0
  600. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/recommendation_schema.py +0 -0
  601. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/refresh_callbacks.py +0 -0
  602. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/refresh_parse.py +0 -0
  603. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/refresh_stream.py +0 -0
  604. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/repeated_files.py +0 -0
  605. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/rows.py +0 -0
  606. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/schema_query_indexes.py +0 -0
  607. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/shell_churn.py +0 -0
  608. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/source_records.py +0 -0
  609. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/summary_queries.py +0 -0
  610. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/thread_summaries.py +0 -0
  611. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/usage_api_queries.py +0 -0
  612. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/usage_record_queries.py +0 -0
  613. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/store/usage_timing.py +0 -0
  614. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/support.py +0 -0
  615. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/__init__.py +0 -0
  616. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/allowance_breakpoints.py +0 -0
  617. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/allowance_fits.py +0 -0
  618. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/allowance_online.py +0 -0
  619. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/boundary_delta.py +0 -0
  620. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/boundary_delta_core.py +0 -0
  621. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/boundary_delta_rows.py +0 -0
  622. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/boundary_delta_summary.py +0 -0
  623. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/boundary_scopes.py +0 -0
  624. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/boundary_summary.py +0 -0
  625. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/capacity_specs.py +0 -0
  626. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/error_diagnostics.py +0 -0
  627. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/feature_history.py +0 -0
  628. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/features.py +0 -0
  629. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/grace.py +0 -0
  630. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/history_state.py +0 -0
  631. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/model.py +0 -0
  632. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/predictive.py +0 -0
  633. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/predictive_specs.py +0 -0
  634. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/proxy_fit.py +0 -0
  635. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/regime_labels.py +0 -0
  636. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/regime_segments.py +0 -0
  637. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/regression.py +0 -0
  638. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/reports.py +0 -0
  639. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/state_buckets.py +0 -0
  640. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/state_diagnostics.py +0 -0
  641. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/summary_metrics.py +0 -0
  642. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/thread_curves.py +0 -0
  643. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/time_series.py +0 -0
  644. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/token_components.py +0 -0
  645. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/transition_gates.py +0 -0
  646. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/transition_metrics.py +0 -0
  647. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/utils.py +0 -0
  648. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/walk_forward.py +0 -0
  649. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracker/usage_drain/walk_forward_rows.py +0 -0
  650. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracking.egg-info/dependency_links.txt +0 -0
  651. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracking.egg-info/entry_points.txt +0 -0
  652. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracking.egg-info/requires.txt +0 -0
  653. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/src/codex_usage_tracking.egg-info/top_level.txt +0 -0
  654. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/__init__.py +0 -0
  655. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/allowance_intelligence/test_allowance_intelligence.py +0 -0
  656. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/allowance_intelligence/test_analysis.py +0 -0
  657. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/allowance_intelligence/test_capacity_history.py +0 -0
  658. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/allowance_intelligence/test_change_calibration.py +0 -0
  659. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/allowance_intelligence/test_change_detection.py +0 -0
  660. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/allowance_intelligence/test_cycles.py +0 -0
  661. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/allowance_intelligence/test_estimation.py +0 -0
  662. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/allowance_intelligence/test_service.py +0 -0
  663. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/allowance_intelligence/test_statistics.py +0 -0
  664. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/cli/test_allowance_intelligence_cli_mcp.py +0 -0
  665. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/cli/test_cli_benchmarks.py +0 -0
  666. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/cli/test_cli_dashboard.py +0 -0
  667. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/cli/test_cli_help_i18n.py +0 -0
  668. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/cli/test_cli_inspect_log_output.py +0 -0
  669. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/cli/test_cli_lifecycle.py +0 -0
  670. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/cli/test_cli_module_entrypoints.py +0 -0
  671. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/cli/test_cli_parser_diagnostics.py +0 -0
  672. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/cli/test_commands_reports.py +0 -0
  673. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/cli/test_dashboard_route_benchmark.py +0 -0
  674. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/cli/test_mcp_compression.py +0 -0
  675. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/cli/test_mcp_compression_router.py +0 -0
  676. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/cli/test_mcp_dedupe.py +0 -0
  677. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/cli/test_mcp_integration.py +0 -0
  678. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/cli/test_mcp_launcher.py +0 -0
  679. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/cli/test_mcp_runtime_compatibility.py +0 -0
  680. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/cli/test_mcp_simulation.py +0 -0
  681. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/cli/test_mcp_visualization.py +0 -0
  682. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/cli/test_plugin_installer.py +0 -0
  683. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/compression/compression_helpers.py +0 -0
  684. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/compression/test_attribution.py +0 -0
  685. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/compression/test_context_detectors.py +0 -0
  686. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/compression/test_estimators.py +0 -0
  687. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/compression/test_jobs.py +0 -0
  688. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/compression/test_models.py +0 -0
  689. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/compression/test_output_detectors.py +0 -0
  690. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/compression/test_repetition_detectors.py +0 -0
  691. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/compression/test_run_builder.py +0 -0
  692. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/compression/test_simulator.py +0 -0
  693. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/compression/test_streaming_evidence.py +0 -0
  694. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/context/test_context_action_timing.py +0 -0
  695. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/context/test_context_evidence.py +0 -0
  696. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/context/test_context_scan.py +0 -0
  697. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/context/test_context_serialized.py +0 -0
  698. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/context/test_context_source_scan.py +0 -0
  699. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/context/test_context_summaries.py +0 -0
  700. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/context/test_context_token_estimates.py +0 -0
  701. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/context/test_context_values.py +0 -0
  702. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/core/test_call_origin.py +0 -0
  703. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/core/test_command_parsing.py +0 -0
  704. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/core/test_formatting.py +0 -0
  705. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/core/test_i18n.py +0 -0
  706. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/core/test_json_contracts.py +0 -0
  707. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/core/test_privacy.py +0 -0
  708. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/core/test_projects.py +0 -0
  709. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/core/test_redaction.py +0 -0
  710. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/core/test_threads.py +0 -0
  711. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/core/test_usage_identity.py +0 -0
  712. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/dashboard/dashboard_node_test_helpers.py +0 -0
  713. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/dashboard/test_dashboard_compression_server.py +0 -0
  714. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/dashboard/test_dashboard_data.py +0 -0
  715. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/dashboard/test_dashboard_diagnostics_snapshots.py +0 -0
  716. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/dashboard/test_dashboard_live.py +0 -0
  717. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/dashboard/test_dashboard_payload_privacy.py +0 -0
  718. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/dashboard/test_dashboard_pricing_snapshot.py +0 -0
  719. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/dashboard/test_dashboard_server.py +0 -0
  720. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/dashboard/test_dashboard_state.py +0 -0
  721. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/dashboard/test_dashboard_status.py +0 -0
  722. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/diagnostics/test_diagnostic_fact_classifiers.py +0 -0
  723. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/diagnostics/test_diagnostic_reports.py +0 -0
  724. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/diagnostics/test_diagnostic_snapshot_events.py +0 -0
  725. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/diagnostics/test_diagnostic_snapshot_progress.py +0 -0
  726. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/diagnostics/test_diagnostic_snapshot_report.py +0 -0
  727. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/diagnostics/test_diagnostic_snapshot_source_scan.py +0 -0
  728. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/diagnostics/test_diagnostic_snapshots.py +0 -0
  729. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/diagnostics/test_doctor_first_run.py +0 -0
  730. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/diagnostics/test_module_exports.py +0 -0
  731. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/parser/test_parser.py +0 -0
  732. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/parser/test_parser_deduplication.py +0 -0
  733. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/parser/test_parser_inspect_log.py +0 -0
  734. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/parser/test_parser_observer.py +0 -0
  735. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/parser/test_parser_state.py +0 -0
  736. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/quality/test_static_analysis_policy.py +0 -0
  737. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/reports/test_action_brief.py +0 -0
  738. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/reports/test_action_brief_exports.py +0 -0
  739. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/reports/test_agentic_dogfood.py +0 -0
  740. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/reports/test_agentic_evidence.py +0 -0
  741. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/reports/test_agentic_exports.py +0 -0
  742. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/reports/test_discovery_exports.py +0 -0
  743. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/reports/test_hypothesis_classification.py +0 -0
  744. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/reports/test_hypothesis_evaluator_exports.py +0 -0
  745. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/reports/test_hypothesis_routing.py +0 -0
  746. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/reports/test_indexed_recommendations.py +0 -0
  747. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/reports/test_investigation_walk_exports.py +0 -0
  748. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/reports/test_query_exports.py +0 -0
  749. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/reports/test_recommendations.py +0 -0
  750. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/reports/test_visualization.py +0 -0
  751. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/server/test_analysis_jobs.py +0 -0
  752. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/server/test_compression_routes.py +0 -0
  753. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/server/test_diagnostic_jobs.py +0 -0
  754. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/server/test_query_cache.py +0 -0
  755. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/server/test_refresh_jobs.py +0 -0
  756. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/server/test_refresh_routes.py +0 -0
  757. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/server/test_request_timing.py +0 -0
  758. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/server/test_route_inventory.py +0 -0
  759. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/server/test_server_allowance.py +0 -0
  760. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/server/test_server_allowance_v2.py +0 -0
  761. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/server/test_server_api.py +0 -0
  762. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/server/test_server_call_lists.py +0 -0
  763. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/server/test_server_context.py +0 -0
  764. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/server/test_server_context_settings.py +0 -0
  765. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/server/test_server_dashboard_shell.py +0 -0
  766. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/server/test_server_dedupe.py +0 -0
  767. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/server/test_server_diagnostic_facts.py +0 -0
  768. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/server/test_server_diagnostic_refresh_auth.py +0 -0
  769. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/server/test_server_diagnostic_snapshots.py +0 -0
  770. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/server/test_server_investigations.py +0 -0
  771. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/server/test_server_live_queries.py +0 -0
  772. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/server/test_server_live_rows.py +0 -0
  773. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/server/test_server_open_investigator.py +0 -0
  774. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/server/test_server_recommendations.py +0 -0
  775. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/server/test_server_request_guards.py +0 -0
  776. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/server/test_server_responses.py +0 -0
  777. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/server/test_server_routes.py +0 -0
  778. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/server/test_server_status.py +0 -0
  779. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/server/test_server_summary.py +0 -0
  780. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/server/test_server_threads.py +0 -0
  781. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/server/test_server_usage_refresh.py +0 -0
  782. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/store/test_allowance_intelligence_queries.py +0 -0
  783. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/store/test_allowance_materialization.py +0 -0
  784. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/store/test_allowance_observations.py +0 -0
  785. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/store/test_compression_evidence.py +0 -0
  786. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/store/test_compression_facts.py +0 -0
  787. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/store/test_compression_publication.py +0 -0
  788. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/store/test_compression_revisions.py +0 -0
  789. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/store/test_content_index.py +0 -0
  790. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/store/test_content_index_refresh.py +0 -0
  791. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/store/test_recommendation_facts.py +0 -0
  792. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/store/test_recommendation_queries.py +0 -0
  793. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/store/test_refresh_callbacks.py +0 -0
  794. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/store/test_refresh_parallel.py +0 -0
  795. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/store/test_store_dashboard_queries.py +0 -0
  796. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/store/test_store_large_batches.py +0 -0
  797. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/store/test_store_query_sql.py +0 -0
  798. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/store/test_usage_deduplication.py +0 -0
  799. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/store/test_usage_deduplication_migration.py +0 -0
  800. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/store_dashboard_helpers.py +0 -0
  801. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/test_check_dashboard_source_budgets.py +0 -0
  802. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/usage_drain/model_test_helpers.py +0 -0
  803. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/usage_drain/test_usage_drain_allowance_fits.py +0 -0
  804. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/usage_drain/test_usage_drain_boundary_delta.py +0 -0
  805. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/usage_drain/test_usage_drain_boundary_delta_summary.py +0 -0
  806. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/usage_drain/test_usage_drain_boundary_summary.py +0 -0
  807. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/usage_drain/test_usage_drain_error_diagnostics.py +0 -0
  808. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/usage_drain/test_usage_drain_feature_history.py +0 -0
  809. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/usage_drain/test_usage_drain_one_percent_capacity.py +0 -0
  810. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/usage_drain/test_usage_drain_predictive.py +0 -0
  811. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/usage_drain/test_usage_drain_regime_segments.py +0 -0
  812. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/usage_drain/test_usage_drain_regression.py +0 -0
  813. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/usage_drain/test_usage_drain_report_helpers.py +0 -0
  814. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/usage_drain/test_usage_drain_report_records.py +0 -0
  815. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/usage_drain/test_usage_drain_reports.py +0 -0
  816. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/usage_drain/test_usage_drain_state_buckets.py +0 -0
  817. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/usage_drain/test_usage_drain_state_diagnostics.py +0 -0
  818. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/usage_drain/test_usage_drain_summary_metrics.py +0 -0
  819. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/usage_drain/test_usage_drain_thread_curves.py +0 -0
  820. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/usage_drain/test_usage_drain_token_components.py +0 -0
  821. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/usage_drain/test_usage_drain_transition_gates.py +0 -0
  822. {codex_usage_tracking-0.20.0 → codex_usage_tracking-0.21.0}/tests/usage_drain/test_usage_drain_transition_metrics.py +0 -0
  823. {codex_usage_tracking-0.20.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.20.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,33 @@
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
+
5
32
  ## 0.20.0 - 2026-07-16
6
33
 
7
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.
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: codex-usage-tracking
3
- Version: 0.20.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
@@ -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
@@ -117,6 +139,11 @@ Use `Calls` view when you want to inspect individual model calls.
117
139
  - Time values are shown in your browser's local date/time format while sorting and time filtering still use the logged timestamp.
118
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.
119
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.
120
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.
121
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.
122
149
  - Hover a row to scan a compact aggregate preview in `Call Details`; click a Calls row to open the dedicated call investigator.
@@ -136,6 +163,16 @@ Useful interpretation notes:
136
163
  - `Cached input` and `Uncached input` are split so cache behavior is visible without storing transcript text.
137
164
  - A cost with `*` means the pricing row is marked as a best-guess estimate.
138
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.
139
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.
140
177
 
141
178
  ## Threads View
@@ -147,9 +184,13 @@ Use `Threads` view when you want to understand a work session as a group instead
147
184
  - Threads pages through `/api/threads` on localhost and hydrates the selected
148
185
  thread's supporting calls through `/api/thread-calls`; loaded snapshot rows
149
186
  remain the fallback.
150
- - Click a thread row to expand all of its aggregate calls directly beneath it.
187
+ - Click a thread row to load the first 100 aggregate calls directly beneath it.
151
188
  - Only one thread stays expanded at a time.
152
- - Remaining call pages load progressively with visible progress and retry.
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.
153
194
  - Parent rows never open a representative call.
154
195
  - Explicit child `Open` and `Copy` actions reach Call Investigator.
155
196
  - Cache Frontier and Lifecycle remain secondary analysis modes.
@@ -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.20.0
178
- python scripts/smoke_installed_package.py --docker --from-pypi --version 0.20.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.20.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.20.0`: `python -m venv /tmp/codex-usage-pypi-smoke && . /tmp/codex-usage-pypi-smoke/bin/activate && python -m pip install codex-usage-tracking==0.20.0 && codex-usage-tracker --version`.
29
- - [x] Verify public pipx install path for `0.20.0`: `PIPX_HOME=/tmp/codex-usage-pipx-home PIPX_BIN_DIR=/tmp/codex-usage-pipx-bin pipx install codex-usage-tracking==0.20.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.20.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.20.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.20.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.20.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.20.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.
@@ -22,11 +22,29 @@ The local SQLite database is stored at `~/.codex-usage-tracker/usage.sqlite3` by
22
22
  quality/coverage metrics, source revisions, and persisted statistical results
23
23
  - diagnostic fact labels tied to aggregate call records, safe event categories, payload type labels, counts, timestamps, and line ranges
24
24
  - pricing, credit, allowance, recommendation, and project metadata derived from aggregate fields
25
+ - aggregate OTel completion identifiers, token counters, normalized service
26
+ tier/provenance, application version, semantic fingerprints, source cursors,
27
+ and bounded reconciliation status from local
28
+ `~/.codex-usage-tracker/otel/codex-completions*.jsonl` files
25
29
  - normalized local content-index rows for local investigation, including conversation turns, bounded content fragments, tool calls, command runs, file events, source provenance, parser adapter metadata, parser warnings, and FTS5 search rows when SQLite supports FTS5
26
30
  - bounded local investigation run summaries, including run kind, schema id, content-mode flags, strict summary JSON, branch counts, evidence counts, and timestamps
27
31
 
28
32
  The content index is intended for local MCP/API exploration. It is not a hosted collection system and it does not change where the original Codex logs live. Normalized command and file-event rows store command roots/labels plus path hashes/basenames rather than full shell commands or full paths; bounded raw snippets remain confined to `content_fragments`.
29
33
 
34
+ The OTel completion reader accepts only `codex.sse_event` /
35
+ `response.completed` aggregate fields needed for conservative call matching and
36
+ tier classification. It never persists OTLP response bodies or arbitrary
37
+ attributes. Default exports do not expose staging fingerprints, source paths,
38
+ or matched record pointers. Support bundles report only whether the configured
39
+ completion directory exists and bounded aggregate refresh/reconciliation counts.
40
+ The exact response tier does not reveal whether ChatGPT credits or an API key
41
+ paid for the call; the tracker keeps that billing basis as separate local
42
+ configuration and defaults it to Unknown.
43
+
44
+ `rebuild-index` retains aggregate OTel staging so it can reconcile tiers after
45
+ canonical rows are recreated. Confirmed `reset-db --yes` deletes that staging
46
+ and its cursors. Neither operation changes or deletes the source exporter files.
47
+
30
48
  Cloned Codex tasks can copy historical calls into another local JSONL file. The tracker keeps every physical row and its source metadata in SQLite, but default dashboard, CLI, MCP, report, recommendation, allowance, compression, and export totals use one canonical representative for strict fingerprint matches. Similar calls are never excluded on fuzzy evidence. Deduplication diagnostics expose aggregate totals plus bounded provenance metadata for excluded rows; they never include prompt, response, tool-output, or raw-log content.
31
49
 
32
50
  ## Shareable Outputs
@@ -42,6 +60,11 @@ Default shareable outputs omit indexed or raw content. That includes:
42
60
  - allowance exports
43
61
  - source coverage reports
44
62
 
63
+ Tier-aware shareable rows may include exact service-tier labels, API-equivalent
64
+ Standard/Priority cost scenarios, ChatGPT-equivalent credit scenarios, billing
65
+ basis, and source-stamped multiplier metadata. These are aggregate pricing
66
+ annotations and do not include authentication tokens or raw OTel payloads.
67
+
45
68
  Those outputs should not include prompts, assistant messages, tool output, pasted secrets, raw snippets, reconstructed transcript evidence, indexed fragments, or full JSONL records unless a future command is explicitly documented as a local raw/content export.
46
69
 
47
70
  Default totals and allowance intelligence use canonical usage rows. High-confidence
@@ -112,7 +135,7 @@ The report pack contains aggregate report definitions, linked aggregate call
112
135
  rows, a schema marker, and a server generation timestamp. It does not include
113
136
  prompts, assistant text, tool output, command output, or indexed content.
114
137
 
115
- Source JSONL reads happen during refresh/indexing, explicit on-demand context loading for one selected call, and explicit synthetic benchmark/diagnostic runs. Live refresh records source metadata and parser cursors so unchanged logs can be skipped and append-only growth can parse from the last indexed byte. Live aggregate APIs do not return indexed content unless an endpoint is explicitly documented as a local content investigation endpoint.
138
+ Source JSONL reads happen during refresh/indexing, explicit on-demand context loading for one selected call, and explicit synthetic benchmark/diagnostic runs. Refresh also reads only local `codex-completions*.jsonl` OTLP exporter files for aggregate service-tier enrichment. Live refresh records source metadata and parser cursors so unchanged logs can be skipped and append-only growth can parse from the last indexed byte. Live aggregate APIs do not return indexed content unless an endpoint is explicitly documented as a local content investigation endpoint.
116
139
 
117
140
  ## Privacy Modes
118
141
 
@@ -142,7 +165,7 @@ Strict mode redacts local diagnostic path strings in bundle doctor details while
142
165
 
143
166
  Cost estimates are calculated only from aggregate token fields and your local pricing config. They are omitted when no matching model price is configured. Pricing refreshes pull only OpenAI's public pricing markdown and do not send local usage data anywhere.
144
167
 
145
- Codex credit estimates are calculated only from aggregate token fields and bundled or locally configured rate-card values. The optional allowance config stores only remaining percentages, reset times, and credit totals you manually enter. Observed rate-limit snapshots, when present in Codex token-count logs, store only structured percentages, window lengths, reset times, plan type, and limit id.
168
+ Codex credit estimates are calculated only from aggregate token fields and bundled or locally configured rate-card values. Confirmed Fast calls may apply the documented model-family credit multiplier; this does not change USD token-cost estimates. The optional allowance config stores only remaining percentages, reset times, and credit totals you manually enter. Observed rate-limit snapshots, when present in Codex token-count logs, store only structured percentages, window lengths, reset times, plan type, and limit id.
146
169
 
147
170
  Allowance calibration and forecasts use canonical aggregate credits and observed
148
171
  percentages. A displayed credits-per-percent value is a personal historical