codex-usage-tracking 0.13.1__tar.gz → 0.14.1__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.
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/.codex-plugin/plugin.json +1 -1
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/CHANGELOG.md +13 -1
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/PKG-INFO +21 -21
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/README.md +20 -20
- codex_usage_tracking-0.14.1/docs/assets/dashboard-call-investigator-evidence.png +0 -0
- codex_usage_tracking-0.14.1/docs/assets/dashboard-call-investigator-preview.png +0 -0
- codex_usage_tracking-0.14.1/docs/assets/dashboard-call-investigator.png +0 -0
- codex_usage_tracking-0.14.1/docs/assets/dashboard-calls-preview.png +0 -0
- codex_usage_tracking-0.14.1/docs/assets/dashboard-calls.png +0 -0
- codex_usage_tracking-0.14.1/docs/assets/dashboard-details.png +0 -0
- codex_usage_tracking-0.14.1/docs/assets/dashboard-diagnostics.png +0 -0
- codex_usage_tracking-0.14.1/docs/assets/dashboard-insights.png +0 -0
- codex_usage_tracking-0.14.1/docs/assets/dashboard-threads.png +0 -0
- codex_usage_tracking-0.14.1/docs/assets/frontend-rewrite-references/cache-context-lab-reference.png +0 -0
- codex_usage_tracking-0.14.1/docs/assets/frontend-rewrite-references/call-drilldown-menu-concept-reference.png +0 -0
- codex_usage_tracking-0.14.1/docs/assets/frontend-rewrite-references/calls-analyst-view-reference.png +0 -0
- codex_usage_tracking-0.14.1/docs/assets/frontend-rewrite-references/calls-high-density-reference.png +0 -0
- codex_usage_tracking-0.14.1/docs/assets/frontend-rewrite-references/command-palette-dashboard-reference.png +0 -0
- codex_usage_tracking-0.14.1/docs/assets/frontend-rewrite-references/diagnostics-notebook-reference.png +0 -0
- codex_usage_tracking-0.14.1/docs/assets/frontend-rewrite-references/generated-dashboard-concept-reference.png +0 -0
- codex_usage_tracking-0.14.1/docs/assets/frontend-rewrite-references/generated-maintainer-banner-reference.png +0 -0
- codex_usage_tracking-0.14.1/docs/assets/frontend-rewrite-references/investigator-workbench-reference.png +0 -0
- codex_usage_tracking-0.14.1/docs/assets/frontend-rewrite-references/overview-dashboard-reference.png +0 -0
- codex_usage_tracking-0.14.1/docs/assets/frontend-rewrite-references/projected-weekly-credits-overlap-reference.png +0 -0
- codex_usage_tracking-0.14.1/docs/assets/frontend-rewrite-references/thread-efficiency-reference.png +0 -0
- codex_usage_tracking-0.14.1/docs/assets/frontend-rewrite-references/usage-drain-lab-reference.png +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/docs/cli-json-schemas.md +7 -6
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/docs/cli-reference.md +1 -1
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/docs/dashboard-guide.md +20 -20
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/docs/development.md +7 -7
- codex_usage_tracking-0.14.1/docs/frontend-rewrite-roadmap.md +560 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/docs/mcp.md +25 -1
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/docs/one-dot-oh-readiness.md +8 -8
- codex_usage_tracking-0.14.1/docs/react-dashboard-0.14-release-roadmap.md +178 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/pyproject.toml +3 -1
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/scripts/check_release.py +69 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/scripts/smoke_installed_package.py +108 -0
- codex_usage_tracking-0.14.1/skills/codex-usage-api/SKILL.md +77 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/skills/codex-usage-tracker/SKILL.md +21 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/skills/codex-usage-tracker/scripts/run_mcp.py +2 -2
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/__init__.py +1 -1
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/cli/dashboard.py +11 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/cli/mcp_server.py +271 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/core/json_contract_cli.py +2 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/core/json_contract_server.py +18 -6
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/diagnostics/snapshot_analysis.py +80 -2
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/diagnostics/snapshot_rows.py +25 -1
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/diagnostics/snapshot_source_scan.py +51 -2
- codex_usage_tracking-0.14.1/src/codex_usage_tracker/plugin_data/dashboard/react/assets/dashboard-react.js +276 -0
- codex_usage_tracking-0.14.1/src/codex_usage_tracker/plugin_data/dashboard/react/assets/index.css +1 -0
- codex_usage_tracking-0.14.1/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-call-investigator-evidence.png +0 -0
- codex_usage_tracking-0.14.1/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-call-investigator-preview.png +0 -0
- codex_usage_tracking-0.14.1/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-call-investigator.png +0 -0
- codex_usage_tracking-0.14.1/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-calls-preview.png +0 -0
- codex_usage_tracking-0.14.1/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-calls.png +0 -0
- codex_usage_tracking-0.14.1/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-details.png +0 -0
- codex_usage_tracking-0.14.1/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-diagnostics.png +0 -0
- codex_usage_tracking-0.14.1/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-insights.png +0 -0
- codex_usage_tracking-0.14.1/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-threads.png +0 -0
- codex_usage_tracking-0.14.1/src/codex_usage_tracker/plugin_data/skills/codex-usage-api/SKILL.md +77 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/plugin_data/skills/codex-usage-tracker/SKILL.md +21 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/server/api.py +5 -3
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/server/dashboard_shell.py +2 -1
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/server/handler.py +73 -5
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/server/open_investigator.py +4 -2
- codex_usage_tracking-0.14.1/src/codex_usage_tracker/server/reports.py +186 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/server/routes.py +1 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/usage_drain/thread_curves.py +29 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracking.egg-info/PKG-INFO +21 -21
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracking.egg-info/SOURCES.txt +20 -0
- codex_usage_tracking-0.14.1/tests/cli/test_cli_dashboard.py +55 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/cli/test_cli_lifecycle.py +6 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/cli/test_cli_release.py +41 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/cli/test_mcp_integration.py +47 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/core/test_json_contracts.py +1 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/dashboard/test_dashboard_server.py +137 -28
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/diagnostics/test_diagnostic_snapshot_source_scan.py +14 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/diagnostics/test_diagnostic_snapshots.py +17 -0
- codex_usage_tracking-0.14.1/tests/server/test_server_api.py +50 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/server/test_server_dashboard_shell.py +3 -1
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/server/test_server_open_investigator.py +25 -5
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/usage_drain/test_usage_drain_reports.py +4 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/usage_drain/test_usage_drain_thread_curves.py +6 -0
- codex_usage_tracking-0.13.1/docs/assets/dashboard-call-investigator-evidence.png +0 -0
- codex_usage_tracking-0.13.1/docs/assets/dashboard-call-investigator-preview.png +0 -0
- codex_usage_tracking-0.13.1/docs/assets/dashboard-call-investigator.png +0 -0
- codex_usage_tracking-0.13.1/docs/assets/dashboard-calls-preview.png +0 -0
- codex_usage_tracking-0.13.1/docs/assets/dashboard-calls.png +0 -0
- codex_usage_tracking-0.13.1/docs/assets/dashboard-details.png +0 -0
- codex_usage_tracking-0.13.1/docs/assets/dashboard-diagnostics.png +0 -0
- codex_usage_tracking-0.13.1/docs/assets/dashboard-insights.png +0 -0
- codex_usage_tracking-0.13.1/docs/assets/dashboard-threads.png +0 -0
- codex_usage_tracking-0.13.1/skills/codex-usage-api/SKILL.md +0 -62
- codex_usage_tracking-0.13.1/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-call-investigator-evidence.png +0 -0
- codex_usage_tracking-0.13.1/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-call-investigator-preview.png +0 -0
- codex_usage_tracking-0.13.1/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-call-investigator.png +0 -0
- codex_usage_tracking-0.13.1/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-calls-preview.png +0 -0
- codex_usage_tracking-0.13.1/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-calls.png +0 -0
- codex_usage_tracking-0.13.1/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-details.png +0 -0
- codex_usage_tracking-0.13.1/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-diagnostics.png +0 -0
- codex_usage_tracking-0.13.1/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-insights.png +0 -0
- codex_usage_tracking-0.13.1/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-threads.png +0 -0
- codex_usage_tracking-0.13.1/src/codex_usage_tracker/plugin_data/skills/codex-usage-api/SKILL.md +0 -62
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/.mcp.json +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/AGENTS.md +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/CONTRIBUTING.md +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/LICENSE +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/MANIFEST.in +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/SECURITY.md +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/assets/icon.svg +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/docs/adoption-hardening-roadmap.md +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/docs/architecture/decisions/0001-package-domain-boundaries.md +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/docs/architecture-boundary-map.md +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/docs/architecture.md +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/docs/assets/dashboard-diagnostics-git-expanded.png +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/docs/assets/plugin-prompts.png +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/docs/assets/plugin-thread-leaderboard.png +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/docs/assets/ux/call-detail-panel.png +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/docs/assets/ux/insight-overview.png +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/docs/assets/ux/thread-investigation.png +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/docs/call-drilldown-performance-checklist.md +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/docs/first-five-minutes.md +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/docs/install.md +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/docs/maintainability-roadmap.md +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/docs/maintainability-scorecard.md +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/docs/pricing-and-credits.md +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/docs/privacy.md +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/docs/ui-ux-improvement-plan.md +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/docs/usage-drain-modeling.md +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/scripts/benchmark_synthetic_history.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/scripts/check_wemake_baseline.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/scripts/install_local_plugin.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/scripts/model_usage_drain.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/setup.cfg +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/__main__.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/allowance.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/cli/__init__.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/cli/__main__.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/cli/config.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/cli/diagnostics.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/cli/main.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/cli/output.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/cli/parser.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/cli/parser_diagnostics.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/cli/plugin_installer.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/context/__init__.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/context/action_timing.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/context/api.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/context/constants.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/context/loader.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/context/reader.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/context/serialized.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/context/summaries.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/context/token_estimates.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/context/values.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/core/__init__.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/core/api_payloads.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/core/call_origin.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/core/formatting.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/core/i18n.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/core/json_contract_common.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/core/json_contract_diagnostics.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/core/json_contract_validation.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/core/json_contracts.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/core/models.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/core/paths.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/core/projects.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/core/redaction.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/core/schema.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/core/threads.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/dashboard/__init__.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/dashboard/api.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/dashboard/assets.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/dashboard/pricing_snapshot.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/diagnostics/__init__.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/diagnostics/action_hints.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/diagnostics/api.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/diagnostics/fact_classifiers.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/diagnostics/facts.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/diagnostics/guided_summary.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/diagnostics/mcp.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/diagnostics/reports.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/diagnostics/snapshot_concentration.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/diagnostics/snapshot_constants.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/diagnostics/snapshot_events.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/diagnostics/snapshot_payloads.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/diagnostics/snapshot_report.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/diagnostics/snapshot_source_logs.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/diagnostics/snapshots.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/diagnostics/types.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/mcp_server.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/parser/__init__.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/parser/api.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/parser/jsonl_v1.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/parser/jsonl_values.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/parser/state.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/plugin_data/__init__.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/plugin_data/assets/icon.svg +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/plugin_data/dashboard/dashboard.css +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/plugin_data/dashboard/dashboard.js +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_actions.js +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_analysis.js +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_call.css +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_call_diagnostics.js +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_call_investigator.js +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_cells.js +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_data.js +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_detail.css +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_details.js +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_diagnostics.js +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_diagnostics_facts.js +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_diagnostics_snapshots.js +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_events.js +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_filters.js +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_format.js +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_i18n.js +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_insights.css +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_insights.js +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_layout.css +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_live.js +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_payload_cache.js +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_responsive.css +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_state.js +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_status.js +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_tables.css +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_tables.js +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_template.html +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_tooltips.js +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/plugin_data/dashboard/locales/ar.json +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/plugin_data/dashboard/locales/de.json +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/plugin_data/dashboard/locales/en.json +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/plugin_data/dashboard/locales/es.json +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/plugin_data/dashboard/locales/fr.json +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/plugin_data/dashboard/locales/it.json +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/plugin_data/dashboard/locales/ja.json +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/plugin_data/dashboard/locales/ko.json +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/plugin_data/dashboard/locales/pt.json +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/plugin_data/dashboard/locales/ru.json +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/plugin_data/dashboard/locales/vi.json +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/plugin_data/dashboard/locales/zh-Hans.json +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-diagnostics-git-expanded.png +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/plugin_data/docs/assets/plugin-prompts.png +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/plugin_data/docs/assets/plugin-thread-leaderboard.png +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/plugin_data/docs/dashboard-guide.html +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/plugin_data/rate_cards/codex-credit-rates.json +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/plugin_installer.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/pricing/__init__.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/pricing/allowance.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/pricing/allowance_config.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/pricing/allowance_rate_card.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/pricing/allowance_text.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/pricing/allowance_usage.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/pricing/api.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/pricing/config.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/pricing/costing.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/pricing/estimates.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/pricing/openai.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/reports/__init__.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/reports/api.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/reports/filters.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/reports/project_summary.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/reports/recommendation_builder.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/reports/recommendations.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/reports/support.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/server/__init__.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/server/call_detail.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/server/call_lists.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/server/context.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/server/context_settings.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/server/diagnostic_facts.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/server/diagnostic_routes.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/server/diagnostic_snapshots.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/server/live_queries.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/server/live_rows.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/server/recommendations.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/server/request_guards.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/server/responses.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/server/status.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/server/summary.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/server/threads.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/server/usage_refresh.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/server/utils.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/store/__init__.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/store/api.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/store/connection.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/store/dashboard_queries.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/store/diagnostic_call_queries.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/store/diagnostic_queries.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/store/exports.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/store/query_sql.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/store/refresh.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/store/rows.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/store/schema.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/store/sources.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/store/summary_queries.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/store/thread_summaries.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/store/usage_api_queries.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/store/usage_record_queries.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/store/usage_timing.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/support.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/usage_drain/__init__.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/usage_drain/allowance_breakpoints.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/usage_drain/allowance_fits.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/usage_drain/allowance_online.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/usage_drain/boundary_delta.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/usage_drain/boundary_delta_core.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/usage_drain/boundary_delta_rows.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/usage_drain/boundary_delta_summary.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/usage_drain/boundary_scopes.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/usage_drain/boundary_summary.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/usage_drain/capacity_specs.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/usage_drain/error_diagnostics.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/usage_drain/feature_history.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/usage_drain/features.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/usage_drain/grace.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/usage_drain/history_state.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/usage_drain/model.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/usage_drain/predictive.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/usage_drain/predictive_specs.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/usage_drain/proxy_fit.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/usage_drain/regime_labels.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/usage_drain/regime_segments.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/usage_drain/regression.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/usage_drain/reports.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/usage_drain/spans.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/usage_drain/state_buckets.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/usage_drain/state_diagnostics.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/usage_drain/summary_metrics.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/usage_drain/time_series.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/usage_drain/token_components.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/usage_drain/transition_gates.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/usage_drain/transition_metrics.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/usage_drain/types.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/usage_drain/utils.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/usage_drain/walk_forward.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracker/usage_drain/walk_forward_rows.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracking.egg-info/dependency_links.txt +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracking.egg-info/entry_points.txt +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracking.egg-info/requires.txt +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/src/codex_usage_tracking.egg-info/top_level.txt +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/__init__.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/cli/test_cli_module_entrypoints.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/cli/test_cli_parser_diagnostics.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/cli/test_mcp_launcher.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/cli/test_plugin_installer.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/context/test_context_action_timing.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/context/test_context_evidence.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/context/test_context_scan.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/context/test_context_serialized.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/context/test_context_summaries.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/context/test_context_token_estimates.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/context/test_context_values.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/core/test_call_origin.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/core/test_formatting.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/core/test_i18n.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/core/test_privacy.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/core/test_projects.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/core/test_redaction.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/core/test_schema.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/core/test_threads.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/dashboard/test_dashboard_data.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/dashboard/test_dashboard_diagnostics_snapshots.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/dashboard/test_dashboard_live.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/dashboard/test_dashboard_payload.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/dashboard/test_dashboard_pricing_snapshot.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/dashboard/test_dashboard_state.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/dashboard/test_dashboard_status.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/diagnostics/test_diagnostic_fact_classifiers.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/diagnostics/test_diagnostic_reports.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/diagnostics/test_diagnostic_snapshot_events.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/diagnostics/test_diagnostic_snapshot_report.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/diagnostics/test_doctor_first_run.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/parser/test_parser.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/parser/test_parser_inspect_log.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/parser/test_parser_state.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/pricing/test_allowance.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/pricing/test_pricing.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/reports/test_recommendations.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/reports/test_support.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/server/test_server_call_detail.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/server/test_server_call_lists.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/server/test_server_context.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/server/test_server_context_settings.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/server/test_server_diagnostic_facts.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/server/test_server_diagnostic_refresh_auth.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/server/test_server_diagnostic_snapshots.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/server/test_server_live_queries.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/server/test_server_live_rows.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/server/test_server_recommendations.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/server/test_server_request_guards.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/server/test_server_responses.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/server/test_server_routes.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/server/test_server_status.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/server/test_server_summary.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/server/test_server_threads.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/server/test_server_usage_refresh.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/store/test_store_dashboard_mcp.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/store/test_store_dashboard_queries.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/store/test_store_large_batches.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/store/test_store_migrations.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/store/test_store_query_sql.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/store/test_store_sources.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/store_dashboard_helpers.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/usage_drain/test_usage_drain_allowance_fits.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/usage_drain/test_usage_drain_boundary_delta.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/usage_drain/test_usage_drain_boundary_delta_summary.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/usage_drain/test_usage_drain_boundary_summary.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/usage_drain/test_usage_drain_error_diagnostics.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/usage_drain/test_usage_drain_feature_history.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/usage_drain/test_usage_drain_model.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/usage_drain/test_usage_drain_one_percent_capacity.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/usage_drain/test_usage_drain_predictive.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/usage_drain/test_usage_drain_regime_segments.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/usage_drain/test_usage_drain_regression.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/usage_drain/test_usage_drain_report_records.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/usage_drain/test_usage_drain_state_buckets.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/usage_drain/test_usage_drain_state_diagnostics.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/usage_drain/test_usage_drain_summary_metrics.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/usage_drain/test_usage_drain_token_components.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/usage_drain/test_usage_drain_transition_gates.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/usage_drain/test_usage_drain_transition_metrics.py +0 -0
- {codex_usage_tracking-0.13.1 → codex_usage_tracking-0.14.1}/tests/usage_drain/test_usage_drain_walk_forward.py +0 -0
|
@@ -2,6 +2,18 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
## 0.14.1 - 2026-07-04
|
|
6
|
+
|
|
7
|
+
- Harden React dashboard responsive chrome, including topbar control wrapping, table containment, sticky table affordances, mobile nav polish, and refreshed synthetic dashboard screenshots.
|
|
8
|
+
|
|
9
|
+
## 0.14.0 - 2026-07-04
|
|
10
|
+
|
|
11
|
+
- Make `serve-dashboard --open` prefer the React dashboard route while keeping legacy `/dashboard.html` available as a localhost fallback, and expose both URLs in `serve-dashboard --json`.
|
|
12
|
+
- Restore major legacy dashboard parity in the React dashboard, including overview recent-call loading controls, sticky thread/header table affordances, row-to-investigator actions, diagnostics fact-call pagination, report and call sorting state, and legacy URL/filter normalization.
|
|
13
|
+
- Add local-only transition safeguards: the prominent unofficial-project banner, aggregate-only privacy boundaries, rebuilt dashboard assets, and release-gate documentation for the React bundle.
|
|
14
|
+
- Prioritize weekly usage windows in Overview and Settings so weekly remaining usage is surfaced ahead of short 5-hour windows.
|
|
15
|
+
- Expose dashboard-shaped MCP payloads for status, calls, call details, threads, report packs, and dashboard recommendations, and teach bundled skills concrete token-waste investigation prompts.
|
|
16
|
+
|
|
5
17
|
## 0.13.1 - 2026-06-30
|
|
6
18
|
|
|
7
19
|
- Add guided usage-summary diagnostics across CLI, API, and dashboard to explain the largest aggregate drivers behind usage.
|
|
@@ -90,7 +102,7 @@
|
|
|
90
102
|
- Add an aggregate Diagnostics dashboard for inspecting diagnostic facts, associated calls, token totals, and on-demand evidence without persisting raw transcript text.
|
|
91
103
|
- Add diagnostic fact extraction, reporting APIs, dashboard drilldowns, sortable associated-call tables, and load-more controls for larger diagnostic result sets.
|
|
92
104
|
- Add source byte offsets and context seek diagnostics so on-demand evidence loading can seek when offsets are valid and fall back safely when they are missing or stale.
|
|
93
|
-
- Harden dashboard startup so visiting Diagnostics before other views load no longer prevents Calls, Threads, or
|
|
105
|
+
- Harden dashboard startup so visiting Diagnostics before other views load no longer prevents Calls, Threads, or Overview from hydrating.
|
|
94
106
|
- Make Live refresh use the cached/indexed append path and fetch only newly visible leading rows instead of running the full manual refresh reset cycle.
|
|
95
107
|
|
|
96
108
|
## 0.7.0 - 2026-06-18
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: codex-usage-tracking
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.14.1
|
|
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
|
|
@@ -45,8 +45,8 @@ Dynamic: license-file
|
|
|
45
45
|
# Codex Usage Tracker
|
|
46
46
|
|
|
47
47
|
<p align="center">
|
|
48
|
-
<a href="docs/assets/dashboard-calls.png"><img src="docs/assets/dashboard-calls-preview.png?v=readme-
|
|
49
|
-
<a href="docs/assets/dashboard-call-investigator.png"><img src="docs/assets/dashboard-call-investigator-preview.png?v=readme-
|
|
48
|
+
<a href="docs/assets/dashboard-calls.png?v=readme-smart-20260704"><img src="docs/assets/dashboard-calls-preview.png?v=readme-smart-20260704" alt="Codex Usage Tracker React dashboard showing model-call filters, frozen call rows, and row loading controls." width="49%"></a>
|
|
49
|
+
<a href="docs/assets/dashboard-call-investigator.png?v=readme-smart-20260704"><img src="docs/assets/dashboard-call-investigator-preview.png?v=readme-smart-20260704" alt="Codex Usage Tracker call investigator showing token accounting, cache diagnostics, and explicit evidence controls." width="49%"></a>
|
|
50
50
|
</p>
|
|
51
51
|
|
|
52
52
|
Local-first dashboard, Codex plugin, and companion skill for understanding where your Codex tokens and usage credits are going.
|
|
@@ -80,7 +80,7 @@ If `codex-usage-tracker` is not found after installing with pipx, open a new ter
|
|
|
80
80
|
|
|
81
81
|
First install? Start with the [First Five Minutes guide](docs/first-five-minutes.md) for setup, verification, empty-dashboard checks, and safe issue diagnostics.
|
|
82
82
|
|
|
83
|
-
`serve-dashboard` refreshes active-session usage before opening by default. Use `--no-refresh` only when you intentionally want to inspect the cached local index.
|
|
83
|
+
`serve-dashboard` refreshes active-session usage before opening the React dashboard by default. The legacy dashboard remains available at `/dashboard.html` on the same localhost server. Use `--no-refresh` only when you intentionally want to inspect the cached local index.
|
|
84
84
|
|
|
85
85
|
Package naming: the PyPI distribution is `codex-usage-tracking`; the installed command is `codex-usage-tracker`; the GitHub repository remains `douglasmonsky/codex-usage-tracker`. The `codex-usage-tracker` PyPI name is not this project, so avoid similarly named packages when following these docs.
|
|
86
86
|
|
|
@@ -96,35 +96,35 @@ Want Codex to do it for you? Paste: `Install codex-usage-tracking with pipx, run
|
|
|
96
96
|
|
|
97
97
|
## Dashboard Preview
|
|
98
98
|
|
|
99
|
-
|
|
99
|
+
Overview is the dashboard landing workspace: it shows recent aggregate usage, weekly remaining usage context, row loading controls, and charts that open on recent dates.
|
|
100
100
|
|
|
101
|
-

|
|
102
102
|
|
|
103
|
-
|
|
103
|
+
Calls is the high-density investigation surface: filter, sort, inspect details, and export the exact aggregate rows you are looking at.
|
|
104
104
|
|
|
105
|
-

|
|
106
106
|
|
|
107
|
-
The
|
|
107
|
+
The details rail stays beside the model-call table, so you can inspect aggregate call accounting before opening a full investigator route.
|
|
108
108
|
|
|
109
|
-

|
|
110
110
|
|
|
111
|
-
|
|
111
|
+
Click a call row to open the dedicated investigator for exact token accounting, cache/accounting deltas, local serialized evidence buckets, and runtime-only evidence controls.
|
|
112
112
|
|
|
113
|
-

|
|
114
114
|
|
|
115
|
-
|
|
115
|
+
The lower investigator view keeps local JSONL context gated behind explicit localhost actions; raw context is not embedded in generated dashboard HTML.
|
|
116
116
|
|
|
117
|
-

|
|
118
118
|
|
|
119
|
-
|
|
119
|
+
Threads view groups related calls so long chats, subagents, and auto-review passes are easier to reason about as one work session.
|
|
120
120
|
|
|
121
|
-

|
|
122
122
|
|
|
123
|
-
|
|
123
|
+
Diagnostics Notebook surfaces on-demand snapshot reports for usage drain, tool output, commands, Git interactions, file reads, file modifications, read productivity, and concentration without tying them to the normal live refresh loop.
|
|
124
124
|
|
|
125
|
-

|
|
126
126
|
|
|
127
|
-
|
|
127
|
+
Dashboard screenshots use synthetic aggregate fixture data, and companion prompt/chat previews are synthetic. They do not contain prompts, local logs, assistant responses, real tool output, real thread names, real usage totals, or real Codex session content. See the [Dashboard Guide](docs/dashboard-guide.md) for the full walkthrough.
|
|
128
128
|
|
|
129
129
|
If this helped you track Codex usage, starring the repo helps others find it. Issues and feature requests are welcome.
|
|
130
130
|
|
|
@@ -192,7 +192,7 @@ codex-usage-tracker serve-dashboard --open
|
|
|
192
192
|
Then:
|
|
193
193
|
|
|
194
194
|
1. Leave `Live` enabled while working, or click `Refresh` after a Codex run finishes.
|
|
195
|
-
2. Start in `
|
|
195
|
+
2. Start in `Overview` and scan the high-level metrics and recent calls.
|
|
196
196
|
3. Use `Time` presets or calendar fields to focus on today, this week, the last 7 days, this month, or a custom range.
|
|
197
197
|
4. Use investigation presets for highest-cost threads, highest-credit calls, context bloat, cache misses, pricing gaps, or estimated-price review.
|
|
198
198
|
5. Open `Threads` to see how a conversation grew and whether subagent or auto-review work attached to it.
|
|
@@ -211,7 +211,7 @@ The tracker cannot read your logged-in ChatGPT plan or live remaining usage auto
|
|
|
211
211
|
|
|
212
212
|
- Local SQLite index at `~/.codex-usage-tracker/usage.sqlite3`.
|
|
213
213
|
- Static dashboard generation plus localhost live refresh.
|
|
214
|
-
- `
|
|
214
|
+
- `Overview`, `Calls`, `Threads`, and `Diagnostics` dashboard views, including on-demand usage-drain report runs with cumulative per-thread cost curves.
|
|
215
215
|
- Active-only dashboards by default, with an explicit `All history` toggle for archived sessions.
|
|
216
216
|
- CLI summaries, queries, CSV export, dashboard generation, doctor checks, and support bundles.
|
|
217
217
|
- MCP tools for Codex sessions that want to query local usage data.
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
# Codex Usage Tracker
|
|
2
2
|
|
|
3
3
|
<p align="center">
|
|
4
|
-
<a href="docs/assets/dashboard-calls.png"><img src="docs/assets/dashboard-calls-preview.png?v=readme-
|
|
5
|
-
<a href="docs/assets/dashboard-call-investigator.png"><img src="docs/assets/dashboard-call-investigator-preview.png?v=readme-
|
|
4
|
+
<a href="docs/assets/dashboard-calls.png?v=readme-smart-20260704"><img src="docs/assets/dashboard-calls-preview.png?v=readme-smart-20260704" alt="Codex Usage Tracker React dashboard showing model-call filters, frozen call rows, and row loading controls." width="49%"></a>
|
|
5
|
+
<a href="docs/assets/dashboard-call-investigator.png?v=readme-smart-20260704"><img src="docs/assets/dashboard-call-investigator-preview.png?v=readme-smart-20260704" alt="Codex Usage Tracker call investigator showing token accounting, cache diagnostics, and explicit evidence controls." width="49%"></a>
|
|
6
6
|
</p>
|
|
7
7
|
|
|
8
8
|
Local-first dashboard, Codex plugin, and companion skill for understanding where your Codex tokens and usage credits are going.
|
|
@@ -36,7 +36,7 @@ If `codex-usage-tracker` is not found after installing with pipx, open a new ter
|
|
|
36
36
|
|
|
37
37
|
First install? Start with the [First Five Minutes guide](docs/first-five-minutes.md) for setup, verification, empty-dashboard checks, and safe issue diagnostics.
|
|
38
38
|
|
|
39
|
-
`serve-dashboard` refreshes active-session usage before opening by default. Use `--no-refresh` only when you intentionally want to inspect the cached local index.
|
|
39
|
+
`serve-dashboard` refreshes active-session usage before opening the React dashboard by default. The legacy dashboard remains available at `/dashboard.html` on the same localhost server. Use `--no-refresh` only when you intentionally want to inspect the cached local index.
|
|
40
40
|
|
|
41
41
|
Package naming: the PyPI distribution is `codex-usage-tracking`; the installed command is `codex-usage-tracker`; the GitHub repository remains `douglasmonsky/codex-usage-tracker`. The `codex-usage-tracker` PyPI name is not this project, so avoid similarly named packages when following these docs.
|
|
42
42
|
|
|
@@ -52,35 +52,35 @@ Want Codex to do it for you? Paste: `Install codex-usage-tracking with pipx, run
|
|
|
52
52
|
|
|
53
53
|
## Dashboard Preview
|
|
54
54
|
|
|
55
|
-
|
|
55
|
+
Overview is the dashboard landing workspace: it shows recent aggregate usage, weekly remaining usage context, row loading controls, and charts that open on recent dates.
|
|
56
56
|
|
|
57
|
-

