@sonisoft/now-sdk-ext-core 2.2.1 → 2.5.1

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.
Files changed (98) hide show
  1. package/dist/comm/http/RequestHandler.js +7 -11
  2. package/dist/comm/http/RequestHandler.js.map +1 -1
  3. package/dist/comm/http/TableAPIRequest.js +3 -10
  4. package/dist/comm/http/TableAPIRequest.js.map +1 -1
  5. package/dist/index.d.ts +28 -0
  6. package/dist/index.js +28 -0
  7. package/dist/index.js.map +1 -1
  8. package/dist/sn/BackgroundScriptExecutor.d.ts +34 -0
  9. package/dist/sn/BackgroundScriptExecutor.js +96 -0
  10. package/dist/sn/BackgroundScriptExecutor.js.map +1 -1
  11. package/dist/sn/aggregate/AggregateModels.d.ts +89 -0
  12. package/dist/sn/aggregate/AggregateModels.js +5 -0
  13. package/dist/sn/aggregate/AggregateModels.js.map +1 -0
  14. package/dist/sn/aggregate/AggregateQuery.d.ts +50 -0
  15. package/dist/sn/aggregate/AggregateQuery.js +144 -0
  16. package/dist/sn/aggregate/AggregateQuery.js.map +1 -0
  17. package/dist/sn/application/ApplicationManager.d.ts +58 -1
  18. package/dist/sn/application/ApplicationManager.js +202 -11
  19. package/dist/sn/application/ApplicationManager.js.map +1 -1
  20. package/dist/sn/application/StoreApplicationModels.d.ts +99 -0
  21. package/dist/sn/application/StoreApplicationModels.js +2 -0
  22. package/dist/sn/application/StoreApplicationModels.js.map +1 -0
  23. package/dist/sn/attachment/AttachmentManager.d.ts +32 -0
  24. package/dist/sn/attachment/AttachmentManager.js +87 -0
  25. package/dist/sn/attachment/AttachmentManager.js.map +1 -0
  26. package/dist/sn/attachment/AttachmentModels.d.ts +28 -0
  27. package/dist/sn/attachment/AttachmentModels.js +2 -0
  28. package/dist/sn/attachment/AttachmentModels.js.map +1 -0
  29. package/dist/sn/batch/BatchModels.d.ts +90 -0
  30. package/dist/sn/batch/BatchModels.js +5 -0
  31. package/dist/sn/batch/BatchModels.js.map +1 -0
  32. package/dist/sn/batch/BatchOperations.d.ts +40 -0
  33. package/dist/sn/batch/BatchOperations.js +169 -0
  34. package/dist/sn/batch/BatchOperations.js.map +1 -0
  35. package/dist/sn/batch/QueryBatchModels.d.ts +93 -0
  36. package/dist/sn/batch/QueryBatchModels.js +5 -0
  37. package/dist/sn/batch/QueryBatchModels.js.map +1 -0
  38. package/dist/sn/batch/QueryBatchOperations.d.ts +41 -0
  39. package/dist/sn/batch/QueryBatchOperations.js +195 -0
  40. package/dist/sn/batch/QueryBatchOperations.js.map +1 -0
  41. package/dist/sn/cmdb/CMDBModels.d.ts +141 -0
  42. package/dist/sn/cmdb/CMDBModels.js +5 -0
  43. package/dist/sn/cmdb/CMDBModels.js.map +1 -0
  44. package/dist/sn/cmdb/CMDBRelationships.d.ts +60 -0
  45. package/dist/sn/cmdb/CMDBRelationships.js +286 -0
  46. package/dist/sn/cmdb/CMDBRelationships.js.map +1 -0
  47. package/dist/sn/discovery/DiscoveryModels.d.ts +160 -0
  48. package/dist/sn/discovery/DiscoveryModels.js +5 -0
  49. package/dist/sn/discovery/DiscoveryModels.js.map +1 -0
  50. package/dist/sn/discovery/InstanceDiscovery.d.ts +45 -0
  51. package/dist/sn/discovery/InstanceDiscovery.js +163 -0
  52. package/dist/sn/discovery/InstanceDiscovery.js.map +1 -0
  53. package/dist/sn/health/HealthModels.d.ts +124 -0
  54. package/dist/sn/health/HealthModels.js +5 -0
  55. package/dist/sn/health/HealthModels.js.map +1 -0
  56. package/dist/sn/health/InstanceHealth.d.ts +58 -0
  57. package/dist/sn/health/InstanceHealth.js +221 -0
  58. package/dist/sn/health/InstanceHealth.js.map +1 -0
  59. package/dist/sn/schema/SchemaDiscovery.d.ts +68 -0
  60. package/dist/sn/schema/SchemaDiscovery.js +346 -0
  61. package/dist/sn/schema/SchemaDiscovery.js.map +1 -0
  62. package/dist/sn/schema/SchemaModels.d.ts +277 -0
  63. package/dist/sn/schema/SchemaModels.js +5 -0
  64. package/dist/sn/schema/SchemaModels.js.map +1 -0
  65. package/dist/sn/scope/ScopeManager.d.ts +51 -0
  66. package/dist/sn/scope/ScopeManager.js +182 -0
  67. package/dist/sn/scope/ScopeManager.js.map +1 -0
  68. package/dist/sn/scope/ScopeModels.d.ts +72 -0
  69. package/dist/sn/scope/ScopeModels.js +5 -0
  70. package/dist/sn/scope/ScopeModels.js.map +1 -0
  71. package/dist/sn/scriptsync/ScriptSync.d.ts +38 -0
  72. package/dist/sn/scriptsync/ScriptSync.js +266 -0
  73. package/dist/sn/scriptsync/ScriptSync.js.map +1 -0
  74. package/dist/sn/scriptsync/ScriptSyncModels.d.ts +55 -0
  75. package/dist/sn/scriptsync/ScriptSyncModels.js +8 -0
  76. package/dist/sn/scriptsync/ScriptSyncModels.js.map +1 -0
  77. package/dist/sn/scriptsync/ScriptWatcher.d.ts +30 -0
  78. package/dist/sn/scriptsync/ScriptWatcher.js +74 -0
  79. package/dist/sn/scriptsync/ScriptWatcher.js.map +1 -0
  80. package/dist/sn/task/TaskModels.d.ts +85 -0
  81. package/dist/sn/task/TaskModels.js +5 -0
  82. package/dist/sn/task/TaskModels.js.map +1 -0
  83. package/dist/sn/task/TaskOperations.d.ts +63 -0
  84. package/dist/sn/task/TaskOperations.js +195 -0
  85. package/dist/sn/task/TaskOperations.js.map +1 -0
  86. package/dist/sn/updateset/UpdateSetManager.d.ts +78 -0
  87. package/dist/sn/updateset/UpdateSetManager.js +396 -0
  88. package/dist/sn/updateset/UpdateSetManager.js.map +1 -0
  89. package/dist/sn/updateset/UpdateSetModels.d.ts +188 -0
  90. package/dist/sn/updateset/UpdateSetModels.js +5 -0
  91. package/dist/sn/updateset/UpdateSetModels.js.map +1 -0
  92. package/dist/sn/workflow/WorkflowManager.d.ts +81 -0
  93. package/dist/sn/workflow/WorkflowManager.js +388 -0
  94. package/dist/sn/workflow/WorkflowManager.js.map +1 -0
  95. package/dist/sn/workflow/WorkflowModels.d.ts +242 -0
  96. package/dist/sn/workflow/WorkflowModels.js +5 -0
  97. package/dist/sn/workflow/WorkflowModels.js.map +1 -0
  98. package/package.json +5 -5
