@better-auth-ui/core
Version:
Authentication components and data utilities for [Better Auth](https://better-auth.com), available for React and Solid.
50 lines (43 loc) • 1.55 kB
text/typescript
import type { MutationOptions } from "@tanstack/query-core"
import type {
AgentApprovalDecision,
AgentAuthAdapter
} from "./agent-auth-adapter"
import { agentAuthQueryKeys } from "./agent-auth-query-options"
export const agentAuthMutationKeys = {
approve: ["auth", "agent-auth", "approve"] as const,
deny: ["auth", "agent-auth", "deny"] as const,
revoke: ["auth", "agent-auth", "revoke"] as const
} as const
const meta = (userId?: string) => ({
awaits: [agentAuthQueryKeys.all(userId)]
})
export const approveAgentOptions = (
adapter: AgentAuthAdapter,
userId?: string
) =>
({
mutationKey: agentAuthMutationKeys.approve,
mutationFn: (decision: AgentApprovalDecision) => adapter.approve(decision),
meta: meta(userId)
}) satisfies MutationOptions<void, Error, AgentApprovalDecision>
export const denyAgentOptions = (adapter: AgentAuthAdapter, userId?: string) =>
({
mutationKey: agentAuthMutationKeys.deny,
mutationFn: (decision: AgentApprovalDecision) => adapter.deny(decision),
meta: meta(userId)
}) satisfies MutationOptions<void, Error, AgentApprovalDecision>
export type RevokeAgentCapability = {
agentId: string
capability: string
}
export const revokeAgentCapabilityOptions = (
adapter: AgentAuthAdapter,
userId?: string
) =>
({
mutationKey: agentAuthMutationKeys.revoke,
mutationFn: ({ agentId, capability }: RevokeAgentCapability) =>
adapter.revoke(agentId, [capability]),
meta: meta(userId)
}) satisfies MutationOptions<void, Error, RevokeAgentCapability>