|
|
58
58
|
|
|
59
|
-
|
|
59
|
+
Calls is the high-density investigation surface: filter, sort, inspect details, and export the exact aggregate rows you are looking at.
|
|
60
60
|
|
|
61
|
-

|
|
62
62
|
|
|
63
|
-
The
|
|
63
|
+
The details rail stays beside the model-call table, so you can inspect aggregate call accounting before opening a full investigator route.
|
|
64
64
|
|
|
65
|
-

|
|
66
66
|
|
|
67
|
-
|
|
67
|
+
Click a call row to open the dedicated investigator for exact token accounting, cache/accounting deltas, local serialized evidence buckets, and runtime-only evidence controls.
|
|
68
68
|
|
|
69
|
-

|
|
70
70
|
|
|
71
|
-
|
|
71
|
+
The lower investigator view keeps local JSONL context gated behind explicit localhost actions; raw context is not embedded in generated dashboard HTML.
|
|
72
72
|
|
|
73
|
-

|
|
74
74
|
|
|
75
|
-
|
|
75
|
+
Threads view groups related calls so long chats, subagents, and auto-review passes are easier to reason about as one work session.
|
|
76
76
|
|
|
77
|
-

|
|
78
78
|
|
|
79
|
-
|
|
79
|
+
Diagnostics Notebook surfaces on-demand snapshot reports for usage drain, tool output, commands, Git interactions, file reads, file modifications, read productivity, and concentration without tying them to the normal live refresh loop.
|
|
80
80
|
|
|
81
|
-

