Documentation / @agentick/core / createGuard
Function: createGuard() ​
Call Signature ​
createGuard(
fn):Middleware
Defined in: kernel/src/guard.ts:69
Create a guard middleware from a predicate function.
The guard runs before the procedure handler:
- If the fn returns
true, execution continues. - If the fn returns
false, aGuardErroris thrown (using config for the message). - If the fn throws a
GuardError, it propagates directly (full control).
Parameters ​
fn ​
Returns ​
Examples ​
typescript
const adminOnly = createGuard(
(envelope) => envelope.context.user?.roles?.includes("admin") ?? false,
);typescript
const roleGuard = createGuard({
name: "role-guard",
guardType: "role",
reason: (envelope) => `User ${envelope.context.user?.id} lacks required role`,
}, (envelope) => {
return envelope.context.user?.roles?.includes("admin") ?? false;
});typescript
const roleGuard = createGuard({ name: "role-guard" }, (envelope) => {
const userRoles = envelope.context.user?.roles ?? [];
const required = ["admin", "moderator"];
if (!required.some(r => userRoles.includes(r))) {
throw GuardError.role(required);
}
return true;
});Call Signature ​
createGuard(
config,fn):Middleware
Defined in: kernel/src/guard.ts:70
Create a guard middleware from a predicate function.
The guard runs before the procedure handler:
- If the fn returns
true, execution continues. - If the fn returns
false, aGuardErroris thrown (using config for the message). - If the fn throws a
GuardError, it propagates directly (full control).
Parameters ​
config ​
fn ​
Returns ​
Examples ​
typescript
const adminOnly = createGuard(
(envelope) => envelope.context.user?.roles?.includes("admin") ?? false,
);typescript
const roleGuard = createGuard({
name: "role-guard",
guardType: "role",
reason: (envelope) => `User ${envelope.context.user?.id} lacks required role`,
}, (envelope) => {
return envelope.context.user?.roles?.includes("admin") ?? false;
});typescript
const roleGuard = createGuard({ name: "role-guard" }, (envelope) => {
const userRoles = envelope.context.user?.roles ?? [];
const required = ["admin", "moderator"];
if (!required.some(r => userRoles.includes(r))) {
throw GuardError.role(required);
}
return true;
});