nowaikit 3.1.0 → 4.0.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (229) hide show
  1. package/desktop/renderer/dist/assets/index-D46KUWoj.js +49 -0
  2. package/desktop/renderer/dist/index.html +5 -5
  3. package/desktop/serve.cjs +88 -0
  4. package/dist/a2a/agent-card.d.ts +8 -0
  5. package/dist/a2a/agent-card.d.ts.map +1 -0
  6. package/dist/a2a/agent-card.js +82 -0
  7. package/dist/a2a/agent-card.js.map +1 -0
  8. package/dist/a2a/index.d.ts +13 -0
  9. package/dist/a2a/index.d.ts.map +1 -0
  10. package/dist/a2a/index.js +74 -0
  11. package/dist/a2a/index.js.map +1 -0
  12. package/dist/a2a/task-manager.d.ts +20 -0
  13. package/dist/a2a/task-manager.d.ts.map +1 -0
  14. package/dist/a2a/task-manager.js +148 -0
  15. package/dist/a2a/task-manager.js.map +1 -0
  16. package/dist/a2a/types.d.ts +73 -0
  17. package/dist/a2a/types.d.ts.map +1 -0
  18. package/dist/a2a/types.js +6 -0
  19. package/dist/a2a/types.js.map +1 -0
  20. package/dist/api/index.d.ts +16 -0
  21. package/dist/api/index.d.ts.map +1 -0
  22. package/dist/api/index.js +106 -0
  23. package/dist/api/index.js.map +1 -0
  24. package/dist/cli/config-store.d.ts +9 -0
  25. package/dist/cli/config-store.d.ts.map +1 -1
  26. package/dist/cli/config-store.js.map +1 -1
  27. package/dist/cli/index.js +100 -6
  28. package/dist/cli/index.js.map +1 -1
  29. package/dist/cli/setup.d.ts.map +1 -1
  30. package/dist/cli/setup.js +196 -13
  31. package/dist/cli/setup.js.map +1 -1
  32. package/dist/cli/writers/index.d.ts.map +1 -1
  33. package/dist/cli/writers/index.js +4 -3
  34. package/dist/cli/writers/index.js.map +1 -1
  35. package/dist/dashboard/index.d.ts +7 -0
  36. package/dist/dashboard/index.d.ts.map +1 -0
  37. package/dist/dashboard/index.js +111 -0
  38. package/dist/dashboard/index.js.map +1 -0
  39. package/dist/direct/llm-client.d.ts +1 -1
  40. package/dist/direct/llm-client.d.ts.map +1 -1
  41. package/dist/direct/llm-client.js +6 -1
  42. package/dist/direct/llm-client.js.map +1 -1
  43. package/dist/prompts/capabilities/build-app.d.ts.map +1 -1
  44. package/dist/prompts/capabilities/build-app.js +2 -0
  45. package/dist/prompts/capabilities/build-app.js.map +1 -1
  46. package/dist/prompts/capabilities/build-atf-suite.d.ts +4 -0
  47. package/dist/prompts/capabilities/build-atf-suite.d.ts.map +1 -0
  48. package/dist/prompts/capabilities/build-atf-suite.js +143 -0
  49. package/dist/prompts/capabilities/build-atf-suite.js.map +1 -0
  50. package/dist/prompts/capabilities/build-business-rule.d.ts.map +1 -1
  51. package/dist/prompts/capabilities/build-business-rule.js +2 -0
  52. package/dist/prompts/capabilities/build-business-rule.js.map +1 -1
  53. package/dist/prompts/capabilities/build-catalog.d.ts.map +1 -1
  54. package/dist/prompts/capabilities/build-catalog.js +2 -0
  55. package/dist/prompts/capabilities/build-catalog.js.map +1 -1
  56. package/dist/prompts/capabilities/build-client-script.d.ts.map +1 -1
  57. package/dist/prompts/capabilities/build-client-script.js +2 -0
  58. package/dist/prompts/capabilities/build-client-script.js.map +1 -1
  59. package/dist/prompts/capabilities/build-flow.d.ts.map +1 -1
  60. package/dist/prompts/capabilities/build-flow.js +2 -0
  61. package/dist/prompts/capabilities/build-flow.js.map +1 -1
  62. package/dist/prompts/capabilities/build-portal.d.ts.map +1 -1
  63. package/dist/prompts/capabilities/build-portal.js +2 -0
  64. package/dist/prompts/capabilities/build-portal.js.map +1 -1
  65. package/dist/prompts/capabilities/build-rest-api.d.ts.map +1 -1
  66. package/dist/prompts/capabilities/build-rest-api.js +2 -0
  67. package/dist/prompts/capabilities/build-rest-api.js.map +1 -1
  68. package/dist/prompts/capabilities/build-test-plan.d.ts.map +1 -1
  69. package/dist/prompts/capabilities/build-test-plan.js +2 -0
  70. package/dist/prompts/capabilities/build-test-plan.js.map +1 -1
  71. package/dist/prompts/capabilities/build-uib.d.ts.map +1 -1
  72. package/dist/prompts/capabilities/build-uib.js +2 -0
  73. package/dist/prompts/capabilities/build-uib.js.map +1 -1
  74. package/dist/prompts/capabilities/docs-app.d.ts.map +1 -1
  75. package/dist/prompts/capabilities/docs-app.js +2 -0
  76. package/dist/prompts/capabilities/docs-app.js.map +1 -1
  77. package/dist/prompts/capabilities/docs-release.d.ts.map +1 -1
  78. package/dist/prompts/capabilities/docs-release.js +2 -0
  79. package/dist/prompts/capabilities/docs-release.js.map +1 -1
  80. package/dist/prompts/capabilities/docs-runbook.d.ts.map +1 -1
  81. package/dist/prompts/capabilities/docs-runbook.js +2 -0
  82. package/dist/prompts/capabilities/docs-runbook.js.map +1 -1
  83. package/dist/prompts/capabilities/docs-script.d.ts.map +1 -1
  84. package/dist/prompts/capabilities/docs-script.js +2 -0
  85. package/dist/prompts/capabilities/docs-script.js.map +1 -1
  86. package/dist/prompts/capabilities/ops-deploy.d.ts.map +1 -1
  87. package/dist/prompts/capabilities/ops-deploy.js +2 -0
  88. package/dist/prompts/capabilities/ops-deploy.js.map +1 -1
  89. package/dist/prompts/capabilities/ops-risk.d.ts.map +1 -1
  90. package/dist/prompts/capabilities/ops-risk.js +2 -0
  91. package/dist/prompts/capabilities/ops-risk.js.map +1 -1
  92. package/dist/prompts/capabilities/ops-triage.d.ts.map +1 -1
  93. package/dist/prompts/capabilities/ops-triage.js +2 -0
  94. package/dist/prompts/capabilities/ops-triage.js.map +1 -1
  95. package/dist/prompts/capabilities/review-acls.d.ts.map +1 -1
  96. package/dist/prompts/capabilities/review-acls.js +2 -0
  97. package/dist/prompts/capabilities/review-acls.js.map +1 -1
  98. package/dist/prompts/capabilities/review-code.d.ts.map +1 -1
  99. package/dist/prompts/capabilities/review-code.js +2 -0
  100. package/dist/prompts/capabilities/review-code.js.map +1 -1
  101. package/dist/prompts/capabilities/review-flows.d.ts.map +1 -1
  102. package/dist/prompts/capabilities/review-flows.js +2 -0
  103. package/dist/prompts/capabilities/review-flows.js.map +1 -1
  104. package/dist/prompts/capabilities/review-scripts.d.ts.map +1 -1
  105. package/dist/prompts/capabilities/review-scripts.js +2 -0
  106. package/dist/prompts/capabilities/review-scripts.js.map +1 -1
  107. package/dist/prompts/capabilities/scan-automation.d.ts.map +1 -1
  108. package/dist/prompts/capabilities/scan-automation.js +2 -0
  109. package/dist/prompts/capabilities/scan-automation.js.map +1 -1
  110. package/dist/prompts/capabilities/scan-cmdb.d.ts.map +1 -1
  111. package/dist/prompts/capabilities/scan-cmdb.js +2 -0
  112. package/dist/prompts/capabilities/scan-cmdb.js.map +1 -1
  113. package/dist/prompts/capabilities/scan-debt.d.ts.map +1 -1
  114. package/dist/prompts/capabilities/scan-debt.js +2 -0
  115. package/dist/prompts/capabilities/scan-debt.js.map +1 -1
  116. package/dist/prompts/capabilities/scan-health.d.ts.map +1 -1
  117. package/dist/prompts/capabilities/scan-health.js +2 -0
  118. package/dist/prompts/capabilities/scan-health.js.map +1 -1
  119. package/dist/prompts/capabilities/scan-security.d.ts.map +1 -1
  120. package/dist/prompts/capabilities/scan-security.js +2 -0
  121. package/dist/prompts/capabilities/scan-security.js.map +1 -1
  122. package/dist/prompts/capabilities/scan-upgrade.d.ts.map +1 -1
  123. package/dist/prompts/capabilities/scan-upgrade.js +2 -0
  124. package/dist/prompts/capabilities/scan-upgrade.js.map +1 -1
  125. package/dist/prompts/index.d.ts.map +1 -1
  126. package/dist/prompts/index.js +2 -0
  127. package/dist/prompts/index.js.map +1 -1
  128. package/dist/reports/brand.d.ts +79 -0
  129. package/dist/reports/brand.d.ts.map +1 -0
  130. package/dist/reports/brand.js +204 -0
  131. package/dist/reports/brand.js.map +1 -0
  132. package/dist/reports/charts.d.ts +11 -0
  133. package/dist/reports/charts.d.ts.map +1 -0
  134. package/dist/reports/charts.js +91 -0
  135. package/dist/reports/charts.js.map +1 -0
  136. package/dist/reports/index.d.ts +13 -0
  137. package/dist/reports/index.d.ts.map +1 -0
  138. package/dist/reports/index.js +65 -0
  139. package/dist/reports/index.js.map +1 -0
  140. package/dist/reports/parser.d.ts +13 -0
  141. package/dist/reports/parser.d.ts.map +1 -0
  142. package/dist/reports/parser.js +202 -0
  143. package/dist/reports/parser.js.map +1 -0
  144. package/dist/reports/pdf-generator.d.ts +8 -0
  145. package/dist/reports/pdf-generator.d.ts.map +1 -0
  146. package/dist/reports/pdf-generator.js +244 -0
  147. package/dist/reports/pdf-generator.js.map +1 -0
  148. package/dist/reports/pptx-generator.d.ts +8 -0
  149. package/dist/reports/pptx-generator.d.ts.map +1 -0
  150. package/dist/reports/pptx-generator.js +273 -0
  151. package/dist/reports/pptx-generator.js.map +1 -0
  152. package/dist/reports/types.d.ts +60 -0
  153. package/dist/reports/types.d.ts.map +1 -0
  154. package/dist/reports/types.js +7 -0
  155. package/dist/reports/types.js.map +1 -0
  156. package/dist/resources/index.d.ts.map +1 -1
  157. package/dist/resources/index.js +10 -0
  158. package/dist/resources/index.js.map +1 -1
  159. package/dist/resources/query-syntax.d.ts +6 -0
  160. package/dist/resources/query-syntax.d.ts.map +1 -0
  161. package/dist/resources/query-syntax.js +113 -0
  162. package/dist/resources/query-syntax.js.map +1 -0
  163. package/dist/sdk/index.d.ts +2 -0
  164. package/dist/sdk/index.d.ts.map +1 -1
  165. package/dist/sdk/index.js +2 -0
  166. package/dist/sdk/index.js.map +1 -1
  167. package/dist/server.d.ts +2 -1
  168. package/dist/server.d.ts.map +1 -1
  169. package/dist/server.js +103 -92
  170. package/dist/server.js.map +1 -1
  171. package/dist/tools/ai-agents.d.ts +145 -0
  172. package/dist/tools/ai-agents.d.ts.map +1 -0
  173. package/dist/tools/ai-agents.js +185 -0
  174. package/dist/tools/ai-agents.js.map +1 -0
  175. package/dist/tools/cmdb-reconciliation.d.ts +112 -0
  176. package/dist/tools/cmdb-reconciliation.d.ts.map +1 -0
  177. package/dist/tools/cmdb-reconciliation.js +267 -0
  178. package/dist/tools/cmdb-reconciliation.js.map +1 -0
  179. package/dist/tools/discovery.d.ts +34 -0
  180. package/dist/tools/discovery.d.ts.map +1 -0
  181. package/dist/tools/discovery.js +168 -0
  182. package/dist/tools/discovery.js.map +1 -0
  183. package/dist/tools/fluent.d.ts +105 -11
  184. package/dist/tools/fluent.d.ts.map +1 -1
  185. package/dist/tools/fluent.js +118 -1
  186. package/dist/tools/fluent.js.map +1 -1
  187. package/dist/tools/index.d.ts +840 -0
  188. package/dist/tools/index.d.ts.map +1 -1
  189. package/dist/tools/index.js +44 -6
  190. package/dist/tools/index.js.map +1 -1
  191. package/dist/tools/ml.d.ts +104 -0
  192. package/dist/tools/ml.d.ts.map +1 -1
  193. package/dist/tools/ml.js +139 -0
  194. package/dist/tools/ml.js.map +1 -1
  195. package/dist/tools/now-assist-skills.d.ts +129 -0
  196. package/dist/tools/now-assist-skills.d.ts.map +1 -0
  197. package/dist/tools/now-assist-skills.js +128 -0
  198. package/dist/tools/now-assist-skills.js.map +1 -0
  199. package/dist/tools/orchestration.d.ts +132 -0
  200. package/dist/tools/orchestration.d.ts.map +1 -0
  201. package/dist/tools/orchestration.js +320 -0
  202. package/dist/tools/orchestration.js.map +1 -0
  203. package/dist/tools/reporting.d.ts +127 -1
  204. package/dist/tools/reporting.d.ts.map +1 -1
  205. package/dist/tools/reporting.js +64 -0
  206. package/dist/tools/reporting.js.map +1 -1
  207. package/dist/tools/schema-cache.d.ts +44 -0
  208. package/dist/tools/schema-cache.d.ts.map +1 -0
  209. package/dist/tools/schema-cache.js +127 -0
  210. package/dist/tools/schema-cache.js.map +1 -0
  211. package/dist/tools-manifest.json +660 -0
  212. package/dist/transport/auth-middleware.d.ts +16 -0
  213. package/dist/transport/auth-middleware.d.ts.map +1 -0
  214. package/dist/transport/auth-middleware.js +31 -0
  215. package/dist/transport/auth-middleware.js.map +1 -0
  216. package/dist/transport/http-server.d.ts +44 -0
  217. package/dist/transport/http-server.d.ts.map +1 -0
  218. package/dist/transport/http-server.js +172 -0
  219. package/dist/transport/http-server.js.map +1 -0
  220. package/dist/transport/index.d.ts +19 -0
  221. package/dist/transport/index.d.ts.map +1 -0
  222. package/dist/transport/index.js +105 -0
  223. package/dist/transport/index.js.map +1 -0
  224. package/dist/utils/permissions.d.ts +2 -0
  225. package/dist/utils/permissions.d.ts.map +1 -1
  226. package/dist/utils/permissions.js +8 -0
  227. package/dist/utils/permissions.js.map +1 -1
  228. package/package.json +7 -1
  229. package/desktop/renderer/dist/assets/index-C_5k3daB.js +0 -49
