chopratejas--headroom
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
96 行
2.9 KiB
Python
96 行
2.9 KiB
Python
"""Strands Agents integration for Headroom SDK.
|
|
|
|
This module provides seamless integration with Strands Agents,
|
|
enabling automatic context optimization for Strands agents.
|
|
|
|
Components:
|
|
1. HeadroomStrandsModel - Wraps any Strands model to apply Headroom transforms
|
|
2. HeadroomHookProvider - Hook provider for Strands agents
|
|
3. get_headroom_provider - Detects appropriate provider for a Strands model
|
|
4. get_model_name_from_strands - Extracts model name from a Strands model
|
|
|
|
Example:
|
|
from strands import Agent
|
|
from strands.models import BedrockModel
|
|
from headroom.integrations.strands import HeadroomStrandsModel
|
|
|
|
# Wrap any Strands model
|
|
model = BedrockModel(model_id="anthropic.claude-3-5-sonnet-20241022-v2:0")
|
|
optimized_model = HeadroomStrandsModel(model)
|
|
|
|
# Use with agent
|
|
agent = Agent(model=optimized_model)
|
|
response = agent("Hello!")
|
|
"""
|
|
|
|
from __future__ import annotations
|
|
|
|
import importlib.util
|
|
from typing import TYPE_CHECKING, Any
|
|
|
|
if TYPE_CHECKING:
|
|
from .bundle import HeadroomBundle
|
|
from .hooks import HeadroomHookProvider
|
|
from .model import HeadroomStrandsModel, OptimizationMetrics, optimize_messages
|
|
from .providers import get_headroom_provider, get_model_name_from_strands
|
|
|
|
|
|
def strands_available() -> bool:
|
|
"""Check if strands-agents is installed and available.
|
|
|
|
Returns:
|
|
True if strands-agents package is available, False otherwise.
|
|
"""
|
|
return importlib.util.find_spec("strands") is not None
|
|
|
|
|
|
# Lazy imports to avoid import errors when strands is not installed
|
|
def __getattr__(name: str) -> Any:
|
|
"""Lazy import of integration components."""
|
|
if name == "HeadroomHookProvider":
|
|
from .hooks import HeadroomHookProvider
|
|
|
|
return HeadroomHookProvider
|
|
elif name == "HeadroomStrandsModel":
|
|
from .model import HeadroomStrandsModel
|
|
|
|
return HeadroomStrandsModel
|
|
elif name == "OptimizationMetrics":
|
|
from .model import OptimizationMetrics
|
|
|
|
return OptimizationMetrics
|
|
elif name == "optimize_messages":
|
|
from .model import optimize_messages
|
|
|
|
return optimize_messages
|
|
elif name == "get_headroom_provider":
|
|
from .providers import get_headroom_provider
|
|
|
|
return get_headroom_provider
|
|
elif name == "get_model_name_from_strands":
|
|
from .providers import get_model_name_from_strands
|
|
|
|
return get_model_name_from_strands
|
|
elif name == "HeadroomBundle":
|
|
from .bundle import HeadroomBundle
|
|
|
|
return HeadroomBundle
|
|
raise AttributeError(f"module {__name__!r} has no attribute {name!r}")
|
|
|
|
|
|
__all__ = [
|
|
# Availability check
|
|
"strands_available",
|
|
# Hook provider
|
|
"HeadroomHookProvider",
|
|
# Model wrapper
|
|
"HeadroomStrandsModel",
|
|
"OptimizationMetrics",
|
|
"optimize_messages",
|
|
# Provider detection
|
|
"get_headroom_provider",
|
|
"get_model_name_from_strands",
|
|
# One-helper MCP + hook wiring (Headroom + tokensave/Serena + RTK-equivalent)
|
|
"HeadroomBundle",
|
|
]
|