prompt-lock 0.2.0 → 0.4.0

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.
Files changed (54) hide show
  1. package/CHANGELOG.md +36 -0
  2. package/README.md +161 -4
  3. package/dist/assertions/builtin.d.ts.map +1 -1
  4. package/dist/assertions/builtin.js +11 -0
  5. package/dist/assertions/builtin.js.map +1 -1
  6. package/dist/assertions/index.d.ts.map +1 -1
  7. package/dist/assertions/index.js +5 -0
  8. package/dist/assertions/index.js.map +1 -1
  9. package/dist/assertions/llm-judge.d.ts +6 -0
  10. package/dist/assertions/llm-judge.d.ts.map +1 -0
  11. package/dist/assertions/llm-judge.js +75 -0
  12. package/dist/assertions/llm-judge.js.map +1 -0
  13. package/dist/cli.js +114 -11
  14. package/dist/cli.js.map +1 -1
  15. package/dist/config-loader.d.ts +4 -0
  16. package/dist/config-loader.d.ts.map +1 -0
  17. package/dist/config-loader.js +85 -0
  18. package/dist/config-loader.js.map +1 -0
  19. package/dist/config-validation.d.ts.map +1 -1
  20. package/dist/config-validation.js +33 -3
  21. package/dist/config-validation.js.map +1 -1
  22. package/dist/dataset-loader.d.ts +2 -0
  23. package/dist/dataset-loader.d.ts.map +1 -0
  24. package/dist/dataset-loader.js +130 -0
  25. package/dist/dataset-loader.js.map +1 -0
  26. package/dist/index.d.ts +6 -3
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +18 -1
  29. package/dist/index.js.map +1 -1
  30. package/dist/pricing.d.ts +9 -0
  31. package/dist/pricing.d.ts.map +1 -0
  32. package/dist/pricing.js +49 -0
  33. package/dist/pricing.js.map +1 -0
  34. package/dist/providers/anthropic.d.ts.map +1 -1
  35. package/dist/providers/anthropic.js +49 -36
  36. package/dist/providers/anthropic.js.map +1 -1
  37. package/dist/providers/index.d.ts.map +1 -1
  38. package/dist/providers/index.js +7 -1
  39. package/dist/providers/index.js.map +1 -1
  40. package/dist/providers/openai.d.ts.map +1 -1
  41. package/dist/providers/openai.js +48 -35
  42. package/dist/providers/openai.js.map +1 -1
  43. package/dist/reporter.d.ts +4 -1
  44. package/dist/reporter.d.ts.map +1 -1
  45. package/dist/reporter.js +141 -0
  46. package/dist/reporter.js.map +1 -1
  47. package/dist/runner.d.ts +2 -1
  48. package/dist/runner.d.ts.map +1 -1
  49. package/dist/runner.js +136 -20
  50. package/dist/runner.js.map +1 -1
  51. package/dist/types.d.ts +41 -2
  52. package/dist/types.d.ts.map +1 -1
  53. package/package.json +5 -2
  54. package/schemas/promptlock.schema.json +271 -0
package/dist/runner.js CHANGED
@@ -2,12 +2,15 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.runPrompt = runPrompt;
4
4
  exports.runAll = runAll;
5
+ exports.runAB = runAB;
5
6
  const providers_1 = require("./providers");
6
7
  const assertions_1 = require("./assertions");
7
8
  const utils_1 = require("./utils");
8
9
  const config_validation_1 = require("./config-validation");
9
10
  const cache_1 = require("./cache");
10
11
  const retry_1 = require("./retry");
12
+ const pricing_1 = require("./pricing");
13
+ const dataset_loader_1 = require("./dataset-loader");
11
14
  function getCache(opts) {
12
15
  if (!opts?.cache)
13
16
  return null;
@@ -25,17 +28,30 @@ async function callWithCacheAndRetry(provider, prompt, model, opts, providerOpts
25
28
  return { output: cached, cached: true };
26
29
  }
27
30
  }
