Files
letta-server/sandbox/resources/server/entrypoint.ts
2025-08-12 15:39:17 -07:00

42 lines
1.3 KiB
TypeScript

import * as userModule from "./user-function.js";
/**
* Entrypoint for the user function.
* Dynamically finds and executes the exported TypeScript function.
*
* @param encoded_input - JSON encoded input
*/
export function runUserFunction(encoded_input: string): { result: any; error?: string } {
try {
const input = JSON.parse(encoded_input);
// Find the first exported function from the user module
const functionNames = Object.keys(userModule).filter(
key => typeof userModule[key] === 'function'
);
if (functionNames.length === 0) {
return {
result: null,
error: "No exported function found in user-function.ts"
};
}
// Use the first exported function (TypeScript tools should only export one)
const functionName = functionNames[0];
const userFunction = userModule[functionName];
// Call the function with the provided arguments
// The arguments are passed as an object, so we need to extract them
// in the order expected by the function
const result = userFunction(...Object.values(input));
return { result };
} catch (error) {
// Return error information for debugging
return {
result: null,
error: error instanceof Error ? error.message : String(error)
};
}
}