codex-usage-tracking 0.15.1__tar.gz → 0.17.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.
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/.codex-plugin/plugin.json +7 -6
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/AGENTS.md +8 -8
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/CHANGELOG.md +29 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/PKG-INFO +8 -7
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/README.md +7 -6
- codex_usage_tracking-0.17.0/docs/agentic-briefing-and-dogfood-roadmap.md +187 -0
- codex_usage_tracking-0.17.0/docs/agentic-investigation-hardening-roadmap.md +159 -0
- codex_usage_tracking-0.17.0/docs/agentic-mcp-skill-roadmap.md +105 -0
- codex_usage_tracking-0.17.0/docs/allowance-intelligence.md +64 -0
- codex_usage_tracking-0.17.0/docs/architecture.md +62 -0
- codex_usage_tracking-0.17.0/docs/assets/readme-hero-2.png +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/docs/cli-json-schemas.md +366 -1
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/docs/cli-reference.md +21 -7
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/docs/development.md +2 -2
- {codex_usage_tracking-0.15.1/src/codex_usage_tracker/plugin_data → codex_usage_tracking-0.17.0}/docs/examples/remediation-conversation.md +7 -7
- {codex_usage_tracking-0.15.1/src/codex_usage_tracker/plugin_data → codex_usage_tracking-0.17.0}/docs/examples/token-waste-conversation.md +6 -5
- codex_usage_tracking-0.17.0/docs/local-content-index-roadmap.md +375 -0
- codex_usage_tracking-0.17.0/docs/mcp.md +152 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/docs/one-dot-oh-readiness.md +8 -8
- codex_usage_tracking-0.17.0/docs/privacy.md +128 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/pyproject.toml +1 -1
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/scripts/smoke_installed_package.py +5 -0
- codex_usage_tracking-0.17.0/skills/codex-usage-api/SKILL.md +69 -0
- {codex_usage_tracking-0.15.1/src/codex_usage_tracker/plugin_data → codex_usage_tracking-0.17.0}/skills/codex-usage-tracker/SKILL.md +35 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/skills/codex-usage-tracker/scripts/run_mcp.py +2 -2
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/__init__.py +1 -1
- codex_usage_tracking-0.17.0/src/codex_usage_tracker/allowance_intelligence/__init__.py +23 -0
- codex_usage_tracking-0.17.0/src/codex_usage_tracker/allowance_intelligence/model.py +590 -0
- codex_usage_tracking-0.17.0/src/codex_usage_tracker/allowance_intelligence/reports.py +331 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/cli/main.py +150 -0
- codex_usage_tracking-0.17.0/src/codex_usage_tracker/cli/mcp_server.py +1614 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/cli/parser.py +140 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/cli/plugin_installer.py +8 -8
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/core/formatting.py +26 -0
- codex_usage_tracking-0.17.0/src/codex_usage_tracker/core/json_contract_cli.py +586 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/core/json_contract_server.py +9 -1
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/dashboard/api.py +1 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/diagnostics/fact_classifiers.py +34 -2
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/diagnostics/snapshot_events.py +63 -1
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/parser/jsonl_v1.py +4 -0
- codex_usage_tracking-0.17.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/dashboard-react.js +276 -0
- codex_usage_tracking-0.17.0/src/codex_usage_tracker/plugin_data/dashboard/react/assets/index.css +1 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0/src/codex_usage_tracker/plugin_data}/docs/examples/remediation-conversation.md +7 -7
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0/src/codex_usage_tracker/plugin_data}/docs/examples/token-waste-conversation.md +6 -5
- codex_usage_tracking-0.17.0/src/codex_usage_tracker/plugin_data/skills/codex-usage-api/SKILL.md +69 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0/src/codex_usage_tracker/plugin_data}/skills/codex-usage-tracker/SKILL.md +35 -0
- codex_usage_tracking-0.17.0/src/codex_usage_tracker/reports/agentic_dogfood.py +811 -0
- codex_usage_tracking-0.17.0/src/codex_usage_tracker/reports/api.py +3006 -0
- codex_usage_tracking-0.17.0/src/codex_usage_tracker/server/allowance.py +197 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/server/api.py +3 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/server/handler.py +67 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/server/recommendations.py +1 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/server/routes.py +5 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/server/usage_refresh.py +176 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/server/utils.py +8 -5
- codex_usage_tracking-0.17.0/src/codex_usage_tracker/store/allowance_observations.py +139 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/store/api.py +256 -1
- codex_usage_tracking-0.17.0/src/codex_usage_tracker/store/content_index.py +1728 -0
- codex_usage_tracking-0.17.0/src/codex_usage_tracker/store/content_index_event_store.py +342 -0
- codex_usage_tracking-0.17.0/src/codex_usage_tracker/store/content_index_events.py +558 -0
- codex_usage_tracking-0.17.0/src/codex_usage_tracker/store/content_patterns.py +412 -0
- codex_usage_tracking-0.17.0/src/codex_usage_tracker/store/investigation_runs.py +94 -0
- codex_usage_tracking-0.17.0/src/codex_usage_tracker/store/large_low_output.py +255 -0
- codex_usage_tracking-0.17.0/src/codex_usage_tracker/store/refresh.py +487 -0
- codex_usage_tracking-0.17.0/src/codex_usage_tracker/store/repeated_files.py +284 -0
- codex_usage_tracking-0.17.0/src/codex_usage_tracker/store/schema.py +766 -0
- codex_usage_tracking-0.17.0/src/codex_usage_tracker/store/shell_churn.py +441 -0
- codex_usage_tracking-0.17.0/src/codex_usage_tracker/store/source_records.py +275 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/store/sources.py +19 -3
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracking.egg-info/PKG-INFO +8 -7
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracking.egg-info/SOURCES.txt +32 -0
- codex_usage_tracking-0.17.0/tests/allowance_intelligence/test_allowance_intelligence.py +194 -0
- codex_usage_tracking-0.17.0/tests/cli/test_allowance_intelligence_cli_mcp.py +74 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/cli/test_cli_lifecycle.py +75 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/cli/test_cli_release.py +29 -0
- codex_usage_tracking-0.17.0/tests/cli/test_mcp_integration.py +596 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/cli/test_plugin_installer.py +2 -2
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/core/test_json_contracts.py +1 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/core/test_privacy.py +2 -3
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/diagnostics/test_diagnostic_fact_classifiers.py +37 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/diagnostics/test_diagnostic_snapshot_events.py +26 -1
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/diagnostics/test_diagnostic_snapshots.py +2 -2
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/parser/test_parser.py +1 -1
- codex_usage_tracking-0.17.0/tests/reports/test_action_brief.py +55 -0
- codex_usage_tracking-0.17.0/tests/reports/test_agentic_dogfood.py +52 -0
- codex_usage_tracking-0.17.0/tests/reports/test_hypothesis_routing.py +54 -0
- codex_usage_tracking-0.17.0/tests/server/test_refresh_jobs.py +44 -0
- codex_usage_tracking-0.17.0/tests/server/test_refresh_routes.py +8 -0
- codex_usage_tracking-0.17.0/tests/server/test_server_allowance.py +122 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/server/test_server_routes.py +5 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/server/test_server_threads.py +25 -1
- codex_usage_tracking-0.17.0/tests/store/test_content_index.py +838 -0
- codex_usage_tracking-0.17.0/tests/store/test_refresh_parallel.py +128 -0
- codex_usage_tracking-0.17.0/tests/store/test_source_records.py +232 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/store/test_store_dashboard_mcp.py +51 -6
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/store/test_store_migrations.py +67 -5
- codex_usage_tracking-0.15.1/docs/architecture.md +0 -55
- codex_usage_tracking-0.15.1/docs/mcp.md +0 -112
- codex_usage_tracking-0.15.1/docs/privacy.md +0 -126
- codex_usage_tracking-0.15.1/skills/codex-usage-api/SKILL.md +0 -88
- codex_usage_tracking-0.15.1/src/codex_usage_tracker/cli/mcp_server.py +0 -650
- codex_usage_tracking-0.15.1/src/codex_usage_tracker/core/json_contract_cli.py +0 -246
- codex_usage_tracking-0.15.1/src/codex_usage_tracker/plugin_data/dashboard/react/assets/dashboard-react.js +0 -276
- codex_usage_tracking-0.15.1/src/codex_usage_tracker/plugin_data/dashboard/react/assets/index.css +0 -1
- codex_usage_tracking-0.15.1/src/codex_usage_tracker/plugin_data/skills/codex-usage-api/SKILL.md +0 -88
- codex_usage_tracking-0.15.1/src/codex_usage_tracker/reports/api.py +0 -490
- codex_usage_tracking-0.15.1/src/codex_usage_tracker/store/refresh.py +0 -122
- codex_usage_tracking-0.15.1/src/codex_usage_tracker/store/schema.py +0 -349
- codex_usage_tracking-0.15.1/tests/cli/test_mcp_integration.py +0 -242
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/.mcp.json +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/CONTRIBUTING.md +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/LICENSE +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/MANIFEST.in +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/SECURITY.md +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/assets/icon.svg +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/docs/adoption-hardening-roadmap.md +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/docs/architecture/decisions/0001-package-domain-boundaries.md +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/docs/architecture-boundary-map.md +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/docs/assets/dashboard-call-investigator-evidence.png +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/docs/assets/dashboard-call-investigator-preview.png +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/docs/assets/dashboard-call-investigator.png +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/docs/assets/dashboard-calls-preview.png +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/docs/assets/dashboard-calls.png +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/docs/assets/dashboard-details.png +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/docs/assets/dashboard-diagnostics-git-expanded.png +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/docs/assets/dashboard-diagnostics.png +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/docs/assets/dashboard-insights.png +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/docs/assets/dashboard-threads.png +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/docs/assets/frontend-rewrite-references/cache-context-lab-reference.png +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/docs/assets/frontend-rewrite-references/call-drilldown-menu-concept-reference.png +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/docs/assets/frontend-rewrite-references/calls-analyst-view-reference.png +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/docs/assets/frontend-rewrite-references/calls-high-density-reference.png +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/docs/assets/frontend-rewrite-references/command-palette-dashboard-reference.png +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/docs/assets/frontend-rewrite-references/diagnostics-notebook-reference.png +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/docs/assets/frontend-rewrite-references/generated-dashboard-concept-reference.png +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/docs/assets/frontend-rewrite-references/generated-maintainer-banner-reference.png +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/docs/assets/frontend-rewrite-references/investigator-workbench-reference.png +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/docs/assets/frontend-rewrite-references/overview-dashboard-reference.png +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/docs/assets/frontend-rewrite-references/projected-weekly-credits-overlap-reference.png +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/docs/assets/frontend-rewrite-references/thread-efficiency-reference.png +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/docs/assets/frontend-rewrite-references/usage-drain-lab-reference.png +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/docs/assets/plugin-prompts.png +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/docs/assets/plugin-thread-leaderboard.png +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/docs/assets/readme-hero.png +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/docs/assets/social-preview.png +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/docs/assets/ux/call-detail-panel.png +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/docs/assets/ux/insight-overview.png +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/docs/assets/ux/thread-investigation.png +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/docs/call-drilldown-performance-checklist.md +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/docs/dashboard-guide.md +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/docs/first-five-minutes.md +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/docs/frontend-rewrite-roadmap.md +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/docs/install.md +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/docs/maintainability-roadmap.md +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/docs/maintainability-scorecard.md +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/docs/pricing-and-credits.md +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/docs/react-dashboard-0.14-release-roadmap.md +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/docs/ui-ux-improvement-plan.md +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/docs/usage-drain-modeling.md +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/scripts/benchmark_synthetic_history.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/scripts/check_release.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/scripts/check_wemake_baseline.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/scripts/generate_social_preview.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/scripts/install_local_plugin.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/scripts/model_usage_drain.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/setup.cfg +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/__main__.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/allowance.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/cli/__init__.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/cli/__main__.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/cli/config.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/cli/dashboard.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/cli/diagnostics.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/cli/output.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/cli/parser_diagnostics.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/context/__init__.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/context/action_timing.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/context/api.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/context/constants.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/context/loader.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/context/reader.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/context/serialized.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/context/summaries.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/context/token_estimates.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/context/values.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/core/__init__.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/core/api_payloads.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/core/call_origin.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/core/i18n.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/core/json_contract_common.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/core/json_contract_diagnostics.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/core/json_contract_validation.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/core/json_contracts.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/core/models.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/core/paths.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/core/projects.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/core/redaction.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/core/schema.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/core/threads.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/dashboard/__init__.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/dashboard/assets.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/dashboard/pricing_snapshot.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/diagnostics/__init__.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/diagnostics/action_hints.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/diagnostics/api.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/diagnostics/facts.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/diagnostics/guided_summary.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/diagnostics/mcp.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/diagnostics/reports.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/diagnostics/snapshot_analysis.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/diagnostics/snapshot_concentration.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/diagnostics/snapshot_constants.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/diagnostics/snapshot_payloads.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/diagnostics/snapshot_report.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/diagnostics/snapshot_rows.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/diagnostics/snapshot_source_logs.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/diagnostics/snapshot_source_scan.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/diagnostics/snapshots.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/diagnostics/types.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/mcp_server.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/parser/__init__.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/parser/api.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/parser/jsonl_values.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/parser/state.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/__init__.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/assets/icon.svg +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard.css +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard.js +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_actions.js +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_analysis.js +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_call.css +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_call_diagnostics.js +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_call_investigator.js +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_cells.js +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_data.js +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_detail.css +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_details.js +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_diagnostics.js +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_diagnostics_facts.js +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_diagnostics_snapshots.js +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_events.js +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_filters.js +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_format.js +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_i18n.js +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_insights.css +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_insights.js +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_layout.css +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_live.js +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_payload_cache.js +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_responsive.css +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_state.js +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_status.js +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_tables.css +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_tables.js +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_template.html +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/dashboard/dashboard_tooltips.js +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/dashboard/locales/ar.json +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/dashboard/locales/de.json +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/dashboard/locales/en.json +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/dashboard/locales/es.json +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/dashboard/locales/fr.json +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/dashboard/locales/it.json +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/dashboard/locales/ja.json +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/dashboard/locales/ko.json +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/dashboard/locales/pt.json +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/dashboard/locales/ru.json +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/dashboard/locales/vi.json +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/dashboard/locales/zh-Hans.json +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/dashboard/react/index.html +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-call-investigator-evidence.png +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-call-investigator-preview.png +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-call-investigator.png +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-calls-preview.png +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-calls.png +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-details.png +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-diagnostics-git-expanded.png +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-diagnostics.png +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-insights.png +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/docs/assets/dashboard-threads.png +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/docs/assets/plugin-prompts.png +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/docs/assets/plugin-thread-leaderboard.png +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/docs/dashboard-guide.html +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_data/rate_cards/codex-credit-rates.json +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/plugin_installer.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/pricing/__init__.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/pricing/allowance.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/pricing/allowance_config.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/pricing/allowance_rate_card.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/pricing/allowance_text.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/pricing/allowance_usage.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/pricing/api.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/pricing/config.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/pricing/costing.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/pricing/estimates.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/pricing/openai.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/reports/__init__.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/reports/filters.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/reports/project_summary.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/reports/recommendation_builder.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/reports/recommendations.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/reports/support.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/server/__init__.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/server/call_detail.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/server/call_lists.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/server/context.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/server/context_settings.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/server/dashboard_shell.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/server/diagnostic_facts.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/server/diagnostic_routes.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/server/diagnostic_snapshots.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/server/live_queries.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/server/live_rows.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/server/open_investigator.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/server/reports.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/server/request_guards.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/server/responses.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/server/status.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/server/summary.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/server/threads.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/store/__init__.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/store/connection.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/store/dashboard_queries.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/store/diagnostic_call_queries.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/store/diagnostic_queries.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/store/exports.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/store/query_sql.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/store/rows.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/store/summary_queries.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/store/thread_summaries.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/store/usage_api_queries.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/store/usage_record_queries.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/store/usage_timing.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/support.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/usage_drain/__init__.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/usage_drain/allowance_breakpoints.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/usage_drain/allowance_fits.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/usage_drain/allowance_online.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/usage_drain/boundary_delta.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/usage_drain/boundary_delta_core.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/usage_drain/boundary_delta_rows.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/usage_drain/boundary_delta_summary.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/usage_drain/boundary_scopes.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/usage_drain/boundary_summary.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/usage_drain/capacity_specs.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/usage_drain/error_diagnostics.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/usage_drain/feature_history.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/usage_drain/features.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/usage_drain/grace.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/usage_drain/history_state.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/usage_drain/model.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/usage_drain/predictive.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/usage_drain/predictive_specs.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/usage_drain/proxy_fit.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/usage_drain/regime_labels.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/usage_drain/regime_segments.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/usage_drain/regression.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/usage_drain/reports.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/usage_drain/spans.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/usage_drain/state_buckets.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/usage_drain/state_diagnostics.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/usage_drain/summary_metrics.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/usage_drain/thread_curves.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/usage_drain/time_series.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/usage_drain/token_components.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/usage_drain/transition_gates.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/usage_drain/transition_metrics.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/usage_drain/types.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/usage_drain/utils.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/usage_drain/walk_forward.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracker/usage_drain/walk_forward_rows.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracking.egg-info/dependency_links.txt +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracking.egg-info/entry_points.txt +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracking.egg-info/requires.txt +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/src/codex_usage_tracking.egg-info/top_level.txt +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/__init__.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/cli/test_cli_dashboard.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/cli/test_cli_module_entrypoints.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/cli/test_cli_parser_diagnostics.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/cli/test_mcp_launcher.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/context/test_context_action_timing.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/context/test_context_evidence.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/context/test_context_scan.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/context/test_context_serialized.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/context/test_context_summaries.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/context/test_context_token_estimates.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/context/test_context_values.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/core/test_call_origin.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/core/test_formatting.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/core/test_i18n.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/core/test_projects.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/core/test_redaction.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/core/test_schema.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/core/test_threads.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/dashboard/test_dashboard_data.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/dashboard/test_dashboard_diagnostics_snapshots.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/dashboard/test_dashboard_live.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/dashboard/test_dashboard_payload.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/dashboard/test_dashboard_pricing_snapshot.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/dashboard/test_dashboard_server.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/dashboard/test_dashboard_state.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/dashboard/test_dashboard_status.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/diagnostics/test_diagnostic_reports.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/diagnostics/test_diagnostic_snapshot_report.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/diagnostics/test_diagnostic_snapshot_source_scan.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/diagnostics/test_doctor_first_run.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/parser/test_parser_inspect_log.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/parser/test_parser_state.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/pricing/test_allowance.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/pricing/test_pricing.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/reports/test_recommendations.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/reports/test_support.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/server/test_server_api.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/server/test_server_call_detail.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/server/test_server_call_lists.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/server/test_server_context.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/server/test_server_context_settings.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/server/test_server_dashboard_shell.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/server/test_server_diagnostic_facts.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/server/test_server_diagnostic_refresh_auth.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/server/test_server_diagnostic_snapshots.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/server/test_server_live_queries.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/server/test_server_live_rows.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/server/test_server_open_investigator.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/server/test_server_recommendations.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/server/test_server_request_guards.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/server/test_server_responses.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/server/test_server_status.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/server/test_server_summary.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/server/test_server_usage_refresh.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/store/test_store_dashboard_queries.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/store/test_store_large_batches.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/store/test_store_query_sql.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/store/test_store_sources.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/store_dashboard_helpers.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/usage_drain/test_usage_drain_allowance_fits.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/usage_drain/test_usage_drain_boundary_delta.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/usage_drain/test_usage_drain_boundary_delta_summary.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/usage_drain/test_usage_drain_boundary_summary.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/usage_drain/test_usage_drain_error_diagnostics.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/usage_drain/test_usage_drain_feature_history.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/usage_drain/test_usage_drain_model.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/usage_drain/test_usage_drain_one_percent_capacity.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/usage_drain/test_usage_drain_predictive.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/usage_drain/test_usage_drain_regime_segments.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/usage_drain/test_usage_drain_regression.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/usage_drain/test_usage_drain_report_records.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/usage_drain/test_usage_drain_reports.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/usage_drain/test_usage_drain_state_buckets.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/usage_drain/test_usage_drain_state_diagnostics.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/usage_drain/test_usage_drain_summary_metrics.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/usage_drain/test_usage_drain_thread_curves.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/usage_drain/test_usage_drain_token_components.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/usage_drain/test_usage_drain_transition_gates.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/usage_drain/test_usage_drain_transition_metrics.py +0 -0
- {codex_usage_tracking-0.15.1 → codex_usage_tracking-0.17.0}/tests/usage_drain/test_usage_drain_walk_forward.py +0 -0
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "codex-usage-tracker",
|
|
3
|
-
"version": "0.
|
|
4
|
-
"description": "Unofficial local
|
|
3
|
+
"version": "0.17.0",
|
|
4
|
+
"description": "Unofficial local Codex usage dashboard and MCP diagnostics from local session logs.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Douglas Monsky"
|
|
7
7
|
},
|
|
@@ -19,8 +19,8 @@
|
|
|
19
19
|
"mcpServers": "./.mcp.json",
|
|
20
20
|
"interface": {
|
|
21
21
|
"displayName": "Codex Usage Tracker",
|
|
22
|
-
"shortDescription": "
|
|
23
|
-
"longDescription": "Unofficial independent project, not made by, affiliated with, endorsed by, sponsored by, or supported by OpenAI. Reads local Codex session logs
|
|
22
|
+
"shortDescription": "Local Codex usage dashboard, MCP diagnostics, and token-waste investigations",
|
|
23
|
+
"longDescription": "Unofficial independent project, not made by, affiliated with, endorsed by, sponsored by, or supported by OpenAI. Reads local Codex session logs to power a local dashboard, MCP tools, allowance diagnostics, token-waste investigations, and shareable aggregate reports without uploading logs.",
|
|
24
24
|
"developerName": "Douglas Monsky",
|
|
25
25
|
"category": "Productivity",
|
|
26
26
|
"capabilities": [
|
|
@@ -33,8 +33,9 @@
|
|
|
33
33
|
"termsOfServiceURL": "https://github.com/douglasmonsky/codex-usage-tracker",
|
|
34
34
|
"defaultPrompt": [
|
|
35
35
|
"Open dashboard",
|
|
36
|
-
"
|
|
37
|
-
"
|
|
36
|
+
"Look through my usage for token waste",
|
|
37
|
+
"Suggest usage investigations",
|
|
38
|
+
"Check whether my weekly allowance changed"
|
|
38
39
|
],
|
|
39
40
|
"brandColor": "#2563EB",
|
|
40
41
|
"composerIcon": "./assets/icon.svg",
|
|
@@ -242,9 +242,9 @@ git push origin v0.4.0
|
|
|
242
242
|
## Privacy Rules
|
|
243
243
|
|
|
244
244
|
- Never commit real Codex session logs.
|
|
245
|
-
- Never
|
|
246
|
-
-
|
|
247
|
-
-
|
|
245
|
+
- Never commit real prompts, assistant text, tool outputs, pasted secrets, message snippets, or raw Codex logs.
|
|
246
|
+
- The local content index may store bounded snippets in the user-owned SQLite database by approved design. Do not expose indexed/raw content through default CSV, generated HTML, support bundles, screenshots, aggregate JSON, fixtures based on real logs, or commits.
|
|
247
|
+
- Raw context may be read during refresh/content indexing or explicit selected-call context loading. Keep shareable outputs aggregate-first unless a command is explicitly documented as a local raw/content export.
|
|
248
248
|
- Keep fixture data synthetic.
|
|
249
249
|
- Keep local SQLite databases, CSV exports, HTML dashboards, caches, and virtualenvs out of git.
|
|
250
250
|
- Do not hard-code real current USD model pricing in source; refresh the local config from OpenAI's published pricing docs or use manual local overrides. Internal Codex model estimates must be explicitly marked as estimates with source and rationale metadata.
|
|
@@ -252,10 +252,10 @@ git push origin v0.4.0
|
|
|
252
252
|
|
|
253
253
|
## Definition Of Done
|
|
254
254
|
|
|
255
|
-
- Parser
|
|
255
|
+
- Parser and content-index handling are covered by synthetic session logs.
|
|
256
256
|
- SQLite refresh is idempotent.
|
|
257
|
-
- MCP tool functions return concise aggregate data.
|
|
258
|
-
- Dashboard
|
|
257
|
+
- MCP tool functions return concise aggregate data by default; content-aware tools must be explicit local investigation surfaces.
|
|
258
|
+
- Dashboard generated HTML is aggregate-first and does not embed indexed/raw content.
|
|
259
259
|
- Doctor, summary presets, dashboard, and expensive-call views work from CLI and MCP wrappers.
|
|
260
260
|
- `codex-usage-tracker install-plugin` can register the installed package without relying on a source-checkout symlink.
|
|
261
261
|
- `python -m codex_usage_tracker` and `codex-usage-tracker --version` both work.
|
|
@@ -263,8 +263,8 @@ git push origin v0.4.0
|
|
|
263
263
|
- `scripts/check_release.py --dist` passes before any public release.
|
|
264
264
|
- Pricing coverage clearly separates configured, estimated, and unpriced model usage.
|
|
265
265
|
- Codex credit coverage clearly separates exact rate-card matches, inferred aliases, and missing credit rates.
|
|
266
|
-
- Dashboard Calls and Threads views share filters, totals, and aggregate-
|
|
266
|
+
- Dashboard Calls and Threads views share filters, totals, and aggregate-first hover details.
|
|
267
267
|
- Dashboard usage docs are updated when the visible dashboard workflow changes, and screenshots must be generated from synthetic data only.
|
|
268
|
-
- Dashboard
|
|
268
|
+
- Dashboard refresh is localhost-only, generated HTML stays aggregate-first, and context loading is lazy, localhost-only, explicit, redacted, and not embedded in the static HTML payload.
|
|
269
269
|
- Subagent calls preserve logged parent-session metadata, latch to parent thread labels when available, and auto-review attachment is clearly marked when inferred.
|
|
270
270
|
- Tests and compile checks pass.
|
|
@@ -2,6 +2,35 @@
|
|
|
2
2
|
|
|
3
3
|
## Unreleased
|
|
4
4
|
|
|
5
|
+
## 0.17.0 - 2026-07-08
|
|
6
|
+
|
|
7
|
+
- Add agentic MCP investigation tools for hypothesis-driven usage diagnostics, compact evidence briefs, and actionable recommendation reports.
|
|
8
|
+
- Add repeated file rediscovery, shell churn, and large low-output usage diagnostics to identify avoidable local workflow waste.
|
|
9
|
+
- Improve bundled skill guidance so Codex can route vague usage questions into concrete tracker endpoints, Headroom suggestions, and custom remediation ideas.
|
|
10
|
+
- Add async dogfood progress polling and warm result caching so longer usage investigations can report progress and rerun faster.
|
|
11
|
+
- Speed up content indexing with incremental append metadata, parallel source parsing, and batched FTS rebuilds.
|
|
12
|
+
- Add dashboard refresh progress bars, no-cap paged loading, loaded-call metrics, token breakdowns, persisted loading preferences, and restored usage-drain chart data.
|
|
13
|
+
|
|
14
|
+
## 0.16.2 - 2026-07-08
|
|
15
|
+
|
|
16
|
+
- Restore Usage Drain, Investigator Workbench, Reports, and related dashboard charts by deriving shared usage-drain series from loaded aggregate rows again.
|
|
17
|
+
- Keep sparse line charts expanded to their panel width so low-point datasets do not collapse into the left edge.
|
|
18
|
+
|
|
19
|
+
## 0.16.1 - 2026-07-08
|
|
20
|
+
|
|
21
|
+
- Add async refresh progress polling and dashboard progress bars for long all-row loads.
|
|
22
|
+
- Speed up local content index refreshes with batched writes and parallel source extraction.
|
|
23
|
+
- Load uncapped dashboard rows in finite pages so no-cap mode stays responsive on large histories.
|
|
24
|
+
- Show loaded-call counts and call-level token breakdowns on Overview metric cards.
|
|
25
|
+
- Restore session row/history loading preferences after browser refresh without storing large row payloads.
|
|
26
|
+
|
|
27
|
+
## 0.16.0 - 2026-07-07
|
|
28
|
+
|
|
29
|
+
- Add allowance intelligence foundation with normalized allowance history, evidence-graded change diagnostics, local evidence exports, and API/MCP report surfaces for weekly-vs-5-hour usage analysis.
|
|
30
|
+
- Add local content-indexed MCP/API exploration surfaces, including content search, thread trace, pattern scans, investigation walks, and strict local evidence exports.
|
|
31
|
+
- Add roadmap for default local content indexing, SQLite FTS5 search, parser drift handling, and future diagnostics for repeated file rediscovery, shell churn, and large low-output calls.
|
|
32
|
+
- Fix schema initialization so already-applied migrations are not rerun during read/report calls on migrated local databases.
|
|
33
|
+
|
|
5
34
|
## 0.15.1 - 2026-07-05
|
|
6
35
|
|
|
7
36
|
- Fix the PyPI wheel package resources by tracking the React dashboard `index.html` entrypoint used by `serve-dashboard` and installed-package smoke tests.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: codex-usage-tracking
|
|
3
|
-
Version: 0.
|
|
3
|
+
Version: 0.17.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
|
|
@@ -44,7 +44,7 @@ Requires-Dist: zizmor>=1.26.1; python_version >= "3.11" and extra == "dev"
|
|
|
44
44
|
Dynamic: license-file
|
|
45
45
|
|
|
46
46
|
<p align="center">
|
|
47
|
-
<img src="docs/assets/readme-hero.png?v=readme-hero-
|
|
47
|
+
<img src="docs/assets/readme-hero-2.png?v=readme-hero-20260708" alt="Codex Usage Tracker local-first analytics dashboard preview with overview, calls, and investigator surfaces." width="100%">
|
|
48
48
|
</p>
|
|
49
49
|
|
|
50
50
|
# Codex Usage Tracker
|
|
@@ -59,11 +59,11 @@ Local-first dashboard, Codex plugin, and companion skill for understanding where
|
|
|
59
59
|
|
|
60
60
|
> **Unofficial project:** Codex Usage Tracker is an independent open-source project. It is not made by, affiliated with, endorsed by, sponsored by, or supported by OpenAI. OpenAI and Codex are trademarks of OpenAI; this project only reads local log files from your machine.
|
|
61
61
|
|
|
62
|
-
Codex Usage Tracker reads the JSONL logs already written by Codex, indexes aggregate usage counters into SQLite, and gives you a dashboard, CLI, and MCP tools for investigating real usage patterns.
|
|
62
|
+
Codex Usage Tracker reads the JSONL logs already written by Codex, indexes aggregate usage counters plus local content/tool/command/file-event evidence into SQLite, and gives you a dashboard, CLI, and MCP tools for investigating real usage patterns. The content index stays on your machine; CSV exports, generated dashboard HTML, support bundles, and shareable reports omit indexed content by default. Use `refresh --aggregate-only` or `rebuild-index --aggregate-only` when you want the older aggregate-only SQLite posture.
|
|
63
63
|
|
|
64
64
|
Built for developers using Codex locally who want to know which threads, models, subagents, and long chats are driving usage without uploading logs anywhere. The public PyPI package is [`codex-usage-tracking`](https://pypi.org/project/codex-usage-tracking/), and it installs the `codex-usage-tracker` command.
|
|
65
65
|
|
|
66
|
-
After install, you get a localhost dashboard, a local SQLite
|
|
66
|
+
After install, you get a localhost dashboard, a local SQLite usage index, CLI reports, MCP tools, and a companion Codex skill for asking questions like "what drove my usage this week?"
|
|
67
67
|
|
|
68
68
|
## Quick Install
|
|
69
69
|
|
|
@@ -90,13 +90,13 @@ Source install for development or branch testing:
|
|
|
90
90
|
pipx install "git+https://github.com/douglasmonsky/codex-usage-tracker.git"
|
|
91
91
|
```
|
|
92
92
|
|
|
93
|
-
`setup` installs or refreshes the local Codex plugin wrapper, initializes local config templates when needed, refreshes the
|
|
93
|
+
`setup` installs or refreshes the local Codex plugin wrapper, initializes local config templates when needed, refreshes the local usage index, runs `codex-usage-tracker doctor`, and tells you whether Codex needs a restart for plugin discovery.
|
|
94
94
|
|
|
95
95
|
Want Codex to do it for you? Paste: `Install codex-usage-tracking with pipx, run codex-usage-tracker setup, and open the Codex Usage Tracker dashboard.`
|
|
96
96
|
|
|
97
97
|
## Talk To Your Usage Data
|
|
98
98
|
|
|
99
|
-
The dashboard shows the evidence; the companion plugin and skills make it conversational. After `setup` and a Codex restart, ask Codex to refresh the local
|
|
99
|
+
The dashboard shows the evidence; the companion plugin and skills make it conversational. After `setup` and a Codex restart, ask Codex to refresh the local usage index, call MCP tools, and explain what is driving usage. Shareable reports stay aggregate-first and omit indexed content unless an explicit local content tool/export is added for that purpose.
|
|
100
100
|
|
|
101
101
|
Good starter prompts:
|
|
102
102
|
|
|
@@ -108,7 +108,7 @@ Compare model and effort usage, then suggest safer defaults.
|
|
|
108
108
|
Open the dashboard and filter Calls to the rows behind your recommendation.
|
|
109
109
|
```
|
|
110
110
|
|
|
111
|
-
The companion skill treats waste discovery as diagnosis plus remediation: it can point to Calls, Threads, Call Investigator, Diagnostics Notebook, Headroom when available, or a custom local command/skill/report preset Codex can build to stop repeating the same waste pattern.
|
|
111
|
+
The companion skill treats waste discovery as diagnosis plus remediation: it can point to Calls, Threads, Call Investigator, Diagnostics Notebook, Allowance Intelligence, Headroom when available, or a custom local command/skill/report preset Codex can build to stop repeating the same waste pattern.
|
|
112
112
|
|
|
113
113
|
Example conversation docs:
|
|
114
114
|
|
|
@@ -307,6 +307,7 @@ Full model: [Privacy Guide](docs/privacy.md).
|
|
|
307
307
|
- [Dashboard Guide](docs/dashboard-guide.md)
|
|
308
308
|
- [CLI Reference](docs/cli-reference.md)
|
|
309
309
|
- [Pricing, Credits, And Allowance](docs/pricing-and-credits.md)
|
|
310
|
+
- [Allowance Intelligence](docs/allowance-intelligence.md)
|
|
310
311
|
- [MCP And Codex Skills](docs/mcp.md)
|
|
311
312
|
- [Privacy Guide](docs/privacy.md)
|
|
312
313
|
- [Architecture](docs/architecture.md)
|
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
<p align="center">
|
|
2
|
-
<img src="docs/assets/readme-hero.png?v=readme-hero-
|
|
2
|
+
<img src="docs/assets/readme-hero-2.png?v=readme-hero-20260708" alt="Codex Usage Tracker local-first analytics dashboard preview with overview, calls, and investigator surfaces." width="100%">
|
|
3
3
|
</p>
|
|
4
4
|
|
|
5
5
|
# Codex Usage Tracker
|
|
@@ -14,11 +14,11 @@ Local-first dashboard, Codex plugin, and companion skill for understanding where
|
|
|
14
14
|
|
|
15
15
|
> **Unofficial project:** Codex Usage Tracker is an independent open-source project. It is not made by, affiliated with, endorsed by, sponsored by, or supported by OpenAI. OpenAI and Codex are trademarks of OpenAI; this project only reads local log files from your machine.
|
|
16
16
|
|
|
17
|
-
Codex Usage Tracker reads the JSONL logs already written by Codex, indexes aggregate usage counters into SQLite, and gives you a dashboard, CLI, and MCP tools for investigating real usage patterns.
|
|
17
|
+
Codex Usage Tracker reads the JSONL logs already written by Codex, indexes aggregate usage counters plus local content/tool/command/file-event evidence into SQLite, and gives you a dashboard, CLI, and MCP tools for investigating real usage patterns. The content index stays on your machine; CSV exports, generated dashboard HTML, support bundles, and shareable reports omit indexed content by default. Use `refresh --aggregate-only` or `rebuild-index --aggregate-only` when you want the older aggregate-only SQLite posture.
|
|
18
18
|
|
|
19
19
|
Built for developers using Codex locally who want to know which threads, models, subagents, and long chats are driving usage without uploading logs anywhere. The public PyPI package is [`codex-usage-tracking`](https://pypi.org/project/codex-usage-tracking/), and it installs the `codex-usage-tracker` command.
|
|
20
20
|
|
|
21
|
-
After install, you get a localhost dashboard, a local SQLite
|
|
21
|
+
After install, you get a localhost dashboard, a local SQLite usage index, CLI reports, MCP tools, and a companion Codex skill for asking questions like "what drove my usage this week?"
|
|
22
22
|
|
|
23
23
|
## Quick Install
|
|
24
24
|
|
|
@@ -45,13 +45,13 @@ Source install for development or branch testing:
|
|
|
45
45
|
pipx install "git+https://github.com/douglasmonsky/codex-usage-tracker.git"
|
|
46
46
|
```
|
|
47
47
|
|
|
48
|
-
`setup` installs or refreshes the local Codex plugin wrapper, initializes local config templates when needed, refreshes the
|
|
48
|
+
`setup` installs or refreshes the local Codex plugin wrapper, initializes local config templates when needed, refreshes the local usage index, runs `codex-usage-tracker doctor`, and tells you whether Codex needs a restart for plugin discovery.
|
|
49
49
|
|
|
50
50
|
Want Codex to do it for you? Paste: `Install codex-usage-tracking with pipx, run codex-usage-tracker setup, and open the Codex Usage Tracker dashboard.`
|
|
51
51
|
|
|
52
52
|
## Talk To Your Usage Data
|
|
53
53
|
|
|
54
|
-
The dashboard shows the evidence; the companion plugin and skills make it conversational. After `setup` and a Codex restart, ask Codex to refresh the local
|
|
54
|
+
The dashboard shows the evidence; the companion plugin and skills make it conversational. After `setup` and a Codex restart, ask Codex to refresh the local usage index, call MCP tools, and explain what is driving usage. Shareable reports stay aggregate-first and omit indexed content unless an explicit local content tool/export is added for that purpose.
|
|
55
55
|
|
|
56
56
|
Good starter prompts:
|
|
57
57
|
|
|
@@ -63,7 +63,7 @@ Compare model and effort usage, then suggest safer defaults.
|
|
|
63
63
|
Open the dashboard and filter Calls to the rows behind your recommendation.
|
|
64
64
|
```
|
|
65
65
|
|
|
66
|
-
The companion skill treats waste discovery as diagnosis plus remediation: it can point to Calls, Threads, Call Investigator, Diagnostics Notebook, Headroom when available, or a custom local command/skill/report preset Codex can build to stop repeating the same waste pattern.
|
|
66
|
+
The companion skill treats waste discovery as diagnosis plus remediation: it can point to Calls, Threads, Call Investigator, Diagnostics Notebook, Allowance Intelligence, Headroom when available, or a custom local command/skill/report preset Codex can build to stop repeating the same waste pattern.
|
|
67
67
|
|
|
68
68
|
Example conversation docs:
|
|
69
69
|
|
|
@@ -262,6 +262,7 @@ Full model: [Privacy Guide](docs/privacy.md).
|
|
|
262
262
|
- [Dashboard Guide](docs/dashboard-guide.md)
|
|
263
263
|
- [CLI Reference](docs/cli-reference.md)
|
|
264
264
|
- [Pricing, Credits, And Allowance](docs/pricing-and-credits.md)
|
|
265
|
+
- [Allowance Intelligence](docs/allowance-intelligence.md)
|
|
265
266
|
- [MCP And Codex Skills](docs/mcp.md)
|
|
266
267
|
- [Privacy Guide](docs/privacy.md)
|
|
267
268
|
- [Architecture](docs/architecture.md)
|
|
@@ -0,0 +1,187 @@
|
|
|
1
|
+
# Agentic Briefing And Dogfood Roadmap
|
|
2
|
+
|
|
3
|
+
This roadmap follows the agentic MCP and hypothesis-testing hardening work merged through
|
|
4
|
+
PR #114. The current backend can already suggest investigations, test hypotheses, inspect
|
|
5
|
+
large low-output calls, identify shell churn, rank repeated file rediscovery, and evaluate
|
|
6
|
+
allowance-change evidence. This phase is about making that flow repeatable, easier for
|
|
7
|
+
agents to use correctly, and more action-oriented for users.
|
|
8
|
+
|
|
9
|
+
Product stance stays unchanged:
|
|
10
|
+
|
|
11
|
+
- Local-first and unofficial.
|
|
12
|
+
- Aggregate/shareable evidence by default.
|
|
13
|
+
- No raw prompts, raw tool output, full paths, raw commands, or transcript snippets unless
|
|
14
|
+
the user explicitly asks for deeper local content inspection.
|
|
15
|
+
- Dashboard UI is not the source of truth for this phase; backend/MCP payloads are.
|
|
16
|
+
- Recommendation language must separate exact facts, estimates, missing access, and next
|
|
17
|
+
verification steps.
|
|
18
|
+
|
|
19
|
+
## Why This Phase Exists
|
|
20
|
+
|
|
21
|
+
Dogfooding the improved MCP flow surfaced two needs:
|
|
22
|
+
|
|
23
|
+
- The project needs a repeatable local experiment harness so future changes can be checked
|
|
24
|
+
against the same old and new hypotheses instead of relying on ad hoc terminal snippets.
|
|
25
|
+
- The bundled skill/plugin guidance should teach agents the new investigation sequence and
|
|
26
|
+
explain newer report concepts such as `unclassified_shell_script`.
|
|
27
|
+
- The MCP should be able to produce a concise action brief that translates diagnostics into
|
|
28
|
+
practical workflow recommendations, including existing tools and custom helper ideas.
|
|
29
|
+
|
|
30
|
+
## PR Chunk 1: Dogfood Hypothesis Harness
|
|
31
|
+
|
|
32
|
+
Add a repeatable local experiment harness that runs the old and new hypothesis battery and
|
|
33
|
+
emits compact local artifacts.
|
|
34
|
+
|
|
35
|
+
Proposed command:
|
|
36
|
+
|
|
37
|
+
```bash
|
|
38
|
+
codex-usage-tracker dogfood-agentic
|
|
39
|
+
```
|
|
40
|
+
|
|
41
|
+
Initial behavior:
|
|
42
|
+
|
|
43
|
+
- Refresh active usage by default, with `--include-archived` opt-in.
|
|
44
|
+
- Run `usage_test_hypotheses` over the old hypothesis set:
|
|
45
|
+
- token waste in large low-output calls
|
|
46
|
+
- cache/cold-resume pressure
|
|
47
|
+
- repeated file rediscovery
|
|
48
|
+
- shell churn
|
|
49
|
+
- model/effort choice
|
|
50
|
+
- weekly allowance change
|
|
51
|
+
- Run the new follow-up hypothesis set:
|
|
52
|
+
- large low-output calls as cleanup target
|
|
53
|
+
- repeated file rediscovery concentrated in safe file identities
|
|
54
|
+
- shell churn as repeated probing
|
|
55
|
+
- context pressure driving expensive calls
|
|
56
|
+
- local content-index/thread-trace follow-up needed for intent
|
|
57
|
+
- allowance-change claims not ready without weekly spans
|
|
58
|
+
- Run direct evidence tools:
|
|
59
|
+
- `usage_large_low_output_calls`
|
|
60
|
+
- `usage_shell_churn`
|
|
61
|
+
- `usage_repeated_file_rediscovery`
|
|
62
|
+
- `usage_allowance_diagnostics`
|
|
63
|
+
- `usage_suggest_investigations`
|
|
64
|
+
- `usage_investigate` for `token_waste` and `workflow_churn`
|
|
65
|
+
- Write a compact JSON summary and optional Markdown brief.
|
|
66
|
+
|
|
67
|
+
Acceptance criteria:
|
|
68
|
+
|
|
69
|
+
- Harness output declares scope: refresh status, archived setting, privacy mode, evidence
|
|
70
|
+
limit, and artifact paths.
|
|
71
|
+
- Harness asserts privacy invariants: no indexed content, no raw fragments, no raw command
|
|
72
|
+
output, and no full paths in compact outputs.
|
|
73
|
+
- Harness records expected family routing for the old and new hypotheses.
|
|
74
|
+
- Harness can be run locally without publishing or contacting external services.
|
|
75
|
+
- Add focused tests for summary shape and privacy flags using synthetic data.
|
|
76
|
+
|
|
77
|
+
## PR Chunk 2: Skill And Plugin Guidance Refresh
|
|
78
|
+
|
|
79
|
+
Update bundled skills and docs so Codex agents use the improved investigation flow.
|
|
80
|
+
|
|
81
|
+
Guidance changes:
|
|
82
|
+
|
|
83
|
+
- Lead broad usage questions with `usage_suggest_investigations`.
|
|
84
|
+
- Use `usage_test_hypotheses` when the user frames the request as:
|
|
85
|
+
- "I'd like to be able to..."
|
|
86
|
+
- "I will accomplish this using..."
|
|
87
|
+
- "I'm missing access to..."
|
|
88
|
+
- "my hypothesis was true/false..."
|
|
89
|
+
- Use direct tools after the hypothesis result:
|
|
90
|
+
- `usage_large_low_output_calls` for large low-output/context pressure.
|
|
91
|
+
- `usage_repeated_file_rediscovery` for repeated safe file identities.
|
|
92
|
+
- `usage_shell_churn` for command churn.
|
|
93
|
+
- `usage_allowance_diagnostics` and `usage_allowance_export` for limit-change claims.
|
|
94
|
+
- Explain `unclassified_shell_script` plainly:
|
|
95
|
+
- It is a mixed or legacy bucket where the tracker cannot safely recover one specific
|
|
96
|
+
command root from aggregate indexed data.
|
|
97
|
+
- It is still evidence of churn, but needs thread trace or future indexed command detail
|
|
98
|
+
before prescribing a specific command-level fix.
|
|
99
|
+
- Recommend existing tools and possible custom solutions when diagnosing waste:
|
|
100
|
+
- Headroom or similar context-pressure tools when available.
|
|
101
|
+
- Project notes, handoff templates, helper scripts, test selectors, file summaries, or
|
|
102
|
+
targeted commands when repeated rediscovery or shell churn appears.
|
|
103
|
+
|
|
104
|
+
Acceptance criteria:
|
|
105
|
+
|
|
106
|
+
- Bundled plugin skill files and source skill files stay in sync.
|
|
107
|
+
- MCP docs describe the recommended investigation sequence.
|
|
108
|
+
- Tests or docs snapshots prove the guidance mentions hypothesis testing, direct evidence
|
|
109
|
+
follow-up, `unclassified_shell_script`, and existing/custom remediation options.
|
|
110
|
+
|
|
111
|
+
## PR Chunk 3: Actionable Recommendation Brief
|
|
112
|
+
|
|
113
|
+
Add a user-facing aggregate report/MCP tool that converts diagnostics into a compact
|
|
114
|
+
remediation brief.
|
|
115
|
+
|
|
116
|
+
Proposed tool:
|
|
117
|
+
|
|
118
|
+
```text
|
|
119
|
+
usage_action_brief(...)
|
|
120
|
+
```
|
|
121
|
+
|
|
122
|
+
Initial inputs:
|
|
123
|
+
|
|
124
|
+
- `goal`: optional, default `token_waste`
|
|
125
|
+
- `since`, `until`, `thread`
|
|
126
|
+
- `include_archived`
|
|
127
|
+
- `evidence_limit`
|
|
128
|
+
- `privacy_mode`
|
|
129
|
+
|
|
130
|
+
Output shape:
|
|
131
|
+
|
|
132
|
+
- `schema`
|
|
133
|
+
- `content_mode`
|
|
134
|
+
- `includes_indexed_content`
|
|
135
|
+
- `includes_raw_fragments`
|
|
136
|
+
- `privacy_mode`
|
|
137
|
+
- `filters`
|
|
138
|
+
- `summary`
|
|
139
|
+
- `actions[]`
|
|
140
|
+
- `finding`
|
|
141
|
+
- `confidence`
|
|
142
|
+
- `evidence`
|
|
143
|
+
- `likely_waste_pattern`
|
|
144
|
+
- `recommended_workflow_change`
|
|
145
|
+
- `recommended_existing_tool`
|
|
146
|
+
- `recommended_custom_solution`
|
|
147
|
+
- `how_to_verify`
|
|
148
|
+
- `recommended_next_tools`
|
|
149
|
+
- `caveats`
|
|
150
|
+
|
|
151
|
+
Initial action families:
|
|
152
|
+
|
|
153
|
+
- Large low-output/context pressure:
|
|
154
|
+
- recommend shorter handoffs, fresh thread with summary, context-pressure tooling, and
|
|
155
|
+
direct verification with `usage_large_low_output_calls` and `usage_call_detail`.
|
|
156
|
+
- Repeated file rediscovery:
|
|
157
|
+
- recommend durable file summaries, project notes, helper commands, and narrower reads.
|
|
158
|
+
- Shell churn:
|
|
159
|
+
- recommend stopping repeated retry loops, summarizing failures, using test selectors or
|
|
160
|
+
helper scripts, and inspecting thread traces.
|
|
161
|
+
- Allowance-change readiness:
|
|
162
|
+
- recommend weekly diagnostics/export only when evidence is ready; otherwise explain why
|
|
163
|
+
public claims are premature.
|
|
164
|
+
|
|
165
|
+
Acceptance criteria:
|
|
166
|
+
|
|
167
|
+
- New schema is documented in CLI JSON schema docs and MCP docs.
|
|
168
|
+
- MCP tool and CLI JSON path return the same payload builder.
|
|
169
|
+
- Payload remains aggregate/shareable by default.
|
|
170
|
+
- Tests cover at least one action from each initial action family using synthetic fixtures.
|
|
171
|
+
- Dogfood harness can optionally include the action brief.
|
|
172
|
+
|
|
173
|
+
## Phase Exit Criteria
|
|
174
|
+
|
|
175
|
+
This phase is complete when:
|
|
176
|
+
|
|
177
|
+
- The dogfood harness can be run before future MCP changes.
|
|
178
|
+
- The bundled skill/plugin teaches agents the intended investigation flow.
|
|
179
|
+
- The action brief can turn evidence into concrete user-facing remediation steps.
|
|
180
|
+
- Full local validation passes.
|
|
181
|
+
- No dashboard UI work has been started as part of this phase.
|
|
182
|
+
|
|
183
|
+
## Release Guidance
|
|
184
|
+
|
|
185
|
+
- If the phase only lands the harness and docs, ship as a patch.
|
|
186
|
+
- If `usage_action_brief` becomes a new public MCP/API surface, ship as the next minor
|
|
187
|
+
release, likely `0.17.0`.
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
# Agentic Investigation Hardening Roadmap
|
|
2
|
+
|
|
3
|
+
This roadmap follows the exploratory MCP experiments run on 2026-07-08. The goal is to make Codex Usage Tracker useful as an agent-facing investigation partner, not just a dashboard data source.
|
|
4
|
+
|
|
5
|
+
Product stance stays unchanged:
|
|
6
|
+
|
|
7
|
+
- Local-first and unofficial.
|
|
8
|
+
- Aggregate/shareable evidence first.
|
|
9
|
+
- Explicit local content-index tools only when the user asks for deeper local diagnosis.
|
|
10
|
+
- No raw context by default.
|
|
11
|
+
- Recommendations must name evidence, missing evidence, confidence, and next verification step.
|
|
12
|
+
|
|
13
|
+
## Experiment Findings
|
|
14
|
+
|
|
15
|
+
The agentic layer already identifies meaningful waste patterns:
|
|
16
|
+
|
|
17
|
+
- Large low-output calls are real and actionable.
|
|
18
|
+
- High context pressure dominates recent usage.
|
|
19
|
+
- Repeated file rediscovery is measurable and severe.
|
|
20
|
+
- Shell churn exists, but command labels are too cloudy.
|
|
21
|
+
- Allowance-change evidence is currently insufficient, which is the correct conservative result.
|
|
22
|
+
|
|
23
|
+
The rough edges are agent-facing rather than purely analytical:
|
|
24
|
+
|
|
25
|
+
- `usage_suggest_investigations(goal=...)` returns too few ideas for broad discovery.
|
|
26
|
+
- `usage_investigate(...)` returns large nested payloads that are hard for agents to consume.
|
|
27
|
+
- There is no first-class hypothesis-testing endpoint matching the preferred user framing.
|
|
28
|
+
- Shell churn command labels collapse too often into `unknown_command`.
|
|
29
|
+
- Local evidence export can report confusing aggregate fields for some branches.
|
|
30
|
+
- Some filters and archived-row behavior need targeted regression tests.
|
|
31
|
+
|
|
32
|
+
## Target Interaction Shape
|
|
33
|
+
|
|
34
|
+
When a user asks for exploratory analysis, the agent should answer in this shape:
|
|
35
|
+
|
|
36
|
+
```text
|
|
37
|
+
I'd like to be able to ...
|
|
38
|
+
I will accomplish this using ...
|
|
39
|
+
I'm missing access to ...
|
|
40
|
+
My hypothesis was true/false/partially true because ...
|
|
41
|
+
Next action ...
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
The MCP should make that easy by returning this structure directly, with compact evidence and explicit caveats.
|
|
45
|
+
|
|
46
|
+
## PR Chunk 1: Suggestions And Compact Investigation Payloads
|
|
47
|
+
|
|
48
|
+
Improve existing entry points before adding new tools.
|
|
49
|
+
|
|
50
|
+
Changes:
|
|
51
|
+
|
|
52
|
+
- Expand `usage_suggest_investigations(...)` so broad goals can return multiple useful suggestions instead of one sparse row.
|
|
53
|
+
- Add a compact mode or bounded evidence shape for `usage_investigate(...)` that avoids dumping full dashboard rows unless explicitly requested.
|
|
54
|
+
- Preserve current schema compatibility by adding fields rather than removing stable fields.
|
|
55
|
+
- Add tests proving broad suggestions include token waste, cache failure, workflow churn, allowance change, and overview.
|
|
56
|
+
- Add tests proving compact investigation payloads include enough fields for actionability: finding, evidence summary, confidence, missing access, next tools.
|
|
57
|
+
|
|
58
|
+
Acceptance criteria:
|
|
59
|
+
|
|
60
|
+
- A user asking "what should I investigate?" receives a menu, not a single option.
|
|
61
|
+
- A user asking "look through usage for token waste" receives concise findings that an agent can summarize without parsing massive nested rows.
|
|
62
|
+
- Existing MCP contract tests remain green.
|
|
63
|
+
|
|
64
|
+
## PR Chunk 2: Hypothesis Runner MCP/API Surface
|
|
65
|
+
|
|
66
|
+
Add a first-class hypothesis-testing tool.
|
|
67
|
+
|
|
68
|
+
Proposed tool:
|
|
69
|
+
|
|
70
|
+
- `usage_test_hypotheses(...)`
|
|
71
|
+
|
|
72
|
+
Initial inputs:
|
|
73
|
+
|
|
74
|
+
- `question`
|
|
75
|
+
- optional `hypotheses`
|
|
76
|
+
- `since`, `until`, `thread`, `include_archived`
|
|
77
|
+
- `evidence_limit`
|
|
78
|
+
- `privacy_mode`
|
|
79
|
+
|
|
80
|
+
Output shape:
|
|
81
|
+
|
|
82
|
+
- `schema`
|
|
83
|
+
- `content_mode`
|
|
84
|
+
- `includes_indexed_content`
|
|
85
|
+
- `includes_raw_fragments`
|
|
86
|
+
- `question`
|
|
87
|
+
- `hypotheses[]`
|
|
88
|
+
- `id`
|
|
89
|
+
- `hypothesis`
|
|
90
|
+
- `status`: `true`, `false`, `partially_true`, `insufficient_evidence`
|
|
91
|
+
- `confidence`
|
|
92
|
+
- `i_would_like_to_be_able_to`
|
|
93
|
+
- `i_will_accomplish_this_using`
|
|
94
|
+
- `i_am_missing_access_to`
|
|
95
|
+
- `evidence_summary`
|
|
96
|
+
- `counter_evidence`
|
|
97
|
+
- `next_action`
|
|
98
|
+
- `recommended_next_tools`
|
|
99
|
+
|
|
100
|
+
Initial built-in hypothesis families:
|
|
101
|
+
|
|
102
|
+
- token waste
|
|
103
|
+
- cache/cold-resume failure
|
|
104
|
+
- repeated file rediscovery
|
|
105
|
+
- shell churn
|
|
106
|
+
- effort/model choice
|
|
107
|
+
- allowance change
|
|
108
|
+
|
|
109
|
+
Acceptance criteria:
|
|
110
|
+
|
|
111
|
+
- The tool can evaluate supplied hypotheses and default hypotheses.
|
|
112
|
+
- It returns explicit true/false/partial/insufficient decisions.
|
|
113
|
+
- It does not require raw context.
|
|
114
|
+
- It recommends lower-level MCP tools when evidence is insufficient.
|
|
115
|
+
|
|
116
|
+
## PR Chunk 3: Evidence Quality Hardening
|
|
117
|
+
|
|
118
|
+
Fix the diagnostic surfaces that made recommendations cloudy.
|
|
119
|
+
|
|
120
|
+
Changes:
|
|
121
|
+
|
|
122
|
+
- Improve shell command normalization so common command families do not collapse into `unknown_command`.
|
|
123
|
+
- Add tests for repeated `sed`, `rg`, `git`, `nl`, `npm`, `python`, `pytest`, and package-manager commands.
|
|
124
|
+
- Tighten `usage_local_evidence_export(...)` aggregate summaries so `occurrences`, `call_count`, and `total_tokens` are meaningful for every branch.
|
|
125
|
+
- Add regression tests for `include_archived=false` across the new agentic, low-output, shell, file, export, and hypothesis surfaces.
|
|
126
|
+
- Make repeated file rediscovery recommendations more specific when safe fields are available: basename, extension, operation mix, adjacent retouch count, and trace handles.
|
|
127
|
+
|
|
128
|
+
Acceptance criteria:
|
|
129
|
+
|
|
130
|
+
- Shell churn reports are readable without raw command output.
|
|
131
|
+
- Shareable local evidence export does not show confusing zero counts for supported branches.
|
|
132
|
+
- Active-only filters do not surface archived rows in evidence samples.
|
|
133
|
+
|
|
134
|
+
## Later Dashboard Work
|
|
135
|
+
|
|
136
|
+
Do not start with UI. Once the APIs are stable:
|
|
137
|
+
|
|
138
|
+
- Add a Diagnostics Notebook module for hypothesis testing.
|
|
139
|
+
- Show "hypothesis true/false/partial" cards.
|
|
140
|
+
- Link each card to Calls, Threads, Call Investigator, and local evidence export.
|
|
141
|
+
|
|
142
|
+
## Validation Plan
|
|
143
|
+
|
|
144
|
+
Each implementation PR should run:
|
|
145
|
+
|
|
146
|
+
```bash
|
|
147
|
+
.venv/bin/python -m ruff check .
|
|
148
|
+
PYTHONPATH=src .venv/bin/python -m mypy
|
|
149
|
+
PYTHONPATH=src .venv/bin/python -m pytest tests/cli/test_mcp_integration.py tests/cli/test_cli_release.py
|
|
150
|
+
.venv/bin/python scripts/check_release.py
|
|
151
|
+
git diff --check
|
|
152
|
+
```
|
|
153
|
+
|
|
154
|
+
Broader tests should be run when touching parser/indexing logic:
|
|
155
|
+
|
|
156
|
+
```bash
|
|
157
|
+
PYTHONPATH=src .venv/bin/python -m pytest
|
|
158
|
+
PYTHONPATH=src .venv/bin/python -m compileall src
|
|
159
|
+
```
|