@chanl/scorecards-core 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 (130) hide show
  1. package/LICENSE +21 -0
  2. package/dist/dto/create-scorecard-category.dto.d.ts +7 -0
  3. package/dist/dto/create-scorecard-category.dto.d.ts.map +1 -0
  4. package/dist/dto/create-scorecard-category.dto.js +38 -0
  5. package/dist/dto/create-scorecard-category.dto.js.map +1 -0
  6. package/dist/dto/create-scorecard-criteria.dto.d.ts +11 -0
  7. package/dist/dto/create-scorecard-criteria.dto.d.ts.map +1 -0
  8. package/dist/dto/create-scorecard-criteria.dto.js +63 -0
  9. package/dist/dto/create-scorecard-criteria.dto.js.map +1 -0
  10. package/dist/dto/create-scorecard-result.dto.d.ts +8 -0
  11. package/dist/dto/create-scorecard-result.dto.d.ts.map +1 -0
  12. package/dist/dto/create-scorecard-result.dto.js +41 -0
  13. package/dist/dto/create-scorecard-result.dto.js.map +1 -0
  14. package/dist/dto/create-scorecard.dto.d.ts +9 -0
  15. package/dist/dto/create-scorecard.dto.d.ts.map +1 -0
  16. package/dist/dto/create-scorecard.dto.js +54 -0
  17. package/dist/dto/create-scorecard.dto.js.map +1 -0
  18. package/dist/dto/index.d.ts +8 -0
  19. package/dist/dto/index.d.ts.map +1 -0
  20. package/dist/dto/index.js +18 -0
  21. package/dist/dto/index.js.map +1 -0
  22. package/dist/dto/update-scorecard-category.dto.d.ts +6 -0
  23. package/dist/dto/update-scorecard-category.dto.d.ts.map +1 -0
  24. package/dist/dto/update-scorecard-category.dto.js +9 -0
  25. package/dist/dto/update-scorecard-category.dto.js.map +1 -0
  26. package/dist/dto/update-scorecard-criteria.dto.d.ts +6 -0
  27. package/dist/dto/update-scorecard-criteria.dto.d.ts.map +1 -0
  28. package/dist/dto/update-scorecard-criteria.dto.js +9 -0
  29. package/dist/dto/update-scorecard-criteria.dto.js.map +1 -0
  30. package/dist/dto/update-scorecard.dto.d.ts +6 -0
  31. package/dist/dto/update-scorecard.dto.d.ts.map +1 -0
  32. package/dist/dto/update-scorecard.dto.js +9 -0
  33. package/dist/dto/update-scorecard.dto.js.map +1 -0
  34. package/dist/evaluation/evaluation.service.d.ts +35 -0
  35. package/dist/evaluation/evaluation.service.d.ts.map +1 -0
  36. package/dist/evaluation/evaluation.service.js +225 -0
  37. package/dist/evaluation/evaluation.service.js.map +1 -0
  38. package/dist/evaluation/index.d.ts +2 -0
  39. package/dist/evaluation/index.d.ts.map +1 -0
  40. package/dist/evaluation/index.js +6 -0
  41. package/dist/evaluation/index.js.map +1 -0
  42. package/dist/handlers/conversation-completeness.handler.d.ts +7 -0
  43. package/dist/handlers/conversation-completeness.handler.d.ts.map +1 -0
  44. package/dist/handlers/conversation-completeness.handler.js +74 -0
  45. package/dist/handlers/conversation-completeness.handler.js.map +1 -0
  46. package/dist/handlers/criteria-handler-registry.d.ts +12 -0
  47. package/dist/handlers/criteria-handler-registry.d.ts.map +1 -0
  48. package/dist/handlers/criteria-handler-registry.js +45 -0
  49. package/dist/handlers/criteria-handler-registry.js.map +1 -0
  50. package/dist/handlers/criteria-handler.interface.d.ts +81 -0
  51. package/dist/handlers/criteria-handler.interface.d.ts.map +1 -0
  52. package/dist/handlers/criteria-handler.interface.js +3 -0
  53. package/dist/handlers/criteria-handler.interface.js.map +1 -0
  54. package/dist/handlers/hallucination.handler.d.ts +7 -0
  55. package/dist/handlers/hallucination.handler.d.ts.map +1 -0
  56. package/dist/handlers/hallucination.handler.js +86 -0
  57. package/dist/handlers/hallucination.handler.js.map +1 -0
  58. package/dist/handlers/index.d.ts +13 -0
  59. package/dist/handlers/index.d.ts.map +1 -0
  60. package/dist/handlers/index.js +29 -0
  61. package/dist/handlers/index.js.map +1 -0
  62. package/dist/handlers/keyword.handler.d.ts +7 -0
  63. package/dist/handlers/keyword.handler.d.ts.map +1 -0
  64. package/dist/handlers/keyword.handler.js +64 -0
  65. package/dist/handlers/keyword.handler.js.map +1 -0
  66. package/dist/handlers/knowledge-retention.handler.d.ts +7 -0
  67. package/dist/handlers/knowledge-retention.handler.d.ts.map +1 -0
  68. package/dist/handlers/knowledge-retention.handler.js +74 -0
  69. package/dist/handlers/knowledge-retention.handler.js.map +1 -0
  70. package/dist/handlers/prompt.handler.d.ts +7 -0
  71. package/dist/handlers/prompt.handler.d.ts.map +1 -0
  72. package/dist/handlers/prompt.handler.js +77 -0
  73. package/dist/handlers/prompt.handler.js.map +1 -0
  74. package/dist/handlers/rag-faithfulness.handler.d.ts +7 -0
  75. package/dist/handlers/rag-faithfulness.handler.d.ts.map +1 -0
  76. package/dist/handlers/rag-faithfulness.handler.js +110 -0
  77. package/dist/handlers/rag-faithfulness.handler.js.map +1 -0
  78. package/dist/handlers/response-time.handler.d.ts +7 -0
  79. package/dist/handlers/response-time.handler.d.ts.map +1 -0
  80. package/dist/handlers/response-time.handler.js +56 -0
  81. package/dist/handlers/response-time.handler.js.map +1 -0
  82. package/dist/handlers/role-adherence.handler.d.ts +7 -0
  83. package/dist/handlers/role-adherence.handler.d.ts.map +1 -0
  84. package/dist/handlers/role-adherence.handler.js +74 -0
  85. package/dist/handlers/role-adherence.handler.js.map +1 -0
  86. package/dist/handlers/scoring-utils.d.ts +10 -0
  87. package/dist/handlers/scoring-utils.d.ts.map +1 -0
  88. package/dist/handlers/scoring-utils.js +88 -0
  89. package/dist/handlers/scoring-utils.js.map +1 -0
  90. package/dist/handlers/tool-call.handler.d.ts +7 -0
  91. package/dist/handlers/tool-call.handler.d.ts.map +1 -0
  92. package/dist/handlers/tool-call.handler.js +43 -0
  93. package/dist/handlers/tool-call.handler.js.map +1 -0
  94. package/dist/index.d.ts +8 -0
  95. package/dist/index.d.ts.map +1 -0
  96. package/dist/index.js +52 -0
  97. package/dist/index.js.map +1 -0
  98. package/dist/schemas/index.d.ts +5 -0
  99. package/dist/schemas/index.d.ts.map +1 -0
  100. package/dist/schemas/index.js +23 -0
  101. package/dist/schemas/index.js.map +1 -0
  102. package/dist/schemas/scorecard-category.schema.d.ts +20 -0
  103. package/dist/schemas/scorecard-category.schema.d.ts.map +1 -0
  104. package/dist/schemas/scorecard-category.schema.js +83 -0
  105. package/dist/schemas/scorecard-category.schema.js.map +1 -0
  106. package/dist/schemas/scorecard-criteria.schema.d.ts +92 -0
  107. package/dist/schemas/scorecard-criteria.schema.d.ts.map +1 -0
  108. package/dist/schemas/scorecard-criteria.schema.js +153 -0
  109. package/dist/schemas/scorecard-criteria.schema.js.map +1 -0
  110. package/dist/schemas/scorecard-result.schema.d.ts +47 -0
  111. package/dist/schemas/scorecard-result.schema.d.ts.map +1 -0
  112. package/dist/schemas/scorecard-result.schema.js +96 -0
  113. package/dist/schemas/scorecard-result.schema.js.map +1 -0
  114. package/dist/schemas/scorecard.schema.d.ts +21 -0
  115. package/dist/schemas/scorecard.schema.d.ts.map +1 -0
  116. package/dist/schemas/scorecard.schema.js +90 -0
  117. package/dist/schemas/scorecard.schema.js.map +1 -0
  118. package/dist/scorecards.controller.d.ts +104 -0
  119. package/dist/scorecards.controller.d.ts.map +1 -0
  120. package/dist/scorecards.controller.js +366 -0
  121. package/dist/scorecards.controller.js.map +1 -0
  122. package/dist/scorecards.module.d.ts +3 -0
  123. package/dist/scorecards.module.d.ts.map +1 -0
  124. package/dist/scorecards.module.js +59 -0
  125. package/dist/scorecards.module.js.map +1 -0
  126. package/dist/scorecards.service.d.ts +89 -0
  127. package/dist/scorecards.service.d.ts.map +1 -0
  128. package/dist/scorecards.service.js +587 -0
  129. package/dist/scorecards.service.js.map +1 -0
  130. package/package.json +39 -0
