mirror of
https://github.com/block/buzz.git
synced 2026-11-04 16:31:38 +00:00
- 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
49 lines
1.3 KiB
TypeScript
49 lines
1.3 KiB
TypeScript
import { invokeTauri } from "@/shared/api/tauri";
|
|
import { resolveOaOwner } from "@/shared/api/tauriIdentityArchive";
|
|
|
|
export type AgentOwnershipStatus = {
|
|
/** Lowercase hex pubkey of the queried agent. */
|
|
agentPubkey: string;
|
|
/** Lowercase hex owner pubkey from relay `agent_owner_pubkey`, if set. */
|
|
ownerPubkey: string | null;
|
|
/** True iff the current workspace identity is the relay-recorded owner. */
|
|
isOwner: boolean;
|
|
};
|
|
|
|
type RawAgentOwnershipStatus = {
|
|
agent_pubkey: string;
|
|
owner_pubkey: string | null;
|
|
is_owner: boolean;
|
|
};
|
|
|
|
/**
|
|
* Resolve whether the current identity owns `agentPubkey` per relay DB.
|
|
* Authoritative gate for observer activity visibility.
|
|
*/
|
|
export async function resolveAgentOwnership(
|
|
agentPubkey: string,
|
|
): Promise<AgentOwnershipStatus> {
|
|
try {
|
|
const raw = await invokeTauri<RawAgentOwnershipStatus>(
|
|
"resolve_agent_ownership",
|
|
{ agentPubkey },
|
|
);
|
|
return {
|
|
agentPubkey: raw.agent_pubkey,
|
|
ownerPubkey: raw.owner_pubkey,
|
|
isOwner: raw.is_owner,
|
|
};
|
|
} catch (error) {
|
|
const owner = await resolveOaOwner(agentPubkey).catch(() => null);
|
|
if (!owner) {
|
|
throw error;
|
|
}
|
|
|
|
return {
|
|
agentPubkey: agentPubkey.toLowerCase(),
|
|
ownerPubkey: owner.owner,
|
|
isOwner: owner.isMe,
|
|
};
|
|
}
|
|
}
|