daggerai
Version:
A simple and powerful Typescript based agent framework to help businesses thrive in the AI Agent revolution.
98 lines • 3.64 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.convertZodSchemaToJson = exports.removeDiacritics = exports.dedent = exports.logWithColor = exports.convertToXmlTag = exports.interpolateVariablesIntoPrompt = void 0;
const zod_1 = require("zod");
function interpolateVariablesIntoPrompt(prompt, variables) {
const keys = Object.keys(variables);
const values = Object.values(variables);
return keys.reduce((acc, key, index) => {
const value = values[index];
return acc.replaceAll(`{${key}}`, value);
}, prompt);
}
exports.interpolateVariablesIntoPrompt = interpolateVariablesIntoPrompt;
function convertToXmlTag(label, content) {
const specialCharsRegex = /[^a-zA-Z0-9_]/g;
const sanitizedLabel = label.replace(specialCharsRegex, '_').toLowerCase();
return `<${sanitizedLabel}>${content}</${sanitizedLabel}>`;
}
exports.convertToXmlTag = convertToXmlTag;
function logWithColor(message, color) {
const reset = '\x1b[0m';
let bgColor = reset;
switch (color) {
case 'green':
bgColor = '\x1b[32m';
break;
case 'yellow':
bgColor = '\x1b[33m';
break;
case 'red':
bgColor = '\x1b[31m';
break;
case 'blue':
bgColor = '\x1b[34m'; // Blue text
break;
case 'magenta':
bgColor = '\x1b[35m'; // Magenta text
break;
case 'cyan':
bgColor = '\x1b[36m'; // Cyan text
break;
}
console.log(`${bgColor}%s${reset}`, message);
}
exports.logWithColor = logWithColor;
function dedent(strings, ...values) {
const combined = strings.reduce((result, str, i) => {
return result + (values[i - 1] || '') + str;
}, '');
const lines = combined.split('\n');
const minIndent = lines
.filter(line => line.trim().length > 0) // Ignore empty lines
.reduce((minIndent, line) => {
const indent = line.match(/^\s*/)[0].length; // Get the leading whitespace
return indent < minIndent ? indent : minIndent;
}, Infinity);
const dedented = lines.map(line => line.slice(minIndent));
return dedented.join('\n');
}
exports.dedent = dedent;
const removeDiacritics = (text) => {
const a = 'àáäâãèéëêìíïîòóöôùúüûñçßÿœæŕśńṕẃǵǹḿǘẍźḧ·/_,:;';
const b = 'aaaaaeeeeiiiioooouuuuncsyoarsnpwgnmuxzh , ';
const p = new RegExp(a.split('').join('|'), 'g');
return text
.toString()
.toLowerCase()
.trim()
.replace(p, c => b.charAt(a.indexOf(c)))
.replace("'", '');
};
exports.removeDiacritics = removeDiacritics;
const convertZodSchemaToJson = (schema) => {
const defDescription = schema._def.description || '';
const description = defDescription ? ` (${defDescription})` : '';
if (schema instanceof zod_1.z.ZodObject) {
const shape = schema.shape;
const objectSchema = {};
for (const key in shape) {
objectSchema[key] = (0, exports.convertZodSchemaToJson)(shape[key]);
}
return objectSchema;
}
else if (schema instanceof zod_1.z.ZodString) {
return `string${description}`;
}
else if (schema instanceof zod_1.z.ZodNumber) {
return `string${description}`;
}
else if (schema instanceof zod_1.z.ZodArray) {
return `${(0, exports.convertZodSchemaToJson)(schema.element)}[]${description}`;
}
else {
return 'unknown';
}
};
exports.convertZodSchemaToJson = convertZodSchemaToJson;
//# sourceMappingURL=helpers.js.map