Files
wehub-resource-sync 0ef5fcb1c5
Security / Dependency audit (pip-audit) (push) Has been cancelled
Security / CodeQL (javascript-typescript) (push) Has been cancelled
Security / CodeQL (python) (push) Has been cancelled
Security / Secret scan (gitleaks) (push) Has been cancelled
rust / test (ubuntu) (push) Has been cancelled
rust / simulator e2e (macos-latest) (push) Has been cancelled
rust / simulator e2e (ubuntu-latest) (push) Has been cancelled
rust / simulator e2e (windows-latest) (push) Has been cancelled
rust / wheels (aarch64-apple-darwin) (push) Has been cancelled
rust / wheels (x86_64-unknown-linux-gnu) (push) Has been cancelled
rust / wheels (x86_64-apple-darwin) (push) Has been cancelled
rust / audit (push) Has been cancelled
rust / parity (nightly, allowed to fail during Phase 0) (push) Has been cancelled
CI / commitlint (push) Has been skipped
Dev Containers / validate (.devcontainer/devcontainer.json, default) (push) Failing after 0s
Dev Containers / validate (.devcontainer/memory-stack/devcontainer.json, memory-stack) (push) Failing after 0s
Dev Containers / validate-worktree (push) Failing after 0s
CI / changes (push) Failing after 4s
Deploy Documentation / validate (push) Has been skipped
Deploy Documentation / deploy (push) Failing after 1s
Init Native E2E / init-native (ubuntu-latest, claude) (push) Failing after 1s
Init Native E2E / init-native (ubuntu-latest, codex) (push) Failing after 1s
Install Native E2E / install-native (ubuntu-latest) (push) Failing after 1s
OpenCode Plugin / typecheck + build + test (push) Failing after 1s
Init Native E2E / init-native (ubuntu-latest, copilot) (push) Failing after 1s
Release Please / release-please (push) Failing after 1s
Wrap E2E / docker-wrap-e2e (push) Failing after 1s
Wrap Native E2E / wrap-native (ubuntu-latest) (push) Failing after 1s
Init E2E / docker-init-e2e (push) Failing after 4s
Merge Conflicts / merge-conflicts (push) Failing after 4s
CI / lint (push) Has been cancelled
CI / build-wheel (push) Has been cancelled
CI / build-wheel-windows (push) Has been cancelled
CI / prefetch-model (push) Has been cancelled
CI / test-dashboard-ui (push) Has been cancelled
CI / test (1) (push) Has been cancelled
CI / test (2) (push) Has been cancelled
CI / test (3) (push) Has been cancelled
CI / test (4) (push) Has been cancelled
CI / test-extras (push) Has been cancelled
CI / test-agno (push) Has been cancelled
CI / build (push) Has been cancelled
CI / workflow-validation (push) Has been cancelled
CI / docker-native-e2e (push) Has been cancelled
CI / windows-native-wrapper (push) Has been cancelled
CI / macos-native-wrapper (push) Has been cancelled
Docker / docker-build (map[name:arm64 platform:linux/arm64 runs_on:ubuntu-24.04-arm], map[bake_target:runtime-code-nonroot name:code-nonroot]) (push) Has been cancelled
Docker / docker-build (map[name:arm64 platform:linux/arm64 runs_on:ubuntu-24.04-arm], map[bake_target:runtime-code-slim name:code-slim]) (push) Has been cancelled
Docker / docker-build (map[name:arm64 platform:linux/arm64 runs_on:ubuntu-24.04-arm], map[bake_target:runtime-code-slim-nonroot name:code-slim-nonroot]) (push) Has been cancelled
Docker / docker-build (map[name:arm64 platform:linux/arm64 runs_on:ubuntu-24.04-arm], map[bake_target:runtime-nonroot name:nonroot]) (push) Has been cancelled
Docker / docker-build (map[name:arm64 platform:linux/arm64 runs_on:ubuntu-24.04-arm], map[bake_target:runtime-slim name:slim]) (push) Has been cancelled
Docker / docker-build (map[name:arm64 platform:linux/arm64 runs_on:ubuntu-24.04-arm], map[bake_target:runtime-slim-nonroot name:slim-nonroot]) (push) Has been cancelled
Docker / docker-manifest (map[bake_target:runtime name:]) (push) Has been cancelled
Docker / docker-manifest (map[bake_target:runtime-code name:code]) (push) Has been cancelled
Docker / docker-manifest (map[bake_target:runtime-code-nonroot name:code-nonroot]) (push) Has been cancelled
Docker / docker-manifest (map[bake_target:runtime-code-slim name:code-slim]) (push) Has been cancelled
Docker / docker-manifest (map[bake_target:runtime-code-slim-nonroot name:code-slim-nonroot]) (push) Has been cancelled
Docker / docker-manifest (map[bake_target:runtime-nonroot name:nonroot]) (push) Has been cancelled
Docker / docker-manifest (map[bake_target:runtime-slim name:slim]) (push) Has been cancelled
Docker / docker-manifest (map[bake_target:runtime-slim-nonroot name:slim-nonroot]) (push) Has been cancelled
Docker / docker-build (map[name:amd64 platform:linux/amd64 runs_on:ubuntu-24.04], map[bake_target:runtime name:]) (push) Has been cancelled
Docker / docker-build (map[name:amd64 platform:linux/amd64 runs_on:ubuntu-24.04], map[bake_target:runtime-code name:code]) (push) Has been cancelled
Docker / docker-build (map[name:amd64 platform:linux/amd64 runs_on:ubuntu-24.04], map[bake_target:runtime-code-nonroot name:code-nonroot]) (push) Has been cancelled
Docker / docker-build (map[name:amd64 platform:linux/amd64 runs_on:ubuntu-24.04], map[bake_target:runtime-code-slim name:code-slim]) (push) Has been cancelled
Docker / docker-build (map[name:amd64 platform:linux/amd64 runs_on:ubuntu-24.04], map[bake_target:runtime-code-slim-nonroot name:code-slim-nonroot]) (push) Has been cancelled
Docker / docker-build (map[name:amd64 platform:linux/amd64 runs_on:ubuntu-24.04], map[bake_target:runtime-nonroot name:nonroot]) (push) Has been cancelled
Docker / docker-build (map[name:amd64 platform:linux/amd64 runs_on:ubuntu-24.04], map[bake_target:runtime-slim name:slim]) (push) Has been cancelled
Docker / docker-build (map[name:amd64 platform:linux/amd64 runs_on:ubuntu-24.04], map[bake_target:runtime-slim-nonroot name:slim-nonroot]) (push) Has been cancelled
Docker / docker-build (map[name:arm64 platform:linux/arm64 runs_on:ubuntu-24.04-arm], map[bake_target:runtime name:]) (push) Has been cancelled
Docker / docker-build (map[name:arm64 platform:linux/arm64 runs_on:ubuntu-24.04-arm], map[bake_target:runtime-code name:code]) (push) Has been cancelled
Docker / promote-latest (push) Has been cancelled
Init Native E2E / init-native (macos-latest, claude) (push) Has been cancelled
Init Native E2E / init-native (macos-latest, codex) (push) Has been cancelled
Init Native E2E / init-native (macos-latest, copilot) (push) Has been cancelled
Install Native E2E / install-native (macos-latest) (push) Has been cancelled
Wrap Native E2E / wrap-native (macos-latest) (push) Has been cancelled
chore: import upstream snapshot with attribution
2026-07-13 12:03:20 +08:00

