Files
buzz/desktop/src/features/agents/lib/canViewAgentActivity.ts
Taylor Ho c8d85ef3d8 feat(agents): refine activity visibility ownership checks
- Extend canViewAgentActivity coverage for relay-backed agent sessions
- Harden Tauri ownership resolution and observer relay scoping
- Wire updated visibility rules through profile panel and popover surfaces
2026-06-15 15:35:51 -07:00

46 lines
1.3 KiB
TypeScript

import type { AgentOwnershipStatus } from "@/shared/api/tauriAgentOwnership";
export type CanViewAgentActivityInput = {
relayOwnership: AgentOwnershipStatus | undefined;
isManagedAgent: boolean | undefined;
isOwnershipLoading: boolean;
isOwnershipError: boolean;
isManagedLoading: boolean;
};
export type CanViewAgentActivityResult = {
canView: boolean;
isLoading: boolean;
};
/**
* Unified predicate for Show Activity / Activity log ingresses.
*
* Final permission comes from relay `is_agent_owner`. While the relay lookup
* is in flight, locally managed agents may show activity optimistically.
*/
export function resolveCanViewAgentActivity({
relayOwnership,
isManagedAgent,
isOwnershipLoading,
isOwnershipError,
isManagedLoading,
}: CanViewAgentActivityInput): CanViewAgentActivityResult {
if (relayOwnership?.isOwner === true) {
return { canView: true, isLoading: false };
}
if (relayOwnership?.isOwner === false) {
return { canView: false, isLoading: false };
}
const isLoading =
isOwnershipLoading || (isManagedAgent === undefined && isManagedLoading);
if (isManagedAgent === true && (isOwnershipLoading || isOwnershipError)) {
return { canView: true, isLoading };
}
return { canView: false, isLoading };
}