arc-1 1.1.0 → 1.1.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +15 -1
- package/dist/adt/atc.d.ts +36 -3
- package/dist/adt/atc.d.ts.map +1 -1
- package/dist/adt/atc.js +271 -55
- package/dist/adt/atc.js.map +1 -1
- package/dist/adt/bsp-path.d.ts +15 -0
- package/dist/adt/bsp-path.d.ts.map +1 -0
- package/dist/adt/bsp-path.js +33 -0
- package/dist/adt/bsp-path.js.map +1 -0
- package/dist/adt/client.d.ts +14 -2
- package/dist/adt/client.d.ts.map +1 -1
- package/dist/adt/client.js +29 -11
- package/dist/adt/client.js.map +1 -1
- package/dist/adt/devtools.d.ts +1 -1
- package/dist/adt/devtools.d.ts.map +1 -1
- package/dist/adt/devtools.js.map +1 -1
- package/dist/adt/transport.d.ts.map +1 -1
- package/dist/adt/transport.js +4 -3
- package/dist/adt/transport.js.map +1 -1
- package/dist/adt/xml-parser.d.ts +3 -2
- package/dist/adt/xml-parser.d.ts.map +1 -1
- package/dist/adt/xml-parser.js +3 -2
- package/dist/adt/xml-parser.js.map +1 -1
- package/dist/cli-checks.d.ts.map +1 -1
- package/dist/cli-checks.js +26 -3
- package/dist/cli-checks.js.map +1 -1
- package/dist/cli.js +1 -1
- package/dist/cli.js.map +1 -1
- package/dist/handlers/diagnose.d.ts.map +1 -1
- package/dist/handlers/diagnose.js +6 -3
- package/dist/handlers/diagnose.js.map +1 -1
- package/dist/handlers/read.d.ts.map +1 -1
- package/dist/handlers/read.js +4 -10
- package/dist/handlers/read.js.map +1 -1
- package/dist/handlers/tools.js +3 -3
- package/dist/handlers/tools.js.map +1 -1
- package/dist/handlers/transport.d.ts.map +1 -1
- package/dist/handlers/transport.js +4 -3
- package/dist/handlers/transport.js.map +1 -1
- package/dist/server/server.d.ts +1 -1
- package/dist/server/server.js +1 -1
- package/package.json +8 -8
package/README.md
CHANGED
|
@@ -29,7 +29,7 @@ Built for organizations that need AI-assisted SAP development with guardrails. I
|
|
|
29
29
|
- **HTTP security headers (helmet) on by default** — HSTS, CSP, X-Frame-Options, CORP, X-Content-Type-Options. COOP is deliberately not set so popup-based OAuth flows (Copilot Studio) keep working. No flag to disable.
|
|
30
30
|
- **Opt-in CORS for browser MCP clients** — `ARC1_ALLOWED_ORIGINS` (comma-separated, exact match). Off by default; native MCP clients don't need it
|
|
31
31
|
- **Layered rate limiting** — three layers out of the box: per-IP OAuth and shared MCP HTTP edge limits (Layer 1; MCP inherits the historical derived cap unless `ARC1_MCP_HTTP_RATE_LIMIT` overrides it), per-user MCP quota (Layer 2, **off by default** — multi-user deployments opt in via `ARC1_RATE_LIMIT=60`), and a server-wide SAP-bound semaphore (Layer 3, default 10, **on**). Honors `Retry-After` on 429/503 from SAP / BTP gateways. See the [Rate Limiting Guide](https://docs.arc-1-mcp.com/rate-limiting/)
|
|
32
|
-
- **Supply-chain security** — Dependabot (npm + GitHub Actions + Docker, weekly + same-day security advisories), `npm audit --audit-level=high` PR gate, GitHub Dependency Review on every PR, CodeQL SAST, Trivy container scanning (
|
|
32
|
+
- **Supply-chain security** — Dependabot (npm + GitHub Actions + Docker, weekly + same-day security advisories), `npm audit --audit-level=high` PR gate, GitHub Dependency Review on every PR, CodeQL SAST, Trivy container scanning (scheduled multi-architecture HIGH/CRITICAL gate plus advisory release/dev scans), all third-party GitHub Actions pinned to commit SHA, [`SECURITY.md`](SECURITY.md) policy with severity-tiered SLAs. Image and npm package both ship with [provenance attestations](https://docs.npmjs.com/generating-provenance-statements), and the release workflow publishes a best-effort CycloneDX SBOM for the production npm dependency graph. See the [security guide §13](https://docs.arc-1-mcp.com/security-guide/#13-dependency--supply-chain-security)
|
|
33
33
|
|
|
34
34
|
### Authentication
|
|
35
35
|
|
|
@@ -145,6 +145,19 @@ What changed per release: the annotated [Release Notes](https://docs.arc-1-mcp.c
|
|
|
145
145
|
|
|
146
146
|
## Quick Start
|
|
147
147
|
|
|
148
|
+
**Install as an Agent Plugin** — one portable install for the MCP server and all bundled SAP skills in
|
|
149
|
+
GitHub Copilot, VS Code, Cursor, Codex, and other compatible clients:
|
|
150
|
+
|
|
151
|
+
```bash
|
|
152
|
+
copilot plugin marketplace add arc-mcp/arc-1
|
|
153
|
+
copilot plugin install arc-1@arc-1
|
|
154
|
+
```
|
|
155
|
+
|
|
156
|
+
Agent Plugins 1.0 does not define secret prompts, so create the ARC-1 `.env` in the installed
|
|
157
|
+
plugin's persistent data directory before connecting to SAP. See the
|
|
158
|
+
**[Agent Plugin guide](https://docs.arc-1-mcp.com/agent-plugin/)** for client-specific installation,
|
|
159
|
+
safe configuration, and verification.
|
|
160
|
+
|
|
148
161
|
**Install in Claude** — pick your surface (full guide: [Install in Claude](https://docs.arc-1-mcp.com/install-in-claude/)):
|
|
149
162
|
|
|
150
163
|
- **Claude Desktop** — download the latest `arc-1-*.mcpb` from [Releases](https://github.com/arc-mcp/arc-1/releases) and double-click it (or Settings → Extensions). Claude prompts for your SAP connection. (The `.mcpb` is attached to releases automatically; if the newest one doesn't have it yet, see [Install in Claude](https://docs.arc-1-mcp.com/install-in-claude/).)
|
|
@@ -186,6 +199,7 @@ Full documentation is available at **[docs.arc-1-mcp.com](https://docs.arc-1-mcp
|
|
|
186
199
|
| Guide | Description |
|
|
187
200
|
|-------|-------------|
|
|
188
201
|
| [Quickstart](https://docs.arc-1-mcp.com/quickstart/) | 5-minute npx + Claude Desktop setup |
|
|
202
|
+
| [Agent Plugin](https://docs.arc-1-mcp.com/agent-plugin/) | Portable server + all skills for Copilot, VS Code, Cursor, Codex, and compatible clients |
|
|
189
203
|
| [Install in Claude](https://docs.arc-1-mcp.com/install-in-claude/) | Desktop `.mcpb`, Claude Code plugin (server + skills), and remote BTP connector |
|
|
190
204
|
| [Local Development](https://docs.arc-1-mcp.com/local-development/) | Full local dev — all install methods, MCP client configs, SSO cookie extractor |
|
|
191
205
|
| [Deployment](https://docs.arc-1-mcp.com/deployment/) | Multi-user deployment — Docker, BTP Cloud Foundry, BTP ABAP |
|
package/dist/adt/atc.d.ts
CHANGED
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
/** ABAP Test Cockpit worklist execution and completeness-aware parsing. */
|
|
2
2
|
import type { AdtHttpClient } from './http.js';
|
|
3
|
+
import type { AdtRequestOptions } from './http-deadline.js';
|
|
3
4
|
import { type SafetyConfig } from './safety.js';
|
|
4
5
|
import { type NamedItem } from './xml-parser.js';
|
|
5
6
|
export interface AtcFinding {
|
|
@@ -11,19 +12,51 @@ export interface AtcFinding {
|
|
|
11
12
|
quickfixInfo?: string;
|
|
12
13
|
hasQuickfix?: boolean;
|
|
13
14
|
}
|
|
15
|
+
/**
|
|
16
|
+
* How the check variant bound at worklist creation was chosen.
|
|
17
|
+
*
|
|
18
|
+
* `requestedUnverified` = the caller named it, but `/atc/variants` was unreachable, so ARC-1 could
|
|
19
|
+
* not confirm SAP will honour the name rather than silently substituting `DEFAULT`.
|
|
20
|
+
*/
|
|
21
|
+
export type AtcVariantSource = 'requested' | 'requestedUnverified' | 'systemDefault' | 'sapFallback';
|
|
22
|
+
export interface AtcRunInfo {
|
|
23
|
+
type: string;
|
|
24
|
+
description: string;
|
|
25
|
+
}
|
|
26
|
+
export interface AtcFindingStatistics {
|
|
27
|
+
errors: number;
|
|
28
|
+
warnings: number;
|
|
29
|
+
infos: number;
|
|
30
|
+
total: number;
|
|
31
|
+
}
|
|
32
|
+
export type AtcCompletionEvidence = 'asyncRunCompleted' | 'legacyWorklistSettled';
|
|
14
33
|
export interface AtcRunResult {
|
|
15
34
|
findings: AtcFinding[];
|
|
16
35
|
worklistId: string;
|
|
36
|
+
/** The variant actually bound at worklist creation; null only when none could be sent. */
|
|
17
37
|
variant: string | null;
|
|
38
|
+
variantSource: AtcVariantSource;
|
|
18
39
|
maximumVerdicts: number;
|
|
40
|
+
/**
|
|
41
|
+
* @deprecated Informational compatibility alias for `findingStatistics.total`. SAP does not
|
|
42
|
+
* define this value as the exact number of findings that must appear in the worklist. It is null
|
|
43
|
+
* when an asynchronous run-creation response has no legacy run-info body.
|
|
44
|
+
*/
|
|
19
45
|
expectedFindingCount: number | null;
|
|
46
|
+
/** Legacy synchronous run infos expose these counters; modern empty 201 responses leave them null. */
|
|
47
|
+
findingStatistics: AtcFindingStatistics | null;
|
|
20
48
|
findingCount: number;
|
|
21
49
|
processedObjectCount: number;
|
|
22
50
|
objectSetIsComplete: boolean | null;
|
|
51
|
+
/** Compatibility field; false until SAP exposes an independent, reliable truncation signal. */
|
|
23
52
|
truncated: boolean;
|
|
24
53
|
complete: boolean;
|
|
54
|
+
completionEvidence: AtcCompletionEvidence | null;
|
|
25
55
|
incompleteReasons: string[];
|
|
26
56
|
runStatusCode: number;
|
|
57
|
+
runStatus: string | null;
|
|
58
|
+
/** Raw run infos when SAP returns a synchronous `<worklistRun>` body; otherwise empty. */
|
|
59
|
+
runInfos: AtcRunInfo[];
|
|
27
60
|
worklist: {
|
|
28
61
|
id: string;
|
|
29
62
|
timestamp?: string;
|
|
@@ -41,9 +74,9 @@ export interface AtcPollOptions {
|
|
|
41
74
|
signal?: AbortSignal;
|
|
42
75
|
}
|
|
43
76
|
/** List the valid ATC check variants. */
|
|
44
|
-
export declare function listAtcVariants(http: AdtHttpClient, safety: SafetyConfig, filter?: string): Promise<NamedItem[]>;
|
|
77
|
+
export declare function listAtcVariants(http: AdtHttpClient, safety: SafetyConfig, filter?: string, options?: AdtRequestOptions): Promise<NamedItem[]>;
|
|
45
78
|
/** Read the system default ATC check variant. */
|
|
46
|
-
export declare function getAtcSystemDefaultVariant(http: AdtHttpClient, safety: SafetyConfig): Promise<string | undefined>;
|
|
47
|
-
/** Run an ATC worklist and preserve
|
|
79
|
+
export declare function getAtcSystemDefaultVariant(http: AdtHttpClient, safety: SafetyConfig, options?: AdtRequestOptions): Promise<string | undefined>;
|
|
80
|
+
/** Run an ATC worklist and preserve terminal, structural, and informational evidence for CI. */
|
|
48
81
|
export declare function runAtcCheck(http: AdtHttpClient, safety: SafetyConfig, objectUrl: string, variant?: string, pollOptions?: AtcPollOptions): Promise<AtcRunResult>;
|
|
49
82
|
//# sourceMappingURL=atc.d.ts.map
|
package/dist/adt/atc.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"atc.d.ts","sourceRoot":"","sources":["../../src/adt/atc.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAG3E,OAAO,KAAK,EAAE,aAAa,EAAe,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"atc.d.ts","sourceRoot":"","sources":["../../src/adt/atc.ts"],"names":[],"mappings":"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"}
|
package/dist/adt/atc.js
CHANGED
|
@@ -6,22 +6,81 @@ import { escapeXmlAttr, parseAtcSystemCheckVariant, parseNamedItems, parseXml }
|
|
|
6
6
|
const DEFAULT_ATC_TIMEOUT_MS = 300_000;
|
|
7
7
|
const DEFAULT_ATC_POLL_DELAY_MS = 250;
|
|
8
8
|
const DEFAULT_ATC_MAX_POLL_DELAY_MS = 2_000;
|
|
9
|
+
const ATC_RUN_STATUS_PREFIX = '/sap/bc/adt/atc/runs/';
|
|
10
|
+
const ATC_RUN_STATUS_MEDIA_TYPE = 'application/vnd.sap.atc.run.v1+xml';
|
|
11
|
+
/**
|
|
12
|
+
* Fallback quiet interval when SAP returns a synchronous run without a status location.
|
|
13
|
+
*
|
|
14
|
+
* A live 758 worklist grew from 23 findings/two objects to 73/ten after already reporting
|
|
15
|
+
* `objectSetIsComplete=true`, so neither that flag nor a few fast count snapshots are terminal
|
|
16
|
+
* evidence. Modern systems instead expose the terminal run status requested with
|
|
17
|
+
* `clientWait=false`. Ten seconds spans at least five intervals at the default 2 s backoff cap.
|
|
18
|
+
* SAP also advances the root worklist timestamp on unchanged GETs, so that proven volatile
|
|
19
|
+
* attribute is excluded from the comparison.
|
|
20
|
+
* See docs/research/2026-08-20-atc-completeness-polling.md.
|
|
21
|
+
*/
|
|
22
|
+
const ATC_SETTLE_QUIET_MS = 10_000;
|
|
23
|
+
/** Compare the complete wire response except SAP's per-GET root worklist timestamp. */
|
|
24
|
+
function atcWorklistSettleObservation(xml) {
|
|
25
|
+
return xml.replace(/<(?:[A-Za-z_][\w.-]*:)?worklist\b[^>]*>/, (rootStart) => rootStart.replace(/\s+(?:[A-Za-z_][\w.-]*:)?timestamp\s*=\s*(?:"[^"]*"|'[^']*')/, ''));
|
|
26
|
+
}
|
|
9
27
|
/** List the valid ATC check variants. */
|
|
10
|
-
export async function listAtcVariants(http, safety, filter = '*') {
|
|
28
|
+
export async function listAtcVariants(http, safety, filter = '*', options) {
|
|
11
29
|
checkOperation(safety, OperationType.Read, 'ListAtcVariants');
|
|
12
30
|
const pattern = filter.trim() || '*';
|
|
13
|
-
const resp = await http.get(`/sap/bc/adt/atc/variants?name=${encodeURIComponent(pattern)}`, {
|
|
14
|
-
Accept: 'application/vnd.sap.adt.nameditems.v1+xml',
|
|
15
|
-
});
|
|
31
|
+
const resp = await http.get(`/sap/bc/adt/atc/variants?name=${encodeURIComponent(pattern)}`, { Accept: 'application/vnd.sap.adt.nameditems.v1+xml' }, options);
|
|
16
32
|
return parseNamedItems(resp.body).filter((item) => item.name);
|
|
17
33
|
}
|
|
18
34
|
/** Read the system default ATC check variant. */
|
|
19
|
-
export async function getAtcSystemDefaultVariant(http, safety) {
|
|
35
|
+
export async function getAtcSystemDefaultVariant(http, safety, options) {
|
|
20
36
|
checkOperation(safety, OperationType.Read, 'GetAtcCustomizing');
|
|
21
|
-
const resp = await http.get('/sap/bc/adt/atc/customizing', { Accept: 'application/xml' });
|
|
37
|
+
const resp = await http.get('/sap/bc/adt/atc/customizing', { Accept: 'application/xml' }, options);
|
|
22
38
|
return parseAtcSystemCheckVariant(resp.body);
|
|
23
39
|
}
|
|
24
|
-
/**
|
|
40
|
+
/**
|
|
41
|
+
* Decide which check variant to bind at worklist creation.
|
|
42
|
+
*
|
|
43
|
+
* SAP does NOT apply `systemCheckVariant` when `checkVariant` is empty — it runs the Code Inspector
|
|
44
|
+
* variant literally named `DEFAULT` (measured on two independent 758 systems; see
|
|
45
|
+
* docs/research/2026-08-19-atc-default-check-variant.md). SAP's own adt-ls resolves the default
|
|
46
|
+
* client-side too, so ARC-1 sends it explicitly.
|
|
47
|
+
*
|
|
48
|
+
* Runs under the caller's ATC request budget (`requestOptions`) — these pre-flight GETs must honour
|
|
49
|
+
* the same deadline and abort signal as the worklist calls.
|
|
50
|
+
*/
|
|
51
|
+
async function resolveCheckVariant(http, safety, requestedRaw, requestOptions) {
|
|
52
|
+
const requested = requestedRaw?.trim() ? requestedRaw.trim() : undefined;
|
|
53
|
+
if (requested) {
|
|
54
|
+
// An unknown name is not rejected by SAP — the worklist silently binds DEFAULT and the run looks
|
|
55
|
+
// successful. Fail open: a validation lookup must never break a working ATC run.
|
|
56
|
+
let known;
|
|
57
|
+
try {
|
|
58
|
+
known = await listAtcVariants(http, safety, requested, requestOptions);
|
|
59
|
+
}
|
|
60
|
+
catch {
|
|
61
|
+
// best-effort-validation: endpoint absent, auth, or network — run with the caller's string,
|
|
62
|
+
// but say so: SAP may still substitute DEFAULT and we did not get to check.
|
|
63
|
+
return { variant: requested, variantSource: 'requestedUnverified' };
|
|
64
|
+
}
|
|
65
|
+
const match = known.find((item) => item.name.toLowerCase() === requested.toLowerCase());
|
|
66
|
+
if (!match) {
|
|
67
|
+
throw new AdtApiError(`Check variant "${requested}" does not exist on this system — SAP would silently run "DEFAULT" instead. ` +
|
|
68
|
+
'List variants with SAPDiagnose(action="atc_variants").', 400, '/sap/bc/adt/atc/variants');
|
|
69
|
+
}
|
|
70
|
+
// Send the canonical name: SAP's lookup is case-sensitive, so a lowercase input would fall back too.
|
|
71
|
+
return { variant: match.name, variantSource: 'requested' };
|
|
72
|
+
}
|
|
73
|
+
const systemDefault = await getAtcSystemDefaultVariant(http, safety, requestOptions).catch((error) => {
|
|
74
|
+
// Only "endpoint absent / not negotiable" degrades; 401/403/5xx must surface.
|
|
75
|
+
if (error instanceof AdtApiError && (error.statusCode === 404 || error.statusCode === 406))
|
|
76
|
+
return undefined;
|
|
77
|
+
throw error;
|
|
78
|
+
});
|
|
79
|
+
return systemDefault
|
|
80
|
+
? { variant: systemDefault, variantSource: 'systemDefault' }
|
|
81
|
+
: { variant: undefined, variantSource: 'sapFallback' };
|
|
82
|
+
}
|
|
83
|
+
/** Run an ATC worklist and preserve terminal, structural, and informational evidence for CI. */
|
|
25
84
|
export async function runAtcCheck(http, safety, objectUrl, variant, pollOptions = {}) {
|
|
26
85
|
checkOperation(safety, OperationType.Read, 'RunATCCheck');
|
|
27
86
|
const now = pollOptions.now ?? Date.now;
|
|
@@ -32,8 +91,9 @@ export async function runAtcCheck(http, safety, objectUrl, variant, pollOptions
|
|
|
32
91
|
fetchTimeoutMs: timeoutMs,
|
|
33
92
|
signal: pollOptions.signal,
|
|
34
93
|
};
|
|
35
|
-
const
|
|
36
|
-
|
|
94
|
+
const { variant: effectiveVariant, variantSource } = await resolveCheckVariant(http, safety, variant, requestOptions);
|
|
95
|
+
const worklistPath = effectiveVariant
|
|
96
|
+
? `/sap/bc/adt/atc/worklists?checkVariant=${encodeURIComponent(effectiveVariant)}`
|
|
37
97
|
: '/sap/bc/adt/atc/worklists';
|
|
38
98
|
const worklistResp = await http.post(worklistPath, '', 'application/xml', { Accept: 'text/plain' }, requestOptions);
|
|
39
99
|
const worklistId = worklistResp.body.trim();
|
|
@@ -53,19 +113,107 @@ export async function runAtcCheck(http, safety, objectUrl, variant, pollOptions
|
|
|
53
113
|
</atc:run>`;
|
|
54
114
|
let runResp;
|
|
55
115
|
try {
|
|
56
|
-
runResp = await http.post(`/sap/bc/adt/atc/runs?worklistId=${encodeURIComponent(worklistId)}`, runBody, 'application/xml', { Accept: 'application/xml' }, requestOptions);
|
|
116
|
+
runResp = await http.post(`/sap/bc/adt/atc/runs?worklistId=${encodeURIComponent(worklistId)}&clientWait=false`, runBody, 'application/xml', { Accept: 'application/xml' }, requestOptions);
|
|
57
117
|
}
|
|
58
118
|
catch (error) {
|
|
59
119
|
if (isAtcDeadlineFailure(error)) {
|
|
60
|
-
return incompleteAtcResult(
|
|
120
|
+
return incompleteAtcResult({
|
|
121
|
+
worklistId,
|
|
122
|
+
variant: effectiveVariant,
|
|
123
|
+
variantSource,
|
|
124
|
+
maximumVerdicts,
|
|
125
|
+
findingStatistics: null,
|
|
126
|
+
runInfos: [],
|
|
127
|
+
runStatusCode: 0,
|
|
128
|
+
runStatus: null,
|
|
129
|
+
completionEvidence: null,
|
|
130
|
+
}, 'ATC execution timed out.');
|
|
61
131
|
}
|
|
62
132
|
throw error;
|
|
63
133
|
}
|
|
64
|
-
const
|
|
134
|
+
const runInfos = parseAtcRunInfos(runResp.body);
|
|
135
|
+
const findingStatistics = parseAtcFindingStatistics(runInfos);
|
|
136
|
+
const baseContext = {
|
|
137
|
+
worklistId,
|
|
138
|
+
variant: effectiveVariant,
|
|
139
|
+
variantSource,
|
|
140
|
+
maximumVerdicts,
|
|
141
|
+
findingStatistics,
|
|
142
|
+
runInfos,
|
|
143
|
+
runStatusCode: runResp.statusCode,
|
|
144
|
+
runStatus: null,
|
|
145
|
+
completionEvidence: null,
|
|
146
|
+
};
|
|
65
147
|
const sleep = pollOptions.sleep ?? ((ms) => new Promise((resolve) => setTimeout(resolve, ms)));
|
|
66
148
|
let delayMs = pollOptions.initialDelayMs ?? DEFAULT_ATC_POLL_DELAY_MS;
|
|
67
149
|
const maxDelayMs = pollOptions.maxDelayMs ?? DEFAULT_ATC_MAX_POLL_DELAY_MS;
|
|
150
|
+
const rawRunLocation = responseHeader(runResp, 'location');
|
|
151
|
+
const fallbackContext = baseContext;
|
|
152
|
+
let settleFallbackReason;
|
|
153
|
+
if (rawRunLocation !== undefined) {
|
|
154
|
+
const runStatusPath = canonicalAtcRunStatusPath(rawRunLocation);
|
|
155
|
+
if (!runStatusPath) {
|
|
156
|
+
settleFallbackReason = 'SAP returned an unsafe or malformed ATC run-status location.';
|
|
157
|
+
}
|
|
158
|
+
else {
|
|
159
|
+
let runStatus = null;
|
|
160
|
+
while (true) {
|
|
161
|
+
let statusResp;
|
|
162
|
+
try {
|
|
163
|
+
statusResp = await http.get(runStatusPath, { Accept: ATC_RUN_STATUS_MEDIA_TYPE }, requestOptions);
|
|
164
|
+
}
|
|
165
|
+
catch (error) {
|
|
166
|
+
if (isAtcDeadlineFailure(error)) {
|
|
167
|
+
return fetchAtcWorklistSnapshot(http, { ...baseContext, runStatus }, requestOptions, 'ATC run-status polling timed out before SAP completed the run.');
|
|
168
|
+
}
|
|
169
|
+
throw error;
|
|
170
|
+
}
|
|
171
|
+
runStatus = parseAtcRunStatus(statusResp.body);
|
|
172
|
+
const statusContext = { ...baseContext, runStatus };
|
|
173
|
+
if (!runStatus) {
|
|
174
|
+
return fetchAtcWorklistSnapshot(http, statusContext, requestOptions, 'SAP returned an ATC run-status response without one valid status.');
|
|
175
|
+
}
|
|
176
|
+
if (isAtcRunCompleted(runStatus)) {
|
|
177
|
+
const completedContext = {
|
|
178
|
+
...statusContext,
|
|
179
|
+
completionEvidence: 'asyncRunCompleted',
|
|
180
|
+
};
|
|
181
|
+
try {
|
|
182
|
+
const resultResp = await http.get(`/sap/bc/adt/atc/worklists/${encodeURIComponent(worklistId)}`, { Accept: 'application/atc.worklist.v1+xml' }, requestOptions);
|
|
183
|
+
return parseAtcRunResult(resultResp.body, completedContext);
|
|
184
|
+
}
|
|
185
|
+
catch (error) {
|
|
186
|
+
if (isAtcDeadlineFailure(error)) {
|
|
187
|
+
return incompleteAtcResult(completedContext, 'ATC completed, but worklist retrieval timed out before SAP returned the result.');
|
|
188
|
+
}
|
|
189
|
+
throw error;
|
|
190
|
+
}
|
|
191
|
+
}
|
|
192
|
+
if (isAtcRunFailure(runStatus)) {
|
|
193
|
+
return fetchAtcWorklistSnapshot(http, statusContext, requestOptions, `SAP ended the ATC run with failure status "${runStatus}".`);
|
|
194
|
+
}
|
|
195
|
+
const remainingMs = deadline - now();
|
|
196
|
+
if (remainingMs <= delayMs) {
|
|
197
|
+
return fetchAtcWorklistSnapshot(http, statusContext, requestOptions, 'ATC run-status polling could not continue within the request deadline.');
|
|
198
|
+
}
|
|
199
|
+
await sleep(delayMs);
|
|
200
|
+
if (now() >= deadline) {
|
|
201
|
+
return fetchAtcWorklistSnapshot(http, statusContext, requestOptions, 'ATC run-status polling reached the request deadline before SAP completed the run.');
|
|
202
|
+
}
|
|
203
|
+
delayMs = Math.min(maxDelayMs, delayMs * 2);
|
|
204
|
+
}
|
|
205
|
+
}
|
|
206
|
+
}
|
|
207
|
+
else if (runResp.statusCode !== 200) {
|
|
208
|
+
settleFallbackReason = `SAP returned asynchronous ATC status ${runResp.statusCode} without a run-status location.`;
|
|
209
|
+
}
|
|
210
|
+
// Older systems return the completed run synchronously without a status location. A malformed or
|
|
211
|
+
// missing async location also uses this safe path so partial findings survive, but it cannot prove
|
|
212
|
+
// completion. In both cases the worklist may still populate after the POST returns.
|
|
68
213
|
let result;
|
|
214
|
+
let resultXml;
|
|
215
|
+
let lastWorklistObservation;
|
|
216
|
+
let unchangedSince;
|
|
69
217
|
while (true) {
|
|
70
218
|
let resultResp;
|
|
71
219
|
try {
|
|
@@ -73,22 +221,42 @@ export async function runAtcCheck(http, safety, objectUrl, variant, pollOptions
|
|
|
73
221
|
}
|
|
74
222
|
catch (error) {
|
|
75
223
|
if (isAtcDeadlineFailure(error)) {
|
|
76
|
-
|
|
77
|
-
|
|
224
|
+
const timeoutReason = settleFallbackReason
|
|
225
|
+
? `${settleFallbackReason} Worklist polling then timed out before SAP returned a snapshot.`
|
|
226
|
+
: 'ATC worklist polling timed out before SAP returned the first snapshot.';
|
|
227
|
+
return result ?? incompleteAtcResult(fallbackContext, timeoutReason);
|
|
78
228
|
}
|
|
79
229
|
throw error;
|
|
80
230
|
}
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
231
|
+
resultXml = resultResp.body;
|
|
232
|
+
result = parseAtcRunResult(resultXml, fallbackContext);
|
|
233
|
+
if (settleFallbackReason)
|
|
234
|
+
result.incompleteReasons.unshift(settleFallbackReason);
|
|
235
|
+
// Counts alone miss same-count replacements and other response-evidence changes. Compare the
|
|
236
|
+
// full XML except the root timestamp, which live 758 advances on otherwise identical GETs.
|
|
237
|
+
const observedAt = now();
|
|
238
|
+
const observation = atcWorklistSettleObservation(resultResp.body);
|
|
239
|
+
if (observation !== lastWorklistObservation) {
|
|
240
|
+
lastWorklistObservation = observation;
|
|
241
|
+
unchangedSince = observedAt;
|
|
242
|
+
}
|
|
243
|
+
const unchangedForMs = unchangedSince === undefined ? 0 : observedAt - unchangedSince;
|
|
244
|
+
const settled = unchangedForMs >= ATC_SETTLE_QUIET_MS;
|
|
245
|
+
if (settled || observedAt >= deadline) {
|
|
246
|
+
if (settled) {
|
|
247
|
+
result = parseAtcRunResult(resultXml, {
|
|
248
|
+
...fallbackContext,
|
|
249
|
+
completionEvidence: settleFallbackReason ? null : 'legacyWorklistSettled',
|
|
250
|
+
});
|
|
251
|
+
if (settleFallbackReason)
|
|
252
|
+
result.incompleteReasons.unshift(settleFallbackReason);
|
|
253
|
+
}
|
|
254
|
+
if (settled && !result.complete) {
|
|
255
|
+
result.incompleteReasons.push(`ATC worklist response, excluding SAP's poll timestamp, was unchanged for at least ` +
|
|
256
|
+
`${ATC_SETTLE_QUIET_MS / 1_000} seconds at ` +
|
|
257
|
+
`${result.findingCount} finding(s) over ${result.processedObjectCount} object(s) without satisfying ` +
|
|
258
|
+
"SAP's completeness evidence; returning the settled result.");
|
|
259
|
+
}
|
|
92
260
|
return result;
|
|
93
261
|
}
|
|
94
262
|
await sleep(Math.min(delayMs, Math.max(0, deadline - now())));
|
|
@@ -101,21 +269,40 @@ function isAtcDeadlineFailure(error) {
|
|
|
101
269
|
return (error instanceof AdtNetworkError &&
|
|
102
270
|
(error.cause?.name === 'TimeoutError' || /deadline was exceeded|timed out|\btimeout\b/i.test(error.message)));
|
|
103
271
|
}
|
|
104
|
-
function
|
|
272
|
+
async function fetchAtcWorklistSnapshot(http, context, requestOptions, reason) {
|
|
273
|
+
try {
|
|
274
|
+
const response = await http.get(`/sap/bc/adt/atc/worklists/${encodeURIComponent(context.worklistId)}`, { Accept: 'application/atc.worklist.v1+xml' }, requestOptions);
|
|
275
|
+
const result = parseAtcRunResult(response.body, context);
|
|
276
|
+
result.incompleteReasons.unshift(reason);
|
|
277
|
+
return result;
|
|
278
|
+
}
|
|
279
|
+
catch (error) {
|
|
280
|
+
if (isAtcDeadlineFailure(error)) {
|
|
281
|
+
return incompleteAtcResult(context, `${reason} No worklist snapshot was available before the deadline.`);
|
|
282
|
+
}
|
|
283
|
+
return incompleteAtcResult(context, `${reason} The best-effort worklist snapshot could not be retrieved.`);
|
|
284
|
+
}
|
|
285
|
+
}
|
|
286
|
+
function incompleteAtcResult(context, reason) {
|
|
105
287
|
return {
|
|
106
288
|
findings: [],
|
|
107
|
-
worklistId,
|
|
108
|
-
variant: variant ?? null,
|
|
109
|
-
|
|
110
|
-
|
|
289
|
+
worklistId: context.worklistId,
|
|
290
|
+
variant: context.variant ?? null,
|
|
291
|
+
variantSource: context.variantSource,
|
|
292
|
+
maximumVerdicts: context.maximumVerdicts,
|
|
293
|
+
expectedFindingCount: context.findingStatistics?.total ?? null,
|
|
294
|
+
findingStatistics: context.findingStatistics,
|
|
111
295
|
findingCount: 0,
|
|
112
296
|
processedObjectCount: 0,
|
|
113
297
|
objectSetIsComplete: null,
|
|
114
|
-
truncated:
|
|
298
|
+
truncated: false,
|
|
115
299
|
complete: false,
|
|
300
|
+
completionEvidence: context.completionEvidence,
|
|
116
301
|
incompleteReasons: [reason],
|
|
117
|
-
runStatusCode,
|
|
118
|
-
|
|
302
|
+
runStatusCode: context.runStatusCode,
|
|
303
|
+
runStatus: context.runStatus,
|
|
304
|
+
runInfos: context.runInfos,
|
|
305
|
+
worklist: { id: context.worklistId },
|
|
119
306
|
infos: [],
|
|
120
307
|
};
|
|
121
308
|
}
|
|
@@ -142,16 +329,49 @@ function nodeText(value) {
|
|
|
142
329
|
return String(first).trim();
|
|
143
330
|
return String(first['#text'] ?? '').trim();
|
|
144
331
|
}
|
|
145
|
-
function
|
|
332
|
+
function responseHeader(response, name) {
|
|
333
|
+
const match = Object.entries(response.headers).find(([key]) => key.toLowerCase() === name.toLowerCase());
|
|
334
|
+
return match?.[1];
|
|
335
|
+
}
|
|
336
|
+
function canonicalAtcRunStatusPath(rawPath) {
|
|
337
|
+
const canonical = canonicalHostRelativeAdtPath(rawPath, ATC_RUN_STATUS_PREFIX);
|
|
338
|
+
if (!canonical || canonical.includes('?'))
|
|
339
|
+
return null;
|
|
340
|
+
const runId = canonical.slice(ATC_RUN_STATUS_PREFIX.length);
|
|
341
|
+
return runId && !runId.includes('/') ? canonical : null;
|
|
342
|
+
}
|
|
343
|
+
function parseAtcRunStatus(xml) {
|
|
344
|
+
const roots = nodeRecords(parseXml(xml).run);
|
|
345
|
+
if (roots.length !== 1)
|
|
346
|
+
return null;
|
|
347
|
+
const status = typeof roots[0]?.['@_status'] === 'string' ? roots[0]['@_status'].trim() : '';
|
|
348
|
+
return status || null;
|
|
349
|
+
}
|
|
350
|
+
function normalizedAtcRunStatus(status) {
|
|
351
|
+
return status.trim().replace(/\s+/g, ' ').toLowerCase();
|
|
352
|
+
}
|
|
353
|
+
function isAtcRunCompleted(status) {
|
|
354
|
+
return ['completed', 'finished'].includes(normalizedAtcRunStatus(status));
|
|
355
|
+
}
|
|
356
|
+
function isAtcRunFailure(status) {
|
|
357
|
+
return ['not created', 'failed', 'cancelled', 'canceled', 'aborted', 'error'].includes(normalizedAtcRunStatus(status));
|
|
358
|
+
}
|
|
359
|
+
function parseAtcRunInfos(xml) {
|
|
360
|
+
if (!xml.trim())
|
|
361
|
+
return [];
|
|
146
362
|
const root = nodeRecord(parseXml(xml).worklistRun);
|
|
147
363
|
const infos = nodeRecords(root?.infos).flatMap((container) => nodeRecords(container.info));
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
.
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
364
|
+
return infos
|
|
365
|
+
.map((info) => ({ type: nodeText(info.type), description: nodeText(info.description) }))
|
|
366
|
+
.filter((info) => info.type || info.description);
|
|
367
|
+
}
|
|
368
|
+
function parseAtcFindingStatistics(runInfos) {
|
|
369
|
+
const stats = runInfos.find((info) => info.type.toUpperCase() === 'FINDING_STATS');
|
|
370
|
+
const parts = (stats?.description ?? '').split(',').map((part) => Number(part.trim()));
|
|
371
|
+
if (parts.length !== 3 || !parts.every((part) => Number.isSafeInteger(part) && part >= 0))
|
|
372
|
+
return null;
|
|
373
|
+
const [errors, warnings, infos] = parts;
|
|
374
|
+
return { errors, warnings, infos, total: errors + warnings + infos };
|
|
155
375
|
}
|
|
156
376
|
function isValidProcessedObject(object) {
|
|
157
377
|
const uri = typeof object['@_uri'] === 'string' ? object['@_uri'].trim() : '';
|
|
@@ -219,7 +439,6 @@ function parseAtcRunResult(xml, context) {
|
|
|
219
439
|
const rawObjectRows = nodeValues(rawObjectValue);
|
|
220
440
|
const objectRows = nodeRecords(rawObjectValue);
|
|
221
441
|
const findings = parseAtcFindings(root, objectRows);
|
|
222
|
-
const truncated = context.expectedFindingCount !== null && findings.length < context.expectedFindingCount;
|
|
223
442
|
const validObjectRows = objectRows.filter(isValidProcessedObject);
|
|
224
443
|
const processedObjectCount = validObjectRows.length;
|
|
225
444
|
const malformedObjectCount = rawObjectRows.length - validObjectRows.length;
|
|
@@ -240,14 +459,8 @@ function parseAtcRunResult(xml, context) {
|
|
|
240
459
|
? 'SAP marked the ATC object set incomplete.'
|
|
241
460
|
: 'SAP did not provide object-set completeness evidence.');
|
|
242
461
|
}
|
|
243
|
-
if (context.
|
|
244
|
-
incompleteReasons.push('SAP did not provide
|
|
245
|
-
}
|
|
246
|
-
else if (findings.length !== context.expectedFindingCount) {
|
|
247
|
-
incompleteReasons.push(findings.length < context.expectedFindingCount
|
|
248
|
-
? `ATC worklist has ${findings.length} of ${context.expectedFindingCount} findings reported by the run.`
|
|
249
|
-
: `ATC worklist has ${findings.length} findings, exceeding the ${context.expectedFindingCount} reported by the run.`);
|
|
250
|
-
}
|
|
462
|
+
if (context.completionEvidence === null)
|
|
463
|
+
incompleteReasons.push('SAP did not provide terminal ATC run evidence.');
|
|
251
464
|
if (!objectContainerShapeIsValid) {
|
|
252
465
|
incompleteReasons.push('SAP did not provide one schema-scoped ATC objects container.');
|
|
253
466
|
}
|
|
@@ -264,24 +477,27 @@ function parseAtcRunResult(xml, context) {
|
|
|
264
477
|
findings,
|
|
265
478
|
worklistId: context.worklistId,
|
|
266
479
|
variant: context.variant ?? null,
|
|
480
|
+
variantSource: context.variantSource,
|
|
267
481
|
maximumVerdicts: context.maximumVerdicts,
|
|
268
|
-
expectedFindingCount: context.
|
|
482
|
+
expectedFindingCount: context.findingStatistics?.total ?? null,
|
|
483
|
+
findingStatistics: context.findingStatistics,
|
|
269
484
|
findingCount: findings.length,
|
|
270
485
|
processedObjectCount,
|
|
271
486
|
objectSetIsComplete,
|
|
272
|
-
truncated,
|
|
487
|
+
truncated: false,
|
|
273
488
|
complete: rootShapeIsValid &&
|
|
274
489
|
worklistIdMatches &&
|
|
275
490
|
objectSetIsComplete === true &&
|
|
276
|
-
|
|
277
|
-
context.expectedFindingCount !== null &&
|
|
278
|
-
findings.length === context.expectedFindingCount &&
|
|
491
|
+
context.completionEvidence !== null &&
|
|
279
492
|
objectContainerShapeIsValid &&
|
|
280
493
|
processedObjectCount > 0 &&
|
|
281
494
|
malformedObjectCount === 0 &&
|
|
282
495
|
invalidPriorityCount === 0,
|
|
496
|
+
completionEvidence: context.completionEvidence,
|
|
283
497
|
incompleteReasons,
|
|
284
498
|
runStatusCode: context.runStatusCode,
|
|
499
|
+
runStatus: context.runStatus,
|
|
500
|
+
runInfos: context.runInfos,
|
|
285
501
|
worklist: {
|
|
286
502
|
id: bodyWorklistId,
|
|
287
503
|
...(root['@_timestamp'] ? { timestamp: String(root['@_timestamp']) } : {}),
|
package/dist/adt/atc.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"atc.js","sourceRoot":"","sources":["../../src/adt/atc.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"atc.js","sourceRoot":"","sources":["../../src/adt/atc.ts"],"names":[],"mappings":"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"}
|