@pompeii-labs/magma
Version:
The Typescript framework to build AI agents quickly and easily
100 lines (95 loc) • 3.05 kB
JavaScript
;
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;