mirror of
https://github.com/n8n-io/n8n.git
synced 2026-07-29 12:05:04 +02:00
22 lines
767 B
TypeScript
22 lines
767 B
TypeScript
import type { INode } from './interfaces';
|
|
|
|
const MAX_TOOL_NAME_LENGTH = 64;
|
|
|
|
/**
|
|
* Converts a node name to a valid tool name by replacing special characters with underscores,
|
|
* collapsing consecutive underscores into a single one, and truncating to 64 characters
|
|
* (which is the maximum length allowed by OpenAI's API).
|
|
*/
|
|
export function nodeNameToToolName(nodeOrName: INode | string): string {
|
|
const name = typeof nodeOrName === 'string' ? nodeOrName : nodeOrName.name;
|
|
let toolName = name.replace(/[^a-zA-Z0-9_-]+/g, '_');
|
|
|
|
if (toolName.length > MAX_TOOL_NAME_LENGTH) {
|
|
toolName = toolName.slice(0, MAX_TOOL_NAME_LENGTH);
|
|
// Remove trailing underscore or hyphen left from truncation
|
|
toolName = toolName.replace(/[_-]+$/, '');
|
|
}
|
|
|
|
return toolName;
|
|
}
|