nowaikit 2.5.0

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.

Potentially problematic release.


This version of nowaikit might be problematic. Click here for more details.

Files changed (209) hide show
  1. package/.env.example +96 -0
  2. package/LICENSE +21 -0
  3. package/README.md +1253 -0
  4. package/desktop/renderer/dist/apple-touch-icon.png +0 -0
  5. package/desktop/renderer/dist/assets/index-Bb0ncZQl.css +1 -0
  6. package/desktop/renderer/dist/assets/index-MlBBSUMZ.js +49 -0
  7. package/desktop/renderer/dist/favicon-32.png +0 -0
  8. package/desktop/renderer/dist/favicon.svg +18 -0
  9. package/desktop/renderer/dist/index.html +18 -0
  10. package/desktop/serve.js +449 -0
  11. package/dist/cli/auth.d.ts +14 -0
  12. package/dist/cli/auth.d.ts.map +1 -0
  13. package/dist/cli/auth.js +179 -0
  14. package/dist/cli/auth.js.map +1 -0
  15. package/dist/cli/config-store.d.ts +28 -0
  16. package/dist/cli/config-store.d.ts.map +1 -0
  17. package/dist/cli/config-store.js +64 -0
  18. package/dist/cli/config-store.js.map +1 -0
  19. package/dist/cli/detect-clients.d.ts +16 -0
  20. package/dist/cli/detect-clients.d.ts.map +1 -0
  21. package/dist/cli/detect-clients.js +151 -0
  22. package/dist/cli/detect-clients.js.map +1 -0
  23. package/dist/cli/index.d.ts +3 -0
  24. package/dist/cli/index.d.ts.map +1 -0
  25. package/dist/cli/index.js +193 -0
  26. package/dist/cli/index.js.map +1 -0
  27. package/dist/cli/setup.d.ts +4 -0
  28. package/dist/cli/setup.d.ts.map +1 -0
  29. package/dist/cli/setup.js +575 -0
  30. package/dist/cli/setup.js.map +1 -0
  31. package/dist/cli/writers/index.d.ts +9 -0
  32. package/dist/cli/writers/index.d.ts.map +1 -0
  33. package/dist/cli/writers/index.js +140 -0
  34. package/dist/cli/writers/index.js.map +1 -0
  35. package/dist/prompts/index.d.ts +25 -0
  36. package/dist/prompts/index.d.ts.map +1 -0
  37. package/dist/prompts/index.js +38 -0
  38. package/dist/prompts/index.js.map +1 -0
  39. package/dist/prompts/itsm.d.ts +20 -0
  40. package/dist/prompts/itsm.d.ts.map +1 -0
  41. package/dist/prompts/itsm.js +110 -0
  42. package/dist/prompts/itsm.js.map +1 -0
  43. package/dist/prompts/user-prompts.d.ts +3 -0
  44. package/dist/prompts/user-prompts.d.ts.map +1 -0
  45. package/dist/prompts/user-prompts.js +35 -0
  46. package/dist/prompts/user-prompts.js.map +1 -0
  47. package/dist/resources/index.d.ts +26 -0
  48. package/dist/resources/index.d.ts.map +1 -0
  49. package/dist/resources/index.js +99 -0
  50. package/dist/resources/index.js.map +1 -0
  51. package/dist/server.d.ts +3 -0
  52. package/dist/server.d.ts.map +1 -0
  53. package/dist/server.js +129 -0
  54. package/dist/server.js.map +1 -0
  55. package/dist/servicenow/client.d.ts +135 -0
  56. package/dist/servicenow/client.d.ts.map +1 -0
  57. package/dist/servicenow/client.js +803 -0
  58. package/dist/servicenow/client.js.map +1 -0
  59. package/dist/servicenow/instances.d.ts +28 -0
  60. package/dist/servicenow/instances.d.ts.map +1 -0
  61. package/dist/servicenow/instances.js +204 -0
  62. package/dist/servicenow/instances.js.map +1 -0
  63. package/dist/servicenow/types.d.ts +574 -0
  64. package/dist/servicenow/types.d.ts.map +1 -0
  65. package/dist/servicenow/types.js +3 -0
  66. package/dist/servicenow/types.js.map +1 -0
  67. package/dist/tools/agile.d.ts +225 -0
  68. package/dist/tools/agile.d.ts.map +1 -0
  69. package/dist/tools/agile.js +205 -0
  70. package/dist/tools/agile.js.map +1 -0
  71. package/dist/tools/app-studio.d.ts +139 -0
  72. package/dist/tools/app-studio.d.ts.map +1 -0
  73. package/dist/tools/app-studio.js +139 -0
  74. package/dist/tools/app-studio.js.map +1 -0
  75. package/dist/tools/atf.d.ts +144 -0
  76. package/dist/tools/atf.d.ts.map +1 -0
  77. package/dist/tools/atf.js +186 -0
  78. package/dist/tools/atf.js.map +1 -0
  79. package/dist/tools/catalog.d.ts +628 -0
  80. package/dist/tools/catalog.d.ts.map +1 -0
  81. package/dist/tools/catalog.js +397 -0
  82. package/dist/tools/catalog.js.map +1 -0
  83. package/dist/tools/change.d.ts +347 -0
  84. package/dist/tools/change.d.ts.map +1 -0
  85. package/dist/tools/change.js +213 -0
  86. package/dist/tools/change.js.map +1 -0
  87. package/dist/tools/core.d.ts +540 -0
  88. package/dist/tools/core.d.ts.map +1 -0
  89. package/dist/tools/core.js +373 -0
  90. package/dist/tools/core.js.map +1 -0
  91. package/dist/tools/csm.d.ts +401 -0
  92. package/dist/tools/csm.d.ts.map +1 -0
  93. package/dist/tools/csm.js +255 -0
  94. package/dist/tools/csm.js.map +1 -0
  95. package/dist/tools/deployment.d.ts +366 -0
  96. package/dist/tools/deployment.d.ts.map +1 -0
  97. package/dist/tools/deployment.js +181 -0
  98. package/dist/tools/deployment.js.map +1 -0
  99. package/dist/tools/devops.d.ts +236 -0
  100. package/dist/tools/devops.d.ts.map +1 -0
  101. package/dist/tools/devops.js +207 -0
  102. package/dist/tools/devops.js.map +1 -0
  103. package/dist/tools/flow.d.ts +496 -0
  104. package/dist/tools/flow.d.ts.map +1 -0
  105. package/dist/tools/flow.js +348 -0
  106. package/dist/tools/flow.js.map +1 -0
  107. package/dist/tools/hrsd.d.ts +789 -0
  108. package/dist/tools/hrsd.d.ts.map +1 -0
  109. package/dist/tools/hrsd.js +377 -0
  110. package/dist/tools/hrsd.js.map +1 -0
  111. package/dist/tools/incident.d.ts +256 -0
  112. package/dist/tools/incident.d.ts.map +1 -0
  113. package/dist/tools/incident.js +163 -0
  114. package/dist/tools/incident.js.map +1 -0
  115. package/dist/tools/index.d.ts +11514 -0
  116. package/dist/tools/index.d.ts.map +1 -0
  117. package/dist/tools/index.js +276 -0
  118. package/dist/tools/index.js.map +1 -0
  119. package/dist/tools/integration.d.ts +603 -0
  120. package/dist/tools/integration.d.ts.map +1 -0
  121. package/dist/tools/integration.js +510 -0
  122. package/dist/tools/integration.js.map +1 -0
  123. package/dist/tools/itam.d.ts +462 -0
  124. package/dist/tools/itam.d.ts.map +1 -0
  125. package/dist/tools/itam.js +306 -0
  126. package/dist/tools/itam.js.map +1 -0
  127. package/dist/tools/knowledge.d.ts +187 -0
  128. package/dist/tools/knowledge.d.ts.map +1 -0
  129. package/dist/tools/knowledge.js +161 -0
  130. package/dist/tools/knowledge.js.map +1 -0
  131. package/dist/tools/ml.d.ts +263 -0
  132. package/dist/tools/ml.d.ts.map +1 -0
  133. package/dist/tools/ml.js +251 -0
  134. package/dist/tools/ml.js.map +1 -0
  135. package/dist/tools/mobile.d.ts +352 -0
  136. package/dist/tools/mobile.d.ts.map +1 -0
  137. package/dist/tools/mobile.js +122 -0
  138. package/dist/tools/mobile.js.map +1 -0
  139. package/dist/tools/notification.d.ts +590 -0
  140. package/dist/tools/notification.d.ts.map +1 -0
  141. package/dist/tools/notification.js +382 -0
  142. package/dist/tools/notification.js.map +1 -0
  143. package/dist/tools/now-assist.d.ts +300 -0
  144. package/dist/tools/now-assist.d.ts.map +1 -0
  145. package/dist/tools/now-assist.js +227 -0
  146. package/dist/tools/now-assist.js.map +1 -0
  147. package/dist/tools/performance.d.ts +447 -0
  148. package/dist/tools/performance.d.ts.map +1 -0
  149. package/dist/tools/performance.js +473 -0
  150. package/dist/tools/performance.js.map +1 -0
  151. package/dist/tools/portal.d.ts +530 -0
  152. package/dist/tools/portal.d.ts.map +1 -0
  153. package/dist/tools/portal.js +425 -0
  154. package/dist/tools/portal.js.map +1 -0
  155. package/dist/tools/problem.d.ts +110 -0
  156. package/dist/tools/problem.d.ts.map +1 -0
  157. package/dist/tools/problem.js +100 -0
  158. package/dist/tools/problem.js.map +1 -0
  159. package/dist/tools/reporting.d.ts +825 -0
  160. package/dist/tools/reporting.d.ts.map +1 -0
  161. package/dist/tools/reporting.js +460 -0
  162. package/dist/tools/reporting.js.map +1 -0
  163. package/dist/tools/script.d.ts +714 -0
  164. package/dist/tools/script.d.ts.map +1 -0
  165. package/dist/tools/script.js +629 -0
  166. package/dist/tools/script.js.map +1 -0
  167. package/dist/tools/security.d.ts +794 -0
  168. package/dist/tools/security.d.ts.map +1 -0
  169. package/dist/tools/security.js +425 -0
  170. package/dist/tools/security.js.map +1 -0
  171. package/dist/tools/sys-properties.d.ts +315 -0
  172. package/dist/tools/sys-properties.d.ts.map +1 -0
  173. package/dist/tools/sys-properties.js +372 -0
  174. package/dist/tools/sys-properties.js.map +1 -0
  175. package/dist/tools/task.d.ts +82 -0
  176. package/dist/tools/task.d.ts.map +1 -0
  177. package/dist/tools/task.js +96 -0
  178. package/dist/tools/task.js.map +1 -0
  179. package/dist/tools/updateset.d.ts +159 -0
  180. package/dist/tools/updateset.d.ts.map +1 -0
  181. package/dist/tools/updateset.js +212 -0
  182. package/dist/tools/updateset.js.map +1 -0
  183. package/dist/tools/user.d.ts +206 -0
  184. package/dist/tools/user.d.ts.map +1 -0
  185. package/dist/tools/user.js +163 -0
  186. package/dist/tools/user.js.map +1 -0
  187. package/dist/tools/va.d.ts +217 -0
  188. package/dist/tools/va.d.ts.map +1 -0
  189. package/dist/tools/va.js +178 -0
  190. package/dist/tools/va.js.map +1 -0
  191. package/dist/tools/workspace.d.ts +565 -0
  192. package/dist/tools/workspace.d.ts.map +1 -0
  193. package/dist/tools/workspace.js +201 -0
  194. package/dist/tools/workspace.js.map +1 -0
  195. package/dist/tools-manifest.json +7852 -0
  196. package/dist/utils/errors.d.ts +6 -0
  197. package/dist/utils/errors.d.ts.map +1 -0
  198. package/dist/utils/errors.js +11 -0
  199. package/dist/utils/errors.js.map +1 -0
  200. package/dist/utils/logging.d.ts +7 -0
  201. package/dist/utils/logging.d.ts.map +1 -0
  202. package/dist/utils/logging.js +15 -0
  203. package/dist/utils/logging.js.map +1 -0
  204. package/dist/utils/permissions.d.ts +21 -0
  205. package/dist/utils/permissions.d.ts.map +1 -0
  206. package/dist/utils/permissions.js +54 -0
  207. package/dist/utils/permissions.js.map +1 -0
  208. package/instances.example.json +71 -0
  209. package/package.json +110 -0
