headroom/tests
chopratejas b6137aa15d test(proxy): align hooks regression test with Bug 3 recount semantics
test_anthropic_hooks_do_not_break_extract_user_query_lookup mocks
pipeline.apply to return tokens_after=40 and a tiny compressed
message. The pre-Bug-3 proxy trusted the mock's tokens_after and
emitted x-headroom-tokens-after: 40. After issue #327 Bug 3 the
proxy recounts optimized_tokens from result.messages with its
own tokenizer (the mocked "compressed" string counts to 11), so the
header asserted against the wrong tokenizer's number.

Compute the expected value from the same tokenizer the proxy uses
(get_tokenizer("claude-sonnet-4-6")) and assert the recounted
header matches that. Add a tokens_before > tokens_after invariant
so the spirit of the test (compression actually reduced bytes) is
preserved without coupling to a specific tokenizer's calibration.
2026-04-30 13:26:53 -07:00
..
cli Add Click-based CLI with memory management commands 2026-01-29 21:30:21 -08:00
integrations/test_strands feat: Add AWS Strands Agents SDK integration 2026-01-31 00:31:37 -08:00
parity chore(rust): port ContentDetector to Rust + parity harness + PyO3 bridge 2026-04-27 23:57:39 -07:00
test_cache fix: eliminate prefix cache busts from frozen count underestimation 2026-04-07 17:10:20 -07:00
test_cli chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_compression Remove LLMLingua: Kompress is the sole text compressor 2026-03-26 11:11:00 -07:00
test_dashboard test(dashboard): fix playwright importorskip placement 2026-04-21 00:10:05 -05:00
test_evals Remove LLMLingua: Kompress is the sole text compressor 2026-03-26 11:11:00 -07:00
test_install chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_integrations test(langchain): seed random per-test to fix flaky first/last anchor eval 2026-04-29 19:20:34 -07:00
test_learn fix(testing): stabilize 3.12 suite and fingerprints 2026-04-28 21:35:32 +00:00
test_memory test(traffic-learner): cover helper edge cases + apply ruff format 2026-04-30 18:05:54 +09:00
test_providers style: match CI ruff formatting 2026-04-22 22:21:00 -05:00
test_proxy fix(proxy): strip cache_control before hashing turn_id 2026-04-23 16:04:57 +02:00
test_scripts fix(ci): restore repro harness test in dev installs 2026-04-20 22:12:01 +07:00
test_storage Fix all ruff lint and format errors for CI 2026-01-10 15:33:44 -08:00
test_transforms feat(rust): port tag_protector to Rust + 5 bug fixes (Phase 3e.4) 2026-04-29 23:18:09 -07:00
__init__.py Initial commit: Headroom SDK - LLM context optimization toolkit 2026-01-06 23:16:58 -08:00
_dotenv.py fix(tests): stop module-level dotenv loaders from polluting os.environ during pytest collection 2026-04-26 09:15:37 -07:00
conftest.py Add global httpx.ReadTimeout handler for all tests 2026-01-30 16:37:34 -08:00
test_acceptance.py feat(rust): retire python smart_crusher, ship rust-only via pyo3 2026-04-27 00:52:21 -07:00
test_adapter_hooks.py Add pluggable adapter hooks for CCR, Storage, and TOIN backends 2026-02-15 17:47:30 -08:00
test_adaptive_sizer.py Diversity-aware SmartCrusher: keep unique items, compress text within 2026-03-25 23:57:24 -07:00
test_anthropic_pre_upstream_backpressure.py test(backpressure): harden livez-under-backpressure against CI jitter 2026-04-23 10:08:04 +02:00
test_anthropic_stage_timings.py feat(proxy): add per-stage timings for Codex WS and Anthropic HTTP paths 2026-04-20 22:01:41 +07:00
test_backend_anyllm.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_backend_bugs.py fix(tests): stop module-level dotenv loaders from polluting os.environ during pytest collection 2026-04-26 09:15:37 -07:00
test_bedrock_region.py fix(tests): stop module-level dotenv loaders from polluting os.environ during pytest collection 2026-04-26 09:15:37 -07:00
test_binaries.py fix: docker install fails with PermissionError in readonly cache dir 2026-04-20 17:36:44 -07:00
test_bundled_tools_savings.py fix(tests): stop module-level dotenv loaders from polluting os.environ during pytest collection 2026-04-26 09:15:37 -07:00
test_canonical_pipeline.py test: expand provider pipeline coverage 2026-04-21 23:54:28 -05:00
test_ccr.py feat(rust): retire python smart_crusher, ship rust-only via pyo3 2026-04-27 00:52:21 -07:00
test_ccr_batch_processor.py Harden Anthropic prefix cache stability across proxy and batch paths 2026-04-04 13:45:37 -05:00
test_ccr_batch_store.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_ccr_context_tracker.py v0.2.2: Add CCR Response Handler, Context Tracker, and restructure docs 2026-01-14 13:03:41 -08:00
test_ccr_feedback.py Fix all ruff lint and format errors for CI 2026-01-10 15:33:44 -08:00
test_ccr_mcp_server.py fix: restore Windows mypy compatibility 2026-04-11 18:40:53 -05:00
test_ccr_response_handler.py Fix security vulnerabilities in memory and CCR systems 2026-02-04 12:05:50 -08:00
test_ccr_response_handler_extra.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_ccr_tool_injection.py Remove LLMLingua: Kompress is the sole text compressor 2026-03-26 11:11:00 -07:00
test_claude_session_branch_compare.py Harden anthropic cache-mode replay stability 2026-04-05 16:11:39 -05:00
test_claude_session_mode_benchmark.py Harden cache validation reporting and TTL analysis 2026-04-06 20:11:21 -05:00
test_cli_learn.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_cli_proxy_env.py fix(proxy): support multi-worker Docker env startup 2026-04-26 12:25:33 +00:00
test_cli_tools.py test: apply linux ruff formatting 2026-04-23 08:49:50 -05:00
test_codex_rate_limits.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_compress_api.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_compress_failure.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_compression_cache.py fix(proxy): restore Anthropic compression on token mode (issue #327) 2026-04-30 12:59:19 -07:00
test_compression_observability.py fix(proxy): restore Anthropic compression on token mode (issue #327) 2026-04-30 12:59:19 -07:00
test_compression_store.py chore: add nosec B324 annotations to non-cryptographic MD5 usages and update temporary database path to use system temp directory 2026-04-07 13:07:26 +06:00
test_compression_summary.py Add compression summaries, multi-provider headers, Dockerfile fix 2026-02-18 16:54:20 -08:00
test_compression_summary_eval.py Add compression summaries, multi-provider headers, Dockerfile fix 2026-02-18 16:54:20 -08:00
test_compression_summary_hard_eval.py fix(tests): stop module-level dotenv loaders from polluting os.environ during pytest collection 2026-04-26 09:15:37 -07:00
test_compression_summary_integration.py fix(tests): stop module-level dotenv loaders from polluting os.environ during pytest collection 2026-04-26 09:15:37 -07:00
test_compression_summary_tool_eval.py fix(tests): stop module-level dotenv loaders from polluting os.environ during pytest collection 2026-04-26 09:15:37 -07:00
test_config.py fix: dashboard metrics, TTFB tracking, eager LLMLingua loading, and multi-provider consistency 2026-03-07 23:33:45 -08:00
test_copilot_auth.py test: cover copilot auth branches 2026-04-22 00:23:28 -05:00
test_copilot_quota.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_cost_tracker_counterfactual.py fix(tests): stop module-level dotenv loaders from polluting os.environ during pytest collection 2026-04-26 09:15:37 -07:00
test_critical_fixes.py feat(rust): retire python smart_crusher, ship rust-only via pyo3 2026-04-27 00:52:21 -07:00
test_critical_gaps.py Update test for lowered TOIN confidence threshold default 2026-01-21 21:40:11 -08:00
test_dashboard_cache_ttl_playwright.py Add observed cache TTL metrics and dashboard coverage 2026-04-06 21:13:30 -05:00
test_evals_datasets.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_evals_metrics.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_exceptions.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_google_multimodal.py Fix Google Gemini conversion to preserve non-text content (Gap #4) 2026-01-24 12:20:13 -08:00
test_google_multimodal_e2e.py Add E2E tests for Google multimodal content preservation 2026-01-24 21:01:25 -08:00
test_graph.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_hnsw_only.py Add bounded memory support to HNSWVectorIndex with LRU eviction 2026-02-01 21:12:06 -08:00
test_hooks.py Add Compression Hooks — extension points for SaaS and advanced customization 2026-02-19 08:17:30 -08:00
test_image_compression.py Skip image tests when Pillow not installed (CI fix) 2026-04-09 16:24:15 -07:00
test_image_compressor.py fix: release image router models after compression 2026-04-29 01:45:27 -04:00
test_log_compressor.py fix: improve error handling and add comprehensive test coverage 2026-01-27 16:08:36 -08:00
test_memory_bridge.py Add Memory Bridge: bidirectional sync between markdown files and Headroom memory 2026-02-23 22:45:38 -08:00
test_memory_eval.py Add hierarchical memory system with graph + vector storage 2026-01-26 21:58:47 -08:00
test_memory_handler_concurrent_init.py fix: add anthropic pre-upstream timeouts 2026-04-21 09:48:32 +07:00
test_memory_handler_native_ops.py test(memory): add qdrant_url/qdrant_api_key to expected config dict 2026-04-25 14:56:55 -07:00
test_memory_integration.py Add centralized ML model configuration 2026-02-01 23:47:42 -08:00
test_memory_sync.py Fix CI lint errors and test failures 2026-04-14 18:23:06 -07:00
test_memory_system.py Fix CI: guard starlette imports, asyncio.run(), deprecate datetime.utcnow() 2026-02-19 11:03:24 -08:00
test_memory_tracker.py Add memory observability system (Phase 1) 2026-02-01 19:49:53 -08:00
test_memory_tracker_integration.py Add wrap commands for Codex/Cursor/Aider with rtk instructions, fix savings metrics 2026-03-13 22:02:47 -07:00
test_memory_usage_integration.py fix(tests): stop module-level dotenv loaders from polluting os.environ during pytest collection 2026-04-26 09:15:37 -07:00
test_memory_wrapper.py test: apply linux ruff formatting 2026-04-23 08:49:50 -05:00
test_ml_model_registry_lifecycle.py fix: release image router models after compression 2026-04-29 01:45:27 -04:00
test_models.py Fix pricing lookup for retired Claude models 2026-03-12 21:11:18 -07:00
test_oauth_bearer_routing.py style: fix ruff lint/format and mypy errors for CI 3.12 pass 2026-04-20 13:23:20 -05:00
test_observability_metrics.py feat: add OTEL observability core 2026-04-09 21:20:34 -05:00
test_observability_tracing.py feat: add OTEL observability core 2026-04-09 21:20:34 -05:00
test_onnx_runtime.py fix(onnx): reduce retained cpu memory 2026-04-20 22:31:48 +00:00
test_openai_codex_routing.py fix(proxy): retry responses transport without bypassing compression 2026-04-20 22:01:39 +07:00
test_openai_codex_ws_lifecycle.py fix(ci): restore repro harness test in dev installs 2026-04-20 22:12:01 +07:00
test_openai_codex_ws_timings.py feat(proxy): add per-stage timings for Codex WS and Anthropic HTTP paths 2026-04-20 22:01:41 +07:00
test_openai_streaming_backend.py Commit message: 2026-03-13 16:49:18 -07:00
test_package_init_lazy.py Fix CI lint errors and test failures 2026-04-14 18:23:06 -07:00
test_parser.py Add multi-provider memory system with auto-detection 2026-02-01 14:42:50 -08:00
test_paths.py test(paths): close coverage gaps for derived-only helpers 2026-04-16 19:59:30 -05:00
test_paths_backward_compat.py test(paths): add adversarial backward-compat stress suite 2026-04-16 19:59:47 -05:00
test_pipeline.py test: apply linux ruff formatting 2026-04-23 08:49:50 -05:00
test_plugin_manifests.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_pr208_changes.py fix(proxy): defer file logging install to create_app() 2026-04-28 15:28:33 -07:00
test_pricing.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_pricing_litellm.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_prometheus_stage_timing_concurrency.py perf(proxy): reduce lock contention on stage-timing metrics 2026-04-20 22:08:09 +07:00
test_provider_aider.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_provider_claude.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_provider_codex_runtime.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_provider_copilot_wrap.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_provider_cursor.py test: remove provider diff churn 2026-04-22 22:13:13 -05:00
test_provider_model_fallback.py Fix CI regressions for cache benchmark work 2026-04-04 22:33:44 -05:00
test_provider_openclaw_wrap.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_provider_package_init.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_provider_proxy_routes.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_provider_registry.py test: remove provider diff churn 2026-04-22 22:13:13 -05:00
test_provider_registry_extended.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_proxy_anthropic_cache_stability.py fix(proxy): guard CCR tool injection against frozen prefix to preserve cache 2026-04-28 10:01:11 -07:00
test_proxy_anthropic_compression_diagnostics.py style(tests): apply ruff format to compression diagnostics test 2026-04-28 21:31:23 -07:00
test_proxy_batch_integration.py Add multi-provider batch API support with CCR post-processing 2026-01-24 11:41:18 -08:00
test_proxy_cache_ttl_metrics.py feat: expose proxy OTEL metrics and Langfuse status 2026-04-09 21:20:46 -05:00
test_proxy_ccr.py fix(tests): pin proxy_ccr + text_compressors tests to lossy+CCR path 2026-04-27 17:15:44 -07:00
test_proxy_codex_route_aliases.py chore: format proxy route tests with ruff 2026-04-21 19:38:32 +00:00
test_proxy_compress_endpoint.py Add TypeScript SDK (headroom-ai npm package) 2026-03-26 15:41:56 -07:00
test_proxy_compression_headers.py fix: strip accept-encoding from forwarded proxy headers 2026-04-15 11:40:11 -07:00
test_proxy_copilot_auth_hooks.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_proxy_count_tokens_integration.py Add multi-provider batch API support with CCR post-processing 2026-01-24 11:41:18 -08:00
test_proxy_dashboard_stats_cache.py fix: cache dashboard stats snapshots 2026-04-22 09:30:19 +00:00
test_proxy_debug_endpoints.py fix: add anthropic pre-upstream timeouts 2026-04-21 09:48:32 +07:00
test_proxy_gemini_integration.py Add multi-provider batch API support with CCR post-processing 2026-01-24 11:41:18 -08:00
test_proxy_gemini_native_integration.py Add multi-provider batch API support with CCR post-processing 2026-01-24 11:41:18 -08:00
test_proxy_google_cloudcode_route_aliases.py chore: format proxy route tests with ruff 2026-04-21 19:38:32 +00:00
test_proxy_handler_helpers.py fix: release image router models after compression 2026-04-29 01:45:27 -04:00
test_proxy_handlers_batch.py test: apply linux ruff formatting 2026-04-23 08:49:50 -05:00
test_proxy_healthchecks.py fix: add anthropic pre-upstream timeouts 2026-04-21 09:48:32 +07:00
test_proxy_hooks_regression.py test(proxy): align hooks regression test with Bug 3 recount semantics 2026-04-30 13:26:53 -07:00
test_proxy_intelligent_context.py feat(toin): add TOIN + CCR integration to IntelligentContextManager 2026-01-27 16:08:36 -08:00
test_proxy_memory_integration.py fix: correct cost calculation for cache tokens and simplify memory DevEx 2026-01-26 22:49:31 -08:00
test_proxy_mode_benchmark.py Rebrand proxy modes to token/cache and harden cache-mode stability 2026-04-04 14:32:07 -05:00
test_proxy_modes.py Harden cache-mode immutability for OpenAI and fix stats mode reporting 2026-04-04 14:36:29 -05:00
test_proxy_openai_cache_stability.py Fix CI regressions for cache benchmark work 2026-04-04 22:33:44 -05:00
test_proxy_openai_responses_integration.py Add compression for OpenAI Responses API (/v1/responses) 2026-03-30 20:13:00 -07:00
test_proxy_passthrough_integration.py Add multi-provider batch API support with CCR post-processing 2026-01-24 11:41:18 -08:00
test_proxy_pipeline_lifecycle.py fix: release image router models after compression 2026-04-29 01:45:27 -04:00
test_proxy_savings_history.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_proxy_scalability.py fix(proxy): support multi-worker Docker env startup 2026-04-26 12:25:33 +00:00
test_proxy_streaming_ratelimit_headers.py chore: format proxy route tests with ruff 2026-04-21 19:38:32 +00:00
test_proxy_streaming_request_logger.py fix(proxy): log streaming Anthropic requests so feed populates 2026-04-22 14:16:35 +02:00
test_proxy_streaming_resilience.py Refactor: extract 7 modules from server.py (Steps 2-4) 2026-04-03 16:18:08 -07:00
test_proxy_telemetry_env.py feat: allow overriding proxy telemetry sdk via HEADROOM_SDK 2026-03-27 14:23:32 +01:00
test_proxy_warmup.py fix(ci): restore repro harness test in dev installs 2026-04-20 22:12:01 +07:00
test_quality_retention.py feat(rust): SmartCrusher PR4 — lossless-first default + CCR-Dropped restoration 2026-04-27 16:30:22 -07:00
test_quota_registry.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_release_version.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_release_workflows.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_relevance.py feat(rust): retire python smart_crusher, ship rust-only via pyo3 2026-04-27 00:52:21 -07:00
test_relevance_extra.py feat(rust): retire python smart_crusher, ship rust-only via pyo3 2026-04-27 00:52:21 -07:00
test_reporting.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_responses_converter.py Add compression for OpenAI Responses API (/v1/responses) 2026-03-30 20:13:00 -07:00
test_rtk_installer.py feat(cli): add Docker-native install flow and parity docs 2026-04-10 23:27:24 -05:00
test_search_compressor.py fix: improve error handling and add comprehensive test coverage 2026-01-27 16:08:36 -08:00
test_security_validations.py Fix security vulnerabilities in memory and CCR systems 2026-02-04 12:05:50 -08:00
test_shared_context.py Add SharedContext for multi-agent, rewrite README, fix proxy cleanup 2026-03-17 16:31:04 -07:00
test_signals_keyword_parity.py chore(transforms): retire dead text_compressor module (Phase 3e.3) 2026-04-29 21:14:36 -07:00
test_smart_crusher_toin_attachment.py fix(smart_crusher): re-land orphaned audit close-out — CCR knob + scorer fail-loud 2026-04-28 18:37:52 -07:00
test_sqlite_graph_store.py Add SQLiteGraphStore for bounded, persistent graph storage 2026-02-01 20:48:57 -08:00
test_sqlite_vector_index.py fix(memory): batch onnx embeddings and sqlite-vec ops 2026-04-24 09:49:28 +00:00
test_stage_timer.py feat(proxy): add per-stage timings for Codex WS and Anthropic HTTP paths 2026-04-20 22:01:41 +07:00
test_storage_backends.py test: apply linux ruff formatting 2026-04-23 08:49:50 -05:00
test_strands_tokenizer.py Count Strands reasoningContent, image, document, video tokens (#111 follow-up) 2026-04-08 17:31:00 -07:00
test_strategy_stats_supabase.py feat(telemetry): surface per-strategy compression counters 2026-04-29 14:14:09 -07:00
test_subscription_base.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_subscription_client.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_subscription_tracker.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_tag_protection_integration.py Fix API integration test: use tool output not user message for tags 2026-03-26 11:46:55 -07:00
test_telemetry.py Fix all ruff lint and format errors for CI 2026-01-10 15:33:44 -08:00
test_telemetry_context.py refactor(telemetry): centralize stack slug validation + cardinality cap 2026-04-17 18:42:41 +02:00
test_telemetry_warning.py fix: format telemetry warning tests for CI 2026-04-09 23:29:56 -05:00
test_text_compressors.py chore(transforms): retire dead text_compressor module (Phase 3e.3) 2026-04-29 21:14:36 -07:00
test_toin.py Add comprehensive evaluation framework for compression accuracy 2026-01-22 09:31:54 -08:00
test_toin_feedback.py fix: close TOIN feedback loop — retrievals now flow back for learning 2026-03-22 14:18:30 -07:00
test_toin_fixes.py Fix all ruff lint and format errors for CI 2026-01-10 15:33:44 -08:00
test_toin_full_integration.py Update test for lowered TOIN confidence threshold default 2026-01-21 21:40:11 -08:00
test_toin_integration.py feat(rust): retire python smart_crusher, ship rust-only via pyo3 2026-04-27 00:52:21 -07:00
test_token_headroom_mode.py Rebrand proxy modes to token/cache and harden cache-mode stability 2026-04-04 14:32:07 -05:00
test_tokenizer.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_tokenizers.py Fix all ruff lint and format errors for CI 2026-01-10 15:33:44 -08:00
test_tool_result_interceptors.py fix(review-3): address third-pass PR #210 feedback 2026-04-20 20:24:47 -07:00
test_transforms_content_detection.py test: align test_error_detection with Phase 3e.1 bug fixes 2026-04-29 16:10:08 -07:00
test_transforms_content_router.py chore(rust): wire detection chain into ContentRouter (Stage 3d PR5) 2026-04-29 10:11:52 -07:00
test_transforms_log_compressor.py feat(rust): port log_compressor to Rust + bug fixes (Phase 3e.5) 2026-04-29 20:47:49 -07:00
test_transforms_package.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_transforms_search_compressor.py style: ruff format tests/test_transforms_search_compressor.py 2026-04-29 18:56:31 -07:00
test_utils.py chore: renormalize line endings to LF 2026-04-24 15:33:30 +02:00
test_ws_http_fallback.py fix(proxy): retry responses transport without bypassing compression 2026-04-20 22:01:39 +07:00
test_ws_memory_relay.py Fix CI lint errors and test failures 2026-04-14 18:23:06 -07:00
test_ws_session_registry.py feat(proxy): track Codex WS sessions and cancel relay tasks deterministically 2026-04-20 22:01:41 +07:00