Kairo-Jinkendo/backend/steering/kernel/attention.py

44 lines
1.4 KiB
Python
Raw Permalink Normal View History

"""Attention evaluation (Q5) — method- and horizon-aware for one initiative."""
from __future__ import annotations
from typing import Any
from steering.kernel.models import HorizonMarker, SteeringBinding
from tenant_context import TenantContext
# Side-effect: register contributors
import steering.attention.contributors.core # noqa: F401
import steering.attention.contributors.gates # noqa: F401
import steering.attention.contributors.read_models # noqa: F401
import steering.attention.contributors.reviews # noqa: F401
def evaluate_attention(
ctx: TenantContext,
*,
initiative_id: str,
binding: SteeringBinding,
horizon: HorizonMarker,
next_work: list[dict[str, Any]],
read_models: dict[str, Any] | None = None,
proposals: dict[str, Any] | None = None,
eval_ctx=None,
limit: int = 20,
) -> list[dict[str, Any]]:
"""Kernel attention — contributors via registry (K-Ext-2)."""
from steering.attention.context import AttentionEvalContext
from steering.attention.contributors.registry import collect_attention_items
actx = AttentionEvalContext(
tenant_ctx=ctx,
initiative_id=initiative_id,
binding=binding,
horizon=horizon,
next_work=next_work,
read_models=read_models or {},
proposals=proposals or {},
eval_ctx=eval_ctx,
)
return collect_attention_items(actx)[:limit]