|
|
82
82
|
|
|
83
|
-
|
|
83
|
+
Dashboard screenshots use synthetic aggregate fixture data, and companion prompt/chat previews are synthetic. They do not contain prompts, local logs, assistant responses, real tool output, real thread names, real usage totals, or real Codex session content. See the [Dashboard Guide](docs/dashboard-guide.md) for the full walkthrough.
|
|
84
84
|
|
|
85
85
|
If this helped you track Codex usage, starring the repo helps others find it. Issues and feature requests are welcome.
|
|
86
86
|
|
|
@@ -148,7 +148,7 @@ codex-usage-tracker serve-dashboard --open
|
|
|
148
148
|
Then:
|
|
149
149
|
|
|
150
150
|
1. Leave `Live` enabled while working, or click `Refresh` after a Codex run finishes.
|
|
151
|
-
2. Start in `
|
|
151
|
+
2. Start in `Overview` and scan the high-level metrics and recent calls.
|
|
152
152
|
3. Use `Time` presets or calendar fields to focus on today, this week, the last 7 days, this month, or a custom range.
|
|
153
153
|
4. Use investigation presets for highest-cost threads, highest-credit calls, context bloat, cache misses, pricing gaps, or estimated-price review.
|
|
154
154
|
5. Open `Threads` to see how a conversation grew and whether subagent or auto-review work attached to it.
|
|
@@ -167,7 +167,7 @@ The tracker cannot read your logged-in ChatGPT plan or live remaining usage auto
|
|
|
167
167
|
|
|
168
168
|
- Local SQLite index at `~/.codex-usage-tracker/usage.sqlite3`.
|
|
169
169
|
- Static dashboard generation plus localhost live refresh.
|
|
170
|
-
- `
|
|
170
|
+
- `Overview`, `Calls`, `Threads`, and `Diagnostics` dashboard views, including on-demand usage-drain report runs with cumulative per-thread cost curves.
|
|
171
171
|
- Active-only dashboards by default, with an explicit `All history` toggle for archived sessions.
|
|
172
172
|
- CLI summaries, queries, CSV export, dashboard generation, doctor checks, and support bundles.
|
|
173
173
|
- MCP tools for Codex sessions that want to query local usage data.
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
codex_usage_tracking-0.14.1/docs/assets/frontend-rewrite-references/cache-context-lab-reference.png
ADDED
|
Binary file
|
|
Binary file
|
codex_usage_tracking-0.14.1/docs/assets/frontend-rewrite-references/calls-analyst-view-reference.png
ADDED
|
Binary file
|
codex_usage_tracking-0.14.1/docs/assets/frontend-rewrite-references/calls-high-density-reference.png
ADDED
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
|
Binary file
|
codex_usage_tracking-0.14.1/docs/assets/frontend-rewrite-references/overview-dashboard-reference.png
ADDED
|
Binary file
|
|
Binary file
|
codex_usage_tracking-0.14.1/docs/assets/frontend-rewrite-references/thread-efficiency-reference.png
ADDED
|
Binary file
|
codex_usage_tracking-0.14.1/docs/assets/frontend-rewrite-references/usage-drain-lab-reference.png
ADDED
|
Binary file
|
|
@@ -46,7 +46,8 @@ Tracked schema ids:
|
|
|
46
46
|
| `codex-usage-tracker-reset-db-v1` | CLI `reset-db --yes --json` |
|
|
47
47
|
| `codex-usage-tracker-summary-v1` | CLI `summary --json`, CLI `expensive --json`, MCP summary/expensive JSON |
|
|
48
48
|
| `codex-usage-tracker-query-v1` | CLI `query`, MCP `usage_query(...)` |
|
|
49
|
-
| `codex-usage-tracker-recommendations-v1` | CLI `recommendations --json`, MCP `usage_recommendations(response_format="json")` |
|
|
49
|
+
| `codex-usage-tracker-recommendations-v1` | CLI `recommendations --json`, MCP `usage_recommendations(response_format="json")`, MCP `usage_dashboard_recommendations(...)` |
|
|
50
|
+
| `codex-usage-tracker-reports-pack-v1` | Dashboard server `/api/reports/pack` response, MCP `usage_report_pack(...)` |
|
|
50
51
|
| `codex-usage-tracker-diagnostics-v1` | CLI `diagnostics ... --json`, dashboard server `/api/diagnostics/*` |
|
|
51
52
|
| `codex-usage-tracker-diagnostic-overview-v1` | CLI `diagnostics overview --json`, dashboard server `/api/diagnostics/overview` |
|
|
52
53
|
| `codex-usage-tracker-diagnostic-tool-output-v1` | CLI `diagnostics tool-output --json`, dashboard server `/api/diagnostics/tool-output` |
|
|
@@ -64,14 +65,14 @@ Tracked schema ids:
|
|
|
64
65
|
| `codex-usage-tracker-context-settings-v1` | Dashboard server `/api/context-settings` response |
|
|
65
66
|
| `codex-usage-tracker-open-investigator-v1` | Dashboard server `/api/open-investigator` response |
|
|
66
67
|
| `codex-usage-tracker-live-api-v1` | Dashboard server live API payload family marker |
|
|
67
|
-
| `codex-usage-tracker-status-v1` | Dashboard server `/api/status` response |
|
|
68
|
-
| `codex-usage-tracker-calls-v1` | Dashboard server `/api/calls` response |
|
|
69
|
-
| `codex-usage-tracker-call-v1` | Dashboard server `/api/call` response |
|
|
70
|
-
| `codex-usage-tracker-threads-v1` | Dashboard server `/api/threads` response |
|
|
68
|
+
| `codex-usage-tracker-status-v1` | Dashboard server `/api/status` response, MCP `usage_status()` |
|
|
69
|
+
| `codex-usage-tracker-calls-v1` | Dashboard server `/api/calls` response, MCP `usage_calls(...)` |
|
|
70
|
+
| `codex-usage-tracker-call-v1` | Dashboard server `/api/call` response, MCP `usage_call_detail(record_id=...)` |
|
|
71
|
+
| `codex-usage-tracker-threads-v1` | Dashboard server `/api/threads` response, MCP `usage_threads(...)` |
|
|
71
72
|
| `codex-usage-tracker-thread-calls-v1` | Dashboard server `/api/thread-calls` response |
|
|
72
73
|
| `codex-usage-tracker-dashboard-v1` | CLI `dashboard --json`, MCP `generate_usage_dashboard()` |
|
|
73
74
|
| `codex-usage-tracker-open-dashboard-v1` | CLI `open-dashboard --json` |
|
|
74
|
-
| `codex-usage-tracker-serve-dashboard-v1` | CLI `serve-dashboard --json` startup payload |
|
|
75
|
+
| `codex-usage-tracker-serve-dashboard-v1` | CLI `serve-dashboard --json` startup payload, including preferred React `dashboard_url` and legacy `legacy_dashboard_url` fallback |
|
|
75
76
|
| `codex-usage-tracker-pricing-coverage-v1` | CLI `pricing-coverage --json`, MCP `usage_pricing_coverage(response_format="json")` |
|
|
76
77
|
| `codex-usage-tracker-export-v1` | CLI `export --json`, MCP `export_usage_csv(...)` |
|
|
77
78
|
| `codex-usage-tracker-init-pricing-v1` | CLI `init-pricing --json`, MCP `init_usage_pricing_config()` |
|
|
@@ -79,7 +79,7 @@ codex-usage-tracker serve-dashboard --no-context-api --open
|
|
|
79
79
|
|
|
80
80
|
`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.
|
|
81
81
|
|
|
82
|
-
`open-dashboard` and `serve-dashboard` refresh active-session logs before opening by default. 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.
|
|
82
|
+
`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.
|
|
83
83
|
|
|
84
84
|
Dashboards default to active sessions only. Use `--include-archived` for an all-history static/opened dashboard, or switch the served dashboard's `History` control from `Active sessions only` to `All history` when you intentionally want archived logs scanned and included.
|
|
85
85
|
|
|
@@ -35,7 +35,7 @@ codex-usage-tracker --privacy-mode strict dashboard --open
|
|
|
35
35
|
|
|
36
36
|
Redacted mode hides raw cwd/source paths, hides Git remote labels, and hashes unnamed projects while preserving configured aliases. Strict mode also hides project-relative cwd, Git branch, and tags. The dashboard header shows the active metadata mode.
|
|
37
37
|
|
|
38
|
-
`serve-dashboard` refreshes active-session logs before opening by default. Use `--no-refresh` only when you intentionally want a cached view of the existing local index.
|
|
38
|
+
`serve-dashboard` refreshes active-session logs before opening the React dashboard by default. The legacy dashboard remains available at `/dashboard.html` on the same localhost server. Use `--no-refresh` only when you intentionally want a cached view of the existing local index.
|
|
39
39
|
|
|
40
40
|
Set the initial dashboard language with the global `--lang` option before the command, or use `CODEX_USAGE_TRACKER_LANG`:
|
|
41
41
|
|
|
@@ -61,21 +61,21 @@ Static file mode can still filter, sort, and inspect aggregate call fields. `ope
|
|
|
61
61
|
|
|
62
62
|
The localhost server uses a random per-server token for refresh and context API calls, validates loopback `Host` and `Origin` headers, and can start with context loading off through `codex-usage-tracker serve-dashboard --no-context-api`.
|
|
63
63
|
|
|
64
|
-
##
|
|
64
|
+
## Overview View
|
|
65
65
|
|
|
66
|
-

|
|
67
67
|
|
|
68
|
-
Open
|
|
68
|
+
Open `Overview` when you want a quick read on current aggregate usage before sorting deeper tables.
|
|
69
69
|
|
|
70
|
-
-
|
|
71
|
-
-
|
|
72
|
-
-
|
|
73
|
-
-
|
|
74
|
-
-
|
|
70
|
+
- Global dashboard filters narrow Overview and the secondary workspaces by model, reasoning effort, pricing/credit confidence, and time range using the same URL parameters as legacy dashboard links.
|
|
71
|
+
- Metric cards summarize loaded aggregate rows without exposing prompts, assistant text, or raw tool output.
|
|
72
|
+
- Time-series charts open on the most recent dates first and can scroll left for earlier history while keeping the value axis visible.
|
|
73
|
+
- `Recent Calls` keeps the homepage modular: it shows the latest matching calls and lets any row open Call Investigator directly.
|
|
74
|
+
- Use `Investigator` or `Calls` when you need deeper ranking, filtering, or preset-style investigation workflows.
|
|
75
75
|
|
|
76
76
|
## Calls View
|
|
77
77
|
|
|
78
|
-

|
|
79
79
|
|
|
80
80
|
Use `Calls` view when you want to inspect individual model calls.
|
|
81
81
|
|
|
@@ -101,7 +101,7 @@ Use `Calls` view when you want to inspect individual model calls.
|
|
|
101
101
|
- The first detail section includes a recommended action and a "why flagged" explanation derived only from aggregate counters and pricing/allowance metadata.
|
|
102
102
|
- Raw aggregate identifiers and source file metadata are collapsed until you need them.
|
|
103
103
|
- The expanded details panel reserves a visible scrollbar so long field lists are discoverable before you start scrolling.
|
|
104
|
-
- `Load more` appears when the active
|
|
104
|
+
- `Load more` appears when the active Overview, Calls, Threads, or expanded thread-call section has more rows to reveal.
|
|
105
105
|
- When served from localhost, `/api/usage` accepts `limit` and `offset` so automation can page aggregate rows without loading an entire large history.
|
|
106
106
|
- After you scroll down, the bottom-right `Top` button returns to the top of the dashboard.
|
|
107
107
|
|
|
@@ -117,7 +117,7 @@ Useful interpretation notes:
|
|
|
117
117
|
|
|
118
118
|
## Threads View
|
|
119
119
|
|
|
120
|
-

|
|
121
121
|
|
|
122
122
|
Use `Threads` view when you want to understand a work session as a group instead of one call at a time.
|
|
123
123
|
|
|
@@ -130,7 +130,7 @@ Use `Threads` view when you want to understand a work session as a group instead
|
|
|
130
130
|
|
|
131
131
|
## Diagnostics View
|
|
132
132
|
|
|
133
|
-

|
|
134
134
|
|
|
135
135
|
Use `Diagnostics` view when you want to see what structured event patterns are happening and what token totals are associated with those patterns.
|
|
136
136
|
|
|
@@ -149,26 +149,26 @@ Use `Diagnostics` view when you want to see what structured event patterns are h
|
|
|
149
149
|
- Click `Calls` on a fact row to load associated model calls. Call links and largest-call links open the Call Investigator, where raw context remains explicit and on demand.
|
|
150
150
|
- Associated token totals are not causal allocations and are not additive when one call has multiple diagnostic facts.
|
|
151
151
|
|
|
152
|
-
The same
|
|
152
|
+
The same model, reasoning, confidence, time range, history scope, cards, and load controls apply in `Overview`, `Threads`, `Diagnostics`, and the other secondary workspaces. `Calls` keeps a fuller table-specific filter row for local search, source coverage, sorting, density, and selected-row state.
|
|
153
153
|
|
|
154
154
|
## Call Investigator
|
|
155
155
|
|
|
156
|
-

|
|
157
157
|
|
|
158
|
-
Clicking a Calls row opens `dashboard.html?view=call&record=<record_id>` for one model call. Hover remains the fast scanning surface; the investigator is the deeper diagnostic page for a single selected call. Expanded Threads rows and the details panel can still expose explicit investigator actions where a row click already has another meaning.
|
|
158
|
+
Clicking a Calls row opens `react-dashboard.html?view=call&record=<record_id>` for one model call. Legacy `dashboard.html?view=call&record=...` links remain accepted and hydrate the same investigator route. Hover remains the fast scanning surface; the investigator is the deeper diagnostic page for a single selected call. Expanded Threads rows and the details panel can still expose explicit investigator actions where a row click already has another meaning.
|
|
159
159
|
|
|
160
160
|
The investigator separates evidence by confidence:
|
|
161
161
|
|
|
162
162
|
- `Exact`: logged token callback counts, cost, Codex credits, cache ratio, model, effort, source, and context-window pressure.
|
|
163
163
|
- `Derived`: previous/next calls in the same resolved thread and cache/accounting deltas versus the previous chronological call.
|
|
164
164
|
- `Estimated`: visible new-context estimates, serialized local JSONL upper bounds, candidate serialized-overhead groups, and any remaining gap after that upper bound. These are attribution aids, not exact cached text spans.
|
|
165
|
-
- `Evidence`: redacted local JSONL turn-log evidence loaded at runtime for the selected investigator call.
|
|
165
|
+
- `Evidence`: redacted local JSONL turn-log evidence loaded at runtime for the selected investigator call after explicit localhost action.
|
|
166
166
|
|
|
167
167
|
Previous and next buttons move chronologically within the same resolved thread and keep the selected call in the URL. Cache diagnostics label common patterns such as warm cache reuse, cold resume or stale cache, partial cache miss, uncached spike, and post-compaction. Delta cards compare input, cached input, uncached input, output/reasoning output, and cache ratio to the previous call and use "cache/accounting delta" terminology because logs do not expose exact cached text spans.
|
|
168
168
|
|
|
169
169
|
## Details And Context
|
|
170
170
|
|
|
171
|
-

|
|
172
172
|
|
|
173
173
|
The details rail is collapsed by default to preserve table space. Open `Call Details` when you want a compact aggregate preview without leaving the table. When expanded on desktop, it sticks inside the viewport and scrolls internally when the selected call has more fields or loaded context than can fit on screen.
|
|
174
174
|
|
|
@@ -191,7 +191,7 @@ For selected threads, the panel shows:
|
|
|
191
191
|
- a compact thread timeline with recent calls, cost, credits, cache, context, and pricing cues
|
|
192
192
|
- direct, subagent, auto-review, attached-call, and spawned-thread relationship counts
|
|
193
193
|
|
|
194
|
-
When served from localhost, the call investigator
|
|
194
|
+
When served from localhost with the context API enabled, the call investigator can fetch quick, redacted source evidence for only the selected call. The details panel still uses an explicit `Show turn log evidence` action so hovering rows does not pull raw context unexpectedly.
|
|
195
195
|
|
|
196
196
|
- `Hide tool output` reloads evidence without tool output when the output is noisy.
|
|
197
197
|
- `Show tool output` appears after hiding it and reloads evidence with redacted tool output included again.
|
|
@@ -206,7 +206,7 @@ When served from localhost, the call investigator automatically fetches quick, r
|
|
|
206
206
|
2. Leave `Live` enabled while you work, or click `Refresh` after a Codex run finishes.
|
|
207
207
|
3. Leave `History` on `Active sessions only` for current work. Switch to `All history` when you intentionally want archived sessions included in the live refresh.
|
|
208
208
|
4. Optionally run `parse-allowance` with copied values from Codex Usage or `/status`, or initialize and edit `allowance.json` manually.
|
|
209
|
-
5. Start in `
|
|
209
|
+
5. Start in `Overview` view and review high-level totals, recent trends, and recent calls.
|
|
210
210
|
6. Narrow the `Time` filter when you are investigating a recent spike or a specific work window.
|
|
211
211
|
7. Use a preset when the question is already clear: highest-cost threads, highest Codex credits, context bloat, cache misses, pricing gaps, or estimated-price review.
|
|
212
212
|
8. Use `Threads` view to find the active work thread and any spawned subagent calls.
|
|
@@ -38,7 +38,7 @@ fix/<issue-number>-short-description
|
|
|
38
38
|
docs/<issue-number>-short-description
|
|
39
39
|
chore/<issue-number>-short-description
|
|
40
40
|
test/<issue-number>-short-description
|
|
41
|
-
release/0.
|
|
41
|
+
release/0.14.0
|
|
42
42
|
hotfix/0.3.3
|
|
43
43
|
```
|
|
44
44
|
|
|
@@ -149,8 +149,8 @@ python scripts/smoke_installed_package.py --docker
|
|
|
149
149
|
To verify the public PyPI package instead of the local checkout:
|
|
150
150
|
|
|
151
151
|
```bash
|
|
152
|
-
python scripts/smoke_installed_package.py --from-pypi --version 0.
|
|
153
|
-
python scripts/smoke_installed_package.py --docker --from-pypi --version 0.
|
|
152
|
+
python scripts/smoke_installed_package.py --from-pypi --version 0.14.1
|
|
153
|
+
python scripts/smoke_installed_package.py --docker --from-pypi --version 0.14.1
|
|
154
154
|
```
|
|
155
155
|
|
|
156
156
|
`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.
|
|
@@ -194,7 +194,7 @@ DASHBOARD_BASE_URL=http://127.0.0.1:8898 npm run smoke:dashboard:diagnostics
|
|
|
194
194
|
|
|
195
195
|
## Dashboard Screenshots
|
|
196
196
|
|
|
197
|
-
Dashboard screenshots in `docs/assets/` and `src/codex_usage_tracker/plugin_data/docs/assets/` must be generated from synthetic aggregate fixture data only.
|
|
197
|
+
Dashboard screenshots in `docs/assets/` and `src/codex_usage_tracker/plugin_data/docs/assets/` must be generated from synthetic aggregate fixture data only. Capture the React dashboard from the Vite fixture route, then mirror the refreshed files into the packaged docs asset directory.
|
|
198
198
|
|
|
199
199
|
The tracked dashboard screenshot set is:
|
|
200
200
|
|
|
@@ -297,8 +297,8 @@ After the release branch merges, tag from updated `main`, not from an unreviewed
|
|
|
297
297
|
```bash
|
|
298
298
|
git switch main
|
|
299
299
|
git pull --ff-only
|
|
300
|
-
git tag -a v0.
|
|
301
|
-
git push origin v0.
|
|
300
|
+
git tag -a v0.14.0 -m "codex-usage-tracker 0.14.0"
|
|
301
|
+
git push origin v0.14.0
|
|
302
302
|
```
|
|
303
303
|
|
|
304
304
|
Do not create or push release tags without maintainer approval.
|
|
@@ -307,7 +307,7 @@ Do not create or push release tags without maintainer approval.
|
|
|
307
307
|
|
|
308
308
|
Publishing uses GitHub Actions Trusted Publishing through `.github/workflows/publish.yml`; do not upload from a local machine and do not add PyPI or TestPyPI API tokens.
|
|
309
309
|
|
|
310
|
-
The first public package release, `0.3.0`, was published on June 8, 2026. Patch
|
|
310
|
+
The first public package release, `0.3.0`, was published on June 8, 2026. Patch releases `0.3.1` and `0.3.2` stabilized live-dashboard launch and context loading. Minor releases `0.4.0` through `0.13.1` added Python 3.14 support, localization, SQL-backed dashboard loading, observed usage snapshots, diagnostics, usage-drain reports, maintainability refactors, onboarding hardening, and guided usage-summary diagnostics. Minor release `0.14.0` ships the React dashboard transition with legacy parity fixes, local-only safeguards, and weekly-first usage remaining displays.
|
|
311
311
|
|
|
312
312
|
- GitHub Release: `https://github.com/douglasmonsky/codex-usage-tracker/releases/tag/v0.3.0`
|
|
313
313
|
- GitHub Release: `https://github.com/douglasmonsky/codex-usage-tracker/releases/tag/v0.3.1`
|