@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.
@@ -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 };