contentFingerprint property

String get contentFingerprint

Implementation

String get contentFingerprint {
  final retainedFingerprint = _contentFingerprintOverride;
  if (retainedFingerprint != null && retainedFingerprint.isNotEmpty) {
    return retainedFingerprint;
  }
  final content = <String, Object?>{
    'title': title.trim(),
    'rationale': rationale.trim(),
    'sessionId': sessionId.trim(),
    'toolName': toolName.trim(),
    if (toolKind?.trim().isNotEmpty == true) 'toolKind': toolKind!.trim(),
    'options': options.map((option) => option.trim()).toList(growable: false),
    'choices': choices
        .map(
          (choice) => <String, Object?>{
            'optionId': choice.optionId.trim(),
            'name': choice.name.trim(),
            if (choice.kind?.trim().isNotEmpty == true)
              'kind': choice.kind!.trim(),
          },
        )
        .toList(growable: false),
    'metadata': _canonicalPermissionValue(metadata),
    if (transientPolicyContextFingerprint.isNotEmpty)
      'transientPolicyContextHash': transientPolicyContextFingerprint,
  };
  return sha256.convert(utf8.encode(jsonEncode(content))).toString();
}