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.
Files changed (42) hide show
  1. package/README.md +15 -1
  2. package/dist/adt/atc.d.ts +36 -3
  3. package/dist/adt/atc.d.ts.map +1 -1
  4. package/dist/adt/atc.js +271 -55
  5. package/dist/adt/atc.js.map +1 -1
  6. package/dist/adt/bsp-path.d.ts +15 -0
  7. package/dist/adt/bsp-path.d.ts.map +1 -0
  8. package/dist/adt/bsp-path.js +33 -0
  9. package/dist/adt/bsp-path.js.map +1 -0
  10. package/dist/adt/client.d.ts +14 -2
  11. package/dist/adt/client.d.ts.map +1 -1
  12. package/dist/adt/client.js +29 -11
  13. package/dist/adt/client.js.map +1 -1
  14. package/dist/adt/devtools.d.ts +1 -1
  15. package/dist/adt/devtools.d.ts.map +1 -1
  16. package/dist/adt/devtools.js.map +1 -1
  17. package/dist/adt/transport.d.ts.map +1 -1
  18. package/dist/adt/transport.js +4 -3
  19. package/dist/adt/transport.js.map +1 -1
  20. package/dist/adt/xml-parser.d.ts +3 -2
  21. package/dist/adt/xml-parser.d.ts.map +1 -1
  22. package/dist/adt/xml-parser.js +3 -2
  23. package/dist/adt/xml-parser.js.map +1 -1
  24. package/dist/cli-checks.d.ts.map +1 -1
  25. package/dist/cli-checks.js +26 -3
  26. package/dist/cli-checks.js.map +1 -1
  27. package/dist/cli.js +1 -1
  28. package/dist/cli.js.map +1 -1
  29. package/dist/handlers/diagnose.d.ts.map +1 -1
  30. package/dist/handlers/diagnose.js +6 -3
  31. package/dist/handlers/diagnose.js.map +1 -1
  32. package/dist/handlers/read.d.ts.map +1 -1
  33. package/dist/handlers/read.js +4 -10
  34. package/dist/handlers/read.js.map +1 -1
  35. package/dist/handlers/tools.js +3 -3
  36. package/dist/handlers/tools.js.map +1 -1
  37. package/dist/handlers/transport.d.ts.map +1 -1
  38. package/dist/handlers/transport.js +4 -3
  39. package/dist/handlers/transport.js.map +1 -1
  40. package/dist/server/server.d.ts +1 -1
  41. package/dist/server/server.js +1 -1
  42. 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 (gating on release, advisory on dev), 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)
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 the evidence required for a CI verdict. */
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
@@ -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;AAG5D,OAAO,EAAiC,KAAK,YAAY,EAAE,MAAM,aAAa,CAAC;AAC/E,OAAO,EAAiB,KAAK,SAAS,EAAyD,MAAM,iBAAiB,CAAC;AAEvH,MAAM,WAAW,UAAU;IACzB,QAAQ,EAAE,MAAM,CAAC;IACjB,UAAU,EAAE,MAAM,CAAC;IACnB,YAAY,EAAE,MAAM,CAAC;IACrB,GAAG,EAAE,MAAM,CAAC;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,OAAO,CAAC;CACvB;AAED,MAAM,WAAW,YAAY;IAC3B,QAAQ,EAAE,UAAU,EAAE,CAAC;IACvB,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,GAAG,IAAI,CAAC;IACvB,eAAe,EAAE,MAAM,CAAC;IACxB,oBAAoB,EAAE,MAAM,GAAG,IAAI,CAAC;IACpC,YAAY,EAAE,MAAM,CAAC;IACrB,oBAAoB,EAAE,MAAM,CAAC;IAC7B,mBAAmB,EAAE,OAAO,GAAG,IAAI,CAAC;IACpC,SAAS,EAAE,OAAO,CAAC;IACnB,QAAQ,EAAE,OAAO,CAAC;IAClB,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,aAAa,EAAE,MAAM,CAAC;IACtB,QAAQ,EAAE;QACR,EAAE,EAAE,MAAM,CAAC;QACX,SAAS,CAAC,EAAE,MAAM,CAAC;QACnB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,MAAM,CAAC,EAAE,MAAM,CAAC;KACjB,CAAC;IACF,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,MAAM,WAAW,cAAc;IAC7B,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,GAAG,CAAC,EAAE,MAAM,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,CAAC,EAAE,EAAE,MAAM,KAAK,OAAO,CAAC,IAAI,CAAC,CAAC;IACtC,MAAM,CAAC,EAAE,WAAW,CAAC;CACtB;AAMD,yCAAyC;AACzC,wBAAsB,eAAe,CAAC,IAAI,EAAE,aAAa,EAAE,MAAM,EAAE,YAAY,EAAE,MAAM,SAAM,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAOnH;AAED,iDAAiD;AACjD,wBAAsB,0BAA0B,CAC9C,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,YAAY,GACnB,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC,CAI7B;AAED,+EAA+E;AAC/E,wBAAsB,WAAW,CAC/B,IAAI,EAAE,aAAa,EACnB,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,MAAM,EACjB,OAAO,CAAC,EAAE,MAAM,EAChB,WAAW,GAAE,cAAmB,GAC/B,OAAO,CAAC,YAAY,CAAC,CA8FvB"}
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
- /** Run an ATC worklist and preserve the evidence required for a CI verdict. */
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 worklistPath = variant
36
- ? `/sap/bc/adt/atc/worklists?checkVariant=${encodeURIComponent(variant)}`
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(worklistId, variant, maximumVerdicts, null, 0, 'ATC execution timed out.');
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 expectedFindingCount = parseAtcFindingStats(runResp.body);
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
- return (result ??
77
- incompleteAtcResult(worklistId, variant, maximumVerdicts, expectedFindingCount, runResp.statusCode, 'ATC worklist polling timed out before SAP returned the first snapshot.'));
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
- result = parseAtcRunResult(resultResp.body, {
82
- worklistId,
83
- variant,
84
- maximumVerdicts,
85
- expectedFindingCount,
86
- runStatusCode: runResp.statusCode,
87
- });
88
- if (expectedFindingCount === null ||
89
- result.complete ||
90
- result.findingCount > expectedFindingCount ||
91
- now() >= deadline) {
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 incompleteAtcResult(worklistId, variant, maximumVerdicts, expectedFindingCount, runStatusCode, reason) {
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
- maximumVerdicts,
110
- expectedFindingCount,
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: expectedFindingCount !== null && expectedFindingCount > 0,
298
+ truncated: false,
115
299
  complete: false,
300
+ completionEvidence: context.completionEvidence,
116
301
  incompleteReasons: [reason],
117
- runStatusCode,
118
- worklist: { id: worklistId },
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 parseAtcFindingStats(xml) {
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
- const stats = infos.find((info) => nodeText(info.type).toUpperCase() === 'FINDING_STATS');
149
- const parts = nodeText(stats?.description)
150
- .split(',')
151
- .map((part) => Number(part.trim()));
152
- return parts.length === 3 && parts.every((part) => Number.isSafeInteger(part) && part >= 0)
153
- ? parts.reduce((sum, part) => sum + part, 0)
154
- : null;
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.expectedFindingCount === null) {
244
- incompleteReasons.push('SAP did not provide valid ATC finding-count evidence for this run.');
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.expectedFindingCount,
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
- !truncated &&
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']) } : {}),
@@ -1 +1 @@
1
- {"version":3,"file":"atc.js","sourceRoot":"","sources":["../../src/adt/atc.ts"],"names":[],"mappings":"AAAA,2EAA2E;AAE3E,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,aAAa,CAAC;AAG3D,OAAO,EAAE,4BAA4B,EAAE,MAAM,kBAAkB,CAAC;AAChE,OAAO,EAAE,cAAc,EAAE,aAAa,EAAqB,MAAM,aAAa,CAAC;AAC/E,OAAO,EAAE,aAAa,EAAkB,0BAA0B,EAAE,eAAe,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AA2CvH,MAAM,sBAAsB,GAAG,OAAO,CAAC;AACvC,MAAM,yBAAyB,GAAG,GAAG,CAAC;AACtC,MAAM,6BAA6B,GAAG,KAAK,CAAC;AAE5C,yCAAyC;AACzC,MAAM,CAAC,KAAK,UAAU,eAAe,CAAC,IAAmB,EAAE,MAAoB,EAAE,MAAM,GAAG,GAAG;IAC3F,cAAc,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,EAAE,iBAAiB,CAAC,CAAC;IAC9D,MAAM,OAAO,GAAG,MAAM,CAAC,IAAI,EAAE,IAAI,GAAG,CAAC;IACrC,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,iCAAiC,kBAAkB,CAAC,OAAO,CAAC,EAAE,EAAE;QAC1F,MAAM,EAAE,2CAA2C;KACpD,CAAC,CAAC;IACH,OAAO,eAAe,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAChE,CAAC;AAED,iDAAiD;AACjD,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,IAAmB,EACnB,MAAoB;IAEpB,cAAc,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;IAChE,MAAM,IAAI,GAAG,MAAM,IAAI,CAAC,GAAG,CAAC,6BAA6B,EAAE,EAAE,MAAM,EAAE,iBAAiB,EAAE,CAAC,CAAC;IAC1F,OAAO,0BAA0B,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;AAC/C,CAAC;AAED,+EAA+E;AAC/E,MAAM,CAAC,KAAK,UAAU,WAAW,CAC/B,IAAmB,EACnB,MAAoB,EACpB,SAAiB,EACjB,OAAgB,EAChB,WAAW,GAAmB,EAAE;IAEhC,cAAc,CAAC,MAAM,EAAE,aAAa,CAAC,IAAI,EAAE,aAAa,CAAC,CAAC;IAC1D,MAAM,GAAG,GAAG,WAAW,CAAC,GAAG,IAAI,IAAI,CAAC,GAAG,CAAC;IACxC,MAAM,SAAS,GAAG,WAAW,CAAC,SAAS,IAAI,sBAAsB,CAAC;IAClE,MAAM,QAAQ,GAAG,GAAG,EAAE,GAAG,SAAS,CAAC;IACnC,MAAM,cAAc,GAAsB;QACxC,QAAQ;QACR,cAAc,EAAE,SAAS;QACzB,MAAM,EAAE,WAAW,CAAC,MAAM;KAC3B,CAAC;IACF,MAAM,YAAY,GAAG,OAAO;QAC1B,CAAC,CAAC,0CAA0C,kBAAkB,CAAC,OAAO,CAAC,EAAE;QACzE,CAAC,CAAC,2BAA2B,CAAC;IAChC,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,IAAI,CAAC,YAAY,EAAE,EAAE,EAAE,iBAAiB,EAAE,EAAE,MAAM,EAAE,YAAY,EAAE,EAAE,cAAc,CAAC,CAAC;IACpH,MAAM,UAAU,GAAG,YAAY,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC;IAC5C,IAAI,CAAC,UAAU,EAAE,CAAC;QAChB,MAAM,IAAI,WAAW,CAAC,uEAAuE,EAAE,GAAG,EAAE,YAAY,CAAC,CAAC;IACpH,CAAC;IAED,MAAM,eAAe,GAAG,GAAG,CAAC;IAC5B,MAAM,OAAO,GAAG;mEACiD,eAAe;;;;gDAIlC,aAAa,CAAC,SAAS,CAAC;;;;WAI7D,CAAC;IACV,IAAI,OAAoB,CAAC;IACzB,IAAI,CAAC;QACH,OAAO,GAAG,MAAM,IAAI,CAAC,IAAI,CACvB,mCAAmC,kBAAkB,CAAC,UAAU,CAAC,EAAE,EACnE,OAAO,EACP,iBAAiB,EACjB,EAAE,MAAM,EAAE,iBAAiB,EAAE,EAC7B,cAAc,CACf,CAAC;IACJ,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,IAAI,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;YAChC,OAAO,mBAAmB,CAAC,UAAU,EAAE,OAAO,EAAE,eAAe,EAAE,IAAI,EAAE,CAAC,EAAE,0BAA0B,CAAC,CAAC;QACxG,CAAC;QACD,MAAM,KAAK,CAAC;IACd,CAAC;IACD,MAAM,oBAAoB,GAAG,oBAAoB,CAAC,OAAO,CAAC,IAAI,CAAC,CAAC;IAChE,MAAM,KAAK,GAAG,WAAW,CAAC,KAAK,IAAI,CAAC,CAAC,EAAU,EAAE,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,OAAO,EAAE,EAAE,CAAC,UAAU,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,CAAC,CAAC;IACvG,IAAI,OAAO,GAAG,WAAW,CAAC,cAAc,IAAI,yBAAyB,CAAC;IACtE,MAAM,UAAU,GAAG,WAAW,CAAC,UAAU,IAAI,6BAA6B,CAAC;IAC3E,IAAI,MAAgC,CAAC;IAErC,OAAO,IAAI,EAAE,CAAC;QACZ,IAAI,UAAuB,CAAC;QAC5B,IAAI,CAAC;YACH,UAAU,GAAG,MAAM,IAAI,CAAC,GAAG,CACzB,6BAA6B,kBAAkB,CAAC,UAAU,CAAC,EAAE,EAC7D,EAAE,MAAM,EAAE,iCAAiC,EAAE,EAC7C,cAAc,CACf,CAAC;QACJ,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,oBAAoB,CAAC,KAAK,CAAC,EAAE,CAAC;gBAChC,OAAO,CACL,MAAM;oBACN,mBAAmB,CACjB,UAAU,EACV,OAAO,EACP,eAAe,EACf,oBAAoB,EACpB,OAAO,CAAC,UAAU,EAClB,wEAAwE,CACzE,CACF,CAAC;YACJ,CAAC;YACD,MAAM,KAAK,CAAC;QACd,CAAC;QACD,MAAM,GAAG,iBAAiB,CAAC,UAAU,CAAC,IAAI,EAAE;YAC1C,UAAU;YACV,OAAO;YACP,eAAe;YACf,oBAAoB;YACpB,aAAa,EAAE,OAAO,CAAC,UAAU;SAClC,CAAC,CAAC;QACH,IACE,oBAAoB,KAAK,IAAI;YAC7B,MAAM,CAAC,QAAQ;YACf,MAAM,CAAC,YAAY,GAAG,oBAAoB;YAC1C,GAAG,EAAE,IAAI,QAAQ,EACjB,CAAC;YACD,OAAO,MAAM,CAAC;QAChB,CAAC;QACD,MAAM,KAAK,CAAC,IAAI,CAAC,GAAG,CAAC,OAAO,EAAE,IAAI,CAAC,GAAG,CAAC,CAAC,EAAE,QAAQ,GAAG,GAAG,EAAE,CAAC,CAAC,CAAC,CAAC;QAC9D,IAAI,GAAG,EAAE,IAAI,QAAQ;YAAE,OAAO,MAAM,CAAC;QACrC,OAAO,GAAG,IAAI,CAAC,GAAG,CAAC,UAAU,EAAE,OAAO,GAAG,CAAC,CAAC,CAAC;IAC9C,CAAC;AACH,CAAC;AAED,SAAS,oBAAoB,CAAC,KAAc;IAC1C,OAAO,CACL,KAAK,YAAY,eAAe;QAChC,CAAC,KAAK,CAAC,KAAK,EAAE,IAAI,KAAK,cAAc,IAAI,8CAA8C,CAAC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,CAAC,CAC7G,CAAC;AACJ,CAAC;AAED,SAAS,mBAAmB,CAC1B,UAAkB,EAClB,OAA2B,EAC3B,eAAuB,EACvB,oBAAmC,EACnC,aAAqB,EACrB,MAAc;IAEd,OAAO;QACL,QAAQ,EAAE,EAAE;QACZ,UAAU;QACV,OAAO,EAAE,OAAO,IAAI,IAAI;QACxB,eAAe;QACf,oBAAoB;QACpB,YAAY,EAAE,CAAC;QACf,oBAAoB,EAAE,CAAC;QACvB,mBAAmB,EAAE,IAAI;QACzB,SAAS,EAAE,oBAAoB,KAAK,IAAI,IAAI,oBAAoB,GAAG,CAAC;QACpE,QAAQ,EAAE,KAAK;QACf,iBAAiB,EAAE,CAAC,MAAM,CAAC;QAC3B,aAAa;QACb,QAAQ,EAAE,EAAE,EAAE,EAAE,UAAU,EAAE;QAC5B,KAAK,EAAE,EAAE;KACV,CAAC;AACJ,CAAC;AAED,SAAS,UAAU,CAAC,KAAc;IAChC,IAAI,CAAC,KAAK;QAAE,OAAO,SAAS,CAAC;IAC7B,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,MAAM,KAAK,GAAG,KAAK,CAAC,CAAC,CAAC,CAAC;QACvB,OAAO,KAAK,IAAI,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAE,KAAiC,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7F,CAAC;IACD,OAAO,OAAO,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAE,KAAiC,CAAC,CAAC,CAAC,SAAS,CAAC;AACpF,CAAC;AAED,SAAS,UAAU,CAAC,KAAc;IAChC,OAAO,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;AACrE,CAAC;AAED,SAAS,WAAW,CAAC,KAAc;IACjC,OAAO,UAAU,CAAC,KAAK,CAAC,CAAC,MAAM,CAC7B,CAAC,IAAI,EAAmC,EAAE,CAAC,IAAI,KAAK,IAAI,IAAI,OAAO,IAAI,KAAK,QAAQ,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,CAC7G,CAAC;AACJ,CAAC;AAED,SAAS,QAAQ,CAAC,KAAc;IAC9B,MAAM,KAAK,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC,CAAC;IACnC,IAAI,KAAK,IAAI,IAAI;QAAE,OAAO,EAAE,CAAC;IAC7B,IAAI,OAAO,KAAK,KAAK,QAAQ;QAAE,OAAO,MAAM,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,CAAC;IAC3D,OAAO,MAAM,CAAE,KAAiC,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;AAC1E,CAAC;AAED,SAAS,oBAAoB,CAAC,GAAW;IACvC,MAAM,IAAI,GAAG,UAAU,CAAC,QAAQ,CAAC,GAAG,CAAC,CAAC,WAAW,CAAC,CAAC;IACnD,MAAM,KAAK,GAAG,WAAW,CAAC,IAAI,EAAE,KAAK,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC,CAAC;IAC3F,MAAM,KAAK,GAAG,KAAK,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,QAAQ,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC,WAAW,EAAE,KAAK,eAAe,CAAC,CAAC;IAC1F,MAAM,KAAK,GAAG,QAAQ,CAAC,KAAK,EAAE,WAAW,CAAC;SACvC,KAAK,CAAC,GAAG,CAAC;SACV,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC;IACtC,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,CAAC;QACzF,CAAC,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,IAAI,EAAE,EAAE,CAAC,GAAG,GAAG,IAAI,EAAE,CAAC,CAAC;QAC5C,CAAC,CAAC,IAAI,CAAC;AACX,CAAC;AAED,SAAS,sBAAsB,CAAC,MAA+B;IAC7D,MAAM,GAAG,GAAG,OAAO,MAAM,CAAC,OAAO,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC9E,MAAM,IAAI,GAAG,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACjF,MAAM,IAAI,GAAG,OAAO,MAAM,CAAC,QAAQ,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACjF,OAAO,CACL,GAAG,CAAC,MAAM,GAAG,CAAC;QACd,4BAA4B,CAAC,GAAG,EAAE,cAAc,EAAE,EAAE,oBAAoB,EAAE,IAAI,EAAE,CAAC,KAAK,IAAI;QAC1F,IAAI,CAAC,MAAM,GAAG,CAAC;QACf,IAAI,CAAC,MAAM,GAAG,CAAC,CAChB,CAAC;AACJ,CAAC;AAED,SAAS,eAAe,CAAC,OAAgC;IACvD,MAAM,MAAM,GAAG,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,OAAO,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC;IACvE,IAAI,IAAI,GAAG,CAAC,CAAC;IACb,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IAC3C,IAAI,QAAQ,KAAK,CAAC,CAAC,EAAE,CAAC;QACpB,MAAM,QAAQ,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,GAAG,SAAS,CAAC,MAAM,CAAC,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAE,EAAE,EAAE,CAAC,CAAC;QAC/F,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,QAAQ,CAAC;YAAE,IAAI,GAAG,QAAQ,CAAC;IAC/C,CAAC;IAED,MAAM,eAAe,GAAG,OAAO,CAAC,gBAAgB,CAAC,CAAC;IAClD,MAAM,YAAY,GAAG,UAAU,CAAC,OAAO,CAAC,UAAU,CAAC,CAAC;IACpD,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,WAAW,EAAE,QAAQ,CAAC,CAAC;IACxD,OAAO;QACL,QAAQ,EAAE,MAAM,CAAC,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,IAAI,EAAE,CAAC,CAAC;QACrD,UAAU,EAAE,MAAM,CAAC,OAAO,CAAC,cAAc,CAAC,IAAI,EAAE,CAAC;QACjD,YAAY,EAAE,MAAM,CAAC,OAAO,CAAC,gBAAgB,CAAC,IAAI,EAAE,CAAC;QACrD,GAAG,EAAE,MAAM;QACX,IAAI;QACJ,GAAG,CAAC,eAAe,IAAI,IAAI,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,MAAM,CAAC,eAAe,CAAC,EAAE,CAAC;QAC7E,WAAW,EAAE,aAAa,CAAC,IAAI,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,KAAK,IAAI,EAAE,CAAC,IAAI,OAAO,CAAC,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC;KACnH,CAAC;AACJ,CAAC;AAED,SAAS,gBAAgB,CAAC,IAA6B,EAAE,UAAqC;IAC5F,MAAM,cAAc,GAAG,UAAU,CAAC,OAAO,CAAC,CAAC,MAAM,EAAE,EAAE,CACnD,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,WAAW,CAAC,SAAS,CAAC,OAAO,CAAC,CAAC,CACpF,CAAC;IACF,2FAA2F;IAC3F,mDAAmD;IACnD,OAAO,CAAC,GAAG,cAAc,EAAE,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,CAAC,eAAe,CAAC,CAAC;AAChF,CAAC;AAED,SAAS,aAAa,CAAC,IAA6B;IAClD,OAAO,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC;SAC3B,OAAO,CAAC,CAAC,SAAS,EAAE,EAAE,CAAC,UAAU,CAAC,SAAS,CAAC,IAAI,CAAC,CAAC;SAClD,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE;QACb,MAAM,IAAI,GAAG,UAAU,CAAC,KAAK,CAAC,CAAC;QAC/B,IAAI,CAAC,IAAI;YAAE,OAAO,MAAM,CAAC,KAAK,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;QAC7C,MAAM,SAAS,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,aAAa,EAAE,OAAO,CAAC;aAC1D,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,IAAI,CAAC,KAAK,GAAG,EAAE,CAAC,CAAC;aAC9B,IAAI,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,IAAI,IAAI,CAAC,CAAC;QAClC,OAAO,MAAM,CAAC,SAAS,IAAI,IAAI,CAAC,OAAO,CAAC,IAAI,EAAE,CAAC,CAAC,IAAI,EAAE,CAAC;IACzD,CAAC,CAAC;SACD,MAAM,CAAC,OAAO,CAAC,CAAC;AACrB,CAAC;AAED,SAAS,iBAAiB,CACxB,GAAW,EACX,OAMC;IAED,MAAM,MAAM,GAAG,QAAQ,CAAC,GAAG,CAAC,CAAC;IAC7B,MAAM,YAAY,GAAG,UAAU,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IACjD,MAAM,SAAS,GAAG,WAAW,CAAC,MAAM,CAAC,QAAQ,CAAC,CAAC;IAC/C,MAAM,gBAAgB,GAAG,YAAY,CAAC,MAAM,KAAK,CAAC,IAAI,SAAS,CAAC,MAAM,KAAK,CAAC,CAAC;IAC7E,MAAM,IAAI,GAAG,gBAAgB,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACnD,MAAM,eAAe,GAAG,IAAI,CAAC,uBAAuB,CAAC,CAAC;IACtD,MAAM,mBAAmB,GAAG,eAAe,IAAI,IAAI,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,KAAK,MAAM,CAAC;IACrH,MAAM,mBAAmB,GAAG,UAAU,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACrD,MAAM,gBAAgB,GAAG,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;IACnD,MAAM,2BAA2B,GAAG,mBAAmB,CAAC,MAAM,KAAK,CAAC,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,CAAC;IACtG,MAAM,cAAc,GAAG,2BAA2B,CAAC,CAAC,CAAC,gBAAgB,CAAC,CAAC,CAAE,CAAC,MAAM,CAAC,CAAC,CAAC,SAAS,CAAC;IAC7F,MAAM,aAAa,GAAG,UAAU,CAAC,cAAc,CAAC,CAAC;IACjD,MAAM,UAAU,GAAG,WAAW,CAAC,cAAc,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,gBAAgB,CAAC,IAAI,EAAE,UAAU,CAAC,CAAC;IACpD,MAAM,SAAS,GAAG,OAAO,CAAC,oBAAoB,KAAK,IAAI,IAAI,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC,oBAAoB,CAAC;IAC1G,MAAM,eAAe,GAAG,UAAU,CAAC,MAAM,CAAC,sBAAsB,CAAC,CAAC;IAClE,MAAM,oBAAoB,GAAG,eAAe,CAAC,MAAM,CAAC;IACpD,MAAM,oBAAoB,GAAG,aAAa,CAAC,MAAM,GAAG,eAAe,CAAC,MAAM,CAAC;IAC3E,MAAM,cAAc,GAAG,OAAO,IAAI,CAAC,MAAM,CAAC,KAAK,QAAQ,CAAC,CAAC,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IACnF,MAAM,iBAAiB,GAAG,cAAc,CAAC,MAAM,GAAG,CAAC,IAAI,cAAc,KAAK,OAAO,CAAC,UAAU,CAAC;IAC7F,MAAM,oBAAoB,GAAG,QAAQ,CAAC,MAAM,CAC1C,CAAC,OAAO,EAAE,EAAE,CAAC,CAAC,MAAM,CAAC,SAAS,CAAC,OAAO,CAAC,QAAQ,CAAC,IAAI,OAAO,CAAC,QAAQ,IAAI,CAAC,CAC1E,CAAC,MAAM,CAAC;IACT,MAAM,iBAAiB,GAAa,EAAE,CAAC;IACvC,IAAI,CAAC,gBAAgB;QAAE,iBAAiB,CAAC,IAAI,CAAC,kDAAkD,CAAC,CAAC;IAClG,IAAI,CAAC,cAAc,EAAE,CAAC;QACpB,iBAAiB,CAAC,IAAI,CAAC,gEAAgE,CAAC,CAAC;IAC3F,CAAC;SAAM,IAAI,CAAC,iBAAiB,EAAE,CAAC;QAC9B,iBAAiB,CAAC,IAAI,CAAC,kEAAkE,CAAC,CAAC;IAC7F,CAAC;IACD,IAAI,mBAAmB,KAAK,IAAI,EAAE,CAAC;QACjC,iBAAiB,CAAC,IAAI,CACpB,mBAAmB,KAAK,KAAK;YAC3B,CAAC,CAAC,2CAA2C;YAC7C,CAAC,CAAC,uDAAuD,CAC5D,CAAC;IACJ,CAAC;IACD,IAAI,OAAO,CAAC,oBAAoB,KAAK,IAAI,EAAE,CAAC;QAC1C,iBAAiB,CAAC,IAAI,CAAC,oEAAoE,CAAC,CAAC;IAC/F,CAAC;SAAM,IAAI,QAAQ,CAAC,MAAM,KAAK,OAAO,CAAC,oBAAoB,EAAE,CAAC;QAC5D,iBAAiB,CAAC,IAAI,CACpB,QAAQ,CAAC,MAAM,GAAG,OAAO,CAAC,oBAAoB;YAC5C,CAAC,CAAC,oBAAoB,QAAQ,CAAC,MAAM,OAAO,OAAO,CAAC,oBAAoB,gCAAgC;YACxG,CAAC,CAAC,oBAAoB,QAAQ,CAAC,MAAM,4BAA4B,OAAO,CAAC,oBAAoB,uBAAuB,CACvH,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,2BAA2B,EAAE,CAAC;QACjC,iBAAiB,CAAC,IAAI,CAAC,8DAA8D,CAAC,CAAC;IACzF,CAAC;IACD,IAAI,oBAAoB,KAAK,CAAC;QAAE,iBAAiB,CAAC,IAAI,CAAC,8CAA8C,CAAC,CAAC;IACvG,IAAI,oBAAoB,GAAG,CAAC,EAAE,CAAC;QAC7B,iBAAiB,CAAC,IAAI,CAAC,GAAG,oBAAoB,sDAAsD,CAAC,CAAC;IACxG,CAAC;IACD,IAAI,oBAAoB,GAAG,CAAC,EAAE,CAAC;QAC7B,iBAAiB,CAAC,IAAI,CAAC,GAAG,oBAAoB,sDAAsD,CAAC,CAAC;IACxG,CAAC;IACD,MAAM,KAAK,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IAElC,OAAO;QACL,QAAQ;QACR,UAAU,EAAE,OAAO,CAAC,UAAU;QAC9B,OAAO,EAAE,OAAO,CAAC,OAAO,IAAI,IAAI;QAChC,eAAe,EAAE,OAAO,CAAC,eAAe;QACxC,oBAAoB,EAAE,OAAO,CAAC,oBAAoB;QAClD,YAAY,EAAE,QAAQ,CAAC,MAAM;QAC7B,oBAAoB;QACpB,mBAAmB;QACnB,SAAS;QACT,QAAQ,EACN,gBAAgB;YAChB,iBAAiB;YACjB,mBAAmB,KAAK,IAAI;YAC5B,CAAC,SAAS;YACV,OAAO,CAAC,oBAAoB,KAAK,IAAI;YACrC,QAAQ,CAAC,MAAM,KAAK,OAAO,CAAC,oBAAoB;YAChD,2BAA2B;YAC3B,oBAAoB,GAAG,CAAC;YACxB,oBAAoB,KAAK,CAAC;YAC1B,oBAAoB,KAAK,CAAC;QAC5B,iBAAiB;QACjB,aAAa,EAAE,OAAO,CAAC,aAAa;QACpC,QAAQ,EAAE;YACR,EAAE,EAAE,cAAc;YAClB,GAAG,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,MAAM,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YAC1E,GAAG,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,CAAC,CAAC,EAAE,aAAa,EAAE,MAAM,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;YACtF,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,CAAC,CAAC,EAAE,MAAM,EAAE,MAAM,CAAC,IAAI,CAAC,UAAU,CAAC,IAAI,IAAI,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;SACxG;QACD,KAAK;KACN,CAAC;AACJ,CAAC"}
1
+ {"version":3,"file":"atc.js","sourceRoot":"","sources":["../../src/adt/atc.ts"],"names":[],"mappings":"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"}