mirror of
https://github.com/google-gemini/gemini-cli.git
synced 2026-03-11 14:40:52 -07:00
66 lines
2.0 KiB
TypeScript
66 lines
2.0 KiB
TypeScript
/**
|
|
* @license
|
|
* Copyright 2026 Google LLC
|
|
* SPDX-License-Identifier: Apache-2.0
|
|
*/
|
|
|
|
import { SettingScope } from '../config/settings.js';
|
|
import type { AgentActionResult } from './agentSettings.js';
|
|
|
|
/**
|
|
* Shared logic for building the core agent action message while allowing the
|
|
* caller to control how each scope and its path are rendered (e.g., bolding or
|
|
* dimming).
|
|
*
|
|
* This function ONLY returns the description of what happened. It is up to the
|
|
* caller to append any interface-specific guidance.
|
|
*/
|
|
export function renderAgentActionFeedback(
|
|
result: AgentActionResult,
|
|
formatScope: (label: string, path: string) => string,
|
|
): string {
|
|
const { agentName, action, status, error } = result;
|
|
|
|
if (status === 'error') {
|
|
return (
|
|
error ||
|
|
`An error occurred while attempting to ${action} agent "${agentName}".`
|
|
);
|
|
}
|
|
|
|
if (status === 'no-op') {
|
|
return `Agent "${agentName}" is already ${action === 'enable' ? 'enabled' : 'disabled'}.`;
|
|
}
|
|
|
|
const isEnable = action === 'enable';
|
|
const actionVerb = isEnable ? 'enabled' : 'disabled';
|
|
const preposition = isEnable
|
|
? 'by setting it to enabled in'
|
|
: 'by setting it to disabled in';
|
|
|
|
const formatScopeItem = (s: { scope: SettingScope; path: string }) => {
|
|
const label =
|
|
s.scope === SettingScope.Workspace ? 'project' : s.scope.toLowerCase();
|
|
return formatScope(label, s.path);
|
|
};
|
|
|
|
const totalAffectedScopes = [
|
|
...result.modifiedScopes,
|
|
...result.alreadyInStateScopes,
|
|
];
|
|
|
|
if (totalAffectedScopes.length === 2) {
|
|
const s1 = formatScopeItem(totalAffectedScopes[0]);
|
|
const s2 = formatScopeItem(totalAffectedScopes[1]);
|
|
|
|
if (isEnable) {
|
|
return `Agent "${agentName}" ${actionVerb} ${preposition} ${s1} and ${s2} settings.`;
|
|
} else {
|
|
return `Agent "${agentName}" is now disabled in both ${s1} and ${s2} settings.`;
|
|
}
|
|
}
|
|
|
|
const s = formatScopeItem(totalAffectedScopes[0]);
|
|
return `Agent "${agentName}" ${actionVerb} ${preposition} ${s} settings.`;
|
|
}
|