@thinkhive/sdk 4.1.0 → 4.2.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +161 -2
- 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/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/guardrails.d.ts +70 -0
- package/dist/guardrails.js +34 -0
- package/dist/index.d.ts +105 -2
- package/dist/index.js +50 -4
- package/package.json +1 -1
|
@@ -0,0 +1,126 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ThinkHive SDK - Eval Runs API
|
|
4
|
+
*
|
|
5
|
+
* Evaluation run management for agent quality assessment
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.default = exports.evalRuns = void 0;
|
|
9
|
+
const client_1 = require("../core/client");
|
|
10
|
+
// ============================================================================
|
|
11
|
+
// EVAL RUNS API CLIENT
|
|
12
|
+
// ============================================================================
|
|
13
|
+
/**
|
|
14
|
+
* Evaluation runs API client for managing agent evaluation workflows
|
|
15
|
+
*/
|
|
16
|
+
exports.evalRuns = {
|
|
17
|
+
/**
|
|
18
|
+
* Create a new evaluation run for an agent
|
|
19
|
+
*
|
|
20
|
+
* @param agentId - The agent to evaluate
|
|
21
|
+
* @param opts - Optional configuration for the evaluation run
|
|
22
|
+
* @returns The created evaluation run
|
|
23
|
+
*/
|
|
24
|
+
async create(agentId, opts) {
|
|
25
|
+
return (0, client_1.apiRequestWithData)('/eval-runs', {
|
|
26
|
+
method: 'POST',
|
|
27
|
+
body: { agentId, ...opts },
|
|
28
|
+
apiVersion: 'none',
|
|
29
|
+
});
|
|
30
|
+
},
|
|
31
|
+
/**
|
|
32
|
+
* Get an evaluation run by ID
|
|
33
|
+
*
|
|
34
|
+
* @param runId - The evaluation run ID
|
|
35
|
+
* @returns The evaluation run details
|
|
36
|
+
*/
|
|
37
|
+
async get(runId) {
|
|
38
|
+
return (0, client_1.apiRequestWithData)(`/eval-runs/${runId}`, {
|
|
39
|
+
apiVersion: 'none',
|
|
40
|
+
});
|
|
41
|
+
},
|
|
42
|
+
/**
|
|
43
|
+
* Get results for an evaluation run
|
|
44
|
+
*
|
|
45
|
+
* @param runId - The evaluation run ID
|
|
46
|
+
* @param opts - Pagination and filter options
|
|
47
|
+
* @returns Paginated evaluation results
|
|
48
|
+
*/
|
|
49
|
+
async getResults(runId, opts) {
|
|
50
|
+
const params = new URLSearchParams();
|
|
51
|
+
if (opts?.limit !== undefined)
|
|
52
|
+
params.set('limit', String(opts.limit));
|
|
53
|
+
if (opts?.offset !== undefined)
|
|
54
|
+
params.set('offset', String(opts.offset));
|
|
55
|
+
if (opts?.passedOnly !== undefined)
|
|
56
|
+
params.set('passedOnly', String(opts.passedOnly));
|
|
57
|
+
if (opts?.failedOnly !== undefined)
|
|
58
|
+
params.set('failedOnly', String(opts.failedOnly));
|
|
59
|
+
const query = params.toString();
|
|
60
|
+
return (0, client_1.apiRequestWithData)(`/eval-runs/${runId}/results${query ? `?${query}` : ''}`, {
|
|
61
|
+
apiVersion: 'none',
|
|
62
|
+
});
|
|
63
|
+
},
|
|
64
|
+
/**
|
|
65
|
+
* List evaluation runs with optional filters
|
|
66
|
+
*
|
|
67
|
+
* @param opts - Filter and pagination options
|
|
68
|
+
* @returns List of evaluation runs
|
|
69
|
+
*/
|
|
70
|
+
async list(opts) {
|
|
71
|
+
const params = new URLSearchParams();
|
|
72
|
+
if (opts?.agentId)
|
|
73
|
+
params.set('agentId', opts.agentId);
|
|
74
|
+
if (opts?.limit !== undefined)
|
|
75
|
+
params.set('limit', String(opts.limit));
|
|
76
|
+
const query = params.toString();
|
|
77
|
+
return (0, client_1.apiRequestWithData)(`/eval-runs${query ? `?${query}` : ''}`, {
|
|
78
|
+
apiVersion: 'none',
|
|
79
|
+
});
|
|
80
|
+
},
|
|
81
|
+
/**
|
|
82
|
+
* Estimate the cost of running an evaluation
|
|
83
|
+
*
|
|
84
|
+
* @param agentId - The agent to estimate cost for
|
|
85
|
+
* @param opts - Evaluation configuration for cost estimation
|
|
86
|
+
* @returns Cost estimate details
|
|
87
|
+
*/
|
|
88
|
+
async estimateCost(agentId, opts) {
|
|
89
|
+
return (0, client_1.apiRequestWithData)('/eval-runs/estimate-cost', {
|
|
90
|
+
method: 'POST',
|
|
91
|
+
body: { agentId, ...opts },
|
|
92
|
+
apiVersion: 'none',
|
|
93
|
+
});
|
|
94
|
+
},
|
|
95
|
+
/**
|
|
96
|
+
* Get evaluation results for a specific trace
|
|
97
|
+
*
|
|
98
|
+
* @param traceId - The trace ID to get results for
|
|
99
|
+
* @param opts - Options for filtering results
|
|
100
|
+
* @returns Evaluation results for the trace
|
|
101
|
+
*/
|
|
102
|
+
async getTraceResults(traceId, opts) {
|
|
103
|
+
const params = new URLSearchParams();
|
|
104
|
+
if (opts?.latest !== undefined)
|
|
105
|
+
params.set('latest', String(opts.latest));
|
|
106
|
+
if (opts?.includeCriteria !== undefined)
|
|
107
|
+
params.set('includeCriteria', String(opts.includeCriteria));
|
|
108
|
+
const query = params.toString();
|
|
109
|
+
return (0, client_1.apiRequestWithData)(`/eval-runs/trace/${traceId}${query ? `?${query}` : ''}`, {
|
|
110
|
+
apiVersion: 'none',
|
|
111
|
+
});
|
|
112
|
+
},
|
|
113
|
+
/**
|
|
114
|
+
* Delete an evaluation run
|
|
115
|
+
*
|
|
116
|
+
* @param runId - The evaluation run ID to delete
|
|
117
|
+
*/
|
|
118
|
+
async remove(runId) {
|
|
119
|
+
return (0, client_1.apiRequest)(`/eval-runs/${runId}`, {
|
|
120
|
+
method: 'DELETE',
|
|
121
|
+
apiVersion: 'none',
|
|
122
|
+
});
|
|
123
|
+
},
|
|
124
|
+
};
|
|
125
|
+
exports.default = exports.evalRuns;
|
|
126
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiZXZhbC1ydW5zLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwaS9ldmFsLXJ1bnMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7O0dBSUc7OztBQUVILDJDQUFnRTtBQXdFaEUsK0VBQStFO0FBQy9FLHVCQUF1QjtBQUN2QiwrRUFBK0U7QUFFL0U7O0dBRUc7QUFDVSxRQUFBLFFBQVEsR0FBRztJQUN0Qjs7Ozs7O09BTUc7SUFDSCxLQUFLLENBQUMsTUFBTSxDQUFDLE9BQWUsRUFBRSxJQUEyQjtRQUN2RCxPQUFPLElBQUEsMkJBQWtCLEVBQVUsWUFBWSxFQUFFO1lBQy9DLE1BQU0sRUFBRSxNQUFNO1lBQ2QsSUFBSSxFQUFFLEVBQUUsT0FBTyxFQUFFLEdBQUcsSUFBSSxFQUFFO1lBQzFCLFVBQVUsRUFBRSxNQUFNO1NBQ25CLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQyxHQUFHLENBQUMsS0FBYTtRQUNyQixPQUFPLElBQUEsMkJBQWtCLEVBQVUsY0FBYyxLQUFLLEVBQUUsRUFBRTtZQUN4RCxVQUFVLEVBQUUsTUFBTTtTQUNuQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsS0FBSyxDQUFDLFVBQVUsQ0FBQyxLQUFhLEVBQUUsSUFBK0I7UUFNN0QsTUFBTSxNQUFNLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztRQUNyQyxJQUFJLElBQUksRUFBRSxLQUFLLEtBQUssU0FBUztZQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsT0FBTyxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsS0FBSyxDQUFDLENBQUMsQ0FBQztRQUN2RSxJQUFJLElBQUksRUFBRSxNQUFNLEtBQUssU0FBUztZQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLE1BQU0sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUMsQ0FBQztRQUMxRSxJQUFJLElBQUksRUFB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QW9ITyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhpbmtIaXZlIFNESyAtIEV2YWwgUnVucyBBUElcbiAqXG4gKiBFdmFsdWF0aW9uIHJ1biBtYW5hZ2VtZW50IGZvciBhZ2VudCBxdWFsaXR5IGFzc2Vzc21lbnRcbiAqL1xuXG5pbXBvcnQgeyBhcGlSZXF1ZXN0LCBhcGlSZXF1ZXN0V2l0aERhdGEgfSBmcm9tICcuLi9jb3JlL2NsaWVudCc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRZUEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBPcHRpb25zIGZvciBjcmVhdGluZyBhbiBldmFsdWF0aW9uIHJ1biAqL1xuZXhwb3J0IGludGVyZmFjZSBDcmVhdGVFdmFsUnVuT3B0aW9ucyB7XG4gIHRyYWNlSWRzPzogc3RyaW5nW107XG4gIGNyaXRlcmlhSWRzPzogc3RyaW5nW107XG4gIGNvbmZpZGVuY2VMZXZlbD86IG51bWJlcjtcbiAgdXNlTExNPzogYm9vbGVhbjtcbn1cblxuLyoqIE9wdGlvbnMgZm9yIGxpc3RpbmcgZXZhbHVhdGlvbiBydW4gcmVzdWx0cyAqL1xuZXhwb3J0IGludGVyZmFjZSBHZXRFdmFsUnVuUmVzdWx0c09wdGlvbnMge1xuICBsaW1pdD86IG51bWJlcjtcbiAgb2Zmc2V0PzogbnVtYmVyO1xuICBwYXNzZWRPbmx5PzogYm9vbGVhbjtcbiAgZmFpbGVkT25seT86IGJvb2xlYW47XG59XG5cbi8qKiBPcHRpb25zIGZvciBsaXN0aW5nIGV2YWx1YXRpb24gcnVucyAqL1xuZXhwb3J0IGludGVyZmFjZSBMaXN0RXZhbFJ1bnNPcHRpb25zIHtcbiAgYWdlbnRJZD86IHN0cmluZztcbiAgbGltaXQ/OiBudW1iZXI7XG59XG5cbi8qKiBPcHRpb25zIGZvciBlc3RpbWF0aW5nIGV2YWx1YXRpb24gY29zdCAqL1xuZXhwb3J0IGludGVyZmFjZSBFc3RpbWF0ZUNvc3RPcHRpb25zIHtcbiAgdHJhY2VJZHM/OiBzdHJpbmdbXTtcbiAgY3JpdGVyaWFJZHM/OiBzdHJpbmdbXTtcbiAgY29uZmlkZW5jZUxldmVsPzogbnVtYmVyO1xuICB1c2VMTE0/OiBib29sZWFuO1xufVxuXG4vKiogT3B0aW9ucyBmb3IgZ2V0dGluZyB0cmFjZS1sZXZlbCByZXN1bHRzICovXG5leHBvcnQgaW50ZXJmYWNlIEdldFRyYWNlUmVzdWx0c09wdGlvbnMge1xuICBsYXRlc3Q/OiBib29sZWFuO1xuICBpbmNsdWRlQ3JpdGVyaWE/OiBib29sZWFuO1xufVxuXG4vKiogQW4gZXZhbHVhdGlvbiBydW4gKi9cbmV4cG9ydCBpbnRlcmZhY2UgRXZhbFJ1biB7XG4gIGlkOiBzdHJpbmc7XG4gIGFnZW50SWQ6IHN0cmluZztcbiAgc3RhdHVzOiBzdHJpbmc7XG4gIHRyYWNlQ291bnQ6IG51bWJlcjtcbiAgY3JpdGVyaWFDb3VudDogbnVtYmVyO1xuICBjcmVhdGVkQXQ6IHN0cmluZztcbiAgY29tcGxldGVkQXQ/OiBzdHJpbmc7XG59XG5cbi8qKiBBIHNpbmdsZSBldmFsdWF0aW9uIHJlc3VsdCAqL1xuZXhwb3J0IGludGVyZmFjZSBFdmFsUmVzdWx0IHtcbiAgaWQ6IHN0cmluZztcbiAgcnVuSWQ6IHN0cmluZztcbiAgdHJhY2VJZDogc3RyaW5nO1xuICBjcml0ZXJpb25JZDogc3RyaW5nO1xuICBwYXNzZWQ6IGJvb2xlYW47XG4gIHNjb3JlOiBudW1iZXI7XG4gIHJlYXNvbmluZz86IHN0cmluZztcbn1cblxuLyoqIENvc3QgZXN0aW1hdGUgZm9yIGFuIGV2YWx1YXRpb24gcnVuICovXG5leHBvcnQgaW50ZXJmYWNlIEV2YWxDb3N0RXN0aW1hdGUge1xuICBlc3RpbWF0ZWRUcmFjZXM6IG51bWJlcjtcbiAgZXN0aW1hdGVkQ3JpdGVyaWE6IG51bWJlcjtcbiAgZXN0aW1hdGVkQ29zdDogbnVtYmVyO1xuICBlc3RpbWF0ZWRDcmVkaXRzOiBudW1iZXI7XG59XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIEVWQUwgUlVOUyBBUEkgQ0xJRU5UXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogRXZhbHVhdGlvbiBydW5zIEFQSSBjbGllbnQgZm9yIG1hbmFnaW5nIGFnZW50IGV2YWx1YXRpb24gd29ya2Zsb3dzXG4gKi9cbmV4cG9ydCBjb25zdCBldmFsUnVucyA9IHtcbiAgLyoqXG4gICAqIENyZWF0ZSBhIG5ldyBldmFsdWF0aW9uIHJ1biBmb3IgYW4gYWdlbnRcbiAgICpcbiAgICogQHBhcmFtIGFnZW50SWQgLSBUaGUgYWdlbnQgdG8gZXZhbHVhdGVcbiAgICogQHBhcmFtIG9wdHMgLSBPcHRpb25hbCBjb25maWd1cmF0aW9uIGZvciB0aGUgZXZhbHVhdGlvbiBydW5cbiAgICogQHJldHVybnMgVGhlIGNyZWF0ZWQgZXZhbHVhdGlvbiBydW5cbiAgICovXG4gIGFzeW5jIGNyZWF0ZShhZ2VudElkOiBzdHJpbmcsIG9wdHM/OiBDcmVhdGVFdmFsUnVuT3B0aW9ucyk6IFByb21pc2U8RXZhbFJ1bj4ge1xuICAgIHJldHVybiBhcGlSZXF1ZXN0V2l0aERhdGE8RXZhbFJ1bj4oJy9ldmFsLXJ1bnMnLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IHsgYWdlbnRJZCwgLi4ub3B0cyB9LFxuICAgICAgYXBpVmVyc2lvbjogJ25vbmUnLFxuICAgIH0pO1xuICB9LFxuXG4gIC8qKlxuICAgKiBHZXQgYW4gZXZhbHVhdGlvbiBydW4gYnkgSURcbiAgICpcbiAgICogQHBhcmFtIHJ1bklkIC0gVGhlIGV2YWx1YXRpb24gcnVuIElEXG4gICAqIEByZXR1cm5zIFRoZSBldmFsdWF0aW9uIHJ1biBkZXRhaWxzXG4gICAqL1xuICBhc3luYyBnZXQocnVuSWQ6IHN0cmluZyk6IFByb21pc2U8RXZhbFJ1bj4ge1xuICAgIHJldHVybiBhcGlSZXF1ZXN0V2l0aERhdGE8RXZhbFJ1bj4oYC9ldmFsLXJ1bnMvJHtydW5JZH1gLCB7XG4gICAgICBhcGlWZXJzaW9uOiAnbm9uZScsXG4gICAgfSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIEdldCByZXN1bHRzIGZvciBhbiBldmFsdWF0aW9uIHJ1blxuICAgKlxuICAgKiBAcGFyYW0gcnVuSWQgLSBUaGUgZXZhbHVhdGlvbiBydW4gSURcbiAgICogQHBhcmFtIG9wdHMgLSBQYWdpbmF0aW9uIGFuZCBmaWx0ZXIgb3B0aW9uc1xuICAgKiBAcmV0dXJucyBQYWdpbmF0ZWQgZXZhbHVhdGlvbiByZXN1bHRzXG4gICAqL1xuICBhc3luYyBnZXRSZXN1bHRzKHJ1bklkOiBzdHJpbmcsIG9wdHM/OiBHZXRFdmFsUnVuUmVzdWx0c09wdGlvbnMpOiBQcm9taXNlPHtcbiAgICByZXN1bHRzOiBFdmFsUmVzdWx0W107XG4gICAgbGltaXQ6IG51bWJlcjtcbiAgICBvZmZzZXQ6IG51bWJlcjtcbiAgICBoYXNNb3JlOiBib29sZWFuO1xuICB9PiB7XG4gICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcygpO1xuICAgIGlmIChvcHRzPy5saW1pdCAhPT0gdW5kZWZpbmVkKSBwYXJhbXMuc2V0KCdsaW1pdCcsIFN0cmluZyhvcHRzLmxpbWl0KSk7XG4gICAgaWYgKG9wdHM/Lm9mZnNldCAhPT0gdW5kZWZpbmVkKSBwYXJhbXMuc2V0KCdvZmZzZXQnLCBTdHJpbmcob3B0cy5vZmZzZXQpKTtcbiAgICBpZiAob3B0cz8ucGFzc2VkT25seSAhPT0gdW5kZWZpbmVkKSBwYXJhbXMuc2V0KCdwYXNzZWRPbmx5JywgU3RyaW5nKG9wdHMucGFzc2VkT25seSkpO1xuICAgIGlmIChvcHRzPy5mYWlsZWRPbmx5ICE9PSB1bmRlZmluZWQpIHBhcmFtcy5zZXQoJ2ZhaWxlZE9ubHknLCBTdHJpbmcob3B0cy5mYWlsZWRPbmx5KSk7XG5cbiAgICBjb25zdCBxdWVyeSA9IHBhcmFtcy50b1N0cmluZygpO1xuICAgIHJldHVybiBhcGlSZXF1ZXN0V2l0aERhdGEoYC9ldmFsLXJ1bnMvJHtydW5JZH0vcmVzdWx0cyR7cXVlcnkgPyBgPyR7cXVlcnl9YCA6ICcnfWAsIHtcbiAgICAgIGFwaVZlcnNpb246ICdub25lJyxcbiAgICB9KTtcbiAgfSxcblxuICAvKipcbiAgICogTGlzdCBldmFsdWF0aW9uIHJ1bnMgd2l0aCBvcHRpb25hbCBmaWx0ZXJzXG4gICAqXG4gICAqIEBwYXJhbSBvcHRzIC0gRmlsdGVyIGFuZCBwYWdpbmF0aW9uIG9wdGlvbnNcbiAgICogQHJldHVybnMgTGlzdCBvZiBldmFsdWF0aW9uIHJ1bnNcbiAgICovXG4gIGFzeW5jIGxpc3Qob3B0cz86IExpc3RFdmFsUnVuc09wdGlvbnMpOiBQcm9taXNlPEV2YWxSdW5bXT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgICBpZiAob3B0cz8uYWdlbnRJZCkgcGFyYW1zLnNldCgnYWdlbnRJZCcsIG9wdHMuYWdlbnRJZCk7XG4gICAgaWYgKG9wdHM/LmxpbWl0ICE9PSB1bmRlZmluZWQpIHBhcmFtcy5zZXQoJ2xpbWl0JywgU3RyaW5nKG9wdHMubGltaXQpKTtcblxuICAgIGNvbnN0IHF1ZXJ5ID0gcGFyYW1zLnRvU3RyaW5nKCk7XG4gICAgcmV0dXJuIGFwaVJlcXVlc3RXaXRoRGF0YTxFdmFsUnVuW10+KGAvZXZhbC1ydW5zJHtxdWVyeSA/IGA/JHtxdWVyeX1gIDogJyd9YCwge1xuICAgICAgYXBpVmVyc2lvbjogJ25vbmUnLFxuICAgIH0pO1xuICB9LFxuXG4gIC8qKlxuICAgKiBFc3RpbWF0ZSB0aGUgY29zdCBvZiBydW5uaW5nIGFuIGV2YWx1YXRpb25cbiAgICpcbiAgICogQHBhcmFtIGFnZW50SWQgLSBUaGUgYWdlbnQgdG8gZXN0aW1hdGUgY29zdCBmb3JcbiAgICogQHBhcmFtIG9wdHMgLSBFdmFsdWF0aW9uIGNvbmZpZ3VyYXRpb24gZm9yIGNvc3QgZXN0aW1hdGlvblxuICAgKiBAcmV0dXJucyBDb3N0IGVzdGltYXRlIGRldGFpbHNcbiAgICovXG4gIGFzeW5jIGVzdGltYXRlQ29zdChhZ2VudElkOiBzdHJpbmcsIG9wdHM/OiBFc3RpbWF0ZUNvc3RPcHRpb25zKTogUHJvbWlzZTxFdmFsQ29zdEVzdGltYXRlPiB7XG4gICAgcmV0dXJuIGFwaVJlcXVlc3RXaXRoRGF0YTxFdmFsQ29zdEVzdGltYXRlPignL2V2YWwtcnVucy9lc3RpbWF0ZS1jb3N0Jywge1xuICAgICAgbWV0aG9kOiAnUE9TVCcsXG4gICAgICBib2R5OiB7IGFnZW50SWQsIC4uLm9wdHMgfSxcbiAgICAgIGFwaVZlcnNpb246ICdub25lJyxcbiAgICB9KTtcbiAgfSxcblxuICAvKipcbiAgICogR2V0IGV2YWx1YXRpb24gcmVzdWx0cyBmb3IgYSBzcGVjaWZpYyB0cmFjZVxuICAgKlxuICAgKiBAcGFyYW0gdHJhY2VJZCAtIFRoZSB0cmFjZSBJRCB0byBnZXQgcmVzdWx0cyBmb3JcbiAgICogQHBhcmFtIG9wdHMgLSBPcHRpb25zIGZvciBmaWx0ZXJpbmcgcmVzdWx0c1xuICAgKiBAcmV0dXJucyBFdmFsdWF0aW9uIHJlc3VsdHMgZm9yIHRoZSB0cmFjZVxuICAgKi9cbiAgYXN5bmMgZ2V0VHJhY2VSZXN1bHRzKHRyYWNlSWQ6IHN0cmluZywgb3B0cz86IEdldFRyYWNlUmVzdWx0c09wdGlvbnMpOiBQcm9taXNlPEV2YWxSZXN1bHRbXT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgICBpZiAob3B0cz8ubGF0ZXN0ICE9PSB1bmRlZmluZWQpIHBhcmFtcy5zZXQoJ2xhdGVzdCcsIFN0cmluZyhvcHRzLmxhdGVzdCkpO1xuICAgIGlmIChvcHRzPy5pbmNsdWRlQ3JpdGVyaWEgIT09IHVuZGVmaW5lZCkgcGFyYW1zLnNldCgnaW5jbHVkZUNyaXRlcmlhJywgU3RyaW5nKG9wdHMuaW5jbHVkZUNyaXRlcmlhKSk7XG5cbiAgICBjb25zdCBxdWVyeSA9IHBhcmFtcy50b1N0cmluZygpO1xuICAgIHJldHVybiBhcGlSZXF1ZXN0V2l0aERhdGE8RXZhbFJlc3VsdFtdPihgL2V2YWwtcnVucy90cmFjZS8ke3RyYWNlSWR9JHtxdWVyeSA/IGA/JHtxdWVyeX1gIDogJyd9YCwge1xuICAgICAgYXBpVmVyc2lvbjogJ25vbmUnLFxuICAgIH0pO1xuICB9LFxuXG4gIC8qKlxuICAgKiBEZWxldGUgYW4gZXZhbHVhdGlvbiBydW5cbiAgICpcbiAgICogQHBhcmFtIHJ1bklkIC0gVGhlIGV2YWx1YXRpb24gcnVuIElEIHRvIGRlbGV0ZVxuICAgKi9cbiAgYXN5bmMgcmVtb3ZlKHJ1bklkOiBzdHJpbmcpOiBQcm9taXNlPHZvaWQ+IHtcbiAgICByZXR1cm4gYXBpUmVxdWVzdDx2b2lkPihgL2V2YWwtcnVucy8ke3J1bklkfWAsIHtcbiAgICAgIG1ldGhvZDogJ0RFTEVURScsXG4gICAgICBhcGlWZXJzaW9uOiAnbm9uZScsXG4gICAgfSk7XG4gIH0sXG59O1xuXG5leHBvcnQgeyBldmFsUnVucyBhcyBkZWZhdWx0IH07XG4iXX0=
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ThinkHive SDK - LLM Costs API
|
|
3
|
+
*
|
|
4
|
+
* LLM cost tracking and optimization analytics
|
|
5
|
+
*/
|
|
6
|
+
/** Options for cost summary and breakdown */
|
|
7
|
+
export interface CostQueryOptions {
|
|
8
|
+
period?: 'day' | 'week' | 'month' | 'quarter' | 'year';
|
|
9
|
+
}
|
|
10
|
+
/** Cost summary across all agents */
|
|
11
|
+
export interface CostSummary {
|
|
12
|
+
totalCost: number;
|
|
13
|
+
totalTokens: number;
|
|
14
|
+
totalRequests: number;
|
|
15
|
+
period: string;
|
|
16
|
+
breakdown: CostBreakdownItem[];
|
|
17
|
+
}
|
|
18
|
+
/** Cost breakdown item */
|
|
19
|
+
export interface CostBreakdownItem {
|
|
20
|
+
model: string;
|
|
21
|
+
provider: string;
|
|
22
|
+
cost: number;
|
|
23
|
+
tokens: number;
|
|
24
|
+
requests: number;
|
|
25
|
+
inputTokens: number;
|
|
26
|
+
outputTokens: number;
|
|
27
|
+
}
|
|
28
|
+
/** Agent-level cost breakdown */
|
|
29
|
+
export interface AgentCostBreakdown {
|
|
30
|
+
agentId: string;
|
|
31
|
+
totalCost: number;
|
|
32
|
+
totalTokens: number;
|
|
33
|
+
totalRequests: number;
|
|
34
|
+
period: string;
|
|
35
|
+
models: CostBreakdownItem[];
|
|
36
|
+
}
|
|
37
|
+
/** Cost savings data */
|
|
38
|
+
export interface CostSavings {
|
|
39
|
+
totalSaved: number;
|
|
40
|
+
savingsPercent: number;
|
|
41
|
+
optimizations: OptimizationEntry[];
|
|
42
|
+
}
|
|
43
|
+
/** A single optimization entry */
|
|
44
|
+
export interface OptimizationEntry {
|
|
45
|
+
type: string;
|
|
46
|
+
description: string;
|
|
47
|
+
savedAmount: number;
|
|
48
|
+
appliedAt: string;
|
|
49
|
+
}
|
|
50
|
+
/** Optimization statistics */
|
|
51
|
+
export interface OptimizationStats {
|
|
52
|
+
cacheHitRate: number;
|
|
53
|
+
avgTokenReduction: number;
|
|
54
|
+
modelDowngradeCount: number;
|
|
55
|
+
totalOptimizations: number;
|
|
56
|
+
recommendations: OptimizationRecommendation[];
|
|
57
|
+
}
|
|
58
|
+
/** Optimization recommendation */
|
|
59
|
+
export interface OptimizationRecommendation {
|
|
60
|
+
type: string;
|
|
61
|
+
description: string;
|
|
62
|
+
estimatedSavings: number;
|
|
63
|
+
priority: 'low' | 'medium' | 'high';
|
|
64
|
+
}
|
|
65
|
+
/**
|
|
66
|
+
* LLM Costs API client for tracking and optimizing LLM spending
|
|
67
|
+
*/
|
|
68
|
+
export declare const llmCosts: {
|
|
69
|
+
/**
|
|
70
|
+
* Get cost summary across all agents
|
|
71
|
+
*
|
|
72
|
+
* @param opts - Period filter option
|
|
73
|
+
* @returns Cost summary with breakdown
|
|
74
|
+
*/
|
|
75
|
+
getSummary(opts?: CostQueryOptions): Promise<CostSummary>;
|
|
76
|
+
/**
|
|
77
|
+
* Get cost breakdown for a specific agent
|
|
78
|
+
*
|
|
79
|
+
* @param agentId - The agent ID
|
|
80
|
+
* @param opts - Period filter option
|
|
81
|
+
* @returns Agent cost breakdown
|
|
82
|
+
*/
|
|
83
|
+
getBreakdown(agentId: string, opts?: CostQueryOptions): Promise<AgentCostBreakdown>;
|
|
84
|
+
/**
|
|
85
|
+
* Get cost savings from optimizations
|
|
86
|
+
*
|
|
87
|
+
* @returns Savings data and optimization history
|
|
88
|
+
*/
|
|
89
|
+
getSavings(): Promise<CostSavings>;
|
|
90
|
+
/**
|
|
91
|
+
* Get optimization statistics and recommendations
|
|
92
|
+
*
|
|
93
|
+
* @returns Optimization stats with recommendations
|
|
94
|
+
*/
|
|
95
|
+
getOptimizationStats(): Promise<OptimizationStats>;
|
|
96
|
+
};
|
|
97
|
+
/**
|
|
98
|
+
* Format a cost amount as a currency string
|
|
99
|
+
*
|
|
100
|
+
* @param amount - The cost amount in dollars
|
|
101
|
+
* @returns Formatted string (e.g., "$12.34")
|
|
102
|
+
*/
|
|
103
|
+
export declare function formatCost(amount: number): string;
|
|
104
|
+
export { llmCosts as default };
|
|
@@ -0,0 +1,81 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ThinkHive SDK - LLM Costs API
|
|
4
|
+
*
|
|
5
|
+
* LLM cost tracking and optimization analytics
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.default = exports.llmCosts = void 0;
|
|
9
|
+
exports.formatCost = formatCost;
|
|
10
|
+
const client_1 = require("../core/client");
|
|
11
|
+
// ============================================================================
|
|
12
|
+
// LLM COSTS API CLIENT
|
|
13
|
+
// ============================================================================
|
|
14
|
+
/**
|
|
15
|
+
* LLM Costs API client for tracking and optimizing LLM spending
|
|
16
|
+
*/
|
|
17
|
+
exports.llmCosts = {
|
|
18
|
+
/**
|
|
19
|
+
* Get cost summary across all agents
|
|
20
|
+
*
|
|
21
|
+
* @param opts - Period filter option
|
|
22
|
+
* @returns Cost summary with breakdown
|
|
23
|
+
*/
|
|
24
|
+
async getSummary(opts) {
|
|
25
|
+
const params = new URLSearchParams();
|
|
26
|
+
if (opts?.period)
|
|
27
|
+
params.set('period', opts.period);
|
|
28
|
+
const query = params.toString();
|
|
29
|
+
return (0, client_1.apiRequestWithData)(`/llm-costs/summary${query ? `?${query}` : ''}`, {
|
|
30
|
+
apiVersion: 'none',
|
|
31
|
+
});
|
|
32
|
+
},
|
|
33
|
+
/**
|
|
34
|
+
* Get cost breakdown for a specific agent
|
|
35
|
+
*
|
|
36
|
+
* @param agentId - The agent ID
|
|
37
|
+
* @param opts - Period filter option
|
|
38
|
+
* @returns Agent cost breakdown
|
|
39
|
+
*/
|
|
40
|
+
async getBreakdown(agentId, opts) {
|
|
41
|
+
const params = new URLSearchParams();
|
|
42
|
+
if (opts?.period)
|
|
43
|
+
params.set('period', opts.period);
|
|
44
|
+
const query = params.toString();
|
|
45
|
+
return (0, client_1.apiRequestWithData)(`/llm-costs/breakdown/${agentId}${query ? `?${query}` : ''}`, { apiVersion: 'none' });
|
|
46
|
+
},
|
|
47
|
+
/**
|
|
48
|
+
* Get cost savings from optimizations
|
|
49
|
+
*
|
|
50
|
+
* @returns Savings data and optimization history
|
|
51
|
+
*/
|
|
52
|
+
async getSavings() {
|
|
53
|
+
return (0, client_1.apiRequestWithData)('/llm-costs/savings', {
|
|
54
|
+
apiVersion: 'none',
|
|
55
|
+
});
|
|
56
|
+
},
|
|
57
|
+
/**
|
|
58
|
+
* Get optimization statistics and recommendations
|
|
59
|
+
*
|
|
60
|
+
* @returns Optimization stats with recommendations
|
|
61
|
+
*/
|
|
62
|
+
async getOptimizationStats() {
|
|
63
|
+
return (0, client_1.apiRequestWithData)('/llm-costs/optimization-stats', {
|
|
64
|
+
apiVersion: 'none',
|
|
65
|
+
});
|
|
66
|
+
},
|
|
67
|
+
};
|
|
68
|
+
exports.default = exports.llmCosts;
|
|
69
|
+
// ============================================================================
|
|
70
|
+
// HELPER FUNCTIONS
|
|
71
|
+
// ============================================================================
|
|
72
|
+
/**
|
|
73
|
+
* Format a cost amount as a currency string
|
|
74
|
+
*
|
|
75
|
+
* @param amount - The cost amount in dollars
|
|
76
|
+
* @returns Formatted string (e.g., "$12.34")
|
|
77
|
+
*/
|
|
78
|
+
function formatCost(amount) {
|
|
79
|
+
return `$${amount.toFixed(2)}`;
|
|
80
|
+
}
|
|
81
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibGxtLWNvc3RzLmpzIiwic291cmNlUm9vdCI6IiIsInNvdXJjZXMiOlsiLi4vLi4vc3JjL2FwaS9sbG0tY29zdHMudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IjtBQUFBOzs7O0dBSUc7OztBQXNKSCxnQ0FFQztBQXRKRCwyQ0FBb0Q7QUF5RXBELCtFQUErRTtBQUMvRSx1QkFBdUI7QUFDdkIsK0VBQStFO0FBRS9FOztHQUVHO0FBQ1UsUUFBQSxRQUFRLEdBQUc7SUFDdEI7Ozs7O09BS0c7SUFDSCxLQUFLLENBQUMsVUFBVSxDQUFDLElBQXVCO1FBQ3RDLE1BQU0sTUFBTSxHQUFHLElBQUksZUFBZSxFQUFFLENBQUM7UUFDckMsSUFBSSxJQUFJLEVBQUUsTUFBTTtZQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsQ0FBQztRQUVwRCxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEMsT0FBTyxJQUFBLDJCQUFrQixFQUFjLHFCQUFxQixLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUFFO1lBQ3RGLFVBQVUsRUFBRSxNQUFNO1NBQ25CLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7O09BTUc7SUFDSCxLQUFLLENBQUMsWUFBWSxDQUFDLE9BQWUsRUFBRSxJQUF1QjtRQUN6RCxNQUFNLE1BQU0sR0FBRyxJQUFJLGVBQWUsRUFBRSxDQUFDO1FBQ3JDLElBQUksSUFBSSxFQUFFLE1BQU07WUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLFFBQVEsRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLENBQUM7UUFFcEQsTUFBTSxLQUFLLEdBQUcsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO1FBQ2hDLE9BQU8sSUFBQSwyQkFBa0IsRUFDdkIsd0JBQXdCLE9BQU8sR0FBRyxLQUFLLENBQUMsQ0FBQyxDQUFDLElBQUksS0FBSyxFQUFFLENBQUMsQ0FBQyxDQUFDLEVBQUUsRUFBRSxFQUM1RCxFQUFFLFVBQVUsRUFBRSxNQUFNLEVBQUUsQ0FDdkIsQ0FBQztJQUNKLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLFVBQVU7UUFDZCxPQUFPLElBQUEsMkJBQWtCLEVBQWMsb0JBQW9CLEVBQUU7WUFDM0QsVUFBVSxFQUFFLE1BQU07U0FDbkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztJQUVEOzs7O09BSUc7SUFDSCxLQUFLLENBQUMsb0JBQW9CO1FBQ3hCLE9BQU8sSUFBQSwyQkFBa0IsRUFBb0IsK0JBQStCLEVBQUU7WUFDNUUsVUFBVSxFQUFFLE1BQU07U0FDbkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGLENBQUM7QUFnQm1CLGtCQXhFUixnQkFBUSxDQXdFTztBQWQ1QiwrRUFBK0U7QUFDL0UsbUJBQW1CO0FBQ25CLCtFQUErRTtBQUUvRTs7Ozs7R0FLRztBQUNILFNBQWdCLFVBQVUsQ0FBQyxNQUFjO0lBQ3ZDLE9BQU8sSUFBSSxNQUFNLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7QUFDakMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbIi8qKlxuICogVGhpbmtIaXZlIFNESyAtIExMTSBDb3N0cyBBUElcbiAqXG4gKiBMTE0gY29zdCB0cmFja2luZyBhbmQgb3B0aW1pemF0aW9uIGFuYWx5dGljc1xuICovXG5cbmltcG9ydCB7IGFwaVJlcXVlc3RXaXRoRGF0YSB9IGZyb20gJy4uL2NvcmUvY2xpZW50JztcblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gVFlQRVNcbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cblxuLyoqIE9wdGlvbnMgZm9yIGNvc3Qgc3VtbWFyeSBhbmQgYnJlYWtkb3duICovXG5leHBvcnQgaW50ZXJmYWNlIENvc3RRdWVyeU9wdGlvbnMge1xuICBwZXJpb2Q/OiAnZGF5JyB8ICd3ZWVrJyB8ICdtb250aCcgfCAncXVhcnRlcicgfCAneWVhcic7XG59XG5cbi8qKiBDb3N0IHN1bW1hcnkgYWNyb3NzIGFsbCBhZ2VudHMgKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29zdFN1bW1hcnkge1xuICB0b3RhbENvc3Q6IG51bWJlcjtcbiAgdG90YWxUb2tlbnM6IG51bWJlcjtcbiAgdG90YWxSZXF1ZXN0czogbnVtYmVyO1xuICBwZXJpb2Q6IHN0cmluZztcbiAgYnJlYWtkb3duOiBDb3N0QnJlYWtkb3duSXRlbVtdO1xufVxuXG4vKiogQ29zdCBicmVha2Rvd24gaXRlbSAqL1xuZXhwb3J0IGludGVyZmFjZSBDb3N0QnJlYWtkb3duSXRlbSB7XG4gIG1vZGVsOiBzdHJpbmc7XG4gIHByb3ZpZGVyOiBzdHJpbmc7XG4gIGNvc3Q6IG51bWJlcjtcbiAgdG9rZW5zOiBudW1iZXI7XG4gIHJlcXVlc3RzOiBudW1iZXI7XG4gIGlucHV0VG9rZW5zOiBudW1iZXI7XG4gIG91dHB1dFRva2VuczogbnVtYmVyO1xufVxuXG4vKiogQWdlbnQtbGV2ZWwgY29zdCBicmVha2Rvd24gKi9cbmV4cG9ydCBpbnRlcmZhY2UgQWdlbnRDb3N0QnJlYWtkb3duIHtcbiAgYWdlbnRJZDogc3RyaW5nO1xuICB0b3RhbENvc3Q6IG51bWJlcjtcbiAgdG90YWxUb2tlbnM6IG51bWJlcjtcbiAgdG90YWxSZXF1ZXN0czogbnVtYmVyO1xuICBwZXJpb2Q6IHN0cmluZztcbiAgbW9kZWxzOiBDb3N0QnJlYWtkb3duSXRlbVtdO1xufVxuXG4vKiogQ29zdCBzYXZpbmdzIGRhdGEgKi9cbmV4cG9ydCBpbnRlcmZhY2UgQ29zdFNhdmluZ3Mge1xuICB0b3RhbFNhdmVkOiBudW1iZXI7XG4gIHNhdmluZ3NQZXJjZW50OiBudW1iZXI7XG4gIG9wdGltaXphdGlvbnM6IE9wdGltaXphdGlvbkVudHJ5W107XG59XG5cbi8qKiBBIHNpbmdsZSBvcHRpbWl6YXRpb24gZW50cnkgKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW1pemF0aW9uRW50cnkge1xuICB0eXBlOiBzdHJpbmc7XG4gIGRlc2NyaXB0aW9uOiBzdHJpbmc7XG4gIHNhdmVkQW1vdW50OiBudW1iZXI7XG4gIGFwcGxpZWRBdDogc3RyaW5nO1xufVxuXG4vKiogT3B0aW1pemF0aW9uIHN0YXRpc3RpY3MgKi9cbmV4cG9ydCBpbnRlcmZhY2UgT3B0aW1pemF0aW9uU3RhdHMge1xuICBjYWNoZUhpdFJhdGU6IG51bWJlcjtcbiAgYXZnVG9rZW5SZWR1Y3Rpb246IG51bWJlcjtcbiAgbW9kZWxEb3duZ3JhZGVDb3VudDogbnVtYmVyO1xuICB0b3RhbE9wdGltaXphdGlvbnM6IG51bWJlcjtcbiAgcmVjb21tZW5kYXRpb25zOiBPcHRpbWl6YXRpb25SZWNvbW1lbmRhdGlvbltdO1xufVxuXG4vKiogT3B0aW1pemF0aW9uIHJlY29tbWVuZGF0aW9uICovXG5leHBvcnQgaW50ZXJmYWNlIE9wdGltaXphdGlvblJlY29tbWVuZGF0aW9uIHtcbiAgdHlwZTogc3RyaW5nO1xuICBkZXNjcmlwdGlvbjogc3RyaW5nO1xuICBlc3RpbWF0ZWRTYXZpbmdzOiBudW1iZXI7XG4gIHByaW9yaXR5OiAnbG93JyB8ICdtZWRpdW0nIHwgJ2hpZ2gnO1xufVxuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBMTE0gQ09TVFMgQVBJIENMSUVOVFxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuXG4vKipcbiAqIExMTSBDb3N0cyBBUEkgY2xpZW50IGZvciB0cmFja2luZyBhbmQgb3B0aW1pemluZyBMTE0gc3BlbmRpbmdcbiAqL1xuZXhwb3J0IGNvbnN0IGxsbUNvc3RzID0ge1xuICAvKipcbiAgICogR2V0IGNvc3Qgc3VtbWFyeSBhY3Jvc3MgYWxsIGFnZW50c1xuICAgKlxuICAgKiBAcGFyYW0gb3B0cyAtIFBlcmlvZCBmaWx0ZXIgb3B0aW9uXG4gICAqIEByZXR1cm5zIENvc3Qgc3VtbWFyeSB3aXRoIGJyZWFrZG93blxuICAgKi9cbiAgYXN5bmMgZ2V0U3VtbWFyeShvcHRzPzogQ29zdFF1ZXJ5T3B0aW9ucyk6IFByb21pc2U8Q29zdFN1bW1hcnk+IHtcbiAgICBjb25zdCBwYXJhbXMgPSBuZXcgVVJMU2VhcmNoUGFyYW1zKCk7XG4gICAgaWYgKG9wdHM/LnBlcmlvZCkgcGFyYW1zLnNldCgncGVyaW9kJywgb3B0cy5wZXJpb2QpO1xuXG4gICAgY29uc3QgcXVlcnkgPSBwYXJhbXMudG9TdHJpbmcoKTtcbiAgICByZXR1cm4gYXBpUmVxdWVzdFdpdGhEYXRhPENvc3RTdW1tYXJ5PihgL2xsbS1jb3N0cy9zdW1tYXJ5JHtxdWVyeSA/IGA/JHtxdWVyeX1gIDogJyd9YCwge1xuICAgICAgYXBpVmVyc2lvbjogJ25vbmUnLFxuICAgIH0pO1xuICB9LFxuXG4gIC8qKlxuICAgKiBHZXQgY29zdCBicmVha2Rvd24gZm9yIGEgc3BlY2lmaWMgYWdlbnRcbiAgICpcbiAgICogQHBhcmFtIGFnZW50SWQgLSBUaGUgYWdlbnQgSURcbiAgICogQHBhcmFtIG9wdHMgLSBQZXJpb2QgZmlsdGVyIG9wdGlvblxuICAgKiBAcmV0dXJucyBBZ2VudCBjb3N0IGJyZWFrZG93blxuICAgKi9cbiAgYXN5bmMgZ2V0QnJlYWtkb3duKGFnZW50SWQ6IHN0cmluZywgb3B0cz86IENvc3RRdWVyeU9wdGlvbnMpOiBQcm9taXNlPEFnZW50Q29zdEJyZWFrZG93bj4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgICBpZiAob3B0cz8ucGVyaW9kKSBwYXJhbXMuc2V0KCdwZXJpb2QnLCBvcHRzLnBlcmlvZCk7XG5cbiAgICBjb25zdCBxdWVyeSA9IHBhcmFtcy50b1N0cmluZygpO1xuICAgIHJldHVybiBhcGlSZXF1ZXN0V2l0aERhdGE8QWdlbnRDb3N0QnJlYWtkb3duPihcbiAgICAgIGAvbGxtLWNvc3RzL2JyZWFrZG93bi8ke2FnZW50SWR9JHtxdWVyeSA/IGA/JHtxdWVyeX1gIDogJyd9YCxcbiAgICAgIHsgYXBpVmVyc2lvbjogJ25vbmUnIH1cbiAgICApO1xuICB9LFxuXG4gIC8qKlxuICAgKiBHZXQgY29zdCBzYXZpbmdzIGZyb20gb3B0aW1pemF0aW9uc1xuICAgKlxuICAgKiBAcmV0dXJucyBTYXZpbmdzIGRhdGEgYW5kIG9wdGltaXphdGlvbiBoaXN0b3J5XG4gICAqL1xuICBhc3luYyBnZXRTYXZpbmdzKCk6IFByb21pc2U8Q29zdFNhdmluZ3M+IHtcbiAgICByZXR1cm4gYXBpUmVxdWVzdFdpdGhEYXRhPENvc3RTYXZpbmdzPignL2xsbS1jb3N0cy9zYXZpbmdzJywge1xuICAgICAgYXBpVmVyc2lvbjogJ25vbmUnLFxuICAgIH0pO1xuICB9LFxuXG4gIC8qKlxuICAgKiBHZXQgb3B0aW1pemF0aW9uIHN0YXRpc3RpY3MgYW5kIHJlY29tbWVuZGF0aW9uc1xuICAgKlxuICAgKiBAcmV0dXJucyBPcHRpbWl6YXRpb24gc3RhdHMgd2l0aCByZWNvbW1lbmRhdGlvbnNcbiAgICovXG4gIGFzeW5jIGdldE9wdGltaXphdGlvblN0YXRzKCk6IFByb21pc2U8T3B0aW1pemF0aW9uU3RhdHM+IHtcbiAgICByZXR1cm4gYXBpUmVxdWVzdFdpdGhEYXRhPE9wdGltaXphdGlvblN0YXRzPignL2xsbS1jb3N0cy9vcHRpbWl6YXRpb24tc3RhdHMnLCB7XG4gICAgICBhcGlWZXJzaW9uOiAnbm9uZScsXG4gICAgfSk7XG4gIH0sXG59O1xuXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG4vLyBIRUxQRVIgRlVOQ1RJT05TXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogRm9ybWF0IGEgY29zdCBhbW91bnQgYXMgYSBjdXJyZW5jeSBzdHJpbmdcbiAqXG4gKiBAcGFyYW0gYW1vdW50IC0gVGhlIGNvc3QgYW1vdW50IGluIGRvbGxhcnNcbiAqIEByZXR1cm5zIEZvcm1hdHRlZCBzdHJpbmcgKGUuZy4sIFwiJDEyLjM0XCIpXG4gKi9cbmV4cG9ydCBmdW5jdGlvbiBmb3JtYXRDb3N0KGFtb3VudDogbnVtYmVyKTogc3RyaW5nIHtcbiAgcmV0dXJuIGAkJHthbW91bnQudG9GaXhlZCgyKX1gO1xufVxuXG5leHBvcnQgeyBsbG1Db3N0cyBhcyBkZWZhdWx0IH07XG4iXX0=
|
|
@@ -0,0 +1,103 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ThinkHive SDK - Notifications API
|
|
3
|
+
*
|
|
4
|
+
* Notification rules and alert management
|
|
5
|
+
*/
|
|
6
|
+
/** Notification rule definition */
|
|
7
|
+
export interface NotificationRule {
|
|
8
|
+
id: string;
|
|
9
|
+
agentId: string;
|
|
10
|
+
name: string;
|
|
11
|
+
condition: string;
|
|
12
|
+
channel: string;
|
|
13
|
+
isEnabled: boolean;
|
|
14
|
+
createdAt: string;
|
|
15
|
+
updatedAt: string;
|
|
16
|
+
[key: string]: unknown;
|
|
17
|
+
}
|
|
18
|
+
/** Data for creating a notification rule */
|
|
19
|
+
export interface CreateNotificationRuleData {
|
|
20
|
+
agentId: string;
|
|
21
|
+
name: string;
|
|
22
|
+
condition: string;
|
|
23
|
+
channel: string;
|
|
24
|
+
isEnabled?: boolean;
|
|
25
|
+
threshold?: number;
|
|
26
|
+
metadata?: Record<string, unknown>;
|
|
27
|
+
}
|
|
28
|
+
/** Data for updating a notification rule */
|
|
29
|
+
export interface UpdateNotificationRuleData {
|
|
30
|
+
name?: string;
|
|
31
|
+
condition?: string;
|
|
32
|
+
channel?: string;
|
|
33
|
+
isEnabled?: boolean;
|
|
34
|
+
threshold?: number;
|
|
35
|
+
metadata?: Record<string, unknown>;
|
|
36
|
+
}
|
|
37
|
+
/** A notification alert */
|
|
38
|
+
export interface Notification {
|
|
39
|
+
id: string;
|
|
40
|
+
agentId: string;
|
|
41
|
+
ruleId: string;
|
|
42
|
+
message: string;
|
|
43
|
+
isRead: boolean;
|
|
44
|
+
createdAt: string;
|
|
45
|
+
metadata?: Record<string, unknown>;
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Notifications API client for managing notification rules and alerts
|
|
49
|
+
*/
|
|
50
|
+
export declare const notifications: {
|
|
51
|
+
/**
|
|
52
|
+
* List notification rules for an agent
|
|
53
|
+
*
|
|
54
|
+
* @param agentId - The agent ID to list rules for
|
|
55
|
+
* @returns List of notification rules
|
|
56
|
+
*/
|
|
57
|
+
listRules(agentId: string): Promise<NotificationRule[]>;
|
|
58
|
+
/**
|
|
59
|
+
* Get a notification rule by ID
|
|
60
|
+
*
|
|
61
|
+
* @param id - The rule ID
|
|
62
|
+
* @param agentId - Optional agent ID for scoping
|
|
63
|
+
* @returns The notification rule
|
|
64
|
+
*/
|
|
65
|
+
getRule(id: string, agentId?: string): Promise<NotificationRule>;
|
|
66
|
+
/**
|
|
67
|
+
* Create a new notification rule
|
|
68
|
+
*
|
|
69
|
+
* @param data - Rule configuration data
|
|
70
|
+
* @returns The created notification rule
|
|
71
|
+
*/
|
|
72
|
+
createRule(data: CreateNotificationRuleData): Promise<NotificationRule>;
|
|
73
|
+
/**
|
|
74
|
+
* Update an existing notification rule
|
|
75
|
+
*
|
|
76
|
+
* @param id - The rule ID to update
|
|
77
|
+
* @param data - Fields to update
|
|
78
|
+
* @returns The updated notification rule
|
|
79
|
+
*/
|
|
80
|
+
updateRule(id: string, data: UpdateNotificationRuleData): Promise<NotificationRule>;
|
|
81
|
+
/**
|
|
82
|
+
* Delete a notification rule
|
|
83
|
+
*
|
|
84
|
+
* @param id - The rule ID to delete
|
|
85
|
+
*/
|
|
86
|
+
deleteRule(id: string): Promise<void>;
|
|
87
|
+
/**
|
|
88
|
+
* List notifications for an agent
|
|
89
|
+
*
|
|
90
|
+
* @param agentId - The agent ID
|
|
91
|
+
* @param unreadOnly - Whether to only return unread notifications
|
|
92
|
+
* @returns List of notifications
|
|
93
|
+
*/
|
|
94
|
+
listNotifications(agentId: string, unreadOnly?: boolean): Promise<Notification[]>;
|
|
95
|
+
/**
|
|
96
|
+
* Mark a notification as read
|
|
97
|
+
*
|
|
98
|
+
* @param id - The notification ID to mark as read
|
|
99
|
+
* @returns The updated notification
|
|
100
|
+
*/
|
|
101
|
+
markAsRead(id: string): Promise<Notification>;
|
|
102
|
+
};
|
|
103
|
+
export { notifications as default };
|
|
@@ -0,0 +1,110 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ThinkHive SDK - Notifications API
|
|
4
|
+
*
|
|
5
|
+
* Notification rules and alert management
|
|
6
|
+
*/
|
|
7
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
8
|
+
exports.default = exports.notifications = void 0;
|
|
9
|
+
const client_1 = require("../core/client");
|
|
10
|
+
// ============================================================================
|
|
11
|
+
// NOTIFICATIONS API CLIENT
|
|
12
|
+
// ============================================================================
|
|
13
|
+
/**
|
|
14
|
+
* Notifications API client for managing notification rules and alerts
|
|
15
|
+
*/
|
|
16
|
+
exports.notifications = {
|
|
17
|
+
/**
|
|
18
|
+
* List notification rules for an agent
|
|
19
|
+
*
|
|
20
|
+
* @param agentId - The agent ID to list rules for
|
|
21
|
+
* @returns List of notification rules
|
|
22
|
+
*/
|
|
23
|
+
async listRules(agentId) {
|
|
24
|
+
const params = new URLSearchParams({ agentId });
|
|
25
|
+
return (0, client_1.apiRequestWithData)(`/notification-rules?${params}`, {
|
|
26
|
+
apiVersion: 'none',
|
|
27
|
+
});
|
|
28
|
+
},
|
|
29
|
+
/**
|
|
30
|
+
* Get a notification rule by ID
|
|
31
|
+
*
|
|
32
|
+
* @param id - The rule ID
|
|
33
|
+
* @param agentId - Optional agent ID for scoping
|
|
34
|
+
* @returns The notification rule
|
|
35
|
+
*/
|
|
36
|
+
async getRule(id, agentId) {
|
|
37
|
+
const params = new URLSearchParams();
|
|
38
|
+
if (agentId)
|
|
39
|
+
params.set('agentId', agentId);
|
|
40
|
+
const query = params.toString();
|
|
41
|
+
return (0, client_1.apiRequestWithData)(`/notification-rules/${id}${query ? `?${query}` : ''}`, { apiVersion: 'none' });
|
|
42
|
+
},
|
|
43
|
+
/**
|
|
44
|
+
* Create a new notification rule
|
|
45
|
+
*
|
|
46
|
+
* @param data - Rule configuration data
|
|
47
|
+
* @returns The created notification rule
|
|
48
|
+
*/
|
|
49
|
+
async createRule(data) {
|
|
50
|
+
return (0, client_1.apiRequestWithData)('/notification-rules', {
|
|
51
|
+
method: 'POST',
|
|
52
|
+
body: data,
|
|
53
|
+
apiVersion: 'none',
|
|
54
|
+
});
|
|
55
|
+
},
|
|
56
|
+
/**
|
|
57
|
+
* Update an existing notification rule
|
|
58
|
+
*
|
|
59
|
+
* @param id - The rule ID to update
|
|
60
|
+
* @param data - Fields to update
|
|
61
|
+
* @returns The updated notification rule
|
|
62
|
+
*/
|
|
63
|
+
async updateRule(id, data) {
|
|
64
|
+
return (0, client_1.apiRequestWithData)(`/notification-rules/${id}`, {
|
|
65
|
+
method: 'PATCH',
|
|
66
|
+
body: data,
|
|
67
|
+
apiVersion: 'none',
|
|
68
|
+
});
|
|
69
|
+
},
|
|
70
|
+
/**
|
|
71
|
+
* Delete a notification rule
|
|
72
|
+
*
|
|
73
|
+
* @param id - The rule ID to delete
|
|
74
|
+
*/
|
|
75
|
+
async deleteRule(id) {
|
|
76
|
+
return (0, client_1.apiRequest)(`/notification-rules/${id}`, {
|
|
77
|
+
method: 'DELETE',
|
|
78
|
+
apiVersion: 'none',
|
|
79
|
+
});
|
|
80
|
+
},
|
|
81
|
+
/**
|
|
82
|
+
* List notifications for an agent
|
|
83
|
+
*
|
|
84
|
+
* @param agentId - The agent ID
|
|
85
|
+
* @param unreadOnly - Whether to only return unread notifications
|
|
86
|
+
* @returns List of notifications
|
|
87
|
+
*/
|
|
88
|
+
async listNotifications(agentId, unreadOnly) {
|
|
89
|
+
const params = new URLSearchParams({ agentId });
|
|
90
|
+
if (unreadOnly !== undefined)
|
|
91
|
+
params.set('unreadOnly', String(unreadOnly));
|
|
92
|
+
return (0, client_1.apiRequestWithData)(`/notifications?${params}`, {
|
|
93
|
+
apiVersion: 'none',
|
|
94
|
+
});
|
|
95
|
+
},
|
|
96
|
+
/**
|
|
97
|
+
* Mark a notification as read
|
|
98
|
+
*
|
|
99
|
+
* @param id - The notification ID to mark as read
|
|
100
|
+
* @returns The updated notification
|
|
101
|
+
*/
|
|
102
|
+
async markAsRead(id) {
|
|
103
|
+
return (0, client_1.apiRequestWithData)(`/notifications/${id}/read`, {
|
|
104
|
+
method: 'PATCH',
|
|
105
|
+
apiVersion: 'none',
|
|
106
|
+
});
|
|
107
|
+
},
|
|
108
|
+
};
|
|
109
|
+
exports.default = exports.notifications;
|
|
110
|
+
//# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibm90aWZpY2F0aW9ucy5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uL3NyYy9hcGkvbm90aWZpY2F0aW9ucy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiO0FBQUE7Ozs7R0FJRzs7O0FBRUgsMkNBQWdFO0FBbURoRSwrRUFBK0U7QUFDL0UsMkJBQTJCO0FBQzNCLCtFQUErRTtBQUUvRTs7R0FFRztBQUNVLFFBQUEsYUFBYSxHQUFHO0lBQzNCOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLFNBQVMsQ0FBQyxPQUFlO1FBQzdCLE1BQU0sTUFBTSxHQUFHLElBQUksZUFBZSxDQUFDLEVBQUUsT0FBTyxFQUFFLENBQUMsQ0FBQztRQUNoRCxPQUFPLElBQUEsMkJBQWtCLEVBQXFCLHVCQUF1QixNQUFNLEVBQUUsRUFBRTtZQUM3RSxVQUFVLEVBQUUsTUFBTTtTQUNuQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsS0FBSyxDQUFDLE9BQU8sQ0FBQyxFQUFVLEVBQUUsT0FBZ0I7UUFDeEMsTUFBTSxNQUFNLEdBQUcsSUFBSSxlQUFlLEVBQUUsQ0FBQztRQUNyQyxJQUFJLE9BQU87WUFBRSxNQUFNLENBQUMsR0FBRyxDQUFDLFNBQVMsRUFBRSxPQUFPLENBQUMsQ0FBQztRQUM1QyxNQUFNLEtBQUssR0FBRyxNQUFNLENBQUMsUUFBUSxFQUFFLENBQUM7UUFDaEMsT0FBTyxJQUFBLDJCQUFrQixFQUN2Qix1QkFBdUIsRUFBRSxHQUFHLEtBQUssQ0FBQyxDQUFDLENBQUMsSUFBSSxLQUFLLEVBQUUsQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLEVBQ3RELEVBQUUsVUFBVSxFQUFFLE1BQU0sRUFBRSxDQUN2QixDQUFDO0lBQ0osQ0FBQztJQUVEOzs7OztPQUtHO0lBQ0gsS0FBSyxDQUFDLFVBQVUsQ0FBQyxJQUFnQztRQUMvQyxPQUFPLElBQUEsMkJBQWtCLEVBQW1CLHFCQUFxQixFQUFFO1lBQ2pFLE1BQU0sRUFBRSxNQUFNO1lBQ2QsSUFBSSxFQUFFLElBQUk7WUFDVixVQUFVLEVBQUUsTUFBTTtTQUNuQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFVLEVBQUUsSUFBZ0M7UUFDM0QsT0FBTyxJQUFBLDJCQUFrQixFQUFtQix1QkFBdUIsRUFBRSxFQUFFLEVBQUU7WUFDdkUsTUFBTSxFQUFFLE9BQU87WUFDZixJQUFJLEVBQUUsSUFBSTtZQUNWLFVBQVUsRUFBRSxNQUFNO1NBQ25CLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7OztPQUlHO0lBQ0gsS0FBSyxDQUFDLFVBQVUsQ0FBQyxFQUFVO1FBQ3pCLE9BQU8sSUFBQSxtQkFBVSxFQUFPLHVCQUF1QixFQUFFLEVBQUUsRUFBRTtZQUNuRCxNQUFNLEVBQUUsUUFBUTtZQUNoQixVQUFVLEVBQUUsTUFBTTtTQUNuQixDQUFDLENBQUM7SUFDTCxDQUFDO0lBRUQ7Ozs7OztPQU1HO0lBQ0gsS0FBSyxDQUFDLGlCQUFpQixDQUFDLE9BQWUsRUFBRSxVQUFvQjtRQUMzRCxNQUFNLE1BQU0sR0FBRyxJQUFJLGVBQWUsQ0FBQyxFQUFFLE9BQU8sRUFBRSxDQUFDLENBQUM7UUFDaEQsSUFBSSxVQUFVLEtBQUssU0FBUztZQUFFLE1BQU0sQ0FBQyxHQUFHLENBQUMsWUFBWSxFQUFFLE1BQU0sQ0FBQyxVQUFVLENBQUMsQ0FBQyxDQUFDO1FBQzNFLE9BQU8sSUFBQSwyQkFBa0IsRUFBaUIsa0JBQWtCLE1BQU0sRUFBRSxFQUFFO1lBQ3BFLFVBQVUsRUFBRSxNQUFNO1NBQ25CLENBQUMsQ0FBQztJQUNMLENBQUM7SUFFRDs7Ozs7T0FLRztJQUNILEtBQUssQ0FBQyxVQUFVLENBQUMsRUFBVTtRQUN6QixPQUFPLElBQUEsMkJBQWtCLEVBQWUsa0JBQWtCLEVBQUUsT0FBTyxFQUFFO1lBQ25FLE1BQU0sRUFBRSxPQUFPO1lBQ2YsVUFBVSxFQUFFLE1BQU07U0FDbkIsQ0FBQyxDQUFDO0lBQ0wsQ0FBQztDQUNGLENBQUM7QUFFd0Isa0JBckdiLHFCQUFhLENBcUdPIiwic291cmNlc0NvbnRlbnQiOlsiLyoqXG4gKiBUaGlua0hpdmUgU0RLIC0gTm90aWZpY2F0aW9ucyBBUElcbiAqXG4gKiBOb3RpZmljYXRpb24gcnVsZXMgYW5kIGFsZXJ0IG1hbmFnZW1lbnRcbiAqL1xuXG5pbXBvcnQgeyBhcGlSZXF1ZXN0LCBhcGlSZXF1ZXN0V2l0aERhdGEgfSBmcm9tICcuLi9jb3JlL2NsaWVudCc7XG5cbi8vID09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT1cbi8vIFRZUEVTXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKiBOb3RpZmljYXRpb24gcnVsZSBkZWZpbml0aW9uICovXG5leHBvcnQgaW50ZXJmYWNlIE5vdGlmaWNhdGlvblJ1bGUge1xuICBpZDogc3RyaW5nO1xuICBhZ2VudElkOiBzdHJpbmc7XG4gIG5hbWU6IHN0cmluZztcbiAgY29uZGl0aW9uOiBzdHJpbmc7XG4gIGNoYW5uZWw6IHN0cmluZztcbiAgaXNFbmFibGVkOiBib29sZWFuO1xuICBjcmVhdGVkQXQ6IHN0cmluZztcbiAgdXBkYXRlZEF0OiBzdHJpbmc7XG4gIFtrZXk6IHN0cmluZ106IHVua25vd247XG59XG5cbi8qKiBEYXRhIGZvciBjcmVhdGluZyBhIG5vdGlmaWNhdGlvbiBydWxlICovXG5leHBvcnQgaW50ZXJmYWNlIENyZWF0ZU5vdGlmaWNhdGlvblJ1bGVEYXRhIHtcbiAgYWdlbnRJZDogc3RyaW5nO1xuICBuYW1lOiBzdHJpbmc7XG4gIGNvbmRpdGlvbjogc3RyaW5nO1xuICBjaGFubmVsOiBzdHJpbmc7XG4gIGlzRW5hYmxlZD86IGJvb2xlYW47XG4gIHRocmVzaG9sZD86IG51bWJlcjtcbiAgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuLyoqIERhdGEgZm9yIHVwZGF0aW5nIGEgbm90aWZpY2F0aW9uIHJ1bGUgKi9cbmV4cG9ydCBpbnRlcmZhY2UgVXBkYXRlTm90aWZpY2F0aW9uUnVsZURhdGEge1xuICBuYW1lPzogc3RyaW5nO1xuICBjb25kaXRpb24/OiBzdHJpbmc7XG4gIGNoYW5uZWw/OiBzdHJpbmc7XG4gIGlzRW5hYmxlZD86IGJvb2xlYW47XG4gIHRocmVzaG9sZD86IG51bWJlcjtcbiAgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuLyoqIEEgbm90aWZpY2F0aW9uIGFsZXJ0ICovXG5leHBvcnQgaW50ZXJmYWNlIE5vdGlmaWNhdGlvbiB7XG4gIGlkOiBzdHJpbmc7XG4gIGFnZW50SWQ6IHN0cmluZztcbiAgcnVsZUlkOiBzdHJpbmc7XG4gIG1lc3NhZ2U6IHN0cmluZztcbiAgaXNSZWFkOiBib29sZWFuO1xuICBjcmVhdGVkQXQ6IHN0cmluZztcbiAgbWV0YWRhdGE/OiBSZWNvcmQ8c3RyaW5nLCB1bmtub3duPjtcbn1cblxuLy8gPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PVxuLy8gTk9USUZJQ0FUSU9OUyBBUEkgQ0xJRU5UXG4vLyA9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09XG5cbi8qKlxuICogTm90aWZpY2F0aW9ucyBBUEkgY2xpZW50IGZvciBtYW5hZ2luZyBub3RpZmljYXRpb24gcnVsZXMgYW5kIGFsZXJ0c1xuICovXG5leHBvcnQgY29uc3Qgbm90aWZpY2F0aW9ucyA9IHtcbiAgLyoqXG4gICAqIExpc3Qgbm90aWZpY2F0aW9uIHJ1bGVzIGZvciBhbiBhZ2VudFxuICAgKlxuICAgKiBAcGFyYW0gYWdlbnRJZCAtIFRoZSBhZ2VudCBJRCB0byBsaXN0IHJ1bGVzIGZvclxuICAgKiBAcmV0dXJucyBMaXN0IG9mIG5vdGlmaWNhdGlvbiBydWxlc1xuICAgKi9cbiAgYXN5bmMgbGlzdFJ1bGVzKGFnZW50SWQ6IHN0cmluZyk6IFByb21pc2U8Tm90aWZpY2F0aW9uUnVsZVtdPiB7XG4gICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh7IGFnZW50SWQgfSk7XG4gICAgcmV0dXJuIGFwaVJlcXVlc3RXaXRoRGF0YTxOb3RpZmljYXRpb25SdWxlW10+KGAvbm90aWZpY2F0aW9uLXJ1bGVzPyR7cGFyYW1zfWAsIHtcbiAgICAgIGFwaVZlcnNpb246ICdub25lJyxcbiAgICB9KTtcbiAgfSxcblxuICAvKipcbiAgICogR2V0IGEgbm90aWZpY2F0aW9uIHJ1bGUgYnkgSURcbiAgICpcbiAgICogQHBhcmFtIGlkIC0gVGhlIHJ1bGUgSURcbiAgICogQHBhcmFtIGFnZW50SWQgLSBPcHRpb25hbCBhZ2VudCBJRCBmb3Igc2NvcGluZ1xuICAgKiBAcmV0dXJucyBUaGUgbm90aWZpY2F0aW9uIHJ1bGVcbiAgICovXG4gIGFzeW5jIGdldFJ1bGUoaWQ6IHN0cmluZywgYWdlbnRJZD86IHN0cmluZyk6IFByb21pc2U8Tm90aWZpY2F0aW9uUnVsZT4ge1xuICAgIGNvbnN0IHBhcmFtcyA9IG5ldyBVUkxTZWFyY2hQYXJhbXMoKTtcbiAgICBpZiAoYWdlbnRJZCkgcGFyYW1zLnNldCgnYWdlbnRJZCcsIGFnZW50SWQpO1xuICAgIGNvbnN0IHF1ZXJ5ID0gcGFyYW1zLnRvU3RyaW5nKCk7XG4gICAgcmV0dXJuIGFwaVJlcXVlc3RXaXRoRGF0YTxOb3RpZmljYXRpb25SdWxlPihcbiAgICAgIGAvbm90aWZpY2F0aW9uLXJ1bGVzLyR7aWR9JHtxdWVyeSA/IGA/JHtxdWVyeX1gIDogJyd9YCxcbiAgICAgIHsgYXBpVmVyc2lvbjogJ25vbmUnIH1cbiAgICApO1xuICB9LFxuXG4gIC8qKlxuICAgKiBDcmVhdGUgYSBuZXcgbm90aWZpY2F0aW9uIHJ1bGVcbiAgICpcbiAgICogQHBhcmFtIGRhdGEgLSBSdWxlIGNvbmZpZ3VyYXRpb24gZGF0YVxuICAgKiBAcmV0dXJucyBUaGUgY3JlYXRlZCBub3RpZmljYXRpb24gcnVsZVxuICAgKi9cbiAgYXN5bmMgY3JlYXRlUnVsZShkYXRhOiBDcmVhdGVOb3RpZmljYXRpb25SdWxlRGF0YSk6IFByb21pc2U8Tm90aWZpY2F0aW9uUnVsZT4ge1xuICAgIHJldHVybiBhcGlSZXF1ZXN0V2l0aERhdGE8Tm90aWZpY2F0aW9uUnVsZT4oJy9ub3RpZmljYXRpb24tcnVsZXMnLCB7XG4gICAgICBtZXRob2Q6ICdQT1NUJyxcbiAgICAgIGJvZHk6IGRhdGEsXG4gICAgICBhcGlWZXJzaW9uOiAnbm9uZScsXG4gICAgfSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIFVwZGF0ZSBhbiBleGlzdGluZyBub3RpZmljYXRpb24gcnVsZVxuICAgKlxuICAgKiBAcGFyYW0gaWQgLSBUaGUgcnVsZSBJRCB0byB1cGRhdGVcbiAgICogQHBhcmFtIGRhdGEgLSBGaWVsZHMgdG8gdXBkYXRlXG4gICAqIEByZXR1cm5zIFRoZSB1cGRhdGVkIG5vdGlmaWNhdGlvbiBydWxlXG4gICAqL1xuICBhc3luYyB1cGRhdGVSdWxlKGlkOiBzdHJpbmcsIGRhdGE6IFVwZGF0ZU5vdGlmaWNhdGlvblJ1bGVEYXRhKTogUHJvbWlzZTxOb3RpZmljYXRpb25SdWxlPiB7XG4gICAgcmV0dXJuIGFwaVJlcXVlc3RXaXRoRGF0YTxOb3RpZmljYXRpb25SdWxlPihgL25vdGlmaWNhdGlvbi1ydWxlcy8ke2lkfWAsIHtcbiAgICAgIG1ldGhvZDogJ1BBVENIJyxcbiAgICAgIGJvZHk6IGRhdGEsXG4gICAgICBhcGlWZXJzaW9uOiAnbm9uZScsXG4gICAgfSk7XG4gIH0sXG5cbiAgLyoqXG4gICAqIERlbGV0ZSBhIG5vdGlmaWNhdGlvbiBydWxlXG4gICAqXG4gICAqIEBwYXJhbSBpZCAtIFRoZSBydWxlIElEIHRvIGRlbGV0ZVxuICAgKi9cbiAgYXN5bmMgZGVsZXRlUnVsZShpZDogc3RyaW5nKTogUHJvbWlzZTx2b2lkPiB7XG4gICAgcmV0dXJuIGFwaVJlcXVlc3Q8dm9pZD4oYC9ub3RpZmljYXRpb24tcnVsZXMvJHtpZH1gLCB7XG4gICAgICBtZXRob2Q6ICdERUxFVEUnLFxuICAgICAgYXBpVmVyc2lvbjogJ25vbmUnLFxuICAgIH0pO1xuICB9LFxuXG4gIC8qKlxuICAgKiBMaXN0IG5vdGlmaWNhdGlvbnMgZm9yIGFuIGFnZW50XG4gICAqXG4gICAqIEBwYXJhbSBhZ2VudElkIC0gVGhlIGFnZW50IElEXG4gICAqIEBwYXJhbSB1bnJlYWRPbmx5IC0gV2hldGhlciB0byBvbmx5IHJldHVybiB1bnJlYWQgbm90aWZpY2F0aW9uc1xuICAgKiBAcmV0dXJucyBMaXN0IG9mIG5vdGlmaWNhdGlvbnNcbiAgICovXG4gIGFzeW5jIGxpc3ROb3RpZmljYXRpb25zKGFnZW50SWQ6IHN0cmluZywgdW5yZWFkT25seT86IGJvb2xlYW4pOiBQcm9taXNlPE5vdGlmaWNhdGlvbltdPiB7XG4gICAgY29uc3QgcGFyYW1zID0gbmV3IFVSTFNlYXJjaFBhcmFtcyh7IGFnZW50SWQgfSk7XG4gICAgaWYgKHVucmVhZE9ubHkgIT09IHVuZGVmaW5lZCkgcGFyYW1zLnNldCgndW5yZWFkT25seScsIFN0cmluZyh1bnJlYWRPbmx5KSk7XG4gICAgcmV0dXJuIGFwaVJlcXVlc3RXaXRoRGF0YTxOb3RpZmljYXRpb25bXT4oYC9ub3RpZmljYXRpb25zPyR7cGFyYW1zfWAsIHtcbiAgICAgIGFwaVZlcnNpb246ICdub25lJyxcbiAgICB9KTtcbiAgfSxcblxuICAvKipcbiAgICogTWFyayBhIG5vdGlmaWNhdGlvbiBhcyByZWFkXG4gICAqXG4gICAqIEBwYXJhbSBpZCAtIFRoZSBub3RpZmljYXRpb24gSUQgdG8gbWFyayBhcyByZWFkXG4gICAqIEByZXR1cm5zIFRoZSB1cGRhdGVkIG5vdGlmaWNhdGlvblxuICAgKi9cbiAgYXN5bmMgbWFya0FzUmVhZChpZDogc3RyaW5nKTogUHJvbWlzZTxOb3RpZmljYXRpb24+IHtcbiAgICByZXR1cm4gYXBpUmVxdWVzdFdpdGhEYXRhPE5vdGlmaWNhdGlvbj4oYC9ub3RpZmljYXRpb25zLyR7aWR9L3JlYWRgLCB7XG4gICAgICBtZXRob2Q6ICdQQVRDSCcsXG4gICAgICBhcGlWZXJzaW9uOiAnbm9uZScsXG4gICAgfSk7XG4gIH0sXG59O1xuXG5leHBvcnQgeyBub3RpZmljYXRpb25zIGFzIGRlZmF1bHQgfTtcbiJdfQ==
|
|
@@ -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 };
|