Skip to main content

CrewAI Adapter Example

async function finalizeCrewTask(taskCtx: CrewTaskContext) {
const crewResult = await runCrew(taskCtx);

const envelope = mapEnvelope(taskCtx);
const evidence = normalizeCrewEvidence(crewResult.steps);
const verification = runVerifier(envelope, evidence);

if (!verification.required_checks_passed) {
return failSafe('VERIFICATION_FAILED', verification.reason_codes);
}

const gate = runPolicyGate({
envelope,
verification,
action: taskCtx.action,
resource: taskCtx.resource,
writeRisk: taskCtx.writeRisk,
approvalToken: taskCtx.approvalToken,
});

if (gate.decision !== 'allow') {
return failSafe('POLICY_BLOCKED', gate.reasons);
}

return deliver(crewResult.output);
}

Reference fixture: