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,300 @@
1
+ /**
2
+ * Now Assist & ServiceNow AI tools — latest release.
3
+ * All tools require NOW_ASSIST_ENABLED=true (Tier AI).
4
+ *
5
+ * ServiceNow APIs used:
6
+ * - Now Assist Skills: POST /api/sn_assist/skill/invoke
7
+ * - Agentic Playbooks: POST /api/sn_assist/playbook/trigger
8
+ * - AI Search: GET /api/now/ai_search/search
9
+ * - Predictive Intel.: POST /api/sn_ml/solution/{id}/predict (LightGBM in latest release)
10
+ * - NLQ: POST /api/sn_nl_text_to_value/text_query
11
+ * - Virtual Agent: GET /api/sn_cs/topic (streaming in latest release)
12
+ * - MS Copilot 365: GET /api/sn_assist/copilot/topics
13
+ */
14
+ import type { ServiceNowClient } from '../servicenow/client.js';
15
+ export declare function getNowAssistToolDefinitions(): ({
16
+ name: string;
17
+ description: string;
18
+ inputSchema: {
19
+ type: string;
20
+ properties: {
21
+ question: {
22
+ type: string;
23
+ description: string;
24
+ };
25
+ table: {
26
+ type: string;
27
+ description: string;
28
+ };
29
+ limit: {
30
+ type: string;
31
+ description: string;
32
+ };
33
+ query?: undefined;
34
+ sources?: undefined;
35
+ sys_id?: undefined;
36
+ incident_sys_id?: undefined;
37
+ short_description?: undefined;
38
+ description?: undefined;
39
+ active?: undefined;
40
+ category?: undefined;
41
+ playbook_sys_id?: undefined;
42
+ context?: undefined;
43
+ };
44
+ required: string[];
45
+ };
46
+ } | {
47
+ name: string;
48
+ description: string;
49
+ inputSchema: {
50
+ type: string;
51
+ properties: {
52
+ query: {
53
+ type: string;
54
+ description: string;
55
+ };
56
+ sources: {
57
+ type: string;
58
+ items: {
59
+ type: string;
60
+ };
61
+ description: string;
62
+ };
63
+ limit: {
64
+ type: string;
65
+ description: string;
66
+ };
67
+ question?: undefined;
68
+ table?: undefined;
69
+ sys_id?: undefined;
70
+ incident_sys_id?: undefined;
71
+ short_description?: undefined;
72
+ description?: undefined;
73
+ active?: undefined;
74
+ category?: undefined;
75
+ playbook_sys_id?: undefined;
76
+ context?: undefined;
77
+ };
78
+ required: string[];
79
+ };
80
+ } | {
81
+ name: string;
82
+ description: string;
83
+ inputSchema: {
84
+ type: string;
85
+ properties: {
86
+ table: {
87
+ type: string;
88
+ description: string;
89
+ };
90
+ sys_id: {
91
+ type: string;
92
+ description: string;
93
+ };
94
+ question?: undefined;
95
+ limit?: undefined;
96
+ query?: undefined;
97
+ sources?: undefined;
98
+ incident_sys_id?: undefined;
99
+ short_description?: undefined;
100
+ description?: undefined;
101
+ active?: undefined;
102
+ category?: undefined;
103
+ playbook_sys_id?: undefined;
104
+ context?: undefined;
105
+ };
106
+ required: string[];
107
+ };
108
+ } | {
109
+ name: string;
110
+ description: string;
111
+ inputSchema: {
112
+ type: string;
113
+ properties: {
114
+ incident_sys_id: {
115
+ type: string;
116
+ description: string;
117
+ };
118
+ question?: undefined;
119
+ table?: undefined;
120
+ limit?: undefined;
121
+ query?: undefined;
122
+ sources?: undefined;
123
+ sys_id?: undefined;
124
+ short_description?: undefined;
125
+ description?: undefined;
126
+ active?: undefined;
127
+ category?: undefined;
128
+ playbook_sys_id?: undefined;
129
+ context?: undefined;
130
+ };
131
+ required: string[];
132
+ };
133
+ } | {
134
+ name: string;
135
+ description: string;
136
+ inputSchema: {
137
+ type: string;
138
+ properties: {
139
+ short_description: {
140
+ type: string;
141
+ description: string;
142
+ };
143
+ description: {
144
+ type: string;
145
+ description: string;
146
+ };
147
+ question?: undefined;
148
+ table?: undefined;
149
+ limit?: undefined;
150
+ query?: undefined;
151
+ sources?: undefined;
152
+ sys_id?: undefined;
153
+ incident_sys_id?: undefined;
154
+ active?: undefined;
155
+ category?: undefined;
156
+ playbook_sys_id?: undefined;
157
+ context?: undefined;
158
+ };
159
+ required: string[];
160
+ };
161
+ } | {
162
+ name: string;
163
+ description: string;
164
+ inputSchema: {
165
+ type: string;
166
+ properties: {
167
+ active: {
168
+ type: string;
169
+ description: string;
170
+ };
171
+ category: {
172
+ type: string;
173
+ description: string;
174
+ };
175
+ limit: {
176
+ type: string;
177
+ description: string;
178
+ };
179
+ question?: undefined;
180
+ table?: undefined;
181
+ query?: undefined;
182
+ sources?: undefined;
183
+ sys_id?: undefined;
184
+ incident_sys_id?: undefined;
185
+ short_description?: undefined;
186
+ description?: undefined;
187
+ playbook_sys_id?: undefined;
188
+ context?: undefined;
189
+ };
190
+ required: never[];
191
+ };
192
+ } | {
193
+ name: string;
194
+ description: string;
195
+ inputSchema: {
196
+ type: string;
197
+ properties: {
198
+ playbook_sys_id: {
199
+ type: string;
200
+ description: string;
201
+ };
202
+ context: {
203
+ type: string;
204
+ description: string;
205
+ };
206
+ question?: undefined;
207
+ table?: undefined;
208
+ limit?: undefined;
209
+ query?: undefined;
210
+ sources?: undefined;
211
+ sys_id?: undefined;
212
+ incident_sys_id?: undefined;
213
+ short_description?: undefined;
214
+ description?: undefined;
215
+ active?: undefined;
216
+ category?: undefined;
217
+ };
218
+ required: string[];
219
+ };
220
+ } | {
221
+ name: string;
222
+ description: string;
223
+ inputSchema: {
224
+ type: string;
225
+ properties: {
226
+ limit: {
227
+ type: string;
228
+ description: string;
229
+ };
230
+ question?: undefined;
231
+ table?: undefined;
232
+ query?: undefined;
233
+ sources?: undefined;
234
+ sys_id?: undefined;
235
+ incident_sys_id?: undefined;
236
+ short_description?: undefined;
237
+ description?: undefined;
238
+ active?: undefined;
239
+ category?: undefined;
240
+ playbook_sys_id?: undefined;
241
+ context?: undefined;
242
+ };
243
+ required: never[];
244
+ };
245
+ } | {
246
+ name: string;
247
+ description: string;
248
+ inputSchema: {
249
+ type: string;
250
+ properties: {
251
+ table: {
252
+ type: string;
253
+ description: string;
254
+ };
255
+ sys_id: {
256
+ type: string;
257
+ description: string;
258
+ };
259
+ context: {
260
+ type: string;
261
+ description: string;
262
+ };
263
+ question?: undefined;
264
+ limit?: undefined;
265
+ query?: undefined;
266
+ sources?: undefined;
267
+ incident_sys_id?: undefined;
268
+ short_description?: undefined;
269
+ description?: undefined;
270
+ active?: undefined;
271
+ category?: undefined;
272
+ playbook_sys_id?: undefined;
273
+ };
274
+ required: string[];
275
+ };
276
+ } | {
277
+ name: string;
278
+ description: string;
279
+ inputSchema: {
280
+ type: string;
281
+ properties: {
282
+ question?: undefined;
283
+ table?: undefined;
284
+ limit?: undefined;
285
+ query?: undefined;
286
+ sources?: undefined;
287
+ sys_id?: undefined;
288
+ incident_sys_id?: undefined;
289
+ short_description?: undefined;
290
+ description?: undefined;
291
+ active?: undefined;
292
+ category?: undefined;
293
+ playbook_sys_id?: undefined;
294
+ context?: undefined;
295
+ };
296
+ required: never[];
297
+ };
298
+ })[];
299
+ export declare function executeNowAssistToolCall(client: ServiceNowClient, name: string, args: Record<string, any>): Promise<any>;
300
+ //# sourceMappingURL=now-assist.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"now-assist.d.ts","sourceRoot":"","sources":["../../src/tools/now-assist.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAIhE,wBAAgB,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA0H1C;AAED,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACxB,OAAO,CAAC,GAAG,CAAC,CA2Fd"}
@@ -0,0 +1,227 @@
1
+ import { ServiceNowError } from '../utils/errors.js';
2
+ import { requireNowAssist } from '../utils/permissions.js';
3
+ export function getNowAssistToolDefinitions() {
4
+ return [
5
+ {
6
+ name: 'nlq_query',
7
+ description: 'Ask a natural language question and get structured ServiceNow data (ServiceNow NLQ API)',
8
+ inputSchema: {
9
+ type: 'object',
10
+ properties: {
11
+ question: { type: 'string', description: 'Plain English question (e.g., "How many P1 incidents were opened this week?")' },
12
+ table: { type: 'string', description: 'Optional target table hint' },
13
+ limit: { type: 'number', description: 'Max results (default: 10)' },
14
+ },
15
+ required: ['question'],
16
+ },
17
+ },
18
+ {
19
+ name: 'ai_search',
20
+ description: 'Semantic AI-powered search across KB, catalog, incidents (ServiceNow AI Search)',
21
+ inputSchema: {
22
+ type: 'object',
23
+ properties: {
24
+ query: { type: 'string', description: 'Natural language search query' },
25
+ sources: { type: 'array', items: { type: 'string' }, description: 'Sources to search: ["kb", "catalog", "incident"] (default: all)' },
26
+ limit: { type: 'number', description: 'Max results (default: 10)' },
27
+ },
28
+ required: ['query'],
29
+ },
30
+ },
31
+ {
32
+ name: 'generate_summary',
33
+ description: 'Generate an AI summary of any record using Now Assist (latest release: sn_assist/skill/summarize)',
34
+ inputSchema: {
35
+ type: 'object',
36
+ properties: {
37
+ table: { type: 'string', description: 'Table name (e.g., "incident", "change_request")' },
38
+ sys_id: { type: 'string', description: 'System ID of the record' },
39
+ },
40
+ required: ['table', 'sys_id'],
41
+ },
42
+ },
43
+ {
44
+ name: 'suggest_resolution',
45
+ description: 'Get AI-powered resolution suggestion for an incident based on similar past incidents',
46
+ inputSchema: {
47
+ type: 'object',
48
+ properties: {
49
+ incident_sys_id: { type: 'string', description: 'System ID of the incident' },
50
+ },
51
+ required: ['incident_sys_id'],
52
+ },
53
+ },
54
+ {
55
+ name: 'categorize_incident',
56
+ description: 'Use Predictive Intelligence to predict category, assignment group, and priority (latest release: LightGBM algorithm)',
57
+ inputSchema: {
58
+ type: 'object',
59
+ properties: {
60
+ short_description: { type: 'string', description: 'Incident short description' },
61
+ description: { type: 'string', description: 'Optional full description for better accuracy' },
62
+ },
63
+ required: ['short_description'],
64
+ },
65
+ },
66
+ {
67
+ name: 'get_virtual_agent_topics',
68
+ description: 'List Virtual Agent topics available in the instance (latest release: streaming VA API)',
69
+ inputSchema: {
70
+ type: 'object',
71
+ properties: {
72
+ active: { type: 'boolean', description: 'Filter to active topics only' },
73
+ category: { type: 'string', description: 'Filter by topic category' },
74
+ limit: { type: 'number', description: 'Max results (default: 20)' },
75
+ },
76
+ required: [],
77
+ },
78
+ },
79
+ {
80
+ name: 'trigger_agentic_playbook',
81
+ description: 'Invoke an Agentic Playbook — context-aware AI agents that complete tasks autonomously ',
82
+ inputSchema: {
83
+ type: 'object',
84
+ properties: {
85
+ playbook_sys_id: { type: 'string', description: 'System ID of the Agentic Playbook' },
86
+ context: { type: 'object', description: 'Context key-value pairs to pass to the playbook' },
87
+ },
88
+ required: ['playbook_sys_id'],
89
+ },
90
+ },
91
+ {
92
+ name: 'get_ms_copilot_topics',
93
+ description: 'List VA topics exposed to Microsoft Copilot 365 via Custom Engine Agent integration ',
94
+ inputSchema: {
95
+ type: 'object',
96
+ properties: {
97
+ limit: { type: 'number', description: 'Max results (default: 20)' },
98
+ },
99
+ required: [],
100
+ },
101
+ },
102
+ {
103
+ name: 'generate_work_notes',
104
+ description: 'Generate AI-drafted work notes for a record based on its current context',
105
+ inputSchema: {
106
+ type: 'object',
107
+ properties: {
108
+ table: { type: 'string', description: 'Table name' },
109
+ sys_id: { type: 'string', description: 'System ID of the record' },
110
+ context: { type: 'string', description: 'Additional context to include in the draft' },
111
+ },
112
+ required: ['table', 'sys_id'],
113
+ },
114
+ },
115
+ {
116
+ name: 'get_pi_models',
117
+ description: 'List available Predictive Intelligence solutions (classification/similarity models)',
118
+ inputSchema: {
119
+ type: 'object',
120
+ properties: {},
121
+ required: [],
122
+ },
123
+ },
124
+ ];
125
+ }
126
+ export async function executeNowAssistToolCall(client, name, args) {
127
+ requireNowAssist();
128
+ switch (name) {
129
+ case 'nlq_query': {
130
+ if (!args.question)
131
+ throw new ServiceNowError('question is required', 'INVALID_REQUEST');
132
+ // ServiceNow NLQ API: POST /api/sn_nl_text_to_value/text_query
133
+ const result = await client.callNowAssist('/api/sn_nl_text_to_value/text_query', {
134
+ question: args.question,
135
+ table: args.table,
136
+ limit: args.limit || 10,
137
+ });
138
+ return { question: args.question, ...result };
139
+ }
140
+ case 'ai_search': {
141
+ if (!args.query)
142
+ throw new ServiceNowError('query is required', 'INVALID_REQUEST');
143
+ // ServiceNow AI Search API: GET /api/now/ai_search/search
144
+ const params = new URLSearchParams({ q: args.query, limit: String(args.limit || 10) });
145
+ if (args.sources)
146
+ params.set('sources', args.sources.join(','));
147
+ const result = await client.callNowAssist(`/api/now/ai_search/search?${params.toString()}`, {});
148
+ return { query: args.query, ...result };
149
+ }
150
+ case 'generate_summary': {
151
+ if (!args.table || !args.sys_id)
152
+ throw new ServiceNowError('table and sys_id are required', 'INVALID_REQUEST');
153
+ // Now Assist Skill: POST /api/sn_assist/skill/invoke
154
+ const result = await client.callNowAssist('/api/sn_assist/skill/invoke', {
155
+ skill: 'summarize',
156
+ input: { table: args.table, sys_id: args.sys_id },
157
+ });
158
+ return { table: args.table, sys_id: args.sys_id, summary: result?.output?.summary || result };
159
+ }
160
+ case 'suggest_resolution': {
161
+ if (!args.incident_sys_id)
162
+ throw new ServiceNowError('incident_sys_id is required', 'INVALID_REQUEST');
163
+ const result = await client.callNowAssist('/api/sn_assist/skill/invoke', {
164
+ skill: 'resolution_suggestion',
165
+ input: { table: 'incident', sys_id: args.incident_sys_id },
166
+ });
167
+ return { incident_sys_id: args.incident_sys_id, suggestion: result?.output || result };
168
+ }
169
+ case 'categorize_incident': {
170
+ if (!args.short_description)
171
+ throw new ServiceNowError('short_description is required', 'INVALID_REQUEST');
172
+ // Predictive Intelligence ML API: POST /api/sn_ml/solution/{id}/predict
173
+ // Get available PI solutions first then predict
174
+ const piResp = await client.queryRecords({ table: 'ml_solution', query: 'active=true^table_name=incident', limit: 1, fields: 'sys_id,name' });
175
+ if (piResp.count === 0) {
176
+ return { message: 'No active Predictive Intelligence solution found for incident table. Enable PI plugin and train a model.' };
177
+ }
178
+ const solutionId = String(piResp.records[0].sys_id);
179
+ const result = await client.callNowAssist(`/api/sn_ml/solution/${solutionId}/predict`, {
180
+ short_description: args.short_description,
181
+ description: args.description,
182
+ });
183
+ return { short_description: args.short_description, prediction: result, algorithm_note: 'LightGBM available in latest release' };
184
+ }
185
+ case 'get_virtual_agent_topics': {
186
+ // VA API: GET /api/sn_cs/topic (streaming support added)
187
+ let query = '';
188
+ if (args.active !== false)
189
+ query = 'active=true';
190
+ if (args.category)
191
+ query = query ? `${query}^category.title=${args.category}` : `category.title=${args.category}`;
192
+ const resp = await client.queryRecords({ table: 'sys_cs_topic', query: query || undefined, limit: args.limit || 20, fields: 'sys_id,name,active,category,description' });
193
+ return { count: resp.count, topics: resp.records, note: 'ServiceNow VA supports streaming responses and Google Chat v2.0' };
194
+ }
195
+ case 'trigger_agentic_playbook': {
196
+ if (!args.playbook_sys_id)
197
+ throw new ServiceNowError('playbook_sys_id is required', 'INVALID_REQUEST');
198
+ // Agentic Playbooks API
199
+ const result = await client.callNowAssist('/api/sn_assist/playbook/trigger', {
200
+ playbook_sys_id: args.playbook_sys_id,
201
+ context: args.context || {},
202
+ });
203
+ return { playbook_sys_id: args.playbook_sys_id, result, note: 'Agentic Playbooks are a latest release feature' };
204
+ }
205
+ case 'get_ms_copilot_topics': {
206
+ // MS Copilot 365 Custom Engine Agent
207
+ const result = await client.callNowAssist('/api/sn_assist/copilot/topics', {});
208
+ return { topics: result, note: 'Microsoft Copilot 365 integration (Custom Engine Agent) is a latest release feature' };
209
+ }
210
+ case 'generate_work_notes': {
211
+ if (!args.table || !args.sys_id)
212
+ throw new ServiceNowError('table and sys_id are required', 'INVALID_REQUEST');
213
+ const result = await client.callNowAssist('/api/sn_assist/skill/invoke', {
214
+ skill: 'work_notes_draft',
215
+ input: { table: args.table, sys_id: args.sys_id, context: args.context },
216
+ });
217
+ return { table: args.table, sys_id: args.sys_id, draft: result?.output?.text || result };
218
+ }
219
+ case 'get_pi_models': {
220
+ const resp = await client.queryRecords({ table: 'ml_solution', query: 'active=true', limit: 20, fields: 'sys_id,name,table_name,type,active,sys_updated_on' });
221
+ return { count: resp.count, models: resp.records, note: 'Predictive Intelligence supports LightGBM, Feed Forward Neural Net, and XGBoost' };
222
+ }
223
+ default:
224
+ return null;
225
+ }
226
+ }
227
+ //# sourceMappingURL=now-assist.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"now-assist.js","sourceRoot":"","sources":["../../src/tools/now-assist.ts"],"names":[],"mappings":"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"}