prompt-lock 0.2.0 → 0.3.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 (52) hide show
  1. package/CHANGELOG.md +20 -0
  2. package/README.md +105 -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 +65 -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 +5 -2
  27. package/dist/index.d.ts.map +1 -1
  28. package/dist/index.js +15 -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 +1 -0
  44. package/dist/reporter.d.ts.map +1 -1
  45. package/dist/reporter.js +64 -0
  46. package/dist/reporter.js.map +1 -1
  47. package/dist/runner.d.ts.map +1 -1
  48. package/dist/runner.js +71 -20
  49. package/dist/runner.js.map +1 -1
  50. package/dist/types.d.ts +29 -2
  51. package/dist/types.d.ts.map +1 -1
  52. package/package.json +4 -2
@@ -1 +1 @@
1
- {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":";;AAKA,kCA4BC;AAhCD,qCAAgD;AAChD,2CAAsD;AACtD,qCAAgD;AAEhD,SAAgB,WAAW,CAAC,cAA8B,EAAE,KAAa;IACvE,IAAI,YAAyB,CAAC;IAE9B,IAAI,OAAO,cAAc,KAAK,QAAQ,EAAE,CAAC;QACvC,QAAQ,cAAc,EAAE,CAAC;YACvB,KAAK,QAAQ;gBACX,YAAY,GAAG,IAAA,6BAAoB,GAAE,CAAC;gBACtC,MAAM;YACR,KAAK,WAAW;gBACd,YAAY,GAAG,IAAA,mCAAuB,GAAE,CAAC;gBACzC,MAAM;YACR;gBACE,MAAM,IAAI,KAAK,CACb,sBAAsB,cAAc,8FAA8F,CACnI,CAAC;QACN,CAAC;IACH,CAAC;SAAM,IAAI,cAAc,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC5C,YAAY,GAAG,IAAA,6BAAoB,EAAC,cAAc,CAAC,CAAC;IACtD,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;IAED,8CAA8C;IAC9C,OAAO;QACL,KAAK,CAAC,IAAI,CAAC,MAAc,EAAE,OAA2B;YACpD,OAAO,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1D,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":";;AAKA,kCAoCC;AAxCD,qCAAgD;AAChD,2CAAsD;AACtD,qCAAgD;AAEhD,SAAgB,WAAW,CAAC,cAA8B,EAAE,KAAa;IACvE,IAAI,YAAyB,CAAC;IAE9B,IAAI,OAAO,cAAc,KAAK,QAAQ,EAAE,CAAC;QACvC,QAAQ,cAAc,EAAE,CAAC;YACvB,KAAK,QAAQ;gBACX,YAAY,GAAG,IAAA,6BAAoB,GAAE,CAAC;gBACtC,MAAM;YACR,KAAK,WAAW;gBACd,YAAY,GAAG,IAAA,mCAAuB,GAAE,CAAC;gBACzC,MAAM;YACR;gBACE,MAAM,IAAI,KAAK,CACb,sBAAsB,cAAc,8FAA8F,CACnI,CAAC;QACN,CAAC;IACH,CAAC;SAAM,IAAI,cAAc,CAAC,IAAI,KAAK,QAAQ,EAAE,CAAC;QAC5C,YAAY,GAAG,IAAA,6BAAoB,EAAC,cAAc,CAAC,CAAC;IACtD,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,iCAAiC,CAAC,CAAC;IACrD,CAAC;IAED,8CAA8C;IAC9C,MAAM,OAAO,GAAgB;QAC3B,KAAK,CAAC,IAAI,CAAC,MAAc,EAAE,OAA2B;YACpD,OAAO,YAAY,CAAC,IAAI,CAAC,MAAM,EAAE,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QAC1D,CAAC;KACF,CAAC;IAEF,IAAI,YAAY,CAAC,YAAY,EAAE,CAAC;QAC9B,OAAO,CAAC,YAAY,GAAG,KAAK,EAAE,MAAc,EAAE,OAA2B,EAA0B,EAAE;YACnG,OAAO,YAAY,CAAC,YAAa,CAAC,MAAM,EAAE,EAAE,GAAG,OAAO,EAAE,KAAK,EAAE,CAAC,CAAC;QACnE,CAAC,CAAC;IACJ,CAAC;IAED,OAAO,OAAO,CAAC;AACjB,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAqB,MAAM,UAAU,CAAC;AAE1D,wBAAgB,oBAAoB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,WAAW,CAgDjE"}
1
+ {"version":3,"file":"openai.d.ts","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAoC,MAAM,UAAU,CAAC;AAEzE,wBAAgB,oBAAoB,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,WAAW,CA+DjE"}
@@ -2,43 +2,56 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  exports.createOpenAIProvider = createOpenAIProvider;
4
4
  function createOpenAIProvider(apiKey) {
5
+ async function callImpl(prompt, options) {
6
+ let OpenAI;
7
+ try {
8
+ OpenAI = require('openai').default || require('openai');
9
+ }
10
+ catch {
11
+ throw new Error('OpenAI SDK not found. Install it with: npm install openai');
12
+ }
13
+ const resolvedKey = apiKey || process.env.OPENAI_API_KEY;
14
+ if (!resolvedKey) {
15
+ throw new Error('OpenAI API key not found. Set OPENAI_API_KEY environment variable or pass apiKey to createOpenAIProvider().');
16
+ }
17
+ const client = new OpenAI({ apiKey: resolvedKey });
18
+ const controller = options?.timeout ? new AbortController() : undefined;
19
+ const timer = controller
20
+ ? setTimeout(() => controller.abort(), options.timeout)
21
+ : undefined;
22
+ try {
23
+ const response = await client.chat.completions.create({
24
+ model: options?.model ?? 'gpt-4o-mini',
25
+ messages: [{ role: 'user', content: prompt }],
26
+ max_tokens: options?.maxTokens ?? 1024,
27
+ temperature: options?.temperature,
28
+ }, controller ? { signal: controller.signal } : undefined);
29
+ const text = response.choices[0]?.message?.content ?? '';
30
+ const usage = response.usage ? {
31
+ inputTokens: response.usage.prompt_tokens ?? 0,
32
+ outputTokens: response.usage.completion_tokens ?? 0,
33
+ totalTokens: response.usage.total_tokens ?? 0,
34
+ } : undefined;
35
+ return { text, usage };
36
+ }
37
+ catch (e) {
38
+ if (e.name === 'AbortError') {
39
+ throw new Error(`OpenAI call timed out after ${options.timeout}ms`);
40
+ }
41
+ throw e;
42
+ }
43
+ finally {
44
+ if (timer)
45
+ clearTimeout(timer);
46
+ }
47
+ }
5
48
  return {
6
49
  async call(prompt, options) {
7
- let OpenAI;
8
- try {
9
- OpenAI = require('openai').default || require('openai');
10
- }
11
- catch {
12
- throw new Error('OpenAI SDK not found. Install it with: npm install openai');
13
- }
14
- const resolvedKey = apiKey || process.env.OPENAI_API_KEY;
15
- if (!resolvedKey) {
16
- throw new Error('OpenAI API key not found. Set OPENAI_API_KEY environment variable or pass apiKey to createOpenAIProvider().');
17
- }
18
- const client = new OpenAI({ apiKey: resolvedKey });
19
- const controller = options?.timeout ? new AbortController() : undefined;
20
- const timer = controller
21
- ? setTimeout(() => controller.abort(), options.timeout)
22
- : undefined;
23
- try {
24
- const response = await client.chat.completions.create({
25
- model: options?.model ?? 'gpt-4o-mini',
26
- messages: [{ role: 'user', content: prompt }],
27
- max_tokens: options?.maxTokens ?? 1024,
28
- temperature: options?.temperature,
29
- }, controller ? { signal: controller.signal } : undefined);
30
- return response.choices[0]?.message?.content ?? '';
31
- }
32
- catch (e) {
33
- if (e.name === 'AbortError') {
34
- throw new Error(`OpenAI call timed out after ${options.timeout}ms`);
35
- }
36
- throw e;
37
- }
38
- finally {
39
- if (timer)
40
- clearTimeout(timer);
41
- }
50
+ const result = await callImpl(prompt, options);
51
+ return result.text;
52
+ },
53
+ async callWithMeta(prompt, options) {
54
+ return callImpl(prompt, options);
42
55
  },
43
56
  };
44
57
  }
@@ -1 +1 @@
1
- {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":";;AAEA,oDAgDC;AAhDD,SAAgB,oBAAoB,CAAC,MAAe;IAClD,OAAO;QACL,KAAK,CAAC,IAAI,CAAC,MAAc,EAAE,OAAgD;YACzE,IAAI,MAAW,CAAC;YAChB,IAAI,CAAC;gBACH,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;YAC1D,CAAC;YAAC,MAAM,CAAC;gBACP,MAAM,IAAI,KAAK,CACb,2DAA2D,CAC5D,CAAC;YACJ,CAAC;YAED,MAAM,WAAW,GAAG,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;YACzD,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,MAAM,IAAI,KAAK,CACb,6GAA6G,CAC9G,CAAC;YACJ,CAAC;YAED,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;YAEnD,MAAM,UAAU,GAAG,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,eAAe,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;YACxE,MAAM,KAAK,GAAG,UAAU;gBACtB,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,OAAQ,CAAC,OAAO,CAAC;gBACxD,CAAC,CAAC,SAAS,CAAC;YAEd,IAAI,CAAC;gBACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CACnD;oBACE,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,aAAa;oBACtC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;oBAC7C,UAAU,EAAE,OAAO,EAAE,SAAS,IAAI,IAAI;oBACtC,WAAW,EAAE,OAAO,EAAE,WAAW;iBAClC,EACD,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,CACvD,CAAC;gBAEF,OAAO,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;YACrD,CAAC;YAAC,OAAO,CAAC,EAAE,CAAC;gBACX,IAAK,CAAW,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;oBACvC,MAAM,IAAI,KAAK,CAAC,+BAA+B,OAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;gBACvE,CAAC;gBACD,MAAM,CAAC,CAAC;YACV,CAAC;oBAAS,CAAC;gBACT,IAAI,KAAK;oBAAE,YAAY,CAAC,KAAK,CAAC,CAAC;YACjC,CAAC;QACH,CAAC;KACF,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"openai.js","sourceRoot":"","sources":["../../src/providers/openai.ts"],"names":[],"mappings":";;AAEA,oDA+DC;AA/DD,SAAgB,oBAAoB,CAAC,MAAe;IAClD,KAAK,UAAU,QAAQ,CAAC,MAAc,EAAE,OAAgD;QACtF,IAAI,MAAW,CAAC;QAChB,IAAI,CAAC;YACH,MAAM,GAAG,OAAO,CAAC,QAAQ,CAAC,CAAC,OAAO,IAAI,OAAO,CAAC,QAAQ,CAAC,CAAC;QAC1D,CAAC;QAAC,MAAM,CAAC;YACP,MAAM,IAAI,KAAK,CACb,2DAA2D,CAC5D,CAAC;QACJ,CAAC;QAED,MAAM,WAAW,GAAG,MAAM,IAAI,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC;QACzD,IAAI,CAAC,WAAW,EAAE,CAAC;YACjB,MAAM,IAAI,KAAK,CACb,6GAA6G,CAC9G,CAAC;QACJ,CAAC;QAED,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QAEnD,MAAM,UAAU,GAAG,OAAO,EAAE,OAAO,CAAC,CAAC,CAAC,IAAI,eAAe,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;QACxE,MAAM,KAAK,GAAG,UAAU;YACtB,CAAC,CAAC,UAAU,CAAC,GAAG,EAAE,CAAC,UAAU,CAAC,KAAK,EAAE,EAAE,OAAQ,CAAC,OAAO,CAAC;YACxD,CAAC,CAAC,SAAS,CAAC;QAEd,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CACnD;gBACE,KAAK,EAAE,OAAO,EAAE,KAAK,IAAI,aAAa;gBACtC,QAAQ,EAAE,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,CAAC;gBAC7C,UAAU,EAAE,OAAO,EAAE,SAAS,IAAI,IAAI;gBACtC,WAAW,EAAE,OAAO,EAAE,WAAW;aAClC,EACD,UAAU,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,UAAU,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,SAAS,CACvD,CAAC;YAEF,MAAM,IAAI,GAAG,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,OAAO,IAAI,EAAE,CAAC;YACzD,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,CAAC,CAAC,CAAC;gBAC7B,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,aAAa,IAAI,CAAC;gBAC9C,YAAY,EAAE,QAAQ,CAAC,KAAK,CAAC,iBAAiB,IAAI,CAAC;gBACnD,WAAW,EAAE,QAAQ,CAAC,KAAK,CAAC,YAAY,IAAI,CAAC;aAC9C,CAAC,CAAC,CAAC,SAAS,CAAC;YAEd,OAAO,EAAE,IAAI,EAAE,KAAK,EAAE,CAAC;QACzB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAK,CAAW,CAAC,IAAI,KAAK,YAAY,EAAE,CAAC;gBACvC,MAAM,IAAI,KAAK,CAAC,+BAA+B,OAAQ,CAAC,OAAO,IAAI,CAAC,CAAC;YACvE,CAAC;YACD,MAAM,CAAC,CAAC;QACV,CAAC;gBAAS,CAAC;YACT,IAAI,KAAK;gBAAE,YAAY,CAAC,KAAK,CAAC,CAAC;QACjC,CAAC;IACH,CAAC;IAED,OAAO;QACL,KAAK,CAAC,IAAI,CAAC,MAAc,EAAE,OAAgD;YACzE,MAAM,MAAM,GAAG,MAAM,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;YAC/C,OAAO,MAAM,CAAC,IAAI,CAAC;QACrB,CAAC;QACD,KAAK,CAAC,YAAY,CAAC,MAAc,EAAE,OAAgD;YACjF,OAAO,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;QACnC,CAAC;KACF,CAAC;AACJ,CAAC"}
@@ -3,4 +3,5 @@ export declare function printConsoleReport(results: RunResult[]): void;
3
3
  export declare function printDiffReport(diffs: DiffResult[]): void;
4
4
  export declare function generateJsonReport(results: RunResult[], outputDir?: string): Promise<string>;
5
5
  export declare function generateHtmlReport(results: RunResult[], outputDir?: string): Promise<string>;
6
+ export declare function generateMarkdownReport(results: RunResult[], outputDir?: string): Promise<string>;
6
7
  //# sourceMappingURL=reporter.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"reporter.d.ts","sourceRoot":"","sources":["../src/reporter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAMhD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI,CA0D7D;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,IAAI,CAiBzD;AAED,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,SAAS,EAAE,EACpB,SAAS,GAAE,MAA2B,GACrC,OAAO,CAAC,MAAM,CAAC,CA8BjB;AAED,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,SAAS,EAAE,EACpB,SAAS,GAAE,MAA2B,GACrC,OAAO,CAAC,MAAM,CAAC,CA0GjB"}
1
+ {"version":3,"file":"reporter.d.ts","sourceRoot":"","sources":["../src/reporter.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,SAAS,CAAC;AAMhD,wBAAgB,kBAAkB,CAAC,OAAO,EAAE,SAAS,EAAE,GAAG,IAAI,CAiE7D;AAED,wBAAgB,eAAe,CAAC,KAAK,EAAE,UAAU,EAAE,GAAG,IAAI,CAiBzD;AAED,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,SAAS,EAAE,EACpB,SAAS,GAAE,MAA2B,GACrC,OAAO,CAAC,MAAM,CAAC,CAgCjB;AAED,wBAAsB,kBAAkB,CACtC,OAAO,EAAE,SAAS,EAAE,EACpB,SAAS,GAAE,MAA2B,GACrC,OAAO,CAAC,MAAM,CAAC,CA0GjB;AAED,wBAAsB,sBAAsB,CAC1C,OAAO,EAAE,SAAS,EAAE,EACpB,SAAS,GAAE,MAA2B,GACrC,OAAO,CAAC,MAAM,CAAC,CA0DjB"}
package/dist/reporter.js CHANGED
@@ -40,6 +40,7 @@ exports.printConsoleReport = printConsoleReport;
40
40
  exports.printDiffReport = printDiffReport;
41
41
  exports.generateJsonReport = generateJsonReport;
42
42
  exports.generateHtmlReport = generateHtmlReport;
43
+ exports.generateMarkdownReport = generateMarkdownReport;
43
44
  const path = __importStar(require("path"));
44
45
  const chalk_1 = __importDefault(require("chalk"));
45
46
  const utils_1 = require("./utils");
@@ -83,6 +84,12 @@ function printConsoleReport(results) {
83
84
  }
84
85
  }
85
86
  }
