@tedorigawa001/servicenow-mcp 1.0.2
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.
- package/LICENSE +21 -0
- package/README.md +844 -0
- package/dist/cli/auth.d.ts +15 -0
- package/dist/cli/auth.d.ts.map +1 -0
- package/dist/cli/auth.js +200 -0
- package/dist/cli/auth.js.map +1 -0
- package/dist/cli/config-store.d.ts +28 -0
- package/dist/cli/config-store.d.ts.map +1 -0
- package/dist/cli/config-store.js +66 -0
- package/dist/cli/config-store.js.map +1 -0
- package/dist/cli/detect-clients.d.ts +16 -0
- package/dist/cli/detect-clients.d.ts.map +1 -0
- package/dist/cli/detect-clients.js +151 -0
- package/dist/cli/detect-clients.js.map +1 -0
- package/dist/cli/index.d.ts +3 -0
- package/dist/cli/index.d.ts.map +1 -0
- package/dist/cli/index.js +135 -0
- package/dist/cli/index.js.map +1 -0
- package/dist/cli/setup.d.ts +4 -0
- package/dist/cli/setup.d.ts.map +1 -0
- package/dist/cli/setup.js +564 -0
- package/dist/cli/setup.js.map +1 -0
- package/dist/cli/writers/index.d.ts +9 -0
- package/dist/cli/writers/index.d.ts.map +1 -0
- package/dist/cli/writers/index.js +135 -0
- package/dist/cli/writers/index.js.map +1 -0
- package/dist/prompts/index.d.ts +25 -0
- package/dist/prompts/index.d.ts.map +1 -0
- package/dist/prompts/index.js +38 -0
- package/dist/prompts/index.js.map +1 -0
- package/dist/prompts/itsm.d.ts +20 -0
- package/dist/prompts/itsm.d.ts.map +1 -0
- package/dist/prompts/itsm.js +110 -0
- package/dist/prompts/itsm.js.map +1 -0
- package/dist/prompts/user-prompts.d.ts +3 -0
- package/dist/prompts/user-prompts.d.ts.map +1 -0
- package/dist/prompts/user-prompts.js +35 -0
- package/dist/prompts/user-prompts.js.map +1 -0
- package/dist/resources/index.d.ts +26 -0
- package/dist/resources/index.d.ts.map +1 -0
- package/dist/resources/index.js +99 -0
- package/dist/resources/index.js.map +1 -0
- package/dist/server-http.d.ts +41 -0
- package/dist/server-http.d.ts.map +1 -0
- package/dist/server-http.js +187 -0
- package/dist/server-http.js.map +1 -0
- package/dist/server.d.ts +54 -0
- package/dist/server.d.ts.map +1 -0
- package/dist/server.js +150 -0
- package/dist/server.js.map +1 -0
- package/dist/servicenow/client.d.ts +137 -0
- package/dist/servicenow/client.d.ts.map +1 -0
- package/dist/servicenow/client.js +855 -0
- package/dist/servicenow/client.js.map +1 -0
- package/dist/servicenow/instances.d.ts +28 -0
- package/dist/servicenow/instances.d.ts.map +1 -0
- package/dist/servicenow/instances.js +190 -0
- package/dist/servicenow/instances.js.map +1 -0
- package/dist/servicenow/types.d.ts +578 -0
- package/dist/servicenow/types.d.ts.map +1 -0
- package/dist/servicenow/types.js +3 -0
- package/dist/servicenow/types.js.map +1 -0
- package/dist/tools/agile.d.ts +225 -0
- package/dist/tools/agile.d.ts.map +1 -0
- package/dist/tools/agile.js +205 -0
- package/dist/tools/agile.js.map +1 -0
- package/dist/tools/app-studio.d.ts +139 -0
- package/dist/tools/app-studio.d.ts.map +1 -0
- package/dist/tools/app-studio.js +139 -0
- package/dist/tools/app-studio.js.map +1 -0
- package/dist/tools/atf.d.ts +144 -0
- package/dist/tools/atf.d.ts.map +1 -0
- package/dist/tools/atf.js +186 -0
- package/dist/tools/atf.js.map +1 -0
- package/dist/tools/catalog.d.ts +966 -0
- package/dist/tools/catalog.d.ts.map +1 -0
- package/dist/tools/catalog.js +640 -0
- package/dist/tools/catalog.js.map +1 -0
- package/dist/tools/change.d.ts +351 -0
- package/dist/tools/change.d.ts.map +1 -0
- package/dist/tools/change.js +214 -0
- package/dist/tools/change.js.map +1 -0
- package/dist/tools/core.d.ts +768 -0
- package/dist/tools/core.d.ts.map +1 -0
- package/dist/tools/core.js +695 -0
- package/dist/tools/core.js.map +1 -0
- package/dist/tools/csm.d.ts +403 -0
- package/dist/tools/csm.d.ts.map +1 -0
- package/dist/tools/csm.js +256 -0
- package/dist/tools/csm.js.map +1 -0
- package/dist/tools/deployment.d.ts +366 -0
- package/dist/tools/deployment.d.ts.map +1 -0
- package/dist/tools/deployment.js +181 -0
- package/dist/tools/deployment.js.map +1 -0
- package/dist/tools/devops.d.ts +236 -0
- package/dist/tools/devops.d.ts.map +1 -0
- package/dist/tools/devops.js +207 -0
- package/dist/tools/devops.js.map +1 -0
- package/dist/tools/discovery.d.ts +306 -0
- package/dist/tools/discovery.d.ts.map +1 -0
- package/dist/tools/discovery.js +357 -0
- package/dist/tools/discovery.js.map +1 -0
- package/dist/tools/flow.d.ts +496 -0
- package/dist/tools/flow.d.ts.map +1 -0
- package/dist/tools/flow.js +348 -0
- package/dist/tools/flow.js.map +1 -0
- package/dist/tools/hrsd.d.ts +790 -0
- package/dist/tools/hrsd.d.ts.map +1 -0
- package/dist/tools/hrsd.js +378 -0
- package/dist/tools/hrsd.js.map +1 -0
- package/dist/tools/incident.d.ts +259 -0
- package/dist/tools/incident.d.ts.map +1 -0
- package/dist/tools/incident.js +170 -0
- package/dist/tools/incident.js.map +1 -0
- package/dist/tools/index.d.ts +13 -0
- package/dist/tools/index.d.ts.map +1 -0
- package/dist/tools/index.js +385 -0
- package/dist/tools/index.js.map +1 -0
- package/dist/tools/integration.d.ts +940 -0
- package/dist/tools/integration.d.ts.map +1 -0
- package/dist/tools/integration.js +685 -0
- package/dist/tools/integration.js.map +1 -0
- package/dist/tools/itam.d.ts +462 -0
- package/dist/tools/itam.d.ts.map +1 -0
- package/dist/tools/itam.js +306 -0
- package/dist/tools/itam.js.map +1 -0
- package/dist/tools/knowledge.d.ts +187 -0
- package/dist/tools/knowledge.d.ts.map +1 -0
- package/dist/tools/knowledge.js +161 -0
- package/dist/tools/knowledge.js.map +1 -0
- package/dist/tools/ml.d.ts +263 -0
- package/dist/tools/ml.d.ts.map +1 -0
- package/dist/tools/ml.js +251 -0
- package/dist/tools/ml.js.map +1 -0
- package/dist/tools/mobile.d.ts +352 -0
- package/dist/tools/mobile.d.ts.map +1 -0
- package/dist/tools/mobile.js +122 -0
- package/dist/tools/mobile.js.map +1 -0
- package/dist/tools/notification.d.ts +590 -0
- package/dist/tools/notification.d.ts.map +1 -0
- package/dist/tools/notification.js +382 -0
- package/dist/tools/notification.js.map +1 -0
- package/dist/tools/now-assist.d.ts +300 -0
- package/dist/tools/now-assist.d.ts.map +1 -0
- package/dist/tools/now-assist.js +227 -0
- package/dist/tools/now-assist.js.map +1 -0
- package/dist/tools/performance.d.ts +447 -0
- package/dist/tools/performance.d.ts.map +1 -0
- package/dist/tools/performance.js +473 -0
- package/dist/tools/performance.js.map +1 -0
- package/dist/tools/portal.d.ts +530 -0
- package/dist/tools/portal.d.ts.map +1 -0
- package/dist/tools/portal.js +425 -0
- package/dist/tools/portal.js.map +1 -0
- package/dist/tools/problem.d.ts +111 -0
- package/dist/tools/problem.d.ts.map +1 -0
- package/dist/tools/problem.js +101 -0
- package/dist/tools/problem.js.map +1 -0
- package/dist/tools/reporting.d.ts +825 -0
- package/dist/tools/reporting.d.ts.map +1 -0
- package/dist/tools/reporting.js +453 -0
- package/dist/tools/reporting.js.map +1 -0
- package/dist/tools/sam.d.ts +312 -0
- package/dist/tools/sam.d.ts.map +1 -0
- package/dist/tools/sam.js +360 -0
- package/dist/tools/sam.js.map +1 -0
- package/dist/tools/schema-helpers.d.ts +119 -0
- package/dist/tools/schema-helpers.d.ts.map +1 -0
- package/dist/tools/schema-helpers.js +121 -0
- package/dist/tools/schema-helpers.js.map +1 -0
- package/dist/tools/script.d.ts +714 -0
- package/dist/tools/script.d.ts.map +1 -0
- package/dist/tools/script.js +629 -0
- package/dist/tools/script.js.map +1 -0
- package/dist/tools/security.d.ts +802 -0
- package/dist/tools/security.d.ts.map +1 -0
- package/dist/tools/security.js +426 -0
- package/dist/tools/security.js.map +1 -0
- package/dist/tools/smart-query.d.ts +84 -0
- package/dist/tools/smart-query.d.ts.map +1 -0
- package/dist/tools/smart-query.js +320 -0
- package/dist/tools/smart-query.js.map +1 -0
- package/dist/tools/sys-properties.d.ts +315 -0
- package/dist/tools/sys-properties.d.ts.map +1 -0
- package/dist/tools/sys-properties.js +416 -0
- package/dist/tools/sys-properties.js.map +1 -0
- package/dist/tools/task.d.ts +82 -0
- package/dist/tools/task.d.ts.map +1 -0
- package/dist/tools/task.js +96 -0
- package/dist/tools/task.js.map +1 -0
- package/dist/tools/updateset.d.ts +159 -0
- package/dist/tools/updateset.d.ts.map +1 -0
- package/dist/tools/updateset.js +266 -0
- package/dist/tools/updateset.js.map +1 -0
- package/dist/tools/usem-approval.d.ts +130 -0
- package/dist/tools/usem-approval.d.ts.map +1 -0
- package/dist/tools/usem-approval.js +194 -0
- package/dist/tools/usem-approval.js.map +1 -0
- package/dist/tools/usem-config.d.ts +171 -0
- package/dist/tools/usem-config.d.ts.map +1 -0
- package/dist/tools/usem-config.js +254 -0
- package/dist/tools/usem-config.js.map +1 -0
- package/dist/tools/usem-integration.d.ts +228 -0
- package/dist/tools/usem-integration.d.ts.map +1 -0
- package/dist/tools/usem-integration.js +223 -0
- package/dist/tools/usem-integration.js.map +1 -0
- package/dist/tools/usem-sla.d.ts +201 -0
- package/dist/tools/usem-sla.d.ts.map +1 -0
- package/dist/tools/usem-sla.js +322 -0
- package/dist/tools/usem-sla.js.map +1 -0
- package/dist/tools/usem.d.ts +489 -0
- package/dist/tools/usem.d.ts.map +1 -0
- package/dist/tools/usem.js +514 -0
- package/dist/tools/usem.js.map +1 -0
- package/dist/tools/user.d.ts +206 -0
- package/dist/tools/user.d.ts.map +1 -0
- package/dist/tools/user.js +163 -0
- package/dist/tools/user.js.map +1 -0
- package/dist/tools/va.d.ts +217 -0
- package/dist/tools/va.d.ts.map +1 -0
- package/dist/tools/va.js +178 -0
- package/dist/tools/va.js.map +1 -0
- package/dist/tools/workspace.d.ts +565 -0
- package/dist/tools/workspace.d.ts.map +1 -0
- package/dist/tools/workspace.js +201 -0
- package/dist/tools/workspace.js.map +1 -0
- package/dist/utils/errors.d.ts +6 -0
- package/dist/utils/errors.d.ts.map +1 -0
- package/dist/utils/errors.js +11 -0
- package/dist/utils/errors.js.map +1 -0
- package/dist/utils/logging.d.ts +7 -0
- package/dist/utils/logging.d.ts.map +1 -0
- package/dist/utils/logging.js +15 -0
- package/dist/utils/logging.js.map +1 -0
- package/dist/utils/permissions.d.ts +21 -0
- package/dist/utils/permissions.d.ts.map +1 -0
- package/dist/utils/permissions.js +54 -0
- package/dist/utils/permissions.js.map +1 -0
- package/instances.example.json +69 -0
- package/package.json +110 -0
|
@@ -0,0 +1,170 @@
|
|
|
1
|
+
import { ServiceNowError } from '../utils/errors.js';
|
|
2
|
+
import { requireWrite } from '../utils/permissions.js';
|
|
3
|
+
import { URGENCY, IMPACT, PRIORITY } from './schema-helpers.js';
|
|
4
|
+
export function getIncidentToolDefinitions() {
|
|
5
|
+
return [
|
|
6
|
+
{
|
|
7
|
+
name: 'create_incident',
|
|
8
|
+
description: 'Create a new incident record (requires WRITE_ENABLED=true)',
|
|
9
|
+
inputSchema: {
|
|
10
|
+
type: 'object',
|
|
11
|
+
properties: {
|
|
12
|
+
short_description: { type: 'string', description: 'Brief description of the issue' },
|
|
13
|
+
urgency: URGENCY,
|
|
14
|
+
impact: IMPACT,
|
|
15
|
+
priority: PRIORITY,
|
|
16
|
+
description: { type: 'string', description: 'Detailed description' },
|
|
17
|
+
assignment_group: { type: 'string', description: 'Assignment group name or sys_id' },
|
|
18
|
+
caller_id: { type: 'string', description: 'Caller user name or sys_id' },
|
|
19
|
+
category: { type: 'string', description: 'Incident category' },
|
|
20
|
+
subcategory: { type: 'string', description: 'Incident subcategory' },
|
|
21
|
+
},
|
|
22
|
+
required: ['short_description'],
|
|
23
|
+
},
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
name: 'get_incident',
|
|
27
|
+
description: 'Get full details of an incident by number (e.g. INC0012345) or sys_id',
|
|
28
|
+
inputSchema: {
|
|
29
|
+
type: 'object',
|
|
30
|
+
properties: {
|
|
31
|
+
number_or_sysid: { type: 'string', description: 'Incident number (INC...) or sys_id' },
|
|
32
|
+
},
|
|
33
|
+
required: ['number_or_sysid'],
|
|
34
|
+
},
|
|
35
|
+
},
|
|
36
|
+
{
|
|
37
|
+
name: 'update_incident',
|
|
38
|
+
description: 'Update fields on an existing incident (requires WRITE_ENABLED=true)',
|
|
39
|
+
inputSchema: {
|
|
40
|
+
type: 'object',
|
|
41
|
+
properties: {
|
|
42
|
+
sys_id: { type: 'string', description: 'System ID of the incident' },
|
|
43
|
+
fields: { type: 'object', description: 'Key-value pairs to update (e.g., {"state": "2", "urgency": "1"})' },
|
|
44
|
+
},
|
|
45
|
+
required: ['sys_id', 'fields'],
|
|
46
|
+
},
|
|
47
|
+
},
|
|
48
|
+
{
|
|
49
|
+
name: 'resolve_incident',
|
|
50
|
+
description: 'Resolve an incident with resolution code and notes (requires WRITE_ENABLED=true)',
|
|
51
|
+
inputSchema: {
|
|
52
|
+
type: 'object',
|
|
53
|
+
properties: {
|
|
54
|
+
sys_id: { type: 'string', description: 'System ID of the incident' },
|
|
55
|
+
resolution_code: { type: 'string', description: 'Resolution code (e.g., "Solved (Permanently)")' },
|
|
56
|
+
resolution_notes: { type: 'string', description: 'Details of how the incident was resolved' },
|
|
57
|
+
},
|
|
58
|
+
required: ['sys_id', 'resolution_code', 'resolution_notes'],
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
name: 'close_incident',
|
|
63
|
+
description: 'Close a resolved incident (requires WRITE_ENABLED=true)',
|
|
64
|
+
inputSchema: {
|
|
65
|
+
type: 'object',
|
|
66
|
+
properties: {
|
|
67
|
+
sys_id: { type: 'string', description: 'System ID of the incident' },
|
|
68
|
+
},
|
|
69
|
+
required: ['sys_id'],
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
name: 'add_work_note',
|
|
74
|
+
description: 'Add an internal work note to any ITSM record (requires WRITE_ENABLED=true)',
|
|
75
|
+
inputSchema: {
|
|
76
|
+
type: 'object',
|
|
77
|
+
properties: {
|
|
78
|
+
table: { type: 'string', description: 'Table name (e.g., "incident", "change_request")' },
|
|
79
|
+
sys_id: { type: 'string', description: 'System ID of the record' },
|
|
80
|
+
note: { type: 'string', description: 'Work note text (internal, not visible to end user)' },
|
|
81
|
+
},
|
|
82
|
+
required: ['table', 'sys_id', 'note'],
|
|
83
|
+
},
|
|
84
|
+
},
|
|
85
|
+
{
|
|
86
|
+
name: 'add_comment',
|
|
87
|
+
description: 'Add a customer-visible comment to any ITSM record (requires WRITE_ENABLED=true)',
|
|
88
|
+
inputSchema: {
|
|
89
|
+
type: 'object',
|
|
90
|
+
properties: {
|
|
91
|
+
table: { type: 'string', description: 'Table name (e.g., "incident")' },
|
|
92
|
+
sys_id: { type: 'string', description: 'System ID of the record' },
|
|
93
|
+
comment: { type: 'string', description: 'Comment text (visible to end user/caller)' },
|
|
94
|
+
},
|
|
95
|
+
required: ['table', 'sys_id', 'comment'],
|
|
96
|
+
},
|
|
97
|
+
},
|
|
98
|
+
];
|
|
99
|
+
}
|
|
100
|
+
export async function executeIncidentToolCall(client, name, args) {
|
|
101
|
+
switch (name) {
|
|
102
|
+
case 'create_incident': {
|
|
103
|
+
requireWrite();
|
|
104
|
+
if (!args.short_description)
|
|
105
|
+
throw new ServiceNowError('short_description is required', 'INVALID_REQUEST');
|
|
106
|
+
const ALLOWED_FIELDS = new Set([
|
|
107
|
+
'short_description', 'description', 'urgency', 'impact', 'priority',
|
|
108
|
+
'category', 'subcategory', 'assignment_group', 'caller_id',
|
|
109
|
+
'cmdb_ci', 'location', 'contact_type', 'watch_list',
|
|
110
|
+
]);
|
|
111
|
+
const safeData = Object.fromEntries(Object.entries(args).filter(([key]) => ALLOWED_FIELDS.has(key)));
|
|
112
|
+
const result = await client.createRecord('incident', safeData);
|
|
113
|
+
return { ...result, summary: `Created incident ${result.number || result.sys_id}` };
|
|
114
|
+
}
|
|
115
|
+
case 'get_incident': {
|
|
116
|
+
if (!args.number_or_sysid)
|
|
117
|
+
throw new ServiceNowError('number_or_sysid is required', 'INVALID_REQUEST');
|
|
118
|
+
if (/^[0-9a-f]{32}$/i.test(args.number_or_sysid)) {
|
|
119
|
+
return await client.getRecord('incident', args.number_or_sysid);
|
|
120
|
+
}
|
|
121
|
+
const resp = await client.queryRecords({ table: 'incident', query: `number=${args.number_or_sysid}^ORsys_id=${args.number_or_sysid}`, limit: 1 });
|
|
122
|
+
if (resp.count === 0)
|
|
123
|
+
throw new ServiceNowError(`Incident not found: ${args.number_or_sysid}`, 'NOT_FOUND');
|
|
124
|
+
return resp.records[0];
|
|
125
|
+
}
|
|
126
|
+
case 'update_incident': {
|
|
127
|
+
requireWrite();
|
|
128
|
+
if (!args.sys_id || !args.fields)
|
|
129
|
+
throw new ServiceNowError('sys_id and fields are required', 'INVALID_REQUEST');
|
|
130
|
+
const result = await client.updateRecord('incident', args.sys_id, args.fields);
|
|
131
|
+
return { ...result, summary: `Updated incident ${args.sys_id}` };
|
|
132
|
+
}
|
|
133
|
+
case 'resolve_incident': {
|
|
134
|
+
requireWrite();
|
|
135
|
+
if (!args.sys_id || !args.resolution_code || !args.resolution_notes)
|
|
136
|
+
throw new ServiceNowError('sys_id, resolution_code, and resolution_notes are required', 'INVALID_REQUEST');
|
|
137
|
+
const result = await client.updateRecord('incident', args.sys_id, {
|
|
138
|
+
state: '6',
|
|
139
|
+
close_code: args.resolution_code,
|
|
140
|
+
close_notes: args.resolution_notes,
|
|
141
|
+
resolved_at: new Date().toISOString(),
|
|
142
|
+
});
|
|
143
|
+
return { ...result, summary: `Resolved incident ${args.sys_id}` };
|
|
144
|
+
}
|
|
145
|
+
case 'close_incident': {
|
|
146
|
+
requireWrite();
|
|
147
|
+
if (!args.sys_id)
|
|
148
|
+
throw new ServiceNowError('sys_id is required', 'INVALID_REQUEST');
|
|
149
|
+
const result = await client.updateRecord('incident', args.sys_id, { state: '7' });
|
|
150
|
+
return { ...result, summary: `Closed incident ${args.sys_id}` };
|
|
151
|
+
}
|
|
152
|
+
case 'add_work_note': {
|
|
153
|
+
requireWrite();
|
|
154
|
+
if (!args.table || !args.sys_id || !args.note)
|
|
155
|
+
throw new ServiceNowError('table, sys_id, and note are required', 'INVALID_REQUEST');
|
|
156
|
+
const result = await client.updateRecord(args.table, args.sys_id, { work_notes: args.note });
|
|
157
|
+
return { ...result, summary: `Added work note to ${args.table} ${args.sys_id}` };
|
|
158
|
+
}
|
|
159
|
+
case 'add_comment': {
|
|
160
|
+
requireWrite();
|
|
161
|
+
if (!args.table || !args.sys_id || !args.comment)
|
|
162
|
+
throw new ServiceNowError('table, sys_id, and comment are required', 'INVALID_REQUEST');
|
|
163
|
+
const result = await client.updateRecord(args.table, args.sys_id, { comments: args.comment });
|
|
164
|
+
return { ...result, summary: `Added comment to ${args.table} ${args.sys_id}` };
|
|
165
|
+
}
|
|
166
|
+
default:
|
|
167
|
+
return null;
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
//# sourceMappingURL=incident.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"incident.js","sourceRoot":"","sources":["../../src/tools/incident.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Tool Router — aggregates all domain tool modules and implements the
|
|
3
|
+
* MCP_TOOL_PACKAGE role-based packaging system.
|
|
4
|
+
*
|
|
5
|
+
* Tool packages (set via MCP_TOOL_PACKAGE env var):
|
|
6
|
+
* full (default), service_desk, change_coordinator, knowledge_author,
|
|
7
|
+
* catalog_builder, system_administrator, platform_developer, itom_engineer,
|
|
8
|
+
* agile_manager, ai_developer, portal_developer, integration_engineer
|
|
9
|
+
*/
|
|
10
|
+
import type { ServiceNowClient } from '../servicenow/client.js';
|
|
11
|
+
export declare function getTools(): Record<string, any>[];
|
|
12
|
+
export declare function executeTool(client: ServiceNowClient, name: string, args: Record<string, any>): Promise<any>;
|
|
13
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AA2YhE,wBAAgB,QAAQ,0BAevB;AAED,wBAAsB,WAAW,CAC/B,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACxB,OAAO,CAAC,GAAG,CAAC,CAad"}
|
|
@@ -0,0 +1,385 @@
|
|
|
1
|
+
import { ServiceNowError } from '../utils/errors.js';
|
|
2
|
+
import { ANNOTATIONS_READ, ANNOTATIONS_WRITE, ANNOTATIONS_WRITE_IDEMPOTENT, ANNOTATIONS_DESTRUCTIVE, } from './schema-helpers.js';
|
|
3
|
+
// Core (existing 15 tools)
|
|
4
|
+
import { getCoreToolDefinitions, executeCoreToolCall } from './core.js';
|
|
5
|
+
// ITSM
|
|
6
|
+
import { getIncidentToolDefinitions, executeIncidentToolCall } from './incident.js';
|
|
7
|
+
import { getProblemToolDefinitions, executeProblemToolCall } from './problem.js';
|
|
8
|
+
import { getChangeToolDefinitions, executeChangeToolCall } from './change.js';
|
|
9
|
+
import { getTaskToolDefinitions, executeTaskToolCall } from './task.js';
|
|
10
|
+
// Service Management
|
|
11
|
+
import { getKnowledgeToolDefinitions, executeKnowledgeToolCall } from './knowledge.js';
|
|
12
|
+
import { getCatalogToolDefinitions, executeCatalogToolCall } from './catalog.js';
|
|
13
|
+
// User / Group
|
|
14
|
+
import { getUserToolDefinitions, executeUserToolCall } from './user.js';
|
|
15
|
+
// Reporting & Analytics
|
|
16
|
+
import { getReportingToolDefinitions, executeReportingToolCall } from './reporting.js';
|
|
17
|
+
// ATF
|
|
18
|
+
import { getAtfToolDefinitions, executeAtfToolCall } from './atf.js';
|
|
19
|
+
// Now Assist / AI
|
|
20
|
+
import { getNowAssistToolDefinitions, executeNowAssistToolCall } from './now-assist.js';
|
|
21
|
+
// Scripting
|
|
22
|
+
import { getScriptToolDefinitions, executeScriptToolCall } from './script.js';
|
|
23
|
+
// Agile
|
|
24
|
+
import { getAgileToolDefinitions, executeAgileToolCall } from './agile.js';
|
|
25
|
+
// HR Service Delivery
|
|
26
|
+
import { getHrsdToolDefinitions, executeHrsdToolCall } from './hrsd.js';
|
|
27
|
+
// Customer Service Management
|
|
28
|
+
import { getCsmToolDefinitions, executeCsmToolCall } from './csm.js';
|
|
29
|
+
// Security Operations & GRC
|
|
30
|
+
import { getSecurityToolDefinitions, executeSecurityToolCall } from './security.js';
|
|
31
|
+
// Flow Designer & Process Automation
|
|
32
|
+
import { getFlowToolDefinitions, executeFlowToolCall } from './flow.js';
|
|
33
|
+
// Service Portal & UI Builder
|
|
34
|
+
import { getPortalToolDefinitions, executePortalToolCall } from './portal.js';
|
|
35
|
+
// Integration (REST Messages, Transform Maps, Events)
|
|
36
|
+
import { getIntegrationToolDefinitions, executeIntegrationToolCall } from './integration.js';
|
|
37
|
+
// Notifications, Email, Attachments
|
|
38
|
+
import { getNotificationToolDefinitions, executeNotificationToolCall } from './notification.js';
|
|
39
|
+
// Performance Analytics & Data Quality
|
|
40
|
+
import { getPerformanceToolDefinitions, executePerformanceToolCall } from './performance.js';
|
|
41
|
+
// System Properties
|
|
42
|
+
import { getSysPropertiesToolDefinitions, executeSysPropertiesToolCall } from './sys-properties.js';
|
|
43
|
+
// Update Set management
|
|
44
|
+
import { getUpdateSetToolDefinitions, executeUpdateSetToolCall } from './updateset.js';
|
|
45
|
+
// Virtual Agent authoring
|
|
46
|
+
import { getVaToolDefinitions, executeVaToolCall } from './va.js';
|
|
47
|
+
// IT Asset Management
|
|
48
|
+
import { getItamToolDefinitions, executeItamToolCall } from './itam.js';
|
|
49
|
+
// Software Asset Management (SAM Pro)
|
|
50
|
+
import { getSamToolDefinitions, executeSamToolCall } from './sam.js';
|
|
51
|
+
// Discovery & ACC (Agent Client Collector)
|
|
52
|
+
import { getDiscoveryToolDefinitions, executeDiscoveryToolCall } from './discovery.js';
|
|
53
|
+
// DevOps & pipeline tracking
|
|
54
|
+
import { getDevopsToolDefinitions, executeDevopsToolCall } from './devops.js';
|
|
55
|
+
// Scoped Application (App Studio)
|
|
56
|
+
import { getAppStudioToolDefinitions, executeAppStudioToolCall } from './app-studio.js';
|
|
57
|
+
// Machine Learning & Predictive Intelligence
|
|
58
|
+
import { getMlToolDefinitions, executeMlToolCall } from './ml.js';
|
|
59
|
+
// Workspace & UI Builder
|
|
60
|
+
import { getWorkspaceToolDefinitions, executeWorkspaceToolCall } from './workspace.js';
|
|
61
|
+
// Mobile
|
|
62
|
+
import { getMobileToolDefinitions, executeMobileToolCall } from './mobile.js';
|
|
63
|
+
// Deployment & Artifacts
|
|
64
|
+
import { getDeploymentToolDefinitions, executeDeploymentToolCall } from './deployment.js';
|
|
65
|
+
// USEM (Unified Security Exposure Management)
|
|
66
|
+
import { getUsemToolDefinitions, executeUsemToolCall } from './usem.js';
|
|
67
|
+
// USEM / VR configuration rules
|
|
68
|
+
import { getUsemConfigToolDefinitions, executeUsemConfigToolCall } from './usem-config.js';
|
|
69
|
+
// USEM / VR integration operations
|
|
70
|
+
import { getUsemIntegrationToolDefinitions, executeUsemIntegrationToolCall } from './usem-integration.js';
|
|
71
|
+
// USEM / VR SLA (TTR) + notifications
|
|
72
|
+
import { getUsemSlaToolDefinitions, executeUsemSlaToolCall } from './usem-sla.js';
|
|
73
|
+
// USEM / VR approval (workflow state transitions)
|
|
74
|
+
import { getUsemApprovalToolDefinitions, executeUsemApprovalToolCall } from './usem-approval.js';
|
|
75
|
+
// Natural-language query resolver
|
|
76
|
+
import { getSmartQueryToolDefinitions, executeSmartQueryToolCall } from './smart-query.js';
|
|
77
|
+
// ─── Package Definitions ──────────────────────────────────────────────────────
|
|
78
|
+
const PACKAGE_TOOL_NAMES = {
|
|
79
|
+
devops_engineer: [
|
|
80
|
+
'query_records', 'get_record', 'get_table_schema',
|
|
81
|
+
'list_devops_pipelines', 'get_devops_pipeline', 'list_deployments', 'get_deployment',
|
|
82
|
+
'create_devops_change', 'track_deployment', 'get_devops_insights',
|
|
83
|
+
'create_update_set', 'switch_update_set', 'get_current_update_set', 'list_update_sets',
|
|
84
|
+
'complete_update_set', 'preview_update_set', 'export_update_set', 'ensure_active_update_set',
|
|
85
|
+
'get_change_request', 'create_change_request', 'list_change_requests',
|
|
86
|
+
],
|
|
87
|
+
itam_analyst: [
|
|
88
|
+
'query_records', 'get_record',
|
|
89
|
+
'list_assets', 'get_asset', 'create_asset', 'update_asset', 'retire_asset',
|
|
90
|
+
'list_software_licenses', 'get_license_compliance', 'list_asset_contracts',
|
|
91
|
+
'track_asset_lifecycle', 'get_license_optimization',
|
|
92
|
+
// Software Asset Management (SAM Pro)
|
|
93
|
+
'list_software_installs', 'get_software_install', 'list_software_products',
|
|
94
|
+
'list_license_positions', 'get_license_position_summary', 'list_software_discovery_models',
|
|
95
|
+
'list_software_models', 'get_software_model',
|
|
96
|
+
'list_software_lifecycle_reports', 'get_software_lifecycle_report', 'list_software_lifecycle_entries',
|
|
97
|
+
],
|
|
98
|
+
secops_analyst: [
|
|
99
|
+
'query_records', 'get_record', 'get_table_schema', 'describe_table', 'check_table_access',
|
|
100
|
+
// Security Operations & GRC
|
|
101
|
+
'list_security_incidents', 'get_security_incident', 'create_security_incident', 'update_security_incident',
|
|
102
|
+
'list_vulnerabilities', 'get_vulnerability', 'update_vulnerability', 'get_security_dashboard',
|
|
103
|
+
'get_threat_intelligence', 'list_grc_risks', 'get_grc_risk',
|
|
104
|
+
// USEM
|
|
105
|
+
'list_vulnerable_items', 'get_vulnerable_item', 'list_remediation_tasks', 'get_remediation_task',
|
|
106
|
+
'list_nvd_entries', 'get_nvd_entry_by_cve', 'get_usem_dashboard',
|
|
107
|
+
'list_vulnerability_groups', 'get_vulnerability_group',
|
|
108
|
+
'create_vulnerability_group', 'update_vulnerability_group',
|
|
109
|
+
'create_remediation_task', 'update_remediation_task', 'add_vi_to_remediation_task',
|
|
110
|
+
// USEM / VR configuration rules
|
|
111
|
+
'list_usem_rules', 'get_usem_rule', 'create_usem_rule', 'update_usem_rule', 'set_usem_rule_active',
|
|
112
|
+
// USEM / VR integration operations
|
|
113
|
+
'list_integrations', 'list_integration_implementations', 'list_integration_runs',
|
|
114
|
+
'get_integration_run', 'list_integration_logs', 'set_integration_active',
|
|
115
|
+
// USEM / VR SLA (TTR) + notifications
|
|
116
|
+
'list_remediation_sla', 'get_remediation_sla', 'get_group_sla', 'set_remediation_commitment', 'list_vr_notifications',
|
|
117
|
+
'list_notifications', 'get_notification', 'update_notification',
|
|
118
|
+
// USEM / VR approval (workflow state transitions)
|
|
119
|
+
'list_vr_approvals', 'list_vr_exception_requests', 'act_on_vr_approval',
|
|
120
|
+
'get_my_approvals', 'approve_request', 'reject_request',
|
|
121
|
+
// Integration health
|
|
122
|
+
'get_integration_health',
|
|
123
|
+
],
|
|
124
|
+
portal_developer: [
|
|
125
|
+
'query_records', 'get_record', 'get_table_schema',
|
|
126
|
+
'list_portals', 'get_portal', 'create_portal', 'list_portal_pages', 'get_portal_page', 'create_portal_page',
|
|
127
|
+
'list_portal_widgets', 'get_portal_widget', 'create_portal_widget', 'update_portal_widget',
|
|
128
|
+
'list_widget_instances',
|
|
129
|
+
'list_ux_apps', 'get_ux_app', 'list_ux_pages',
|
|
130
|
+
'list_portal_themes', 'get_portal_theme',
|
|
131
|
+
'list_ui_policies', 'get_ui_policy', 'create_ui_policy',
|
|
132
|
+
'list_ui_actions', 'get_ui_action', 'create_ui_action', 'update_ui_action',
|
|
133
|
+
'list_client_scripts', 'get_client_script', 'create_client_script', 'update_client_script',
|
|
134
|
+
'list_changesets', 'get_changeset', 'commit_changeset', 'publish_changeset',
|
|
135
|
+
],
|
|
136
|
+
integration_engineer: [
|
|
137
|
+
'query_records', 'get_record', 'get_table_schema',
|
|
138
|
+
'list_rest_messages', 'get_rest_message', 'list_rest_message_functions', 'create_rest_message',
|
|
139
|
+
'list_soap_messages', 'get_soap_message', 'list_soap_message_functions', 'create_soap_message', 'create_soap_message_function',
|
|
140
|
+
'list_transform_maps', 'get_transform_map', 'run_transform_map', 'list_transform_field_maps',
|
|
141
|
+
'list_import_sets', 'get_import_set', 'create_import_set_row', 'list_data_sources',
|
|
142
|
+
'list_event_registry', 'get_event_registry_entry', 'register_event', 'fire_event', 'list_event_log',
|
|
143
|
+
'list_oauth_applications', 'list_credential_aliases',
|
|
144
|
+
'list_changesets', 'get_changeset', 'commit_changeset', 'publish_changeset',
|
|
145
|
+
],
|
|
146
|
+
service_desk: [
|
|
147
|
+
// Core read
|
|
148
|
+
'query_records', 'get_record', 'get_user', 'get_group',
|
|
149
|
+
// Incident full lifecycle
|
|
150
|
+
'create_incident', 'get_incident', 'update_incident', 'resolve_incident', 'close_incident', 'add_work_note', 'add_comment',
|
|
151
|
+
// Approvals
|
|
152
|
+
'get_my_approvals', 'approve_request', 'reject_request',
|
|
153
|
+
// Catalog requests
|
|
154
|
+
'list_requests', 'get_request', 'list_request_items', 'get_request_item',
|
|
155
|
+
// Knowledge read
|
|
156
|
+
'search_knowledge', 'get_knowledge_article', 'list_knowledge_bases',
|
|
157
|
+
// SLA
|
|
158
|
+
'get_sla_details', 'list_active_slas',
|
|
159
|
+
// Tasks
|
|
160
|
+
'get_task', 'list_my_tasks', 'complete_task',
|
|
161
|
+
// Natural language
|
|
162
|
+
'natural_language_search', 'smart_query',
|
|
163
|
+
],
|
|
164
|
+
change_coordinator: [
|
|
165
|
+
'query_records', 'get_record', 'get_user', 'get_group',
|
|
166
|
+
'create_change_request', 'get_change_request', 'update_change_request', 'list_change_requests', 'submit_change_for_approval', 'close_change_request',
|
|
167
|
+
'get_my_approvals', 'approve_request', 'reject_request',
|
|
168
|
+
'get_problem', 'update_problem',
|
|
169
|
+
'search_cmdb_ci', 'get_cmdb_ci', 'list_relationships',
|
|
170
|
+
'schedule_cab_meeting',
|
|
171
|
+
],
|
|
172
|
+
knowledge_author: [
|
|
173
|
+
'query_records', 'get_record', 'get_user',
|
|
174
|
+
'list_knowledge_bases', 'search_knowledge', 'get_knowledge_article', 'create_knowledge_article', 'update_knowledge_article', 'publish_knowledge_article',
|
|
175
|
+
'list_catalog_items', 'search_catalog', 'get_catalog_item',
|
|
176
|
+
'retire_knowledge_article',
|
|
177
|
+
],
|
|
178
|
+
catalog_builder: [
|
|
179
|
+
'query_records', 'get_record', 'get_user',
|
|
180
|
+
'list_catalog_items', 'search_catalog', 'get_catalog_item', 'create_catalog_item', 'update_catalog_item', 'order_catalog_item',
|
|
181
|
+
'list_requests', 'get_request', 'list_request_items', 'get_request_item', 'cancel_request', 'update_request_item',
|
|
182
|
+
'create_approval_rule',
|
|
183
|
+
'list_users', 'list_groups',
|
|
184
|
+
'create_catalog_variable', 'create_catalog_ui_policy',
|
|
185
|
+
],
|
|
186
|
+
system_administrator: [
|
|
187
|
+
'query_records', 'get_record', 'get_user', 'get_group', 'get_table_schema',
|
|
188
|
+
'list_users', 'create_user', 'update_user', 'list_groups', 'create_group', 'update_group', 'add_user_to_group', 'remove_user_from_group',
|
|
189
|
+
'list_reports', 'get_report', 'create_report', 'update_report', 'run_aggregate_query', 'trend_query', 'export_report_data', 'get_sys_log',
|
|
190
|
+
'list_scheduled_jobs', 'get_scheduled_job', 'create_scheduled_job', 'update_scheduled_job', 'trigger_scheduled_job', 'list_job_run_history',
|
|
191
|
+
'list_acls', 'get_acl', 'create_acl', 'update_acl',
|
|
192
|
+
'list_notifications', 'get_notification', 'create_notification', 'update_notification',
|
|
193
|
+
'list_email_logs', 'get_email_log',
|
|
194
|
+
'list_attachments', 'get_attachment_metadata', 'upload_attachment', 'delete_attachment',
|
|
195
|
+
'check_table_completeness', 'get_table_record_count', 'compare_record_counts',
|
|
196
|
+
'list_pa_indicators', 'get_pa_indicator', 'get_pa_scorecard', 'get_pa_time_series',
|
|
197
|
+
'list_pa_dashboards', 'get_pa_dashboard', 'create_dashboard', 'update_dashboard',
|
|
198
|
+
'list_oauth_applications', 'list_credential_aliases',
|
|
199
|
+
'get_system_property', 'set_system_property', 'list_system_properties', 'search_system_properties',
|
|
200
|
+
'bulk_get_properties', 'bulk_set_properties', 'list_property_categories',
|
|
201
|
+
'get_current_update_set', 'list_update_sets',
|
|
202
|
+
'create_update_set', 'switch_update_set', 'complete_update_set', 'preview_update_set', 'ensure_active_update_set',
|
|
203
|
+
'create_scheduled_report', 'create_kpi',
|
|
204
|
+
],
|
|
205
|
+
platform_developer: [
|
|
206
|
+
'query_records', 'get_record', 'get_table_schema',
|
|
207
|
+
'list_scoped_apps', 'get_scoped_app', 'create_scoped_app', 'update_scoped_app',
|
|
208
|
+
'list_business_rules', 'get_business_rule', 'create_business_rule', 'update_business_rule',
|
|
209
|
+
'list_script_includes', 'get_script_include', 'create_script_include', 'update_script_include',
|
|
210
|
+
'list_client_scripts', 'get_client_script', 'create_client_script', 'update_client_script',
|
|
211
|
+
'list_ui_policies', 'get_ui_policy', 'create_ui_policy',
|
|
212
|
+
'list_ui_actions', 'get_ui_action', 'create_ui_action', 'update_ui_action',
|
|
213
|
+
'list_acls', 'get_acl', 'create_acl', 'update_acl',
|
|
214
|
+
'list_changesets', 'get_changeset', 'commit_changeset', 'publish_changeset',
|
|
215
|
+
'list_atf_suites', 'get_atf_suite', 'run_atf_suite', 'list_atf_tests', 'get_atf_test', 'run_atf_test', 'get_atf_suite_result', 'list_atf_test_results', 'get_atf_failure_insight',
|
|
216
|
+
],
|
|
217
|
+
itom_engineer: [
|
|
218
|
+
'query_records', 'get_record', 'get_table_schema',
|
|
219
|
+
'search_cmdb_ci', 'get_cmdb_ci', 'list_relationships', 'cmdb_health_dashboard', 'service_mapping_summary',
|
|
220
|
+
'list_discovery_schedules', 'list_mid_servers', 'list_active_events',
|
|
221
|
+
'run_aggregate_query', 'trend_query',
|
|
222
|
+
'create_ci_relationship', 'cmdb_impact_analysis', 'run_discovery_scan',
|
|
223
|
+
// Discovery run results & infrastructure health
|
|
224
|
+
'list_discovery_runs', 'get_discovery_run', 'list_discovered_devices', 'list_discovery_logs',
|
|
225
|
+
'list_discovery_ranges', 'list_discovery_credentials',
|
|
226
|
+
'list_mid_server_issues', 'get_mid_server_health',
|
|
227
|
+
// ACC (Agent Client Collector)
|
|
228
|
+
'list_acc_agents', 'list_acc_policies', 'list_acc_checks',
|
|
229
|
+
],
|
|
230
|
+
agile_manager: [
|
|
231
|
+
'query_records', 'get_record', 'get_user',
|
|
232
|
+
'create_story', 'update_story', 'list_stories',
|
|
233
|
+
'create_epic', 'update_epic', 'list_epics',
|
|
234
|
+
'create_scrum_task', 'update_scrum_task', 'list_scrum_tasks',
|
|
235
|
+
'list_users',
|
|
236
|
+
],
|
|
237
|
+
ai_developer: [
|
|
238
|
+
'query_records', 'get_record', 'natural_language_search',
|
|
239
|
+
'nlq_query', 'ai_search', 'generate_summary', 'suggest_resolution', 'categorize_incident',
|
|
240
|
+
'get_virtual_agent_topics', 'trigger_agentic_playbook', 'get_ms_copilot_topics', 'generate_work_notes', 'get_pi_models',
|
|
241
|
+
'search_knowledge', 'get_knowledge_article',
|
|
242
|
+
],
|
|
243
|
+
};
|
|
244
|
+
// ─── Annotation classifier ────────────────────────────────────────────────────
|
|
245
|
+
/**
|
|
246
|
+
* Tools that only read data — no side effects.
|
|
247
|
+
* Identified by name prefix or exact match.
|
|
248
|
+
*/
|
|
249
|
+
const READ_ONLY_PREFIXES = [
|
|
250
|
+
'get_', 'list_', 'search_', 'export_', 'preview_', 'query_',
|
|
251
|
+
'check_', 'find_', 'compare_', 'analyze_', 'describe_',
|
|
252
|
+
];
|
|
253
|
+
const READ_ONLY_EXACT = new Set([
|
|
254
|
+
'nlq_query', 'natural_language_search', 'smart_query', 'trend_query', 'run_aggregate_query',
|
|
255
|
+
'ai_search', 'generate_summary', 'suggest_resolution', 'categorize_incident',
|
|
256
|
+
'cmdb_health_dashboard', 'service_mapping_summary', 'get_devops_insights',
|
|
257
|
+
'ml_detect_anomalies', 'ml_evaluate_model', 'ml_forecast_incidents',
|
|
258
|
+
'ml_model_training_history', 'ml_predict_change_risk', 'ml_process_optimization',
|
|
259
|
+
'ml_virtual_agent_nlu',
|
|
260
|
+
]);
|
|
261
|
+
/**
|
|
262
|
+
* Destructive tools — deletes, irreversible state transitions.
|
|
263
|
+
*/
|
|
264
|
+
const DESTRUCTIVE_EXACT = new Set([
|
|
265
|
+
// Deletes
|
|
266
|
+
'delete_attachment', 'delete_system_property', 'delete_uib_page',
|
|
267
|
+
// Irreversible state changes
|
|
268
|
+
'close_incident', 'close_change_request', 'close_csm_case', 'close_hr_case',
|
|
269
|
+
'cancel_request',
|
|
270
|
+
'resolve_incident', 'resolve_problem',
|
|
271
|
+
'retire_asset', 'retire_knowledge_article',
|
|
272
|
+
'rollback_deployment',
|
|
273
|
+
'remove_user_from_group',
|
|
274
|
+
// Code deployment / execution
|
|
275
|
+
'execute_background_script',
|
|
276
|
+
'commit_changeset', 'publish_changeset',
|
|
277
|
+
]);
|
|
278
|
+
/**
|
|
279
|
+
* Idempotent writes — same call produces the same result.
|
|
280
|
+
*/
|
|
281
|
+
const WRITE_IDEMPOTENT_PREFIXES = ['update_', 'set_', 'configure_', 'complete_'];
|
|
282
|
+
const WRITE_IDEMPOTENT_EXACT = new Set([
|
|
283
|
+
'submit_change_for_approval', 'approve_request', 'reject_request',
|
|
284
|
+
'publish_flow', 'publish_knowledge_article',
|
|
285
|
+
'ensure_active_update_set', 'switch_instance', 'switch_update_set',
|
|
286
|
+
'natural_language_update', 'bulk_set_properties',
|
|
287
|
+
'validate_deployment', 'validate_property', 'validate_artifact',
|
|
288
|
+
]);
|
|
289
|
+
function annotate(tool) {
|
|
290
|
+
const n = tool.name;
|
|
291
|
+
if (DESTRUCTIVE_EXACT.has(n)) {
|
|
292
|
+
return { ...tool, annotations: ANNOTATIONS_DESTRUCTIVE };
|
|
293
|
+
}
|
|
294
|
+
if (READ_ONLY_EXACT.has(n) || READ_ONLY_PREFIXES.some(p => n.startsWith(p))) {
|
|
295
|
+
return { ...tool, annotations: ANNOTATIONS_READ };
|
|
296
|
+
}
|
|
297
|
+
if (WRITE_IDEMPOTENT_EXACT.has(n) || WRITE_IDEMPOTENT_PREFIXES.some(p => n.startsWith(p))) {
|
|
298
|
+
return { ...tool, annotations: ANNOTATIONS_WRITE_IDEMPOTENT };
|
|
299
|
+
}
|
|
300
|
+
return { ...tool, annotations: ANNOTATIONS_WRITE };
|
|
301
|
+
}
|
|
302
|
+
const MODULES = [
|
|
303
|
+
{ defs: getCoreToolDefinitions, exec: executeCoreToolCall },
|
|
304
|
+
{ defs: getIncidentToolDefinitions, exec: executeIncidentToolCall },
|
|
305
|
+
{ defs: getProblemToolDefinitions, exec: executeProblemToolCall },
|
|
306
|
+
{ defs: getChangeToolDefinitions, exec: executeChangeToolCall },
|
|
307
|
+
{ defs: getTaskToolDefinitions, exec: executeTaskToolCall },
|
|
308
|
+
{ defs: getKnowledgeToolDefinitions, exec: executeKnowledgeToolCall },
|
|
309
|
+
{ defs: getCatalogToolDefinitions, exec: executeCatalogToolCall },
|
|
310
|
+
{ defs: getUserToolDefinitions, exec: executeUserToolCall },
|
|
311
|
+
{ defs: getReportingToolDefinitions, exec: executeReportingToolCall },
|
|
312
|
+
{ defs: getAtfToolDefinitions, exec: executeAtfToolCall },
|
|
313
|
+
{ defs: getNowAssistToolDefinitions, exec: executeNowAssistToolCall },
|
|
314
|
+
{ defs: getScriptToolDefinitions, exec: executeScriptToolCall },
|
|
315
|
+
{ defs: getAgileToolDefinitions, exec: executeAgileToolCall },
|
|
316
|
+
{ defs: getHrsdToolDefinitions, exec: executeHrsdToolCall },
|
|
317
|
+
{ defs: getCsmToolDefinitions, exec: executeCsmToolCall },
|
|
318
|
+
{ defs: getSecurityToolDefinitions, exec: executeSecurityToolCall },
|
|
319
|
+
{ defs: getFlowToolDefinitions, exec: executeFlowToolCall },
|
|
320
|
+
{ defs: getPortalToolDefinitions, exec: executePortalToolCall },
|
|
321
|
+
{ defs: getIntegrationToolDefinitions, exec: executeIntegrationToolCall },
|
|
322
|
+
{ defs: getNotificationToolDefinitions, exec: executeNotificationToolCall },
|
|
323
|
+
{ defs: getPerformanceToolDefinitions, exec: executePerformanceToolCall },
|
|
324
|
+
{ defs: getSysPropertiesToolDefinitions, exec: executeSysPropertiesToolCall },
|
|
325
|
+
{ defs: getUpdateSetToolDefinitions, exec: executeUpdateSetToolCall },
|
|
326
|
+
{ defs: getVaToolDefinitions, exec: executeVaToolCall },
|
|
327
|
+
{ defs: getItamToolDefinitions, exec: executeItamToolCall },
|
|
328
|
+
{ defs: getSamToolDefinitions, exec: executeSamToolCall },
|
|
329
|
+
{ defs: getDiscoveryToolDefinitions, exec: executeDiscoveryToolCall },
|
|
330
|
+
{ defs: getDevopsToolDefinitions, exec: executeDevopsToolCall },
|
|
331
|
+
{ defs: getAppStudioToolDefinitions, exec: executeAppStudioToolCall },
|
|
332
|
+
{ defs: getMlToolDefinitions, exec: executeMlToolCall },
|
|
333
|
+
{ defs: getWorkspaceToolDefinitions, exec: executeWorkspaceToolCall },
|
|
334
|
+
{ defs: getMobileToolDefinitions, exec: executeMobileToolCall },
|
|
335
|
+
{ defs: getDeploymentToolDefinitions, exec: executeDeploymentToolCall },
|
|
336
|
+
{ defs: getUsemToolDefinitions, exec: executeUsemToolCall },
|
|
337
|
+
{ defs: getUsemConfigToolDefinitions, exec: executeUsemConfigToolCall },
|
|
338
|
+
{ defs: getUsemIntegrationToolDefinitions, exec: executeUsemIntegrationToolCall },
|
|
339
|
+
{ defs: getUsemSlaToolDefinitions, exec: executeUsemSlaToolCall },
|
|
340
|
+
{ defs: getUsemApprovalToolDefinitions, exec: executeUsemApprovalToolCall },
|
|
341
|
+
{ defs: getSmartQueryToolDefinitions, exec: executeSmartQueryToolCall },
|
|
342
|
+
];
|
|
343
|
+
// Name → executor map, built once at module load. Detects duplicate tool names
|
|
344
|
+
// across modules (which would otherwise be silently shadowed by the old
|
|
345
|
+
// first-non-null-wins linear scan).
|
|
346
|
+
const TOOL_EXECUTORS = new Map();
|
|
347
|
+
const ALL_TOOLS = MODULES.flatMap(module => {
|
|
348
|
+
const defs = module.defs();
|
|
349
|
+
for (const def of defs) {
|
|
350
|
+
if (TOOL_EXECUTORS.has(def.name)) {
|
|
351
|
+
console.error(`[WARN] Duplicate tool name "${def.name}" — later definition ignored.`);
|
|
352
|
+
continue;
|
|
353
|
+
}
|
|
354
|
+
TOOL_EXECUTORS.set(def.name, module.exec);
|
|
355
|
+
}
|
|
356
|
+
return defs;
|
|
357
|
+
}).map(annotate);
|
|
358
|
+
// ─── Public API ───────────────────────────────────────────────────────────────
|
|
359
|
+
export function getTools() {
|
|
360
|
+
const packageName = (process.env.MCP_TOOL_PACKAGE || 'full').toLowerCase();
|
|
361
|
+
if (packageName === 'full') {
|
|
362
|
+
return ALL_TOOLS;
|
|
363
|
+
}
|
|
364
|
+
const allowed = PACKAGE_TOOL_NAMES[packageName];
|
|
365
|
+
if (!allowed) {
|
|
366
|
+
console.error(`[WARN] Unknown MCP_TOOL_PACKAGE "${packageName}". Using "full".`);
|
|
367
|
+
return ALL_TOOLS;
|
|
368
|
+
}
|
|
369
|
+
const allowedSet = new Set(allowed);
|
|
370
|
+
return ALL_TOOLS.filter(t => allowedSet.has(t.name));
|
|
371
|
+
}
|
|
372
|
+
export async function executeTool(client, name, args) {
|
|
373
|
+
// O(1) dispatch: look up the owning module's executor by tool name.
|
|
374
|
+
const exec = TOOL_EXECUTORS.get(name);
|
|
375
|
+
if (!exec) {
|
|
376
|
+
throw new ServiceNowError(`Unknown tool: ${name}`, 'UNKNOWN_TOOL');
|
|
377
|
+
}
|
|
378
|
+
const result = await exec(client, name, args);
|
|
379
|
+
if (result === null) {
|
|
380
|
+
// The owning module returned null — name is registered but unhandled.
|
|
381
|
+
throw new ServiceNowError(`Unknown tool: ${name}`, 'UNKNOWN_TOOL');
|
|
382
|
+
}
|
|
383
|
+
return result;
|
|
384
|
+
}
|
|
385
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/tools/index.ts"],"names":[],"mappings":"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"}
|