(
tool: Pick<ToolConfig, 'description' | 'hosting' | 'id' | 'name'>,
options?: {
isHosted?: boolean
fallbackName?: string
appendEmailTagline?: boolean
}
)
| 6 | const EMAIL_TAGLINE_TOOL_IDS = new Set(['gmail_send', 'gmail_send_v2', 'outlook_send']) |
| 7 | |
| 8 | export function getCopilotToolDescription( |
| 9 | tool: Pick<ToolConfig, 'description' | 'hosting' | 'id' | 'name'>, |
| 10 | options?: { |
| 11 | isHosted?: boolean |
| 12 | fallbackName?: string |
| 13 | appendEmailTagline?: boolean |
| 14 | } |
| 15 | ): string { |
| 16 | const baseDescription = tool.description || tool.name || options?.fallbackName || '' |
| 17 | const notes: string[] = [] |
| 18 | |
| 19 | if (options?.isHosted && tool.hosting && !baseDescription.includes(HOSTED_API_KEY_NOTE)) { |
| 20 | notes.push(HOSTED_API_KEY_NOTE) |
| 21 | } |
| 22 | |
| 23 | if ( |
| 24 | options?.appendEmailTagline && |
| 25 | EMAIL_TAGLINE_TOOL_IDS.has(tool.id) && |
| 26 | !baseDescription.includes(EMAIL_TAGLINE_NOTE) |
| 27 | ) { |
| 28 | notes.push(EMAIL_TAGLINE_NOTE) |
| 29 | } |
| 30 | |
| 31 | if (notes.length === 0) { |
| 32 | return baseDescription |
| 33 | } |
| 34 | |
| 35 | return [baseDescription, ...notes].filter(Boolean).join(' ') |
| 36 | } |
no test coverage detected