28
- // Call with retry
29
- const output = await (0, retry_1.withRetry)(() => provider.call(prompt, providerOpts), opts?.retry, opts?.verbose
30
- ? (attempt, error, delay) => {
31
- process.stderr.write(` [retry] attempt ${attempt}: ${error.message} — retrying in ${delay}ms\n`);
32
- }
33
- : undefined);
31
+ // Call with retry — prefer callWithMeta if available
32
+ let output;
33
+ let usage;
34
+ if (provider.callWithMeta) {
35
+ const result = await (0, retry_1.withRetry)(() => provider.callWithMeta(prompt, providerOpts), opts?.retry, opts?.verbose
36
+ ? (attempt, error, delay) => {
37
+ process.stderr.write(` [retry] attempt ${attempt}: ${error.message} — retrying in ${delay}ms\n`);
38
+ }
39
+ : undefined);
40
+ output = result.text;
41
+ usage = result.usage;
42
+ }
43
+ else {
44
+ output = await (0, retry_1.withRetry)(() => provider.call(prompt, providerOpts), opts?.retry, opts?.verbose
45
+ ? (attempt, error, delay) => {
46
+ process.stderr.write(` [retry] attempt ${attempt}: ${error.message} — retrying in ${delay}ms\n`);
47
+ }
48
+ : undefined);
49
+ }
34
50
  // Save to cache
35
51
  if (cache) {
36
52
  await cache.set(prompt, model, output);
37
53
  }
38
- return { output, cached: false };
54
+ return { output, cached: false, usage };
39
55
  }
