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.
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,306 @@
1
+ import { ServiceNowError } from '../utils/errors.js';
2
+ import { requireWrite } from '../utils/permissions.js';
3
+ export function getItamToolDefinitions() {
4
+ return [
5
+ {
6
+ name: 'list_assets',
7
+ description: 'List IT assets with optional filtering by state, class, or assigned user',
8
+ inputSchema: {
9
+ type: 'object',
10
+ properties: {
11
+ asset_class: { type: 'string', description: 'Asset class: "alm_hardware", "alm_license", "alm_consumable"' },
12
+ state: { type: 'string', description: 'Asset state: "in_use", "in_stock", "retired", "missing"' },
13
+ assigned_to: { type: 'string', description: 'User sys_id to filter by assignee' },
14
+ location: { type: 'string', description: 'Location name or sys_id' },
15
+ query: { type: 'string', description: 'Additional encoded query' },
16
+ limit: { type: 'number', description: 'Max records (default 25)' },
17
+ },
18
+ required: [],
19
+ },
20
+ },
21
+ {
22
+ name: 'get_asset',
23
+ description: 'Get full details of an IT asset including financial and lifecycle data',
24
+ inputSchema: {
25
+ type: 'object',
26
+ properties: {
27
+ sys_id: { type: 'string', description: 'Asset sys_id' },
28
+ },
29
+ required: ['sys_id'],
30
+ },
31
+ },
32
+ {
33
+ name: 'create_asset',
34
+ description: 'Create a new IT asset record. **[Write]**',
35
+ inputSchema: {
36
+ type: 'object',
37
+ properties: {
38
+ display_name: { type: 'string', description: 'Asset display name' },
39
+ asset_tag: { type: 'string', description: 'Unique asset tag' },
40
+ model_category: { type: 'string', description: 'Category sys_id (Hardware, Software, etc.)' },
41
+ model: { type: 'string', description: 'Model sys_id' },
42
+ serial_number: { type: 'string', description: 'Serial number' },
43
+ assigned_to: { type: 'string', description: 'User sys_id' },
44
+ location: { type: 'string', description: 'Location sys_id' },
45
+ cost: { type: 'number', description: 'Purchase cost' },
46
+ cost_center: { type: 'string', description: 'Cost center sys_id' },
47
+ purchase_date: { type: 'string', description: 'Purchase date (YYYY-MM-DD)' },
48
+ },
49
+ required: ['display_name'],
50
+ },
51
+ },
52
+ {
53
+ name: 'update_asset',
54
+ description: 'Update an IT asset record. **[Write]**',
55
+ inputSchema: {
56
+ type: 'object',
57
+ properties: {
58
+ sys_id: { type: 'string', description: 'Asset sys_id' },
59
+ fields: { type: 'object', description: 'Fields to update' },
60
+ },
61
+ required: ['sys_id', 'fields'],
62
+ },
63
+ },
64
+ {
65
+ name: 'retire_asset',
66
+ description: 'Retire an IT asset (mark as disposed/retired). **[Write]**',
67
+ inputSchema: {
68
+ type: 'object',
69
+ properties: {
70
+ sys_id: { type: 'string', description: 'Asset sys_id' },
71
+ disposal_reason: { type: 'string', description: 'Reason for retirement' },
72
+ disposal_date: { type: 'string', description: 'Disposal date (YYYY-MM-DD)' },
73
+ },
74
+ required: ['sys_id'],
75
+ },
76
+ },
77
+ {
78
+ name: 'list_software_licenses',
79
+ description: 'List software license records with compliance status',
80
+ inputSchema: {
81
+ type: 'object',
82
+ properties: {
83
+ query: { type: 'string', description: 'Encoded query filter' },
84
+ limit: { type: 'number', description: 'Max records (default 25)' },
85
+ },
86
+ required: [],
87
+ },
88
+ },
89
+ {
90
+ name: 'get_license_compliance',
91
+ description: 'Get license compliance summary — purchased vs. installed vs. in use counts',
92
+ inputSchema: {
93
+ type: 'object',
94
+ properties: {
95
+ license_sys_id: { type: 'string', description: 'Software license sys_id (optional — omit for all)' },
96
+ },
97
+ required: [],
98
+ },
99
+ },
100
+ {
101
+ name: 'list_asset_contracts',
102
+ description: 'List asset maintenance and support contracts',
103
+ inputSchema: {
104
+ type: 'object',
105
+ properties: {
106
+ asset_sys_id: { type: 'string', description: 'Filter by linked asset' },
107
+ active: { type: 'boolean', description: 'Filter to active contracts (default true)' },
108
+ limit: { type: 'number', description: 'Max records (default 25)' },
109
+ },
110
+ required: [],
111
+ },
112
+ },
113
+ {
114
+ name: 'track_asset_lifecycle',
115
+ description: 'Track asset lifecycle events and stage transitions',
116
+ inputSchema: {
117
+ type: 'object',
118
+ properties: {
119
+ asset_id: { type: 'string', description: 'Asset tag or sys_id' },
120
+ new_stage: { type: 'string', description: 'Lifecycle stage: in_stock/in_use/in_maintenance/retired/disposed' },
121
+ notes: { type: 'string', description: 'Transition notes' },
122
+ },
123
+ required: ['asset_id', 'new_stage'],
124
+ },
125
+ },
126
+ {
127
+ name: 'get_license_optimization',
128
+ description: 'Analyze software license usage and recommend optimizations',
129
+ inputSchema: {
130
+ type: 'object',
131
+ properties: {
132
+ software_name: { type: 'string', description: 'Optional filter by software name' },
133
+ threshold_pct: { type: 'number', description: 'Usage threshold percentage (default: 80)' },
134
+ },
135
+ required: [],
136
+ },
137
+ },
138
+ ];
139
+ }
140
+ export async function executeItamToolCall(client, name, args) {
141
+ switch (name) {
142
+ case 'list_assets': {
143
+ let query = '';
144
+ if (args.state)
145
+ query = `install_status=${args.state}`;
146
+ if (args.assigned_to)
147
+ query = query ? `${query}^assigned_to=${args.assigned_to}` : `assigned_to=${args.assigned_to}`;
148
+ if (args.location)
149
+ query = query ? `${query}^locationLIKE${args.location}` : `locationLIKE${args.location}`;
150
+ if (args.query)
151
+ query = query ? `${query}^${args.query}` : args.query;
152
+ const table = args.asset_class || 'alm_asset';
153
+ const resp = await client.queryRecords({
154
+ table,
155
+ query: query || undefined,
156
+ limit: args.limit || 25,
157
+ fields: 'sys_id,display_name,asset_tag,serial_number,install_status,assigned_to,location,cost,purchase_date,sys_updated_on',
158
+ });
159
+ return { count: resp.count, assets: resp.records };
160
+ }
161
+ case 'get_asset': {
162
+ if (!args.sys_id)
163
+ throw new ServiceNowError('sys_id is required', 'INVALID_REQUEST');
164
+ const result = await client.getRecord('alm_asset', args.sys_id);
165
+ return result;
166
+ }
167
+ case 'create_asset': {
168
+ if (!args.display_name)
169
+ throw new ServiceNowError('display_name is required', 'INVALID_REQUEST');
170
+ requireWrite();
171
+ const payload = { display_name: args.display_name };
172
+ const fields = ['asset_tag', 'model_category', 'model', 'serial_number', 'assigned_to', 'location', 'cost', 'cost_center', 'purchase_date'];
173
+ for (const f of fields) {
174
+ if (args[f] !== undefined)
175
+ payload[f] = args[f];
176
+ }
177
+ const result = await client.createRecord('alm_asset', payload);
178
+ return { action: 'created', display_name: args.display_name, ...result };
179
+ }
180
+ case 'update_asset': {
181
+ if (!args.sys_id || !args.fields)
182
+ throw new ServiceNowError('sys_id and fields are required', 'INVALID_REQUEST');
183
+ requireWrite();
184
+ const result = await client.updateRecord('alm_asset', args.sys_id, args.fields);
185
+ return { action: 'updated', sys_id: args.sys_id, ...result };
186
+ }
187
+ case 'retire_asset': {
188
+ if (!args.sys_id)
189
+ throw new ServiceNowError('sys_id is required', 'INVALID_REQUEST');
190
+ requireWrite();
191
+ const payload = { install_status: 'retired' };
192
+ if (args.disposal_reason)
193
+ payload.disposal_reason = args.disposal_reason;
194
+ if (args.disposal_date)
195
+ payload.disposal_date = args.disposal_date;
196
+ const result = await client.updateRecord('alm_asset', args.sys_id, payload);
197
+ return { action: 'retired', sys_id: args.sys_id, ...result };
198
+ }
199
+ case 'list_software_licenses': {
200
+ const resp = await client.queryRecords({
201
+ table: 'alm_license',
202
+ query: args.query || undefined,
203
+ limit: args.limit || 25,
204
+ fields: 'sys_id,display_name,license_count,license_available,license_inuse,cost,product,vendor,expiry_date,sys_updated_on',
205
+ });
206
+ return { count: resp.count, licenses: resp.records };
207
+ }
208
+ case 'get_license_compliance': {
209
+ const query = args.license_sys_id ? `sys_id=${args.license_sys_id}` : undefined;
210
+ const resp = await client.queryRecords({
211
+ table: 'alm_license',
212
+ query,
213
+ limit: args.license_sys_id ? 1 : 100,
214
+ fields: 'sys_id,display_name,product,license_count,license_available,license_inuse,cost,expiry_date',
215
+ });
216
+ const summary = resp.records.map((r) => ({
217
+ license: r.display_name,
218
+ product: r.product,
219
+ purchased: r.license_count,
220
+ in_use: r.license_inuse,
221
+ available: r.license_available,
222
+ compliance: Number(r.license_inuse) <= Number(r.license_count) ? 'compliant' : 'over-licensed',
223
+ expires: r.expiry_date,
224
+ }));
225
+ return { count: resp.count, compliance_report: summary };
226
+ }
227
+ case 'list_asset_contracts': {
228
+ let query = args.active !== false ? 'active=true' : '';
229
+ if (args.asset_sys_id)
230
+ query = query ? `${query}^asset=${args.asset_sys_id}` : `asset=${args.asset_sys_id}`;
231
+ const resp = await client.queryRecords({
232
+ table: 'ast_contract',
233
+ query: query || undefined,
234
+ limit: args.limit || 25,
235
+ fields: 'sys_id,number,short_description,vendor,start_date,end_date,cost,active,sys_updated_on',
236
+ });
237
+ return { count: resp.count, contracts: resp.records };
238
+ }
239
+ case 'track_asset_lifecycle': {
240
+ if (!args.asset_id || !args.new_stage)
241
+ throw new ServiceNowError('asset_id and new_stage are required', 'INVALID_REQUEST');
242
+ requireWrite();
243
+ const stageMap = {
244
+ in_stock: '6', in_use: '1', in_maintenance: '7', retired: '8', disposed: '9',
245
+ };
246
+ let sysId = args.asset_id;
247
+ if (!/^[0-9a-f]{32}$/i.test(args.asset_id)) {
248
+ const resp = await client.queryRecords({ table: 'alm_asset', query: `asset_tag=${args.asset_id}^ORsys_id=${args.asset_id}`, limit: 1 });
249
+ if (resp.count === 0)
250
+ throw new ServiceNowError(`Asset not found: ${args.asset_id}`, 'NOT_FOUND');
251
+ sysId = resp.records[0].sys_id;
252
+ }
253
+ const result = await client.updateRecord('alm_asset', sysId, {
254
+ install_status: stageMap[args.new_stage] || args.new_stage,
255
+ work_notes: args.notes || '',
256
+ });
257
+ return { action: 'lifecycle_updated', sys_id: sysId, new_stage: args.new_stage, ...result };
258
+ }
259
+ case 'get_license_optimization': {
260
+ const threshold = args.threshold_pct || 80;
261
+ let query = '';
262
+ if (args.software_name)
263
+ query = `display_nameLIKE${args.software_name}`;
264
+ const resp = await client.queryRecords({
265
+ table: 'alm_license',
266
+ query: query || undefined,
267
+ limit: 100,
268
+ fields: 'sys_id,display_name,product,license_count,license_available,license_inuse,cost,expiry_date',
269
+ });
270
+ const recommendations = resp.records.map((r) => {
271
+ const total = Number(r.license_count) || 0;
272
+ const inUse = Number(r.license_inuse) || 0;
273
+ const available = Number(r.license_available) || 0;
274
+ const usagePct = total > 0 ? Math.round((inUse / total) * 100) : 0;
275
+ let recommendation = 'optimal';
276
+ if (usagePct < threshold)
277
+ recommendation = 'underutilized — consider reducing licenses';
278
+ if (inUse > total)
279
+ recommendation = 'over-allocated — purchase additional licenses';
280
+ return {
281
+ license: r.display_name,
282
+ product: r.product,
283
+ total,
284
+ in_use: inUse,
285
+ available,
286
+ usage_pct: usagePct,
287
+ cost: r.cost,
288
+ expires: r.expiry_date,
289
+ recommendation,
290
+ };
291
+ });
292
+ const underutilized = recommendations.filter((r) => r.recommendation.startsWith('underutilized'));
293
+ const overAllocated = recommendations.filter((r) => r.recommendation.startsWith('over-allocated'));
294
+ return {
295
+ total_licenses: resp.count,
296
+ threshold_pct: threshold,
297
+ underutilized_count: underutilized.length,
298
+ over_allocated_count: overAllocated.length,
299
+ recommendations,
300
+ };
301
+ }
302
+ default:
303
+ return null;
304
+ }
305
+ }
306
+ //# sourceMappingURL=itam.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"itam.js","sourceRoot":"","sources":["../../src/tools/itam.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,187 @@
1
+ /**
2
+ * Knowledge Base tools.
3
+ * Read tools: Tier 0. Write tools: Tier 1 (WRITE_ENABLED=true).
4
+ */
5
+ import type { ServiceNowClient } from '../servicenow/client.js';
6
+ export declare function getKnowledgeToolDefinitions(): ({
7
+ name: string;
8
+ description: string;
9
+ inputSchema: {
10
+ type: string;
11
+ properties: {
12
+ limit: {
13
+ type: string;
14
+ description: string;
15
+ };
16
+ query?: undefined;
17
+ knowledge_base?: undefined;
18
+ number_or_sysid?: undefined;
19
+ short_description?: undefined;
20
+ text?: undefined;
21
+ knowledge_base_sys_id?: undefined;
22
+ category?: undefined;
23
+ sys_id?: undefined;
24
+ fields?: undefined;
25
+ article_id?: undefined;
26
+ };
27
+ required: never[];
28
+ };
29
+ } | {
30
+ name: string;
31
+ description: string;
32
+ inputSchema: {
33
+ type: string;
34
+ properties: {
35
+ query: {
36
+ type: string;
37
+ description: string;
38
+ };
39
+ limit: {
40
+ type: string;
41
+ description: string;
42
+ };
43
+ knowledge_base: {
44
+ type: string;
45
+ description: string;
46
+ };
47
+ number_or_sysid?: undefined;
48
+ short_description?: undefined;
49
+ text?: undefined;
50
+ knowledge_base_sys_id?: undefined;
51
+ category?: undefined;
52
+ sys_id?: undefined;
53
+ fields?: undefined;
54
+ article_id?: undefined;
55
+ };
56
+ required: string[];
57
+ };
58
+ } | {
59
+ name: string;
60
+ description: string;
61
+ inputSchema: {
62
+ type: string;
63
+ properties: {
64
+ number_or_sysid: {
65
+ type: string;
66
+ description: string;
67
+ };
68
+ limit?: undefined;
69
+ query?: undefined;
70
+ knowledge_base?: undefined;
71
+ short_description?: undefined;
72
+ text?: undefined;
73
+ knowledge_base_sys_id?: undefined;
74
+ category?: undefined;
75
+ sys_id?: undefined;
76
+ fields?: undefined;
77
+ article_id?: undefined;
78
+ };
79
+ required: string[];
80
+ };
81
+ } | {
82
+ name: string;
83
+ description: string;
84
+ inputSchema: {
85
+ type: string;
86
+ properties: {
87
+ short_description: {
88
+ type: string;
89
+ description: string;
90
+ };
91
+ text: {
92
+ type: string;
93
+ description: string;
94
+ };
95
+ knowledge_base_sys_id: {
96
+ type: string;
97
+ description: string;
98
+ };
99
+ category: {
100
+ type: string;
101
+ description: string;
102
+ };
103
+ limit?: undefined;
104
+ query?: undefined;
105
+ knowledge_base?: undefined;
106
+ number_or_sysid?: undefined;
107
+ sys_id?: undefined;
108
+ fields?: undefined;
109
+ article_id?: undefined;
110
+ };
111
+ required: string[];
112
+ };
113
+ } | {
114
+ name: string;
115
+ description: string;
116
+ inputSchema: {
117
+ type: string;
118
+ properties: {
119
+ sys_id: {
120
+ type: string;
121
+ description: string;
122
+ };
123
+ fields: {
124
+ type: string;
125
+ description: string;
126
+ };
127
+ limit?: undefined;
128
+ query?: undefined;
129
+ knowledge_base?: undefined;
130
+ number_or_sysid?: undefined;
131
+ short_description?: undefined;
132
+ text?: undefined;
133
+ knowledge_base_sys_id?: undefined;
134
+ category?: undefined;
135
+ article_id?: undefined;
136
+ };
137
+ required: string[];
138
+ };
139
+ } | {
140
+ name: string;
141
+ description: string;
142
+ inputSchema: {
143
+ type: string;
144
+ properties: {
145
+ sys_id: {
146
+ type: string;
147
+ description: string;
148
+ };
149
+ limit?: undefined;
150
+ query?: undefined;
151
+ knowledge_base?: undefined;
152
+ number_or_sysid?: undefined;
153
+ short_description?: undefined;
154
+ text?: undefined;
155
+ knowledge_base_sys_id?: undefined;
156
+ category?: undefined;
157
+ fields?: undefined;
158
+ article_id?: undefined;
159
+ };
160
+ required: string[];
161
+ };
162
+ } | {
163
+ name: string;
164
+ description: string;
165
+ inputSchema: {
166
+ type: string;
167
+ properties: {
168
+ article_id: {
169
+ type: string;
170
+ description: string;
171
+ };
172
+ limit?: undefined;
173
+ query?: undefined;
174
+ knowledge_base?: undefined;
175
+ number_or_sysid?: undefined;
176
+ short_description?: undefined;
177
+ text?: undefined;
178
+ knowledge_base_sys_id?: undefined;
179
+ category?: undefined;
180
+ sys_id?: undefined;
181
+ fields?: undefined;
182
+ };
183
+ required: string[];
184
+ };
185
+ })[];
186
+ export declare function executeKnowledgeToolCall(client: ServiceNowClient, name: string, args: Record<string, any>): Promise<any>;
187
+ //# sourceMappingURL=knowledge.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"knowledge.d.ts","sourceRoot":"","sources":["../../src/tools/knowledge.ts"],"names":[],"mappings":"AAAA;;;GAGG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAIhE,wBAAgB,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAsF1C;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,CA8Dd"}