snow-flow 8.39.6 → 8.39.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  <p align="center">
2
2
  <picture>
3
- <img src="packages/console/app/src/asset/logo-ornate-light.svg" alt="SnowCode logo" width="300">
3
+ <img src="assets/logo.svg" alt="Snow-Flow logo" width="300">
4
4
  </picture>
5
5
  </p>
6
6
 
@@ -1,5 +1,9 @@
1
1
  /**
2
2
  * snow_fuzzy_search
3
+ *
4
+ * Perform intelligent fuzzy search across ServiceNow tables using
5
+ * multiple matching strategies: LIKE queries, CONTAINS, and
6
+ * Levenshtein-based relevance scoring.
3
7
  */
4
8
  import { MCPToolDefinition, ServiceNowContext, ToolResult } from '../../shared/types.js';
5
9
  export declare const toolDefinition: MCPToolDefinition;
@@ -1 +1 @@
1
- {"version":3,"file":"snow_fuzzy_search.d.ts","sourceRoot":"","sources":["../../../../../src/mcp/servicenow-mcp-unified/tools/advanced/snow_fuzzy_search.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAIzF,eAAO,MAAM,cAAc,EAAE,iBAuB5B,CAAC;AAEF,wBAAsB,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,CAyBxF;AAED,eAAO,MAAM,OAAO,UAAU,CAAC;AAC/B,eAAO,MAAM,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"snow_fuzzy_search.d.ts","sourceRoot":"","sources":["../../../../../src/mcp/servicenow-mcp-unified/tools/advanced/snow_fuzzy_search.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAIzF,eAAO,MAAM,cAAc,EAAE,iBA6C5B,CAAC;AAmGF,wBAAsB,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,CA0IxF;AAED,eAAO,MAAM,OAAO,UAAU,CAAC;AAC/B,eAAO,MAAM,MAAM,4BAA4B,CAAC"}
@@ -1,6 +1,10 @@
1
1
  "use strict";
2
2
  /**
3
3
  * snow_fuzzy_search
4
+ *
5
+ * Perform intelligent fuzzy search across ServiceNow tables using
6
+ * multiple matching strategies: LIKE queries, CONTAINS, and
7
+ * Levenshtein-based relevance scoring.
4
8
  */
5
9
  Object.defineProperty(exports, "__esModule", { value: true });
6
10
  exports.author = exports.version = exports.toolDefinition = void 0;
@@ -9,11 +13,11 @@ const auth_js_1 = require("../../shared/auth.js");
9
13
  const error_handler_js_1 = require("../../shared/error-handler.js");
10
14
  exports.toolDefinition = {
11
15
  name: 'snow_fuzzy_search',
12
- description: 'Perform fuzzy search across tables',
16
+ description: 'Perform fuzzy search across tables with relevance scoring. Uses LIKE/CONTAINS queries and ranks results by similarity to the search query.',
13
17
  // Metadata for tool discovery (not sent to LLM)
14
18
  category: 'advanced',
15
19
  subcategory: 'search',
16
- use_cases: ['fuzzy-search', 'text-search', 'search'],
20
+ use_cases: ['fuzzy-search', 'text-search', 'search', 'find-similar'],
17
21
  complexity: 'intermediate',
18
22
  frequency: 'medium',
19
23
  // Permission enforcement
@@ -23,36 +27,239 @@ exports.toolDefinition = {
23
27
  inputSchema: {
24
28
  type: 'object',
25
29
  properties: {
26
- query: { type: 'string', description: 'Search query' },
27
- tables: { type: 'array', items: { type: 'string' }, description: 'Tables to search' },
28
- threshold: { type: 'number', default: 0.7, description: 'Match threshold (0-1)' }
30
+ query: {
31
+ type: 'string',
32
+ description: 'Search query - will match against name, label, and description fields'
33
+ },
34
+ tables: {
35
+ type: 'array',
36
+ items: { type: 'string' },
37
+ description: 'Tables to search (e.g., ["sys_db_object", "sys_script_include"])'
38
+ },
39
+ search_fields: {
40
+ type: 'array',
41
+ items: { type: 'string' },
42
+ description: 'Fields to search within each table (default: name, label, description)',
43
+ default: ['name', 'label', 'description']
44
+ },
45
+ threshold: {
46
+ type: 'number',
47
+ default: 0.3,
48
+ description: 'Minimum similarity score (0-1) to include in results. Lower = more results.'
49
+ },
50
+ limit: {
51
+ type: 'number',
52
+ default: 20,
53
+ description: 'Maximum results per table'
54
+ }
29
55
  },
30
56
  required: ['query', 'tables']
31
57
  }
32
58
  };
59
+ /**
60
+ * Calculate Levenshtein distance between two strings
61
+ */
62
+ function levenshteinDistance(str1, str2) {
63
+ const s1 = str1.toLowerCase();
64
+ const s2 = str2.toLowerCase();
65
+ if (s1.length === 0)
66
+ return s2.length;
67
+ if (s2.length === 0)
68
+ return s1.length;
69
+ const matrix = [];
70
+ for (let i = 0; i <= s1.length; i++) {
71
+ matrix[i] = [i];
72
+ }
73
+ for (let j = 0; j <= s2.length; j++) {
74
+ matrix[0][j] = j;
75
+ }
76
+ for (let i = 1; i <= s1.length; i++) {
77
+ for (let j = 1; j <= s2.length; j++) {
78
+ const cost = s1[i - 1] === s2[j - 1] ? 0 : 1;
79
+ matrix[i][j] = Math.min(matrix[i - 1][j] + 1, // deletion
80
+ matrix[i][j - 1] + 1, // insertion
81
+ matrix[i - 1][j - 1] + cost // substitution
82
+ );
83
+ }
84
+ }
85
+ return matrix[s1.length][s2.length];
86
+ }
87
+ /**
88
+ * Calculate similarity score (0-1) between query and a field value
89
+ */
90
+ function calculateSimilarity(query, value) {
91
+ if (!value)
92
+ return 0;
93
+ const q = query.toLowerCase();
94
+ const v = value.toLowerCase();
95
+ // Exact match
96
+ if (v === q)
97
+ return 1.0;
98
+ // Contains exact query
99
+ if (v.includes(q))
100
+ return 0.9;
101
+ // Query contains the value (partial match)
102
+ if (q.includes(v))
103
+ return 0.7;
104
+ // Word-level matching
105
+ const queryWords = q.split(/[\s_\-\.]+/);
106
+ const valueWords = v.split(/[\s_\-\.]+/);
107
+ let matchedWords = 0;
108
+ for (const qWord of queryWords) {
109
+ for (const vWord of valueWords) {
110
+ if (vWord.includes(qWord) || qWord.includes(vWord)) {
111
+ matchedWords++;
112
+ break;
113
+ }
114
+ }
115
+ }
116
+ const wordScore = queryWords.length > 0 ? matchedWords / queryWords.length : 0;
117
+ if (wordScore > 0.5)
118
+ return 0.5 + (wordScore * 0.3);
119
+ // Levenshtein-based similarity for close matches
120
+ const distance = levenshteinDistance(q, v);
121
+ const maxLen = Math.max(q.length, v.length);
122
+ const levenshteinScore = maxLen > 0 ? 1 - (distance / maxLen) : 0;
123
+ return levenshteinScore;
124
+ }
125
+ /**
126
+ * Calculate overall relevance score for a record
127
+ */
128
+ function calculateRelevanceScore(query, record, searchFields) {
129
+ let maxScore = 0;
130
+ let matchedField = '';
131
+ for (const field of searchFields) {
132
+ const value = record[field];
133
+ if (value) {
134
+ const score = calculateSimilarity(query, String(value));
135
+ if (score > maxScore) {
136
+ maxScore = score;
137
+ matchedField = field;
138
+ }
139
+ }
140
+ }
141
+ return { score: maxScore, matchedField };
142
+ }
33
143
  async function execute(args, context) {
34
- const { query, tables, threshold = 0.7 } = args;
144
+ const { query, tables, search_fields = ['name', 'label', 'description'], threshold = 0.3, limit = 20 } = args;
145
+ if (!query || query.trim().length === 0) {
146
+ return (0, error_handler_js_1.createErrorResult)('Search query cannot be empty');
147
+ }
148
+ if (!tables || tables.length === 0) {
149
+ return (0, error_handler_js_1.createErrorResult)('At least one table must be specified');
150
+ }
35
151
  try {
36
152
  const client = await (0, auth_js_1.getAuthenticatedClient)(context);
37
- const results = [];
38
- for (const table of tables) {
39
- const response = await client.get(`/api/now/table/${table}`, {
40
- params: {
41
- sysparm_query: `123TEXTQUERY321${query}`,
42
- sysparm_limit: 10
153
+ const allResults = [];
154
+ const tableResults = [];
155
+ // Build LIKE query for each search field
156
+ // This gets candidates from ServiceNow, then we score them locally
157
+ const buildSearchQuery = (fields, searchTerm) => {
158
+ const conditions = fields.map(field => `${field}LIKE${searchTerm}`);
159
+ return conditions.join('^NQ'); // NQ = OR in ServiceNow
160
+ };
161
+ // Search each table in parallel for better performance
162
+ const searchPromises = tables.map(async (table) => {
163
+ try {
164
+ // First, check what fields exist on this table
165
+ const searchQuery = buildSearchQuery(search_fields, query);
166
+ const response = await client.get(`/api/now/table/${table}`, {
167
+ params: {
168
+ sysparm_query: searchQuery,
169
+ sysparm_limit: limit * 2, // Get more candidates for scoring
170
+ sysparm_fields: `sys_id,${search_fields.join(',')},sys_created_on,sys_updated_on`
171
+ },
172
+ timeout: 15000 // 15 second timeout per table
173
+ });
174
+ if (!response.data.result || response.data.result.length === 0) {
175
+ return { table, results: [], count: 0 };
43
176
  }
44
- });
45
- results.push(...response.data.result);
177
+ // Score and filter results
178
+ const scoredResults = response.data.result
179
+ .map((record) => {
180
+ const { score, matchedField } = calculateRelevanceScore(query, record, search_fields);
181
+ return {
182
+ ...record,
183
+ _relevance_score: score,
184
+ _matched_field: matchedField,
185
+ _table: table
186
+ };
187
+ })
188
+ .filter((r) => r._relevance_score >= threshold)
189
+ .sort((a, b) => b._relevance_score - a._relevance_score)
190
+ .slice(0, limit);
191
+ return {
192
+ table,
193
+ results: scoredResults,
194
+ count: scoredResults.length
195
+ };
196
+ }
197
+ catch (tableError) {
198
+ // Return empty results for tables that error (might not exist or no access)
199
+ return {
200
+ table,
201
+ results: [],
202
+ count: 0,
203
+ error: tableError.message
204
+ };
205
+ }
206
+ });
207
+ const searchResults = await Promise.all(searchPromises);
208
+ // Aggregate results
209
+ for (const result of searchResults) {
210
+ if (result.count > 0) {
211
+ tableResults.push({
212
+ table: result.table,
213
+ count: result.count,
214
+ matches: result.results.map((r) => ({
215
+ sys_id: r.sys_id,
216
+ name: r.name || r.label || r.sys_id,
217
+ label: r.label,
218
+ description: r.description,
219
+ relevance_score: Math.round(r._relevance_score * 100) / 100,
220
+ matched_field: r._matched_field,
221
+ created: r.sys_created_on,
222
+ updated: r.sys_updated_on
223
+ }))
224
+ });
225
+ allResults.push(...result.results);
226
+ }
227
+ else if (result.error) {
228
+ tableResults.push({
229
+ table: result.table,
230
+ count: 0,
231
+ error: result.error
232
+ });
233
+ }
46
234
  }
235
+ // Sort all results by relevance score
236
+ allResults.sort((a, b) => b._relevance_score - a._relevance_score);
237
+ const totalMatches = allResults.length;
238
+ const tablesSearched = tables.length;
239
+ const tablesWithResults = tableResults.filter(t => t.count > 0).length;
47
240
  return (0, error_handler_js_1.createSuccessResult)({
48
- results,
49
- count: results.length,
50
241
  query,
51
- threshold
242
+ threshold,
243
+ summary: {
244
+ total_matches: totalMatches,
245
+ tables_searched: tablesSearched,
246
+ tables_with_results: tablesWithResults
247
+ },
248
+ results_by_table: tableResults,
249
+ top_matches: allResults.slice(0, 10).map((r) => ({
250
+ table: r._table,
251
+ sys_id: r.sys_id,
252
+ name: r.name || r.label || r.sys_id,
253
+ relevance_score: Math.round(r._relevance_score * 100) / 100,
254
+ matched_field: r._matched_field
255
+ })),
256
+ message: totalMatches > 0
257
+ ? `Found ${totalMatches} matches for "${query}" across ${tablesWithResults} table(s)`
258
+ : `No matches found for "${query}" above threshold ${threshold}`
52
259
  });
53
260
  }
54
261
  catch (error) {
55
- return (0, error_handler_js_1.createErrorResult)(error.message);
262
+ return (0, error_handler_js_1.createErrorResult)(`Fuzzy search failed: ${error.message}`);
56
263
  }
57
264
  }
58
265
  exports.version = '1.0.0';
@@ -1 +1 @@
1
- {"version":3,"file":"snow_fuzzy_search.js","sourceRoot":"","sources":["../../../../../src/mcp/servicenow-mcp-unified/tools/advanced/snow_fuzzy_search.ts"],"names":[],"mappings":";AAAA;;GAEG;;;AA+BH,0BAyBC;AArDD,kDAA8D;AAC9D,oEAAuF;AAE1E,QAAA,cAAc,GAAsB;IAC/C,IAAI,EAAE,mBAAmB;IACzB,WAAW,EAAE,oCAAoC;IACjD,gDAAgD;IAChD,QAAQ,EAAE,UAAU;IACpB,WAAW,EAAE,QAAQ;IACrB,SAAS,EAAE,CAAC,cAAc,EAAE,aAAa,EAAE,QAAQ,CAAC;IACpD,UAAU,EAAE,cAAc;IAC1B,SAAS,EAAE,QAAQ;IAEnB,yBAAyB;IACzB,uDAAuD;IACvD,UAAU,EAAE,MAAM;IAClB,YAAY,EAAE,CAAC,WAAW,EAAE,aAAa,EAAE,OAAO,CAAC;IACnD,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,cAAc,EAAE;YACtD,MAAM,EAAE,EAAE,IAAI,EAAE,OAAO,EAAE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,EAAE,WAAW,EAAE,kBAAkB,EAAE;YACrF,SAAS,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,OAAO,EAAE,GAAG,EAAE,WAAW,EAAE,uBAAuB,EAAE;SAClF;QACD,QAAQ,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;KAC9B;CACF,CAAC;AAEK,KAAK,UAAU,OAAO,CAAC,IAAS,EAAE,OAA0B;IACjE,MAAM,EAAE,KAAK,EAAE,MAAM,EAAE,SAAS,GAAG,GAAG,EAAE,GAAG,IAAI,CAAC;IAChD,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,IAAA,gCAAsB,EAAC,OAAO,CAAC,CAAC;QACrD,MAAM,OAAO,GAAU,EAAE,CAAC;QAE1B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;YAC3B,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,kBAAkB,KAAK,EAAE,EAAE;gBAC3D,MAAM,EAAE;oBACN,aAAa,EAAE,kBAAkB,KAAK,EAAE;oBACxC,aAAa,EAAE,EAAE;iBAClB;aACF,CAAC,CAAC;YACH,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;QACxC,CAAC;QAED,OAAO,IAAA,sCAAmB,EAAC;YACzB,OAAO;YACP,KAAK,EAAE,OAAO,CAAC,MAAM;YACrB,KAAK;YACL,SAAS;SACV,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,IAAA,oCAAiB,EAAC,KAAK,CAAC,OAAO,CAAC,CAAC;IAC1C,CAAC;AACH,CAAC;AAEY,QAAA,OAAO,GAAG,OAAO,CAAC;AAClB,QAAA,MAAM,GAAG,yBAAyB,CAAC"}
1
+ {"version":3,"file":"snow_fuzzy_search.js","sourceRoot":"","sources":["../../../../../src/mcp/servicenow-mcp-unified/tools/advanced/snow_fuzzy_search.ts"],"names":[],"mappings":";AAAA;;;;;;GAMG;;;AAsJH,0BA0IC;AA7RD,kDAA8D;AAC9D,oEAAuF;AAE1E,QAAA,cAAc,GAAsB;IAC/C,IAAI,EAAE,mBAAmB;IACzB,WAAW,EAAE,4IAA4I;IACzJ,gDAAgD;IAChD,QAAQ,EAAE,UAAU;IACpB,WAAW,EAAE,QAAQ;IACrB,SAAS,EAAE,CAAC,cAAc,EAAE,aAAa,EAAE,QAAQ,EAAE,cAAc,CAAC;IACpE,UAAU,EAAE,cAAc;IAC1B,SAAS,EAAE,QAAQ;IAEnB,yBAAyB;IACzB,uDAAuD;IACvD,UAAU,EAAE,MAAM;IAClB,YAAY,EAAE,CAAC,WAAW,EAAE,aAAa,EAAE,OAAO,CAAC;IACnD,WAAW,EAAE;QACX,IAAI,EAAE,QAAQ;QACd,UAAU,EAAE;YACV,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,WAAW,EAAE,uEAAuE;aACrF;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACzB,WAAW,EAAE,kEAAkE;aAChF;YACD,aAAa,EAAE;gBACb,IAAI,EAAE,OAAO;gBACb,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE;gBACzB,WAAW,EAAE,wEAAwE;gBACrF,OAAO,EAAE,CAAC,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC;aAC1C;YACD,SAAS,EAAE;gBACT,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,GAAG;gBACZ,WAAW,EAAE,6EAA6E;aAC3F;YACD,KAAK,EAAE;gBACL,IAAI,EAAE,QAAQ;gBACd,OAAO,EAAE,EAAE;gBACX,WAAW,EAAE,2BAA2B;aACzC;SACF;QACD,QAAQ,EAAE,CAAC,OAAO,EAAE,QAAQ,CAAC;KAC9B;CACF,CAAC;AAEF;;GAEG;AACH,SAAS,mBAAmB,CAAC,IAAY,EAAE,IAAY;IACrD,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAC9B,MAAM,EAAE,GAAG,IAAI,CAAC,WAAW,EAAE,CAAC;IAE9B,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC,MAAM,CAAC;IACtC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,EAAE,CAAC,MAAM,CAAC;IAEtC,MAAM,MAAM,GAAe,EAAE,CAAC;IAE9B,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;IACD,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC;IACnB,CAAC;IAED,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;QACpC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,IAAI,EAAE,CAAC,MAAM,EAAE,CAAC,EAAE,EAAE,CAAC;YACpC,MAAM,IAAI,GAAG,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;YAC7C,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,IAAI,CAAC,GAAG,CACrB,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,EAAO,WAAW;YACtC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,EAAO,YAAY;YACvC,MAAM,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,CAAC,GAAG,IAAI,CAAC,eAAe;aAC5C,CAAC;QACJ,CAAC;IACH,CAAC;IAED,OAAO,MAAM,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC,EAAE,CAAC,MAAM,CAAC,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,SAAS,mBAAmB,CAAC,KAAa,EAAE,KAAa;IACvD,IAAI,CAAC,KAAK;QAAE,OAAO,CAAC,CAAC;IAErB,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAC9B,MAAM,CAAC,GAAG,KAAK,CAAC,WAAW,EAAE,CAAC;IAE9B,cAAc;IACd,IAAI,CAAC,KAAK,CAAC;QAAE,OAAO,GAAG,CAAC;IAExB,uBAAuB;IACvB,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,OAAO,GAAG,CAAC;IAE9B,2CAA2C;IAC3C,IAAI,CAAC,CAAC,QAAQ,CAAC,CAAC,CAAC;QAAE,OAAO,GAAG,CAAC;IAE9B,sBAAsB;IACtB,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACzC,MAAM,UAAU,GAAG,CAAC,CAAC,KAAK,CAAC,YAAY,CAAC,CAAC;IACzC,IAAI,YAAY,GAAG,CAAC,CAAC;IAErB,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;QAC/B,KAAK,MAAM,KAAK,IAAI,UAAU,EAAE,CAAC;YAC/B,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,IAAI,KAAK,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;gBACnD,YAAY,EAAE,CAAC;gBACf,MAAM;YACR,CAAC;QACH,CAAC;IACH,CAAC;IAED,MAAM,SAAS,GAAG,UAAU,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC;IAC/E,IAAI,SAAS,GAAG,GAAG;QAAE,OAAO,GAAG,GAAG,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC;IAEpD,iDAAiD;IACjD,MAAM,QAAQ,GAAG,mBAAmB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC;IAC3C,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC,CAAC,MAAM,CAAC,CAAC;IAC5C,MAAM,gBAAgB,GAAG,MAAM,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,GAAG,CAAC,QAAQ,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAElE,OAAO,gBAAgB,CAAC;AAC1B,CAAC;AAED;;GAEG;AACH,SAAS,uBAAuB,CAAC,KAAa,EAAE,MAAW,EAAE,YAAsB;IACjF,IAAI,QAAQ,GAAG,CAAC,CAAC;IACjB,IAAI,YAAY,GAAG,EAAE,CAAC;IAEtB,KAAK,MAAM,KAAK,IAAI,YAAY,EAAE,CAAC;QACjC,MAAM,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC,CAAC;QAC5B,IAAI,KAAK,EAAE,CAAC;YACV,MAAM,KAAK,GAAG,mBAAmB,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAAC;YACxD,IAAI,KAAK,GAAG,QAAQ,EAAE,CAAC;gBACrB,QAAQ,GAAG,KAAK,CAAC;gBACjB,YAAY,GAAG,KAAK,CAAC;YACvB,CAAC;QACH,CAAC;IACH,CAAC;IAED,OAAO,EAAE,KAAK,EAAE,QAAQ,EAAE,YAAY,EAAE,CAAC;AAC3C,CAAC;AAEM,KAAK,UAAU,OAAO,CAAC,IAAS,EAAE,OAA0B;IACjE,MAAM,EACJ,KAAK,EACL,MAAM,EACN,aAAa,GAAG,CAAC,MAAM,EAAE,OAAO,EAAE,aAAa,CAAC,EAChD,SAAS,GAAG,GAAG,EACf,KAAK,GAAG,EAAE,EACX,GAAG,IAAI,CAAC;IAET,IAAI,CAAC,KAAK,IAAI,KAAK,CAAC,IAAI,EAAE,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACxC,OAAO,IAAA,oCAAiB,EAAC,8BAA8B,CAAC,CAAC;IAC3D,CAAC;IAED,IAAI,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;QACnC,OAAO,IAAA,oCAAiB,EAAC,sCAAsC,CAAC,CAAC;IACnE,CAAC;IAED,IAAI,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,IAAA,gCAAsB,EAAC,OAAO,CAAC,CAAC;QACrD,MAAM,UAAU,GAAU,EAAE,CAAC;QAC7B,MAAM,YAAY,GAAU,EAAE,CAAC;QAE/B,yCAAyC;QACzC,mEAAmE;QACnE,MAAM,gBAAgB,GAAG,CAAC,MAAgB,EAAE,UAAkB,EAAU,EAAE;YACxE,MAAM,UAAU,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,KAAK,OAAO,UAAU,EAAE,CAAC,CAAC;YACpE,OAAO,UAAU,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAE,wBAAwB;QAC1D,CAAC,CAAC;QAEF,uDAAuD;QACvD,MAAM,cAAc,GAAG,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAa,EAAE,EAAE;YACxD,IAAI,CAAC;gBACH,+CAA+C;gBAC/C,MAAM,WAAW,GAAG,gBAAgB,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;gBAE3D,MAAM,QAAQ,GAAG,MAAM,MAAM,CAAC,GAAG,CAAC,kBAAkB,KAAK,EAAE,EAAE;oBAC3D,MAAM,EAAE;wBACN,aAAa,EAAE,WAAW;wBAC1B,aAAa,EAAE,KAAK,GAAG,CAAC,EAAE,kCAAkC;wBAC5D,cAAc,EAAE,UAAU,aAAa,CAAC,IAAI,CAAC,GAAG,CAAC,gCAAgC;qBAClF;oBACD,OAAO,EAAE,KAAK,CAAC,8BAA8B;iBAC9C,CAAC,CAAC;gBAEH,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,MAAM,IAAI,QAAQ,CAAC,IAAI,CAAC,MAAM,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;oBAC/D,OAAO,EAAE,KAAK,EAAE,OAAO,EAAE,EAAE,EAAE,KAAK,EAAE,CAAC,EAAE,CAAC;gBAC1C,CAAC;gBAED,2BAA2B;gBAC3B,MAAM,aAAa,GAAG,QAAQ,CAAC,IAAI,CAAC,MAAM;qBACvC,GAAG,CAAC,CAAC,MAAW,EAAE,EAAE;oBACnB,MAAM,EAAE,KAAK,EAAE,YAAY,EAAE,GAAG,uBAAuB,CAAC,KAAK,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;oBACtF,OAAO;wBACL,GAAG,MAAM;wBACT,gBAAgB,EAAE,KAAK;wBACvB,cAAc,EAAE,YAAY;wBAC5B,MAAM,EAAE,KAAK;qBACd,CAAC;gBACJ,CAAC,CAAC;qBACD,MAAM,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,gBAAgB,IAAI,SAAS,CAAC;qBACnD,IAAI,CAAC,CAAC,CAAM,EAAE,CAAM,EAAE,EAAE,CAAC,CAAC,CAAC,gBAAgB,GAAG,CAAC,CAAC,gBAAgB,CAAC;qBACjE,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC;gBAEnB,OAAO;oBACL,KAAK;oBACL,OAAO,EAAE,aAAa;oBACtB,KAAK,EAAE,aAAa,CAAC,MAAM;iBAC5B,CAAC;YACJ,CAAC;YAAC,OAAO,UAAe,EAAE,CAAC;gBACzB,4EAA4E;gBAC5E,OAAO;oBACL,KAAK;oBACL,OAAO,EAAE,EAAE;oBACX,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE,UAAU,CAAC,OAAO;iBAC1B,CAAC;YACJ,CAAC;QACH,CAAC,CAAC,CAAC;QAEH,MAAM,aAAa,GAAG,MAAM,OAAO,CAAC,GAAG,CAAC,cAAc,CAAC,CAAC;QAExD,oBAAoB;QACpB,KAAK,MAAM,MAAM,IAAI,aAAa,EAAE,CAAC;YACnC,IAAI,MAAM,CAAC,KAAK,GAAG,CAAC,EAAE,CAAC;gBACrB,YAAY,CAAC,IAAI,CAAC;oBAChB,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,OAAO,EAAE,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;wBACvC,MAAM,EAAE,CAAC,CAAC,MAAM;wBAChB,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM;wBACnC,KAAK,EAAE,CAAC,CAAC,KAAK;wBACd,WAAW,EAAE,CAAC,CAAC,WAAW;wBAC1B,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,gBAAgB,GAAG,GAAG,CAAC,GAAG,GAAG;wBAC3D,aAAa,EAAE,CAAC,CAAC,cAAc;wBAC/B,OAAO,EAAE,CAAC,CAAC,cAAc;wBACzB,OAAO,EAAE,CAAC,CAAC,cAAc;qBAC1B,CAAC,CAAC;iBACJ,CAAC,CAAC;gBACH,UAAU,CAAC,IAAI,CAAC,GAAG,MAAM,CAAC,OAAO,CAAC,CAAC;YACrC,CAAC;iBAAM,IAAI,MAAM,CAAC,KAAK,EAAE,CAAC;gBACxB,YAAY,CAAC,IAAI,CAAC;oBAChB,KAAK,EAAE,MAAM,CAAC,KAAK;oBACnB,KAAK,EAAE,CAAC;oBACR,KAAK,EAAE,MAAM,CAAC,KAAK;iBACpB,CAAC,CAAC;YACL,CAAC;QACH,CAAC;QAED,sCAAsC;QACtC,UAAU,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,gBAAgB,GAAG,CAAC,CAAC,gBAAgB,CAAC,CAAC;QAEnE,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC;QACvC,MAAM,cAAc,GAAG,MAAM,CAAC,MAAM,CAAC;QACrC,MAAM,iBAAiB,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,KAAK,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC;QAEvE,OAAO,IAAA,sCAAmB,EAAC;YACzB,KAAK;YACL,SAAS;YACT,OAAO,EAAE;gBACP,aAAa,EAAE,YAAY;gBAC3B,eAAe,EAAE,cAAc;gBAC/B,mBAAmB,EAAE,iBAAiB;aACvC;YACD,gBAAgB,EAAE,YAAY;YAC9B,WAAW,EAAE,UAAU,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,GAAG,CAAC,CAAC,CAAM,EAAE,EAAE,CAAC,CAAC;gBACpD,KAAK,EAAE,CAAC,CAAC,MAAM;gBACf,MAAM,EAAE,CAAC,CAAC,MAAM;gBAChB,IAAI,EAAE,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,KAAK,IAAI,CAAC,CAAC,MAAM;gBACnC,eAAe,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,gBAAgB,GAAG,GAAG,CAAC,GAAG,GAAG;gBAC3D,aAAa,EAAE,CAAC,CAAC,cAAc;aAChC,CAAC,CAAC;YACH,OAAO,EAAE,YAAY,GAAG,CAAC;gBACvB,CAAC,CAAC,SAAS,YAAY,iBAAiB,KAAK,YAAY,iBAAiB,WAAW;gBACrF,CAAC,CAAC,yBAAyB,KAAK,qBAAqB,SAAS,EAAE;SACnE,CAAC,CAAC;IACL,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,OAAO,IAAA,oCAAiB,EAAC,wBAAwB,KAAK,CAAC,OAAO,EAAE,CAAC,CAAC;IACpE,CAAC;AACH,CAAC;AAEY,QAAA,OAAO,GAAG,OAAO,CAAC;AAClB,QAAA,MAAM,GAAG,yBAAyB,CAAC"}
@@ -1,12 +1,16 @@
1
1
  /**
2
- * snow_comprehensive_search - Search across multiple tables
2
+ * snow_search_artifacts - Search across development artifacts
3
3
  *
4
- * Comprehensive search across ServiceNow artifacts with
5
- * intelligent type detection and relevance scoring.
4
+ * Search ServiceNow development artifacts (widgets, pages, scripts, flows, etc.)
5
+ * with parallel queries and optional table search.
6
+ *
7
+ * NOTE: This tool searches DEVELOPMENT ARTIFACTS, not data tables.
8
+ * For searching data in tables, use snow_query_table or snow_fuzzy_search.
6
9
  */
7
10
  import { MCPToolDefinition, ServiceNowContext, ToolResult } from '../../shared/types.js';
8
11
  export declare const toolDefinition: MCPToolDefinition;
9
12
  export declare function execute(args: any, context: ServiceNowContext): Promise<ToolResult>;
13
+ export declare const toolDefinitionAlias: MCPToolDefinition;
10
14
  export declare const version = "1.0.0";
11
15
  export declare const author = "Snow-Flow SDK Migration";
12
16
  //# sourceMappingURL=snow_comprehensive_search.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"snow_comprehensive_search.d.ts","sourceRoot":"","sources":["../../../../../src/mcp/servicenow-mcp-unified/tools/operations/snow_comprehensive_search.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAIzF,eAAO,MAAM,cAAc,EAAE,iBA6C5B,CAAC;AAUF,wBAAsB,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,CAmExF;AAED,eAAO,MAAM,OAAO,UAAU,CAAC;AAC/B,eAAO,MAAM,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"snow_comprehensive_search.d.ts","sourceRoot":"","sources":["../../../../../src/mcp/servicenow-mcp-unified/tools/operations/snow_comprehensive_search.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAIzF,eAAO,MAAM,cAAc,EAAE,iBAsD5B,CAAC;AA+MF,wBAAsB,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,CA6ExF;AAGD,eAAO,MAAM,mBAAmB,EAAE,iBAIjC,CAAC;AAEF,eAAO,MAAM,OAAO,UAAU,CAAC;AAC/B,eAAO,MAAM,MAAM,4BAA4B,CAAC"}
@@ -1,22 +1,25 @@
1
1
  "use strict";
2
2
  /**
3
- * snow_comprehensive_search - Search across multiple tables
3
+ * snow_search_artifacts - Search across development artifacts
4
4
  *
5
- * Comprehensive search across ServiceNow artifacts with
6
- * intelligent type detection and relevance scoring.
5
+ * Search ServiceNow development artifacts (widgets, pages, scripts, flows, etc.)
6
+ * with parallel queries and optional table search.
7
+ *
8
+ * NOTE: This tool searches DEVELOPMENT ARTIFACTS, not data tables.
9
+ * For searching data in tables, use snow_query_table or snow_fuzzy_search.
7
10
  */
8
11
  Object.defineProperty(exports, "__esModule", { value: true });
9
- exports.author = exports.version = exports.toolDefinition = void 0;
12
+ exports.author = exports.version = exports.toolDefinitionAlias = exports.toolDefinition = void 0;
10
13
  exports.execute = execute;
11
14
  const auth_js_1 = require("../../shared/auth.js");
12
15
  const error_handler_js_1 = require("../../shared/error-handler.js");
13
16
  exports.toolDefinition = {
14
- name: 'snow_comprehensive_search',
15
- description: 'Search across multiple tables for artifacts (widgets, pages, flows, scripts)',
17
+ name: 'snow_search_artifacts',
18
+ description: 'Search ServiceNow development artifacts (widgets, pages, scripts, flows, UI actions, client scripts). For data/table searches, use snow_query_table or snow_fuzzy_search instead.',
16
19
  // Metadata for tool discovery (not sent to LLM)
17
20
  category: 'core-operations',
18
21
  subcategory: 'search',
19
- use_cases: ['search', 'discovery'],
22
+ use_cases: ['artifact-search', 'development-search', 'find-widget', 'find-script'],
20
23
  complexity: 'intermediate',
21
24
  frequency: 'high',
22
25
  // Permission enforcement
@@ -28,100 +31,286 @@ exports.toolDefinition = {
28
31
  properties: {
29
32
  query: {
30
33
  type: 'string',
31
- description: 'Search query (searches name, title, description fields)'
34
+ description: 'Search query - matches against name, title, and description fields'
32
35
  },
33
36
  types: {
34
37
  type: 'array',
35
38
  items: {
36
39
  type: 'string',
37
- enum: ['widget', 'page', 'flow', 'script_include', 'business_rule', 'all']
40
+ enum: [
41
+ 'widget', 'page', 'flow', 'script_include', 'business_rule',
42
+ 'client_script', 'ui_action', 'ui_policy', 'ui_page',
43
+ 'scheduled_job', 'all'
44
+ ]
38
45
  },
39
- description: 'Artifact types to search',
46
+ description: 'Artifact types to search (default: all)',
40
47
  default: ['all']
41
48
  },
42
49
  limit: {
43
50
  type: 'number',
44
- description: 'Maximum results per type',
51
+ description: 'Maximum results per artifact type (default: 10)',
45
52
  default: 10,
46
53
  minimum: 1,
47
- maximum: 100
54
+ maximum: 50
48
55
  },
49
56
  include_inactive: {
50
57
  type: 'boolean',
51
- description: 'Include inactive/deleted artifacts',
58
+ description: 'Include inactive/disabled artifacts',
59
+ default: false
60
+ },
61
+ search_tables: {
62
+ type: 'boolean',
63
+ description: 'Also search sys_db_object for matching table definitions (slower)',
52
64
  default: false
53
65
  }
54
66
  },
55
67
  required: ['query']
56
68
  }
57
69
  };
58
- const SEARCH_TABLES = {
59
- widget: { table: 'sp_widget', name_field: 'id', title_field: 'name' },
60
- page: { table: 'sys_ux_page', name_field: 'name', title_field: 'title' },
61
- flow: { table: 'sys_hub_flow', name_field: 'name' },
62
- script_include: { table: 'sys_script_include', name_field: 'name' },
63
- business_rule: { table: 'sys_script', name_field: 'name' }
70
+ const ARTIFACT_TABLES = {
71
+ widget: {
72
+ table: 'sp_widget',
73
+ name_field: 'id',
74
+ title_field: 'name',
75
+ active_field: 'active',
76
+ description: 'Service Portal widgets',
77
+ extra_fields: ['template', 'css']
78
+ },
79
+ page: {
80
+ table: 'sp_page',
81
+ name_field: 'id',
82
+ title_field: 'title',
83
+ active_field: 'active',
84
+ description: 'Service Portal pages'
85
+ },
86
+ flow: {
87
+ table: 'sys_hub_flow',
88
+ name_field: 'name',
89
+ active_field: 'active',
90
+ description: 'Flow Designer flows'
91
+ },
92
+ script_include: {
93
+ table: 'sys_script_include',
94
+ name_field: 'name',
95
+ active_field: 'active',
96
+ description: 'Script Includes (reusable server scripts)'
97
+ },
98
+ business_rule: {
99
+ table: 'sys_script',
100
+ name_field: 'name',
101
+ active_field: 'active',
102
+ description: 'Business Rules',
103
+ extra_fields: ['collection', 'when']
104
+ },
105
+ client_script: {
106
+ table: 'sys_script_client',
107
+ name_field: 'name',
108
+ active_field: 'active',
109
+ description: 'Client Scripts',
110
+ extra_fields: ['table', 'type']
111
+ },
112
+ ui_action: {
113
+ table: 'sys_ui_action',
114
+ name_field: 'name',
115
+ active_field: 'active',
116
+ description: 'UI Actions (buttons, links, context menus)',
117
+ extra_fields: ['table', 'action_name']
118
+ },
119
+ ui_policy: {
120
+ table: 'sys_ui_policy',
121
+ name_field: 'short_description',
122
+ active_field: 'active',
123
+ description: 'UI Policies',
124
+ extra_fields: ['table', 'conditions']
125
+ },
126
+ ui_page: {
127
+ table: 'sys_ui_page',
128
+ name_field: 'name',
129
+ active_field: 'active',
130
+ description: 'UI Pages (classic UI)',
131
+ extra_fields: ['category']
132
+ },
133
+ scheduled_job: {
134
+ table: 'sysauto_script',
135
+ name_field: 'name',
136
+ active_field: 'active',
137
+ description: 'Scheduled Jobs'
138
+ }
64
139
  };
140
+ /**
141
+ * Search a single artifact type with timeout handling
142
+ */
143
+ async function searchArtifactType(client, type, config, query, limit, includeInactive) {
144
+ try {
145
+ // Build search query for name, title, and description
146
+ const searchFields = [config.name_field];
147
+ if (config.title_field)
148
+ searchFields.push(config.title_field);
149
+ searchFields.push('description');
150
+ const searchConditions = searchFields
151
+ .map(field => `${field}LIKE${query}`)
152
+ .join('^NQ'); // NQ = OR in ServiceNow
153
+ // Add active filter if not including inactive
154
+ const activeCondition = (!includeInactive && config.active_field)
155
+ ? `^${config.active_field}=true`
156
+ : '';
157
+ const fullQuery = searchConditions + activeCondition;
158
+ // Build fields list
159
+ const fields = ['sys_id', ...searchFields, 'sys_created_on', 'sys_updated_on'];
160
+ if (config.active_field)
161
+ fields.push(config.active_field);
162
+ if (config.extra_fields)
163
+ fields.push(...config.extra_fields);
164
+ const response = await client.get(`/api/now/table/${config.table}`, {
165
+ params: {
166
+ sysparm_query: fullQuery,
167
+ sysparm_limit: limit,
168
+ sysparm_fields: [...new Set(fields)].join(',')
169
+ },
170
+ timeout: 10000
171
+ });
172
+ if (!response.data.result || response.data.result.length === 0) {
173
+ return { type, table: config.table, description: config.description, count: 0, artifacts: [] };
174
+ }
175
+ return {
176
+ type,
177
+ table: config.table,
178
+ description: config.description,
179
+ count: response.data.result.length,
180
+ artifacts: response.data.result.map((r) => ({
181
+ sys_id: r.sys_id,
182
+ name: r[config.name_field],
183
+ title: config.title_field ? r[config.title_field] : undefined,
184
+ description: r.description,
185
+ active: config.active_field ? r[config.active_field] === 'true' : undefined,
186
+ created: r.sys_created_on,
187
+ updated: r.sys_updated_on,
188
+ // Include extra fields if present
189
+ ...(config.extra_fields?.reduce((acc, field) => {
190
+ if (r[field])
191
+ acc[field] = r[field];
192
+ return acc;
193
+ }, {}) || {})
194
+ }))
195
+ };
196
+ }
197
+ catch (error) {
198
+ return {
199
+ type,
200
+ table: config.table,
201
+ description: config.description,
202
+ count: 0,
203
+ artifacts: [],
204
+ error: error.message
205
+ };
206
+ }
207
+ }
208
+ /**
209
+ * Search for table definitions matching the query
210
+ */
211
+ async function searchTables(client, query, limit) {
212
+ try {
213
+ const response = await client.get('/api/now/table/sys_db_object', {
214
+ params: {
215
+ sysparm_query: `nameLIKE${query}^ORlabelLIKE${query}`,
216
+ sysparm_limit: limit,
217
+ sysparm_fields: 'sys_id,name,label,super_class,is_extendable'
218
+ },
219
+ timeout: 15000
220
+ });
221
+ if (!response.data.result || response.data.result.length === 0) {
222
+ return { type: 'table', table: 'sys_db_object', description: 'Table definitions', count: 0, artifacts: [] };
223
+ }
224
+ return {
225
+ type: 'table',
226
+ table: 'sys_db_object',
227
+ description: 'Table definitions',
228
+ count: response.data.result.length,
229
+ artifacts: response.data.result.map((r) => ({
230
+ sys_id: r.sys_id,
231
+ name: r.name,
232
+ label: r.label,
233
+ super_class: r.super_class?.display_value || r.super_class,
234
+ is_extendable: r.is_extendable === 'true'
235
+ }))
236
+ };
237
+ }
238
+ catch (error) {
239
+ return {
240
+ type: 'table',
241
+ table: 'sys_db_object',
242
+ description: 'Table definitions',
243
+ count: 0,
244
+ artifacts: [],
245
+ error: error.message
246
+ };
247
+ }
248
+ }
65
249
  async function execute(args, context) {
66
- const { query, types = ['all'], limit = 10, include_inactive = false } = args;
250
+ const { query, types = ['all'], limit = 10, include_inactive = false, search_tables = false } = args;
251
+ if (!query || query.trim().length === 0) {
252
+ return (0, error_handler_js_1.createErrorResult)('Search query cannot be empty');
253
+ }
67
254
  try {
68
255
  const client = await (0, auth_js_1.getAuthenticatedClient)(context);
69
- // Determine which tables to search
256
+ // Determine which artifact types to search
70
257
  const searchTypes = types.includes('all')
71
- ? Object.keys(SEARCH_TABLES)
72
- : types;
73
- const results = {
258
+ ? Object.keys(ARTIFACT_TABLES)
259
+ : types.filter((t) => t !== 'all' && ARTIFACT_TABLES[t]);
260
+ // Execute all searches in parallel
261
+ const searchPromises = searchTypes.map((type) => searchArtifactType(client, type, ARTIFACT_TABLES[type], query, limit, include_inactive));
262
+ // Optionally search table definitions
263
+ if (search_tables) {
264
+ searchPromises.push(searchTables(client, query, limit));
265
+ }
266
+ const results = await Promise.all(searchPromises);
267
+ // Aggregate results
268
+ const found = results.filter(r => r.count > 0);
269
+ const errors = results.filter(r => r.error);
270
+ const totalFound = found.reduce((sum, r) => sum + r.count, 0);
271
+ const response = {
74
272
  query,
75
- found: [],
76
- total: 0
273
+ summary: {
274
+ total_found: totalFound,
275
+ artifact_types_searched: searchTypes.length + (search_tables ? 1 : 0),
276
+ artifact_types_with_results: found.length,
277
+ include_inactive
278
+ },
279
+ found: found.map(r => ({
280
+ type: r.type,
281
+ table: r.table,
282
+ description: r.description,
283
+ count: r.count,
284
+ artifacts: r.artifacts
285
+ })),
286
+ message: totalFound > 0
287
+ ? `Found ${totalFound} artifacts matching "${query}" across ${found.length} type(s)`
288
+ : `No artifacts found matching "${query}"`
77
289
  };
78
- // Search each table
79
- for (const type of searchTypes) {
80
- const config = SEARCH_TABLES[type];
81
- if (!config)
82
- continue;
83
- // Build search query
84
- const searchFields = [config.name_field];
85
- if (config.title_field)
86
- searchFields.push(config.title_field);
87
- searchFields.push('description');
88
- const searchQuery = searchFields
89
- .map(field => `${field}LIKE${query}`)
90
- .join('^OR');
91
- const activeQuery = include_inactive ? '' : '^active=true';
92
- const fullQuery = searchQuery + activeQuery;
93
- // Execute search
94
- const response = await client.get(`/api/now/table/${config.table}`, {
95
- params: {
96
- sysparm_query: fullQuery,
97
- sysparm_limit: limit,
98
- sysparm_fields: `sys_id,${searchFields.join(',')},sys_created_on,sys_updated_on`
99
- }
100
- });
101
- // Add results
102
- if (response.data.result.length > 0) {
103
- results.found.push({
104
- type,
105
- table: config.table,
106
- count: response.data.result.length,
107
- artifacts: response.data.result.map((r) => ({
108
- sys_id: r.sys_id,
109
- name: r[config.name_field],
110
- title: config.title_field ? r[config.title_field] : undefined,
111
- description: r.description,
112
- created: r.sys_created_on,
113
- updated: r.sys_updated_on
114
- }))
115
- });
116
- results.total += response.data.result.length;
117
- }
290
+ // Add errors if any
291
+ if (errors.length > 0) {
292
+ response.errors = errors.map(e => ({
293
+ type: e.type,
294
+ table: e.table,
295
+ error: e.error
296
+ }));
297
+ }
298
+ // Add guidance for table searches
299
+ if (!search_tables && totalFound === 0) {
300
+ response.suggestion = 'No artifacts found. Try search_tables=true to also search table definitions, or use snow_query_table for data searches.';
118
301
  }
119
- return (0, error_handler_js_1.createSuccessResult)(results);
302
+ return (0, error_handler_js_1.createSuccessResult)(response);
120
303
  }
121
304
  catch (error) {
122
- return (0, error_handler_js_1.createErrorResult)(error.message);
305
+ return (0, error_handler_js_1.createErrorResult)(`Artifact search failed: ${error.message}`);
123
306
  }
124
307
  }
308
+ // Keep old name as alias for backwards compatibility
309
+ exports.toolDefinitionAlias = {
310
+ ...exports.toolDefinition,
311
+ name: 'snow_comprehensive_search',
312
+ description: '[DEPRECATED - use snow_search_artifacts] ' + exports.toolDefinition.description
313
+ };
125
314
  exports.version = '1.0.0';
126
315
  exports.author = 'Snow-Flow SDK Migration';
127
316
  //# sourceMappingURL=snow_comprehensive_search.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"snow_comprehensive_search.js","sourceRoot":"","sources":["../../../../../src/mcp/servicenow-mcp-unified/tools/operations/snow_comprehensive_search.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"snow_comprehensive_search.js","sourceRoot":"","sources":["../../../../../src/mcp/servicenow-mcp-unified/tools/operations/snow_comprehensive_search.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,12 @@
3
3
  *
4
4
  * Discover platform development tables categorized by type
5
5
  * (UI, script, policy, security, system).
6
+ *
7
+ * Optimized with:
8
+ * - Parallel API calls for better performance
9
+ * - Per-category timeout handling
10
+ * - Pre-cached common table definitions
11
+ * - Graceful degradation on slow queries
6
12
  */
7
13
  import { MCPToolDefinition, ServiceNowContext, ToolResult } from '../../shared/types.js';
8
14
  export declare const toolDefinition: MCPToolDefinition;
@@ -1 +1 @@
1
- {"version":3,"file":"snow_discover_platform_tables.d.ts","sourceRoot":"","sources":["../../../../../src/mcp/servicenow-mcp-unified/tools/platform/snow_discover_platform_tables.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAIzF,eAAO,MAAM,cAAc,EAAE,iBA8B5B,CAAC;AAyCF,wBAAsB,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,CAwDxF;AAED,eAAO,MAAM,OAAO,UAAU,CAAC;AAC/B,eAAO,MAAM,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"snow_discover_platform_tables.d.ts","sourceRoot":"","sources":["../../../../../src/mcp/servicenow-mcp-unified/tools/platform/snow_discover_platform_tables.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAIzF,eAAO,MAAM,cAAc,EAAE,iBAwC5B,CAAC;AA0KF,wBAAsB,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,CA2FxF;AAED,eAAO,MAAM,OAAO,UAAU,CAAC;AAC/B,eAAO,MAAM,MAAM,4BAA4B,CAAC"}
@@ -4,6 +4,12 @@
4
4
  *
5
5
  * Discover platform development tables categorized by type
6
6
  * (UI, script, policy, security, system).
7
+ *
8
+ * Optimized with:
9
+ * - Parallel API calls for better performance
10
+ * - Per-category timeout handling
11
+ * - Pre-cached common table definitions
12
+ * - Graceful degradation on slow queries
7
13
  */
8
14
  Object.defineProperty(exports, "__esModule", { value: true });
9
15
  exports.author = exports.version = exports.toolDefinition = void 0;
@@ -12,7 +18,7 @@ const auth_js_1 = require("../../shared/auth.js");
12
18
  const error_handler_js_1 = require("../../shared/error-handler.js");
13
19
  exports.toolDefinition = {
14
20
  name: 'snow_discover_platform_tables',
15
- description: 'Discover platform development tables by category (ui, script, policy, action)',
21
+ description: 'Discover platform development tables by category (ui, script, policy, action, security, system). Optimized for fast parallel queries with timeout handling.',
16
22
  // Metadata for tool discovery (not sent to LLM)
17
23
  category: 'core-operations',
18
24
  subcategory: 'discovery',
@@ -28,14 +34,24 @@ exports.toolDefinition = {
28
34
  properties: {
29
35
  category: {
30
36
  type: 'string',
31
- enum: ['all', 'ui', 'script', 'policy', 'action', 'security', 'system'],
37
+ enum: ['all', 'ui', 'script', 'policy', 'action', 'security', 'system', 'itsm', 'cmdb'],
32
38
  description: 'Filter by table category',
33
39
  default: 'all'
34
40
  },
35
41
  limit: {
36
42
  type: 'number',
37
- description: 'Maximum results per category',
38
- default: 50
43
+ description: 'Maximum results per category (default: 25)',
44
+ default: 25
45
+ },
46
+ use_cache: {
47
+ type: 'boolean',
48
+ description: 'Use pre-defined common tables instead of querying (faster, but less complete)',
49
+ default: false
50
+ },
51
+ timeout: {
52
+ type: 'number',
53
+ description: 'Timeout per category in milliseconds (default: 10000)',
54
+ default: 10000
39
55
  }
40
56
  }
41
57
  }
@@ -44,80 +60,221 @@ const TABLE_CATEGORIES = [
44
60
  {
45
61
  category: 'ui',
46
62
  query: 'nameSTARTSWITHsys_ui^ORnameSTARTSWITHsp_',
47
- description: 'UI pages, forms, lists, and portal widgets'
63
+ description: 'UI pages, forms, lists, and portal widgets',
64
+ commonTables: [
65
+ 'sys_ui_page', 'sys_ui_script', 'sys_ui_macro', 'sys_ui_list',
66
+ 'sys_ui_form', 'sys_ui_section', 'sys_ui_element', 'sys_ui_view',
67
+ 'sp_widget', 'sp_page', 'sp_portal', 'sp_instance', 'sp_css',
68
+ 'sp_header_footer', 'sp_angular_provider'
69
+ ]
48
70
  },
49
71
  {
50
72
  category: 'script',
51
- query: 'nameSTARTSWITHsys_script^ORname=sys_script_include',
52
- description: 'Scripts, script includes, and processors'
73
+ query: 'nameSTARTSWITHsys_script^ORnameINsys_script_include,sys_processor',
74
+ description: 'Scripts, script includes, and processors',
75
+ commonTables: [
76
+ 'sys_script', 'sys_script_include', 'sys_script_client',
77
+ 'sys_script_ajax', 'sys_processor', 'sys_script_fix'
78
+ ]
53
79
  },
54
80
  {
55
81
  category: 'policy',
56
- query: 'name=sys_ui_policy^ORname=sys_data_policy',
57
- description: 'UI policies and data policies'
82
+ query: 'nameINsys_ui_policy,sys_data_policy,sys_ui_policy_action,sys_data_policy_rule',
83
+ description: 'UI policies and data policies',
84
+ commonTables: [
85
+ 'sys_ui_policy', 'sys_ui_policy_action', 'sys_data_policy', 'sys_data_policy_rule'
86
+ ]
58
87
  },
59
88
  {
60
89
  category: 'action',
61
- query: 'name=sys_ui_action^ORname=sys_ui_context_menu',
62
- description: 'UI actions and context menus'
90
+ query: 'nameINsys_ui_action,sys_ui_context_menu,sys_ui_related_list_entry',
91
+ description: 'UI actions and context menus',
92
+ commonTables: [
93
+ 'sys_ui_action', 'sys_ui_context_menu', 'sys_ui_related_list_entry'
94
+ ]
63
95
  },
64
96
  {
65
97
  category: 'security',
66
- query: 'nameSTARTSWITHsys_security^ORname=sys_user_role',
67
- description: 'Security policies and roles'
98
+ query: 'nameSTARTSWITHsys_security^ORnameINsys_user_role,sys_user_group,sys_acl',
99
+ description: 'Security policies, roles, and ACLs',
100
+ commonTables: [
101
+ 'sys_security_acl', 'sys_security_acl_role', 'sys_user_role',
102
+ 'sys_user_group', 'sys_user_role_contains', 'sys_acl'
103
+ ]
68
104
  },
69
105
  {
70
106
  category: 'system',
71
- query: 'name=sys_dictionary^ORname=sys_db_object^ORname=sys_choice',
72
- description: 'System tables for schema and data'
107
+ query: 'nameINsys_dictionary,sys_db_object,sys_choice,sys_documentation,sys_glide_object',
108
+ description: 'System tables for schema and data',
109
+ commonTables: [
110
+ 'sys_dictionary', 'sys_db_object', 'sys_choice', 'sys_documentation',
111
+ 'sys_glide_object', 'sys_number', 'sys_properties'
112
+ ]
113
+ },
114
+ {
115
+ category: 'itsm',
116
+ query: 'nameINincident,problem,change_request,task,sc_request,sc_req_item,sc_task',
117
+ description: 'ITSM tables (incidents, problems, changes, requests)',
118
+ commonTables: [
119
+ 'incident', 'problem', 'change_request', 'task', 'sc_request',
120
+ 'sc_req_item', 'sc_task', 'sn_hr_core_case', 'kb_knowledge'
121
+ ]
122
+ },
123
+ {
124
+ category: 'cmdb',
125
+ query: 'nameSTARTSWITHcmdb^ORnameSTARTSWITHcmdb_ci',
126
+ description: 'CMDB configuration items and relationships',
127
+ commonTables: [
128
+ 'cmdb', 'cmdb_ci', 'cmdb_ci_server', 'cmdb_ci_computer',
129
+ 'cmdb_ci_service', 'cmdb_ci_appl', 'cmdb_rel_ci', 'cmdb_ci_db_instance'
130
+ ]
73
131
  }
74
132
  ];
133
+ /**
134
+ * Query a single category with timeout handling
135
+ */
136
+ async function queryCategory(client, cat, limit, timeout) {
137
+ try {
138
+ const controller = new AbortController();
139
+ const timeoutId = setTimeout(() => controller.abort(), timeout);
140
+ const response = await client.get('/api/now/table/sys_db_object', {
141
+ params: {
142
+ sysparm_query: cat.query,
143
+ sysparm_limit: limit,
144
+ sysparm_fields: 'sys_id,name,label,super_class,is_extendable'
145
+ },
146
+ signal: controller.signal,
147
+ timeout: timeout
148
+ });
149
+ clearTimeout(timeoutId);
150
+ if (response.data.result && response.data.result.length > 0) {
151
+ return {
152
+ category: cat.category,
153
+ description: cat.description,
154
+ count: response.data.result.length,
155
+ tables: response.data.result.map((table) => ({
156
+ name: table.name,
157
+ label: table.label,
158
+ super_class: table.super_class?.value || table.super_class,
159
+ is_extendable: table.is_extendable === 'true',
160
+ sys_id: table.sys_id
161
+ }))
162
+ };
163
+ }
164
+ return {
165
+ category: cat.category,
166
+ description: cat.description,
167
+ count: 0,
168
+ tables: []
169
+ };
170
+ }
171
+ catch (error) {
172
+ // Check if it was a timeout/abort
173
+ if (error.name === 'AbortError' || error.code === 'ECONNABORTED' || error.message?.includes('timeout')) {
174
+ return {
175
+ category: cat.category,
176
+ description: cat.description,
177
+ count: 0,
178
+ tables: [],
179
+ timedOut: true,
180
+ error: `Query timed out after ${timeout}ms`
181
+ };
182
+ }
183
+ return {
184
+ category: cat.category,
185
+ description: cat.description,
186
+ count: 0,
187
+ tables: [],
188
+ error: error.message
189
+ };
190
+ }
191
+ }
192
+ /**
193
+ * Get cached table definitions (fast mode)
194
+ */
195
+ function getCachedTables(categories) {
196
+ return categories.map(cat => ({
197
+ category: cat.category,
198
+ description: cat.description,
199
+ count: cat.commonTables?.length || 0,
200
+ tables: (cat.commonTables || []).map(name => ({
201
+ name,
202
+ label: name.replace(/_/g, ' ').replace(/\b\w/g, l => l.toUpperCase()),
203
+ cached: true
204
+ })),
205
+ cached: true
206
+ }));
207
+ }
75
208
  async function execute(args, context) {
76
- const { category = 'all', limit = 50 } = args;
209
+ const { category = 'all', limit = 25, use_cache = false, timeout = 10000 } = args;
77
210
  try {
78
- const client = await (0, auth_js_1.getAuthenticatedClient)(context);
79
- const discoveredTables = [];
80
211
  const categoriesToQuery = category === 'all'
81
212
  ? TABLE_CATEGORIES
82
213
  : TABLE_CATEGORIES.filter(cat => cat.category === category);
83
- for (const cat of categoriesToQuery) {
84
- const response = await client.get('/api/now/table/sys_db_object', {
85
- params: {
86
- sysparm_query: cat.query,
87
- sysparm_limit: limit,
88
- sysparm_fields: 'sys_id,name,label,super_class,is_extendable,extension_model'
89
- }
214
+ if (categoriesToQuery.length === 0) {
215
+ return (0, error_handler_js_1.createErrorResult)(`Unknown category: ${category}. Valid categories: all, ui, script, policy, action, security, system, itsm, cmdb`);
216
+ }
217
+ // Fast mode: return cached tables
218
+ if (use_cache) {
219
+ const cachedResults = getCachedTables(categoriesToQuery);
220
+ const totalTables = cachedResults.reduce((sum, cat) => sum + cat.count, 0);
221
+ return (0, error_handler_js_1.createSuccessResult)({
222
+ discovered: true,
223
+ platform_tables: cachedResults,
224
+ summary: {
225
+ total_tables: totalTables,
226
+ categories_found: cachedResults.length,
227
+ filter_applied: category,
228
+ mode: 'cached'
229
+ },
230
+ message: `Returned ${totalTables} common platform tables from cache (use use_cache=false for live query)`
90
231
  });
91
- if (response.data.result && response.data.result.length > 0) {
92
- discoveredTables.push({
93
- category: cat.category,
94
- description: cat.description,
95
- count: response.data.result.length,
96
- tables: response.data.result.map((table) => ({
97
- name: table.name,
98
- label: table.label,
99
- super_class: table.super_class,
100
- is_extendable: table.is_extendable === 'true',
101
- extension_model: table.extension_model,
102
- sys_id: table.sys_id
103
- }))
104
- });
105
- }
106
232
  }
233
+ // Live query mode: parallel queries with timeout handling
234
+ const client = await (0, auth_js_1.getAuthenticatedClient)(context);
235
+ // Execute all category queries in parallel
236
+ const queryPromises = categoriesToQuery.map(cat => queryCategory(client, cat, limit, timeout));
237
+ const results = await Promise.all(queryPromises);
238
+ // Separate successful results from errors/timeouts
239
+ const successfulResults = results.filter(r => r.count > 0 || (!r.error && !r.timedOut));
240
+ const timedOutCategories = results.filter(r => r.timedOut);
241
+ const errorCategories = results.filter(r => r.error && !r.timedOut);
242
+ const discoveredTables = results.filter(r => r.count > 0);
107
243
  const totalTables = discoveredTables.reduce((sum, cat) => sum + cat.count, 0);
108
- return (0, error_handler_js_1.createSuccessResult)({
244
+ const response = {
109
245
  discovered: true,
110
246
  platform_tables: discoveredTables,
111
247
  summary: {
112
248
  total_tables: totalTables,
113
249
  categories_found: discoveredTables.length,
114
- filter_applied: category
250
+ categories_queried: categoriesToQuery.length,
251
+ filter_applied: category,
252
+ mode: 'live'
115
253
  },
116
254
  message: `Discovered ${totalTables} platform development tables across ${discoveredTables.length} categories`
117
- });
255
+ };
256
+ // Add warnings for timeouts
257
+ if (timedOutCategories.length > 0) {
258
+ response.warnings = {
259
+ timed_out: timedOutCategories.map(c => ({
260
+ category: c.category,
261
+ message: c.error
262
+ })),
263
+ suggestion: 'Use use_cache=true for instant results or increase timeout parameter'
264
+ };
265
+ response.message += ` (${timedOutCategories.length} categories timed out)`;
266
+ }
267
+ // Add errors
268
+ if (errorCategories.length > 0) {
269
+ response.errors = errorCategories.map(c => ({
270
+ category: c.category,
271
+ error: c.error
272
+ }));
273
+ }
274
+ return (0, error_handler_js_1.createSuccessResult)(response);
118
275
  }
119
276
  catch (error) {
120
- return (0, error_handler_js_1.createErrorResult)(error.message);
277
+ return (0, error_handler_js_1.createErrorResult)(`Platform table discovery failed: ${error.message}`);
121
278
  }
122
279
  }
123
280
  exports.version = '1.0.0';
@@ -1 +1 @@
1
- {"version":3,"file":"snow_discover_platform_tables.js","sourceRoot":"","sources":["../../../../../src/mcp/servicenow-mcp-unified/tools/platform/snow_discover_platform_tables.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"snow_discover_platform_tables.js","sourceRoot":"","sources":["../../../../../src/mcp/servicenow-mcp-unified/tools/platform/snow_discover_platform_tables.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "snow-flow",
3
- "version": "8.39.6",
3
+ "version": "8.39.7",
4
4
  "description": "ServiceNow development with SnowCode - 75+ LLM providers (Claude, GPT, Gemini, Llama, Mistral, DeepSeek, Groq, Ollama) • 395 Optimized Tools • 2 MCP Servers • Multi-agent orchestration • Use ANY AI coding assistant (ML tools moved to Enterprise)",
5
5
  "main": "dist/index.js",
6
6
  "type": "commonjs",