87
+ // Cost summary
88
+ const totalCost = results.reduce((sum, r) => sum + (r.cost ?? 0), 0);
89
+ const totalTokens = results.reduce((sum, r) => sum + (r.tokens?.totalTokens ?? 0), 0);
90
+ if (totalCost > 0 || totalTokens > 0) {
91
+ console.log(chalk_1.default.dim(` Cost: $${totalCost.toFixed(6)} · ${totalTokens} tokens`));
92
+ }
86
93
  console.log('');
87
94
  if (failed > 0) {
88
95
  console.log(chalk_1.default.red(`Run complete. ${failed} failure${failed !== 1 ? 's' : ''}. Exit code: 1`));
@@ -126,6 +133,8 @@ async function generateJsonReport(results, outputDir = DEFAULT_REPORT_DIR) {
126
133
  passed: r.passed,
127
134
  duration: r.duration,
128
135
  assertions: r.assertions,
136
+ tokens: r.tokens,
137
+ cost: r.cost,
129
138
  outputPreview: r.output.slice(0, 500),
130
139
  datasetResults: r.datasetResults?.map(d => ({
131
140
  vars: d.vars,
@@ -241,6 +250,61 @@ async function generateHtmlReport(results, outputDir = DEFAULT_REPORT_DIR) {
241
250
  await fs.promises.writeFile(filePath, html, 'utf-8');
242
251
  return filePath;
243
252
  }
253
+ async function generateMarkdownReport(results, outputDir = DEFAULT_REPORT_DIR) {
254
+ const timestamp = new Date().toISOString().replace(/[:.]/g, '-');
255
+ const filePath = path.join(outputDir, `run-${timestamp}.md`);
256
+ const total = results.length;
257
+ const passed = results.filter(r => r.passed).length;
258
+ const failed = total - passed;
259
+ const totalCost = results.reduce((sum, r) => sum + (r.cost ?? 0), 0);
260
+ const totalTokens = results.reduce((sum, r) => sum + (r.tokens?.totalTokens ?? 0), 0);
261
+ let md = `# prompt-lock Report\n\n`;
262
+ md += `**${total}** prompts evaluated · **${passed}** passed · **${failed}** failed`;
263
+ if (totalCost > 0) {
264
+ md += ` · $${totalCost.toFixed(6)} · ${totalTokens} tokens`;
265
+ }
266
+ md += `\n\n`;
267
+ // Summary table
268
+ md += `| Prompt | Model | Status | Assertions | Duration |\n`;
269
+ md += `|--------|-------|--------|------------|----------|\n`;
270
+ for (const r of results) {
271
+ const status = r.passed ? 'Pass' : 'FAIL';
272
+ const assertPassed = r.assertions.filter(a => a.passed).length;
273
+ md += `| ${r.id} | ${r.model} | ${status} | ${assertPassed}/${r.assertions.length} | ${r.duration}ms |\n`;
274
+ }
275
+ md += `\n`;
276
+ // Per-prompt details
277
+ for (const r of results) {
278
+ const failedAssertions = r.assertions.filter(a => !a.passed);
279
+ if (failedAssertions.length > 0) {
280
+ md += `### ${r.id} — Failures\n\n`;
281
+ for (const a of failedAssertions) {
282
+ md += `- **${a.name}**`;
283
+ if (a.expected)
284
+ md += `: expected ${a.expected}, got ${a.actual}`;
285
+ if (a.message)
286
+ md += ` — ${a.message}`;
287
+ md += `\n`;
288
+ }
289
+ md += `\n`;
290
+ }
291
+ if (r.datasetResults && r.datasetResults.length > 0) {
292
+ const dsPassed = r.datasetResults.filter(d => d.passed).length;
293
+ md += `### ${r.id} — Dataset (${dsPassed}/${r.datasetResults.length})\n\n`;
294
+ md += `| # | Variables | Status | Duration |\n`;
295
+ md += `|---|-----------|--------|----------|\n`;
296
+ for (let i = 0; i < r.datasetResults.length; i++) {
297
+ const d = r.datasetResults[i];
298
+ const varsStr = Object.entries(d.vars).map(([k, v]) => `${k}="${v.slice(0, 30)}"`).join(', ');
299
+ md += `| ${i + 1} | ${varsStr} | ${d.passed ? 'Pass' : 'FAIL'} | ${d.duration}ms |\n`;
300
+ }
301
+ md += `\n`;
302
+ }
303
+ }
304
+ await (0, utils_1.ensureDir)(outputDir);
305
+ await fs.promises.writeFile(filePath, md, 'utf-8');
306
+ return filePath;
307
+ }
244
308
  function escapeHtml(s) {
245
309
  return s
246
310
  .replace(/&/g, '&amp;')
@@ -1 +1 @@
1
- {"version":3,"file":"reporter.js","sourceRoot":"","sources":["../src/reporter.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"reporter.js","sourceRoot":"","sources":["../src/reporter.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAqC,MAAM,SAAS,CAAC;AAMzF,OAAO,EAAa,YAAY,EAAE,MAAM,SAAS,CAAC;AAElD,MAAM,WAAW,UAAU;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC9B,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC;IACvC,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACnD;AA8CD,wBAAsB,SAAS,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,CA4G/F;AAED,wBAAsB,MAAM,CAC1B,OAAO,EAAE,gBAAgB,EAAE,EAC3B,IAAI,CAAC,EAAE,UAAU,GAChB,OAAO,CAAC,SAAS,EAAE,CAAC,CAetB"}
1
+ {"version":3,"file":"runner.d.ts","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAE,SAAS,EAAiD,MAAM,SAAS,CAAC;AAMrG,OAAO,EAAa,YAAY,EAAE,MAAM,SAAS,CAAC;AAIlD,MAAM,WAAW,UAAU;IACzB,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,CAAC;IAC9B,QAAQ,CAAC,EAAE,CAAC,MAAM,EAAE,SAAS,KAAK,IAAI,CAAC;IACvC,UAAU,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,KAAK,IAAI,CAAC;CACnD;AA+DD,wBAAsB,SAAS,CAAC,MAAM,EAAE,gBAAgB,EAAE,IAAI,CAAC,EAAE,UAAU,GAAG,OAAO,CAAC,SAAS,CAAC,CA+I/F;AAED,wBAAsB,MAAM,CAC1B,OAAO,EAAE,gBAAgB,EAAE,EAC3B,IAAI,CAAC,EAAE,UAAU,GAChB,OAAO,CAAC,SAAS,EAAE,CAAC,CAetB"}
package/dist/runner.js CHANGED
@@ -8,6 +8,8 @@ const utils_1 = require("./utils");
8
8
  const config_validation_1 = require("./config-validation");
9
9
  const cache_1 = require("./cache");
10
10
  const retry_1 = require("./retry");
11
+ const pricing_1 = require("./pricing");
12
+ const dataset_loader_1 = require("./dataset-loader");
11
13
  function getCache(opts) {
12
14
  if (!opts?.cache)
13
15
  return null;
@@ -25,17 +27,30 @@ async function callWithCacheAndRetry(provider, prompt, model, opts, providerOpts
25
27
  return { output: cached, cached: true };
26
28
  }
27
29
  }
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);
30
+ // Call with retry — prefer callWithMeta if available
31
+ let output;
32
+ let usage;
33
+ if (provider.callWithMeta) {
34
+ const result = await (0, retry_1.withRetry)(() => provider.callWithMeta(prompt, providerOpts), opts?.retry, opts?.verbose
35
+ ? (attempt, error, delay) => {
36
+ process.stderr.write(` [retry] attempt ${attempt}: ${error.message} — retrying in ${delay}ms\n`);
37
+ }
38
+ : undefined);
39
+ output = result.text;
40
+ usage = result.usage;
41
+ }
42
+ else {
43
+ output = await (0, retry_1.withRetry)(() => provider.call(prompt, providerOpts), opts?.retry, opts?.verbose
44
+ ? (attempt, error, delay) => {
45
+ process.stderr.write(` [retry] attempt ${attempt}: ${error.message} — retrying in ${delay}ms\n`);
46
+ }
47
+ : undefined);
48
+ }
34
49
  // Save to cache
35
50
  if (cache) {
36
51
  await cache.set(prompt, model, output);
37
52
  }
38
- return { output, cached: false };
53
+ return { output, cached: false, usage };
39
54
  }
40
55
  async function runPrompt(config, opts) {
41
56
  const startTime = Date.now();
@@ -67,7 +82,7 @@ async function runPrompt(config, opts) {
67
82
  : config.prompt;
68
83
  if (opts?.dryRun) {
69
84
  const output = '[DRY RUN — no LLM call made]';
70
- const assertionResults = await runAssertionsWithLatency(output, config.assertions, 0);
85
+ const assertionResults = await runAssertionsEnriched(output, config.assertions, 0, 0);
71
86
  return {
72
87
  id: config.id,
73
88
  version: config.version,
@@ -87,33 +102,63 @@ async function runPrompt(config, opts) {
87
102
  opts?.onProgress?.(config.id, 'calling LLM...');
88
103
  const provider = (0, providers_1.getProvider)(config.provider, config.model);
89
104
  const callStart = Date.now();
90
- const { output, cached } = await callWithCacheAndRetry(provider, renderedPrompt, config.model, opts, config.options);
105
+ const { output, cached, usage } = await callWithCacheAndRetry(provider, renderedPrompt, config.model, opts, config.options);
91
106
  const callDuration = Date.now() - callStart;
107
+ const callCost = usage ? (0, pricing_1.estimateCost)(config.model, usage) : 0;
92
108
  if (opts?.verbose) {
93
109
  const src = cached ? 'cached' : 'live';
94
110
  process.stderr.write(` [verbose] ${config.id}: ${src} response in ${callDuration}ms (${output.length} chars)\n`);
111
+ if (usage) {
112
+ process.stderr.write(` [verbose] ${config.id}: ${usage.totalTokens} tokens, $${callCost.toFixed(6)}\n`);
113
+ }
95
114
  }
96
- // Run assertions (inject latency for max-latency)
97
- const assertionResults = await runAssertionsWithLatency(output, config.assertions, callDuration);
115
+ // Run assertions (inject latency + cost)
116
+ const assertionResults = await runAssertionsEnriched(output, config.assertions, callDuration, callCost);
98
117
  const allPassed = assertionResults.every(r => r.passed);
99
118
  const totalDuration = Date.now() - startTime;
119
+ // Accumulate total tokens/cost
120
+ let totalTokens = usage ? { ...usage } : undefined;
121
+ let totalCost = callCost;
122
+ // Resolve dataset (file path or inline)
123
+ let dataset;
124
+ if (config.dataset) {
125
+ if (typeof config.dataset === 'string') {
126
+ dataset = await (0, dataset_loader_1.loadDataset)(config.dataset, process.cwd());
127
+ }
128
+ else {
129
+ dataset = config.dataset;
130
+ }
131
+ }
100
132
  // Dataset runs
101
133
  let datasetResults;
102
- if (config.dataset && config.dataset.length > 0) {
103
- opts?.onProgress?.(config.id, `running dataset (${config.dataset.length} inputs)...`);
134
+ if (dataset && dataset.length > 0) {
135
+ opts?.onProgress?.(config.id, `running dataset (${dataset.length} inputs)...`);
104
136
  datasetResults = [];
105
- for (const vars of config.dataset) {
137
+ for (const vars of dataset) {
106
138
  const dsPrompt = (0, utils_1.renderTemplate)(config.prompt, vars);
107
139
  const dsStart = Date.now();
108
140
  const dsResult = await callWithCacheAndRetry(provider, dsPrompt, config.model, opts, config.options);
109
141
  const dsDuration = Date.now() - dsStart;
110
- const dsAssertions = await runAssertionsWithLatency(dsResult.output, config.assertions, dsDuration);
142
+ const dsCost = dsResult.usage ? (0, pricing_1.estimateCost)(config.model, dsResult.usage) : 0;
143
+ const dsAssertions = await runAssertionsEnriched(dsResult.output, config.assertions, dsDuration, dsCost);
144
+ // Accumulate tokens
145
+ if (dsResult.usage) {
146
+ if (!totalTokens) {
147
+ totalTokens = { inputTokens: 0, outputTokens: 0, totalTokens: 0 };
148
+ }
149
+ totalTokens.inputTokens += dsResult.usage.inputTokens;
150
+ totalTokens.outputTokens += dsResult.usage.outputTokens;
151
+ totalTokens.totalTokens += dsResult.usage.totalTokens;
152
+ }
153
+ totalCost += dsCost;
111
154
  datasetResults.push({
112
155
  vars,
113
156
  output: dsResult.output,
114
157
  assertions: dsAssertions,
115
158
  passed: dsAssertions.every(r => r.passed),
116
159
  duration: dsDuration,
160
+ tokens: dsResult.usage,
161
+ cost: dsCost,
117
162
  });
118
163
  }
119
164
  }
@@ -133,6 +178,8 @@ async function runPrompt(config, opts) {
133
178
  passed: allPassed && datasetAllPassed,
134
179
  duration: totalDuration,
135
180
  timestamp: new Date().toISOString(),
181
+ tokens: totalTokens,
182
+ cost: totalCost > 0 ? totalCost : undefined,
136
183
  datasetResults,
137
184
  };
138
185
  }
@@ -152,7 +199,7 @@ async function runAll(configs, opts) {
152
199
  }
153
200
  async function runParallel(configs, concurrency, opts) {
154
201
  const results = new Array(configs.length);
155
- const queue = [...configs.keys()]; // [0, 1, 2, ...]
202
+ const queue = [...configs.keys()];
156
203
  async function worker() {
157
204
  while (queue.length > 0) {
158
205
  const i = queue.shift();
@@ -189,10 +236,14 @@ async function runSafe(config, opts) {
189
236
  };
190
237
  }
191
238
  }
192
- async function runAssertionsWithLatency(output, assertions, durationMs) {
193
- const enriched = assertions.map(a => a.type === 'max-latency'
194
- ? { ...a, __duration: durationMs }
195
- : a);
239
+ async function runAssertionsEnriched(output, assertions, durationMs, costDollars) {
240
+ const enriched = assertions.map(a => {
241
+ if (a.type === 'max-latency')
242
+ return { ...a, __duration: durationMs };
243
+ if (a.type === 'max-cost')
244
+ return { ...a, __cost: costDollars };
245
+ return a;
246
+ });
196
247
  return (0, assertions_1.runAssertions)(output, enriched);
197
248
  }
198
249
  function providerName(config) {
@@ -1 +1 @@
1
- {"version":3,"file":"runner.js","sourceRoot":"","sources":["../src/runner.ts"],"names":[],"mappings":"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"}
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,8 @@ export interface DatasetRunResult {
96
118
  assertions: AssertionResult[];
97
119
  passed: boolean;
98
120
  duration: number;
121
+ tokens?: TokenUsage;
122
+ cost?: number;
99
123
  }
100
124
  export interface SnapshotData {
101
125
  id: string;
@@ -127,12 +151,15 @@ export interface PromptLockProjectConfig {
127
151
  defaultModel?: string;
128
152
  ci: {
129
153
  failOnRegression: boolean;
130
- reportFormat: ('json' | 'html')[];
154
+ reportFormat: ('json' | 'html' | 'markdown')[];
131
155
  };
132
156
  }
133
157
  export interface LLMProvider {
134
158
  call(prompt: string, options?: PromptLockOptions & {
135
159
  model?: string;
136
160
  }): Promise<string>;
161
+ callWithMeta?(prompt: string, options?: PromptLockOptions & {
162
+ model?: string;
163
+ }): Promise<LLMCallResult>;
137
164
  }
138
165
  //# 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.3.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",
@@ -69,11 +69,13 @@
69
69
  "ajv": "^8.17.0",
70
70
  "chalk": "^4.1.2",
71
71
  "commander": "^12.1.0",
72
- "diff": "^5.2.0"
72
+ "diff": "^5.2.0",
73
+ "js-yaml": "^4.1.1"
73
74
  },
74
75
  "devDependencies": {
75
76
  "@types/diff": "^5.2.0",
76
77
  "@types/jest": "^29.0.0",
78
+ "@types/js-yaml": "^4.0.9",
77
79
  "@types/node": "^20.0.0",
78
80
  "jest": "^29.0.0",
79
81
  "ts-jest": "^29.0.0",