arc-1 0.6.0 → 0.6.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 (90) hide show
  1. package/README.md +25 -26
  2. package/dist/adt/btp.d.ts +19 -12
  3. package/dist/adt/btp.d.ts.map +1 -1
  4. package/dist/adt/btp.js +48 -35
  5. package/dist/adt/btp.js.map +1 -1
  6. package/dist/adt/client.d.ts +20 -2
  7. package/dist/adt/client.d.ts.map +1 -1
  8. package/dist/adt/client.js +65 -2
  9. package/dist/adt/client.js.map +1 -1
  10. package/dist/adt/codeintel.d.ts.map +1 -1
  11. package/dist/adt/codeintel.js +1 -10
  12. package/dist/adt/codeintel.js.map +1 -1
  13. package/dist/adt/config.d.ts +2 -0
  14. package/dist/adt/config.d.ts.map +1 -1
  15. package/dist/adt/config.js +2 -0
  16. package/dist/adt/config.js.map +1 -1
  17. package/dist/adt/crud.d.ts +7 -0
  18. package/dist/adt/crud.d.ts.map +1 -1
  19. package/dist/adt/crud.js +35 -3
  20. package/dist/adt/crud.js.map +1 -1
  21. package/dist/adt/ddic-xml.d.ts +78 -0
  22. package/dist/adt/ddic-xml.d.ts.map +1 -0
  23. package/dist/adt/ddic-xml.js +203 -0
  24. package/dist/adt/ddic-xml.js.map +1 -0
  25. package/dist/adt/devtools.d.ts +30 -7
  26. package/dist/adt/devtools.d.ts.map +1 -1
  27. package/dist/adt/devtools.js +215 -76
  28. package/dist/adt/devtools.js.map +1 -1
  29. package/dist/adt/diagnostics.d.ts.map +1 -1
  30. package/dist/adt/diagnostics.js +105 -184
  31. package/dist/adt/diagnostics.js.map +1 -1
  32. package/dist/adt/errors.d.ts +12 -0
  33. package/dist/adt/errors.d.ts.map +1 -1
  34. package/dist/adt/errors.js +42 -0
  35. package/dist/adt/errors.js.map +1 -1
  36. package/dist/adt/features.d.ts.map +1 -1
  37. package/dist/adt/features.js +23 -3
  38. package/dist/adt/features.js.map +1 -1
  39. package/dist/adt/flp.d.ts +43 -0
  40. package/dist/adt/flp.d.ts.map +1 -0
  41. package/dist/adt/flp.js +213 -0
  42. package/dist/adt/flp.js.map +1 -0
  43. package/dist/adt/http.d.ts +2 -0
  44. package/dist/adt/http.d.ts.map +1 -1
  45. package/dist/adt/http.js +162 -4
  46. package/dist/adt/http.js.map +1 -1
  47. package/dist/adt/transport.d.ts +48 -3
  48. package/dist/adt/transport.d.ts.map +1 -1
  49. package/dist/adt/transport.js +222 -32
  50. package/dist/adt/transport.js.map +1 -1
  51. package/dist/adt/types.d.ts +107 -0
  52. package/dist/adt/types.d.ts.map +1 -1
  53. package/dist/adt/ui5-repository.d.ts +19 -0
  54. package/dist/adt/ui5-repository.d.ts.map +1 -0
  55. package/dist/adt/ui5-repository.js +43 -0
  56. package/dist/adt/ui5-repository.js.map +1 -0
  57. package/dist/adt/xml-parser.d.ts +43 -1
  58. package/dist/adt/xml-parser.d.ts.map +1 -1
  59. package/dist/adt/xml-parser.js +208 -3
  60. package/dist/adt/xml-parser.js.map +1 -1
  61. package/dist/handlers/intent.d.ts +20 -6
  62. package/dist/handlers/intent.d.ts.map +1 -1
  63. package/dist/handlers/intent.js +1304 -104
  64. package/dist/handlers/intent.js.map +1 -1
  65. package/dist/handlers/schemas.d.ts +240 -0
  66. package/dist/handlers/schemas.d.ts.map +1 -1
  67. package/dist/handlers/schemas.js +201 -5
  68. package/dist/handlers/schemas.js.map +1 -1
  69. package/dist/handlers/tools.d.ts.map +1 -1
  70. package/dist/handlers/tools.js +339 -49
  71. package/dist/handlers/tools.js.map +1 -1
  72. package/dist/server/config.d.ts.map +1 -1
  73. package/dist/server/config.js +15 -3
  74. package/dist/server/config.js.map +1 -1
  75. package/dist/server/http.d.ts.map +1 -1
  76. package/dist/server/http.js +32 -3
  77. package/dist/server/http.js.map +1 -1
  78. package/dist/server/server.d.ts +1 -1
  79. package/dist/server/server.d.ts.map +1 -1
  80. package/dist/server/server.js +38 -6
  81. package/dist/server/server.js.map +1 -1
  82. package/dist/server/types.d.ts +2 -0
  83. package/dist/server/types.d.ts.map +1 -1
  84. package/dist/server/types.js +5 -3
  85. package/dist/server/types.js.map +1 -1
  86. package/dist/server/xsuaa.d.ts +13 -0
  87. package/dist/server/xsuaa.d.ts.map +1 -1
  88. package/dist/server/xsuaa.js +28 -2
  89. package/dist/server/xsuaa.js.map +1 -1
  90. package/package.json +19 -6
package/README.md CHANGED
@@ -1,28 +1,26 @@
1
- # arc1 — SAP ADT MCP Server
1
+ # ARC-1 — SAP ADT MCP Server
2
2
 
