@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 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.3.4...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
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.3.4)
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.4, `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.4",
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",