Skip to content

briefcase.routing

Terminal window
pip install briefcase-ai[routing]

The legacy BaseRouter interface and a newer policy-versioned routing layer.

Legacy BaseRouter

from briefcase.routing import BaseRouter, RoutingDecision
class StaticRouter(BaseRouter):
def route(self, decision_context) -> RoutingDecision:
return RoutingDecision(
action="senior-agent",
source="static",
eval_time_ms=0.1,
reason="default route",
)
router = StaticRouter()
decision = router.route({"priority": "high"})
print(decision.action, decision.source)

Policy layer: PolicyRegistry, PolicyVersion, PolicyRule, AgentRouter

from datetime import datetime, timezone
from briefcase.routing import (
PolicyRegistry,
PolicyVersion,
PolicyRule,
AgentRouter,
)
registry = PolicyRegistry()
policy = PolicyVersion(
policy_id="ticket-routing",
version="1",
rules=[
PolicyRule(
rule_id="high-priority",
condition={"priority": "high"},
choice="senior-agent",
rationale="High priority tickets go to senior agents.",
),
],
default_choice="general-agent",
)
registry.publish(policy, valid_from=datetime.now(timezone.utc))
router = AgentRouter(registry, use_case="ticket-routing", policy_id="ticket-routing")
decision = router.route({"priority": "high"})
print(decision.selected, decision.matched_rule_id, decision.policy_version)
PolicyRegistry(store=None)
.publish(policy, *, valid_from, transaction_time=None, source="policy_registry")
.get(policy_id, *, as_of_transaction_time=None, as_of_valid_time=None)
.history(policy_id)
PolicyVersion(policy_id, version, rules, default_choice=None, description=None)
.select(context) -> PolicyEvaluationResult
PolicyRule(rule_id, condition, choice, rationale=None)
.matches(context) -> bool
AgentRouter(registry, *, use_case, policy_id, candidates_provider=None)
.route(context, *, evidence_refs=None, as_of_transaction_time=None) -> AgentRoutingDecision

AgentRoutingDecision attributes: decision_id, use_case, context, candidates, selected, policy_id, policy_version, matched_rule_id, evidence_refs, rationale, decided_at, plus to_dict().

InternalRouter, OPARouter

from briefcase.routing.internal import InternalRouter
from briefcase.routing.opa import OPARouter
InternalRouter(confidence_threshold=0.85)
OPARouter(endpoint, timeout_ms=50, cache_ttl_seconds=60, fallback_threshold=0.85)

OPARouter.route() posts confidence, context version, model name, and tags to OPA, caches successful decisions, and falls back to InternalRouter on errors.