import type { ExecutionEngine } from "@executor/execution"; export const withExecutionUsageTracking = ( organizationId: string, engine: ExecutionEngine, trackUsage: (organizationId: string) => void,): ExecutionEngine => ({ execute: async (code, options) => { const result = await engine.execute(code, options); trackUsage(organizationId); return result; }, executeWithPause: async (code) => { const result = await engine.executeWithPause(code); trackUsage(organizationId); return result; }, resume: async (executionId, response) => { const result = await engine.resume(executionId, response); // resume doesn't count as usage return result; }, getDescription: engine.getDescription,});
import type { ExecutionEngine } from "@executor/execution";
export const withExecutionUsageTracking = (
organizationId: string,
engine: ExecutionEngine,
trackUsage: (organizationId: string) => void,
): ExecutionEngine => ({
execute: async (code, options) => {
const result = await engine.execute(code, options);
trackUsage(organizationId);
return result;
},
executeWithPause: async (code) => {
const result = await engine.executeWithPause(code);
trackUsage(organizationId);
return result;
},
resume: async (executionId, response) => {
const result = await engine.resume(executionId, response);
// resume doesn't count as usage
return result;
},
getDescription: engine.getDescription,
});