getAttributionTexts function
AttributionTexts
getAttributionTexts({
- required String? userType,
- required bool isUndercover(),
- required String getClientType(),
- required String? remoteSessionId,
- required String? ingressUrl,
- required bool isRemoteSessionLocal(),
- required String getRemoteSessionUrl(),
- required String getMainLoopModel(),
- required String? getPublicModelDisplayName(),
- required String getPublicModelName(),
- required bool isInternalModelRepoCached(),
- required AttributionSettings getInitialSettings(),
- required bool isDisableCoAuthoredBy(),
Returns attribution text for commits and PRs based on user settings.
Handles:
- Dynamic model name via getPublicModelName()
- Custom attribution settings (settings.attribution.commit/pr)
- Backward compatibility with deprecated includeCoAuthoredBy setting
- Remote mode: returns session URL for attribution
Implementation
AttributionTexts getAttributionTexts({
required String? userType,
required bool Function() isUndercover,
required String Function() getClientType,
required String? remoteSessionId,
required String? ingressUrl,
required bool Function(String, String?) isRemoteSessionLocal,
required String Function(String, String?) getRemoteSessionUrl,
required String Function() getMainLoopModel,
required String? Function(String) getPublicModelDisplayName,
required String Function(String) getPublicModelName,
required bool Function() isInternalModelRepoCached,
required AttributionSettings Function() getInitialSettings,
required bool Function() isDisableCoAuthoredBy,
}) {
if (userType == 'ant' && isUndercover()) {
return const AttributionTexts(commit: '', pr: '');
}
if (getClientType() == 'remote') {
if (remoteSessionId != null) {
// Skip for local dev - URLs won't persist.
if (!isRemoteSessionLocal(remoteSessionId, ingressUrl)) {
final sessionUrl = getRemoteSessionUrl(remoteSessionId, ingressUrl);
return AttributionTexts(commit: sessionUrl, pr: sessionUrl);
}
}
return const AttributionTexts(commit: '', pr: '');
}
// @[MODEL LAUNCH]: Update the hardcoded fallback model name below.
final model = getMainLoopModel();
final isKnownPublicModel = getPublicModelDisplayName(model) != null;
final modelName = isInternalModelRepoCached() || isKnownPublicModel
? getPublicModelName(model)
: 'Neomage Opus 4.6';
const defaultAttribution =
'Generated with [Neomage](https://github.com/Open-Neom/neomage)';
final defaultCommit = isDisableCoAuthoredBy()
? ''
: 'Co-Authored-By: $modelName <noreply@anthropic.com>';
final settings = getInitialSettings();
// New attribution setting takes precedence over deprecated
// includeCoAuthoredBy.
if (settings.attribution != null) {
return AttributionTexts(
commit: settings.attribution!.commit ?? defaultCommit,
pr: settings.attribution!.pr ?? defaultAttribution,
);
}
// Backward compatibility: deprecated includeCoAuthoredBy setting.
if (settings.includeCoAuthoredBy == false) {
return const AttributionTexts(commit: '', pr: '');
}
return AttributionTexts(commit: defaultCommit, pr: defaultAttribution);
}