@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
|
@@ -0,0 +1,172 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ThinkHive SDK - Signals API
|
|
4
|
+
*
|
|
5
|
+
* Behavioral signal management for detecting patterns in agent interactions
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.default = exports.signals = void 0;
|
|
9
|
+
const client_1 = require("../core/client");
|
|
10
|
+
// ============================================================================
|
|
11
|
+
// SIGNALS API CLIENT
|
|
12
|
+
// ============================================================================
|
|
13
|
+
/**
|
|
14
|
+
* Signals API client for managing behavioral signal detection
|
|
15
|
+
*/
|
|
16
|
+
exports.signals = {
|
|
17
|
+
/**
|
|
18
|
+
* List all signals with optional filters
|
|
19
|
+
*
|
|
20
|
+
* @param opts - Filter options for group, source, or enabled status
|
|
21
|
+
* @returns List of signals
|
|
22
|
+
*/
|
|
23
|
+
async list(opts) {
|
|
24
|
+
const params = new URLSearchParams();
|
|
25
|
+
if (opts?.group)
|
|
26
|
+
params.set('group', opts.group);
|
|
27
|
+
if (opts?.source)
|
|
28
|
+
params.set('source', opts.source);
|
|
29
|
+
if (opts?.isEnabled !== undefined)
|
|
30
|
+
params.set('isEnabled', String(opts.isEnabled));
|
|
31
|
+
const query = params.toString();
|
|
32
|
+
return (0, client_1.apiRequestWithData)(`/signals/${query ? `?${query}` : ''}`, {
|
|
33
|
+
apiVersion: 'v1',
|
|
34
|
+
});
|
|
35
|
+
},
|
|
36
|
+
/**
|
|
37
|
+
* Create a new behavioral signal
|
|
38
|
+
*
|
|
39
|
+
* @param name - Signal name
|
|
40
|
+
* @param group - Signal group/category
|
|
41
|
+
* @param detectionConfig - Detection configuration
|
|
42
|
+
* @param opts - Additional signal options
|
|
43
|
+
* @returns The created signal
|
|
44
|
+
*/
|
|
45
|
+
async create(name, group, detectionConfig, opts) {
|
|
46
|
+
return (0, client_1.apiRequestWithData)('/signals/', {
|
|
47
|
+
method: 'POST',
|
|
48
|
+
body: { name, group, detectionConfig, ...opts },
|
|
49
|
+
apiVersion: 'v1',
|
|
50
|
+
});
|
|
51
|
+
},
|
|
52
|
+
/**
|
|
53
|
+
* Update an existing signal
|
|
54
|
+
*
|
|
55
|
+
* @param id - Signal ID to update
|
|
56
|
+
* @param opts - Fields to update
|
|
57
|
+
* @returns The updated signal
|
|
58
|
+
*/
|
|
59
|
+
async update(id, opts) {
|
|
60
|
+
return (0, client_1.apiRequestWithData)(`/signals/${id}`, {
|
|
61
|
+
method: 'PUT',
|
|
62
|
+
body: opts,
|
|
63
|
+
apiVersion: 'v1',
|
|
64
|
+
});
|
|
65
|
+
},
|
|
66
|
+
/**
|
|
67
|
+
* Delete a signal
|
|
68
|
+
*
|
|
69
|
+
* @param id - Signal ID to delete
|
|
70
|
+
*/
|
|
71
|
+
async remove(id) {
|
|
72
|
+
return (0, client_1.apiRequest)(`/signals/${id}`, {
|
|
73
|
+
method: 'DELETE',
|
|
74
|
+
apiVersion: 'v1',
|
|
75
|
+
});
|
|
76
|
+
},
|
|
77
|
+
/**
|
|
78
|
+
* Seed default signal definitions
|
|
79
|
+
*
|
|
80
|
+
* @returns List of seeded signals
|
|
81
|
+
*/
|
|
82
|
+
async seedDefaults() {
|
|
83
|
+
return (0, client_1.apiRequestWithData)('/signals/seed', {
|
|
84
|
+
method: 'POST',
|
|
85
|
+
apiVersion: 'v1',
|
|
86
|
+
});
|
|
87
|
+
},
|
|
88
|
+
/**
|
|
89
|
+
* Get signal statistics
|
|
90
|
+
*
|
|
91
|
+
* @param opts - Date range and agent filter options
|
|
92
|
+
* @returns Signal statistics
|
|
93
|
+
*/
|
|
94
|
+
async getStats(opts) {
|
|
95
|
+
const params = new URLSearchParams();
|
|
96
|
+
if (opts?.startDate)
|
|
97
|
+
params.set('startDate', opts.startDate);
|
|
98
|
+
if (opts?.endDate)
|
|
99
|
+
params.set('endDate', opts.endDate);
|
|
100
|
+
if (opts?.agentId)
|
|
101
|
+
params.set('agentId', opts.agentId);
|
|
102
|
+
const query = params.toString();
|
|
103
|
+
return (0, client_1.apiRequestWithData)(`/signals/stats${query ? `?${query}` : ''}`, {
|
|
104
|
+
apiVersion: 'v1',
|
|
105
|
+
});
|
|
106
|
+
},
|
|
107
|
+
/**
|
|
108
|
+
* Get signal trend data over time
|
|
109
|
+
*
|
|
110
|
+
* @param opts - Date range, agent, and granularity options
|
|
111
|
+
* @returns Signal trend data points
|
|
112
|
+
*/
|
|
113
|
+
async getTrends(opts) {
|
|
114
|
+
const params = new URLSearchParams();
|
|
115
|
+
if (opts?.startDate)
|
|
116
|
+
params.set('startDate', opts.startDate);
|
|
117
|
+
if (opts?.endDate)
|
|
118
|
+
params.set('endDate', opts.endDate);
|
|
119
|
+
if (opts?.agentId)
|
|
120
|
+
params.set('agentId', opts.agentId);
|
|
121
|
+
if (opts?.granularity)
|
|
122
|
+
params.set('granularity', opts.granularity);
|
|
123
|
+
const query = params.toString();
|
|
124
|
+
return (0, client_1.apiRequestWithData)(`/signals/trends${query ? `?${query}` : ''}`, {
|
|
125
|
+
apiVersion: 'v1',
|
|
126
|
+
});
|
|
127
|
+
},
|
|
128
|
+
/**
|
|
129
|
+
* Get traces that triggered a specific signal
|
|
130
|
+
*
|
|
131
|
+
* @param id - Signal ID
|
|
132
|
+
* @param opts - Pagination and filter options
|
|
133
|
+
* @returns Traces associated with the signal
|
|
134
|
+
*/
|
|
135
|
+
async getTraces(id, opts) {
|
|
136
|
+
const params = new URLSearchParams();
|
|
137
|
+
if (opts?.limit !== undefined)
|
|
138
|
+
params.set('limit', String(opts.limit));
|
|
139
|
+
if (opts?.offset !== undefined)
|
|
140
|
+
params.set('offset', String(opts.offset));
|
|
141
|
+
if (opts?.startDate)
|
|
142
|
+
params.set('startDate', opts.startDate);
|
|
143
|
+
if (opts?.endDate)
|
|
144
|
+
params.set('endDate', opts.endDate);
|
|
145
|
+
if (opts?.agentId)
|
|
146
|
+
params.set('agentId', opts.agentId);
|
|
147
|
+
const query = params.toString();
|
|
148
|
+
return (0, client_1.apiRequestWithData)(`/signals/${id}/traces${query ? `?${query}` : ''}`, {
|
|
149
|
+
apiVersion: 'v1',
|
|
150
|
+
});
|
|
151
|
+
},
|
|
152
|
+
/**
|
|
153
|
+
* Get events for a specific signal
|
|
154
|
+
*
|
|
155
|
+
* @param id - Signal ID
|
|
156
|
+
* @param opts - Pagination options
|
|
157
|
+
* @returns Signal events
|
|
158
|
+
*/
|
|
159
|
+
async getEvents(id, opts) {
|
|
160
|
+
const params = new URLSearchParams();
|
|
161
|
+
if (opts?.limit !== undefined)
|
|
162
|
+
params.set('limit', String(opts.limit));
|
|
163
|
+
if (opts?.offset !== undefined)
|
|
164
|
+
params.set('offset', String(opts.offset));
|
|
165
|
+
const query = params.toString();
|
|
166
|
+
return (0, client_1.apiRequestWithData)(`/signals/${id}/events${query ? `?${query}` : ''}`, {
|
|
167
|
+
apiVersion: 'v1',
|
|
168
|
+
});
|
|
169
|
+
},
|
|
170
|
+
};
|
|
171
|
+
exports.default = exports.signals;
|
|
172
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic2lnbmFscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvc2lnbmFscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7R0FJRzs7O0FBRUgsMkNBQWdFO0FBMkdoRSwrRUFBK0U7QUFDL0UscUJBQXFCO0FBQ3JCLCtFQUErRTtBQUUvRTs7R0FFRztBQUNVLFFBQUEsT0FBTyxHQUFHO0lBQ3JCOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLElBQUksQ0FBQyxJQUF5QjtRQUNsQyxNQUFNLE1BQU0sR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQ3JDLElBQUksSUFBSSxFQUFFLEtBQUs7WUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUM7UUFDakQsSUFBSSxJQUFJLEVBQUUsTUFBTTtZQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUNwRCxJQUFJLElBQUksRUFBRSxTQUFTLEtBQUssU0FBUztZQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsV0FBVyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsU0FBUyxDQUFDLENBQUMsQ0FBQztRQUVuRixNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEMsT0FBTyxJQUFBLDJCQUFrQixFQUFXLFlBQVksS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRTtZQUMxRSxVQUFVLEVBQUUsSUFBSTtTQUNqQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7Ozs7O09BUUc7SUFDSCxLQUFLLENBQUMsTUFBTSxDQUNWLElBQVksRUFDWixLQUFhLEVBQ2IsZUFBZ0MsRUFDaEMsSUFBMEI7UUFFMUIsT0FBTyxJQUFBLDJCQUFrQixFQUFTLFdBQVcsRUFBRTtZQUM3QyxNQUFN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QUcsQ0FBQyxPQUFPLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxLQUFLLENBQUMsQ0FBQyxDQUFDO1FBQ3ZFLElBQUksSUFBSSxFQUFFLE1BQU0sS0FBSyxTQUFTO1lBQUUsTUFBTSxDQUFDLEdBQUcsQ0FBQyxRQUFRLEVBQUUsTUFBTSxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQyxDQUFDO1FBRTFFLE1BQU0sS0FBSyxHQUFHLE1BQU0sQ0FBQyxRQUFRLEVBQUUsQ0FBQztRQUNoQyxPQUFPLElBQUEsMkJBQWtCLEVBQUMsWUFBWSxFQUFFLFVBQVUsS0FBSyxDQUFDLENBQUMsQ0FBQyxJQUFJLEtBQUssRUFBRSxDQUFDLENBQUMsQ0FBQyxFQUFFLEVBQUUsRUFBRTtZQUM1RSxVQUFVLEVBQUUsSUFBSTtTQUNqQixDQUFDLENBQUM7SUFDTCxDQUFDO0NBQ0YsQ0FBQztBQUVrQixrQkF2S1AsZUFBTyxDQXVLTyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhpbmtIaXZlIFNESyAtIFNpZ25hbHMgQVBJXG4gKlxuICogQmVoYXZpb3JhbCBzaWduYWwgbWFuYWdlbWVudCBmb3IgZGV0ZWN0aW5nIHBhdHRlcm5zIGluIGFnZW50IGludGVyYWN0aW9uc1xuICovXG5cbmltcG9ydCB7IGFwaVJlcXVlc3QsIGFwaVJlcXVlc3RXaXRoRGF0YSB9IGZyb20gJy4uL2NvcmUvY2xpZW50JztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVFlQRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIFNpZ25hbCBkZXRlY3Rpb24gY29uZmlndXJhdGlvbiAqL1xuZXhwb3J0IGludGVyZmFjZSBEZXRlY3Rpb25Db25maWcge1xuICB0eXBlOiBzdHJpbmc7XG4gIHRocmVzaG9sZD86IG51bWJlcjtcbiAgcGF0dGVybj86IHN0cmluZztcbiAgW2tleTogc3RyaW5nXTogdW5rbm93bjtcbn1cblxuLyoqIE9wdGlvbnMgZm9yIGNyZWF0aW5nIGEgc2lnbmFsICovXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZVNpZ25hbE9wdGlvbnMge1xuICBkZXNjcmlwdGlvbj86IHN0cmluZztcbiAgaXNFbmFibGVkPzogYm9vbGVhbjtcbiAgc2V2ZXJpdHk/OiBzdHJpbmc7XG59XG5cbi8qKiBPcHRpb25zIGZvciB1cGRhdGluZyBhIHNpZ25hbCAqL1xuZXhwb3J0IGludGVyZmFjZSBVcGRhdGVTaWduYWxPcHRpb25zIHtcbiAgbmFtZT86IHN0cmluZztcbiAgZ3JvdXA/OiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBkZXRlY3Rpb25Db25maWc/OiBEZXRlY3Rpb25Db25maWc7XG4gIGlzRW5hYmxlZD86IGJvb2xlYW47XG4gIHNldmVyaXR5Pzogc3RyaW5nO1xufVxuXG4vKiogT3B0aW9ucyBmb3IgbGlzdGluZyBzaWduYWxzICovXG5leHBvcnQgaW50ZXJmYWNlIExpc3RTaWduYWxzT3B0aW9ucyB7XG4gIGdyb3VwPzogc3RyaW5nO1xuICBzb3VyY2U/OiBzdHJpbmc7XG4gIGlzRW5hYmxlZD86IGJvb2xlYW47XG59XG5cbi8qKiBPcHRpb25zIGZvciBnZXR0aW5nIHNpZ25hbCBzdGF0cyAqL1xuZXhwb3J0IGludGVyZmFjZSBTaWduYWxTdGF0c09wdGlvbnMge1xuICBzdGFydERhdGU/OiBzdHJpbmc7XG4gIGVuZERhdGU/OiBzdHJpbmc7XG4gIGFnZW50SWQ/OiBzdHJpbmc7XG59XG5cbi8qKiBPcHRpb25zIGZvciBnZXR0aW5nIHNpZ25hbCB0cmVuZHMgKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2lnbmFsVHJlbmRzT3B0aW9ucyB7XG4gIHN0YXJ0RGF0ZT86IHN0cmluZztcbiAgZW5kRGF0ZT86IHN0cmluZztcbiAgYWdlbnRJZD86IHN0cmluZztcbiAgZ3JhbnVsYXJpdHk/OiAnaG91cicgfCAnZGF5JyB8ICd3ZWVrJyB8ICdtb250aCc7XG59XG5cbi8qKiBPcHRpb25zIGZvciBnZXR0aW5nIHNpZ25hbCB0cmFjZXMgKi9cbmV4cG9ydCBpbnRlcmZhY2UgU2lnbmFsVHJhY2VzT3B0aW9ucyB7XG4gIGxpbWl0PzogbnVtYmVyO1xuICBvZmZzZXQ/OiBudW1iZXI7XG4gIHN0YXJ0RGF0ZT86IHN0cmluZztcbiAgZW5kRGF0ZT86IHN0cmluZztcbiAgYWdlbnRJZD86IHN0cmluZztcbn1cblxuLyoqIE9wdGlvbnMgZm9yIGdldHRpbmcgc2lnbmFsIGV2ZW50cyAqL1xuZXhwb3J0IGludGVyZmFjZSBTaWduYWxFdmVudHNPcHRpb25zIHtcbiAgbGltaXQ/OiBudW1iZXI7XG4gIG9mZnNldD86IG51bWJlcjtcbn1cblxuLyoqIEEgYmVoYXZpb3JhbCBzaWduYWwgZGVmaW5pdGlvbiAqL1xuZXhwb3J0IGludGVyZmFjZSBTaWduYWwge1xuICBpZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGdyb3VwOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uPzogc3RyaW5nO1xuICBkZXRlY3Rpb25Db25maWc6IERldGVjdGlvbkNvbmZpZztcbiAgaXNFbmFibGVkOiBib29sZWFuO1xuICBzZXZlcml0eT86IHN0cmluZztcbiAgc291cmNlPzogc3RyaW5nO1xuICBjcmVhdGVkQXQ6IHN0cmluZztcbiAgdXBkYXRlZEF0OiBzdHJpbmc7XG59XG5cbi8qKiBTaWduYWwgc3RhdGlzdGljcyAqL1xuZXhwb3J0IGludGVyZmFjZSBTaWduYWxTdGF0cyB7XG4gIHNpZ25hbElkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgZXZlbnRDb3VudDogbnVtYmVyO1xuICB0cmFjZUNvdW50OiBudW1iZXI7XG4gIGxhc3RUcmlnZ2VyZWRBdD86IHN0cmluZztcbn1cblxuLyoqIFNpZ25hbCB0cmVuZCBkYXRhIHBvaW50ICovXG5leHBvcnQgaW50ZXJmYWNlIFNpZ25hbFRyZW5kUG9pbnQge1xuICBwZXJpb2Q6IHN0cmluZztcbiAgZXZlbnRDb3VudDogbnVtYmVyO1xuICB0cmFjZUNvdW50OiBudW1iZXI7XG59XG5cbi8qKiBBIHNpZ25hbCBldmVudCBvY2N1cnJlbmNlICovXG5leHBvcnQgaW50ZXJmYWNlIFNpZ25hbEV2ZW50IHtcbiAgaWQ6IHN0cmluZztcbiAgc2lnbmFsSWQ6IHN0cmluZztcbiAgdHJhY2VJZDogc3RyaW5nO1xuICBkZXRlY3RlZEF0OiBzdHJpbmc7XG4gIG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFNJR05BTFMgQVBJIENMSUVOVFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIFNpZ25hbHMgQVBJIGNsaWVudCBmb3IgbWFuYWdpbmcgYmVoYXZpb3JhbCBzaWduYWwgZGV0ZWN0aW9uXG4gKi9cbmV4cG9ydCBjb25zdCBzaWduYWxzID0ge1xuICAvKipcbiAgICogTGlzdCBhbGwgc2lnbmFscyB3aXRoIG9wdGlvbmFsIGZpbHRlcnNcbiAgICpcbiAgICogQHBhcmFtIG9wdHMgLSBGaWx0ZXIgb3B0aW9ucyBmb3IgZ3JvdXAsIHNvdXJjZSwgb3IgZW5hYmxlZCBzdGF0dXNcbiAgICogQHJldHVybnMgTGlzdCBvZiBzaWduYWxzXG4gICAqL1xuICBhc3luYyBsaXN0KG9wdHM/OiBMaXN0U2lnbmFsc09wdGlvbnMpOiBQcm9taXNlPFNpZ25hbFtdPiB7XG4gICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuICAgIGlmIChvcHRzPy5ncm91cCkgcGFyYW1zLnNldCgnZ3JvdXAnLCBvcHRzLmdyb3VwKTtcbiAgICBpZiAob3B0cz8uc291cmNlKSBwYXJhbXMuc2V0KCdzb3VyY2UnLCBvcHRzLnNvdXJjZSk7XG4gICAgaWYgKG9wdHM/LmlzRW5hYmxlZCAhPT0gdW5kZWZpbmVkKSBwYXJhbXMuc2V0KCdpc0VuYWJsZWQnLCBTdHJpbmcob3B0cy5pc0VuYWJsZWQpKTtcblxuICAgIGNvbnN0IHF1ZXJ5ID0gcGFyYW1zLnRvU3RyaW5nKCk7XG4gICAgcmV0dXJuIGFwaVJlcXVlc3RXaXRoRGF0YTxTaWduYWxbXT4oYC9zaWduYWxzLyR7cXVlcnkgPyBgPyR7cXVlcnl9YCA6ICcnfWAsIHtcbiAgICAgIGFwaVZlcnNpb246ICd2MScsXG4gICAgfSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBiZWhhdmlvcmFsIHNpZ25hbFxuICAgKlxuICAgKiBAcGFyYW0gbmFtZSAtIFNpZ25hbCBuYW1lXG4gICAqIEBwYXJhbSBncm91cCAtIFNpZ25hbCBncm91cC9jYXRlZ29yeVxuICAgKiBAcGFyYW0gZGV0ZWN0aW9uQ29uZmlnIC0gRGV0ZWN0aW9uIGNvbmZpZ3VyYXRpb25cbiAgICogQHBhcmFtIG9wdHMgLSBBZGRpdGlvbmFsIHNpZ25hbCBvcHRpb25zXG4gICAqIEByZXR1cm5zIFRoZSBjcmVhdGVkIHNpZ25hbFxuICAgKi9cbiAgYXN5bmMgY3JlYXRlKFxuICAgIG5hbWU6IHN0cmluZyxcbiAgICBncm91cDogc3RyaW5nLFxuICAgIGRldGVjdGlvbkNvbmZpZzogRGV0ZWN0aW9uQ29uZmlnLFxuICAgIG9wdHM/OiBDcmVhdGVTaWduYWxPcHRpb25zXG4gICk6IFByb21pc2U8U2lnbmFsPiB7XG4gICAgcmV0dXJuIGFwaVJlcXVlc3RXaXRoRGF0YTxTaWduYWw+KCcvc2lnbmFscy8nLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IHsgbmFtZSwgZ3JvdXAsIGRldGVjdGlvbkNvbmZpZywgLi4ub3B0cyB9LFxuICAgICAgYXBpVmVyc2lvbjogJ3YxJyxcbiAgICB9KTtcbiAgfSxcblxuICAvKipcbiAgICogVXBkYXRlIGFuIGV4aXN0aW5nIHNpZ25hbFxuICAgKlxuICAgKiBAcGFyYW0gaWQgLSBTaWduYWwgSUQgdG8gdXBkYXRlXG4gICAqIEBwYXJhbSBvcHRzIC0gRmllbGRzIHRvIHVwZGF0ZVxuICAgKiBAcmV0dXJucyBUaGUgdXBkYXRlZCBzaWduYWxcbiAgICovXG4gIGFzeW5jIHVwZGF0ZShpZDogc3RyaW5nLCBvcHRzOiBVcGRhdGVTaWduYWxPcHRpb25zKTogUHJvbWlzZTxTaWduYWw+IHtcbiAgICByZXR1cm4gYXBpUmVxdWVzdFdpdGhEYXRhPFNpZ25hbD4oYC9zaWduYWxzLyR7aWR9YCwge1xuICAgICAgbWV0aG9kOiAnUFVUJyxcbiAgICAgIGJvZHk6IG9wdHMsXG4gICAgICBhcGlWZXJzaW9uOiAndjEnLFxuICAgIH0pO1xuICB9LFxuXG4gIC8qKlxuICAgKiBEZWxldGUgYSBzaWduYWxcbiAgICpcbiAgICogQHBhcmFtIGlkIC0gU2lnbmFsIElEIHRvIGRlbGV0ZVxuICAgKi9cbiAgYXN5bmMgcmVtb3ZlKGlkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gYXBpUmVxdWVzdDx2b2lkPihgL3NpZ25hbHMvJHtpZH1gLCB7XG4gICAgICBtZXRob2Q6ICdERUxFVEUnLFxuICAgICAgYXBpVmVyc2lvbjogJ3YxJyxcbiAgICB9KTtcbiAgfSxcblxuICAvKipcbiAgICogU2VlZCBkZWZhdWx0IHNpZ25hbCBkZWZpbml0aW9uc1xuICAgKlxuICAgKiBAcmV0dXJucyBMaXN0IG9mIHNlZWRlZCBzaWduYWxzXG4gICAqL1xuICBhc3luYyBzZWVkRGVmYXVsdHMoKTogUHJvbWlzZTxTaWduYWxbXT4ge1xuICAgIHJldHVybiBhcGlSZXF1ZXN0V2l0aERhdGE8U2lnbmFsW10+KCcvc2lnbmFscy9zZWVkJywge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBhcGlWZXJzaW9uOiAndjEnLFxuICAgIH0pO1xuICB9LFxuXG4gIC8qKlxuICAgKiBHZXQgc2lnbmFsIHN0YXRpc3RpY3NcbiAgICpcbiAgICogQHBhcmFtIG9wdHMgLSBEYXRlIHJhbmdlIGFuZCBhZ2VudCBmaWx0ZXIgb3B0aW9uc1xuICAgKiBAcmV0dXJucyBTaWduYWwgc3RhdGlzdGljc1xuICAgKi9cbiAgYXN5bmMgZ2V0U3RhdHMob3B0cz86IFNpZ25hbFN0YXRzT3B0aW9ucyk6IFByb21pc2U8U2lnbmFsU3RhdHNbXT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgICBpZiAob3B0cz8uc3RhcnREYXRlKSBwYXJhbXMuc2V0KCdzdGFydERhdGUnLCBvcHRzLnN0YXJ0RGF0ZSk7XG4gICAgaWYgKG9wdHM/LmVuZERhdGUpIHBhcmFtcy5zZXQoJ2VuZERhdGUnLCBvcHRzLmVuZERhdGUpO1xuICAgIGlmIChvcHRzPy5hZ2VudElkKSBwYXJhbXMuc2V0KCdhZ2VudElkJywgb3B0cy5hZ2VudElkKTtcblxuICAgIGNvbnN0IHF1ZXJ5ID0gcGFyYW1zLnRvU3RyaW5nKCk7XG4gICAgcmV0dXJuIGFwaVJlcXVlc3RXaXRoRGF0YTxTaWduYWxTdGF0c1tdPihgL3NpZ25hbHMvc3RhdHMke3F1ZXJ5ID8gYD8ke3F1ZXJ5fWAgOiAnJ31gLCB7XG4gICAgICBhcGlWZXJzaW9uOiAndjEnLFxuICAgIH0pO1xuICB9LFxuXG4gIC8qKlxuICAgKiBHZXQgc2lnbmFsIHRyZW5kIGRhdGEgb3ZlciB0aW1lXG4gICAqXG4gICAqIEBwYXJhbSBvcHRzIC0gRGF0ZSByYW5nZSwgYWdlbnQsIGFuZCBncmFudWxhcml0eSBvcHRpb25zXG4gICAqIEByZXR1cm5zIFNpZ25hbCB0cmVuZCBkYXRhIHBvaW50c1xuICAgKi9cbiAgYXN5bmMgZ2V0VHJlbmRzKG9wdHM/OiBTaWduYWxUcmVuZHNPcHRpb25zKTogUHJvbWlzZTxTaWduYWxUcmVuZFBvaW50W10+IHtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gICAgaWYgKG9wdHM/LnN0YXJ0RGF0ZSkgcGFyYW1zLnNldCgnc3RhcnREYXRlJywgb3B0cy5zdGFydERhdGUpO1xuICAgIGlmIChvcHRzPy5lbmREYXRlKSBwYXJhbXMuc2V0KCdlbmREYXRlJywgb3B0cy5lbmREYXRlKTtcbiAgICBpZiAob3B0cz8uYWdlbnRJZCkgcGFyYW1zLnNldCgnYWdlbnRJZCcsIG9wdHMuYWdlbnRJZCk7XG4gICAgaWYgKG9wdHM/LmdyYW51bGFyaXR5KSBwYXJhbXMuc2V0KCdncmFudWxhcml0eScsIG9wdHMuZ3JhbnVsYXJpdHkpO1xuXG4gICAgY29uc3QgcXVlcnkgPSBwYXJhbXMudG9TdHJpbmcoKTtcbiAgICByZXR1cm4gYXBpUmVxdWVzdFdpdGhEYXRhPFNpZ25hbFRyZW5kUG9pbnRbXT4oYC9zaWduYWxzL3RyZW5kcyR7cXVlcnkgPyBgPyR7cXVlcnl9YCA6ICcnfWAsIHtcbiAgICAgIGFwaVZlcnNpb246ICd2MScsXG4gICAgfSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEdldCB0cmFjZXMgdGhhdCB0cmlnZ2VyZWQgYSBzcGVjaWZpYyBzaWduYWxcbiAgICpcbiAgICogQHBhcmFtIGlkIC0gU2lnbmFsIElEXG4gICAqIEBwYXJhbSBvcHRzIC0gUGFnaW5hdGlvbiBhbmQgZmlsdGVyIG9wdGlvbnNcbiAgICogQHJldHVybnMgVHJhY2VzIGFzc29jaWF0ZWQgd2l0aCB0aGUgc2lnbmFsXG4gICAqL1xuICBhc3luYyBnZXRUcmFjZXMoaWQ6IHN0cmluZywgb3B0cz86IFNpZ25hbFRyYWNlc09wdGlvbnMpOiBQcm9taXNlPHtcbiAgICB0cmFjZXM6IGFueVtdO1xuICAgIGxpbWl0OiBudW1iZXI7XG4gICAgb2Zmc2V0OiBudW1iZXI7XG4gICAgaGFzTW9yZTogYm9vbGVhbjtcbiAgfT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgICBpZiAob3B0cz8ubGltaXQgIT09IHVuZGVmaW5lZCkgcGFyYW1zLnNldCgnbGltaXQnLCBTdHJpbmcob3B0cy5saW1pdCkpO1xuICAgIGlmIChvcHRzPy5vZmZzZXQgIT09IHVuZGVmaW5lZCkgcGFyYW1zLnNldCgnb2Zmc2V0JywgU3RyaW5nKG9wdHMub2Zmc2V0KSk7XG4gICAgaWYgKG9wdHM/LnN0YXJ0RGF0ZSkgcGFyYW1zLnNldCgnc3RhcnREYXRlJywgb3B0cy5zdGFydERhdGUpO1xuICAgIGlmIChvcHRzPy5lbmREYXRlKSBwYXJhbXMuc2V0KCdlbmREYXRlJywgb3B0cy5lbmREYXRlKTtcbiAgICBpZiAob3B0cz8uYWdlbnRJZCkgcGFyYW1zLnNldCgnYWdlbnRJZCcsIG9wdHMuYWdlbnRJZCk7XG5cbiAgICBjb25zdCBxdWVyeSA9IHBhcmFtcy50b1N0cmluZygpO1xuICAgIHJldHVybiBhcGlSZXF1ZXN0V2l0aERhdGEoYC9zaWduYWxzLyR7aWR9L3RyYWNlcyR7cXVlcnkgPyBgPyR7cXVlcnl9YCA6ICcnfWAsIHtcbiAgICAgIGFwaVZlcnNpb246ICd2MScsXG4gICAgfSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEdldCBldmVudHMgZm9yIGEgc3BlY2lmaWMgc2lnbmFsXG4gICAqXG4gICAqIEBwYXJhbSBpZCAtIFNpZ25hbCBJRFxuICAgKiBAcGFyYW0gb3B0cyAtIFBhZ2luYXRpb24gb3B0aW9uc1xuICAgKiBAcmV0dXJucyBTaWduYWwgZXZlbnRzXG4gICAqL1xuICBhc3luYyBnZXRFdmVudHMoaWQ6IHN0cmluZywgb3B0cz86IFNpZ25hbEV2ZW50c09wdGlvbnMpOiBQcm9taXNlPHtcbiAgICBldmVudHM6IFNpZ25hbEV2ZW50W107XG4gICAgbGltaXQ6IG51bWJlcjtcbiAgICBvZmZzZXQ6IG51bWJlcjtcbiAgICBoYXNNb3JlOiBib29sZWFuO1xuICB9PiB7XG4gICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuICAgIGlmIChvcHRzPy5saW1pdCAhPT0gdW5kZWZpbmVkKSBwYXJhbXMuc2V0KCdsaW1pdCcsIFN0cmluZyhvcHRzLmxpbWl0KSk7XG4gICAgaWYgKG9wdHM/Lm9mZnNldCAhPT0gdW5kZWZpbmVkKSBwYXJhbXMuc2V0KCdvZmZzZXQnLCBTdHJpbmcob3B0cy5vZmZzZXQpKTtcblxuICAgIGNvbnN0IHF1ZXJ5ID0gcGFyYW1zLnRvU3RyaW5nKCk7XG4gICAgcmV0dXJuIGFwaVJlcXVlc3RXaXRoRGF0YShgL3NpZ25hbHMvJHtpZH0vZXZlbnRzJHtxdWVyeSA/IGA/JHtxdWVyeX1gIDogJyd9YCwge1xuICAgICAgYXBpVmVyc2lvbjogJ3YxJyxcbiAgICB9KTtcbiAgfSxcbn07XG5cbmV4cG9ydCB7IHNpZ25hbHMgYXMgZGVmYXVsdCB9O1xuIl19
|
package/dist/core/client.d.ts
CHANGED
|
@@ -13,6 +13,8 @@ export interface RequestOptions {
|
|
|
13
13
|
maxRetries?: number;
|
|
14
14
|
/** Request timeout in milliseconds */
|
|
15
15
|
timeout?: number;
|
|
16
|
+
/** Use path as-is without prepending /api/ prefix (for routes like /v1/guardrails/scan) */
|
|
17
|
+
rawPath?: boolean;
|
|
16
18
|
}
|
|
17
19
|
/**
|
|
18
20
|
* Make an authenticated API request with retry logic
|
package/dist/core/client.js
CHANGED
|
@@ -37,9 +37,15 @@ function sleep(ms) {
|
|
|
37
37
|
*/
|
|
38
38
|
async function apiRequest(path, options = {}) {
|
|
39
39
|
const config = (0, config_1.getConfig)();
|
|
40
|
-
const { method = 'GET', body, headers = {}, apiVersion, maxRetries, timeout } = options;
|
|
41
|
-
|
|
42
|
-
|
|
40
|
+
const { method = 'GET', body, headers = {}, apiVersion, maxRetries, timeout, rawPath } = options;
|
|
41
|
+
let url;
|
|
42
|
+
if (rawPath) {
|
|
43
|
+
url = `${config.endpoint}${path}`;
|
|
44
|
+
}
|
|
45
|
+
else {
|
|
46
|
+
const version = apiVersion === 'none' ? '' : (apiVersion || '');
|
|
47
|
+
url = version ? `${config.endpoint}/api/${version}${path}` : `${config.endpoint}/api${path}`;
|
|
48
|
+
}
|
|
43
49
|
const retries = maxRetries ?? MAX_RETRIES;
|
|
44
50
|
const requestTimeout = timeout ?? 30000; // Default 30s
|
|
45
51
|
const requestHeaders = {
|
|
@@ -281,4 +287,4 @@ class IpWhitelistError extends ThinkHiveError {
|
|
|
281
287
|
}
|
|
282
288
|
}
|
|
283
289
|
exports.IpWhitelistError = IpWhitelistError;
|
|
284
|
-
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvcmUvY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7OztHQUlHOzs7QUFtREgsZ0NBcUpDO0FBS0QsZ0RBYUM7QUF4TkQscUNBQTREO0FBRzVELCtFQUErRTtBQUMvRSxzQkFBc0I7QUFDdEIsK0VBQStFO0FBRS9FLE1BQU0sV0FBVyxHQUFHLENBQUMsQ0FBQztBQUN0QixNQUFNLGVBQWUsR0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFLO0FBQ2xDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxDQUFDLEtBQUs7QUFDL0IsTUFBTSxlQUFlLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFFaEU7O0dBRUc7QUFDSCxTQUFTLGdCQUFnQixDQUFDLE9BQWUsRUFBRSxVQUFtQjtJQUM1RCxJQUFJLFVBQVUsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUM3QixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxHQUFHLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLHdCQUF3QjtJQUMzRSxDQUFDO0lBQ0QsTUFBTSxPQUFPLEdBQUcsZUFBZSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDeEMsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxLQUFLLENBQUMsRUFBVTtJQUN2QixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDM0QsQ0FBQztBQWtCRDs7R0FFRztBQUNJLEtB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RCxxQkFBcUIsRUFDckIsR0FBRyxFQUNILEVBQUUsVUFBVSxFQUFFLENBQ2YsQ0FBQztRQVBjLGVBQVUsR0FBVixVQUFVLENBQVE7UUFRbEMsSUFBSSxDQUFDLElBQUksR0FBRyxnQkFBZ0IsQ0FBQztJQUMvQixDQUFDO0NBQ0Y7QUFaRCx3Q0FZQztBQUVEOztHQUVHO0FBQ0gsTUFBYSxnQkFBaUIsU0FBUSxjQUFjO0lBQ2xELFlBQVksUUFBZ0I7UUFDMUIsS0FBSyxDQUNILHVEQUF1RCxFQUN2RCx3QkFBd0IsRUFDeEIsR0FBRyxFQUNILEVBQUUsUUFBUSxFQUFFLENBQ2IsQ0FBQztRQUNGLElBQUksQ0FBQyxJQUFJLEdBQUcsa0JBQWtCLENBQUM7SUFDakMsQ0FBQztDQUNGO0FBVkQsNENBVUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIFRoaW5rSGl2ZSBTREsgdjMuMCAtIEhUVFAgQ2xpZW50XG4gKlxuICogQ2VudHJhbGl6ZWQgSFRUUCBjbGllbnQgd2l0aCBhdXRoZW50aWNhdGlvbiBhbmQgZXJyb3IgaGFuZGxpbmdcbiAqL1xuXG5pbXBvcnQgeyBnZXRDb25maWcsIGRlYnVnTG9nLCBTREtfVkVSU0lPTiB9IGZyb20gJy4vY29uZmlnJztcbmltcG9ydCB0eXBlIHsgQXBpUmVzcG9uc2UgfSBmcm9tICcuL3R5cGVzJztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gUkVUUlkgQ09ORklHVVJBVElPTlxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5jb25zdCBNQVhfUkVUUklFUyA9IDM7XG5jb25zdCBJTklUSUFMX0JBQ0tPRkYgPSA1MDA7IC8vIG1zXG5jb25zdCBNQVhfQkFDS09GRiA9IDgwMDA7IC8vIG1zXG5jb25zdCBSRVRSWUFCTEVfQ09ERVMgPSBuZXcgU2V0KFs0MDgsIDQyOSwgNTAwLCA1MDIsIDUwMywgNTA0XSk7XG5cbi8qKlxuICogQ2FsY3VsYXRlIGJhY2tvZmYgdGltZSBmb3IgcmV0cnkgYXR0ZW1wdFxuICovXG5mdW5jdGlvbiBjYWxjdWxhdGVCYWNrb2ZmKGF0dGVtcHQ6IG51bWJlciwgcmV0cnlBZnRlcj86IG51bWJlcik6IG51bWJlciB7XG4gIGlmIChyZXRyeUFmdGVyICE9PSB1bmRlZmluZWQpIHtcbiAgICByZXR1cm4gTWF0aC5taW4ocmV0cnlBZnRlciAqIDEwMDAsIE1BWF9CQUNLT0ZGKTsgLy8gQ29udmVydCBzZWNvbmRzIHRvIG1zXG4gIH1cbiAgY29uc3QgYmFja29mZiA9IElOSVRJQUxfQkFDS09GRiAqIE1hdGgucG93KDIsIGF0dGVtcHQpO1xuICByZXR1cm4gTWF0aC5taW4oYmFja29mZiwgTUFYX0JBQ0tPRkYpO1xufVxuXG4vKipcbiAqIFNsZWVwIGZvciBhIGdpdmVuIG51bWJlciBvZiBtaWxsaXNlY29uZHNcbiAqL1xuZnVuY3Rpb24gc2xlZXAobXM6IG51bWJlcik6IFByb21pc2U8dm9pZD4ge1xuICByZXR1cm4gbmV3IFByb21pc2UoKHJlc29sdmUpID0+IHNldFRpbWVvdXQocmVzb2x2ZSwgbXMpKTtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gSFRUUCBDTElFTlRcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IGludGVyZmFjZSBSZXF1ZXN0T3B0aW9ucyB7XG4gIG1ldGhvZD86ICdHRVQnIHwgJ1BPU1QnIHwgJ1BVVCcgfCAnUEFUQ0gnIHwgJ0RFTEVURSc7XG4gIGJvZHk/OiB1bmtub3duO1xuICBoZWFkZXJzPzogUmVjb3JkPHN0cmluZywgc3RyaW5nPjtcbiAgLyoqIE92ZXJyaWRlIEFQSSB2ZXJzaW9uIGZvciB0aGlzIHJlcXVlc3QuIFVzZSAnbm9uZScgZm9yIHVudmVyc2lvbmVkIHJvdXRlcyAoZS5nLiwgL2FwaS9hZ2VudHMpLiAqL1xuICBhcGlWZXJzaW9uPzogJ3YxJyB8ICd2MicgfCAndjMnIHwgJ25vbmUnO1xuICAvKiogT3ZlcnJpZGUgbWF4IHJldHJpZXMgZm9yIHRoaXMgcmVxdWVzdCAqL1xuICBtYXhSZXRyaWVzPzogbnVtYmVyO1xuICAvKiogUmVxdWVzdCB0aW1lb3V0IGluIG1pbGxpc2Vjb25kcyAqL1xuICB0aW1lb3V0PzogbnVtYmVyO1xufVxuXG4vKipcbiAqIE1ha2UgYW4gYXV0aGVudGljYXRlZCBBUEkgcmVxdWVzdCB3aXRoIHJldHJ5IGxvZ2ljXG4gKi9cbmV4cG9ydCBhc3luYyBmdW5jdGlvbiBhcGlSZXF1ZXN0PFQ+KFxuICBwYXRoOiBzdHJpbmcsXG4gIG9wdGlvbnM6IFJlcXVlc3RPcHRpb25zID0ge31cbik6IFByb21pc2U8VD4ge1xuICBjb25zdCBjb25maWcgPSBnZXRDb25maWcoKTtcbiAgY29uc3QgeyBtZXRob2QgPSAnR0VUJywgYm9keSwgaGVhZGVycyA9IHt9LCBhcGlWZXJzaW9uLCBtYXhSZXRyaWVzLCB0aW1lb3V0IH0gPSBvcHRpb25zO1xuXG4gIGNvbnN0IHZlcnNpb24gPSBhcGlWZXJzaW9uID09PSAnbm9uZScgPyAnJyA6IChhcGlWZXJzaW9uIHx8ICcnKTtcbiAgY29uc3QgdXJsID0gdmVyc2lvbiA/IGAke2NvbmZpZy5lbmRwb2ludH0vYXBpLyR7dmVyc2lvbn0ke3BhdGh9YCA6IGAke2NvbmZpZy5lbmRwb2ludH0vYXBpJHtwYXRofWA7XG4gIGNvbnN0IHJldHJpZXMgPSBtYXhSZXRyaWVzID8/IE1BWF9SRVRSSUVTO1xuICBjb25zdCByZXF1ZXN0VGltZW91dCA9IHRpbWVvdXQgPz8gMzAwMDA7IC8vIERlZmF1bHQgMzBzXG5cbiAgY29uc3QgcmVxdWVzdEhlYWRlcnM6IFJlY29yZDxzdHJpbmcsIHN0cmluZz4gPSB7XG4gICAgJ0NvbnRlbnQtVHlwZSc6ICdhcHBsaWNhdGlvbi9qc29uJyxcbiAgICAnWC1TREstVmVyc2lvbic6IFNES19WRVJTSU9OLFxuICAgIC4uLmhlYWRlcnMsXG4gIH07XG5cbiAgaWYgKGNvbmZpZy5hcGlLZXkpIHtcbiAgICByZXF1ZXN0SGVhZGVyc1snQXV0aG9yaXphdGlvbiddID0gYEJlYXJlciAke2NvbmZpZy5hcGlLZXl9YDtcbiAgfSBlbHNlIGlmIChjb25maWcuYWdlbnRJZCkge1xuICAgIHJlcXVlc3RIZWFkZXJzWydYLUFnZW50LUlEJ10gPSBjb25maWcuYWdlbnRJZDtcbiAgfVxuXG4gIGRlYnVnTG9nKGAke21ldGhvZH0gJHt1cmx9YCk7XG5cbiAgbGV0IGxhc3RFcnJvcjogRXJyb3IgfCBudWxsID0gbnVsbDtcblxuICBmb3IgKGxldCBhdHRlbXB0ID0gMDsgYXR0ZW1wdCA8PSByZXRyaWVzOyBhdHRlbXB0KyspIHtcbiAgICB0cnkge1xuICAgICAgLy8gQ3JlYXRlIGFib3J0IGNvbnRyb2xsZXIgZm9yIHRpbWVvdXRcbiAgICAgIGNvbnN0IGNvbnRyb2xsZXIgPSBuZXcgQWJvcnRDb250cm9sbGVyKCk7XG4gICAgICBjb25zdCB0aW1lb3V0SWQgPSBzZXRUaW1lb3V0KCgpID0+IGNvbnRyb2xsZXIuYWJvcnQoKSwgcmVxdWVzdFRpbWVvdXQpO1xuXG4gICAgICBsZXQgcmVzcG9uc2U6IFJlc3BvbnNlO1xuICAgICAgdHJ5IHtcbiAgICAgICAgcmVzcG9uc2UgPSBhd2FpdCBmZXRjaCh1cmwsIHtcbiAgICAgICAgICBtZXRob2QsXG4gICAgICAgICAgaGVhZGVyczogcmVxdWVzdEhlYWRlcnMsXG4gICAgICAgICAgYm9keTogYm9keSA/IEpTT04uc3RyaW5naWZ5KGJvZHkpIDogdW5kZWZpbmVkLFxuICAgICAgICAgIHNpZ25hbDogY29udHJvbGxlci5zaWduYWwsXG4gICAgICAgIH0pO1xuICAgICAgfSBmaW5hbGx5IHtcbiAgICAgICAgY2xlYXJUaW1lb3V0KHRpbWVvdXRJZCk7XG4gICAgICB9XG5cbiAgICAgIC8vIEhhbmRsZSBkZXByZWNhdGlvbiB3YXJuaW5nc1xuICAgICAgaWYgKHJlc3BvbnNlLmhlYWRlcnMuaGFzKCdEZXByZWNhdGlvbicpKSB7XG4gICAgICAgIGNvbnN0IHN1bnNldCA9IHJlc3BvbnNlLmhlYWRlcnMuZ2V0KCdTdW5zZXQnKTtcbiAgICAgICAgY29uc3QgbGluayA9IHJlc3BvbnNlLmhlYWRlcnMuZ2V0KCdMaW5rJyk7XG4gICAgICAgIGNvbnNvbGUud2FybihcbiAgICAgICAgICBgW1RoaW5rSGl2ZV0gRGVwcmVjYXRpb24gd2FybmluZzogVGhpcyBlbmRwb2ludCBpcyBkZXByZWNhdGVkLmAgK1xuICAgICAgICAgICAgKHN1bnNldCA/IGAgU3Vuc2V0OiAke3N1bnNldH1gIDogJycpICtcbiAgICAgICAgICAgIChsaW5rID8gYCBTdWNjZXNzb3I6ICR7bGlua31gIDogJycpXG4gICAgICAgICk7XG4gICAgICB9XG5cbiAgICAgIC8vIENoZWNrIGlmIHJlc3BvbnNlIGlzIHJldHJ5YWJsZVxuICAgICAgaWYgKFJFVFJZQUJMRV9DT0RFUy5oYXMocmVzcG9uc2Uuc3RhdHVzKSAmJiBhdHRlbXB0IDwgcmV0cmllcykge1xuICAgICAgICAvLyBHZXQgUmV0cnktQWZ0ZXIgaGVhZGVyIGlmIHByZXNlbnQgKGZvciA0MjkgcmVzcG9uc2VzKVxuICAgICAgICBsZXQgcmV0cnlBZnRlcjogbnVtYmVyIHwgdW5kZWZpbmVkO1xuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSA0MjkpIHtcbiAgICAgICAgICBjb25zdCByZXRyeUFmdGVySGVhZGVyID0gcmVzcG9uc2UuaGVhZGVycy5nZXQoJ1JldHJ5LUFmdGVyJyk7XG4gICAgICAgICAgaWYgKHJldHJ5QWZ0ZXJIZWFkZXIpIHtcbiAgICAgICAgICAgIHJldHJ5QWZ0ZXIgPSBwYXJzZUZsb2F0KHJldHJ5QWZ0ZXJIZWFkZXIpO1xuICAgICAgICAgICAgaWYgKGlzTmFOKHJldHJ5QWZ0ZXIpKSB7XG4gICAgICAgICAgICAgIHJldHJ5QWZ0ZXIgPSB1bmRlZmluZWQ7XG4gICAgICAgICAgICB9XG4gICAgICAgICAgfVxuICAgICAgICB9XG5cbiAgICAgICAgY29uc3QgYmFja29mZiA9IGNhbGN1bGF0ZUJhY2tvZmYoYXR0ZW1wdCwgcmV0cnlBZnRlcik7XG4gICAgICAgIGRlYnVnTG9nKGBSZXRyeWluZyBhZnRlciAke2JhY2tvZmZ9bXMgKGF0dGVtcHQgJHthdHRlbXB0ICsgMX0vJHtyZXRyaWVzfSlgKTtcbiAgICAgICAgYXdhaXQgc2xlZXAoYmFja29mZik7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuXG4gICAgICBpZiAoIXJlc3BvbnNlLm9rKSB7XG4gICAgICAgIGNvbnN0IGVycm9yVGV4dCA9IGF3YWl0IHJlc3BvbnNlLnRleHQoKTtcbiAgICAgICAgbGV0IGVycm9yRGF0YTogeyBtZXNzYWdlPzogc3RyaW5nOyBjb2RlPzogc3RyaW5nIH0gPSB7fTtcbiAgICAgICAgdHJ5IHtcbiAgICAgICAgICBlcnJvckRhdGEgPSBKU09OLnBhcnNlKGVycm9yVGV4dCk7XG4gICAgICAgIH0gY2F0Y2gge1xuICAgICAgICAgIGVycm9yRGF0YSA9IHsgbWVzc2FnZTogZXJyb3JUZXh0IH07XG4gICAgICAgIH1cblxuICAgICAgICAvLyBIYW5kbGUgcmF0ZSBsaW1pdCBzcGVjaWZpY2FsbHlcbiAgICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gNDI5KSB7XG4gICAgICAgICAgY29uc3QgcmV0cnlBZnRlckhlYWRlciA9IHJlc3BvbnNlLmhlYWRlcnMuZ2V0KCdSZXRyeS1BZnRlcicpO1xuICAgICAgICAgIGNvbnN0IHJldHJ5QWZ0ZXIgPSByZXRyeUFmdGVySGVhZGVyID8gcGFyc2VGbG9hdChyZXRyeUFmdGVySGVhZGVyKSAqIDEwMDAgOiA2MDAwMDtcbiAgICAgICAgICB0aHJvdyBuZXcgUmF0ZUxpbWl0RXJyb3IocmV0cnlBZnRlcik7XG4gICAgICAgIH1cblxuICAgICAgICB0aHJvdyBuZXcgVGhpbmtIaXZlQXBpRXJyb3IoXG4gICAgICAgICAgZXJyb3JEYXRhLm1lc3NhZ2UgfHwgYEhUVFAgJHtyZXNwb25zZS5zdGF0dXN9YCxcbiAgICAgICAgICByZXNwb25zZS5zdGF0dXMsXG4gICAgICAgICAgZXJyb3JEYXRhLmNvZGVcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgLy8gSGFuZGxlIDIwNCBObyBDb250ZW50IChlLmcuLCBzdWNjZXNzZnVsIERFTEVURSlcbiAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDIwNCkge1xuICAgICAgICByZXR1cm4gdW5kZWZpbmVkIGFzIHVua25vd24gYXMgVDtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIHJlc3BvbnNlLmpzb24oKSBhcyBQcm9taXNlPFQ+O1xuICAgIH0gY2F0Y2ggKGVycm9yKSB7XG4gICAgICAvLyBIYW5kbGUgYWJvcnQgKHRpbWVvdXQpXG4gICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBFcnJvciAmJiBlcnJvci5uYW1lID09PSAnQWJvcnRFcnJvcicpIHtcbiAgICAgICAgbGFzdEVycm9yID0gbmV3IFRoaW5rSGl2ZUFwaUVycm9yKGBSZXF1ZXN0IHRpbWVkIG91dCBhZnRlciAke3JlcXVlc3RUaW1lb3V0fW1zYCwgNDA4KTtcbiAgICAgICAgaWYgKGF0dGVtcHQgPCByZXRyaWVzKSB7XG4gICAgICAgICAgY29uc3QgYmFja29mZiA9IGNhbGN1bGF0ZUJhY2tvZmYoYXR0ZW1wdCk7XG4gICAgICAgICAgZGVidWdMb2coYFJlcXVlc3QgdGltZWQgb3V0LCByZXRyeWluZyBhZnRlciAke2JhY2tvZmZ9bXMgKGF0dGVtcHQgJHthdHRlbXB0ICsgMX0vJHtyZXRyaWVzfSlgKTtcbiAgICAgICAgICBhd2FpdCBzbGVlcChiYWNrb2ZmKTtcbiAgICAgICAgICBjb250aW51ZTtcbiAgICAgICAgfVxuICAgICAgICB0aHJvdyBsYXN0RXJyb3I7XG4gICAgICB9XG5cbiAgICAgIC8vIEhhbmRsZSBuZXR3b3JrIGVycm9ycyAoVHlwZUVycm9yIGZyb20gZmV0Y2gpXG4gICAgICBpZiAoZXJyb3IgaW5zdGFuY2VvZiBUeXBlRXJyb3IpIHtcbiAgICAgICAgbGFzdEVycm9yID0gbmV3IFRoaW5rSGl2ZUFwaUVycm9yKGBOZXR3b3JrIGVycm9yOiAke2Vycm9yLm1lc3NhZ2V9YCwgNTAzKTtcbiAgICAgICAgaWYgKGF0dGVtcHQgPCByZXRyaWVzKSB7XG4gICAgICAgICAgY29uc3QgYmFja29mZiA9IGNhbGN1bGF0ZUJhY2tvZmYoYXR0ZW1wdCk7XG4gICAgICAgICAgZGVidWdMb2coYE5ldHdvcmsgZXJyb3IsIHJldHJ5aW5nIGFmdGVyICR7YmFja29mZn1tcyAoYXR0ZW1wdCAke2F0dGVtcHQgKyAxfS8ke3JldHJpZXN9KWApO1xuICAgICAgICAgIGF3YWl0IHNsZWVwKGJhY2tvZmYpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IGxhc3RFcnJvcjtcbiAgICAgIH1cblxuICAgICAgLy8gUmUtdGhyb3cgVGhpbmtIaXZlIGVycm9ycyAobm9uLXJldHJ5YWJsZSlcbiAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIFRoaW5rSGl2ZUVycm9yKSB7XG4gICAgICAgIHRocm93IGVycm9yO1xuICAgICAgfVxuXG4gICAgICAvLyBVbmtub3duIGVycm9yXG4gICAgICBsYXN0RXJyb3IgPSBlcnJvciBpbnN0YW5jZW9mIEVycm9yID8gZXJyb3IgOiBuZXcgRXJyb3IoU3RyaW5nKGVycm9yKSk7XG4gICAgICBpZiAoYXR0ZW1wdCA8IHJldHJpZXMpIHtcbiAgICAgICAgY29uc3QgYmFja29mZiA9IGNhbGN1bGF0ZUJhY2tvZmYoYXR0ZW1wdCk7XG4gICAgICAgIGF3YWl0IHNsZWVwKGJhY2tvZmYpO1xuICAgICAgICBjb250aW51ZTtcbiAgICAgIH1cbiAgICAgIHRocm93IG5ldyBUaGlua0hpdmVBcGlFcnJvcihgUmVxdWVzdCBmYWlsZWQ6ICR7bGFzdEVycm9yLm1lc3NhZ2V9YCwgNTAwKTtcbiAgICB9XG4gIH1cblxuICAvLyBTaG91bGQgbm90IHJlYWNoIGhlcmUsIGJ1dCBqdXN0IGluIGNhc2VcbiAgdGhyb3cgbGFzdEVycm9yIHx8IG5ldyBUaGlua0hpdmVBcGlFcnJvcignUmVxdWVzdCBmYWlsZWQgYWZ0ZXIgYWxsIHJldHJpZXMnLCA1MDApO1xufVxuXG4vKipcbiAqIE1ha2UgYW4gQVBJIHJlcXVlc3QgYW5kIGV4dHJhY3QgZGF0YSBmcm9tIHJlc3BvbnNlIHdyYXBwZXJcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFwaVJlcXVlc3RXaXRoRGF0YTxUPihcbiAgcGF0aDogc3RyaW5nLFxuICBvcHRpb25zOiBSZXF1ZXN0T3B0aW9ucyA9IHt9XG4pOiBQcm9taXNlPFQ+IHtcbiAgY29uc3QgcmVzcG9uc2UgPSBhd2FpdCBhcGlSZXF1ZXN0PEFwaVJlc3BvbnNlPFQ+PihwYXRoLCBvcHRpb25zKTtcbiAgaWYgKCFyZXNwb25zZS5zdWNjZXNzKSB7XG4gICAgdGhyb3cgbmV3IFRoaW5rSGl2ZUFwaUVycm9yKFxuICAgICAgcmVzcG9uc2UuZXJyb3I/Lm1lc3NhZ2UgfHwgJ1Vua25vd24gZXJyb3InLFxuICAgICAgNTAwLFxuICAgICAgcmVzcG9uc2UuZXJyb3I/LmNvZGVcbiAgICApO1xuICB9XG4gIHJldHVybiByZXNwb25zZS5kYXRhIGFzIFQ7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEVSUk9SU1xuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIEJhc2UgZXJyb3IgY2xhc3MgZm9yIFRoaW5rSGl2ZSBTREsgZXJyb3JzXG4gKi9cbmV4cG9ydCBjbGFzcyBUaGlua0hpdmVFcnJvciBleHRlbmRzIEVycm9yIHtcbiAgY29uc3RydWN0b3IoXG4gICAgbWVzc2FnZTogc3RyaW5nLFxuICAgIHB1YmxpYyByZWFkb25seSBjb2RlOiBzdHJpbmcsXG4gICAgcHVibGljIHJlYWRvbmx5IHN0YXR1c0NvZGU/OiBudW1iZXIsXG4gICAgcHVibGljIHJlYWRvbmx5IGRldGFpbHM/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPlxuICApIHtcbiAgICBzdXBlcihtZXNzYWdlKTtcbiAgICB0aGlzLm5hbWUgPSAnVGhpbmtIaXZlRXJyb3InO1xuICB9XG59XG5cbi8qKlxuICogQVBJIHJlcXVlc3QgZXJyb3IgLSByZXR1cm5lZCBmcm9tIFRoaW5rSGl2ZSBzZXJ2ZXJcbiAqL1xuZXhwb3J0IGNsYXNzIFRoaW5rSGl2ZUFwaUVycm9yIGV4dGVuZHMgVGhpbmtIaXZlRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgc3RhdHVzQ29kZTogbnVtYmVyLFxuICAgIGNvZGU/OiBzdHJpbmdcbiAgKSB7XG4gICAgc3VwZXIobWVzc2FnZSwgY29kZSB8fCAnQVBJX0VSUk9SJywgc3RhdHVzQ29kZSk7XG4gICAgdGhpcy5uYW1lID0gJ1RoaW5rSGl2ZUFwaUVycm9yJztcbiAgfVxufVxuXG4vKipcbiAqIFZhbGlkYXRpb24gZXJyb3IgLSBpbnZhbGlkIGlucHV0IHBhcmFtZXRlcnNcbiAqL1xuZXhwb3J0IGNsYXNzIFRoaW5rSGl2ZVZhbGlkYXRpb25FcnJvciBleHRlbmRzIFRoaW5rSGl2ZUVycm9yIHtcbiAgY29uc3RydWN0b3IoXG4gICAgbWVzc2FnZTogc3RyaW5nLFxuICAgIHB1YmxpYyByZWFkb25seSBmaWVsZD86IHN0cmluZ1xuICApIHtcbiAgICBzdXBlcihtZXNzYWdlLCAnVkFMSURBVElPTl9FUlJPUicsIDQwMCwgZmllbGQgPyB7IGZpZWxkIH0gOiB1bmRlZmluZWQpO1xuICAgIHRoaXMubmFtZSA9ICdUaGlua0hpdmVWYWxpZGF0aW9uRXJyb3InO1xuICB9XG59XG5cbi8qKlxuICogUGVybWlzc2lvbiBkZW5pZWQgZXJyb3IgLSBBUEkga2V5IGxhY2tzIHJlcXVpcmVkIHBlcm1pc3Npb25zXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogdHJ5IHtcbiAqICAgYXdhaXQgdGhpbmtIaXZlLnRyYWNlcy5jcmVhdGUoLi4uKTtcbiAqIH0gY2F0Y2ggKGVycm9yKSB7XG4gKiAgIGlmIChlcnJvciBpbnN0YW5jZW9mIFBlcm1pc3Npb25EZW5pZWRFcnJvcikge1xuICogICAgIGNvbnNvbGUubG9nKCdBUEkga2V5IG5lZWRzIHdyaXRlIHBlcm1pc3Npb24nKTtcbiAqICAgfVxuICogfVxuICogYGBgXG4gKi9cbmV4cG9ydCBjbGFzcyBQZXJtaXNzaW9uRGVuaWVkRXJyb3IgZXh0ZW5kcyBUaGlua0hpdmVFcnJvciB7XG4gIGNvbnN0cnVjdG9yKG1lc3NhZ2U6IHN0cmluZywgZGV0YWlscz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+KSB7XG4gICAgc3VwZXIobWVzc2FnZSwgJ1BFUk1JU1NJT05fREVOSUVEJywgNDAzLCBkZXRhaWxzKTtcbiAgICB0aGlzLm5hbWUgPSAnUGVybWlzc2lvbkRlbmllZEVycm9yJztcbiAgfVxufVxuXG4vKipcbiAqIEFnZW50IHNjb3BlIHZpb2xhdGlvbiBlcnJvciAtIEFQSSBrZXkgbm90IGF1dGhvcml6ZWQgZm9yIHRoaXMgYWdlbnRcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiAvLyBDcmVhdGUga2V5IHNjb3BlZCB0byBzcGVjaWZpYyBhZ2VudHNcbiAqIGNvbnN0IGtleSA9IGF3YWl0IHRoaW5rSGl2ZS5hcGlLZXlzLmNyZWF0ZSh7XG4gKiAgIG5hbWU6ICdBZ2VudCBBIEtleScsXG4gKiAgIGFsbG93ZWRBZ2VudElkczogWydhZ2VudC1hLWlkJ11cbiAqIH0pO1xuICpcbiAqIC8vIEF0dGVtcHRpbmcgdG8gdXNlIGZvciBBZ2VudCBCIHdpbGwgdGhyb3cgQWdlbnRTY29wZUVycm9yXG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIEFnZW50U2NvcGVFcnJvciBleHRlbmRzIFRoaW5rSGl2ZUVycm9yIHtcbiAgY29uc3RydWN0b3IoXG4gICAgYWdlbnRJZDogc3RyaW5nLFxuICAgIGFsbG93ZWRBZ2VudHM6IHN0cmluZ1tdXG4gICkge1xuICAgIHN1cGVyKFxuICAgICAgYEFQSSBrZXkgbm90IGF1dGhvcml6ZWQgZm9yIGFnZW50ICR7YWdlbnRJZH1gLFxuICAgICAgJ0FHRU5UX1NDT1BFX1ZJT0xBVElPTicsXG4gICAgICA0MDMsXG4gICAgICB7IGFnZW50SWQsIGFsbG93ZWRBZ2VudHMgfVxuICAgICk7XG4gICAgdGhpcy5uYW1lID0gJ0FnZW50U2NvcGVFcnJvcic7XG4gIH1cbn1cblxuLyoqXG4gKiBSYXRlIGxpbWl0IGV4Y2VlZGVkIGVycm9yXG4gKiBAZXhhbXBsZVxuICogYGBgdHlwZXNjcmlwdFxuICogdHJ5IHtcbiAqICAgYXdhaXQgdGhpbmtIaXZlLnRyYWNlcy5jcmVhdGUoLi4uKTtcbiAqIH0gY2F0Y2ggKGVycm9yKSB7XG4gKiAgIGlmIChlcnJvciBpbnN0YW5jZW9mIFJhdGVMaW1pdEVycm9yKSB7XG4gKiAgICAgLy8gV2FpdCBhbmQgcmV0cnlcbiAqICAgICBhd2FpdCBzbGVlcChlcnJvci5yZXRyeUFmdGVyKTtcbiAqICAgICBhd2FpdCB0aGlua0hpdmUudHJhY2VzLmNyZWF0ZSguLi4pO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIFJhdGVMaW1pdEVycm9yIGV4dGVuZHMgVGhpbmtIaXZlRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihcbiAgICBwdWJsaWMgcmVhZG9ubHkgcmV0cnlBZnRlcjogbnVtYmVyXG4gICkge1xuICAgIHN1cGVyKFxuICAgICAgYFJhdGUgbGltaXQgZXhjZWVkZWQuIFJldHJ5IGFmdGVyICR7cmV0cnlBZnRlcn1tc2AsXG4gICAgICAnUkFURV9MSU1JVF9FWENFRURFRCcsXG4gICAgICA0MjksXG4gICAgICB7IHJldHJ5QWZ0ZXIgfVxuICAgICk7XG4gICAgdGhpcy5uYW1lID0gJ1JhdGVMaW1pdEVycm9yJztcbiAgfVxufVxuXG4vKipcbiAqIElQIHdoaXRlbGlzdCB2aW9sYXRpb24gZXJyb3JcbiAqL1xuZXhwb3J0IGNsYXNzIElwV2hpdGVsaXN0RXJyb3IgZXh0ZW5kcyBUaGlua0hpdmVFcnJvciB7XG4gIGNvbnN0cnVjdG9yKGNsaWVudElwOiBzdHJpbmcpIHtcbiAgICBzdXBlcihcbiAgICAgICdSZXF1ZXN0IElQIGFkZHJlc3MgaXMgbm90IGF1dGhvcml6ZWQgZm9yIHRoaXMgQVBJIGtleScsXG4gICAgICAnSVBfV0hJVEVMSVNUX1ZJT0xBVElPTicsXG4gICAgICA0MDMsXG4gICAgICB7IGNsaWVudElwIH1cbiAgICApO1xuICAgIHRoaXMubmFtZSA9ICdJcFdoaXRlbGlzdEVycm9yJztcbiAgfVxufVxuIl19
|
|
290
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY2xpZW50LmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvcmUvY2xpZW50LnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7OztHQUlHOzs7QUFxREgsZ0NBMEpDO0FBS0QsZ0RBYUM7QUEvTkQscUNBQTREO0FBRzVELCtFQUErRTtBQUMvRSxzQkFBc0I7QUFDdEIsK0VBQStFO0FBRS9FLE1BQU0sV0FBVyxHQUFHLENBQUMsQ0FBQztBQUN0QixNQUFNLGVBQWUsR0FBRyxHQUFHLENBQUMsQ0FBQyxLQUFLO0FBQ2xDLE1BQU0sV0FBVyxHQUFHLElBQUksQ0FBQyxDQUFDLEtBQUs7QUFDL0IsTUFBTSxlQUFlLEdBQUcsSUFBSSxHQUFHLENBQUMsQ0FBQyxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsRUFBRSxHQUFHLEVBQUUsR0FBRyxFQUFFLEdBQUcsQ0FBQyxDQUFDLENBQUM7QUFFaEU7O0dBRUc7QUFDSCxTQUFTLGdCQUFnQixDQUFDLE9BQWUsRUFBRSxVQUFtQjtJQUM1RCxJQUFJLFVBQVUsS0FBSyxTQUFTLEVBQUUsQ0FBQztRQUM3QixPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsVUFBVSxHQUFHLElBQUksRUFBRSxXQUFXLENBQUMsQ0FBQyxDQUFDLHdCQUF3QjtJQUMzRSxDQUFDO0lBQ0QsTUFBTSxPQUFPLEdBQUcsZUFBZSxHQUFHLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQyxFQUFFLE9BQU8sQ0FBQyxDQUFDO0lBQ3ZELE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxPQUFPLEVBQUUsV0FBVyxDQUFDLENBQUM7QUFDeEMsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBUyxLQUFLLENBQUMsRUFBVTtJQUN2QixPQUFPLElBQUksT0FBTyxDQUFDLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxVQUFVLENBQUMsT0FBTyxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUM7QUFDM0QsQ0FBQztBQW9CRDs7R0FFRztBQUNJLEtB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QixDQUFDO0lBQ2hDLENBQUM7Q0FDRjtBQWJELDBDQWFDO0FBRUQ7Ozs7Ozs7Ozs7Ozs7O0dBY0c7QUFDSCxNQUFhLGNBQWUsU0FBUSxjQUFjO0lBQ2hELFlBQ2tCLFVBQWtCO1FBRWxDLEtBQUssQ0FDSCxvQ0FBb0MsVUFBVSxJQUFJLEVBQ2xELHFCQUFxQixFQUNyQixHQUFHLEVBQ0gsRUFBRSxVQUFVLEVBQUUsQ0FDZixDQUFDO1FBUGMsZUFBVSxHQUFWLFVBQVUsQ0FBUTtRQVFsQyxJQUFJLENBQUMsSUFBSSxHQUFHLGdCQUFnQixDQUFDO0lBQy9CLENBQUM7Q0FDRjtBQVpELHdDQVlDO0FBRUQ7O0dBRUc7QUFDSCxNQUFhLGdCQUFpQixTQUFRLGNBQWM7SUFDbEQsWUFBWSxRQUFnQjtRQUMxQixLQUFLLENBQ0gsdURBQXVELEVBQ3ZELHdCQUF3QixFQUN4QixHQUFHLEVBQ0gsRUFBRSxRQUFRLEVBQUUsQ0FDYixDQUFDO1FBQ0YsSUFBSSxDQUFDLElBQUksR0FBRyxrQkFBa0IsQ0FBQztJQUNqQyxDQUFDO0NBQ0Y7QUFWRCw0Q0FVQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhpbmtIaXZlIFNESyB2My4wIC0gSFRUUCBDbGllbnRcbiAqXG4gKiBDZW50cmFsaXplZCBIVFRQIGNsaWVudCB3aXRoIGF1dGhlbnRpY2F0aW9uIGFuZCBlcnJvciBoYW5kbGluZ1xuICovXG5cbmltcG9ydCB7IGdldENvbmZpZywgZGVidWdMb2csIFNES19WRVJTSU9OIH0gZnJvbSAnLi9jb25maWcnO1xuaW1wb3J0IHR5cGUgeyBBcGlSZXNwb25zZSB9IGZyb20gJy4vdHlwZXMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBSRVRSWSBDT05GSUdVUkFUSU9OXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmNvbnN0IE1BWF9SRVRSSUVTID0gMztcbmNvbnN0IElOSVRJQUxfQkFDS09GRiA9IDUwMDsgLy8gbXNcbmNvbnN0IE1BWF9CQUNLT0ZGID0gODAwMDsgLy8gbXNcbmNvbnN0IFJFVFJZQUJMRV9DT0RFUyA9IG5ldyBTZXQoWzQwOCwgNDI5LCA1MDAsIDUwMiwgNTAzLCA1MDRdKTtcblxuLyoqXG4gKiBDYWxjdWxhdGUgYmFja29mZiB0aW1lIGZvciByZXRyeSBhdHRlbXB0XG4gKi9cbmZ1bmN0aW9uIGNhbGN1bGF0ZUJhY2tvZmYoYXR0ZW1wdDogbnVtYmVyLCByZXRyeUFmdGVyPzogbnVtYmVyKTogbnVtYmVyIHtcbiAgaWYgKHJldHJ5QWZ0ZXIgIT09IHVuZGVmaW5lZCkge1xuICAgIHJldHVybiBNYXRoLm1pbihyZXRyeUFmdGVyICogMTAwMCwgTUFYX0JBQ0tPRkYpOyAvLyBDb252ZXJ0IHNlY29uZHMgdG8gbXNcbiAgfVxuICBjb25zdCBiYWNrb2ZmID0gSU5JVElBTF9CQUNLT0ZGICogTWF0aC5wb3coMiwgYXR0ZW1wdCk7XG4gIHJldHVybiBNYXRoLm1pbihiYWNrb2ZmLCBNQVhfQkFDS09GRik7XG59XG5cbi8qKlxuICogU2xlZXAgZm9yIGEgZ2l2ZW4gbnVtYmVyIG9mIG1pbGxpc2Vjb25kc1xuICovXG5mdW5jdGlvbiBzbGVlcChtczogbnVtYmVyKTogUHJvbWlzZTx2b2lkPiB7XG4gIHJldHVybiBuZXcgUHJvbWlzZSgocmVzb2x2ZSkgPT4gc2V0VGltZW91dChyZXNvbHZlLCBtcykpO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBIVFRQIENMSUVOVFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG5leHBvcnQgaW50ZXJmYWNlIFJlcXVlc3RPcHRpb25zIHtcbiAgbWV0aG9kPzogJ0dFVCcgfCAnUE9TVCcgfCAnUFVUJyB8ICdQQVRDSCcgfCAnREVMRVRFJztcbiAgYm9keT86IHVua25vd247XG4gIGhlYWRlcnM/OiBSZWNvcmQ8c3RyaW5nLCBzdHJpbmc+O1xuICAvKiogT3ZlcnJpZGUgQVBJIHZlcnNpb24gZm9yIHRoaXMgcmVxdWVzdC4gVXNlICdub25lJyBmb3IgdW52ZXJzaW9uZWQgcm91dGVzIChlLmcuLCAvYXBpL2FnZW50cykuICovXG4gIGFwaVZlcnNpb24/OiAndjEnIHwgJ3YyJyB8ICd2MycgfCAnbm9uZSc7XG4gIC8qKiBPdmVycmlkZSBtYXggcmV0cmllcyBmb3IgdGhpcyByZXF1ZXN0ICovXG4gIG1heFJldHJpZXM/OiBudW1iZXI7XG4gIC8qKiBSZXF1ZXN0IHRpbWVvdXQgaW4gbWlsbGlzZWNvbmRzICovXG4gIHRpbWVvdXQ/OiBudW1iZXI7XG4gIC8qKiBVc2UgcGF0aCBhcy1pcyB3aXRob3V0IHByZXBlbmRpbmcgL2FwaS8gcHJlZml4IChmb3Igcm91dGVzIGxpa2UgL3YxL2d1YXJkcmFpbHMvc2NhbikgKi9cbiAgcmF3UGF0aD86IGJvb2xlYW47XG59XG5cbi8qKlxuICogTWFrZSBhbiBhdXRoZW50aWNhdGVkIEFQSSByZXF1ZXN0IHdpdGggcmV0cnkgbG9naWNcbiAqL1xuZXhwb3J0IGFzeW5jIGZ1bmN0aW9uIGFwaVJlcXVlc3Q8VD4oXG4gIHBhdGg6IHN0cmluZyxcbiAgb3B0aW9uczogUmVxdWVzdE9wdGlvbnMgPSB7fVxuKTogUHJvbWlzZTxUPiB7XG4gIGNvbnN0IGNvbmZpZyA9IGdldENvbmZpZygpO1xuICBjb25zdCB7IG1ldGhvZCA9ICdHRVQnLCBib2R5LCBoZWFkZXJzID0ge30sIGFwaVZlcnNpb24sIG1heFJldHJpZXMsIHRpbWVvdXQsIHJhd1BhdGggfSA9IG9wdGlvbnM7XG5cbiAgbGV0IHVybDogc3RyaW5nO1xuICBpZiAocmF3UGF0aCkge1xuICAgIHVybCA9IGAke2NvbmZpZy5lbmRwb2ludH0ke3BhdGh9YDtcbiAgfSBlbHNlIHtcbiAgICBjb25zdCB2ZXJzaW9uID0gYXBpVmVyc2lvbiA9PT0gJ25vbmUnID8gJycgOiAoYXBpVmVyc2lvbiB8fCAnJyk7XG4gICAgdXJsID0gdmVyc2lvbiA/IGAke2NvbmZpZy5lbmRwb2ludH0vYXBpLyR7dmVyc2lvbn0ke3BhdGh9YCA6IGAke2NvbmZpZy5lbmRwb2ludH0vYXBpJHtwYXRofWA7XG4gIH1cbiAgY29uc3QgcmV0cmllcyA9IG1heFJldHJpZXMgPz8gTUFYX1JFVFJJRVM7XG4gIGNvbnN0IHJlcXVlc3RUaW1lb3V0ID0gdGltZW91dCA/PyAzMDAwMDsgLy8gRGVmYXVsdCAzMHNcblxuICBjb25zdCByZXF1ZXN0SGVhZGVyczogUmVjb3JkPHN0cmluZywgc3RyaW5nPiA9IHtcbiAgICAnQ29udGVudC1UeXBlJzogJ2FwcGxpY2F0aW9uL2pzb24nLFxuICAgICdYLVNESy1WZXJzaW9uJzogU0RLX1ZFUlNJT04sXG4gICAgLi4uaGVhZGVycyxcbiAgfTtcblxuICBpZiAoY29uZmlnLmFwaUtleSkge1xuICAgIHJlcXVlc3RIZWFkZXJzWydBdXRob3JpemF0aW9uJ10gPSBgQmVhcmVyICR7Y29uZmlnLmFwaUtleX1gO1xuICB9IGVsc2UgaWYgKGNvbmZpZy5hZ2VudElkKSB7XG4gICAgcmVxdWVzdEhlYWRlcnNbJ1gtQWdlbnQtSUQnXSA9IGNvbmZpZy5hZ2VudElkO1xuICB9XG5cbiAgZGVidWdMb2coYCR7bWV0aG9kfSAke3VybH1gKTtcblxuICBsZXQgbGFzdEVycm9yOiBFcnJvciB8IG51bGwgPSBudWxsO1xuXG4gIGZvciAobGV0IGF0dGVtcHQgPSAwOyBhdHRlbXB0IDw9IHJldHJpZXM7IGF0dGVtcHQrKykge1xuICAgIHRyeSB7XG4gICAgICAvLyBDcmVhdGUgYWJvcnQgY29udHJvbGxlciBmb3IgdGltZW91dFxuICAgICAgY29uc3QgY29udHJvbGxlciA9IG5ldyBBYm9ydENvbnRyb2xsZXIoKTtcbiAgICAgIGNvbnN0IHRpbWVvdXRJZCA9IHNldFRpbWVvdXQoKCkgPT4gY29udHJvbGxlci5hYm9ydCgpLCByZXF1ZXN0VGltZW91dCk7XG5cbiAgICAgIGxldCByZXNwb25zZTogUmVzcG9uc2U7XG4gICAgICB0cnkge1xuICAgICAgICByZXNwb25zZSA9IGF3YWl0IGZldGNoKHVybCwge1xuICAgICAgICAgIG1ldGhvZCxcbiAgICAgICAgICBoZWFkZXJzOiByZXF1ZXN0SGVhZGVycyxcbiAgICAgICAgICBib2R5OiBib2R5ID8gSlNPTi5zdHJpbmdpZnkoYm9keSkgOiB1bmRlZmluZWQsXG4gICAgICAgICAgc2lnbmFsOiBjb250cm9sbGVyLnNpZ25hbCxcbiAgICAgICAgfSk7XG4gICAgICB9IGZpbmFsbHkge1xuICAgICAgICBjbGVhclRpbWVvdXQodGltZW91dElkKTtcbiAgICAgIH1cblxuICAgICAgLy8gSGFuZGxlIGRlcHJlY2F0aW9uIHdhcm5pbmdzXG4gICAgICBpZiAocmVzcG9uc2UuaGVhZGVycy5oYXMoJ0RlcHJlY2F0aW9uJykpIHtcbiAgICAgICAgY29uc3Qgc3Vuc2V0ID0gcmVzcG9uc2UuaGVhZGVycy5nZXQoJ1N1bnNldCcpO1xuICAgICAgICBjb25zdCBsaW5rID0gcmVzcG9uc2UuaGVhZGVycy5nZXQoJ0xpbmsnKTtcbiAgICAgICAgY29uc29sZS53YXJuKFxuICAgICAgICAgIGBbVGhpbmtIaXZlXSBEZXByZWNhdGlvbiB3YXJuaW5nOiBUaGlzIGVuZHBvaW50IGlzIGRlcHJlY2F0ZWQuYCArXG4gICAgICAgICAgICAoc3Vuc2V0ID8gYCBTdW5zZXQ6ICR7c3Vuc2V0fWAgOiAnJykgK1xuICAgICAgICAgICAgKGxpbmsgPyBgIFN1Y2Nlc3NvcjogJHtsaW5rfWAgOiAnJylcbiAgICAgICAgKTtcbiAgICAgIH1cblxuICAgICAgLy8gQ2hlY2sgaWYgcmVzcG9uc2UgaXMgcmV0cnlhYmxlXG4gICAgICBpZiAoUkVUUllBQkxFX0NPREVTLmhhcyhyZXNwb25zZS5zdGF0dXMpICYmIGF0dGVtcHQgPCByZXRyaWVzKSB7XG4gICAgICAgIC8vIEdldCBSZXRyeS1BZnRlciBoZWFkZXIgaWYgcHJlc2VudCAoZm9yIDQyOSByZXNwb25zZXMpXG4gICAgICAgIGxldCByZXRyeUFmdGVyOiBudW1iZXIgfCB1bmRlZmluZWQ7XG4gICAgICAgIGlmIChyZXNwb25zZS5zdGF0dXMgPT09IDQyOSkge1xuICAgICAgICAgIGNvbnN0IHJldHJ5QWZ0ZXJIZWFkZXIgPSByZXNwb25zZS5oZWFkZXJzLmdldCgnUmV0cnktQWZ0ZXInKTtcbiAgICAgICAgICBpZiAocmV0cnlBZnRlckhlYWRlcikge1xuICAgICAgICAgICAgcmV0cnlBZnRlciA9IHBhcnNlRmxvYXQocmV0cnlBZnRlckhlYWRlcik7XG4gICAgICAgICAgICBpZiAoaXNOYU4ocmV0cnlBZnRlcikpIHtcbiAgICAgICAgICAgICAgcmV0cnlBZnRlciA9IHVuZGVmaW5lZDtcbiAgICAgICAgICAgIH1cbiAgICAgICAgICB9XG4gICAgICAgIH1cblxuICAgICAgICBjb25zdCBiYWNrb2ZmID0gY2FsY3VsYXRlQmFja29mZihhdHRlbXB0LCByZXRyeUFmdGVyKTtcbiAgICAgICAgZGVidWdMb2coYFJldHJ5aW5nIGFmdGVyICR7YmFja29mZn1tcyAoYXR0ZW1wdCAke2F0dGVtcHQgKyAxfS8ke3JldHJpZXN9KWApO1xuICAgICAgICBhd2FpdCBzbGVlcChiYWNrb2ZmKTtcbiAgICAgICAgY29udGludWU7XG4gICAgICB9XG5cbiAgICAgIGlmICghcmVzcG9uc2Uub2spIHtcbiAgICAgICAgY29uc3QgZXJyb3JUZXh0ID0gYXdhaXQgcmVzcG9uc2UudGV4dCgpO1xuICAgICAgICBsZXQgZXJyb3JEYXRhOiB7IG1lc3NhZ2U/OiBzdHJpbmc7IGNvZGU/OiBzdHJpbmcgfSA9IHt9O1xuICAgICAgICB0cnkge1xuICAgICAgICAgIGVycm9yRGF0YSA9IEpTT04ucGFyc2UoZXJyb3JUZXh0KTtcbiAgICAgICAgfSBjYXRjaCB7XG4gICAgICAgICAgZXJyb3JEYXRhID0geyBtZXNzYWdlOiBlcnJvclRleHQgfTtcbiAgICAgICAgfVxuXG4gICAgICAgIC8vIEhhbmRsZSByYXRlIGxpbWl0IHNwZWNpZmljYWxseVxuICAgICAgICBpZiAocmVzcG9uc2Uuc3RhdHVzID09PSA0MjkpIHtcbiAgICAgICAgICBjb25zdCByZXRyeUFmdGVySGVhZGVyID0gcmVzcG9uc2UuaGVhZGVycy5nZXQoJ1JldHJ5LUFmdGVyJyk7XG4gICAgICAgICAgY29uc3QgcmV0cnlBZnRlciA9IHJldHJ5QWZ0ZXJIZWFkZXIgPyBwYXJzZUZsb2F0KHJldHJ5QWZ0ZXJIZWFkZXIpICogMTAwMCA6IDYwMDAwO1xuICAgICAgICAgIHRocm93IG5ldyBSYXRlTGltaXRFcnJvcihyZXRyeUFmdGVyKTtcbiAgICAgICAgfVxuXG4gICAgICAgIHRocm93IG5ldyBUaGlua0hpdmVBcGlFcnJvcihcbiAgICAgICAgICBlcnJvckRhdGEubWVzc2FnZSB8fCBgSFRUUCAke3Jlc3BvbnNlLnN0YXR1c31gLFxuICAgICAgICAgIHJlc3BvbnNlLnN0YXR1cyxcbiAgICAgICAgICBlcnJvckRhdGEuY29kZVxuICAgICAgICApO1xuICAgICAgfVxuXG4gICAgICAvLyBIYW5kbGUgMjA0IE5vIENvbnRlbnQgKGUuZy4sIHN1Y2Nlc3NmdWwgREVMRVRFKVxuICAgICAgaWYgKHJlc3BvbnNlLnN0YXR1cyA9PT0gMjA0KSB7XG4gICAgICAgIHJldHVybiB1bmRlZmluZWQgYXMgdW5rbm93biBhcyBUO1xuICAgICAgfVxuXG4gICAgICByZXR1cm4gcmVzcG9uc2UuanNvbigpIGFzIFByb21pc2U8VD47XG4gICAgfSBjYXRjaCAoZXJyb3IpIHtcbiAgICAgIC8vIEhhbmRsZSBhYm9ydCAodGltZW91dClcbiAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIEVycm9yICYmIGVycm9yLm5hbWUgPT09ICdBYm9ydEVycm9yJykge1xuICAgICAgICBsYXN0RXJyb3IgPSBuZXcgVGhpbmtIaXZlQXBpRXJyb3IoYFJlcXVlc3QgdGltZWQgb3V0IGFmdGVyICR7cmVxdWVzdFRpbWVvdXR9bXNgLCA0MDgpO1xuICAgICAgICBpZiAoYXR0ZW1wdCA8IHJldHJpZXMpIHtcbiAgICAgICAgICBjb25zdCBiYWNrb2ZmID0gY2FsY3VsYXRlQmFja29mZihhdHRlbXB0KTtcbiAgICAgICAgICBkZWJ1Z0xvZyhgUmVxdWVzdCB0aW1lZCBvdXQsIHJldHJ5aW5nIGFmdGVyICR7YmFja29mZn1tcyAoYXR0ZW1wdCAke2F0dGVtcHQgKyAxfS8ke3JldHJpZXN9KWApO1xuICAgICAgICAgIGF3YWl0IHNsZWVwKGJhY2tvZmYpO1xuICAgICAgICAgIGNvbnRpbnVlO1xuICAgICAgICB9XG4gICAgICAgIHRocm93IGxhc3RFcnJvcjtcbiAgICAgIH1cblxuICAgICAgLy8gSGFuZGxlIG5ldHdvcmsgZXJyb3JzIChUeXBlRXJyb3IgZnJvbSBmZXRjaClcbiAgICAgIGlmIChlcnJvciBpbnN0YW5jZW9mIFR5cGVFcnJvcikge1xuICAgICAgICBsYXN0RXJyb3IgPSBuZXcgVGhpbmtIaXZlQXBpRXJyb3IoYE5ldHdvcmsgZXJyb3I6ICR7ZXJyb3IubWVzc2FnZX1gLCA1MDMpO1xuICAgICAgICBpZiAoYXR0ZW1wdCA8IHJldHJpZXMpIHtcbiAgICAgICAgICBjb25zdCBiYWNrb2ZmID0gY2FsY3VsYXRlQmFja29mZihhdHRlbXB0KTtcbiAgICAgICAgICBkZWJ1Z0xvZyhgTmV0d29yayBlcnJvciwgcmV0cnlpbmcgYWZ0ZXIgJHtiYWNrb2ZmfW1zIChhdHRlbXB0ICR7YXR0ZW1wdCArIDF9LyR7cmV0cmllc30pYCk7XG4gICAgICAgICAgYXdhaXQgc2xlZXAoYmFja29mZik7XG4gICAgICAgICAgY29udGludWU7XG4gICAgICAgIH1cbiAgICAgICAgdGhyb3cgbGFzdEVycm9yO1xuICAgICAgfVxuXG4gICAgICAvLyBSZS10aHJvdyBUaGlua0hpdmUgZXJyb3JzIChub24tcmV0cnlhYmxlKVxuICAgICAgaWYgKGVycm9yIGluc3RhbmNlb2YgVGhpbmtIaXZlRXJyb3IpIHtcbiAgICAgICAgdGhyb3cgZXJyb3I7XG4gICAgICB9XG5cbiAgICAgIC8vIFVua25vd24gZXJyb3JcbiAgICAgIGxhc3RFcnJvciA9IGVycm9yIGluc3RhbmNlb2YgRXJyb3IgPyBlcnJvciA6IG5ldyBFcnJvcihTdHJpbmcoZXJyb3IpKTtcbiAgICAgIGlmIChhdHRlbXB0IDwgcmV0cmllcykge1xuICAgICAgICBjb25zdCBiYWNrb2ZmID0gY2FsY3VsYXRlQmFja29mZihhdHRlbXB0KTtcbiAgICAgICAgYXdhaXQgc2xlZXAoYmFja29mZik7XG4gICAgICAgIGNvbnRpbnVlO1xuICAgICAgfVxuICAgICAgdGhyb3cgbmV3IFRoaW5rSGl2ZUFwaUVycm9yKGBSZXF1ZXN0IGZhaWxlZDogJHtsYXN0RXJyb3IubWVzc2FnZX1gLCA1MDApO1xuICAgIH1cbiAgfVxuXG4gIC8vIFNob3VsZCBub3QgcmVhY2ggaGVyZSwgYnV0IGp1c3QgaW4gY2FzZVxuICB0aHJvdyBsYXN0RXJyb3IgfHwgbmV3IFRoaW5rSGl2ZUFwaUVycm9yKCdSZXF1ZXN0IGZhaWxlZCBhZnRlciBhbGwgcmV0cmllcycsIDUwMCk7XG59XG5cbi8qKlxuICogTWFrZSBhbiBBUEkgcmVxdWVzdCBhbmQgZXh0cmFjdCBkYXRhIGZyb20gcmVzcG9uc2Ugd3JhcHBlclxuICovXG5leHBvcnQgYXN5bmMgZnVuY3Rpb24gYXBpUmVxdWVzdFdpdGhEYXRhPFQ+KFxuICBwYXRoOiBzdHJpbmcsXG4gIG9wdGlvbnM6IFJlcXVlc3RPcHRpb25zID0ge31cbik6IFByb21pc2U8VD4ge1xuICBjb25zdCByZXNwb25zZSA9IGF3YWl0IGFwaVJlcXVlc3Q8QXBpUmVzcG9uc2U8VD4+KHBhdGgsIG9wdGlvbnMpO1xuICBpZiAoIXJlc3BvbnNlLnN1Y2Nlc3MpIHtcbiAgICB0aHJvdyBuZXcgVGhpbmtIaXZlQXBpRXJyb3IoXG4gICAgICByZXNwb25zZS5lcnJvcj8ubWVzc2FnZSB8fCAnVW5rbm93biBlcnJvcicsXG4gICAgICA1MDAsXG4gICAgICByZXNwb25zZS5lcnJvcj8uY29kZVxuICAgICk7XG4gIH1cbiAgcmV0dXJuIHJlc3BvbnNlLmRhdGEgYXMgVDtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gRVJST1JTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogQmFzZSBlcnJvciBjbGFzcyBmb3IgVGhpbmtIaXZlIFNESyBlcnJvcnNcbiAqL1xuZXhwb3J0IGNsYXNzIFRoaW5rSGl2ZUVycm9yIGV4dGVuZHMgRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgcHVibGljIHJlYWRvbmx5IGNvZGU6IHN0cmluZyxcbiAgICBwdWJsaWMgcmVhZG9ubHkgc3RhdHVzQ29kZT86IG51bWJlcixcbiAgICBwdWJsaWMgcmVhZG9ubHkgZGV0YWlscz86IFJlY29yZDxzdHJpbmcsIHVua25vd24+XG4gICkge1xuICAgIHN1cGVyKG1lc3NhZ2UpO1xuICAgIHRoaXMubmFtZSA9ICdUaGlua0hpdmVFcnJvcic7XG4gIH1cbn1cblxuLyoqXG4gKiBBUEkgcmVxdWVzdCBlcnJvciAtIHJldHVybmVkIGZyb20gVGhpbmtIaXZlIHNlcnZlclxuICovXG5leHBvcnQgY2xhc3MgVGhpbmtIaXZlQXBpRXJyb3IgZXh0ZW5kcyBUaGlua0hpdmVFcnJvciB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIG1lc3NhZ2U6IHN0cmluZyxcbiAgICBzdGF0dXNDb2RlOiBudW1iZXIsXG4gICAgY29kZT86IHN0cmluZ1xuICApIHtcbiAgICBzdXBlcihtZXNzYWdlLCBjb2RlIHx8ICdBUElfRVJST1InLCBzdGF0dXNDb2RlKTtcbiAgICB0aGlzLm5hbWUgPSAnVGhpbmtIaXZlQXBpRXJyb3InO1xuICB9XG59XG5cbi8qKlxuICogVmFsaWRhdGlvbiBlcnJvciAtIGludmFsaWQgaW5wdXQgcGFyYW1ldGVyc1xuICovXG5leHBvcnQgY2xhc3MgVGhpbmtIaXZlVmFsaWRhdGlvbkVycm9yIGV4dGVuZHMgVGhpbmtIaXZlRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihcbiAgICBtZXNzYWdlOiBzdHJpbmcsXG4gICAgcHVibGljIHJlYWRvbmx5IGZpZWxkPzogc3RyaW5nXG4gICkge1xuICAgIHN1cGVyKG1lc3NhZ2UsICdWQUxJREFUSU9OX0VSUk9SJywgNDAwLCBmaWVsZCA/IHsgZmllbGQgfSA6IHVuZGVmaW5lZCk7XG4gICAgdGhpcy5uYW1lID0gJ1RoaW5rSGl2ZVZhbGlkYXRpb25FcnJvcic7XG4gIH1cbn1cblxuLyoqXG4gKiBQZXJtaXNzaW9uIGRlbmllZCBlcnJvciAtIEFQSSBrZXkgbGFja3MgcmVxdWlyZWQgcGVybWlzc2lvbnNcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiB0cnkge1xuICogICBhd2FpdCB0aGlua0hpdmUudHJhY2VzLmNyZWF0ZSguLi4pO1xuICogfSBjYXRjaCAoZXJyb3IpIHtcbiAqICAgaWYgKGVycm9yIGluc3RhbmNlb2YgUGVybWlzc2lvbkRlbmllZEVycm9yKSB7XG4gKiAgICAgY29uc29sZS5sb2coJ0FQSSBrZXkgbmVlZHMgd3JpdGUgcGVybWlzc2lvbicpO1xuICogICB9XG4gKiB9XG4gKiBgYGBcbiAqL1xuZXhwb3J0IGNsYXNzIFBlcm1pc3Npb25EZW5pZWRFcnJvciBleHRlbmRzIFRoaW5rSGl2ZUVycm9yIHtcbiAgY29uc3RydWN0b3IobWVzc2FnZTogc3RyaW5nLCBkZXRhaWxzPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj4pIHtcbiAgICBzdXBlcihtZXNzYWdlLCAnUEVSTUlTU0lPTl9ERU5JRUQnLCA0MDMsIGRldGFpbHMpO1xuICAgIHRoaXMubmFtZSA9ICdQZXJtaXNzaW9uRGVuaWVkRXJyb3InO1xuICB9XG59XG5cbi8qKlxuICogQWdlbnQgc2NvcGUgdmlvbGF0aW9uIGVycm9yIC0gQVBJIGtleSBub3QgYXV0aG9yaXplZCBmb3IgdGhpcyBhZ2VudFxuICogQGV4YW1wbGVcbiAqIGBgYHR5cGVzY3JpcHRcbiAqIC8vIENyZWF0ZSBrZXkgc2NvcGVkIHRvIHNwZWNpZmljIGFnZW50c1xuICogY29uc3Qga2V5ID0gYXdhaXQgdGhpbmtIaXZlLmFwaUtleXMuY3JlYXRlKHtcbiAqICAgbmFtZTogJ0FnZW50IEEgS2V5JyxcbiAqICAgYWxsb3dlZEFnZW50SWRzOiBbJ2FnZW50LWEtaWQnXVxuICogfSk7XG4gKlxuICogLy8gQXR0ZW1wdGluZyB0byB1c2UgZm9yIEFnZW50IEIgd2lsbCB0aHJvdyBBZ2VudFNjb3BlRXJyb3JcbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgQWdlbnRTY29wZUVycm9yIGV4dGVuZHMgVGhpbmtIaXZlRXJyb3Ige1xuICBjb25zdHJ1Y3RvcihcbiAgICBhZ2VudElkOiBzdHJpbmcsXG4gICAgYWxsb3dlZEFnZW50czogc3RyaW5nW11cbiAgKSB7XG4gICAgc3VwZXIoXG4gICAgICBgQVBJIGtleSBub3QgYXV0aG9yaXplZCBmb3IgYWdlbnQgJHthZ2VudElkfWAsXG4gICAgICAnQUdFTlRfU0NPUEVfVklPTEFUSU9OJyxcbiAgICAgIDQwMyxcbiAgICAgIHsgYWdlbnRJZCwgYWxsb3dlZEFnZW50cyB9XG4gICAgKTtcbiAgICB0aGlzLm5hbWUgPSAnQWdlbnRTY29wZUVycm9yJztcbiAgfVxufVxuXG4vKipcbiAqIFJhdGUgbGltaXQgZXhjZWVkZWQgZXJyb3JcbiAqIEBleGFtcGxlXG4gKiBgYGB0eXBlc2NyaXB0XG4gKiB0cnkge1xuICogICBhd2FpdCB0aGlua0hpdmUudHJhY2VzLmNyZWF0ZSguLi4pO1xuICogfSBjYXRjaCAoZXJyb3IpIHtcbiAqICAgaWYgKGVycm9yIGluc3RhbmNlb2YgUmF0ZUxpbWl0RXJyb3IpIHtcbiAqICAgICAvLyBXYWl0IGFuZCByZXRyeVxuICogICAgIGF3YWl0IHNsZWVwKGVycm9yLnJldHJ5QWZ0ZXIpO1xuICogICAgIGF3YWl0IHRoaW5rSGl2ZS50cmFjZXMuY3JlYXRlKC4uLik7XG4gKiAgIH1cbiAqIH1cbiAqIGBgYFxuICovXG5leHBvcnQgY2xhc3MgUmF0ZUxpbWl0RXJyb3IgZXh0ZW5kcyBUaGlua0hpdmVFcnJvciB7XG4gIGNvbnN0cnVjdG9yKFxuICAgIHB1YmxpYyByZWFkb25seSByZXRyeUFmdGVyOiBudW1iZXJcbiAgKSB7XG4gICAgc3VwZXIoXG4gICAgICBgUmF0ZSBsaW1pdCBleGNlZWRlZC4gUmV0cnkgYWZ0ZXIgJHtyZXRyeUFmdGVyfW1zYCxcbiAgICAgICdSQVRFX0xJTUlUX0VYQ0VFREVEJyxcbiAgICAgIDQyOSxcbiAgICAgIHsgcmV0cnlBZnRlciB9XG4gICAgKTtcbiAgICB0aGlzLm5hbWUgPSAnUmF0ZUxpbWl0RXJyb3InO1xuICB9XG59XG5cbi8qKlxuICogSVAgd2hpdGVsaXN0IHZpb2xhdGlvbiBlcnJvclxuICovXG5leHBvcnQgY2xhc3MgSXBXaGl0ZWxpc3RFcnJvciBleHRlbmRzIFRoaW5rSGl2ZUVycm9yIHtcbiAgY29uc3RydWN0b3IoY2xpZW50SXA6IHN0cmluZykge1xuICAgIHN1cGVyKFxuICAgICAgJ1JlcXVlc3QgSVAgYWRkcmVzcyBpcyBub3QgYXV0aG9yaXplZCBmb3IgdGhpcyBBUEkga2V5JyxcbiAgICAgICdJUF9XSElURUxJU1RfVklPTEFUSU9OJyxcbiAgICAgIDQwMyxcbiAgICAgIHsgY2xpZW50SXAgfVxuICAgICk7XG4gICAgdGhpcy5uYW1lID0gJ0lwV2hpdGVsaXN0RXJyb3InO1xuICB9XG59XG4iXX0=
|
package/dist/core/config.d.ts
CHANGED
|
@@ -2,7 +2,7 @@
|
|
|
2
2
|
* ThinkHive SDK v3.0 - Configuration
|
|
3
3
|
*/
|
|
4
4
|
import type { InitOptions, Framework } from './types';
|
|
5
|
-
export declare const SDK_VERSION = "4.0
|
|
5
|
+
export declare const SDK_VERSION = "4.1.0";
|
|
6
6
|
export declare const DEFAULT_ENDPOINT = "https://app.thinkhive.ai";
|
|
7
7
|
export declare const DEFAULT_SERVICE_NAME = "my-ai-agent";
|
|
8
8
|
export interface ResolvedConfig {
|
package/dist/core/config.js
CHANGED
|
@@ -12,7 +12,7 @@ exports.debugLog = debugLog;
|
|
|
12
12
|
// ============================================================================
|
|
13
13
|
// CONSTANTS
|
|
14
14
|
// ============================================================================
|
|
15
|
-
exports.SDK_VERSION = '4.0
|
|
15
|
+
exports.SDK_VERSION = '4.1.0';
|
|
16
16
|
exports.DEFAULT_ENDPOINT = 'https://app.thinkhive.ai';
|
|
17
17
|
exports.DEFAULT_SERVICE_NAME = 'my-ai-agent';
|
|
18
18
|
let config = null;
|
|
@@ -72,4 +72,4 @@ function debugLog(...args) {
|
|
|
72
72
|
console.log('[ThinkHive]', ...args);
|
|
73
73
|
}
|
|
74
74
|
}
|
|
75
|
-
//# sourceMappingURL=data:application/json;base64,
|
|
75
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2NvcmUvY29uZmlnLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7R0FFRzs7O0FBb0NILGdDQXNCQztBQU1ELDhCQUtDO0FBS0Qsc0NBRUM7QUFLRCxrQ0FHQztBQUtELDRCQUlDO0FBekZELCtFQUErRTtBQUMvRSxZQUFZO0FBQ1osK0VBQStFO0FBRWxFLFFBQUEsV0FBVyxHQUFHLE9BQU8sQ0FBQztBQUN0QixRQUFBLGdCQUFnQixHQUFHLDBCQUEwQixDQUFDO0FBQzlDLFFBQUEsb0JBQW9CLEdBQUcsYUFBYSxDQUFDO0FBZ0JsRCxJQUFJLE1BQU0sR0FBMEIsSUFBSSxDQUFDO0FBQ3pDLElBQUksV0FBVyxHQUFHLEtBQUssQ0FBQztBQUV4QiwrRUFBK0U7QUFDL0UsbUJBQW1CO0FBQ25CLCtFQUErRTtBQUUvRTs7R0FFRztBQUNILFNBQWdCLFVBQVUsQ0FBQyxVQUF1QixFQUFFO0lBQ2xELE1BQU0sTUFBTSxHQUFHLE9BQU8sQ0FBQyxNQUFNLElBQUksT0FBTyxDQUFDLEdBQUcsQ0FBQyxpQkFBaUIsSUFBSSxFQUFFLENBQUM7SUFDckUsTUFBTSxPQUFPLEdBQUcsT0FBTyxDQUFDLE9BQU8sSUFBSSxPQUFPLENBQUMsR0FBRyxDQUFDLGtCQUFrQixJQUFJLEVBQUUsQ0FBQztJQUV4RSxJQUFJLENBQUMsTUFBTSxJQUFJLENBQUMsT0FBTyxFQUFFLENBQUM7UUFDeEIsTUFBTSxJQUFJLEtBQUssQ0FDYiw4RUFBOEUsQ0FDL0UsQ0FBQztJQUNKLENBQUM7SUFFRCxNQUFNLEdBQUc7UUFDUCxNQUFNO1FBQ04sT0FBTztRQUNQLFFBQVEsRUFBRSxPQUFPLENBQUMsUUFBUSxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsa0JBQWtCLElBQUksd0JBQWdCO1FBQ2hGLFdBQVcsRUFBRSxPQUFPLENBQUMsV0FBVyxJQUFJLE9BQU8sQ0FBQyxHQUFHLENBQUMsc0JBQXNCLElBQUksNEJBQW9CO1FBQzlGLGNBQWMsRUFBRSxPQUFPLENBQUMsY0FBYyxJQUFJLEtBQUs7UUFDL0MsVUFBVSxFQUFFLE9BQU8sQ0FBQyxVQUFVLElBQUksQ0FBQyxXQUFXLEVBQUUsUUFBUSxDQUFDO1FBQ3pELEtBQUssRUFBRSxPQUFPLENBQUMsS0FBSyxJQUFJLEtBQUs7S0FDOUIsQ0FBQztJQUVGLFdBQVcsR0FBRyxJQUFJLENBQUM7SUFDbkIsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVEOzs7R0FHRztBQUNILFNBQWdCLFNBQVM7SUFDdkIsSUFBSSxDQUFDLE1BQU0sSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQzVCLE1BQU0sSUFBSSxLQUFLLENBQUMsbURBQW1ELENBQUMsQ0FBQztJQUN2RSxDQUFDO0lBQ0QsT0FBTyxNQUFNLENBQUM7QUFDaEIsQ0FBQztBQUVEOztHQUVHO0FBQ0gsU0FBZ0IsYUFBYTtJQUMzQixPQUFPLFdBQVcsQ0FBQztBQUNyQixDQUFDO0FBRUQ7O0dBRUc7QUFDSCxTQUFnQixXQUFXO0lBQ3pCLE1BQU0sR0FBRyxJQUFJLENBQUM7SUFDZCxXQUFXLEdBQUcsS0FBSyxDQUFDO0FBQ3RCLENBQUM7QUFFRDs7R0FFRztBQUNILFNBQWdCLFFBQVEsQ0FBQyxHQUFHLElBQWU7SUFDekMsSUFBSSxNQUFNLEVBQUUsS0FBSyxFQUFFLENBQUM7UUFDbEIsT0FBTyxDQUFDLEdBQUcsQ0FBQyxhQUFhLEVBQUUsR0FBRyxJQUFJLENBQUMsQ0FBQztJQUN0QyxDQUFDO0FBQ0gsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhpbmtIaXZlIFNESyB2My4wIC0gQ29uZmlndXJhdGlvblxuICovXG5cbmltcG9ydCB0eXBlIHsgSW5pdE9wdGlvbnMsIEZyYW1ld29yayB9IGZyb20gJy4vdHlwZXMnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBDT05TVEFOVFNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuZXhwb3J0IGNvbnN0IFNES19WRVJTSU9OID0gJzQuMS4wJztcbmV4cG9ydCBjb25zdCBERUZBVUxUX0VORFBPSU5UID0gJ2h0dHBzOi8vYXBwLnRoaW5raGl2ZS5haSc7XG5leHBvcnQgY29uc3QgREVGQVVMVF9TRVJWSUNFX05BTUUgPSAnbXktYWktYWdlbnQnO1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBHTE9CQUwgQ09ORklHIFNUQVRFXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbmV4cG9ydCBpbnRlcmZhY2UgUmVzb2x2ZWRDb25maWcge1xuICBhcGlLZXk6IHN0cmluZztcbiAgYWdlbnRJZDogc3RyaW5nO1xuICBlbmRwb2ludDogc3RyaW5nO1xuICBzZXJ2aWNlTmFtZTogc3RyaW5nO1xuICBhdXRvSW5zdHJ1bWVudDogYm9vbGVhbjtcbiAgZnJhbWV3b3JrczogRnJhbWV3b3JrW107XG4gIGRlYnVnOiBib29sZWFuO1xufVxuXG5sZXQgY29uZmlnOiBSZXNvbHZlZENvbmZpZyB8IG51bGwgPSBudWxsO1xubGV0IGluaXRpYWxpemVkID0gZmFsc2U7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIENPTkZJRyBGVU5DVElPTlNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqXG4gKiBJbml0aWFsaXplIGNvbmZpZ3VyYXRpb24gZnJvbSBvcHRpb25zXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBpbml0Q29uZmlnKG9wdGlvbnM6IEluaXRPcHRpb25zID0ge30pOiBSZXNvbHZlZENvbmZpZyB7XG4gIGNvbnN0IGFwaUtleSA9IG9wdGlvbnMuYXBpS2V5IHx8IHByb2Nlc3MuZW52LlRISU5LSElWRV9BUElfS0VZIHx8ICcnO1xuICBjb25zdCBhZ2VudElkID0gb3B0aW9ucy5hZ2VudElkIHx8IHByb2Nlc3MuZW52LlRISU5LSElWRV9BR0VOVF9JRCB8fCAnJztcblxuICBpZiAoIWFwaUtleSAmJiAhYWdlbnRJZCkge1xuICAgIHRocm93IG5ldyBFcnJvcihcbiAgICAgICdFaXRoZXIgYXBpS2V5IG9yIGFnZW50SWQgbXVzdCBiZSBwcm92aWRlZCAob3Igc2V0IFRISU5LSElWRV9BUElfS0VZIGVudiB2YXIpJ1xuICAgICk7XG4gIH1cblxuICBjb25maWcgPSB7XG4gICAgYXBpS2V5LFxuICAgIGFnZW50SWQsXG4gICAgZW5kcG9pbnQ6IG9wdGlvbnMuZW5kcG9pbnQgfHwgcHJvY2Vzcy5lbnYuVEhJTktISVZFX0VORFBPSU5UIHx8IERFRkFVTFRfRU5EUE9JTlQsXG4gICAgc2VydmljZU5hbWU6IG9wdGlvbnMuc2VydmljZU5hbWUgfHwgcHJvY2Vzcy5lbnYuVEhJTktISVZFX1NFUlZJQ0VfTkFNRSB8fCBERUZBVUxUX1NFUlZJQ0VfTkFNRSxcbiAgICBhdXRvSW5zdHJ1bWVudDogb3B0aW9ucy5hdXRvSW5zdHJ1bWVudCA/PyBmYWxzZSxcbiAgICBmcmFtZXdvcmtzOiBvcHRpb25zLmZyYW1ld29ya3MgfHwgWydsYW5nY2hhaW4nLCAnb3BlbmFpJ10sXG4gICAgZGVidWc6IG9wdGlvbnMuZGVidWcgPz8gZmFsc2UsXG4gIH07XG5cbiAgaW5pdGlhbGl6ZWQgPSB0cnVlO1xuICByZXR1cm4gY29uZmlnO1xufVxuXG4vKipcbiAqIEdldCBjdXJyZW50IGNvbmZpZ3VyYXRpb25cbiAqIEB0aHJvd3MgaWYgbm90IGluaXRpYWxpemVkXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBnZXRDb25maWcoKTogUmVzb2x2ZWRDb25maWcge1xuICBpZiAoIWNvbmZpZyB8fCAhaW5pdGlhbGl6ZWQpIHtcbiAgICB0aHJvdyBuZXcgRXJyb3IoJ1RoaW5rSGl2ZSBTREsgbm90IGluaXRpYWxpemVkLiBDYWxsIGluaXQoKSBmaXJzdC4nKTtcbiAgfVxuICByZXR1cm4gY29uZmlnO1xufVxuXG4vKipcbiAqIENoZWNrIGlmIFNESyBpcyBpbml0aWFsaXplZFxuICovXG5leHBvcnQgZnVuY3Rpb24gaXNJbml0aWFsaXplZCgpOiBib29sZWFuIHtcbiAgcmV0dXJuIGluaXRpYWxpemVkO1xufVxuXG4vKipcbiAqIFJlc2V0IGNvbmZpZ3VyYXRpb24gKGZvciB0ZXN0aW5nKVxuICovXG5leHBvcnQgZnVuY3Rpb24gcmVzZXRDb25maWcoKTogdm9pZCB7XG4gIGNvbmZpZyA9IG51bGw7XG4gIGluaXRpYWxpemVkID0gZmFsc2U7XG59XG5cbi8qKlxuICogRGVidWcgbG9nIGhlbHBlclxuICovXG5leHBvcnQgZnVuY3Rpb24gZGVidWdMb2coLi4uYXJnczogdW5rbm93bltdKTogdm9pZCB7XG4gIGlmIChjb25maWc/LmRlYnVnKSB7XG4gICAgY29uc29sZS5sb2coJ1tUaGlua0hpdmVdJywgLi4uYXJncyk7XG4gIH1cbn1cbiJdfQ==
|
|
@@ -0,0 +1,70 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ThinkHive Guardrails SDK Module
|
|
3
|
+
* Real-time content scanning using centralized SDK configuration
|
|
4
|
+
*/
|
|
5
|
+
export interface ScanRequest {
|
|
6
|
+
input?: string;
|
|
7
|
+
output?: string;
|
|
8
|
+
toolCall?: {
|
|
9
|
+
name: string;
|
|
10
|
+
arguments: Record<string, unknown>;
|
|
11
|
+
};
|
|
12
|
+
scanners?: string[];
|
|
13
|
+
policyId?: string;
|
|
14
|
+
config?: Record<string, Record<string, unknown>>;
|
|
15
|
+
options?: {
|
|
16
|
+
timeout?: number;
|
|
17
|
+
failOpen?: boolean;
|
|
18
|
+
shortCircuit?: boolean;
|
|
19
|
+
returnRedacted?: boolean;
|
|
20
|
+
};
|
|
21
|
+
}
|
|
22
|
+
export interface Finding {
|
|
23
|
+
type: string;
|
|
24
|
+
value: string;
|
|
25
|
+
start: number;
|
|
26
|
+
end: number;
|
|
27
|
+
confidence: number;
|
|
28
|
+
metadata?: Record<string, unknown>;
|
|
29
|
+
}
|
|
30
|
+
export interface ScannerResult {
|
|
31
|
+
scanner: string;
|
|
32
|
+
status: 'completed' | 'timeout' | 'error';
|
|
33
|
+
action: 'pass' | 'block' | 'redact' | 'flag';
|
|
34
|
+
findings: Finding[];
|
|
35
|
+
latencyMs: number;
|
|
36
|
+
sanitizedContent?: string;
|
|
37
|
+
}
|
|
38
|
+
export interface ScanResponse {
|
|
39
|
+
action: 'pass' | 'block' | 'redact' | 'flag';
|
|
40
|
+
actionReason?: string;
|
|
41
|
+
redactedInput?: string;
|
|
42
|
+
redactedOutput?: string;
|
|
43
|
+
results: Record<string, ScannerResult>;
|
|
44
|
+
metadata: {
|
|
45
|
+
scanId: string;
|
|
46
|
+
totalLatencyMs: number;
|
|
47
|
+
scannersExecuted: number;
|
|
48
|
+
scannersBlocked: number;
|
|
49
|
+
scannersFlagged: number;
|
|
50
|
+
scannersTimedOut: number;
|
|
51
|
+
cached: boolean;
|
|
52
|
+
};
|
|
53
|
+
}
|
|
54
|
+
/**
|
|
55
|
+
* Guardrails API client
|
|
56
|
+
* Real-time content scanning for PII, secrets, keywords, and more
|
|
57
|
+
*/
|
|
58
|
+
export declare const guardrails: {
|
|
59
|
+
/**
|
|
60
|
+
* Scan content for policy violations
|
|
61
|
+
*/
|
|
62
|
+
scan(request: ScanRequest): Promise<ScanResponse>;
|
|
63
|
+
/**
|
|
64
|
+
* List available scanners
|
|
65
|
+
*/
|
|
66
|
+
listScanners(): Promise<Array<{
|
|
67
|
+
name: string;
|
|
68
|
+
description: string;
|
|
69
|
+
}>>;
|
|
70
|
+
};
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ThinkHive Guardrails SDK Module
|
|
4
|
+
* Real-time content scanning using centralized SDK configuration
|
|
5
|
+
*/
|
|
6
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
7
|
+
exports.guardrails = void 0;
|
|
8
|
+
const client_1 = require("./core/client");
|
|
9
|
+
/**
|
|
10
|
+
* Guardrails API client
|
|
11
|
+
* Real-time content scanning for PII, secrets, keywords, and more
|
|
12
|
+
*/
|
|
13
|
+
exports.guardrails = {
|
|
14
|
+
/**
|
|
15
|
+
* Scan content for policy violations
|
|
16
|
+
*/
|
|
17
|
+
async scan(request) {
|
|
18
|
+
return (0, client_1.apiRequestWithData)('/v1/guardrails/scan', {
|
|
19
|
+
method: 'POST',
|
|
20
|
+
body: request,
|
|
21
|
+
rawPath: true,
|
|
22
|
+
});
|
|
23
|
+
},
|
|
24
|
+
/**
|
|
25
|
+
* List available scanners
|
|
26
|
+
*/
|
|
27
|
+
async listScanners() {
|
|
28
|
+
const result = await (0, client_1.apiRequestWithData)('/v1/guardrails/scanners', {
|
|
29
|
+
rawPath: true,
|
|
30
|
+
});
|
|
31
|
+
return result.scanners;
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZ3VhcmRyYWlscy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uL3NyYy9ndWFyZHJhaWxzLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7QUFBQTs7O0dBR0c7OztBQUVILDBDQUFtRDtBQW9EbkQ7OztHQUdHO0FBQ1UsUUFBQSxVQUFVLEdBQUc7SUFDeEI7O09BRUc7SUFDSCxLQUFLLENBQUMsSUFBSSxDQUFDLE9BQW9CO1FBQzdCLE9BQU8sSUFBQSwyQkFBa0IsRUFBZSxxQkFBcUIsRUFBRTtZQUM3RCxNQUFNLEVBQUUsTUFBTTtZQUNkLElBQUksRUFBRSxPQUFPO1lBQ2IsT0FBTyxFQUFFLElBQUk7U0FDZCxDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7O09BRUc7SUFDSCxLQUFLLENBQUMsWUFBWTtRQUNoQixNQUFNLE1BQU0sR0FBRyxNQUFNLElBQUEsMkJBQWtCLEVBQTZELHlCQUF5QixFQUFFO1lBQzdILE9BQU8sRUFBRSxJQUFJO1NBQ2QsQ0FBQyxDQUFDO1FBQ0gsT0FBTyxNQUFNLENBQUMsUUFBUSxDQUFDO0lBQ3pCLENBQUM7Q0FDRixDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGlua0hpdmUgR3VhcmRyYWlscyBTREsgTW9kdWxlXG4gKiBSZWFsLXRpbWUgY29udGVudCBzY2FubmluZyB1c2luZyBjZW50cmFsaXplZCBTREsgY29uZmlndXJhdGlvblxuICovXG5cbmltcG9ydCB7IGFwaVJlcXVlc3RXaXRoRGF0YSB9IGZyb20gJy4vY29yZS9jbGllbnQnO1xuXG5leHBvcnQgaW50ZXJmYWNlIFNjYW5SZXF1ZXN0IHtcbiAgaW5wdXQ/OiBzdHJpbmc7XG4gIG91dHB1dD86IHN0cmluZztcbiAgdG9vbENhbGw/OiB7IG5hbWU6IHN0cmluZzsgYXJndW1lbnRzOiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPiB9O1xuICBzY2FubmVycz86IHN0cmluZ1tdO1xuICBwb2xpY3lJZD86IHN0cmluZztcbiAgY29uZmlnPzogUmVjb3JkPHN0cmluZywgUmVjb3JkPHN0cmluZywgdW5rbm93bj4+O1xuICBvcHRpb25zPzoge1xuICAgIHRpbWVvdXQ/OiBudW1iZXI7XG4gICAgZmFpbE9wZW4/OiBib29sZWFuO1xuICAgIHNob3J0Q2lyY3VpdD86IGJvb2xlYW47XG4gICAgcmV0dXJuUmVkYWN0ZWQ/OiBib29sZWFuO1xuICB9O1xufVxuXG5leHBvcnQgaW50ZXJmYWNlIEZpbmRpbmcge1xuICB0eXBlOiBzdHJpbmc7XG4gIHZhbHVlOiBzdHJpbmc7XG4gIHN0YXJ0OiBudW1iZXI7XG4gIGVuZDogbnVtYmVyO1xuICBjb25maWRlbmNlOiBudW1iZXI7XG4gIG1ldGFkYXRhPzogUmVjb3JkPHN0cmluZywgdW5rbm93bj47XG59XG5cbmV4cG9ydCBpbnRlcmZhY2UgU2Nhbm5lclJlc3VsdCB7XG4gIHNjYW5uZXI6IHN0cmluZztcbiAgc3RhdHVzOiAnY29tcGxldGVkJyB8ICd0aW1lb3V0JyB8ICdlcnJvcic7XG4gIGFjdGlvbjogJ3Bhc3MnIHwgJ2Jsb2NrJyB8ICdyZWRhY3QnIHwgJ2ZsYWcnO1xuICBmaW5kaW5nczogRmluZGluZ1tdO1xuICBsYXRlbmN5TXM6IG51bWJlcjtcbiAgc2FuaXRpemVkQ29udGVudD86IHN0cmluZztcbn1cblxuZXhwb3J0IGludGVyZmFjZSBTY2FuUmVzcG9uc2Uge1xuICBhY3Rpb246ICdwYXNzJyB8ICdibG9jaycgfCAncmVkYWN0JyB8ICdmbGFnJztcbiAgYWN0aW9uUmVhc29uPzogc3RyaW5nO1xuICByZWRhY3RlZElucHV0Pzogc3RyaW5nO1xuICByZWRhY3RlZE91dHB1dD86IHN0cmluZztcbiAgcmVzdWx0czogUmVjb3JkPHN0cmluZywgU2Nhbm5lclJlc3VsdD47XG4gIG1ldGFkYXRhOiB7XG4gICAgc2NhbklkOiBzdHJpbmc7XG4gICAgdG90YWxMYXRlbmN5TXM6IG51bWJlcjtcbiAgICBzY2FubmVyc0V4ZWN1dGVkOiBudW1iZXI7XG4gICAgc2Nhbm5lcnNCbG9ja2VkOiBudW1iZXI7XG4gICAgc2Nhbm5lcnNGbGFnZ2VkOiBudW1iZXI7XG4gICAgc2Nhbm5lcnNUaW1lZE91dDogbnVtYmVyO1xuICAgIGNhY2hlZDogYm9vbGVhbjtcbiAgfTtcbn1cblxuLyoqXG4gKiBHdWFyZHJhaWxzIEFQSSBjbGllbnRcbiAqIFJlYWwtdGltZSBjb250ZW50IHNjYW5uaW5nIGZvciBQSUksIHNlY3JldHMsIGtleXdvcmRzLCBhbmQgbW9yZVxuICovXG5leHBvcnQgY29uc3QgZ3VhcmRyYWlscyA9IHtcbiAgLyoqXG4gICAqIFNjYW4gY29udGVudCBmb3IgcG9saWN5IHZpb2xhdGlvbnNcbiAgICovXG4gIGFzeW5jIHNjYW4ocmVxdWVzdDogU2NhblJlcXVlc3QpOiBQcm9taXNlPFNjYW5SZXNwb25zZT4ge1xuICAgIHJldHVybiBhcGlSZXF1ZXN0V2l0aERhdGE8U2NhblJlc3BvbnNlPignL3YxL2d1YXJkcmFpbHMvc2NhbicsIHtcbiAgICAgIG1ldGhvZDogJ1BPU1QnLFxuICAgICAgYm9keTogcmVxdWVzdCxcbiAgICAgIHJhd1BhdGg6IHRydWUsXG4gICAgfSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIExpc3QgYXZhaWxhYmxlIHNjYW5uZXJzXG4gICAqL1xuICBhc3luYyBsaXN0U2Nhbm5lcnMoKTogUHJvbWlzZTxBcnJheTx7IG5hbWU6IHN0cmluZzsgZGVzY3JpcHRpb246IHN0cmluZyB9Pj4ge1xuICAgIGNvbnN0IHJlc3VsdCA9IGF3YWl0IGFwaVJlcXVlc3RXaXRoRGF0YTx7IHNjYW5uZXJzOiBBcnJheTx7IG5hbWU6IHN0cmluZzsgZGVzY3JpcHRpb246IHN0cmluZyB9PiB9PignL3YxL2d1YXJkcmFpbHMvc2Nhbm5lcnMnLCB7XG4gICAgICByYXdQYXRoOiB0cnVlLFxuICAgIH0pO1xuICAgIHJldHVybiByZXN1bHQuc2Nhbm5lcnM7XG4gIH0sXG59O1xuIl19
|