arc-1 0.6.5 → 0.6.7
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/dist/adt/client.d.ts +2 -0
- package/dist/adt/client.d.ts.map +1 -1
- package/dist/adt/client.js +8 -0
- package/dist/adt/client.js.map +1 -1
- package/dist/adt/config.d.ts +2 -0
- package/dist/adt/config.d.ts.map +1 -1
- package/dist/adt/config.js.map +1 -1
- package/dist/adt/devtools.d.ts +2 -2
- package/dist/adt/devtools.d.ts.map +1 -1
- package/dist/adt/devtools.js +4 -4
- package/dist/adt/devtools.js.map +1 -1
- package/dist/adt/discovery.d.ts +13 -0
- package/dist/adt/discovery.d.ts.map +1 -0
- package/dist/adt/discovery.js +104 -0
- package/dist/adt/discovery.js.map +1 -0
- package/dist/adt/errors.d.ts +15 -0
- package/dist/adt/errors.d.ts.map +1 -1
- package/dist/adt/errors.js +132 -5
- package/dist/adt/errors.js.map +1 -1
- package/dist/adt/features.d.ts.map +1 -1
- package/dist/adt/features.js +5 -2
- package/dist/adt/features.js.map +1 -1
- package/dist/adt/http.d.ts +12 -1
- package/dist/adt/http.d.ts.map +1 -1
- package/dist/adt/http.js +110 -5
- package/dist/adt/http.js.map +1 -1
- package/dist/adt/semaphore.d.ts +24 -0
- package/dist/adt/semaphore.d.ts.map +1 -0
- package/dist/adt/semaphore.js +56 -0
- package/dist/adt/semaphore.js.map +1 -0
- package/dist/adt/types.d.ts +4 -0
- package/dist/adt/types.d.ts.map +1 -1
- package/dist/adt/xml-parser.d.ts +7 -0
- package/dist/adt/xml-parser.d.ts.map +1 -1
- package/dist/adt/xml-parser.js +80 -0
- package/dist/adt/xml-parser.js.map +1 -1
- package/dist/handlers/intent.d.ts +4 -0
- package/dist/handlers/intent.d.ts.map +1 -1
- package/dist/handlers/intent.js +71 -10
- package/dist/handlers/intent.js.map +1 -1
- package/dist/handlers/schemas.d.ts +10 -0
- package/dist/handlers/schemas.d.ts.map +1 -1
- package/dist/handlers/schemas.js +34 -4
- package/dist/handlers/schemas.js.map +1 -1
- package/dist/handlers/tools.d.ts.map +1 -1
- package/dist/handlers/tools.js +29 -7
- package/dist/handlers/tools.js.map +1 -1
- package/dist/server/config.d.ts.map +1 -1
- package/dist/server/config.js +6 -0
- package/dist/server/config.js.map +1 -1
- package/dist/server/server.d.ts +1 -1
- package/dist/server/server.d.ts.map +1 -1
- package/dist/server/server.js +8 -2
- package/dist/server/server.js.map +1 -1
- package/dist/server/types.d.ts +2 -0
- package/dist/server/types.d.ts.map +1 -1
- package/dist/server/types.js +1 -0
- package/dist/server/types.js.map +1 -1
- package/package.json +1 -1
package/dist/adt/errors.js
CHANGED
|
@@ -27,8 +27,15 @@ export class AdtApiError extends AdtError {
|
|
|
27
27
|
path;
|
|
28
28
|
responseBody;
|
|
29
29
|
constructor(message, statusCode, path, responseBody) {
|
|
30
|
-
// Extract a human-readable message, stripping raw XML/HTML
|
|
31
|
-
|
|
30
|
+
// Extract a human-readable message, stripping raw XML/HTML.
|
|
31
|
+
// Try the truncated message first; if that only yields a generic title (e.g., "Application Server Error"),
|
|
32
|
+
// retry with the full responseBody which may contain deeper error details (e.g., <span id="msgText">).
|
|
33
|
+
let clean = AdtApiError.extractCleanMessage(message);
|
|
34
|
+
if (responseBody && responseBody.length > message.length && /^Application Server Error/.test(clean)) {
|
|
35
|
+
const deepClean = AdtApiError.extractCleanMessage(responseBody);
|
|
36
|
+
if (deepClean !== clean)
|
|
37
|
+
clean = deepClean;
|
|
38
|
+
}
|
|
32
39
|
super(`ADT API error: status ${statusCode} at ${path}: ${clean}`);
|
|
33
40
|
this.statusCode = statusCode;
|
|
34
41
|
this.path = path;
|
|
@@ -50,16 +57,26 @@ export class AdtApiError extends AdtError {
|
|
|
50
57
|
if (xmlMatch?.[1]) {
|
|
51
58
|
return xmlMatch[1].trim();
|
|
52
59
|
}
|
|
53
|
-
// 2. Try HTML: extract <
|
|
60
|
+
// 2. Try HTML: extract SAP's error detail from <span id="msgText"> or <p class="detailText">
|
|
61
|
+
// SAP 500 pages embed the actual error (e.g., "Syntax error in program ...") in these elements.
|
|
62
|
+
const msgTextMatch = raw.match(/<span\s+id="msgText"[^>]*>([^<]+)</) ?? raw.match(/<p\s+class="detailText"[^>]*>([^<]+)</);
|
|
63
|
+
if (msgTextMatch?.[1]) {
|
|
64
|
+
const detail = msgTextMatch[1].trim();
|
|
65
|
+
// Also grab the title for context (e.g., "Application Server Error")
|
|
66
|
+
const titleMatch = raw.match(/<title>([^<]+)</);
|
|
67
|
+
const title = titleMatch?.[1]?.trim();
|
|
68
|
+
return title && title !== detail ? `${title}: ${detail}` : detail;
|
|
69
|
+
}
|
|
70
|
+
// 3. Try HTML: extract <title> or <h1> content
|
|
54
71
|
const htmlMatch = raw.match(/<title>([^<]+)</) ?? raw.match(/<h1>([^<]+)</);
|
|
55
72
|
if (htmlMatch?.[1]) {
|
|
56
73
|
return htmlMatch[1].trim();
|
|
57
74
|
}
|
|
58
|
-
//
|
|
75
|
+
// 4. If no XML/HTML tags at all, it's plain text — use as-is (truncated)
|
|
59
76
|
if (!raw.includes('<')) {
|
|
60
77
|
return raw.slice(0, 300);
|
|
61
78
|
}
|
|
62
|
-
//
|
|
79
|
+
// 5. Fallback: strip all tags and use whatever text remains
|
|
63
80
|
const stripped = raw
|
|
64
81
|
.replace(/<[^>]+>/g, ' ')
|
|
65
82
|
.replace(/\s+/g, ' ')
|
|
@@ -199,6 +216,116 @@ export class AdtApiError extends AdtError {
|
|
|
199
216
|
return `DDIC diagnostics:\n${lines.join('\n')}`;
|
|
200
217
|
}
|
|
201
218
|
}
|
|
219
|
+
/** Extract SAP ADT exception type id from XML response bodies. */
|
|
220
|
+
export function extractExceptionType(xml) {
|
|
221
|
+
if (!xml?.includes('<'))
|
|
222
|
+
return undefined;
|
|
223
|
+
const match = xml.match(/<(?:\w+:)?type\s+id="([^"]+)"\s*\/>|<(?:\w+:)?type\s+id="([^"]+)">/i);
|
|
224
|
+
return match?.[1] ?? match?.[2];
|
|
225
|
+
}
|
|
226
|
+
/** Extract lock owner details (user + transport/task) from SAP lock messages. */
|
|
227
|
+
export function extractLockOwner(text) {
|
|
228
|
+
if (!text)
|
|
229
|
+
return undefined;
|
|
230
|
+
const userMatch = text.match(/\blocked by(?:\s+user)?\s+["']?([A-Z0-9_.$/-]+)["']?/i) ??
|
|
231
|
+
text.match(/\bbeing edited by(?:\s+user)?\s+["']?([A-Z0-9_.$/-]+)["']?/i) ??
|
|
232
|
+
text.match(/\buser\s+["']?([A-Z0-9_.$/-]+)["']?\s+is\s+currently\s+editing\b/i);
|
|
233
|
+
const transportMatch = text.match(/\b(?:in\s+)?(?:task|transport|request)\s+([A-Z0-9]{3,}\d{4,})\b/i) ??
|
|
234
|
+
text.match(/\b([A-Z]\d{2}[A-Z]\d{6})\b/i);
|
|
235
|
+
const user = userMatch?.[1]?.replace(/[.,;:)]$/, '');
|
|
236
|
+
const transport = transportMatch?.[1]?.replace(/[.,;:)]$/, '');
|
|
237
|
+
if (!user && !transport)
|
|
238
|
+
return undefined;
|
|
239
|
+
return {
|
|
240
|
+
...(user ? { user } : {}),
|
|
241
|
+
...(transport ? { transport } : {}),
|
|
242
|
+
};
|
|
243
|
+
}
|
|
244
|
+
/** Classify SAP ADT errors into actionable domain categories with remediation hints. */
|
|
245
|
+
export function classifySapDomainError(statusCode, responseBody) {
|
|
246
|
+
const bodyRaw = responseBody ?? '';
|
|
247
|
+
const bodyLower = bodyRaw.toLowerCase();
|
|
248
|
+
const typeId = extractExceptionType(bodyRaw);
|
|
249
|
+
const lockPattern = /\blocked by\b|\bbeing edited by\b|\bcurrently editing\b|\bresource is locked\b|\balready locked\b/i.test(bodyRaw);
|
|
250
|
+
if (typeId === 'ExceptionResourceLockedByAnotherUser' ||
|
|
251
|
+
((statusCode === 409 || statusCode === 403) && lockPattern)) {
|
|
252
|
+
const owner = extractLockOwner(bodyRaw);
|
|
253
|
+
const lockHintParts = ['Object is locked'];
|
|
254
|
+
if (owner?.user && owner?.transport) {
|
|
255
|
+
lockHintParts.push(`by user ${owner.user} in transport ${owner.transport}`);
|
|
256
|
+
}
|
|
257
|
+
else if (owner?.user) {
|
|
258
|
+
lockHintParts.push(`by user ${owner.user}`);
|
|
259
|
+
}
|
|
260
|
+
else if (owner?.transport) {
|
|
261
|
+
lockHintParts.push(`in transport ${owner.transport}`);
|
|
262
|
+
}
|
|
263
|
+
else {
|
|
264
|
+
lockHintParts.push('by another user/session');
|
|
265
|
+
}
|
|
266
|
+
return {
|
|
267
|
+
category: 'lock-conflict',
|
|
268
|
+
hint: `${lockHintParts.join(' ')}. Check SM12 in SAP GUI for lock entries, or wait for the lock to be released.`,
|
|
269
|
+
transaction: 'SM12',
|
|
270
|
+
details: {
|
|
271
|
+
...(typeId ? { exceptionType: typeId } : {}),
|
|
272
|
+
...(owner?.user ? { user: owner.user } : {}),
|
|
273
|
+
...(owner?.transport ? { transport: owner.transport } : {}),
|
|
274
|
+
},
|
|
275
|
+
};
|
|
276
|
+
}
|
|
277
|
+
if (typeId === 'ExceptionResourceInvalidLockHandle' || statusCode === 423) {
|
|
278
|
+
return {
|
|
279
|
+
category: 'enqueue-error',
|
|
280
|
+
hint: 'Lock handle is invalid or expired. The lock may have timed out. Retry the operation so ARC-1 acquires a fresh lock. If the error persists, check SM12 for stale lock entries.',
|
|
281
|
+
transaction: 'SM12',
|
|
282
|
+
details: typeId ? { exceptionType: typeId } : undefined,
|
|
283
|
+
};
|
|
284
|
+
}
|
|
285
|
+
const authPattern = /\bauthorization\b|not authorized|s_develop|s_adt_res|s_transprt/i.test(bodyRaw);
|
|
286
|
+
if (typeId === 'ExceptionNotAuthorized' || (statusCode === 403 && authPattern)) {
|
|
287
|
+
return {
|
|
288
|
+
category: 'authorization',
|
|
289
|
+
hint: 'The SAP user lacks required authorization. Run transaction SU53 in SAP GUI to inspect the last failed authorization check. Common objects: S_DEVELOP (development), S_ADT_RES (ADT resources), S_TRANSPRT (transports). Contact your basis admin or review PFCG role assignments.',
|
|
290
|
+
transaction: 'SU53',
|
|
291
|
+
details: typeId ? { exceptionType: typeId } : undefined,
|
|
292
|
+
};
|
|
293
|
+
}
|
|
294
|
+
const objectExistsPattern = bodyLower.includes('already exists') || bodyLower.includes('does already exist');
|
|
295
|
+
const resourceExistsPattern = /\bresource\b[^.\n]*\bdoes?\s+already\s+exist\b/i.test(bodyRaw) ||
|
|
296
|
+
/\bresource\b[^.\n]*\balready exists\b/i.test(bodyRaw);
|
|
297
|
+
if ((typeId === 'ExceptionResourceCreationFailure' || resourceExistsPattern) && objectExistsPattern) {
|
|
298
|
+
return {
|
|
299
|
+
category: 'object-exists',
|
|
300
|
+
hint: 'An object with this name already exists. Use SAPRead to inspect the existing object, or choose a different name.',
|
|
301
|
+
details: typeId ? { exceptionType: typeId } : undefined,
|
|
302
|
+
};
|
|
303
|
+
}
|
|
304
|
+
if (/activat(e|ion)/i.test(bodyRaw) &&
|
|
305
|
+
(/\bdependency\b/i.test(bodyRaw) || /\binactive\b/i.test(bodyRaw) || /\bnot active\b/i.test(bodyRaw))) {
|
|
306
|
+
return {
|
|
307
|
+
category: 'activation-dependency',
|
|
308
|
+
hint: "Activation failed due to inactive dependencies. Use SAPRead(type='INACTIVE_OBJECTS') to list inactive objects, then activate dependencies first with SAPActivate.",
|
|
309
|
+
details: typeId ? { exceptionType: typeId } : undefined,
|
|
310
|
+
};
|
|
311
|
+
}
|
|
312
|
+
if (/\badjustment\b|\bupgrade mode\b|\bspau(?:_enh)?\b/i.test(bodyRaw)) {
|
|
313
|
+
return {
|
|
314
|
+
category: 'transport-issue',
|
|
315
|
+
hint: 'SAP is in adjustment/upgrade mode. Development changes may be blocked until upgrade activities are complete. Check SPAU/SPAU_ENH in SAP GUI.',
|
|
316
|
+
transaction: 'SPAU',
|
|
317
|
+
details: typeId ? { exceptionType: typeId } : undefined,
|
|
318
|
+
};
|
|
319
|
+
}
|
|
320
|
+
if (typeId === 'ExceptionMethodNotSupported' || statusCode === 405) {
|
|
321
|
+
return {
|
|
322
|
+
category: 'method-not-supported',
|
|
323
|
+
hint: 'The ADT endpoint rejected this HTTP method. Verify the operation is supported on this SAP release and retry with the correct tool action.',
|
|
324
|
+
details: typeId ? { exceptionType: typeId } : undefined,
|
|
325
|
+
};
|
|
326
|
+
}
|
|
327
|
+
return undefined;
|
|
328
|
+
}
|
|
202
329
|
function parseOptionalInt(value) {
|
|
203
330
|
if (!value)
|
|
204
331
|
return undefined;
|
package/dist/adt/errors.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/adt/errors.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"errors.js","sourceRoot":"","sources":["../../src/adt/errors.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"features.d.ts","sourceRoot":"","sources":["../../src/adt/features.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,KAAK,EAAE,aAAa,EAAe,MAAM,aAAa,CAAC;
|
|
1
|
+
{"version":3,"file":"features.d.ts","sourceRoot":"","sources":["../../src/adt/features.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AACzC,OAAO,KAAK,EAAE,aAAa,EAAe,MAAM,aAAa,CAAC;AAG9D,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,WAAW,CAAC;AAC/C,OAAO,KAAK,EAAE,eAAe,EAAiB,gBAAgB,EAAE,UAAU,EAAE,MAAM,YAAY,CAAC;AA2C/F;;;;;;GAMG;AACH,wBAAsB,aAAa,CACjC,MAAM,EAAE,aAAa,EACrB,MAAM,EAAE,aAAa,EACrB,kBAAkB,CAAC,EAAE,MAAM,GAC1B,OAAO,CAAC,gBAAgB,CAAC,CAsE3B;AAED;;;;;;;;;GASG;AACH,wBAAgB,8BAA8B,CAAC,OAAO,EAAE,MAAM,GAAG,OAAO,CAqBvE;AAkCD;;;GAGG;AACH,wBAAgB,gBAAgB,CAC9B,UAAU,EAAE,KAAK,CAAC;IAAE,IAAI,EAAE,MAAM,CAAC;IAAC,OAAO,EAAE,MAAM,CAAC;IAAC,WAAW,EAAE,MAAM,CAAA;CAAE,CAAC,GACxE,UAAU,CAGZ;AAED;;;;;GAKG;AACH,wBAAsB,eAAe,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAAC,CAU7G;AAED,wBAAgB,uBAAuB,CAAC,UAAU,EAAE,MAAM,GAAG;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAqBnG;AAED;;;;;;;;GAQG;AACH,wBAAsB,kBAAkB,CAAC,MAAM,EAAE,aAAa,GAAG,OAAO,CAAC,eAAe,CAAC,CASxF;AAkCD,wBAAgB,sBAAsB,CACpC,UAAU,EAAE,MAAM,EAClB,SAAS,EAAE,QAAQ,GAAG,WAAW,GAChC;IAAE,SAAS,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,MAAM,CAAA;CAAE,CAoBzC;AAED,gEAAgE;AAChE,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,aAAa,GAAG,gBAAgB,CAuB7E"}
|
package/dist/adt/features.js
CHANGED
|
@@ -17,6 +17,7 @@
|
|
|
17
17
|
* just check if the endpoint exists (returns 200 or 404).
|
|
18
18
|
*/
|
|
19
19
|
import { Version } from '@abaplint/core';
|
|
20
|
+
import { fetchDiscoveryDocument } from './discovery.js';
|
|
20
21
|
import { AdtApiError } from './errors.js';
|
|
21
22
|
import { parseInstalledComponents } from './xml-parser.js';
|
|
22
23
|
const PROBES = [
|
|
@@ -70,8 +71,8 @@ export async function probeFeatures(client, config, systemTypeOverride) {
|
|
|
70
71
|
};
|
|
71
72
|
// Only probe features that are in "auto" mode
|
|
72
73
|
const probesToRun = PROBES.filter((p) => modeMap[p.id] === 'auto');
|
|
73
|
-
// Run feature probes + system detection + text search probe + auth probe in parallel
|
|
74
|
-
const [probeResults, systemDetection, textSearchResult, authProbeResult] = await Promise.all([
|
|
74
|
+
// Run feature probes + system detection + text search probe + auth probe + discovery in parallel
|
|
75
|
+
const [probeResults, systemDetection, textSearchResult, authProbeResult, discoveryMap] = await Promise.all([
|
|
75
76
|
Promise.all(probesToRun.map(async (probe) => {
|
|
76
77
|
try {
|
|
77
78
|
// GET on collection endpoints may return 4xx/5xx when the feature is available
|
|
@@ -93,6 +94,7 @@ export async function probeFeatures(client, config, systemTypeOverride) {
|
|
|
93
94
|
detectSystemFromComponents(client),
|
|
94
95
|
probeTextSearch(client),
|
|
95
96
|
probeAuthorization(client),
|
|
97
|
+
fetchDiscoveryDocument(client),
|
|
96
98
|
]);
|
|
97
99
|
// Build result map
|
|
98
100
|
const resultMap = new Map();
|
|
@@ -119,6 +121,7 @@ export async function probeFeatures(client, config, systemTypeOverride) {
|
|
|
119
121
|
}
|
|
120
122
|
resolved.textSearch = textSearchResult;
|
|
121
123
|
resolved.authProbe = authProbeResult;
|
|
124
|
+
resolved.discoveryMap = discoveryMap;
|
|
122
125
|
return resolved;
|
|
123
126
|
}
|
|
124
127
|
/**
|
package/dist/adt/features.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"features.js","sourceRoot":"","sources":["../../src/adt/features.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG;AAEH,OAAO,EAAE,OAAO,EAAE,MAAM,gBAAgB,CAAC;AAEzC,OAAO,EAAE,WAAW,EAAE,MAAM,aAAa,CAAC;AAG1C,OAAO,EAAE,wBAAwB,EAAE,MAAM,iBAAiB,CAAC;AAS3D,MAAM,MAAM,GAAmB;IAC7B,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,mCAAmC,EAAE,WAAW,EAAE,eAAe,EAAE;IAC3F,EAAE,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,2BAA2B,EAAE,WAAW,EAAE,qBAAqB,EAAE;IAC5F,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,8BAA8B,EAAE,WAAW,EAAE,qBAAqB,EAAE;IAC3F,EAAE,EAAE,EAAE,MAAM,EAAE,QAAQ,EAAE,2BAA2B,EAAE,WAAW,EAAE,gBAAgB,EAAE;IACpF,EAAE,EAAE,EAAE,KAAK,EAAE,QAAQ,EAAE,+BAA+B,EAAE,WAAW,EAAE,eAAe,EAAE;IACtF,EAAE,EAAE,EAAE,WAAW,EAAE,QAAQ,EAAE,mCAAmC,EAAE,WAAW,EAAE,0BAA0B,EAAE;IAC3G,EAAE,EAAE,EAAE,SAAS,EAAE,QAAQ,EAAE,wCAAwC,EAAE,WAAW,EAAE,4BAA4B,EAAE;IAChH;QACE,EAAE,EAAE,KAAK;QACT,QAAQ,EAAE,uCAAuC;QACjD,WAAW,EAAE,uCAAuC;KACrD;CACF,CAAC;AAEF,iDAAiD;AACjD,SAAS,cAAc,CAAC,IAAiB,EAAE,WAAoB,EAAE,EAAU,EAAE,WAAmB;IAC9F,IAAI,IAAI,KAAK,IAAI,EAAE,CAAC;QAClB,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,IAAI,EAAE,IAAI,EAAE,OAAO,EAAE,4BAA4B,EAAE,CAAC;IACpF,CAAC;IACD,IAAI,IAAI,KAAK,KAAK,EAAE,CAAC;QACnB,OAAO,EAAE,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE,IAAI,EAAE,KAAK,EAAE,OAAO,EAAE,2BAA2B,EAAE,CAAC;IACrF,CAAC;IACD,OAAO;IACP,OAAO;QACL,EAAE;QACF,SAAS,EAAE,WAAW;QACtB,IAAI,EAAE,MAAM;QACZ,OAAO,EAAE,WAAW,CAAC,CAAC,CAAC,GAAG,WAAW,eAAe,CAAC,CAAC,CAAC,GAAG,WAAW,mBAAmB;QACxF,QAAQ,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;KACnC,CAAC;AACJ,CAAC;AAED;;;;;;GAMG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CACjC,MAAqB,EACrB,MAAqB,EACrB,kBAA2B;IAE3B,MAAM,OAAO,GAAgC;QAC3C,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,IAAI,EAAE,MAAM,CAAC,IAAI;QACjB,GAAG,EAAE,MAAM,CAAC,GAAG;QACf,SAAS,EAAE,MAAM,CAAC,SAAS;QAC3B,OAAO,EAAE,MAAM,CAAC,OAAO;QACvB,GAAG,EAAE,MAAM,CAAC,GAAG;KAChB,CAAC;IAEF,8CAA8C;IAC9C,MAAM,WAAW,GAAG,MAAM,CAAC,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,MAAM,CAAC,CAAC;IAEnE,
|
|
1
|
+
{"version":3,"file":"features.js","sourceRoot":"","sources":["../../src/adt/features.ts"],"names":[],"mappings":"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"}
|
package/dist/adt/http.d.ts
CHANGED
|
@@ -27,6 +27,7 @@
|
|
|
27
27
|
* No external HTTP dependencies — undici ships with Node.js 22+.
|
|
28
28
|
*/
|
|
29
29
|
import type { BTPProxyConfig } from './btp.js';
|
|
30
|
+
import type { Semaphore } from './semaphore.js';
|
|
30
31
|
/** Session type for ADT requests */
|
|
31
32
|
export type SessionType = 'stateful' | 'stateless' | undefined;
|
|
32
33
|
/** Configuration for the ADT HTTP client */
|
|
@@ -58,6 +59,8 @@ export interface AdtHttpConfig {
|
|
|
58
59
|
* Used for direct BTP ABAP connections via service key.
|
|
59
60
|
*/
|
|
60
61
|
bearerTokenProvider?: () => Promise<string>;
|
|
62
|
+
/** Optional concurrency limiter shared across requests */
|
|
63
|
+
semaphore?: Semaphore;
|
|
61
64
|
}
|
|
62
65
|
/** Response from an ADT HTTP request */
|
|
63
66
|
export interface AdtResponse {
|
|
@@ -71,6 +74,8 @@ export interface AdtResponse {
|
|
|
71
74
|
* Not a generic HTTP client: it's purpose-built for SAP ADT REST API conventions.
|
|
72
75
|
*/
|
|
73
76
|
export declare class AdtHttpClient {
|
|
77
|
+
private discoveryMap;
|
|
78
|
+
private negotiatedHeaders;
|
|
74
79
|
private csrfToken;
|
|
75
80
|
private dispatcher;
|
|
76
81
|
private config;
|
|
@@ -89,6 +94,8 @@ export declare class AdtHttpClient {
|
|
|
89
94
|
/** Guard to prevent infinite retry loops for DB connection errors */
|
|
90
95
|
private dbRetryInProgress;
|
|
91
96
|
constructor(config: AdtHttpConfig);
|
|
97
|
+
/** Inject startup discovery data used for proactive MIME negotiation. */
|
|
98
|
+
setDiscoveryMap(map: Map<string, string[]>): void;
|
|
92
99
|
/** GET request */
|
|
93
100
|
get(path: string, headers?: Record<string, string>): Promise<AdtResponse>;
|
|
94
101
|
/** HEAD request — lightweight probe, no response body */
|
|
@@ -107,8 +114,12 @@ export declare class AdtHttpClient {
|
|
|
107
114
|
* shares CSRF token with the main client.
|
|
108
115
|
*/
|
|
109
116
|
withStatefulSession<T>(fn: (client: AdtHttpClient) => Promise<T>): Promise<T>;
|
|
110
|
-
/** Core request method */
|
|
117
|
+
/** Core request method — wraps requestInner with optional concurrency limiter */
|
|
111
118
|
private request;
|
|
119
|
+
/** Inner request method — CSRF, retries, content negotiation */
|
|
120
|
+
private requestInner;
|
|
121
|
+
private normalizeHeaderCacheKey;
|
|
122
|
+
private resolveNegotiatedHeaders;
|
|
112
123
|
/** Handle response: throw on error status, return normalized response */
|
|
113
124
|
private handleResponse;
|
|
114
125
|
/**
|
package/dist/adt/http.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/adt/http.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;GA2BG;AAIH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG/C,oCAAoC;AACpC,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,WAAW,GAAG,SAAS,CAAC;AAE/D,4CAA4C;AAC5C,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B;;;;;;OAMG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,4EAA4E;IAC5E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;
|
|
1
|
+
{"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/adt/http.ts"],"names":[],"mappings":"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"}
|
package/dist/adt/http.js
CHANGED
|
@@ -28,6 +28,7 @@
|
|
|
28
28
|
*/
|
|
29
29
|
import { Agent, Client, fetch as undiciFetch } from 'undici';
|
|
30
30
|
import { logger } from '../server/logger.js';
|
|
31
|
+
import { resolveAcceptType, resolveContentType } from './discovery.js';
|
|
31
32
|
import { AdtApiError, AdtNetworkError } from './errors.js';
|
|
32
33
|
/**
|
|
33
34
|
* ADT HTTP Client — handles CSRF tokens, sessions, and authentication.
|
|
@@ -35,6 +36,8 @@ import { AdtApiError, AdtNetworkError } from './errors.js';
|
|
|
35
36
|
* Not a generic HTTP client: it's purpose-built for SAP ADT REST API conventions.
|
|
36
37
|
*/
|
|
37
38
|
export class AdtHttpClient {
|
|
39
|
+
discoveryMap = new Map();
|
|
40
|
+
negotiatedHeaders = new Map();
|
|
38
41
|
csrfToken = '';
|
|
39
42
|
dispatcher;
|
|
40
43
|
config;
|
|
@@ -62,6 +65,10 @@ export class AdtHttpClient {
|
|
|
62
65
|
this.dispatcher = new Agent({ connect: { rejectUnauthorized: false } });
|
|
63
66
|
}
|
|
64
67
|
}
|
|
68
|
+
/** Inject startup discovery data used for proactive MIME negotiation. */
|
|
69
|
+
setDiscoveryMap(map) {
|
|
70
|
+
this.discoveryMap = map;
|
|
71
|
+
}
|
|
65
72
|
/** GET request */
|
|
66
73
|
async get(path, headers) {
|
|
67
74
|
return this.request('GET', path, undefined, undefined, headers);
|
|
@@ -98,18 +105,50 @@ export class AdtHttpClient {
|
|
|
98
105
|
// Share CSRF token and cookies so we don't need to re-fetch
|
|
99
106
|
sessionClient.csrfToken = this.csrfToken;
|
|
100
107
|
sessionClient.cookieJar = new Map(this.cookieJar);
|
|
108
|
+
sessionClient.discoveryMap = this.discoveryMap;
|
|
109
|
+
sessionClient.negotiatedHeaders = new Map(this.negotiatedHeaders);
|
|
101
110
|
return fn(sessionClient);
|
|
102
111
|
}
|
|
103
|
-
/** Core request method */
|
|
112
|
+
/** Core request method — wraps requestInner with optional concurrency limiter */
|
|
104
113
|
async request(method, path, body, contentType, extraHeaders) {
|
|
114
|
+
if (this.config.semaphore) {
|
|
115
|
+
return this.config.semaphore.run(() => this.requestInner(method, path, body, contentType, extraHeaders));
|
|
116
|
+
}
|
|
117
|
+
return this.requestInner(method, path, body, contentType, extraHeaders);
|
|
118
|
+
}
|
|
119
|
+
/** Inner request method — CSRF, retries, content negotiation */
|
|
120
|
+
async requestInner(method, path, body, contentType, extraHeaders) {
|
|
105
121
|
// Auto-fetch CSRF token for modifying requests
|
|
106
122
|
if (isModifyingMethod(method) && !this.csrfToken) {
|
|
107
123
|
await this.fetchCsrfToken();
|
|
108
124
|
}
|
|
109
|
-
const headers = {
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
125
|
+
const headers = { Accept: '*/*' };
|
|
126
|
+
const negotiationKey = this.normalizeHeaderCacheKey(path);
|
|
127
|
+
if (!extraHeaders?.Accept) {
|
|
128
|
+
const cached = this.resolveNegotiatedHeaders(negotiationKey);
|
|
129
|
+
if (cached?.accept) {
|
|
130
|
+
headers.Accept = cached.accept;
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
const discoveredAccept = resolveAcceptType(this.discoveryMap, path);
|
|
134
|
+
if (discoveredAccept) {
|
|
135
|
+
headers.Accept = discoveredAccept;
|
|
136
|
+
}
|
|
137
|
+
}
|
|
138
|
+
}
|
|
139
|
+
if (isModifyingMethod(method) && contentType === undefined && !extraHeaders?.['Content-Type']) {
|
|
140
|
+
const cached = this.resolveNegotiatedHeaders(negotiationKey);
|
|
141
|
+
if (cached?.contentType) {
|
|
142
|
+
headers['Content-Type'] = cached.contentType;
|
|
143
|
+
}
|
|
144
|
+
else {
|
|
145
|
+
const discoveredContentType = resolveContentType(this.discoveryMap, path);
|
|
146
|
+
if (discoveredContentType) {
|
|
147
|
+
headers['Content-Type'] = discoveredContentType;
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
Object.assign(headers, extraHeaders);
|
|
113
152
|
if (isModifyingMethod(method)) {
|
|
114
153
|
headers['X-CSRF-Token'] = this.csrfToken;
|
|
115
154
|
}
|
|
@@ -215,6 +254,37 @@ export class AdtHttpClient {
|
|
|
215
254
|
this.dbRetryInProgress = false;
|
|
216
255
|
}
|
|
217
256
|
}
|
|
257
|
+
// Handle 503 Service Unavailable — SAP work processes exhausted.
|
|
258
|
+
// Retry once with backoff for safe (idempotent) methods only.
|
|
259
|
+
// Retry happens INSIDE the semaphore slot to avoid increasing load on an overloaded system.
|
|
260
|
+
if (response.status === 503 && !isModifyingMethod(method)) {
|
|
261
|
+
const jitterMs = 1000 + Math.random() * 1000; // 1-2s with jitter
|
|
262
|
+
logger.emitAudit({
|
|
263
|
+
timestamp: new Date().toISOString(),
|
|
264
|
+
level: 'warn',
|
|
265
|
+
event: 'http_request',
|
|
266
|
+
method,
|
|
267
|
+
path,
|
|
268
|
+
statusCode: 503,
|
|
269
|
+
durationMs: Date.now() - httpStart,
|
|
270
|
+
errorBody: `503 Service Unavailable — retrying in ${Math.round(jitterMs)}ms`,
|
|
271
|
+
});
|
|
272
|
+
await new Promise((resolve) => setTimeout(resolve, jitterMs));
|
|
273
|
+
const retryResp = await this.doFetch(url, method, headers, body);
|
|
274
|
+
const retryBody = await retryResp.text();
|
|
275
|
+
this.storeCookies(retryResp);
|
|
276
|
+
logger.emitAudit({
|
|
277
|
+
timestamp: new Date().toISOString(),
|
|
278
|
+
level: retryResp.status === 503 ? 'warn' : 'info',
|
|
279
|
+
event: 'http_request',
|
|
280
|
+
method,
|
|
281
|
+
path,
|
|
282
|
+
statusCode: retryResp.status,
|
|
283
|
+
durationMs: Date.now() - httpStart,
|
|
284
|
+
errorBody: `503 retry completed (${retryResp.status})`,
|
|
285
|
+
});
|
|
286
|
+
return this.handleResponse(retryResp.status, retryResp.headers, retryBody, path);
|
|
287
|
+
}
|
|
218
288
|
// Handle 401 session timeout — reset session and retry once.
|
|
219
289
|
// Uses per-request guard (not instance-level) so concurrent requests each get their own retry.
|
|
220
290
|
// On success, reassigns response/responseBody and falls through to downstream handlers
|
|
@@ -344,6 +414,8 @@ export class AdtHttpClient {
|
|
|
344
414
|
// If Content-Type is already application/* or absent, no useful fallback — skip retry
|
|
345
415
|
}
|
|
346
416
|
if (headersChanged) {
|
|
417
|
+
const retryAccept = fallbackHeaders.Accept;
|
|
418
|
+
const retryContentType = fallbackHeaders['Content-Type'];
|
|
347
419
|
logger.emitAudit({
|
|
348
420
|
timestamp: new Date().toISOString(),
|
|
349
421
|
level: 'warn',
|
|
@@ -363,6 +435,17 @@ export class AdtHttpClient {
|
|
|
363
435
|
this.csrfToken = retryToken;
|
|
364
436
|
}
|
|
365
437
|
const retryResult = this.handleResponse(retryResp.status, retryResp.headers, retryBody, path);
|
|
438
|
+
const currentContentType = contentType ?? headers['Content-Type'];
|
|
439
|
+
const negotiated = {};
|
|
440
|
+
if (retryAccept !== headers.Accept) {
|
|
441
|
+
negotiated.accept = retryAccept;
|
|
442
|
+
}
|
|
443
|
+
if (retryContentType !== currentContentType) {
|
|
444
|
+
negotiated.contentType = retryContentType;
|
|
445
|
+
}
|
|
446
|
+
if (negotiated.accept || negotiated.contentType) {
|
|
447
|
+
this.negotiatedHeaders.set(negotiationKey, negotiated);
|
|
448
|
+
}
|
|
366
449
|
logger.emitAudit({
|
|
367
450
|
timestamp: new Date().toISOString(),
|
|
368
451
|
level: 'info',
|
|
@@ -414,6 +497,28 @@ export class AdtHttpClient {
|
|
|
414
497
|
throw new AdtNetworkError(message, err instanceof Error ? err : undefined);
|
|
415
498
|
}
|
|
416
499
|
}
|
|
500
|
+
normalizeHeaderCacheKey(path) {
|
|
501
|
+
const withoutHash = path.split('#')[0] ?? path;
|
|
502
|
+
const withoutQuery = withoutHash.split('?')[0] ?? withoutHash;
|
|
503
|
+
if (!withoutQuery)
|
|
504
|
+
return '/';
|
|
505
|
+
return withoutQuery.endsWith('/') && withoutQuery.length > 1 ? withoutQuery.slice(0, -1) : withoutQuery;
|
|
506
|
+
}
|
|
507
|
+
resolveNegotiatedHeaders(path) {
|
|
508
|
+
let matched;
|
|
509
|
+
let matchedPathLength = -1;
|
|
510
|
+
for (const [prefix, headers] of this.negotiatedHeaders.entries()) {
|
|
511
|
+
const isExact = path === prefix;
|
|
512
|
+
const isChild = path.startsWith(`${prefix}/`);
|
|
513
|
+
if (!isExact && !isChild)
|
|
514
|
+
continue;
|
|
515
|
+
if (prefix.length > matchedPathLength) {
|
|
516
|
+
matched = headers;
|
|
517
|
+
matchedPathLength = prefix.length;
|
|
518
|
+
}
|
|
519
|
+
}
|
|
520
|
+
return matched;
|
|
521
|
+
}
|
|
417
522
|
/** Handle response: throw on error status, return normalized response */
|
|
418
523
|
handleResponse(status, headers, body, path) {
|
|
419
524
|
if (status >= 400) {
|