@@ -0,0 +1,267 @@
1
+ import { ServiceNowError } from '../utils/errors.js';
2
+ import { requireCmdbWrite } from '../utils/permissions.js';
3
+ export function getCmdbReconciliationToolDefinitions() {
4
+ return [
5
+ {
6
+ name: 'cmdb_find_duplicates',
7
+ description: 'Find duplicate CIs by matching on specified fields (in-memory grouping)',
8
+ inputSchema: {
9
+ type: 'object',
10
+ properties: {
11
+ ci_class: { type: 'string', description: 'CI class table (default cmdb_ci)' },
12
+ match_fields: {
13
+ type: 'array',
14
+ items: { type: 'string' },
15
+ description: 'Fields to match on for duplicate detection (default: name, serial_number, ip_address)',
16
+ },
17
+ limit: { type: 'number', description: 'Max CIs to scan (default 100)' },
18
+ },
19
+ required: [],
20
+ },
21
+ },
22
+ {
23
+ name: 'cmdb_find_orphans',
24
+ description: 'Find CIs with no relationships in cmdb_rel_ci',
25
+ inputSchema: {
26
+ type: 'object',
27
+ properties: {
28
+ ci_class: { type: 'string', description: 'CI class table (default cmdb_ci)' },
29
+ limit: { type: 'number', description: 'Max orphan CIs to return (default 50)' },
30
+ },
31
+ required: [],
32
+ },
33
+ },
34
+ {
35
+ name: 'cmdb_find_stale',
36
+ description: 'Find CIs not updated within a given number of days that are still operational',
37
+ inputSchema: {
38
+ type: 'object',
39
+ properties: {
40
+ ci_class: { type: 'string', description: 'CI class table (default cmdb_ci)' },
41
+ days_threshold: { type: 'number', description: 'Number of days since last update to consider stale (default 90)' },
42
+ limit: { type: 'number', description: 'Max stale CIs to return (default 50)' },
43
+ },
44
+ required: [],
45
+ },
46
+ },
47
+ {
48
+ name: 'cmdb_reconcile',
49
+ description: 'Act on duplicate, stale, or orphan CIs — merge, retire, or remove (requires CMDB_WRITE_ENABLED). Supports dry_run mode.',
50
+ inputSchema: {
51
+ type: 'object',
52
+ properties: {
53
+ action: {
54
+ type: 'string',
55
+ enum: ['merge_duplicates', 'retire_stale', 'remove_orphans'],
56
+ description: 'Reconciliation action to perform',
57
+ },
58
+ targets: {
59
+ type: 'array',
60
+ items: { type: 'string' },
61
+ description: 'Array of CI sys_ids to act on',
62
+ },
63
+ dry_run: { type: 'boolean', description: 'Preview changes without applying (default true)' },
64
+ },
65
+ required: ['action', 'targets'],
66
+ },
67
+ },
68
+ ];
69
+ }
70
+ const CMDB_RECON_TOOL_NAMES = new Set([
71
+ 'cmdb_find_duplicates', 'cmdb_find_orphans', 'cmdb_find_stale', 'cmdb_reconcile',
72
+ ]);
73
+ export async function executeCmdbReconciliationToolCall(client, name, args) {
74
+ if (!CMDB_RECON_TOOL_NAMES.has(name))
75
+ return null;
76
+ switch (name) {
77
+ case 'cmdb_find_duplicates': {
78
+ const ciClass = args.ci_class || 'cmdb_ci';
79
+ const matchFields = args.match_fields && Array.isArray(args.match_fields) && args.match_fields.length > 0
80
+ ? args.match_fields
81
+ : ['name', 'serial_number', 'ip_address'];
82
+ const limit = args.limit || 100;
83
+ const fields = ['sys_id', 'name', 'sys_class_name', ...matchFields].filter((v, i, a) => a.indexOf(v) === i);
84
+ const resp = await client.queryRecords({
85
+ table: ciClass,
86
+ query: 'active=true',
87
+ limit,
88
+ fields: fields.join(','),
89
+ });
90
+ // Group CIs by composite key of match fields
91
+ const groups = new Map();
92
+ for (const record of resp.records) {
93
+ const key = matchFields
94
+ .map((f) => String(record[f] ?? '').toLowerCase().trim())
95
+ .join('||');
96
+ // Skip records where all match fields are empty
97
+ const allEmpty = matchFields.every((f) => !record[f] || String(record[f]).trim() === '');
98
+ if (allEmpty)
99
+ continue;
100
+ if (!groups.has(key))
101
+ groups.set(key, []);
102
+ groups.get(key).push(record);
103
+ }
104
+ // Filter to groups with more than one CI (actual duplicates)
105
+ const duplicates = [];
106
+ for (const [key, records] of groups) {
107
+ if (records.length > 1) {
108
+ duplicates.push({ match_key: key, count: records.length, records });
109
+ }
110
+ }
111
+ return {
112
+ ci_class: ciClass,
113
+ match_fields: matchFields,
114
+ scanned: resp.records.length,
115
+ duplicate_groups: duplicates.length,
116
+ duplicates,
117
+ };
118
+ }
119
+ case 'cmdb_find_orphans': {
120
+ const ciClass = args.ci_class || 'cmdb_ci';
121
+ const limit = args.limit || 50;
122
+ const ciResp = await client.queryRecords({
123
+ table: ciClass,
124
+ query: 'active=true',
125
+ limit,
126
+ fields: 'sys_id,name,sys_class_name,operational_status',
127
+ });
128
+ const orphans = [];
129
+ for (const ci of ciResp.records) {
130
+ const sysId = String(ci.sys_id);
131
+ // Check for any relationship (as parent or child)
132
+ const relResp = await client.queryRecords({
133
+ table: 'cmdb_rel_ci',
134
+ query: `parent=${sysId}^ORchild=${sysId}`,
135
+ limit: 1,
136
+ fields: 'sys_id',
137
+ });
138
+ if (relResp.count === 0) {
139
+ orphans.push(ci);
140
+ }
141
+ }
142
+ return {
143
+ ci_class: ciClass,
144
+ scanned: ciResp.records.length,
145
+ orphan_count: orphans.length,
146
+ orphans,
147
+ };
148
+ }
149
+ case 'cmdb_find_stale': {
150
+ const ciClass = args.ci_class || 'cmdb_ci';
151
+ const daysThreshold = args.days_threshold || 90;
152
+ const limit = args.limit || 50;
153
+ const query = `sys_updated_on<javascript:gs.daysAgo(${daysThreshold})^operational_status=1^active=true`;
154
+ const resp = await client.queryRecords({
155
+ table: ciClass,
156
+ query,
157
+ limit,
158
+ fields: 'sys_id,name,sys_class_name,operational_status,sys_updated_on,discovery_source',
159
+ });
160
+ return {
161
+ ci_class: ciClass,
162
+ days_threshold: daysThreshold,
163
+ stale_count: resp.count,
164
+ stale_cis: resp.records,
165
+ };
166
+ }
167
+ case 'cmdb_reconcile': {
168
+ requireCmdbWrite();
169
+ if (!args.action)
170
+ throw new ServiceNowError('action is required', 'INVALID_REQUEST');
171
+ if (!args.targets || !Array.isArray(args.targets) || args.targets.length === 0) {
172
+ throw new ServiceNowError('targets must be a non-empty array of sys_ids', 'INVALID_REQUEST');
173
+ }
174
+ const validActions = ['merge_duplicates', 'retire_stale', 'remove_orphans'];
175
+ if (!validActions.includes(args.action)) {
176
+ throw new ServiceNowError(`Invalid action: "${args.action}". Must be one of: ${validActions.join(', ')}`, 'INVALID_REQUEST');
177
+ }
178
+ const dryRun = args.dry_run !== false;
179
+ const results = [];
180
+ switch (args.action) {
181
+ case 'merge_duplicates': {
182
+ // First target is the survivor; remaining are merged into it
183
+ const [survivorId, ...duplicateIds] = args.targets;
184
+ if (duplicateIds.length === 0) {
185
+ throw new ServiceNowError('merge_duplicates requires at least 2 targets (first is survivor)', 'INVALID_REQUEST');
186
+ }
187
+ if (dryRun) {
188
+ results.push({ sys_id: survivorId, action: 'keep', status: 'dry_run', detail: 'Would be kept as the survivor CI' });
189
+ for (const dupId of duplicateIds) {
190
+ results.push({ sys_id: dupId, action: 'retire', status: 'dry_run', detail: 'Would be retired and relationships moved to survivor' });
191
+ }
192
+ }
193
+ else {
194
+ results.push({ sys_id: survivorId, action: 'keep', status: 'completed', detail: 'Kept as survivor CI' });
195
+ for (const dupId of duplicateIds) {
196
+ // Move relationships from duplicate to survivor
197
+ const parentRels = await client.queryRecords({
198
+ table: 'cmdb_rel_ci',
199
+ query: `parent=${dupId}`,
200
+ limit: 200,
201
+ fields: 'sys_id,child,type',
202
+ });
203
+ for (const rel of parentRels.records) {
204
+ await client.updateRecord('cmdb_rel_ci', String(rel.sys_id), { parent: survivorId });
205
+ }
206
+ const childRels = await client.queryRecords({
207
+ table: 'cmdb_rel_ci',
208
+ query: `child=${dupId}`,
209
+ limit: 200,
210
+ fields: 'sys_id,parent,type',
211
+ });
212
+ for (const rel of childRels.records) {
213
+ await client.updateRecord('cmdb_rel_ci', String(rel.sys_id), { child: survivorId });
214
+ }
215
+ // Retire the duplicate
216
+ await client.updateRecord('cmdb_ci', dupId, {
217
+ operational_status: 6, // retired
218
+ install_status: 7, // retired
219
+ });
220
+ results.push({ sys_id: dupId, action: 'retire', status: 'completed', detail: `Retired; ${parentRels.count + childRels.count} relationships moved to survivor` });
221
+ }
222
+ }
223
+ break;
224
+ }
225
+ case 'retire_stale': {
226
+ for (const sysId of args.targets) {
227
+ if (dryRun) {
228
+ results.push({ sys_id: sysId, action: 'retire', status: 'dry_run', detail: 'Would set operational_status=6 (retired)' });
229
+ }
230
+ else {
231
+ await client.updateRecord('cmdb_ci', sysId, {
232
+ operational_status: 6,
233
+ install_status: 7,
234
+ });
235
+ results.push({ sys_id: sysId, action: 'retire', status: 'completed', detail: 'Set operational_status=6 (retired)' });
236
+ }
237
+ }
238
+ break;
239
+ }
240
+ case 'remove_orphans': {
241
+ for (const sysId of args.targets) {
242
+ if (dryRun) {
243
+ results.push({ sys_id: sysId, action: 'retire', status: 'dry_run', detail: 'Would retire orphan CI (operational_status=6)' });
244
+ }
245
+ else {
246
+ await client.updateRecord('cmdb_ci', sysId, {
247
+ operational_status: 6,
248
+ install_status: 7,
249
+ });
250
+ results.push({ sys_id: sysId, action: 'retire', status: 'completed', detail: 'Orphan CI retired (operational_status=6)' });
251
+ }
252
+ }
253
+ break;
254
+ }
255
+ }
256
+ return {
257
+ action: args.action,
258
+ dry_run: dryRun,
259
+ target_count: args.targets.length,
260
+ results,
261
+ };
262
+ }
263
+ default:
264
+ return null;
265
+ }
266
+ }
267
+ //# sourceMappingURL=cmdb-reconciliation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cmdb-reconciliation.js","sourceRoot":"","sources":["../../src/tools/cmdb-reconciliation.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,34 @@
1
+ /**
2
+ * Dynamic Schema Discovery tool — reads table schema at runtime and generates
3
+ * ad-hoc CRUD tools for any ServiceNow table.
4
+ *
5
+ * Tools:
6
+ * discover_table — Discover a table's schema and register dynamic CRUD tools
7
+ */
8
+ import type { ServiceNowClient } from '../servicenow/client.js';
9
+ export declare function getDiscoveryToolDefinitions(): {
10
+ name: string;
11
+ description: string;
12
+ inputSchema: {
13
+ type: string;
14
+ properties: {
15
+ table: {
16
+ type: string;
17
+ description: string;
18
+ };
19
+ operations: {
20
+ type: string;
21
+ description: string;
22
+ items: {
23
+ type: string;
24
+ enum: string[];
25
+ };
26
+ };
27
+ };
28
+ required: string[];
29
+ };
30
+ }[];
31
+ export declare function executeDiscoveryToolCall(client: ServiceNowClient, name: string, args: Record<string, any>): Promise<any>;
32
+ /** Execute a dynamically discovered tool. */
33
+ export declare function executeDynamicToolCall(client: ServiceNowClient, name: string, args: Record<string, any>): Promise<any>;
34
+ //# sourceMappingURL=discovery.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discovery.d.ts","sourceRoot":"","sources":["../../src/tools/discovery.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAKhE,wBAAgB,2BAA2B;;;;;;;;;;;;;;;;;;;;;IAuB1C;AAED,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACxB,OAAO,CAAC,GAAG,CAAC,CA2Fd;AAED,6CAA6C;AAC7C,wBAAsB,sBAAsB,CAC1C,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACxB,OAAO,CAAC,GAAG,CAAC,CAwDd"}
@@ -0,0 +1,168 @@
1
+ import { ServiceNowError } from '../utils/errors.js';
2
+ import { schemaCache } from './schema-cache.js';
3
+ import { requireWrite } from '../utils/permissions.js';
4
+ export function getDiscoveryToolDefinitions() {
5
+ return [
6
+ {
7
+ name: 'discover_table',
8
+ description: 'Discover a ServiceNow table schema and register dynamic CRUD tools for it. ' +
9
+ 'After discovery, new tools become available: dynamic_query_<table>, dynamic_get_<table>, ' +
10
+ 'dynamic_create_<table>, dynamic_update_<table>, dynamic_delete_<table>. ' +
11
+ 'Schemas are cached for 30 minutes.',
12
+ inputSchema: {
13
+ type: 'object',
14
+ properties: {
15
+ table: { type: 'string', description: 'Table name to discover (e.g., "u_custom_table")' },
16
+ operations: {
17
+ type: 'array',
18
+ description: 'Operations to enable: query, get, create, update, delete. Default: all.',
19
+ items: { type: 'string', enum: ['query', 'get', 'create', 'update', 'delete'] },
20
+ },
21
+ },
22
+ required: ['table'],
23
+ },
24
+ },
25
+ ];
26
+ }
27
+ export async function executeDiscoveryToolCall(client, name, args) {
28
+ if (name !== 'discover_table')
29
+ return null;
30
+ const table = args.table;
31
+ if (!table || typeof table !== 'string') {
32
+ throw new ServiceNowError('table is required', 'INVALID_REQUEST');
33
+ }
34
+ // Check cache first
35
+ const cached = schemaCache.get(table);
36
+ if (cached) {
37
+ return {
38
+ table,
39
+ source: 'cache',
40
+ columns: cached.columns.length,
41
+ available_tools: cached.generatedToolNames,
42
+ cache_expires_in_minutes: Math.round((cached.ttlMs - (Date.now() - cached.cachedAt)) / 60000),
43
+ };
44
+ }
45
+ // Query sys_dictionary for detailed schema
46
+ const dictResult = await client.queryRecords({
47
+ table: 'sys_dictionary',
48
+ query: `name=${table}^elementISNOTEMPTY^internal_type!=collection`,
49
+ fields: 'element,internal_type,column_label,max_length,mandatory,reference,read_only,default_value',
50
+ limit: 200,
51
+ });
52
+ if (dictResult.count === 0) {
53
+ // Fallback: try to query the table directly to verify it exists
54
+ try {
55
+ const probe = await client.queryRecords({ table, limit: 1 });
56
+ if (probe.count === 0 && probe.records.length === 0) {
57
+ throw new ServiceNowError(`Table "${table}" not found or has no schema`, 'NOT_FOUND');
58
+ }
59
+ // Table exists but no sys_dictionary entries — build minimal schema from record keys
60
+ const record = probe.records[0] || {};
61
+ const columns = Object.keys(record).map(key => ({
62
+ element: key,
63
+ internal_type: 'string',
64
+ label: key,
65
+ max_length: 255,
66
+ mandatory: false,
67
+ read_only: key.startsWith('sys_'),
68
+ default_value: undefined,
69
+ }));
70
+ const toolNames = buildToolNames(table, args.operations);
71
+ schemaCache.set(table, columns, toolNames);
72
+ return {
73
+ table,
74
+ source: 'record_probe',
75
+ columns: columns.length,
76
+ available_tools: toolNames,
77
+ note: 'Schema derived from record structure (sys_dictionary unavailable)',
78
+ };
79
+ }
80
+ catch (e) {
81
+ if (e instanceof ServiceNowError)
82
+ throw e;
83
+ throw new ServiceNowError(`Table "${table}" not found`, 'NOT_FOUND');
84
+ }
85
+ }
86
+ // Parse sys_dictionary results into ColumnSchema
87
+ const columns = dictResult.records.map((r) => ({
88
+ element: r.element,
89
+ internal_type: r.internal_type || 'string',
90
+ label: r.column_label || r.element,
91
+ max_length: parseInt(r.max_length) || 255,
92
+ mandatory: r.mandatory === 'true' || r.mandatory === true,
93
+ reference: r.reference || undefined,
94
+ read_only: r.read_only === 'true' || r.read_only === true,
95
+ default_value: r.default_value || undefined,
96
+ }));
97
+ const toolNames = buildToolNames(table, args.operations);
98
+ schemaCache.set(table, columns, toolNames);
99
+ return {
100
+ table,
101
+ source: 'sys_dictionary',
102
+ columns: columns.length,
103
+ column_details: columns.slice(0, 20).map(c => ({
104
+ name: c.element,
105
+ type: c.internal_type,
106
+ label: c.label,
107
+ mandatory: c.mandatory,
108
+ reference: c.reference,
109
+ })),
110
+ available_tools: toolNames,
111
+ };
112
+ }
113
+ /** Execute a dynamically discovered tool. */
114
+ export async function executeDynamicToolCall(client, name, args) {
115
+ // Check if this is a dynamic tool
116
+ const match = name.match(/^dynamic_(query|get|create|update|delete)_(.+)$/);
117
+ if (!match)
118
+ return null;
119
+ const operation = match[1];
120
+ const table = match[2];
121
+ // Verify schema is cached
122
+ const cached = schemaCache.get(table);
123
+ if (!cached) {
124
+ throw new ServiceNowError(`Table "${table}" schema not cached. Run discover_table first.`, 'SCHEMA_NOT_CACHED');
125
+ }
126
+ switch (operation) {
127
+ case 'query': {
128
+ const limit = Math.min(args.limit || 20, 200);
129
+ return client.queryRecords({
130
+ table,
131
+ query: args.query,
132
+ fields: args.fields,
133
+ limit,
134
+ orderBy: args.orderBy,
135
+ });
136
+ }
137
+ case 'get': {
138
+ if (!args.sys_id)
139
+ throw new ServiceNowError('sys_id is required', 'INVALID_REQUEST');
140
+ return client.getRecord(table, args.sys_id, args.fields);
141
+ }
142
+ case 'create': {
143
+ requireWrite();
144
+ const { sys_id: _sysId, ...fields } = args; // eslint-disable-line @typescript-eslint/no-unused-vars
145
+ return client.createRecord(table, fields);
146
+ }
147
+ case 'update': {
148
+ requireWrite();
149
+ if (!args.sys_id)
150
+ throw new ServiceNowError('sys_id is required', 'INVALID_REQUEST');
151
+ const { sys_id, ...fields } = args;
152
+ return client.updateRecord(table, sys_id, fields);
153
+ }
154
+ case 'delete': {
155
+ requireWrite();
156
+ if (!args.sys_id)
157
+ throw new ServiceNowError('sys_id is required', 'INVALID_REQUEST');
158
+ return client.deleteRecord(table, args.sys_id);
159
+ }
160
+ default:
161
+ return null;
162
+ }
163
+ }
164
+ function buildToolNames(table, operations) {
165
+ const ops = operations || ['query', 'get', 'create', 'update', 'delete'];
166
+ return ops.map(op => `dynamic_${op}_${table}`);
167
+ }
168
+ //# sourceMappingURL=discovery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"discovery.js","sourceRoot":"","sources":["../../src/tools/discovery.ts"],"names":[],"mappings":"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"}
@@ -1,14 +1,3 @@
1
- /**
2
- * Fluent / GlideQuery-style tools — modern query interface for ServiceNow.
3
- *
4
- * Provides:
5
- * - fluent_query: GlideQuery-style chained query builder (select, where, aggregate)
6
- * - batch_request: Execute multiple API operations in a single HTTP call
7
- * - execute_script: Run server-side GlideQuery/GlideRecord scripts via Background Script
8
- *
9
- * These tools give AI agents a modern, expressive way to interact with ServiceNow
10
- * that mirrors the GlideQuery API developers use in the platform.
11
- */
12
1
  import type { ServiceNowClient } from '../servicenow/client.js';
