@hazeljs/prompts 0.2.4 → 0.3.1
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/__tests__/template.test.js +179 -0
- package/dist/__tests__/template.test.js.map +1 -1
- package/dist/index.d.ts +1 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js.map +1 -1
- package/dist/template.d.ts +38 -2
- package/dist/template.d.ts.map +1 -1
- package/dist/template.js +97 -3
- package/dist/template.js.map +1 -1
- package/package.json +2 -2
|
@@ -56,5 +56,184 @@ describe('PromptTemplate', () => {
|
|
|
56
56
|
expect(tpl.render({ defined: 'hello' })).toBe('hello {optional}');
|
|
57
57
|
});
|
|
58
58
|
});
|
|
59
|
+
describe('strict mode', () => {
|
|
60
|
+
it('should throw error when variable is missing in strict mode', () => {
|
|
61
|
+
const tpl = new template_1.PromptTemplate('Hello {name}!', { name: 'Test' });
|
|
62
|
+
expect(() => {
|
|
63
|
+
tpl.render({}, { strict: true });
|
|
64
|
+
}).toThrow('Missing required template variable');
|
|
65
|
+
});
|
|
66
|
+
it('should not throw in non-strict mode', () => {
|
|
67
|
+
const tpl = new template_1.PromptTemplate('Hello {name}!', { name: 'Test' });
|
|
68
|
+
expect(tpl.render({}, { strict: false })).toBe('Hello {name}!');
|
|
69
|
+
});
|
|
70
|
+
it('should allow undefined in non-strict mode by default', () => {
|
|
71
|
+
const tpl = new template_1.PromptTemplate('Hello {name}!', { name: 'Test' });
|
|
72
|
+
expect(tpl.render({})).toBe('Hello {name}!');
|
|
73
|
+
});
|
|
74
|
+
});
|
|
75
|
+
describe('conditionals {#if}', () => {
|
|
76
|
+
it('should render content when condition is true', () => {
|
|
77
|
+
const tpl = new template_1.PromptTemplate('{#if show}Visible{/if}', {
|
|
78
|
+
name: 'Conditional',
|
|
79
|
+
});
|
|
80
|
+
expect(tpl.render({ show: true })).toBe('Visible');
|
|
81
|
+
});
|
|
82
|
+
it('should not render content when condition is false', () => {
|
|
83
|
+
const tpl = new template_1.PromptTemplate('{#if show}Hidden{/if}', {
|
|
84
|
+
name: 'Conditional',
|
|
85
|
+
});
|
|
86
|
+
expect(tpl.render({ show: false })).toBe('');
|
|
87
|
+
});
|
|
88
|
+
it('should handle nested variables in conditional blocks', () => {
|
|
89
|
+
const tpl = new template_1.PromptTemplate('{#if show}Hello {name}!{/if}', { name: 'Conditional' });
|
|
90
|
+
expect(tpl.render({ show: true, name: 'World' })).toBe('Hello World!');
|
|
91
|
+
});
|
|
92
|
+
it('should handle multiple conditionals', () => {
|
|
93
|
+
const tpl = new template_1.PromptTemplate('{#if a}A{/if}{#if b}B{/if}', {
|
|
94
|
+
name: 'Multi',
|
|
95
|
+
});
|
|
96
|
+
expect(tpl.render({ a: true, b: false })).toBe('A');
|
|
97
|
+
expect(tpl.render({ a: false, b: true })).toBe('B');
|
|
98
|
+
expect(tpl.render({ a: true, b: true })).toBe('AB');
|
|
99
|
+
});
|
|
100
|
+
});
|
|
101
|
+
describe('loops {#each}', () => {
|
|
102
|
+
it('should iterate over array', () => {
|
|
103
|
+
const tpl = new template_1.PromptTemplate('{#each items}{.}{/each}', {
|
|
104
|
+
name: 'Loop',
|
|
105
|
+
});
|
|
106
|
+
expect(tpl.render({ items: ['a', 'b', 'c'] })).toBe('abc');
|
|
107
|
+
});
|
|
108
|
+
it('should handle empty arrays', () => {
|
|
109
|
+
const tpl = new template_1.PromptTemplate('{#each items}{.}{/each}', {
|
|
110
|
+
name: 'Loop',
|
|
111
|
+
});
|
|
112
|
+
expect(tpl.render({ items: [] })).toBe('');
|
|
113
|
+
});
|
|
114
|
+
it('should provide index in loops', () => {
|
|
115
|
+
const tpl = new template_1.PromptTemplate('{#each items}{@index}:{.} {/each}', {
|
|
116
|
+
name: 'Loop',
|
|
117
|
+
});
|
|
118
|
+
expect(tpl.render({ items: ['a', 'b'] })).toBe('0:a 1:b ');
|
|
119
|
+
});
|
|
120
|
+
it('should handle arrays with numbers', () => {
|
|
121
|
+
const tpl = new template_1.PromptTemplate('{#each nums}{.},{/each}', {
|
|
122
|
+
name: 'Loop',
|
|
123
|
+
});
|
|
124
|
+
expect(tpl.render({ nums: [1, 2, 3] })).toBe('1,2,3,');
|
|
125
|
+
});
|
|
126
|
+
});
|
|
127
|
+
describe('partials {@include}', () => {
|
|
128
|
+
it('should include partial templates', () => {
|
|
129
|
+
const partial = new template_1.PromptTemplate('Hello {name}!', { name: 'Greeting' });
|
|
130
|
+
const main = new template_1.PromptTemplate('Start {@include greeting} End', {
|
|
131
|
+
name: 'Main',
|
|
132
|
+
});
|
|
133
|
+
const includeResolver = (key) => {
|
|
134
|
+
if (key === 'greeting')
|
|
135
|
+
return partial.render({ name: 'World' });
|
|
136
|
+
return undefined;
|
|
137
|
+
};
|
|
138
|
+
const result = main.render({ name: 'World' }, { includeResolver });
|
|
139
|
+
expect(result).toBe('Start Hello World! End');
|
|
140
|
+
});
|
|
141
|
+
it('should handle missing partials gracefully', () => {
|
|
142
|
+
const tpl = new template_1.PromptTemplate('{@include missing}', {
|
|
143
|
+
name: 'Main',
|
|
144
|
+
});
|
|
145
|
+
expect(tpl.render({})).toBe('{@include missing}');
|
|
146
|
+
});
|
|
147
|
+
it('should pass variables to partials', () => {
|
|
148
|
+
const partial = new template_1.PromptTemplate('Value: {value}', { name: 'Partial' });
|
|
149
|
+
const main = new template_1.PromptTemplate('{@include part}', { name: 'Main' });
|
|
150
|
+
const includeResolver = (key) => {
|
|
151
|
+
if (key === 'part')
|
|
152
|
+
return partial.render({ value: 42 });
|
|
153
|
+
return undefined;
|
|
154
|
+
};
|
|
155
|
+
const result = main.render({ value: 42 }, { includeResolver });
|
|
156
|
+
expect(result).toBe('Value: 42');
|
|
157
|
+
});
|
|
158
|
+
});
|
|
159
|
+
describe('preview()', () => {
|
|
160
|
+
it('should generate preview with sample data and token estimate', () => {
|
|
161
|
+
const tpl = new template_1.PromptTemplate('Name: {name}, Age: {age}', {
|
|
162
|
+
name: 'Profile',
|
|
163
|
+
});
|
|
164
|
+
const preview = tpl.preview({ name: 'Alice', age: 30 });
|
|
165
|
+
expect(preview).toContain('Name: Alice, Age: 30');
|
|
166
|
+
expect(preview).toContain('Preview:');
|
|
167
|
+
expect(preview).toContain('tokens');
|
|
168
|
+
});
|
|
169
|
+
it('should work with conditionals in preview', () => {
|
|
170
|
+
const tpl = new template_1.PromptTemplate('{#if show}{msg}{/if}', {
|
|
171
|
+
name: 'Test',
|
|
172
|
+
});
|
|
173
|
+
const preview = tpl.preview({ show: true, msg: 'Hello' });
|
|
174
|
+
expect(preview).toContain('Hello');
|
|
175
|
+
expect(preview).toContain('Preview:');
|
|
176
|
+
});
|
|
177
|
+
it('should work with loops in preview', () => {
|
|
178
|
+
const tpl = new template_1.PromptTemplate('{#each items}{.} {/each}', {
|
|
179
|
+
name: 'Test',
|
|
180
|
+
});
|
|
181
|
+
const preview = tpl.preview({ items: [1, 2, 3] });
|
|
182
|
+
expect(preview).toContain('1 2 3');
|
|
183
|
+
expect(preview).toContain('Preview:');
|
|
184
|
+
});
|
|
185
|
+
});
|
|
186
|
+
describe('variables()', () => {
|
|
187
|
+
it('should extract simple variables', () => {
|
|
188
|
+
const tpl = new template_1.PromptTemplate('Hello {name}, you are {age} years old', { name: 'Test' });
|
|
189
|
+
const vars = tpl.variables();
|
|
190
|
+
expect(vars).toContain('name');
|
|
191
|
+
expect(vars).toContain('age');
|
|
192
|
+
expect(vars.length).toBe(2);
|
|
193
|
+
});
|
|
194
|
+
it('should extract variables from conditionals', () => {
|
|
195
|
+
const tpl = new template_1.PromptTemplate('{#if show}{msg}{/if}', {
|
|
196
|
+
name: 'Test',
|
|
197
|
+
});
|
|
198
|
+
const vars = tpl.variables();
|
|
199
|
+
expect(vars).toContain('show');
|
|
200
|
+
expect(vars).toContain('msg');
|
|
201
|
+
});
|
|
202
|
+
it('should extract variables from loops', () => {
|
|
203
|
+
const tpl = new template_1.PromptTemplate('{#each items}{item}{/each}', {
|
|
204
|
+
name: 'Test',
|
|
205
|
+
});
|
|
206
|
+
const vars = tpl.variables();
|
|
207
|
+
expect(vars).toContain('items');
|
|
208
|
+
});
|
|
209
|
+
it('should deduplicate variables', () => {
|
|
210
|
+
const tpl = new template_1.PromptTemplate('{name} and {name} again', { name: 'Test' });
|
|
211
|
+
const vars = tpl.variables();
|
|
212
|
+
expect(vars).toEqual(['name']);
|
|
213
|
+
});
|
|
214
|
+
it('should handle templates with no variables', () => {
|
|
215
|
+
const tpl = new template_1.PromptTemplate('Static text only', { name: 'Test' });
|
|
216
|
+
const vars = tpl.variables();
|
|
217
|
+
expect(vars).toEqual([]);
|
|
218
|
+
});
|
|
219
|
+
});
|
|
220
|
+
describe('complex scenarios', () => {
|
|
221
|
+
it('should handle nested conditionals and loops', () => {
|
|
222
|
+
const tpl = new template_1.PromptTemplate('{#if show}{#each items}- {.}\n{/each}{/if}', { name: 'Complex' });
|
|
223
|
+
expect(tpl.render({ show: true, items: ['a', 'b'] })).toBe('- a\n- b\n');
|
|
224
|
+
expect(tpl.render({ show: false, items: ['a', 'b'] })).toBe('');
|
|
225
|
+
});
|
|
226
|
+
it('should combine all features', () => {
|
|
227
|
+
const partial = new template_1.PromptTemplate('[{value}]', { name: 'Bracket' });
|
|
228
|
+
const tpl = new template_1.PromptTemplate('{#if show}{#each items}{@include bracket} {/each}{/if}', { name: 'All' });
|
|
229
|
+
const includeResolver = (key) => {
|
|
230
|
+
if (key === 'bracket')
|
|
231
|
+
return partial.render({ value: 'x' });
|
|
232
|
+
return undefined;
|
|
233
|
+
};
|
|
234
|
+
const result = tpl.render({ show: true, items: ['a', 'b'] }, { includeResolver });
|
|
235
|
+
expect(result).toContain('[');
|
|
236
|
+
});
|
|
237
|
+
});
|
|
59
238
|
});
|
|
60
239
|
//# sourceMappingURL=template.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template.test.js","sourceRoot":"","sources":["../../src/__tests__/template.test.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"template.test.js","sourceRoot":"","sources":["../../src/__tests__/template.test.ts"],"names":[],"mappings":"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"}
|
package/dist/index.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
export type { PromptMetadata } from './types';
|
|
2
2
|
export { PromptTemplate } from './template';
|
|
3
|
+
export type { RenderOptions } from './template';
|
|
3
4
|
export { PromptRegistry } from './registry';
|
|
4
5
|
export type { PromptEntry, PromptStore } from './stores/store.interface';
|
|
5
6
|
export { MemoryStore } from './stores/memory.store';
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAG5C,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,YAAY,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACrF,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,YAAY,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAC9C,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAC5C,YAAY,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAChD,OAAO,EAAE,cAAc,EAAE,MAAM,YAAY,CAAC;AAG5C,YAAY,EAAE,WAAW,EAAE,WAAW,EAAE,MAAM,0BAA0B,CAAC;AACzE,OAAO,EAAE,WAAW,EAAE,MAAM,uBAAuB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,MAAM,qBAAqB,CAAC;AAChD,YAAY,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAC5D,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAClD,YAAY,EAAE,YAAY,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAC5E,OAAO,EAAE,aAAa,EAAE,MAAM,yBAAyB,CAAC;AACxD,YAAY,EAAE,eAAe,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AACrF,OAAO,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC"}
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AACA,uCAA4C;AAAnC,0GAAA,cAAc,OAAA;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;AACA,uCAA4C;AAAnC,0GAAA,cAAc,OAAA;AAEvB,uCAA4C;AAAnC,0GAAA,cAAc,OAAA;AAIvB,sDAAoD;AAA3C,2GAAA,WAAW,OAAA;AACpB,kDAAgD;AAAvC,uGAAA,SAAS,OAAA;AAElB,oDAAkD;AAAzC,yGAAA,UAAU,OAAA;AAEnB,0DAAwD;AAA/C,+GAAA,aAAa,OAAA;AAEtB,oDAAkD;AAAzC,yGAAA,UAAU,OAAA"}
|
package/dist/template.d.ts
CHANGED
|
@@ -4,6 +4,12 @@
|
|
|
4
4
|
* A typed, reusable prompt template that interpolates named `{variable}`
|
|
5
5
|
* placeholders with caller-supplied values.
|
|
6
6
|
*
|
|
7
|
+
* Supports:
|
|
8
|
+
* - `{variable}` — simple substitution
|
|
9
|
+
* - `{#if variable}...{/if}` — conditional blocks
|
|
10
|
+
* - `{#each items}...{.}...{/each}` — iteration over arrays
|
|
11
|
+
* - `{@include key}` — include another prompt from the registry
|
|
12
|
+
*
|
|
7
13
|
* Usage:
|
|
8
14
|
* ```typescript
|
|
9
15
|
* const tpl = new PromptTemplate<{ query: string; context: string }>(
|
|
@@ -13,8 +19,28 @@
|
|
|
13
19
|
*
|
|
14
20
|
* const rendered = tpl.render({ query: 'What is TypeScript?', context: '...' });
|
|
15
21
|
* ```
|
|
22
|
+
*
|
|
23
|
+
* Strict mode:
|
|
24
|
+
* ```typescript
|
|
25
|
+
* tpl.render({ query: 'test' }, { strict: true });
|
|
26
|
+
* // throws: Missing required template variable: "context"
|
|
27
|
+
* ```
|
|
16
28
|
*/
|
|
17
29
|
import type { PromptMetadata } from './types';
|
|
30
|
+
export interface RenderOptions {
|
|
31
|
+
/**
|
|
32
|
+
* When `true`, throws if any `{variable}` placeholder has no matching key
|
|
33
|
+
* in the supplied variables object.
|
|
34
|
+
* @default false
|
|
35
|
+
*/
|
|
36
|
+
strict?: boolean;
|
|
37
|
+
/**
|
|
38
|
+
* Optional resolver for `{@include key}` directives.
|
|
39
|
+
* When not provided, `{@include ...}` blocks are left as-is.
|
|
40
|
+
* The PromptRegistry sets this automatically when calling `render()` through it.
|
|
41
|
+
*/
|
|
42
|
+
includeResolver?: (key: string) => string | undefined;
|
|
43
|
+
}
|
|
18
44
|
export declare class PromptTemplate<TVariables extends object = Record<string, unknown>> {
|
|
19
45
|
/** The raw template string containing `{variableName}` placeholders. */
|
|
20
46
|
readonly template: string;
|
|
@@ -31,8 +57,18 @@ export declare class PromptTemplate<TVariables extends object = Record<string, u
|
|
|
31
57
|
*
|
|
32
58
|
* - If a placeholder key is present in `variables` its value is `String()`-cast.
|
|
33
59
|
* - If a placeholder key is NOT present it is left as-is (e.g. `{missing}`),
|
|
34
|
-
* making missing variables easy to spot.
|
|
60
|
+
* making missing variables easy to spot — or throws in `strict` mode.
|
|
61
|
+
*/
|
|
62
|
+
render(variables: TVariables, options?: RenderOptions): string;
|
|
63
|
+
/**
|
|
64
|
+
* Preview the rendered template — alias for `render()` with an estimated
|
|
65
|
+
* token count appended for debugging.
|
|
66
|
+
*/
|
|
67
|
+
preview(variables: TVariables, options?: RenderOptions): string;
|
|
68
|
+
/**
|
|
69
|
+
* Extract all placeholder variable names from the template.
|
|
70
|
+
* Useful for introspection and validation.
|
|
35
71
|
*/
|
|
36
|
-
|
|
72
|
+
variables(): string[];
|
|
37
73
|
}
|
|
38
74
|
//# sourceMappingURL=template.d.ts.map
|
package/dist/template.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../src/template.ts"],"names":[],"mappings":"AAAA
|
|
1
|
+
{"version":3,"file":"template.d.ts","sourceRoot":"","sources":["../src/template.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,SAAS,CAAC;AAE9C,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,MAAM,CAAC,EAAE,OAAO,CAAC;IAEjB;;;;OAIG;IACH,eAAe,CAAC,EAAE,CAAC,GAAG,EAAE,MAAM,KAAK,MAAM,GAAG,SAAS,CAAC;CACvD;AAED,qBAAa,cAAc,CAAC,UAAU,SAAS,MAAM,GAAG,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC;IAE3E,wEAAwE;IACxE,QAAQ,CAAC,QAAQ,EAAE,MAAM;IACzB,kEAAkE;IAClE,QAAQ,CAAC,QAAQ,EAAE,cAAc;;IAHjC,wEAAwE;IAC/D,QAAQ,EAAE,MAAM;IACzB,kEAAkE;IACzD,QAAQ,EAAE,cAAc;IAGnC;;;;;;;OAOG;IACH,MAAM,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,GAAE,aAAkB,GAAG,MAAM;IAyElE;;;OAGG;IACH,OAAO,CAAC,SAAS,EAAE,UAAU,EAAE,OAAO,GAAE,aAAkB,GAAG,MAAM;IAOnE;;;OAGG;IACH,SAAS,IAAI,MAAM,EAAE;CAgBtB"}
|
package/dist/template.js
CHANGED
|
@@ -5,6 +5,12 @@
|
|
|
5
5
|
* A typed, reusable prompt template that interpolates named `{variable}`
|
|
6
6
|
* placeholders with caller-supplied values.
|
|
7
7
|
*
|
|
8
|
+
* Supports:
|
|
9
|
+
* - `{variable}` — simple substitution
|
|
10
|
+
* - `{#if variable}...{/if}` — conditional blocks
|
|
11
|
+
* - `{#each items}...{.}...{/each}` — iteration over arrays
|
|
12
|
+
* - `{@include key}` — include another prompt from the registry
|
|
13
|
+
*
|
|
8
14
|
* Usage:
|
|
9
15
|
* ```typescript
|
|
10
16
|
* const tpl = new PromptTemplate<{ query: string; context: string }>(
|
|
@@ -14,6 +20,12 @@
|
|
|
14
20
|
*
|
|
15
21
|
* const rendered = tpl.render({ query: 'What is TypeScript?', context: '...' });
|
|
16
22
|
* ```
|
|
23
|
+
*
|
|
24
|
+
* Strict mode:
|
|
25
|
+
* ```typescript
|
|
26
|
+
* tpl.render({ query: 'test' }, { strict: true });
|
|
27
|
+
* // throws: Missing required template variable: "context"
|
|
28
|
+
* ```
|
|
17
29
|
*/
|
|
18
30
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
19
31
|
exports.PromptTemplate = void 0;
|
|
@@ -32,14 +44,96 @@ class PromptTemplate {
|
|
|
32
44
|
*
|
|
33
45
|
* - If a placeholder key is present in `variables` its value is `String()`-cast.
|
|
34
46
|
* - If a placeholder key is NOT present it is left as-is (e.g. `{missing}`),
|
|
35
|
-
* making missing variables easy to spot.
|
|
47
|
+
* making missing variables easy to spot — or throws in `strict` mode.
|
|
36
48
|
*/
|
|
37
|
-
render(variables) {
|
|
49
|
+
render(variables, options = {}) {
|
|
38
50
|
const vars = variables;
|
|
39
|
-
|
|
51
|
+
let result = this.template;
|
|
52
|
+
// Step 1: Resolve {@include key} directives
|
|
53
|
+
if (options.includeResolver) {
|
|
54
|
+
const resolver = options.includeResolver;
|
|
55
|
+
result = result.replace(/\{@include\s+([\w:.-]+)\}/g, (_match, key) => {
|
|
56
|
+
const included = resolver(key);
|
|
57
|
+
return included !== undefined ? included : _match;
|
|
58
|
+
});
|
|
59
|
+
}
|
|
60
|
+
// Step 2: Process {#if variable}...{/if} blocks
|
|
61
|
+
result = result.replace(/\{#if\s+(\w+)\}([\s\S]*?)\{\/if\}/g, (_match, key, body) => {
|
|
62
|
+
const value = vars[key];
|
|
63
|
+
// Truthy check: non-empty string, non-empty array, truthy value
|
|
64
|
+
const isTruthy = Array.isArray(value)
|
|
65
|
+
? value.length > 0
|
|
66
|
+
: value !== undefined && value !== null && value !== '' && value !== false;
|
|
67
|
+
return isTruthy ? body : '';
|
|
68
|
+
});
|
|
69
|
+
// Step 3: Process {#each items}...{.}...{/each} blocks
|
|
70
|
+
result = result.replace(/\{#each\s+(\w+)\}([\s\S]*?)\{\/each\}/g, (_match, key, body) => {
|
|
71
|
+
const value = vars[key];
|
|
72
|
+
if (!Array.isArray(value))
|
|
73
|
+
return '';
|
|
74
|
+
return value
|
|
75
|
+
.map((item, index) => {
|
|
76
|
+
let rendered = body.replace(/\{\.\}/g, String(item));
|
|
77
|
+
rendered = rendered.replace(/\{@index\}/g, String(index));
|
|
78
|
+
return rendered;
|
|
79
|
+
})
|
|
80
|
+
.join('');
|
|
81
|
+
});
|
|
82
|
+
// Step 4: Strict mode — collect all remaining placeholders and check
|
|
83
|
+
if (options.strict) {
|
|
84
|
+
const placeholders = result.match(/\{(\w+)\}/g);
|
|
85
|
+
if (placeholders) {
|
|
86
|
+
const missing = [];
|
|
87
|
+
for (const placeholder of placeholders) {
|
|
88
|
+
const key = placeholder.slice(1, -1);
|
|
89
|
+
if (vars[key] === undefined) {
|
|
90
|
+
missing.push(key);
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
if (missing.length > 0) {
|
|
94
|
+
const unique = [...new Set(missing)];
|
|
95
|
+
throw new Error(`[PromptTemplate] Missing required template variable${unique.length > 1 ? 's' : ''}: ` +
|
|
96
|
+
`${unique.map((k) => `"${k}"`).join(', ')}. ` +
|
|
97
|
+
`Template: "${this.metadata.name}" (v${this.metadata.version ?? 'latest'})`);
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
// Step 5: Variable substitution
|
|
102
|
+
result = result.replace(/\{(\w+)\}/g, (match, key) => {
|
|
40
103
|
const value = vars[key];
|
|
41
104
|
return value !== undefined ? String(value) : match;
|
|
42
105
|
});
|
|
106
|
+
return result;
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Preview the rendered template — alias for `render()` with an estimated
|
|
110
|
+
* token count appended for debugging.
|
|
111
|
+
*/
|
|
112
|
+
preview(variables, options = {}) {
|
|
113
|
+
const rendered = this.render(variables, options);
|
|
114
|
+
// Rough GPT tokenizer estimate: ~4 chars per token
|
|
115
|
+
const estimatedTokens = Math.ceil(rendered.length / 4);
|
|
116
|
+
return `${rendered}\n\n--- Preview: ~${estimatedTokens} tokens, ${rendered.length} chars ---`;
|
|
117
|
+
}
|
|
118
|
+
/**
|
|
119
|
+
* Extract all placeholder variable names from the template.
|
|
120
|
+
* Useful for introspection and validation.
|
|
121
|
+
*/
|
|
122
|
+
variables() {
|
|
123
|
+
const found = new Set();
|
|
124
|
+
// Simple placeholders
|
|
125
|
+
for (const match of this.template.matchAll(/\{(\w+)\}/g)) {
|
|
126
|
+
found.add(match[1]);
|
|
127
|
+
}
|
|
128
|
+
// Conditional keys
|
|
129
|
+
for (const match of this.template.matchAll(/\{#if\s+(\w+)\}/g)) {
|
|
130
|
+
found.add(match[1]);
|
|
131
|
+
}
|
|
132
|
+
// Each keys
|
|
133
|
+
for (const match of this.template.matchAll(/\{#each\s+(\w+)\}/g)) {
|
|
134
|
+
found.add(match[1]);
|
|
135
|
+
}
|
|
136
|
+
return [...found];
|
|
43
137
|
}
|
|
44
138
|
}
|
|
45
139
|
exports.PromptTemplate = PromptTemplate;
|
package/dist/template.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"template.js","sourceRoot":"","sources":["../src/template.ts"],"names":[],"mappings":";AAAA
|
|
1
|
+
{"version":3,"file":"template.js","sourceRoot":"","sources":["../src/template.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@hazeljs/prompts",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.3.1",
|
|
4
4
|
"description": "Typed, overridable prompt templates for HazelJS AI, RAG, and Agent packages",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -70,5 +70,5 @@
|
|
|
70
70
|
}
|
|
71
71
|
}
|
|
72
72
|
},
|
|
73
|
-
"gitHead": "
|
|
73
|
+
"gitHead": "db6df492988e5d7b03253a98977c71c7a4540e1c"
|
|
74
74
|
}
|