@@ -0,0 +1,510 @@
1
+ import { ServiceNowError } from '../utils/errors.js';
2
+ import { requireWrite, requireScripting } from '../utils/permissions.js';
3
+ export function getIntegrationToolDefinitions() {
4
+ return [
5
+ // ── Outbound REST Messages ───────────────────────────────────────────────
6
+ {
7
+ name: 'list_rest_messages',
8
+ description: 'List outbound REST Message configurations (integrations with external APIs)',
9
+ inputSchema: {
10
+ type: 'object',
11
+ properties: {
12
+ query: { type: 'string', description: 'Search by name or description' },
13
+ limit: { type: 'number', description: 'Max records to return (default 25)' },
14
+ },
15
+ required: [],
16
+ },
17
+ },
18
+ {
19
+ name: 'get_rest_message',
20
+ description: 'Get full configuration of an outbound REST Message including its endpoints',
21
+ inputSchema: {
22
+ type: 'object',
23
+ properties: {
24
+ sys_id_or_name: { type: 'string', description: 'REST Message sys_id or name' },
25
+ },
26
+ required: ['sys_id_or_name'],
27
+ },
28
+ },
29
+ {
30
+ name: 'list_rest_message_functions',
31
+ description: 'List HTTP methods (functions) defined within a REST Message',
32
+ inputSchema: {
33
+ type: 'object',
34
+ properties: {
35
+ rest_message_sys_id: { type: 'string', description: 'Parent REST Message sys_id' },
36
+ limit: { type: 'number', description: 'Max records to return (default 25)' },
37
+ },
38
+ required: ['rest_message_sys_id'],
39
+ },
40
+ },
41
+ {
42
+ name: 'create_rest_message',
43
+ description: 'Create a new outbound REST Message definition (requires WRITE_ENABLED=true)',
44
+ inputSchema: {
45
+ type: 'object',
46
+ properties: {
47
+ name: { type: 'string', description: 'Unique REST Message name' },
48
+ endpoint: { type: 'string', description: 'Base URL endpoint (e.g. "https://api.example.com/v1")' },
49
+ description: { type: 'string', description: 'Purpose/description of this integration' },
50
+ use_mutual_auth: { type: 'boolean', description: 'Whether to use mutual TLS authentication' },
51
+ authentication_type: {
52
+ type: 'string',
53
+ description: 'Auth type: "no_authentication", "basic", "oauth2"',
54
+ },
55
+ },
56
+ required: ['name', 'endpoint'],
57
+ },
58
+ },
59
+ // ── Transform Maps ──────────────────────────────────────────────────────
60
+ {
61
+ name: 'list_transform_maps',
62
+ description: 'List Transform Maps used for importing data into ServiceNow tables',
63
+ inputSchema: {
64
+ type: 'object',
65
+ properties: {
66
+ query: { type: 'string', description: 'Search by name or target table' },
67
+ target_table: { type: 'string', description: 'Filter by target table name (e.g. "incident")' },
68
+ limit: { type: 'number', description: 'Max records to return (default 25)' },
69
+ },
70
+ required: [],
71
+ },
72
+ },
73
+ {
74
+ name: 'get_transform_map',
75
+ description: 'Get details of a Transform Map including its field mappings',
76
+ inputSchema: {
77
+ type: 'object',
78
+ properties: {
79
+ sys_id_or_name: { type: 'string', description: 'Transform Map sys_id or name' },
80
+ },
81
+ required: ['sys_id_or_name'],
82
+ },
83
+ },
84
+ {
85
+ name: 'run_transform_map',
86
+ description: 'Execute a Transform Map on an Import Set to load data (requires WRITE_ENABLED=true)',
87
+ inputSchema: {
88
+ type: 'object',
89
+ properties: {
90
+ transform_map_sys_id: { type: 'string', description: 'sys_id of the Transform Map to run' },
91
+ import_set_sys_id: { type: 'string', description: 'sys_id of the Import Set containing source data' },
92
+ },
93
+ required: ['transform_map_sys_id', 'import_set_sys_id'],
94
+ },
95
+ },
96
+ {
97
+ name: 'list_transform_field_maps',
98
+ description: 'List field-level mappings within a Transform Map',
99
+ inputSchema: {
100
+ type: 'object',
101
+ properties: {
102
+ transform_map_sys_id: { type: 'string', description: 'Parent Transform Map sys_id' },
103
+ limit: { type: 'number', description: 'Max records to return (default 50)' },
104
+ },
105
+ required: ['transform_map_sys_id'],
106
+ },
107
+ },
108
+ // ── Import Sets ─────────────────────────────────────────────────────────
109
+ {
110
+ name: 'list_import_sets',
111
+ description: 'List Import Sets with optional filter by state or staging table',
112
+ inputSchema: {
113
+ type: 'object',
114
+ properties: {
115
+ state: { type: 'string', description: 'Filter by state: loaded, partial, transform_failed, complete' },
116
+ query: { type: 'string', description: 'Additional encoded query string' },
117
+ limit: { type: 'number', description: 'Max records to return (default 25)' },
118
+ },
119
+ required: [],
120
+ },
121
+ },
122
+ {
123
+ name: 'get_import_set',
124
+ description: 'Get details of a specific Import Set including row count and transform status',
125
+ inputSchema: {
126
+ type: 'object',
127
+ properties: {
128
+ sys_id: { type: 'string', description: 'Import Set sys_id' },
129
+ },
130
+ required: ['sys_id'],
131
+ },
132
+ },
133
+ {
134
+ name: 'create_import_set_row',
135
+ description: 'Insert a row into an Import Set staging table for later transformation (requires WRITE_ENABLED=true)',
136
+ inputSchema: {
137
+ type: 'object',
138
+ properties: {
139
+ staging_table: {
140
+ type: 'string',
141
+ description: 'Staging table name (e.g. "u_import_incident"). Must already exist.',
142
+ },
143
+ data: { type: 'object', description: 'Key-value pairs for the staging table row' },
144
+ },
145
+ required: ['staging_table', 'data'],
146
+ },
147
+ },
148
+ {
149
+ name: 'list_data_sources',
150
+ description: 'List Import Set data source definitions (file/JDBC/REST loaders)',
151
+ inputSchema: {
152
+ type: 'object',
153
+ properties: {
154
+ query: { type: 'string', description: 'Search by name' },
155
+ type: { type: 'string', description: 'Filter by type: file, jdbc, ldap, rest' },
156
+ limit: { type: 'number', description: 'Max records to return (default 25)' },
157
+ },
158
+ required: [],
159
+ },
160
+ },
161
+ // ── Event Registry & Management ─────────────────────────────────────────
162
+ {
163
+ name: 'list_event_registry',
164
+ description: 'List registered event definitions in the ServiceNow event registry',
165
+ inputSchema: {
166
+ type: 'object',
167
+ properties: {
168
+ query: { type: 'string', description: 'Search events by name or description' },
169
+ limit: { type: 'number', description: 'Max records to return (default 50)' },
170
+ },
171
+ required: [],
172
+ },
173
+ },
174
+ {
175
+ name: 'get_event_registry_entry',
176
+ description: 'Get details of a specific registered event definition',
177
+ inputSchema: {
178
+ type: 'object',
179
+ properties: {
180
+ name_or_sysid: { type: 'string', description: 'Event name (e.g. "incident.created") or sys_id' },
181
+ },
182
+ required: ['name_or_sysid'],
183
+ },
184
+ },
185
+ {
186
+ name: 'register_event',
187
+ description: 'Register a new custom event in the event registry (requires SCRIPTING_ENABLED=true)',
188
+ inputSchema: {
189
+ type: 'object',
190
+ properties: {
191
+ name: { type: 'string', description: 'Unique event name (e.g. "my_app.record_created")' },
192
+ description: { type: 'string', description: 'Description of when this event fires' },
193
+ table: { type: 'string', description: 'Table that fires this event (e.g. "incident")' },
194
+ },
195
+ required: ['name', 'table'],
196
+ },
197
+ },
198
+ {
199
+ name: 'fire_event',
200
+ description: 'Fire a custom ServiceNow event for a specific record (requires WRITE_ENABLED=true)',
201
+ inputSchema: {
202
+ type: 'object',
203
+ properties: {
204
+ event_name: { type: 'string', description: 'Event name to fire (must be registered)' },
205
+ table: { type: 'string', description: 'Table name of the target record' },
206
+ record_sys_id: { type: 'string', description: 'sys_id of the record to fire the event on' },
207
+ parm1: { type: 'string', description: 'Optional first parameter passed to event handlers' },
208
+ parm2: { type: 'string', description: 'Optional second parameter passed to event handlers' },
209
+ },
210
+ required: ['event_name', 'table', 'record_sys_id'],
211
+ },
212
+ },
213
+ {
214
+ name: 'list_event_log',
215
+ description: 'List recent event log entries (fired events and their processing status)',
216
+ inputSchema: {
217
+ type: 'object',
218
+ properties: {
219
+ event_name: { type: 'string', description: 'Filter by event name' },
220
+ state: {
221
+ type: 'string',
222
+ description: 'Filter by state: ready, processing, processed, error, transferred',
223
+ },
224
+ limit: { type: 'number', description: 'Max records to return (default 50)' },
225
+ },
226
+ required: [],
227
+ },
228
+ },
229
+ // ── OAuth & Credentials ─────────────────────────────────────────────────
230
+ {
231
+ name: 'list_oauth_applications',
232
+ description: 'List OAuth application registry entries (client applications that can authenticate)',
233
+ inputSchema: {
234
+ type: 'object',
235
+ properties: {
236
+ query: { type: 'string', description: 'Search by name or client ID' },
237
+ limit: { type: 'number', description: 'Max records to return (default 25)' },
238
+ },
239
+ required: [],
240
+ },
241
+ },
242
+ {
243
+ name: 'list_credential_aliases',
244
+ description: 'List connection and credential aliases used by integrations',
245
+ inputSchema: {
246
+ type: 'object',
247
+ properties: {
248
+ query: { type: 'string', description: 'Search by name' },
249
+ type: { type: 'string', description: 'Filter by type: basic, oauth2, api_key, certificate' },
250
+ limit: { type: 'number', description: 'Max records to return (default 25)' },
251
+ },
252
+ required: [],
253
+ },
254
+ },
255
+ ];
256
+ }
257
+ export async function executeIntegrationToolCall(client, name, args) {
258
+ switch (name) {
259
+ // ── Outbound REST Messages ───────────────────────────────────────────────
260
+ case 'list_rest_messages': {
261
+ const parts = [];
262
+ if (args.query)
263
+ parts.push(`nameCONTAINS${args.query}^ORdescriptionCONTAINS${args.query}`);
264
+ return await client.queryRecords({
265
+ table: 'sys_rest_message',
266
+ query: parts.join('^') || undefined,
267
+ limit: args.limit ?? 25,
268
+ fields: 'sys_id,name,endpoint,description,authentication_type,sys_updated_on',
269
+ });
270
+ }
271
+ case 'get_rest_message': {
272
+ if (!args.sys_id_or_name)
273
+ throw new ServiceNowError('sys_id_or_name is required', 'INVALID_REQUEST');
274
+ if (/^[0-9a-f]{32}$/i.test(args.sys_id_or_name)) {
275
+ return await client.getRecord('sys_rest_message', args.sys_id_or_name);
276
+ }
277
+ const resp = await client.queryRecords({
278
+ table: 'sys_rest_message',
279
+ query: `name=${args.sys_id_or_name}`,
280
+ limit: 1,
281
+ });
282
+ if (resp.count === 0)
283
+ throw new ServiceNowError(`REST Message not found: ${args.sys_id_or_name}`, 'NOT_FOUND');
284
+ return resp.records[0];
285
+ }
286
+ case 'list_rest_message_functions': {
287
+ if (!args.rest_message_sys_id)
288
+ throw new ServiceNowError('rest_message_sys_id is required', 'INVALID_REQUEST');
289
+ return await client.queryRecords({
290
+ table: 'sys_rest_message_fn',
291
+ query: `rest_message=${args.rest_message_sys_id}`,
292
+ limit: args.limit ?? 25,
293
+ fields: 'sys_id,name,http_method,relative_path,rest_message,sys_updated_on',
294
+ });
295
+ }
296
+ case 'create_rest_message': {
297
+ requireWrite();
298
+ if (!args.name || !args.endpoint)
299
+ throw new ServiceNowError('name and endpoint are required', 'INVALID_REQUEST');
300
+ const data = {
301
+ name: args.name,
302
+ endpoint: args.endpoint,
303
+ description: args.description || '',
304
+ authentication_type: args.authentication_type || 'no_authentication',
305
+ };
306
+ if (args.use_mutual_auth !== undefined)
307
+ data.use_mutual_auth = args.use_mutual_auth;
308
+ const result = await client.createRecord('sys_rest_message', data);
309
+ return { ...result, summary: `Created REST Message "${args.name}"` };
310
+ }
311
+ // ── Transform Maps ──────────────────────────────────────────────────────
312
+ case 'list_transform_maps': {
313
+ const parts = [];
314
+ if (args.target_table)
315
+ parts.push(`target_table=${args.target_table}`);
316
+ if (args.query)
317
+ parts.push(`nameCONTAINS${args.query}^ORtarget_tableCONTAINS${args.query}`);
318
+ return await client.queryRecords({
319
+ table: 'sys_transform_map',
320
+ query: parts.join('^') || undefined,
321
+ limit: args.limit ?? 25,
322
+ fields: 'sys_id,name,target_table,source_table,active,sys_updated_on',
323
+ });
324
+ }
325
+ case 'get_transform_map': {
326
+ if (!args.sys_id_or_name)
327
+ throw new ServiceNowError('sys_id_or_name is required', 'INVALID_REQUEST');
328
+ if (/^[0-9a-f]{32}$/i.test(args.sys_id_or_name)) {
329
+ return await client.getRecord('sys_transform_map', args.sys_id_or_name);
330
+ }
331
+ const resp = await client.queryRecords({
332
+ table: 'sys_transform_map',
333
+ query: `name=${args.sys_id_or_name}`,
334
+ limit: 1,
335
+ });
336
+ if (resp.count === 0)
337
+ throw new ServiceNowError(`Transform Map not found: ${args.sys_id_or_name}`, 'NOT_FOUND');
338
+ return resp.records[0];
339
+ }
340
+ case 'run_transform_map': {
341
+ requireWrite();
342
+ if (!args.transform_map_sys_id || !args.import_set_sys_id) {
343
+ throw new ServiceNowError('transform_map_sys_id and import_set_sys_id are required', 'INVALID_REQUEST');
344
+ }
345
+ // Trigger transform via Scripted REST — create a sys_import_set_run record
346
+ const data = {
347
+ import_set: args.import_set_sys_id,
348
+ transform_map: args.transform_map_sys_id,
349
+ };
350
+ const result = await client.createRecord('sys_import_set_run', data);
351
+ return {
352
+ ...result,
353
+ summary: `Triggered Transform Map ${args.transform_map_sys_id} on Import Set ${args.import_set_sys_id}`,
354
+ };
355
+ }
356
+ case 'list_transform_field_maps': {
357
+ if (!args.transform_map_sys_id)
358
+ throw new ServiceNowError('transform_map_sys_id is required', 'INVALID_REQUEST');
359
+ return await client.queryRecords({
360
+ table: 'sys_transform_entry',
361
+ query: `map=${args.transform_map_sys_id}`,
362
+ limit: args.limit ?? 50,
363
+ fields: 'sys_id,map,source_field,target_field,coalesce,use_source_script,sys_updated_on',
364
+ });
365
+ }
366
+ // ── Import Sets ─────────────────────────────────────────────────────────
367
+ case 'list_import_sets': {
368
+ const parts = [];
369
+ if (args.state)
370
+ parts.push(`state=${args.state}`);
371
+ if (args.query)
372
+ parts.push(args.query);
373
+ return await client.queryRecords({
374
+ table: 'sys_import_set',
375
+ query: parts.join('^') || undefined,
376
+ limit: args.limit ?? 25,
377
+ fields: 'sys_id,label,state,table_name,import_count,error_count,sys_created_on',
378
+ });
379
+ }
380
+ case 'get_import_set': {
381
+ if (!args.sys_id)
382
+ throw new ServiceNowError('sys_id is required', 'INVALID_REQUEST');
383
+ return await client.getRecord('sys_import_set', args.sys_id);
384
+ }
385
+ case 'create_import_set_row': {
386
+ requireWrite();
387
+ if (!args.staging_table || !args.data) {
388
+ throw new ServiceNowError('staging_table and data are required', 'INVALID_REQUEST');
389
+ }
390
+ const result = await client.createRecord(args.staging_table, args.data);
391
+ return { ...result, summary: `Inserted row into staging table "${args.staging_table}"` };
392
+ }
393
+ case 'list_data_sources': {
394
+ const parts = [];
395
+ if (args.type)
396
+ parts.push(`type=${args.type}`);
397
+ if (args.query)
398
+ parts.push(`nameCONTAINS${args.query}`);
399
+ return await client.queryRecords({
400
+ table: 'sys_data_source',
401
+ query: parts.join('^') || undefined,
402
+ limit: args.limit ?? 25,
403
+ fields: 'sys_id,name,type,format,import_set_table_name,sys_updated_on',
404
+ });
405
+ }
406
+ // ── Event Registry ──────────────────────────────────────────────────────
407
+ case 'list_event_registry': {
408
+ const parts = [];
409
+ if (args.query)
410
+ parts.push(`nameCONTAINS${args.query}^ORdescriptionCONTAINS${args.query}`);
411
+ return await client.queryRecords({
412
+ table: 'sysevent_register',
413
+ query: parts.join('^') || undefined,
414
+ limit: args.limit ?? 50,
415
+ fields: 'sys_id,name,table,description,sys_updated_on',
416
+ });
417
+ }
418
+ case 'get_event_registry_entry': {
419
+ if (!args.name_or_sysid)
420
+ throw new ServiceNowError('name_or_sysid is required', 'INVALID_REQUEST');
421
+ if (/^[0-9a-f]{32}$/i.test(args.name_or_sysid)) {
422
+ return await client.getRecord('sysevent_register', args.name_or_sysid);
423
+ }
424
+ const resp = await client.queryRecords({
425
+ table: 'sysevent_register',
426
+ query: `name=${args.name_or_sysid}`,
427
+ limit: 1,
428
+ });
429
+ if (resp.count === 0) {
430
+ throw new ServiceNowError(`Event registry entry not found: ${args.name_or_sysid}`, 'NOT_FOUND');
431
+ }
432
+ return resp.records[0];
433
+ }
434
+ case 'register_event': {
435
+ requireScripting();
436
+ if (!args.name || !args.table)
437
+ throw new ServiceNowError('name and table are required', 'INVALID_REQUEST');
438
+ const data = {
439
+ name: args.name,
440
+ table: args.table,
441
+ description: args.description || '',
442
+ };
443
+ const result = await client.createRecord('sysevent_register', data);
444
+ return { ...result, summary: `Registered event "${args.name}" for table "${args.table}"` };
445
+ }
446
+ case 'fire_event': {
447
+ requireWrite();
448
+ if (!args.event_name || !args.table || !args.record_sys_id) {
449
+ throw new ServiceNowError('event_name, table, and record_sys_id are required', 'INVALID_REQUEST');
450
+ }
451
+ // Fire via sys_event table insert
452
+ const data = {
453
+ name: args.event_name,
454
+ table: args.table,
455
+ instance: args.record_sys_id,
456
+ };
457
+ if (args.parm1)
458
+ data.parm1 = args.parm1;
459
+ if (args.parm2)
460
+ data.parm2 = args.parm2;
461
+ const result = await client.createRecord('sysevent', data);
462
+ return {
463
+ ...result,
464
+ summary: `Fired event "${args.event_name}" on ${args.table}:${args.record_sys_id}`,
465
+ };
466
+ }
467
+ case 'list_event_log': {
468
+ const parts = [];
469
+ if (args.event_name)
470
+ parts.push(`nameCONTAINS${args.event_name}`);
471
+ if (args.state)
472
+ parts.push(`state=${args.state}`);
473
+ return await client.queryRecords({
474
+ table: 'sysevent',
475
+ query: parts.join('^') || undefined,
476
+ limit: args.limit ?? 50,
477
+ orderBy: '-sys_created_on',
478
+ fields: 'sys_id,name,table,instance,state,parm1,parm2,sys_created_on',
479
+ });
480
+ }
481
+ // ── OAuth ────────────────────────────────────────────────────────────────
482
+ case 'list_oauth_applications': {
483
+ const parts = [];
484
+ if (args.query)
485
+ parts.push(`nameCONTAINS${args.query}^ORclient_idCONTAINS${args.query}`);
486
+ return await client.queryRecords({
487
+ table: 'oauth_entity',
488
+ query: parts.join('^') || undefined,
489
+ limit: args.limit ?? 25,
490
+ fields: 'sys_id,name,client_id,type,active,sys_updated_on',
491
+ });
492
+ }
493
+ case 'list_credential_aliases': {
494
+ const parts = [];
495
+ if (args.type)
496
+ parts.push(`type=${args.type}`);
497
+ if (args.query)
498
+ parts.push(`nameCONTAINS${args.query}`);
499
+ return await client.queryRecords({
500
+ table: 'sys_alias',
501
+ query: parts.join('^') || undefined,
502
+ limit: args.limit ?? 25,
503
+ fields: 'sys_id,name,type,description,sys_updated_on',
504
+ });
505
+ }
506
+ default:
507
+ return null;
508
+ }
509
+ }
510
+ //# sourceMappingURL=integration.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"integration.js","sourceRoot":"","sources":["../../src/tools/integration.ts"],"names":[],"mappings":"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"}