elasticsearch-mcp-vsee 0.5.9 → 0.5.10
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/build/tools/get-platform-breakdown.js +9 -5
- package/build/tools/get-platform-breakdown.js.map +1 -1
- package/build/tools/top-change.js +8 -4
- package/build/tools/top-change.js.map +1 -1
- package/package.json +1 -1
- package/build/tools/create-index.d.ts +0 -24
- package/build/tools/create-index.d.ts.map +0 -1
- package/build/tools/create-index.js +0 -140
- package/build/tools/create-index.js.map +0 -1
- package/build/tools/delete-document.d.ts +0 -32
- package/build/tools/delete-document.d.ts.map +0 -1
- package/build/tools/delete-document.js +0 -164
- package/build/tools/delete-document.js.map +0 -1
- package/build/tools/export-to-csv.d.ts +0 -37
- package/build/tools/export-to-csv.d.ts.map +0 -1
- package/build/tools/export-to-csv.js +0 -304
- package/build/tools/export-to-csv.js.map +0 -1
- package/build/tools/fetch-indices.d.ts +0 -30
- package/build/tools/fetch-indices.d.ts.map +0 -1
- package/build/tools/fetch-indices.js +0 -105
- package/build/tools/fetch-indices.js.map +0 -1
- package/build/tools/get-account-summary.d.ts +0 -31
- package/build/tools/get-account-summary.d.ts.map +0 -1
- package/build/tools/get-account-summary.js +0 -181
- package/build/tools/get-account-summary.js.map +0 -1
- package/build/tools/get-dashboard-summary.d.ts +0 -52
- package/build/tools/get-dashboard-summary.d.ts.map +0 -1
- package/build/tools/get-dashboard-summary.js +0 -277
- package/build/tools/get-dashboard-summary.js.map +0 -1
- package/build/tools/get-group-summary.d.ts +0 -44
- package/build/tools/get-group-summary.d.ts.map +0 -1
- package/build/tools/get-group-summary.js +0 -300
- package/build/tools/get-group-summary.js.map +0 -1
- package/build/tools/get-summary.d.ts +0 -52
- package/build/tools/get-summary.d.ts.map +0 -1
- package/build/tools/get-summary.js +0 -286
- package/build/tools/get-summary.js.map +0 -1
- package/build/tools/insert-data.d.ts +0 -25
- package/build/tools/insert-data.d.ts.map +0 -1
- package/build/tools/insert-data.js +0 -135
- package/build/tools/insert-data.js.map +0 -1
- package/build/tools/period-summary.d.ts +0 -36
- package/build/tools/period-summary.d.ts.map +0 -1
- package/build/tools/period-summary.js +0 -209
- package/build/tools/period-summary.js.map +0 -1
- package/build/tools/search-elasticsearch.d.ts +0 -45
- package/build/tools/search-elasticsearch.d.ts.map +0 -1
- package/build/tools/search-elasticsearch.js +0 -249
- package/build/tools/search-elasticsearch.js.map +0 -1
- package/build/tools/update-document.d.ts +0 -31
- package/build/tools/update-document.d.ts.map +0 -1
- package/build/tools/update-document.js +0 -163
- package/build/tools/update-document.js.map +0 -1
|
@@ -1,249 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.SearchElasticsearchTool = void 0;
|
|
4
|
-
const schemas_js_1 = require("../validation/schemas.js");
|
|
5
|
-
const handlers_js_1 = require("../errors/handlers.js");
|
|
6
|
-
class SearchElasticsearchTool {
|
|
7
|
-
elasticsearch;
|
|
8
|
-
logger;
|
|
9
|
-
constructor(elasticsearch, logger) {
|
|
10
|
-
this.elasticsearch = elasticsearch;
|
|
11
|
-
this.logger = logger.child({ tool: 'search-elasticsearch' });
|
|
12
|
-
}
|
|
13
|
-
async execute(args) {
|
|
14
|
-
try {
|
|
15
|
-
const validatedArgs = schemas_js_1.SearchArgsSchema.parse(args);
|
|
16
|
-
this.logger.info('Executing search', {
|
|
17
|
-
index: validatedArgs.index,
|
|
18
|
-
hasQuery: !!validatedArgs.query,
|
|
19
|
-
size: validatedArgs.size,
|
|
20
|
-
from: validatedArgs.from,
|
|
21
|
-
hasSort: !!validatedArgs.sort,
|
|
22
|
-
hasAggregations: !!validatedArgs.aggregations,
|
|
23
|
-
hasHighlight: !!validatedArgs.highlight,
|
|
24
|
-
});
|
|
25
|
-
const client = this.elasticsearch.getClient();
|
|
26
|
-
// Skip existence check for wildcard patterns (they may require cluster permissions)
|
|
27
|
-
// The search itself will fail gracefully if no matching indices exist
|
|
28
|
-
const isWildcardPattern = validatedArgs.index.includes('*') || validatedArgs.index.includes('?');
|
|
29
|
-
if (!isWildcardPattern) {
|
|
30
|
-
// Check if index exists (only for non-wildcard patterns)
|
|
31
|
-
try {
|
|
32
|
-
const indexExists = await client.indices.exists({
|
|
33
|
-
index: validatedArgs.index,
|
|
34
|
-
});
|
|
35
|
-
if (!indexExists) {
|
|
36
|
-
throw new handlers_js_1.NotFoundError(`Index '${validatedArgs.index}' does not exist`);
|
|
37
|
-
}
|
|
38
|
-
}
|
|
39
|
-
catch (error) {
|
|
40
|
-
// If existence check fails due to permissions, log and continue
|
|
41
|
-
// The search will fail gracefully if the index doesn't exist
|
|
42
|
-
this.logger.warn('Could not verify index existence (may require permissions), proceeding with search', {
|
|
43
|
-
index: validatedArgs.index,
|
|
44
|
-
error: error instanceof Error ? error.message : String(error),
|
|
45
|
-
});
|
|
46
|
-
}
|
|
47
|
-
}
|
|
48
|
-
// Build search request
|
|
49
|
-
const searchRequest = this.buildSearchRequest(validatedArgs);
|
|
50
|
-
// Execute search
|
|
51
|
-
const response = await client.search(searchRequest);
|
|
52
|
-
this.logger.info('Search executed successfully', {
|
|
53
|
-
index: validatedArgs.index,
|
|
54
|
-
totalHits: response.hits.total,
|
|
55
|
-
took: response.took,
|
|
56
|
-
hasAggregations: !!response.aggregations,
|
|
57
|
-
});
|
|
58
|
-
return this.formatSearchResponse(response);
|
|
59
|
-
}
|
|
60
|
-
catch (error) {
|
|
61
|
-
if (error instanceof Error && error.name === 'ZodError') {
|
|
62
|
-
throw new handlers_js_1.ValidationError('Invalid arguments for search_elasticsearch', {
|
|
63
|
-
details: error.message,
|
|
64
|
-
});
|
|
65
|
-
}
|
|
66
|
-
if (error instanceof handlers_js_1.ValidationError || error instanceof handlers_js_1.NotFoundError) {
|
|
67
|
-
throw error;
|
|
68
|
-
}
|
|
69
|
-
this.logger.error('Failed to execute search', {}, error);
|
|
70
|
-
throw new handlers_js_1.ElasticsearchError('Failed to execute search in Elasticsearch', error, { args });
|
|
71
|
-
}
|
|
72
|
-
}
|
|
73
|
-
buildSearchRequest(args) {
|
|
74
|
-
const request = {
|
|
75
|
-
index: args.index,
|
|
76
|
-
body: {},
|
|
77
|
-
};
|
|
78
|
-
// Add query
|
|
79
|
-
if (args.query) {
|
|
80
|
-
const sanitizedQuery = (0, schemas_js_1.sanitizeQuery)(args.query);
|
|
81
|
-
this.validateQuery(sanitizedQuery || {});
|
|
82
|
-
request.body.query = sanitizedQuery || { match_all: {} };
|
|
83
|
-
}
|
|
84
|
-
else {
|
|
85
|
-
request.body.query = { match_all: {} };
|
|
86
|
-
}
|
|
87
|
-
// Add pagination with safeguard: cap at 50
|
|
88
|
-
if (args.size !== undefined) {
|
|
89
|
-
const cappedSize = Math.min(args.size, 50); // Safeguard: cap at 50
|
|
90
|
-
request.body.size = Math.min(cappedSize, 10000); // Elasticsearch limit
|
|
91
|
-
}
|
|
92
|
-
if (args.from !== undefined) {
|
|
93
|
-
request.body.from = args.from;
|
|
94
|
-
}
|
|
95
|
-
// Add sorting
|
|
96
|
-
if (args.sort && args.sort.length > 0) {
|
|
97
|
-
this.validateSort(args.sort);
|
|
98
|
-
request.body.sort = args.sort;
|
|
99
|
-
}
|
|
100
|
-
// Add aggregations
|
|
101
|
-
if (args.aggregations) {
|
|
102
|
-
this.validateAggregations(args.aggregations);
|
|
103
|
-
request.body.aggs = args.aggregations;
|
|
104
|
-
}
|
|
105
|
-
// Add highlighting
|
|
106
|
-
if (args.highlight) {
|
|
107
|
-
this.validateHighlight(args.highlight);
|
|
108
|
-
request.body.highlight = args.highlight;
|
|
109
|
-
}
|
|
110
|
-
// Add source filtering
|
|
111
|
-
if (args.source !== undefined) {
|
|
112
|
-
if (Array.isArray(args.source)) {
|
|
113
|
-
this.validateSourceFields(args.source);
|
|
114
|
-
}
|
|
115
|
-
request.body._source = args.source;
|
|
116
|
-
}
|
|
117
|
-
// Add timeout
|
|
118
|
-
request.timeout = '30s';
|
|
119
|
-
return request;
|
|
120
|
-
}
|
|
121
|
-
validateQuery(query) {
|
|
122
|
-
// Check for script queries (potential security risk)
|
|
123
|
-
const queryStr = JSON.stringify(query).toLowerCase();
|
|
124
|
-
if (queryStr.includes('script_score') || queryStr.includes('script_query')) {
|
|
125
|
-
throw new handlers_js_1.ValidationError('Script-based queries require additional security validation');
|
|
126
|
-
}
|
|
127
|
-
// Validate query depth
|
|
128
|
-
this.validateQueryDepth(query, 0);
|
|
129
|
-
// Check for wildcard queries on analyzed fields (performance concern)
|
|
130
|
-
if (queryStr.includes('wildcard') || queryStr.includes('prefix')) {
|
|
131
|
-
this.logger.warn('Wildcard/prefix queries detected - may impact performance', { query });
|
|
132
|
-
}
|
|
133
|
-
}
|
|
134
|
-
validateSort(sort) {
|
|
135
|
-
if (sort.length > 20) {
|
|
136
|
-
throw new handlers_js_1.ValidationError('Too many sort criteria (max 20)');
|
|
137
|
-
}
|
|
138
|
-
for (const sortItem of sort) {
|
|
139
|
-
if (typeof sortItem !== 'object' || Array.isArray(sortItem)) {
|
|
140
|
-
throw new handlers_js_1.ValidationError('Each sort item must be an object');
|
|
141
|
-
}
|
|
142
|
-
// Check for script-based sorting
|
|
143
|
-
const sortStr = JSON.stringify(sortItem).toLowerCase();
|
|
144
|
-
if (sortStr.includes('_script')) {
|
|
145
|
-
throw new handlers_js_1.ValidationError('Script-based sorting is not allowed');
|
|
146
|
-
}
|
|
147
|
-
}
|
|
148
|
-
}
|
|
149
|
-
validateAggregations(aggregations) {
|
|
150
|
-
// Check for script-based aggregations - look for actual script objects, not just the substring
|
|
151
|
-
const hasScriptAggregation = this.hasScriptInAggregations(aggregations);
|
|
152
|
-
if (hasScriptAggregation) {
|
|
153
|
-
throw new handlers_js_1.ValidationError('Script-based aggregations require additional security validation');
|
|
154
|
-
}
|
|
155
|
-
// Validate aggregation depth
|
|
156
|
-
this.validateQueryDepth(aggregations, 0);
|
|
157
|
-
// Check number of aggregations
|
|
158
|
-
if (Object.keys(aggregations).length > 50) {
|
|
159
|
-
throw new handlers_js_1.ValidationError('Too many aggregations (max 50)');
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
hasScriptInAggregations(aggregations) {
|
|
163
|
-
// Recursively check for script objects in aggregations
|
|
164
|
-
for (const [, value] of Object.entries(aggregations)) {
|
|
165
|
-
if (typeof value === 'object' && value !== null && !Array.isArray(value)) {
|
|
166
|
-
const aggObj = value;
|
|
167
|
-
// Check if this is a script aggregation (has 'script' as a key)
|
|
168
|
-
if ('script' in aggObj || '_script' in aggObj) {
|
|
169
|
-
return true;
|
|
170
|
-
}
|
|
171
|
-
// Recursively check nested aggregations
|
|
172
|
-
if ('aggs' in aggObj || 'aggregations' in aggObj) {
|
|
173
|
-
const nestedAggs = (aggObj.aggs || aggObj.aggregations);
|
|
174
|
-
if (this.hasScriptInAggregations(nestedAggs)) {
|
|
175
|
-
return true;
|
|
176
|
-
}
|
|
177
|
-
}
|
|
178
|
-
}
|
|
179
|
-
}
|
|
180
|
-
return false;
|
|
181
|
-
}
|
|
182
|
-
validateHighlight(highlight) {
|
|
183
|
-
// Validate highlight configuration
|
|
184
|
-
if (highlight.fields && typeof highlight.fields === 'object') {
|
|
185
|
-
const fieldCount = Object.keys(highlight.fields).length;
|
|
186
|
-
if (fieldCount > 20) {
|
|
187
|
-
throw new handlers_js_1.ValidationError('Too many highlight fields (max 20)');
|
|
188
|
-
}
|
|
189
|
-
}
|
|
190
|
-
// Check for script-based highlighting
|
|
191
|
-
const highlightStr = JSON.stringify(highlight).toLowerCase();
|
|
192
|
-
if (highlightStr.includes('script')) {
|
|
193
|
-
throw new handlers_js_1.ValidationError('Script-based highlighting is not allowed');
|
|
194
|
-
}
|
|
195
|
-
}
|
|
196
|
-
validateSourceFields(fields) {
|
|
197
|
-
if (fields.length > 100) {
|
|
198
|
-
throw new handlers_js_1.ValidationError('Too many source fields specified (max 100)');
|
|
199
|
-
}
|
|
200
|
-
for (const field of fields) {
|
|
201
|
-
if (typeof field !== 'string' || field.length === 0) {
|
|
202
|
-
throw new handlers_js_1.ValidationError('Source fields must be non-empty strings');
|
|
203
|
-
}
|
|
204
|
-
if (field.length > 256) {
|
|
205
|
-
throw new handlers_js_1.ValidationError(`Source field name too long: '${field}' (max 256 characters)`);
|
|
206
|
-
}
|
|
207
|
-
}
|
|
208
|
-
}
|
|
209
|
-
validateQueryDepth(obj, depth) {
|
|
210
|
-
const MAX_QUERY_DEPTH = 30; // Increased from 20 to support more complex queries
|
|
211
|
-
if (depth > MAX_QUERY_DEPTH) {
|
|
212
|
-
throw new handlers_js_1.ValidationError(`Query nesting exceeds maximum depth of ${MAX_QUERY_DEPTH}`);
|
|
213
|
-
}
|
|
214
|
-
for (const value of Object.values(obj)) {
|
|
215
|
-
if (typeof value === 'object' && value !== null && !Array.isArray(value)) {
|
|
216
|
-
this.validateQueryDepth(value, depth + 1);
|
|
217
|
-
}
|
|
218
|
-
else if (Array.isArray(value)) {
|
|
219
|
-
// Also check depth in array elements
|
|
220
|
-
for (const item of value) {
|
|
221
|
-
if (typeof item === 'object' && item !== null) {
|
|
222
|
-
this.validateQueryDepth(item, depth + 1);
|
|
223
|
-
}
|
|
224
|
-
}
|
|
225
|
-
}
|
|
226
|
-
}
|
|
227
|
-
}
|
|
228
|
-
formatSearchResponse(response) {
|
|
229
|
-
const hits = response.hits.hits.map((hit) => ({
|
|
230
|
-
_id: hit._id,
|
|
231
|
-
_source: hit._source || {},
|
|
232
|
-
_score: hit._score || 0,
|
|
233
|
-
...(hit.highlight && { highlight: hit.highlight }),
|
|
234
|
-
}));
|
|
235
|
-
return {
|
|
236
|
-
hits: {
|
|
237
|
-
total: {
|
|
238
|
-
value: response.hits.total?.value || response.hits.total || 0,
|
|
239
|
-
relation: response.hits.total?.relation || 'eq',
|
|
240
|
-
},
|
|
241
|
-
hits,
|
|
242
|
-
},
|
|
243
|
-
...(response.aggregations && { aggregations: response.aggregations }),
|
|
244
|
-
took: response.took || 0,
|
|
245
|
-
};
|
|
246
|
-
}
|
|
247
|
-
}
|
|
248
|
-
exports.SearchElasticsearchTool = SearchElasticsearchTool;
|
|
249
|
-
//# sourceMappingURL=search-elasticsearch.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"search-elasticsearch.js","sourceRoot":"","sources":["../../src/tools/search-elasticsearch.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,31 +0,0 @@
|
|
|
1
|
-
import { ElasticsearchManager } from '../elasticsearch/client.js';
|
|
2
|
-
import { Logger } from '../logger.js';
|
|
3
|
-
export interface UpdateDocumentArgs {
|
|
4
|
-
index: string;
|
|
5
|
-
id: string;
|
|
6
|
-
document?: Record<string, unknown>;
|
|
7
|
-
script?: {
|
|
8
|
-
source: string;
|
|
9
|
-
params?: Record<string, unknown>;
|
|
10
|
-
};
|
|
11
|
-
upsert?: boolean;
|
|
12
|
-
refresh?: boolean | 'wait_for' | 'false' | 'true';
|
|
13
|
-
}
|
|
14
|
-
export interface UpdateDocumentResult {
|
|
15
|
-
_id: string;
|
|
16
|
-
_index: string;
|
|
17
|
-
_version: number;
|
|
18
|
-
result: 'updated' | 'created' | 'noop';
|
|
19
|
-
}
|
|
20
|
-
export declare class UpdateDocumentTool {
|
|
21
|
-
private elasticsearch;
|
|
22
|
-
private logger;
|
|
23
|
-
constructor(elasticsearch: ElasticsearchManager, logger: Logger);
|
|
24
|
-
execute(args: unknown): Promise<UpdateDocumentResult>;
|
|
25
|
-
private validateDocument;
|
|
26
|
-
private validateAndPrepareScript;
|
|
27
|
-
private validateScriptParams;
|
|
28
|
-
private isValidDottedField;
|
|
29
|
-
private normalizeRefreshParameter;
|
|
30
|
-
}
|
|
31
|
-
//# sourceMappingURL=update-document.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"update-document.d.ts","sourceRoot":"","sources":["../../src/tools/update-document.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,oBAAoB,EAAE,MAAM,4BAA4B,CAAC;AAClE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AAItC,MAAM,WAAW,kBAAkB;IACjC,KAAK,EAAE,MAAM,CAAC;IACd,EAAE,EAAE,MAAM,CAAC;IACX,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IACnC,MAAM,CAAC,EAAE;QACP,MAAM,EAAE,MAAM,CAAC;QACf,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;KAClC,CAAC;IACF,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,OAAO,GAAG,UAAU,GAAG,OAAO,GAAG,MAAM,CAAC;CACnD;AAED,MAAM,WAAW,oBAAoB;IACnC,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,SAAS,GAAG,SAAS,GAAG,MAAM,CAAC;CACxC;AAED,qBAAa,kBAAkB;IAC7B,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,oBAAoB,CAAC;IA8F3D,OAAO,CAAC,gBAAgB;IAwBxB,OAAO,CAAC,wBAAwB;IAwBhC,OAAO,CAAC,oBAAoB;IA0B5B,OAAO,CAAC,kBAAkB;IAK1B,OAAO,CAAC,yBAAyB;CAelC"}
|
|
@@ -1,163 +0,0 @@
|
|
|
1
|
-
"use strict";
|
|
2
|
-
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.UpdateDocumentTool = void 0;
|
|
4
|
-
const schemas_js_1 = require("../validation/schemas.js");
|
|
5
|
-
const handlers_js_1 = require("../errors/handlers.js");
|
|
6
|
-
class UpdateDocumentTool {
|
|
7
|
-
elasticsearch;
|
|
8
|
-
logger;
|
|
9
|
-
constructor(elasticsearch, logger) {
|
|
10
|
-
this.elasticsearch = elasticsearch;
|
|
11
|
-
this.logger = logger.child({ tool: 'update-document' });
|
|
12
|
-
}
|
|
13
|
-
async execute(args) {
|
|
14
|
-
try {
|
|
15
|
-
const validatedArgs = schemas_js_1.UpdateDocumentArgsSchema.parse(args);
|
|
16
|
-
this.logger.info('Updating document', {
|
|
17
|
-
index: validatedArgs.index,
|
|
18
|
-
id: validatedArgs.id,
|
|
19
|
-
hasDocument: !!validatedArgs.document,
|
|
20
|
-
hasScript: !!validatedArgs.script,
|
|
21
|
-
upsert: validatedArgs.upsert,
|
|
22
|
-
refresh: validatedArgs.refresh,
|
|
23
|
-
});
|
|
24
|
-
const client = this.elasticsearch.getClient();
|
|
25
|
-
// Check if index exists
|
|
26
|
-
const indexExists = await client.indices.exists({
|
|
27
|
-
index: validatedArgs.index,
|
|
28
|
-
});
|
|
29
|
-
if (!indexExists) {
|
|
30
|
-
throw new handlers_js_1.NotFoundError(`Index '${validatedArgs.index}' does not exist`);
|
|
31
|
-
}
|
|
32
|
-
// Prepare update body
|
|
33
|
-
const updateBody = {};
|
|
34
|
-
if (validatedArgs.document) {
|
|
35
|
-
this.validateDocument(validatedArgs.document);
|
|
36
|
-
updateBody.doc = validatedArgs.document;
|
|
37
|
-
if (validatedArgs.upsert) {
|
|
38
|
-
updateBody.doc_as_upsert = true;
|
|
39
|
-
}
|
|
40
|
-
}
|
|
41
|
-
if (validatedArgs.script) {
|
|
42
|
-
updateBody.script = this.validateAndPrepareScript(validatedArgs.script);
|
|
43
|
-
if (validatedArgs.upsert && validatedArgs.document) {
|
|
44
|
-
updateBody.upsert = validatedArgs.document;
|
|
45
|
-
}
|
|
46
|
-
}
|
|
47
|
-
// Execute update
|
|
48
|
-
const response = await client.update({
|
|
49
|
-
index: validatedArgs.index,
|
|
50
|
-
id: validatedArgs.id,
|
|
51
|
-
body: updateBody,
|
|
52
|
-
refresh: this.normalizeRefreshParameter(validatedArgs.refresh),
|
|
53
|
-
retry_on_conflict: 3, // Retry on version conflicts
|
|
54
|
-
});
|
|
55
|
-
this.logger.info('Successfully updated document', {
|
|
56
|
-
id: response._id,
|
|
57
|
-
index: response._index,
|
|
58
|
-
version: response._version,
|
|
59
|
-
result: response.result,
|
|
60
|
-
});
|
|
61
|
-
return {
|
|
62
|
-
_id: response._id,
|
|
63
|
-
_index: response._index,
|
|
64
|
-
_version: response._version,
|
|
65
|
-
result: response.result,
|
|
66
|
-
};
|
|
67
|
-
}
|
|
68
|
-
catch (error) {
|
|
69
|
-
if (error instanceof Error && error.name === 'ZodError') {
|
|
70
|
-
throw new handlers_js_1.ValidationError('Invalid arguments for update_document', {
|
|
71
|
-
details: error.message,
|
|
72
|
-
});
|
|
73
|
-
}
|
|
74
|
-
// Handle Elasticsearch specific errors
|
|
75
|
-
if (error instanceof Error) {
|
|
76
|
-
const errorMessage = error.message.toLowerCase();
|
|
77
|
-
if (errorMessage.includes('document_missing_exception') || errorMessage.includes('not_found')) {
|
|
78
|
-
throw new handlers_js_1.NotFoundError(`Document with ID '${args?.id}' not found in index '${args?.index}'`);
|
|
79
|
-
}
|
|
80
|
-
if (errorMessage.includes('version_conflict')) {
|
|
81
|
-
throw new handlers_js_1.ValidationError('Document was modified by another process, please retry');
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
this.logger.error('Failed to update document', {}, error);
|
|
85
|
-
throw new handlers_js_1.ElasticsearchError('Failed to update document in Elasticsearch', error, { args });
|
|
86
|
-
}
|
|
87
|
-
}
|
|
88
|
-
validateDocument(document) {
|
|
89
|
-
// Check if document is empty
|
|
90
|
-
if (Object.keys(document).length === 0) {
|
|
91
|
-
throw new handlers_js_1.ValidationError('Update document cannot be empty');
|
|
92
|
-
}
|
|
93
|
-
// Check for invalid field names
|
|
94
|
-
for (const key of Object.keys(document)) {
|
|
95
|
-
if (key.startsWith('_')) {
|
|
96
|
-
throw new handlers_js_1.ValidationError(`Field name '${key}' cannot start with underscore (reserved)`);
|
|
97
|
-
}
|
|
98
|
-
if (key.includes('.') && !this.isValidDottedField(key)) {
|
|
99
|
-
throw new handlers_js_1.ValidationError(`Invalid field name '${key}': improper dot notation`);
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
// Validate document size
|
|
103
|
-
const documentSize = JSON.stringify(document).length;
|
|
104
|
-
if (documentSize > 100 * 1024 * 1024) { // 100MB limit
|
|
105
|
-
throw new handlers_js_1.ValidationError('Document size exceeds 100MB limit');
|
|
106
|
-
}
|
|
107
|
-
}
|
|
108
|
-
validateAndPrepareScript(script) {
|
|
109
|
-
if (!script.source || script.source.trim().length === 0) {
|
|
110
|
-
throw new handlers_js_1.ValidationError('Script source cannot be empty');
|
|
111
|
-
}
|
|
112
|
-
// Sanitize script source for security
|
|
113
|
-
const sanitizedSource = (0, schemas_js_1.sanitizeScriptSource)(script.source);
|
|
114
|
-
// Validate script parameters
|
|
115
|
-
if (script.params) {
|
|
116
|
-
this.validateScriptParams(script.params);
|
|
117
|
-
}
|
|
118
|
-
return {
|
|
119
|
-
source: sanitizedSource,
|
|
120
|
-
...(script.params && { params: script.params }),
|
|
121
|
-
lang: 'painless', // Default to Painless scripting language
|
|
122
|
-
};
|
|
123
|
-
}
|
|
124
|
-
validateScriptParams(params) {
|
|
125
|
-
const maxParams = 50;
|
|
126
|
-
const paramKeys = Object.keys(params);
|
|
127
|
-
if (paramKeys.length > maxParams) {
|
|
128
|
-
throw new handlers_js_1.ValidationError(`Too many script parameters (max ${maxParams})`);
|
|
129
|
-
}
|
|
130
|
-
for (const [key, value] of Object.entries(params)) {
|
|
131
|
-
// Check parameter name
|
|
132
|
-
if (key.length > 128) {
|
|
133
|
-
throw new handlers_js_1.ValidationError(`Parameter name '${key}' too long (max 128 characters)`);
|
|
134
|
-
}
|
|
135
|
-
if (!/^[a-zA-Z_][a-zA-Z0-9_]*$/.test(key)) {
|
|
136
|
-
throw new handlers_js_1.ValidationError(`Invalid parameter name '${key}': must be a valid identifier`);
|
|
137
|
-
}
|
|
138
|
-
// Check parameter value size
|
|
139
|
-
const valueSize = JSON.stringify(value).length;
|
|
140
|
-
if (valueSize > 1024 * 1024) { // 1MB limit per parameter
|
|
141
|
-
throw new handlers_js_1.ValidationError(`Parameter '${key}' value exceeds 1MB limit`);
|
|
142
|
-
}
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
isValidDottedField(fieldName) {
|
|
146
|
-
// Check for valid dot notation (no consecutive dots, no leading/trailing dots)
|
|
147
|
-
return !/^\.|\.$|\.\./.test(fieldName);
|
|
148
|
-
}
|
|
149
|
-
normalizeRefreshParameter(refresh) {
|
|
150
|
-
if (refresh === undefined || refresh === false || refresh === 'false') {
|
|
151
|
-
return false;
|
|
152
|
-
}
|
|
153
|
-
if (refresh === true || refresh === 'true') {
|
|
154
|
-
return true;
|
|
155
|
-
}
|
|
156
|
-
if (refresh === 'wait_for') {
|
|
157
|
-
return 'wait_for';
|
|
158
|
-
}
|
|
159
|
-
return false;
|
|
160
|
-
}
|
|
161
|
-
}
|
|
162
|
-
exports.UpdateDocumentTool = UpdateDocumentTool;
|
|
163
|
-
//# sourceMappingURL=update-document.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"update-document.js","sourceRoot":"","sources":["../../src/tools/update-document.ts"],"names":[],"mappings":"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"}
|