@@ -0,0 +1,88 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.checkThreshold = checkThreshold;
4
+ exports.normalizeScore = normalizeScore;
5
+ const schemas_1 = require("../schemas");
6
+ /**
7
+ * Check whether a result passes the criteria's threshold.
8
+ */
9
+ function checkThreshold(criteria, result) {
10
+ if (!criteria.threshold)
11
+ return true;
12
+ const evalType = (0, schemas_1.getEvaluationType)(criteria);
13
+ if (evalType === 'boolean' && (0, schemas_1.isBooleanThreshold)(criteria.threshold)) {
14
+ return result === criteria.threshold.expectedValue;
15
+ }
16
+ if ((evalType === 'number' || evalType === 'score') &&
17
+ (0, schemas_1.isNumericalThreshold)(criteria.threshold)) {
18
+ const { min, max } = criteria.threshold;
19
+ if (min !== undefined && result < min)
20
+ return false;
21
+ if (max !== undefined && result > max)
22
+ return false;
23
+ return true;
24
+ }
25
+ if (evalType === 'percentage' && (0, schemas_1.isPercentageThreshold)(criteria.threshold)) {
26
+ const { minPercentage, maxPercentage } = criteria.threshold;
27
+ if (minPercentage !== undefined && result < minPercentage)
28
+ return false;
29
+ if (maxPercentage !== undefined && result > maxPercentage)
30
+ return false;
31
+ return true;
32
+ }
33
+ // Fallback: try numerical threshold
34
+ if ((0, schemas_1.isNumericalThreshold)(criteria.threshold)) {
35
+ const { min, max } = criteria.threshold;
36
+ if (min !== undefined && result < min)
37
+ return false;
38
+ if (max !== undefined && result > max)
39
+ return false;
40
+ return true;
41
+ }
42
+ return true;
43
+ }
44
+ /**
45
+ * Normalize a criteria result to the 0-10 scale for category averaging.
46
+ */
47
+ function normalizeScore(result, criteria, passed) {
48
+ const evalType = (0, schemas_1.getEvaluationType)(criteria);
49
+ // Score type: already 0-10, just clamp
50
+ if (evalType === 'score') {
51
+ return Math.max(0, Math.min(10, Number(result) || 0));
52
+ }
53
+ // Boolean type: use `passed` flag if available (handles inverted cases like must_not_contain)
54
+ if (evalType === 'boolean') {
55
+ if (passed !== undefined)
56
+ return passed ? 10 : 0;
57
+ return result === true ? 10 : 0;
58
+ }
59
+ // Percentage type: 0-100 → 0-10
60
+ if (evalType === 'percentage') {
61
+ return Math.max(0, Math.min(10, (Number(result) || 0) / 10));
62
+ }
63
+ // Number type: normalize based on threshold
64
+ if (evalType === 'number' && (0, schemas_1.isNumericalThreshold)(criteria.threshold)) {
65
+ const { min, max } = criteria.threshold;
66
+ const val = Number(result) || 0;
67
+ if (min !== undefined && max !== undefined) {
68
+ if (val >= min && val <= max)
69
+ return 10;
70
+ if (val < min)
71
+ return Math.max(0, 10 - (min - val));
72
+ return Math.max(0, 10 - (val - max));
73
+ }
74
+ if (min !== undefined) {
75
+ if (val >= min)
76
+ return 10;
77
+ return Math.max(0, Math.min(10, 10 * (val / min)));
78
+ }
79
+ if (max !== undefined) {
80
+ if (val <= max)
81
+ return 10;
82
+ return Math.max(0, 10 - (val - max));
83
+ }
84
+ }
85
+ // Default: binary pass/fail
86
+ return checkThreshold(criteria, result) ? 10 : 0;
87
+ }
88
+ //# sourceMappingURL=scoring-utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scoring-utils.js","sourceRoot":"","sources":["../../src/handlers/scoring-utils.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import { ScorecardCriteria } from '../schemas';
2
+ import { CriteriaHandler, CriteriaHandlerResult, EvaluationContext } from './criteria-handler.interface';
3
+ export declare class ToolCallHandler implements CriteriaHandler {
4
+ readonly type = "tool_call";
5
+ evaluate(criteria: ScorecardCriteria, context: EvaluationContext): Promise<CriteriaHandlerResult>;
6
+ }
7
+ //# sourceMappingURL=tool-call.handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-call.handler.d.ts","sourceRoot":"","sources":["../../src/handlers/tool-call.handler.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAA4B,MAAM,YAAY,CAAC;AACzE,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,iBAAiB,EAClB,MAAM,8BAA8B,CAAC;AAEtC,qBAAa,eAAgB,YAAW,eAAe;IACrD,QAAQ,CAAC,IAAI,eAAe;IAEtB,QAAQ,CACZ,QAAQ,EAAE,iBAAiB,EAC3B,OAAO,EAAE,iBAAiB,GACzB,OAAO,CAAC,qBAAqB,CAAC;CAwClC"}
@@ -0,0 +1,43 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ToolCallHandler = void 0;
4
+ class ToolCallHandler {
5
+ constructor() {
6
+ this.type = 'tool_call';
7
+ }
8
+ async evaluate(criteria, context) {
9
+ const settings = criteria.settings;
10
+ const expectedTools = Array.isArray(settings.expectedTool)
11
+ ? settings.expectedTool
12
+ : [settings.expectedTool];
13
+ const toolCalls = context.toolCalls || [];
14
+ // No tools were available in the conversation — can't evaluate tool usage
15
+ if (toolCalls.length === 0) {
16
+ return {
17
+ result: true,
18
+ passed: true,
19
+ reasoning: 'No tools available in this conversation',
20
+ evidence: [],
21
+ notApplicable: true,
22
+ };
23
+ }
24
+ const evidence = [];
25
+ const found = expectedTools.some((tool) => toolCalls.some((tc) => {
26
+ const match = tc.name === tool || tc.function?.name === tool;
27
+ if (match && evidence.length < 2) {
28
+ evidence.push(`Called: ${tc.name || tc.function?.name}`);
29
+ }
30
+ return match;
31
+ }));
32
+ return {
33
+ result: found,
34
+ passed: found,
35
+ reasoning: found
36
+ ? `Expected tool(s) called: ${expectedTools.join(', ')}`
37
+ : `Expected tool(s) NOT called: ${expectedTools.join(', ')}`,
38
+ evidence,
39
+ };
40
+ }
41
+ }
42
+ exports.ToolCallHandler = ToolCallHandler;
43
+ //# sourceMappingURL=tool-call.handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tool-call.handler.js","sourceRoot":"","sources":["../../src/handlers/tool-call.handler.ts"],"names":[],"mappings":";;;AAOA,MAAa,eAAe;IAA5B;QACW,SAAI,GAAG,WAAW,CAAC;IA6C9B,CAAC;IA3CC,KAAK,CAAC,QAAQ,CACZ,QAA2B,EAC3B,OAA0B;QAE1B,MAAM,QAAQ,GAAG,QAAQ,CAAC,QAAoC,CAAC;QAC/D,MAAM,aAAa,GAAG,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;YACxD,CAAC,CAAC,QAAQ,CAAC,YAAY;YACvB,CAAC,CAAC,CAAC,QAAQ,CAAC,YAAY,CAAC,CAAC;QAE5B,MAAM,SAAS,GAAG,OAAO,CAAC,SAAS,IAAI,EAAE,CAAC;QAE1C,0EAA0E;QAC1E,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAC3B,OAAO;gBACL,MAAM,EAAE,IAAI;gBACZ,MAAM,EAAE,IAAI;gBACZ,SAAS,EAAE,yCAAyC;gBACpD,QAAQ,EAAE,EAAE;gBACZ,aAAa,EAAE,IAAI;aACpB,CAAC;QACJ,CAAC;QAED,MAAM,QAAQ,GAAa,EAAE,CAAC;QAC9B,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CACxC,SAAS,CAAC,IAAI,CAAC,CAAC,EAAE,EAAE,EAAE;YACpB,MAAM,KAAK,GACT,EAAE,CAAC,IAAI,KAAK,IAAI,IAAI,EAAE,CAAC,QAAQ,EAAE,IAAI,KAAK,IAAI,CAAC;YACjD,IAAI,KAAK,IAAI,QAAQ,CAAC,MAAM,GAAG,CAAC,EAAE,CAAC;gBACjC,QAAQ,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,IAAI,IAAI,EAAE,CAAC,QAAQ,EAAE,IAAI,EAAE,CAAC,CAAC;YAC3D,CAAC;YACD,OAAO,KAAK,CAAC;QACf,CAAC,CAAC,CACH,CAAC;QAEF,OAAO;YACL,MAAM,EAAE,KAAK;YACb,MAAM,EAAE,KAAK;YACb,SAAS,EAAE,KAAK;gBACd,CAAC,CAAC,4BAA4B,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;gBACxD,CAAC,CAAC,gCAAgC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE;YAC9D,QAAQ;SACT,CAAC;IACJ,CAAC;CACF;AA9CD,0CA8CC"}
@@ -0,0 +1,8 @@
1
+ export { ScorecardsModule } from './scorecards.module';
2
+ export { ScorecardsService, PaginatedResponse } from './scorecards.service';
3
+ export { ScorecardsController } from './scorecards.controller';
4
+ export { Scorecard, ScorecardDocument, ScorecardSchema, ScorecardCategory, ScorecardCategoryDocument, ScorecardCategorySchema, ScorecardCriteria, ScorecardCriteriaDocument, ScorecardCriteriaSchema, ScorecardResult, ScorecardResultDocument, ScorecardResultSchema, CriteriaType, CriteriaSettings, PromptCriteriaSettings, KeywordCriteriaSettings, ResponseTimeCriteriaSettings, ToolCallCriteriaSettings, Threshold, BooleanThreshold, NumericalThreshold, PercentageThreshold, isPromptSettings, isKeywordSettings, isBooleanThreshold, isNumericalThreshold, isPercentageThreshold, getEvaluationType, CriteriaResult, AnalysisMetadata, } from './schemas';
5
+ export { CreateScorecardDto, UpdateScorecardDto, CreateScorecardCategoryDto, UpdateScorecardCategoryDto, CreateScorecardCriteriaDto, UpdateScorecardCriteriaDto, CreateScorecardResultDto, } from './dto';
6
+ export { CriteriaHandler, CriteriaHandlerResult, EvaluationContext, CriteriaHandlerRegistry, checkThreshold, normalizeScore, KeywordHandler, PromptHandler, ResponseTimeHandler, ToolCallHandler, } from './handlers';
7
+ export { EvaluationService, EvaluateOptions, EvaluationResult, } from './evaluation';
8
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,gBAAgB,EAAE,MAAM,qBAAqB,CAAC;AAGvD,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAG5E,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC;AAG/D,OAAO,EACL,SAAS,EACT,iBAAiB,EACjB,eAAe,EACf,iBAAiB,EACjB,yBAAyB,EACzB,uBAAuB,EACvB,iBAAiB,EACjB,yBAAyB,EACzB,uBAAuB,EACvB,eAAe,EACf,uBAAuB,EACvB,qBAAqB,EACrB,YAAY,EACZ,gBAAgB,EAChB,sBAAsB,EACtB,uBAAuB,EACvB,4BAA4B,EAC5B,wBAAwB,EACxB,SAAS,EACT,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,EACjB,cAAc,EACd,gBAAgB,GACjB,MAAM,WAAW,CAAC;AAGnB,OAAO,EACL,kBAAkB,EAClB,kBAAkB,EAClB,0BAA0B,EAC1B,0BAA0B,EAC1B,0BAA0B,EAC1B,0BAA0B,EAC1B,wBAAwB,GACzB,MAAM,OAAO,CAAC;AAGf,OAAO,EACL,eAAe,EACf,qBAAqB,EACrB,iBAAiB,EACjB,uBAAuB,EACvB,cAAc,EACd,cAAc,EACd,cAAc,EACd,aAAa,EACb,mBAAmB,EACnB,eAAe,GAChB,MAAM,YAAY,CAAC;AAGpB,OAAO,EACL,iBAAiB,EACjB,eAAe,EACf,gBAAgB,GACjB,MAAM,cAAc,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,52 @@
1
+ "use strict";
2
+ // @chanl-ai/scorecards-core
3
+ Object.defineProperty(exports, "__esModule", { value: true });
4
+ exports.EvaluationService = exports.ToolCallHandler = exports.ResponseTimeHandler = exports.PromptHandler = exports.KeywordHandler = exports.normalizeScore = exports.checkThreshold = exports.CriteriaHandlerRegistry = exports.CreateScorecardResultDto = exports.UpdateScorecardCriteriaDto = exports.CreateScorecardCriteriaDto = exports.UpdateScorecardCategoryDto = exports.CreateScorecardCategoryDto = exports.UpdateScorecardDto = exports.CreateScorecardDto = exports.getEvaluationType = exports.isPercentageThreshold = exports.isNumericalThreshold = exports.isBooleanThreshold = exports.isKeywordSettings = exports.isPromptSettings = exports.CriteriaType = exports.ScorecardResultSchema = exports.ScorecardResult = exports.ScorecardCriteriaSchema = exports.ScorecardCriteria = exports.ScorecardCategorySchema = exports.ScorecardCategory = exports.ScorecardSchema = exports.Scorecard = exports.ScorecardsController = exports.ScorecardsService = exports.ScorecardsModule = void 0;
5
+ // Module
6
+ var scorecards_module_1 = require("./scorecards.module");
7
+ Object.defineProperty(exports, "ScorecardsModule", { enumerable: true, get: function () { return scorecards_module_1.ScorecardsModule; } });
8
+ // Service
9
+ var scorecards_service_1 = require("./scorecards.service");
10
+ Object.defineProperty(exports, "ScorecardsService", { enumerable: true, get: function () { return scorecards_service_1.ScorecardsService; } });
11
+ // Controller
12
+ var scorecards_controller_1 = require("./scorecards.controller");
13
+ Object.defineProperty(exports, "ScorecardsController", { enumerable: true, get: function () { return scorecards_controller_1.ScorecardsController; } });
14
+ // Schemas
15
+ var schemas_1 = require("./schemas");
16
+ Object.defineProperty(exports, "Scorecard", { enumerable: true, get: function () { return schemas_1.Scorecard; } });
17
+ Object.defineProperty(exports, "ScorecardSchema", { enumerable: true, get: function () { return schemas_1.ScorecardSchema; } });
18
+ Object.defineProperty(exports, "ScorecardCategory", { enumerable: true, get: function () { return schemas_1.ScorecardCategory; } });
19
+ Object.defineProperty(exports, "ScorecardCategorySchema", { enumerable: true, get: function () { return schemas_1.ScorecardCategorySchema; } });
20
+ Object.defineProperty(exports, "ScorecardCriteria", { enumerable: true, get: function () { return schemas_1.ScorecardCriteria; } });
21
+ Object.defineProperty(exports, "ScorecardCriteriaSchema", { enumerable: true, get: function () { return schemas_1.ScorecardCriteriaSchema; } });
22
+ Object.defineProperty(exports, "ScorecardResult", { enumerable: true, get: function () { return schemas_1.ScorecardResult; } });
23
+ Object.defineProperty(exports, "ScorecardResultSchema", { enumerable: true, get: function () { return schemas_1.ScorecardResultSchema; } });
24
+ Object.defineProperty(exports, "CriteriaType", { enumerable: true, get: function () { return schemas_1.CriteriaType; } });
25
+ Object.defineProperty(exports, "isPromptSettings", { enumerable: true, get: function () { return schemas_1.isPromptSettings; } });
26
+ Object.defineProperty(exports, "isKeywordSettings", { enumerable: true, get: function () { return schemas_1.isKeywordSettings; } });
27
+ Object.defineProperty(exports, "isBooleanThreshold", { enumerable: true, get: function () { return schemas_1.isBooleanThreshold; } });
28
+ Object.defineProperty(exports, "isNumericalThreshold", { enumerable: true, get: function () { return schemas_1.isNumericalThreshold; } });
29
+ Object.defineProperty(exports, "isPercentageThreshold", { enumerable: true, get: function () { return schemas_1.isPercentageThreshold; } });
30
+ Object.defineProperty(exports, "getEvaluationType", { enumerable: true, get: function () { return schemas_1.getEvaluationType; } });
31
+ // DTOs
32
+ var dto_1 = require("./dto");
33
+ Object.defineProperty(exports, "CreateScorecardDto", { enumerable: true, get: function () { return dto_1.CreateScorecardDto; } });
34
+ Object.defineProperty(exports, "UpdateScorecardDto", { enumerable: true, get: function () { return dto_1.UpdateScorecardDto; } });
35
+ Object.defineProperty(exports, "CreateScorecardCategoryDto", { enumerable: true, get: function () { return dto_1.CreateScorecardCategoryDto; } });
36
+ Object.defineProperty(exports, "UpdateScorecardCategoryDto", { enumerable: true, get: function () { return dto_1.UpdateScorecardCategoryDto; } });
37
+ Object.defineProperty(exports, "CreateScorecardCriteriaDto", { enumerable: true, get: function () { return dto_1.CreateScorecardCriteriaDto; } });
38
+ Object.defineProperty(exports, "UpdateScorecardCriteriaDto", { enumerable: true, get: function () { return dto_1.UpdateScorecardCriteriaDto; } });
39
+ Object.defineProperty(exports, "CreateScorecardResultDto", { enumerable: true, get: function () { return dto_1.CreateScorecardResultDto; } });
40
+ // Handlers
41
+ var handlers_1 = require("./handlers");
42
+ Object.defineProperty(exports, "CriteriaHandlerRegistry", { enumerable: true, get: function () { return handlers_1.CriteriaHandlerRegistry; } });
43
+ Object.defineProperty(exports, "checkThreshold", { enumerable: true, get: function () { return handlers_1.checkThreshold; } });
44
+ Object.defineProperty(exports, "normalizeScore", { enumerable: true, get: function () { return handlers_1.normalizeScore; } });
45
+ Object.defineProperty(exports, "KeywordHandler", { enumerable: true, get: function () { return handlers_1.KeywordHandler; } });
46
+ Object.defineProperty(exports, "PromptHandler", { enumerable: true, get: function () { return handlers_1.PromptHandler; } });
47
+ Object.defineProperty(exports, "ResponseTimeHandler", { enumerable: true, get: function () { return handlers_1.ResponseTimeHandler; } });
48
+ Object.defineProperty(exports, "ToolCallHandler", { enumerable: true, get: function () { return handlers_1.ToolCallHandler; } });
49
+ // Evaluation
50
+ var evaluation_1 = require("./evaluation");
51
+ Object.defineProperty(exports, "EvaluationService", { enumerable: true, get: function () { return evaluation_1.EvaluationService; } });
52
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";AAAA,4BAA4B;;;AAE5B,SAAS;AACT,yDAAuD;AAA9C,qHAAA,gBAAgB,OAAA;AAEzB,UAAU;AACV,2DAA4E;AAAnE,uHAAA,iBAAiB,OAAA;AAE1B,aAAa;AACb,iEAA+D;AAAtD,6HAAA,oBAAoB,OAAA;AAE7B,UAAU;AACV,qCA+BmB;AA9BjB,oGAAA,SAAS,OAAA;AAET,0GAAA,eAAe,OAAA;AACf,4GAAA,iBAAiB,OAAA;AAEjB,kHAAA,uBAAuB,OAAA;AACvB,4GAAA,iBAAiB,OAAA;AAEjB,kHAAA,uBAAuB,OAAA;AACvB,0GAAA,eAAe,OAAA;AAEf,gHAAA,qBAAqB,OAAA;AACrB,uGAAA,YAAY,OAAA;AAUZ,2GAAA,gBAAgB,OAAA;AAChB,4GAAA,iBAAiB,OAAA;AACjB,6GAAA,kBAAkB,OAAA;AAClB,+GAAA,oBAAoB,OAAA;AACpB,gHAAA,qBAAqB,OAAA;AACrB,4GAAA,iBAAiB,OAAA;AAKnB,OAAO;AACP,6BAQe;AAPb,yGAAA,kBAAkB,OAAA;AAClB,yGAAA,kBAAkB,OAAA;AAClB,iHAAA,0BAA0B,OAAA;AAC1B,iHAAA,0BAA0B,OAAA;AAC1B,iHAAA,0BAA0B,OAAA;AAC1B,iHAAA,0BAA0B,OAAA;AAC1B,+GAAA,wBAAwB,OAAA;AAG1B,WAAW;AACX,uCAWoB;AAPlB,mHAAA,uBAAuB,OAAA;AACvB,0GAAA,cAAc,OAAA;AACd,0GAAA,cAAc,OAAA;AACd,0GAAA,cAAc,OAAA;AACd,yGAAA,aAAa,OAAA;AACb,+GAAA,mBAAmB,OAAA;AACnB,2GAAA,eAAe,OAAA;AAGjB,aAAa;AACb,2CAIsB;AAHpB,+GAAA,iBAAiB,OAAA"}
@@ -0,0 +1,5 @@
1
+ export { Scorecard, ScorecardDocument, ScorecardSchema, } from './scorecard.schema';
2
+ export { ScorecardCategory, ScorecardCategoryDocument, ScorecardCategorySchema, } from './scorecard-category.schema';
3
+ export { ScorecardCriteria, ScorecardCriteriaDocument, ScorecardCriteriaSchema, CriteriaType, CriteriaSettings, PromptCriteriaSettings, KeywordCriteriaSettings, ResponseTimeCriteriaSettings, ToolCallCriteriaSettings, HallucinationCriteriaSettings, KnowledgeRetentionCriteriaSettings, ConversationCompletenessCriteriaSettings, RoleAdherenceCriteriaSettings, RagFaithfulnessCriteriaSettings, Threshold, BooleanThreshold, NumericalThreshold, PercentageThreshold, isPromptSettings, isKeywordSettings, isBooleanThreshold, isNumericalThreshold, isPercentageThreshold, getEvaluationType, } from './scorecard-criteria.schema';
4
+ export { ScorecardResult, ScorecardResultDocument, ScorecardResultSchema, CriteriaResult, AnalysisMetadata, } from './scorecard-result.schema';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EACT,iBAAiB,EACjB,eAAe,GAChB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EACL,iBAAiB,EACjB,yBAAyB,EACzB,uBAAuB,GACxB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,iBAAiB,EACjB,yBAAyB,EACzB,uBAAuB,EACvB,YAAY,EACZ,gBAAgB,EAChB,sBAAsB,EACtB,uBAAuB,EACvB,4BAA4B,EAC5B,wBAAwB,EACxB,6BAA6B,EAC7B,kCAAkC,EAClC,wCAAwC,EACxC,6BAA6B,EAC7B,+BAA+B,EAC/B,SAAS,EACT,gBAAgB,EAChB,kBAAkB,EAClB,mBAAmB,EACnB,gBAAgB,EAChB,iBAAiB,EACjB,kBAAkB,EAClB,oBAAoB,EACpB,qBAAqB,EACrB,iBAAiB,GAClB,MAAM,6BAA6B,CAAC;AAErC,OAAO,EACL,eAAe,EACf,uBAAuB,EACvB,qBAAqB,EACrB,cAAc,EACd,gBAAgB,GACjB,MAAM,2BAA2B,CAAC"}
@@ -0,0 +1,23 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ScorecardResultSchema = exports.ScorecardResult = exports.getEvaluationType = exports.isPercentageThreshold = exports.isNumericalThreshold = exports.isBooleanThreshold = exports.isKeywordSettings = exports.isPromptSettings = exports.CriteriaType = exports.ScorecardCriteriaSchema = exports.ScorecardCriteria = exports.ScorecardCategorySchema = exports.ScorecardCategory = exports.ScorecardSchema = exports.Scorecard = void 0;
4
+ var scorecard_schema_1 = require("./scorecard.schema");
5
+ Object.defineProperty(exports, "Scorecard", { enumerable: true, get: function () { return scorecard_schema_1.Scorecard; } });
6
+ Object.defineProperty(exports, "ScorecardSchema", { enumerable: true, get: function () { return scorecard_schema_1.ScorecardSchema; } });
7
+ var scorecard_category_schema_1 = require("./scorecard-category.schema");
8
+ Object.defineProperty(exports, "ScorecardCategory", { enumerable: true, get: function () { return scorecard_category_schema_1.ScorecardCategory; } });
9
+ Object.defineProperty(exports, "ScorecardCategorySchema", { enumerable: true, get: function () { return scorecard_category_schema_1.ScorecardCategorySchema; } });
10
+ var scorecard_criteria_schema_1 = require("./scorecard-criteria.schema");
11
+ Object.defineProperty(exports, "ScorecardCriteria", { enumerable: true, get: function () { return scorecard_criteria_schema_1.ScorecardCriteria; } });
12
+ Object.defineProperty(exports, "ScorecardCriteriaSchema", { enumerable: true, get: function () { return scorecard_criteria_schema_1.ScorecardCriteriaSchema; } });
13
+ Object.defineProperty(exports, "CriteriaType", { enumerable: true, get: function () { return scorecard_criteria_schema_1.CriteriaType; } });
14
+ Object.defineProperty(exports, "isPromptSettings", { enumerable: true, get: function () { return scorecard_criteria_schema_1.isPromptSettings; } });
15
+ Object.defineProperty(exports, "isKeywordSettings", { enumerable: true, get: function () { return scorecard_criteria_schema_1.isKeywordSettings; } });
16
+ Object.defineProperty(exports, "isBooleanThreshold", { enumerable: true, get: function () { return scorecard_criteria_schema_1.isBooleanThreshold; } });
17
+ Object.defineProperty(exports, "isNumericalThreshold", { enumerable: true, get: function () { return scorecard_criteria_schema_1.isNumericalThreshold; } });
18
+ Object.defineProperty(exports, "isPercentageThreshold", { enumerable: true, get: function () { return scorecard_criteria_schema_1.isPercentageThreshold; } });
19
+ Object.defineProperty(exports, "getEvaluationType", { enumerable: true, get: function () { return scorecard_criteria_schema_1.getEvaluationType; } });
20
+ var scorecard_result_schema_1 = require("./scorecard-result.schema");
21
+ Object.defineProperty(exports, "ScorecardResult", { enumerable: true, get: function () { return scorecard_result_schema_1.ScorecardResult; } });
22
+ Object.defineProperty(exports, "ScorecardResultSchema", { enumerable: true, get: function () { return scorecard_result_schema_1.ScorecardResultSchema; } });
23
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/schemas/index.ts"],"names":[],"mappings":";;;AAAA,uDAI4B;AAH1B,6GAAA,SAAS,OAAA;AAET,mHAAA,eAAe,OAAA;AAGjB,yEAIqC;AAHnC,8HAAA,iBAAiB,OAAA;AAEjB,oIAAA,uBAAuB,OAAA;AAGzB,yEAyBqC;AAxBnC,8HAAA,iBAAiB,OAAA;AAEjB,oIAAA,uBAAuB,OAAA;AACvB,yHAAA,YAAY,OAAA;AAeZ,6HAAA,gBAAgB,OAAA;AAChB,8HAAA,iBAAiB,OAAA;AACjB,+HAAA,kBAAkB,OAAA;AAClB,iIAAA,oBAAoB,OAAA;AACpB,kIAAA,qBAAqB,OAAA;AACrB,8HAAA,iBAAiB,OAAA;AAGnB,qEAMmC;AALjC,0HAAA,eAAe,OAAA;AAEf,gIAAA,qBAAqB,OAAA"}
@@ -0,0 +1,20 @@
1
+ import { Document, Types } from 'mongoose';
2
+ export type ScorecardCategoryDocument = ScorecardCategory & Document;
3
+ export declare class ScorecardCategory {
4
+ _id?: Types.ObjectId;
5
+ scorecardId: Types.ObjectId;
6
+ name: string;
7
+ description?: string;
8
+ weight: number;
9
+ criteriaIds: Types.ObjectId[];
10
+ order: number;
11
+ version: number;
12
+ createdAt?: Date;
13
+ updatedAt?: Date;
14
+ }
15
+ export declare const ScorecardCategorySchema: import("mongoose").Schema<ScorecardCategory, import("mongoose").Model<ScorecardCategory, any, any, any, Document<unknown, any, ScorecardCategory> & ScorecardCategory & Required<{
16
+ _id: Types.ObjectId;
17
+ }>, any>, {}, {}, {}, {}, import("mongoose").DefaultSchemaOptions, ScorecardCategory, Document<unknown, {}, import("mongoose").FlatRecord<ScorecardCategory>> & import("mongoose").FlatRecord<ScorecardCategory> & Required<{
18
+ _id: Types.ObjectId;
19
+ }>>;
20
+ //# sourceMappingURL=scorecard-category.schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scorecard-category.schema.d.ts","sourceRoot":"","sources":["../../src/schemas/scorecard-category.schema.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,QAAQ,EAAE,KAAK,EAAE,MAAM,UAAU,CAAC;AAE3C,MAAM,MAAM,yBAAyB,GAAG,iBAAiB,GAAG,QAAQ,CAAC;AAuBrE,qBACa,iBAAiB;IAC5B,GAAG,CAAC,EAAE,KAAK,CAAC,QAAQ,CAAC;IAGrB,WAAW,EAAG,KAAK,CAAC,QAAQ,CAAC;IAG7B,IAAI,EAAG,MAAM,CAAC;IAGd,WAAW,CAAC,EAAE,MAAM,CAAC;IAGrB,MAAM,EAAG,MAAM,CAAC;IAMhB,WAAW,EAAG,KAAK,CAAC,QAAQ,EAAE,CAAC;IAG/B,KAAK,EAAG,MAAM,CAAC;IAGf,OAAO,EAAG,MAAM,CAAC;IAGjB,SAAS,CAAC,EAAE,IAAI,CAAC;IAGjB,SAAS,CAAC,EAAE,IAAI,CAAC;CAClB;AAED,eAAO,MAAM,uBAAuB;;;;GACa,CAAC"}
@@ -0,0 +1,83 @@
1
+ "use strict";
2
+ var __decorate = (this && this.__decorate) || function (decorators, target, key, desc) {
3
+ var c = arguments.length, r = c < 3 ? target : desc === null ? desc = Object.getOwnPropertyDescriptor(target, key) : desc, d;
4
+ if (typeof Reflect === "object" && typeof Reflect.decorate === "function") r = Reflect.decorate(decorators, target, key, desc);
5
+ else for (var i = decorators.length - 1; i >= 0; i--) if (d = decorators[i]) r = (c < 3 ? d(r) : c > 3 ? d(target, key, r) : d(target, key)) || r;
6
+ return c > 3 && r && Object.defineProperty(target, key, r), r;
7
+ };
8
+ var __metadata = (this && this.__metadata) || function (k, v) {
9
+ if (typeof Reflect === "object" && typeof Reflect.metadata === "function") return Reflect.metadata(k, v);
10
+ };
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.ScorecardCategorySchema = exports.ScorecardCategory = void 0;
13
+ const mongoose_1 = require("@nestjs/mongoose");
14
+ const mongoose_2 = require("mongoose");
15
+ function virtualIdPlugin(schema) {
16
+ schema.set('toJSON', {
17
+ virtuals: true,
18
+ versionKey: false,
19
+ transform: (_doc, ret) => {
20
+ ret.id = ret._id?.toString();
21
+ delete ret._id;
22
+ return ret;
23
+ },
24
+ });
25
+ schema.set('toObject', {
26
+ virtuals: true,
27
+ versionKey: false,
28
+ transform: (_doc, ret) => {
29
+ ret.id = ret._id?.toString();
30
+ delete ret._id;
31
+ return ret;
32
+ },
33
+ });
34
+ }
35
+ let ScorecardCategory = class ScorecardCategory {
36
+ };
37
+ exports.ScorecardCategory = ScorecardCategory;
38
+ __decorate([
39
+ (0, mongoose_1.Prop)({ required: true, type: mongoose_2.Types.ObjectId, ref: 'Scorecard' }),
40
+ __metadata("design:type", mongoose_2.Types.ObjectId)
41
+ ], ScorecardCategory.prototype, "scorecardId", void 0);
42
+ __decorate([
43
+ (0, mongoose_1.Prop)({ required: true }),
44
+ __metadata("design:type", String)
45
+ ], ScorecardCategory.prototype, "name", void 0);
46
+ __decorate([
47
+ (0, mongoose_1.Prop)(),
48
+ __metadata("design:type", String)
49
+ ], ScorecardCategory.prototype, "description", void 0);
50
+ __decorate([
51
+ (0, mongoose_1.Prop)({ default: 100, min: 0, max: 100 }),
52
+ __metadata("design:type", Number)
53
+ ], ScorecardCategory.prototype, "weight", void 0);
54
+ __decorate([
55
+ (0, mongoose_1.Prop)({
56
+ type: [{ type: mongoose_2.Types.ObjectId, ref: 'ScorecardCriteria' }],
57
+ default: [],
58
+ }),
59
+ __metadata("design:type", Array)
60
+ ], ScorecardCategory.prototype, "criteriaIds", void 0);
61
+ __decorate([
62
+ (0, mongoose_1.Prop)({ default: 0 }),
63
+ __metadata("design:type", Number)
64
+ ], ScorecardCategory.prototype, "order", void 0);
65
+ __decorate([
66
+ (0, mongoose_1.Prop)({ default: 1 }),
67
+ __metadata("design:type", Number)
68
+ ], ScorecardCategory.prototype, "version", void 0);
69
+ __decorate([
70
+ (0, mongoose_1.Prop)({ type: Date }),
71
+ __metadata("design:type", Date)
72
+ ], ScorecardCategory.prototype, "createdAt", void 0);
73
+ __decorate([
74
+ (0, mongoose_1.Prop)({ type: Date }),
75
+ __metadata("design:type", Date)
76
+ ], ScorecardCategory.prototype, "updatedAt", void 0);
77
+ exports.ScorecardCategory = ScorecardCategory = __decorate([
78
+ (0, mongoose_1.Schema)({ collection: 'scorecard_categories', timestamps: true })
79
+ ], ScorecardCategory);
80
+ exports.ScorecardCategorySchema = mongoose_1.SchemaFactory.createForClass(ScorecardCategory);
81
+ exports.ScorecardCategorySchema.index({ scorecardId: 1 });
82
+ exports.ScorecardCategorySchema.plugin(virtualIdPlugin);
83
+ //# sourceMappingURL=scorecard-category.schema.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scorecard-category.schema.js","sourceRoot":"","sources":["../../src/schemas/scorecard-category.schema.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,+CAA+D;AAC/D,uCAA2C;AAI3C,SAAS,eAAe,CAAC,MAAW;IAClC,MAAM,CAAC,GAAG,CAAC,QAAQ,EAAE;QACnB,QAAQ,EAAE,IAAI;QACd,UAAU,EAAE,KAAK;QACjB,SAAS,EAAE,CAAC,IAAS,EAAE,GAAQ,EAAE,EAAE;YACjC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC;YAC7B,OAAO,GAAG,CAAC,GAAG,CAAC;YACf,OAAO,GAAG,CAAC;QACb,CAAC;KACF,CAAC,CAAC;IACH,MAAM,CAAC,GAAG,CAAC,UAAU,EAAE;QACrB,QAAQ,EAAE,IAAI;QACd,UAAU,EAAE,KAAK;QACjB,SAAS,EAAE,CAAC,IAAS,EAAE,GAAQ,EAAE,EAAE;YACjC,GAAG,CAAC,EAAE,GAAG,GAAG,CAAC,GAAG,EAAE,QAAQ,EAAE,CAAC;YAC7B,OAAO,GAAG,CAAC,GAAG,CAAC;YACf,OAAO,GAAG,CAAC;QACb,CAAC;KACF,CAAC,CAAC;AACL,CAAC;AAGM,IAAM,iBAAiB,GAAvB,MAAM,iBAAiB;CAgC7B,CAAA;AAhCY,8CAAiB;AAI5B;IADC,IAAA,eAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,IAAI,EAAE,gBAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,WAAW,EAAE,CAAC;8BACnD,gBAAK,CAAC,QAAQ;sDAAC;AAG7B;IADC,IAAA,eAAI,EAAC,EAAE,QAAQ,EAAE,IAAI,EAAE,CAAC;;+CACX;AAGd;IADC,IAAA,eAAI,GAAE;;sDACc;AAGrB;IADC,IAAA,eAAI,EAAC,EAAE,OAAO,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC,EAAE,GAAG,EAAE,GAAG,EAAE,CAAC;;iDACzB;AAMhB;IAJC,IAAA,eAAI,EAAC;QACJ,IAAI,EAAE,CAAC,EAAE,IAAI,EAAE,gBAAK,CAAC,QAAQ,EAAE,GAAG,EAAE,mBAAmB,EAAE,CAAC;QAC1D,OAAO,EAAE,EAAE;KACZ,CAAC;;sDAC6B;AAG/B;IADC,IAAA,eAAI,EAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;gDACN;AAGf;IADC,IAAA,eAAI,EAAC,EAAE,OAAO,EAAE,CAAC,EAAE,CAAC;;kDACJ;AAGjB;IADC,IAAA,eAAI,EAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;8BACT,IAAI;oDAAC;AAGjB;IADC,IAAA,eAAI,EAAC,EAAE,IAAI,EAAE,IAAI,EAAE,CAAC;8BACT,IAAI;oDAAC;4BA/BN,iBAAiB;IAD7B,IAAA,iBAAM,EAAC,EAAE,UAAU,EAAE,sBAAsB,EAAE,UAAU,EAAE,IAAI,EAAE,CAAC;GACpD,iBAAiB,CAgC7B;AAEY,QAAA,uBAAuB,GAClC,wBAAa,CAAC,cAAc,CAAC,iBAAiB,CAAC,CAAC;AAClD,+BAAuB,CAAC,KAAK,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE,CAAC,CAAC;AAClD,+BAAuB,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC"}
@@ -0,0 +1,92 @@
1
+ import { Document, Types, Schema as MongooseSchema } from 'mongoose';
2
+ export type ScorecardCriteriaDocument = ScorecardCriteria & Document;
3
+ export declare enum CriteriaType {
4
+ PROMPT = "prompt",
5
+ KEYWORD = "keyword",
6
+ RESPONSE_TIME = "response_time",
7
+ TOOL_CALL = "tool_call",
8
+ HALLUCINATION = "hallucination",
9
+ KNOWLEDGE_RETENTION = "knowledge_retention",
10
+ CONVERSATION_COMPLETENESS = "conversation_completeness",
11
+ ROLE_ADHERENCE = "role_adherence",
12
+ RAG_FAITHFULNESS = "rag_faithfulness"
13
+ }
14
+ export interface PromptCriteriaSettings {
15
+ description: string;
16
+ evaluationType: 'boolean' | 'score';
17
+ }
18
+ export interface KeywordCriteriaSettings {
19
+ matchType: 'must_contain' | 'must_not_contain' | 'any' | 'none';
20
+ keyword: string | string[];
21
+ /** Plural alias — some DB documents store `keywords` instead of `keyword` */
22
+ keywords?: string | string[];
23
+ caseSensitive?: boolean;
24
+ }
25
+ export interface ResponseTimeCriteriaSettings {
26
+ participant: 'agent' | 'customer' | 'both';
27
+ }
28
+ export interface ToolCallCriteriaSettings {
29
+ expectedTool: string | string[];
30
+ executionCondition?: string;
31
+ }
32
+ export interface HallucinationCriteriaSettings {
33
+ description?: string;
34
+ evaluationType?: 'boolean' | 'score';
35
+ }
36
+ export interface KnowledgeRetentionCriteriaSettings {
37
+ description?: string;
38
+ evaluationType?: 'boolean' | 'score';
39
+ }
40
+ export interface ConversationCompletenessCriteriaSettings {
41
+ description?: string;
42
+ evaluationType?: 'boolean' | 'score';
43
+ }
44
+ export interface RoleAdherenceCriteriaSettings {
45
+ description?: string;
46
+ evaluationType?: 'boolean' | 'score';
47
+ }
48
+ export interface RagFaithfulnessCriteriaSettings {
49
+ description?: string;
50
+ evaluationType?: 'boolean' | 'score';
51
+ retrievalToolNames?: string[];
52
+ }
53
+ export type CriteriaSettings = PromptCriteriaSettings | KeywordCriteriaSettings | ResponseTimeCriteriaSettings | ToolCallCriteriaSettings | HallucinationCriteriaSettings | KnowledgeRetentionCriteriaSettings | ConversationCompletenessCriteriaSettings | RoleAdherenceCriteriaSettings | RagFaithfulnessCriteriaSettings;
54
+ export interface BooleanThreshold {
55
+ expectedValue: boolean;
56
+ }
57
+ export interface NumericalThreshold {
58
+ min?: number;
59
+ max?: number;
60
+ }
61
+ export interface PercentageThreshold {
62
+ minPercentage?: number;
63
+ maxPercentage?: number;
64
+ }
65
+ export type Threshold = BooleanThreshold | NumericalThreshold | PercentageThreshold;
66
+ export declare function isPromptSettings(s: any): s is PromptCriteriaSettings;
67
+ export declare function isKeywordSettings(s: any): s is KeywordCriteriaSettings;
68
+ export declare function isBooleanThreshold(t: any): t is BooleanThreshold;
69
+ export declare function isNumericalThreshold(t: any): t is NumericalThreshold;
70
+ export declare function isPercentageThreshold(t: any): t is PercentageThreshold;
71
+ export declare function getEvaluationType(criteria: ScorecardCriteria): 'boolean' | 'score' | 'number' | 'percentage';
72
+ export declare class ScorecardCriteria {
73
+ _id?: Types.ObjectId;
74
+ scorecardId: Types.ObjectId;
75
+ categoryId: Types.ObjectId;
76
+ key: string;
77
+ name: string;
78
+ description?: string;
79
+ type: string;
80
+ settings: CriteriaSettings;
81
+ threshold?: Threshold;
82
+ version: number;
83
+ isActive: boolean;
84
+ createdAt?: Date;
85
+ updatedAt?: Date;
86
+ }
87
+ export declare const ScorecardCriteriaSchema: MongooseSchema<ScorecardCriteria, import("mongoose").Model<ScorecardCriteria, any, any, any, Document<unknown, any, ScorecardCriteria> & ScorecardCriteria & Required<{
88
+ _id: Types.ObjectId;
89
+ }>, any>, {}, {}, {}, {}, import("mongoose").DefaultSchemaOptions, ScorecardCriteria, Document<unknown, {}, import("mongoose").FlatRecord<ScorecardCriteria>> & import("mongoose").FlatRecord<ScorecardCriteria> & Required<{
90
+ _id: Types.ObjectId;
91
+ }>>;
92
+ //# sourceMappingURL=scorecard-criteria.schema.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"scorecard-criteria.schema.d.ts","sourceRoot":"","sources":["../../src/schemas/scorecard-criteria.schema.ts"],"names":[],"mappings":"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"}