sanitizeChatPermissionReviewResult function

ChatPermissionReviewResult sanitizeChatPermissionReviewResult(
  1. ChatPermissionReviewResult result, {
  2. ChatInputBudget inputBudget = const acp.ChatInputBudget(),
  3. 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();
  }
}