Skip to main content

subscriber_visible_to_caller

Function subscriber_visible_to_caller 

Source
pub(crate) fn subscriber_visible_to_caller(
    sub_acc_ids: &HashSet<u64>,
    caller_allowed: Option<&HashSet<u64>>,
) -> bool
Expand description

v1.4.39 Phase 5 filter 核心决策(pure function,便于单测):

判断 push 是否应推给某个订阅者。2 层 gate:

  1. subscriber acc_idsfutu_sub_acc_push 参数里用户指定的 acc_id 列表 (空集 = subscribe-all,即不做 subscriber 级过滤)
  2. key allowed_acc_ids (v1.4.39):注册时快照的 per-key 白名单。defense-in-depth 层,防止 agent 订阅了 key 无权限的 acc_id(主 auth 在 guard.rs tool 调用 时 enforce,但 push 是服务端主动发起绕过 tool 调用)

两层都 pass 才推。行情类 push (push_acc_id=None) 跳过所有 acc_id gate。 v1.4.58 MED-NEW-3(2nd code review): summary 过滤决策 pure function。

用于 push_subscribers_summary 的 cross-tenant filter —— scope mode 下 caller 只能看到自己 allowed_acc_ids 有交集的订阅(防止跨租户泄漏其他 agent 的 acc_ids)。

规则:

  • caller_allowed = None 或空集(legacy / unrestricted)→ 全可见
  • 被查订阅的 sub_acc_ids 空集(subscribe-all)→ 全可见(没有 specific 账户可泄漏)
  • 否则 → 只要 sub_acc_idscaller_allowed任一交集 → 可见