@thinkhive/sdk 3.1.1 → 4.0.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.
- package/MIGRATION.md +83 -12
- package/README.md +279 -128
- package/dist/api/agents.d.ts +169 -0
- package/dist/api/agents.js +185 -0
- package/dist/api/apiKeys.d.ts +252 -0
- package/dist/api/apiKeys.js +298 -0
- package/dist/api/business-metrics.d.ts +188 -0
- package/dist/api/business-metrics.js +213 -0
- package/dist/api/calibration.d.ts +0 -62
- package/dist/api/calibration.js +5 -48
- package/dist/api/claims.js +10 -7
- package/dist/api/conversation-eval.d.ts +200 -0
- package/dist/api/conversation-eval.js +235 -0
- package/dist/api/deterministic-graders.d.ts +205 -0
- package/dist/api/deterministic-graders.js +191 -0
- package/dist/api/eval-health.d.ts +250 -0
- package/dist/api/eval-health.js +224 -0
- package/dist/api/human-review.d.ts +275 -0
- package/dist/api/human-review.js +236 -0
- package/dist/api/nondeterminism.d.ts +300 -0
- package/dist/api/nondeterminism.js +250 -0
- package/dist/api/quality-metrics.d.ts +303 -0
- package/dist/api/quality-metrics.js +198 -0
- package/dist/api/roi-analytics.d.ts +263 -0
- package/dist/api/roi-analytics.js +204 -0
- package/dist/api/runs.js +12 -6
- package/dist/api/transcript-patterns.d.ts +204 -0
- package/dist/api/transcript-patterns.js +227 -0
- package/dist/core/client.d.ts +83 -9
- package/dist/core/client.js +229 -34
- package/dist/core/config.d.ts +2 -3
- package/dist/core/config.js +3 -4
- package/dist/core/types.d.ts +57 -4
- package/dist/core/types.js +1 -1
- package/dist/index.d.ts +429 -76
- package/dist/index.js +262 -42
- package/package.json +2 -2
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ThinkHive SDK v3.1 - ROI Analytics API
|
|
4
|
+
*
|
|
5
|
+
* Business ROI & Metrics Engine for calculating financial impact
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.roiAnalytics = void 0;
|
|
9
|
+
exports.calculateRevenueAtRisk = calculateRevenueAtRisk;
|
|
10
|
+
exports.calculateAutomationSavings = calculateAutomationSavings;
|
|
11
|
+
exports.formatCurrency = formatCurrency;
|
|
12
|
+
exports.getROIQuality = getROIQuality;
|
|
13
|
+
const client_1 = require("../core/client");
|
|
14
|
+
// ============================================================================
|
|
15
|
+
// ROI ANALYTICS API CLIENT
|
|
16
|
+
// ============================================================================
|
|
17
|
+
/**
|
|
18
|
+
* ROI Analytics API client for business impact analysis
|
|
19
|
+
*/
|
|
20
|
+
exports.roiAnalytics = {
|
|
21
|
+
/**
|
|
22
|
+
* Get aggregated ROI summary for traces in date range
|
|
23
|
+
*
|
|
24
|
+
* @example
|
|
25
|
+
* ```typescript
|
|
26
|
+
* const summary = await roiAnalytics.summary({
|
|
27
|
+
* startDate: '2024-01-01',
|
|
28
|
+
* endDate: '2024-01-31',
|
|
29
|
+
* });
|
|
30
|
+
* console.log(`Revenue protected: $${summary.revenueProtected}`);
|
|
31
|
+
* ```
|
|
32
|
+
*/
|
|
33
|
+
async summary(options = {}) {
|
|
34
|
+
const params = new URLSearchParams();
|
|
35
|
+
if (options.startDate) {
|
|
36
|
+
params.set('startDate', new Date(options.startDate).toISOString());
|
|
37
|
+
}
|
|
38
|
+
if (options.endDate) {
|
|
39
|
+
params.set('endDate', new Date(options.endDate).toISOString());
|
|
40
|
+
}
|
|
41
|
+
if (options.agentId) {
|
|
42
|
+
params.set('agentId', options.agentId);
|
|
43
|
+
}
|
|
44
|
+
const response = await (0, client_1.apiRequest)(`/analytics/roi/summary?${params.toString()}`, { apiVersion: 'v1' });
|
|
45
|
+
return response.data.summary;
|
|
46
|
+
},
|
|
47
|
+
/**
|
|
48
|
+
* Get ROI metrics for a specific agent
|
|
49
|
+
*
|
|
50
|
+
* @example
|
|
51
|
+
* ```typescript
|
|
52
|
+
* const agentROI = await roiAnalytics.byAgent('agent_123', {
|
|
53
|
+
* startDate: '2024-01-01',
|
|
54
|
+
* });
|
|
55
|
+
* console.log(`Agent: ${agentROI.agent.name}`);
|
|
56
|
+
* console.log(`ROI: ${agentROI.roi.totalFinancialImpact}`);
|
|
57
|
+
* ```
|
|
58
|
+
*/
|
|
59
|
+
async byAgent(agentId, options = {}) {
|
|
60
|
+
const params = new URLSearchParams();
|
|
61
|
+
if (options.startDate) {
|
|
62
|
+
params.set('startDate', new Date(options.startDate).toISOString());
|
|
63
|
+
}
|
|
64
|
+
if (options.endDate) {
|
|
65
|
+
params.set('endDate', new Date(options.endDate).toISOString());
|
|
66
|
+
}
|
|
67
|
+
return (0, client_1.apiRequestWithData)(`/analytics/roi/by-agent/${agentId}?${params.toString()}`, { apiVersion: 'v1' });
|
|
68
|
+
},
|
|
69
|
+
/**
|
|
70
|
+
* Get ROI trends over time
|
|
71
|
+
*
|
|
72
|
+
* @example
|
|
73
|
+
* ```typescript
|
|
74
|
+
* const trends = await roiAnalytics.trends({
|
|
75
|
+
* startDate: '2024-01-01',
|
|
76
|
+
* endDate: '2024-01-31',
|
|
77
|
+
* });
|
|
78
|
+
* for (const day of trends) {
|
|
79
|
+
* console.log(`${day.date}: ${day.successRate}% success`);
|
|
80
|
+
* }
|
|
81
|
+
* ```
|
|
82
|
+
*/
|
|
83
|
+
async trends(options = {}) {
|
|
84
|
+
const params = new URLSearchParams();
|
|
85
|
+
if (options.startDate) {
|
|
86
|
+
params.set('startDate', new Date(options.startDate).toISOString());
|
|
87
|
+
}
|
|
88
|
+
if (options.endDate) {
|
|
89
|
+
params.set('endDate', new Date(options.endDate).toISOString());
|
|
90
|
+
}
|
|
91
|
+
if (options.agentId) {
|
|
92
|
+
params.set('agentId', options.agentId);
|
|
93
|
+
}
|
|
94
|
+
const response = await (0, client_1.apiRequest)(`/analytics/roi/trends?${params.toString()}`, { apiVersion: 'v1' });
|
|
95
|
+
return response.data.trends;
|
|
96
|
+
},
|
|
97
|
+
/**
|
|
98
|
+
* Calculate ROI for a trace or provided message data
|
|
99
|
+
*
|
|
100
|
+
* @example
|
|
101
|
+
* ```typescript
|
|
102
|
+
* // Calculate for existing trace
|
|
103
|
+
* const impact = await roiAnalytics.calculate({
|
|
104
|
+
* traceId: 'trace_abc123',
|
|
105
|
+
* });
|
|
106
|
+
*
|
|
107
|
+
* // Calculate for new data with custom config
|
|
108
|
+
* const impact = await roiAnalytics.calculate({
|
|
109
|
+
* userMessage: 'Help me cancel my subscription',
|
|
110
|
+
* agentResponse: 'I can help with that...',
|
|
111
|
+
* industryConfig: { industry: 'saas', avgCustomerLTV: 10000 },
|
|
112
|
+
* });
|
|
113
|
+
* ```
|
|
114
|
+
*/
|
|
115
|
+
async calculate(options) {
|
|
116
|
+
const response = await (0, client_1.apiRequest)('/analytics/roi/calculate', {
|
|
117
|
+
method: 'POST',
|
|
118
|
+
body: options,
|
|
119
|
+
apiVersion: 'v1',
|
|
120
|
+
});
|
|
121
|
+
return response.data.impact;
|
|
122
|
+
},
|
|
123
|
+
/**
|
|
124
|
+
* Get available industry configurations
|
|
125
|
+
*
|
|
126
|
+
* @example
|
|
127
|
+
* ```typescript
|
|
128
|
+
* const industries = await roiAnalytics.industries();
|
|
129
|
+
* for (const config of industries) {
|
|
130
|
+
* console.log(`${config.name}: $${config.avgCustomerLTV} LTV`);
|
|
131
|
+
* }
|
|
132
|
+
* ```
|
|
133
|
+
*/
|
|
134
|
+
async industries() {
|
|
135
|
+
const response = await (0, client_1.apiRequest)('/analytics/roi/industries', { apiVersion: 'v1' });
|
|
136
|
+
return response.data.industries;
|
|
137
|
+
},
|
|
138
|
+
/**
|
|
139
|
+
* Get correlation analysis for traces
|
|
140
|
+
*
|
|
141
|
+
* @example
|
|
142
|
+
* ```typescript
|
|
143
|
+
* const analysis = await roiAnalytics.correlations({
|
|
144
|
+
* startDate: '2024-01-01',
|
|
145
|
+
* agentId: 'agent_123',
|
|
146
|
+
* });
|
|
147
|
+
* console.log(`Health score: ${analysis.overallHealthScore}`);
|
|
148
|
+
* for (const insight of analysis.topInsights) {
|
|
149
|
+
* console.log(`- ${insight}`);
|
|
150
|
+
* }
|
|
151
|
+
* ```
|
|
152
|
+
*/
|
|
153
|
+
async correlations(options = {}) {
|
|
154
|
+
const params = new URLSearchParams();
|
|
155
|
+
if (options.startDate) {
|
|
156
|
+
params.set('startDate', new Date(options.startDate).toISOString());
|
|
157
|
+
}
|
|
158
|
+
if (options.endDate) {
|
|
159
|
+
params.set('endDate', new Date(options.endDate).toISOString());
|
|
160
|
+
}
|
|
161
|
+
if (options.agentId) {
|
|
162
|
+
params.set('agentId', options.agentId);
|
|
163
|
+
}
|
|
164
|
+
const response = await (0, client_1.apiRequest)(`/analytics/roi/correlations?${params.toString()}`, { apiVersion: 'v1' });
|
|
165
|
+
return response.data.analysis;
|
|
166
|
+
},
|
|
167
|
+
};
|
|
168
|
+
// ============================================================================
|
|
169
|
+
// HELPER FUNCTIONS
|
|
170
|
+
// ============================================================================
|
|
171
|
+
/**
|
|
172
|
+
* Calculate estimated revenue at risk
|
|
173
|
+
*/
|
|
174
|
+
function calculateRevenueAtRisk(failureRate, avgTransactionValue, totalInteractions) {
|
|
175
|
+
return failureRate * avgTransactionValue * totalInteractions;
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Calculate estimated savings from automation
|
|
179
|
+
*/
|
|
180
|
+
function calculateAutomationSavings(successfulInteractions, avgSupportCost) {
|
|
181
|
+
return successfulInteractions * avgSupportCost;
|
|
182
|
+
}
|
|
183
|
+
/**
|
|
184
|
+
* Format currency for display
|
|
185
|
+
*/
|
|
186
|
+
function formatCurrency(amount, currency = 'USD') {
|
|
187
|
+
return new Intl.NumberFormat('en-US', {
|
|
188
|
+
style: 'currency',
|
|
189
|
+
currency,
|
|
190
|
+
}).format(amount);
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Get ROI quality label
|
|
194
|
+
*/
|
|
195
|
+
function getROIQuality(totalFinancialImpact) {
|
|
196
|
+
if (totalFinancialImpact > 100000)
|
|
197
|
+
return 'excellent';
|
|
198
|
+
if (totalFinancialImpact > 50000)
|
|
199
|
+
return 'good';
|
|
200
|
+
if (totalFinancialImpact > 10000)
|
|
201
|
+
return 'moderate';
|
|
202
|
+
return 'poor';
|
|
203
|
+
}
|
|
204
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9pLWFuYWx5dGljcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvcm9pLWFuYWx5dGljcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7R0FJRzs7O0FBOFZILHdEQU1DO0FBS0QsZ0VBS0M7QUFLRCx3Q0FLQztBQUtELHNDQU9DO0FBbFlELDJDQUFnRTtBQTZIaEUsK0VBQStFO0FBQy9FLDJCQUEyQjtBQUMzQiwrRUFBK0U7QUFFL0U7O0dBRUc7QUFDVSxRQUFBLFlBQVksR0FBRztJQUMxQjs7Ozs7Ozs7Ozs7T0FXRztJQUNILEtBQUssQ0FBQyxPQUFPLENBQUMsVUFJVixFQUFFO1FBQ0osTUFBTSxNQUFNLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztRQUNyQyxJQUFJLE9BQU8sQ0FBQyxTQUFTLEVBQUUsQ0FBQztZQUN0QixNQUFNLENBQUMsR0FBRyxDQUFDLFdBQVcsRUFBRSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUNyRSxDQUFDO1FBQ0QsSUFBSSxPQUFPLENBQUMsT0FBTyxFQUFFLENBQUM7WUFDcEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxTQUFTLEVBQUUsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDakUsQ0FBQztRQUNELElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3BCLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQztRQUN6QyxDQUFDO1FBRUQsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFBLG1CQUFVLEVBQy9CLDBCQUEwQixNQUFNLENBQUMsUUFBUSxFQUFFLEVBQUUsRUFDN0MsRUFBRSxVQUFVLEVBQUUsSUFBSSxFQUFFLENBQ3JCLENBQUM7UUFDRixPQUFPLFFBQVEsQ0FBQyxJQUFLLENB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QUFNLENBQUMsQ0FBQztBQUNwQixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixhQUFhLENBQzNCLG9CQUE0QjtJQUU1QixJQUFJLG9CQUFvQixHQUFHLE1BQU07UUFBRSxPQUFPLFdBQVcsQ0FBQztJQUN0RCxJQUFJLG9CQUFvQixHQUFHLEtBQUs7UUFBRSxPQUFPLE1BQU0sQ0FBQztJQUNoRCxJQUFJLG9CQUFvQixHQUFHLEtBQUs7UUFBRSxPQUFPLFVBQVUsQ0FBQztJQUNwRCxPQUFPLE1BQU0sQ0FBQztBQUNoQixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGlua0hpdmUgU0RLIHYzLjEgLSBST0kgQW5hbHl0aWNzIEFQSVxuICpcbiAqIEJ1c2luZXNzIFJPSSAmIE1ldHJpY3MgRW5naW5lIGZvciBjYWxjdWxhdGluZyBmaW5hbmNpYWwgaW1wYWN0XG4gKi9cblxuaW1wb3J0IHsgYXBpUmVxdWVzdCwgYXBpUmVxdWVzdFdpdGhEYXRhIH0gZnJvbSAnLi4vY29yZS9jbGllbnQnO1xuaW1wb3J0IHR5cGUgeyBBcGlSZXNwb25zZSB9IGZyb20gJy4uL2NvcmUvdHlwZXMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUWVBFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIEluZHVzdHJ5LXNwZWNpZmljIFJPSSBjb25maWd1cmF0aW9uXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgSW5kdXN0cnlDb25maWcge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGF2Z1RyYW5zYWN0aW9uVmFsdWU6IG51bWJlcjtcbiAgYXZnQ3VzdG9tZXJMVFY6IG51bWJlcjtcbiAgYXZnU3VwcG9ydENvc3Q6IG51bWJlcjtcbiAgYXZnRXNjYWxhdGlvbkNvc3Q6IG51bWJlcjtcbiAgYXZnUmVzb2x1dGlvblRpbWU6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBDdXN0b20gaW5kdXN0cnkgY29uZmlnIGlucHV0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3VzdG9tSW5kdXN0cnlDb25maWcge1xuICBpbmR1c3RyeT86IHN0cmluZztcbiAgYXZnVHJhbnNhY3Rpb25WYWx1ZT86IG51bWJlcjtcbiAgYXZnQ3VzdG9tZXJMVFY/OiBudW1iZXI7XG4gIGF2Z1N1cHBvcnRDb3N0PzogbnVtYmVyO1xuICBhdmdFc2NhbGF0aW9uQ29zdD86IG51bWJlcjtcbiAgY2h1cm5JbXBhY3RNdWx0aXBsaWVyPzogbnVtYmVyO1xuICBhdmdSZXNvbHV0aW9uVGltZT86IG51bWJlcjtcbn1cblxuLyoqXG4gKiBST0kgbWV0cmljcyBzdW1tYXJ5XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUk9JTWV0cmljcyB7XG4gIHJvaUNhdGVnb3J5OiBzdHJpbmc7XG4gIHRvdGFsRmluYW5jaWFsSW1wYWN0OiBudW1iZXI7XG4gIHJldmVudWVQcm90ZWN0ZWQ6IG51bWJlcjtcbiAgY29zdFNhdmluZ3M6IG51bWJlcjtcbiAgZWZmaWNpZW5jeUdhaW46IG51bWJlcjtcbn1cblxuLyoqXG4gKiBCdXNpbmVzcyBpbXBhY3QgYW5hbHlzaXMgcmVzdWx0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQnVzaW5lc3NJbXBhY3Qge1xuICBpbXBhY3RTY29yZTogbnVtYmVyO1xuICByZXZlbnVlUmlzazogbnVtYmVyO1xuICBicmFuZFJpc2s6IG51bWJlcjtcbiAgY29tcGxpYW5jZVJpc2s6IG51bWJlcjtcbiAgb3BlcmF0aW9uYWxJbXBhY3Q6IG51bWJlcjtcbiAgY3VzdG9tZXJTYXRpc2ZhY3Rpb246IG51bWJlcjtcbiAgcmVjb21tZW5kYXRpb25zOiBzdHJpbmdbXTtcbiAgcm9pOiBST0lNZXRyaWNzO1xufVxuXG4vKipcbiAqIFJPSSBzdW1tYXJ5IGZvciBhIGRhdGUgcmFuZ2VcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBST0lTdW1tYXJ5IHtcbiAgZGF0ZVJhbmdlOiB7IHN0YXJ0OiBzdHJpbmc7IGVuZDogc3RyaW5nIH07XG4gIHRyYWNlQ291bnQ6IG51bWJlcjtcbiAgc3VjY2Vzc2Z1bEludGVyYWN0aW9uczogbnVtYmVyO1xuICBmYWlsZWRJbnRlcmFjdGlvbnM6IG51bWJlcjtcbiAgc3VjY2Vzc1JhdGU6IG51bWJlcjtcbiAgcm9pOiBST0lNZXRyaWNzO1xuICByZXZlbnVlUHJvdGVjdGVkOiBudW1iZXI7XG4gIGVzdGltYXRlZFNhdmluZ3M6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBEYWlseSB0cmVuZCBkYXRhIHBvaW50XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgVHJlbmREYXRhUG9pbnQge1xuICBkYXRlOiBzdHJpbmc7XG4gIHRyYWNlQ291bnQ6IG51bWJlcjtcbiAgc3VjY2Vzc0NvdW50OiBudW1iZXI7XG4gIGZhaWx1cmVDb3VudDogbnVtYmVyO1xuICBzdWNjZXNzUmF0ZTogbnVtYmVyO1xuICBhdmdJbXBhY3RTY29yZTogbnVtYmVyO1xufVxuXG4vKipcbiAqIENvcnJlbGF0aW9uIGZpbmRpbmdcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb3JyZWxhdGlvbiB7XG4gIHR5cGU6IHN0cmluZztcbiAgc3RyZW5ndGg6IHN0cmluZztcbiAgY29lZmZpY2llbnQ6IG51bWJlcjtcbiAgY29uZmlkZW5jZTogbnVtYmVyO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBpbnNpZ2h0OiBzdHJpbmc7XG4gIHJlY29tbWVuZGF0aW9uOiBzdHJpbmc7XG59XG5cbi8qKlxuICogUGF0dGVybiBjbHVzdGVyXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUGF0dGVybkNsdXN0ZXIge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIG1hdGNoQ291bnQ6IG51bWJlcjtcbiAgYXZnSW1wYWN0U2NvcmU6IG51bWJlcjtcbiAgYXZnQ2h1cm5SaXNrOiBudW1iZXI7XG4gIHRyZW5kOiBzdHJpbmc7XG4gIGV4YW1wbGVzOiBzdHJpbmdbXTtcbn1cblxuLyoqXG4gKiBDb3JyZWxhdGlvbiBhbmFseXNpcyByZXN1bHRcbiAqL1xuZXhwb3J0IGludGVyZmFjZSBDb3JyZWxhdGlvbkFuYWx5c2lzIHtcbiAgYW5hbHlzaXNJZDogc3RyaW5nO1xuICBhbmFseXplZEF0OiBzdHJpbmc7XG4gIHRyYWNlQ291bnQ6IG51bWJlcjtcbiAgdGltZVJhbmdlOiB7IHN0YXJ0OiBzdHJpbmc7IGVuZDogc3RyaW5nIH07XG4gIG92ZXJhbGxIZWFsdGhTY29yZTogbnVtYmVyO1xuICB0b3BJbnNpZ2h0czogc3RyaW5nW107XG4gIHJlY29tbWVuZGF0aW9uczogc3RyaW5nW107XG4gIGNvcnJlbGF0aW9uczogQ29ycmVsYXRpb25bXTtcbiAgcGF0dGVybkNsdXN0ZXJzOiBQYXR0ZXJuQ2x1c3RlcltdO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBST0kgQU5BTFlUSUNTIEFQSSBDTElFTlRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBST0kgQW5hbHl0aWNzIEFQSSBjbGllbnQgZm9yIGJ1c2luZXNzIGltcGFjdCBhbmFseXNpc1xuICovXG5leHBvcnQgY29uc3Qgcm9pQW5hbHl0aWNzID0ge1xuICAvKipcbiAgICogR2V0IGFnZ3JlZ2F0ZWQgUk9JIHN1bW1hcnkgZm9yIHRyYWNlcyBpbiBkYXRlIHJhbmdlXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3Qgc3VtbWFyeSA9IGF3YWl0IHJvaUFuYWx5dGljcy5zdW1tYXJ5KHtcbiAgICogICBzdGFydERhdGU6ICcyMDI0LTAxLTAxJyxcbiAgICogICBlbmREYXRlOiAnMjAyNC0wMS0zMScsXG4gICAqIH0pO1xuICAgKiBjb25zb2xlLmxvZyhgUmV2ZW51ZSBwcm90ZWN0ZWQ6ICQke3N1bW1hcnkucmV2ZW51ZVByb3RlY3RlZH1gKTtcbiAgICogYGBgXG4gICAqL1xuICBhc3luYyBzdW1tYXJ5KG9wdGlvbnM6IHtcbiAgICBzdGFydERhdGU/OiBzdHJpbmcgfCBEYXRlO1xuICAgIGVuZERhdGU/OiBzdHJpbmcgfCBEYXRlO1xuICAgIGFnZW50SWQ/OiBzdHJpbmc7XG4gIH0gPSB7fSk6IFByb21pc2U8Uk9JU3VtbWFyeT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgICBpZiAob3B0aW9ucy5zdGFydERhdGUpIHtcbiAgICAgIHBhcmFtcy5zZXQoJ3N0YXJ0RGF0ZScsIG5ldyBEYXRlKG9wdGlvbnMuc3RhcnREYXRlKS50b0lTT1N0cmluZygpKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMuZW5kRGF0ZSkge1xuICAgICAgcGFyYW1zLnNldCgnZW5kRGF0ZScsIG5ldyBEYXRlKG9wdGlvbnMuZW5kRGF0ZSkudG9JU09TdHJpbmcoKSk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmFnZW50SWQpIHtcbiAgICAgIHBhcmFtcy5zZXQoJ2FnZW50SWQnLCBvcHRpb25zLmFnZW50SWQpO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXBpUmVxdWVzdDxBcGlSZXNwb25zZTx7IHN1bW1hcnk6IFJPSVN1bW1hcnkgfT4+KFxuICAgICAgYC9hbmFseXRpY3Mvcm9pL3N1bW1hcnk/JHtwYXJhbXMudG9TdHJpbmcoKX1gLFxuICAgICAgeyBhcGlWZXJzaW9uOiAndjEnIH1cbiAgICApO1xuICAgIHJldHVybiByZXNwb25zZS5kYXRhIS5zdW1tYXJ5O1xuICB9LFxuXG4gIC8qKlxuICAgKiBHZXQgUk9JIG1ldHJpY3MgZm9yIGEgc3BlY2lmaWMgYWdlbnRcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCBhZ2VudFJPSSA9IGF3YWl0IHJvaUFuYWx5dGljcy5ieUFnZW50KCdhZ2VudF8xMjMnLCB7XG4gICAqICAgc3RhcnREYXRlOiAnMjAyNC0wMS0wMScsXG4gICAqIH0pO1xuICAgKiBjb25zb2xlLmxvZyhgQWdlbnQ6ICR7YWdlbnRST0kuYWdlbnQubmFtZX1gKTtcbiAgICogY29uc29sZS5sb2coYFJPSTogJHthZ2VudFJPSS5yb2kudG90YWxGaW5hbmNpYWxJbXBhY3R9YCk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgYnlBZ2VudChcbiAgICBhZ2VudElkOiBzdHJpbmcsXG4gICAgb3B0aW9uczoge1xuICAgICAgc3RhcnREYXRlPzogc3RyaW5nIHwgRGF0ZTtcbiAgICAgIGVuZERhdGU/OiBzdHJpbmcgfCBEYXRlO1xuICAgIH0gPSB7fVxuICApOiBQcm9taXNlPHtcbiAgICBhZ2VudDogeyBpZDogc3RyaW5nOyBuYW1lOiBzdHJpbmc7IGluZHVzdHJ5OiBzdHJpbmcgfTtcbiAgICBpbmR1c3RyeUNvbmZpZzogUGFydGlhbDxJbmR1c3RyeUNvbmZpZz47XG4gICAgcm9pOiBST0lNZXRyaWNzO1xuICAgIHJlY2VudEltcGFjdHM6IEFycmF5PHtcbiAgICAgIGltcGFjdFNjb3JlOiBudW1iZXI7XG4gICAgICByZXZlbnVlUmlzazogbnVtYmVyO1xuICAgICAgcm9pQ2F0ZWdvcnk6IHN0cmluZztcbiAgICAgIHRvdGFsRmluYW5jaWFsSW1wYWN0OiBudW1iZXI7XG4gICAgfT47XG4gIH0+IHtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gICAgaWYgKG9wdGlvbnMuc3RhcnREYXRlKSB7XG4gICAgICBwYXJhbXMuc2V0KCdzdGFydERhdGUnLCBuZXcgRGF0ZShvcHRpb25zLnN0YXJ0RGF0ZSkudG9JU09TdHJpbmcoKSk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmVuZERhdGUpIHtcbiAgICAgIHBhcmFtcy5zZXQoJ2VuZERhdGUnLCBuZXcgRGF0ZShvcHRpb25zLmVuZERhdGUpLnRvSVNPU3RyaW5nKCkpO1xuICAgIH1cblxuICAgIHJldHVybiBhcGlSZXF1ZXN0V2l0aERhdGEoXG4gICAgICBgL2FuYWx5dGljcy9yb2kvYnktYWdlbnQvJHthZ2VudElkfT8ke3BhcmFtcy50b1N0cmluZygpfWAsXG4gICAgICB7IGFwaVZlcnNpb246ICd2MScgfVxuICAgICk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEdldCBST0kgdHJlbmRzIG92ZXIgdGltZVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IHRyZW5kcyA9IGF3YWl0IHJvaUFuYWx5dGljcy50cmVuZHMoe1xuICAgKiAgIHN0YXJ0RGF0ZTogJzIwMjQtMDEtMDEnLFxuICAgKiAgIGVuZERhdGU6ICcyMDI0LTAxLTMxJyxcbiAgICogfSk7XG4gICAqIGZvciAoY29uc3QgZGF5IG9mIHRyZW5kcykge1xuICAgKiAgIGNvbnNvbGUubG9nKGAke2RheS5kYXRlfTogJHtkYXkuc3VjY2Vzc1JhdGV9JSBzdWNjZXNzYCk7XG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICBhc3luYyB0cmVuZHMob3B0aW9uczoge1xuICAgIHN0YXJ0RGF0ZT86IHN0cmluZyB8IERhdGU7XG4gICAgZW5kRGF0ZT86IHN0cmluZyB8IERhdGU7XG4gICAgYWdlbnRJZD86IHN0cmluZztcbiAgfSA9IHt9KTogUHJvbWlzZTxUcmVuZERhdGFQb2ludFtdPiB7XG4gICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuICAgIGlmIChvcHRpb25zLnN0YXJ0RGF0ZSkge1xuICAgICAgcGFyYW1zLnNldCgnc3RhcnREYXRlJywgbmV3IERhdGUob3B0aW9ucy5zdGFydERhdGUpLnRvSVNPU3RyaW5nKCkpO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5lbmREYXRlKSB7XG4gICAgICBwYXJhbXMuc2V0KCdlbmREYXRlJywgbmV3IERhdGUob3B0aW9ucy5lbmREYXRlKS50b0lTT1N0cmluZygpKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMuYWdlbnRJZCkge1xuICAgICAgcGFyYW1zLnNldCgnYWdlbnRJZCcsIG9wdGlvbnMuYWdlbnRJZCk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBhcGlSZXF1ZXN0PEFwaVJlc3BvbnNlPHsgdHJlbmRzOiBUcmVuZERhdGFQb2ludFtdIH0+PihcbiAgICAgIGAvYW5hbHl0aWNzL3JvaS90cmVuZHM/JHtwYXJhbXMudG9TdHJpbmcoKX1gLFxuICAgICAgeyBhcGlWZXJzaW9uOiAndjEnIH1cbiAgICApO1xuICAgIHJldHVybiByZXNwb25zZS5kYXRhIS50cmVuZHM7XG4gIH0sXG5cbiAgLyoqXG4gICAqIENhbGN1bGF0ZSBST0kgZm9yIGEgdHJhY2Ugb3IgcHJvdmlkZWQgbWVzc2FnZSBkYXRhXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogLy8gQ2FsY3VsYXRlIGZvciBleGlzdGluZyB0cmFjZVxuICAgKiBjb25zdCBpbXBhY3QgPSBhd2FpdCByb2lBbmFseXRpY3MuY2FsY3VsYXRlKHtcbiAgICogICB0cmFjZUlkOiAndHJhY2VfYWJjMTIzJyxcbiAgICogfSk7XG4gICAqXG4gICAqIC8vIENhbGN1bGF0ZSBmb3IgbmV3IGRhdGEgd2l0aCBjdXN0b20gY29uZmlnXG4gICAqIGNvbnN0IGltcGFjdCA9IGF3YWl0IHJvaUFuYWx5dGljcy5jYWxjdWxhdGUoe1xuICAgKiAgIHVzZXJNZXNzYWdlOiAnSGVscCBtZSBjYW5jZWwgbXkgc3Vic2NyaXB0aW9uJyxcbiAgICogICBhZ2VudFJlc3BvbnNlOiAnSSBjYW4gaGVscCB3aXRoIHRoYXQuLi4nLFxuICAgKiAgIGluZHVzdHJ5Q29uZmlnOiB7IGluZHVzdHJ5OiAnc2FhcycsIGF2Z0N1c3RvbWVyTFRWOiAxMDAwMCB9LFxuICAgKiB9KTtcbiAgICogYGBgXG4gICAqL1xuICBhc3luYyBjYWxjdWxhdGUob3B0aW9uczoge1xuICAgIHRyYWNlSWQ/OiBzdHJpbmc7XG4gICAgdXNlck1lc3NhZ2U/OiBzdHJpbmc7XG4gICAgYWdlbnRSZXNwb25zZT86IHN0cmluZztcbiAgICBpbmR1c3RyeUNvbmZpZz86IEN1c3RvbUluZHVzdHJ5Q29uZmlnO1xuICB9KTogUHJvbWlzZTxCdXNpbmVzc0ltcGFjdD4ge1xuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXBpUmVxdWVzdDxBcGlSZXNwb25zZTx7IGltcGFjdDogQnVzaW5lc3NJbXBhY3QgfT4+KFxuICAgICAgJy9hbmFseXRpY3Mvcm9pL2NhbGN1bGF0ZScsXG4gICAgICB7XG4gICAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgICBib2R5OiBvcHRpb25zLFxuICAgICAgICBhcGlWZXJzaW9uOiAndjEnLFxuICAgICAgfVxuICAgICk7XG4gICAgcmV0dXJuIHJlc3BvbnNlLmRhdGEhLmltcGFjdDtcbiAgfSxcblxuICAvKipcbiAgICogR2V0IGF2YWlsYWJsZSBpbmR1c3RyeSBjb25maWd1cmF0aW9uc1xuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IGluZHVzdHJpZXMgPSBhd2FpdCByb2lBbmFseXRpY3MuaW5kdXN0cmllcygpO1xuICAgKiBmb3IgKGNvbnN0IGNvbmZpZyBvZiBpbmR1c3RyaWVzKSB7XG4gICAqICAgY29uc29sZS5sb2coYCR7Y29uZmlnLm5hbWV9OiAkJHtjb25maWcuYXZnQ3VzdG9tZXJMVFZ9IExUVmApO1xuICAgKiB9XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgaW5kdXN0cmllcygpOiBQcm9taXNlPEluZHVzdHJ5Q29uZmlnW10+IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGFwaVJlcXVlc3Q8QXBpUmVzcG9uc2U8eyBpbmR1c3RyaWVzOiBJbmR1c3RyeUNvbmZpZ1tdIH0+PihcbiAgICAgICcvYW5hbHl0aWNzL3JvaS9pbmR1c3RyaWVzJyxcbiAgICAgIHsgYXBpVmVyc2lvbjogJ3YxJyB9XG4gICAgKTtcbiAgICByZXR1cm4gcmVzcG9uc2UuZGF0YSEuaW5kdXN0cmllcztcbiAgfSxcblxuICAvKipcbiAgICogR2V0IGNvcnJlbGF0aW9uIGFuYWx5c2lzIGZvciB0cmFjZXNcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCBhbmFseXNpcyA9IGF3YWl0IHJvaUFuYWx5dGljcy5jb3JyZWxhdGlvbnMoe1xuICAgKiAgIHN0YXJ0RGF0ZTogJzIwMjQtMDEtMDEnLFxuICAgKiAgIGFnZW50SWQ6ICdhZ2VudF8xMjMnLFxuICAgKiB9KTtcbiAgICogY29uc29sZS5sb2coYEhlYWx0aCBzY29yZTogJHthbmFseXNpcy5vdmVyYWxsSGVhbHRoU2NvcmV9YCk7XG4gICAqIGZvciAoY29uc3QgaW5zaWdodCBvZiBhbmFseXNpcy50b3BJbnNpZ2h0cykge1xuICAgKiAgIGNvbnNvbGUubG9nKGAtICR7aW5zaWdodH1gKTtcbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIGFzeW5jIGNvcnJlbGF0aW9ucyhvcHRpb25zOiB7XG4gICAgc3RhcnREYXRlPzogc3RyaW5nIHwgRGF0ZTtcbiAgICBlbmREYXRlPzogc3RyaW5nIHwgRGF0ZTtcbiAgICBhZ2VudElkPzogc3RyaW5nO1xuICB9ID0ge30pOiBQcm9taXNlPENvcnJlbGF0aW9uQW5hbHlzaXM+IHtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gICAgaWYgKG9wdGlvbnMuc3RhcnREYXRlKSB7XG4gICAgICBwYXJhbXMuc2V0KCdzdGFydERhdGUnLCBuZXcgRGF0ZShvcHRpb25zLnN0YXJ0RGF0ZSkudG9JU09TdHJpbmcoKSk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmVuZERhdGUpIHtcbiAgICAgIHBhcmFtcy5zZXQoJ2VuZERhdGUnLCBuZXcgRGF0ZShvcHRpb25zLmVuZERhdGUpLnRvSVNPU3RyaW5nKCkpO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5hZ2VudElkKSB7XG4gICAgICBwYXJhbXMuc2V0KCdhZ2VudElkJywgb3B0aW9ucy5hZ2VudElkKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGFwaVJlcXVlc3Q8QXBpUmVzcG9uc2U8eyBhbmFseXNpczogQ29ycmVsYXRpb25BbmFseXNpcyB9Pj4oXG4gICAgICBgL2FuYWx5dGljcy9yb2kvY29ycmVsYXRpb25zPyR7cGFyYW1zLnRvU3RyaW5nKCl9YCxcbiAgICAgIHsgYXBpVmVyc2lvbjogJ3YxJyB9XG4gICAgKTtcbiAgICByZXR1cm4gcmVzcG9uc2UuZGF0YSEuYW5hbHlzaXM7XG4gIH0sXG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBIRUxQRVIgRlVOQ1RJT05TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogQ2FsY3VsYXRlIGVzdGltYXRlZCByZXZlbnVlIGF0IHJpc2tcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZVJldmVudWVBdFJpc2soXG4gIGZhaWx1cmVSYXRlOiBudW1iZXIsXG4gIGF2Z1RyYW5zYWN0aW9uVmFsdWU6IG51bWJlcixcbiAgdG90YWxJbnRlcmFjdGlvbnM6IG51bWJlclxuKTogbnVtYmVyIHtcbiAgcmV0dXJuIGZhaWx1cmVSYXRlICogYXZnVHJhbnNhY3Rpb25WYWx1ZSAqIHRvdGFsSW50ZXJhY3Rpb25zO1xufVxuXG4vKipcbiAqIENhbGN1bGF0ZSBlc3RpbWF0ZWQgc2F2aW5ncyBmcm9tIGF1dG9tYXRpb25cbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGNhbGN1bGF0ZUF1dG9tYXRpb25TYXZpbmdzKFxuICBzdWNjZXNzZnVsSW50ZXJhY3Rpb25zOiBudW1iZXIsXG4gIGF2Z1N1cHBvcnRDb3N0OiBudW1iZXJcbik6IG51bWJlciB7XG4gIHJldHVybiBzdWNjZXNzZnVsSW50ZXJhY3Rpb25zICogYXZnU3VwcG9ydENvc3Q7XG59XG5cbi8qKlxuICogRm9ybWF0IGN1cnJlbmN5IGZvciBkaXNwbGF5XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRDdXJyZW5jeShhbW91bnQ6IG51bWJlciwgY3VycmVuY3kgPSAnVVNEJyk6IHN0cmluZyB7XG4gIHJldHVybiBuZXcgSW50bC5OdW1iZXJGb3JtYXQoJ2VuLVVTJywge1xuICAgIHN0eWxlOiAnY3VycmVuY3knLFxuICAgIGN1cnJlbmN5LFxuICB9KS5mb3JtYXQoYW1vdW50KTtcbn1cblxuLyoqXG4gKiBHZXQgUk9JIHF1YWxpdHkgbGFiZWxcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGdldFJPSVF1YWxpdHkoXG4gIHRvdGFsRmluYW5jaWFsSW1wYWN0OiBudW1iZXJcbik6ICdleGNlbGxlbnQnIHwgJ2dvb2QnIHwgJ21vZGVyYXRlJyB8ICdwb29yJyB7XG4gIGlmICh0b3RhbEZpbmFuY2lhbEltcGFjdCA+IDEwMDAwMCkgcmV0dXJuICdleGNlbGxlbnQnO1xuICBpZiAodG90YWxGaW5hbmNpYWxJbXBhY3QgPiA1MDAwMCkgcmV0dXJuICdnb29kJztcbiAgaWYgKHRvdGFsRmluYW5jaWFsSW1wYWN0ID4gMTAwMDApIHJldHVybiAnbW9kZXJhdGUnO1xuICByZXR1cm4gJ3Bvb3InO1xufVxuIl19
|
package/dist/api/runs.js
CHANGED
|
@@ -52,10 +52,12 @@ exports.runs = {
|
|
|
52
52
|
sessionId: options.sessionId,
|
|
53
53
|
customerContext: options.customerContext,
|
|
54
54
|
metadata: options.metadata,
|
|
55
|
+
metrics: options.metrics,
|
|
55
56
|
};
|
|
56
57
|
return (0, client_1.apiRequestWithData)('/runs', {
|
|
57
58
|
method: 'POST',
|
|
58
59
|
body: payload,
|
|
60
|
+
apiVersion: 'v3',
|
|
59
61
|
});
|
|
60
62
|
},
|
|
61
63
|
/**
|
|
@@ -67,7 +69,7 @@ exports.runs = {
|
|
|
67
69
|
* ```
|
|
68
70
|
*/
|
|
69
71
|
async get(runId) {
|
|
70
|
-
return (0, client_1.apiRequestWithData)(`/runs/${runId}
|
|
72
|
+
return (0, client_1.apiRequestWithData)(`/runs/${runId}`, { apiVersion: 'v3' });
|
|
71
73
|
},
|
|
72
74
|
/**
|
|
73
75
|
* List runs with filters
|
|
@@ -101,7 +103,7 @@ exports.runs = {
|
|
|
101
103
|
params.set('limit', String(options.limit));
|
|
102
104
|
if (options.offset)
|
|
103
105
|
params.set('offset', String(options.offset));
|
|
104
|
-
const response = await (0, client_1.apiRequest)(`/runs?${params.toString()}
|
|
106
|
+
const response = await (0, client_1.apiRequest)(`/runs?${params.toString()}`, { apiVersion: 'v3' });
|
|
105
107
|
return response.data;
|
|
106
108
|
},
|
|
107
109
|
/**
|
|
@@ -119,6 +121,7 @@ exports.runs = {
|
|
|
119
121
|
return (0, client_1.apiRequestWithData)(`/runs/${runId}`, {
|
|
120
122
|
method: 'PUT',
|
|
121
123
|
body: updates,
|
|
124
|
+
apiVersion: 'v3',
|
|
122
125
|
});
|
|
123
126
|
},
|
|
124
127
|
/**
|
|
@@ -130,7 +133,7 @@ exports.runs = {
|
|
|
130
133
|
* ```
|
|
131
134
|
*/
|
|
132
135
|
async delete(runId) {
|
|
133
|
-
await (0, client_1.apiRequest)(`/runs/${runId}`, { method: 'DELETE' });
|
|
136
|
+
await (0, client_1.apiRequest)(`/runs/${runId}`, { method: 'DELETE', apiVersion: 'v3' });
|
|
134
137
|
},
|
|
135
138
|
/**
|
|
136
139
|
* Create multiple runs in batch
|
|
@@ -158,10 +161,12 @@ exports.runs = {
|
|
|
158
161
|
sessionId: r.sessionId,
|
|
159
162
|
customerContext: r.customerContext,
|
|
160
163
|
metadata: r.metadata,
|
|
164
|
+
metrics: r.metrics,
|
|
161
165
|
}));
|
|
162
166
|
return (0, client_1.apiRequestWithData)('/runs/batch', {
|
|
163
167
|
method: 'POST',
|
|
164
168
|
body: { runs: payload },
|
|
169
|
+
apiVersion: 'v3',
|
|
165
170
|
});
|
|
166
171
|
},
|
|
167
172
|
/**
|
|
@@ -181,7 +186,7 @@ exports.runs = {
|
|
|
181
186
|
params.set('from', new Date(options.from).toISOString());
|
|
182
187
|
if (options.to)
|
|
183
188
|
params.set('to', new Date(options.to).toISOString());
|
|
184
|
-
return (0, client_1.apiRequestWithData)(`/runs/stats/${agentId}?${params.toString()}
|
|
189
|
+
return (0, client_1.apiRequestWithData)(`/runs/stats/${agentId}?${params.toString()}`, { apiVersion: 'v3' });
|
|
185
190
|
},
|
|
186
191
|
/**
|
|
187
192
|
* Get traces for a run
|
|
@@ -192,7 +197,7 @@ exports.runs = {
|
|
|
192
197
|
* ```
|
|
193
198
|
*/
|
|
194
199
|
async getTraces(runId) {
|
|
195
|
-
return (0, client_1.apiRequestWithData)(`/runs/${runId}/traces
|
|
200
|
+
return (0, client_1.apiRequestWithData)(`/runs/${runId}/traces`, { apiVersion: 'v3' });
|
|
196
201
|
},
|
|
197
202
|
/**
|
|
198
203
|
* Add a trace to a run
|
|
@@ -209,6 +214,7 @@ exports.runs = {
|
|
|
209
214
|
return (0, client_1.apiRequestWithData)(`/runs/${runId}/traces`, {
|
|
210
215
|
method: 'POST',
|
|
211
216
|
body: traceData,
|
|
217
|
+
apiVersion: 'v3',
|
|
212
218
|
});
|
|
213
219
|
},
|
|
214
220
|
};
|
|
@@ -259,4 +265,4 @@ function fromOpenAIMessages(messages) {
|
|
|
259
265
|
content: m.content,
|
|
260
266
|
}));
|
|
261
267
|
}
|
|
262
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvcnVucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7R0FJRzs7O0FBZ1NILG9EQWFDO0FBS0QsNENBT0M7QUFLRCxnREFPQztBQW5VRCwyQ0FBZ0U7QUEwQ2hFOztHQUVHO0FBQ1UsUUFBQSxJQUFJLEdBQUc7SUFDbEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FtQkc7SUFDSCxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQW1CO1FBQzlCLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxTQUFTO1lBQ2pDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsV0FBVyxFQUFFO1lBQzNDLENBQUMsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRTdCLE1BQU0sT0FBTyxHQUFHO1lBQ2QsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPO1lBQ3hCLFNBQVM7WUFDVCxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87Z0JBQ3RCLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFO2dCQUN6QyxDQUFDLENBQUMsU0FBUztZQUNiLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztZQUN4QixhQUFhLEVBQUUsT0FBTyxDQUFDLGFBQWE7WUFDcEMsb0JBQW9CLEVBQUUsT0FBTyxDQUFDLG9CQUFvQjtZQUNsRCxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87WUFDeEIsYUFBYSxFQUFFLE9BQU8sQ0FBQyxhQUFhO1lBQ3BDLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUztZQUM1QixlQUFlLEVBQUUsT0FBTyxDQUFDLGVBQWU7WUFDeEMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRO1NBQzNCLENBQUM7UUFFRixPQUFPLElBQUEsMkJBQWtCLEVBQWMsT0FBTyxFQUFFO1lBQzlDLE1BQU0sRUFBRSxNQUFNO1lBQ2QsSUFBSSxFQUFFLE9BQU87U0FDZCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7Ozs7T0FPRztJQUNILEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBYTtRQUNyQixPQUFPLElBQUEsMkJBQWtCLEVBQWMsU0FBUyxLQUFLLEVBQUUsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRDs7Ozs7Ozs7Ozs7T0FXRztJQUNILEtBQUssQ0FBQyxJQUFJLENBQ1IsVUFBMkIsRUFBRTtRQUU3QixNQUFNLE1BQU0sR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQ3JDLElBQUksT0FBTyxDQUFDLE9BQU87WUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUQsSUFBSSxPQUFPLENBQUMsUUFBUTtZQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsVUFBVSxFQUFFLE9BQU8sQ0FBQyxRQUFRLENBQUMsQ0FBQztRQUMvRCxJQUFJLE9BQU8sQ0FBQyxpQkFBaUI7WUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLG1CQUFtQixFQUFFLE9BQU8sQ0FBQyxpQkFBaUIsQ0FBQyxDQUFDO1FBQzFGLElBQUksT0FBTyxDQUFDLE9BQU87WUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDNUQsSUFBSSxPQUFPLENBQUMsWUFBWSxFQUFFLENBQUM7WUFDekIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxjQUFjLEVBQUUsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFlBQVksQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDM0UsQ0FBQztRQUNELElBQUksT0FBTyxDQUFDLGFBQWEsRUFBRSxDQUFDO1lBQzFCLE1BQU0sQ0FBQyxHQUFHLENBQUMsZUFBZSxFQUFFLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxhQUFhLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQzdFLENBQUM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxLQUFLO1lBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLE9BQU8sQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQzlELElBQUksT0FBTyxDQUFDLE1BQU07WUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxNQUFNLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxDQUFDLENBQUM7UUFFakUsTUFBTSxRQUFRLEdBQUcsTUFBTSxJQUFBLG1CQUFVLEVBQy9CLFNBQVMsTUFBTSxDQUFDLFFBQVEsRUFBRSxFQUFFLENBQzdCLENBQUM7UUFDRixPQUFPLFFBQVEsQ0FBQyxJQUFJLENBQUM7SUFDdkIsQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSCxLQUFLLENBQUMsTUFBTSxDQUNWLEtBQWEsRUFDYixPQUF3RjtRQUV4RixPQUFPLElBQUEsMkJBQWtCLEVBQWMsU0FBUyxLQUFLLEVBQUUsRUFBRTtZQUN2RCxNQUFNLEVBQUUsS0FBSztZQUNiLElBQUksRUFBRSxPQUFPO1NBQ2QsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7Ozs7O09BT0c7SUFDSCxLQUFLLENBQUMsTUFBTSxDQUFDLEtBQWE7UUFDeEIsTUFBTSxJQUFBLG1CQUFVLEVBQUMsU0FBUyxLQUFLLEVBQUUsRUFBRSxFQUFFLE1BQU0sRUFBRSxRQUFRLEVBQUUsQ0FBQyxDQUFDO0lBQzNELENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0gsS0FBSyxDQUFDLEtBQUssQ0FDVCxRQUFzQjtRQUV0QixNQUFNLE9BQU8sR0FBRyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1lBQ25DLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTztZQUNsQixTQUFTLEVBQUUsQ0FBQyxDQUFDLFNBQVM7Z0JBQ3BCLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxDQUFDLENBQUMsU0FBUyxDQUFDLENBQUMsV0FBVyxFQUFFO2dCQUNyQyxDQUFDLENBQUMsSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUU7WUFDNUIsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxDQUFDLElBQUksSUFBSSxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDLENBQUMsU0FBUztZQUNsRSxPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU87WUFDbEIsYUFBYSxFQUFFLENBQUMsQ0FBQyxhQUFhO1lBQzlCLG9CQUFvQixFQUFFLENBQUMsQ0FBQyxvQkFBb0I7WUFDNUMsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPO1lBQ2xCLGFBQWEsRUFBRSxDQUFDLENBQUMsYUFBYTtZQUM5QixTQUFTLEVBQUUsQ0FBQyxDQUFDLFNBQVM7WUFDdEIsZUFBZSxFQUFFLENBQUMsQ0FBQyxlQUFlO1lBQ2xDLFFBQVEsRUFBRSxDQUFDLENBQUMsUUFBUTtTQUNyQixDQUFDLENBQUMsQ0FBQztRQUVKLE9BQU8sSUFBQSwyQkFBa0IsRUFBQyxhQUFhLEVBQUU7WUFDdkMsTUFBTSxFQUFFLE1BQU07WUFDZCxJQUFJLEVBQUUsRUFBRSxJQUFJLEVBQUUsT0FBTyxFQUFFO1NBQ3hCLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7Ozs7OztPQVVHO0lBQ0gsS0FBSyxDQUFDLEtBQUssQ0FDVCxPQUFlLEVBQ2YsVUFBd0QsRUFBRTtRQUUxRCxNQUFNLE1BQU0sR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQ3JDLElBQUksT0FBTyxDQUFDLElBQUk7WUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLE1BQU0sRUFBRSxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsV0FBVyxFQUFFLENBQUMsQ0FBQztRQUMzRSxJQUFJLE9BQU8sQ0FBQyxFQUFFO1lBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxJQUFJLEVBQUUsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLEVBQUUsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFFckUsT0FBTyxJQUFBLDJCQUFrQixFQUN2QixlQUFlLE9BQU8sSUFBSSxNQUFNLENBQUMsUUFBUSxFQUFFLEVBQUUsQ0FDOUMsQ0FBQztJQUNKLENBQUM7SUFFRDs7Ozs7OztPQU9HO0lBQ0gsS0FBSyxDQUFDLFNBQVMsQ0FBQyxLQUFhO1FBQzNCLE9BQU8sSUFBQSwyQkFBa0IsRUFBWSxTQUFTLEtBQUssU0FBUyxDQUFDLENBQUM7SUFDaEUsQ0FBQztJQUVEOzs7Ozs7Ozs7O09BVUc7SUFDSCxLQUFLLENBQUMsUUFBUSxDQUNaLEtBQWEsRUFDYixTQUF3RjtRQUV4RixPQUFPLElBQUEsMkJBQWtCLEVBQUMsU0FBUyxLQUFLLFNBQVMsRUFBRTtZQUNqRCxNQUFNLEVBQUUsTUFBTTtZQUNkLElBQUksRUFBRSxTQUFTO1NBQ2hCLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRixDQUFDO0FBRUYsK0VBQStFO0FBQy9FLG1CQUFtQjtBQUNuQiwrRUFBK0U7QUFFL0U7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSSxLQUFLLFVBQVUsb0JBQW9CLENBQ3hDLE9BQWtFO0lBRWxFLDJCQUEyQjtJQUMzQixNQUFNLGVBQWUsR0FBNEI7UUFDL0MsR0FBRyxPQUFPLENBQUMsZUFBZTtRQUMxQixVQUFVLEVBQUUsT0FBTyxDQUFDLGVBQWUsQ0FBQyxVQUFVLElBQUksSUFBSSxJQUFJLEVBQUUsQ0FBQyxXQUFXLEVBQUU7S0FDM0UsQ0FBQztJQUVGLE9BQU8sWUFBSSxDQUFDLE1BQU0sQ0FBQztRQUNqQixHQUFHLE9BQU87UUFDVixlQUFlO0tBQ2hCLENBQUMsQ0FBQztBQUNMLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLGdCQUFnQixDQUM5QixRQUErQjtJQUUvQixPQUFPLFFBQVEsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxDQUFDLENBQUM7UUFDMUIsSUFBSSxFQUFFLENBQUMsQ0FBQyxJQUFJO1FBQ1osT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPO0tBQ25CLENBQUMsQ0FBQyxDQUFDO0FBQ04sQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0Isa0JBQWtCLENBQ2hDLFFBQWtEO0lBRWxELE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMxQixJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQW1DO1FBQzNDLE9BQU8sRUFBRSxDQUFDLENBQUMsT0FBTztLQUNuQixDQUFDLENBQUMsQ0FBQztBQUNOLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoaW5rSGl2ZSBTREsgdjMuMCAtIFJ1bnMgQVBJXG4gKlxuICogUnVuLWNlbnRyaWMgQVBJIGZvciBjcmVhdGluZyBhbmQgbWFuYWdpbmcgcnVucyAodGhlIGF0b21pYyB1bml0IGluIHYzKVxuICovXG5cbmltcG9ydCB7IGFwaVJlcXVlc3QsIGFwaVJlcXVlc3RXaXRoRGF0YSB9IGZyb20gJy4uL2NvcmUvY2xpZW50JztcbmltcG9ydCB0eXBlIHtcbiAgUnVuT3B0aW9ucyxcbiAgUnVuUmVzcG9uc2UsXG4gIEFwaVJlc3BvbnNlLFxuICBQYWdpbmF0ZWRSZXNwb25zZSxcbiAgQ3VzdG9tZXJDb250ZXh0U25hcHNob3QsXG4gIENvbnZlcnNhdGlvbk1lc3NhZ2UsXG4gIFJ1bk91dGNvbWUsXG59IGZyb20gJy4uL2NvcmUvdHlwZXMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSVU5TIEFQSSBDTElFTlRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBMaXN0IHJ1bnMgcXVlcnkgb3B0aW9uc1xuICovXG5leHBvcnQgaW50ZXJmYWNlIExpc3RSdW5zT3B0aW9ucyB7XG4gIGFnZW50SWQ/OiBzdHJpbmc7XG4gIHRpY2tldElkPzogc3RyaW5nO1xuICBjdXN0b21lckFjY291bnRJZD86IHN0cmluZztcbiAgb3V0Y29tZT86IFJ1bk91dGNvbWU7XG4gIHN0YXJ0ZWRBZnRlcj86IHN0cmluZyB8IERhdGU7XG4gIHN0YXJ0ZWRCZWZvcmU/OiBzdHJpbmcgfCBEYXRlO1xuICBsaW1pdD86IG51bWJlcjtcbiAgb2Zmc2V0PzogbnVtYmVyO1xufVxuXG4vKipcbiAqIFJ1biBzdGF0cyByZXNwb25zZVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJ1blN0YXRzIHtcbiAgYWdlbnRJZDogc3RyaW5nO1xuICBwZXJpb2Q6IHsgZnJvbTogc3RyaW5nOyB0bzogc3RyaW5nIH07XG4gIHRvdGFsUnVuczogbnVtYmVyO1xuICBvdXRjb21lQnJlYWtkb3duOiBSZWNvcmQ8UnVuT3V0Y29tZSwgbnVtYmVyPjtcbiAgYXZnRHVyYXRpb25NczogbnVtYmVyO1xuICBsaW5rZWRUaWNrZXRzOiBudW1iZXI7XG4gIHVubGlua2VkUnVuczogbnVtYmVyO1xufVxuXG4vKipcbiAqIFJ1bnMgQVBJIGNsaWVudCBmb3IgdjMgcnVuLWNlbnRyaWMgb3BlcmF0aW9uc1xuICovXG5leHBvcnQgY29uc3QgcnVucyA9IHtcbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBydW5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCBydW4gPSBhd2FpdCBydW5zLmNyZWF0ZSh7XG4gICAqICAgYWdlbnRJZDogJ2FnZW50XzEyMycsXG4gICAqICAgY29udmVyc2F0aW9uTWVzc2FnZXM6IFtcbiAgICogICAgIHsgcm9sZTogJ3VzZXInLCBjb250ZW50OiAnSGVscCBtZSB3aXRoIG15IG9yZGVyJyB9LFxuICAgKiAgICAgeyByb2xlOiAnYXNzaXN0YW50JywgY29udGVudDogJ0kgY2FuIGhlbHAgd2l0aCB0aGF0Li4uJyB9LFxuICAgKiAgIF0sXG4gICAqICAgb3V0Y29tZTogJ3Jlc29sdmVkJyxcbiAgICogICBjdXN0b21lckNvbnRleHQ6IHtcbiAgICogICAgIGFycjogNTAwMDAsXG4gICAqICAgICBoZWFsdGhTY29yZTogODUsXG4gICAqICAgICBzZWdtZW50OiAnZW50ZXJwcmlzZScsXG4gICAqICAgfSxcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgY3JlYXRlKG9wdGlvbnM6IFJ1bk9wdGlvbnMpOiBQcm9taXNlPFJ1blJlc3BvbnNlPiB7XG4gICAgY29uc3Qgc3RhcnRlZEF0ID0gb3B0aW9ucy5zdGFydGVkQXRcbiAgICAgID8gbmV3IERhdGUob3B0aW9ucy5zdGFydGVkQXQpLnRvSVNPU3RyaW5nKClcbiAgICAgIDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpO1xuXG4gICAgY29uc3QgcGF5bG9hZCA9IHtcbiAgICAgIGFnZW50SWQ6IG9wdGlvbnMuYWdlbnRJZCxcbiAgICAgIHN0YXJ0ZWRBdCxcbiAgICAgIGVuZGVkQXQ6IG9wdGlvbnMuZW5kZWRBdFxuICAgICAgICA/IG5ldyBEYXRlKG9wdGlvbnMuZW5kZWRBdCkudG9JU09TdHJpbmcoKVxuICAgICAgICA6IHVuZGVmaW5lZCxcbiAgICAgIG91dGNvbWU6IG9wdGlvbnMub3V0Y29tZSxcbiAgICAgIG91dGNvbWVSZWFzb246IG9wdGlvbnMub3V0Y29tZVJlYXNvbixcbiAgICAgIGNvbnZlcnNhdGlvbk1lc3NhZ2VzOiBvcHRpb25zLmNvbnZlcnNhdGlvbk1lc3NhZ2VzLFxuICAgICAgbW9kZWxJZDogb3B0aW9ucy5tb2RlbElkLFxuICAgICAgcHJvbXB0VmVyc2lvbjogb3B0aW9ucy5wcm9tcHRWZXJzaW9uLFxuICAgICAgc2Vzc2lvbklkOiBvcHRpb25zLnNlc3Npb25JZCxcbiAgICAgIGN1c3RvbWVyQ29udGV4dDogb3B0aW9ucy5jdXN0b21lckNvbnRleHQsXG4gICAgICBtZXRhZGF0YTogb3B0aW9ucy5tZXRhZGF0YSxcbiAgICB9O1xuXG4gICAgcmV0dXJuIGFwaVJlcXVlc3RXaXRoRGF0YTxSdW5SZXNwb25zZT4oJy9ydW5zJywge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBwYXlsb2FkLFxuICAgIH0pO1xuICB9LFxuXG4gIC8qKlxuICAgKiBHZXQgYSBydW4gYnkgSURcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCBydW4gPSBhd2FpdCBydW5zLmdldCgncnVuX2FiYzEyMycpO1xuICAgKiBgYGBcbiAgICovXG4gIGFzeW5jIGdldChydW5JZDogc3RyaW5nKTogUHJvbWlzZTxSdW5SZXNwb25zZT4ge1xuICAgIHJldHVybiBhcGlSZXF1ZXN0V2l0aERhdGE8UnVuUmVzcG9uc2U+KGAvcnVucy8ke3J1bklkfWApO1xuICB9LFxuXG4gIC8qKlxuICAgKiBMaXN0IHJ1bnMgd2l0aCBmaWx0ZXJzXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgeyBpdGVtcywgaGFzTW9yZSB9ID0gYXdhaXQgcnVucy5saXN0KHtcbiAgICogICBhZ2VudElkOiAnYWdlbnRfMTIzJyxcbiAgICogICBvdXRjb21lOiAnZmFpbGVkJyxcbiAgICogICBsaW1pdDogMjAsXG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICovXG4gIGFzeW5jIGxpc3QoXG4gICAgb3B0aW9uczogTGlzdFJ1bnNPcHRpb25zID0ge31cbiAgKTogUHJvbWlzZTx7IGl0ZW1zOiBSdW5SZXNwb25zZVtdOyBsaW1pdDogbnVtYmVyOyBvZmZzZXQ6IG51bWJlcjsgaGFzTW9yZTogYm9vbGVhbiB9PiB7XG4gICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuICAgIGlmIChvcHRpb25zLmFnZW50SWQpIHBhcmFtcy5zZXQoJ2FnZW50SWQnLCBvcHRpb25zLmFnZW50SWQpO1xuICAgIGlmIChvcHRpb25zLnRpY2tldElkKSBwYXJhbXMuc2V0KCd0aWNrZXRJZCcsIG9wdGlvbnMudGlja2V0SWQpO1xuICAgIGlmIChvcHRpb25zLmN1c3RvbWVyQWNjb3VudElkKSBwYXJhbXMuc2V0KCdjdXN0b21lckFjY291bnRJZCcsIG9wdGlvbnMuY3VzdG9tZXJBY2NvdW50SWQpO1xuICAgIGlmIChvcHRpb25zLm91dGNvbWUpIHBhcmFtcy5zZXQoJ291dGNvbWUnLCBvcHRpb25zLm91dGNvbWUpO1xuICAgIGlmIChvcHRpb25zLnN0YXJ0ZWRBZnRlcikge1xuICAgICAgcGFyYW1zLnNldCgnc3RhcnRlZEFmdGVyJywgbmV3IERhdGUob3B0aW9ucy5zdGFydGVkQWZ0ZXIpLnRvSVNPU3RyaW5nKCkpO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5zdGFydGVkQmVmb3JlKSB7XG4gICAgICBwYXJhbXMuc2V0KCdzdGFydGVkQmVmb3JlJywgbmV3IERhdGUob3B0aW9ucy5zdGFydGVkQmVmb3JlKS50b0lTT1N0cmluZygpKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMubGltaXQpIHBhcmFtcy5zZXQoJ2xpbWl0JywgU3RyaW5nKG9wdGlvbnMubGltaXQpKTtcbiAgICBpZiAob3B0aW9ucy5vZmZzZXQpIHBhcmFtcy5zZXQoJ29mZnNldCcsIFN0cmluZyhvcHRpb25zLm9mZnNldCkpO1xuXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBhcGlSZXF1ZXN0PFBhZ2luYXRlZFJlc3BvbnNlPFJ1blJlc3BvbnNlPj4oXG4gICAgICBgL3J1bnM/JHtwYXJhbXMudG9TdHJpbmcoKX1gXG4gICAgKTtcbiAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgfSxcblxuICAvKipcbiAgICogVXBkYXRlIGEgcnVuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogYXdhaXQgcnVucy51cGRhdGUoJ3J1bl9hYmMxMjMnLCB7XG4gICAqICAgb3V0Y29tZTogJ3Jlc29sdmVkJyxcbiAgICogICBvdXRjb21lUmVhc29uOiAnQ3VzdG9tZXIgY29uZmlybWVkIGlzc3VlIHJlc29sdmVkJyxcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgdXBkYXRlKFxuICAgIHJ1bklkOiBzdHJpbmcsXG4gICAgdXBkYXRlczogUGFydGlhbDxQaWNrPFJ1bk9wdGlvbnMsICdvdXRjb21lJyB8ICdvdXRjb21lUmVhc29uJyB8ICdlbmRlZEF0JyB8ICdtZXRhZGF0YSc+PlxuICApOiBQcm9taXNlPFJ1blJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIGFwaVJlcXVlc3RXaXRoRGF0YTxSdW5SZXNwb25zZT4oYC9ydW5zLyR7cnVuSWR9YCwge1xuICAgICAgbWV0aG9kOiAnUFVUJyxcbiAgICAgIGJvZHk6IHVwZGF0ZXMsXG4gICAgfSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIERlbGV0ZSBhIHJ1blxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGF3YWl0IHJ1bnMuZGVsZXRlKCdydW5fYWJjMTIzJyk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgZGVsZXRlKHJ1bklkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICBhd2FpdCBhcGlSZXF1ZXN0KGAvcnVucy8ke3J1bklkfWAsIHsgbWV0aG9kOiAnREVMRVRFJyB9KTtcbiAgfSxcblxuICAvKipcbiAgICogQ3JlYXRlIG11bHRpcGxlIHJ1bnMgaW4gYmF0Y2hcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCB7IGNyZWF0ZWQsIGZhaWxlZCB9ID0gYXdhaXQgcnVucy5iYXRjaChbXG4gICAqICAgeyBhZ2VudElkOiAnYWdlbnRfMScsIGNvbnZlcnNhdGlvbk1lc3NhZ2VzOiBbLi4uXSB9LFxuICAgKiAgIHsgYWdlbnRJZDogJ2FnZW50XzEnLCBjb252ZXJzYXRpb25NZXNzYWdlczogWy4uLl0gfSxcbiAgICogXSk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgYmF0Y2goXG4gICAgcnVuc0RhdGE6IFJ1bk9wdGlvbnNbXVxuICApOiBQcm9taXNlPHsgY3JlYXRlZDogUnVuUmVzcG9uc2VbXTsgZmFpbGVkOiBBcnJheTx7IGluZGV4OiBudW1iZXI7IGVycm9yOiBzdHJpbmcgfT4gfT4ge1xuICAgIGNvbnN0IHBheWxvYWQgPSBydW5zRGF0YS5tYXAoKHIpID0+ICh7XG4gICAgICBhZ2VudElkOiByLmFnZW50SWQsXG4gICAgICBzdGFydGVkQXQ6IHIuc3RhcnRlZEF0XG4gICAgICAgID8gbmV3IERhdGUoci5zdGFydGVkQXQpLnRvSVNPU3RyaW5nKClcbiAgICAgICAgOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCksXG4gICAgICBlbmRlZEF0OiByLmVuZGVkQXQgPyBuZXcgRGF0ZShyLmVuZGVkQXQpLnRvSVNPU3RyaW5nKCkgOiB1bmRlZmluZWQsXG4gICAgICBvdXRjb21lOiByLm91dGNvbWUsXG4gICAgICBvdXRjb21lUmVhc29uOiByLm91dGNvbWVSZWFzb24sXG4gICAgICBjb252ZXJzYXRpb25NZXNzYWdlczogci5jb252ZXJzYXRpb25NZXNzYWdlcyxcbiAgICAgIG1vZGVsSWQ6IHIubW9kZWxJZCxcbiAgICAgIHByb21wdFZlcnNpb246IHIucHJvbXB0VmVyc2lvbixcbiAgICAgIHNlc3Npb25JZDogci5zZXNzaW9uSWQsXG4gICAgICBjdXN0b21lckNvbnRleHQ6IHIuY3VzdG9tZXJDb250ZXh0LFxuICAgICAgbWV0YWRhdGE6IHIubWV0YWRhdGEsXG4gICAgfSkpO1xuXG4gICAgcmV0dXJuIGFwaVJlcXVlc3RXaXRoRGF0YSgnL3J1bnMvYmF0Y2gnLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IHsgcnVuczogcGF5bG9hZCB9LFxuICAgIH0pO1xuICB9LFxuXG4gIC8qKlxuICAgKiBHZXQgcnVuIHN0YXRpc3RpY3MgZm9yIGFuIGFnZW50XG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3Qgc3RhdHMgPSBhd2FpdCBydW5zLnN0YXRzKCdhZ2VudF8xMjMnLCB7XG4gICAqICAgZnJvbTogJzIwMjQtMDEtMDEnLFxuICAgKiAgIHRvOiAnMjAyNC0wMS0zMScsXG4gICAqIH0pO1xuICAgKiBgYGBcbiAgICovXG4gIGFzeW5jIHN0YXRzKFxuICAgIGFnZW50SWQ6IHN0cmluZyxcbiAgICBvcHRpb25zOiB7IGZyb20/OiBzdHJpbmcgfCBEYXRlOyB0bz86IHN0cmluZyB8IERhdGUgfSA9IHt9XG4gICk6IFByb21pc2U8UnVuU3RhdHM+IHtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gICAgaWYgKG9wdGlvbnMuZnJvbSkgcGFyYW1zLnNldCgnZnJvbScsIG5ldyBEYXRlKG9wdGlvbnMuZnJvbSkudG9JU09TdHJpbmcoKSk7XG4gICAgaWYgKG9wdGlvbnMudG8pIHBhcmFtcy5zZXQoJ3RvJywgbmV3IERhdGUob3B0aW9ucy50bykudG9JU09TdHJpbmcoKSk7XG5cbiAgICByZXR1cm4gYXBpUmVxdWVzdFdpdGhEYXRhPFJ1blN0YXRzPihcbiAgICAgIGAvcnVucy9zdGF0cy8ke2FnZW50SWR9PyR7cGFyYW1zLnRvU3RyaW5nKCl9YFxuICAgICk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEdldCB0cmFjZXMgZm9yIGEgcnVuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgdHJhY2VzID0gYXdhaXQgcnVucy5nZXRUcmFjZXMoJ3J1bl9hYmMxMjMnKTtcbiAgICogYGBgXG4gICAqL1xuICBhc3luYyBnZXRUcmFjZXMocnVuSWQ6IHN0cmluZyk6IFByb21pc2U8dW5rbm93bltdPiB7XG4gICAgcmV0dXJuIGFwaVJlcXVlc3RXaXRoRGF0YTx1bmtub3duW10+KGAvcnVucy8ke3J1bklkfS90cmFjZXNgKTtcbiAgfSxcblxuICAvKipcbiAgICogQWRkIGEgdHJhY2UgdG8gYSBydW5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBhd2FpdCBydW5zLmFkZFRyYWNlKCdydW5fYWJjMTIzJywge1xuICAgKiAgIHNwYW5zOiBbLi4uXSxcbiAgICogICB0aW1lc3RhbXA6IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgYWRkVHJhY2UoXG4gICAgcnVuSWQ6IHN0cmluZyxcbiAgICB0cmFjZURhdGE6IHsgc3BhbnM/OiB1bmtub3duW107IHRpbWVzdGFtcD86IHN0cmluZzsgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB9XG4gICk6IFByb21pc2U8eyB0cmFjZUlkOiBzdHJpbmcgfT4ge1xuICAgIHJldHVybiBhcGlSZXF1ZXN0V2l0aERhdGEoYC9ydW5zLyR7cnVuSWR9L3RyYWNlc2AsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keTogdHJhY2VEYXRhLFxuICAgIH0pO1xuICB9LFxufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSEVMUEVSIEZVTkNUSU9OU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIENyZWF0ZSBhIHJ1biB3aXRoIGN1c3RvbWVyIGNvbnRleHQgc25hcHNob3RcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgcnVuID0gYXdhaXQgY3JlYXRlUnVuV2l0aENvbnRleHQoe1xuICogICBhZ2VudElkOiAnYWdlbnRfMTIzJyxcbiAqICAgY29udmVyc2F0aW9uTWVzc2FnZXM6IFsuLi5dLFxuICogICBjdXN0b21lckNvbnRleHQ6IHtcbiAqICAgICBhcnI6IDEwMDAwMCxcbiAqICAgICBoZWFsdGhTY29yZTogOTIsXG4gKiAgIH0sXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlUnVuV2l0aENvbnRleHQoXG4gIG9wdGlvbnM6IFJ1bk9wdGlvbnMgJiB7IGN1c3RvbWVyQ29udGV4dDogQ3VzdG9tZXJDb250ZXh0U25hcHNob3QgfVxuKTogUHJvbWlzZTxSdW5SZXNwb25zZT4ge1xuICAvLyBFbnN1cmUgY2FwdHVyZWRBdCBpcyBzZXRcbiAgY29uc3QgY3VzdG9tZXJDb250ZXh0OiBDdXN0b21lckNvbnRleHRTbmFwc2hvdCA9IHtcbiAgICAuLi5vcHRpb25zLmN1c3RvbWVyQ29udGV4dCxcbiAgICBjYXB0dXJlZEF0OiBvcHRpb25zLmN1c3RvbWVyQ29udGV4dC5jYXB0dXJlZEF0IHx8IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgfTtcblxuICByZXR1cm4gcnVucy5jcmVhdGUoe1xuICAgIC4uLm9wdGlvbnMsXG4gICAgY3VzdG9tZXJDb250ZXh0LFxuICB9KTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGNvbnZlcnNhdGlvbiBtZXNzYWdlcyB0byBPcGVuQUkgZm9ybWF0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b09wZW5BSU1lc3NhZ2VzKFxuICBtZXNzYWdlczogQ29udmVyc2F0aW9uTWVzc2FnZVtdXG4pOiBBcnJheTx7IHJvbGU6IHN0cmluZzsgY29udGVudDogc3RyaW5nIH0+IHtcbiAgcmV0dXJuIG1lc3NhZ2VzLm1hcCgobSkgPT4gKHtcbiAgICByb2xlOiBtLnJvbGUsXG4gICAgY29udGVudDogbS5jb250ZW50LFxuICB9KSk7XG59XG5cbi8qKlxuICogQ29udmVydCBPcGVuQUkgZm9ybWF0IG1lc3NhZ2VzIHRvIFRoaW5rSGl2ZSBmb3JtYXRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZyb21PcGVuQUlNZXNzYWdlcyhcbiAgbWVzc2FnZXM6IEFycmF5PHsgcm9sZTogc3RyaW5nOyBjb250ZW50OiBzdHJpbmcgfT5cbik6IENvbnZlcnNhdGlvbk1lc3NhZ2VbXSB7XG4gIHJldHVybiBtZXNzYWdlcy5tYXAoKG0pID0+ICh7XG4gICAgcm9sZTogbS5yb2xlIGFzIENvbnZlcnNhdGlvbk1lc3NhZ2VbJ3JvbGUnXSxcbiAgICBjb250ZW50OiBtLmNvbnRlbnQsXG4gIH0pKTtcbn1cbiJdfQ==
|
|
268
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicnVucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvcnVucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7R0FJRzs7O0FBd1NILG9EQWFDO0FBS0QsNENBT0M7QUFLRCxnREFPQztBQTNVRCwyQ0FBZ0U7QUEwQ2hFOztHQUVHO0FBQ1UsUUFBQSxJQUFJLEdBQUc7SUFDbEI7Ozs7Ozs7Ozs7Ozs7Ozs7Ozs7T0FtQkc7SUFDSCxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQW1CO1FBQzlCLE1BQU0sU0FBUyxHQUFHLE9BQU8sQ0FBQyxTQUFTO1lBQ2pDLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLENBQUMsV0FBVyxFQUFFO1lBQzNDLENBQUMsQ0FBQyxJQUFJLElBQUksRUFBRSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBRTdCLE1BQU0sT0FBTyxHQUFHO1lBQ2QsT0FBTyxFQUFFLE9BQU8sQ0FBQyxPQUFPO1lBQ3hCLFNBQVM7WUFDVCxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87Z0JBQ3RCLENBQUMsQ0FBQyxJQUFJLElBQUksQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsV0FBVyxFQUFFO2dCQUN6QyxDQUFDLENBQUMsU0FBUztZQUNiLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztZQUN4QixhQUFhLEVBQUUsT0FBTyxDQUFDLGFBQWE7WUFDcEMsb0JBQW9CLEVBQUUsT0FBTyxDQUFDLG9CQUFvQjtZQUNsRCxPQUFPLEVBQUUsT0FBTyxDQUFDLE9BQU87WUFDeEIsYUFBYSxFQUFFLE9BQU8sQ0FBQyxhQUFhO1lBQ3BDLFNBQVMsRUFBRSxPQUFPLENBQUMsU0FBUztZQUM1QixlQUFlLEVBQUUsT0FBTyxDQUFDLGVBQWU7WUFDeEMsUUFBUSxFQUFFLE9BQU8sQ0FBQyxRQUFRO1lBQzFCLE9BQU8sRUFBRSxPQUFPLENBQUMsT0FBTztTQUN6QixDQUFDO1FBRUYsT0FBTyxJ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RUFBRTtLQUMzRSxDQUFDO0lBRUYsT0FBTyxZQUFJLENBQUMsTUFBTSxDQUFDO1FBQ2pCLEdBQUcsT0FBTztRQUNWLGVBQWU7S0FDaEIsQ0FBQyxDQUFDO0FBQ0wsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsZ0JBQWdCLENBQzlCLFFBQStCO0lBRS9CLE9BQU8sUUFBUSxDQUFDLEdBQUcsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUMsQ0FBQztRQUMxQixJQUFJLEVBQUUsQ0FBQyxDQUFDLElBQUk7UUFDWixPQUFPLEVBQUUsQ0FBQyxDQUFDLE9BQU87S0FDbkIsQ0FBQyxDQUFDLENBQUM7QUFDTixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixrQkFBa0IsQ0FDaEMsUUFBa0Q7SUFFbEQsT0FBTyxRQUFRLENBQUMsR0FBRyxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsQ0FBQyxDQUFDO1FBQzFCLElBQUksRUFBRSxDQUFDLENBQUMsSUFBbUM7UUFDM0MsT0FBTyxFQUFFLENBQUMsQ0FBQyxPQUFPO0tBQ25CLENBQUMsQ0FBQyxDQUFDO0FBQ04sQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhpbmtIaXZlIFNESyB2My4wIC0gUnVucyBBUElcbiAqXG4gKiBSdW4tY2VudHJpYyBBUEkgZm9yIGNyZWF0aW5nIGFuZCBtYW5hZ2luZyBydW5zICh0aGUgYXRvbWljIHVuaXQgaW4gdjMpXG4gKi9cblxuaW1wb3J0IHsgYXBpUmVxdWVzdCwgYXBpUmVxdWVzdFdpdGhEYXRhIH0gZnJvbSAnLi4vY29yZS9jbGllbnQnO1xuaW1wb3J0IHR5cGUge1xuICBSdW5PcHRpb25zLFxuICBSdW5SZXNwb25zZSxcbiAgQXBpUmVzcG9uc2UsXG4gIFBhZ2luYXRlZFJlc3BvbnNlLFxuICBDdXN0b21lckNvbnRleHRTbmFwc2hvdCxcbiAgQ29udmVyc2F0aW9uTWVzc2FnZSxcbiAgUnVuT3V0Y29tZSxcbn0gZnJvbSAnLi4vY29yZS90eXBlcyc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFJVTlMgQVBJIENMSUVOVFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIExpc3QgcnVucyBxdWVyeSBvcHRpb25zXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgTGlzdFJ1bnNPcHRpb25zIHtcbiAgYWdlbnRJZD86IHN0cmluZztcbiAgdGlja2V0SWQ/OiBzdHJpbmc7XG4gIGN1c3RvbWVyQWNjb3VudElkPzogc3RyaW5nO1xuICBvdXRjb21lPzogUnVuT3V0Y29tZTtcbiAgc3RhcnRlZEFmdGVyPzogc3RyaW5nIHwgRGF0ZTtcbiAgc3RhcnRlZEJlZm9yZT86IHN0cmluZyB8IERhdGU7XG4gIGxpbWl0PzogbnVtYmVyO1xuICBvZmZzZXQ/OiBudW1iZXI7XG59XG5cbi8qKlxuICogUnVuIHN0YXRzIHJlc3BvbnNlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUnVuU3RhdHMge1xuICBhZ2VudElkOiBzdHJpbmc7XG4gIHBlcmlvZDogeyBmcm9tOiBzdHJpbmc7IHRvOiBzdHJpbmcgfTtcbiAgdG90YWxSdW5zOiBudW1iZXI7XG4gIG91dGNvbWVCcmVha2Rvd246IFJlY29yZDxSdW5PdXRjb21lLCBudW1iZXI+O1xuICBhdmdEdXJhdGlvbk1zOiBudW1iZXI7XG4gIGxpbmtlZFRpY2tldHM6IG51bWJlcjtcbiAgdW5saW5rZWRSdW5zOiBudW1iZXI7XG59XG5cbi8qKlxuICogUnVucyBBUEkgY2xpZW50IGZvciB2MyBydW4tY2VudHJpYyBvcGVyYXRpb25zXG4gKi9cbmV4cG9ydCBjb25zdCBydW5zID0ge1xuICAvKipcbiAgICogQ3JlYXRlIGEgbmV3IHJ1blxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IHJ1biA9IGF3YWl0IHJ1bnMuY3JlYXRlKHtcbiAgICogICBhZ2VudElkOiAnYWdlbnRfMTIzJyxcbiAgICogICBjb252ZXJzYXRpb25NZXNzYWdlczogW1xuICAgKiAgICAgeyByb2xlOiAndXNlcicsIGNvbnRlbnQ6ICdIZWxwIG1lIHdpdGggbXkgb3JkZXInIH0sXG4gICAqICAgICB7IHJvbGU6ICdhc3Npc3RhbnQnLCBjb250ZW50OiAnSSBjYW4gaGVscCB3aXRoIHRoYXQuLi4nIH0sXG4gICAqICAgXSxcbiAgICogICBvdXRjb21lOiAncmVzb2x2ZWQnLFxuICAgKiAgIGN1c3RvbWVyQ29udGV4dDoge1xuICAgKiAgICAgYXJyOiA1MDAwMCxcbiAgICogICAgIGhlYWx0aFNjb3JlOiA4NSxcbiAgICogICAgIHNlZ21lbnQ6ICdlbnRlcnByaXNlJyxcbiAgICogICB9LFxuICAgKiB9KTtcbiAgICogYGBgXG4gICAqL1xuICBhc3luYyBjcmVhdGUob3B0aW9uczogUnVuT3B0aW9ucyk6IFByb21pc2U8UnVuUmVzcG9uc2U+IHtcbiAgICBjb25zdCBzdGFydGVkQXQgPSBvcHRpb25zLnN0YXJ0ZWRBdFxuICAgICAgPyBuZXcgRGF0ZShvcHRpb25zLnN0YXJ0ZWRBdCkudG9JU09TdHJpbmcoKVxuICAgICAgOiBuZXcgRGF0ZSgpLnRvSVNPU3RyaW5nKCk7XG5cbiAgICBjb25zdCBwYXlsb2FkID0ge1xuICAgICAgYWdlbnRJZDogb3B0aW9ucy5hZ2VudElkLFxuICAgICAgc3RhcnRlZEF0LFxuICAgICAgZW5kZWRBdDogb3B0aW9ucy5lbmRlZEF0XG4gICAgICAgID8gbmV3IERhdGUob3B0aW9ucy5lbmRlZEF0KS50b0lTT1N0cmluZygpXG4gICAgICAgIDogdW5kZWZpbmVkLFxuICAgICAgb3V0Y29tZTogb3B0aW9ucy5vdXRjb21lLFxuICAgICAgb3V0Y29tZVJlYXNvbjogb3B0aW9ucy5vdXRjb21lUmVhc29uLFxuICAgICAgY29udmVyc2F0aW9uTWVzc2FnZXM6IG9wdGlvbnMuY29udmVyc2F0aW9uTWVzc2FnZXMsXG4gICAgICBtb2RlbElkOiBvcHRpb25zLm1vZGVsSWQsXG4gICAgICBwcm9tcHRWZXJzaW9uOiBvcHRpb25zLnByb21wdFZlcnNpb24sXG4gICAgICBzZXNzaW9uSWQ6IG9wdGlvbnMuc2Vzc2lvbklkLFxuICAgICAgY3VzdG9tZXJDb250ZXh0OiBvcHRpb25zLmN1c3RvbWVyQ29udGV4dCxcbiAgICAgIG1ldGFkYXRhOiBvcHRpb25zLm1ldGFkYXRhLFxuICAgICAgbWV0cmljczogb3B0aW9ucy5tZXRyaWNzLFxuICAgIH07XG5cbiAgICByZXR1cm4gYXBpUmVxdWVzdFdpdGhEYXRhPFJ1blJlc3BvbnNlPignL3J1bnMnLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IHBheWxvYWQsXG4gICAgICBhcGlWZXJzaW9uOiAndjMnLFxuICAgIH0pO1xuICB9LFxuXG4gIC8qKlxuICAgKiBHZXQgYSBydW4gYnkgSURcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCBydW4gPSBhd2FpdCBydW5zLmdldCgncnVuX2FiYzEyMycpO1xuICAgKiBgYGBcbiAgICovXG4gIGFzeW5jIGdldChydW5JZDogc3RyaW5nKTogUHJvbWlzZTxSdW5SZXNwb25zZT4ge1xuICAgIHJldHVybiBhcGlSZXF1ZXN0V2l0aERhdGE8UnVuUmVzcG9uc2U+KGAvcnVucy8ke3J1bklkfWAsIHsgYXBpVmVyc2lvbjogJ3YzJyB9KTtcbiAgfSxcblxuICAvKipcbiAgICogTGlzdCBydW5zIHdpdGggZmlsdGVyc1xuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IHsgaXRlbXMsIGhhc01vcmUgfSA9IGF3YWl0IHJ1bnMubGlzdCh7XG4gICAqICAgYWdlbnRJZDogJ2FnZW50XzEyMycsXG4gICAqICAgb3V0Y29tZTogJ2ZhaWxlZCcsXG4gICAqICAgbGltaXQ6IDIwLFxuICAgKiB9KTtcbiAgICogYGBgXG4gICAqL1xuICBhc3luYyBsaXN0KFxuICAgIG9wdGlvbnM6IExpc3RSdW5zT3B0aW9ucyA9IHt9XG4gICk6IFByb21pc2U8eyBpdGVtczogUnVuUmVzcG9uc2VbXTsgbGltaXQ6IG51bWJlcjsgb2Zmc2V0OiBudW1iZXI7IGhhc01vcmU6IGJvb2xlYW4gfT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgICBpZiAob3B0aW9ucy5hZ2VudElkKSBwYXJhbXMuc2V0KCdhZ2VudElkJywgb3B0aW9ucy5hZ2VudElkKTtcbiAgICBpZiAob3B0aW9ucy50aWNrZXRJZCkgcGFyYW1zLnNldCgndGlja2V0SWQnLCBvcHRpb25zLnRpY2tldElkKTtcbiAgICBpZiAob3B0aW9ucy5jdXN0b21lckFjY291bnRJZCkgcGFyYW1zLnNldCgnY3VzdG9tZXJBY2NvdW50SWQnLCBvcHRpb25zLmN1c3RvbWVyQWNjb3VudElkKTtcbiAgICBpZiAob3B0aW9ucy5vdXRjb21lKSBwYXJhbXMuc2V0KCdvdXRjb21lJywgb3B0aW9ucy5vdXRjb21lKTtcbiAgICBpZiAob3B0aW9ucy5zdGFydGVkQWZ0ZXIpIHtcbiAgICAgIHBhcmFtcy5zZXQoJ3N0YXJ0ZWRBZnRlcicsIG5ldyBEYXRlKG9wdGlvbnMuc3RhcnRlZEFmdGVyKS50b0lTT1N0cmluZygpKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMuc3RhcnRlZEJlZm9yZSkge1xuICAgICAgcGFyYW1zLnNldCgnc3RhcnRlZEJlZm9yZScsIG5ldyBEYXRlKG9wdGlvbnMuc3RhcnRlZEJlZm9yZSkudG9JU09TdHJpbmcoKSk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmxpbWl0KSBwYXJhbXMuc2V0KCdsaW1pdCcsIFN0cmluZyhvcHRpb25zLmxpbWl0KSk7XG4gICAgaWYgKG9wdGlvbnMub2Zmc2V0KSBwYXJhbXMuc2V0KCdvZmZzZXQnLCBTdHJpbmcob3B0aW9ucy5vZmZzZXQpKTtcblxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXBpUmVxdWVzdDxQYWdpbmF0ZWRSZXNwb25zZTxSdW5SZXNwb25zZT4+KFxuICAgICAgYC9ydW5zPyR7cGFyYW1zLnRvU3RyaW5nKCl9YCxcbiAgICAgIHsgYXBpVmVyc2lvbjogJ3YzJyB9XG4gICAgKTtcbiAgICByZXR1cm4gcmVzcG9uc2UuZGF0YTtcbiAgfSxcblxuICAvKipcbiAgICogVXBkYXRlIGEgcnVuXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogYXdhaXQgcnVucy51cGRhdGUoJ3J1bl9hYmMxMjMnLCB7XG4gICAqICAgb3V0Y29tZTogJ3Jlc29sdmVkJyxcbiAgICogICBvdXRjb21lUmVhc29uOiAnQ3VzdG9tZXIgY29uZmlybWVkIGlzc3VlIHJlc29sdmVkJyxcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgdXBkYXRlKFxuICAgIHJ1bklkOiBzdHJpbmcsXG4gICAgdXBkYXRlczogUGFydGlhbDxQaWNrPFJ1bk9wdGlvbnMsICdvdXRjb21lJyB8ICdvdXRjb21lUmVhc29uJyB8ICdlbmRlZEF0JyB8ICdtZXRhZGF0YSc+PlxuICApOiBQcm9taXNlPFJ1blJlc3BvbnNlPiB7XG4gICAgcmV0dXJuIGFwaVJlcXVlc3RXaXRoRGF0YTxSdW5SZXNwb25zZT4oYC9ydW5zLyR7cnVuSWR9YCwge1xuICAgICAgbWV0aG9kOiAnUFVUJyxcbiAgICAgIGJvZHk6IHVwZGF0ZXMsXG4gICAgICBhcGlWZXJzaW9uOiAndjMnLFxuICAgIH0pO1xuICB9LFxuXG4gIC8qKlxuICAgKiBEZWxldGUgYSBydW5cbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBhd2FpdCBydW5zLmRlbGV0ZSgncnVuX2FiYzEyMycpO1xuICAgKiBgYGBcbiAgICovXG4gIGFzeW5jIGRlbGV0ZShydW5JZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgYXdhaXQgYXBpUmVxdWVzdChgL3J1bnMvJHtydW5JZH1gLCB7IG1ldGhvZDogJ0RFTEVURScsIGFwaVZlcnNpb246ICd2MycgfSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIENyZWF0ZSBtdWx0aXBsZSBydW5zIGluIGJhdGNoXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgeyBjcmVhdGVkLCBmYWlsZWQgfSA9IGF3YWl0IHJ1bnMuYmF0Y2goW1xuICAgKiAgIHsgYWdlbnRJZDogJ2FnZW50XzEnLCBjb252ZXJzYXRpb25NZXNzYWdlczogWy4uLl0gfSxcbiAgICogICB7IGFnZW50SWQ6ICdhZ2VudF8xJywgY29udmVyc2F0aW9uTWVzc2FnZXM6IFsuLi5dIH0sXG4gICAqIF0pO1xuICAgKiBgYGBcbiAgICovXG4gIGFzeW5jIGJhdGNoKFxuICAgIHJ1bnNEYXRhOiBSdW5PcHRpb25zW11cbiAgKTogUHJvbWlzZTx7IGNyZWF0ZWQ6IFJ1blJlc3BvbnNlW107IGZhaWxlZDogQXJyYXk8eyBpbmRleDogbnVtYmVyOyBlcnJvcjogc3RyaW5nIH0+IH0+IHtcbiAgICBjb25zdCBwYXlsb2FkID0gcnVuc0RhdGEubWFwKChyKSA9PiAoe1xuICAgICAgYWdlbnRJZDogci5hZ2VudElkLFxuICAgICAgc3RhcnRlZEF0OiByLnN0YXJ0ZWRBdFxuICAgICAgICA/IG5ldyBEYXRlKHIuc3RhcnRlZEF0KS50b0lTT1N0cmluZygpXG4gICAgICAgIDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgICAgZW5kZWRBdDogci5lbmRlZEF0ID8gbmV3IERhdGUoci5lbmRlZEF0KS50b0lTT1N0cmluZygpIDogdW5kZWZpbmVkLFxuICAgICAgb3V0Y29tZTogci5vdXRjb21lLFxuICAgICAgb3V0Y29tZVJlYXNvbjogci5vdXRjb21lUmVhc29uLFxuICAgICAgY29udmVyc2F0aW9uTWVzc2FnZXM6IHIuY29udmVyc2F0aW9uTWVzc2FnZXMsXG4gICAgICBtb2RlbElkOiByLm1vZGVsSWQsXG4gICAgICBwcm9tcHRWZXJzaW9uOiByLnByb21wdFZlcnNpb24sXG4gICAgICBzZXNzaW9uSWQ6IHIuc2Vzc2lvbklkLFxuICAgICAgY3VzdG9tZXJDb250ZXh0OiByLmN1c3RvbWVyQ29udGV4dCxcbiAgICAgIG1ldGFkYXRhOiByLm1ldGFkYXRhLFxuICAgICAgbWV0cmljczogci5tZXRyaWNzLFxuICAgIH0pKTtcblxuICAgIHJldHVybiBhcGlSZXF1ZXN0V2l0aERhdGEoJy9ydW5zL2JhdGNoJywge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiB7IHJ1bnM6IHBheWxvYWQgfSxcbiAgICAgIGFwaVZlcnNpb246ICd2MycsXG4gICAgfSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEdldCBydW4gc3RhdGlzdGljcyBmb3IgYW4gYWdlbnRcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCBzdGF0cyA9IGF3YWl0IHJ1bnMuc3RhdHMoJ2FnZW50XzEyMycsIHtcbiAgICogICBmcm9tOiAnMjAyNC0wMS0wMScsXG4gICAqICAgdG86ICcyMDI0LTAxLTMxJyxcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgc3RhdHMoXG4gICAgYWdlbnRJZDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IHsgZnJvbT86IHN0cmluZyB8IERhdGU7IHRvPzogc3RyaW5nIHwgRGF0ZSB9ID0ge31cbiAgKTogUHJvbWlzZTxSdW5TdGF0cz4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgICBpZiAob3B0aW9ucy5mcm9tKSBwYXJhbXMuc2V0KCdmcm9tJywgbmV3IERhdGUob3B0aW9ucy5mcm9tKS50b0lTT1N0cmluZygpKTtcbiAgICBpZiAob3B0aW9ucy50bykgcGFyYW1zLnNldCgndG8nLCBuZXcgRGF0ZShvcHRpb25zLnRvKS50b0lTT1N0cmluZygpKTtcblxuICAgIHJldHVybiBhcGlSZXF1ZXN0V2l0aERhdGE8UnVuU3RhdHM+KFxuICAgICAgYC9ydW5zL3N0YXRzLyR7YWdlbnRJZH0/JHtwYXJhbXMudG9TdHJpbmcoKX1gLFxuICAgICAgeyBhcGlWZXJzaW9uOiAndjMnIH1cbiAgICApO1xuICB9LFxuXG4gIC8qKlxuICAgKiBHZXQgdHJhY2VzIGZvciBhIHJ1blxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IHRyYWNlcyA9IGF3YWl0IHJ1bnMuZ2V0VHJhY2VzKCdydW5fYWJjMTIzJyk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgZ2V0VHJhY2VzKHJ1bklkOiBzdHJpbmcpOiBQcm9taXNlPHVua25vd25bXT4ge1xuICAgIHJldHVybiBhcGlSZXF1ZXN0V2l0aERhdGE8dW5rbm93bltdPihgL3J1bnMvJHtydW5JZH0vdHJhY2VzYCwgeyBhcGlWZXJzaW9uOiAndjMnIH0pO1xuICB9LFxuXG4gIC8qKlxuICAgKiBBZGQgYSB0cmFjZSB0byBhIHJ1blxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGF3YWl0IHJ1bnMuYWRkVHJhY2UoJ3J1bl9hYmMxMjMnLCB7XG4gICAqICAgc3BhbnM6IFsuLi5dLFxuICAgKiAgIHRpbWVzdGFtcDogbmV3IERhdGUoKS50b0lTT1N0cmluZygpLFxuICAgKiB9KTtcbiAgICogYGBgXG4gICAqL1xuICBhc3luYyBhZGRUcmFjZShcbiAgICBydW5JZDogc3RyaW5nLFxuICAgIHRyYWNlRGF0YTogeyBzcGFucz86IHVua25vd25bXTsgdGltZXN0YW1wPzogc3RyaW5nOyBtZXRhZGF0YT86IFJlY29yZDxzdHJpbmcsIHVua25vd24+IH1cbiAgKTogUHJvbWlzZTx7IHRyYWNlSWQ6IHN0cmluZyB9PiB7XG4gICAgcmV0dXJuIGFwaVJlcXVlc3RXaXRoRGF0YShgL3J1bnMvJHtydW5JZH0vdHJhY2VzYCwge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiB0cmFjZURhdGEsXG4gICAgICBhcGlWZXJzaW9uOiAndjMnLFxuICAgIH0pO1xuICB9LFxufTtcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSEVMUEVSIEZVTkNUSU9OU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIENyZWF0ZSBhIHJ1biB3aXRoIGN1c3RvbWVyIGNvbnRleHQgc25hcHNob3RcbiAqXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogY29uc3QgcnVuID0gYXdhaXQgY3JlYXRlUnVuV2l0aENvbnRleHQoe1xuICogICBhZ2VudElkOiAnYWdlbnRfMTIzJyxcbiAqICAgY29udmVyc2F0aW9uTWVzc2FnZXM6IFsuLi5dLFxuICogICBjdXN0b21lckNvbnRleHQ6IHtcbiAqICAgICBhcnI6IDEwMDAwMCxcbiAqICAgICBoZWFsdGhTY29yZTogOTIsXG4gKiAgIH0sXG4gKiB9KTtcbiAqIGBgYFxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gY3JlYXRlUnVuV2l0aENvbnRleHQoXG4gIG9wdGlvbnM6IFJ1bk9wdGlvbnMgJiB7IGN1c3RvbWVyQ29udGV4dDogQ3VzdG9tZXJDb250ZXh0U25hcHNob3QgfVxuKTogUHJvbWlzZTxSdW5SZXNwb25zZT4ge1xuICAvLyBFbnN1cmUgY2FwdHVyZWRBdCBpcyBzZXRcbiAgY29uc3QgY3VzdG9tZXJDb250ZXh0OiBDdXN0b21lckNvbnRleHRTbmFwc2hvdCA9IHtcbiAgICAuLi5vcHRpb25zLmN1c3RvbWVyQ29udGV4dCxcbiAgICBjYXB0dXJlZEF0OiBvcHRpb25zLmN1c3RvbWVyQ29udGV4dC5jYXB0dXJlZEF0IHx8IG5ldyBEYXRlKCkudG9JU09TdHJpbmcoKSxcbiAgfTtcblxuICByZXR1cm4gcnVucy5jcmVhdGUoe1xuICAgIC4uLm9wdGlvbnMsXG4gICAgY3VzdG9tZXJDb250ZXh0LFxuICB9KTtcbn1cblxuLyoqXG4gKiBDb252ZXJ0IGNvbnZlcnNhdGlvbiBtZXNzYWdlcyB0byBPcGVuQUkgZm9ybWF0XG4gKi9cbmV4cG9ydCBmdW5jdGlvbiB0b09wZW5BSU1lc3NhZ2VzKFxuICBtZXNzYWdlczogQ29udmVyc2F0aW9uTWVzc2FnZVtdXG4pOiBBcnJheTx7IHJvbGU6IHN0cmluZzsgY29udGVudDogc3RyaW5nIH0+IHtcbiAgcmV0dXJuIG1lc3NhZ2VzLm1hcCgobSkgPT4gKHtcbiAgICByb2xlOiBtLnJvbGUsXG4gICAgY29udGVudDogbS5jb250ZW50LFxuICB9KSk7XG59XG5cbi8qKlxuICogQ29udmVydCBPcGVuQUkgZm9ybWF0IG1lc3NhZ2VzIHRvIFRoaW5rSGl2ZSBmb3JtYXRcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZyb21PcGVuQUlNZXNzYWdlcyhcbiAgbWVzc2FnZXM6IEFycmF5PHsgcm9sZTogc3RyaW5nOyBjb250ZW50OiBzdHJpbmcgfT5cbik6IENvbnZlcnNhdGlvbk1lc3NhZ2VbXSB7XG4gIHJldHVybiBtZXNzYWdlcy5tYXAoKG0pID0+ICh7XG4gICAgcm9sZTogbS5yb2xlIGFzIENvbnZlcnNhdGlvbk1lc3NhZ2VbJ3JvbGUnXSxcbiAgICBjb250ZW50OiBtLmNvbnRlbnQsXG4gIH0pKTtcbn1cbiJdfQ==
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ThinkHive SDK v3.0 - Transcript Patterns API
|
|
3
|
+
*
|
|
4
|
+
* API for transcript pattern detection and analysis
|
|
5
|
+
*/
|
|
6
|
+
export type PatternCategory = 'frustration' | 'confusion' | 'success' | 'failure' | 'escalation' | 'pii_exposure' | 'hallucination' | 'custom';
|
|
7
|
+
export type PatternOutcome = 'success' | 'failure' | 'escalation' | 'neutral';
|
|
8
|
+
export type PatternSeverity = 'info' | 'warning' | 'critical';
|
|
9
|
+
export type DetectionType = 'sequence' | 'keywords' | 'regex';
|
|
10
|
+
export interface PatternMatch {
|
|
11
|
+
patternId: string;
|
|
12
|
+
patternName: string;
|
|
13
|
+
category: PatternCategory;
|
|
14
|
+
matchedText?: string;
|
|
15
|
+
position?: {
|
|
16
|
+
start: number;
|
|
17
|
+
end: number;
|
|
18
|
+
};
|
|
19
|
+
confidence: number;
|
|
20
|
+
severity: PatternSeverity;
|
|
21
|
+
}
|
|
22
|
+
export interface PatternInsight {
|
|
23
|
+
type: string;
|
|
24
|
+
message: string;
|
|
25
|
+
severity: PatternSeverity;
|
|
26
|
+
recommendation?: string;
|
|
27
|
+
}
|
|
28
|
+
export interface AnalysisResult {
|
|
29
|
+
traceId: string;
|
|
30
|
+
sessionId?: string;
|
|
31
|
+
patternsMatched: number;
|
|
32
|
+
riskScore: number;
|
|
33
|
+
predictedOutcome?: PatternOutcome;
|
|
34
|
+
predictionConfidence?: number;
|
|
35
|
+
matches: PatternMatch[];
|
|
36
|
+
insights: PatternInsight[];
|
|
37
|
+
sentimentScores?: {
|
|
38
|
+
overall: number;
|
|
39
|
+
byTurn?: Array<{
|
|
40
|
+
turn: number;
|
|
41
|
+
sentiment: number;
|
|
42
|
+
confidence: number;
|
|
43
|
+
}>;
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
export interface BulkAnalysisResult {
|
|
47
|
+
results: Array<AnalysisResult & {
|
|
48
|
+
error?: string;
|
|
49
|
+
}>;
|
|
50
|
+
summary: {
|
|
51
|
+
tracesAnalyzed: number;
|
|
52
|
+
totalMatches: number;
|
|
53
|
+
tracesWithMatches: number;
|
|
54
|
+
};
|
|
55
|
+
}
|
|
56
|
+
export interface PatternCategoryInfo {
|
|
57
|
+
id: PatternCategory;
|
|
58
|
+
name: string;
|
|
59
|
+
description: string;
|
|
60
|
+
indicators: string[];
|
|
61
|
+
}
|
|
62
|
+
export interface BuiltInPattern {
|
|
63
|
+
id: string;
|
|
64
|
+
name: string;
|
|
65
|
+
category: PatternCategory;
|
|
66
|
+
detectionType: DetectionType;
|
|
67
|
+
description: string;
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Transcript Patterns API client for pattern detection and analysis
|
|
71
|
+
*/
|
|
72
|
+
export declare const transcriptPatterns: {
|
|
73
|
+
/**
|
|
74
|
+
* Analyze a trace for patterns
|
|
75
|
+
*
|
|
76
|
+
* @example
|
|
77
|
+
* ```typescript
|
|
78
|
+
* const result = await transcriptPatterns.analyze('trace_123');
|
|
79
|
+
* console.log(`Found ${result.patternsMatched} patterns`);
|
|
80
|
+
* console.log(`Risk score: ${result.riskScore}`);
|
|
81
|
+
* ```
|
|
82
|
+
*/
|
|
83
|
+
analyze(traceId: string): Promise<AnalysisResult>;
|
|
84
|
+
/**
|
|
85
|
+
* Analyze multiple traces for patterns
|
|
86
|
+
*
|
|
87
|
+
* @example
|
|
88
|
+
* ```typescript
|
|
89
|
+
* const { results, summary } = await transcriptPatterns.bulkAnalyze([
|
|
90
|
+
* 'trace_1', 'trace_2', 'trace_3'
|
|
91
|
+
* ]);
|
|
92
|
+
* console.log(`${summary.tracesWithMatches} traces have patterns`);
|
|
93
|
+
* ```
|
|
94
|
+
*/
|
|
95
|
+
bulkAnalyze(traceIds: string[]): Promise<BulkAnalysisResult>;
|
|
96
|
+
/**
|
|
97
|
+
* Get available pattern categories with descriptions
|
|
98
|
+
*
|
|
99
|
+
* @example
|
|
100
|
+
* ```typescript
|
|
101
|
+
* const categories = await transcriptPatterns.getCategories();
|
|
102
|
+
* for (const category of categories) {
|
|
103
|
+
* console.log(`${category.name}: ${category.description}`);
|
|
104
|
+
* }
|
|
105
|
+
* ```
|
|
106
|
+
*/
|
|
107
|
+
getCategories(): Promise<PatternCategoryInfo[]>;
|
|
108
|
+
/**
|
|
109
|
+
* Get built-in patterns
|
|
110
|
+
*
|
|
111
|
+
* @example
|
|
112
|
+
* ```typescript
|
|
113
|
+
* const patterns = await transcriptPatterns.getBuiltInPatterns();
|
|
114
|
+
* const frustrationPatterns = patterns.filter(p => p.category === 'frustration');
|
|
115
|
+
* ```
|
|
116
|
+
*/
|
|
117
|
+
getBuiltInPatterns(): Promise<BuiltInPattern[]>;
|
|
118
|
+
};
|
|
119
|
+
/**
|
|
120
|
+
* Check if analysis result indicates high risk
|
|
121
|
+
*
|
|
122
|
+
* @param result - Analysis result to check
|
|
123
|
+
* @param threshold - Risk score threshold (default 70)
|
|
124
|
+
* @returns Whether the result indicates high risk
|
|
125
|
+
*/
|
|
126
|
+
export declare function isHighRisk(result: AnalysisResult, threshold?: number): boolean;
|
|
127
|
+
/**
|
|
128
|
+
* Get matches by category
|
|
129
|
+
*
|
|
130
|
+
* @param result - Analysis result
|
|
131
|
+
* @param category - Pattern category to filter by
|
|
132
|
+
* @returns Filtered pattern matches
|
|
133
|
+
*/
|
|
134
|
+
export declare function getMatchesByCategory(result: AnalysisResult, category: PatternCategory): PatternMatch[];
|
|
135
|
+
/**
|
|
136
|
+
* Get critical insights from analysis
|
|
137
|
+
*
|
|
138
|
+
* @param result - Analysis result
|
|
139
|
+
* @returns Critical severity insights
|
|
140
|
+
*/
|
|
141
|
+
export declare function getCriticalInsights(result: AnalysisResult): PatternInsight[];
|
|
142
|
+
/**
|
|
143
|
+
* Check if analysis detected PII
|
|
144
|
+
*
|
|
145
|
+
* @param result - Analysis result
|
|
146
|
+
* @returns Whether PII was detected
|
|
147
|
+
*/
|
|
148
|
+
export declare function hasPiiExposure(result: AnalysisResult): boolean;
|
|
149
|
+
/**
|
|
150
|
+
* Check if analysis detected frustration
|
|
151
|
+
*
|
|
152
|
+
* @param result - Analysis result
|
|
153
|
+
* @returns Whether frustration was detected
|
|
154
|
+
*/
|
|
155
|
+
export declare function hasFrustrationSignals(result: AnalysisResult): boolean;
|
|
156
|
+
/**
|
|
157
|
+
* Check if analysis detected escalation request
|
|
158
|
+
*
|
|
159
|
+
* @param result - Analysis result
|
|
160
|
+
* @returns Whether escalation was requested
|
|
161
|
+
*/
|
|
162
|
+
export declare function hasEscalationRequest(result: AnalysisResult): boolean;
|
|
163
|
+
/**
|
|
164
|
+
* Calculate category distribution
|
|
165
|
+
*
|
|
166
|
+
* @param result - Analysis result
|
|
167
|
+
* @returns Object with counts per category
|
|
168
|
+
*/
|
|
169
|
+
export declare function getCategoryDistribution(result: AnalysisResult): Record<PatternCategory, number>;
|
|
170
|
+
/**
|
|
171
|
+
* Get actionable recommendations from insights
|
|
172
|
+
*
|
|
173
|
+
* @param result - Analysis result
|
|
174
|
+
* @returns Array of recommendation strings
|
|
175
|
+
*/
|
|
176
|
+
export declare function getRecommendations(result: AnalysisResult): string[];
|
|
177
|
+
/**
|
|
178
|
+
* Calculate overall sentiment from analysis
|
|
179
|
+
*
|
|
180
|
+
* @param result - Analysis result
|
|
181
|
+
* @returns Sentiment score (-1 to 1) or null if not available
|
|
182
|
+
*/
|
|
183
|
+
export declare function getOverallSentiment(result: AnalysisResult): number | null;
|
|
184
|
+
/**
|
|
185
|
+
* Determine if conversation needs attention based on patterns
|
|
186
|
+
*
|
|
187
|
+
* @param result - Analysis result
|
|
188
|
+
* @returns Whether the conversation needs attention
|
|
189
|
+
*/
|
|
190
|
+
export declare function needsAttention(result: AnalysisResult): boolean;
|
|
191
|
+
/**
|
|
192
|
+
* Get severity level as numeric value
|
|
193
|
+
*
|
|
194
|
+
* @param severity - Pattern severity
|
|
195
|
+
* @returns Numeric severity (1-3)
|
|
196
|
+
*/
|
|
197
|
+
export declare function getSeverityLevel(severity: PatternSeverity): number;
|
|
198
|
+
/**
|
|
199
|
+
* Sort matches by severity (critical first)
|
|
200
|
+
*
|
|
201
|
+
* @param matches - Pattern matches to sort
|
|
202
|
+
* @returns Sorted matches
|
|
203
|
+
*/
|
|
204
|
+
export declare function sortMatchesBySeverity(matches: PatternMatch[]): PatternMatch[];
|