UNPKG

@pompeii-labs/magma

Version:

The Typescript framework to build AI agents quickly and easily

100 lines (95 loc) 3.05 kB
'use strict'; var nodeCron = require('node-cron'); var __defProp = Object.defineProperty; var __name = (target, value) => __defProp(target, "name", { value, configurable: true }); // src/types/utilities/middleware.ts var MagmaMiddlewareTriggers = [ "onCompletion", "preCompletion", "onToolExecution", "preToolExecution", "onMainFinish" ]; function tool(args) { return function(target, propertyKey, descriptor) { var _a; if (!descriptor.value) { throw new Error("Tool decorator must be used on a function"); } descriptor.value._toolInfo = { name: (_a = args.name) != null ? _a : propertyKey, description: args.description, cache: args.cache, enabled: args.enabled }; }; } __name(tool, "tool"); function toolparam(args) { return function(target, propertyKey, descriptor) { var _a, _b; if (!descriptor.value) { throw new Error("Tool decorator must be used on a function"); } if (!descriptor.value._methodName) { descriptor.value._methodName = propertyKey; } (_b = (_a = descriptor.value)._parameterInfo) != null ? _b : _a._parameterInfo = []; descriptor.value._parameterInfo.push(args); }; } __name(toolparam, "toolparam"); function middleware(trigger, options = {}) { return function(target, propertyKey, descriptor) { var _a, _b; if (!trigger) { throw new Error("Middleware trigger is required"); } if (!MagmaMiddlewareTriggers.includes(trigger)) { throw new Error(`Invalid middleware trigger - ${trigger}`); } if (!descriptor.value) { throw new Error("Middleware decorator must be used on a function"); } descriptor.value._middlewareTrigger = trigger; if ("critical" in options) { descriptor.value._critical = options.critical; } (_b = (_a = descriptor.value)._critical) != null ? _b : _a._critical = true; descriptor.value._order = options.order; descriptor.value._name = propertyKey; descriptor.value._id = Math.random().toString(36).substring(2, 15); return descriptor; }; } __name(middleware, "middleware"); function hook(hookName, options = {}) { return function(target, propertyKey, descriptor) { if (!descriptor.value) { throw new Error("Hook decorator must be used on a function"); } descriptor.value._hookName = hookName; descriptor.value._session = options.session; descriptor.value._description = options.description; descriptor.value._setup = options.setup; }; } __name(hook, "hook"); function job(cron, options = {}) { if (!nodeCron.validate(cron)) { throw new Error(`Invalid cron expression - ${cron}`); } return function(target, propertyKey, descriptor) { if (!descriptor.value) { throw new Error("Job decorator must be used on a function"); } descriptor.value._schedule = cron; descriptor.value._options = options; }; } __name(job, "job"); exports.hook = hook; exports.job = job; exports.middleware = middleware; exports.tool = tool; exports.toolparam = toolparam;