@thinkhive/sdk 4.0.1 → 4.2.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +364 -208
- package/dist/api/claims.js +2 -3
- package/dist/api/documents.d.ts +52 -0
- package/dist/api/documents.js +58 -0
- package/dist/api/drift.d.ts +70 -0
- package/dist/api/drift.js +71 -0
- package/dist/api/eval-runs.d.ts +126 -0
- package/dist/api/eval-runs.js +126 -0
- package/dist/api/llm-costs.d.ts +104 -0
- package/dist/api/llm-costs.js +81 -0
- package/dist/api/notifications.d.ts +103 -0
- package/dist/api/notifications.js +110 -0
- package/dist/api/roi-analytics.d.ts +99 -0
- package/dist/api/roi-analytics.js +64 -1
- package/dist/api/sessions.d.ts +57 -0
- package/dist/api/sessions.js +49 -0
- package/dist/api/shadow-tests.d.ts +78 -0
- package/dist/api/shadow-tests.js +80 -0
- package/dist/api/signals.d.ts +177 -0
- package/dist/api/signals.js +172 -0
- package/dist/core/client.d.ts +2 -0
- package/dist/core/client.js +10 -4
- package/dist/core/config.d.ts +1 -1
- package/dist/core/config.js +2 -2
- package/dist/guardrails.d.ts +70 -0
- package/dist/guardrails.js +34 -0
- package/dist/index.d.ts +209 -18
- package/dist/index.js +55 -7
- package/dist/integrations/ticket-linking.d.ts +23 -17
- package/dist/integrations/ticket-linking.js +95 -12
- package/package.json +1 -1
|
@@ -0,0 +1,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==
|
|
@@ -244,6 +244,105 @@ export declare const roiAnalytics: {
|
|
|
244
244
|
endDate?: string | Date;
|
|
245
245
|
agentId?: string;
|
|
246
246
|
}): Promise<CorrelationAnalysis>;
|
|
247
|
+
/**
|
|
248
|
+
* Get ROI configuration (V3)
|
|
249
|
+
*/
|
|
250
|
+
getConfig(): Promise<{
|
|
251
|
+
id: string;
|
|
252
|
+
companyId: string;
|
|
253
|
+
version: number;
|
|
254
|
+
isActive: boolean;
|
|
255
|
+
costConfig: Record<string, unknown>;
|
|
256
|
+
deflectionConfig: Record<string, unknown>;
|
|
257
|
+
resolutionConfig: Record<string, unknown>;
|
|
258
|
+
attributionConfig: Record<string, unknown>;
|
|
259
|
+
slaConfig: Record<string, unknown>;
|
|
260
|
+
displayConfig: Record<string, unknown>;
|
|
261
|
+
createdAt: string;
|
|
262
|
+
updatedAt: string;
|
|
263
|
+
}>;
|
|
264
|
+
/**
|
|
265
|
+
* Create ROI configuration (V3)
|
|
266
|
+
*/
|
|
267
|
+
createConfig(data: {
|
|
268
|
+
costConfig?: Record<string, unknown>;
|
|
269
|
+
deflectionConfig?: Record<string, unknown>;
|
|
270
|
+
resolutionConfig?: Record<string, unknown>;
|
|
271
|
+
attributionConfig?: Record<string, unknown>;
|
|
272
|
+
slaConfig?: Record<string, unknown>;
|
|
273
|
+
displayConfig?: Record<string, unknown>;
|
|
274
|
+
}): Promise<{
|
|
275
|
+
id: string;
|
|
276
|
+
companyId: string;
|
|
277
|
+
version: number;
|
|
278
|
+
isActive: boolean;
|
|
279
|
+
costConfig: Record<string, unknown>;
|
|
280
|
+
deflectionConfig: Record<string, unknown>;
|
|
281
|
+
resolutionConfig: Record<string, unknown>;
|
|
282
|
+
attributionConfig: Record<string, unknown>;
|
|
283
|
+
slaConfig: Record<string, unknown>;
|
|
284
|
+
displayConfig: Record<string, unknown>;
|
|
285
|
+
createdAt: string;
|
|
286
|
+
updatedAt: string;
|
|
287
|
+
}>;
|
|
288
|
+
/**
|
|
289
|
+
* Update ROI configuration (V3) - creates new version
|
|
290
|
+
*/
|
|
291
|
+
updateConfig(data: {
|
|
292
|
+
costConfig?: Record<string, unknown>;
|
|
293
|
+
deflectionConfig?: Record<string, unknown>;
|
|
294
|
+
resolutionConfig?: Record<string, unknown>;
|
|
295
|
+
attributionConfig?: Record<string, unknown>;
|
|
296
|
+
slaConfig?: Record<string, unknown>;
|
|
297
|
+
displayConfig?: Record<string, unknown>;
|
|
298
|
+
}): Promise<{
|
|
299
|
+
id: string;
|
|
300
|
+
companyId: string;
|
|
301
|
+
version: number;
|
|
302
|
+
isActive: boolean;
|
|
303
|
+
costConfig: Record<string, unknown>;
|
|
304
|
+
deflectionConfig: Record<string, unknown>;
|
|
305
|
+
resolutionConfig: Record<string, unknown>;
|
|
306
|
+
attributionConfig: Record<string, unknown>;
|
|
307
|
+
slaConfig: Record<string, unknown>;
|
|
308
|
+
displayConfig: Record<string, unknown>;
|
|
309
|
+
createdAt: string;
|
|
310
|
+
updatedAt: string;
|
|
311
|
+
}>;
|
|
312
|
+
/**
|
|
313
|
+
* List ROI config versions (V3)
|
|
314
|
+
*/
|
|
315
|
+
configVersions(options?: {
|
|
316
|
+
limit?: number;
|
|
317
|
+
offset?: number;
|
|
318
|
+
}): Promise<{
|
|
319
|
+
data: Record<string, unknown>[];
|
|
320
|
+
pagination: {
|
|
321
|
+
limit: number;
|
|
322
|
+
offset: number;
|
|
323
|
+
hasMore: boolean;
|
|
324
|
+
};
|
|
325
|
+
}>;
|
|
326
|
+
/**
|
|
327
|
+
* Calculate ROI using V3 configurable engine
|
|
328
|
+
*/
|
|
329
|
+
calculateV3(options: {
|
|
330
|
+
agentId?: string;
|
|
331
|
+
startDate: string | Date;
|
|
332
|
+
endDate: string | Date;
|
|
333
|
+
configurationVersion?: number;
|
|
334
|
+
includeBreakdown?: boolean;
|
|
335
|
+
includeConfidenceIntervals?: boolean;
|
|
336
|
+
}): Promise<Record<string, unknown>>;
|
|
337
|
+
/**
|
|
338
|
+
* Get ROI trend over time (V3)
|
|
339
|
+
*/
|
|
340
|
+
trendV3(options: {
|
|
341
|
+
agentId?: string;
|
|
342
|
+
granularity: "day" | "week" | "month";
|
|
343
|
+
startDate: string | Date;
|
|
344
|
+
endDate: string | Date;
|
|
345
|
+
}): Promise<Record<string, unknown>>;
|
|
247
346
|
};
|
|
248
347
|
/**
|
|
249
348
|
* Calculate estimated revenue at risk
|