snow-flow 8.41.9 → 8.41.15

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.
@@ -1,9 +1,18 @@
1
1
  /**
2
2
  * snow_create_business_rule
3
+ *
4
+ * Creates server-side business rules in ServiceNow.
5
+ * Supports all major business rule configurations including:
6
+ * - Trigger conditions (insert/update/delete/query)
7
+ * - Filter conditions (encoded query)
8
+ * - Script conditions
9
+ * - Execution order
10
+ * - Role conditions
11
+ * - Abort actions and messages
3
12
  */
4
13
  import { MCPToolDefinition, ServiceNowContext, ToolResult } from '../../shared/types.js';
5
14
  export declare const toolDefinition: MCPToolDefinition;
6
15
  export declare function execute(args: any, context: ServiceNowContext): Promise<ToolResult>;
7
- export declare const version = "1.0.0";
8
- export declare const author = "Snow-Flow SDK Migration";
16
+ export declare const version = "2.0.0";
17
+ export declare const author = "Snow-Flow v8.41.15";
9
18
  //# sourceMappingURL=snow_create_business_rule.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"snow_create_business_rule.d.ts","sourceRoot":"","sources":["../../../../../src/mcp/servicenow-mcp-unified/tools/business-rules/snow_create_business_rule.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAIzF,eAAO,MAAM,cAAc,EAAE,iBA8B5B,CAAC;AAEF,wBAAsB,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,CAqBxF;AAED,eAAO,MAAM,OAAO,UAAU,CAAC;AAC/B,eAAO,MAAM,MAAM,4BAA4B,CAAC"}
