@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 @@
1
+ {"version":3,"file":"InstanceDiscovery.js","sourceRoot":"","sources":["../../../src/sn/discovery/InstanceDiscovery.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,124 @@
1
+ /**
2
+ * Options for the health check.
3
+ */
4
+ export interface HealthCheckOptions {
5
+ /** Include instance version info from sys_properties. Defaults to true. */
6
+ includeVersion?: boolean;
7
+ /** Include cluster node status from sys_cluster_state. Defaults to true. */
8
+ includeCluster?: boolean;
9
+ /** Include stuck job detection from sys_trigger. Defaults to true. */
10
+ includeStuckJobs?: boolean;
11
+ /** Include active semaphore count from sys_semaphore. Defaults to true. */
12
+ includeSemaphores?: boolean;
13
+ /** Include operational counts (incidents, changes, problems). Defaults to true. */
14
+ includeOperationalCounts?: boolean;
15
+ /** Threshold in minutes for a job to be considered "stuck". Defaults to 30. */
16
+ stuckJobThresholdMinutes?: number;
17
+ }
18
+ /**
19
+ * Instance version information.
20
+ */
21
+ export interface InstanceVersionInfo {
22
+ /** The WAR version (glide.war) */
23
+ version?: string | null;
24
+ /** Build date (glide.build.date) */
25
+ buildDate?: string | null;
26
+ /** Build tag (glide.build.tag) */
27
+ buildTag?: string | null;
28
+ }
29
+ /**
30
+ * A cluster node status record.
31
+ */
32
+ export interface ClusterNodeStatus {
33
+ /** The system ID */
34
+ sys_id: string;
35
+ /** The node ID */
36
+ node_id?: string;
37
+ /** The node status */
38
+ status?: string;
39
+ /** System updated on */
40
+ sys_updated_on?: string;
41
+ /** Additional fields */
42
+ [key: string]: unknown;
43
+ }
44
+ /**
45
+ * A stuck job (sys_trigger) record.
46
+ */
47
+ export interface StuckJobRecord {
48
+ /** The system ID */
49
+ sys_id: string;
50
+ /** Name of the trigger */
51
+ name?: string;
52
+ /** The next scheduled action time */
53
+ next_action?: string;
54
+ /** The state of the trigger */
55
+ state?: string;
56
+ /** Additional fields */
57
+ [key: string]: unknown;
58
+ }
59
+ /**
60
+ * Operational record counts.
61
+ */
62
+ export interface OperationalCounts {
63
+ /** Number of open incidents */
64
+ openIncidents?: number | null;
65
+ /** Number of open change requests */
66
+ openChanges?: number | null;
67
+ /** Number of open problems */
68
+ openProblems?: number | null;
69
+ }
70
+ /**
71
+ * Consolidated health check result.
72
+ */
73
+ export interface HealthCheckResult {
74
+ /** Timestamp of the health check */
75
+ timestamp: string;
76
+ /** Instance version information (null if check failed or was skipped) */
77
+ version: InstanceVersionInfo | null;
78
+ /** Cluster node statuses (null if check failed or was skipped) */
79
+ clusterNodes: ClusterNodeStatus[] | null;
80
+ /** Stuck jobs (null if check failed or was skipped) */
81
+ stuckJobs: StuckJobRecord[] | null;
82
+ /** Number of active semaphores (null if check failed or was skipped) */
83
+ activeSemaphoreCount: number | null;
84
+ /** Operational counts (null if check failed or was skipped) */
85
+ operationalCounts: OperationalCounts | null;
86
+ /** Summary string describing overall health */
87
+ summary: string;
88
+ }
89
+ /**
90
+ * A sys_properties record.
91
+ */
92
+ export interface SysPropertyRecord {
93
+ sys_id: string;
94
+ name?: string;
95
+ value?: string;
96
+ [key: string]: unknown;
97
+ }
98
+ /**
99
+ * Response from sys_properties query.
100
+ */
101
+ export interface SysPropertyResponse {
102
+ result: SysPropertyRecord[];
103
+ }
104
+ /**
105
+ * Response from sys_cluster_state query.
106
+ */
107
+ export interface ClusterStateResponse {
108
+ result: ClusterNodeStatus[];
109
+ }
110
+ /**
111
+ * Response from sys_trigger query.
112
+ */
113
+ export interface SysTriggerResponse {
114
+ result: StuckJobRecord[];
115
+ }
116
+ /**
117
+ * Response from sys_semaphore query.
118
+ */
119
+ export interface SysSemaphoreResponse {
120
+ result: Array<{
121
+ sys_id: string;
122
+ [key: string]: unknown;
123
+ }>;
124
+ }
@@ -0,0 +1,5 @@
1
+ // ============================================================
2
+ // Options Types
3
+ // ============================================================
4
+ export {};
5
+ //# sourceMappingURL=HealthModels.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HealthModels.js","sourceRoot":"","sources":["../../../src/sn/health/HealthModels.ts"],"names":[],"mappings":"AAAA,+DAA+D;AAC/D,gBAAgB;AAChB,+DAA+D"}
@@ -0,0 +1,58 @@
1
+ import { ServiceNowInstance } from "../ServiceNowInstance.js";
2
+ import { AggregateQuery } from "../aggregate/AggregateQuery.js";
3
+ import { HealthCheckOptions, HealthCheckResult } from './HealthModels.js';
4
+ /**
5
+ * InstanceHealth provides a consolidated health check for a ServiceNow instance.
6
+ * Checks version info, cluster status, stuck jobs, semaphores, and operational counts.
7
+ * Each sub-check is isolated — a failure in one does not affect others.
8
+ */
9
+ export declare class InstanceHealth {
10
+ private static readonly SYS_PROPERTIES_TABLE;
11
+ private static readonly SYS_CLUSTER_STATE_TABLE;
12
+ private static readonly SYS_TRIGGER_TABLE;
13
+ private static readonly SYS_SEMAPHORE_TABLE;
14
+ private _logger;
15
+ private _tableAPI;
16
+ private _aggregateQuery;
17
+ private _instance;
18
+ constructor(instance: ServiceNowInstance, aggregateQuery?: AggregateQuery);
19
+ /**
20
+ * Run a consolidated health check on the instance.
21
+ * Each sub-check is wrapped in try/catch — failures return null for that check
22
+ * without affecting the overall result.
23
+ *
24
+ * @param options Options to control which checks are run
25
+ * @returns HealthCheckResult with all collected information and a summary
26
+ */
27
+ checkHealth(options?: HealthCheckOptions): Promise<HealthCheckResult>;
28
+ /**
29
+ * Get instance version information from sys_properties.
30
+ * @private
31
+ */
32
+ private _getVersionInfo;
33
+ /**
34
+ * Get cluster node status from sys_cluster_state.
35
+ * @private
36
+ */
37
+ private _getClusterStatus;
38
+ /**
39
+ * Get stuck jobs from sys_trigger (state=0 and next_action overdue).
40
+ * @private
41
+ */
42
+ private _getStuckJobs;
43
+ /**
44
+ * Get count of active semaphores from sys_semaphore.
45
+ * @private
46
+ */
47
+ private _getActiveSemaphores;
48
+ /**
49
+ * Get operational counts using AggregateQuery.
50
+ * @private
51
+ */
52
+ private _getOperationalCounts;
53
+ /**
54
+ * Build a human-readable summary string from the health check results.
55
+ * @private
56
+ */
57
+ private _buildSummary;
58
+ }
@@ -0,0 +1,221 @@
1
+ import { Logger } from "../../util/Logger.js";
2
+ import { TableAPIRequest } from "../../comm/http/TableAPIRequest.js";
3
+ import { AggregateQuery } from "../aggregate/AggregateQuery.js";
4
+ /**
5
+ * InstanceHealth provides a consolidated health check for a ServiceNow instance.
6
+ * Checks version info, cluster status, stuck jobs, semaphores, and operational counts.
7
+ * Each sub-check is isolated — a failure in one does not affect others.
8
+ */
9
+ export class InstanceHealth {
10
+ static SYS_PROPERTIES_TABLE = 'sys_properties';
11
+ static SYS_CLUSTER_STATE_TABLE = 'sys_cluster_state';
12
+ static SYS_TRIGGER_TABLE = 'sys_trigger';
13
+ static SYS_SEMAPHORE_TABLE = 'sys_semaphore';
14
+ _logger = new Logger("InstanceHealth");
15
+ _tableAPI;
16
+ _aggregateQuery;
17
+ _instance;
18
+ constructor(instance, aggregateQuery) {
19
+ this._instance = instance;
20
+ this._tableAPI = new TableAPIRequest(instance);
21
+ this._aggregateQuery = aggregateQuery || new AggregateQuery(instance);
22
+ }
23
+ /**
24
+ * Run a consolidated health check on the instance.
25
+ * Each sub-check is wrapped in try/catch — failures return null for that check
26
+ * without affecting the overall result.
27
+ *
28
+ * @param options Options to control which checks are run
29
+ * @returns HealthCheckResult with all collected information and a summary
30
+ */
31
+ async checkHealth(options = {}) {
32
+ const includeVersion = options.includeVersion !== false;
33
+ const includeCluster = options.includeCluster !== false;
34
+ const includeStuckJobs = options.includeStuckJobs !== false;
35
+ const includeSemaphores = options.includeSemaphores !== false;
36
+ const includeOperationalCounts = options.includeOperationalCounts !== false;
37
+ const stuckJobThreshold = options.stuckJobThresholdMinutes ?? 30;
38
+ this._logger.info('Running instance health check');
39
+ const version = includeVersion ? await this._getVersionInfo() : null;
40
+ const clusterNodes = includeCluster ? await this._getClusterStatus() : null;
41
+ const stuckJobs = includeStuckJobs ? await this._getStuckJobs(stuckJobThreshold) : null;
42
+ const activeSemaphoreCount = includeSemaphores ? await this._getActiveSemaphores() : null;
43
+ const operationalCounts = includeOperationalCounts ? await this._getOperationalCounts() : null;
44
+ const summary = this._buildSummary(version, clusterNodes, stuckJobs, activeSemaphoreCount, operationalCounts);
45
+ this._logger.info(`Health check complete: ${summary}`);
46
+ return {
47
+ timestamp: new Date().toISOString(),
48
+ version,
49
+ clusterNodes,
50
+ stuckJobs,
51
+ activeSemaphoreCount,
52
+ operationalCounts,
53
+ summary
54
+ };
55
+ }
56
+ /**
57
+ * Get instance version information from sys_properties.
58
+ * @private
59
+ */
60
+ async _getVersionInfo() {
61
+ try {
62
+ const query = {
63
+ sysparm_query: 'nameINglide.war,glide.build.date,glide.build.tag',
64
+ sysparm_limit: 10
65
+ };
66
+ const response = await this._tableAPI.get(InstanceHealth.SYS_PROPERTIES_TABLE, query);
67
+ if (response && response.status === 200 && response.bodyObject?.result) {
68
+ const props = response.bodyObject.result;
69
+ const versionInfo = {};
70
+ for (const prop of props) {
71
+ switch (prop.name) {
72
+ case 'glide.war':
73
+ versionInfo.version = prop.value || null;
74
+ break;
75
+ case 'glide.build.date':
76
+ versionInfo.buildDate = prop.value || null;
77
+ break;
78
+ case 'glide.build.tag':
79
+ versionInfo.buildTag = prop.value || null;
80
+ break;
81
+ }
82
+ }
83
+ return versionInfo;
84
+ }
85
+ return null;
86
+ }
87
+ catch (err) {
88
+ this._logger.error(`Failed to get version info: ${err}`);
89
+ return null;
90
+ }
91
+ }
92
+ /**
93
+ * Get cluster node status from sys_cluster_state.
94
+ * @private
95
+ */
96
+ async _getClusterStatus() {
97
+ try {
98
+ const query = {
99
+ sysparm_limit: 100
100
+ };
101
+ const response = await this._tableAPI.get(InstanceHealth.SYS_CLUSTER_STATE_TABLE, query);
102
+ if (response && response.status === 200 && response.bodyObject?.result) {
103
+ return response.bodyObject.result;
104
+ }
105
+ return null;
106
+ }
107
+ catch (err) {
108
+ this._logger.error(`Failed to get cluster status: ${err}`);
109
+ return null;
110
+ }
111
+ }
112
+ /**
113
+ * Get stuck jobs from sys_trigger (state=0 and next_action overdue).
114
+ * @private
115
+ */
116
+ async _getStuckJobs(thresholdMinutes) {
117
+ try {
118
+ const query = {
119
+ sysparm_query: `state=0^next_action<javascript:gs.minutesAgoStart(${thresholdMinutes})`,
120
+ sysparm_limit: 100
121
+ };
122
+ const response = await this._tableAPI.get(InstanceHealth.SYS_TRIGGER_TABLE, query);
123
+ if (response && response.status === 200 && response.bodyObject?.result) {
124
+ return response.bodyObject.result;
125
+ }
126
+ return null;
127
+ }
128
+ catch (err) {
129
+ this._logger.error(`Failed to get stuck jobs: ${err}`);
130
+ return null;
131
+ }
132
+ }
133
+ /**
134
+ * Get count of active semaphores from sys_semaphore.
135
+ * @private
136
+ */
137
+ async _getActiveSemaphores() {
138
+ try {
139
+ const query = {
140
+ sysparm_limit: 1000
141
+ };
142
+ const response = await this._tableAPI.get(InstanceHealth.SYS_SEMAPHORE_TABLE, query);
143
+ if (response && response.status === 200 && response.bodyObject?.result) {
144
+ return response.bodyObject.result.length;
145
+ }
146
+ return null;
147
+ }
148
+ catch (err) {
149
+ this._logger.error(`Failed to get active semaphores: ${err}`);
150
+ return null;
151
+ }
152
+ }
153
+ /**
154
+ * Get operational counts using AggregateQuery.
155
+ * @private
156
+ */
157
+ async _getOperationalCounts() {
158
+ try {
159
+ const counts = {};
160
+ try {
161
+ counts.openIncidents = await this._aggregateQuery.count({ table: 'incident', query: 'active=true' });
162
+ }
163
+ catch {
164
+ counts.openIncidents = null;
165
+ }
166
+ try {
167
+ counts.openChanges = await this._aggregateQuery.count({ table: 'change_request', query: 'active=true' });
168
+ }
169
+ catch {
170
+ counts.openChanges = null;
171
+ }
172
+ try {
173
+ counts.openProblems = await this._aggregateQuery.count({ table: 'problem', query: 'active=true' });
174
+ }
175
+ catch {
176
+ counts.openProblems = null;
177
+ }
178
+ return counts;
179
+ }
180
+ catch (err) {
181
+ this._logger.error(`Failed to get operational counts: ${err}`);
182
+ return null;
183
+ }
184
+ }
185
+ /**
186
+ * Build a human-readable summary string from the health check results.
187
+ * @private
188
+ */
189
+ _buildSummary(version, clusterNodes, stuckJobs, activeSemaphoreCount, operationalCounts) {
190
+ const parts = [];
191
+ if (version) {
192
+ parts.push(`Version: ${version.version || 'unknown'}${version.buildTag ? ` (${version.buildTag})` : ''}`);
193
+ }
194
+ if (clusterNodes !== null) {
195
+ parts.push(`Cluster: ${clusterNodes.length} node(s)`);
196
+ }
197
+ if (stuckJobs !== null) {
198
+ parts.push(`Stuck jobs: ${stuckJobs.length}`);
199
+ }
200
+ if (activeSemaphoreCount !== null) {
201
+ parts.push(`Active semaphores: ${activeSemaphoreCount}`);
202
+ }
203
+ if (operationalCounts) {
204
+ const countParts = [];
205
+ if (operationalCounts.openIncidents !== null && operationalCounts.openIncidents !== undefined) {
206
+ countParts.push(`${operationalCounts.openIncidents} incidents`);
207
+ }
208
+ if (operationalCounts.openChanges !== null && operationalCounts.openChanges !== undefined) {
209
+ countParts.push(`${operationalCounts.openChanges} changes`);
210
+ }
211
+ if (operationalCounts.openProblems !== null && operationalCounts.openProblems !== undefined) {
212
+ countParts.push(`${operationalCounts.openProblems} problems`);
213
+ }
214
+ if (countParts.length > 0) {
215
+ parts.push(`Open: ${countParts.join(', ')}`);
216
+ }
217
+ }
218
+ return parts.length > 0 ? parts.join(' | ') : 'Health check completed (no data collected)';
219
+ }
220
+ }
221
+ //# sourceMappingURL=InstanceHealth.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InstanceHealth.js","sourceRoot":"","sources":["../../../src/sn/health/InstanceHealth.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,68 @@
1
+ import { ServiceNowInstance } from "../ServiceNowInstance.js";
2
+ import { TableSchemaOptions, TableSchema, FieldExplanation, CatalogValidationResult } from './SchemaModels.js';
3
+ /**
4
+ * SchemaDiscovery provides operations for discovering ServiceNow table schemas,
5
+ * explaining fields, and validating catalog configurations.
6
+ */
7
+ export declare class SchemaDiscovery {
8
+ private static readonly SYS_DB_OBJECT_TABLE;
9
+ private static readonly SYS_DICTIONARY_TABLE;
10
+ private static readonly SYS_CHOICE_TABLE;
11
+ private static readonly ITEM_OPTION_NEW_TABLE;
12
+ private static readonly CATALOG_UI_POLICY_TABLE;
13
+ private _logger;
14
+ private _req;
15
+ private _tableAPI;
16
+ private _instance;
17
+ constructor(instance: ServiceNowInstance);
18
+ /**
19
+ * Discover the schema for a ServiceNow table.
20
+ * Queries sys_db_object for table info and sys_dictionary for field definitions.
21
+ * Optionally includes choice tables, relationships, UI policies, and business rules.
22
+ *
23
+ * @param tableName The name of the table to discover
24
+ * @param options Optional flags to include additional information
25
+ * @returns TableSchema with all discovered information
26
+ * @throws Error if tableName is empty or the table is not found
27
+ */
28
+ discoverTableSchema(tableName: string, options?: TableSchemaOptions): Promise<TableSchema>;
29
+ /**
30
+ * Explain a specific field on a table.
31
+ * Queries sys_dictionary for the field definition and sys_choice for available choices.
32
+ *
33
+ * @param tableName The table containing the field
34
+ * @param fieldName The field name to explain
35
+ * @returns Detailed FieldExplanation
36
+ * @throws Error if tableName or fieldName is empty, or the field is not found
37
+ */
38
+ explainField(tableName: string, fieldName: string): Promise<FieldExplanation>;
39
+ /**
40
+ * Validate a catalog item configuration.
41
+ * Checks variables (item_option_new) and UI policies (catalog_ui_policy) for integrity issues.
42
+ *
43
+ * @param catalogItemSysId The sys_id of the catalog item to validate
44
+ * @returns Validation result with issues, warnings, and errors
45
+ * @throws Error if catalogItemSysId is empty
46
+ */
47
+ validateCatalogConfiguration(catalogItemSysId: string): Promise<CatalogValidationResult>;
48
+ /**
49
+ * Get choice values for all fields on a table.
50
+ * @private
51
+ */
52
+ private _getChoicesForTable;
53
+ /**
54
+ * Extract relationship information from field schemas (reference fields).
55
+ * @private
56
+ */
57
+ private _extractRelationships;
58
+ /**
59
+ * Get UI policies for a table.
60
+ * @private
61
+ */
62
+ private _getUIPoliciesForTable;
63
+ /**
64
+ * Get business rules for a table.
65
+ * @private
66
+ */
67
+ private _getBusinessRulesForTable;
68
+ }