@@ -0,0 +1,396 @@
1
+ import { Logger } from "../../util/Logger.js";
2
+ import { ServiceNowRequest } from "../../comm/http/ServiceNowRequest.js";
3
+ import { TableAPIRequest } from "../../comm/http/TableAPIRequest.js";
4
+ /**
5
+ * UpdateSetManager provides operations for managing ServiceNow update sets.
6
+ * Supports setting/getting the current update set, listing, creating,
7
+ * moving records between update sets, cloning, and inspecting update sets.
8
+ */
9
+ export class UpdateSetManager {
10
+ static UI_UPDATESET_PATH = '/api/now/ui/concoursepicker/updateset';
11
+ static UI_CONCOURSEPICKER_CURRENT_PATH = '/api/now/ui/concoursepicker/current';
12
+ static UPDATE_SET_TABLE = 'sys_update_set';
13
+ static UPDATE_XML_TABLE = 'sys_update_xml';
14
+ _logger = new Logger("UpdateSetManager");
15
+ _req;
16
+ _tableAPI;
17
+ _instance;
18
+ constructor(instance) {
19
+ this._instance = instance;
20
+ this._req = new ServiceNowRequest(instance);
21
+ this._tableAPI = new TableAPIRequest(instance);
22
+ }
23
+ /**
24
+ * Set the current update set for the session.
25
+ * Uses PUT /api/now/ui/concoursepicker/updateset
26
+ *
27
+ * @param options The update set name and sysId to set as current
28
+ * @throws Error if name or sysId is empty or if the API call fails
29
+ */
30
+ async setCurrentUpdateSet(options) {
31
+ if (!options.name || options.name.trim().length === 0) {
32
+ throw new Error('Update set name is required');
33
+ }
34
+ if (!options.sysId || options.sysId.trim().length === 0) {
35
+ throw new Error('Update set sysId is required');
36
+ }
37
+ this._logger.info(`Setting current update set to: ${options.name} (${options.sysId})`);
38
+ const request = {
39
+ method: 'PUT',
40
+ path: UpdateSetManager.UI_UPDATESET_PATH,
41
+ headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' },
42
+ query: null,
43
+ body: null,
44
+ json: { name: options.name, sysId: options.sysId }
45
+ };
46
+ const resp = await this._req.put(request);
47
+ if (resp.status !== 200) {
48
+ throw new Error(`Failed to set current update set. Status: ${resp.status}`);
49
+ }
50
+ this._logger.info(`Successfully set current update set to: ${options.name}`);
51
+ }
52
+ /**
53
+ * Get the current update set.
54
+ * Uses GET /api/now/ui/concoursepicker/current
55
+ *
56
+ * @returns The current update set record or null if not set
57
+ */
58
+ async getCurrentUpdateSet() {
59
+ this._logger.info('Getting current update set');
60
+ const request = {
61
+ method: 'GET',
62
+ path: UpdateSetManager.UI_CONCOURSEPICKER_CURRENT_PATH,
63
+ headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' },
64
+ query: null,
65
+ body: null
66
+ };
67
+ const resp = await this._req.get(request);
68
+ if (resp.status === 200 && resp.bodyObject?.result?.currentUpdateSet) {
69
+ const current = resp.bodyObject.result.currentUpdateSet;
70
+ this._logger.info(`Current update set: ${current.name}`);
71
+ return {
72
+ sys_id: current.sysId,
73
+ name: current.name,
74
+ state: 'in progress'
75
+ };
76
+ }
77
+ throw new Error(`Failed to get current update set. Status: ${resp.status}`);
78
+ }
79
+ /**
80
+ * List update sets from the sys_update_set table.
81
+ * Uses Table API GET on sys_update_set.
82
+ *
83
+ * @param options Optional query, limit, and fields options
84
+ * @returns Array of UpdateSetRecord
85
+ */
86
+ async listUpdateSets(options = {}) {
87
+ const { encodedQuery, limit = 100, fields } = options;
88
+ this._logger.info(`Listing update sets with query: ${encodedQuery || 'none'}`);
89
+ const query = {
90
+ sysparm_limit: limit
91
+ };
92
+ if (encodedQuery) {
93
+ query.sysparm_query = encodedQuery;
94
+ }
95
+ if (fields) {
96
+ query.sysparm_fields = fields;
97
+ }
98
+ const response = await this._tableAPI.get(UpdateSetManager.UPDATE_SET_TABLE, query);
99
+ if (response.status === 200 && response.bodyObject?.result) {
100
+ this._logger.info(`Retrieved ${response.bodyObject.result.length} update sets`);
101
+ return response.bodyObject.result;
102
+ }
103
+ throw new Error(`Failed to list update sets. Status: ${response.status}`);
104
+ }
105
+ /**
106
+ * Create a new update set.
107
+ * Uses Table API POST on sys_update_set.
108
+ *
109
+ * @param options The update set name and optional description, application, state
110
+ * @returns The created UpdateSetRecord
111
+ * @throws Error if name is empty or if the API call fails
112
+ */
113
+ async createUpdateSet(options) {
114
+ if (!options.name || options.name.trim().length === 0) {
115
+ throw new Error('Update set name is required');
116
+ }
117
+ this._logger.info(`Creating update set: ${options.name}`);
118
+ const body = {
119
+ name: options.name,
120
+ state: options.state || 'in progress'
121
+ };
122
+ if (options.description) {
123
+ body.description = options.description;
124
+ }
125
+ if (options.application) {
126
+ body.application = options.application;
127
+ }
128
+ const response = await this._tableAPI.post(UpdateSetManager.UPDATE_SET_TABLE, {}, body);
129
+ if (response && (response.status === 200 || response.status === 201) && response.bodyObject?.result) {
130
+ this._logger.info(`Created update set: ${options.name} with sys_id: ${response.bodyObject.result.sys_id}`);
131
+ return response.bodyObject.result;
132
+ }
133
+ throw new Error(`Failed to create update set '${options.name}'. Status: ${response?.status ?? 'unknown'}`);
134
+ }
135
+ /**
136
+ * Move records to a target update set.
137
+ * Queries sys_update_xml records based on options and updates each to the target update set.
138
+ *
139
+ * @param targetUpdateSetId The sys_id of the target update set
140
+ * @param options Options for selecting which records to move
141
+ * @returns Result summary of the move operation
142
+ * @throws Error if targetUpdateSetId is empty or no selection criteria provided
143
+ */
144
+ async moveRecordsToUpdateSet(targetUpdateSetId, options = {}) {
145
+ if (!targetUpdateSetId || targetUpdateSetId.trim().length === 0) {
146
+ throw new Error('Target update set ID is required');
147
+ }
148
+ if (!options.recordSysIds && !options.timeRange && !options.sourceUpdateSet) {
149
+ throw new Error('At least one selection criteria is required: recordSysIds, timeRange, or sourceUpdateSet');
150
+ }
151
+ this._logger.info(`Moving records to update set: ${targetUpdateSetId}`);
152
+ const result = {
153
+ moved: 0,
154
+ failed: 0,
155
+ records: [],
156
+ errors: []
157
+ };
158
+ let records = [];
159
+ if (options.recordSysIds && options.recordSysIds.length > 0) {
160
+ // Fetch specific records by sys_id
161
+ const sysIdQuery = `sys_idIN${options.recordSysIds.join(',')}`;
162
+ const queryParams = {
163
+ sysparm_query: sysIdQuery,
164
+ sysparm_limit: options.recordSysIds.length
165
+ };
166
+ const resp = await this._tableAPI.get(UpdateSetManager.UPDATE_XML_TABLE, queryParams);
167
+ if (resp.status === 200 && resp.bodyObject?.result) {
168
+ records = resp.bodyObject.result;
169
+ }
170
+ }
171
+ else if (options.sourceUpdateSet) {
172
+ // Fetch records from a source update set
173
+ let encodedQuery = `update_set=${options.sourceUpdateSet}`;
174
+ if (options.timeRange) {
175
+ encodedQuery += `^sys_created_onBETWEEN${options.timeRange.start}@${options.timeRange.end}`;
176
+ }
177
+ const queryParams = {
178
+ sysparm_query: encodedQuery,
179
+ sysparm_limit: 1000
180
+ };
181
+ const resp = await this._tableAPI.get(UpdateSetManager.UPDATE_XML_TABLE, queryParams);
182
+ if (resp.status === 200 && resp.bodyObject?.result) {
183
+ records = resp.bodyObject.result;
184
+ }
185
+ }
186
+ else if (options.timeRange) {
187
+ const encodedQuery = `sys_created_onBETWEEN${options.timeRange.start}@${options.timeRange.end}`;
188
+ const queryParams = {
189
+ sysparm_query: encodedQuery,
190
+ sysparm_limit: 1000
191
+ };
192
+ const resp = await this._tableAPI.get(UpdateSetManager.UPDATE_XML_TABLE, queryParams);
193
+ if (resp.status === 200 && resp.bodyObject?.result) {
194
+ records = resp.bodyObject.result;
195
+ }
196
+ }
197
+ // Move each record to the target update set
198
+ for (const record of records) {
199
+ try {
200
+ if (options.onProgress) {
201
+ options.onProgress(`Moving record ${record.sys_id} (${record.name || record.type || 'unknown'})`);
202
+ }
203
+ const putResp = await this._tableAPI.put(UpdateSetManager.UPDATE_XML_TABLE, record.sys_id, { update_set: targetUpdateSetId });
204
+ if (putResp && (putResp.status === 200 || putResp.status === 201)) {
205
+ result.moved++;
206
+ result.records.push({
207
+ sys_id: record.sys_id,
208
+ name: record.name,
209
+ type: record.type,
210
+ status: 'moved'
211
+ });
212
+ }
213
+ else {
214
+ result.failed++;
215
+ result.records.push({
216
+ sys_id: record.sys_id,
217
+ name: record.name,
218
+ type: record.type,
219
+ status: 'failed'
220
+ });
221
+ result.errors.push({
222
+ sys_id: record.sys_id,
223
+ error: `Unexpected status: ${putResp?.status ?? 'unknown'}`
224
+ });
225
+ }
226
+ }
227
+ catch (err) {
228
+ result.failed++;
229
+ result.records.push({
230
+ sys_id: record.sys_id,
231
+ name: record.name,
232
+ type: record.type,
233
+ status: 'failed'
234
+ });
235
+ result.errors.push({
236
+ sys_id: record.sys_id,
237
+ error: err instanceof Error ? err.message : String(err)
238
+ });
239
+ }
240
+ }
241
+ this._logger.info(`Move complete: ${result.moved} moved, ${result.failed} failed`);
242
+ return result;
243
+ }
244
+ /**
245
+ * Clone an update set by creating a new update set and copying all sys_update_xml records.
246
+ *
247
+ * @param sourceUpdateSetId The sys_id of the source update set to clone
248
+ * @param newName The name for the new cloned update set
249
+ * @param onProgress Optional callback for progress updates
250
+ * @returns Result of the clone operation
251
+ * @throws Error if sourceUpdateSetId or newName is empty
252
+ */
253
+ async cloneUpdateSet(sourceUpdateSetId, newName, onProgress) {
254
+ if (!sourceUpdateSetId || sourceUpdateSetId.trim().length === 0) {
255
+ throw new Error('Source update set ID is required');
256
+ }
257
+ if (!newName || newName.trim().length === 0) {
258
+ throw new Error('New update set name is required');
259
+ }
260
+ this._logger.info(`Cloning update set ${sourceUpdateSetId} as "${newName}"`);
261
+ if (onProgress) {
262
+ onProgress('Fetching source update set...');
263
+ }
264
+ // Get the source update set
265
+ const sourceQuery = {
266
+ sysparm_query: `sys_id=${sourceUpdateSetId}`,
267
+ sysparm_limit: 1
268
+ };
269
+ const sourceResp = await this._tableAPI.get(UpdateSetManager.UPDATE_SET_TABLE, sourceQuery);
270
+ if (!sourceResp || sourceResp.status !== 200 || !sourceResp.bodyObject?.result || sourceResp.bodyObject.result.length === 0) {
271
+ throw new Error(`Source update set '${sourceUpdateSetId}' not found`);
272
+ }
273
+ const sourceSet = sourceResp.bodyObject.result[0];
274
+ if (onProgress) {
275
+ onProgress(`Found source update set: ${sourceSet.name}`);
276
+ }
277
+ // Create the new update set
278
+ const newSetBody = {
279
+ name: newName,
280
+ state: 'in progress'
281
+ };
282
+ if (sourceSet.description) {
283
+ newSetBody.description = sourceSet.description;
284
+ }
285
+ if (sourceSet.application) {
286
+ newSetBody.application = sourceSet.application;
287
+ }
288
+ const createResp = await this._tableAPI.post(UpdateSetManager.UPDATE_SET_TABLE, {}, newSetBody);
289
+ if (!createResp || (createResp.status !== 200 && createResp.status !== 201) || !createResp.bodyObject?.result) {
290
+ throw new Error(`Failed to create new update set '${newName}'. Status: ${createResp?.status ?? 'unknown'}`);
291
+ }
292
+ const newSet = createResp.bodyObject.result;
293
+ if (onProgress) {
294
+ onProgress(`Created new update set: ${newSet.name} (${newSet.sys_id})`);
295
+ }
296
+ // Get all sys_update_xml records from the source update set
297
+ const xmlQuery = {
298
+ sysparm_query: `update_set=${sourceUpdateSetId}`,
299
+ sysparm_limit: 10000
300
+ };
301
+ const xmlResp = await this._tableAPI.get(UpdateSetManager.UPDATE_XML_TABLE, xmlQuery);
302
+ const sourceRecords = (xmlResp.status === 200 && xmlResp.bodyObject?.result) ? xmlResp.bodyObject.result : [];
303
+ let recordsCloned = 0;
304
+ if (onProgress) {
305
+ onProgress(`Found ${sourceRecords.length} records to clone`);
306
+ }
307
+ // Clone each record into the new update set
308
+ for (const record of sourceRecords) {
309
+ try {
310
+ const cloneBody = {
311
+ update_set: newSet.sys_id,
312
+ name: record.name,
313
+ type: record.type,
314
+ target_name: record.target_name,
315
+ payload: record.payload,
316
+ category: record.category
317
+ };
318
+ const cloneResp = await this._tableAPI.post(UpdateSetManager.UPDATE_XML_TABLE, {}, cloneBody);
319
+ if (cloneResp && (cloneResp.status === 200 || cloneResp.status === 201)) {
320
+ recordsCloned++;
321
+ if (onProgress) {
322
+ onProgress(`Cloned record ${recordsCloned}/${sourceRecords.length}: ${record.name || record.type || 'unknown'}`);
323
+ }
324
+ }
325
+ }
326
+ catch (err) {
327
+ this._logger.error(`Failed to clone record ${record.sys_id}: ${err instanceof Error ? err.message : String(err)}`);
328
+ }
329
+ }
330
+ this._logger.info(`Clone complete: ${recordsCloned}/${sourceRecords.length} records cloned`);
331
+ return {
332
+ newUpdateSetId: newSet.sys_id,
333
+ newUpdateSetName: newSet.name,
334
+ sourceUpdateSetId: sourceUpdateSetId,
335
+ sourceUpdateSetName: sourceSet.name,
336
+ recordsCloned: recordsCloned,
337
+ totalSourceRecords: sourceRecords.length
338
+ };
339
+ }
340
+ /**
341
+ * Inspect an update set by querying its sys_update_xml records and grouping by type.
342
+ *
343
+ * @param updateSetSysId The sys_id of the update set to inspect
344
+ * @returns Inspection result with grouped components
345
+ * @throws Error if updateSetSysId is empty or the update set is not found
346
+ */
347
+ async inspectUpdateSet(updateSetSysId) {
348
+ if (!updateSetSysId || updateSetSysId.trim().length === 0) {
349
+ throw new Error('Update set sys_id is required');
350
+ }
351
+ this._logger.info(`Inspecting update set: ${updateSetSysId}`);
352
+ // Get the update set record
353
+ const setQuery = {
354
+ sysparm_query: `sys_id=${updateSetSysId}`,
355
+ sysparm_limit: 1
356
+ };
357
+ const setResp = await this._tableAPI.get(UpdateSetManager.UPDATE_SET_TABLE, setQuery);
358
+ if (!setResp || setResp.status !== 200 || !setResp.bodyObject?.result || setResp.bodyObject.result.length === 0) {
359
+ throw new Error(`Update set '${updateSetSysId}' not found`);
360
+ }
361
+ const updateSet = setResp.bodyObject.result[0];
362
+ // Get all sys_update_xml records for this update set
363
+ const xmlQuery = {
364
+ sysparm_query: `update_set=${updateSetSysId}`,
365
+ sysparm_limit: 10000
366
+ };
367
+ const xmlResp = await this._tableAPI.get(UpdateSetManager.UPDATE_XML_TABLE, xmlQuery);
368
+ const records = (xmlResp.status === 200 && xmlResp.bodyObject?.result) ? xmlResp.bodyObject.result : [];
369
+ // Group records by type
370
+ const typeGroups = new Map();
371
+ for (const record of records) {
372
+ const type = record.type || 'unknown';
373
+ if (!typeGroups.has(type)) {
374
+ typeGroups.set(type, []);
375
+ }
376
+ typeGroups.get(type).push(record.target_name || record.name || record.sys_id);
377
+ }
378
+ const components = Array.from(typeGroups.entries()).map(([type, items]) => ({
379
+ type,
380
+ count: items.length,
381
+ items
382
+ }));
383
+ this._logger.info(`Inspection complete: ${records.length} records in ${components.length} component types`);
384
+ return {
385
+ updateSet: {
386
+ sys_id: updateSet.sys_id,
387
+ name: updateSet.name,
388
+ state: updateSet.state,
389
+ description: updateSet.description
390
+ },
391
+ totalRecords: records.length,
392
+ components
393
+ };
394
+ }
395
+ }
396
+ //# sourceMappingURL=UpdateSetManager.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UpdateSetManager.js","sourceRoot":"","sources":["../../../src/sn/updateset/UpdateSetManager.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,188 @@
1
+ /**
2
+ * A record from the sys_update_set table.
3
+ */
4
+ export interface UpdateSetRecord {
5
+ /** System ID */
6
+ sys_id: string;
7
+ /** Name of the update set */
8
+ name: string;
9
+ /** Description of the update set */
10
+ description?: string;
11
+ /** State of the update set (e.g., "in progress", "complete") */
12
+ state: string;
13
+ /** Application scope reference */
14
+ application?: string;
15
+ /** Created timestamp */
16
+ sys_created_on?: string;
17
+ /** Updated timestamp */
18
+ sys_updated_on?: string;
19
+ /** Created by user */
20
+ sys_created_by?: string;
21
+ /** Additional fields */
22
+ [key: string]: unknown;
23
+ }
24
+ /**
25
+ * A record from the sys_update_xml table.
26
+ */
27
+ export interface UpdateXmlRecord {
28
+ /** System ID */
29
+ sys_id: string;
30
+ /** Name of the update XML record */
31
+ name?: string;
32
+ /** Type of the record (e.g., "sys_script_include") */
33
+ type?: string;
34
+ /** Target name of the record */
35
+ target_name?: string;
36
+ /** Reference to the parent update set */
37
+ update_set: string;
38
+ /** XML payload */
39
+ payload?: string;
40
+ /** Category of the update */
41
+ category?: string;
42
+ /** Created timestamp */
43
+ sys_created_on?: string;
44
+ /** Additional fields */
45
+ [key: string]: unknown;
46
+ }
47
+ /**
48
+ * Options for setting the current update set.
49
+ */
50
+ export interface SetUpdateSetOptions {
51
+ /** Name of the update set */
52
+ name: string;
53
+ /** sys_id of the update set */
54
+ sysId: string;
55
+ }
56
+ /**
57
+ * Options for listing update sets.
58
+ */
59
+ export interface ListUpdateSetsOptions {
60
+ /** Encoded query string for filtering */
61
+ encodedQuery?: string;
62
+ /** Maximum number of records to return */
63
+ limit?: number;
64
+ /** Comma-separated list of fields to return */
65
+ fields?: string;
66
+ }
67
+ /**
68
+ * Options for creating a new update set.
69
+ */
70
+ export interface CreateUpdateSetOptions {
71
+ /** Name of the update set */
72
+ name: string;
73
+ /** Description of the update set */
74
+ description?: string;
75
+ /** Application scope sys_id */
76
+ application?: string;
77
+ /** State of the update set (defaults to "in progress") */
78
+ state?: string;
79
+ }
80
+ /**
81
+ * Options for moving records between update sets.
82
+ */
83
+ export interface MoveRecordsOptions {
84
+ /** Specific record sys_ids to move */
85
+ recordSysIds?: string[];
86
+ /** Time range to select records */
87
+ timeRange?: {
88
+ start: string;
89
+ end: string;
90
+ };
91
+ /** Source update set sys_id to move records from */
92
+ sourceUpdateSet?: string;
93
+ /** Callback for progress updates */
94
+ onProgress?: (message: string) => void;
95
+ }
96
+ /**
97
+ * Result of moving records between update sets.
98
+ */
99
+ export interface MoveRecordsResult {
100
+ /** Number of records successfully moved */
101
+ moved: number;
102
+ /** Number of records that failed to move */
103
+ failed: number;
104
+ /** Details of each record processed */
105
+ records: Array<{
106
+ sys_id: string;
107
+ name?: string;
108
+ type?: string;
109
+ status: string;
110
+ }>;
111
+ /** Details of errors encountered */
112
+ errors: Array<{
113
+ sys_id: string;
114
+ error: string;
115
+ }>;
116
+ }
117
+ /**
118
+ * Result of cloning an update set.
119
+ */
120
+ export interface CloneUpdateSetResult {
121
+ /** sys_id of the newly created update set */
122
+ newUpdateSetId: string;
123
+ /** Name of the newly created update set */
124
+ newUpdateSetName: string;
125
+ /** sys_id of the source update set */
126
+ sourceUpdateSetId: string;
127
+ /** Name of the source update set */
128
+ sourceUpdateSetName: string;
129
+ /** Number of records cloned */
130
+ recordsCloned: number;
131
+ /** Total number of records in the source update set */
132
+ totalSourceRecords: number;
133
+ }
134
+ /**
135
+ * Result of inspecting an update set.
136
+ */
137
+ export interface InspectUpdateSetResult {
138
+ /** The update set record */
139
+ updateSet: {
140
+ sys_id: string;
141
+ name: string;
142
+ state: string;
143
+ description?: string;
144
+ };
145
+ /** Total number of records in the update set */
146
+ totalRecords: number;
147
+ /** Components grouped by type */
148
+ components: Array<{
149
+ type: string;
150
+ count: number;
151
+ items: string[];
152
+ }>;
153
+ }
154
+ /**
155
+ * Response wrapper for multiple update set records.
156
+ */
157
+ export interface UpdateSetResponse {
158
+ result: UpdateSetRecord[];
159
+ }
160
+ /**
161
+ * Response wrapper for a single update set record.
162
+ */
163
+ export interface UpdateSetSingleResponse {
164
+ result: UpdateSetRecord;
165
+ }
166
+ /**
167
+ * Response wrapper for multiple update XML records.
168
+ */
169
+ export interface UpdateXmlResponse {
170
+ result: UpdateXmlRecord[];
171
+ }
172
+ /**
173
+ * Response wrapper for a single update XML record.
174
+ */
175
+ export interface UpdateXmlSingleResponse {
176
+ result: UpdateXmlRecord;
177
+ }
178
+ /**
179
+ * Response from GET /api/now/ui/concoursepicker/current for the current update set.
180
+ */
181
+ export interface CurrentUpdateSetResponse {
182
+ result: {
183
+ currentUpdateSet: {
184
+ name: string;
185
+ sysId: string;
186
+ };
187
+ };
188
+ }
@@ -0,0 +1,5 @@
1
+ // ============================================================
2
+ // Update Set Record Types
3
+ // ============================================================
4
+ export {};
5
+ //# sourceMappingURL=UpdateSetModels.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"UpdateSetModels.js","sourceRoot":"","sources":["../../../src/sn/updateset/UpdateSetModels.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,0BAA0B;AAC1B,+DAA+D"}