3
- **Enterprise-ready MCP server for SAP ABAP systems. Secure by default, deployable to BTP or on-premise, battle-tested with 700+ tests.**
3
+ **ARC-1** (pronounced _arc one_ [ɑːrk wʌn]) — Enterprise-ready MCP server for SAP ABAP systems. Secure by default, deployable to BTP or on-premise, and hardened with large unit/integration/E2E test coverage.
4
4
 
5
- arc1 connects AI assistants (Claude, GitHub Copilot, Copilot Studio, and any MCP client) to SAP systems via the [ADT REST API](https://help.sap.com/docs/abap-cloud/abap-development-tools-user-guide/about-abap-development-tools). It ships as an [npm package](https://www.npmjs.com/package/arc-1) and [Docker image](https://github.com/marianfoo/arc-1/pkgs/container/arc-1).
5
+ ARC-1 connects AI assistants (Claude, GitHub Copilot, Copilot Studio, and any MCP client) to SAP systems via the [ADT REST API](https://help.sap.com/docs/abap-cloud/abap-development-tools-user-guide/about-abap-development-tools). It ships as an [npm package](https://www.npmjs.com/package/arc-1) and [Docker image](https://github.com/marianfoo/arc-1/pkgs/container/arc-1).
6
6
 
7
- > Continued from [oisee/vibing-steampunk](https://github.com/oisee/vibing-steampunk) (Go), rewritten in TypeScript with enterprise security, BTP deployment, and production-grade tooling.
8
7
 
9
- ![Vibing ABAP Developer](./media/vibing-steampunk.png)
10
8
 
11
9
  **[Full Documentation](https://marianfoo.github.io/arc-1/)** | **[Setup Guide](https://marianfoo.github.io/arc-1/setup-guide/)** | **[Tool Reference](https://marianfoo.github.io/arc-1/tools/)**
12
10
 
13
- ## Why arc1?
11
+ ## Why ARC-1?
14
12
 
15
- Built for organizations that need AI-assisted SAP development with guardrails. Inspired by the pioneering work of [abap-adt-api](https://github.com/marcellourbani/abap-adt-api), [mcp-abap-adt](https://github.com/mario-andreschak/mcp-abap-adt), and [vibing-steampunk](https://github.com/oisee/vibing-steampunk) — arc1 adds what's needed to run in production:
13
+ Built for organizations that need AI-assisted SAP development with guardrails. Inspired by the pioneering work of [abap-adt-api](https://github.com/marcellourbani/abap-adt-api), [mcp-abap-adt](https://github.com/mario-andreschak/mcp-abap-adt), and [vibing-steampunk](https://github.com/oisee/vibing-steampunk) — ARC-1 adds what's needed to run in production:
16
14
 
17
15
  ### Security & Admin Controls
18
16
 
19
- - **Read-only mode** — block all writes with a single flag (`--read-only`)
17
+ - **Safe by default** — read-only, no free SQL, no table preview, no transports out of the box. Use `--profile developer` or explicit flags to enable capabilities
20
18
  - **Operation allowlists/denylists** — control exactly which operation types (read, write, search, query, activate, transport) are permitted
21
- - **Package restrictions** — limit AI access to specific packages with wildcards (`--allowed-packages "Z*,$TMP"`)
22
- - **Data access control** — block table data preview (`--block-data`) or free-form SQL (`--block-free-sql`)
23
- - **Transport safety** — require transport assignments, restrict to specific transports, or make transports read-only
24
- - **Safety profiles** — preconfigured roles like `--profile viewer`, `developer-data`, or `developer-sql`
25
- - **Writes restricted to `$TMP` by default** — only local/throwaway objects; writing to transportable packages requires explicit `--allowed-packages`
19
+ - **Package restrictions** — limit AI write operations (create, update, delete) to specific packages with wildcards (`--allowed-packages "Z*,$TMP"`). Read operations are not restricted by package — use SAP's native authorization for read-level access control
20
+ - **Data access control** — enable table data preview (`--block-data=false`) or free-form SQL (`--block-free-sql=false`)
21
+ - **Transport safety** — require transport assignments, restrict to specific transports, or make transports read-only. Update/delete operations auto-use the lock correction number when no explicit transport is provided
22
+ - **Safety profiles** — preconfigured roles: `viewer`, `viewer-data`, `viewer-sql`, `developer`, `developer-data`, `developer-sql`
23
+ - **Writes restricted to `$TMP` when enabled** — only local/throwaway objects; writing to transportable packages requires explicit `--allowed-packages`
26
24
 
27
25
  ### Authentication
28
26
 
@@ -34,12 +32,12 @@ Built for organizations that need AI-assisted SAP development with guardrails. I
34
32
 
35
33
  ### BTP Cloud Foundry Deployment
36
34
 
37
- Deploy arc1 as a Cloud Foundry app on SAP BTP with full platform integration:
35
+ Deploy ARC-1 as a Cloud Foundry app on SAP BTP with full platform integration:
38
36
 
39
37
  - **Destination Service** — connect to SAP systems via managed destinations
40
38
  - **Cloud Connector** — reach on-premise systems through the connectivity proxy
41
39
  - **Principal Propagation** — user identity forwarded end-to-end via X.509 certificates
42
- - **XSUAA OAuth proxy** — MCP clients authenticate via standard OAuth, arc1 handles the BTP token exchange
40
+ - **XSUAA OAuth proxy** — MCP clients authenticate via standard OAuth, ARC-1 handles the BTP token exchange
43
41
  - **Audit logging** — structured events to stderr, file, or BTP Audit Log Service
44
42
 
45
43
  ### Token Efficiency
@@ -59,11 +57,12 @@ See **[docs/caching.md](docs/caching.md)** for full documentation.
59
57
 
60
58
  ### Testing
61
59
 
62
- - **700+ tests** across unit, integration, and E2E
63
- - **Unit tests** run without SAP system access (33 test files, mocked HTTP)
64
- - **Integration tests** against live SAP systems (on-premise + BTP ABAP)
65
- - **E2E tests** deploy the server and execute real MCP tool calls
66
- - **CI matrix** across Node 20, 22, and 24
60
+ - **1,367+ unit tests** (`53` unit test files, mocked HTTP)
61
+ - **~160 integration tests** against live SAP systems, with explicit skip reasons when credentials or fixtures are missing
62
+ - **~70 E2E tests** that execute real MCP tool calls against a running ARC-1 server and live SAP system
63
+ - **CRUD lifecycle and BTP smoke lanes** included (`test:integration:crud`, `test:integration:btp:smoke`)
64
+ - **CI matrix** on Node `22` and `24`; integration + E2E run on `push` to `main` and internal PRs
65
+ - **Reliability telemetry + coverage** published as informational CI signals (non-blocking)
67
66
 
68
67
  ### Tools Refined for Real-World Usage
69
68
 
@@ -71,23 +70,23 @@ The 11 tools are designed from real LLM interaction feedback:
71
70
 
72
71
  | Tool | What it does |
73
72
  |------|-------------|
74
- | **SAPRead** | Read ABAP source, table data, CDS views, metadata extensions (DDLX), service bindings (SRVB), message classes, BOR objects. Structured format for classes returns metadata + decomposed includes as JSON |
73
+ | **SAPRead** | Read ABAP source, table data, CDS views, metadata extensions (DDLX), service bindings (SRVB), message classes, BOR objects, deployed UI5/Fiori apps (BSP, BSP_DEPLOY). Structured format for classes returns metadata + decomposed includes as JSON |
75
74
  | **SAPSearch** | Object search + full-text source code search across the system |
76
- | **SAPWrite** | Create/update/delete ABAP source with automatic lock/unlock (PROG, CLAS, INTF, FUNC, INCL, DDLS, DDLX, BDEF, SRVD). Batch creation for multi-object workflows (e.g., RAP stack in one call) |
77
- | **SAPActivate** | Activate ABAP objects — single or batch (essential for RAP stacks) |
75
+ | **SAPWrite** | Create/update/delete ABAP source and DDIC metadata with automatic lock/unlock (PROG, CLAS, INTF, FUNC, INCL, DDLS, DDLX, BDEF, SRVD, DOMA, DTEL). Batch creation for multi-object workflows (e.g., RAP stack or domain+data element in one call) |
76
+ | **SAPActivate** | Activate ABAP objects — single or batch (essential for RAP stacks). Publish/unpublish OData service bindings (SRVB) |
78
77
  | **SAPNavigate** | Go-to-definition, find references, code completion |
79
78
  | **SAPQuery** | Execute ABAP SQL with table-not-found suggestions |
80
79
  | **SAPTransport** | CTS transport management (list, create, release) |
81
80
  | **SAPContext** | Compressed dependency context — one call replaces N SAPRead calls |
82
81
  | **SAPLint** | Local ABAP lint (system-aware presets, auto-fix, pre-write validation) |
83
- | **SAPDiagnose** | Syntax check, ABAP Unit tests, ATC code quality, short dumps |
82
+ | **SAPDiagnose** | Syntax check, ABAP Unit tests, ATC code quality, short dumps, profiler traces |
84
83
  | **SAPManage** | Feature probing — detect what the system supports before acting |
85
84
 
86
85
  Tool definitions automatically adapt to the target system (BTP vs on-premise), removing unavailable types and adjusting descriptions so the LLM never attempts unsupported operations.
87
86
 
88
87
  ### Feature Detection
89
88
 
90
- arc1 probes the SAP system at startup and adapts its behavior:
89
+ ARC-1 probes the SAP system at startup and adapts its behavior:
91
90
 
92
91
  - Detects HANA, abapGit, RAP/CDS, AMDP, UI5, and transport availability
93
92
  - Auto-detects BTP vs on-premise systems
@@ -128,7 +127,7 @@ See [CLAUDE.md](CLAUDE.md) for codebase structure, testing commands, and contrib
128
127
 
129
128
  | Project | Author | Contribution |
130
129
  |---------|--------|--------------|
131
- | [vibing-steampunk](https://github.com/oisee/vibing-steampunk) | oisee | Original Go MCP server — arc1's starting point |
130
+ | [vibing-steampunk](https://github.com/oisee/vibing-steampunk) | oisee | Original Go MCP server — ARC-1's starting point |
132
131
  | [abap-adt-api](https://github.com/marcellourbani/abap-adt-api) | Marcello Urbani | TypeScript ADT library, definitive API reference |
133
132
  | [mcp-abap-adt](https://github.com/mario-andreschak/mcp-abap-adt) | Mario Andreschak | First MCP server for ABAP ADT |
134
133
  | [abaplint](https://github.com/abaplint/abaplint) | Lars Hvam | ABAP parser/linter (used via @abaplint/core) |
package/dist/adt/btp.d.ts CHANGED
@@ -6,14 +6,13 @@
6
6
  * 2. Fetches SAP connection details from the BTP Destination Service
7
7
  * 3. Configures an HTTP proxy through the Cloud Connector (Connectivity Service)
8
8
  *
9
- * The flow mirrors the Go implementation in pkg/adt/btp.go:
10
- * - Parse VCAP_SERVICES get destination/connectivity/xsuaa credentials
11
- * - Call Destination Service API → get SAP URL, user, password
12
- * - Create proxy config route through Cloud Connector
13
- * - Inject Proxy-Authorization header → connectivity service JWT token
9
+ * Startup path (lookupDestination, resolveBTPDestination) uses direct fetch
10
+ * to the Destination Service API. Per-user principal propagation path
11
+ * (lookupDestinationWithUserToken) uses SAP Cloud SDK's getDestination()
12
+ * for automatic token management and per-user caching.
14
13
  *
15
- * Token caching: Both destination and connectivity tokens are cached
16
- * and refreshed 60 seconds before expiry to avoid request failures.
14
+ * Token caching: Connectivity proxy tokens are cached and refreshed 60 seconds
15
+ * before expiry. Per-user destination tokens are cached by the SDK.
17
16
  */
18
17
  /** BTP service binding credentials parsed from VCAP_SERVICES */
19
18
  export interface BTPConfig {
@@ -39,6 +38,8 @@ export interface Destination {
39
38
  User: string;
40
39
  Password: string;
41
40
  'sap-client'?: string;
41
+ /** Cloud Connector Location ID — used to route to the correct SCC instance */
42
+ CloudConnectorLocationId?: string;
42
43
  }
43
44
  /** Proxy configuration for undici ProxyAgent — used by AdtHttpClient */
44
45
  export interface BTPProxyConfig {
@@ -47,6 +48,8 @@ export interface BTPProxyConfig {
47
48
  protocol: string;
48
49
  /** Returns a fresh connectivity proxy JWT token (cached, auto-refreshed) */
49
50
  getProxyToken: () => Promise<string>;
51
+ /** Cloud Connector Location ID — sent as SAP-Connectivity-SCC-Location_ID header */
52
+ locationId?: string;
50
53
  }
51
54
  /**
52
55
  * Parse VCAP_SERVICES environment variable to extract BTP service credentials.
@@ -64,7 +67,7 @@ export declare function lookupDestination(btpConfig: BTPConfig, destinationName:
64
67
  * Returns a BTPProxyConfig with a token getter that caches the connectivity
65
68
  * JWT and auto-refreshes it 60 seconds before expiry.
66
69
  */
67
- export declare function createConnectivityProxy(btpConfig: BTPConfig): BTPProxyConfig | null;
70
+ export declare function createConnectivityProxy(btpConfig: BTPConfig, locationId?: string): BTPProxyConfig | null;
68
71
  /**
69
72
  * Per-user authentication tokens returned by Destination Service
70
73
  * when called with X-User-Token header.
@@ -84,16 +87,20 @@ export interface PerUserAuthTokens {
84
87
  /**
85
88
  * Look up a destination with the user's JWT token for principal propagation.
86
89
  *
90
+ * Uses SAP Cloud SDK's `getDestination()` to resolve the destination with per-user
91
+ * JWT. The SDK handles service token acquisition, X-User-Token header injection,
92
+ * and per-user destination caching.
93
+ *
87
94
  * This is the key API for per-user SAP authentication:
88
95
  * 1. Caller passes the user's JWT (from XSUAA/OIDC)
89
- * 2. Destination Service validates the JWT and generates auth tokens
96
+ * 2. SDK calls the Destination Service with X-User-Token header
90
97
  * 3. For PrincipalPropagation destinations: returns SAP-Connectivity-Authentication header
91
98
  * 4. For OAuth2SAMLBearerAssertion destinations: returns a Bearer token
92
99
  *
93
- * The returned tokens are per-user and typically valid for 5-10 minutes.
100
+ * Includes a jwt-bearer fallback (Option 2) when the Destination Service returns
101
+ * no auth tokens — uses direct fetch to the Connectivity Service token URL.
94
102
  *
95
- * Reference: SAP Destination Service REST API "Find Destination" endpoint
96
- * https://api.sap.com/api/SAP_CP_CF_Connectivity_Destination/resource/Find_a_Destination
103
+ * @param btpConfig - BTP service credentials (needed for jwt-bearer fallback only)
97
104
  */
98
105
  export declare function lookupDestinationWithUserToken(btpConfig: BTPConfig, destinationName: string, userJwt: string): Promise<{
99
106
  destination: Destination;
@@ -1 +1 @@
1
- {"version":3,"file":"btp.d.ts","sourceRoot":"","sources":["../../src/adt/btp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;GAgBG;AAMH,gEAAgE;AAChE,MAAM,WAAW,SAAS;IAExB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IAGpB,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAG5B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED,wDAAwD;AACxD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,wEAAwE;AACxE,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,4EAA4E;IAC5E,aAAa,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;CACtC;AAeD;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,SAAS,GAAG,IAAI,CAgEpD;AAkCD;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CA8B3G;AAID;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,SAAS,GAAG,cAAc,GAAG,IAAI,CA2BnF;AAID;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB;IAChC,wFAAwF;IACxF,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,2DAA2D;IAC3D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6FAA6F;IAC7F,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAsB,8BAA8B,CAClD,SAAS,EAAE,SAAS,EACpB,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC;IAAE,WAAW,EAAE,WAAW,CAAC;IAAC,UAAU,EAAE,iBAAiB,CAAA;CAAE,CAAC,CAsMtE;AAID;;;;;GAKG;AACH,wBAAsB,qBAAqB,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5E,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;CAC9B,CAAC,CAgBD;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,IAAI,MAAM,GAAG,SAAS,CAc9C"}
1
+ {"version":3,"file":"btp.d.ts","sourceRoot":"","sources":["../../src/adt/btp.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;GAeG;AAWH,gEAAgE;AAChE,MAAM,WAAW,SAAS;IAExB,QAAQ,EAAE,MAAM,CAAC;IACjB,aAAa,EAAE,MAAM,CAAC;IACtB,WAAW,EAAE,MAAM,CAAC;IAGpB,cAAc,EAAE,MAAM,CAAC;IACvB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,iBAAiB,EAAE,MAAM,CAAC;IAC1B,mBAAmB,EAAE,MAAM,CAAC;IAG5B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,qBAAqB,EAAE,MAAM,CAAC;IAC9B,oBAAoB,EAAE,MAAM,CAAC;IAC7B,kBAAkB,EAAE,MAAM,CAAC;IAC3B,oBAAoB,EAAE,MAAM,CAAC;CAC9B;AAED,wDAAwD;AACxD,MAAM,WAAW,WAAW;IAC1B,IAAI,EAAE,MAAM,CAAC;IACb,GAAG,EAAE,MAAM,CAAC;IACZ,cAAc,EAAE,MAAM,CAAC;IACvB,SAAS,EAAE,MAAM,CAAC;IAClB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,8EAA8E;IAC9E,wBAAwB,CAAC,EAAE,MAAM,CAAC;CACnC;AAED,wEAAwE;AACxE,MAAM,WAAW,cAAc;IAC7B,IAAI,EAAE,MAAM,CAAC;IACb,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,4EAA4E;IAC5E,aAAa,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IACrC,oFAAoF;IACpF,UAAU,CAAC,EAAE,MAAM,CAAC;CACrB;AAeD;;;GAGG;AACH,wBAAgB,iBAAiB,IAAI,SAAS,GAAG,IAAI,CAgEpD;AAkCD;;;GAGG;AACH,wBAAsB,iBAAiB,CAAC,SAAS,EAAE,SAAS,EAAE,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC,WAAW,CAAC,CA+B3G;AAID;;;;;GAKG;AACH,wBAAgB,uBAAuB,CAAC,SAAS,EAAE,SAAS,EAAE,UAAU,CAAC,EAAE,MAAM,GAAG,cAAc,GAAG,IAAI,CA4BxG;AAID;;;;;;;GAOG;AACH,MAAM,WAAW,iBAAiB;IAChC,wFAAwF;IACxF,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,2DAA2D;IAC3D,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,6FAA6F;IAC7F,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED;;;;;;;;;;;;;;;;;GAiBG;AACH,wBAAsB,8BAA8B,CAClD,SAAS,EAAE,SAAS,EACpB,eAAe,EAAE,MAAM,EACvB,OAAO,EAAE,MAAM,GACd,OAAO,CAAC;IAAE,WAAW,EAAE,WAAW,CAAC;IAAC,UAAU,EAAE,iBAAiB,CAAA;CAAE,CAAC,CA2LtE;AAID;;;;;GAKG;AACH,wBAAsB,qBAAqB,CAAC,eAAe,EAAE,MAAM,GAAG,OAAO,CAAC;IAC5E,GAAG,EAAE,MAAM,CAAC;IACZ,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,KAAK,EAAE,cAAc,GAAG,IAAI,CAAC;CAC9B,CAAC,CAoBD;AAED;;;;;GAKG;AACH,wBAAgB,SAAS,IAAI,MAAM,GAAG,SAAS,CAc9C"}
package/dist/adt/btp.js CHANGED
@@ -6,15 +6,15 @@
6
6
  * 2. Fetches SAP connection details from the BTP Destination Service
7
7
  * 3. Configures an HTTP proxy through the Cloud Connector (Connectivity Service)
8
8
  *
9
- * The flow mirrors the Go implementation in pkg/adt/btp.go:
10
- * - Parse VCAP_SERVICES get destination/connectivity/xsuaa credentials
11
- * - Call Destination Service API → get SAP URL, user, password
12
- * - Create proxy config route through Cloud Connector
13
- * - Inject Proxy-Authorization header → connectivity service JWT token
9
+ * Startup path (lookupDestination, resolveBTPDestination) uses direct fetch
10
+ * to the Destination Service API. Per-user principal propagation path
11
+ * (lookupDestinationWithUserToken) uses SAP Cloud SDK's getDestination()
12
+ * for automatic token management and per-user caching.
14
13
  *
15
- * Token caching: Both destination and connectivity tokens are cached
16
- * and refreshed 60 seconds before expiry to avoid request failures.
14
+ * Token caching: Connectivity proxy tokens are cached and refreshed 60 seconds
15
+ * before expiry. Per-user destination tokens are cached by the SDK.
17
16
  */
17
+ import { getDestination, } from '@sap-cloud-sdk/connectivity';
18
18
  import { logger } from '../server/logger.js';
19
19
  /**
20
20
  * Parse VCAP_SERVICES environment variable to extract BTP service credentials.
@@ -127,6 +127,7 @@ export async function lookupDestination(btpConfig, destinationName) {
127
127
  url: data.destinationConfiguration.URL,
128
128
  auth: data.destinationConfiguration.Authentication,
129
129
  proxyType: data.destinationConfiguration.ProxyType,
130
+ locationId: data.destinationConfiguration.CloudConnectorLocationId,
130
131
  });
131
132
  return data.destinationConfiguration;
132
133
  }
@@ -137,7 +138,7 @@ export async function lookupDestination(btpConfig, destinationName) {
137
138
  * Returns a BTPProxyConfig with a token getter that caches the connectivity
138
139
  * JWT and auto-refreshes it 60 seconds before expiry.
139
140
  */
140
- export function createConnectivityProxy(btpConfig) {
141
+ export function createConnectivityProxy(btpConfig, locationId) {
141
142
  if (!btpConfig.connectivityProxyHost)
142
143
  return null;
143
144
  let cachedToken = '';
@@ -146,6 +147,7 @@ export function createConnectivityProxy(btpConfig) {
146
147
  host: btpConfig.connectivityProxyHost,
147
148
  port: Number.parseInt(btpConfig.connectivityProxyPort || '20003', 10),
148
149
  protocol: 'http',
150
+ locationId,
149
151
  getProxyToken: async () => {
150
152
  // Return cached token if still valid (60s buffer)
151
153
  if (cachedToken && Date.now() < expiresAt) {
@@ -161,21 +163,22 @@ export function createConnectivityProxy(btpConfig) {
161
163
  /**
162
164
  * Look up a destination with the user's JWT token for principal propagation.
163
165
  *
166
+ * Uses SAP Cloud SDK's `getDestination()` to resolve the destination with per-user
167
+ * JWT. The SDK handles service token acquisition, X-User-Token header injection,
168
+ * and per-user destination caching.
169
+ *
164
170
  * This is the key API for per-user SAP authentication:
165
171
  * 1. Caller passes the user's JWT (from XSUAA/OIDC)
166
- * 2. Destination Service validates the JWT and generates auth tokens
172
+ * 2. SDK calls the Destination Service with X-User-Token header
167
173
  * 3. For PrincipalPropagation destinations: returns SAP-Connectivity-Authentication header
168
174
  * 4. For OAuth2SAMLBearerAssertion destinations: returns a Bearer token
169
175
  *
170
- * The returned tokens are per-user and typically valid for 5-10 minutes.
176
+ * Includes a jwt-bearer fallback (Option 2) when the Destination Service returns
177
+ * no auth tokens — uses direct fetch to the Connectivity Service token URL.
171
178
  *
172
- * Reference: SAP Destination Service REST API "Find Destination" endpoint
173
- * https://api.sap.com/api/SAP_CP_CF_Connectivity_Destination/resource/Find_a_Destination
179
+ * @param btpConfig - BTP service credentials (needed for jwt-bearer fallback only)
174
180
  */
175
181
  export async function lookupDestinationWithUserToken(btpConfig, destinationName, userJwt) {
176
- // Get a service token for Destination Service API
177
- const tokenUrl = btpConfig.destinationTokenUrl || `${btpConfig.xsuaaUrl}/oauth/token`;
178
- const { accessToken: serviceToken } = await fetchClientCredentialsToken(tokenUrl, btpConfig.destinationClientId, btpConfig.destinationSecret);
179
182
  // Log JWT claims for PP debugging (decode payload without verification)
180
183
  try {
181
184
  const parts = userJwt.split('.');
@@ -200,26 +203,33 @@ export async function lookupDestinationWithUserToken(btpConfig, destinationName,
200
203
  catch {
201
204
  logger.debug('PP user JWT: failed to decode claims');
202
205
  }
203
- // Call Find Destination API with X-User-Token header
204
- // This triggers the Destination Service to perform the user-specific
205
- // authentication flow (e.g., generate SAML assertion for PrincipalPropagation)
206
- const destUrl = `${btpConfig.destinationUrl.replace(/\/$/, '')}/destination-configuration/v1/destinations/${encodeURIComponent(destinationName)}`;
207
- const resp = await fetch(destUrl, {
208
- headers: {
209
- Authorization: `Bearer ${serviceToken}`,
210
- 'X-user-token': userJwt,
211
- },
206
+ // Use SAP Cloud SDK to resolve the destination with per-user JWT.
207
+ // The SDK handles: service token acquisition, X-User-Token header,
208
+ // and per-user destination caching (keyed by destinationName + jwt).
209
+ const sdkDest = await getDestination({
210
+ destinationName,
211
+ jwt: userJwt,
212
+ useCache: true,
212
213
  });
213
- if (!resp.ok) {
214
- const text = await resp.text();
215
- throw new Error(`Destination Service (per-user) returned HTTP ${resp.status} for '${destinationName}': ${text.slice(0, 300)}`);
214
+ if (!sdkDest) {
215
+ throw new Error(`Destination Service (per-user) returned no destination for '${destinationName}'`);
216
216
  }
217
- const data = (await resp.json());
218
- const dest = data.destinationConfiguration;
217
+ // Map SDK Destination → ARC-1 Destination type
218
+ const dest = {
219
+ Name: sdkDest.name ?? destinationName,
220
+ URL: sdkDest.url ?? '',
221
+ Authentication: sdkDest.authentication ?? '',
222
+ ProxyType: sdkDest.proxyType ?? '',
223
+ User: sdkDest.username ?? '',
224
+ Password: sdkDest.password ?? '',
225
+ 'sap-client': sdkDest.sapClient ?? undefined,
226
+ CloudConnectorLocationId: sdkDest.cloudConnectorLocationId ?? undefined,
227
+ };
219
228
  const tokens = {};
229
+ const sdkAuthTokens = sdkDest.authTokens;
220
230
  // Log raw auth response for PP debugging.
221
231
  // Field names avoid "token" substring to prevent logger redaction.
222
- const rawEntries = data.authTokens?.map((t) => ({
232
+ const rawEntries = sdkAuthTokens?.map((t) => ({
223
233
  entryType: t.type,
224
234
  httpHeaderKey: t.http_header?.key,
225
235
  hasValue: !!t.value,
@@ -231,12 +241,12 @@ export async function lookupDestinationWithUserToken(btpConfig, destinationName,
231
241
  authentication: dest.Authentication,
232
242
  proxyType: dest.ProxyType,
233
243
  url: dest.URL,
234
- ppEntryCount: data.authTokens?.length ?? 0,
244
+ ppEntryCount: sdkAuthTokens?.length ?? 0,
235
245
  ppEntries: rawEntries ?? 'NONE',
236
246
  });
237
- // Extract auth tokens from the response
238
- if (data.authTokens) {
239
- for (const token of data.authTokens) {
247
+ // Extract auth tokens from the SDK response
248
+ if (sdkAuthTokens) {
249
+ for (const token of sdkAuthTokens) {
240
250
  if (token.error) {
241
251
  logger.error('Destination Service auth token error', {
242
252
  destination: destinationName,
@@ -357,8 +367,11 @@ export async function resolveBTPDestination(destinationName) {
357
367
  if (!btpConfig) {
358
368
  throw new Error('SAP_BTP_DESTINATION is set but VCAP_SERVICES is not available. Are you running on BTP CF?');
359
369
  }
370
+ // Use direct fetch for startup — works with BasicAuth destinations without JWT.
371
+ // The SDK's getDestination() fails for PrincipalPropagation destinations at startup
372
+ // because there's no user JWT available yet.
360
373
  const dest = await lookupDestination(btpConfig, destinationName);
361
- const proxy = dest.ProxyType === 'OnPremise' ? createConnectivityProxy(btpConfig) : null;
374
+ const proxy = dest.ProxyType === 'OnPremise' ? createConnectivityProxy(btpConfig, dest.CloudConnectorLocationId) : null;
362
375
  return {
363
376
  url: dest.URL,
364
377
  username: dest.User,
@@ -1 +1 @@
1
- {"version":3,"file":"btp.js","sourceRoot":"","sources":["../../src/adt/btp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"btp.js","sourceRoot":"","sources":["../../src/adt/btp.ts"],"names":[],"mappings":"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"}
@@ -18,7 +18,7 @@
18
18
  import type { AdtClientConfig } from './config.js';
19
19
  import { AdtHttpClient } from './http.js';
20
20
  import { type SafetyConfig } from './safety.js';
21
- import type { AdtSearchResult, ClassMetadata, DataElementInfo, DomainInfo, SourceSearchResult, StructuredClassResponse, TransactionInfo } from './types.js';
21
+ import type { AdtSearchResult, ApiReleaseStateInfo, BspAppInfo, BspFileNode, ClassMetadata, DataElementInfo, DomainInfo, InactiveObject, MessageClassInfo, SourceSearchResult, StructuredClassResponse, TransactionInfo } from './types.js';
22
22
  export declare class AdtClient {
23
23
  readonly http: AdtHttpClient;
24
24
  readonly safety: SafetyConfig;
@@ -76,6 +76,10 @@ export declare class AdtClient {
76
76
  getDataElement(name: string): Promise<DataElementInfo>;
77
77
  /** Get transaction code metadata (description, package) */
78
78
  getTransaction(name: string): Promise<TransactionInfo>;
79
+ /** Get API release state for an object (clean core / ABAP Cloud compliance) */
80
+ getApiReleaseState(objectUri: string): Promise<ApiReleaseStateInfo>;
81
+ /** List objects pending activation (inactive objects) */
82
+ getInactiveObjects(): Promise<InactiveObject[]>;
79
83
  /** Search for ABAP objects by name pattern */
80
84
  searchObject(query: string, maxResults?: number): Promise<AdtSearchResult[]>;
81
85
  /** Search within ABAP source code (full-text search) */
@@ -105,11 +109,25 @@ export declare class AdtClient {
105
109
  release: string;
106
110
  description: string;
107
111
  }>>;
108
- /** Get message class messages */
112
+ /** Get message class messages (legacy endpoint — may fail for some classes) */
109
113
  getMessages(messageClass: string): Promise<string>;
114
+ /** Get structured message class info from /sap/bc/adt/messageclass/{name} */
115
+ getMessageClassInfo(name: string): Promise<MessageClassInfo>;
110
116
  /** Get program text elements */
111
117
  getTextElements(program: string): Promise<string>;
112
118
  /** Get program variants */
113
119
  getVariants(program: string): Promise<string>;
120
+ /** List deployed BSP/UI5 applications */
121
+ listBspApps(query?: string, maxResults?: number): Promise<BspAppInfo[]>;
122
+ /** Browse BSP app file structure (root or subfolder) */
123
+ getBspAppStructure(appName: string, subPath?: string): Promise<BspFileNode[]>;
124
+ /** Read a single file from a BSP app */
125
+ getBspFileContent(appName: string, filePath: string): Promise<string>;
126
+ /**
127
+ * Resolve the ABAP package of an existing object by fetching its metadata.
128
+ * Returns the package name (e.g., "$TMP", "ZPACKAGE") or empty string if not found.
129
+ * Used by SAPWrite to enforce allowedPackages on update/delete/edit_method.
130
+ */
131
+ resolveObjectPackage(objectUrl: string): Promise<string>;
114
132
  }
115
133
  //# sourceMappingURL=client.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/adt/client.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../../src/adt/client.ts"],"names":[],"mappings":"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"}
@@ -19,7 +19,7 @@ import { defaultAdtClientConfig } from './config.js';
19
19
  import { isNotFoundError } from './errors.js';
20
20
  import { AdtHttpClient } from './http.js';
21
21
  import { checkOperation, OperationType } from './safety.js';
22
- import { parseClassMetadata, parseDataElementMetadata, parseDomainMetadata, parseFunctionGroup, parseInstalledComponents, parsePackageContents, parseSearchResults, parseServiceBinding, parseSourceSearchResults, parseSystemInfo, parseTableContents, parseTransactionMetadata, } from './xml-parser.js';
22
+ import { parseApiReleaseState, parseBspAppList, parseBspFolderListing, parseClassMetadata, parseDataElementMetadata, parseDomainMetadata, parseFunctionGroup, parseInactiveObjects, parseInstalledComponents, parseMessageClass, parsePackageContents, parseSearchResults, parseServiceBinding, parseSourceSearchResults, parseSystemInfo, parseTableContents, parseTransactionMetadata, } from './xml-parser.js';
23
23
  export class AdtClient {
24
24
  http;
25
25
  safety;
@@ -249,6 +249,22 @@ export class AdtClient {
249
249
  const resp = await this.http.get(`/sap/bc/adt/vit/wb/object_type/trant/object_name/${encodeURIComponent(name)}`);
250
250
  return parseTransactionMetadata(resp.body);
251
251
  }
252
+ /** Get API release state for an object (clean core / ABAP Cloud compliance) */
253
+ async getApiReleaseState(objectUri) {
254
+ checkOperation(this.safety, OperationType.Read, 'GetApiReleaseState');
255
+ const resp = await this.http.get(`/sap/bc/adt/apireleases/${encodeURIComponent(objectUri)}`, {
256
+ Accept: 'application/vnd.sap.adt.apirelease.v10+xml',
257
+ });
258
+ return parseApiReleaseState(resp.body);
259
+ }
260
+ /** List objects pending activation (inactive objects) */
261
+ async getInactiveObjects() {
262
+ checkOperation(this.safety, OperationType.Read, 'GetInactiveObjects');
263
+ const resp = await this.http.get('/sap/bc/adt/activation/inactive', {
264
+ Accept: 'application/xml',
265
+ });
266
+ return parseInactiveObjects(resp.body);
267
+ }
252
268
  // ─── Search Operations ─────────────────────────────────────────────
253
269
  /** Search for ABAP objects by name pattern */
254
270
  async searchObject(query, maxResults = 100) {
@@ -301,12 +317,18 @@ export class AdtClient {
301
317
  const resp = await this.http.get('/sap/bc/adt/system/components');
302
318
  return parseInstalledComponents(resp.body);
303
319
  }
304
- /** Get message class messages */
320
+ /** Get message class messages (legacy endpoint — may fail for some classes) */
305
321
  async getMessages(messageClass) {
306
322
  checkOperation(this.safety, OperationType.Read, 'GetMessages');
307
323
  const resp = await this.http.get(`/sap/bc/adt/msg/messages/${encodeURIComponent(messageClass)}`);
308
324
  return resp.body;
309
325
  }
326
+ /** Get structured message class info from /sap/bc/adt/messageclass/{name} */
327
+ async getMessageClassInfo(name) {
328
+ checkOperation(this.safety, OperationType.Read, 'GetMessageClassInfo');
329
+ const resp = await this.http.get(`/sap/bc/adt/messageclass/${encodeURIComponent(name)}`);
330
+ return parseMessageClass(resp.body);
331
+ }
310
332
  /** Get program text elements */
311
333
  async getTextElements(program) {
312
334
  checkOperation(this.safety, OperationType.Read, 'GetTextElements');
@@ -319,5 +341,46 @@ export class AdtClient {
319
341
  const resp = await this.http.get(`/sap/bc/adt/programs/programs/${encodeURIComponent(program)}/variants`);
320
342
  return resp.body;
321
343
  }
344
+ // ─── BSP / UI5 Filestore Read Operations ────────────────────────────
345
+ /** List deployed BSP/UI5 applications */
346
+ async listBspApps(query, maxResults) {
347
+ checkOperation(this.safety, OperationType.Read, 'ListBSPApps');
348
+ const params = new URLSearchParams();
349
+ if (query)
350
+ params.set('name', query);
351
+ if (maxResults !== undefined)
352
+ params.set('maxResults', String(maxResults));
353
+ const qs = params.toString();
354
+ const path = `/sap/bc/adt/filestore/ui5-bsp/objects${qs ? `?${qs}` : ''}`;
355
+ const resp = await this.http.get(path, { Accept: 'application/atom+xml' });
356
+ return parseBspAppList(resp.body);
357
+ }
358
+ /** Browse BSP app file structure (root or subfolder) */
359
+ async getBspAppStructure(appName, subPath) {
360
+ checkOperation(this.safety, OperationType.Read, 'GetBSPApp');
361
+ const normalizedSubPath = subPath && !subPath.startsWith('/') ? `/${subPath}` : subPath || '';
362
+ const objectPath = appName.toUpperCase() + normalizedSubPath;
363
+ const resp = await this.http.get(`/sap/bc/adt/filestore/ui5-bsp/objects/${encodeURIComponent(objectPath)}/content`, { Accept: 'application/xml', 'Content-Type': 'application/atom+xml' });
364
+ return parseBspFolderListing(resp.body, appName.toUpperCase());
365
+ }
366
+ /** Read a single file from a BSP app */
367
+ async getBspFileContent(appName, filePath) {
368
+ checkOperation(this.safety, OperationType.Read, 'GetBSPFile');
369
+ const cleanPath = filePath.startsWith('/') ? filePath.substring(1) : filePath;
370
+ const objectPath = `${appName.toUpperCase()}/${cleanPath}`;
371
+ const resp = await this.http.get(`/sap/bc/adt/filestore/ui5-bsp/objects/${encodeURIComponent(objectPath)}/content`, { Accept: 'application/xml', 'Content-Type': 'application/octet-stream' });
372
+ return resp.body;
373
+ }
374
+ /**
375
+ * Resolve the ABAP package of an existing object by fetching its metadata.
376
+ * Returns the package name (e.g., "$TMP", "ZPACKAGE") or empty string if not found.
377
+ * Used by SAPWrite to enforce allowedPackages on update/delete/edit_method.
378
+ */
379
+ async resolveObjectPackage(objectUrl) {
380
+ checkOperation(this.safety, OperationType.Read, 'ResolveObjectPackage');
381
+ const resp = await this.http.get(objectUrl);
382
+ const match = resp.body.match(/adtcore:packageRef[^>]*adtcore:name="([^"]*)"/);
383
+ return match?.[1] ?? '';
384
+ }
322
385
  }
323
386
  //# sourceMappingURL=client.js.map