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