eqho-eval 0.5.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 (179) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +552 -0
  3. package/dist/cli/auth-store.d.ts +5 -0
  4. package/dist/cli/auth-store.d.ts.map +1 -0
  5. package/dist/cli/auth-store.js +39 -0
  6. package/dist/cli/auth-store.js.map +1 -0
  7. package/dist/cli/banner.d.ts +3 -0
  8. package/dist/cli/banner.d.ts.map +1 -0
  9. package/dist/cli/banner.js +38 -0
  10. package/dist/cli/banner.js.map +1 -0
  11. package/dist/cli/commands/action-eval.d.ts +3 -0
  12. package/dist/cli/commands/action-eval.d.ts.map +1 -0
  13. package/dist/cli/commands/action-eval.js +133 -0
  14. package/dist/cli/commands/action-eval.js.map +1 -0
  15. package/dist/cli/commands/auth.d.ts +3 -0
  16. package/dist/cli/commands/auth.d.ts.map +1 -0
  17. package/dist/cli/commands/auth.js +156 -0
  18. package/dist/cli/commands/auth.js.map +1 -0
  19. package/dist/cli/commands/cache.d.ts +3 -0
  20. package/dist/cli/commands/cache.d.ts.map +1 -0
  21. package/dist/cli/commands/cache.js +43 -0
  22. package/dist/cli/commands/cache.js.map +1 -0
  23. package/dist/cli/commands/ci.d.ts +3 -0
  24. package/dist/cli/commands/ci.d.ts.map +1 -0
  25. package/dist/cli/commands/ci.js +124 -0
  26. package/dist/cli/commands/ci.js.map +1 -0
  27. package/dist/cli/commands/conversations.d.ts +3 -0
  28. package/dist/cli/commands/conversations.d.ts.map +1 -0
  29. package/dist/cli/commands/conversations.js +89 -0
  30. package/dist/cli/commands/conversations.js.map +1 -0
  31. package/dist/cli/commands/diff.d.ts +3 -0
  32. package/dist/cli/commands/diff.d.ts.map +1 -0
  33. package/dist/cli/commands/diff.js +122 -0
  34. package/dist/cli/commands/diff.js.map +1 -0
  35. package/dist/cli/commands/doctor.d.ts +11 -0
  36. package/dist/cli/commands/doctor.d.ts.map +1 -0
  37. package/dist/cli/commands/doctor.js +308 -0
  38. package/dist/cli/commands/doctor.js.map +1 -0
  39. package/dist/cli/commands/eval.d.ts +3 -0
  40. package/dist/cli/commands/eval.d.ts.map +1 -0
  41. package/dist/cli/commands/eval.js +101 -0
  42. package/dist/cli/commands/eval.js.map +1 -0
  43. package/dist/cli/commands/init.d.ts +3 -0
  44. package/dist/cli/commands/init.d.ts.map +1 -0
  45. package/dist/cli/commands/init.js +182 -0
  46. package/dist/cli/commands/init.js.map +1 -0
  47. package/dist/cli/commands/list.d.ts +3 -0
  48. package/dist/cli/commands/list.d.ts.map +1 -0
  49. package/dist/cli/commands/list.js +80 -0
  50. package/dist/cli/commands/list.js.map +1 -0
  51. package/dist/cli/commands/mentions.d.ts +3 -0
  52. package/dist/cli/commands/mentions.d.ts.map +1 -0
  53. package/dist/cli/commands/mentions.js +125 -0
  54. package/dist/cli/commands/mentions.js.map +1 -0
  55. package/dist/cli/commands/org.d.ts +3 -0
  56. package/dist/cli/commands/org.d.ts.map +1 -0
  57. package/dist/cli/commands/org.js +196 -0
  58. package/dist/cli/commands/org.js.map +1 -0
  59. package/dist/cli/commands/postcall-eval.d.ts +3 -0
  60. package/dist/cli/commands/postcall-eval.d.ts.map +1 -0
  61. package/dist/cli/commands/postcall-eval.js +188 -0
  62. package/dist/cli/commands/postcall-eval.js.map +1 -0
  63. package/dist/cli/commands/render.d.ts +3 -0
  64. package/dist/cli/commands/render.d.ts.map +1 -0
  65. package/dist/cli/commands/render.js +223 -0
  66. package/dist/cli/commands/render.js.map +1 -0
  67. package/dist/cli/commands/results.d.ts +3 -0
  68. package/dist/cli/commands/results.d.ts.map +1 -0
  69. package/dist/cli/commands/results.js +128 -0
  70. package/dist/cli/commands/results.js.map +1 -0
  71. package/dist/cli/commands/scenarios.d.ts +3 -0
  72. package/dist/cli/commands/scenarios.d.ts.map +1 -0
  73. package/dist/cli/commands/scenarios.js +57 -0
  74. package/dist/cli/commands/scenarios.js.map +1 -0
  75. package/dist/cli/commands/start.d.ts +3 -0
  76. package/dist/cli/commands/start.d.ts.map +1 -0
  77. package/dist/cli/commands/start.js +260 -0
  78. package/dist/cli/commands/start.js.map +1 -0
  79. package/dist/cli/commands/status.d.ts +3 -0
  80. package/dist/cli/commands/status.d.ts.map +1 -0
  81. package/dist/cli/commands/status.js +133 -0
  82. package/dist/cli/commands/status.js.map +1 -0
  83. package/dist/cli/commands/sync.d.ts +3 -0
  84. package/dist/cli/commands/sync.d.ts.map +1 -0
  85. package/dist/cli/commands/sync.js +80 -0
  86. package/dist/cli/commands/sync.js.map +1 -0
  87. package/dist/cli/commands/view.d.ts +3 -0
  88. package/dist/cli/commands/view.d.ts.map +1 -0
  89. package/dist/cli/commands/view.js +29 -0
  90. package/dist/cli/commands/view.js.map +1 -0
  91. package/dist/cli/error-handler.d.ts +8 -0
  92. package/dist/cli/error-handler.d.ts.map +1 -0
  93. package/dist/cli/error-handler.js +133 -0
  94. package/dist/cli/error-handler.js.map +1 -0
  95. package/dist/cli/gateway.d.ts +14 -0
  96. package/dist/cli/gateway.d.ts.map +1 -0
  97. package/dist/cli/gateway.js +222 -0
  98. package/dist/cli/gateway.js.map +1 -0
  99. package/dist/cli/index.d.ts +3 -0
  100. package/dist/cli/index.d.ts.map +1 -0
  101. package/dist/cli/index.js +194 -0
  102. package/dist/cli/index.js.map +1 -0
  103. package/dist/core/action-eval-builder.d.ts +20 -0
  104. package/dist/core/action-eval-builder.d.ts.map +1 -0
  105. package/dist/core/action-eval-builder.js +276 -0
  106. package/dist/core/action-eval-builder.js.map +1 -0
  107. package/dist/core/agent-fetcher.d.ts +35 -0
  108. package/dist/core/agent-fetcher.d.ts.map +1 -0
  109. package/dist/core/agent-fetcher.js +81 -0
  110. package/dist/core/agent-fetcher.js.map +1 -0
  111. package/dist/core/api-cache.d.ts +11 -0
  112. package/dist/core/api-cache.d.ts.map +1 -0
  113. package/dist/core/api-cache.js +89 -0
  114. package/dist/core/api-cache.js.map +1 -0
  115. package/dist/core/config-generator.d.ts +26 -0
  116. package/dist/core/config-generator.d.ts.map +1 -0
  117. package/dist/core/config-generator.js +457 -0
  118. package/dist/core/config-generator.js.map +1 -0
  119. package/dist/core/conversation-loader.d.ts +21 -0
  120. package/dist/core/conversation-loader.d.ts.map +1 -0
  121. package/dist/core/conversation-loader.js +74 -0
  122. package/dist/core/conversation-loader.js.map +1 -0
  123. package/dist/core/dataset-loader.d.ts +26 -0
  124. package/dist/core/dataset-loader.d.ts.map +1 -0
  125. package/dist/core/dataset-loader.js +121 -0
  126. package/dist/core/dataset-loader.js.map +1 -0
  127. package/dist/core/disposition-builder.d.ts +38 -0
  128. package/dist/core/disposition-builder.d.ts.map +1 -0
  129. package/dist/core/disposition-builder.js +270 -0
  130. package/dist/core/disposition-builder.js.map +1 -0
  131. package/dist/core/eqho-client.d.ts +45 -0
  132. package/dist/core/eqho-client.d.ts.map +1 -0
  133. package/dist/core/eqho-client.js +154 -0
  134. package/dist/core/eqho-client.js.map +1 -0
  135. package/dist/core/greeting-builder.d.ts +18 -0
  136. package/dist/core/greeting-builder.d.ts.map +1 -0
  137. package/dist/core/greeting-builder.js +83 -0
  138. package/dist/core/greeting-builder.js.map +1 -0
  139. package/dist/core/postcall-simulator.d.ts +20 -0
  140. package/dist/core/postcall-simulator.d.ts.map +1 -0
  141. package/dist/core/postcall-simulator.js +212 -0
  142. package/dist/core/postcall-simulator.js.map +1 -0
  143. package/dist/core/prompt-assembler.d.ts +25 -0
  144. package/dist/core/prompt-assembler.d.ts.map +1 -0
  145. package/dist/core/prompt-assembler.js +185 -0
  146. package/dist/core/prompt-assembler.js.map +1 -0
  147. package/dist/core/promptfoo-runner.d.ts +13 -0
  148. package/dist/core/promptfoo-runner.d.ts.map +1 -0
  149. package/dist/core/promptfoo-runner.js +49 -0
  150. package/dist/core/promptfoo-runner.js.map +1 -0
  151. package/dist/core/provider-mapper.d.ts +39 -0
  152. package/dist/core/provider-mapper.d.ts.map +1 -0
  153. package/dist/core/provider-mapper.js +120 -0
  154. package/dist/core/provider-mapper.js.map +1 -0
  155. package/dist/core/template-engine.d.ts +10 -0
  156. package/dist/core/template-engine.d.ts.map +1 -0
  157. package/dist/core/template-engine.js +78 -0
  158. package/dist/core/template-engine.js.map +1 -0
  159. package/dist/core/tools-builder.d.ts +14 -0
  160. package/dist/core/tools-builder.d.ts.map +1 -0
  161. package/dist/core/tools-builder.js +208 -0
  162. package/dist/core/tools-builder.js.map +1 -0
  163. package/dist/index.d.ts +18 -0
  164. package/dist/index.d.ts.map +1 -0
  165. package/dist/index.js +16 -0
  166. package/dist/index.js.map +1 -0
  167. package/dist/types/config.d.ts +100 -0
  168. package/dist/types/config.d.ts.map +1 -0
  169. package/dist/types/config.js +2 -0
  170. package/dist/types/config.js.map +1 -0
  171. package/dist/types/eqho.d.ts +221 -0
  172. package/dist/types/eqho.d.ts.map +1 -0
  173. package/dist/types/eqho.js +2 -0
  174. package/dist/types/eqho.js.map +1 -0
  175. package/dist/types/helpers.d.ts +9 -0
  176. package/dist/types/helpers.d.ts.map +1 -0
  177. package/dist/types/helpers.js +8 -0
  178. package/dist/types/helpers.js.map +1 -0
  179. package/package.json +77 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"eqho-client.js","sourceRoot":"","sources":["../../src/core/eqho-client.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,18 @@
1
+ import type { EqhoAgentDetails } from "../types/eqho.js";
2
+ import type { FullAgent } from "../types/eqho.js";
3
+ export interface GreetingConfig {
4
+ greetings: string[];
5
+ greetingTypeInbound?: string;
6
+ greetingTypeOutbound?: string;
7
+ }
8
+ /**
9
+ * Extracts greeting configuration from agent details.
10
+ * Supports both FullAgent (with details merged) and EqhoAgentDetails.
11
+ */
12
+ export declare function extractGreetings(agent: FullAgent | EqhoAgentDetails): GreetingConfig;
13
+ /**
14
+ * Generates test cases specifically for greeting evaluation.
15
+ * Tests that the agent's opening message matches configured greetings.
16
+ */
17
+ export declare function buildGreetingTests(config: GreetingConfig, agentName: string): Array<Record<string, unknown>>;
18
+ //# sourceMappingURL=greeting-builder.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"greeting-builder.d.ts","sourceRoot":"","sources":["../../src/core/greeting-builder.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,kBAAkB,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAElD,MAAM,WAAW,cAAc;IAC7B,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,oBAAoB,CAAC,EAAE,MAAM,CAAC;CAC/B;AAED;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,KAAK,EAAE,SAAS,GAAG,gBAAgB,GAClC,cAAc,CAOhB;AAED;;;GAGG;AACH,wBAAgB,kBAAkB,CAChC,MAAM,EAAE,cAAc,EACtB,SAAS,EAAE,MAAM,GAChB,KAAK,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC,CAuDhC"}
@@ -0,0 +1,83 @@
1
+ /**
2
+ * Extracts greeting configuration from agent details.
3
+ * Supports both FullAgent (with details merged) and EqhoAgentDetails.
4
+ */
5
+ export function extractGreetings(agent) {
6
+ const details = agent;
7
+ return {
8
+ greetings: details.greetings ?? [],
9
+ greetingTypeInbound: details.greeting_type_inbound,
10
+ greetingTypeOutbound: details.greeting_type_outbound,
11
+ };
12
+ }
13
+ /**
14
+ * Generates test cases specifically for greeting evaluation.
15
+ * Tests that the agent's opening message matches configured greetings.
16
+ */
17
+ export function buildGreetingTests(config, agentName) {
18
+ const tests = [];
19
+ if (config.greetings.length === 0) {
20
+ tests.push({
21
+ description: "Greeting — agent introduces themselves naturally",
22
+ vars: { message: "..." },
23
+ assert: [
24
+ {
25
+ type: "llm-rubric",
26
+ value: `The agent "${agentName}" should provide a natural, professional greeting. It should introduce itself and/or the company in a warm, welcoming tone.`,
27
+ },
28
+ ],
29
+ });
30
+ return tests;
31
+ }
32
+ tests.push({
33
+ description: "Greeting — matches configured greeting style",
34
+ vars: { message: "..." },
35
+ assert: [
36
+ {
37
+ type: "llm-rubric",
38
+ value: buildGreetingRubric(config, agentName),
39
+ },
40
+ ],
41
+ });
42
+ if (config.greetings.length > 1) {
43
+ tests.push({
44
+ description: "Greeting — variety across multiple runs",
45
+ vars: { message: "Hello?" },
46
+ assert: [
47
+ {
48
+ type: "llm-rubric",
49
+ value: `The agent "${agentName}" has ${config.greetings.length} configured greetings. The response should use one of them or closely match their style and tone. Exact wording is not required, but the greeting should feel consistent with the configured options.`,
50
+ },
51
+ ],
52
+ });
53
+ }
54
+ if (config.greetingTypeInbound === "dynamic") {
55
+ tests.push({
56
+ description: "Greeting — dynamic inbound greeting adapts to context",
57
+ vars: { message: "Hey, I saw your ad and wanted to call." },
58
+ assert: [
59
+ {
60
+ type: "llm-rubric",
61
+ value: `The agent "${agentName}" uses dynamic greetings for inbound calls. The response should feel personalized or context-aware rather than using a rigid script. It should still be professional and welcoming.`,
62
+ },
63
+ ],
64
+ });
65
+ }
66
+ return tests;
67
+ }
68
+ function buildGreetingRubric(config, agentName) {
69
+ const greetingExamples = config.greetings
70
+ .slice(0, 3)
71
+ .map((g) => `"${g.slice(0, 100)}${g.length > 100 ? "..." : ""}"`)
72
+ .join(", ");
73
+ return [
74
+ `The agent "${agentName}" should greet in a manner consistent with its configured greetings.`,
75
+ `Example greetings: ${greetingExamples}.`,
76
+ "The response should:",
77
+ "1. Be warm and professional",
78
+ "2. Identify the agent or company",
79
+ "3. Match the tone and style of the configured greetings",
80
+ "4. Not contain excessive information or long introductions",
81
+ ].join("\n");
82
+ }
83
+ //# sourceMappingURL=greeting-builder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"greeting-builder.js","sourceRoot":"","sources":["../../src/core/greeting-builder.ts"],"names":[],"mappings":"AASA;;;GAGG;AACH,MAAM,UAAU,gBAAgB,CAC9B,KAAmC;IAEnC,MAAM,OAAO,GAAG,KAAyB,CAAC;IAC1C,OAAO;QACL,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE;QAClC,mBAAmB,EAAE,OAAO,CAAC,qBAAqB;QAClD,oBAAoB,EAAE,OAAO,CAAC,sBAAsB;KACrD,CAAC;AACJ,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,kBAAkB,CAChC,MAAsB,EACtB,SAAiB;IAEjB,MAAM,KAAK,GAAmC,EAAE,CAAC;IAEjD,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QAClC,KAAK,CAAC,IAAI,CAAC;YACT,WAAW,EAAE,kDAAkD;YAC/D,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;YACxB,MAAM,EAAE;gBACN;oBACE,IAAI,EAAE,YAAY;oBAClB,KAAK,EAAE,cAAc,SAAS,6HAA6H;iBAC5J;aACF;SACF,CAAC,CAAC;QACH,OAAO,KAAK,CAAC;IACf,CAAC;IAED,KAAK,CAAC,IAAI,CAAC;QACT,WAAW,EAAE,8CAA8C;QAC3D,IAAI,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE;QACxB,MAAM,EAAE;YACN;gBACE,IAAI,EAAE,YAAY;gBAClB,KAAK,EAAE,mBAAmB,CAAC,MAAM,EAAE,SAAS,CAAC;aAC9C;SACF;KACF,CAAC,CAAC;IAEH,IAAI,MAAM,CAAC,SAAS,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;QAChC,KAAK,CAAC,IAAI,CAAC;YACT,WAAW,EAAE,yCAAyC;YACtD,IAAI,EAAE,EAAE,OAAO,EAAE,QAAQ,EAAE;YAC3B,MAAM,EAAE;gBACN;oBACE,IAAI,EAAE,YAAY;oBAClB,KAAK,EAAE,cAAc,SAAS,SAAS,MAAM,CAAC,SAAS,CAAC,MAAM,uMAAuM;iBACtQ;aACF;SACF,CAAC,CAAC;IACL,CAAC;IAED,IAAI,MAAM,CAAC,mBAAmB,KAAK,SAAS,EAAE,CAAC;QAC7C,KAAK,CAAC,IAAI,CAAC;YACT,WAAW,EAAE,uDAAuD;YACpE,IAAI,EAAE,EAAE,OAAO,EAAE,wCAAwC,EAAE;YAC3D,MAAM,EAAE;gBACN;oBACE,IAAI,EAAE,YAAY;oBAClB,KAAK,EAAE,cAAc,SAAS,qLAAqL;iBACpN;aACF;SACF,CAAC,CAAC;IACL,CAAC;IAED,OAAO,KAAK,CAAC;AACf,CAAC;AAED,SAAS,mBAAmB,CAC1B,MAAsB,EACtB,SAAiB;IAEjB,MAAM,gBAAgB,GAAG,MAAM,CAAC,SAAS;SACtC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC;SACX,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,IAAI,CAAC,CAAC,KAAK,CAAC,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,CAAC,MAAM,GAAG,GAAG,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,EAAE,GAAG,CAAC;SAChE,IAAI,CAAC,IAAI,CAAC,CAAC;IAEd,OAAO;QACL,cAAc,SAAS,sEAAsE;QAC7F,sBAAsB,gBAAgB,GAAG;QACzC,sBAAsB;QACtB,6BAA6B;QAC7B,kCAAkC;QAClC,yDAAyD;QACzD,4DAA4D;KAC7D,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AACf,CAAC"}
@@ -0,0 +1,20 @@
1
+ import type { EqhoAction, EqhoCall } from "../types/eqho.js";
2
+ import type { ProxyConfig } from "./provider-mapper.js";
3
+ export interface PostcallEvalFiles {
4
+ "promptfooconfig.yaml": string;
5
+ [key: string]: string;
6
+ }
7
+ /**
8
+ * Generates a promptfoo eval config for testing postcall actions
9
+ * (data extraction, webhooks, etc.) against real or synthetic transcripts.
10
+ */
11
+ export declare function generatePostcallEvalConfig(opts: {
12
+ actions: EqhoAction[];
13
+ agentName: string;
14
+ agentSlug: string;
15
+ campaignName: string;
16
+ calls?: EqhoCall[];
17
+ executionType?: "postcall" | "on_call_start";
18
+ proxy?: ProxyConfig | null;
19
+ }): PostcallEvalFiles;
20
+ //# sourceMappingURL=postcall-simulator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postcall-simulator.d.ts","sourceRoot":"","sources":["../../src/core/postcall-simulator.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,UAAU,EAAE,QAAQ,EAAE,MAAM,kBAAkB,CAAC;AAI7D,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAGxD,MAAM,WAAW,iBAAiB;IAChC,sBAAsB,EAAE,MAAM,CAAC;IAC/B,CAAC,GAAG,EAAE,MAAM,GAAG,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAgB,0BAA0B,CAAC,IAAI,EAAE;IAC/C,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,MAAM,CAAC;IAClB,YAAY,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,QAAQ,EAAE,CAAC;IACnB,aAAa,CAAC,EAAE,UAAU,GAAG,eAAe,CAAC;IAC7C,KAAK,CAAC,EAAE,WAAW,GAAG,IAAI,CAAC;CAC5B,GAAG,iBAAiB,CAoFpB"}
@@ -0,0 +1,212 @@
1
+ import yaml from "js-yaml";
2
+ import { buildToolsByExecutionType } from "./tools-builder.js";
3
+ import { formatTranscript } from "./disposition-builder.js";
4
+ import { injectProxy } from "./provider-mapper.js";
5
+ /**
6
+ * Generates a promptfoo eval config for testing postcall actions
7
+ * (data extraction, webhooks, etc.) against real or synthetic transcripts.
8
+ */
9
+ export function generatePostcallEvalConfig(opts) {
10
+ const { actions, agentName, agentSlug, campaignName, calls, executionType = "postcall" } = opts;
11
+ const postcallTools = buildToolsByExecutionType(actions, executionType);
12
+ const label = executionType === "on_call_start" ? "On-Call-Start" : "Postcall";
13
+ const fileSuffix = executionType === "on_call_start" ? "oncallstart" : "postcall";
14
+ if (postcallTools.length === 0) {
15
+ return {
16
+ "promptfooconfig.yaml": yaml.dump({
17
+ description: `${campaignName} — No ${label.toLowerCase()} actions found`,
18
+ tests: [],
19
+ }, { lineWidth: 120 }),
20
+ };
21
+ }
22
+ const toolsFile = `tools/${agentSlug}-${fileSuffix}.json`;
23
+ const promptFile = `prompts/${agentSlug}-${fileSuffix}.json`;
24
+ const systemPrompt = buildPostcallSystemPrompt(postcallTools, agentName, executionType);
25
+ const prompt = [
26
+ { role: "system", content: systemPrompt },
27
+ { role: "user", content: "Here is the call transcript:\n\n{{transcript}}" },
28
+ ];
29
+ const callTests = calls?.length
30
+ ? buildPostcallTestsFromCalls(calls, postcallTools)
31
+ : [];
32
+ const defaultTests = buildDefaultPostcallTests(postcallTools);
33
+ const tests = [...callTests, ...defaultTests];
34
+ const config = {
35
+ description: `${campaignName} — ${label} Actions Eval (${agentName})`,
36
+ outputPath: [
37
+ "output/postcall-report.html",
38
+ "output/postcall-results.json",
39
+ ],
40
+ prompts: [
41
+ { id: `file://${promptFile}`, label: `${agentName} ${label}` },
42
+ ],
43
+ providers: injectProxy([
44
+ {
45
+ id: "openai:chat:gpt-4.1-mini",
46
+ label: "GPT-4.1-mini",
47
+ config: {
48
+ temperature: 0,
49
+ tools: `file://${toolsFile}`,
50
+ tool_choice: "required",
51
+ },
52
+ },
53
+ {
54
+ id: "openai:chat:gpt-4.1",
55
+ label: "GPT-4.1",
56
+ config: {
57
+ temperature: 0,
58
+ tools: `file://${toolsFile}`,
59
+ tool_choice: "required",
60
+ },
61
+ },
62
+ ], opts.proxy),
63
+ defaultTest: {
64
+ options: {
65
+ provider: injectProxy([{
66
+ id: "openai:chat:gpt-5-nano",
67
+ config: { temperature: 0 },
68
+ }], opts.proxy)[0],
69
+ },
70
+ },
71
+ tests,
72
+ };
73
+ return {
74
+ "promptfooconfig.yaml": yaml.dump(config, {
75
+ lineWidth: 120,
76
+ noRefs: true,
77
+ quotingType: '"',
78
+ }),
79
+ [toolsFile]: JSON.stringify(postcallTools, null, 2),
80
+ [promptFile]: JSON.stringify(prompt, null, 2),
81
+ };
82
+ }
83
+ function buildPostcallSystemPrompt(tools, agentName, executionType = "postcall") {
84
+ const toolNames = tools.map((t) => t.function.name).join(", ");
85
+ const label = executionType === "on_call_start" ? "on-call-start" : "postcall";
86
+ const timing = executionType === "on_call_start"
87
+ ? "Your job is to execute initial setup actions when the call first connects."
88
+ : "Your job is to analyze the completed call transcript and execute all relevant postcall actions.";
89
+ return [
90
+ `You are a ${label} processing system for the agent "${agentName}".`,
91
+ timing,
92
+ "",
93
+ `Available ${label} actions: ${toolNames}`,
94
+ "",
95
+ "Instructions:",
96
+ "1. Read the entire transcript carefully",
97
+ "2. Extract all relevant information mentioned during the call",
98
+ `3. Call each applicable ${label} action with the correct extracted data`,
99
+ "4. If data for a field was not mentioned in the transcript, do not guess — omit it or mark as unknown",
100
+ ].join("\n");
101
+ }
102
+ function buildPostcallTestsFromCalls(calls, tools) {
103
+ const tests = [];
104
+ for (const call of calls) {
105
+ if (!call.transcript?.length)
106
+ continue;
107
+ const conversationMessages = call.transcript.filter((m) => m.role !== "Action" && m.role !== "action");
108
+ if (conversationMessages.length < 2)
109
+ continue;
110
+ const transcript = formatTranscript(call.transcript.map((m) => ({ role: m.role, content: m.content })));
111
+ const callId = (call.id || call._id || "unknown").slice(-6);
112
+ const summary = (call.call_summary || "").slice(0, 80);
113
+ const label = summary || call.lead?.first_name || "Real call";
114
+ const assertions = [
115
+ { type: "is-valid-openai-tools-call" },
116
+ ];
117
+ if (call.lead?.email) {
118
+ assertions.push({
119
+ type: "javascript",
120
+ value: `(() => { const calls = typeof output === 'string' ? JSON.parse(output) : output; return calls.some(c => { const a = typeof c.function.arguments === 'string' ? c.function.arguments : JSON.stringify(c.function.arguments || {}); return a.includes('${call.lead.email}'); }); })()`,
121
+ });
122
+ }
123
+ assertions.push({
124
+ type: "llm-rubric",
125
+ value: "The postcall extraction should accurately capture information mentioned in the transcript. It should not fabricate data that wasn't discussed. Fields not mentioned should be omitted or marked unknown.",
126
+ });
127
+ tests.push({
128
+ description: `Postcall — ${label} [${callId}]`,
129
+ vars: { transcript },
130
+ assert: assertions,
131
+ });
132
+ }
133
+ return tests;
134
+ }
135
+ function buildDefaultPostcallTests(tools) {
136
+ const tests = [];
137
+ const hasDataExtraction = tools.some((t) => t.function.name.includes("extract") ||
138
+ t.function.name.includes("data"));
139
+ const hasEmailAction = tools.some((t) => t.function.name.includes("email") ||
140
+ t.function.name.includes("set_lead_email"));
141
+ tests.push({
142
+ description: "Postcall — all tool calls have valid schemas",
143
+ vars: {
144
+ transcript: [
145
+ "Agent: Hi, thanks for your time today.",
146
+ "User: No problem! My email is alex@example.com and I'm interested in the premium plan.",
147
+ "Agent: Great, I've noted that down. We'll follow up shortly.",
148
+ "User: Sounds good, thanks!",
149
+ ].join("\n"),
150
+ },
151
+ assert: [{ type: "is-valid-openai-tools-call" }],
152
+ });
153
+ if (hasDataExtraction) {
154
+ tests.push({
155
+ description: "Postcall — extracts key data from transcript",
156
+ vars: {
157
+ transcript: [
158
+ "Agent: Can I get your contact information?",
159
+ "User: Sure, my name is Jordan Lee and my email is jordan@acme.com",
160
+ "Agent: And what's your main interest?",
161
+ "User: We're looking at the enterprise plan for about 50 seats.",
162
+ "Agent: Got it. I'll have someone reach out about enterprise pricing.",
163
+ ].join("\n"),
164
+ },
165
+ assert: [
166
+ { type: "is-valid-openai-tools-call" },
167
+ {
168
+ type: "llm-rubric",
169
+ value: "The postcall action should extract key data: the lead's name (Jordan Lee), email (jordan@acme.com), interest (enterprise plan), and seat count (50). All extracted fields should match what was stated in the transcript.",
170
+ },
171
+ ],
172
+ });
173
+ }
174
+ if (hasEmailAction) {
175
+ tests.push({
176
+ description: "Postcall — captures email from transcript",
177
+ vars: {
178
+ transcript: [
179
+ "Agent: What's the best email to reach you?",
180
+ "User: You can email me at test.user@company.com",
181
+ "Agent: Perfect, got it.",
182
+ ].join("\n"),
183
+ },
184
+ assert: [
185
+ { type: "is-valid-openai-tools-call" },
186
+ {
187
+ type: "javascript",
188
+ value: "(() => { const calls = typeof output === 'string' ? JSON.parse(output) : output; return calls.some(c => { const a = typeof c.function.arguments === 'string' ? c.function.arguments : JSON.stringify(c.function.arguments || {}); return a.includes('test.user@company.com'); }); })()",
189
+ },
190
+ ],
191
+ });
192
+ }
193
+ tests.push({
194
+ description: "Postcall — handles transcript with no extractable data",
195
+ vars: {
196
+ transcript: [
197
+ "Agent: Hello?",
198
+ "User: Wrong number.",
199
+ "Agent: Sorry about that, have a good day!",
200
+ ].join("\n"),
201
+ },
202
+ assert: [
203
+ { type: "is-valid-openai-tools-call" },
204
+ {
205
+ type: "llm-rubric",
206
+ value: "With minimal data in the transcript, the postcall actions should either extract very little or indicate that no meaningful data was available. Should not fabricate information.",
207
+ },
208
+ ],
209
+ });
210
+ return tests;
211
+ }
212
+ //# sourceMappingURL=postcall-simulator.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postcall-simulator.js","sourceRoot":"","sources":["../../src/core/postcall-simulator.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,25 @@
1
+ import type { EqhoAgent, EqhoCampaign, EqhoRole, EqhoAction, EqhoScript, SystemPromptSection, ConversationSeederMessage } from "../types/eqho.js";
2
+ import type { TemplateVars, AssembledPrompt } from "../types/config.js";
3
+ export interface AssemblerInput {
4
+ agent: EqhoAgent;
5
+ campaign: EqhoCampaign;
6
+ roles: EqhoRole[];
7
+ actions: EqhoAction[];
8
+ scripts: EqhoScript[];
9
+ systemPromptSections: SystemPromptSection[];
10
+ conversationSeeder?: ConversationSeederMessage[];
11
+ leadOverrides?: Partial<TemplateVars["lead"]>;
12
+ timeOverrides?: Partial<TemplateVars["time"]>;
13
+ }
14
+ /**
15
+ * Assembles the prompt exactly as eqho-ai's PromptBuilder chain does.
16
+ *
17
+ * Order of operations:
18
+ * 1. buildScripts → store in agent.scripts template var
19
+ * 2. buildActions → store in agent.actions template var
20
+ * 3. buildRoles → store in agent.roles template var
21
+ * 4. buildSystemPrompt → combine sections, render all templates
22
+ * 5. buildTools → convert actions to OpenAI tool definitions
23
+ */
24
+ export declare function assemblePrompt(input: AssemblerInput): AssembledPrompt;
25
+ //# sourceMappingURL=prompt-assembler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-assembler.d.ts","sourceRoot":"","sources":["../../src/core/prompt-assembler.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EACV,SAAS,EACT,YAAY,EACZ,QAAQ,EACR,UAAU,EACV,UAAU,EACV,mBAAmB,EACnB,yBAAyB,EAC1B,MAAM,kBAAkB,CAAC;AAC1B,OAAO,KAAK,EAAE,YAAY,EAAE,eAAe,EAA0B,MAAM,oBAAoB,CAAC;AAEhG,MAAM,WAAW,cAAc;IAC7B,KAAK,EAAE,SAAS,CAAC;IACjB,QAAQ,EAAE,YAAY,CAAC;IACvB,KAAK,EAAE,QAAQ,EAAE,CAAC;IAClB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,OAAO,EAAE,UAAU,EAAE,CAAC;IACtB,oBAAoB,EAAE,mBAAmB,EAAE,CAAC;IAC5C,kBAAkB,CAAC,EAAE,yBAAyB,EAAE,CAAC;IACjD,aAAa,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;IAC9C,aAAa,CAAC,EAAE,OAAO,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC;CAC/C;AAkFD;;;;;;;;;GASG;AACH,wBAAgB,cAAc,CAAC,KAAK,EAAE,cAAc,GAAG,eAAe,CA2IrE"}
@@ -0,0 +1,185 @@
1
+ import { renderTemplate } from "./template-engine.js";
2
+ import { buildTools } from "./tools-builder.js";
3
+ function buildTimeVars(timezone = "America/New_York", overrides) {
4
+ const now = new Date();
5
+ const tomorrow = new Date(now);
6
+ tomorrow.setDate(tomorrow.getDate() + 1);
7
+ const yesterday = new Date(now);
8
+ yesterday.setDate(yesterday.getDate() - 1);
9
+ const fmt = (d) => d.toISOString().split("T")[0];
10
+ const timeFmt = (d) => {
11
+ try {
12
+ return d.toLocaleString("en-US", { timeZone: timezone });
13
+ }
14
+ catch {
15
+ return d.toISOString();
16
+ }
17
+ };
18
+ return {
19
+ today: fmt(now),
20
+ tomorrow: fmt(tomorrow),
21
+ yesterday: fmt(yesterday),
22
+ timezone,
23
+ current_datetime: timeFmt(now),
24
+ current_date: fmt(now),
25
+ current_time: now.toLocaleTimeString("en-US", {
26
+ timeZone: timezone,
27
+ hour12: true,
28
+ }),
29
+ ...overrides,
30
+ };
31
+ }
32
+ /**
33
+ * Formats script lines matching eqho-ai's ScriptModel.to_text().
34
+ * AGENT lines: ~ "message"
35
+ * USER lines: **Wait for User to Respond**
36
+ */
37
+ function formatScript(script) {
38
+ return script.lines
39
+ .map((line) => {
40
+ if (line.speaker === "AGENT")
41
+ return `~ "${line.message}"`;
42
+ return "**Wait for User to Respond**";
43
+ })
44
+ .join("\n\n");
45
+ }
46
+ /**
47
+ * Formats actions as "slug:\ninstructions" per action.
48
+ * Mirrors eqho-ai's ActionsPromptBuilder.build().
49
+ * Each action's instructions are pre-rendered with action-specific template
50
+ * vars (display_name, function_name) before the global template pass.
51
+ */
52
+ function formatActions(actions, globalVars) {
53
+ if (!actions.length)
54
+ return "";
55
+ return actions
56
+ .map((a) => {
57
+ const actionVars = {
58
+ ...globalVars,
59
+ action: {
60
+ display_name: a.name || a.slug,
61
+ function_name: a.slug,
62
+ slug: a.slug,
63
+ name: a.name || a.slug,
64
+ type: a.type,
65
+ },
66
+ };
67
+ const rendered = renderTemplate(a.instructions, actionVars);
68
+ return `${a.slug}:\n${rendered}`;
69
+ })
70
+ .join("\n\n");
71
+ }
72
+ /**
73
+ * Assembles the prompt exactly as eqho-ai's PromptBuilder chain does.
74
+ *
75
+ * Order of operations:
76
+ * 1. buildScripts → store in agent.scripts template var
77
+ * 2. buildActions → store in agent.actions template var
78
+ * 3. buildRoles → store in agent.roles template var
79
+ * 4. buildSystemPrompt → combine sections, render all templates
80
+ * 5. buildTools → convert actions to OpenAI tool definitions
81
+ */
82
+ export function assemblePrompt(input) {
83
+ const { agent, campaign, roles, actions, scripts, systemPromptSections, conversationSeeder, leadOverrides, timeOverrides, } = input;
84
+ const templateVars = {
85
+ agent: {
86
+ name: agent.name,
87
+ description: agent.description,
88
+ language: agent.language,
89
+ personality: agent.personality,
90
+ alias: agent.alias,
91
+ roles: "",
92
+ scripts: "",
93
+ actions: "",
94
+ },
95
+ lead: {
96
+ first_name: "{{lead.first_name}}",
97
+ last_name: "{{lead.last_name}}",
98
+ email: "{{lead.email}}",
99
+ phone: "{{lead.phone}}",
100
+ timezone: "{{lead.timezone}}",
101
+ ...leadOverrides,
102
+ },
103
+ campaign: {
104
+ name: campaign.name,
105
+ custom_fields: campaign.custom_fields,
106
+ },
107
+ conversation: {
108
+ started_at: "{{conversation.started_at}}",
109
+ call_type: "inbound",
110
+ medium: "telephony",
111
+ },
112
+ time: buildTimeVars(leadOverrides?.timezone || "America/New_York", timeOverrides),
113
+ };
114
+ // Step 1: Build scripts
115
+ if (scripts.length > 0) {
116
+ const scriptsText = scripts.map(formatScript).join("\n\n");
117
+ templateVars.agent.scripts = renderTemplate(scriptsText, templateVars);
118
+ }
119
+ // Step 2: Build actions (text representation for templates)
120
+ // Each action's instructions are rendered with action-specific vars first,
121
+ // then the combined text gets a global pass for remaining template vars.
122
+ if (actions.length > 0) {
123
+ templateVars.agent.actions = formatActions(actions, templateVars);
124
+ }
125
+ // Step 3: Build roles
126
+ if (roles.length > 0) {
127
+ const rolesText = roles.map((r) => r.description).join("\n\n");
128
+ templateVars.agent.roles = renderTemplate(rolesText, templateVars);
129
+ }
130
+ // Step 4: Build system prompt
131
+ let systemPrompt = "";
132
+ if (systemPromptSections.length > 0) {
133
+ const combinedSections = systemPromptSections
134
+ .map((s) => `${s.title}\n${s.description}`)
135
+ .join("\n\n");
136
+ systemPrompt = renderTemplate(combinedSections, templateVars);
137
+ }
138
+ else {
139
+ const parts = [];
140
+ if (templateVars.agent.roles) {
141
+ parts.push(templateVars.agent.roles);
142
+ }
143
+ if (templateVars.agent.scripts) {
144
+ parts.push("SCRIPT\n" + templateVars.agent.scripts);
145
+ }
146
+ if (templateVars.agent.actions) {
147
+ parts.push("ACTIONS\n" + templateVars.agent.actions);
148
+ }
149
+ systemPrompt = parts.join("\n\n");
150
+ }
151
+ // Step 5: Build tools
152
+ const tools = buildTools(actions);
153
+ // Step 6: Build conversation seeder
154
+ const seederMessages = [];
155
+ if (conversationSeeder?.length) {
156
+ for (const msg of conversationSeeder) {
157
+ const rendered = renderTemplate(msg.content, templateVars);
158
+ seederMessages.push({ role: msg.role, content: rendered });
159
+ }
160
+ }
161
+ const slug = agent.name
162
+ .toLowerCase()
163
+ .replace(/[^a-z0-9]+/g, "-")
164
+ .replace(/(^-|-$)/g, "");
165
+ const actionMeta = actions.map((a) => {
166
+ const tool = tools.find((t) => t.function.name === a.slug);
167
+ return {
168
+ slug: a.slug,
169
+ name: a.name,
170
+ type: a.type,
171
+ executionType: a.execution_type ?? "live",
172
+ hasRequiredParams: (tool?.function.parameters.required?.length ?? 0) > 0,
173
+ paramNames: Object.keys(tool?.function.parameters.properties ?? {}),
174
+ };
175
+ });
176
+ return {
177
+ systemPrompt,
178
+ tools,
179
+ conversationSeeder: seederMessages,
180
+ agentSlug: slug,
181
+ agentName: agent.name,
182
+ actionMeta,
183
+ };
184
+ }
185
+ //# sourceMappingURL=prompt-assembler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-assembler.js","sourceRoot":"","sources":["../../src/core/prompt-assembler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,13 @@
1
+ export interface PromptfooRunResult {
2
+ exitCode: number;
3
+ }
4
+ export declare function resolvePromptfoo(): {
5
+ bin: string;
6
+ source: "local" | "peer" | "global";
7
+ } | null;
8
+ export declare function getPromptfooVersion(): string | null;
9
+ export declare function isPromptfooInstalled(): boolean;
10
+ export declare function runPromptfoo(args: string[], options?: {
11
+ cwd?: string;
12
+ }): PromptfooRunResult;
13
+ //# sourceMappingURL=promptfoo-runner.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promptfoo-runner.d.ts","sourceRoot":"","sources":["../../src/core/promptfoo-runner.ts"],"names":[],"mappings":"AAIA,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAgB,gBAAgB,IAAI;IAAE,GAAG,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,QAAQ,CAAA;CAAE,GAAG,IAAI,CAoB9F;AAED,wBAAgB,mBAAmB,IAAI,MAAM,GAAG,IAAI,CAYnD;AAED,wBAAgB,oBAAoB,IAAI,OAAO,CAE9C;AAED,wBAAgB,YAAY,CAAC,IAAI,EAAE,MAAM,EAAE,EAAE,OAAO,CAAC,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,kBAAkB,CAe3F"}