sanitizeChatPermissionReviewResult function
ChatPermissionReviewResult
sanitizeChatPermissionReviewResult(
- ChatPermissionReviewResult result, {
- ChatInputBudget inputBudget = const acp.ChatInputBudget(),
- int maxEncodedBytes = defaultPermissionReviewResultEncodedByteLimit,
Implementation
ChatPermissionReviewResult sanitizeChatPermissionReviewResult(
ChatPermissionReviewResult result, {
acp.ChatInputBudget inputBudget = const acp.ChatInputBudget(),
int maxEncodedBytes = defaultPermissionReviewResultEncodedByteLimit,
}) {
inputBudget.validate();
if (maxEncodedBytes < minimumPermissionReviewResultEncodedByteLimit) {
throw ArgumentError.value(
maxEncodedBytes,
'maxEncodedBytes',
'must be at least $minimumPermissionReviewResultEncodedByteLimit',
);
}
try {
final guard = acp.ChatStructuredUpdateGuard(
budget: inputBudget,
resource: 'permission review result',
);
final copied = guard.copyMetadata(result.toJson(), field: 'value');
if (_encodedJsonBytes(copied) > maxEncodedBytes) {
return _permissionReviewSizeOmission();
}
return ChatPermissionReviewResult(
decision: result.decision,
risk: copied['risk'] as String? ?? '',
rationale: copied['rationale'] as String? ?? '',
reviewer: copied['reviewer'] as String? ?? '',
model: copied['model'] as String?,
details:
copied['details'] as Map<String, Object?>? ??
const <String, Object?>{},
);
} on Object {
return _permissionReviewSizeOmission();
}
}