150 lines
5.4 KiB
Python

"""Headroom Cache Optimization Module.
This module provides a plugin-based architecture for cache optimization
across different LLM providers. Each provider has different caching
mechanisms and this module abstracts those differences.
Provider Caching Differences:
- Anthropic: Explicit cache_control blocks, 90% savings, 5-min TTL
- OpenAI: Automatic prefix caching, 50% savings, no user control
- Google: Separate CachedContent API, 75% savings + storage costs
Usage:
from headroom.cache import CacheOptimizerRegistry, SemanticCacheLayer
# Get provider-specific optimizer
optimizer = CacheOptimizerRegistry.get("anthropic")
result = optimizer.optimize(messages, context)
# With semantic caching layer
semantic = SemanticCacheLayer(optimizer, similarity_threshold=0.95)
result = semantic.process(messages, context)
# Register custom optimizer
CacheOptimizerRegistry.register("my-provider", MyOptimizer)
"""
from __future__ import annotations
from importlib import import_module
from typing import TYPE_CHECKING
if TYPE_CHECKING:
# Expose concrete types to static analysis while keeping runtime imports lazy.
from headroom.cache.anthropic import AnthropicCacheOptimizer # noqa: F401
from headroom.cache.base import ( # noqa: F401
BaseCacheOptimizer,
CacheBreakpoint,
CacheConfig,
CacheMetrics,
CacheOptimizer,
CacheResult,
CacheStrategy,
OptimizationContext,
)
from headroom.cache.compression_cache import CompressionCache # noqa: F401
from headroom.cache.dynamic_detector import ( # noqa: F401
DetectorConfig,
DynamicCategory,
DynamicContentDetector,
DynamicSpan,
detect_dynamic_content,
)
from headroom.cache.google import GoogleCacheOptimizer # noqa: F401
from headroom.cache.openai import OpenAICacheOptimizer # noqa: F401
from headroom.cache.prefix_tracker import ( # noqa: F401
FreezeStats,
PrefixCacheTracker,
PrefixFreezeConfig,
SessionTrackerStore,
)
from headroom.cache.registry import CacheOptimizerRegistry # noqa: F401
from headroom.cache.semantic import SemanticCache, SemanticCacheLayer # noqa: F401
__all__ = [
# Base types
"BaseCacheOptimizer",
"CacheBreakpoint",
"CacheConfig",
"CacheMetrics",
"CacheOptimizer",
"CacheResult",
"CacheStrategy",
"OptimizationContext",
# Dynamic content detection
"DetectorConfig",
"DynamicCategory",
"DynamicContentDetector",
"DynamicSpan",
"detect_dynamic_content",
# Registry
"CacheOptimizerRegistry",
# Provider implementations
"AnthropicCacheOptimizer",
"OpenAICacheOptimizer",
"GoogleCacheOptimizer",
# Semantic caching
"SemanticCacheLayer",
"SemanticCache",
# Compression cache (token headroom mode)
"CompressionCache",
# Prefix cache tracking
"PrefixCacheTracker",
"PrefixFreezeConfig",
"FreezeStats",
"SessionTrackerStore",
]
_LAZY_EXPORTS: dict[str, tuple[str, str]] = {
# Base types
"BaseCacheOptimizer": ("headroom.cache.base", "BaseCacheOptimizer"),
"CacheBreakpoint": ("headroom.cache.base", "CacheBreakpoint"),
"CacheConfig": ("headroom.cache.base", "CacheConfig"),
"CacheMetrics": ("headroom.cache.base", "CacheMetrics"),
"CacheOptimizer": ("headroom.cache.base", "CacheOptimizer"),
"CacheResult": ("headroom.cache.base", "CacheResult"),
"CacheStrategy": ("headroom.cache.base", "CacheStrategy"),
"OptimizationContext": ("headroom.cache.base", "OptimizationContext"),
# Dynamic content detection
"DetectorConfig": ("headroom.cache.dynamic_detector", "DetectorConfig"),
"DynamicCategory": ("headroom.cache.dynamic_detector", "DynamicCategory"),
"DynamicContentDetector": ("headroom.cache.dynamic_detector", "DynamicContentDetector"),
"DynamicSpan": ("headroom.cache.dynamic_detector", "DynamicSpan"),
"detect_dynamic_content": ("headroom.cache.dynamic_detector", "detect_dynamic_content"),
# Registry
"CacheOptimizerRegistry": ("headroom.cache.registry", "CacheOptimizerRegistry"),
# Provider implementations
"AnthropicCacheOptimizer": ("headroom.cache.anthropic", "AnthropicCacheOptimizer"),
"OpenAICacheOptimizer": ("headroom.cache.openai", "OpenAICacheOptimizer"),
"GoogleCacheOptimizer": ("headroom.cache.google", "GoogleCacheOptimizer"),
# Semantic caching
"SemanticCacheLayer": ("headroom.cache.semantic", "SemanticCacheLayer"),
"SemanticCache": ("headroom.cache.semantic", "SemanticCache"),
# Compression cache
"CompressionCache": ("headroom.cache.compression_cache", "CompressionCache"),
# Prefix cache tracking
"PrefixCacheTracker": ("headroom.cache.prefix_tracker", "PrefixCacheTracker"),
"PrefixFreezeConfig": ("headroom.cache.prefix_tracker", "PrefixFreezeConfig"),
"FreezeStats": ("headroom.cache.prefix_tracker", "FreezeStats"),
"SessionTrackerStore": ("headroom.cache.prefix_tracker", "SessionTrackerStore"),
}
def __getattr__(name: str) -> object:
if name == "__path__":
raise AttributeError(name)
try:
module_name, attr_name = _LAZY_EXPORTS[name]
except KeyError as exc:
raise AttributeError(f"module {__name__!r} has no attribute {name!r}") from exc
module = import_module(module_name)
value = getattr(module, attr_name)
globals()[name] = value
return value
def __dir__() -> list[str]:
return sorted(set(globals()) | set(__all__))