@rad-security/mcp-server 0.0.23 → 0.0.25

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,609 @@
1
+ import { z } from "zod";
2
+ // ============================================================================
3
+ // Schema Definitions
4
+ // ============================================================================
5
+ /**
6
+ * Schema for listing available data types (discovery)
7
+ */
8
+ export const RadQLListDataTypesSchema = z.object({}).describe("List all available RadQL data types. Returns data types with descriptions. ALWAYS call this FIRST to discover what data is available.");
9
+ /**
10
+ * Schema for getting metadata about a specific data type (schema discovery)
11
+ */
12
+ export const RadQLGetTypeMetadataSchema = z.object({
13
+ data_type: z.string()
14
+ .describe("The data type to get metadata for (e.g., 'containers', 'kubernetes_resources', 'inbox_items'). Call radql_list_data_types first to see available types.")
15
+ }).describe("Get schema/metadata for a specific RadQL data type. Returns available fields, types, and query examples. Call this AFTER radql_list_data_types to understand how to query a data type.");
16
+ /**
17
+ * Schema for listing filter values for a field (enum discovery)
18
+ */
19
+ export const RadQLListFilterValuesSchema = z.object({
20
+ data_type: z.string()
21
+ .describe("The data type (e.g., 'containers', 'kubernetes_resources')"),
22
+ filter_name: z.string()
23
+ .describe("The filter field name to get possible values for (e.g., 'namespace', 'cluster_id', 'severity')")
24
+ }).describe("List possible values for a filter field. Useful for discovering available namespaces, clusters, severities, etc. Call this when building dynamic filters.");
25
+ /**
26
+ * Main RadQL query schema for executing queries against the Data API
27
+ */
28
+ export const RadQLQuerySchema = z.object({
29
+ data_type: z.string()
30
+ .describe("The data type to query (e.g., 'containers', 'kubernetes_resources', 'inbox_items'). Use radql_list_data_types to discover available types."),
31
+ operation: z.enum([
32
+ "list",
33
+ "get_by_id",
34
+ "stats"
35
+ ]).describe("The operation to perform: 'list' for filtering/searching, 'get_by_id' for single item, 'stats' for aggregations"),
36
+ filters_query: z.string().optional()
37
+ .describe("RadQL filter query (e.g., 'severity:High AND type:misconfiguration'). Used for filtering results."),
38
+ stats_query: z.string().optional()
39
+ .describe("RadQL analytics query (e.g., 'count() by severity'). Used for aggregations and grouping."),
40
+ id: z.string().optional()
41
+ .describe("The ID of a specific item to retrieve (for get_by_id operation)"),
42
+ limit: z.number().optional().default(20)
43
+ .describe("Maximum number of results to return"),
44
+ offset: z.number().optional().default(0)
45
+ .describe("Pagination offset"),
46
+ include_relations: z.array(z.string()).optional()
47
+ .describe("Relations to include (e.g., ['owner'] for containers to include Kubernetes owner resource)")
48
+ });
49
+ /**
50
+ * Helper schema for building RadQL queries programmatically
51
+ */
52
+ export const RadQLQueryBuilderSchema = z.object({
53
+ data_type: z.string()
54
+ .describe("The data type to build a query for"),
55
+ conditions: z.array(z.object({
56
+ field: z.string(),
57
+ operator: z.enum([":", "=", "!=", "!:", "<>", ">", ">=", "<", "<=", "contains", "starts_with", "ends_with"]),
58
+ value: z.union([z.string(), z.number(), z.boolean()]),
59
+ negate: z.boolean().optional()
60
+ })).optional()
61
+ .describe("Filter conditions to combine into a RadQL query"),
62
+ logic: z.enum(["AND", "OR"]).optional().default("AND")
63
+ .describe("Logical operator to combine conditions"),
64
+ aggregation: z.enum(["count", "sum", "avg", "min", "max", "median"]).optional()
65
+ .describe("Aggregation function to apply"),
66
+ aggregate_field: z.string().optional()
67
+ .describe("Field to aggregate (omit for count(*))"),
68
+ group_by: z.array(z.string()).optional()
69
+ .describe("Fields to group by"),
70
+ time_group: z.enum(["second", "minute", "hour", "day", "month", "year"]).optional()
71
+ .describe("Time-based grouping interval for datetime fields")
72
+ });
73
+ /**
74
+ * Batch query schema for executing multiple queries in parallel
75
+ */
76
+ export const RadQLBatchQuerySchema = z.object({
77
+ queries: z.array(RadQLQuerySchema).max(10)
78
+ .describe("Array of queries to execute in parallel (max 10)")
79
+ });
80
+ // ============================================================================
81
+ // Core Functions
82
+ // ============================================================================
83
+ /**
84
+ * List all available data types that can be queried
85
+ */
86
+ export async function listDataTypes(client) {
87
+ const response = await client.makeRequest(`/accounts/${client.getAccountId()}/data/types`);
88
+ return {
89
+ available_types: Array.isArray(response) ? response : response.available_types || [],
90
+ hint: "Use radql_get_type_metadata with a specific data_type to see available fields and filtering options"
91
+ };
92
+ }
93
+ /**
94
+ * Get metadata for a specific data type including available fields
95
+ */
96
+ export async function getDataTypeMetadata(client, dataType) {
97
+ const response = await client.makeRequest(`/accounts/${client.getAccountId()}/data/${dataType}/meta`);
98
+ return {
99
+ ...response,
100
+ radql_examples: generateRadQLExamples(dataType, response.fields || [])
101
+ };
102
+ }
103
+ /**
104
+ * List data items with optional filtering
105
+ */
106
+ async function listDataItems(client, dataType, params) {
107
+ const queryParams = {
108
+ limit: params.limit,
109
+ offset: params.offset
110
+ };
111
+ if (params.filters_query)
112
+ queryParams.filters_query = params.filters_query;
113
+ if (params.include_relations && params.include_relations.length > 0) {
114
+ queryParams.include_relations = params.include_relations.join(",");
115
+ }
116
+ const response = await client.makeRequest(`/accounts/${client.getAccountId()}/data/${dataType}`, queryParams);
117
+ return {
118
+ query_explanation: explainRadQLQuery(params.filters_query),
119
+ total_count: response.total_count || 0,
120
+ returned_count: response.items?.length || 0,
121
+ data: response.items || [],
122
+ fields: response.fields || [],
123
+ applied_filters: params.filters_query || "none",
124
+ pagination: {
125
+ limit: params.limit,
126
+ offset: params.offset,
127
+ has_more: response.has_more || false
128
+ }
129
+ };
130
+ }
131
+ /**
132
+ * Get a single data item by ID
133
+ */
134
+ async function getDataItemById(client, dataType, id) {
135
+ const response = await client.makeRequest(`/accounts/${client.getAccountId()}/data/${dataType}/${id}`);
136
+ return {
137
+ data: response.data,
138
+ fields: response.fields || [],
139
+ data_type: dataType,
140
+ id: id
141
+ };
142
+ }
143
+ /**
144
+ * Get aggregated statistics for a data type
145
+ */
146
+ async function getDataStats(client, dataType, params) {
147
+ const queryParams = {
148
+ stats_query: params.stats_query
149
+ };
150
+ if (params.filters_query)
151
+ queryParams.filters_query = params.filters_query;
152
+ if (params.limit)
153
+ queryParams.limit = params.limit;
154
+ if (params.offset)
155
+ queryParams.offset = params.offset;
156
+ const response = await client.makeRequest(`/accounts/${client.getAccountId()}/data/stats/${dataType}`, queryParams);
157
+ return {
158
+ query_explanation: explainStatsQuery(params.stats_query),
159
+ stats_query: params.stats_query,
160
+ applied_filters: params.filters_query || "none",
161
+ results: response.items || [],
162
+ fields: response.fields || [],
163
+ total_count: response.total_count || 0,
164
+ returned_count: response.items?.length || 0,
165
+ has_more: response.has_more || false
166
+ };
167
+ }
168
+ /**
169
+ * List available values for a specific filter field
170
+ */
171
+ async function listFilterValues(client, dataType, filterName) {
172
+ const response = await client.makeRequest(`/accounts/${client.getAccountId()}/data/${dataType}/filters/${filterName}/values`);
173
+ // Extract values from nested API response structure
174
+ // API returns: { values: { items: [{data: {value, count}}] } }
175
+ const items = response.values?.items || [];
176
+ const values = items.map((item) => ({
177
+ value: item.data?.value,
178
+ count: item.data?.count
179
+ }));
180
+ return {
181
+ data_type: dataType,
182
+ filter_name: filterName,
183
+ values: values,
184
+ total_count: response.values?.total_count || 0,
185
+ has_more: response.values?.has_more || false,
186
+ hint: `Use these values in your filters_query like: ${filterName}:value`
187
+ };
188
+ }
189
+ /**
190
+ * Main function to execute RadQL queries (list, get_by_id, stats)
191
+ */
192
+ export async function executeRadQLQuery(client, args) {
193
+ const { operation, data_type, ...params } = args;
194
+ try {
195
+ switch (operation) {
196
+ case "list":
197
+ return await listDataItems(client, data_type, params);
198
+ case "get_by_id":
199
+ if (!params.id) {
200
+ throw new Error("id is required for get_by_id operation");
201
+ }
202
+ return await getDataItemById(client, data_type, params.id);
203
+ case "stats":
204
+ if (!params.stats_query) {
205
+ throw new Error("stats_query is required for stats operation");
206
+ }
207
+ return await getDataStats(client, data_type, params);
208
+ default:
209
+ throw new Error(`Unknown operation: ${operation}`);
210
+ }
211
+ }
212
+ catch (error) {
213
+ throw handleRadQLError(error, data_type);
214
+ }
215
+ }
216
+ /**
217
+ * Wrapper for listing data types (discovery tool)
218
+ */
219
+ export async function executeListDataTypes(client) {
220
+ return await listDataTypes(client);
221
+ }
222
+ /**
223
+ * Wrapper for getting type metadata (schema discovery tool)
224
+ */
225
+ export async function executeGetTypeMetadata(client, args) {
226
+ return await getDataTypeMetadata(client, args.data_type);
227
+ }
228
+ /**
229
+ * Wrapper for listing filter values (enum discovery tool)
230
+ */
231
+ export async function executeListFilterValues(client, args) {
232
+ return await listFilterValues(client, args.data_type, args.filter_name);
233
+ }
234
+ /**
235
+ * Build RadQL queries programmatically from structured conditions
236
+ */
237
+ export function buildRadQLQuery(args) {
238
+ const result = {};
239
+ if (args.conditions && args.conditions.length > 0) {
240
+ const conditions = args.conditions.map(cond => {
241
+ let query = "";
242
+ if (cond.negate) {
243
+ query += "NOT ";
244
+ }
245
+ query += cond.field;
246
+ // Map operator to RadQL syntax
247
+ if (cond.operator === "contains") {
248
+ // Quote wildcard values if they contain special characters
249
+ const needsQuoting = typeof cond.value === "string" && (cond.value.includes("-") || cond.value.includes(" ") || cond.value.includes(":"));
250
+ const valueStr = needsQuoting ? `"*${cond.value}*"` : `*${cond.value}*`;
251
+ query += `:${valueStr}`;
252
+ }
253
+ else if (cond.operator === "starts_with") {
254
+ const needsQuoting = typeof cond.value === "string" && (cond.value.includes("-") || cond.value.includes(" ") || cond.value.includes(":"));
255
+ const valueStr = needsQuoting ? `"${cond.value}*"` : `${cond.value}*`;
256
+ query += `:${valueStr}`;
257
+ }
258
+ else if (cond.operator === "ends_with") {
259
+ const needsQuoting = typeof cond.value === "string" && (cond.value.includes("-") || cond.value.includes(" ") || cond.value.includes(":"));
260
+ const valueStr = needsQuoting ? `"*${cond.value}"` : `*${cond.value}`;
261
+ query += `:${valueStr}`;
262
+ }
263
+ else {
264
+ // Quote string values to handle dates, hyphens, and special characters
265
+ // The RadQL parser requires quoting for:
266
+ // - Dates/timestamps (contain hyphens): "2024-01-01"
267
+ // - UUIDs (contain hyphens): "550e8400-e29b-41d4-a716-446655440000"
268
+ // - Strings with special characters: colons, spaces, etc.
269
+ // - Any value that's not a simple alphanumeric string
270
+ const value = cond.value;
271
+ let valueStr;
272
+ if (typeof value === "string") {
273
+ // Check if the string needs quoting
274
+ // Quote if it contains: spaces, hyphens, colons, or other special chars
275
+ // Or if it looks like a date/timestamp
276
+ const needsQuoting = value.includes(" ") ||
277
+ value.includes("-") ||
278
+ value.includes(":") ||
279
+ value.includes("(") ||
280
+ value.includes(")") ||
281
+ /^\d{4}-\d{2}-\d{2}/.test(value) ||
282
+ /[<>=!]/.test(value);
283
+ valueStr = needsQuoting ? `"${value}"` : value;
284
+ }
285
+ else {
286
+ valueStr = String(value);
287
+ }
288
+ query += `${cond.operator}${valueStr}`;
289
+ }
290
+ return query;
291
+ });
292
+ result.filters_query = conditions.join(` ${args.logic} `);
293
+ }
294
+ if (args.aggregation) {
295
+ let statsQuery = "";
296
+ if (args.aggregation === "count") {
297
+ statsQuery = args.aggregate_field ? `count(${args.aggregate_field})` : "count()";
298
+ }
299
+ else {
300
+ if (!args.aggregate_field) {
301
+ throw new Error(`${args.aggregation} requires an aggregate_field`);
302
+ }
303
+ statsQuery = `${args.aggregation}(${args.aggregate_field})`;
304
+ }
305
+ if (args.group_by && args.group_by.length > 0) {
306
+ const groupByFields = args.group_by.map(field => {
307
+ if (args.time_group && (field.includes("_at") || field.includes("timestamp") || field.includes("time"))) {
308
+ return `${args.time_group}(${field})`;
309
+ }
310
+ return field;
311
+ });
312
+ statsQuery += ` by ${groupByFields.join(", ")}`;
313
+ }
314
+ result.stats_query = statsQuery;
315
+ }
316
+ return result;
317
+ }
318
+ /**
319
+ * Execute multiple RadQL queries in parallel
320
+ */
321
+ export async function executeBatchQueries(client, args) {
322
+ const promises = args.queries.map(query => executeRadQLQuery(client, query).catch(err => ({
323
+ error: err.message,
324
+ query: query
325
+ })));
326
+ return await Promise.all(promises);
327
+ }
328
+ // ============================================================================
329
+ // Helper Functions
330
+ // ============================================================================
331
+ /**
332
+ * Generate example RadQL queries for a data type
333
+ */
334
+ function generateRadQLExamples(dataType, fields) {
335
+ const examples = {
336
+ filter_examples: [],
337
+ stats_examples: []
338
+ };
339
+ // Find fields by type
340
+ const stringFields = fields.filter((f) => f.type === "string" && f.is_filter);
341
+ const numberFields = fields.filter((f) => f.type === "number" && f.is_filter);
342
+ const booleanFields = fields.filter((f) => f.type === "boolean" && f.is_filter);
343
+ const dateFields = fields.filter((f) => f.type === "datetime" && f.is_filter);
344
+ if (stringFields.length > 0) {
345
+ examples.filter_examples.push({
346
+ description: "Find items with specific text value",
347
+ query: `${stringFields[0].name}:example_value`
348
+ });
349
+ examples.filter_examples.push({
350
+ description: "Find items containing text (wildcard search)",
351
+ query: `${stringFields[0].name}:*partial*`
352
+ });
353
+ }
354
+ if (numberFields.length > 0) {
355
+ examples.filter_examples.push({
356
+ description: "Find items with number comparison",
357
+ query: `${numberFields[0].name}>100`
358
+ });
359
+ }
360
+ if (booleanFields.length > 0) {
361
+ examples.filter_examples.push({
362
+ description: "Find items by boolean value",
363
+ query: `${booleanFields[0].name}:true`
364
+ });
365
+ }
366
+ if (dateFields.length > 0) {
367
+ examples.filter_examples.push({
368
+ description: "Find items after a specific date",
369
+ query: `${dateFields[0].name}>"2024-01-01"`
370
+ });
371
+ }
372
+ if (stringFields.length >= 2) {
373
+ examples.filter_examples.push({
374
+ description: "Combine multiple conditions",
375
+ query: `${stringFields[0].name}:value1 AND ${stringFields[1].name}:value2`
376
+ });
377
+ }
378
+ examples.stats_examples.push({
379
+ description: "Count all items",
380
+ query: "count()"
381
+ });
382
+ if (stringFields.length > 0) {
383
+ examples.stats_examples.push({
384
+ description: `Count items grouped by ${stringFields[0].name}`,
385
+ query: `count() by ${stringFields[0].name}`
386
+ });
387
+ }
388
+ if (numberFields.length > 0) {
389
+ examples.stats_examples.push({
390
+ description: `Average ${numberFields[0].name}`,
391
+ query: `avg(${numberFields[0].name})`
392
+ });
393
+ if (stringFields.length > 0) {
394
+ examples.stats_examples.push({
395
+ description: `Sum ${numberFields[0].name} grouped by ${stringFields[0].name}`,
396
+ query: `sum(${numberFields[0].name}) by ${stringFields[0].name}`
397
+ });
398
+ }
399
+ }
400
+ if (dateFields.length > 0) {
401
+ examples.stats_examples.push({
402
+ description: "Count items by day",
403
+ query: `count() by day(${dateFields[0].name})`
404
+ });
405
+ examples.stats_examples.push({
406
+ description: "Count items by month",
407
+ query: `count() by month(${dateFields[0].name})`
408
+ });
409
+ }
410
+ // Data type specific examples
411
+ if (dataType === "containers") {
412
+ examples.filter_examples.push({
413
+ description: "Find nginx containers in production",
414
+ query: 'image_name:*nginx* AND cluster_id:prod*'
415
+ });
416
+ examples.stats_examples.push({
417
+ description: "Count containers by image",
418
+ query: "count() by image_name"
419
+ });
420
+ }
421
+ if (dataType === "inbox_items") {
422
+ examples.filter_examples.push({
423
+ description: "Find high-severity unresolved items",
424
+ query: 'severity:High AND NOT archived:true'
425
+ });
426
+ examples.stats_examples.push({
427
+ description: "Count items by severity and type",
428
+ query: "count() by severity, type"
429
+ });
430
+ }
431
+ if (dataType === "kubernetes_resources") {
432
+ examples.filter_examples.push({
433
+ description: "Find Pods or Services",
434
+ query: 'kind:Pod OR kind:Service'
435
+ });
436
+ examples.stats_examples.push({
437
+ description: "Count resources by kind",
438
+ query: "count() by kind"
439
+ });
440
+ }
441
+ return examples;
442
+ }
443
+ /**
444
+ * Explain a RadQL filter query in natural language
445
+ */
446
+ function explainRadQLQuery(query) {
447
+ if (!query)
448
+ return "No filters applied - returning all items";
449
+ const explanations = [];
450
+ // Parse common patterns
451
+ if (query.includes(" AND ")) {
452
+ explanations.push("All conditions must be true");
453
+ }
454
+ if (query.includes(" OR ")) {
455
+ explanations.push("Any condition can be true");
456
+ }
457
+ if (query.includes("NOT ")) {
458
+ explanations.push("Excluding items matching certain conditions");
459
+ }
460
+ if (query.includes(":")) {
461
+ explanations.push("Filtering by exact field values");
462
+ }
463
+ if (query.includes("*")) {
464
+ explanations.push("Using wildcard pattern matching");
465
+ }
466
+ if (query.includes(">") || query.includes("<")) {
467
+ explanations.push("Comparing numeric or date values");
468
+ }
469
+ if (query.includes("(") && query.includes(")")) {
470
+ explanations.push("Using grouped conditions");
471
+ }
472
+ return explanations.length > 0
473
+ ? explanations.join("; ")
474
+ : "Applying custom filter conditions";
475
+ }
476
+ /**
477
+ * Explain a RadQL stats query in natural language
478
+ */
479
+ function explainStatsQuery(query) {
480
+ if (!query)
481
+ return "No aggregation specified";
482
+ const explanations = [];
483
+ // Parse aggregation functions
484
+ if (query.includes("count(")) {
485
+ explanations.push("Counting items");
486
+ }
487
+ if (query.includes("sum(")) {
488
+ explanations.push("Summing numeric values");
489
+ }
490
+ if (query.includes("avg(")) {
491
+ explanations.push("Calculating average values");
492
+ }
493
+ if (query.includes("min(")) {
494
+ explanations.push("Finding minimum values");
495
+ }
496
+ if (query.includes("max(")) {
497
+ explanations.push("Finding maximum values");
498
+ }
499
+ if (query.includes("median(")) {
500
+ explanations.push("Calculating median values");
501
+ }
502
+ // Parse grouping
503
+ if (query.includes(" by ")) {
504
+ explanations.push("Grouping results by specified fields");
505
+ }
506
+ // Parse time grouping
507
+ const timeGroups = ["second(", "minute(", "hour(", "day(", "month(", "year("];
508
+ for (const timeGroup of timeGroups) {
509
+ if (query.includes(timeGroup)) {
510
+ explanations.push(`Grouping by ${timeGroup.replace("(", "")} intervals`);
511
+ break;
512
+ }
513
+ }
514
+ return explanations.length > 0
515
+ ? explanations.join("; ")
516
+ : "Applying aggregation functions";
517
+ }
518
+ /**
519
+ * Enhanced error handling for RadQL queries
520
+ */
521
+ function handleRadQLError(error, dataType) {
522
+ const originalMsg = error.message || error.response?.data?.message || String(error);
523
+ // Parse API error responses
524
+ if (error.response?.status === 400) {
525
+ // Detect parser errors (e.g., "unexpected token")
526
+ if (originalMsg.includes("unexpected token") || originalMsg.includes("invalid query")) {
527
+ let helpfulMsg = "RadQL Parser Error\n\n";
528
+ // Specific error patterns with solutions
529
+ if (originalMsg.match(/unexpected token.*"-\d+"/)) {
530
+ helpfulMsg += "ISSUE: Unquoted date or hyphenated value detected\n";
531
+ helpfulMsg += "SOLUTION: Dates and values with hyphens MUST be quoted\n\n";
532
+ helpfulMsg += "Examples:\n";
533
+ helpfulMsg += ' INCORRECT: created_at>2024-01-01\n';
534
+ helpfulMsg += ' CORRECT: created_at>"2024-01-01"\n\n';
535
+ helpfulMsg += ' INCORRECT: id:abc-123-def\n';
536
+ helpfulMsg += ' CORRECT: id:"abc-123-def"\n\n';
537
+ }
538
+ else if (originalMsg.includes("unknown field") || originalMsg.includes("not found")) {
539
+ helpfulMsg += "ISSUE: Unknown or misspelled field name\n";
540
+ helpfulMsg += `SOLUTION: Call radql_get_type_metadata with data_type="${dataType || "your_type"}" to see all available fields\n\n`;
541
+ // Add common fields based on data type
542
+ if (dataType === "containers") {
543
+ helpfulMsg += "Common container fields:\n";
544
+ helpfulMsg += " Filterable: name, image_name, image_repo, owner_kind\n";
545
+ helpfulMsg += " All: id, cluster_id, image_tag, created_at\n\n";
546
+ }
547
+ else if (dataType === "finding_groups") {
548
+ helpfulMsg += "Common finding_groups fields:\n";
549
+ helpfulMsg += " Filterable: type, severity, source_kind, source_name, rule_title\n";
550
+ helpfulMsg += " All: group_id, severity, rule_id, event_timestamp\n\n";
551
+ }
552
+ else if (dataType === "inbox_items") {
553
+ helpfulMsg += "Common inbox_items fields:\n";
554
+ helpfulMsg += " severity (High|Medium|Low), type, title, archived, false_positive, created_at\n\n";
555
+ }
556
+ }
557
+ else {
558
+ helpfulMsg += "ISSUE: Invalid query syntax\n";
559
+ helpfulMsg += "COMMON SOLUTIONS:\n";
560
+ helpfulMsg += ' 1. Quote dates: created_at>"2024-01-01"\n';
561
+ helpfulMsg += ' 2. Quote UUIDs: id:"abc-123-def"\n';
562
+ helpfulMsg += ' 3. Quote special chars: title:"my value"\n';
563
+ helpfulMsg += ` 4. Verify fields: radql_get_type_metadata (data_type="${dataType}")\n\n`;
564
+ }
565
+ helpfulMsg += `Original error: ${originalMsg}`;
566
+ return new Error(helpfulMsg);
567
+ }
568
+ // Unknown field error
569
+ if (originalMsg.includes("unknown field") || originalMsg.includes("field") && originalMsg.includes("not found")) {
570
+ let helpfulMsg = "Unknown Field Error\n\n";
571
+ helpfulMsg += `NEXT STEP: Call radql_get_type_metadata with data_type="${dataType}" for complete field list\n\n`;
572
+ // Add field suggestions based on data type
573
+ if (dataType === "containers") {
574
+ helpfulMsg += "Common container fields (quick reference):\n";
575
+ helpfulMsg += " Filterable: name, image_name, image_repo, owner_kind\n";
576
+ helpfulMsg += " All: id, cluster_id, image_tag, created_at\n\n";
577
+ }
578
+ else if (dataType === "finding_groups") {
579
+ helpfulMsg += "Common finding_groups fields (quick reference):\n";
580
+ helpfulMsg += " Filterable: type, source_kind, source_name, source_namespace, rule_title\n";
581
+ helpfulMsg += " All: group_id, severity, rule_id, event_timestamp\n\n";
582
+ }
583
+ else if (dataType === "inbox_items") {
584
+ helpfulMsg += "Common inbox_items fields (quick reference):\n";
585
+ helpfulMsg += " severity (High|Medium|Low), type, title, archived, false_positive, created_at\n\n";
586
+ }
587
+ helpfulMsg += `Original error: ${originalMsg}`;
588
+ return new Error(helpfulMsg);
589
+ }
590
+ const message = "Invalid RadQL query syntax";
591
+ const details = {
592
+ original_error: originalMsg,
593
+ next_step: `Call radql_get_type_metadata with data_type="${dataType}" for field list and examples`,
594
+ data_type: dataType
595
+ };
596
+ return new Error(`${message}\n\n${JSON.stringify(details, null, 2)}`);
597
+ }
598
+ if (error.response?.status === 404) {
599
+ return new Error(`Data type '${dataType}' not found\n\nNEXT STEP: Call radql_list_data_types to see all available types\n\nCommon types: containers, finding_groups, inbox_items, kubernetes_resources`);
600
+ }
601
+ if (error.response?.status === 401) {
602
+ return new Error("Authentication failed\n\nVERIFY: RAD Security API credentials are set (BASE_URL and BEARER_TOKEN)");
603
+ }
604
+ if (error.response?.status === 403) {
605
+ return new Error(`Access denied to data type '${dataType}'\n\nVERIFY: Account permissions or call radql_list_data_types to confirm type exists`);
606
+ }
607
+ return error;
608
+ }
609
+ //# sourceMappingURL=radql.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"radql.js","sourceRoot":"","sources":["../../src/operations/radql.ts"],"names":[],"mappings":"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"}
package/dist/version.d.ts CHANGED
@@ -1 +1 @@
1
- export declare const VERSION = "0.0.23";
1
+ export declare const VERSION = "0.0.25";
package/dist/version.js CHANGED
@@ -1,2 +1,2 @@
1
- export const VERSION = "0.0.23";
1
+ export const VERSION = "0.0.25";
2
2
  //# sourceMappingURL=version.js.map