@wundr.io/prompt-templates 1.0.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/dist/engine.js ADDED
@@ -0,0 +1,506 @@
1
+ "use strict";
2
+ /**
3
+ * @wundr/prompt-templates - PromptTemplateEngine for dynamic prompt rendering
4
+ */
5
+ var __importDefault = (this && this.__importDefault) || function (mod) {
6
+ return (mod && mod.__esModule) ? mod : { "default": mod };
7
+ };
8
+ Object.defineProperty(exports, "__esModule", { value: true });
9
+ exports.PromptTemplateEngine = void 0;
10
+ exports.createEngine = createEngine;
11
+ const handlebars_1 = __importDefault(require("handlebars"));
12
+ const helpers_js_1 = require("./helpers.js");
13
+ const loader_js_1 = require("./loader.js");
14
+ const macros_js_1 = require("./macros.js");
15
+ /**
16
+ * Default render options
17
+ */
18
+ const DEFAULT_RENDER_OPTIONS = {
19
+ strict: false,
20
+ delimiters: ['{{', '}}'],
21
+ escapeHtml: false,
22
+ maxDepth: 10,
23
+ timeout: 5000,
24
+ };
25
+ /**
26
+ * PromptTemplateEngine provides Jinja2-style templating using Handlebars
27
+ */
28
+ class PromptTemplateEngine {
29
+ handlebars;
30
+ templates = new Map();
31
+ templateConfigs = new Map();
32
+ macros = new Map();
33
+ customHelpers = new Map();
34
+ eventHandlers = new Map();
35
+ loader;
36
+ defaultOptions;
37
+ /**
38
+ * Create a new PromptTemplateEngine
39
+ *
40
+ * @param options - Default render options
41
+ * @param loaderBaseDir - Base directory for template loading
42
+ */
43
+ constructor(options, loaderBaseDir) {
44
+ this.handlebars = handlebars_1.default.create();
45
+ this.defaultOptions = { ...DEFAULT_RENDER_OPTIONS, ...options };
46
+ this.loader = (0, loader_js_1.createLoader)({ baseDir: loaderBaseDir });
47
+ // Disable HTML escaping by default for prompts
48
+ if (!this.defaultOptions.escapeHtml) {
49
+ this.handlebars.Utils.escapeExpression = (str) => str;
50
+ }
51
+ // Register built-in helpers
52
+ this.registerBuiltinHelpers();
53
+ // Register built-in macros
54
+ this.registerBuiltinMacros();
55
+ }
56
+ /**
57
+ * Render a template string with the given context
58
+ *
59
+ * @param template - Template string or template ID
60
+ * @param context - Context data for rendering
61
+ * @param options - Render options
62
+ * @returns Render result with output or error
63
+ */
64
+ render(template, context = { variables: {} }, options) {
65
+ const startTime = Date.now();
66
+ const _mergedOptions = { ...this.defaultOptions, ...options };
67
+ try {
68
+ // Check if this is a template ID
69
+ const compiledTemplate = this.getOrCompileTemplate(template);
70
+ // Prepare context with system defaults
71
+ const preparedContext = this.prepareContext(context);
72
+ // Render the template
73
+ const output = compiledTemplate(preparedContext);
74
+ const metadata = {
75
+ renderTime: Date.now() - startTime,
76
+ templateId: this.templateConfigs.has(template) ? template : undefined,
77
+ };
78
+ this.emit('template:rendered', {
79
+ templateId: metadata.templateId || 'inline',
80
+ renderTime: metadata.renderTime,
81
+ });
82
+ return {
83
+ success: true,
84
+ output,
85
+ metadata,
86
+ };
87
+ }
88
+ catch (error) {
89
+ const templateError = this.createTemplateError(error, template);
90
+ this.emit('template:error', {
91
+ templateId: template,
92
+ error: templateError,
93
+ });
94
+ return {
95
+ success: false,
96
+ error: templateError,
97
+ metadata: {
98
+ renderTime: Date.now() - startTime,
99
+ },
100
+ };
101
+ }
102
+ }
103
+ /**
104
+ * Render a template asynchronously (useful for timeout support)
105
+ *
106
+ * @param template - Template string or template ID
107
+ * @param context - Context data for rendering
108
+ * @param options - Render options
109
+ * @returns Promise resolving to render result
110
+ */
111
+ async renderAsync(template, context = { variables: {} }, options) {
112
+ const mergedOptions = { ...this.defaultOptions, ...options };
113
+ return new Promise(resolve => {
114
+ const timeoutId = setTimeout(() => {
115
+ resolve({
116
+ success: false,
117
+ error: {
118
+ code: 'RENDER_TIMEOUT',
119
+ message: `Template rendering timed out after ${mergedOptions.timeout}ms`,
120
+ },
121
+ metadata: {
122
+ renderTime: mergedOptions.timeout,
123
+ },
124
+ });
125
+ }, mergedOptions.timeout);
126
+ try {
127
+ const result = this.render(template, context, options);
128
+ clearTimeout(timeoutId);
129
+ resolve(result);
130
+ }
131
+ catch (error) {
132
+ clearTimeout(timeoutId);
133
+ resolve({
134
+ success: false,
135
+ error: this.createTemplateError(error, template),
136
+ metadata: {
137
+ renderTime: Date.now(),
138
+ },
139
+ });
140
+ }
141
+ });
142
+ }
143
+ /**
144
+ * Register a template configuration
145
+ *
146
+ * @param config - Template configuration
147
+ * @returns The engine instance for chaining
148
+ */
149
+ registerTemplate(config) {
150
+ this.templateConfigs.set(config.id, config);
151
+ // Pre-compile the template
152
+ try {
153
+ const compiled = this.handlebars.compile(config.template);
154
+ this.templates.set(config.id, compiled);
155
+ this.emit('template:loaded', { templateId: config.id });
156
+ }
157
+ catch (error) {
158
+ const templateError = this.createTemplateError(error, config.id);
159
+ this.emit('template:error', {
160
+ templateId: config.id,
161
+ error: templateError,
162
+ });
163
+ throw error;
164
+ }
165
+ return this;
166
+ }
167
+ /**
168
+ * Load and register a template from file
169
+ *
170
+ * @param templatePath - Path to the template file
171
+ * @returns The engine instance for chaining
172
+ */
173
+ loadTemplate(templatePath) {
174
+ const config = this.loader.loadTemplate(templatePath);
175
+ return this.registerTemplate(config);
176
+ }
177
+ /**
178
+ * Load and register a template from file asynchronously
179
+ *
180
+ * @param templatePath - Path to the template file
181
+ * @returns Promise resolving to the engine instance
182
+ */
183
+ async loadTemplateAsync(templatePath) {
184
+ const config = await this.loader.loadTemplateAsync(templatePath);
185
+ return this.registerTemplate(config);
186
+ }
187
+ /**
188
+ * Register a custom macro
189
+ *
190
+ * @param macro - Macro definition
191
+ * @returns The engine instance for chaining
192
+ */
193
+ registerMacro(macro) {
194
+ this.macros.set(macro.name, macro);
195
+ // Register as a Handlebars partial
196
+ this.handlebars.registerPartial(macro.name, macro.template);
197
+ this.emit('macro:registered', { name: macro.name });
198
+ return this;
199
+ }
200
+ /**
201
+ * Register multiple macros
202
+ *
203
+ * @param macros - Array of macro definitions
204
+ * @returns The engine instance for chaining
205
+ */
206
+ registerMacros(macros) {
207
+ for (const macro of macros) {
208
+ this.registerMacro(macro);
209
+ }
210
+ return this;
211
+ }
212
+ /**
213
+ * Register a custom helper function
214
+ *
215
+ * @param name - Helper name
216
+ * @param fn - Helper function
217
+ * @param description - Optional description
218
+ * @returns The engine instance for chaining
219
+ */
220
+ registerHelper(name, fn, description) {
221
+ const helper = { name, fn, description };
222
+ this.customHelpers.set(name, helper);
223
+ this.handlebars.registerHelper(name, fn);
224
+ this.emit('helper:registered', { name });
225
+ return this;
226
+ }
227
+ /**
228
+ * Unregister a helper
229
+ *
230
+ * @param name - Helper name to remove
231
+ * @returns The engine instance for chaining
232
+ */
233
+ unregisterHelper(name) {
234
+ this.customHelpers.delete(name);
235
+ this.handlebars.unregisterHelper(name);
236
+ return this;
237
+ }
238
+ /**
239
+ * Get a registered template configuration
240
+ *
241
+ * @param id - Template ID
242
+ * @returns Template configuration or undefined
243
+ */
244
+ getTemplate(id) {
245
+ return this.templateConfigs.get(id);
246
+ }
247
+ /**
248
+ * Get all registered template IDs
249
+ *
250
+ * @returns Array of template IDs
251
+ */
252
+ getTemplateIds() {
253
+ return Array.from(this.templateConfigs.keys());
254
+ }
255
+ /**
256
+ * Get a registered macro
257
+ *
258
+ * @param name - Macro name
259
+ * @returns Macro definition or undefined
260
+ */
261
+ getMacro(name) {
262
+ return this.macros.get(name);
263
+ }
264
+ /**
265
+ * Get all registered macro names
266
+ *
267
+ * @returns Array of macro names
268
+ */
269
+ getMacroNames() {
270
+ return Array.from(this.macros.keys());
271
+ }
272
+ /**
273
+ * Get all registered helper names
274
+ *
275
+ * @returns Array of helper names
276
+ */
277
+ getHelperNames() {
278
+ return Array.from(this.customHelpers.keys());
279
+ }
280
+ /**
281
+ * Check if a template is registered
282
+ *
283
+ * @param id - Template ID
284
+ * @returns True if template is registered
285
+ */
286
+ hasTemplate(id) {
287
+ return this.templateConfigs.has(id);
288
+ }
289
+ /**
290
+ * Remove a registered template
291
+ *
292
+ * @param id - Template ID
293
+ * @returns True if template was removed
294
+ */
295
+ removeTemplate(id) {
296
+ const existed = this.templateConfigs.has(id);
297
+ this.templateConfigs.delete(id);
298
+ this.templates.delete(id);
299
+ return existed;
300
+ }
301
+ /**
302
+ * Clear all registered templates
303
+ */
304
+ clearTemplates() {
305
+ this.templateConfigs.clear();
306
+ this.templates.clear();
307
+ }
308
+ /**
309
+ * Add an event listener
310
+ *
311
+ * @param event - Event name
312
+ * @param handler - Event handler function
313
+ * @returns Function to remove the listener
314
+ */
315
+ on(event, handler) {
316
+ if (!this.eventHandlers.has(event)) {
317
+ this.eventHandlers.set(event, new Set());
318
+ }
319
+ const handlers = this.eventHandlers.get(event);
320
+ handlers?.add(handler);
321
+ return () => {
322
+ handlers?.delete(handler);
323
+ };
324
+ }
325
+ /**
326
+ * Get the underlying Handlebars instance (for advanced usage)
327
+ *
328
+ * @returns Handlebars instance
329
+ */
330
+ getHandlebars() {
331
+ return this.handlebars;
332
+ }
333
+ /**
334
+ * Get the template loader instance
335
+ *
336
+ * @returns Template loader
337
+ */
338
+ getLoader() {
339
+ return this.loader;
340
+ }
341
+ /**
342
+ * Register all built-in helpers
343
+ */
344
+ registerBuiltinHelpers() {
345
+ const helpers = (0, helpers_js_1.getBuiltinHelpers)();
346
+ for (const helper of helpers) {
347
+ this.handlebars.registerHelper(helper.name, helper.fn);
348
+ }
349
+ // Register additional Handlebars-style helpers
350
+ this.registerArithmeticHelpers();
351
+ this.registerLogicalHelpers();
352
+ }
353
+ /**
354
+ * Register built-in macros as partials
355
+ */
356
+ registerBuiltinMacros() {
357
+ const macros = (0, macros_js_1.getBuiltinMacros)();
358
+ for (const macro of macros) {
359
+ this.macros.set(macro.name, macro);
360
+ this.handlebars.registerPartial(macro.name, macro.template);
361
+ }
362
+ }
363
+ /**
364
+ * Register arithmetic helpers
365
+ */
366
+ registerArithmeticHelpers() {
367
+ this.handlebars.registerHelper('add', (a, b) => a + b);
368
+ this.handlebars.registerHelper('subtract', (a, b) => a - b);
369
+ this.handlebars.registerHelper('multiply', (a, b) => a * b);
370
+ this.handlebars.registerHelper('divide', (a, b) => b !== 0 ? a / b : 0);
371
+ this.handlebars.registerHelper('mod', (a, b) => b !== 0 ? a % b : 0);
372
+ this.handlebars.registerHelper('abs', (a) => Math.abs(a));
373
+ this.handlebars.registerHelper('ceil', (a) => Math.ceil(a));
374
+ this.handlebars.registerHelper('floor', (a) => Math.floor(a));
375
+ this.handlebars.registerHelper('round', (a) => Math.round(a));
376
+ }
377
+ /**
378
+ * Register logical helpers
379
+ */
380
+ registerLogicalHelpers() {
381
+ this.handlebars.registerHelper('and', function (...args) {
382
+ const options = args.pop();
383
+ const values = args;
384
+ const result = values.every(Boolean);
385
+ if (options?.fn) {
386
+ return result
387
+ ? options.fn(this)
388
+ : options.inverse
389
+ ? options.inverse(this)
390
+ : '';
391
+ }
392
+ return result;
393
+ });
394
+ this.handlebars.registerHelper('or', function (...args) {
395
+ const options = args.pop();
396
+ const values = args;
397
+ const result = values.some(Boolean);
398
+ if (options?.fn) {
399
+ return result
400
+ ? options.fn(this)
401
+ : options.inverse
402
+ ? options.inverse(this)
403
+ : '';
404
+ }
405
+ return result;
406
+ });
407
+ this.handlebars.registerHelper('not', (value) => !value);
408
+ this.handlebars.registerHelper('eq', (a, b) => a === b);
409
+ this.handlebars.registerHelper('ne', (a, b) => a !== b);
410
+ this.handlebars.registerHelper('lt', (a, b) => a < b);
411
+ this.handlebars.registerHelper('lte', (a, b) => a <= b);
412
+ this.handlebars.registerHelper('gt', (a, b) => a > b);
413
+ this.handlebars.registerHelper('gte', (a, b) => a >= b);
414
+ // Helper to create arrays inline
415
+ this.handlebars.registerHelper('array', (...args) => {
416
+ args.pop(); // Remove options object
417
+ return args;
418
+ });
419
+ // Helper to create objects inline
420
+ this.handlebars.registerHelper('object', (options) => {
421
+ return options?.hash || {};
422
+ });
423
+ // Ternary helper
424
+ this.handlebars.registerHelper('ternary', (condition, ifTrue, ifFalse) => {
425
+ return condition ? ifTrue : ifFalse;
426
+ });
427
+ // Default value helper
428
+ this.handlebars.registerHelper('default', (value, defaultValue) => {
429
+ return value !== undefined && value !== null ? value : defaultValue;
430
+ });
431
+ }
432
+ /**
433
+ * Get or compile a template
434
+ */
435
+ getOrCompileTemplate(template) {
436
+ // Check if it's a registered template ID
437
+ const cached = this.templates.get(template);
438
+ if (cached) {
439
+ return cached;
440
+ }
441
+ // Compile as inline template
442
+ return this.handlebars.compile(template);
443
+ }
444
+ /**
445
+ * Prepare context with defaults and system values
446
+ */
447
+ prepareContext(context) {
448
+ const system = {
449
+ timestamp: new Date(),
450
+ ...context.system,
451
+ };
452
+ return {
453
+ ...context.variables,
454
+ system,
455
+ memory: context.memory,
456
+ tools: context.tools,
457
+ metadata: context.metadata,
458
+ };
459
+ }
460
+ /**
461
+ * Create a template error from an exception
462
+ */
463
+ createTemplateError(error, templateId) {
464
+ const errorMessage = error instanceof Error ? error.message : String(error);
465
+ const errorStack = error instanceof Error ? error.stack : undefined;
466
+ // Try to parse line/column from Handlebars error
467
+ const lineMatch = errorMessage.match(/line (\d+)/i);
468
+ const columnMatch = errorMessage.match(/column (\d+)/i);
469
+ return {
470
+ code: 'TEMPLATE_ERROR',
471
+ message: errorMessage,
472
+ line: lineMatch ? parseInt(lineMatch[1], 10) : undefined,
473
+ column: columnMatch ? parseInt(columnMatch[1], 10) : undefined,
474
+ templateId,
475
+ stack: errorStack,
476
+ };
477
+ }
478
+ /**
479
+ * Emit an event to all registered handlers
480
+ */
481
+ emit(event, data) {
482
+ const handlers = this.eventHandlers.get(event);
483
+ if (handlers) {
484
+ for (const handler of handlers) {
485
+ try {
486
+ handler(data);
487
+ }
488
+ catch {
489
+ // Ignore handler errors
490
+ }
491
+ }
492
+ }
493
+ }
494
+ }
495
+ exports.PromptTemplateEngine = PromptTemplateEngine;
496
+ /**
497
+ * Create a new PromptTemplateEngine instance
498
+ *
499
+ * @param options - Default render options
500
+ * @param loaderBaseDir - Base directory for template loading
501
+ * @returns Configured engine instance
502
+ */
503
+ function createEngine(options, loaderBaseDir) {
504
+ return new PromptTemplateEngine(options, loaderBaseDir);
505
+ }
506
+ //# sourceMappingURL=engine.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"engine.js","sourceRoot":"","sources":["../src/engine.ts"],"names":[],"mappings":"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"}