arc-1 0.9.5 → 0.9.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/README.md +21 -3
- package/dist/adt/abapgit.d.ts +2 -1
- package/dist/adt/abapgit.d.ts.map +1 -1
- package/dist/adt/abapgit.js +2 -2
- package/dist/adt/abapgit.js.map +1 -1
- package/dist/adt/btp.d.ts.map +1 -1
- package/dist/adt/btp.js +7 -3
- package/dist/adt/btp.js.map +1 -1
- package/dist/adt/class-structure.d.ts +176 -0
- package/dist/adt/class-structure.d.ts.map +1 -0
- package/dist/adt/class-structure.js +317 -0
- package/dist/adt/class-structure.js.map +1 -0
- package/dist/adt/client.d.ts +150 -8
- package/dist/adt/client.d.ts.map +1 -1
- package/dist/adt/client.js +345 -12
- package/dist/adt/client.js.map +1 -1
- package/dist/adt/config.d.ts +7 -1
- package/dist/adt/config.d.ts.map +1 -1
- package/dist/adt/config.js.map +1 -1
- package/dist/adt/crud.d.ts +38 -0
- package/dist/adt/crud.d.ts.map +1 -1
- package/dist/adt/crud.js +73 -1
- package/dist/adt/crud.js.map +1 -1
- package/dist/adt/errors.d.ts +2 -2
- package/dist/adt/errors.d.ts.map +1 -1
- package/dist/adt/errors.js +50 -6
- package/dist/adt/errors.js.map +1 -1
- package/dist/adt/features.d.ts.map +1 -1
- package/dist/adt/features.js +27 -3
- package/dist/adt/features.js.map +1 -1
- package/dist/adt/gcts.d.ts +3 -2
- package/dist/adt/gcts.d.ts.map +1 -1
- package/dist/adt/gcts.js +4 -4
- package/dist/adt/gcts.js.map +1 -1
- package/dist/adt/http.d.ts +41 -0
- package/dist/adt/http.d.ts.map +1 -1
- package/dist/adt/http.js +132 -45
- package/dist/adt/http.js.map +1 -1
- package/dist/adt/package-hierarchy.d.ts +67 -0
- package/dist/adt/package-hierarchy.d.ts.map +1 -0
- package/dist/adt/package-hierarchy.js +100 -0
- package/dist/adt/package-hierarchy.js.map +1 -0
- package/dist/adt/release.d.ts +35 -0
- package/dist/adt/release.d.ts.map +1 -0
- package/dist/adt/release.js +48 -0
- package/dist/adt/release.js.map +1 -0
- package/dist/adt/safety.d.ts +39 -3
- package/dist/adt/safety.d.ts.map +1 -1
- package/dist/adt/safety.js +136 -15
- package/dist/adt/safety.js.map +1 -1
- package/dist/adt/types.d.ts +74 -0
- package/dist/adt/types.d.ts.map +1 -1
- package/dist/adt/xml-parser.d.ts +68 -1
- package/dist/adt/xml-parser.d.ts.map +1 -1
- package/dist/adt/xml-parser.js +263 -0
- package/dist/adt/xml-parser.js.map +1 -1
- package/dist/authz/policy.d.ts.map +1 -1
- package/dist/authz/policy.js +12 -0
- package/dist/authz/policy.js.map +1 -1
- package/dist/context/grep.d.ts +48 -0
- package/dist/context/grep.d.ts.map +1 -0
- package/dist/context/grep.js +146 -0
- package/dist/context/grep.js.map +1 -0
- package/dist/handlers/intent.d.ts +2 -1
- package/dist/handlers/intent.d.ts.map +1 -1
- package/dist/handlers/intent.js +614 -50
- package/dist/handlers/intent.js.map +1 -1
- package/dist/handlers/schemas.d.ts +52 -6
- package/dist/handlers/schemas.d.ts.map +1 -1
- package/dist/handlers/schemas.js +90 -9
- package/dist/handlers/schemas.js.map +1 -1
- package/dist/handlers/tools.d.ts.map +1 -1
- package/dist/handlers/tools.js +73 -12
- package/dist/handlers/tools.js.map +1 -1
- package/dist/lint/lint.d.ts.map +1 -1
- package/dist/lint/lint.js +6 -0
- package/dist/lint/lint.js.map +1 -1
- package/dist/lint/pre-write-hints.d.ts +45 -0
- package/dist/lint/pre-write-hints.d.ts.map +1 -0
- package/dist/lint/pre-write-hints.js +145 -0
- package/dist/lint/pre-write-hints.js.map +1 -0
- package/dist/server/audit.d.ts +27 -1
- package/dist/server/audit.d.ts.map +1 -1
- package/dist/server/audit.js.map +1 -1
- package/dist/server/auth-rate-limit.d.ts +78 -0
- package/dist/server/auth-rate-limit.d.ts.map +1 -0
- package/dist/server/auth-rate-limit.js +95 -0
- package/dist/server/auth-rate-limit.js.map +1 -0
- package/dist/server/config.d.ts.map +1 -1
- package/dist/server/config.js +32 -0
- package/dist/server/config.js.map +1 -1
- package/dist/server/http.d.ts.map +1 -1
- package/dist/server/http.js +73 -2
- package/dist/server/http.js.map +1 -1
- package/dist/server/mcp-rate-limit.d.ts +69 -0
- package/dist/server/mcp-rate-limit.d.ts.map +1 -0
- package/dist/server/mcp-rate-limit.js +92 -0
- package/dist/server/mcp-rate-limit.js.map +1 -0
- package/dist/server/server.d.ts +26 -6
- package/dist/server/server.d.ts.map +1 -1
- package/dist/server/server.js +87 -28
- package/dist/server/server.js.map +1 -1
- package/dist/server/types.d.ts +20 -1
- package/dist/server/types.d.ts.map +1 -1
- package/dist/server/types.js +2 -0
- package/dist/server/types.js.map +1 -1
- package/package.json +14 -12
|
@@ -0,0 +1,100 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DEVCLASS hierarchy resolver for `allowedPackages` subtree rules (`ZFOO/**`).
|
|
3
|
+
*
|
|
4
|
+
* Pattern semantics:
|
|
5
|
+
* - `ZFOO/**` means "package `ZFOO` and every transitive sub-package whose
|
|
6
|
+
* DEVCLASS chain leads back to `ZFOO`".
|
|
7
|
+
* - SAP stores the relationship in `TDEVC.PARENTCL`. ADT exposes direct
|
|
8
|
+
* children via `POST /sap/bc/adt/repository/nodestructure`
|
|
9
|
+
* (`AdtClient.getSubpackages`).
|
|
10
|
+
*
|
|
11
|
+
* Security invariants:
|
|
12
|
+
* - Resolution failure (network, permission, missing root) is fail-closed:
|
|
13
|
+
* the resolver throws and the caller (checkPackage) MUST treat the throw as
|
|
14
|
+
* "package denied". Never silently allow.
|
|
15
|
+
* - The cache is keyed by uppercased root; lookups are case-insensitive.
|
|
16
|
+
* - A rejected resolution purges its cache entry so a retry can succeed,
|
|
17
|
+
* but the current request still fails. This avoids cementing a transient
|
|
18
|
+
* failure for the full TTL.
|
|
19
|
+
*
|
|
20
|
+
* Cache lifetime:
|
|
21
|
+
* - Default 10 minutes (see `DEFAULT_TTL_MS`); overridable per-instance via
|
|
22
|
+
* `AdtPackageHierarchyResolverOptions.ttlMs`. The cache can be invalidated
|
|
23
|
+
* manually via `invalidate(root?)` after admin actions that change the
|
|
24
|
+
* hierarchy (create_package / change_package / delete_package).
|
|
25
|
+
*/
|
|
26
|
+
import { AdtSafetyError } from './errors.js';
|
|
27
|
+
const DEFAULT_TTL_MS = 10 * 60 * 1000;
|
|
28
|
+
const DEFAULT_MAX_PACKAGES = 10_000;
|
|
29
|
+
const DEFAULT_MAX_DEPTH = 50;
|
|
30
|
+
export class AdtPackageHierarchyResolver {
|
|
31
|
+
fetcher;
|
|
32
|
+
ttlMs;
|
|
33
|
+
maxPackages;
|
|
34
|
+
maxDepth;
|
|
35
|
+
cache = new Map();
|
|
36
|
+
constructor(fetcher, opts = {}) {
|
|
37
|
+
this.fetcher = fetcher;
|
|
38
|
+
this.ttlMs = opts.ttlMs ?? DEFAULT_TTL_MS;
|
|
39
|
+
this.maxPackages = opts.maxPackages ?? DEFAULT_MAX_PACKAGES;
|
|
40
|
+
this.maxDepth = opts.maxDepth ?? DEFAULT_MAX_DEPTH;
|
|
41
|
+
}
|
|
42
|
+
async isDescendantOrSelf(root, pkg) {
|
|
43
|
+
const upperRoot = root.toUpperCase();
|
|
44
|
+
const upperPkg = pkg.toUpperCase();
|
|
45
|
+
if (upperRoot === upperPkg)
|
|
46
|
+
return true;
|
|
47
|
+
const subtree = await this.getSubtree(upperRoot);
|
|
48
|
+
return subtree.has(upperPkg);
|
|
49
|
+
}
|
|
50
|
+
invalidate(root) {
|
|
51
|
+
if (root === undefined) {
|
|
52
|
+
this.cache.clear();
|
|
53
|
+
return;
|
|
54
|
+
}
|
|
55
|
+
this.cache.delete(root.toUpperCase());
|
|
56
|
+
}
|
|
57
|
+
getSubtree(upperRoot) {
|
|
58
|
+
const now = Date.now();
|
|
59
|
+
const cached = this.cache.get(upperRoot);
|
|
60
|
+
if (cached && cached.expires > now)
|
|
61
|
+
return cached.subtree;
|
|
62
|
+
const subtree = this.computeSubtree(upperRoot).catch((err) => {
|
|
63
|
+
// Fail-closed: purge so a retry can succeed; rethrow as AdtSafetyError
|
|
64
|
+
// so callers see a stable error type at the safety boundary.
|
|
65
|
+
this.cache.delete(upperRoot);
|
|
66
|
+
const msg = err instanceof Error ? err.message : String(err);
|
|
67
|
+
throw new AdtSafetyError(`Failed to resolve DEVCLASS subtree under '${upperRoot}' for allowedPackages rule (denying for safety): ${msg}`);
|
|
68
|
+
});
|
|
69
|
+
this.cache.set(upperRoot, { expires: now + this.ttlMs, subtree });
|
|
70
|
+
return subtree;
|
|
71
|
+
}
|
|
72
|
+
async computeSubtree(upperRoot) {
|
|
73
|
+
const result = new Set([upperRoot]);
|
|
74
|
+
let frontier = [upperRoot];
|
|
75
|
+
let depth = 0;
|
|
76
|
+
while (frontier.length > 0) {
|
|
77
|
+
if (depth >= this.maxDepth) {
|
|
78
|
+
throw new Error(`DEVCLASS hierarchy under '${upperRoot}' exceeds maxDepth=${this.maxDepth} (possible cycle in TDEVC.PARENTCL)`);
|
|
79
|
+
}
|
|
80
|
+
const nextFrontier = [];
|
|
81
|
+
for (const cur of frontier) {
|
|
82
|
+
const children = await this.fetcher(cur);
|
|
83
|
+
for (const child of children) {
|
|
84
|
+
const upper = child.toUpperCase();
|
|
85
|
+
if (result.has(upper))
|
|
86
|
+
continue;
|
|
87
|
+
result.add(upper);
|
|
88
|
+
if (result.size > this.maxPackages) {
|
|
89
|
+
throw new Error(`DEVCLASS subtree under '${upperRoot}' exceeds maxPackages=${this.maxPackages}; refusing for safety`);
|
|
90
|
+
}
|
|
91
|
+
nextFrontier.push(upper);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
frontier = nextFrontier;
|
|
95
|
+
depth++;
|
|
96
|
+
}
|
|
97
|
+
return result;
|
|
98
|
+
}
|
|
99
|
+
}
|
|
100
|
+
//# sourceMappingURL=package-hierarchy.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"package-hierarchy.js","sourceRoot":"","sources":["../../src/adt/package-hierarchy.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SAP_BASIS release parsing helpers.
|
|
3
|
+
*
|
|
4
|
+
* Kept dependency-free (no imports) so it can be used from low-level modules
|
|
5
|
+
* such as `errors.ts` without risking an import cycle through `features.ts`.
|
|
6
|
+
*
|
|
7
|
+
* SAP_BASIS release strings reported by `/sap/bc/adt/system/components` are
|
|
8
|
+
* dotless three-digit codes: "700", "740", "750", "757", "758". Releases below
|
|
9
|
+
* 751 lack native honoring of the `X-sap-adt-sessiontype: stateful` header over
|
|
10
|
+
* HTTP (the 7.51+ `CONFIGURE_SESSION_STATE` of `CL_ADT_WB_RES_APP` does not
|
|
11
|
+
* exist), so ADT writes fail with `423 invalid lock handle` unless the
|
|
12
|
+
* `abapfs_extensions` enhancement is installed. See issue #293.
|
|
13
|
+
*/
|
|
14
|
+
/** The release at and above which ADT honors stateful HTTP sessions natively. */
|
|
15
|
+
export declare const STATEFUL_SESSION_MIN_RELEASE = 751;
|
|
16
|
+
/**
|
|
17
|
+
* Parse a SAP_BASIS release string into a comparable integer.
|
|
18
|
+
*
|
|
19
|
+
* Strips any non-digit characters first, so both dotless ("750") and dotted
|
|
20
|
+
* ("7.50") forms map to the same number (750). Returns `undefined` when the
|
|
21
|
+
* input is empty/undefined or contains no digits.
|
|
22
|
+
*/
|
|
23
|
+
export declare function parseReleaseNumber(release?: string): number | undefined;
|
|
24
|
+
/**
|
|
25
|
+
* True when the detected release is known to be below the stateful-session
|
|
26
|
+
* threshold (i.e. ADT HTTP writes need the abapfs_extensions enhancement).
|
|
27
|
+
* Returns false when the release is unknown — never cry wolf on missing data.
|
|
28
|
+
*/
|
|
29
|
+
export declare function isPreStatefulRelease(abapRelease?: string): boolean;
|
|
30
|
+
/**
|
|
31
|
+
* Decide whether to emit the startup warning about pre-7.51 write support:
|
|
32
|
+
* only when writes are enabled AND the detected release is known to be < 7.51.
|
|
33
|
+
*/
|
|
34
|
+
export declare function shouldWarnPreStatefulRelease(allowWrites: boolean, abapRelease?: string): boolean;
|
|
35
|
+
//# sourceMappingURL=release.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release.d.ts","sourceRoot":"","sources":["../../src/adt/release.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,iFAAiF;AACjF,eAAO,MAAM,4BAA4B,MAAM,CAAC;AAEhD;;;;;;GAMG;AACH,wBAAgB,kBAAkB,CAAC,OAAO,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAMvE;AAED;;;;GAIG;AACH,wBAAgB,oBAAoB,CAAC,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAGlE;AAED;;;GAGG;AACH,wBAAgB,4BAA4B,CAAC,WAAW,EAAE,OAAO,EAAE,WAAW,CAAC,EAAE,MAAM,GAAG,OAAO,CAEhG"}
|
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* SAP_BASIS release parsing helpers.
|
|
3
|
+
*
|
|
4
|
+
* Kept dependency-free (no imports) so it can be used from low-level modules
|
|
5
|
+
* such as `errors.ts` without risking an import cycle through `features.ts`.
|
|
6
|
+
*
|
|
7
|
+
* SAP_BASIS release strings reported by `/sap/bc/adt/system/components` are
|
|
8
|
+
* dotless three-digit codes: "700", "740", "750", "757", "758". Releases below
|
|
9
|
+
* 751 lack native honoring of the `X-sap-adt-sessiontype: stateful` header over
|
|
10
|
+
* HTTP (the 7.51+ `CONFIGURE_SESSION_STATE` of `CL_ADT_WB_RES_APP` does not
|
|
11
|
+
* exist), so ADT writes fail with `423 invalid lock handle` unless the
|
|
12
|
+
* `abapfs_extensions` enhancement is installed. See issue #293.
|
|
13
|
+
*/
|
|
14
|
+
/** The release at and above which ADT honors stateful HTTP sessions natively. */
|
|
15
|
+
export const STATEFUL_SESSION_MIN_RELEASE = 751;
|
|
16
|
+
/**
|
|
17
|
+
* Parse a SAP_BASIS release string into a comparable integer.
|
|
18
|
+
*
|
|
19
|
+
* Strips any non-digit characters first, so both dotless ("750") and dotted
|
|
20
|
+
* ("7.50") forms map to the same number (750). Returns `undefined` when the
|
|
21
|
+
* input is empty/undefined or contains no digits.
|
|
22
|
+
*/
|
|
23
|
+
export function parseReleaseNumber(release) {
|
|
24
|
+
if (!release)
|
|
25
|
+
return undefined;
|
|
26
|
+
const digits = release.replace(/\D/g, '');
|
|
27
|
+
if (digits.length === 0)
|
|
28
|
+
return undefined;
|
|
29
|
+
const num = Number.parseInt(digits, 10);
|
|
30
|
+
return Number.isNaN(num) ? undefined : num;
|
|
31
|
+
}
|
|
32
|
+
/**
|
|
33
|
+
* True when the detected release is known to be below the stateful-session
|
|
34
|
+
* threshold (i.e. ADT HTTP writes need the abapfs_extensions enhancement).
|
|
35
|
+
* Returns false when the release is unknown — never cry wolf on missing data.
|
|
36
|
+
*/
|
|
37
|
+
export function isPreStatefulRelease(abapRelease) {
|
|
38
|
+
const num = parseReleaseNumber(abapRelease);
|
|
39
|
+
return num !== undefined && num < STATEFUL_SESSION_MIN_RELEASE;
|
|
40
|
+
}
|
|
41
|
+
/**
|
|
42
|
+
* Decide whether to emit the startup warning about pre-7.51 write support:
|
|
43
|
+
* only when writes are enabled AND the detected release is known to be < 7.51.
|
|
44
|
+
*/
|
|
45
|
+
export function shouldWarnPreStatefulRelease(allowWrites, abapRelease) {
|
|
46
|
+
return allowWrites === true && isPreStatefulRelease(abapRelease);
|
|
47
|
+
}
|
|
48
|
+
//# sourceMappingURL=release.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"release.js","sourceRoot":"","sources":["../../src/adt/release.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH,iFAAiF;AACjF,MAAM,CAAC,MAAM,4BAA4B,GAAG,GAAG,CAAC;AAEhD;;;;;;GAMG;AACH,MAAM,UAAU,kBAAkB,CAAC,OAAgB;IACjD,IAAI,CAAC,OAAO;QAAE,OAAO,SAAS,CAAC;IAC/B,MAAM,MAAM,GAAG,OAAO,CAAC,OAAO,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;IAC1C,IAAI,MAAM,CAAC,MAAM,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAC1C,MAAM,GAAG,GAAG,MAAM,CAAC,QAAQ,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC;IACxC,OAAO,MAAM,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC,CAAC,GAAG,CAAC;AAC7C,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,oBAAoB,CAAC,WAAoB;IACvD,MAAM,GAAG,GAAG,kBAAkB,CAAC,WAAW,CAAC,CAAC;IAC5C,OAAO,GAAG,KAAK,SAAS,IAAI,GAAG,GAAG,4BAA4B,CAAC;AACjE,CAAC;AAED;;;GAGG;AACH,MAAM,UAAU,4BAA4B,CAAC,WAAoB,EAAE,WAAoB;IACrF,OAAO,WAAW,KAAK,IAAI,IAAI,oBAAoB,CAAC,WAAW,CAAC,CAAC;AACnE,CAAC"}
|
package/dist/adt/safety.d.ts
CHANGED
|
@@ -19,6 +19,9 @@
|
|
|
19
19
|
* `SAP_DISALLOWED_OPS` were removed in v0.7. Admins configure via the `allow*`
|
|
20
20
|
* flags and `SAP_DENY_ACTIONS`.
|
|
21
21
|
*/
|
|
22
|
+
import type { PackageHierarchyResolver } from './package-hierarchy.js';
|
|
23
|
+
/** Suffix that marks an `allowedPackages` entry as "this package + DEVCLASS subtree". */
|
|
24
|
+
export declare const SUBTREE_SUFFIX = "/**";
|
|
22
25
|
/**
|
|
23
26
|
* Operation type codes (internal classification).
|
|
24
27
|
* NOT admin-facing — the code just uses these as a compact categorical label.
|
|
@@ -62,10 +65,43 @@ export declare function unrestrictedSafetyConfig(): SafetyConfig;
|
|
|
62
65
|
export declare function isOperationAllowed(config: SafetyConfig, op: OperationTypeCode): boolean;
|
|
63
66
|
/** Check operation and throw AdtSafetyError if blocked. */
|
|
64
67
|
export declare function checkOperation(config: SafetyConfig, op: OperationTypeCode, opName: string): void;
|
|
65
|
-
/**
|
|
68
|
+
/**
|
|
69
|
+
* Static (synchronous) outcome of evaluating `allowedPackages` against `pkg`.
|
|
70
|
+
* - 'allowed': the package matches an exact / prefix-wildcard / subtree-root rule.
|
|
71
|
+
* - 'denied': no rule matches and no subtree rule could possibly match.
|
|
72
|
+
* - 'needs-hierarchy': at least one `X/**` rule exists where `pkg !== X`; the
|
|
73
|
+
* decision requires DEVCLASS hierarchy resolution. The caller MUST resolve
|
|
74
|
+
* via `checkPackage(..., resolver)` (async) — falling back to
|
|
75
|
+
* `isPackageAllowed`'s boolean form will treat it as DENIED (fail-closed).
|
|
76
|
+
*/
|
|
77
|
+
export type PackageAllowDecision = 'allowed' | 'denied' | 'needs-hierarchy';
|
|
78
|
+
/**
|
|
79
|
+
* Evaluate the static portion of `allowedPackages`.
|
|
80
|
+
*
|
|
81
|
+
* Subtree (`X/**`) rules can only be statically resolved when the package
|
|
82
|
+
* equals the subtree root. Any other case requires hierarchy resolution and
|
|
83
|
+
* is reported as 'needs-hierarchy'.
|
|
84
|
+
*/
|
|
85
|
+
export declare function decidePackageAllowed(config: SafetyConfig, pkg: string): PackageAllowDecision;
|
|
86
|
+
/**
|
|
87
|
+
* Synchronous, fail-closed view of `allowedPackages`. Subtree rules that need
|
|
88
|
+
* hierarchy resolution return `false` here — callers wanting the precise answer
|
|
89
|
+
* must use `checkPackage(..., resolver)` (async).
|
|
90
|
+
*
|
|
91
|
+
* Kept exported because non-write code paths (effective-policy logging,
|
|
92
|
+
* CLI display) rely on a quick synchronous check.
|
|
93
|
+
*/
|
|
66
94
|
export declare function isPackageAllowed(config: SafetyConfig, pkg: string): boolean;
|
|
67
|
-
/**
|
|
68
|
-
|
|
95
|
+
/**
|
|
96
|
+
* Check package and throw AdtSafetyError if blocked.
|
|
97
|
+
*
|
|
98
|
+
* If `allowedPackages` contains subtree (`X/**`) rules, a `resolver` is
|
|
99
|
+
* required to evaluate them. Any resolver failure is treated as DENY
|
|
100
|
+
* (fail-closed); the original failure is included in the thrown message.
|
|
101
|
+
*
|
|
102
|
+
* Reads are never package-gated; this function is only called on write paths.
|
|
103
|
+
*/
|
|
104
|
+
export declare function checkPackage(config: SafetyConfig, pkg: string, resolver?: PackageHierarchyResolver | null): Promise<void>;
|
|
69
105
|
/**
|
|
70
106
|
* Check transport operation. Writes require `allowWrites && allowTransportWrites`.
|
|
71
107
|
* Reads are always allowed at this layer (scope check enforces user gating upstream).
|
package/dist/adt/safety.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"safety.d.ts","sourceRoot":"","sources":["../../src/adt/safety.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;
|
|
1
|
+
{"version":3,"file":"safety.d.ts","sourceRoot":"","sources":["../../src/adt/safety.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;GAoBG;AAGH,OAAO,KAAK,EAAE,wBAAwB,EAAE,MAAM,wBAAwB,CAAC;AAEvE,yFAAyF;AACzF,eAAO,MAAM,cAAc,QAAQ,CAAC;AAEpC;;;GAGG;AACH,eAAO,MAAM,aAAa;;;;;;;;;;;;;;CAchB,CAAC;AAEX,MAAM,MAAM,iBAAiB,GAAG,CAAC,OAAO,aAAa,CAAC,CAAC,MAAM,OAAO,aAAa,CAAC,CAAC;AAcnF,MAAM,WAAW,YAAY;IAC3B,WAAW,EAAE,OAAO,CAAC;IACrB,gBAAgB,EAAE,OAAO,CAAC;IAC1B,YAAY,EAAE,OAAO,CAAC;IACtB,oBAAoB,EAAE,OAAO,CAAC;IAC9B,cAAc,EAAE,OAAO,CAAC;IACxB,eAAe,EAAE,MAAM,EAAE,CAAC;IAC1B,iBAAiB,EAAE,MAAM,EAAE,CAAC;IAC5B,2FAA2F;IAC3F,WAAW,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;;;GAIG;AACH,wBAAgB,mBAAmB,IAAI,YAAY,CAWlD;AAED,0CAA0C;AAC1C,wBAAgB,wBAAwB,IAAI,YAAY,CAWvD;AAED,kEAAkE;AAClE,wBAAgB,kBAAkB,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,iBAAiB,GAAG,OAAO,CAgBvF;AAED,2DAA2D;AAC3D,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,EAAE,EAAE,iBAAiB,EAAE,MAAM,EAAE,MAAM,GAAG,IAAI,CAMhG;AAYD;;;;;;;;GAQG;AACH,MAAM,MAAM,oBAAoB,GAAG,SAAS,GAAG,QAAQ,GAAG,iBAAiB,CAAC;AAE5E;;;;;;GAMG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,GAAG,oBAAoB,CA6B5F;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,YAAY,EAAE,GAAG,EAAE,MAAM,GAAG,OAAO,CAE3E;AAeD;;;;;;;;GAQG;AACH,wBAAsB,YAAY,CAChC,MAAM,EAAE,YAAY,EACpB,GAAG,EAAE,MAAM,EACX,QAAQ,CAAC,EAAE,wBAAwB,GAAG,IAAI,GACzC,OAAO,CAAC,IAAI,CAAC,CA2Cf;AAqBD;;;GAGG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,OAAO,GAAG,IAAI,CAsB9G;AAED;;;GAGG;AACH,wBAAgB,QAAQ,CAAC,MAAM,EAAE,YAAY,EAAE,SAAS,EAAE,MAAM,EAAE,OAAO,UAAO,GAAG,IAAI,CAYtF;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,YAAY,EAAE,YAAY,EAAE,MAAM,EAAE,MAAM,EAAE,GAAG,YAAY,CA6B3F;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,2BAA2B,CACzC,YAAY,EAAE,YAAY,EAC1B,aAAa,EAAE,OAAO,CAAC,YAAY,CAAC,GACnC,YAAY,CA2Ed;AAED,8DAA8D;AAC9D,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAY3D"}
|
package/dist/adt/safety.js
CHANGED
|
@@ -20,6 +20,8 @@
|
|
|
20
20
|
* flags and `SAP_DENY_ACTIONS`.
|
|
21
21
|
*/
|
|
22
22
|
import { AdtSafetyError } from './errors.js';
|
|
23
|
+
/** Suffix that marks an `allowedPackages` entry as "this package + DEVCLASS subtree". */
|
|
24
|
+
export const SUBTREE_SUFFIX = '/**';
|
|
23
25
|
/**
|
|
24
26
|
* Operation type codes (internal classification).
|
|
25
27
|
* NOT admin-facing — the code just uses these as a compact categorical label.
|
|
@@ -114,32 +116,114 @@ function explainOperationBlock(config, op) {
|
|
|
114
116
|
return 'reason: allowFreeSQL=false';
|
|
115
117
|
return 'reason: unknown';
|
|
116
118
|
}
|
|
117
|
-
/**
|
|
118
|
-
|
|
119
|
+
/**
|
|
120
|
+
* Evaluate the static portion of `allowedPackages`.
|
|
121
|
+
*
|
|
122
|
+
* Subtree (`X/**`) rules can only be statically resolved when the package
|
|
123
|
+
* equals the subtree root. Any other case requires hierarchy resolution and
|
|
124
|
+
* is reported as 'needs-hierarchy'.
|
|
125
|
+
*/
|
|
126
|
+
export function decidePackageAllowed(config, pkg) {
|
|
119
127
|
if (listDeniesAll(config.allowedPackages))
|
|
120
|
-
return
|
|
128
|
+
return 'denied';
|
|
121
129
|
if (config.allowedPackages.length === 0)
|
|
122
|
-
return
|
|
130
|
+
return 'allowed';
|
|
123
131
|
const upperPkg = pkg.toUpperCase();
|
|
132
|
+
let hasSubtreeRule = false;
|
|
124
133
|
for (const allowed of config.allowedPackages) {
|
|
125
134
|
const upperAllowed = allowed.toUpperCase();
|
|
126
|
-
// Exact match
|
|
127
135
|
if (upperAllowed === upperPkg)
|
|
128
|
-
return
|
|
129
|
-
|
|
136
|
+
return 'allowed';
|
|
137
|
+
if (upperAllowed.endsWith(SUBTREE_SUFFIX)) {
|
|
138
|
+
const root = upperAllowed.slice(0, -SUBTREE_SUFFIX.length);
|
|
139
|
+
// Empty root (`/**` alone, or `**` missed the leading slash) is a misconfig — ignore.
|
|
140
|
+
if (root.length === 0)
|
|
141
|
+
continue;
|
|
142
|
+
if (root === upperPkg)
|
|
143
|
+
return 'allowed';
|
|
144
|
+
hasSubtreeRule = true;
|
|
145
|
+
continue;
|
|
146
|
+
}
|
|
147
|
+
// Prefix wildcard: "Z*" matches "ZTEST", "ZRAY", etc.
|
|
130
148
|
if (upperAllowed.endsWith('*')) {
|
|
131
149
|
const prefix = upperAllowed.slice(0, -1);
|
|
132
150
|
if (upperPkg.startsWith(prefix))
|
|
133
|
-
return
|
|
151
|
+
return 'allowed';
|
|
134
152
|
}
|
|
135
153
|
}
|
|
136
|
-
return
|
|
154
|
+
return hasSubtreeRule ? 'needs-hierarchy' : 'denied';
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Synchronous, fail-closed view of `allowedPackages`. Subtree rules that need
|
|
158
|
+
* hierarchy resolution return `false` here — callers wanting the precise answer
|
|
159
|
+
* must use `checkPackage(..., resolver)` (async).
|
|
160
|
+
*
|
|
161
|
+
* Kept exported because non-write code paths (effective-policy logging,
|
|
162
|
+
* CLI display) rely on a quick synchronous check.
|
|
163
|
+
*/
|
|
164
|
+
export function isPackageAllowed(config, pkg) {
|
|
165
|
+
return decidePackageAllowed(config, pkg) === 'allowed';
|
|
166
|
+
}
|
|
167
|
+
/** Extract the subtree roots from `allowedPackages` (uppercased, empty roots dropped). */
|
|
168
|
+
function extractSubtreeRoots(config) {
|
|
169
|
+
const roots = [];
|
|
170
|
+
for (const allowed of config.allowedPackages) {
|
|
171
|
+
const upper = allowed.toUpperCase();
|
|
172
|
+
if (!upper.endsWith(SUBTREE_SUFFIX))
|
|
173
|
+
continue;
|
|
174
|
+
const root = upper.slice(0, -SUBTREE_SUFFIX.length);
|
|
175
|
+
if (root.length === 0)
|
|
176
|
+
continue;
|
|
177
|
+
roots.push(root);
|
|
178
|
+
}
|
|
179
|
+
return roots;
|
|
137
180
|
}
|
|
138
|
-
/**
|
|
139
|
-
|
|
140
|
-
|
|
181
|
+
/**
|
|
182
|
+
* Check package and throw AdtSafetyError if blocked.
|
|
183
|
+
*
|
|
184
|
+
* If `allowedPackages` contains subtree (`X/**`) rules, a `resolver` is
|
|
185
|
+
* required to evaluate them. Any resolver failure is treated as DENY
|
|
186
|
+
* (fail-closed); the original failure is included in the thrown message.
|
|
187
|
+
*
|
|
188
|
+
* Reads are never package-gated; this function is only called on write paths.
|
|
189
|
+
*/
|
|
190
|
+
export async function checkPackage(config, pkg, resolver) {
|
|
191
|
+
const decision = decidePackageAllowed(config, pkg);
|
|
192
|
+
if (decision === 'allowed')
|
|
193
|
+
return;
|
|
194
|
+
if (decision === 'denied') {
|
|
141
195
|
throw new AdtSafetyError(`Operations on package '${pkg}' are blocked by safety configuration (allowed: ${displayAllowList(config.allowedPackages)})`);
|
|
142
196
|
}
|
|
197
|
+
// 'needs-hierarchy' — every subtree rule must be tried.
|
|
198
|
+
if (!resolver) {
|
|
199
|
+
throw new AdtSafetyError(`Operations on package '${pkg}' need DEVCLASS hierarchy resolution for a subtree allowedPackages rule, ` +
|
|
200
|
+
`but no resolver was passed to checkPackage (allowed: ${displayAllowList(config.allowedPackages)}). ` +
|
|
201
|
+
`This is an internal wiring bug — please file an issue.`);
|
|
202
|
+
}
|
|
203
|
+
const roots = extractSubtreeRoots(config);
|
|
204
|
+
const errors = [];
|
|
205
|
+
let matched = false;
|
|
206
|
+
// Evaluate every subtree root before deciding. Fail-closed invariant:
|
|
207
|
+
// ANY resolver error denies, even if a later root returns true. The docstring
|
|
208
|
+
// promises this; collecting then deciding (rather than short-circuiting on
|
|
209
|
+
// first match) ensures errors from earlier roots are not masked by a later
|
|
210
|
+
// success.
|
|
211
|
+
for (const root of roots) {
|
|
212
|
+
try {
|
|
213
|
+
if (await resolver.isDescendantOrSelf(root, pkg)) {
|
|
214
|
+
matched = true;
|
|
215
|
+
}
|
|
216
|
+
}
|
|
217
|
+
catch (err) {
|
|
218
|
+
errors.push(`${root}${SUBTREE_SUFFIX}: ${err instanceof Error ? err.message : String(err)}`);
|
|
219
|
+
}
|
|
220
|
+
}
|
|
221
|
+
if (errors.length > 0) {
|
|
222
|
+
throw new AdtSafetyError(`Operations on package '${pkg}' blocked: DEVCLASS hierarchy resolution failed (${errors.join('; ')})`);
|
|
223
|
+
}
|
|
224
|
+
if (matched)
|
|
225
|
+
return;
|
|
226
|
+
throw new AdtSafetyError(`Operations on package '${pkg}' are blocked by safety configuration (allowed: ${displayAllowList(config.allowedPackages)})`);
|
|
143
227
|
}
|
|
144
228
|
/** Check if a transport is in the whitelist. */
|
|
145
229
|
function isTransportInWhitelist(config, transport) {
|
|
@@ -264,15 +348,52 @@ export function deriveUserSafetyFromProfile(serverConfig, profileSafety) {
|
|
|
264
348
|
// Profile narrows server: keep profile entries that are covered by server.
|
|
265
349
|
// "Covered by" means: there exists a server entry equal to the profile entry, or a
|
|
266
350
|
// server wildcard that matches it.
|
|
351
|
+
//
|
|
352
|
+
// Subtree patterns ("ZFOO/**") need special handling — we cannot resolve the
|
|
353
|
+
// DEVCLASS hierarchy at config-load time without a live SAP session, so the
|
|
354
|
+
// static "covers" decision is intentionally conservative:
|
|
355
|
+
// - server "ZFOO/**" covers profile "ZFOO" (root is statically known)
|
|
356
|
+
// - server "ZFOO/**" covers profile "ZFOO/**" (identical — handled by s===p)
|
|
357
|
+
// - server "ZFOO/**" covers profile "ZSUB" → NO (descendant cannot be
|
|
358
|
+
// statically proven)
|
|
359
|
+
// - server "Z*" covers profile "ZFOO/**" → NO (server prefix may not
|
|
360
|
+
// reach non-Z descendants of ZFOO;
|
|
361
|
+
// profile's intended scope would
|
|
362
|
+
// leak past the server ceiling)
|
|
363
|
+
// - server "*" covers anything (already true via s.endsWith('*') logic below)
|
|
364
|
+
//
|
|
365
|
+
// The runtime check (checkPackage) re-validates against the resolved hierarchy
|
|
366
|
+
// for any entry that survives intersection, so this layer is purely structural.
|
|
267
367
|
const covers = (serverPat, profilePat) => {
|
|
268
368
|
const s = serverPat.toUpperCase();
|
|
269
369
|
const p = profilePat.toUpperCase();
|
|
270
370
|
if (s === p)
|
|
271
371
|
return true;
|
|
372
|
+
// Server unrestricted wildcard '*' covers everything.
|
|
373
|
+
if (s === '*')
|
|
374
|
+
return true;
|
|
375
|
+
// Profile subtree narrows to an unknown-at-config-time set. Only covered by
|
|
376
|
+
// identical server subtree (handled above) or '*' (handled above) — never by a
|
|
377
|
+
// server prefix wildcard, because the subtree may contain names that don't
|
|
378
|
+
// share the prefix.
|
|
379
|
+
if (p.endsWith(SUBTREE_SUFFIX))
|
|
380
|
+
return false;
|
|
381
|
+
// Server subtree: only the literal root is statically proven covered.
|
|
382
|
+
if (s.endsWith(SUBTREE_SUFFIX)) {
|
|
383
|
+
const serverRoot = s.slice(0, -SUBTREE_SUFFIX.length);
|
|
384
|
+
return p === serverRoot;
|
|
385
|
+
}
|
|
386
|
+
// Server prefix wildcard.
|
|
272
387
|
if (s.endsWith('*')) {
|
|
273
|
-
const
|
|
274
|
-
if (p.
|
|
275
|
-
|
|
388
|
+
const serverPrefix = s.slice(0, -1);
|
|
389
|
+
if (p.endsWith('*')) {
|
|
390
|
+
// Profile prefix is narrower than server prefix iff profile's literal prefix
|
|
391
|
+
// starts with the server's. E.g. server "Z*" covers profile "ZF*".
|
|
392
|
+
const profilePrefix = p.slice(0, -1);
|
|
393
|
+
return profilePrefix.startsWith(serverPrefix);
|
|
394
|
+
}
|
|
395
|
+
// Profile is exact: "ZF" is covered by "Z*".
|
|
396
|
+
return p.startsWith(serverPrefix);
|
|
276
397
|
}
|
|
277
398
|
return false;
|
|
278
399
|
};
|
package/dist/adt/safety.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"safety.js","sourceRoot":"","sources":["../../src/adt/safety.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"safety.js","sourceRoot":"","sources":["../../src/adt/safety.ts"],"names":[],"mappings":"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"}
|
package/dist/adt/types.d.ts
CHANGED
|
@@ -813,4 +813,78 @@ export interface RevisionListResult {
|
|
|
813
813
|
};
|
|
814
814
|
revisions: RevisionInfo[];
|
|
815
815
|
}
|
|
816
|
+
/**
|
|
817
|
+
* Line range from the ADT `objectstructure` atom-link `#start=L,C;end=L,C` fragment.
|
|
818
|
+
*
|
|
819
|
+
* `sr`/`er` are 1-indexed rows. `sc`/`ec` are 0-indexed columns. The `er` row is
|
|
820
|
+
* INCLUSIVE (the end token lives on that line). The `ec` column is the column
|
|
821
|
+
* AFTER the end token (i.e. half-open: [sc, ec) — `ec` matches a typical
|
|
822
|
+
* editor's "go to end of selection" position).
|
|
823
|
+
*
|
|
824
|
+
* Wire example: `<atom:link href="…#start=12,0;end=22,8">` →
|
|
825
|
+
* `{ sr: 12, sc: 0, er: 22, ec: 8 }` — the block spans lines 12-22 inclusive,
|
|
826
|
+
* with the final ENDCLASS token ending at column 8 of line 22.
|
|
827
|
+
*/
|
|
828
|
+
export interface LineRange {
|
|
829
|
+
sr: number;
|
|
830
|
+
sc: number;
|
|
831
|
+
er: number;
|
|
832
|
+
ec: number;
|
|
833
|
+
}
|
|
834
|
+
/**
|
|
835
|
+
* One method's structural metadata, parsed from `<abapsource:objectStructureElement>`
|
|
836
|
+
* elements in the `objectstructure` response.
|
|
837
|
+
*
|
|
838
|
+
* Cross-release: on S/4HANA 2023 (kernel 7.58+) one `CLAS/OM` element carries both
|
|
839
|
+
* `definition` and `implementation` ranges. On NW 7.50, the entry is SPLIT — one
|
|
840
|
+
* `CLAS/OO` element carries `definition` (+ identifiers), one `CLAS/OM` element
|
|
841
|
+
* carries `implementation` (+ identifiers). `parseClassStructure` merges by name
|
|
842
|
+
* so callers see a single `MethodStructure` per method on either release.
|
|
843
|
+
*
|
|
844
|
+
* `implementation` is `undefined` for ABSTRACT methods (no METHOD body exists).
|
|
845
|
+
*/
|
|
846
|
+
export interface MethodStructure {
|
|
847
|
+
name: string;
|
|
848
|
+
visibility: 'public' | 'protected' | 'private';
|
|
849
|
+
level: 'instance' | 'static';
|
|
850
|
+
abstract: boolean;
|
|
851
|
+
constructor: boolean;
|
|
852
|
+
/** Full METHODS clause range in `/source/main` (the declaration line(s) in DEFINITION). */
|
|
853
|
+
definition: LineRange;
|
|
854
|
+
/** Full METHOD…ENDMETHOD range in `/source/main` (body in IMPLEMENTATION). Absent for ABSTRACT. */
|
|
855
|
+
implementation?: LineRange;
|
|
856
|
+
/** Position of the method name token within the DEFINITION (useful for code-intel features). */
|
|
857
|
+
definitionIdentifier?: LineRange;
|
|
858
|
+
/** Position of the method name token within the IMPLEMENTATION header (`METHOD <name>.`). */
|
|
859
|
+
implementationIdentifier?: LineRange;
|
|
860
|
+
}
|
|
861
|
+
/** Attribute / constant / type declaration in the class DEFINITION. Carries only a definition range. */
|
|
862
|
+
export interface AttributeStructure {
|
|
863
|
+
name: string;
|
|
864
|
+
visibility: 'public' | 'protected' | 'private';
|
|
865
|
+
level: 'instance' | 'static';
|
|
866
|
+
constant: boolean;
|
|
867
|
+
readOnly: boolean;
|
|
868
|
+
definition: LineRange;
|
|
869
|
+
}
|
|
870
|
+
/**
|
|
871
|
+
* Parsed `/sap/bc/adt/oo/classes/{name}/objectstructure` response — the line-range map
|
|
872
|
+
* arc-1 uses for surgical edits to a global class without re-sending the full source.
|
|
873
|
+
*
|
|
874
|
+
* `classDefinitionBlock` covers `CLASS … DEFINITION … ENDCLASS.` in `/source/main`.
|
|
875
|
+
* `classImplementationBlock` covers `CLASS … IMPLEMENTATION … ENDCLASS.` — absent
|
|
876
|
+
* only for purely-abstract classes with no IMPLEMENTATION half (unusual).
|
|
877
|
+
*
|
|
878
|
+
* `methods` and `attributes` are extracted from the nested elements; ignored types
|
|
879
|
+
* (`CLAS/OE` events, `CLAS/OT` types, `CLAS/OF` friends, `CLAS/OK` constants/literals,
|
|
880
|
+
* `CLAS/OCX` text-elements) are dropped — class-section surgery in this release only
|
|
881
|
+
* targets methods and attributes. Attribute-level surgery is a follow-up.
|
|
882
|
+
*/
|
|
883
|
+
export interface ClassStructure {
|
|
884
|
+
className: string;
|
|
885
|
+
classDefinitionBlock: LineRange;
|
|
886
|
+
classImplementationBlock?: LineRange;
|
|
887
|
+
methods: MethodStructure[];
|
|
888
|
+
attributes: AttributeStructure[];
|
|
889
|
+
}
|
|
816
890
|
//# sourceMappingURL=types.d.ts.map
|