@tedorigawa001/servicenow-mcp 1.3.0 → 1.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.
- package/README.md +10 -10
- package/dist/tools/agile.d.ts +1 -4
- package/dist/tools/agile.d.ts.map +1 -1
- package/dist/tools/agile.js +25 -3
- package/dist/tools/agile.js.map +1 -1
- package/dist/tools/app-studio.d.ts +1 -4
- package/dist/tools/app-studio.d.ts.map +1 -1
- package/dist/tools/app-studio.js +25 -4
- package/dist/tools/app-studio.js.map +1 -1
- package/dist/tools/grc-audit.d.ts +157 -0
- package/dist/tools/grc-audit.d.ts.map +1 -0
- package/dist/tools/grc-audit.js +232 -0
- package/dist/tools/grc-audit.js.map +1 -0
- package/dist/tools/grc-compliance.d.ts +788 -0
- package/dist/tools/grc-compliance.d.ts.map +1 -0
- package/dist/tools/grc-compliance.js +672 -0
- package/dist/tools/grc-compliance.js.map +1 -0
- package/dist/tools/grc-indicator.d.ts +290 -0
- package/dist/tools/grc-indicator.d.ts.map +1 -0
- package/dist/tools/grc-indicator.js +228 -0
- package/dist/tools/grc-indicator.js.map +1 -0
- package/dist/tools/grc-risk.d.ts +285 -0
- package/dist/tools/grc-risk.d.ts.map +1 -0
- package/dist/tools/grc-risk.js +256 -0
- package/dist/tools/grc-risk.js.map +1 -0
- package/dist/tools/index.d.ts.map +1 -1
- package/dist/tools/index.js +30 -1
- package/dist/tools/index.js.map +1 -1
- package/dist/tools/portal.d.ts +1 -4
- package/dist/tools/portal.d.ts.map +1 -1
- package/dist/tools/portal.js +32 -8
- package/dist/tools/portal.js.map +1 -1
- package/dist/tools/reporting.d.ts +1 -4
- package/dist/tools/reporting.d.ts.map +1 -1
- package/dist/tools/reporting.js +36 -9
- package/dist/tools/reporting.js.map +1 -1
- package/dist/tools/script.d.ts +1 -4
- package/dist/tools/script.d.ts.map +1 -1
- package/dist/tools/script.js +36 -4
- package/dist/tools/script.js.map +1 -1
- package/dist/tools/security.d.ts +5 -366
- package/dist/tools/security.d.ts.map +1 -1
- package/dist/tools/security.js +5 -148
- package/dist/tools/security.js.map +1 -1
- package/dist/tools/task.d.ts +1 -4
- package/dist/tools/task.d.ts.map +1 -1
- package/dist/tools/task.js +29 -1
- package/dist/tools/task.js.map +1 -1
- package/dist/tools/usem-config.d.ts +2 -8
- package/dist/tools/usem-config.d.ts.map +1 -1
- package/dist/tools/usem-config.js +30 -4
- package/dist/tools/usem-config.js.map +1 -1
- package/dist/tools/usem.d.ts.map +1 -1
- package/dist/tools/usem.js +15 -13
- package/dist/tools/usem.js.map +1 -1
- package/dist/tools/user.d.ts +1 -4
- package/dist/tools/user.d.ts.map +1 -1
- package/dist/tools/user.js +22 -2
- package/dist/tools/user.js.map +1 -1
- package/dist/tools/va.d.ts +1 -4
- package/dist/tools/va.d.ts.map +1 -1
- package/dist/tools/va.js +17 -1
- package/dist/tools/va.js.map +1 -1
- package/package.json +2 -2
package/README.md
CHANGED
|
@@ -12,7 +12,7 @@
|
|
|
12
12
|
<br/>
|
|
13
13
|
|
|
14
14
|
[](https://github.com/tedorigawa001/ServiceNow-MCP)
|
|
15
|
-
[](docs/TOOLS.md)
|
|
16
16
|
[](https://www.npmjs.com/package/@tedorigawa001/servicenow-mcp)
|
|
17
17
|
[](https://www.typescriptlang.org/)
|
|
18
18
|
[](LICENSE)
|
|
@@ -23,15 +23,15 @@
|
|
|
23
23
|
|
|
24
24
|
## AI から ServiceNow を自然言語で操作する MCP サーバー
|
|
25
25
|
|
|
26
|
-
> **ローカル PC で動作 ·
|
|
26
|
+
> **ローカル PC で動作 · 450+ ツール · 5 分セットアップ · MIT ライセンス**
|
|
27
27
|
|
|
28
28
|
Claude・Cursor・VS Code などの AI ツールから、ServiceNow のインシデント・変更・CMDB・スクリプトなどをすべて自然言語で操作できます。
|
|
29
29
|
|
|
30
|
-
### v1.
|
|
30
|
+
### v1.4.0 ハイライト
|
|
31
31
|
|
|
32
|
-
- USEM
|
|
33
|
-
-
|
|
34
|
-
- `
|
|
32
|
+
- 書き込みフィールド許可リストを残りのツール群(user/group・USEM/VRルール・agile・task・scripting・app-studio・portal・reporting・VA topic)に拡張し、mass assignment の穴を解消
|
|
33
|
+
- 許可リストは実行時チェックに加え JSON Schema 側でも `additionalProperties: false` により二重防御
|
|
34
|
+
- USEM のクエリフィルタ値に `sanitizeLikeValue` を適用(生の `query` パラメータは既存の意図通り非サニタイズのまま)
|
|
35
35
|
|
|
36
36
|
</div>
|
|
37
37
|
|
|
@@ -566,7 +566,7 @@ SCRIPTING_ENABLED=false # 本番では原則 false のまま
|
|
|
566
566
|
mindmap
|
|
567
567
|
root((ツールパッケージ))
|
|
568
568
|
full
|
|
569
|
-
全
|
|
569
|
+
全450+ツール
|
|
570
570
|
service_desk
|
|
571
571
|
インシデント管理
|
|
572
572
|
タスク/承認
|
|
@@ -601,7 +601,7 @@ mindmap
|
|
|
601
601
|
|
|
602
602
|
| パッケージ名 | 対象ロール | 主なツール |
|
|
603
603
|
|------------|----------|-----------|
|
|
604
|
-
| `full` | 管理者 | 全ツール (
|
|
604
|
+
| `full` | 管理者 | 全ツール (450+) |
|
|
605
605
|
| `service_desk` | L1/L2 エージェント | インシデント・タスク・KB・SLA |
|
|
606
606
|
| `change_coordinator` | 変更管理者 | 変更リクエスト・CAB・CMDB |
|
|
607
607
|
| `knowledge_author` | KB 著者 | KB 作成・公開 |
|
|
@@ -777,7 +777,7 @@ servicenow-mcp/
|
|
|
777
777
|
│ │ ├── client.ts # REST API クライアント (OAuth)
|
|
778
778
|
│ │ ├── instances.ts # マルチインスタンスマネージャー
|
|
779
779
|
│ │ └── types.ts # TypeScript 型定義
|
|
780
|
-
│ ├── tools/ #
|
|
780
|
+
│ ├── tools/ # 44 ドメインモジュール (450+ ツール)
|
|
781
781
|
│ │ ├── index.ts # ツールルーター & パッケージ定義
|
|
782
782
|
│ │ ├── incident.ts
|
|
783
783
|
│ │ ├── change.ts
|
|
@@ -867,7 +867,7 @@ Model Context Protocol の略で、AI クライアントが外部ツールを呼
|
|
|
867
867
|
|
|
868
868
|
<div align="center">
|
|
869
869
|
|
|
870
|
-
**
|
|
870
|
+
**450+ ツール · 44 モジュール · ローカル PC で動作 · 永久オープンソース**
|
|
871
871
|
|
|
872
872
|
役に立ったら ⭐ スターをお願いします — 他の人が見つけやすくなります。
|
|
873
873
|
|
package/dist/tools/agile.d.ts
CHANGED
|
@@ -53,10 +53,7 @@ export declare function getAgileToolDefinitions(): ({
|
|
|
53
53
|
type: string;
|
|
54
54
|
description: string;
|
|
55
55
|
};
|
|
56
|
-
fields:
|
|
57
|
-
type: string;
|
|
58
|
-
description: string;
|
|
59
|
-
};
|
|
56
|
+
fields: Record<string, any>;
|
|
60
57
|
short_description?: undefined;
|
|
61
58
|
story_points?: undefined;
|
|
62
59
|
sprint?: undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agile.d.ts","sourceRoot":"","sources":["../../src/tools/agile.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"agile.d.ts","sourceRoot":"","sources":["../../src/tools/agile.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAiChE,wBAAgB,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAwHtC;AAED,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACxB,OAAO,CAAC,GAAG,CAAC,CAuEd"}
|
package/dist/tools/agile.js
CHANGED
|
@@ -1,6 +1,23 @@
|
|
|
1
1
|
import { ServiceNowError } from '../utils/errors.js';
|
|
2
2
|
import { requireWrite } from '../utils/permissions.js';
|
|
3
3
|
const TABLE_PREFIX = process.env.AGILE_TABLE_PREFIX || 'rm_';
|
|
4
|
+
const STORY_FIELDS = new Set(['short_description', 'story_points', 'sprint', 'epic', 'description', 'assigned_to']);
|
|
5
|
+
const EPIC_FIELDS = new Set(['short_description', 'description', 'project']);
|
|
6
|
+
const SCRUM_TASK_FIELDS = new Set(['short_description', 'story', 'assigned_to']);
|
|
7
|
+
function allowedFieldsSchema(allowedFields, description) {
|
|
8
|
+
return {
|
|
9
|
+
type: 'object',
|
|
10
|
+
description,
|
|
11
|
+
properties: Object.fromEntries([...allowedFields].map(field => [field, {}])),
|
|
12
|
+
additionalProperties: false,
|
|
13
|
+
};
|
|
14
|
+
}
|
|
15
|
+
function assertAllowedFields(label, action, fields, allowedFields) {
|
|
16
|
+
const unsafeFields = Object.keys(fields).filter(field => !allowedFields.has(field));
|
|
17
|
+
if (unsafeFields.length) {
|
|
18
|
+
throw new ServiceNowError(`${label} fields cannot be ${action}: ${unsafeFields.join(', ')}. Allowed fields: ${[...allowedFields].join(', ')}`, 'VALIDATION_ERROR');
|
|
19
|
+
}
|
|
20
|
+
}
|
|
4
21
|
export function getAgileToolDefinitions() {
|
|
5
22
|
return [
|
|
6
23
|
{
|
|
@@ -26,7 +43,7 @@ export function getAgileToolDefinitions() {
|
|
|
26
43
|
type: 'object',
|
|
27
44
|
properties: {
|
|
28
45
|
sys_id: { type: 'string', description: 'System ID of the story' },
|
|
29
|
-
fields:
|
|
46
|
+
fields: allowedFieldsSchema(STORY_FIELDS, 'Allowed fields: short_description, story_points, sprint, epic, description, assigned_to'),
|
|
30
47
|
},
|
|
31
48
|
required: ['sys_id', 'fields'],
|
|
32
49
|
},
|
|
@@ -64,7 +81,7 @@ export function getAgileToolDefinitions() {
|
|
|
64
81
|
type: 'object',
|
|
65
82
|
properties: {
|
|
66
83
|
sys_id: { type: 'string', description: 'System ID of the epic' },
|
|
67
|
-
fields:
|
|
84
|
+
fields: allowedFieldsSchema(EPIC_FIELDS, 'Allowed fields: short_description, description, project'),
|
|
68
85
|
},
|
|
69
86
|
required: ['sys_id', 'fields'],
|
|
70
87
|
},
|
|
@@ -102,7 +119,7 @@ export function getAgileToolDefinitions() {
|
|
|
102
119
|
type: 'object',
|
|
103
120
|
properties: {
|
|
104
121
|
sys_id: { type: 'string', description: 'System ID of the scrum task' },
|
|
105
|
-
fields:
|
|
122
|
+
fields: allowedFieldsSchema(SCRUM_TASK_FIELDS, 'Allowed fields: short_description, story, assigned_to'),
|
|
106
123
|
},
|
|
107
124
|
required: ['sys_id', 'fields'],
|
|
108
125
|
},
|
|
@@ -131,6 +148,7 @@ export async function executeAgileToolCall(client, name, args) {
|
|
|
131
148
|
requireWrite();
|
|
132
149
|
if (!args.short_description)
|
|
133
150
|
throw new ServiceNowError('short_description is required', 'INVALID_REQUEST');
|
|
151
|
+
assertAllowedFields('Story', 'set', args, STORY_FIELDS);
|
|
134
152
|
const result = await client.createRecord(storyTable, args);
|
|
135
153
|
return { ...result, summary: `Created story ${result.number || result.sys_id}` };
|
|
136
154
|
}
|
|
@@ -138,6 +156,7 @@ export async function executeAgileToolCall(client, name, args) {
|
|
|
138
156
|
requireWrite();
|
|
139
157
|
if (!args.sys_id || !args.fields)
|
|
140
158
|
throw new ServiceNowError('sys_id and fields are required', 'INVALID_REQUEST');
|
|
159
|
+
assertAllowedFields('Story', 'updated', args.fields, STORY_FIELDS);
|
|
141
160
|
return await client.updateRecord(storyTable, args.sys_id, args.fields);
|
|
142
161
|
}
|
|
143
162
|
case 'list_stories': {
|
|
@@ -153,6 +172,7 @@ export async function executeAgileToolCall(client, name, args) {
|
|
|
153
172
|
requireWrite();
|
|
154
173
|
if (!args.short_description)
|
|
155
174
|
throw new ServiceNowError('short_description is required', 'INVALID_REQUEST');
|
|
175
|
+
assertAllowedFields('Epic', 'set', args, EPIC_FIELDS);
|
|
156
176
|
const result = await client.createRecord(epicTable, args);
|
|
157
177
|
return { ...result, summary: `Created epic ${result.number || result.sys_id}` };
|
|
158
178
|
}
|
|
@@ -160,6 +180,7 @@ export async function executeAgileToolCall(client, name, args) {
|
|
|
160
180
|
requireWrite();
|
|
161
181
|
if (!args.sys_id || !args.fields)
|
|
162
182
|
throw new ServiceNowError('sys_id and fields are required', 'INVALID_REQUEST');
|
|
183
|
+
assertAllowedFields('Epic', 'updated', args.fields, EPIC_FIELDS);
|
|
163
184
|
return await client.updateRecord(epicTable, args.sys_id, args.fields);
|
|
164
185
|
}
|
|
165
186
|
case 'list_epics': {
|
|
@@ -187,6 +208,7 @@ export async function executeAgileToolCall(client, name, args) {
|
|
|
187
208
|
requireWrite();
|
|
188
209
|
if (!args.sys_id || !args.fields)
|
|
189
210
|
throw new ServiceNowError('sys_id and fields are required', 'INVALID_REQUEST');
|
|
211
|
+
assertAllowedFields('Scrum task', 'updated', args.fields, SCRUM_TASK_FIELDS);
|
|
190
212
|
return await client.updateRecord(scrumTaskTable, args.sys_id, args.fields);
|
|
191
213
|
}
|
|
192
214
|
case 'list_scrum_tasks': {
|
package/dist/tools/agile.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agile.js","sourceRoot":"","sources":["../../src/tools/agile.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,KAAK,CAAC;
|
|
1
|
+
{"version":3,"file":"agile.js","sourceRoot":"","sources":["../../src/tools/agile.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,MAAM,YAAY,GAAG,OAAO,CAAC,GAAG,CAAC,kBAAkB,IAAI,KAAK,CAAC;AAC7D,MAAM,YAAY,GAAG,IAAI,GAAG,CAAC,CAAC,mBAAmB,EAAE,cAAc,EAAE,QAAQ,EAAE,MAAM,EAAE,aAAa,EAAE,aAAa,CAAC,CAAC,CAAC;AACpH,MAAM,WAAW,GAAG,IAAI,GAAG,CAAC,CAAC,mBAAmB,EAAE,aAAa,EAAE,SAAS,CAAC,CAAC,CAAC;AAC7E,MAAM,iBAAiB,GAAG,IAAI,GAAG,CAAC,CAAC,mBAAmB,EAAE,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;AAEjF,SAAS,mBAAmB,CAAC,aAA0B,EAAE,WAAmB;IAC1E,OAAO;QACL,IAAI,EAAE,QAAQ;QACd,WAAW;QACX,UAAU,EAAE,MAAM,CAAC,WAAW,CAAC,CAAC,GAAG,aAAa,CAAC,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,CAAC;QAC5E,oBAAoB,EAAE,KAAK;KAC5B,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAC1B,KAAa,EACb,MAAyB,EACzB,MAA2B,EAC3B,aAA0B;IAE1B,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;IACpF,IAAI,YAAY,CAAC,MAAM,EAAE,CAAC;QACxB,MAAM,IAAI,eAAe,CACvB,GAAG,KAAK,qBAAqB,MAAM,KAAK,YAAY,CAAC,IAAI,CAAC,IAAI,CAAC,qBAAqB,CAAC,GAAG,aAAa,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,EAAE,EACnH,kBAAkB,CACnB,CAAC;IACJ,CAAC;AACH,CAAC;AAED,MAAM,UAAU,uBAAuB;IACrC,OAAO;QACL;YACE,IAAI,EAAE,cAAc;YACpB,WAAW,EAAE,mEAAmE;YAChF,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,iBAAiB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE;oBACjE,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sBAAsB,EAAE;oBACrE,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uBAAuB,EAAE;oBAChE,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,aAAa,EAAE;oBACpD,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2CAA2C,EAAE;oBACzF,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yBAAyB,EAAE;iBACxE;gBACD,QAAQ,EAAE,CAAC,mBAAmB,CAAC;aAChC;SACF;QACD;YACE,IAAI,EAAE,cAAc;YACpB,WAAW,EAAE,qDAAqD;YAClE,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,wBAAwB,EAAE;oBACjE,MAAM,EAAE,mBAAmB,CAAC,YAAY,EAAE,yFAAyF,CAAC;iBACrI;gBACD,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;aAC/B;SACF;QACD;YACE,IAAI,EAAE,cAAc;YACpB,WAAW,EAAE,yDAAyD;YACtE,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yBAAyB,EAAE;oBAClE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,sEAAsE,EAAE;oBAC9G,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2BAA2B,EAAE;iBACpE;gBACD,QAAQ,EAAE,EAAE;aACb;SACF;QACD;YACE,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE,iDAAiD;YAC9D,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,iBAAiB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE;oBAChE,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,4BAA4B,EAAE;oBAC1E,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gBAAgB,EAAE;iBAC3D;gBACD,QAAQ,EAAE,CAAC,mBAAmB,CAAC;aAChC;SACF;QACD;YACE,IAAI,EAAE,aAAa;YACnB,WAAW,EAAE,8CAA8C;YAC3D,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uBAAuB,EAAE;oBAChE,MAAM,EAAE,mBAAmB,CAAC,WAAW,EAAE,yDAAyD,CAAC;iBACpG;gBACD,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;aAC/B;SACF;QACD;YACE,IAAI,EAAE,YAAY;YAClB,WAAW,EAAE,kDAAkD;YAC/D,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,OAAO,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,0BAA0B,EAAE;oBACpE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iBAAiB,EAAE;oBACzD,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2BAA2B,EAAE;iBACpE;gBACD,QAAQ,EAAE,EAAE;aACb;SACF;QACD;YACE,IAAI,EAAE,mBAAmB;YACzB,WAAW,EAAE,yEAAyE;YACtF,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,iBAAiB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE;oBAChE,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qBAAqB,EAAE;oBACpE,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,8BAA8B,EAAE;iBAC7E;gBACD,QAAQ,EAAE,CAAC,mBAAmB,CAAC;aAChC;SACF;QACD;YACE,IAAI,EAAE,mBAAmB;YACzB,WAAW,EAAE,mDAAmD;YAChE,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,6BAA6B,EAAE;oBACtE,MAAM,EAAE,mBAAmB,CAAC,iBAAiB,EAAE,uDAAuD,CAAC;iBACxG;gBACD,QAAQ,EAAE,CAAC,QAAQ,EAAE,QAAQ,CAAC;aAC/B;SACF;QACD;YACE,IAAI,EAAE,kBAAkB;YACxB,WAAW,EAAE,gDAAgD;YAC7D,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,YAAY,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,+BAA+B,EAAE;oBAC9E,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oBAAoB,EAAE;oBAClE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,2BAA2B,EAAE;iBACpE;gBACD,QAAQ,EAAE,EAAE;aACb;SACF;KACF,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,MAAwB,EACxB,IAAY,EACZ,IAAyB;IAEzB,MAAM,UAAU,GAAG,GAAG,YAAY,OAAO,CAAC;IAC1C,MAAM,SAAS,GAAG,GAAG,YAAY,MAAM,CAAC;IACxC,MAAM,cAAc,GAAG,GAAG,YAAY,YAAY,CAAC;IAEnD,QAAQ,IAAI,EAAE,CAAC;QACb,KAAK,cAAc,CAAC,CAAC,CAAC;YACpB,YAAY,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,iBAAiB;gBAAE,MAAM,IAAI,eAAe,CAAC,+BAA+B,EAAE,iBAAiB,CAAC,CAAC;YAC3G,mBAAmB,CAAC,OAAO,EAAE,KAAK,EAAE,IAAI,EAAE,YAAY,CAAC,CAAC;YACxD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,CAAC;YAC3D,OAAO,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,iBAAiB,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QACnF,CAAC;QACD,KAAK,cAAc,CAAC,CAAC,CAAC;YACpB,YAAY,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,eAAe,CAAC,gCAAgC,EAAE,iBAAiB,CAAC,CAAC;YACjH,mBAAmB,CAAC,OAAO,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,YAAY,CAAC,CAAC;YACnE,OAAO,MAAM,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACzE,CAAC;QACD,KAAK,cAAc,CAAC,CAAC,CAAC;YACpB,IAAI,KAAK,GAAG,EAAE,CAAC;YACf,IAAI,IAAI,CAAC,MAAM;gBAAE,KAAK,GAAG,UAAU,IAAI,CAAC,MAAM,EAAE,CAAC;YACjD,IAAI,IAAI,CAAC,KAAK;gBAAE,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,UAAU,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC;YACvF,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,UAAU,EAAE,KAAK,EAAE,KAAK,IAAI,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,MAAM,EAAE,4EAA4E,EAAE,CAAC,CAAC;YACxM,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,OAAO,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;QACtD,CAAC;QACD,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,YAAY,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,iBAAiB;gBAAE,MAAM,IAAI,eAAe,CAAC,+BAA+B,EAAE,iBAAiB,CAAC,CAAC;YAC3G,mBAAmB,CAAC,MAAM,EAAE,KAAK,EAAE,IAAI,EAAE,WAAW,CAAC,CAAC;YACtD,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,CAAC;YAC1D,OAAO,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,gBAAgB,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QAClF,CAAC;QACD,KAAK,aAAa,CAAC,CAAC,CAAC;YACnB,YAAY,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,eAAe,CAAC,gCAAgC,EAAE,iBAAiB,CAAC,CAAC;YACjH,mBAAmB,CAAC,MAAM,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC;YACjE,OAAO,MAAM,MAAM,CAAC,YAAY,CAAC,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QACxE,CAAC;QACD,KAAK,YAAY,CAAC,CAAC,CAAC;YAClB,IAAI,KAAK,GAAG,EAAE,CAAC;YACf,IAAI,IAAI,CAAC,OAAO;gBAAE,KAAK,GAAG,WAAW,IAAI,CAAC,OAAO,EAAE,CAAC;YACpD,IAAI,IAAI,CAAC,KAAK;gBAAE,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,UAAU,IAAI,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,SAAS,IAAI,CAAC,KAAK,EAAE,CAAC;YACvF,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,KAAK,IAAI,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC,CAAC;YACjH,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,KAAK,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;QACpD,CAAC;QACD,KAAK,mBAAmB,CAAC,CAAC,CAAC;YACzB,YAAY,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,iBAAiB;gBAAE,MAAM,IAAI,eAAe,CAAC,+BAA+B,EAAE,iBAAiB,CAAC,CAAC;YAC3G,MAAM,IAAI,GAAwB,EAAE,iBAAiB,EAAE,IAAI,CAAC,iBAAiB,EAAE,CAAC;YAChF,IAAI,IAAI,CAAC,YAAY;gBAAE,IAAI,CAAC,KAAK,GAAG,IAAI,CAAC,YAAY,CAAC;YACtD,IAAI,IAAI,CAAC,WAAW;gBAAE,IAAI,CAAC,WAAW,GAAG,IAAI,CAAC,WAAW,CAAC;YAC1D,MAAM,MAAM,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,cAAc,EAAE,IAAI,CAAC,CAAC;YAC/D,OAAO,EAAE,GAAG,MAAM,EAAE,OAAO,EAAE,sBAAsB,MAAM,CAAC,MAAM,IAAI,MAAM,CAAC,MAAM,EAAE,EAAE,CAAC;QACxF,CAAC;QACD,KAAK,mBAAmB,CAAC,CAAC,CAAC;YACzB,YAAY,EAAE,CAAC;YACf,IAAI,CAAC,IAAI,CAAC,MAAM,IAAI,CAAC,IAAI,CAAC,MAAM;gBAAE,MAAM,IAAI,eAAe,CAAC,gCAAgC,EAAE,iBAAiB,CAAC,CAAC;YACjH,mBAAmB,CAAC,YAAY,EAAE,SAAS,EAAE,IAAI,CAAC,MAAM,EAAE,iBAAiB,CAAC,CAAC;YAC7E,OAAO,MAAM,MAAM,CAAC,YAAY,CAAC,cAAc,EAAE,IAAI,CAAC,MAAM,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;QAC7E,CAAC;QACD,KAAK,kBAAkB,CAAC,CAAC,CAAC;YACxB,IAAI,KAAK,GAAG,EAAE,CAAC;YACf,IAAI,IAAI,CAAC,YAAY;gBAAE,KAAK,GAAG,SAAS,IAAI,CAAC,YAAY,EAAE,CAAC;YAC5D,IAAI,IAAI,CAAC,WAAW;gBAAE,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,GAAG,KAAK,0BAA0B,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,yBAAyB,IAAI,CAAC,WAAW,EAAE,CAAC;YACzI,MAAM,IAAI,GAAG,MAAM,MAAM,CAAC,YAAY,CAAC,EAAE,KAAK,EAAE,cAAc,EAAE,KAAK,EAAE,KAAK,IAAI,SAAS,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,IAAI,EAAE,EAAE,CAAC,CAAC;YACtH,OAAO,EAAE,KAAK,EAAE,IAAI,CAAC,KAAK,EAAE,WAAW,EAAE,IAAI,CAAC,OAAO,EAAE,CAAC;QAC1D,CAAC;QACD;YACE,OAAO,IAAI,CAAC;IAChB,CAAC;AACH,CAAC"}
|
|
@@ -116,10 +116,7 @@ export declare function getAppStudioToolDefinitions(): ({
|
|
|
116
116
|
type: string;
|
|
117
117
|
description: string;
|
|
118
118
|
};
|
|
119
|
-
fields:
|
|
120
|
-
type: string;
|
|
121
|
-
description: string;
|
|
122
|
-
};
|
|
119
|
+
fields: Record<string, any>;
|
|
123
120
|
query?: undefined;
|
|
124
121
|
active?: undefined;
|
|
125
122
|
limit?: undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-studio.d.ts","sourceRoot":"","sources":["../../src/tools/app-studio.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"app-studio.d.ts","sourceRoot":"","sources":["../../src/tools/app-studio.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAiChE,wBAAgB,2BAA2B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAqE1C;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,CA+Dd"}
|
package/dist/tools/app-studio.js
CHANGED
|
@@ -1,5 +1,28 @@
|
|
|
1
1
|
import { ServiceNowError } from '../utils/errors.js';
|
|
2
2
|
import { requireWrite } from '../utils/permissions.js';
|
|
3
|
+
const SCOPED_APP_UPDATE_FIELDS = new Set([
|
|
4
|
+
'name',
|
|
5
|
+
'version',
|
|
6
|
+
'short_description',
|
|
7
|
+
'description',
|
|
8
|
+
'vendor',
|
|
9
|
+
'active',
|
|
10
|
+
'logo',
|
|
11
|
+
]);
|
|
12
|
+
function allowedFieldsSchema(allowedFields, description) {
|
|
13
|
+
return {
|
|
14
|
+
type: 'object',
|
|
15
|
+
description,
|
|
16
|
+
properties: Object.fromEntries([...allowedFields].map(field => [field, {}])),
|
|
17
|
+
additionalProperties: false,
|
|
18
|
+
};
|
|
19
|
+
}
|
|
20
|
+
function assertAllowedFields(label, fields, allowedFields) {
|
|
21
|
+
const unsafeFields = Object.keys(fields).filter(field => !allowedFields.has(field));
|
|
22
|
+
if (unsafeFields.length) {
|
|
23
|
+
throw new ServiceNowError(`${label} fields cannot be updated: ${unsafeFields.join(', ')}. Allowed fields: ${[...allowedFields].join(', ')}`, 'VALIDATION_ERROR');
|
|
24
|
+
}
|
|
25
|
+
}
|
|
3
26
|
export function getAppStudioToolDefinitions() {
|
|
4
27
|
return [
|
|
5
28
|
// ── Scoped Applications ─────────────────────────────────────────────────
|
|
@@ -59,10 +82,7 @@ export function getAppStudioToolDefinitions() {
|
|
|
59
82
|
type: 'object',
|
|
60
83
|
properties: {
|
|
61
84
|
sys_id: { type: 'string', description: 'App sys_id' },
|
|
62
|
-
fields:
|
|
63
|
-
type: 'object',
|
|
64
|
-
description: 'Fields to update (name, version, short_description, description, active, vendor, etc.)',
|
|
65
|
-
},
|
|
85
|
+
fields: allowedFieldsSchema(SCOPED_APP_UPDATE_FIELDS, 'Allowed fields: name, version, short_description, description, vendor, active, logo'),
|
|
66
86
|
},
|
|
67
87
|
required: ['sys_id', 'fields'],
|
|
68
88
|
},
|
|
@@ -129,6 +149,7 @@ export async function executeAppStudioToolCall(client, name, args) {
|
|
|
129
149
|
requireWrite();
|
|
130
150
|
if (!args.sys_id || !args.fields)
|
|
131
151
|
throw new ServiceNowError('sys_id and fields are required', 'INVALID_REQUEST');
|
|
152
|
+
assertAllowedFields('Scoped app', args.fields, SCOPED_APP_UPDATE_FIELDS);
|
|
132
153
|
const result = await client.updateRecord('sys_app', args.sys_id, args.fields);
|
|
133
154
|
return { ...result, summary: `Updated scoped app ${args.sys_id}` };
|
|
134
155
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app-studio.js","sourceRoot":"","sources":["../../src/tools/app-studio.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACrD,OAAO,EAAE,YAAY,EAAE,MAAM,yBAAyB,CAAC;AAEvD,MAAM,UAAU,2BAA2B;IACzC,OAAO;QACL,2EAA2E;QAC3E;YACE,IAAI,EAAE,kBAAkB;YACxB,WAAW,EAAE,kEAAkE;YAC/E,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qCAAqC,EAAE;oBAC7E,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,4BAA4B,EAAE;oBACtE,KAAK,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,oCAAoC,EAAE;iBAC7E;gBACD,QAAQ,EAAE,EAAE;aACb;SACF;QACD;YACE,IAAI,EAAE,gBAAgB;YACtB,WAAW,EAAE,kEAAkE;YAC/E,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,EAAE,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,gDAAgD,EAAE;iBACtF;gBACD,QAAQ,EAAE,CAAC,IAAI,CAAC;aACjB;SACF;QACD;YACE,IAAI,EAAE,mBAAmB;YACzB,WAAW,EACT,+EAA+E;gBAC/E,8EAA8E;YAChF,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,iCAAiC,EAAE;oBACxE,KAAK,EAAE;wBACL,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,iEAAiE;qBAC/E;oBACD,OAAO,EAAE;wBACP,IAAI,EAAE,QAAQ;wBACd,WAAW,EAAE,iEAAiE;qBAC/E;oBACD,iBAAiB,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,yCAAyC,EAAE;oBAC7F,WAAW,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,qCAAqC,EAAE;oBACnF,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uBAAuB,EAAE;oBAChE,MAAM,EAAE,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,8CAA8C,EAAE;oBACxF,IAAI,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,uCAAuC,EAAE;iBAC/E;gBACD,QAAQ,EAAE,CAAC,MAAM,EAAE,OAAO,CAAC;aAC5B;SACF;QACD;YACE,IAAI,EAAE,mBAAmB;YACzB,WAAW,EAAE,qEAAqE;YAClF,WAAW,EAAE;gBACX,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACV,MAAM,EAAE,EAAE,IAAI,EAAE,QAAQ,EAAE,WAAW,EAAE,YAAY,EAAE;oBACrD,MAAM,EAAE
|
|
1
|
+
{"version":3,"file":"app-studio.js","sourceRoot":"","sources":["../../src/tools/app-studio.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,157 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* GRC — Audit Management tools. Covers Engagements (audit projects) and
|
|
3
|
+
* Control Tests (the actual "audit result" record — `sn_audit_result` does
|
|
4
|
+
* not exist; see docs/GRC_DESIGN.md).
|
|
5
|
+
*
|
|
6
|
+
* Read tools: Tier 0. Write tools: Tier 1 (WRITE_ENABLED=true).
|
|
7
|
+
*
|
|
8
|
+
* Tables verified against a live PDI (dev400464, 2026-07-12):
|
|
9
|
+
* - sn_audit_engagement (Engagement) — number prefix ENG, extends planned_task
|
|
10
|
+
* - sn_audit_control_test (Control Test) — number prefix CTR, subclass of sn_audit_task
|
|
11
|
+
* sn_audit_task itself has 0 direct records — always query the subclass
|
|
12
|
+
* (sn_audit_control_test / sn_audit_activity / sn_audit_interview /
|
|
13
|
+
* sn_audit_walkthrough), never sn_audit_task alone.
|
|
14
|
+
*/
|
|
15
|
+
import type { ServiceNowClient } from '../servicenow/client.js';
|
|
16
|
+
export declare function getGrcAuditToolDefinitions(): ({
|
|
17
|
+
name: string;
|
|
18
|
+
description: string;
|
|
19
|
+
inputSchema: {
|
|
20
|
+
type: string;
|
|
21
|
+
properties: {
|
|
22
|
+
state: {
|
|
23
|
+
type: string;
|
|
24
|
+
description: string;
|
|
25
|
+
};
|
|
26
|
+
engagement_type: {
|
|
27
|
+
type: string;
|
|
28
|
+
description: string;
|
|
29
|
+
};
|
|
30
|
+
query: {
|
|
31
|
+
type: string;
|
|
32
|
+
description: string;
|
|
33
|
+
};
|
|
34
|
+
limit: {
|
|
35
|
+
type: string;
|
|
36
|
+
description: string;
|
|
37
|
+
};
|
|
38
|
+
display_value: {
|
|
39
|
+
description: string;
|
|
40
|
+
oneOf: ({
|
|
41
|
+
type: string;
|
|
42
|
+
enum?: undefined;
|
|
43
|
+
} | {
|
|
44
|
+
type: string;
|
|
45
|
+
enum: string[];
|
|
46
|
+
})[];
|
|
47
|
+
};
|
|
48
|
+
number_or_sysid?: undefined;
|
|
49
|
+
control?: undefined;
|
|
50
|
+
test_plan?: undefined;
|
|
51
|
+
design_effectiveness?: undefined;
|
|
52
|
+
operation_effectiveness?: undefined;
|
|
53
|
+
top?: undefined;
|
|
54
|
+
};
|
|
55
|
+
required?: undefined;
|
|
56
|
+
};
|
|
57
|
+
} | {
|
|
58
|
+
name: string;
|
|
59
|
+
description: string;
|
|
60
|
+
inputSchema: {
|
|
61
|
+
type: string;
|
|
62
|
+
properties: {
|
|
63
|
+
number_or_sysid: {
|
|
64
|
+
type: string;
|
|
65
|
+
description: string;
|
|
66
|
+
};
|
|
67
|
+
state?: undefined;
|
|
68
|
+
engagement_type?: undefined;
|
|
69
|
+
query?: undefined;
|
|
70
|
+
limit?: undefined;
|
|
71
|
+
display_value?: undefined;
|
|
72
|
+
control?: undefined;
|
|
73
|
+
test_plan?: undefined;
|
|
74
|
+
design_effectiveness?: undefined;
|
|
75
|
+
operation_effectiveness?: undefined;
|
|
76
|
+
top?: undefined;
|
|
77
|
+
};
|
|
78
|
+
required: string[];
|
|
79
|
+
};
|
|
80
|
+
} | {
|
|
81
|
+
name: string;
|
|
82
|
+
description: string;
|
|
83
|
+
inputSchema: {
|
|
84
|
+
type: string;
|
|
85
|
+
properties: {
|
|
86
|
+
state: {
|
|
87
|
+
type: string;
|
|
88
|
+
description: string;
|
|
89
|
+
};
|
|
90
|
+
control: {
|
|
91
|
+
type: string;
|
|
92
|
+
description: string;
|
|
93
|
+
};
|
|
94
|
+
test_plan: {
|
|
95
|
+
type: string;
|
|
96
|
+
description: string;
|
|
97
|
+
};
|
|
98
|
+
design_effectiveness: {
|
|
99
|
+
type: string;
|
|
100
|
+
enum: string[];
|
|
101
|
+
description: string;
|
|
102
|
+
};
|
|
103
|
+
operation_effectiveness: {
|
|
104
|
+
type: string;
|
|
105
|
+
enum: string[];
|
|
106
|
+
description: string;
|
|
107
|
+
};
|
|
108
|
+
query: {
|
|
109
|
+
type: string;
|
|
110
|
+
description: string;
|
|
111
|
+
};
|
|
112
|
+
limit: {
|
|
113
|
+
type: string;
|
|
114
|
+
description: string;
|
|
115
|
+
};
|
|
116
|
+
display_value: {
|
|
117
|
+
description: string;
|
|
118
|
+
oneOf: ({
|
|
119
|
+
type: string;
|
|
120
|
+
enum?: undefined;
|
|
121
|
+
} | {
|
|
122
|
+
type: string;
|
|
123
|
+
enum: string[];
|
|
124
|
+
})[];
|
|
125
|
+
};
|
|
126
|
+
engagement_type?: undefined;
|
|
127
|
+
number_or_sysid?: undefined;
|
|
128
|
+
top?: undefined;
|
|
129
|
+
};
|
|
130
|
+
required?: undefined;
|
|
131
|
+
};
|
|
132
|
+
} | {
|
|
133
|
+
name: string;
|
|
134
|
+
description: string;
|
|
135
|
+
inputSchema: {
|
|
136
|
+
type: string;
|
|
137
|
+
properties: {
|
|
138
|
+
top: {
|
|
139
|
+
type: string;
|
|
140
|
+
description: string;
|
|
141
|
+
};
|
|
142
|
+
state?: undefined;
|
|
143
|
+
engagement_type?: undefined;
|
|
144
|
+
query?: undefined;
|
|
145
|
+
limit?: undefined;
|
|
146
|
+
display_value?: undefined;
|
|
147
|
+
number_or_sysid?: undefined;
|
|
148
|
+
control?: undefined;
|
|
149
|
+
test_plan?: undefined;
|
|
150
|
+
design_effectiveness?: undefined;
|
|
151
|
+
operation_effectiveness?: undefined;
|
|
152
|
+
};
|
|
153
|
+
required?: undefined;
|
|
154
|
+
};
|
|
155
|
+
})[];
|
|
156
|
+
export declare function executeGrcAuditToolCall(client: ServiceNowClient, name: string, args: Record<string, any>): Promise<any>;
|
|
157
|
+
//# sourceMappingURL=grc-audit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"grc-audit.d.ts","sourceRoot":"","sources":["../../src/tools/grc-audit.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;GAaG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAuDhE,wBAAgB,0BAA0B;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA+EzC;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,CAwGd"}
|