@uluops/core 0.21.1 → 0.22.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +84 -9
- package/dist/ai/AIProvider.d.ts +12 -0
- package/dist/ai/AIProvider.d.ts.map +1 -1
- package/dist/ai/AIProvider.js +16 -2
- package/dist/ai/AIProvider.js.map +1 -1
- package/dist/ai/ModelCatalog.d.ts +10 -2
- package/dist/ai/ModelCatalog.d.ts.map +1 -1
- package/dist/ai/ModelCatalog.js +10 -2
- package/dist/ai/ModelCatalog.js.map +1 -1
- package/dist/ai/TokenBudgetTracker.d.ts +18 -2
- package/dist/ai/TokenBudgetTracker.d.ts.map +1 -1
- package/dist/ai/TokenBudgetTracker.js +22 -2
- package/dist/ai/TokenBudgetTracker.js.map +1 -1
- package/dist/client/UluOpsClient.d.ts +105 -6
- package/dist/client/UluOpsClient.d.ts.map +1 -1
- package/dist/client/UluOpsClient.js +107 -8
- package/dist/client/UluOpsClient.js.map +1 -1
- package/dist/constants.d.ts +2 -2
- package/dist/constants.d.ts.map +1 -1
- package/dist/constants.js +2 -2
- package/dist/constants.js.map +1 -1
- package/dist/executor/AgentExecutor.d.ts +14 -0
- package/dist/executor/AgentExecutor.d.ts.map +1 -1
- package/dist/executor/AgentExecutor.js +66 -3
- package/dist/executor/AgentExecutor.js.map +1 -1
- package/dist/executor/CommandExecutor.d.ts +12 -1
- package/dist/executor/CommandExecutor.d.ts.map +1 -1
- package/dist/executor/CommandExecutor.js +13 -2
- package/dist/executor/CommandExecutor.js.map +1 -1
- package/dist/executor/PipelineExecutor.d.ts +20 -2
- package/dist/executor/PipelineExecutor.d.ts.map +1 -1
- package/dist/executor/PipelineExecutor.js +20 -2
- package/dist/executor/PipelineExecutor.js.map +1 -1
- package/dist/executor/WorkflowExecutor.d.ts +3 -0
- package/dist/executor/WorkflowExecutor.d.ts.map +1 -1
- package/dist/executor/WorkflowExecutor.js +3 -0
- package/dist/executor/WorkflowExecutor.js.map +1 -1
- package/dist/executor/classifyDecision.d.ts +23 -0
- package/dist/executor/classifyDecision.d.ts.map +1 -1
- package/dist/executor/classifyDecision.js +23 -0
- package/dist/executor/classifyDecision.js.map +1 -1
- package/dist/executor/degradationMarkers.d.ts +19 -0
- package/dist/executor/degradationMarkers.d.ts.map +1 -0
- package/dist/executor/degradationMarkers.js +62 -0
- package/dist/executor/degradationMarkers.js.map +1 -0
- package/dist/index.d.ts +4 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/parser/OutputExtractor.d.ts +32 -2
- package/dist/parser/OutputExtractor.d.ts.map +1 -1
- package/dist/parser/OutputExtractor.js +32 -2
- package/dist/parser/OutputExtractor.js.map +1 -1
- package/dist/registry/RegistryClient.d.ts +33 -3
- package/dist/registry/RegistryClient.d.ts.map +1 -1
- package/dist/registry/RegistryClient.js +60 -6
- package/dist/registry/RegistryClient.js.map +1 -1
- package/dist/submission/SubmissionClient.d.ts +42 -4
- package/dist/submission/SubmissionClient.d.ts.map +1 -1
- package/dist/submission/SubmissionClient.js +51 -9
- package/dist/submission/SubmissionClient.js.map +1 -1
- package/dist/types/agent.d.ts +64 -1
- package/dist/types/agent.d.ts.map +1 -1
- package/dist/types/degradation.d.ts +46 -0
- package/dist/types/degradation.d.ts.map +1 -0
- package/dist/types/degradation.js +16 -0
- package/dist/types/degradation.js.map +1 -0
- package/dist/types/index.d.ts +3 -2
- package/dist/types/index.d.ts.map +1 -1
- package/package.json +2 -2
- package/dist/types/validation.d.ts +0 -116
- package/dist/types/validation.d.ts.map +0 -1
- package/dist/types/validation.js +0 -2
- package/dist/types/validation.js.map +0 -1
- package/dist/validation/ValidationClient.d.ts +0 -81
- package/dist/validation/ValidationClient.d.ts.map +0 -1
- package/dist/validation/ValidationClient.js +0 -266
- package/dist/validation/ValidationClient.js.map +0 -1
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
import type { ResolvedConfig } from '../types/config.js';
|
|
2
|
-
import type { ExecutionResult } from '../types/execution.js';
|
|
3
|
-
import type { AgentResult } from '../types/agent.js';
|
|
4
|
-
import type { RunSubmission, RunSubmissionResponse, RunHistoryEntry, ValidationQueryOptions } from '../types/validation.js';
|
|
5
|
-
/**
|
|
6
|
-
* Thin wrapper around @uluops/ops-sdk for execution result submission.
|
|
7
|
-
*
|
|
8
|
-
* Delegates all API operations to OpsClient (which handles retry,
|
|
9
|
-
* rate limiting, error mapping, auth). This class transforms
|
|
10
|
-
* SDK ExecutionResult objects into the format expected by OpsClient.
|
|
11
|
-
*
|
|
12
|
-
* For full issue management, analytics, and taxonomy operations,
|
|
13
|
-
* use `@uluops/ops-sdk` directly.
|
|
14
|
-
*/
|
|
15
|
-
export declare class ValidationClient {
|
|
16
|
-
private config;
|
|
17
|
-
private ops;
|
|
18
|
-
private readonly analysisExtractor;
|
|
19
|
-
constructor(config: ResolvedConfig);
|
|
20
|
-
/**
|
|
21
|
-
* Submit execution results to validation service
|
|
22
|
-
*/
|
|
23
|
-
submit(submission: RunSubmission): Promise<RunSubmissionResponse>;
|
|
24
|
-
/**
|
|
25
|
-
* Preview what a submission would do without saving (dry run).
|
|
26
|
-
*
|
|
27
|
-
* Accepts individual parameters matching the public UluOpsClient API.
|
|
28
|
-
*/
|
|
29
|
-
validateRun(project: string, workflowType: string, result: ExecutionResult | AgentResult): Promise<{
|
|
30
|
-
wouldCreate: boolean;
|
|
31
|
-
wouldUpdate: boolean;
|
|
32
|
-
wouldRegress: boolean;
|
|
33
|
-
validationErrors: string[];
|
|
34
|
-
}>;
|
|
35
|
-
/**
|
|
36
|
-
* Get run history for a project
|
|
37
|
-
*/
|
|
38
|
-
getHistory(project: string, options?: Omit<ValidationQueryOptions, 'project'>): Promise<RunHistoryEntry[]>;
|
|
39
|
-
/**
|
|
40
|
-
* Get details for a specific run by ID
|
|
41
|
-
*/
|
|
42
|
-
getRun(runId: string): Promise<RunSubmissionResponse>;
|
|
43
|
-
/**
|
|
44
|
-
* Determine if a decision is positive using decisionCategory (agents) or raw string fallback.
|
|
45
|
-
* Resolves Aporia A3: cognitive lens agents with non-PASS positive decisions
|
|
46
|
-
* (EXAMINED, VITAL, FLOWING, etc.) now correctly report allGatesPassed: true.
|
|
47
|
-
*/
|
|
48
|
-
private isPositiveDecision;
|
|
49
|
-
/**
|
|
50
|
-
* Transform SDK RunSubmission to OpsClient SaveFeaturesListInput format
|
|
51
|
-
*/
|
|
52
|
-
private transformToOpsInput;
|
|
53
|
-
/**
|
|
54
|
-
* Check if a result is an AgentResult (type === 'agent').
|
|
55
|
-
*/
|
|
56
|
-
private isAgentResult;
|
|
57
|
-
/**
|
|
58
|
-
* Check if a result is a WorkflowResult with decomposable phases.
|
|
59
|
-
*/
|
|
60
|
-
private isWorkflowResult;
|
|
61
|
-
/**
|
|
62
|
-
* Extract individual agent entries from workflow phases.
|
|
63
|
-
* Each command result within a phase becomes its own agent entry.
|
|
64
|
-
*/
|
|
65
|
-
private extractWorkflowAgents;
|
|
66
|
-
/**
|
|
67
|
-
* Convert a single ExecutionResult or AgentResult into an agent tracker entry.
|
|
68
|
-
*/
|
|
69
|
-
private resultToAgent;
|
|
70
|
-
/**
|
|
71
|
-
* Convert a CommandResult into an agent tracker entry.
|
|
72
|
-
*/
|
|
73
|
-
private commandToAgent;
|
|
74
|
-
/** Extract token metrics into the tracker's expected shape. */
|
|
75
|
-
private extractTokens;
|
|
76
|
-
/**
|
|
77
|
-
* Create a local-only response when tracking is disabled
|
|
78
|
-
*/
|
|
79
|
-
private createLocalResponse;
|
|
80
|
-
}
|
|
81
|
-
//# sourceMappingURL=ValidationClient.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ValidationClient.d.ts","sourceRoot":"","sources":["../../src/validation/ValidationClient.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACzD,OAAO,KAAK,EAAE,eAAe,EAAoB,MAAM,uBAAuB,CAAC;AAC/E,OAAO,KAAK,EAAE,WAAW,EAAE,MAAM,mBAAmB,CAAC;AAGrD,OAAO,KAAK,EAAE,aAAa,EAAE,qBAAqB,EAAE,eAAe,EAAE,sBAAsB,EAAE,MAAM,wBAAwB,CAAC;AAG5H;;;;;;;;;GASG;AACH,qBAAa,gBAAgB;IAIf,OAAO,CAAC,MAAM;IAH1B,OAAO,CAAC,GAAG,CAAY;IACvB,OAAO,CAAC,QAAQ,CAAC,iBAAiB,CAAkC;gBAEhD,MAAM,EAAE,cAAc;IAQ1C;;OAEG;IACG,MAAM,CAAC,UAAU,EAAE,aAAa,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAwBvE;;;;OAIG;IACG,WAAW,CACf,OAAO,EAAE,MAAM,EACf,YAAY,EAAE,MAAM,EACpB,MAAM,EAAE,eAAe,GAAG,WAAW,GACpC,OAAO,CAAC;QACT,WAAW,EAAE,OAAO,CAAC;QACrB,WAAW,EAAE,OAAO,CAAC;QACrB,YAAY,EAAE,OAAO,CAAC;QACtB,gBAAgB,EAAE,MAAM,EAAE,CAAC;KAC5B,CAAC;IAYF;;OAEG;IACG,UAAU,CACd,OAAO,EAAE,MAAM,EACf,OAAO,CAAC,EAAE,IAAI,CAAC,sBAAsB,EAAE,SAAS,CAAC,GAChD,OAAO,CAAC,eAAe,EAAE,CAAC;IAuB7B;;OAEG;IACG,MAAM,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAkB3D;;;;OAIG;IACH,OAAO,CAAC,kBAAkB;IAO1B;;OAEG;IACH,OAAO,CAAC,mBAAmB;IAwD3B;;OAEG;IACH,OAAO,CAAC,aAAa;IAIrB;;OAEG;IACH,OAAO,CAAC,gBAAgB;IAIxB;;;OAGG;IACH,OAAO,CAAC,qBAAqB;IAkB7B;;OAEG;IACH,OAAO,CAAC,aAAa;IAcrB;;OAEG;IACH,OAAO,CAAC,cAAc;IActB,+DAA+D;IAC/D,OAAO,CAAC,aAAa;IAWrB;;OAEG;IACH,OAAO,CAAC,mBAAmB;CAgB5B"}
|
|
@@ -1,266 +0,0 @@
|
|
|
1
|
-
import { OpsClient } from '@uluops/ops-sdk';
|
|
2
|
-
import { AnalysisSummaryExtractor } from '../analysis/AnalysisSummaryExtractor.js';
|
|
3
|
-
/**
|
|
4
|
-
* Thin wrapper around @uluops/ops-sdk for execution result submission.
|
|
5
|
-
*
|
|
6
|
-
* Delegates all API operations to OpsClient (which handles retry,
|
|
7
|
-
* rate limiting, error mapping, auth). This class transforms
|
|
8
|
-
* SDK ExecutionResult objects into the format expected by OpsClient.
|
|
9
|
-
*
|
|
10
|
-
* For full issue management, analytics, and taxonomy operations,
|
|
11
|
-
* use `@uluops/ops-sdk` directly.
|
|
12
|
-
*/
|
|
13
|
-
export class ValidationClient {
|
|
14
|
-
config;
|
|
15
|
-
ops;
|
|
16
|
-
analysisExtractor = new AnalysisSummaryExtractor();
|
|
17
|
-
constructor(config) {
|
|
18
|
-
this.config = config;
|
|
19
|
-
this.ops = new OpsClient({
|
|
20
|
-
apiKey: config.apiKey,
|
|
21
|
-
baseUrl: config.validationUrl,
|
|
22
|
-
timeout: config.timeout,
|
|
23
|
-
});
|
|
24
|
-
}
|
|
25
|
-
/**
|
|
26
|
-
* Submit execution results to validation service
|
|
27
|
-
*/
|
|
28
|
-
async submit(submission) {
|
|
29
|
-
if (!this.config.trackingEnabled) {
|
|
30
|
-
return this.createLocalResponse(submission);
|
|
31
|
-
}
|
|
32
|
-
const input = this.transformToOpsInput(submission);
|
|
33
|
-
const response = await this.ops.runs.save(input);
|
|
34
|
-
return {
|
|
35
|
-
runId: response.run.id,
|
|
36
|
-
runNumber: response.run.runNumber,
|
|
37
|
-
projectId: response.run.projectId,
|
|
38
|
-
dashboardUrl: `${this.config.dashboardUrl}/runs/${response.run.id}`,
|
|
39
|
-
allGatesPassed: response.run.allGatesPassed,
|
|
40
|
-
averageScore: response.run.averageScore ?? 0,
|
|
41
|
-
correlation: {
|
|
42
|
-
newIssues: response.correlation?.newIssues ?? 0,
|
|
43
|
-
recurringIssues: response.correlation?.recurringIssues ?? 0,
|
|
44
|
-
regressions: response.correlation?.regressions ?? 0,
|
|
45
|
-
},
|
|
46
|
-
deduplicated: response.deduplicated,
|
|
47
|
-
};
|
|
48
|
-
}
|
|
49
|
-
/**
|
|
50
|
-
* Preview what a submission would do without saving (dry run).
|
|
51
|
-
*
|
|
52
|
-
* Accepts individual parameters matching the public UluOpsClient API.
|
|
53
|
-
*/
|
|
54
|
-
async validateRun(project, workflowType, result) {
|
|
55
|
-
const input = this.transformToOpsInput({ project, workflowType, result });
|
|
56
|
-
const response = await this.ops.runs.validate(input);
|
|
57
|
-
return {
|
|
58
|
-
wouldCreate: Boolean(response.wouldCreate),
|
|
59
|
-
wouldUpdate: Boolean(response.wouldUpdate),
|
|
60
|
-
wouldRegress: Boolean(response.wouldRegress),
|
|
61
|
-
validationErrors: response.validationErrors,
|
|
62
|
-
};
|
|
63
|
-
}
|
|
64
|
-
/**
|
|
65
|
-
* Get run history for a project
|
|
66
|
-
*/
|
|
67
|
-
async getHistory(project, options) {
|
|
68
|
-
const runs = await this.ops.runs.listByProject(project, {
|
|
69
|
-
workflowType: options?.workflowType,
|
|
70
|
-
limit: options?.limit,
|
|
71
|
-
});
|
|
72
|
-
return runs.map(r => ({
|
|
73
|
-
id: r.id,
|
|
74
|
-
projectId: r.projectId,
|
|
75
|
-
runNumber: r.runNumber,
|
|
76
|
-
workflowType: r.workflowType,
|
|
77
|
-
timestamp: r.timestamp,
|
|
78
|
-
allGatesPassed: r.allGatesPassed,
|
|
79
|
-
averageScore: r.averageScore ?? 0,
|
|
80
|
-
rawMarkdown: r.rawMarkdown ?? undefined,
|
|
81
|
-
archivedAt: r.archivedAt ?? undefined,
|
|
82
|
-
archiveReason: r.archiveReason ?? undefined,
|
|
83
|
-
idempotencyKey: r.idempotencyKey,
|
|
84
|
-
createdAt: r.createdAt,
|
|
85
|
-
updatedAt: r.updatedAt ?? r.createdAt,
|
|
86
|
-
}));
|
|
87
|
-
}
|
|
88
|
-
/**
|
|
89
|
-
* Get details for a specific run by ID
|
|
90
|
-
*/
|
|
91
|
-
async getRun(runId) {
|
|
92
|
-
const run = await this.ops.runs.get(runId);
|
|
93
|
-
return {
|
|
94
|
-
runId: run.id,
|
|
95
|
-
runNumber: run.runNumber,
|
|
96
|
-
projectId: run.projectId,
|
|
97
|
-
dashboardUrl: `${this.config.dashboardUrl}/runs/${run.id}`,
|
|
98
|
-
allGatesPassed: run.allGatesPassed,
|
|
99
|
-
averageScore: run.averageScore ?? 0,
|
|
100
|
-
correlation: { newIssues: 0, recurringIssues: 0, regressions: 0 },
|
|
101
|
-
deduplicated: false,
|
|
102
|
-
};
|
|
103
|
-
}
|
|
104
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
105
|
-
// Private Methods
|
|
106
|
-
// ─────────────────────────────────────────────────────────────────────────────
|
|
107
|
-
/**
|
|
108
|
-
* Determine if a decision is positive using decisionCategory (agents) or raw string fallback.
|
|
109
|
-
* Resolves Aporia A3: cognitive lens agents with non-PASS positive decisions
|
|
110
|
-
* (EXAMINED, VITAL, FLOWING, etc.) now correctly report allGatesPassed: true.
|
|
111
|
-
*/
|
|
112
|
-
isPositiveDecision(result) {
|
|
113
|
-
if ('decisionCategory' in result && result.decisionCategory) {
|
|
114
|
-
return result.decisionCategory === 'positive';
|
|
115
|
-
}
|
|
116
|
-
return result.decision === 'PASS' || result.decision === 'SHIP';
|
|
117
|
-
}
|
|
118
|
-
/**
|
|
119
|
-
* Transform SDK RunSubmission to OpsClient SaveFeaturesListInput format
|
|
120
|
-
*/
|
|
121
|
-
transformToOpsInput(submission) {
|
|
122
|
-
const { result } = submission;
|
|
123
|
-
// Workflow/pipeline results: decompose phases into per-agent entries
|
|
124
|
-
const agents = this.isWorkflowResult(result)
|
|
125
|
-
? this.extractWorkflowAgents(result)
|
|
126
|
-
: [this.resultToAgent(result)];
|
|
127
|
-
// Extract analysis summary and records when definition is available and result is an agent
|
|
128
|
-
let analysisSummary;
|
|
129
|
-
let analysisRecords;
|
|
130
|
-
if (submission.resolvedDefinition && this.isAgentResult(result)) {
|
|
131
|
-
const analysis = this.analysisExtractor.extract(result, submission.resolvedDefinition);
|
|
132
|
-
analysisSummary = analysis.summary;
|
|
133
|
-
analysisRecords = analysis.records.length > 0 ? analysis.records : undefined;
|
|
134
|
-
}
|
|
135
|
-
return {
|
|
136
|
-
project: submission.project,
|
|
137
|
-
workflowType: submission.workflowType,
|
|
138
|
-
idempotencyKey: submission.idempotencyKey,
|
|
139
|
-
agents,
|
|
140
|
-
recommendations: result.recommendations.map(r => ({
|
|
141
|
-
agent: r.agent ?? 'unknown',
|
|
142
|
-
title: r.title,
|
|
143
|
-
priority: r.priority,
|
|
144
|
-
severity: r.severity,
|
|
145
|
-
failureCode: r.failureCode && /^(STR|SEM|PRA|EPI)-[A-Z]{3}\/[CHMLI]$/.test(r.failureCode) ? r.failureCode : undefined,
|
|
146
|
-
failureDomain: r.failureDomain,
|
|
147
|
-
failureMode: r.failureMode,
|
|
148
|
-
category: r.category,
|
|
149
|
-
filePath: r.filePath,
|
|
150
|
-
lineNumber: r.lineNumber,
|
|
151
|
-
description: r.description,
|
|
152
|
-
classificationConfidence: r.classificationConfidence,
|
|
153
|
-
classifiedBy: r.classifiedBy,
|
|
154
|
-
secondaryFailureCodes: r.secondaryFailureCodes,
|
|
155
|
-
taxonomyVersion: r.taxonomyVersion,
|
|
156
|
-
})),
|
|
157
|
-
timestamp: new Date().toISOString(),
|
|
158
|
-
rawMarkdown: submission.rawMarkdown,
|
|
159
|
-
summary: {
|
|
160
|
-
allGatesPassed: this.isPositiveDecision(result),
|
|
161
|
-
averageScore: result.score ?? 0,
|
|
162
|
-
},
|
|
163
|
-
definitionType: result.type,
|
|
164
|
-
definitionName: result.name,
|
|
165
|
-
definitionVersion: result.version !== 'unknown' ? result.version : undefined,
|
|
166
|
-
definitionHash: result.definitionHash?.replace(/^sha256:/, ''),
|
|
167
|
-
definitionMinSubscription: result.minSubscription,
|
|
168
|
-
analysisSummary,
|
|
169
|
-
analysisRecords,
|
|
170
|
-
};
|
|
171
|
-
}
|
|
172
|
-
/**
|
|
173
|
-
* Check if a result is an AgentResult (type === 'agent').
|
|
174
|
-
*/
|
|
175
|
-
isAgentResult(result) {
|
|
176
|
-
return result.type === 'agent';
|
|
177
|
-
}
|
|
178
|
-
/**
|
|
179
|
-
* Check if a result is a WorkflowResult with decomposable phases.
|
|
180
|
-
*/
|
|
181
|
-
isWorkflowResult(result) {
|
|
182
|
-
return result.type === 'workflow' && 'phases' in result && Array.isArray(result.phases);
|
|
183
|
-
}
|
|
184
|
-
/**
|
|
185
|
-
* Extract individual agent entries from workflow phases.
|
|
186
|
-
* Each command result within a phase becomes its own agent entry.
|
|
187
|
-
*/
|
|
188
|
-
extractWorkflowAgents(result) {
|
|
189
|
-
const agents = [];
|
|
190
|
-
for (const phase of result.phases) {
|
|
191
|
-
if (phase.decision === 'skipped' || phase.decision === 'aborted')
|
|
192
|
-
continue;
|
|
193
|
-
for (const cmd of phase.commands) {
|
|
194
|
-
agents.push(this.commandToAgent(cmd));
|
|
195
|
-
}
|
|
196
|
-
}
|
|
197
|
-
// Fallback: if no agents were extracted (all phases skipped), create a single entry
|
|
198
|
-
if (agents.length === 0) {
|
|
199
|
-
agents.push(this.resultToAgent(result));
|
|
200
|
-
}
|
|
201
|
-
return agents;
|
|
202
|
-
}
|
|
203
|
-
/**
|
|
204
|
-
* Convert a single ExecutionResult or AgentResult into an agent tracker entry.
|
|
205
|
-
*/
|
|
206
|
-
resultToAgent(result) {
|
|
207
|
-
return {
|
|
208
|
-
name: result.name,
|
|
209
|
-
definitionVersion: result.version !== 'unknown' ? result.version : undefined,
|
|
210
|
-
score: result.score ?? 0,
|
|
211
|
-
maxScore: 100,
|
|
212
|
-
decision: result.decision,
|
|
213
|
-
summary: 'summary' in result ? result.summary : undefined,
|
|
214
|
-
model: result.metrics.model,
|
|
215
|
-
tokens: this.extractTokens(result.metrics),
|
|
216
|
-
durationMs: result.metrics.durationMs,
|
|
217
|
-
};
|
|
218
|
-
}
|
|
219
|
-
/**
|
|
220
|
-
* Convert a CommandResult into an agent tracker entry.
|
|
221
|
-
*/
|
|
222
|
-
commandToAgent(cmd) {
|
|
223
|
-
return {
|
|
224
|
-
name: cmd.name,
|
|
225
|
-
definitionVersion: cmd.version !== 'unknown' ? cmd.version : undefined,
|
|
226
|
-
score: cmd.score ?? 0,
|
|
227
|
-
maxScore: cmd.maxScore ?? 100,
|
|
228
|
-
decision: cmd.decision,
|
|
229
|
-
summary: undefined,
|
|
230
|
-
model: cmd.metrics.model,
|
|
231
|
-
tokens: this.extractTokens(cmd.metrics),
|
|
232
|
-
durationMs: cmd.metrics.durationMs,
|
|
233
|
-
};
|
|
234
|
-
}
|
|
235
|
-
/** Extract token metrics into the tracker's expected shape. */
|
|
236
|
-
extractTokens(metrics) {
|
|
237
|
-
return {
|
|
238
|
-
inputTokens: metrics.inputTokens,
|
|
239
|
-
outputTokens: metrics.outputTokens,
|
|
240
|
-
cacheCreationTokens: metrics.cacheCreationTokens,
|
|
241
|
-
cacheReadTokens: metrics.cacheReadTokens,
|
|
242
|
-
thinkingTokens: metrics.thinkingTokens,
|
|
243
|
-
totalEffectiveTokens: metrics.totalEffectiveTokens,
|
|
244
|
-
};
|
|
245
|
-
}
|
|
246
|
-
/**
|
|
247
|
-
* Create a local-only response when tracking is disabled
|
|
248
|
-
*/
|
|
249
|
-
createLocalResponse(submission) {
|
|
250
|
-
return {
|
|
251
|
-
runId: 'local',
|
|
252
|
-
runNumber: 0,
|
|
253
|
-
projectId: 'local',
|
|
254
|
-
dashboardUrl: '',
|
|
255
|
-
allGatesPassed: this.isPositiveDecision(submission.result),
|
|
256
|
-
averageScore: submission.result.score ?? 0,
|
|
257
|
-
correlation: {
|
|
258
|
-
newIssues: submission.result.recommendations.length,
|
|
259
|
-
recurringIssues: 0,
|
|
260
|
-
regressions: 0,
|
|
261
|
-
},
|
|
262
|
-
deduplicated: false,
|
|
263
|
-
};
|
|
264
|
-
}
|
|
265
|
-
}
|
|
266
|
-
//# sourceMappingURL=ValidationClient.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"ValidationClient.js","sourceRoot":"","sources":["../../src/validation/ValidationClient.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAuD,MAAM,iBAAiB,CAAC;AAOjG,OAAO,EAAE,wBAAwB,EAAE,MAAM,yCAAyC,CAAC;AAEnF;;;;;;;;;GASG;AACH,MAAM,OAAO,gBAAgB;IAIP;IAHZ,GAAG,CAAY;IACN,iBAAiB,GAAG,IAAI,wBAAwB,EAAE,CAAC;IAEpE,YAAoB,MAAsB;QAAtB,WAAM,GAAN,MAAM,CAAgB;QACxC,IAAI,CAAC,GAAG,GAAG,IAAI,SAAS,CAAC;YACvB,MAAM,EAAE,MAAM,CAAC,MAAM;YACrB,OAAO,EAAE,MAAM,CAAC,aAAa;YAC7B,OAAO,EAAE,MAAM,CAAC,OAAO;SACxB,CAAC,CAAC;IACL,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,UAAyB;QACpC,IAAI,CAAC,IAAI,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;YACjC,OAAO,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;QAC9C,CAAC;QAED,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,UAAU,CAAC,CAAC;QACnD,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAEjD,OAAO;YACL,KAAK,EAAE,QAAQ,CAAC,GAAG,CAAC,EAAE;YACtB,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,SAAS;YACjC,SAAS,EAAE,QAAQ,CAAC,GAAG,CAAC,SAAS;YACjC,YAAY,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,SAAS,QAAQ,CAAC,GAAG,CAAC,EAAE,EAAE;YACnE,cAAc,EAAE,QAAQ,CAAC,GAAG,CAAC,cAAc;YAC3C,YAAY,EAAE,QAAQ,CAAC,GAAG,CAAC,YAAY,IAAI,CAAC;YAC5C,WAAW,EAAE;gBACX,SAAS,EAAE,QAAQ,CAAC,WAAW,EAAE,SAAS,IAAI,CAAC;gBAC/C,eAAe,EAAE,QAAQ,CAAC,WAAW,EAAE,eAAe,IAAI,CAAC;gBAC3D,WAAW,EAAE,QAAQ,CAAC,WAAW,EAAE,WAAW,IAAI,CAAC;aACpD;YACD,YAAY,EAAE,QAAQ,CAAC,YAAY;SACpC,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,WAAW,CACf,OAAe,EACf,YAAoB,EACpB,MAAqC;QAOrC,MAAM,KAAK,GAAG,IAAI,CAAC,mBAAmB,CAAC,EAAE,OAAO,EAAE,YAAY,EAAE,MAAM,EAAE,CAAC,CAAC;QAC1E,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QAErD,OAAO;YACL,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;YAC1C,WAAW,EAAE,OAAO,CAAC,QAAQ,CAAC,WAAW,CAAC;YAC1C,YAAY,EAAE,OAAO,CAAC,QAAQ,CAAC,YAAY,CAAC;YAC5C,gBAAgB,EAAE,QAAQ,CAAC,gBAAgB;SAC5C,CAAC;IACJ,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,UAAU,CACd,OAAe,EACf,OAAiD;QAEjD,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,OAAO,EAAE;YACtD,YAAY,EAAE,OAAO,EAAE,YAAY;YACnC,KAAK,EAAE,OAAO,EAAE,KAAK;SACtB,CAAC,CAAC;QAEH,OAAO,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;YACpB,EAAE,EAAE,CAAC,CAAC,EAAE;YACR,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,YAAY,EAAE,CAAC,CAAC,YAAY;YAC5B,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,cAAc,EAAE,CAAC,CAAC,cAAc;YAChC,YAAY,EAAE,CAAC,CAAC,YAAY,IAAI,CAAC;YACjC,WAAW,EAAG,CAA6B,CAAC,WAAqB,IAAI,SAAS;YAC9E,UAAU,EAAE,CAAC,CAAC,UAAU,IAAI,SAAS;YACrC,aAAa,EAAE,CAAC,CAAC,aAAa,IAAI,SAAS;YAC3C,cAAc,EAAG,CAA6B,CAAC,cAAoC;YACnF,SAAS,EAAE,CAAC,CAAC,SAAS;YACtB,SAAS,EAAG,CAA6B,CAAC,SAAmB,IAAI,CAAC,CAAC,SAAS;SAC7E,CAAC,CAAC,CAAC;IACN,CAAC;IAED;;OAEG;IACH,KAAK,CAAC,MAAM,CAAC,KAAa;QACxB,MAAM,GAAG,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;QAC3C,OAAO;YACL,KAAK,EAAE,GAAG,CAAC,EAAE;YACb,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,SAAS,EAAE,GAAG,CAAC,SAAS;YACxB,YAAY,EAAE,GAAG,IAAI,CAAC,MAAM,CAAC,YAAY,SAAS,GAAG,CAAC,EAAE,EAAE;YAC1D,cAAc,EAAE,GAAG,CAAC,cAAc;YAClC,YAAY,EAAE,GAAG,CAAC,YAAY,IAAI,CAAC;YACnC,WAAW,EAAE,EAAE,SAAS,EAAE,CAAC,EAAE,eAAe,EAAE,CAAC,EAAE,WAAW,EAAE,CAAC,EAAE;YACjE,YAAY,EAAE,KAAK;SACpB,CAAC;IACJ,CAAC;IAED,gFAAgF;IAChF,kBAAkB;IAClB,gFAAgF;IAEhF;;;;OAIG;IACK,kBAAkB,CAAC,MAAqC;QAC9D,IAAI,kBAAkB,IAAI,MAAM,IAAI,MAAM,CAAC,gBAAgB,EAAE,CAAC;YAC5D,OAAO,MAAM,CAAC,gBAAgB,KAAK,UAAU,CAAC;QAChD,CAAC;QACD,OAAO,MAAM,CAAC,QAAQ,KAAK,MAAM,IAAI,MAAM,CAAC,QAAQ,KAAK,MAAM,CAAC;IAClE,CAAC;IAED;;OAEG;IACK,mBAAmB,CAAC,UAAyB;QACnD,MAAM,EAAE,MAAM,EAAE,GAAG,UAAU,CAAC;QAE9B,qEAAqE;QACrE,MAAM,MAAM,GAAG,IAAI,CAAC,gBAAgB,CAAC,MAAM,CAAC;YAC1C,CAAC,CAAC,IAAI,CAAC,qBAAqB,CAAC,MAAM,CAAC;YACpC,CAAC,CAAC,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;QAEjC,2FAA2F;QAC3F,IAAI,eAAiD,CAAC;QACtD,IAAI,eAAkD,CAAC;QAEvD,IAAI,UAAU,CAAC,kBAAkB,IAAI,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,EAAE,CAAC;YAChE,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,OAAO,CAAC,MAAqB,EAAE,UAAU,CAAC,kBAAkB,CAAC,CAAC;YACtG,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC;YACnC,eAAe,GAAG,QAAQ,CAAC,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS,CAAC;QAC/E,CAAC;QAED,OAAO;YACL,OAAO,EAAE,UAAU,CAAC,OAAO;YAC3B,YAAY,EAAE,UAAU,CAAC,YAAY;YACrC,cAAc,EAAE,UAAU,CAAC,cAAc;YACzC,MAAM;YACN,eAAe,EAAE,MAAM,CAAC,eAAe,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;gBAChD,KAAK,EAAE,CAAC,CAAC,KAAK,IAAI,SAAS;gBAC3B,KAAK,EAAE,CAAC,CAAC,KAAK;gBACd,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,WAAW,EAAE,CAAC,CAAC,WAAW,IAAI,uCAAuC,CAAC,IAAI,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,WAAW,CAAC,CAAC,CAAC,SAAS;gBACrH,aAAa,EAAE,CAAC,CAAC,aAAa;gBAC9B,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,QAAQ,EAAE,CAAC,CAAC,QAAQ;gBACpB,UAAU,EAAE,CAAC,CAAC,UAAU;gBACxB,WAAW,EAAE,CAAC,CAAC,WAAW;gBAC1B,wBAAwB,EAAE,CAAC,CAAC,wBAAwB;gBACpD,YAAY,EAAE,CAAC,CAAC,YAAY;gBAC5B,qBAAqB,EAAE,CAAC,CAAC,qBAAqB;gBAC9C,eAAe,EAAE,CAAC,CAAC,eAAe;aACnC,CAAC,CAAC;YACH,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;YACnC,WAAW,EAAE,UAAU,CAAC,WAAW;YACnC,OAAO,EAAE;gBACP,cAAc,EAAE,IAAI,CAAC,kBAAkB,CAAC,MAAM,CAAC;gBAC/C,YAAY,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC;aAChC;YACD,cAAc,EAAE,MAAM,CAAC,IAAI;YAC3B,cAAc,EAAE,MAAM,CAAC,IAAI;YAC3B,iBAAiB,EAAE,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;YAC5E,cAAc,EAAE,MAAM,CAAC,cAAc,EAAE,OAAO,CAAC,UAAU,EAAE,EAAE,CAAC;YAC9D,yBAAyB,EAAE,MAAM,CAAC,eAAe;YACjD,eAAe;YACf,eAAe;SAChB,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,MAAqC;QACzD,OAAO,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC;IACjC,CAAC;IAED;;OAEG;IACK,gBAAgB,CAAC,MAAqC;QAC5D,OAAO,MAAM,CAAC,IAAI,KAAK,UAAU,IAAI,QAAQ,IAAI,MAAM,IAAI,KAAK,CAAC,OAAO,CAAE,MAAyB,CAAC,MAAM,CAAC,CAAC;IAC9G,CAAC;IAED;;;OAGG;IACK,qBAAqB,CAAC,MAAsB;QAClD,MAAM,MAAM,GAA4C,EAAE,CAAC;QAE3D,KAAK,MAAM,KAAK,IAAI,MAAM,CAAC,MAAM,EAAE,CAAC;YAClC,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS,IAAI,KAAK,CAAC,QAAQ,KAAK,SAAS;gBAAE,SAAS;YAC3E,KAAK,MAAM,GAAG,IAAI,KAAK,CAAC,QAAQ,EAAE,CAAC;gBACjC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC;YACxC,CAAC;QACH,CAAC;QAED,oFAAoF;QACpF,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACxB,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,CAAC,CAAC;QAC1C,CAAC;QAED,OAAO,MAAM,CAAC;IAChB,CAAC;IAED;;OAEG;IACK,aAAa,CAAC,MAAqC;QACzD,OAAO;YACL,IAAI,EAAE,MAAM,CAAC,IAAI;YACjB,iBAAiB,EAAE,MAAM,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;YAC5E,KAAK,EAAE,MAAM,CAAC,KAAK,IAAI,CAAC;YACxB,QAAQ,EAAE,GAAG;YACb,QAAQ,EAAE,MAAM,CAAC,QAAQ;YACzB,OAAO,EAAE,SAAS,IAAI,MAAM,CAAC,CAAC,CAAE,MAAsB,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;YAC1E,KAAK,EAAE,MAAM,CAAC,OAAO,CAAC,KAAK;YAC3B,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,MAAM,CAAC,OAAO,CAAC;YAC1C,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,UAAU;SACtC,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,cAAc,CAAC,GAAkB;QACvC,OAAO;YACL,IAAI,EAAE,GAAG,CAAC,IAAI;YACd,iBAAiB,EAAE,GAAG,CAAC,OAAO,KAAK,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,SAAS;YACtE,KAAK,EAAE,GAAG,CAAC,KAAK,IAAI,CAAC;YACrB,QAAQ,EAAE,GAAG,CAAC,QAAQ,IAAI,GAAG;YAC7B,QAAQ,EAAE,GAAG,CAAC,QAAQ;YACtB,OAAO,EAAE,SAA+B;YACxC,KAAK,EAAE,GAAG,CAAC,OAAO,CAAC,KAAK;YACxB,MAAM,EAAE,IAAI,CAAC,aAAa,CAAC,GAAG,CAAC,OAAO,CAAC;YACvC,UAAU,EAAE,GAAG,CAAC,OAAO,CAAC,UAAU;SACnC,CAAC;IACJ,CAAC;IAED,+DAA+D;IACvD,aAAa,CAAC,OAAyB;QAC7C,OAAO;YACL,WAAW,EAAE,OAAO,CAAC,WAAW;YAChC,YAAY,EAAE,OAAO,CAAC,YAAY;YAClC,mBAAmB,EAAE,OAAO,CAAC,mBAAmB;YAChD,eAAe,EAAE,OAAO,CAAC,eAAe;YACxC,cAAc,EAAE,OAAO,CAAC,cAAc;YACtC,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;SACnD,CAAC;IACJ,CAAC;IAED;;OAEG;IACK,mBAAmB,CAAC,UAAyB;QACnD,OAAO;YACL,KAAK,EAAE,OAAO;YACd,SAAS,EAAE,CAAC;YACZ,SAAS,EAAE,OAAO;YAClB,YAAY,EAAE,EAAE;YAChB,cAAc,EAAE,IAAI,CAAC,kBAAkB,CAAC,UAAU,CAAC,MAAM,CAAC;YAC1D,YAAY,EAAE,UAAU,CAAC,MAAM,CAAC,KAAK,IAAI,CAAC;YAC1C,WAAW,EAAE;gBACX,SAAS,EAAE,UAAU,CAAC,MAAM,CAAC,eAAe,CAAC,MAAM;gBACnD,eAAe,EAAE,CAAC;gBAClB,WAAW,EAAE,CAAC;aACf;YACD,YAAY,EAAE,KAAK;SACpB,CAAC;IACJ,CAAC;CACF"}
|