snow-flow 10.0.1-dev.433 → 10.0.1-dev.435

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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "$schema": "https://json.schemastore.org/package.json",
3
- "version": "10.0.1-dev.433",
3
+ "version": "10.0.1-dev.435",
4
4
  "name": "snow-flow",
5
5
  "description": "Snow-Flow - ServiceNow Multi-Agent Development Framework powered by AI",
6
6
  "license": "Elastic-2.0",
@@ -62,63 +62,32 @@ async function addTriggerViaGraphQL(
62
62
  ): Promise<{ success: boolean; triggerId?: string; steps?: any; error?: string }> {
63
63
  const steps: any = {};
64
64
 
65
- const triggerMap: Record<string, { type: string; name: string; triggerType: string; defNames: string[] }> = {
66
- 'record_created': { type: 'record_create', name: 'Created', triggerType: 'Record',
67
- defNames: ['sn_fd.trigger.record_create', 'global.sn_fd.trigger.record_create', 'sn_fd.trigger.record_created', 'global.sn_fd.trigger.record_created'] },
68
- 'record_updated': { type: 'record_update', name: 'Updated', triggerType: 'Record',
69
- defNames: ['sn_fd.trigger.record_update', 'global.sn_fd.trigger.record_update', 'sn_fd.trigger.record_updated', 'global.sn_fd.trigger.record_updated'] },
70
- 'record_create_or_update': { type: 'record_create_or_update', name: 'Created or Updated', triggerType: 'Record',
71
- defNames: ['sn_fd.trigger.record_create_or_update', 'global.sn_fd.trigger.record_create_or_update'] },
72
- 'scheduled': { type: 'scheduled', name: 'Scheduled', triggerType: 'Scheduled',
73
- defNames: ['sn_fd.trigger.scheduled', 'global.sn_fd.trigger.scheduled'] },
65
+ const triggerMap: Record<string, { type: string; name: string; triggerType: string }> = {
66
+ 'record_created': { type: 'record_create', name: 'Created', triggerType: 'Record' },
67
+ 'record_updated': { type: 'record_update', name: 'Updated', triggerType: 'Record' },
68
+ 'record_create_or_update': { type: 'record_create_or_update', name: 'Created or Updated', triggerType: 'Record' },
69
+ 'scheduled': { type: 'scheduled', name: 'Scheduled', triggerType: 'Scheduled' },
74
70
  };
75
71
 
76
72
  const config = triggerMap[triggerType] || triggerMap['record_create_or_update'];
77
73
 
74
+ // Trigger definitions live in sys_hub_trigger_definition, keyed by `type` field
78
75
  let trigDefId: string | null = null;
79
- const defTables = ['sys_hub_action_type_definition', 'sys_hub_trigger_definition'];
80
- for (const defTable of defTables) {
81
- if (trigDefId) break;
82
- for (const defName of config.defNames) {
83
- try {
84
- const resp = await client.get('/api/now/table/' + defTable, {
85
- params: { sysparm_query: 'internal_name=' + defName, sysparm_fields: 'sys_id', sysparm_limit: 1 }
86
- });
87
- trigDefId = resp.data.result?.[0]?.sys_id || null;
88
- if (trigDefId) break;
89
- } catch (_) {}
90
- }
91
- }
92
- if (!trigDefId) {
93
- for (const defTable of defTables) {
94
- if (trigDefId) break;
95
- try {
96
- const resp = await client.get('/api/now/table/' + defTable, {
97
- params: {
98
- sysparm_query: 'internal_nameLIKEsn_fd.trigger.' + config.type,
99
- sysparm_fields: 'sys_id,internal_name,name', sysparm_limit: 10
100
- }
101
- });
102
- for (const r of (resp.data.result || [])) {
103
- const iname = r.internal_name || '';
104
- if (iname.indexOf('trigger') > -1 && iname.indexOf(config.type) > -1) { trigDefId = r.sys_id; break; }
105
- }
106
- } catch (_) {}
107
- }
108
- }
76
+ try {
77
+ const resp = await client.get('/api/now/table/sys_hub_trigger_definition', {
78
+ params: { sysparm_query: 'type=' + config.type, sysparm_fields: 'sys_id,type,name', sysparm_limit: 1 }
79
+ });
80
+ trigDefId = resp.data.result?.[0]?.sys_id || null;
81
+ steps.def_lookup_primary = resp.data.result?.[0] || null;
82
+ } catch (_) {}
83
+ // Fallback: search by name
109
84
  if (!trigDefId) {
110
85
  try {
111
- const resp = await client.get('/api/now/table/sys_hub_action_type_definition', {
112
- params: {
113
- sysparm_query: 'internal_nameLIKEtrigger^internal_nameLIKE' + config.type,
114
- sysparm_fields: 'sys_id,internal_name,name', sysparm_limit: 10
115
- }
86
+ const resp = await client.get('/api/now/table/sys_hub_trigger_definition', {
87
+ params: { sysparm_query: 'name=' + config.name, sysparm_fields: 'sys_id,type,name', sysparm_limit: 1 }
116
88
  });
117
- steps.fallback_candidates = (resp.data.result || []).map((r: any) => ({ sys_id: r.sys_id, internal_name: r.internal_name, name: r.name }));
118
- for (const r of (resp.data.result || [])) {
119
- const iname = r.internal_name || '';
120
- if (iname.indexOf(config.type) > -1) { trigDefId = r.sys_id; break; }
121
- }
89
+ trigDefId = resp.data.result?.[0]?.sys_id || null;
90
+ steps.def_lookup_fallback = resp.data.result?.[0] || null;
122
91
  } catch (_) {}
123
92
  }
124
93
  if (!trigDefId) return { success: false, error: 'Trigger definition not found for: ' + triggerType, steps };
@@ -204,10 +173,14 @@ async function addActionViaGraphQL(
204
173
  for (const name of candidates) {
205
174
  try {
206
175
  const resp = await client.get('/api/now/table/sys_hub_action_type_definition', {
207
- params: { sysparm_query: 'internal_name=' + name, sysparm_fields: 'sys_id', sysparm_limit: 1 }
176
+ params: { sysparm_query: 'internal_name=' + name, sysparm_fields: 'sys_id,internal_name,name', sysparm_limit: 1 }
208
177
  });
209
- actionDefId = resp.data.result?.[0]?.sys_id || null;
210
- if (actionDefId) break;
178
+ const found = resp.data.result?.[0];
179
+ if (found?.sys_id) {
180
+ actionDefId = found.sys_id;
181
+ steps.def_lookup = { id: found.sys_id, internal_name: found.internal_name, name: found.name, matched_query: name };
182
+ break;
183
+ }
211
184
  } catch (_) {}
212
185
  }
213
186
  if (!actionDefId) {
@@ -215,14 +188,16 @@ async function addActionViaGraphQL(
215
188
  const resp = await client.get('/api/now/table/sys_hub_action_type_definition', {
216
189
  params: {
217
190
  sysparm_query: 'internal_nameLIKE' + actionType + '^ORnameLIKE' + actionType,
218
- sysparm_fields: 'sys_id,internal_name', sysparm_limit: 5
191
+ sysparm_fields: 'sys_id,internal_name,name', sysparm_limit: 5
219
192
  }
220
193
  });
221
- actionDefId = resp.data.result?.[0]?.sys_id || null;
194
+ const results = resp.data.result || [];
195
+ steps.def_lookup_fallback_candidates = results.map((r: any) => ({ sys_id: r.sys_id, internal_name: r.internal_name, name: r.name }));
196
+ actionDefId = results[0]?.sys_id || null;
197
+ if (actionDefId) steps.def_lookup = { id: actionDefId, internal_name: results[0].internal_name, name: results[0].name, matched_query: 'LIKE ' + actionType };
222
198
  } catch (_) {}
223
199
  }
224
200
  if (!actionDefId) return { success: false, error: 'Action definition not found for: ' + actionType, steps };
225
- steps.def_lookup = { id: actionDefId };
226
201
 
227
202
  const uuid = generateUUID();
228
203
  const actionResponseFields = 'actions { inserts { sysId uiUniqueIdentifier __typename } updates deletes __typename }';