40
56
  async function runPrompt(config, opts) {
41
57
  const startTime = Date.now();
@@ -67,7 +83,7 @@ async function runPrompt(config, opts) {
67
83
  : config.prompt;
68
84
  if (opts?.dryRun) {
69
85
  const output = '[DRY RUN — no LLM call made]';
70
- const assertionResults = await runAssertionsWithLatency(output, config.assertions, 0);
86
+ const assertionResults = await runAssertionsEnriched(output, config.assertions, 0, 0);
71
87
  return {
72
88
  id: config.id,
73
89
  version: config.version,
@@ -87,33 +103,63 @@ async function runPrompt(config, opts) {
87
103
  opts?.onProgress?.(config.id, 'calling LLM...');
88
104
  const provider = (0, providers_1.getProvider)(config.provider, config.model);
89
105
  const callStart = Date.now();
90
- const { output, cached } = await callWithCacheAndRetry(provider, renderedPrompt, config.model, opts, config.options);
106
+ const { output, cached, usage } = await callWithCacheAndRetry(provider, renderedPrompt, config.model, opts, config.options);
91
107
  const callDuration = Date.now() - callStart;
108
+ const callCost = usage ? (0, pricing_1.estimateCost)(config.model, usage) : 0;
92
109
  if (opts?.verbose) {
93
110
  const src = cached ? 'cached' : 'live';
94
111
  process.stderr.write(` [verbose] ${config.id}: ${src} response in ${callDuration}ms (${output.length} chars)\n`);
112
+ if (usage) {
113
+ process.stderr.write(` [verbose] ${config.id}: ${usage.totalTokens} tokens, $${callCost.toFixed(6)}\n`);
114
+ }
95
115
  }
96
- // Run assertions (inject latency for max-latency)
97
- const assertionResults = await runAssertionsWithLatency(output, config.assertions, callDuration);
116
+ // Run assertions (inject latency + cost)
117
+ const assertionResults = await runAssertionsEnriched(output, config.assertions, callDuration, callCost);
98
118
  const allPassed = assertionResults.every(r => r.passed);
99
119
  const totalDuration = Date.now() - startTime;
120
+ // Accumulate total tokens/cost
121
+ let totalTokens = usage ? { ...usage } : undefined;
122
+ let totalCost = callCost;
123
+ // Resolve dataset (file path or inline)
124
+ let dataset;
125
+ if (config.dataset) {
126
+ if (typeof config.dataset === 'string') {
127
+ dataset = await (0, dataset_loader_1.loadDataset)(config.dataset, process.cwd());
128
+ }
129
+ else {
130
+ dataset = config.dataset;
131
+ }
132
+ }
100
133
  // Dataset runs
101
134
  let datasetResults;
102
- if (config.dataset && config.dataset.length > 0) {
103
- opts?.onProgress?.(config.id, `running dataset (${config.dataset.length} inputs)...`);
135
+ if (dataset && dataset.length > 0) {
136
+ opts?.onProgress?.(config.id, `running dataset (${dataset.length} inputs)...`);
104
137
  datasetResults = [];
105
- for (const vars of config.dataset) {
138
+ for (const vars of dataset) {
106
139
  const dsPrompt = (0, utils_1.renderTemplate)(config.prompt, vars);
107
140
  const dsStart = Date.now();
108
141
  const dsResult = await callWithCacheAndRetry(provider, dsPrompt, config.model, opts, config.options);
109
142
  const dsDuration = Date.now() - dsStart;
110
- const dsAssertions = await runAssertionsWithLatency(dsResult.output, config.assertions, dsDuration);
143
+ const dsCost = dsResult.usage ? (0, pricing_1.estimateCost)(config.model, dsResult.usage) : 0;
144
+ const dsAssertions = await runAssertionsEnriched(dsResult.output, config.assertions, dsDuration, dsCost);
145
+ // Accumulate tokens
146
+ if (dsResult.usage) {
147
+ if (!totalTokens) {
148
+ totalTokens = { inputTokens: 0, outputTokens: 0, totalTokens: 0 };
149
+ }
150
+ totalTokens.inputTokens += dsResult.usage.inputTokens;
151
+ totalTokens.outputTokens += dsResult.usage.outputTokens;
152
+ totalTokens.totalTokens += dsResult.usage.totalTokens;
153
+ }
154
+ totalCost += dsCost;
111
155
  datasetResults.push({
112
156
  vars,
113
157
  output: dsResult.output,
114
158
  assertions: dsAssertions,
115
159
  passed: dsAssertions.every(r => r.passed),
116
160
  duration: dsDuration,
161
+ tokens: dsResult.usage,
162
+ cost: dsCost,
117
163
  });
118
164
  }
119
165
  }
@@ -133,6 +179,8 @@ async function runPrompt(config, opts) {
133
179
  passed: allPassed && datasetAllPassed,
134
180
  duration: totalDuration,
135
181
  timestamp: new Date().toISOString(),
182
+ tokens: totalTokens,
183
+ cost: totalCost > 0 ? totalCost : undefined,
136
184
  datasetResults,
137
185
  };
138
186
  }
@@ -152,7 +200,7 @@ async function runAll(configs, opts) {
152
200
  }
153
201
  async function runParallel(configs, concurrency, opts) {
154
202
  const results = new Array(configs.length);
155
- const queue = [...configs.keys()]; // [0, 1, 2, ...]
203
+ const queue = [...configs.keys()];
156
204
  async function worker() {
157
205
  while (queue.length > 0) {
158
206
  const i = queue.shift();
@@ -189,10 +237,14 @@ async function runSafe(config, opts) {
189
237
  };
190
238
  }
191
239
  }
192
- async function runAssertionsWithLatency(output, assertions, durationMs) {
193
- const enriched = assertions.map(a => a.type === 'max-latency'
194
- ? { ...a, __duration: durationMs }
195
- : a);
240
+ async function runAssertionsEnriched(output, assertions, durationMs, costDollars) {
241
+ const enriched = assertions.map(a => {
242
+ if (a.type === 'max-latency')
243
+ return { ...a, __duration: durationMs };
244
+ if (a.type === 'max-cost')
245
+ return { ...a, __cost: costDollars };
246
+ return a;
247
+ });
196
248
  return (0, assertions_1.runAssertions)(output, enriched);
197
249
  }
198
250
  function providerName(config) {
@@ -200,4 +252,68 @@ function providerName(config) {
200
252
  return config.provider;
201
253
  return `custom:${config.provider.url}`;
202
254
  }
255
+ // ── A/B Testing ─────────────────────────────────────────────────────────────
256
+ async function runAB(variantA, variantB, opts) {
257
+ opts?.onProgress?.(variantA.id, 'running variant A...');
258
+ const a = await runSafe(variantA, opts);
259
+ opts?.onResult?.(a);
260
+ opts?.onProgress?.(variantB.id, 'running variant B...');
261
+ const b = await runSafe(variantB, opts);
262
+ opts?.onResult?.(b);
263
+ const passRateA = computePassRate(a);
264
+ const passRateB = computePassRate(b);
265
+ const costA = a.cost ?? 0;
266
+ const costB = b.cost ?? 0;
267
+ const tokensA = a.tokens?.totalTokens ?? 0;
268
+ const tokensB = b.tokens?.totalTokens ?? 0;
269
+ const deltas = {
270
+ passRate: passRateB - passRateA,
271
+ costDollars: costB - costA,
272
+ latencyMs: b.duration - a.duration,
273
+ tokens: tokensB - tokensA,
274
+ };
275
+ return {
276
+ id: `${variantA.id} vs ${variantB.id}`,
277
+ variantA: a,
278
+ variantB: b,
279
+ winner: pickWinner(a, b, passRateA, passRateB, costA, costB),
280
+ deltas,
281
+ };
282
+ }
283
+ function computePassRate(r) {
284
+ // Combine main assertions + dataset assertions for an overall pass-rate (0-100)
285
+ let total = r.assertions.length;
286
+ let passed = r.assertions.filter(x => x.passed).length;
287
+ if (r.datasetResults) {
288
+ for (const d of r.datasetResults) {
289
+ total += d.assertions.length;
290
+ passed += d.assertions.filter(x => x.passed).length;
291
+ }
292
+ }
293
+ if (total === 0)
294
+ return 0;
295
+ return (passed / total) * 100;
296
+ }
297
+ function pickWinner(a, b, passRateA, passRateB, costA, costB) {
298
+ // 1. Pass rate wins if difference > 0
299
+ if (passRateA > passRateB)
300
+ return 'A';
301
+ if (passRateB > passRateA)
302
+ return 'B';
303
+ // 2. Cost: cheaper wins if difference > 5%
304
+ if (costA > 0 || costB > 0) {
305
+ const maxCost = Math.max(costA, costB);
306
+ const delta = Math.abs(costB - costA) / maxCost;
307
+ if (delta > 0.05)
308
+ return costA < costB ? 'A' : 'B';
309
+ }
310
+ // 3. Latency: faster wins if difference > 10%
311
+ const maxLatency = Math.max(a.duration, b.duration);
312
+ if (maxLatency > 0) {
313
+ const delta = Math.abs(b.duration - a.duration) / maxLatency;
314
+ if (delta > 0.10)
315
+ return a.duration < b.duration ? 'A' : 'B';
316
+ }
317
+ return 'tie';
318
+ }
203
319
  //# sourceMappingURL=runner.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":";;AAgEA,8BA4GC;AAED,wBAkBC;AA/LD,2CAA0C;AAC1C,6CAA6C;AAC7C,mCAAqD;AACrD,2DAAqD;AACrD,mCAAsC;AACtC,mCAAkD;AAclD,SAAS,QAAQ,CAAC,IAAiB;IACjC,IAAI,CAAC,IAAI,EAAE,KAAK;QAAE,OAAO,IAAI,CAAC;IAC9B,OAAO,IAAI,mBAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;AACxC,CAAC;AAED,KAAK,UAAU,qBAAqB,CAClC,QAAuC,EACvC,MAAc,EACd,KAAa,EACb,IAAiB,EACjB,YAAkD;IAElD,MAAM,KAAK,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC;IAE7B,cAAc;IACd,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,MAAM,GAAG,MAAM,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,CAAC,CAAC;QAC9C,IAAI,MAAM,KAAK,IAAI,EAAE,CAAC;YACpB,IAAI,IAAI,EAAE,OAAO,EAAE,CAAC;gBAClB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,KAAK,IAAI,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC;YACjF,CAAC;YACD,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,IAAI,EAAE,CAAC;QAC1C,CAAC;IACH,CAAC;IAED,kBAAkB;IAClB,MAAM,MAAM,GAAG,MAAM,IAAA,iBAAS,EAC5B,GAAG,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,EACzC,IAAI,EAAE,KAAK,EACX,IAAI,EAAE,OAAO;QACX,CAAC,CAAC,CAAC,OAAO,EAAE,KAAK,EAAE,KAAK,EAAE,EAAE;YACxB,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,qBAAqB,OAAO,KAAK,KAAK,CAAC,OAAO,kBAAkB,KAAK,MAAM,CAAC,CAAC;QACpG,CAAC;QACH,CAAC,CAAC,SAAS,CACd,CAAC;IAEF,gBAAgB;IAChB,IAAI,KAAK,EAAE,CAAC;QACV,MAAM,KAAK,CAAC,GAAG,CAAC,MAAM,EAAE,KAAK,EAAE,MAAM,CAAC,CAAC;IACzC,CAAC;IAED,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,KAAK,EAAE,CAAC;AACnC,CAAC;AAEM,KAAK,UAAU,SAAS,CAAC,MAAwB,EAAE,IAAiB;IACzE,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAE7B,iCAAiC;IACjC,MAAM,UAAU,GAAG,IAAA,kCAAc,EAAC,MAAM,CAAC,CAAC;IAC1C,IAAI,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACtB,OAAO;YACL,EAAE,EAAE,MAAM,CAAC,EAAE,IAAI,SAAS;YAC1B,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,QAAQ,EAAE,YAAY,CAAC,MAAM,CAAC;YAC9B,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,SAAS;YAChC,MAAM,EAAE,MAAM,CAAC,MAAM,IAAI,EAAE;YAC3B,UAAU,EAAE,EAAE;YACd,MAAM,EAAE,EAAE;YACV,UAAU,EAAE,CAAC;oBACX,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,mBAAmB;oBACzB,MAAM,EAAE,KAAK;oBACb,OAAO,EAAE,mBAAmB,UAAU,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;iBAC3D,CAAC;YACF,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,CAAC;YACX,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;IACJ,CAAC;IAED,iCAAiC;IACjC,MAAM,cAAc,GAAG,MAAM,CAAC,WAAW;QACvC,CAAC,CAAC,IAAA,sBAAc,EAAC,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,WAAW,CAAC;QACnD,CAAC,CAAC,MAAM,CAAC,MAAM,CAAC;IAElB,IAAI,IAAI,EAAE,MAAM,EAAE,CAAC;QACjB,MAAM,MAAM,GAAG,8BAA8B,CAAC;QAC9C,MAAM,gBAAgB,GAAG,MAAM,wBAAwB,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC;QACtF,OAAO;YACL,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,QAAQ,EAAE,YAAY,CAAC,MAAM,CAAC;YAC9B,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,MAAM,EAAE,cAAc;YACtB,UAAU,EAAE,UAAU,IAAA,kBAAU,EAAC,cAAc,CAAC,EAAE;YAClD,MAAM;YACN,WAAW,EAAE,MAAM,CAAC,WAAW;YAC/B,UAAU,EAAE,gBAAgB;YAC5B,MAAM,EAAE,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;YAC7C,QAAQ,EAAE,CAAC;YACX,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;IACJ,CAAC;IAED,iDAAiD;IACjD,IAAI,EAAE,UAAU,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,gBAAgB,CAAC,CAAC;IAChD,MAAM,QAAQ,GAAG,IAAA,uBAAW,EAAC,MAAM,CAAC,QAAQ,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC;IAC5D,MAAM,SAAS,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;IAC7B,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,MAAM,qBAAqB,CAAC,QAAQ,EAAE,cAAc,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;IACrH,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IAE5C,IAAI,IAAI,EAAE,OAAO,EAAE,CAAC;QAClB,MAAM,GAAG,GAAG,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC;QACvC,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,eAAe,MAAM,CAAC,EAAE,KAAK,GAAG,gBAAgB,YAAY,OAAO,MAAM,CAAC,MAAM,WAAW,CAAC,CAAC;IACpH,CAAC;IAED,kDAAkD;IAClD,MAAM,gBAAgB,GAAG,MAAM,wBAAwB,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,YAAY,CAAC,CAAC;IACjG,MAAM,SAAS,GAAG,gBAAgB,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;IAExD,MAAM,aAAa,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,SAAS,CAAC;IAE7C,eAAe;IACf,IAAI,cAA8C,CAAC;IACnD,IAAI,MAAM,CAAC,OAAO,IAAI,MAAM,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChD,IAAI,EAAE,UAAU,EAAE,CAAC,MAAM,CAAC,EAAE,EAAE,oBAAoB,MAAM,CAAC,OAAO,CAAC,MAAM,aAAa,CAAC,CAAC;QACtF,cAAc,GAAG,EAAE,CAAC;QACpB,KAAK,MAAM,IAAI,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;YAClC,MAAM,QAAQ,GAAG,IAAA,sBAAc,EAAC,MAAM,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;YACrD,MAAM,OAAO,GAAG,IAAI,CAAC,GAAG,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,MAAM,qBAAqB,CAAC,QAAQ,EAAE,QAAQ,EAAE,MAAM,CAAC,KAAK,EAAE,IAAI,EAAE,MAAM,CAAC,OAAO,CAAC,CAAC;YACrG,MAAM,UAAU,GAAG,IAAI,CAAC,GAAG,EAAE,GAAG,OAAO,CAAC;YACxC,MAAM,YAAY,GAAG,MAAM,wBAAwB,CAAC,QAAQ,CAAC,MAAM,EAAE,MAAM,CAAC,UAAU,EAAE,UAAU,CAAC,CAAC;YACpG,cAAc,CAAC,IAAI,CAAC;gBAClB,IAAI;gBACJ,MAAM,EAAE,QAAQ,CAAC,MAAM;gBACvB,UAAU,EAAE,YAAY;gBACxB,MAAM,EAAE,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;gBACzC,QAAQ,EAAE,UAAU;aACrB,CAAC,CAAC;QACL,CAAC;IACH,CAAC;IAED,MAAM,gBAAgB,GAAG,cAAc;QACrC,CAAC,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,MAAM,CAAC;QACrC,CAAC,CAAC,IAAI,CAAC;IAET,OAAO;QACL,EAAE,EAAE,MAAM,CAAC,EAAE;QACb,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,QAAQ,EAAE,YAAY,CAAC,MAAM,CAAC;QAC9B,KAAK,EAAE,MAAM,CAAC,KAAK;QACnB,MAAM,EAAE,cAAc;QACtB,UAAU,EAAE,UAAU,IAAA,kBAAU,EAAC,cAAc,CAAC,EAAE;QAClD,MAAM;QACN,WAAW,EAAE,MAAM,CAAC,WAAW;QAC/B,UAAU,EAAE,gBAAgB;QAC5B,MAAM,EAAE,SAAS,IAAI,gBAAgB;QACrC,QAAQ,EAAE,aAAa;QACvB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,cAAc;KACf,CAAC;AACJ,CAAC;AAEM,KAAK,UAAU,MAAM,CAC1B,OAA2B,EAC3B,IAAiB;IAEjB,MAAM,QAAQ,GAAG,IAAI,EAAE,QAAQ,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,QAAQ,IAAI,KAAK,CAAC;IAC1E,MAAM,WAAW,GAAG,IAAI,EAAE,WAAW,IAAI,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,WAAW,IAAI,CAAC,CAAC;IAE/E,IAAI,QAAQ,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QACnC,OAAO,WAAW,CAAC,OAAO,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;IACjD,CAAC;IAED,MAAM,OAAO,GAAgB,EAAE,CAAC;IAChC,KAAK,MAAM,MAAM,IAAI,OAAO,EAAE,CAAC;QAC7B,MAAM,MAAM,GAAG,MAAM,OAAO,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;QAC3C,OAAO,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACrB,IAAI,EAAE,QAAQ,EAAE,CAAC,MAAM,CAAC,CAAC;IAC3B,CAAC;IACD,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,WAAW,CACxB,OAA2B,EAC3B,WAAmB,EACnB,IAAiB;IAEjB,MAAM,OAAO,GAAgB,IAAI,KAAK,CAAC,OAAO,CAAC,MAAM,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,CAAC,GAAG,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,iBAAiB;IAEpD,KAAK,UAAU,MAAM;QACnB,OAAO,KAAK,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;YACxB,MAAM,CAAC,GAAG,KAAK,CAAC,KAAK,EAAG,CAAC;YACzB,OAAO,CAAC,CAAC,CAAC,GAAG,MAAM,OAAO,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,IAAI,CAAC,CAAC;YAC7C,IAAI,EAAE,QAAQ,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,MAAM,OAAO,GAAG,KAAK,CAAC,IAAI,CAAC,EAAE,MAAM,EAAE,IAAI,CAAC,GAAG,CAAC,WAAW,EAAE,OAAO,CAAC,MAAM,CAAC,EAAE,EAAE,GAAG,EAAE,CAAC,MAAM,EAAE,CAAC,CAAC;IAC9F,MAAM,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC;IAC3B,OAAO,OAAO,CAAC;AACjB,CAAC;AAED,KAAK,UAAU,OAAO,CAAC,MAAwB,EAAE,IAAiB;IAChE,IAAI,CAAC;QACH,OAAO,MAAM,SAAS,CAAC,MAAM,EAAE,IAAI,CAAC,CAAC;IACvC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,OAAO;YACL,EAAE,EAAE,MAAM,CAAC,EAAE;YACb,OAAO,EAAE,MAAM,CAAC,OAAO;YACvB,QAAQ,EAAE,YAAY,CAAC,MAAM,CAAC;YAC9B,KAAK,EAAE,MAAM,CAAC,KAAK;YACnB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,UAAU,EAAE,UAAU,IAAA,kBAAU,EAAC,MAAM,CAAC,MAAM,CAAC,EAAE;YACjD,MAAM,EAAE,EAAE;YACV,UAAU,EAAE,CAAC;oBACX,IAAI,EAAE,OAAO;oBACb,IAAI,EAAE,iBAAiB;oBACvB,MAAM,EAAE,KAAK;oBACb,OAAO,EAAE,yBAA0B,KAAe,CAAC,OAAO,EAAE;iBAC7D,CAAC;YACF,MAAM,EAAE,KAAK;YACb,QAAQ,EAAE,CAAC;YACX,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;SACpC,CAAC;IACJ,CAAC;AACH,CAAC;AAED,KAAK,UAAU,wBAAwB,CACrC,MAAc,EACd,UAA6B,EAC7B,UAAkB;IAElB,MAAM,QAAQ,GAAG,UAAU,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAClC,CAAC,CAAC,IAAI,KAAK,aAAa;QACtB,CAAC,CAAC,EAAE,GAAG,CAAC,EAAE,UAAU,EAAE,UAAU,EAAE;QAClC,CAAC,CAAC,CAAC,CACN,CAAC;IACF,OAAO,IAAA,0BAAa,EAAC,MAAM,EAAE,QAA6B,CAAC,CAAC;AAC9D,CAAC;AAED,SAAS,YAAY,CAAC,MAAwB;IAC5C,IAAI,OAAO,MAAM,CAAC,QAAQ,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,QAAQ,CAAC;IAChE,OAAO,UAAU,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,CAAC;AACzC,CAAC"}
1
+ {"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -6,6 +6,15 @@ export interface CustomProviderConfig {
6
6
  bodyTemplate?: Record<string, unknown>;
7
7
  responsePath?: string;
8
8
  }
9
+ export interface TokenUsage {
10
+ inputTokens: number;
11
+ outputTokens: number;
12
+ totalTokens: number;
13
+ }
14
+ export interface LLMCallResult {
15
+ text: string;
16
+ usage?: TokenUsage;
17
+ }
9
18
  export interface PromptLockConfig {
10
19
  id: string;
11
20
  version?: string;
@@ -13,7 +22,7 @@ export interface PromptLockConfig {
13
22
  model: string;
14
23
  prompt: string;
15
24
  defaultVars?: Record<string, string>;
16
- dataset?: Record<string, string>[];
25
+ dataset?: Record<string, string>[] | string;
17
26
  assertions: AssertionConfig[];
18
27
  options?: PromptLockOptions;
19
28
  }
@@ -62,6 +71,17 @@ export type AssertionConfig = {
62
71
  } | {
63
72
  type: 'max-latency';
64
73
  ms: number;
74
+ } | {
75
+ type: 'max-cost';
76
+ dollars: number;
77
+ } | {
78
+ type: 'llm-judge';
79
+ judge: {
80
+ provider: ProviderConfig;
81
+ model: string;
82
+ };
83
+ criteria: string;
84
+ threshold?: number;
65
85
  } | {
66
86
  type: 'custom';
67
87
  name: string;
@@ -88,6 +108,8 @@ export interface RunResult {
88
108
  passed: boolean;
89
109
  duration: number;
90
110
  timestamp: string;
111
+ tokens?: TokenUsage;
112
+ cost?: number;
91
113
  datasetResults?: DatasetRunResult[];
92
114
  }
93
115
  export interface DatasetRunResult {
@@ -96,6 +118,20 @@ export interface DatasetRunResult {
96
118
  assertions: AssertionResult[];
97
119
  passed: boolean;
98
120
  duration: number;
121
+ tokens?: TokenUsage;
122
+ cost?: number;
123
+ }
124
+ export interface ABComparisonResult {
125
+ id: string;
126
+ variantA: RunResult;
127
+ variantB: RunResult;
128
+ winner: 'A' | 'B' | 'tie';
129
+ deltas: {
130
+ passRate: number;
131
+ costDollars: number;
132
+ latencyMs: number;
133
+ tokens: number;
134
+ };
99
135
  }
100
136
  export interface SnapshotData {
101
137
  id: string;
@@ -127,12 +163,15 @@ export interface PromptLockProjectConfig {
127
163
  defaultModel?: string;
128
164
  ci: {
129
165
  failOnRegression: boolean;
130
- reportFormat: ('json' | 'html')[];
166
+ reportFormat: ('json' | 'html' | 'markdown')[];
131
167
  };
132
168
  }
133
169
  export interface LLMProvider {
134
170
  call(prompt: string, options?: PromptLockOptions & {
135
171
  model?: string;
136
172
  }): Promise<string>;
173
+ callWithMeta?(prompt: string, options?: PromptLockOptions & {
174
+ model?: string;
175
+ }): Promise<LLMCallResult>;
137
176
  }
138
177
  //# sourceMappingURL=types.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../src/types.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "prompt-lock",
3
- "version": "0.2.0",
3
+ "version": "0.4.0",
4
4
  "description": "Version control and behavioral regression testing for LLM prompts",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",
@@ -13,6 +13,7 @@
13
13
  },
14
14
  "files": [
15
15
  "dist",
16
+ "schemas",
16
17
  "README.md",
17
18
  "CHANGELOG.md",
18
19
  "LICENSE"
@@ -69,11 +70,13 @@
69
70
  "ajv": "^8.17.0",
70
71
  "chalk": "^4.1.2",
71
72
  "commander": "^12.1.0",
72
- "diff": "^5.2.0"
73
+ "diff": "^5.2.0",
74
+ "js-yaml": "^4.1.1"
73
75
  },
74
76
  "devDependencies": {
75
77
  "@types/diff": "^5.2.0",
76
78
  "@types/jest": "^29.0.0",
79
+ "@types/js-yaml": "^4.0.9",
77
80
  "@types/node": "^20.0.0",
78
81
  "jest": "^29.0.0",
79
82
  "ts-jest": "^29.0.0",