@mcp-abap-adt/connection 9.3.3 → 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 CHANGED
@@ -7,6 +7,36 @@ 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
+
29
+ ## [9.3.4] - 2026-09-27
30
+
31
+ ### Changed
32
+
33
+ - **Release the RFC context reset under an available package version.** npm
34
+ already contained version `9.3.3`, so this release carries the RFC stateless
35
+ context reset as `9.3.4`. With `sap-rfc-lite` 0.2.0, stateless calls reuse a
36
+ conversation and reset its server context after each call; older clients
37
+ continue to open a conversation per call. See the `9.3.3` entry below for
38
+ measured behavior and performance.
39
+
10
40
  ## [9.3.3] - 2026-09-27
11
41
 
12
42
  ### Changed
@@ -1872,7 +1902,9 @@ const connection = createAbapConnection(config, logger);
1872
1902
  - JWT token refresh now properly handles connection errors (401/403 during initial connect)
1873
1903
  - Permission errors (403 with "ExceptionResourceNoAccess") no longer trigger JWT refresh loops
1874
1904
  - Proper separation: base class handles HTTP/session, concrete classes handle auth-specific errors
1875
- [Unreleased]: https://github.com/fr0ster/mcp-abap-connection/compare/v9.3.3...HEAD
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
1907
+ [9.3.4]: https://github.com/fr0ster/mcp-abap-connection/compare/v9.3.3...v9.3.4
1876
1908
  [9.3.3]: https://github.com/fr0ster/mcp-abap-connection/compare/v9.3.2...v9.3.3
1877
1909
  [9.3.2]: https://github.com/fr0ster/mcp-abap-connection/compare/v9.3.1...v9.3.2
1878
1910
  [9.3.1]: https://github.com/fr0ster/mcp-abap-connection/compare/v9.3.0...v9.3.1
package/README.md CHANGED
@@ -298,7 +298,7 @@ conversation; stateless requests use a separate ABAP context. With
298
298
  conversation; older clients open one conversation per call. This prevents stale
299
299
  package state from causing PAK/058 on later writes or SADT_RESOURCE/007 on a
300
300
  read after create. Concurrent calls use a separate conversation. See
301
- [RFC conversation isolation](./docs/STATEFUL_SESSION_GUIDE.md#rfc-conversation-isolation-933).
301
+ [RFC conversation isolation](./docs/STATEFUL_SESSION_GUIDE.md#rfc-conversation-isolation-932-and-933).
302
302
 
303
303
  Needs the SAP NW RFC SDK on the machine and `npm install @mcp-abap-adt/sap-rfc-lite`.
304
304
 
@@ -49,7 +49,7 @@ The filter also applies to cookies supplied in request headers and retries.
49
49
  | --- | --- |
50
50
  | HTTP (on-prem / cloud) | Sends `x-sap-adt-sessiontype: stateful` and the context cookie, when held |
51
51
  | Legacy on-prem HTTP | Keeps the context cookie but omits the session-type header |
52
- | RFC | Uses the persistent conversation for stateful requests; since 9.3.3 resets a kept stateless conversation between calls when supported |
52
+ | RFC | Uses the persistent conversation for stateful requests; since 9.3.4 resets a kept stateless conversation between calls when supported |
53
53
 
54
54
  A caller-supplied stateful header is also recognized, including by the legacy
55
55
  HTTP transport before it removes that header. Custom `IAdtTransport`
@@ -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 and 9.3.3)
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()`. Since 9.3.3, `sap-rfc-lite` 0.2.0 and newer let stateless calls
64
- reuse a second conversation: the transport resets its ABAP server context after
65
- each call, keeping the RFC logon open. With older clients (0.1.x), or when a
66
- resettable conversation is busy, each stateless call gets a separate temporary
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
- When using `sap-rfc-lite` 0.1.x, each stateless call pays for an RFC logon:
77
- about 0.5 s on E19, in addition to about 0.1 s for the call. With 0.2.0+, a
78
- resettable call took about 0.24 s total on E19. Direct connector users must mark
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.3",
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.1.0 || ^0.2.0"
66
+ "@mcp-abap-adt/sap-rfc-lite": "^0.2.0"
67
67
  },
68
68
  "devDependencies": {
69
69
  "@biomejs/biome": "^2.3.14",