mirror of
https://github.com/twentyhq/twenty
synced 2026-04-21 21:47:38 +00:00
## Summary This PR enables serverless functions to be exposed as AI tools, allowing them to be used by AI agents. ### Changes - Added new `SERVERLESS_FUNCTION` tool category - Added `toolDescription`, `toolInputSchema`, and `toolOutputSchema` fields to serverless functions - Created database migration for the new schema columns - Added tool index query and resolver for fetching available tools - Added Settings AI page tabs (Skills, Tools, Settings) with new tools table - Added utility to convert tool schema to JSON schema format - Updated frontend to display tools in the settings page ### Implementation Details - Serverless functions can now define tool metadata (description, input/output schemas) - These functions are automatically registered in the tool registry - The tool index endpoint allows querying available tools with their schemas - Settings page now has a dedicated Tools tab showing all available tools
20 lines
570 B
TypeScript
20 lines
570 B
TypeScript
import { isDefined } from 'twenty-shared/utils';
|
|
|
|
export const getToolInputSchemaFromSourceCode = async (
|
|
sourceCode: string,
|
|
): Promise<object | null> => {
|
|
const { getFunctionInputSchema } = await import('./getFunctionInputSchema');
|
|
const inputSchema = getFunctionInputSchema(sourceCode);
|
|
|
|
// Serverless functions take a single params object
|
|
const firstParam = inputSchema[0];
|
|
|
|
if (firstParam?.type === 'object' && isDefined(firstParam.properties)) {
|
|
return {
|
|
type: 'object',
|
|
properties: firstParam.properties,
|
|
};
|
|
}
|
|
|
|
return null;
|
|
};
|