1
+ {"version":3,"file":"snow_create_business_rule.d.ts","sourceRoot":"","sources":["../../../../../src/mcp/servicenow-mcp-unified/tools/business-rules/snow_create_business_rule.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAIzF,eAAO,MAAM,cAAc,EAAE,iBAyH5B,CAAC;AAEF,wBAAsB,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,CAqGxF;AAED,eAAO,MAAM,OAAO,UAAU,CAAC;AAC/B,eAAO,MAAM,MAAM,uBAAuB,CAAC"}
@@ -1,6 +1,15 @@
1
1
  "use strict";
2
2
  /**
3
3
  * snow_create_business_rule
4
+ *
5
+ * Creates server-side business rules in ServiceNow.
6
+ * Supports all major business rule configurations including:
7
+ * - Trigger conditions (insert/update/delete/query)
8
+ * - Filter conditions (encoded query)
9
+ * - Script conditions
10
+ * - Execution order
11
+ * - Role conditions
12
+ * - Abort actions and messages
4
13
  */
5
14
  Object.defineProperty(exports, "__esModule", { value: true });
6
15
  exports.author = exports.version = exports.toolDefinition = void 0;
@@ -9,7 +18,7 @@ const auth_js_1 = require("../../shared/auth.js");
9
18
  const error_handler_js_1 = require("../../shared/error-handler.js");
10
19
  exports.toolDefinition = {
11
20
  name: 'snow_create_business_rule',
12
- description: 'Create server-side business rule (ES5 only!)',
21
+ description: 'Create server-side business rule with full configuration options (ES5 only for scripts!)',
13
22
  // Metadata for tool discovery (not sent to LLM)
14
23
  category: 'development',
15
24
  subcategory: 'platform',
@@ -23,44 +32,196 @@ exports.toolDefinition = {
23
32
  inputSchema: {
24
33
  type: 'object',
25
34
  properties: {
26
- name: { type: 'string', description: 'Business rule name' },
27
- table: { type: 'string', description: 'Table name' },
28
- when: { type: 'string', enum: ['before', 'after', 'async', 'display'], default: 'before' },
29
- insert: { type: 'boolean', default: false },
30
- update: { type: 'boolean', default: false },
31
- delete: { type: 'boolean', default: false },
32
- query: { type: 'boolean', default: false },
33
- condition: { type: 'string', description: 'When to run (ES5 only!)' },
34
- script: { type: 'string', description: 'Script to execute (ES5 only!)' },
35
- active: { type: 'boolean', default: true }
35
+ // Basic Info
36
+ name: {
37
+ type: 'string',
38
+ description: 'Business rule name'
39
+ },
40
+ table: {
41
+ type: 'string',
42
+ description: 'Table name (e.g., incident, task, sys_user)'
43
+ },
44
+ description: {
45
+ type: 'string',
46
+ description: 'Description of what this business rule does'
47
+ },
48
+ // When to Run
49
+ when: {
50
+ type: 'string',
51
+ enum: ['before', 'after', 'async', 'display'],
52
+ default: 'before',
53
+ description: 'When to execute: before (before DB), after (after DB), async (scheduled), display (form load)'
54
+ },
55
+ order: {
56
+ type: 'number',
57
+ default: 100,
58
+ description: 'Execution order (lower = runs first). Default: 100'
59
+ },
60
+ // Trigger Operations
61
+ insert: {
62
+ type: 'boolean',
63
+ default: false,
64
+ description: 'Run on insert operations'
65
+ },
66
+ update: {
67
+ type: 'boolean',
68
+ default: false,
69
+ description: 'Run on update operations'
70
+ },
71
+ delete: {
72
+ type: 'boolean',
73
+ default: false,
74
+ description: 'Run on delete operations'
75
+ },
76
+ query: {
77
+ type: 'boolean',
78
+ default: false,
79
+ description: 'Run on query operations'
80
+ },
81
+ // Conditions
82
+ filter_condition: {
83
+ type: 'string',
84
+ description: 'Encoded query filter (e.g., "active=true^priority=1"). Record must match this to trigger the rule.'
85
+ },
86
+ condition: {
87
+ type: 'string',
88
+ description: 'Script condition that must return true (ES5 only!). E.g., "current.priority == 1"'
89
+ },
90
+ role_conditions: {
91
+ type: 'string',
92
+ description: 'Comma-separated role sys_ids. Only users with these roles trigger the rule.'
93
+ },
94
+ // Script
95
+ script: {
96
+ type: 'string',
97
+ description: 'Script to execute (ES5 ONLY! No const/let/arrow functions). Use current/previous objects.'
98
+ },
99
+ // Actions
100
+ abort_action: {
101
+ type: 'boolean',
102
+ default: false,
103
+ description: 'Abort the database action (only works with "before" rules)'
104
+ },
105
+ add_message: {
106
+ type: 'boolean',
107
+ default: false,
108
+ description: 'Add an info message to the user'
109
+ },
110
+ message: {
111
+ type: 'string',
112
+ description: 'Message text to display (requires add_message=true)'
113
+ },
114
+ // Advanced
115
+ active: {
116
+ type: 'boolean',
117
+ default: true,
118
+ description: 'Whether the business rule is active'
119
+ },
120
+ access: {
121
+ type: 'string',
122
+ enum: ['package_private', 'public'],
123
+ default: 'package_private',
124
+ description: 'Access level for the business rule'
125
+ },
126
+ application_scope: {
127
+ type: 'string',
128
+ description: 'Application scope sys_id (leave empty for global)'
129
+ }
36
130
  },
37
- required: ['name', 'table', 'script']
131
+ required: ['name', 'table']
38
132
  }
39
133
  };
40
134
  async function execute(args, context) {
41
- const { name, table, when = 'before', insert = false, update = false, delete: del = false, query = false, condition, script, active = true } = args;
135
+ const {
136
+ // Basic
137
+ name, table, description,
138
+ // When
139
+ when = 'before', order = 100,
140
+ // Operations
141
+ insert = false, update = false, delete: del = false, query = false,
142
+ // Conditions
143
+ filter_condition, condition, role_conditions,
144
+ // Script
145
+ script,
146
+ // Actions
147
+ abort_action = false, add_message = false, message,
148
+ // Advanced
149
+ active = true, access = 'package_private', application_scope } = args;
150
+ // Validate: at least one operation must be selected
151
+ if (!insert && !update && !del && !query) {
152
+ return (0, error_handler_js_1.createErrorResult)('At least one operation must be selected: insert, update, delete, or query');
153
+ }
154
+ // Validate: script is required unless it's just an abort action
155
+ if (!script && !abort_action) {
156
+ return (0, error_handler_js_1.createErrorResult)('Either script or abort_action is required');
157
+ }
42
158
  try {
43
159
  const client = await (0, auth_js_1.getAuthenticatedClient)(context);
160
+ // Build the business rule data object
44
161
  const brData = {
45
162
  name,
46
163
  collection: table,
47
164
  when,
48
- insert,
49
- update,
50
- delete: del,
51
- query,
52
- script,
53
- active
165
+ order,
166
+ action_insert: insert,
167
+ action_update: update,
168
+ action_delete: del,
169
+ action_query: query,
170
+ active,
171
+ access
54
172
  };
173
+ // Optional fields
174
+ if (description)
175
+ brData.description = description;
176
+ if (filter_condition)
177
+ brData.filter_condition = filter_condition;
55
178
  if (condition)
56
179
  brData.condition = condition;
180
+ if (role_conditions)
181
+ brData.role_conditions = role_conditions;
182
+ if (script)
183
+ brData.script = script;
184
+ if (abort_action)
185
+ brData.abort_action = abort_action;
186
+ if (add_message)
187
+ brData.add_message = add_message;
188
+ if (message)
189
+ brData.message = message;
190
+ if (application_scope)
191
+ brData.sys_scope = application_scope;
57
192
  const response = await client.post('/api/now/table/sys_script', brData);
58
- return (0, error_handler_js_1.createSuccessResult)({ created: true, business_rule: response.data.result });
193
+ const result = response.data.result;
194
+ // Build response with helpful info
195
+ const instanceUrl = (client.defaults?.baseURL || '').replace('/api/now', '');
196
+ return (0, error_handler_js_1.createSuccessResult)({
197
+ created: true,
198
+ business_rule: {
199
+ sys_id: result.sys_id,
200
+ name: result.name,
201
+ table: result.collection,
202
+ when: result.when,
203
+ order: result.order,
204
+ operations: {
205
+ insert: result.action_insert === 'true',
206
+ update: result.action_update === 'true',
207
+ delete: result.action_delete === 'true',
208
+ query: result.action_query === 'true'
209
+ },
210
+ active: result.active === 'true',
211
+ url: `${instanceUrl}/sys_script.do?sys_id=${result.sys_id}`
212
+ },
213
+ tips: [
214
+ 'Use "current" to access the current record being processed',
215
+ 'Use "previous" to access the previous values (on update)',
216
+ 'Use "gs" for GlideSystem methods like gs.info(), gs.addInfoMessage()',
217
+ 'Remember: ES5 ONLY - no const, let, arrow functions, or template literals!'
218
+ ]
219
+ });
59
220
  }
60
221
  catch (error) {
61
- return (0, error_handler_js_1.createErrorResult)(error.message);
222
+ return (0, error_handler_js_1.createErrorResult)(`Failed to create business rule: ${error.response?.data?.error?.message || error.message}`);
62
223
  }
63
224
  }
64
- exports.version = '1.0.0';
65
- exports.author = 'Snow-Flow SDK Migration';
225
+ exports.version = '2.0.0';
226
+ exports.author = 'Snow-Flow v8.41.15';
66
227
  //# sourceMappingURL=snow_create_business_rule.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"snow_create_business_rule.js","sourceRoot":"","sources":["../../../../../src/mcp/servicenow-mcp-unified/tools/business-rules/snow_create_business_rule.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"snow_create_business_rule.js","sourceRoot":"","sources":["../../../../../src/mcp/servicenow-mcp-unified/tools/business-rules/snow_create_business_rule.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * snow_flow_discover - Discover available Flow Designer components
3
+ *
4
+ * Discovers available trigger types, action types, and subflows
5
+ * that can be used when creating flows programmatically.
6
+ *
7
+ * @version 1.0.0
8
+ * @author Snow-Flow v8.3.0 - Flow Designer Discovery
9
+ */
10
+ import { MCPToolDefinition, ServiceNowContext, ToolResult } from '../../shared/types.js';
11
+ export declare const toolDefinition: MCPToolDefinition;
12
+ export declare function execute(args: any, context: ServiceNowContext): Promise<ToolResult>;
13
+ export declare const version = "1.0.0";
14
+ export declare const author = "Snow-Flow v8.3.0 - Flow Designer Discovery";
15
+ //# sourceMappingURL=snow_flow_discover.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snow_flow_discover.d.ts","sourceRoot":"","sources":["../../../../../src/mcp/servicenow-mcp-unified/tools/flow-designer/snow_flow_discover.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,OAAO,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,UAAU,EAAE,MAAM,uBAAuB,CAAC;AAkCzF,eAAO,MAAM,cAAc,EAAE,iBAmD5B,CAAC;AAIF,wBAAsB,OAAO,CAAC,IAAI,EAAE,GAAG,EAAE,OAAO,EAAE,iBAAiB,GAAG,OAAO,CAAC,UAAU,CAAC,CAsOxF;AAED,eAAO,MAAM,OAAO,UAAU,CAAC;AAC/B,eAAO,MAAM,MAAM,+CAA+C,CAAC"}
@@ -0,0 +1,273 @@
1
+ "use strict";
2
+ /**
3
+ * snow_flow_discover - Discover available Flow Designer components
4
+ *
5
+ * Discovers available trigger types, action types, and subflows
6
+ * that can be used when creating flows programmatically.
7
+ *
8
+ * @version 1.0.0
9
+ * @author Snow-Flow v8.3.0 - Flow Designer Discovery
10
+ */
11
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.author = exports.version = exports.toolDefinition = void 0;
13
+ exports.execute = execute;
14
+ const auth_js_1 = require("../../shared/auth.js");
15
+ const error_handler_js_1 = require("../../shared/error-handler.js");
16
+ // ==================== TOOL DEFINITION ====================
17
+ exports.toolDefinition = {
18
+ name: 'snow_flow_discover',
19
+ description: `Discover available Flow Designer components.
20
+
21
+ Discovers:
22
+ - Trigger types: Record triggers, scheduled, API, email, etc.
23
+ - Action types: Create record, update record, log, send email, etc.
24
+ - Subflows: Reusable flow components
25
+ - Spokes: Integration action packages (Jira, Slack, etc.)
26
+
27
+ Use this to find the correct sys_id or name for triggers and actions
28
+ when creating flows programmatically with snow_create_flow.`,
29
+ category: 'automation',
30
+ subcategory: 'flow-designer',
31
+ use_cases: ['discovery', 'flow-creation', 'documentation'],
32
+ complexity: 'beginner',
33
+ frequency: 'medium',
34
+ permission: 'read',
35
+ allowedRoles: ['developer', 'stakeholder', 'admin'],
36
+ inputSchema: {
37
+ type: 'object',
38
+ properties: {
39
+ discover: {
40
+ type: 'string',
41
+ enum: ['trigger_types', 'action_types', 'subflows', 'spokes', 'all'],
42
+ description: 'What to discover',
43
+ default: 'all'
44
+ },
45
+ category: {
46
+ type: 'string',
47
+ description: 'Filter by category (for action types)'
48
+ },
49
+ search: {
50
+ type: 'string',
51
+ description: 'Search term to filter results'
52
+ },
53
+ limit: {
54
+ type: 'number',
55
+ description: 'Maximum results per category',
56
+ default: 50
57
+ },
58
+ include_inactive: {
59
+ type: 'boolean',
60
+ description: 'Include inactive items',
61
+ default: false
62
+ }
63
+ }
64
+ }
65
+ };
66
+ // ==================== MAIN EXECUTOR ====================
67
+ async function execute(args, context) {
68
+ const { discover = 'all', category, search, limit = 50, include_inactive = false } = args;
69
+ try {
70
+ const client = await (0, auth_js_1.getAuthenticatedClient)(context);
71
+ const results = {};
72
+ // ==================== TRIGGER TYPES ====================
73
+ // Note: sys_hub_trigger_type doesn't have 'label' or 'active' fields
74
+ if (discover === 'trigger_types' || discover === 'all') {
75
+ console.log('Discovering trigger types...');
76
+ try {
77
+ let query = '';
78
+ if (search) {
79
+ query = `nameLIKE${search}`;
80
+ }
81
+ const response = await client.get('/api/now/table/sys_hub_trigger_type', {
82
+ params: {
83
+ sysparm_query: query,
84
+ sysparm_limit: limit,
85
+ sysparm_fields: 'sys_id,name,description,table_name'
86
+ }
87
+ });
88
+ if (response.data.result) {
89
+ results.trigger_types = response.data.result.map((t) => ({
90
+ sys_id: t.sys_id,
91
+ name: t.name,
92
+ label: t.name, // Use name as label (label field doesn't exist)
93
+ description: t.description,
94
+ table_name: t.table_name
95
+ }));
96
+ console.log(`Found ${results.trigger_types.length} trigger types`);
97
+ }
98
+ }
99
+ catch (error) {
100
+ console.error('Failed to fetch trigger types:', error.message);
101
+ results.trigger_types_error = error.message;
102
+ }
103
+ }
104
+ // ==================== ACTION TYPES ====================
105
+ // Note: sys_hub_action_type_base doesn't have 'label' or 'active' fields
106
+ if (discover === 'action_types' || discover === 'all') {
107
+ console.log('Discovering action types...');
108
+ try {
109
+ let query = ''; // No 'active' field on this table
110
+ if (category) {
111
+ query += (query ? '^' : '') + `category=${category}`;
112
+ }
113
+ if (search) {
114
+ query += (query ? '^' : '') + `nameLIKE${search}`;
115
+ }
116
+ const response = await client.get('/api/now/table/sys_hub_action_type_base', {
117
+ params: {
118
+ sysparm_query: query,
119
+ sysparm_limit: limit,
120
+ sysparm_fields: 'sys_id,name,category,description,spoke'
121
+ }
122
+ });
123
+ if (response.data.result) {
124
+ results.action_types = response.data.result.map((a) => ({
125
+ sys_id: a.sys_id,
126
+ name: a.name,
127
+ label: a.name, // Use name as label (label field doesn't exist)
128
+ category: a.category,
129
+ description: a.description,
130
+ spoke: a.spoke
131
+ }));
132
+ console.log(`Found ${results.action_types.length} action types`);
133
+ // Group by category for easier browsing
134
+ const byCategory = {};
135
+ for (const action of results.action_types) {
136
+ const cat = action.category || 'Uncategorized';
137
+ if (!byCategory[cat])
138
+ byCategory[cat] = [];
139
+ byCategory[cat].push(action);
140
+ }
141
+ results.action_types_by_category = byCategory;
142
+ }
143
+ }
144
+ catch (error) {
145
+ console.error('Failed to fetch action types:', error.message);
146
+ results.action_types_error = error.message;
147
+ }
148
+ }
149
+ // ==================== SUBFLOWS ====================
150
+ if (discover === 'subflows' || discover === 'all') {
151
+ console.log('Discovering subflows...');
152
+ try {
153
+ let query = include_inactive ? '' : 'active=true';
154
+ query += (query ? '^' : '') + 'type=subflow';
155
+ if (search) {
156
+ query += `^nameLIKE${search}^ORinternal_nameLIKE${search}`;
157
+ }
158
+ const response = await client.get('/api/now/table/sys_hub_flow', {
159
+ params: {
160
+ sysparm_query: query,
161
+ sysparm_limit: limit,
162
+ sysparm_fields: 'sys_id,name,internal_name,description'
163
+ }
164
+ });
165
+ if (response.data.result) {
166
+ results.subflows = response.data.result.map((s) => ({
167
+ sys_id: s.sys_id,
168
+ name: s.name,
169
+ internal_name: s.internal_name,
170
+ description: s.description
171
+ }));
172
+ console.log(`Found ${results.subflows.length} subflows`);
173
+ }
174
+ }
175
+ catch (error) {
176
+ console.error('Failed to fetch subflows:', error.message);
177
+ results.subflows_error = error.message;
178
+ }
179
+ }
180
+ // ==================== SPOKES (Integration Hubs) ====================
181
+ if (discover === 'spokes' || discover === 'all') {
182
+ console.log('Discovering spokes...');
183
+ try {
184
+ let query = include_inactive ? '' : 'active=true';
185
+ if (search) {
186
+ query += (query ? '^' : '') + `nameLIKE${search}^ORlabelLIKE${search}`;
187
+ }
188
+ const response = await client.get('/api/now/table/sys_hub_spoke', {
189
+ params: {
190
+ sysparm_query: query,
191
+ sysparm_limit: limit,
192
+ sysparm_fields: 'sys_id,name,label,description,version'
193
+ }
194
+ });
195
+ if (response.data.result) {
196
+ results.spokes = response.data.result.map((s) => ({
197
+ sys_id: s.sys_id,
198
+ name: s.name,
199
+ label: s.label || s.name,
200
+ description: s.description,
201
+ version: s.version
202
+ }));
203
+ console.log(`Found ${results.spokes.length} spokes`);
204
+ }
205
+ }
206
+ catch (error) {
207
+ console.error('Failed to fetch spokes:', error.message);
208
+ results.spokes_error = error.message;
209
+ }
210
+ }
211
+ // ==================== COMMON ACTIONS REFERENCE ====================
212
+ // Add a quick reference for common action types
213
+ results.common_action_reference = {
214
+ 'Core Actions': [
215
+ { name: 'Log', description: 'Write a message to the system log' },
216
+ { name: 'Create Record', description: 'Create a new record in a table' },
217
+ { name: 'Update Record', description: 'Update an existing record' },
218
+ { name: 'Delete Record', description: 'Delete a record' },
219
+ { name: 'Look Up Records', description: 'Query records from a table' },
220
+ { name: 'Look Up Record', description: 'Get a single record by sys_id' },
221
+ { name: 'Set Flow Variables', description: 'Set flow variable values' }
222
+ ],
223
+ 'Communication': [
224
+ { name: 'Send Email', description: 'Send an email notification' },
225
+ { name: 'Send Event', description: 'Fire a system event' },
226
+ { name: 'Create Task', description: 'Create a task record' }
227
+ ],
228
+ 'Approvals': [
229
+ { name: 'Ask For Approval', description: 'Request approval from users' },
230
+ { name: 'Wait For Condition', description: 'Wait until a condition is met' }
231
+ ],
232
+ 'Scripting': [
233
+ { name: 'Run Script', description: 'Execute a server-side script' }
234
+ ]
235
+ };
236
+ // ==================== COMMON TRIGGER REFERENCE ====================
237
+ results.common_trigger_reference = {
238
+ 'Record Triggers': [
239
+ { name: 'Created', description: 'When a record is created' },
240
+ { name: 'Updated', description: 'When a record is updated' },
241
+ { name: 'Deleted', description: 'When a record is deleted' },
242
+ { name: 'Created or Updated', description: 'When a record is created or updated' }
243
+ ],
244
+ 'Scheduled Triggers': [
245
+ { name: 'Scheduled', description: 'Run on a schedule (daily, weekly, etc.)' },
246
+ { name: 'Interval', description: 'Run at fixed intervals' }
247
+ ],
248
+ 'Other Triggers': [
249
+ { name: 'REST API', description: 'Triggered via REST API call' },
250
+ { name: 'Inbound Email', description: 'Triggered by incoming email' },
251
+ { name: 'Service Catalog', description: 'Triggered by catalog request' }
252
+ ]
253
+ };
254
+ // Build summary
255
+ const summary = {
256
+ trigger_types: results.trigger_types?.length || 0,
257
+ action_types: results.action_types?.length || 0,
258
+ subflows: results.subflows?.length || 0,
259
+ spokes: results.spokes?.length || 0
260
+ };
261
+ return (0, error_handler_js_1.createSuccessResult)({
262
+ discovered: discover,
263
+ summary,
264
+ ...results
265
+ });
266
+ }
267
+ catch (error) {
268
+ return (0, error_handler_js_1.createErrorResult)(`Failed to discover flow components: ${error.message}`);
269
+ }
270
+ }
271
+ exports.version = '1.0.0';
272
+ exports.author = 'Snow-Flow v8.3.0 - Flow Designer Discovery';
273
+ //# sourceMappingURL=snow_flow_discover.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"snow_flow_discover.js","sourceRoot":"","sources":["../../../../../src/mcp/servicenow-mcp-unified/tools/flow-designer/snow_flow_discover.ts"],"names":[],"mappings":"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"}