@mcp-abap-adt/adt-clients 28.0.0 → 29.0.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/README.md +4 -4
- package/dist/runtime/debugger/AbapDebugger.d.ts +6 -8
- package/dist/runtime/debugger/AbapDebugger.d.ts.map +1 -1
- package/dist/runtime/debugger/AbapDebugger.js +6 -8
- package/dist/runtime/debugger/abap.d.ts +12 -10
- package/dist/runtime/debugger/abap.d.ts.map +1 -1
- package/dist/runtime/debugger/abap.js +18 -23
- package/docs/usage/CLIENT_API_REFERENCE.md +10 -6
- package/docs/usage/MIGRATION-29.md +43 -0
- package/package.json +3 -3
package/README.md
CHANGED
|
@@ -91,7 +91,7 @@ This package interacts with external packages **ONLY through interfaces**:
|
|
|
91
91
|
|
|
92
92
|
| package | what this package takes from it |
|
|
93
93
|
|---|---|
|
|
94
|
-
| [`@mcp-abap-adt/interfaces-adt`](https://www.npmjs.com/package/@mcp-abap-adt/interfaces-adt) `^
|
|
94
|
+
| [`@mcp-abap-adt/interfaces-adt`](https://www.npmjs.com/package/@mcp-abap-adt/interfaces-adt) `^15.0.0` | the capability atoms, every object's config, `IAdtResponse`, `IAnalyse`, `IAdtAnalyseOptions`, `IResultStrategy`, `ADT_NO_FAILURE`, `ADT_TASK_TYPE` |
|
|
95
95
|
| [`@mcp-abap-adt/interfaces-adt-connection`](https://www.npmjs.com/package/@mcp-abap-adt/interfaces-adt-connection) `^2.0.0` | `IAbapConnection`, `IAdtWireResponse`, `IAbapRequestOptions`, `ITimeoutConfig`, the connection capability atoms, `ADT_SESSION_ERROR` |
|
|
96
96
|
| [`@mcp-abap-adt/interfaces-network`](https://www.npmjs.com/package/@mcp-abap-adt/interfaces-network) `^2.0.0` | `IWebSocketTransport` and its four companions, `HttpError` |
|
|
97
97
|
| [`@mcp-abap-adt/interfaces-utils`](https://www.npmjs.com/package/@mcp-abap-adt/interfaces-utils) `^1.1.0` | `ILogger`, `LogLevel`, `XmlNode` |
|
|
@@ -162,7 +162,7 @@ npm install @mcp-abap-adt/adt-clients
|
|
|
162
162
|
|
|
163
163
|
6. **AbapDebugger, AmdpDebugger, MemorySnapshots**
|
|
164
164
|
- Standalone, from `@mcp-abap-adt/adt-clients/runtime` or the root: `new AbapDebugger(connection, logger, results?, { onConflict? })`
|
|
165
|
-
- One member per request, contracts `IAbapDebugger`, `IAmdpDebugger`, `IMemorySnapshots` from `@mcp-abap-adt/interfaces-adt` (contract
|
|
165
|
+
- One member per request, contracts `IAbapDebugger`, `IAmdpDebugger`, `IMemorySnapshots` from `@mcp-abap-adt/interfaces-adt` (contract 15 pairs with clients 29)
|
|
166
166
|
- **The identity states its mode.** `{ debuggingMode: 'user', requestUser, terminalId, ideId }`, or `{ debuggingMode: 'terminal', terminalId, ideId }`; `attach` takes the identity, not the user. A catch in terminal mode is unmeasured
|
|
167
167
|
- **Breakpoints are replaced, not added to.** `setBreakpoints` and `syncBreakpoints` replace the identity's set, and `stopListener` deletes it: arm the whole set in one call
|
|
168
168
|
- **Two sessions.** The ABAP listener holds one stateful connection; each debuggee caught is attached on a new one, routed to its application server. The AMDP debugger answers events on one session and takes commands on another
|
|
@@ -857,7 +857,7 @@ everything else is not.
|
|
|
857
857
|
|
|
858
858
|
### Single Definition Site: the contract packages
|
|
859
859
|
|
|
860
|
-
Since **7.5.0**, every contract type is **defined once**, in the contract packages — today `@mcp-abap-adt/interfaces-adt` (`^
|
|
860
|
+
Since **7.5.0**, every contract type is **defined once**, in the contract packages — today `@mcp-abap-adt/interfaces-adt` (`^15.0.0`) for the ADT contracts and `@mcp-abap-adt/interfaces-adt-connection` (`^2.0.0`) for the connection. This package declares no copies of its own — every `IXxxConfig`, the capability atoms, the option and response types and the cross-cutting shared types all live there.
|
|
861
861
|
|
|
862
862
|
**Import them from the package that owns them:**
|
|
863
863
|
|
|
@@ -937,7 +937,7 @@ contracts (`IAbapDebugger`, `IAmdpDebugger`, `IMemorySnapshots`, 13.1.0). This
|
|
|
937
937
|
package no longer declares or exports any contract type — every contract name it uses is
|
|
938
938
|
sourced from the contract packages.
|
|
939
939
|
|
|
940
|
-
> **Version pairing.** `adt-clients`
|
|
940
|
+
> **Version pairing.** `adt-clients` 29 pairs with `interfaces-adt` 15 (breakpoints lose `skipCount` and gain `clientId`), and `adt-strategies` 0.10.0 declares the same range. Because the types are sourced rather than copied, `@mcp-abap-adt/interfaces-adt` and `@mcp-abap-adt/interfaces-adt-connection` are hard peers of this package's public API. A major bump there implies a bump here; keep the two in step rather than letting a resolver pick a mismatched pair.
|
|
941
941
|
|
|
942
942
|
### Naming Conventions
|
|
943
943
|
|
|
@@ -78,10 +78,9 @@ export declare class AbapDebugger<R extends IAbapDebuggerResults = typeof abapDe
|
|
|
78
78
|
* Arm breakpoints under the identity's key, replacing what the key held -
|
|
79
79
|
* a `validationOnly` request too (see `setBreakpoints` in `abap.ts`).
|
|
80
80
|
*
|
|
81
|
-
* `
|
|
82
|
-
*
|
|
83
|
-
*
|
|
84
|
-
* is to leave the contract in its next major. `0` is accepted.
|
|
81
|
+
* `clientId` on a breakpoint tags it; the server echoes it on every answer
|
|
82
|
+
* row, placed and refused, in an order of its own (see `setBreakpoints` in
|
|
83
|
+
* `abap.ts`).
|
|
85
84
|
*/
|
|
86
85
|
setBreakpoints<E extends IAdtError = IAdtError>(identity: IDebuggerIdentity, breakpoints: readonly IDebuggerBreakpoint[], options?: {
|
|
87
86
|
validationOnly?: boolean;
|
|
@@ -137,10 +136,9 @@ export declare class AbapDebugger<R extends IAbapDebuggerResults = typeof abapDe
|
|
|
137
136
|
* Replace the key's breakpoints, `full` or by object with `partial` (see
|
|
138
137
|
* `syncBreakpoints` in `abap.ts`).
|
|
139
138
|
*
|
|
140
|
-
* `
|
|
141
|
-
*
|
|
142
|
-
*
|
|
143
|
-
* is to leave the contract in its next major. `0` is accepted.
|
|
139
|
+
* `clientId` on a breakpoint tags it; the server echoes it on every answer
|
|
140
|
+
* row, placed and refused, in an order of its own (see `setBreakpoints` in
|
|
141
|
+
* `abap.ts`).
|
|
144
142
|
*/
|
|
145
143
|
syncBreakpoints<E extends IAdtError = IAdtError>(identity: IDebuggerIdentity, sync: IDebuggerBreakpointSync, options?: IAdtAnalyseOptions<E>): Promise<IAdtResponse<Of<R, 'breakpoints'>, E>>;
|
|
146
144
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AbapDebugger.d.ts","sourceRoot":"","sources":["../../../src/runtime/debugger/AbapDebugger.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAEH,OAAO,KAAK,EACV,aAAa,EACb,kBAAkB,EAClB,SAAS,EACT,YAAY,EACZ,mBAAmB,EACnB,uBAAuB,EACvB,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,yBAAyB,EACzB,eAAe,EAChB,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,yCAAyC,CAAC;AAC/E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,gCAAgC,CAAC;AAG9D,OAAO,EAYL,KAAK,yBAAyB,EAa/B,MAAM,QAAQ,CAAC;AAEhB,0DAA0D;AAC1D,MAAM,WAAW,oBAAoB;IACnC,QAAQ,CAAC,WAAW,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IAC/C,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IAC5C,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IAC1C,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IACzC,QAAQ,CAAC,SAAS,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IAC7C,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IACxC,2EAA2E;IAC3E,QAAQ,CAAC,IAAI,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IACxC,QAAQ,CAAC,WAAW,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IAC/C,wDAAwD;IACxD,QAAQ,CAAC,MAAM,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;IAC1C,2CAA2C;IAC3C,QAAQ,CAAC,QAAQ,EAAE,eAAe,CAAC,OAAO,CAAC,CAAC;CAC7C;AAED;;;;;GAKG;AACH,eAAO,MAAM,qBAAqB;;;;;;;;;;;CAWF,CAAC;AAEjC,qEAAqE;AACrE,MAAM,WAAW,oBAAoB;IACnC;;;;;OAKG;IACH,QAAQ,CAAC,UAAU,CAAC,EAAE,yBAAyB,CAAC;CACjD;AAED,KAAK,EAAE,CACL,CAAC,SAAS,oBAAoB,EAC9B,CAAC,SAAS,MAAM,oBAAoB,IAClC,UAAU,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;AAErB;;;;;;;;;;;;GAYG;AACH,qBAAa,YAAY,CACvB,CAAC,SAAS,oBAAoB,GAAG,OAAO,qBAAqB,CAC7D,YACE,aAAa,CACX,EAAE,CAAC,CAAC,EAAE,aAAa,CAAC,EACpB,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,EACjB,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,EACf,EAAE,CAAC,CAAC,EAAE,OAAO,CAAC,EACd,EAAE,CAAC,CAAC,EAAE,WAAW,CAAC,EAClB,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,EACb,EAAE,CAAC,CAAC,EAAE,MAAM,CAAC,EACb,EAAE,CAAC,CAAC,EAAE,aAAa,CAAC,EACpB,EAAE,CAAC,CAAC,EAAE,QAAQ,CAAC,EACf,EAAE,CAAC,CAAC,EAAE,UAAU,CAAC,CAClB;IAKD,OAAO,CAAC,QAAQ,CAAC,UAAU;IAG3B,OAAO,CAAC,QAAQ,CAAC,OAAO;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO;IAP1B,QAAQ,CAAC,IAAI,EAAG,cAAc,CAAU;gBAGrB,UAAU,EAAE,eAAe,EAC5C,OAAO,CAAC,EAAE,OAAO,EAEA,OAAO,GAAE,CAAyC,EAClD,OAAO,GAAE,oBAAyB;IAGrD,OAAO,CAAC,OAAO;IAMf
|
|
1
|
+
{"version":3,"file":"AbapDebugger.d.ts","sourceRoot":"","sources":["../../../src/runtime/debugger/AbapDebugger.ts"],"names":[],"mappings":"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"}
|
|
@@ -61,10 +61,9 @@ class AbapDebugger {
|
|
|
61
61
|
* Arm breakpoints under the identity's key, replacing what the key held -
|
|
62
62
|
* a `validationOnly` request too (see `setBreakpoints` in `abap.ts`).
|
|
63
63
|
*
|
|
64
|
-
* `
|
|
65
|
-
*
|
|
66
|
-
*
|
|
67
|
-
* is to leave the contract in its next major. `0` is accepted.
|
|
64
|
+
* `clientId` on a breakpoint tags it; the server echoes it on every answer
|
|
65
|
+
* row, placed and refused, in an order of its own (see `setBreakpoints` in
|
|
66
|
+
* `abap.ts`).
|
|
68
67
|
*/
|
|
69
68
|
async setBreakpoints(identity, breakpoints, options) {
|
|
70
69
|
return (0, adtResponse_1.answering)(() => (0, abap_1.setBreakpoints)(this.connection, identity, breakpoints, options?.validationOnly), this.reading('breakpoints'), options?.analyse);
|
|
@@ -144,10 +143,9 @@ class AbapDebugger {
|
|
|
144
143
|
* Replace the key's breakpoints, `full` or by object with `partial` (see
|
|
145
144
|
* `syncBreakpoints` in `abap.ts`).
|
|
146
145
|
*
|
|
147
|
-
* `
|
|
148
|
-
*
|
|
149
|
-
*
|
|
150
|
-
* is to leave the contract in its next major. `0` is accepted.
|
|
146
|
+
* `clientId` on a breakpoint tags it; the server echoes it on every answer
|
|
147
|
+
* row, placed and refused, in an order of its own (see `setBreakpoints` in
|
|
148
|
+
* `abap.ts`).
|
|
151
149
|
*/
|
|
152
150
|
async syncBreakpoints(identity, sync, options) {
|
|
153
151
|
return (0, adtResponse_1.answering)(() => (0, abap_1.syncBreakpoints)(this.connection, identity, sync), this.reading('breakpoints'), options?.analyse);
|
|
@@ -57,11 +57,12 @@ export declare function buildSyncBreakpointsXml(identity: IDebuggerIdentity, syn
|
|
|
57
57
|
* include it falls in (`#start=16` in a class became `LINE_NR=5` of the method
|
|
58
58
|
* include), so its id cannot be predicted.
|
|
59
59
|
*
|
|
60
|
-
* **`
|
|
61
|
-
*
|
|
62
|
-
*
|
|
63
|
-
* 816
|
|
64
|
-
*
|
|
60
|
+
* **`clientId`** on a breakpoint of any kind is the caller's tag, sent as the
|
|
61
|
+
* row's `clientId`. The server echoes it on every row of the answer - placed
|
|
62
|
+
* and refused - and does not keep the request's order: on premise (2026-10-11),
|
|
63
|
+
* BASIS 816, the refused rows came first. A line breakpoint is also renumbered,
|
|
64
|
+
* so neither the position nor the id pairs an answer row with its request row;
|
|
65
|
+
* the tag does.
|
|
65
66
|
*/
|
|
66
67
|
export declare function setBreakpoints(connection: IAbapConnection, identity: IDebuggerIdentity, breakpoints: readonly IDebuggerBreakpoint[], validationOnly?: boolean): Promise<IAdtWireResponse>;
|
|
67
68
|
/**
|
|
@@ -71,11 +72,12 @@ export declare function setBreakpoints(connection: IAbapConnection, identity: ID
|
|
|
71
72
|
* for it, `full` with `[]` to clear the key, and `partial` to replace one
|
|
72
73
|
* object's line breakpoints and keep the rest.
|
|
73
74
|
*
|
|
74
|
-
* **`
|
|
75
|
-
*
|
|
76
|
-
*
|
|
77
|
-
* 816
|
|
78
|
-
*
|
|
75
|
+
* **`clientId`** on a breakpoint of any kind is the caller's tag, sent as the
|
|
76
|
+
* row's `clientId`. The server echoes it on every row of the answer - placed
|
|
77
|
+
* and refused - and does not keep the request's order: on premise (2026-10-11),
|
|
78
|
+
* BASIS 816, the refused rows came first. A line breakpoint is also renumbered,
|
|
79
|
+
* so neither the position nor the id pairs an answer row with its request row;
|
|
80
|
+
* the tag does.
|
|
79
81
|
*
|
|
80
82
|
* Measured on premise (2026-10-11), BASIS 816, with two classes (two main
|
|
81
83
|
* programs) and a caught exception:
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"abap.d.ts","sourceRoot":"","sources":["../../../src/runtime/debugger/abap.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;GAyBG;AAEH,OAAO,KAAK,EACV,SAAS,EACT,mBAAmB,EACnB,uBAAuB,EACvB,iBAAiB,EACjB,iBAAiB,EACjB,mBAAmB,EACnB,yBAAyB,EAC1B,MAAM,8BAA8B,CAAC;AACtC,OAAO,KAAK,EACV,eAAe,EACf,gBAAgB,EACjB,MAAM,yCAAyC,CAAC;AAUjD,wEAAwE;AACxE,eAAO,MAAM,+BAA+B,qFACwC,CAAC;AACrF,4DAA4D;AAC5D,eAAO,MAAM,qCAAqC,0FACuC,CAAC;
|
|
1
|
+
{"version":3,"file":"abap.d.ts","sourceRoot":"","sources":["../../../src/runtime/debugger/abap.ts"],"names":[],"mappings":"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"}
|
|
@@ -129,20 +129,13 @@ function breakpointRow(bp, only) {
|
|
|
129
129
|
// unconditionally - refuse instead.
|
|
130
130
|
throw new Error(`condition is accepted on a line breakpoint only, not on kind "${bp.kind}"`);
|
|
131
131
|
}
|
|
132
|
-
if (bp.skipCount !== undefined && bp.skipCount > 0) {
|
|
133
|
-
// Still in the 14.x contract's type, refused here, and to leave the
|
|
134
|
-
// contract in its next major. Every breakpoint this module sends is
|
|
135
|
-
// external (`scope="external"`), and the server accepts a skip count there
|
|
136
|
-
// and drops it: it is not echoed, and the first hit stops - measured on
|
|
137
|
-
// premise (2026-10-11), BASIS 816, `skipCount="2"` on a loop line stopped
|
|
138
|
-
// on pass 1. The stored form of an external breakpoint has no field for it
|
|
139
|
-
// (server source, BASIS 816, read 2026-10-11). Sending it would arm a
|
|
140
|
-
// breakpoint that stops on every hit - refuse. `0` means "no skip", which
|
|
141
|
-
// is what the server does anyway, so it is accepted and sends nothing.
|
|
142
|
-
throw new Error(`skipCount ${bp.skipCount} is not applied to an external breakpoint (kind "${bp.kind}"): the server ignores it`);
|
|
143
|
-
}
|
|
144
132
|
const cond = condition ? ` condition="${escapeXml(condition)}"` : '';
|
|
145
|
-
|
|
133
|
+
// The caller's tag, on any kind. The server echoes it on every row of the
|
|
134
|
+
// answer, placed and refused, and does not keep the request's order (refused
|
|
135
|
+
// rows first) - measured on premise (2026-10-11), BASIS 816 - so it is what
|
|
136
|
+
// pairs an answer row with the request row that made it.
|
|
137
|
+
const tag = bp.clientId !== undefined ? ` clientId="${escapeXml(bp.clientId)}"` : '';
|
|
138
|
+
return ` <breakpoint kind="${bp.kind}" ${breakpointTarget(bp)}${cond}${tag}${only}/>`;
|
|
146
139
|
}
|
|
147
140
|
/**
|
|
148
141
|
* The body of `POST /debugger/breakpoints`, without a `syncScope`. Without one
|
|
@@ -184,11 +177,12 @@ function buildSyncBreakpointsXml(identity, sync) {
|
|
|
184
177
|
* include it falls in (`#start=16` in a class became `LINE_NR=5` of the method
|
|
185
178
|
* include), so its id cannot be predicted.
|
|
186
179
|
*
|
|
187
|
-
* **`
|
|
188
|
-
*
|
|
189
|
-
*
|
|
190
|
-
* 816
|
|
191
|
-
*
|
|
180
|
+
* **`clientId`** on a breakpoint of any kind is the caller's tag, sent as the
|
|
181
|
+
* row's `clientId`. The server echoes it on every row of the answer - placed
|
|
182
|
+
* and refused - and does not keep the request's order: on premise (2026-10-11),
|
|
183
|
+
* BASIS 816, the refused rows came first. A line breakpoint is also renumbered,
|
|
184
|
+
* so neither the position nor the id pairs an answer row with its request row;
|
|
185
|
+
* the tag does.
|
|
192
186
|
*/
|
|
193
187
|
async function setBreakpoints(connection, identity, breakpoints, validationOnly = false) {
|
|
194
188
|
return connection.makeAdtRequest({
|
|
@@ -206,11 +200,12 @@ async function setBreakpoints(connection, identity, breakpoints, validationOnly
|
|
|
206
200
|
* for it, `full` with `[]` to clear the key, and `partial` to replace one
|
|
207
201
|
* object's line breakpoints and keep the rest.
|
|
208
202
|
*
|
|
209
|
-
* **`
|
|
210
|
-
*
|
|
211
|
-
*
|
|
212
|
-
* 816
|
|
213
|
-
*
|
|
203
|
+
* **`clientId`** on a breakpoint of any kind is the caller's tag, sent as the
|
|
204
|
+
* row's `clientId`. The server echoes it on every row of the answer - placed
|
|
205
|
+
* and refused - and does not keep the request's order: on premise (2026-10-11),
|
|
206
|
+
* BASIS 816, the refused rows came first. A line breakpoint is also renumbered,
|
|
207
|
+
* so neither the position nor the id pairs an answer row with its request row;
|
|
208
|
+
* the tag does.
|
|
214
209
|
*
|
|
215
210
|
* Measured on premise (2026-10-11), BASIS 816, with two classes (two main
|
|
216
211
|
* programs) and a caught exception:
|
|
@@ -1879,8 +1879,11 @@ const identity = { debuggingMode: 'user', requestUser, terminalId, ideId } as co
|
|
|
1879
1879
|
|
|
1880
1880
|
listenerConnection.setSessionType('stateful');
|
|
1881
1881
|
const listener = new AbapDebugger(listenerConnection, logger);
|
|
1882
|
+
// clientId (any kind) is the caller's tag: the server echoes it on every row of
|
|
1883
|
+
// the answer, placed and refused, and does not keep the request's order, so it
|
|
1884
|
+
// is what pairs an answer row with the request row that made it.
|
|
1882
1885
|
await listener.setBreakpoints(identity, [
|
|
1883
|
-
{ kind: 'line', uri: `${sourceUri}#start=12
|
|
1886
|
+
{ kind: 'line', uri: `${sourceUri}#start=12`, clientId: 'loop-line' },
|
|
1884
1887
|
]);
|
|
1885
1888
|
|
|
1886
1889
|
const caught = listener.listen(identity, { holdSeconds: 60 });
|
|
@@ -1939,11 +1942,12 @@ await run;
|
|
|
1939
1942
|
on a connection of its own. The library adds no guard.
|
|
1940
1943
|
Measured on premise (2026-10-11), SAP_BASIS 816; the caching is in the server
|
|
1941
1944
|
source, SAP_BASIS 816, read 2026-10-11.
|
|
1942
|
-
- **`
|
|
1943
|
-
|
|
1944
|
-
|
|
1945
|
-
|
|
1946
|
-
|
|
1945
|
+
- **`clientId` tags a breakpoint of any kind.** The server echoes it on every
|
|
1946
|
+
row of the answer - placed and refused - and answers the rows out of the
|
|
1947
|
+
request's order, refused first; a line breakpoint is renumbered as well. Pair
|
|
1948
|
+
by `clientId`. Measured on premise (2026-10-11), SAP_BASIS 816. There is no
|
|
1949
|
+
`skipCount` (removed in `interfaces-adt` 15): the server ignored it on an
|
|
1950
|
+
external breakpoint.
|
|
1947
1951
|
- **`terminateDebugger`** ends the debugger's own session, and the answer is a
|
|
1948
1952
|
plain `500` with no ADT document. The program runs on and returns its
|
|
1949
1953
|
output, and the session cannot be used afterwards. Pass
|
|
@@ -0,0 +1,43 @@
|
|
|
1
|
+
# Migrating to 29.0.0
|
|
2
|
+
|
|
3
|
+
29.0.0 moves the breakpoints to `@mcp-abap-adt/interfaces-adt` 15: `skipCount`
|
|
4
|
+
leaves the type and every kind gains `clientId`. Nothing else changed.
|
|
5
|
+
|
|
6
|
+
Declare `@mcp-abap-adt/interfaces-adt` `^15.0.0` if your package imports it, so
|
|
7
|
+
npm installs one copy: `npm ls @mcp-abap-adt/interfaces-adt` must show one
|
|
8
|
+
version. `@mcp-abap-adt/adt-strategies` 0.10.0 declares the same range.
|
|
9
|
+
|
|
10
|
+
## 1. `skipCount` is removed from the type - drop it
|
|
11
|
+
|
|
12
|
+
On 28.x a value above 0 was refused at run time, answered `ok: false` without a
|
|
13
|
+
request; the server accepts `skipCount` on an external breakpoint and ignores
|
|
14
|
+
it, so the first hit stops (measured on premise (2026-10-11), BASIS 816). The
|
|
15
|
+
compiler now refuses the field. Delete it, and count hits yourself if you need
|
|
16
|
+
the n-th one.
|
|
17
|
+
|
|
18
|
+
```typescript
|
|
19
|
+
// before
|
|
20
|
+
{ kind: 'line', uri, skipCount: 2 }
|
|
21
|
+
// after
|
|
22
|
+
{ kind: 'line', uri }
|
|
23
|
+
```
|
|
24
|
+
|
|
25
|
+
## 2. `clientId` is available on every kind
|
|
26
|
+
|
|
27
|
+
`clientId` is the caller's tag. The server echoes it on every row of the answer,
|
|
28
|
+
placed and refused alike, and does not keep the request's order (the refused
|
|
29
|
+
rows came first; measured on premise (2026-10-11), BASIS 816). A line
|
|
30
|
+
breakpoint is renumbered as well, so pair answer rows with request rows by
|
|
31
|
+
`clientId`, not by position. Optional; a breakpoint without one sends nothing.
|
|
32
|
+
|
|
33
|
+
```typescript
|
|
34
|
+
await dbg.setBreakpoints(identity, [
|
|
35
|
+
{ kind: 'line', uri, clientId: 'first' },
|
|
36
|
+
{ kind: 'exception', exceptionClass, clientId: 'second' },
|
|
37
|
+
]);
|
|
38
|
+
```
|
|
39
|
+
|
|
40
|
+
## 3. A package that implements or mocks the contract
|
|
41
|
+
|
|
42
|
+
Breakpoint objects typed by `IDebuggerBreakpoint` take the new optional field
|
|
43
|
+
and lose `skipCount`; a mock or fixture that sets `skipCount` stops compiling.
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@mcp-abap-adt/adt-clients",
|
|
3
|
-
"version": "
|
|
3
|
+
"version": "29.0.0",
|
|
4
4
|
"description": "ADT clients for SAP ABAP systems - AdtClient and AdtRuntimeClient",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -117,7 +117,7 @@
|
|
|
117
117
|
"node": ">=18.0.0"
|
|
118
118
|
},
|
|
119
119
|
"dependencies": {
|
|
120
|
-
"@mcp-abap-adt/interfaces-adt": "^
|
|
120
|
+
"@mcp-abap-adt/interfaces-adt": "^15.0.0",
|
|
121
121
|
"@mcp-abap-adt/interfaces-adt-connection": "^2.0.0",
|
|
122
122
|
"@mcp-abap-adt/interfaces-network": "^2.0.0",
|
|
123
123
|
"@mcp-abap-adt/interfaces-utils": "^1.1.0",
|
|
@@ -127,7 +127,7 @@
|
|
|
127
127
|
},
|
|
128
128
|
"devDependencies": {
|
|
129
129
|
"@biomejs/biome": "^2.4.4",
|
|
130
|
-
"@mcp-abap-adt/adt-strategies": "^0.
|
|
130
|
+
"@mcp-abap-adt/adt-strategies": "^0.9.0",
|
|
131
131
|
"@mcp-abap-adt/auth-providers": "^5.0.1",
|
|
132
132
|
"@mcp-abap-adt/connection": "^10.0.2",
|
|
133
133
|
"@mcp-abap-adt/interfaces-auth": "^3.0.0",
|