UNPKG

daggerai

Version:

A simple and powerful Typescript based agent framework to help businesses thrive in the AI Agent revolution.

98 lines 3.64 kB
"use strict"; 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