@thinkhive/sdk 4.0.1 → 4.2.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/README.md +364 -208
- package/dist/api/claims.js +2 -3
- package/dist/api/documents.d.ts +52 -0
- package/dist/api/documents.js +58 -0
- package/dist/api/drift.d.ts +70 -0
- package/dist/api/drift.js +71 -0
- package/dist/api/eval-runs.d.ts +126 -0
- package/dist/api/eval-runs.js +126 -0
- package/dist/api/llm-costs.d.ts +104 -0
- package/dist/api/llm-costs.js +81 -0
- package/dist/api/notifications.d.ts +103 -0
- package/dist/api/notifications.js +110 -0
- package/dist/api/roi-analytics.d.ts +99 -0
- package/dist/api/roi-analytics.js +64 -1
- package/dist/api/sessions.d.ts +57 -0
- package/dist/api/sessions.js +49 -0
- package/dist/api/shadow-tests.d.ts +78 -0
- package/dist/api/shadow-tests.js +80 -0
- package/dist/api/signals.d.ts +177 -0
- package/dist/api/signals.js +172 -0
- package/dist/core/client.d.ts +2 -0
- package/dist/core/client.js +10 -4
- package/dist/core/config.d.ts +1 -1
- package/dist/core/config.js +2 -2
- package/dist/guardrails.d.ts +70 -0
- package/dist/guardrails.js +34 -0
- package/dist/index.d.ts +209 -18
- package/dist/index.js +55 -7
- package/dist/integrations/ticket-linking.d.ts +23 -17
- package/dist/integrations/ticket-linking.js +95 -12
- package/package.json +1 -1
|
@@ -164,6 +164,69 @@ exports.roiAnalytics = {
|
|
|
164
164
|
const response = await (0, client_1.apiRequest)(`/analytics/roi/correlations?${params.toString()}`, { apiVersion: 'v1' });
|
|
165
165
|
return response.data.analysis;
|
|
166
166
|
},
|
|
167
|
+
/**
|
|
168
|
+
* Get ROI configuration (V3)
|
|
169
|
+
*/
|
|
170
|
+
async getConfig() {
|
|
171
|
+
return (0, client_1.apiRequestWithData)('/roi/config', { apiVersion: 'v3' });
|
|
172
|
+
},
|
|
173
|
+
/**
|
|
174
|
+
* Create ROI configuration (V3)
|
|
175
|
+
*/
|
|
176
|
+
async createConfig(data) {
|
|
177
|
+
return (0, client_1.apiRequestWithData)('/roi/config', {
|
|
178
|
+
method: 'POST',
|
|
179
|
+
apiVersion: 'v3',
|
|
180
|
+
body: data,
|
|
181
|
+
});
|
|
182
|
+
},
|
|
183
|
+
/**
|
|
184
|
+
* Update ROI configuration (V3) - creates new version
|
|
185
|
+
*/
|
|
186
|
+
async updateConfig(data) {
|
|
187
|
+
return (0, client_1.apiRequestWithData)('/roi/config', {
|
|
188
|
+
method: 'PUT',
|
|
189
|
+
apiVersion: 'v3',
|
|
190
|
+
body: data,
|
|
191
|
+
});
|
|
192
|
+
},
|
|
193
|
+
/**
|
|
194
|
+
* List ROI config versions (V3)
|
|
195
|
+
*/
|
|
196
|
+
async configVersions(options) {
|
|
197
|
+
const params = new URLSearchParams();
|
|
198
|
+
if (options?.limit)
|
|
199
|
+
params.set('limit', options.limit.toString());
|
|
200
|
+
if (options?.offset)
|
|
201
|
+
params.set('offset', options.offset.toString());
|
|
202
|
+
return (0, client_1.apiRequestWithData)(`/roi/config/versions?${params.toString()}`, { apiVersion: 'v3' });
|
|
203
|
+
},
|
|
204
|
+
/**
|
|
205
|
+
* Calculate ROI using V3 configurable engine
|
|
206
|
+
*/
|
|
207
|
+
async calculateV3(options) {
|
|
208
|
+
return (0, client_1.apiRequestWithData)('/roi/calculate', {
|
|
209
|
+
method: 'POST',
|
|
210
|
+
apiVersion: 'v3',
|
|
211
|
+
body: {
|
|
212
|
+
...options,
|
|
213
|
+
startDate: new Date(options.startDate).toISOString(),
|
|
214
|
+
endDate: new Date(options.endDate).toISOString(),
|
|
215
|
+
},
|
|
216
|
+
});
|
|
217
|
+
},
|
|
218
|
+
/**
|
|
219
|
+
* Get ROI trend over time (V3)
|
|
220
|
+
*/
|
|
221
|
+
async trendV3(options) {
|
|
222
|
+
const params = new URLSearchParams();
|
|
223
|
+
if (options.agentId)
|
|
224
|
+
params.set('agentId', options.agentId);
|
|
225
|
+
params.set('granularity', options.granularity);
|
|
226
|
+
params.set('startDate', new Date(options.startDate).toISOString());
|
|
227
|
+
params.set('endDate', new Date(options.endDate).toISOString());
|
|
228
|
+
return (0, client_1.apiRequestWithData)(`/roi/trend?${params.toString()}`, { apiVersion: 'v3' });
|
|
229
|
+
},
|
|
167
230
|
};
|
|
168
231
|
// ============================================================================
|
|
169
232
|
// HELPER FUNCTIONS
|
|
@@ -201,4 +264,4 @@ function getROIQuality(totalFinancialImpact) {
|
|
|
201
264
|
return 'moderate';
|
|
202
265
|
return 'poor';
|
|
203
266
|
}
|
|
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
|
|
267
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicm9pLWFuYWx5dGljcy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvcm9pLWFuYWx5dGljcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7R0FJRzs7O0FBb2VILHdEQU1DO0FBS0QsZ0VBS0M7QUFLRCx3Q0FLQztBQUtELHNDQU9DO0FBeGdCRCwyQ0FBZ0U7QUE2SGhFLCtFQUErRTtBQUMvRSwyQkFBMkI7QUFDM0IsK0VBQStFO0FBRS9FOztHQUVHO0FBQ1UsUUFBQSxZQUFZLEdBQUc7SUFDMUI7Ozs7Ozs7Ozs7O09BV0c7SUFDSCxLQUFLLENBQUMsT0FBTyxDQUFDLFVBSVYsRUFBRTtRQUNKLE1BQU0sTUFBTSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7UUFDckMsSUFBSSxPQUFPLENBQUMsU0FBUyxFQUFFLENBQUM7WUFDdEIsTUFBTSxDQUFDLEdBQUcsQ0FBQyxXQUFXLEVBQUUsSUFBSSxJQUFJLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxDQUFDLFdBQVcsRUFBRSxDQUFDLENBQUM7UUFDckUsQ0FBQztRQUNELElBQUksT0FBTyxDQUFDLE9BQU8sRUFBRSxDQUFDO1lBQ3BCLE1BQU0sQ0FBQyxHQUFHLENBQUMsU0FBUyxFQUFFLElBQUksSUFBSSxDQUFDLE9BQU8sQ0FBQyxPQUFPLENBQUMsQ0FBQyxXQUFXLEVBQUUsQ0FBQyxDQUFDO1FBQ2pFLENBQUM7UUFDRCxJQUFJLE9BQU8sQ0FBQyxPQUFPLEVBQUUsQ0FBQztZQUNwQixNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUM7UUFDekMsQ0FBQztRQUVELE1BQU0sUUFBUSxHQUFHLE1BQU0sSUFBQSxtQkFBVSxFQUMvQiwwQkFBMEIsTUFBTSxDQUFDLFFBQVEsRUFBRSxFQUFFLEVBQzdDLEVBQUUsVUFBVSxFQUFFLElBQUksRUFBRSxDQUNyQixDQUFDO1FBQ0YsT0FBTyxRQUFRLENBQUMsSUFBSyxD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QUM7SUFDdEQsSUFBSSxvQkFBb0IsR0FBRyxLQUFLO1FBQUUsT0FBTyxNQUFNLENBQUM7SUFDaEQsSUFBSSxvQkFBb0IsR0FBRyxLQUFLO1FBQUUsT0FBTyxVQUFVLENBQUM7SUFDcEQsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhpbmtIaXZlIFNESyB2My4xIC0gUk9JIEFuYWx5dGljcyBBUElcbiAqXG4gKiBCdXNpbmVzcyBST0kgJiBNZXRyaWNzIEVuZ2luZSBmb3IgY2FsY3VsYXRpbmcgZmluYW5jaWFsIGltcGFjdFxuICovXG5cbmltcG9ydCB7IGFwaVJlcXVlc3QsIGFwaVJlcXVlc3RXaXRoRGF0YSB9IGZyb20gJy4uL2NvcmUvY2xpZW50JztcbmltcG9ydCB0eXBlIHsgQXBpUmVzcG9uc2UgfSBmcm9tICcuLi9jb3JlL3R5cGVzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVFlQRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBJbmR1c3RyeS1zcGVjaWZpYyBST0kgY29uZmlndXJhdGlvblxuICovXG5leHBvcnQgaW50ZXJmYWNlIEluZHVzdHJ5Q29uZmlnIHtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBhdmdUcmFuc2FjdGlvblZhbHVlOiBudW1iZXI7XG4gIGF2Z0N1c3RvbWVyTFRWOiBudW1iZXI7XG4gIGF2Z1N1cHBvcnRDb3N0OiBudW1iZXI7XG4gIGF2Z0VzY2FsYXRpb25Db3N0OiBudW1iZXI7XG4gIGF2Z1Jlc29sdXRpb25UaW1lOiBudW1iZXI7XG59XG5cbi8qKlxuICogQ3VzdG9tIGluZHVzdHJ5IGNvbmZpZyBpbnB1dFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEN1c3RvbUluZHVzdHJ5Q29uZmlnIHtcbiAgaW5kdXN0cnk/OiBzdHJpbmc7XG4gIGF2Z1RyYW5zYWN0aW9uVmFsdWU/OiBudW1iZXI7XG4gIGF2Z0N1c3RvbWVyTFRWPzogbnVtYmVyO1xuICBhdmdTdXBwb3J0Q29zdD86IG51bWJlcjtcbiAgYXZnRXNjYWxhdGlvbkNvc3Q/OiBudW1iZXI7XG4gIGNodXJuSW1wYWN0TXVsdGlwbGllcj86IG51bWJlcjtcbiAgYXZnUmVzb2x1dGlvblRpbWU/OiBudW1iZXI7XG59XG5cbi8qKlxuICogUk9JIG1ldHJpY3Mgc3VtbWFyeVxuICovXG5leHBvcnQgaW50ZXJmYWNlIFJPSU1ldHJpY3Mge1xuICByb2lDYXRlZ29yeTogc3RyaW5nO1xuICB0b3RhbEZpbmFuY2lhbEltcGFjdDogbnVtYmVyO1xuICByZXZlbnVlUHJvdGVjdGVkOiBudW1iZXI7XG4gIGNvc3RTYXZpbmdzOiBudW1iZXI7XG4gIGVmZmljaWVuY3lHYWluOiBudW1iZXI7XG59XG5cbi8qKlxuICogQnVzaW5lc3MgaW1wYWN0IGFuYWx5c2lzIHJlc3VsdFxuICovXG5leHBvcnQgaW50ZXJmYWNlIEJ1c2luZXNzSW1wYWN0IHtcbiAgaW1wYWN0U2NvcmU6IG51bWJlcjtcbiAgcmV2ZW51ZVJpc2s6IG51bWJlcjtcbiAgYnJhbmRSaXNrOiBudW1iZXI7XG4gIGNvbXBsaWFuY2VSaXNrOiBudW1iZXI7XG4gIG9wZXJhdGlvbmFsSW1wYWN0OiBudW1iZXI7XG4gIGN1c3RvbWVyU2F0aXNmYWN0aW9uOiBudW1iZXI7XG4gIHJlY29tbWVuZGF0aW9uczogc3RyaW5nW107XG4gIHJvaTogUk9JTWV0cmljcztcbn1cblxuLyoqXG4gKiBST0kgc3VtbWFyeSBmb3IgYSBkYXRlIHJhbmdlXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgUk9JU3VtbWFyeSB7XG4gIGRhdGVSYW5nZTogeyBzdGFydDogc3RyaW5nOyBlbmQ6IHN0cmluZyB9O1xuICB0cmFjZUNvdW50OiBudW1iZXI7XG4gIHN1Y2Nlc3NmdWxJbnRlcmFjdGlvbnM6IG51bWJlcjtcbiAgZmFpbGVkSW50ZXJhY3Rpb25zOiBudW1iZXI7XG4gIHN1Y2Nlc3NSYXRlOiBudW1iZXI7XG4gIHJvaTogUk9JTWV0cmljcztcbiAgcmV2ZW51ZVByb3RlY3RlZDogbnVtYmVyO1xuICBlc3RpbWF0ZWRTYXZpbmdzOiBudW1iZXI7XG59XG5cbi8qKlxuICogRGFpbHkgdHJlbmQgZGF0YSBwb2ludFxuICovXG5leHBvcnQgaW50ZXJmYWNlIFRyZW5kRGF0YVBvaW50IHtcbiAgZGF0ZTogc3RyaW5nO1xuICB0cmFjZUNvdW50OiBudW1iZXI7XG4gIHN1Y2Nlc3NDb3VudDogbnVtYmVyO1xuICBmYWlsdXJlQ291bnQ6IG51bWJlcjtcbiAgc3VjY2Vzc1JhdGU6IG51bWJlcjtcbiAgYXZnSW1wYWN0U2NvcmU6IG51bWJlcjtcbn1cblxuLyoqXG4gKiBDb3JyZWxhdGlvbiBmaW5kaW5nXG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29ycmVsYXRpb24ge1xuICB0eXBlOiBzdHJpbmc7XG4gIHN0cmVuZ3RoOiBzdHJpbmc7XG4gIGNvZWZmaWNpZW50OiBudW1iZXI7XG4gIGNvbmZpZGVuY2U6IG51bWJlcjtcbiAgZGVzY3JpcHRpb246IHN0cmluZztcbiAgaW5zaWdodDogc3RyaW5nO1xuICByZWNvbW1lbmRhdGlvbjogc3RyaW5nO1xufVxuXG4vKipcbiAqIFBhdHRlcm4gY2x1c3RlclxuICovXG5leHBvcnQgaW50ZXJmYWNlIFBhdHRlcm5DbHVzdGVyIHtcbiAgaWQ6IHN0cmluZztcbiAgbmFtZTogc3RyaW5nO1xuICBtYXRjaENvdW50OiBudW1iZXI7XG4gIGF2Z0ltcGFjdFNjb3JlOiBudW1iZXI7XG4gIGF2Z0NodXJuUmlzazogbnVtYmVyO1xuICB0cmVuZDogc3RyaW5nO1xuICBleGFtcGxlczogc3RyaW5nW107XG59XG5cbi8qKlxuICogQ29ycmVsYXRpb24gYW5hbHlzaXMgcmVzdWx0XG4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29ycmVsYXRpb25BbmFseXNpcyB7XG4gIGFuYWx5c2lzSWQ6IHN0cmluZztcbiAgYW5hbHl6ZWRBdDogc3RyaW5nO1xuICB0cmFjZUNvdW50OiBudW1iZXI7XG4gIHRpbWVSYW5nZTogeyBzdGFydDogc3RyaW5nOyBlbmQ6IHN0cmluZyB9O1xuICBvdmVyYWxsSGVhbHRoU2NvcmU6IG51bWJlcjtcbiAgdG9wSW5zaWdodHM6IHN0cmluZ1tdO1xuICByZWNvbW1lbmRhdGlvbnM6IHN0cmluZ1tdO1xuICBjb3JyZWxhdGlvbnM6IENvcnJlbGF0aW9uW107XG4gIHBhdHRlcm5DbHVzdGVyczogUGF0dGVybkNsdXN0ZXJbXTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUk9JIEFOQUxZVElDUyBBUEkgQ0xJRU5UXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogUk9JIEFuYWx5dGljcyBBUEkgY2xpZW50IGZvciBidXNpbmVzcyBpbXBhY3QgYW5hbHlzaXNcbiAqL1xuZXhwb3J0IGNvbnN0IHJvaUFuYWx5dGljcyA9IHtcbiAgLyoqXG4gICAqIEdldCBhZ2dyZWdhdGVkIFJPSSBzdW1tYXJ5IGZvciB0cmFjZXMgaW4gZGF0ZSByYW5nZVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIGNvbnN0IHN1bW1hcnkgPSBhd2FpdCByb2lBbmFseXRpY3Muc3VtbWFyeSh7XG4gICAqICAgc3RhcnREYXRlOiAnMjAyNC0wMS0wMScsXG4gICAqICAgZW5kRGF0ZTogJzIwMjQtMDEtMzEnLFxuICAgKiB9KTtcbiAgICogY29uc29sZS5sb2coYFJldmVudWUgcHJvdGVjdGVkOiAkJHtzdW1tYXJ5LnJldmVudWVQcm90ZWN0ZWR9YCk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgc3VtbWFyeShvcHRpb25zOiB7XG4gICAgc3RhcnREYXRlPzogc3RyaW5nIHwgRGF0ZTtcbiAgICBlbmREYXRlPzogc3RyaW5nIHwgRGF0ZTtcbiAgICBhZ2VudElkPzogc3RyaW5nO1xuICB9ID0ge30pOiBQcm9taXNlPFJPSVN1bW1hcnk+IHtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gICAgaWYgKG9wdGlvbnMuc3RhcnREYXRlKSB7XG4gICAgICBwYXJhbXMuc2V0KCdzdGFydERhdGUnLCBuZXcgRGF0ZShvcHRpb25zLnN0YXJ0RGF0ZSkudG9JU09TdHJpbmcoKSk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmVuZERhdGUpIHtcbiAgICAgIHBhcmFtcy5zZXQoJ2VuZERhdGUnLCBuZXcgRGF0ZShvcHRpb25zLmVuZERhdGUpLnRvSVNPU3RyaW5nKCkpO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5hZ2VudElkKSB7XG4gICAgICBwYXJhbXMuc2V0KCdhZ2VudElkJywgb3B0aW9ucy5hZ2VudElkKTtcbiAgICB9XG5cbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGFwaVJlcXVlc3Q8QXBpUmVzcG9uc2U8eyBzdW1tYXJ5OiBST0lTdW1tYXJ5IH0+PihcbiAgICAgIGAvYW5hbHl0aWNzL3JvaS9zdW1tYXJ5PyR7cGFyYW1zLnRvU3RyaW5nKCl9YCxcbiAgICAgIHsgYXBpVmVyc2lvbjogJ3YxJyB9XG4gICAgKTtcbiAgICByZXR1cm4gcmVzcG9uc2UuZGF0YSEuc3VtbWFyeTtcbiAgfSxcblxuICAvKipcbiAgICogR2V0IFJPSSBtZXRyaWNzIGZvciBhIHNwZWNpZmljIGFnZW50XG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgYWdlbnRST0kgPSBhd2FpdCByb2lBbmFseXRpY3MuYnlBZ2VudCgnYWdlbnRfMTIzJywge1xuICAgKiAgIHN0YXJ0RGF0ZTogJzIwMjQtMDEtMDEnLFxuICAgKiB9KTtcbiAgICogY29uc29sZS5sb2coYEFnZW50OiAke2FnZW50Uk9JLmFnZW50Lm5hbWV9YCk7XG4gICAqIGNvbnNvbGUubG9nKGBST0k6ICR7YWdlbnRST0kucm9pLnRvdGFsRmluYW5jaWFsSW1wYWN0fWApO1xuICAgKiBgYGBcbiAgICovXG4gIGFzeW5jIGJ5QWdlbnQoXG4gICAgYWdlbnRJZDogc3RyaW5nLFxuICAgIG9wdGlvbnM6IHtcbiAgICAgIHN0YXJ0RGF0ZT86IHN0cmluZyB8IERhdGU7XG4gICAgICBlbmREYXRlPzogc3RyaW5nIHwgRGF0ZTtcbiAgICB9ID0ge31cbiAgKTogUHJvbWlzZTx7XG4gICAgYWdlbnQ6IHsgaWQ6IHN0cmluZzsgbmFtZTogc3RyaW5nOyBpbmR1c3RyeTogc3RyaW5nIH07XG4gICAgaW5kdXN0cnlDb25maWc6IFBhcnRpYWw8SW5kdXN0cnlDb25maWc+O1xuICAgIHJvaTogUk9JTWV0cmljcztcbiAgICByZWNlbnRJbXBhY3RzOiBBcnJheTx7XG4gICAgICBpbXBhY3RTY29yZTogbnVtYmVyO1xuICAgICAgcmV2ZW51ZVJpc2s6IG51bWJlcjtcbiAgICAgIHJvaUNhdGVnb3J5OiBzdHJpbmc7XG4gICAgICB0b3RhbEZpbmFuY2lhbEltcGFjdDogbnVtYmVyO1xuICAgIH0+O1xuICB9PiB7XG4gICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuICAgIGlmIChvcHRpb25zLnN0YXJ0RGF0ZSkge1xuICAgICAgcGFyYW1zLnNldCgnc3RhcnREYXRlJywgbmV3IERhdGUob3B0aW9ucy5zdGFydERhdGUpLnRvSVNPU3RyaW5nKCkpO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5lbmREYXRlKSB7XG4gICAgICBwYXJhbXMuc2V0KCdlbmREYXRlJywgbmV3IERhdGUob3B0aW9ucy5lbmREYXRlKS50b0lTT1N0cmluZygpKTtcbiAgICB9XG5cbiAgICByZXR1cm4gYXBpUmVxdWVzdFdpdGhEYXRhKFxuICAgICAgYC9hbmFseXRpY3Mvcm9pL2J5LWFnZW50LyR7YWdlbnRJZH0/JHtwYXJhbXMudG9TdHJpbmcoKX1gLFxuICAgICAgeyBhcGlWZXJzaW9uOiAndjEnIH1cbiAgICApO1xuICB9LFxuXG4gIC8qKlxuICAgKiBHZXQgUk9JIHRyZW5kcyBvdmVyIHRpbWVcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCB0cmVuZHMgPSBhd2FpdCByb2lBbmFseXRpY3MudHJlbmRzKHtcbiAgICogICBzdGFydERhdGU6ICcyMDI0LTAxLTAxJyxcbiAgICogICBlbmREYXRlOiAnMjAyNC0wMS0zMScsXG4gICAqIH0pO1xuICAgKiBmb3IgKGNvbnN0IGRheSBvZiB0cmVuZHMpIHtcbiAgICogICBjb25zb2xlLmxvZyhgJHtkYXkuZGF0ZX06ICR7ZGF5LnN1Y2Nlc3NSYXRlfSUgc3VjY2Vzc2ApO1xuICAgKiB9XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgdHJlbmRzKG9wdGlvbnM6IHtcbiAgICBzdGFydERhdGU/OiBzdHJpbmcgfCBEYXRlO1xuICAgIGVuZERhdGU/OiBzdHJpbmcgfCBEYXRlO1xuICAgIGFnZW50SWQ/OiBzdHJpbmc7XG4gIH0gPSB7fSk6IFByb21pc2U8VHJlbmREYXRhUG9pbnRbXT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgICBpZiAob3B0aW9ucy5zdGFydERhdGUpIHtcbiAgICAgIHBhcmFtcy5zZXQoJ3N0YXJ0RGF0ZScsIG5ldyBEYXRlKG9wdGlvbnMuc3RhcnREYXRlKS50b0lTT1N0cmluZygpKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMuZW5kRGF0ZSkge1xuICAgICAgcGFyYW1zLnNldCgnZW5kRGF0ZScsIG5ldyBEYXRlKG9wdGlvbnMuZW5kRGF0ZSkudG9JU09TdHJpbmcoKSk7XG4gICAgfVxuICAgIGlmIChvcHRpb25zLmFnZW50SWQpIHtcbiAgICAgIHBhcmFtcy5zZXQoJ2FnZW50SWQnLCBvcHRpb25zLmFnZW50SWQpO1xuICAgIH1cblxuICAgIGNvbnN0IHJlc3BvbnNlID0gYXdhaXQgYXBpUmVxdWVzdDxBcGlSZXNwb25zZTx7IHRyZW5kczogVHJlbmREYXRhUG9pbnRbXSB9Pj4oXG4gICAgICBgL2FuYWx5dGljcy9yb2kvdHJlbmRzPyR7cGFyYW1zLnRvU3RyaW5nKCl9YCxcbiAgICAgIHsgYXBpVmVyc2lvbjogJ3YxJyB9XG4gICAgKTtcbiAgICByZXR1cm4gcmVzcG9uc2UuZGF0YSEudHJlbmRzO1xuICB9LFxuXG4gIC8qKlxuICAgKiBDYWxjdWxhdGUgUk9JIGZvciBhIHRyYWNlIG9yIHByb3ZpZGVkIG1lc3NhZ2UgZGF0YVxuICAgKlxuICAgKiBAZXhhbXBsZVxuICAgKiBgYGB0eXBlc2NyaXB0XG4gICAqIC8vIENhbGN1bGF0ZSBmb3IgZXhpc3RpbmcgdHJhY2VcbiAgICogY29uc3QgaW1wYWN0ID0gYXdhaXQgcm9pQW5hbHl0aWNzLmNhbGN1bGF0ZSh7XG4gICAqICAgdHJhY2VJZDogJ3RyYWNlX2FiYzEyMycsXG4gICAqIH0pO1xuICAgKlxuICAgKiAvLyBDYWxjdWxhdGUgZm9yIG5ldyBkYXRhIHdpdGggY3VzdG9tIGNvbmZpZ1xuICAgKiBjb25zdCBpbXBhY3QgPSBhd2FpdCByb2lBbmFseXRpY3MuY2FsY3VsYXRlKHtcbiAgICogICB1c2VyTWVzc2FnZTogJ0hlbHAgbWUgY2FuY2VsIG15IHN1YnNjcmlwdGlvbicsXG4gICAqICAgYWdlbnRSZXNwb25zZTogJ0kgY2FuIGhlbHAgd2l0aCB0aGF0Li4uJyxcbiAgICogICBpbmR1c3RyeUNvbmZpZzogeyBpbmR1c3RyeTogJ3NhYXMnLCBhdmdDdXN0b21lckxUVjogMTAwMDAgfSxcbiAgICogfSk7XG4gICAqIGBgYFxuICAgKi9cbiAgYXN5bmMgY2FsY3VsYXRlKG9wdGlvbnM6IHtcbiAgICB0cmFjZUlkPzogc3RyaW5nO1xuICAgIHVzZXJNZXNzYWdlPzogc3RyaW5nO1xuICAgIGFnZW50UmVzcG9uc2U/OiBzdHJpbmc7XG4gICAgaW5kdXN0cnlDb25maWc/OiBDdXN0b21JbmR1c3RyeUNvbmZpZztcbiAgfSk6IFByb21pc2U8QnVzaW5lc3NJbXBhY3Q+IHtcbiAgICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGFwaVJlcXVlc3Q8QXBpUmVzcG9uc2U8eyBpbXBhY3Q6IEJ1c2luZXNzSW1wYWN0IH0+PihcbiAgICAgICcvYW5hbHl0aWNzL3JvaS9jYWxjdWxhdGUnLFxuICAgICAge1xuICAgICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgICAgYm9keTogb3B0aW9ucyxcbiAgICAgICAgYXBpVmVyc2lvbjogJ3YxJyxcbiAgICAgIH1cbiAgICApO1xuICAgIHJldHVybiByZXNwb25zZS5kYXRhIS5pbXBhY3Q7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEdldCBhdmFpbGFibGUgaW5kdXN0cnkgY29uZmlndXJhdGlvbnNcbiAgICpcbiAgICogQGV4YW1wbGVcbiAgICogYGBgdHlwZXNjcmlwdFxuICAgKiBjb25zdCBpbmR1c3RyaWVzID0gYXdhaXQgcm9pQW5hbHl0aWNzLmluZHVzdHJpZXMoKTtcbiAgICogZm9yIChjb25zdCBjb25maWcgb2YgaW5kdXN0cmllcykge1xuICAgKiAgIGNvbnNvbGUubG9nKGAke2NvbmZpZy5uYW1lfTogJCR7Y29uZmlnLmF2Z0N1c3RvbWVyTFRWfSBMVFZgKTtcbiAgICogfVxuICAgKiBgYGBcbiAgICovXG4gIGFzeW5jIGluZHVzdHJpZXMoKTogUHJvbWlzZTxJbmR1c3RyeUNvbmZpZ1tdPiB7XG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBhcGlSZXF1ZXN0PEFwaVJlc3BvbnNlPHsgaW5kdXN0cmllczogSW5kdXN0cnlDb25maWdbXSB9Pj4oXG4gICAgICAnL2FuYWx5dGljcy9yb2kvaW5kdXN0cmllcycsXG4gICAgICB7IGFwaVZlcnNpb246ICd2MScgfVxuICAgICk7XG4gICAgcmV0dXJuIHJlc3BvbnNlLmRhdGEhLmluZHVzdHJpZXM7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEdldCBjb3JyZWxhdGlvbiBhbmFseXNpcyBmb3IgdHJhY2VzXG4gICAqXG4gICAqIEBleGFtcGxlXG4gICAqIGBgYHR5cGVzY3JpcHRcbiAgICogY29uc3QgYW5hbHlzaXMgPSBhd2FpdCByb2lBbmFseXRpY3MuY29ycmVsYXRpb25zKHtcbiAgICogICBzdGFydERhdGU6ICcyMDI0LTAxLTAxJyxcbiAgICogICBhZ2VudElkOiAnYWdlbnRfMTIzJyxcbiAgICogfSk7XG4gICAqIGNvbnNvbGUubG9nKGBIZWFsdGggc2NvcmU6ICR7YW5hbHlzaXMub3ZlcmFsbEhlYWx0aFNjb3JlfWApO1xuICAgKiBmb3IgKGNvbnN0IGluc2lnaHQgb2YgYW5hbHlzaXMudG9wSW5zaWdodHMpIHtcbiAgICogICBjb25zb2xlLmxvZyhgLSAke2luc2lnaHR9YCk7XG4gICAqIH1cbiAgICogYGBgXG4gICAqL1xuICBhc3luYyBjb3JyZWxhdGlvbnMob3B0aW9uczoge1xuICAgIHN0YXJ0RGF0ZT86IHN0cmluZyB8IERhdGU7XG4gICAgZW5kRGF0ZT86IHN0cmluZyB8IERhdGU7XG4gICAgYWdlbnRJZD86IHN0cmluZztcbiAgfSA9IHt9KTogUHJvbWlzZTxDb3JyZWxhdGlvbkFuYWx5c2lzPiB7XG4gICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuICAgIGlmIChvcHRpb25zLnN0YXJ0RGF0ZSkge1xuICAgICAgcGFyYW1zLnNldCgnc3RhcnREYXRlJywgbmV3IERhdGUob3B0aW9ucy5zdGFydERhdGUpLnRvSVNPU3RyaW5nKCkpO1xuICAgIH1cbiAgICBpZiAob3B0aW9ucy5lbmREYXRlKSB7XG4gICAgICBwYXJhbXMuc2V0KCdlbmREYXRlJywgbmV3IERhdGUob3B0aW9ucy5lbmREYXRlKS50b0lTT1N0cmluZygpKTtcbiAgICB9XG4gICAgaWYgKG9wdGlvbnMuYWdlbnRJZCkge1xuICAgICAgcGFyYW1zLnNldCgnYWdlbnRJZCcsIG9wdGlvbnMuYWdlbnRJZCk7XG4gICAgfVxuXG4gICAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBhcGlSZXF1ZXN0PEFwaVJlc3BvbnNlPHsgYW5hbHlzaXM6IENvcnJlbGF0aW9uQW5hbHlzaXMgfT4+KFxuICAgICAgYC9hbmFseXRpY3Mvcm9pL2NvcnJlbGF0aW9ucz8ke3BhcmFtcy50b1N0cmluZygpfWAsXG4gICAgICB7IGFwaVZlcnNpb246ICd2MScgfVxuICAgICk7XG4gICAgcmV0dXJuIHJlc3BvbnNlLmRhdGEhLmFuYWx5c2lzO1xuICB9LFxuXG4gIC8qKlxuICAgKiBHZXQgUk9JIGNvbmZpZ3VyYXRpb24gKFYzKVxuICAgKi9cbiAgYXN5bmMgZ2V0Q29uZmlnKCk6IFByb21pc2U8e1xuICAgIGlkOiBzdHJpbmc7XG4gICAgY29tcGFueUlkOiBzdHJpbmc7XG4gICAgdmVyc2lvbjogbnVtYmVyO1xuICAgIGlzQWN0aXZlOiBib29sZWFuO1xuICAgIGNvc3RDb25maWc6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIGRlZmxlY3Rpb25Db25maWc6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIHJlc29sdXRpb25Db25maWc6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIGF0dHJpYnV0aW9uQ29uZmlnOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICBzbGFDb25maWc6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIGRpc3BsYXlDb25maWc6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIGNyZWF0ZWRBdDogc3RyaW5nO1xuICAgIHVwZGF0ZWRBdDogc3RyaW5nO1xuICB9PiB7XG4gICAgcmV0dXJuIGFwaVJlcXVlc3RXaXRoRGF0YSgnL3JvaS9jb25maWcnLCB7IGFwaVZlcnNpb246ICd2MycgfSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIENyZWF0ZSBST0kgY29uZmlndXJhdGlvbiAoVjMpXG4gICAqL1xuICBhc3luYyBjcmVhdGVDb25maWcoZGF0YToge1xuICAgIGNvc3RDb25maWc/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICBkZWZsZWN0aW9uQ29uZmlnPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgcmVzb2x1dGlvbkNvbmZpZz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIGF0dHJpYnV0aW9uQ29uZmlnPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgc2xhQ29uZmlnPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgZGlzcGxheUNvbmZpZz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICB9KTogUHJvbWlzZTx7XG4gICAgaWQ6IHN0cmluZztcbiAgICBjb21wYW55SWQ6IHN0cmluZztcbiAgICB2ZXJzaW9uOiBudW1iZXI7XG4gICAgaXNBY3RpdmU6IGJvb2xlYW47XG4gICAgY29zdENvbmZpZzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgZGVmbGVjdGlvbkNvbmZpZzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgcmVzb2x1dGlvbkNvbmZpZzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgYXR0cmlidXRpb25Db25maWc6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIHNsYUNvbmZpZzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgZGlzcGxheUNvbmZpZzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgY3JlYXRlZEF0OiBzdHJpbmc7XG4gICAgdXBkYXRlZEF0OiBzdHJpbmc7XG4gIH0+IHtcbiAgICByZXR1cm4gYXBpUmVxdWVzdFdpdGhEYXRhKCcvcm9pL2NvbmZpZycsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYXBpVmVyc2lvbjogJ3YzJyxcbiAgICAgIGJvZHk6IGRhdGEsXG4gICAgfSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBST0kgY29uZmlndXJhdGlvbiAoVjMpIC0gY3JlYXRlcyBuZXcgdmVyc2lvblxuICAgKi9cbiAgYXN5bmMgdXBkYXRlQ29uZmlnKGRhdGE6IHtcbiAgICBjb3N0Q29uZmlnPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG4gICAgZGVmbGVjdGlvbkNvbmZpZz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIHJlc29sdXRpb25Db25maWc/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICBhdHRyaWJ1dGlvbkNvbmZpZz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIHNsYUNvbmZpZz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIGRpc3BsYXlDb25maWc/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgfSk6IFByb21pc2U8e1xuICAgIGlkOiBzdHJpbmc7XG4gICAgY29tcGFueUlkOiBzdHJpbmc7XG4gICAgdmVyc2lvbjogbnVtYmVyO1xuICAgIGlzQWN0aXZlOiBib29sZWFuO1xuICAgIGNvc3RDb25maWc6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIGRlZmxlY3Rpb25Db25maWc6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIHJlc29sdXRpb25Db25maWc6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIGF0dHJpYnV0aW9uQ29uZmlnOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbiAgICBzbGFDb25maWc6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIGRpc3BsYXlDb25maWc6IFJlY29yZDxzdHJpbmcsIHVua25vd24+O1xuICAgIGNyZWF0ZWRBdDogc3RyaW5nO1xuICAgIHVwZGF0ZWRBdDogc3RyaW5nO1xuICB9PiB7XG4gICAgcmV0dXJuIGFwaVJlcXVlc3RXaXRoRGF0YSgnL3JvaS9jb25maWcnLCB7XG4gICAgICBtZXRob2Q6ICdQVVQnLFxuICAgICAgYXBpVmVyc2lvbjogJ3YzJyxcbiAgICAgIGJvZHk6IGRhdGEsXG4gICAgfSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIExpc3QgUk9JIGNvbmZpZyB2ZXJzaW9ucyAoVjMpXG4gICAqL1xuICBhc3luYyBjb25maWdWZXJzaW9ucyhvcHRpb25zPzogeyBsaW1pdD86IG51bWJlcjsgb2Zmc2V0PzogbnVtYmVyIH0pOiBQcm9taXNlPHtcbiAgICBkYXRhOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPltdO1xuICAgIHBhZ2luYXRpb246IHsgbGltaXQ6IG51bWJlcjsgb2Zmc2V0OiBudW1iZXI7IGhhc01vcmU6IGJvb2xlYW4gfTtcbiAgfT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgICBpZiAob3B0aW9ucz8ubGltaXQpIHBhcmFtcy5zZXQoJ2xpbWl0Jywgb3B0aW9ucy5saW1pdC50b1N0cmluZygpKTtcbiAgICBpZiAob3B0aW9ucz8ub2Zmc2V0KSBwYXJhbXMuc2V0KCdvZmZzZXQnLCBvcHRpb25zLm9mZnNldC50b1N0cmluZygpKTtcbiAgICByZXR1cm4gYXBpUmVxdWVzdFdpdGhEYXRhKGAvcm9pL2NvbmZpZy92ZXJzaW9ucz8ke3BhcmFtcy50b1N0cmluZygpfWAsIHsgYXBpVmVyc2lvbjogJ3YzJyB9KTtcbiAgfSxcblxuICAvKipcbiAgICogQ2FsY3VsYXRlIFJPSSB1c2luZyBWMyBjb25maWd1cmFibGUgZW5naW5lXG4gICAqL1xuICBhc3luYyBjYWxjdWxhdGVWMyhvcHRpb25zOiB7XG4gICAgYWdlbnRJZD86IHN0cmluZztcbiAgICBzdGFydERhdGU6IHN0cmluZyB8IERhdGU7XG4gICAgZW5kRGF0ZTogc3RyaW5nIHwgRGF0ZTtcbiAgICBjb25maWd1cmF0aW9uVmVyc2lvbj86IG51bWJlcjtcbiAgICBpbmNsdWRlQnJlYWtkb3duPzogYm9vbGVhbjtcbiAgICBpbmNsdWRlQ29uZmlkZW5jZUludGVydmFscz86IGJvb2xlYW47XG4gIH0pOiBQcm9taXNlPFJlY29yZDxzdHJpbmcsIHVua25vd24+PiB7XG4gICAgcmV0dXJuIGFwaVJlcXVlc3RXaXRoRGF0YSgnL3JvaS9jYWxjdWxhdGUnLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGFwaVZlcnNpb246ICd2MycsXG4gICAgICBib2R5OiB7XG4gICAgICAgIC4uLm9wdGlvbnMsXG4gICAgICAgIHN0YXJ0RGF0ZTogbmV3IERhdGUob3B0aW9ucy5zdGFydERhdGUpLnRvSVNPU3RyaW5nKCksXG4gICAgICAgIGVuZERhdGU6IG5ldyBEYXRlKG9wdGlvbnMuZW5kRGF0ZSkudG9JU09TdHJpbmcoKSxcbiAgICAgIH0sXG4gICAgfSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEdldCBST0kgdHJlbmQgb3ZlciB0aW1lIChWMylcbiAgICovXG4gIGFzeW5jIHRyZW5kVjMob3B0aW9uczoge1xuICAgIGFnZW50SWQ/OiBzdHJpbmc7XG4gICAgZ3JhbnVsYXJpdHk6ICdkYXknIHwgJ3dlZWsnIHwgJ21vbnRoJztcbiAgICBzdGFydERhdGU6IHN0cmluZyB8IERhdGU7XG4gICAgZW5kRGF0ZTogc3RyaW5nIHwgRGF0ZTtcbiAgfSk6IFByb21pc2U8UmVjb3JkPHN0cmluZywgdW5rbm93bj4+IHtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gICAgaWYgKG9wdGlvbnMuYWdlbnRJZCkgcGFyYW1zLnNldCgnYWdlbnRJZCcsIG9wdGlvbnMuYWdlbnRJZCk7XG4gICAgcGFyYW1zLnNldCgnZ3JhbnVsYXJpdHknLCBvcHRpb25zLmdyYW51bGFyaXR5KTtcbiAgICBwYXJhbXMuc2V0KCdzdGFydERhdGUnLCBuZXcgRGF0ZShvcHRpb25zLnN0YXJ0RGF0ZSkudG9JU09TdHJpbmcoKSk7XG4gICAgcGFyYW1zLnNldCgnZW5kRGF0ZScsIG5ldyBEYXRlKG9wdGlvbnMuZW5kRGF0ZSkudG9JU09TdHJpbmcoKSk7XG4gICAgcmV0dXJuIGFwaVJlcXVlc3RXaXRoRGF0YShgL3JvaS90cmVuZD8ke3BhcmFtcy50b1N0cmluZygpfWAsIHsgYXBpVmVyc2lvbjogJ3YzJyB9KTtcbiAgfSxcbn07XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEhFTFBFUiBGVU5DVElPTlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBDYWxjdWxhdGUgZXN0aW1hdGVkIHJldmVudWUgYXQgcmlza1xuICovXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlUmV2ZW51ZUF0UmlzayhcbiAgZmFpbHVyZVJhdGU6IG51bWJlcixcbiAgYXZnVHJhbnNhY3Rpb25WYWx1ZTogbnVtYmVyLFxuICB0b3RhbEludGVyYWN0aW9uczogbnVtYmVyXG4pOiBudW1iZXIge1xuICByZXR1cm4gZmFpbHVyZVJhdGUgKiBhdmdUcmFuc2FjdGlvblZhbHVlICogdG90YWxJbnRlcmFjdGlvbnM7XG59XG5cbi8qKlxuICogQ2FsY3VsYXRlIGVzdGltYXRlZCBzYXZpbmdzIGZyb20gYXV0b21hdGlvblxuICovXG5leHBvcnQgZnVuY3Rpb24gY2FsY3VsYXRlQXV0b21hdGlvblNhdmluZ3MoXG4gIHN1Y2Nlc3NmdWxJbnRlcmFjdGlvbnM6IG51bWJlcixcbiAgYXZnU3VwcG9ydENvc3Q6IG51bWJlclxuKTogbnVtYmVyIHtcbiAgcmV0dXJuIHN1Y2Nlc3NmdWxJbnRlcmFjdGlvbnMgKiBhdmdTdXBwb3J0Q29zdDtcbn1cblxuLyoqXG4gKiBGb3JtYXQgY3VycmVuY3kgZm9yIGRpc3BsYXlcbiAqL1xuZXhwb3J0IGZ1bmN0aW9uIGZvcm1hdEN1cnJlbmN5KGFtb3VudDogbnVtYmVyLCBjdXJyZW5jeSA9ICdVU0QnKTogc3RyaW5nIHtcbiAgcmV0dXJuIG5ldyBJbnRsLk51bWJlckZvcm1hdCgnZW4tVVMnLCB7XG4gICAgc3R5bGU6ICdjdXJyZW5jeScsXG4gICAgY3VycmVuY3ksXG4gIH0pLmZvcm1hdChhbW91bnQpO1xufVxuXG4vKipcbiAqIEdldCBST0kgcXVhbGl0eSBsYWJlbFxuICovXG5leHBvcnQgZnVuY3Rpb24gZ2V0Uk9JUXVhbGl0eShcbiAgdG90YWxGaW5hbmNpYWxJbXBhY3Q6IG51bWJlclxuKTogJ2V4Y2VsbGVudCcgfCAnZ29vZCcgfCAnbW9kZXJhdGUnIHwgJ3Bvb3InIHtcbiAgaWYgKHRvdGFsRmluYW5jaWFsSW1wYWN0ID4gMTAwMDAwKSByZXR1cm4gJ2V4Y2VsbGVudCc7XG4gIGlmICh0b3RhbEZpbmFuY2lhbEltcGFjdCA+IDUwMDAwKSByZXR1cm4gJ2dvb2QnO1xuICBpZiAodG90YWxGaW5hbmNpYWxJbXBhY3QgPiAxMDAwMCkgcmV0dXJuICdtb2RlcmF0ZSc7XG4gIHJldHVybiAncG9vcic7XG59XG4iXX0=
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ThinkHive SDK - Sessions API
|
|
3
|
+
*
|
|
4
|
+
* Trace session grouping for multi-turn conversation tracking
|
|
5
|
+
*/
|
|
6
|
+
/** Options for listing sessions */
|
|
7
|
+
export interface ListSessionsOptions {
|
|
8
|
+
limit?: number;
|
|
9
|
+
offset?: number;
|
|
10
|
+
}
|
|
11
|
+
/** A trace session */
|
|
12
|
+
export interface Session {
|
|
13
|
+
sessionId: string;
|
|
14
|
+
agentId: string;
|
|
15
|
+
traceCount: number;
|
|
16
|
+
firstTraceAt: string;
|
|
17
|
+
lastTraceAt: string;
|
|
18
|
+
metadata?: Record<string, unknown>;
|
|
19
|
+
}
|
|
20
|
+
/** A trace within a session */
|
|
21
|
+
export interface SessionTrace {
|
|
22
|
+
id: string;
|
|
23
|
+
agentId: string;
|
|
24
|
+
sessionId: string;
|
|
25
|
+
input?: unknown;
|
|
26
|
+
output?: unknown;
|
|
27
|
+
status: string;
|
|
28
|
+
createdAt: string;
|
|
29
|
+
[key: string]: unknown;
|
|
30
|
+
}
|
|
31
|
+
/**
|
|
32
|
+
* Sessions API client for trace session grouping
|
|
33
|
+
*/
|
|
34
|
+
export declare const sessions: {
|
|
35
|
+
/**
|
|
36
|
+
* List sessions for an agent
|
|
37
|
+
*
|
|
38
|
+
* @param agentId - The agent ID
|
|
39
|
+
* @param opts - Pagination options
|
|
40
|
+
* @returns List of sessions
|
|
41
|
+
*/
|
|
42
|
+
list(agentId: string, opts?: ListSessionsOptions): Promise<{
|
|
43
|
+
sessions: Session[];
|
|
44
|
+
limit: number;
|
|
45
|
+
offset: number;
|
|
46
|
+
hasMore: boolean;
|
|
47
|
+
}>;
|
|
48
|
+
/**
|
|
49
|
+
* Get traces for a specific session
|
|
50
|
+
*
|
|
51
|
+
* @param sessionId - The session ID
|
|
52
|
+
* @param agentId - The agent ID
|
|
53
|
+
* @returns List of traces in the session
|
|
54
|
+
*/
|
|
55
|
+
getTraces(sessionId: string, agentId: string): Promise<SessionTrace[]>;
|
|
56
|
+
};
|
|
57
|
+
export { sessions as default };
|
|
@@ -0,0 +1,49 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ThinkHive SDK - Sessions API
|
|
4
|
+
*
|
|
5
|
+
* Trace session grouping for multi-turn conversation tracking
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.default = exports.sessions = void 0;
|
|
9
|
+
const client_1 = require("../core/client");
|
|
10
|
+
// ============================================================================
|
|
11
|
+
// SESSIONS API CLIENT
|
|
12
|
+
// ============================================================================
|
|
13
|
+
/**
|
|
14
|
+
* Sessions API client for trace session grouping
|
|
15
|
+
*/
|
|
16
|
+
exports.sessions = {
|
|
17
|
+
/**
|
|
18
|
+
* List sessions for an agent
|
|
19
|
+
*
|
|
20
|
+
* @param agentId - The agent ID
|
|
21
|
+
* @param opts - Pagination options
|
|
22
|
+
* @returns List of sessions
|
|
23
|
+
*/
|
|
24
|
+
async list(agentId, opts) {
|
|
25
|
+
const params = new URLSearchParams({ agentId });
|
|
26
|
+
if (opts?.limit !== undefined)
|
|
27
|
+
params.set('limit', String(opts.limit));
|
|
28
|
+
if (opts?.offset !== undefined)
|
|
29
|
+
params.set('offset', String(opts.offset));
|
|
30
|
+
return (0, client_1.apiRequestWithData)(`/traces/sessions?${params}`, {
|
|
31
|
+
apiVersion: 'none',
|
|
32
|
+
});
|
|
33
|
+
},
|
|
34
|
+
/**
|
|
35
|
+
* Get traces for a specific session
|
|
36
|
+
*
|
|
37
|
+
* @param sessionId - The session ID
|
|
38
|
+
* @param agentId - The agent ID
|
|
39
|
+
* @returns List of traces in the session
|
|
40
|
+
*/
|
|
41
|
+
async getTraces(sessionId, agentId) {
|
|
42
|
+
const params = new URLSearchParams({ agentId, sessionId });
|
|
43
|
+
return (0, client_1.apiRequestWithData)(`/traces?${params}`, {
|
|
44
|
+
apiVersion: 'none',
|
|
45
|
+
});
|
|
46
|
+
},
|
|
47
|
+
};
|
|
48
|
+
exports.default = exports.sessions;
|
|
49
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2Vzc2lvbnMuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi9zcmMvYXBpL3Nlc3Npb25zLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7OztHQUlHOzs7QUFFSCwyQ0FBb0Q7QUFrQ3BELCtFQUErRTtBQUMvRSxzQkFBc0I7QUFDdEIsK0VBQStFO0FBRS9FOztHQUVHO0FBQ1UsUUFBQSxRQUFRLEdBQUc7SUFDdEI7Ozs7OztPQU1HO0lBQ0gsS0FBSyxDQUFDLElBQUksQ0FBQyxPQUFlLEVBQUUsSUFBMEI7UUFNcEQsTUFBTSxNQUFNLEdBQUcsSUFBSSxlQUFlLENBQUMsRUFBRSxPQUFPLEVBQUUsQ0FBQyxDQUFDO1FBQ2hELElBQUksSUFBSSxFQUFFLEtBQUssS0FBSyxTQUFTO1lBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3ZFLElBQUksSUFBSSxFQUFFLE1BQU0sS0FBSyxTQUFTO1lBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBRTFFLE9BQU8sSUFBQSwyQkFBa0IsRUFBQyxvQkFBb0IsTUFBTSxFQUFFLEVBQUU7WUFDdEQsVUFBVSxFQUFFLE1BQU07U0FDbkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7Ozs7T0FNRztJQUNILEtBQUssQ0FBQyxTQUFTLENBQUMsU0FBaUIsRUFBRSxPQUFlO1FBQ2hELE1BQU0sTUFBTSxHQUFHLElBQUksZUFBZSxDQUFDLEVBQUUsT0FBTyxFQUFFLFNBQVMsRUFBRSxDQUFDLENBQUM7UUFDM0QsT0FBTyxJQUFBLDJCQUFrQixFQUFpQixXQUFXLE1BQU0sRUFBRSxFQUFFO1lBQzdELFVBQVUsRUFBRSxNQUFNO1NBQ25CLENBQUMsQ0FBQztJQUNMLENBQUM7Q0FDRixDQUFDO0FBRW1CLGtCQXRDUixnQkFBUSxDQXNDTyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhpbmtIaXZlIFNESyAtIFNlc3Npb25zIEFQSVxuICpcbiAqIFRyYWNlIHNlc3Npb24gZ3JvdXBpbmcgZm9yIG11bHRpLXR1cm4gY29udmVyc2F0aW9uIHRyYWNraW5nXG4gKi9cblxuaW1wb3J0IHsgYXBpUmVxdWVzdFdpdGhEYXRhIH0gZnJvbSAnLi4vY29yZS9jbGllbnQnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBUWVBFU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKiogT3B0aW9ucyBmb3IgbGlzdGluZyBzZXNzaW9ucyAqL1xuZXhwb3J0IGludGVyZmFjZSBMaXN0U2Vzc2lvbnNPcHRpb25zIHtcbiAgbGltaXQ/OiBudW1iZXI7XG4gIG9mZnNldD86IG51bWJlcjtcbn1cblxuLyoqIEEgdHJhY2Ugc2Vzc2lvbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXNzaW9uIHtcbiAgc2Vzc2lvbklkOiBzdHJpbmc7XG4gIGFnZW50SWQ6IHN0cmluZztcbiAgdHJhY2VDb3VudDogbnVtYmVyO1xuICBmaXJzdFRyYWNlQXQ6IHN0cmluZztcbiAgbGFzdFRyYWNlQXQ6IHN0cmluZztcbiAgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuLyoqIEEgdHJhY2Ugd2l0aGluIGEgc2Vzc2lvbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTZXNzaW9uVHJhY2Uge1xuICBpZDogc3RyaW5nO1xuICBhZ2VudElkOiBzdHJpbmc7XG4gIHNlc3Npb25JZDogc3RyaW5nO1xuICBpbnB1dD86IHVua25vd247XG4gIG91dHB1dD86IHVua25vd247XG4gIHN0YXR1czogc3RyaW5nO1xuICBjcmVhdGVkQXQ6IHN0cmluZztcbiAgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gU0VTU0lPTlMgQVBJIENMSUVOVFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFNlc3Npb25zIEFQSSBjbGllbnQgZm9yIHRyYWNlIHNlc3Npb24gZ3JvdXBpbmdcbiAqL1xuZXhwb3J0IGNvbnN0IHNlc3Npb25zID0ge1xuICAvKipcbiAgICogTGlzdCBzZXNzaW9ucyBmb3IgYW4gYWdlbnRcbiAgICpcbiAgICogQHBhcmFtIGFnZW50SWQgLSBUaGUgYWdlbnQgSURcbiAgICogQHBhcmFtIG9wdHMgLSBQYWdpbmF0aW9uIG9wdGlvbnNcbiAgICogQHJldHVybnMgTGlzdCBvZiBzZXNzaW9uc1xuICAgKi9cbiAgYXN5bmMgbGlzdChhZ2VudElkOiBzdHJpbmcsIG9wdHM/OiBMaXN0U2Vzc2lvbnNPcHRpb25zKTogUHJvbWlzZTx7XG4gICAgc2Vzc2lvbnM6IFNlc3Npb25bXTtcbiAgICBsaW1pdDogbnVtYmVyO1xuICAgIG9mZnNldDogbnVtYmVyO1xuICAgIGhhc01vcmU6IGJvb2xlYW47XG4gIH0+IHtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHsgYWdlbnRJZCB9KTtcbiAgICBpZiAob3B0cz8ubGltaXQgIT09IHVuZGVmaW5lZCkgcGFyYW1zLnNldCgnbGltaXQnLCBTdHJpbmcob3B0cy5saW1pdCkpO1xuICAgIGlmIChvcHRzPy5vZmZzZXQgIT09IHVuZGVmaW5lZCkgcGFyYW1zLnNldCgnb2Zmc2V0JywgU3RyaW5nKG9wdHMub2Zmc2V0KSk7XG5cbiAgICByZXR1cm4gYXBpUmVxdWVzdFdpdGhEYXRhKGAvdHJhY2VzL3Nlc3Npb25zPyR7cGFyYW1zfWAsIHtcbiAgICAgIGFwaVZlcnNpb246ICdub25lJyxcbiAgICB9KTtcbiAgfSxcblxuICAvKipcbiAgICogR2V0IHRyYWNlcyBmb3IgYSBzcGVjaWZpYyBzZXNzaW9uXG4gICAqXG4gICAqIEBwYXJhbSBzZXNzaW9uSWQgLSBUaGUgc2Vzc2lvbiBJRFxuICAgKiBAcGFyYW0gYWdlbnRJZCAtIFRoZSBhZ2VudCBJRFxuICAgKiBAcmV0dXJucyBMaXN0IG9mIHRyYWNlcyBpbiB0aGUgc2Vzc2lvblxuICAgKi9cbiAgYXN5bmMgZ2V0VHJhY2VzKHNlc3Npb25JZDogc3RyaW5nLCBhZ2VudElkOiBzdHJpbmcpOiBQcm9taXNlPFNlc3Npb25UcmFjZVtdPiB7XG4gICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh7IGFnZW50SWQsIHNlc3Npb25JZCB9KTtcbiAgICByZXR1cm4gYXBpUmVxdWVzdFdpdGhEYXRhPFNlc3Npb25UcmFjZVtdPihgL3RyYWNlcz8ke3BhcmFtc31gLCB7XG4gICAgICBhcGlWZXJzaW9uOiAnbm9uZScsXG4gICAgfSk7XG4gIH0sXG59O1xuXG5leHBvcnQgeyBzZXNzaW9ucyBhcyBkZWZhdWx0IH07XG4iXX0=
|
|
@@ -0,0 +1,78 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ThinkHive SDK - Shadow Tests API
|
|
3
|
+
*
|
|
4
|
+
* Shadow test execution for validating proposed fixes
|
|
5
|
+
*/
|
|
6
|
+
/** Data for creating a shadow test */
|
|
7
|
+
export interface CreateShadowTestData {
|
|
8
|
+
fixId: string;
|
|
9
|
+
agentId: string;
|
|
10
|
+
testName: string;
|
|
11
|
+
inputData: unknown;
|
|
12
|
+
expectedOutput: unknown;
|
|
13
|
+
}
|
|
14
|
+
/** Data for updating a shadow test */
|
|
15
|
+
export interface UpdateShadowTestData {
|
|
16
|
+
testName?: string;
|
|
17
|
+
status?: string;
|
|
18
|
+
actualOutput?: unknown;
|
|
19
|
+
passed?: boolean;
|
|
20
|
+
metadata?: Record<string, unknown>;
|
|
21
|
+
}
|
|
22
|
+
/** A shadow test record */
|
|
23
|
+
export interface ShadowTest {
|
|
24
|
+
id: string;
|
|
25
|
+
fixId: string;
|
|
26
|
+
agentId: string;
|
|
27
|
+
testName: string;
|
|
28
|
+
inputData: unknown;
|
|
29
|
+
expectedOutput: unknown;
|
|
30
|
+
actualOutput?: unknown;
|
|
31
|
+
status: string;
|
|
32
|
+
passed?: boolean;
|
|
33
|
+
createdAt: string;
|
|
34
|
+
completedAt?: string;
|
|
35
|
+
metadata?: Record<string, unknown>;
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Shadow tests API client for managing shadow test execution
|
|
39
|
+
*/
|
|
40
|
+
export declare const shadowTests: {
|
|
41
|
+
/**
|
|
42
|
+
* List shadow tests for an agent
|
|
43
|
+
*
|
|
44
|
+
* @param agentId - The agent ID
|
|
45
|
+
* @returns List of shadow tests
|
|
46
|
+
*/
|
|
47
|
+
list(agentId: string): Promise<ShadowTest[]>;
|
|
48
|
+
/**
|
|
49
|
+
* Get a shadow test by ID
|
|
50
|
+
*
|
|
51
|
+
* @param id - The shadow test ID
|
|
52
|
+
* @returns The shadow test details
|
|
53
|
+
*/
|
|
54
|
+
get(id: string): Promise<ShadowTest>;
|
|
55
|
+
/**
|
|
56
|
+
* Get shadow tests for a specific fix
|
|
57
|
+
*
|
|
58
|
+
* @param fixId - The fix ID
|
|
59
|
+
* @returns List of shadow tests for the fix
|
|
60
|
+
*/
|
|
61
|
+
getByFix(fixId: string): Promise<ShadowTest[]>;
|
|
62
|
+
/**
|
|
63
|
+
* Create a new shadow test
|
|
64
|
+
*
|
|
65
|
+
* @param data - Shadow test configuration
|
|
66
|
+
* @returns The created shadow test
|
|
67
|
+
*/
|
|
68
|
+
create(data: CreateShadowTestData): Promise<ShadowTest>;
|
|
69
|
+
/**
|
|
70
|
+
* Update a shadow test
|
|
71
|
+
*
|
|
72
|
+
* @param id - The shadow test ID to update
|
|
73
|
+
* @param data - Fields to update
|
|
74
|
+
* @returns The updated shadow test
|
|
75
|
+
*/
|
|
76
|
+
update(id: string, data: UpdateShadowTestData): Promise<ShadowTest>;
|
|
77
|
+
};
|
|
78
|
+
export { shadowTests as default };
|
|
@@ -0,0 +1,80 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ThinkHive SDK - Shadow Tests API
|
|
4
|
+
*
|
|
5
|
+
* Shadow test execution for validating proposed fixes
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.default = exports.shadowTests = void 0;
|
|
9
|
+
const client_1 = require("../core/client");
|
|
10
|
+
// ============================================================================
|
|
11
|
+
// SHADOW TESTS API CLIENT
|
|
12
|
+
// ============================================================================
|
|
13
|
+
/**
|
|
14
|
+
* Shadow tests API client for managing shadow test execution
|
|
15
|
+
*/
|
|
16
|
+
exports.shadowTests = {
|
|
17
|
+
/**
|
|
18
|
+
* List shadow tests for an agent
|
|
19
|
+
*
|
|
20
|
+
* @param agentId - The agent ID
|
|
21
|
+
* @returns List of shadow tests
|
|
22
|
+
*/
|
|
23
|
+
async list(agentId) {
|
|
24
|
+
const params = new URLSearchParams({ agentId });
|
|
25
|
+
return (0, client_1.apiRequestWithData)(`/shadow-tests?${params}`, {
|
|
26
|
+
apiVersion: 'none',
|
|
27
|
+
});
|
|
28
|
+
},
|
|
29
|
+
/**
|
|
30
|
+
* Get a shadow test by ID
|
|
31
|
+
*
|
|
32
|
+
* @param id - The shadow test ID
|
|
33
|
+
* @returns The shadow test details
|
|
34
|
+
*/
|
|
35
|
+
async get(id) {
|
|
36
|
+
return (0, client_1.apiRequestWithData)(`/shadow-tests/${id}`, {
|
|
37
|
+
apiVersion: 'none',
|
|
38
|
+
});
|
|
39
|
+
},
|
|
40
|
+
/**
|
|
41
|
+
* Get shadow tests for a specific fix
|
|
42
|
+
*
|
|
43
|
+
* @param fixId - The fix ID
|
|
44
|
+
* @returns List of shadow tests for the fix
|
|
45
|
+
*/
|
|
46
|
+
async getByFix(fixId) {
|
|
47
|
+
return (0, client_1.apiRequestWithData)(`/fixes/${fixId}/shadow-tests`, {
|
|
48
|
+
apiVersion: 'none',
|
|
49
|
+
});
|
|
50
|
+
},
|
|
51
|
+
/**
|
|
52
|
+
* Create a new shadow test
|
|
53
|
+
*
|
|
54
|
+
* @param data - Shadow test configuration
|
|
55
|
+
* @returns The created shadow test
|
|
56
|
+
*/
|
|
57
|
+
async create(data) {
|
|
58
|
+
return (0, client_1.apiRequestWithData)('/shadow-tests', {
|
|
59
|
+
method: 'POST',
|
|
60
|
+
body: data,
|
|
61
|
+
apiVersion: 'none',
|
|
62
|
+
});
|
|
63
|
+
},
|
|
64
|
+
/**
|
|
65
|
+
* Update a shadow test
|
|
66
|
+
*
|
|
67
|
+
* @param id - The shadow test ID to update
|
|
68
|
+
* @param data - Fields to update
|
|
69
|
+
* @returns The updated shadow test
|
|
70
|
+
*/
|
|
71
|
+
async update(id, data) {
|
|
72
|
+
return (0, client_1.apiRequestWithData)(`/shadow-tests/${id}`, {
|
|
73
|
+
method: 'PATCH',
|
|
74
|
+
body: data,
|
|
75
|
+
apiVersion: 'none',
|
|
76
|
+
});
|
|
77
|
+
},
|
|
78
|
+
};
|
|
79
|
+
exports.default = exports.shadowTests;
|
|
80
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2hhZG93LXRlc3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwaS9zaGFkb3ctdGVzdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7O0dBSUc7OztBQUVILDJDQUFvRDtBQXdDcEQsK0VBQStFO0FBQy9FLDBCQUEwQjtBQUMxQiwrRUFBK0U7QUFFL0U7O0dBRUc7QUFDVSxRQUFBLFdBQVcsR0FBRztJQUN6Qjs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQyxJQUFJLENBQUMsT0FBZTtRQUN4QixNQUFNLE1BQU0sR0FBRyxJQUFJLGVBQWUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDaEQsT0FBTyxJQUFBLDJCQUFrQixFQUFlLGlCQUFpQixNQUFNLEVBQUUsRUFBRTtZQUNqRSxVQUFVLEVBQUUsTUFBTTtTQUNuQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsR0FBRyxDQUFDLEVBQVU7UUFDbEIsT0FBTyxJQUFBLDJCQUFrQixFQUFhLGlCQUFpQixFQUFFLEVBQUUsRUFBRTtZQUMzRCxVQUFVLEVBQUUsTUFBTTtTQUNuQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsUUFBUSxDQUFDLEtBQWE7UUFDMUIsT0FBTyxJQUFBLDJCQUFrQixFQUFlLFVBQVUsS0FBSyxlQUFlLEVBQUU7WUFDdEUsVUFBVSxFQUFFLE1BQU07U0FDbkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLE1BQU0sQ0FBQyxJQUEwQjtRQUNyQyxPQUFPLElBQUEsMkJBQWtCLEVBQWEsZUFBZSxFQUFFO1lBQ3JELE1BQU0sRUFBRSxNQUFNO1lBQ2QsSUFBSSxFQUFFLElBQUk7WUFDVixVQUFVLEVBQUUsTUFBTTtTQUNuQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsS0FBSyxDQUFDLE1BQU0sQ0FBQyxFQUFVLEVBQUUsSUFBMEI7UUFDakQsT0FBTyxJQUFBLDJCQUFrQixFQUFhLGlCQUFpQixFQUFFLEVBQUUsRUFBRTtZQUMzRCxNQUFNLEVBQUUsT0FBTztZQUNmLElBQUksRUFBRSxJQUFJO1lBQ1YsVUFBVSxFQUFFLE1BQU07U0FDbkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGLENBQUM7QUFFc0Isa0JBcEVYLG1CQUFXLENBb0VPIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGlua0hpdmUgU0RLIC0gU2hhZG93IFRlc3RzIEFQSVxuICpcbiAqIFNoYWRvdyB0ZXN0IGV4ZWN1dGlvbiBmb3IgdmFsaWRhdGluZyBwcm9wb3NlZCBmaXhlc1xuICovXG5cbmltcG9ydCB7IGFwaVJlcXVlc3RXaXRoRGF0YSB9IGZyb20gJy4uL2NvcmUvY2xpZW50JztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVFlQRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIERhdGEgZm9yIGNyZWF0aW5nIGEgc2hhZG93IHRlc3QgKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ3JlYXRlU2hhZG93VGVzdERhdGEge1xuICBmaXhJZDogc3RyaW5nO1xuICBhZ2VudElkOiBzdHJpbmc7XG4gIHRlc3ROYW1lOiBzdHJpbmc7XG4gIGlucHV0RGF0YTogdW5rbm93bjtcbiAgZXhwZWN0ZWRPdXRwdXQ6IHVua25vd247XG59XG5cbi8qKiBEYXRhIGZvciB1cGRhdGluZyBhIHNoYWRvdyB0ZXN0ICovXG5leHBvcnQgaW50ZXJmYWNlIFVwZGF0ZVNoYWRvd1Rlc3REYXRhIHtcbiAgdGVzdE5hbWU/OiBzdHJpbmc7XG4gIHN0YXR1cz86IHN0cmluZztcbiAgYWN0dWFsT3V0cHV0PzogdW5rbm93bjtcbiAgcGFzc2VkPzogYm9vbGVhbjtcbiAgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuLyoqIEEgc2hhZG93IHRlc3QgcmVjb3JkICovXG5leHBvcnQgaW50ZXJmYWNlIFNoYWRvd1Rlc3Qge1xuICBpZDogc3RyaW5nO1xuICBmaXhJZDogc3RyaW5nO1xuICBhZ2VudElkOiBzdHJpbmc7XG4gIHRlc3ROYW1lOiBzdHJpbmc7XG4gIGlucHV0RGF0YTogdW5rbm93bjtcbiAgZXhwZWN0ZWRPdXRwdXQ6IHVua25vd247XG4gIGFjdHVhbE91dHB1dD86IHVua25vd247XG4gIHN0YXR1czogc3RyaW5nO1xuICBwYXNzZWQ/OiBib29sZWFuO1xuICBjcmVhdGVkQXQ6IHN0cmluZztcbiAgY29tcGxldGVkQXQ/OiBzdHJpbmc7XG4gIG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNIQURPVyBURVNUUyBBUEkgQ0xJRU5UXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogU2hhZG93IHRlc3RzIEFQSSBjbGllbnQgZm9yIG1hbmFnaW5nIHNoYWRvdyB0ZXN0IGV4ZWN1dGlvblxuICovXG5leHBvcnQgY29uc3Qgc2hhZG93VGVzdHMgPSB7XG4gIC8qKlxuICAgKiBMaXN0IHNoYWRvdyB0ZXN0cyBmb3IgYW4gYWdlbnRcbiAgICpcbiAgICogQHBhcmFtIGFnZW50SWQgLSBUaGUgYWdlbnQgSURcbiAgICogQHJldHVybnMgTGlzdCBvZiBzaGFkb3cgdGVzdHNcbiAgICovXG4gIGFzeW5jIGxpc3QoYWdlbnRJZDogc3RyaW5nKTogUHJvbWlzZTxTaGFkb3dUZXN0W10+IHtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKHsgYWdlbnRJZCB9KTtcbiAgICByZXR1cm4gYXBpUmVxdWVzdFdpdGhEYXRhPFNoYWRvd1Rlc3RbXT4oYC9zaGFkb3ctdGVzdHM/JHtwYXJhbXN9YCwge1xuICAgICAgYXBpVmVyc2lvbjogJ25vbmUnLFxuICAgIH0pO1xuICB9LFxuXG4gIC8qKlxuICAgKiBHZXQgYSBzaGFkb3cgdGVzdCBieSBJRFxuICAgKlxuICAgKiBAcGFyYW0gaWQgLSBUaGUgc2hhZG93IHRlc3QgSURcbiAgICogQHJldHVybnMgVGhlIHNoYWRvdyB0ZXN0IGRldGFpbHNcbiAgICovXG4gIGFzeW5jIGdldChpZDogc3RyaW5nKTogUHJvbWlzZTxTaGFkb3dUZXN0PiB7XG4gICAgcmV0dXJuIGFwaVJlcXVlc3RXaXRoRGF0YTxTaGFkb3dUZXN0PihgL3NoYWRvdy10ZXN0cy8ke2lkfWAsIHtcbiAgICAgIGFwaVZlcnNpb246ICdub25lJyxcbiAgICB9KTtcbiAgfSxcblxuICAvKipcbiAgICogR2V0IHNoYWRvdyB0ZXN0cyBmb3IgYSBzcGVjaWZpYyBmaXhcbiAgICpcbiAgICogQHBhcmFtIGZpeElkIC0gVGhlIGZpeCBJRFxuICAgKiBAcmV0dXJucyBMaXN0IG9mIHNoYWRvdyB0ZXN0cyBmb3IgdGhlIGZpeFxuICAgKi9cbiAgYXN5bmMgZ2V0QnlGaXgoZml4SWQ6IHN0cmluZyk6IFByb21pc2U8U2hhZG93VGVzdFtdPiB7XG4gICAgcmV0dXJuIGFwaVJlcXVlc3RXaXRoRGF0YTxTaGFkb3dUZXN0W10+KGAvZml4ZXMvJHtmaXhJZH0vc2hhZG93LXRlc3RzYCwge1xuICAgICAgYXBpVmVyc2lvbjogJ25vbmUnLFxuICAgIH0pO1xuICB9LFxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgc2hhZG93IHRlc3RcbiAgICpcbiAgICogQHBhcmFtIGRhdGEgLSBTaGFkb3cgdGVzdCBjb25maWd1cmF0aW9uXG4gICAqIEByZXR1cm5zIFRoZSBjcmVhdGVkIHNoYWRvdyB0ZXN0XG4gICAqL1xuICBhc3luYyBjcmVhdGUoZGF0YTogQ3JlYXRlU2hhZG93VGVzdERhdGEpOiBQcm9taXNlPFNoYWRvd1Rlc3Q+IHtcbiAgICByZXR1cm4gYXBpUmVxdWVzdFdpdGhEYXRhPFNoYWRvd1Rlc3Q+KCcvc2hhZG93LXRlc3RzJywge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiBkYXRhLFxuICAgICAgYXBpVmVyc2lvbjogJ25vbmUnLFxuICAgIH0pO1xuICB9LFxuXG4gIC8qKlxuICAgKiBVcGRhdGUgYSBzaGFkb3cgdGVzdFxuICAgKlxuICAgKiBAcGFyYW0gaWQgLSBUaGUgc2hhZG93IHRlc3QgSUQgdG8gdXBkYXRlXG4gICAqIEBwYXJhbSBkYXRhIC0gRmllbGRzIHRvIHVwZGF0ZVxuICAgKiBAcmV0dXJucyBUaGUgdXBkYXRlZCBzaGFkb3cgdGVzdFxuICAgKi9cbiAgYXN5bmMgdXBkYXRlKGlkOiBzdHJpbmcsIGRhdGE6IFVwZGF0ZVNoYWRvd1Rlc3REYXRhKTogUHJvbWlzZTxTaGFkb3dUZXN0PiB7XG4gICAgcmV0dXJuIGFwaVJlcXVlc3RXaXRoRGF0YTxTaGFkb3dUZXN0PihgL3NoYWRvdy10ZXN0cy8ke2lkfWAsIHtcbiAgICAgIG1ldGhvZDogJ1BBVENIJyxcbiAgICAgIGJvZHk6IGRhdGEsXG4gICAgICBhcGlWZXJzaW9uOiAnbm9uZScsXG4gICAgfSk7XG4gIH0sXG59O1xuXG5leHBvcnQgeyBzaGFkb3dUZXN0cyBhcyBkZWZhdWx0IH07XG4iXX0=
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ThinkHive SDK - Signals API
|
|
3
|
+
*
|
|
4
|
+
* Behavioral signal management for detecting patterns in agent interactions
|
|
5
|
+
*/
|
|
6
|
+
/** Signal detection configuration */
|
|
7
|
+
export interface DetectionConfig {
|
|
8
|
+
type: string;
|
|
9
|
+
threshold?: number;
|
|
10
|
+
pattern?: string;
|
|
11
|
+
[key: string]: unknown;
|
|
12
|
+
}
|
|
13
|
+
/** Options for creating a signal */
|
|
14
|
+
export interface CreateSignalOptions {
|
|
15
|
+
description?: string;
|
|
16
|
+
isEnabled?: boolean;
|
|
17
|
+
severity?: string;
|
|
18
|
+
}
|
|
19
|
+
/** Options for updating a signal */
|
|
20
|
+
export interface UpdateSignalOptions {
|
|
21
|
+
name?: string;
|
|
22
|
+
group?: string;
|
|
23
|
+
description?: string;
|
|
24
|
+
detectionConfig?: DetectionConfig;
|
|
25
|
+
isEnabled?: boolean;
|
|
26
|
+
severity?: string;
|
|
27
|
+
}
|
|
28
|
+
/** Options for listing signals */
|
|
29
|
+
export interface ListSignalsOptions {
|
|
30
|
+
group?: string;
|
|
31
|
+
source?: string;
|
|
32
|
+
isEnabled?: boolean;
|
|
33
|
+
}
|
|
34
|
+
/** Options for getting signal stats */
|
|
35
|
+
export interface SignalStatsOptions {
|
|
36
|
+
startDate?: string;
|
|
37
|
+
endDate?: string;
|
|
38
|
+
agentId?: string;
|
|
39
|
+
}
|
|
40
|
+
/** Options for getting signal trends */
|
|
41
|
+
export interface SignalTrendsOptions {
|
|
42
|
+
startDate?: string;
|
|
43
|
+
endDate?: string;
|
|
44
|
+
agentId?: string;
|
|
45
|
+
granularity?: 'hour' | 'day' | 'week' | 'month';
|
|
46
|
+
}
|
|
47
|
+
/** Options for getting signal traces */
|
|
48
|
+
export interface SignalTracesOptions {
|
|
49
|
+
limit?: number;
|
|
50
|
+
offset?: number;
|
|
51
|
+
startDate?: string;
|
|
52
|
+
endDate?: string;
|
|
53
|
+
agentId?: string;
|
|
54
|
+
}
|
|
55
|
+
/** Options for getting signal events */
|
|
56
|
+
export interface SignalEventsOptions {
|
|
57
|
+
limit?: number;
|
|
58
|
+
offset?: number;
|
|
59
|
+
}
|
|
60
|
+
/** A behavioral signal definition */
|
|
61
|
+
export interface Signal {
|
|
62
|
+
id: string;
|
|
63
|
+
name: string;
|
|
64
|
+
group: string;
|
|
65
|
+
description?: string;
|
|
66
|
+
detectionConfig: DetectionConfig;
|
|
67
|
+
isEnabled: boolean;
|
|
68
|
+
severity?: string;
|
|
69
|
+
source?: string;
|
|
70
|
+
createdAt: string;
|
|
71
|
+
updatedAt: string;
|
|
72
|
+
}
|
|
73
|
+
/** Signal statistics */
|
|
74
|
+
export interface SignalStats {
|
|
75
|
+
signalId: string;
|
|
76
|
+
name: string;
|
|
77
|
+
eventCount: number;
|
|
78
|
+
traceCount: number;
|
|
79
|
+
lastTriggeredAt?: string;
|
|
80
|
+
}
|
|
81
|
+
/** Signal trend data point */
|
|
82
|
+
export interface SignalTrendPoint {
|
|
83
|
+
period: string;
|
|
84
|
+
eventCount: number;
|
|
85
|
+
traceCount: number;
|
|
86
|
+
}
|
|
87
|
+
/** A signal event occurrence */
|
|
88
|
+
export interface SignalEvent {
|
|
89
|
+
id: string;
|
|
90
|
+
signalId: string;
|
|
91
|
+
traceId: string;
|
|
92
|
+
detectedAt: string;
|
|
93
|
+
metadata?: Record<string, unknown>;
|
|
94
|
+
}
|
|
95
|
+
/**
|
|
96
|
+
* Signals API client for managing behavioral signal detection
|
|
97
|
+
*/
|
|
98
|
+
export declare const signals: {
|
|
99
|
+
/**
|
|
100
|
+
* List all signals with optional filters
|
|
101
|
+
*
|
|
102
|
+
* @param opts - Filter options for group, source, or enabled status
|
|
103
|
+
* @returns List of signals
|
|
104
|
+
*/
|
|
105
|
+
list(opts?: ListSignalsOptions): Promise<Signal[]>;
|
|
106
|
+
/**
|
|
107
|
+
* Create a new behavioral signal
|
|
108
|
+
*
|
|
109
|
+
* @param name - Signal name
|
|
110
|
+
* @param group - Signal group/category
|
|
111
|
+
* @param detectionConfig - Detection configuration
|
|
112
|
+
* @param opts - Additional signal options
|
|
113
|
+
* @returns The created signal
|
|
114
|
+
*/
|
|
115
|
+
create(name: string, group: string, detectionConfig: DetectionConfig, opts?: CreateSignalOptions): Promise<Signal>;
|
|
116
|
+
/**
|
|
117
|
+
* Update an existing signal
|
|
118
|
+
*
|
|
119
|
+
* @param id - Signal ID to update
|
|
120
|
+
* @param opts - Fields to update
|
|
121
|
+
* @returns The updated signal
|
|
122
|
+
*/
|
|
123
|
+
update(id: string, opts: UpdateSignalOptions): Promise<Signal>;
|
|
124
|
+
/**
|
|
125
|
+
* Delete a signal
|
|
126
|
+
*
|
|
127
|
+
* @param id - Signal ID to delete
|
|
128
|
+
*/
|
|
129
|
+
remove(id: string): Promise<void>;
|
|
130
|
+
/**
|
|
131
|
+
* Seed default signal definitions
|
|
132
|
+
*
|
|
133
|
+
* @returns List of seeded signals
|
|
134
|
+
*/
|
|
135
|
+
seedDefaults(): Promise<Signal[]>;
|
|
136
|
+
/**
|
|
137
|
+
* Get signal statistics
|
|
138
|
+
*
|
|
139
|
+
* @param opts - Date range and agent filter options
|
|
140
|
+
* @returns Signal statistics
|
|
141
|
+
*/
|
|
142
|
+
getStats(opts?: SignalStatsOptions): Promise<SignalStats[]>;
|
|
143
|
+
/**
|
|
144
|
+
* Get signal trend data over time
|
|
145
|
+
*
|
|
146
|
+
* @param opts - Date range, agent, and granularity options
|
|
147
|
+
* @returns Signal trend data points
|
|
148
|
+
*/
|
|
149
|
+
getTrends(opts?: SignalTrendsOptions): Promise<SignalTrendPoint[]>;
|
|
150
|
+
/**
|
|
151
|
+
* Get traces that triggered a specific signal
|
|
152
|
+
*
|
|
153
|
+
* @param id - Signal ID
|
|
154
|
+
* @param opts - Pagination and filter options
|
|
155
|
+
* @returns Traces associated with the signal
|
|
156
|
+
*/
|
|
157
|
+
getTraces(id: string, opts?: SignalTracesOptions): Promise<{
|
|
158
|
+
traces: any[];
|
|
159
|
+
limit: number;
|
|
160
|
+
offset: number;
|
|
161
|
+
hasMore: boolean;
|
|
162
|
+
}>;
|
|
163
|
+
/**
|
|
164
|
+
* Get events for a specific signal
|
|
165
|
+
*
|
|
166
|
+
* @param id - Signal ID
|
|
167
|
+
* @param opts - Pagination options
|
|
168
|
+
* @returns Signal events
|
|
169
|
+
*/
|
|
170
|
+
getEvents(id: string, opts?: SignalEventsOptions): Promise<{
|
|
171
|
+
events: SignalEvent[];
|
|
172
|
+
limit: number;
|
|
173
|
+
offset: number;
|
|
174
|
+
hasMore: boolean;
|
|
175
|
+
}>;
|
|
176
|
+
};
|
|
177
|
+
export { signals as default };
|