elasticsearch-mcp-vsee-stage 0.5.13

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.
Files changed (83) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +304 -0
  3. package/build/config.d.ts +76 -0
  4. package/build/config.d.ts.map +1 -0
  5. package/build/config.js +63 -0
  6. package/build/config.js.map +1 -0
  7. package/build/elasticsearch/client.d.ts +26 -0
  8. package/build/elasticsearch/client.d.ts.map +1 -0
  9. package/build/elasticsearch/client.js +131 -0
  10. package/build/elasticsearch/client.js.map +1 -0
  11. package/build/errors/handlers.d.ts +44 -0
  12. package/build/errors/handlers.d.ts.map +1 -0
  13. package/build/errors/handlers.js +231 -0
  14. package/build/errors/handlers.js.map +1 -0
  15. package/build/index.d.ts +9 -0
  16. package/build/index.d.ts.map +1 -0
  17. package/build/index.js +28 -0
  18. package/build/index.js.map +1 -0
  19. package/build/logger.d.ts +31 -0
  20. package/build/logger.d.ts.map +1 -0
  21. package/build/logger.js +81 -0
  22. package/build/logger.js.map +1 -0
  23. package/build/server.d.ts +23 -0
  24. package/build/server.d.ts.map +1 -0
  25. package/build/server.js +571 -0
  26. package/build/server.js.map +1 -0
  27. package/build/tools/find-entities-by-metric.d.ts +51 -0
  28. package/build/tools/find-entities-by-metric.d.ts.map +1 -0
  29. package/build/tools/find-entities-by-metric.js +375 -0
  30. package/build/tools/find-entities-by-metric.js.map +1 -0
  31. package/build/tools/get-index-fields.d.ts +26 -0
  32. package/build/tools/get-index-fields.d.ts.map +1 -0
  33. package/build/tools/get-index-fields.js +94 -0
  34. package/build/tools/get-index-fields.js.map +1 -0
  35. package/build/tools/get-platform-breakdown.d.ts +42 -0
  36. package/build/tools/get-platform-breakdown.d.ts.map +1 -0
  37. package/build/tools/get-platform-breakdown.js +305 -0
  38. package/build/tools/get-platform-breakdown.js.map +1 -0
  39. package/build/tools/get-rating-distribution.d.ts +48 -0
  40. package/build/tools/get-rating-distribution.d.ts.map +1 -0
  41. package/build/tools/get-rating-distribution.js +283 -0
  42. package/build/tools/get-rating-distribution.js.map +1 -0
  43. package/build/tools/get-subscription-breakdown.d.ts +34 -0
  44. package/build/tools/get-subscription-breakdown.d.ts.map +1 -0
  45. package/build/tools/get-subscription-breakdown.js +179 -0
  46. package/build/tools/get-subscription-breakdown.js.map +1 -0
  47. package/build/tools/get-usage-leaderboard.d.ts +38 -0
  48. package/build/tools/get-usage-leaderboard.d.ts.map +1 -0
  49. package/build/tools/get-usage-leaderboard.js +177 -0
  50. package/build/tools/get-usage-leaderboard.js.map +1 -0
  51. package/build/tools/get-usage-profile.d.ts +52 -0
  52. package/build/tools/get-usage-profile.d.ts.map +1 -0
  53. package/build/tools/get-usage-profile.js +273 -0
  54. package/build/tools/get-usage-profile.js.map +1 -0
  55. package/build/tools/get-visit-trends.d.ts +37 -0
  56. package/build/tools/get-visit-trends.d.ts.map +1 -0
  57. package/build/tools/get-visit-trends.js +289 -0
  58. package/build/tools/get-visit-trends.js.map +1 -0
  59. package/build/tools/index.d.ts +19 -0
  60. package/build/tools/index.d.ts.map +1 -0
  61. package/build/tools/index.js +22 -0
  62. package/build/tools/index.js.map +1 -0
  63. package/build/tools/top-change.d.ts +34 -0
  64. package/build/tools/top-change.d.ts.map +1 -0
  65. package/build/tools/top-change.js +262 -0
  66. package/build/tools/top-change.js.map +1 -0
  67. package/build/utils/aggregation-limits.d.ts +23 -0
  68. package/build/utils/aggregation-limits.d.ts.map +1 -0
  69. package/build/utils/aggregation-limits.js +32 -0
  70. package/build/utils/aggregation-limits.js.map +1 -0
  71. package/build/utils/date-math.d.ts +31 -0
  72. package/build/utils/date-math.d.ts.map +1 -0
  73. package/build/utils/date-math.js +116 -0
  74. package/build/utils/date-math.js.map +1 -0
  75. package/build/utils/field-constants.d.ts +23 -0
  76. package/build/utils/field-constants.d.ts.map +1 -0
  77. package/build/utils/field-constants.js +26 -0
  78. package/build/utils/field-constants.js.map +1 -0
  79. package/build/validation/schemas.d.ts +243 -0
  80. package/build/validation/schemas.d.ts.map +1 -0
  81. package/build/validation/schemas.js +151 -0
  82. package/build/validation/schemas.js.map +1 -0
  83. package/package.json +65 -0
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-rating-distribution.js","sourceRoot":"","sources":["../../src/tools/get-rating-distribution.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ import { ElasticsearchManager } from '../elasticsearch/client.js';
2
+ import { Logger } from '../logger.js';
3
+ export interface PeriodSummaryArgs {
4
+ startDate?: string;
5
+ endDate?: string;
6
+ }
7
+ export interface SubscriptionMetrics {
8
+ subscription: string;
9
+ count_records: number;
10
+ unique_accounts: number;
11
+ unique_providers: number;
12
+ unique_patients: number;
13
+ avg_call_duration: number | null;
14
+ avg_provider_rating: number | null;
15
+ provider_rating_count: number;
16
+ avg_patient_rating: number | null;
17
+ patient_rating_count: number;
18
+ }
19
+ export interface PeriodSummaryResult {
20
+ startDate: string;
21
+ endDate: string;
22
+ subscriptions: SubscriptionMetrics[];
23
+ total_records: number;
24
+ total_unique_accounts: number;
25
+ total_unique_providers: number;
26
+ total_unique_patients: number;
27
+ }
28
+ export declare class PeriodSummaryTool {
29
+ private elasticsearch;
30
+ private logger;
31
+ constructor(elasticsearch: ElasticsearchManager, logger: Logger);
32
+ execute(args: unknown): Promise<PeriodSummaryResult>;
33
+ }
34
+ //# sourceMappingURL=get-subscription-breakdown.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-subscription-breakdown.d.ts","sourceRoot":"","sources":["../../src/tools/get-subscription-breakdown.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAWtC,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;CAClB;AAED,MAAM,WAAW,mBAAmB;IAClC,YAAY,EAAE,MAAM,CAAC;IACrB,aAAa,EAAE,MAAM,CAAC;IACtB,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;IACjC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,qBAAqB,EAAE,MAAM,CAAC;IAC9B,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED,MAAM,WAAW,mBAAmB;IAClC,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,aAAa,EAAE,mBAAmB,EAAE,CAAC;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,sBAAsB,EAAE,MAAM,CAAC;IAC/B,qBAAqB,EAAE,MAAM,CAAC;CAC/B;AAED,qBAAa,iBAAiB;IAC5B,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,MAAM,CAAS;gBAEX,aAAa,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM;IAKzD,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,mBAAmB,CAAC;CAkL3D"}
@@ -0,0 +1,179 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.PeriodSummaryTool = void 0;
4
+ const zod_1 = require("zod");
5
+ const handlers_js_1 = require("../errors/handlers.js");
6
+ const aggregation_limits_js_1 = require("../utils/aggregation-limits.js");
7
+ const field_constants_js_1 = require("../utils/field-constants.js");
8
+ const PeriodSummaryArgsSchema = zod_1.z.object({
9
+ startDate: zod_1.z.string().optional().describe('Start date in ISO format (YYYY-MM-DD) or date math (e.g., "now-30d", "now-1y"). Defaults to "now-30d"'),
10
+ endDate: zod_1.z.string().optional().describe('End date in ISO format (YYYY-MM-DD) or date math (e.g., "now"). Defaults to "now"'),
11
+ }).strict();
12
+ class PeriodSummaryTool {
13
+ elasticsearch;
14
+ logger;
15
+ constructor(elasticsearch, logger) {
16
+ this.elasticsearch = elasticsearch;
17
+ this.logger = logger.child({ tool: 'get-subscription-breakdown' });
18
+ }
19
+ async execute(args) {
20
+ try {
21
+ const validatedArgs = PeriodSummaryArgsSchema.parse(args);
22
+ let startDate = validatedArgs.startDate || 'now-30d';
23
+ let endDate = validatedArgs.endDate || 'now';
24
+ this.logger.info('Getting subscription breakdown', {
25
+ startDate,
26
+ endDate,
27
+ });
28
+ const client = this.elasticsearch.getClient();
29
+ const index = field_constants_js_1.FIELD_CONSTANTS.index;
30
+ const timeField = field_constants_js_1.FIELD_CONSTANTS.timeField;
31
+ const testVisitField = field_constants_js_1.FIELD_CONSTANTS.testVisitField;
32
+ const subscriptionField = field_constants_js_1.FIELD_CONSTANTS.subscriptionField;
33
+ const accountField = field_constants_js_1.FIELD_CONSTANTS.accountField;
34
+ const providerField = field_constants_js_1.FIELD_CONSTANTS.providerField;
35
+ const patientField = field_constants_js_1.FIELD_CONSTANTS.patientField;
36
+ const callDurationField = field_constants_js_1.FIELD_CONSTANTS.callDurationField;
37
+ const providerRatingField = field_constants_js_1.FIELD_CONSTANTS.providerRatingField;
38
+ const patientRatingField = field_constants_js_1.FIELD_CONSTANTS.patientRatingField;
39
+ const meetingBasedField = field_constants_js_1.FIELD_CONSTANTS.meetingBasedField;
40
+ const query = {
41
+ index,
42
+ size: 0,
43
+ body: {
44
+ query: {
45
+ bool: {
46
+ filter: [
47
+ {
48
+ range: {
49
+ [timeField]: {
50
+ gte: startDate,
51
+ lt: endDate,
52
+ },
53
+ },
54
+ },
55
+ {
56
+ term: {
57
+ [testVisitField]: 'No',
58
+ },
59
+ },
60
+ {
61
+ bool: {
62
+ should: [
63
+ { exists: { field: callDurationField } },
64
+ { term: { [meetingBasedField]: false } },
65
+ ],
66
+ minimum_should_match: 1,
67
+ },
68
+ },
69
+ ],
70
+ },
71
+ },
72
+ aggs: {
73
+ by_subscription: {
74
+ terms: {
75
+ field: subscriptionField,
76
+ size: aggregation_limits_js_1.AGGREGATION_LIMITS.MEDIUM,
77
+ },
78
+ aggs: {
79
+ count_records: {
80
+ value_count: { field: timeField },
81
+ },
82
+ unique_accounts: {
83
+ cardinality: { field: accountField },
84
+ },
85
+ unique_providers: {
86
+ cardinality: { field: providerField },
87
+ },
88
+ unique_patients: {
89
+ cardinality: { field: patientField },
90
+ },
91
+ avg_call_duration: {
92
+ avg: { field: callDurationField },
93
+ },
94
+ avg_provider_rating: {
95
+ avg: { field: providerRatingField },
96
+ },
97
+ provider_rating_count: {
98
+ value_count: { field: providerRatingField },
99
+ },
100
+ avg_patient_rating: {
101
+ avg: { field: patientRatingField },
102
+ },
103
+ patient_rating_count: {
104
+ value_count: { field: patientRatingField },
105
+ },
106
+ },
107
+ },
108
+ },
109
+ },
110
+ };
111
+ this.logger.debug('Executing query', { query: JSON.stringify(query, null, 2) });
112
+ const response = await client.search(query);
113
+ const subscriptions = [];
114
+ const bySubscriptionAgg = response.aggregations?.by_subscription;
115
+ const buckets = bySubscriptionAgg?.buckets || [];
116
+ let totalRecords = 0;
117
+ let totalUniqueAccounts = 0;
118
+ let totalUniqueProviders = 0;
119
+ let totalUniquePatients = 0;
120
+ for (const bucket of buckets) {
121
+ const subscription = bucket.key;
122
+ const countRecords = bucket.count_records?.value || 0;
123
+ const uniqueAccounts = bucket.unique_accounts?.value || 0;
124
+ const uniqueProviders = bucket.unique_providers?.value || 0;
125
+ const uniquePatients = bucket.unique_patients?.value || 0;
126
+ const avgCallDuration = bucket.avg_call_duration?.value || null;
127
+ const avgProviderRating = bucket.avg_provider_rating?.value || null;
128
+ const providerRatingCount = bucket.provider_rating_count?.value || 0;
129
+ const avgPatientRating = bucket.avg_patient_rating?.value || null;
130
+ const patientRatingCount = bucket.patient_rating_count?.value || 0;
131
+ subscriptions.push({
132
+ subscription,
133
+ count_records: countRecords,
134
+ unique_accounts: uniqueAccounts,
135
+ unique_providers: uniqueProviders,
136
+ unique_patients: uniquePatients,
137
+ avg_call_duration: avgCallDuration ? Math.round(avgCallDuration * 100) / 100 : null,
138
+ avg_provider_rating: avgProviderRating ? Math.round(avgProviderRating * 100) / 100 : null,
139
+ provider_rating_count: providerRatingCount,
140
+ avg_patient_rating: avgPatientRating ? Math.round(avgPatientRating * 100) / 100 : null,
141
+ patient_rating_count: patientRatingCount,
142
+ });
143
+ totalRecords += countRecords;
144
+ totalUniqueAccounts += uniqueAccounts;
145
+ totalUniqueProviders += uniqueProviders;
146
+ totalUniquePatients += uniquePatients;
147
+ }
148
+ // Note: Total unique counts are approximations (sum of per-subscription uniques).
149
+ // For exact totals, would need top-level aggregations, but per-subscription counts are accurate.
150
+ this.logger.info('Successfully retrieved subscription breakdown', {
151
+ subscriptionCount: subscriptions.length,
152
+ totalRecords,
153
+ });
154
+ return {
155
+ startDate,
156
+ endDate,
157
+ subscriptions,
158
+ total_records: totalRecords,
159
+ total_unique_accounts: totalUniqueAccounts,
160
+ total_unique_providers: totalUniqueProviders,
161
+ total_unique_patients: totalUniquePatients,
162
+ };
163
+ }
164
+ catch (error) {
165
+ if (error instanceof Error && error.name === 'ZodError') {
166
+ throw new handlers_js_1.ValidationError('Invalid arguments for get_subscription_breakdown', {
167
+ details: error.message,
168
+ });
169
+ }
170
+ if (error instanceof handlers_js_1.ValidationError) {
171
+ throw error;
172
+ }
173
+ this.logger.error('Failed to get period summary', {}, error);
174
+ throw new handlers_js_1.ElasticsearchError('Failed to get period summary from Elasticsearch', error, { args });
175
+ }
176
+ }
177
+ }
178
+ exports.PeriodSummaryTool = PeriodSummaryTool;
179
+ //# sourceMappingURL=get-subscription-breakdown.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-subscription-breakdown.js","sourceRoot":"","sources":["../../src/tools/get-subscription-breakdown.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,38 @@
1
+ import { ElasticsearchManager } from '../elasticsearch/client.js';
2
+ import { Logger } from '../logger.js';
3
+ export interface GetUsageLeaderboardArgs {
4
+ entityType: 'account' | 'group' | 'provider_platform' | 'patient_platform' | 'provider_platform_version' | 'patient_platform_version';
5
+ mode: 'top_n' | 'specific';
6
+ limit?: number;
7
+ entityValue?: string;
8
+ startDate?: string;
9
+ endDate?: string;
10
+ subscription?: string;
11
+ orderBy?: 'visit_count' | 'unique_accounts' | 'unique_groups' | 'unique_providers' | 'unique_patients';
12
+ }
13
+ export interface EntityUsageMetrics {
14
+ entity: string;
15
+ total_visits: number;
16
+ unique_accounts: number;
17
+ unique_groups: number;
18
+ unique_providers: number;
19
+ unique_patients: number;
20
+ avg_patient_rating: number | null;
21
+ avg_provider_rating: number | null;
22
+ avg_call_duration: number | null;
23
+ }
24
+ export interface GetUsageLeaderboardResult {
25
+ entityType: string;
26
+ mode: string;
27
+ startDate: string;
28
+ endDate: string;
29
+ orderBy: string;
30
+ results: EntityUsageMetrics[];
31
+ }
32
+ export declare class GetUsageLeaderboardTool {
33
+ private elasticsearch;
34
+ private logger;
35
+ constructor(elasticsearch: ElasticsearchManager, logger: Logger);
36
+ execute(args: unknown): Promise<GetUsageLeaderboardResult>;
37
+ }
38
+ //# sourceMappingURL=get-usage-leaderboard.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-usage-leaderboard.d.ts","sourceRoot":"","sources":["../../src/tools/get-usage-leaderboard.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AA+BtC,MAAM,WAAW,uBAAuB;IACpC,UAAU,EAAE,SAAS,GAAG,OAAO,GAAG,mBAAmB,GAAG,kBAAkB,GAAG,2BAA2B,GAAG,0BAA0B,CAAC;IACtI,IAAI,EAAE,OAAO,GAAG,UAAU,CAAC;IAC3B,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,aAAa,GAAG,iBAAiB,GAAG,eAAe,GAAG,kBAAkB,GAAG,iBAAiB,CAAC;CAC1G;AAED,MAAM,WAAW,kBAAkB;IAC/B,MAAM,EAAE,MAAM,CAAC;IACf,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,iBAAiB,EAAE,MAAM,GAAG,IAAI,CAAC;CACpC;AAED,MAAM,WAAW,yBAAyB;IACtC,UAAU,EAAE,MAAM,CAAC;IACnB,IAAI,EAAE,MAAM,CAAC;IACb,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,kBAAkB,EAAE,CAAC;CACjC;AAED,qBAAa,uBAAuB;IAChC,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,MAAM,CAAS;gBAEX,aAAa,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM;IAKzD,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,yBAAyB,CAAC;CAuInE"}
@@ -0,0 +1,177 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.GetUsageLeaderboardTool = void 0;
4
+ const zod_1 = require("zod");
5
+ const handlers_js_1 = require("../errors/handlers.js");
6
+ const field_constants_js_1 = require("../utils/field-constants.js");
7
+ const GetUsageLeaderboardArgsSchema = zod_1.z.object({
8
+ entityType: zod_1.z.enum([
9
+ 'account',
10
+ 'group',
11
+ 'provider_platform',
12
+ 'patient_platform',
13
+ 'provider_platform_version',
14
+ 'patient_platform_version',
15
+ ]).describe('Type of entity to analyze'),
16
+ mode: zod_1.z.enum(['top_n', 'specific']).describe('Mode: "top_n" to find top entities by usage, "specific" to get usage for a specific entity'),
17
+ limit: zod_1.z.number().int().min(1).max(50).optional().default(10).describe('Max number of results (for top_n mode, default 10)'),
18
+ entityValue: zod_1.z.string().optional().describe('Specific entity name (required if mode is "specific")'),
19
+ startDate: zod_1.z.string().optional().describe('Start date (ISO or date math, default: now-30d)'),
20
+ endDate: zod_1.z.string().optional().describe('End date (ISO or date math, default: now)'),
21
+ subscription: zod_1.z.enum(['Enterprise', 'Premium', 'FVC', 'BVC', 'Plus']).optional().describe('Optional subscription filter'),
22
+ orderBy: zod_1.z.enum(['visit_count', 'unique_accounts', 'unique_groups', 'unique_providers', 'unique_patients']).default('visit_count').describe('Metric to order top N entities by (default: visit_count)'),
23
+ }).refine(data => {
24
+ if (data.mode === 'specific' && !data.entityValue) {
25
+ return false;
26
+ }
27
+ return true;
28
+ }, {
29
+ message: "entityValue is required when mode is 'specific'",
30
+ path: ['entityValue']
31
+ });
32
+ class GetUsageLeaderboardTool {
33
+ elasticsearch;
34
+ logger;
35
+ constructor(elasticsearch, logger) {
36
+ this.elasticsearch = elasticsearch;
37
+ this.logger = logger.child({ tool: 'get-usage-leaderboard' });
38
+ }
39
+ async execute(args) {
40
+ try {
41
+ const validatedArgs = GetUsageLeaderboardArgsSchema.parse(args);
42
+ const limit = validatedArgs.limit || 10;
43
+ const startDate = validatedArgs.startDate || 'now-30d';
44
+ const endDate = validatedArgs.endDate || 'now';
45
+ const orderBy = validatedArgs.orderBy || 'visit_count';
46
+ this.logger.info('Executing usage leaderboard', {
47
+ entityType: validatedArgs.entityType,
48
+ mode: validatedArgs.mode,
49
+ limit,
50
+ orderBy,
51
+ entityValue: validatedArgs.entityValue,
52
+ });
53
+ const client = this.elasticsearch.getClient();
54
+ const index = field_constants_js_1.FIELD_CONSTANTS.index;
55
+ const timeField = field_constants_js_1.FIELD_CONSTANTS.timeField;
56
+ // Determine field name based on entity type
57
+ let fieldName;
58
+ switch (validatedArgs.entityType) {
59
+ case 'account':
60
+ fieldName = field_constants_js_1.FIELD_CONSTANTS.accountField;
61
+ break;
62
+ case 'group':
63
+ fieldName = field_constants_js_1.FIELD_CONSTANTS.groupField;
64
+ break;
65
+ case 'provider_platform':
66
+ fieldName = field_constants_js_1.FIELD_CONSTANTS.providerPlatformField;
67
+ break;
68
+ case 'patient_platform':
69
+ fieldName = field_constants_js_1.FIELD_CONSTANTS.patientPlatformField;
70
+ break;
71
+ case 'provider_platform_version':
72
+ fieldName = field_constants_js_1.FIELD_CONSTANTS.providerPlatformVersionField;
73
+ break;
74
+ case 'patient_platform_version':
75
+ fieldName = field_constants_js_1.FIELD_CONSTANTS.patientPlatformVersionField;
76
+ break;
77
+ default: throw new Error(`Unknown entity type: ${validatedArgs.entityType}`);
78
+ }
79
+ // Build filters
80
+ const filters = [
81
+ { range: { [timeField]: { gte: startDate, lt: endDate } } },
82
+ { term: { [field_constants_js_1.FIELD_CONSTANTS.testVisitField]: 'No' } },
83
+ { exists: { field: fieldName } }, // Ensure entity field exists
84
+ { bool: { must_not: { term: { [fieldName]: '' } } } } // Exclude empty values
85
+ ];
86
+ if (validatedArgs.subscription) {
87
+ filters.push({ term: { [field_constants_js_1.FIELD_CONSTANTS.subscriptionField]: validatedArgs.subscription } });
88
+ }
89
+ // If specific mode, add specific filter
90
+ if (validatedArgs.mode === 'specific' && validatedArgs.entityValue) {
91
+ filters.push({ term: { [fieldName]: validatedArgs.entityValue } });
92
+ }
93
+ // Build Aggregations
94
+ const metricsAggs = {
95
+ total_visits: { value_count: { field: timeField } },
96
+ unique_accounts: { cardinality: { field: field_constants_js_1.FIELD_CONSTANTS.accountField } },
97
+ unique_groups: { cardinality: { field: field_constants_js_1.FIELD_CONSTANTS.groupField } },
98
+ unique_providers: { cardinality: { field: field_constants_js_1.FIELD_CONSTANTS.providerField } },
99
+ unique_patients: { cardinality: { field: field_constants_js_1.FIELD_CONSTANTS.patientField } },
100
+ avg_patient_rating: { avg: { field: field_constants_js_1.FIELD_CONSTANTS.patientRatingField } },
101
+ avg_provider_rating: { avg: { field: field_constants_js_1.FIELD_CONSTANTS.providerRatingField } },
102
+ avg_call_duration: { avg: { field: field_constants_js_1.FIELD_CONSTANTS.callDurationField } }
103
+ };
104
+ let order;
105
+ if (orderBy === 'visit_count') {
106
+ order = { _count: 'desc' };
107
+ }
108
+ else {
109
+ // Sort by the sub-aggregation (metricsAggs keys)
110
+ // For 'visit_count' we could also use 'total_visits' but _count is more standard/efficient for doc count
111
+ // For distinct counts, use the metric name directly
112
+ order = { [orderBy]: 'desc' };
113
+ }
114
+ let aggs;
115
+ if (validatedArgs.mode === 'specific') {
116
+ // For specific mode, we can just aggregate at the top level,
117
+ // BUT to keep return format consistent, let's group by the term (which will be just one bucket)
118
+ aggs = {
119
+ by_entity: {
120
+ terms: { field: fieldName, size: 1 },
121
+ aggs: metricsAggs
122
+ }
123
+ };
124
+ }
125
+ else {
126
+ // Top N
127
+ aggs = {
128
+ by_entity: {
129
+ terms: {
130
+ field: fieldName,
131
+ size: limit,
132
+ order: order
133
+ },
134
+ aggs: metricsAggs
135
+ }
136
+ };
137
+ }
138
+ const query = {
139
+ index,
140
+ size: 0,
141
+ body: {
142
+ query: { bool: { filter: filters } },
143
+ aggs
144
+ }
145
+ };
146
+ const response = await client.search(query);
147
+ const buckets = response.aggregations?.by_entity?.buckets || [];
148
+ const results = buckets.map((bucket) => ({
149
+ entity: bucket.key,
150
+ total_visits: bucket.doc_count,
151
+ unique_accounts: bucket.unique_accounts.value,
152
+ unique_groups: bucket.unique_groups.value,
153
+ unique_providers: bucket.unique_providers.value,
154
+ unique_patients: bucket.unique_patients.value,
155
+ avg_patient_rating: bucket.avg_patient_rating.value ? Math.round(bucket.avg_patient_rating.value * 100) / 100 : null,
156
+ avg_provider_rating: bucket.avg_provider_rating.value ? Math.round(bucket.avg_provider_rating.value * 100) / 100 : null,
157
+ avg_call_duration: bucket.avg_call_duration.value ? Math.round(bucket.avg_call_duration.value * 100) / 100 : null,
158
+ }));
159
+ return {
160
+ entityType: validatedArgs.entityType,
161
+ mode: validatedArgs.mode,
162
+ startDate,
163
+ endDate,
164
+ orderBy,
165
+ results
166
+ };
167
+ }
168
+ catch (error) {
169
+ if (error instanceof Error && error.name === 'ZodError') {
170
+ throw new handlers_js_1.ValidationError('Invalid arguments', { details: error.message });
171
+ }
172
+ throw new handlers_js_1.ElasticsearchError('Failed to get usage leaderboard', error, { args });
173
+ }
174
+ }
175
+ }
176
+ exports.GetUsageLeaderboardTool = GetUsageLeaderboardTool;
177
+ //# sourceMappingURL=get-usage-leaderboard.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-usage-leaderboard.js","sourceRoot":"","sources":["../../src/tools/get-usage-leaderboard.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,52 @@
1
+ import { ElasticsearchManager } from '../elasticsearch/client.js';
2
+ import { Logger } from '../logger.js';
3
+ export interface GetUsageProfileArgs {
4
+ startDate?: string;
5
+ endDate?: string;
6
+ account?: string;
7
+ group?: string;
8
+ subscription?: string;
9
+ groupBy?: 'none' | 'subscription' | 'account' | 'group';
10
+ }
11
+ export interface UsageProfileItem extends Record<string, any> {
12
+ total_visits: number;
13
+ unique_accounts: number;
14
+ unique_groups: number;
15
+ unique_providers: number;
16
+ unique_patients: number;
17
+ avg_call_duration_seconds: number | null;
18
+ total_call_duration_hours: number | null;
19
+ provider_rating_count: number;
20
+ avg_provider_rating: number | null;
21
+ patient_rating_count: number;
22
+ avg_patient_rating: number | null;
23
+ subscription_distribution: Array<{
24
+ subscription: string;
25
+ count: number;
26
+ percentage: number;
27
+ }>;
28
+ provider_platform_distribution: Array<{
29
+ platform: string;
30
+ count: number;
31
+ percentage: number;
32
+ }>;
33
+ patient_platform_distribution: Array<{
34
+ platform: string;
35
+ count: number;
36
+ percentage: number;
37
+ }>;
38
+ }
39
+ export interface UsageProfileResult {
40
+ period: string;
41
+ startDate: string;
42
+ endDate: string;
43
+ groupBy: string;
44
+ summary: UsageProfileItem | UsageProfileItem[];
45
+ }
46
+ export declare class GetUsageProfileTool {
47
+ private elasticsearch;
48
+ private logger;
49
+ constructor(elasticsearch: ElasticsearchManager, logger: Logger);
50
+ execute(args: unknown): Promise<UsageProfileResult>;
51
+ }
52
+ //# sourceMappingURL=get-usage-profile.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"get-usage-profile.d.ts","sourceRoot":"","sources":["../../src/tools/get-usage-profile.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAetC,MAAM,WAAW,mBAAmB;IAClC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,OAAO,CAAC,EAAE,MAAM,GAAG,cAAc,GAAG,SAAS,GAAG,OAAO,CAAC;CACzD;AAED,MAAM,WAAW,gBAAiB,SAAQ,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC;IAC3D,YAAY,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,gBAAgB,EAAE,MAAM,CAAC;IACzB,eAAe,EAAE,MAAM,CAAC;IACxB,yBAAyB,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,yBAAyB,EAAE,MAAM,GAAG,IAAI,CAAC;IACzC,qBAAqB,EAAE,MAAM,CAAC;IAC9B,mBAAmB,EAAE,MAAM,GAAG,IAAI,CAAC;IACnC,oBAAoB,EAAE,MAAM,CAAC;IAC7B,kBAAkB,EAAE,MAAM,GAAG,IAAI,CAAC;IAClC,yBAAyB,EAAE,KAAK,CAAC;QAAE,YAAY,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC9F,8BAA8B,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;IAC/F,6BAA6B,EAAE,KAAK,CAAC;QAAE,QAAQ,EAAE,MAAM,CAAC;QAAC,KAAK,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC/F;AAED,MAAM,WAAW,kBAAkB;IACjC,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,EAAE,MAAM,CAAC;IAClB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,EAAE,gBAAgB,GAAG,gBAAgB,EAAE,CAAC;CAChD;AAED,qBAAa,mBAAmB;IAC9B,OAAO,CAAC,aAAa,CAAuB;IAC5C,OAAO,CAAC,MAAM,CAAS;gBAEX,aAAa,EAAE,oBAAoB,EAAE,MAAM,EAAE,MAAM;IAKzD,OAAO,CAAC,IAAI,EAAE,OAAO,GAAG,OAAO,CAAC,kBAAkB,CAAC;CA+Q1D"}