13
2
  export declare function getFluentToolDefinitions(): ({
14
3
  name: string;
@@ -75,6 +64,10 @@ export declare function getFluentToolDefinitions(): ({
75
64
  operations?: undefined;
76
65
  script?: undefined;
77
66
  scope?: undefined;
67
+ topic?: undefined;
68
+ name?: undefined;
69
+ template?: undefined;
70
+ directory?: undefined;
78
71
  };
79
72
  required: string[];
80
73
  };
@@ -125,6 +118,10 @@ export declare function getFluentToolDefinitions(): ({
125
118
  displayValue?: undefined;
126
119
  script?: undefined;
127
120
  scope?: undefined;
121
+ topic?: undefined;
122
+ name?: undefined;
123
+ template?: undefined;
124
+ directory?: undefined;
128
125
  };
129
126
  required: string[];
130
127
  };
@@ -153,9 +150,106 @@ export declare function getFluentToolDefinitions(): ({
153
150
  limit?: undefined;
154
151
  displayValue?: undefined;
155
152
  operations?: undefined;
153
+ topic?: undefined;
154
+ name?: undefined;
155
+ template?: undefined;
156
+ directory?: undefined;
156
157
  };
157
158
  required: string[];
158
159
  };
160
+ } | {
161
+ name: string;
162
+ description: string;
163
+ inputSchema: {
164
+ type: string;
165
+ properties: {
166
+ topic: {
167
+ type: string;
168
+ description: string;
169
+ };
170
+ table?: undefined;
171
+ where?: undefined;
172
+ orWhere?: undefined;
173
+ select?: undefined;
174
+ aggregate?: undefined;
175
+ aggregateField?: undefined;
176
+ groupBy?: undefined;
177
+ orderBy?: undefined;
178
+ limit?: undefined;
179
+ displayValue?: undefined;
180
+ operations?: undefined;
181
+ script?: undefined;
182
+ scope?: undefined;
183
+ name?: undefined;
184
+ template?: undefined;
185
+ directory?: undefined;
186
+ };
187
+ required: string[];
188
+ };
189
+ } | {
190
+ name: string;
191
+ description: string;
192
+ inputSchema: {
193
+ type: string;
194
+ properties: {
195
+ name: {
196
+ type: string;
197
+ description: string;
198
+ };
199
+ template: {
200
+ type: string;
201
+ description: string;
202
+ };
203
+ directory: {
204
+ type: string;
205
+ description: string;
206
+ };
207
+ table?: undefined;
208
+ where?: undefined;
209
+ orWhere?: undefined;
210
+ select?: undefined;
211
+ aggregate?: undefined;
212
+ aggregateField?: undefined;
213
+ groupBy?: undefined;
214
+ orderBy?: undefined;
215
+ limit?: undefined;
216
+ displayValue?: undefined;
217
+ operations?: undefined;
218
+ script?: undefined;
219
+ scope?: undefined;
220
+ topic?: undefined;
221
+ };
222
+ required: string[];
223
+ };
224
+ } | {
225
+ name: string;
226
+ description: string;
227
+ inputSchema: {
228
+ type: string;
229
+ properties: {
230
+ directory: {
231
+ type: string;
232
+ description: string;
233
+ };
234
+ table?: undefined;
235
+ where?: undefined;
236
+ orWhere?: undefined;
237
+ select?: undefined;
238
+ aggregate?: undefined;
239
+ aggregateField?: undefined;
240
+ groupBy?: undefined;
241
+ orderBy?: undefined;
242
+ limit?: undefined;
243
+ displayValue?: undefined;
244
+ operations?: undefined;
245
+ script?: undefined;
246
+ scope?: undefined;
247
+ topic?: undefined;
248
+ name?: undefined;
249
+ template?: undefined;
250
+ };
251
+ required: never[];
252
+ };
159
253
  })[];
160
254
  export declare function executeFluentToolCall(client: ServiceNowClient, name: string, args: Record<string, any>): Promise<any>;
161
255
  //# sourceMappingURL=fluent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"fluent.d.ts","sourceRoot":"","sources":["../../src/tools/fluent.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG;AACH,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAIhE,wBAAgB,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KAsHvC;AAgED,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACxB,OAAO,CAAC,GAAG,CAAC,CAyHd"}
1
+ {"version":3,"file":"fluent.d.ts","sourceRoot":"","sources":["../../src/tools/fluent.ts"],"names":[],"mappings":"AAaA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AAkBhE,wBAAgB,wBAAwB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;KA+KvC;AAgED,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,gBAAgB,EACxB,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GACxB,OAAO,CAAC,GAAG,CAAC,CA6Jd"}