nowaikit 4.11.0 → 4.12.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.
- package/desktop/renderer/dist/assets/index-DIXajM0H.js +55 -0
- package/desktop/renderer/dist/index.html +1 -1
- package/dist/cli/config-store.d.ts +1 -1
- package/dist/cli/config-store.d.ts.map +1 -1
- package/dist/cli/detect-clients.d.ts +1 -1
- package/dist/cli/detect-clients.d.ts.map +1 -1
- package/dist/cli/detect-clients.js +56 -12
- package/dist/cli/detect-clients.js.map +1 -1
- package/dist/cli/setup.js +2 -2
- package/dist/cli/setup.js.map +1 -1
- package/dist/cli/writers/index.d.ts.map +1 -1
- package/dist/cli/writers/index.js +20 -0
- package/dist/cli/writers/index.js.map +1 -1
- package/dist/direct/llm-client.js +2 -2
- package/dist/direct/llm-client.js.map +1 -1
- package/dist/server.d.ts.map +1 -1
- package/dist/server.js +2 -1
- package/dist/server.js.map +1 -1
- package/dist/servicenow/client.d.ts +12 -0
- package/dist/servicenow/client.d.ts.map +1 -1
- package/dist/servicenow/client.js +54 -0
- package/dist/servicenow/client.js.map +1 -1
- package/dist/tools/access-admin.d.ts +162 -0
- package/dist/tools/access-admin.d.ts.map +1 -0
- package/dist/tools/access-admin.js +216 -0
- package/dist/tools/access-admin.js.map +1 -0
- package/dist/tools/ai-agent-exec.d.ts +70 -0
- package/dist/tools/ai-agent-exec.d.ts.map +1 -0
- package/dist/tools/ai-agent-exec.js +73 -0
- package/dist/tools/ai-agent-exec.js.map +1 -0
- package/dist/tools/approvals-extra.d.ts +202 -0
- package/dist/tools/approvals-extra.d.ts.map +1 -0
- package/dist/tools/approvals-extra.js +212 -0
- package/dist/tools/approvals-extra.js.map +1 -0
- package/dist/tools/catalog-fulfillment.d.ts +349 -0
- package/dist/tools/catalog-fulfillment.d.ts.map +1 -0
- package/dist/tools/catalog-fulfillment.js +222 -0
- package/dist/tools/catalog-fulfillment.js.map +1 -0
- package/dist/tools/grc-extra.d.ts +149 -0
- package/dist/tools/grc-extra.d.ts.map +1 -0
- package/dist/tools/grc-extra.js +115 -0
- package/dist/tools/grc-extra.js.map +1 -0
- package/dist/tools/index.d.ts +1600 -107
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +38 -0
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/oncall.d.ts +165 -0
- package/dist/tools/oncall.d.ts.map +1 -0
- package/dist/tools/oncall.js +155 -0
- package/dist/tools/oncall.js.map +1 -0
- package/dist/tools/platform-ops.d.ts +156 -0
- package/dist/tools/platform-ops.d.ts.map +1 -0
- package/dist/tools/platform-ops.js +141 -0
- package/dist/tools/platform-ops.js.map +1 -0
- package/dist/tools/service-mapping.d.ts +108 -0
- package/dist/tools/service-mapping.d.ts.map +1 -0
- package/dist/tools/service-mapping.js +144 -0
- package/dist/tools/service-mapping.js.map +1 -0
- package/dist/tools/service-portfolio.d.ts +93 -0
- package/dist/tools/service-portfolio.d.ts.map +1 -0
- package/dist/tools/service-portfolio.js +86 -0
- package/dist/tools/service-portfolio.js.map +1 -0
- package/dist/tools/sla.d.ts +222 -0
- package/dist/tools/sla.d.ts.map +1 -0
- package/dist/tools/sla.js +160 -0
- package/dist/tools/sla.js.map +1 -0
- package/dist/tools/sn-parity.d.ts +239 -0
- package/dist/tools/sn-parity.d.ts.map +1 -0
- package/dist/tools/sn-parity.js +236 -0
- package/dist/tools/sn-parity.js.map +1 -0
- package/dist/tools/survey.d.ts +140 -0
- package/dist/tools/survey.d.ts.map +1 -0
- package/dist/tools/survey.js +118 -0
- package/dist/tools/survey.js.map +1 -0
- package/dist/tools-manifest.json +1537 -0
- package/package.json +15 -8
- package/desktop/renderer/dist/assets/index-BQ4P9VJR.js +0 -49
|
@@ -0,0 +1,222 @@
|
|
|
1
|
+
import { ServiceNowError } from '../utils/errors.js';
|
|
2
|
+
import { requireWrite } from '../utils/permissions.js';
|
|
3
|
+
export function getCatalogFulfillmentToolDefinitions() {
|
|
4
|
+
return [
|
|
5
|
+
{
|
|
6
|
+
name: 'get_request_item',
|
|
7
|
+
description: 'Get a requested item (RITM) with its variables, by number or sys_id',
|
|
8
|
+
inputSchema: {
|
|
9
|
+
type: 'object',
|
|
10
|
+
properties: {
|
|
11
|
+
number: { type: 'string', description: 'RITM number (e.g. RITM0010001)' },
|
|
12
|
+
sys_id: { type: 'string', description: 'sys_id of the sc_req_item' },
|
|
13
|
+
},
|
|
14
|
+
required: [],
|
|
15
|
+
},
|
|
16
|
+
},
|
|
17
|
+
{
|
|
18
|
+
name: 'update_request_item',
|
|
19
|
+
description: 'Update the state/stage or fields of a requested item (sc_req_item). Requires WRITE_ENABLED=true',
|
|
20
|
+
inputSchema: {
|
|
21
|
+
type: 'object',
|
|
22
|
+
properties: {
|
|
23
|
+
sys_id: { type: 'string', description: 'sys_id of the RITM' },
|
|
24
|
+
state: { type: 'string', description: 'New state value' },
|
|
25
|
+
stage: { type: 'string', description: 'New stage value' },
|
|
26
|
+
fields: { type: 'object', description: 'Additional field values' },
|
|
27
|
+
},
|
|
28
|
+
required: ['sys_id'],
|
|
29
|
+
},
|
|
30
|
+
},
|
|
31
|
+
{
|
|
32
|
+
name: 'list_catalog_tasks',
|
|
33
|
+
description: 'List catalog fulfillment tasks (SCTASK), optionally by request item, assignment group, or state',
|
|
34
|
+
inputSchema: {
|
|
35
|
+
type: 'object',
|
|
36
|
+
properties: {
|
|
37
|
+
request_item: { type: 'string', description: 'Parent RITM sys_id' },
|
|
38
|
+
assignment_group: { type: 'string', description: 'Assignment group sys_id' },
|
|
39
|
+
active: { type: 'boolean', description: 'Filter to active tasks only' },
|
|
40
|
+
limit: { type: 'number', description: 'Max records (default 50)' },
|
|
41
|
+
},
|
|
42
|
+
required: [],
|
|
43
|
+
},
|
|
44
|
+
},
|
|
45
|
+
{
|
|
46
|
+
name: 'complete_catalog_task',
|
|
47
|
+
description: 'Close a catalog fulfillment task (sc_task) as complete. Requires WRITE_ENABLED=true',
|
|
48
|
+
inputSchema: {
|
|
49
|
+
type: 'object',
|
|
50
|
+
properties: {
|
|
51
|
+
sys_id: { type: 'string', description: 'sys_id of the SCTASK' },
|
|
52
|
+
close_notes: { type: 'string', description: 'Closure notes' },
|
|
53
|
+
state: { type: 'string', description: 'Closed state value (default 3 = Closed Complete)' },
|
|
54
|
+
},
|
|
55
|
+
required: ['sys_id'],
|
|
56
|
+
},
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
name: 'list_catalog_categories',
|
|
60
|
+
description: 'List catalog categories (sc_category), optionally filtered by catalog or title',
|
|
61
|
+
inputSchema: {
|
|
62
|
+
type: 'object',
|
|
63
|
+
properties: {
|
|
64
|
+
catalog: { type: 'string', description: 'Catalog sys_id to filter by' },
|
|
65
|
+
query: { type: 'string', description: 'Search categories by title' },
|
|
66
|
+
limit: { type: 'number', description: 'Max records (default 50)' },
|
|
67
|
+
},
|
|
68
|
+
required: [],
|
|
69
|
+
},
|
|
70
|
+
},
|
|
71
|
+
{
|
|
72
|
+
name: 'create_catalog_category',
|
|
73
|
+
description: 'Create a catalog category (sc_category). Requires WRITE_ENABLED=true',
|
|
74
|
+
inputSchema: {
|
|
75
|
+
type: 'object',
|
|
76
|
+
properties: {
|
|
77
|
+
title: { type: 'string', description: 'Category title' },
|
|
78
|
+
catalog: { type: 'string', description: 'Catalog sys_id (sc_catalog)' },
|
|
79
|
+
description: { type: 'string', description: 'Category description' },
|
|
80
|
+
parent: { type: 'string', description: 'Parent category sys_id (for sub-categories)' },
|
|
81
|
+
fields: { type: 'object', description: 'Additional field values' },
|
|
82
|
+
},
|
|
83
|
+
required: ['title'],
|
|
84
|
+
},
|
|
85
|
+
},
|
|
86
|
+
{
|
|
87
|
+
name: 'create_user_criteria',
|
|
88
|
+
description: 'Create a user criteria record (user_criteria) for catalog entitlement/audience. Requires WRITE_ENABLED=true',
|
|
89
|
+
inputSchema: {
|
|
90
|
+
type: 'object',
|
|
91
|
+
properties: {
|
|
92
|
+
name: { type: 'string', description: 'User criteria name' },
|
|
93
|
+
roles: { type: 'string', description: 'Comma-separated role sys_ids' },
|
|
94
|
+
groups: { type: 'string', description: 'Comma-separated group sys_ids' },
|
|
95
|
+
users: { type: 'string', description: 'Comma-separated user sys_ids' },
|
|
96
|
+
match_all: { type: 'boolean', description: 'Require all conditions to match' },
|
|
97
|
+
fields: { type: 'object', description: 'Additional field values' },
|
|
98
|
+
},
|
|
99
|
+
required: ['name'],
|
|
100
|
+
},
|
|
101
|
+
},
|
|
102
|
+
{
|
|
103
|
+
name: 'assign_user_criteria',
|
|
104
|
+
description: 'Attach a user criteria to a catalog item as available-for (sc_cat_item_user_criteria_mtom). Requires WRITE_ENABLED=true',
|
|
105
|
+
inputSchema: {
|
|
106
|
+
type: 'object',
|
|
107
|
+
properties: {
|
|
108
|
+
catalog_item: { type: 'string', description: 'sys_id of the catalog item (sc_cat_item)' },
|
|
109
|
+
user_criteria: { type: 'string', description: 'sys_id of the user_criteria record' },
|
|
110
|
+
},
|
|
111
|
+
required: ['catalog_item', 'user_criteria'],
|
|
112
|
+
},
|
|
113
|
+
},
|
|
114
|
+
];
|
|
115
|
+
}
|
|
116
|
+
export async function executeCatalogFulfillmentToolCall(client, name, args) {
|
|
117
|
+
switch (name) {
|
|
118
|
+
case 'get_request_item': {
|
|
119
|
+
let ritm;
|
|
120
|
+
if (args.sys_id) {
|
|
121
|
+
ritm = await client.getRecord('sc_req_item', args.sys_id);
|
|
122
|
+
}
|
|
123
|
+
else if (args.number) {
|
|
124
|
+
const resp = await client.queryRecords({ table: 'sc_req_item', query: `number=${args.number}`, limit: 1 });
|
|
125
|
+
if (resp.count === 0)
|
|
126
|
+
throw new ServiceNowError(`RITM not found: ${args.number}`, 'NOT_FOUND');
|
|
127
|
+
ritm = resp.records[0];
|
|
128
|
+
}
|
|
129
|
+
else {
|
|
130
|
+
throw new ServiceNowError('number or sys_id is required', 'INVALID_REQUEST');
|
|
131
|
+
}
|
|
132
|
+
const sysId = ritm.sys_id;
|
|
133
|
+
const vars = await client
|
|
134
|
+
.queryRecords({ table: 'sc_item_option_mtom', query: `request_item=${sysId}`, fields: 'sc_item_option.item_option_new.question_text,sc_item_option.value', limit: 100 })
|
|
135
|
+
.catch(() => ({ records: [] }));
|
|
136
|
+
return { request_item: ritm, variables: vars.records };
|
|
137
|
+
}
|
|
138
|
+
case 'update_request_item': {
|
|
139
|
+
requireWrite();
|
|
140
|
+
if (!args.sys_id)
|
|
141
|
+
throw new ServiceNowError('sys_id is required', 'INVALID_REQUEST');
|
|
142
|
+
const payload = { ...(args.fields ?? {}) };
|
|
143
|
+
if (args.state !== undefined)
|
|
144
|
+
payload.state = args.state;
|
|
145
|
+
if (args.stage !== undefined)
|
|
146
|
+
payload.stage = args.stage;
|
|
147
|
+
const result = await client.updateRecord('sc_req_item', args.sys_id, payload);
|
|
148
|
+
return { ...result, summary: `Updated RITM ${args.sys_id}` };
|
|
149
|
+
}
|
|
150
|
+
case 'list_catalog_tasks': {
|
|
151
|
+
const parts = [];
|
|
152
|
+
if (args.request_item)
|
|
153
|
+
parts.push(`request_item=${args.request_item}`);
|
|
154
|
+
if (args.assignment_group)
|
|
155
|
+
parts.push(`assignment_group=${args.assignment_group}`);
|
|
156
|
+
if (args.active !== undefined)
|
|
157
|
+
parts.push(`active=${args.active ? 'true' : 'false'}`);
|
|
158
|
+
return await client.queryRecords({ table: 'sc_task', query: parts.join('^'), limit: args.limit ?? 50 });
|
|
159
|
+
}
|
|
160
|
+
case 'complete_catalog_task': {
|
|
161
|
+
requireWrite();
|
|
162
|
+
if (!args.sys_id)
|
|
163
|
+
throw new ServiceNowError('sys_id is required', 'INVALID_REQUEST');
|
|
164
|
+
const payload = { state: args.state ?? '3' };
|
|
165
|
+
if (args.close_notes)
|
|
166
|
+
payload.close_notes = args.close_notes;
|
|
167
|
+
const result = await client.updateRecord('sc_task', args.sys_id, payload);
|
|
168
|
+
return { ...result, summary: `Closed catalog task ${args.sys_id}` };
|
|
169
|
+
}
|
|
170
|
+
case 'list_catalog_categories': {
|
|
171
|
+
const parts = [];
|
|
172
|
+
if (args.catalog)
|
|
173
|
+
parts.push(`sc_catalog=${args.catalog}`);
|
|
174
|
+
if (args.query)
|
|
175
|
+
parts.push(`titleCONTAINS${args.query}`);
|
|
176
|
+
return await client.queryRecords({ table: 'sc_category', query: parts.join('^'), limit: args.limit ?? 50 });
|
|
177
|
+
}
|
|
178
|
+
case 'create_catalog_category': {
|
|
179
|
+
requireWrite();
|
|
180
|
+
if (!args.title)
|
|
181
|
+
throw new ServiceNowError('title is required', 'INVALID_REQUEST');
|
|
182
|
+
const payload = { title: args.title, ...(args.fields ?? {}) };
|
|
183
|
+
if (args.catalog)
|
|
184
|
+
payload.sc_catalog = args.catalog;
|
|
185
|
+
if (args.description)
|
|
186
|
+
payload.description = args.description;
|
|
187
|
+
if (args.parent)
|
|
188
|
+
payload.parent = args.parent;
|
|
189
|
+
const result = await client.createRecord('sc_category', payload);
|
|
190
|
+
return { ...result, summary: `Created catalog category "${args.title}"` };
|
|
191
|
+
}
|
|
192
|
+
case 'create_user_criteria': {
|
|
193
|
+
requireWrite();
|
|
194
|
+
if (!args.name)
|
|
195
|
+
throw new ServiceNowError('name is required', 'INVALID_REQUEST');
|
|
196
|
+
const payload = { name: args.name, ...(args.fields ?? {}) };
|
|
197
|
+
if (args.roles)
|
|
198
|
+
payload.role = args.roles;
|
|
199
|
+
if (args.groups)
|
|
200
|
+
payload.group = args.groups;
|
|
201
|
+
if (args.users)
|
|
202
|
+
payload.user = args.users;
|
|
203
|
+
if (args.match_all !== undefined)
|
|
204
|
+
payload.match_all = args.match_all ? 'true' : 'false';
|
|
205
|
+
const result = await client.createRecord('user_criteria', payload);
|
|
206
|
+
return { ...result, summary: `Created user criteria "${args.name}"` };
|
|
207
|
+
}
|
|
208
|
+
case 'assign_user_criteria': {
|
|
209
|
+
requireWrite();
|
|
210
|
+
if (!args.catalog_item || !args.user_criteria)
|
|
211
|
+
throw new ServiceNowError('catalog_item and user_criteria are required', 'INVALID_REQUEST');
|
|
212
|
+
const result = await client.createRecord('sc_cat_item_user_criteria_mtom', {
|
|
213
|
+
sc_cat_item: args.catalog_item,
|
|
214
|
+
user_criteria: args.user_criteria,
|
|
215
|
+
});
|
|
216
|
+
return { ...result, summary: `Linked user criteria ${args.user_criteria} to catalog item ${args.catalog_item}` };
|
|
217
|
+
}
|
|
218
|
+
default:
|
|
219
|
+
return null;
|
|
220
|
+
}
|
|
221
|
+
}
|
|
222
|
+
//# sourceMappingURL=catalog-fulfillment.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"catalog-fulfillment.js","sourceRoot":"","sources":["../../src/tools/catalog-fulfillment.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,149 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GRC / IRM authoring depth (controls, issues, control tests).
|
|
3
|
+
* Read: Tier 0. Create/run: Tier 1 (WRITE_ENABLED=true).
|
|
4
|
+
*
|
|
5
|
+
* Tables (may vary by IRM version):
|
|
6
|
+
* sn_compliance_control — compliance controls
|
|
7
|
+
* sn_compliance_control_test — control tests/attestations
|
|
8
|
+
* sn_grc_issue — GRC issues/findings
|
|
9
|
+
*/
|
|
10
|
+
import type { ServiceNowClient } from '../servicenow/client.js';
|
|
11
|
+
export declare function getGrcExtraToolDefinitions(): ({
|
|
12
|
+
name: string;
|
|
13
|
+
description: string;
|
|
14
|
+
inputSchema: {
|
|
15
|
+
type: string;
|
|
16
|
+
properties: {
|
|
17
|
+
state: {
|
|
18
|
+
type: string;
|
|
19
|
+
description: string;
|
|
20
|
+
};
|
|
21
|
+
owner: {
|
|
22
|
+
type: string;
|
|
23
|
+
description: string;
|
|
24
|
+
};
|
|
25
|
+
query: {
|
|
26
|
+
type: string;
|
|
27
|
+
description: string;
|
|
28
|
+
};
|
|
29
|
+
limit: {
|
|
30
|
+
type: string;
|
|
31
|
+
description: string;
|
|
32
|
+
};
|
|
33
|
+
short_description?: undefined;
|
|
34
|
+
description?: undefined;
|
|
35
|
+
source?: undefined;
|
|
36
|
+
fields?: undefined;
|
|
37
|
+
name?: undefined;
|
|
38
|
+
profile?: undefined;
|
|
39
|
+
control?: undefined;
|
|
40
|
+
result?: undefined;
|
|
41
|
+
notes?: undefined;
|
|
42
|
+
};
|
|
43
|
+
required: never[];
|
|
44
|
+
};
|
|
45
|
+
} | {
|
|
46
|
+
name: string;
|
|
47
|
+
description: string;
|
|
48
|
+
inputSchema: {
|
|
49
|
+
type: string;
|
|
50
|
+
properties: {
|
|
51
|
+
short_description: {
|
|
52
|
+
type: string;
|
|
53
|
+
description: string;
|
|
54
|
+
};
|
|
55
|
+
description: {
|
|
56
|
+
type: string;
|
|
57
|
+
description: string;
|
|
58
|
+
};
|
|
59
|
+
source: {
|
|
60
|
+
type: string;
|
|
61
|
+
description: string;
|
|
62
|
+
};
|
|
63
|
+
fields: {
|
|
64
|
+
type: string;
|
|
65
|
+
description: string;
|
|
66
|
+
};
|
|
67
|
+
state?: undefined;
|
|
68
|
+
owner?: undefined;
|
|
69
|
+
query?: undefined;
|
|
70
|
+
limit?: undefined;
|
|
71
|
+
name?: undefined;
|
|
72
|
+
profile?: undefined;
|
|
73
|
+
control?: undefined;
|
|
74
|
+
result?: undefined;
|
|
75
|
+
notes?: undefined;
|
|
76
|
+
};
|
|
77
|
+
required: string[];
|
|
78
|
+
};
|
|
79
|
+
} | {
|
|
80
|
+
name: string;
|
|
81
|
+
description: string;
|
|
82
|
+
inputSchema: {
|
|
83
|
+
type: string;
|
|
84
|
+
properties: {
|
|
85
|
+
name: {
|
|
86
|
+
type: string;
|
|
87
|
+
description: string;
|
|
88
|
+
};
|
|
89
|
+
description: {
|
|
90
|
+
type: string;
|
|
91
|
+
description: string;
|
|
92
|
+
};
|
|
93
|
+
profile: {
|
|
94
|
+
type: string;
|
|
95
|
+
description: string;
|
|
96
|
+
};
|
|
97
|
+
fields: {
|
|
98
|
+
type: string;
|
|
99
|
+
description: string;
|
|
100
|
+
};
|
|
101
|
+
state?: undefined;
|
|
102
|
+
owner?: undefined;
|
|
103
|
+
query?: undefined;
|
|
104
|
+
limit?: undefined;
|
|
105
|
+
short_description?: undefined;
|
|
106
|
+
source?: undefined;
|
|
107
|
+
control?: undefined;
|
|
108
|
+
result?: undefined;
|
|
109
|
+
notes?: undefined;
|
|
110
|
+
};
|
|
111
|
+
required: string[];
|
|
112
|
+
};
|
|
113
|
+
} | {
|
|
114
|
+
name: string;
|
|
115
|
+
description: string;
|
|
116
|
+
inputSchema: {
|
|
117
|
+
type: string;
|
|
118
|
+
properties: {
|
|
119
|
+
control: {
|
|
120
|
+
type: string;
|
|
121
|
+
description: string;
|
|
122
|
+
};
|
|
123
|
+
result: {
|
|
124
|
+
type: string;
|
|
125
|
+
description: string;
|
|
126
|
+
};
|
|
127
|
+
notes: {
|
|
128
|
+
type: string;
|
|
129
|
+
description: string;
|
|
130
|
+
};
|
|
131
|
+
fields: {
|
|
132
|
+
type: string;
|
|
133
|
+
description: string;
|
|
134
|
+
};
|
|
135
|
+
state?: undefined;
|
|
136
|
+
owner?: undefined;
|
|
137
|
+
query?: undefined;
|
|
138
|
+
limit?: undefined;
|
|
139
|
+
short_description?: undefined;
|
|
140
|
+
description?: undefined;
|
|
141
|
+
source?: undefined;
|
|
142
|
+
name?: undefined;
|
|
143
|
+
profile?: undefined;
|
|
144
|
+
};
|
|
145
|
+
required: string[];
|
|
146
|
+
};
|
|
147
|
+
})[];
|
|
148
|
+
export declare function executeGrcExtraToolCall(client: ServiceNowClient, name: string, args: Record<string, any>): Promise<any>;
|
|
149
|
+
//# sourceMappingURL=grc-extra.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grc-extra.d.ts","sourceRoot":"","sources":["../../src/tools/grc-extra.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAIhE,wBAAgB,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA2DzC;AAED,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACxB,OAAO,CAAC,GAAG,CAAC,CAuCd"}
|
|
@@ -0,0 +1,115 @@
|
|
|
1
|
+
import { ServiceNowError } from '../utils/errors.js';
|
|
2
|
+
import { requireWrite } from '../utils/permissions.js';
|
|
3
|
+
export function getGrcExtraToolDefinitions() {
|
|
4
|
+
return [
|
|
5
|
+
{
|
|
6
|
+
name: 'list_grc_issues',
|
|
7
|
+
description: 'List GRC issues/findings (sn_grc_issue), optionally by state or owner',
|
|
8
|
+
inputSchema: {
|
|
9
|
+
type: 'object',
|
|
10
|
+
properties: {
|
|
11
|
+
state: { type: 'string', description: 'Issue state filter' },
|
|
12
|
+
owner: { type: 'string', description: 'Owner/assigned user sys_id' },
|
|
13
|
+
query: { type: 'string', description: 'Search issues by short description' },
|
|
14
|
+
limit: { type: 'number', description: 'Max records (default 50)' },
|
|
15
|
+
},
|
|
16
|
+
required: [],
|
|
17
|
+
},
|
|
18
|
+
},
|
|
19
|
+
{
|
|
20
|
+
name: 'create_grc_issue',
|
|
21
|
+
description: 'Raise a GRC issue/finding (sn_grc_issue). Requires WRITE_ENABLED=true',
|
|
22
|
+
inputSchema: {
|
|
23
|
+
type: 'object',
|
|
24
|
+
properties: {
|
|
25
|
+
short_description: { type: 'string', description: 'Issue summary' },
|
|
26
|
+
description: { type: 'string', description: 'Full description' },
|
|
27
|
+
source: { type: 'string', description: 'Source record sys_id (control/risk/audit)' },
|
|
28
|
+
fields: { type: 'object', description: 'Additional field values' },
|
|
29
|
+
},
|
|
30
|
+
required: ['short_description'],
|
|
31
|
+
},
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
name: 'create_grc_control',
|
|
35
|
+
description: 'Author a compliance control (sn_compliance_control). Requires WRITE_ENABLED=true',
|
|
36
|
+
inputSchema: {
|
|
37
|
+
type: 'object',
|
|
38
|
+
properties: {
|
|
39
|
+
name: { type: 'string', description: 'Control name' },
|
|
40
|
+
description: { type: 'string', description: 'Control description' },
|
|
41
|
+
profile: { type: 'string', description: 'Related profile/entity sys_id' },
|
|
42
|
+
fields: { type: 'object', description: 'Additional field values' },
|
|
43
|
+
},
|
|
44
|
+
required: ['name'],
|
|
45
|
+
},
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
name: 'run_control_test',
|
|
49
|
+
description: 'Create/attest a control test (sn_compliance_control_test). Requires WRITE_ENABLED=true',
|
|
50
|
+
inputSchema: {
|
|
51
|
+
type: 'object',
|
|
52
|
+
properties: {
|
|
53
|
+
control: { type: 'string', description: 'sys_id of the control (sn_compliance_control)' },
|
|
54
|
+
result: { type: 'string', description: 'Test result/state (e.g. "pass", "fail")' },
|
|
55
|
+
notes: { type: 'string', description: 'Test notes/evidence' },
|
|
56
|
+
fields: { type: 'object', description: 'Additional field values' },
|
|
57
|
+
},
|
|
58
|
+
required: ['control'],
|
|
59
|
+
},
|
|
60
|
+
},
|
|
61
|
+
];
|
|
62
|
+
}
|
|
63
|
+
export async function executeGrcExtraToolCall(client, name, args) {
|
|
64
|
+
switch (name) {
|
|
65
|
+
case 'list_grc_issues': {
|
|
66
|
+
const parts = [];
|
|
67
|
+
if (args.state)
|
|
68
|
+
parts.push(`state=${args.state}`);
|
|
69
|
+
if (args.owner)
|
|
70
|
+
parts.push(`assigned_to=${args.owner}`);
|
|
71
|
+
if (args.query)
|
|
72
|
+
parts.push(`short_descriptionCONTAINS${args.query}`);
|
|
73
|
+
return await client.queryRecords({ table: 'sn_grc_issue', query: parts.join('^'), limit: args.limit ?? 50 });
|
|
74
|
+
}
|
|
75
|
+
case 'create_grc_issue': {
|
|
76
|
+
requireWrite();
|
|
77
|
+
if (!args.short_description)
|
|
78
|
+
throw new ServiceNowError('short_description is required', 'INVALID_REQUEST');
|
|
79
|
+
const payload = { short_description: args.short_description, ...(args.fields ?? {}) };
|
|
80
|
+
if (args.description)
|
|
81
|
+
payload.description = args.description;
|
|
82
|
+
if (args.source)
|
|
83
|
+
payload.source = args.source;
|
|
84
|
+
const result = await client.createRecord('sn_grc_issue', payload);
|
|
85
|
+
return { ...result, summary: `Created GRC issue "${args.short_description}"` };
|
|
86
|
+
}
|
|
87
|
+
case 'create_grc_control': {
|
|
88
|
+
requireWrite();
|
|
89
|
+
if (!args.name)
|
|
90
|
+
throw new ServiceNowError('name is required', 'INVALID_REQUEST');
|
|
91
|
+
const payload = { name: args.name, ...(args.fields ?? {}) };
|
|
92
|
+
if (args.description)
|
|
93
|
+
payload.description = args.description;
|
|
94
|
+
if (args.profile)
|
|
95
|
+
payload.profile = args.profile;
|
|
96
|
+
const result = await client.createRecord('sn_compliance_control', payload);
|
|
97
|
+
return { ...result, summary: `Created control "${args.name}"` };
|
|
98
|
+
}
|
|
99
|
+
case 'run_control_test': {
|
|
100
|
+
requireWrite();
|
|
101
|
+
if (!args.control)
|
|
102
|
+
throw new ServiceNowError('control is required', 'INVALID_REQUEST');
|
|
103
|
+
const payload = { control: args.control, ...(args.fields ?? {}) };
|
|
104
|
+
if (args.result)
|
|
105
|
+
payload.state = args.result;
|
|
106
|
+
if (args.notes)
|
|
107
|
+
payload.notes = args.notes;
|
|
108
|
+
const result = await client.createRecord('sn_compliance_control_test', payload);
|
|
109
|
+
return { ...result, summary: `Recorded control test for ${args.control}` };
|
|
110
|
+
}
|
|
111
|
+
default:
|
|
112
|
+
return null;
|
|
113
|
+
}
|
|
114
|
+
}
|
|
115
|
+
//# sourceMappingURL=grc-extra.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grc-extra.js","sourceRoot":"","sources":["../../src/tools/grc-extra.ts"],"names":[],"mappings":"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"}
|