@mcp-abap-adt/connection 9.3.4 → 9.4.0
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/CHANGELOG.md +21 -1
- package/docs/STATEFUL_SESSION_GUIDE.md +10 -9
- package/package.json +2 -2
package/CHANGELOG.md
CHANGED
|
@@ -7,6 +7,25 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
|
7
7
|
|
|
8
8
|
## [Unreleased]
|
|
9
9
|
|
|
10
|
+
## [9.4.0] - 2026-09-27
|
|
11
|
+
|
|
12
|
+
### Changed
|
|
13
|
+
|
|
14
|
+
- **`@mcp-abap-adt/sap-rfc-lite` `^0.2.0`** (was `^0.1.0 || ^0.2.0`), still an
|
|
15
|
+
optional dependency. The range let an install that already had 0.1.0 in its
|
|
16
|
+
lockfile keep it: npm does not move a locked version that still satisfies
|
|
17
|
+
the range, so 9.3.4's context reset never reached it, and every stateless
|
|
18
|
+
RFC call opened a conversation of its own (~0.67 s instead of ~0.24 s,
|
|
19
|
+
measured on an on-premise system). With 0.2.0 required, every stateless
|
|
20
|
+
call reuses one conversation and resets its server context. A minor
|
|
21
|
+
release, not a patch: support for 0.1.x ends and the behaviour of an
|
|
22
|
+
install that had it changes. No API changes.
|
|
23
|
+
|
|
24
|
+
**What a consumer does:** reinstall with the SAP NW RFC SDK visible, so the
|
|
25
|
+
optional native build of 0.2.0 succeeds (npm drops a failed optional build
|
|
26
|
+
silently). The check for a client without `resetServerContext` stays as a
|
|
27
|
+
guard; with 0.2.0 it is not taken.
|
|
28
|
+
|
|
10
29
|
## [9.3.4] - 2026-09-27
|
|
11
30
|
|
|
12
31
|
### Changed
|
|
@@ -1883,7 +1902,8 @@ const connection = createAbapConnection(config, logger);
|
|
|
1883
1902
|
- JWT token refresh now properly handles connection errors (401/403 during initial connect)
|
|
1884
1903
|
- Permission errors (403 with "ExceptionResourceNoAccess") no longer trigger JWT refresh loops
|
|
1885
1904
|
- Proper separation: base class handles HTTP/session, concrete classes handle auth-specific errors
|
|
1886
|
-
[Unreleased]: https://github.com/fr0ster/mcp-abap-connection/compare/v9.
|
|
1905
|
+
[Unreleased]: https://github.com/fr0ster/mcp-abap-connection/compare/v9.4.0...HEAD
|
|
1906
|
+
[9.4.0]: https://github.com/fr0ster/mcp-abap-connection/compare/v9.3.4...v9.4.0
|
|
1887
1907
|
[9.3.4]: https://github.com/fr0ster/mcp-abap-connection/compare/v9.3.3...v9.3.4
|
|
1888
1908
|
[9.3.3]: https://github.com/fr0ster/mcp-abap-connection/compare/v9.3.2...v9.3.3
|
|
1889
1909
|
[9.3.2]: https://github.com/fr0ster/mcp-abap-connection/compare/v9.3.1...v9.3.2
|
|
@@ -57,14 +57,14 @@ implementations must read `request.stateful`; the connection no longer adds
|
|
|
57
57
|
`x-sap-adt-sessiontype` itself. The cookie fix was verified on E19 and E98;
|
|
58
58
|
BASIS 7.40 and ABAP Cloud were not integration-tested for this change.
|
|
59
59
|
|
|
60
|
-
## RFC conversation isolation (9.3.2–9.
|
|
60
|
+
## RFC conversation isolation (9.3.2–9.4.0)
|
|
61
61
|
|
|
62
62
|
Stateful requests, including LOCK and UNLOCK, share the conversation opened
|
|
63
|
-
by `connect()`.
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
conversation. Both `setSessionType('stateful')` and a caller-supplied stateful
|
|
63
|
+
by `connect()`. Stateless calls reuse a second conversation: the transport
|
|
64
|
+
resets its ABAP server context after each call, keeping the RFC logon open
|
|
65
|
+
(`sap-rfc-lite` 0.2.0, required since 9.4.0; 9.3.4 introduced it and still
|
|
66
|
+
accepted 0.1.x). When that conversation is busy with another call, a stateless
|
|
67
|
+
call gets a separate temporary conversation. Both `setSessionType('stateful')` and a caller-supplied stateful
|
|
68
68
|
session header select the persistent conversation.
|
|
69
69
|
|
|
70
70
|
Previously all RFC requests shared one ABAP session. On E19, saving a package
|
|
@@ -73,9 +73,10 @@ with **400 PAK/058, “Package … is already locked”**. Reading immediately a
|
|
|
73
73
|
creation could fail with **400 SADT_RESOURCE/007**. With separate conversations,
|
|
74
74
|
create, read, two lock/PUT/unlock rounds and delete passed on one connection.
|
|
75
75
|
|
|
76
|
-
|
|
77
|
-
about 0.5 s on
|
|
78
|
-
|
|
76
|
+
A resettable call took about 0.24 s total on E19; a temporary conversation
|
|
77
|
+
pays for an RFC logon, about 0.5 s on top of about 0.1 s for the call — which
|
|
78
|
+
is what every stateless call cost with `sap-rfc-lite` 0.1.x, and why 9.4.0
|
|
79
|
+
requires 0.2.0. Direct connector users must mark
|
|
79
80
|
LOCK and UNLOCK stateful to retain their conversation. If disconnect occurs
|
|
80
81
|
while a temporary conversation is logging on, it is closed without sending
|
|
81
82
|
the request; reconnect does not revive that pending request.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mcp-abap-adt/connection",
|
|
3
|
-
"version": "9.
|
|
3
|
+
"version": "9.4.0",
|
|
4
4
|
"description": "ABAP connection layer for MCP ABAP ADT server",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -63,7 +63,7 @@
|
|
|
63
63
|
"open": "^11.0.0"
|
|
64
64
|
},
|
|
65
65
|
"optionalDependencies": {
|
|
66
|
-
"@mcp-abap-adt/sap-rfc-lite": "^0.
|
|
66
|
+
"@mcp-abap-adt/sap-rfc-lite": "^0.2.0"
|
|
67
67
|
},
|
|
68
68
|
"devDependencies": {
|
|
69
69
|
"@biomejs/biome": "^2.3.14",
|