@mcp-abap-adt/interfaces-adt 1.2.0 → 2.0.1

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
@@ -5,6 +5,89 @@ All notable changes to this project will be documented in this file.
5
5
  The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
6
6
  and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
7
7
 
8
+ ## [2.0.1] - 2026-09-22
9
+
10
+ ### Changed
11
+
12
+ - **A measurement asserted in 2.0.0 is retracted.** The documentation for
13
+ `readObjects` said a metadata read gets a representation carrying no
14
+ `tm:abap_object`, because the request names no `Accept`, and that positions
15
+ therefore could not be read from it however it was parsed.
16
+
17
+ Measured against an on-premise system on 2026-09-22 — the same URL with
18
+ `application/vnd.sap.adt.transportorganizer.v1+xml` and without it — the two
19
+ answers are byte for byte identical: 95411 bytes and 166 `tm:abap_object`
20
+ for a request, 55549 and 88 for a task. The header settles nothing.
21
+
22
+ The member stays, because the reason it exists does: `removeObject` requires
23
+ a position and nothing else here hands one back, which would leave a caller
24
+ parsing a transport document for a `tm:position` themselves. What it
25
+ promises is the answer — entries, each with its position as a value — and
26
+ not how an implementation obtains them. A contract is no place to assert
27
+ something about a wire that was not measured, and this one now says only
28
+ what must come back.
29
+
30
+ Documentation only; no type changed. `@mcp-abap-adt/adt-clients` corrected
31
+ the same claim in its own comments and API reference on 2026-09-21.
32
+
33
+ ## [2.0.0] - 2026-09-21
34
+
35
+ ### Changed
36
+
37
+ - **BREAKING: `IAdtTransportObjectActions` takes a fifth type parameter**,
38
+ `TObjects`, for the reading added below. Every implementation and every
39
+ declared use names it.
40
+
41
+ - **BREAKING: `removeObject` requires `object.position`.** It took
42
+ `IAbapObjectEntry` whole, where the field is optional, and the member took
43
+ the whole type because nothing said the server needed it. It does. Measured
44
+ against an on-premise system, 2026-09-21: 22 objects asked for by
45
+ `pgmid`/`type`/`name` alone each answered `200` with the usual echo
46
+ document, and re-reading the task found all 22 still on it. The same
47
+ documents carrying `tm:position` — nothing else added — removed every one,
48
+ 22 down to 0, each confirmed by a re-read.
49
+
50
+ The parameter is `IAbapObjectEntry & { position: string }` rather than a new
51
+ type: the field belongs to the entry, and what changes is that this member
52
+ insists on it. `addObject` still does not, because an entry that does not
53
+ exist yet has no position.
54
+
55
+ - **BREAKING: `createTask` requires `targetUser`**, and the options argument
56
+ with it. This shipped saying the server would decide whose task it is when
57
+ `tm:targetuser` was absent. It does not: the call without the attribute was
58
+ refused with `400 SCTS_ADT_MSG 009`, *"User does not exist in the system
59
+ (or locked)"* — two spaces, an empty name — and the same call carrying it
60
+ answered 200 and a task number. Measured on the same run.
61
+
62
+ Nothing below the caller can fill it in: `IAbapConnection` does not expose
63
+ who is authenticated, and finding out costs a second request.
64
+
65
+ ### Added
66
+
67
+ - **`readObjects`** — the objects a request or task holds, each with the
68
+ `tm:position` that `removeObject` now needs.
69
+
70
+ It is a separate member because it answers a separate thing: entries, each
71
+ with its position as a value, where a metadata read answers a document.
72
+
73
+ > **Retracted in 2.0.1.** This entry also claimed that a reader sending no
74
+ > `Accept` cannot answer it however its result is parsed. That was measured
75
+ > false the next day — the same URL with and without the header is byte for
76
+ > byte identical. See the 2.0.1 entry above.
77
+
78
+ Without it `removeObject` would require a value the package offers no way to
79
+ obtain, leaving a caller to assemble the request themselves — the layering
80
+ this package exists to prevent.
81
+
82
+ ### Why a major so soon after 1.2.0
83
+
84
+ 1.2.0 declared these members from captures of Eclipse and unit tests over the
85
+ documents it sent. Eclipse sends both attributes on every call, so nothing in
86
+ a capture could show that either was load-bearing. The first run against a
87
+ server found both. The contract is what was wrong, and a contract that permits
88
+ a call which cannot work is worse than one that forbids it: the old signatures
89
+ type-check today and fail — `createTask` at runtime, `removeObject` silently.
90
+
8
91
  ## [1.2.0] - 2026-09-21
9
92
 
10
93
  ### Added
package/README.md CHANGED
@@ -24,7 +24,52 @@ npm install @mcp-abap-adt/interfaces-adt
24
24
  | `token/`, `session/`, `serviceKey/`, `store/` | token providers and refreshers, stores and their error codes |
25
25
  | `validation/`, `Headers.ts` | header validation; `HEADER_SAP_*`, `HEADER_UAA_*`, `HEADER_BTP_DESTINATION`, `HEADER_MCP_DESTINATION`, `HEADER_MCP_URL`, `AUTH_TYPES`, `AuthType` |
26
26
 
27
- The contract rules — what a member answers, how a strategy is supplied, how a contract is built — are in [`docs/architecture/ARCHITECTURE.md`](../../docs/architecture/ARCHITECTURE.md). Domain-by-domain documentation with examples stays in the [`@mcp-abap-adt/interfaces` README](../interfaces/README.md); the contracts it describes are these. Contracts added after the split are documented here only — the facade is frozen at its 44.0.0 surface and does not export them.
27
+ The contract rules — what a member answers, how a strategy is supplied, how a contract is built — are in [`docs/architecture/ARCHITECTURE.md`](../../docs/architecture/ARCHITECTURE.md). Domain-by-domain documentation with examples stays in the [`@mcp-abap-adt/interfaces` README](../interfaces/README.md); the contracts it describes are these.
28
+
29
+ **The facade is pinned to its 44.0.0 surface, not frozen against additions.** This said the opposite until 2.0.0, and 45.1.0 had already disproved it: `IAbapObjectEntry` and `IAdtTransportObjectActions` were added here and re-exported there. `tools/check-surface.js` compares the built facade against `surface-44.0.0.txt` in both directions — nothing from 44.0.0 may disappear and nothing may appear — and an addition is made deliberate rather than impossible by being written into `tools/surface-added.txt`, one `<name> <kind>` per line. A symbol added here and not written there fails the check; a line written there for a symbol the facade does not export fails too.
30
+
31
+ ## The transport request's object list
32
+
33
+ `IAdtTransportObjectActions` and `IAbapObjectEntry` (`adt/IAdtTransport.ts`, since 1.2.0) declare what can be done to a request's object list and to its tasks: `removeObject`, `addObject`, `createTask`, `readActionLog`, `readObjects`.
34
+
35
+ They exist because deleting an ABAP object does not free its name. The CTS object-directory entry stays on the request that carried it, and until it is detached a create of the same name is refused with `CTS_WBO_API 019` — **even when that same request is passed as `corrNr`**. Without a way to detach one, the ways out are releasing the whole request, shipping everything else in it, or SE09 by hand.
36
+
37
+ Two of the signatures say things a capture cannot. 1.2.0 was declared from captures of Eclipse ADT, and Eclipse sends every attribute on every call, so nothing in a capture could show which of them the server needs. The first run against an on-premise system, 2026-09-21, found two that it does:
38
+
39
+ | call | what the server does |
40
+ |---|---|
41
+ | `createTask` without `tm:targetuser` | refused — `400 SCTS_ADT_MSG 009`, *"User&nbsp;&nbsp;does not exist in the system (or locked)"*: two spaces, because the owner resolved to an empty name |
42
+ | `removeObject` without `tm:position` | `200` with the usual echo document and **nothing removed** — 22 entries asked for by `pgmid`/`type`/`name` alone, 22 still on the task afterwards |
43
+
44
+ So `createTask` requires `targetUser` and `removeObject` requires `position`, and `readObjects` was added because otherwise the second would require a value this package offers no way to obtain — leaving a caller to parse a transport document themselves for a `tm:position`. It is its own member because it answers its own thing: entries, each with its position as a value, rather than a document. What an implementation sends to get them is its own business; the contract says what must come back.
45
+
46
+ `addObject` still takes an entry without a position — one that does not exist yet has none.
47
+
48
+ ## Migrating to 2.0.0
49
+
50
+ Three changes, all of them in `IAdtTransportObjectActions`. An implementation or a caller on 1.2.0 does this:
51
+
52
+ ```ts
53
+ // 1. Name the fifth type parameter: what readObjects answers.
54
+ type Actions = IAdtTransportObjectActions<
55
+ string, string, { number: string }, string[],
56
+ MyEntry[] // ← new
57
+ >;
58
+
59
+ // 2. Read the position rather than leaving it out.
60
+ const listed = await actions.readObjects(task); // ← new member
61
+ const entry = listed.ok
62
+ ? listed.getResult().value.find((o) => o.name === 'ZCL_X')
63
+ : undefined;
64
+ if (entry) await actions.removeObject(task, { ...entry });
65
+
66
+ // 3. Name the user the task is for.
67
+ await actions.createTask(request, { targetUser: 'DEVELOPER' });
68
+ ```
69
+
70
+ Both old call shapes compile against 1.2.0 and cannot work: `createTask(n)` throws where an implementation reads `options.targetUser`, and `removeObject(n, { name, type })` answers a success while removing nothing. That is why this is a major rather than a deprecation — there is no window in which the old shape does something useful.
71
+
72
+ `src/__typechecks__/transportObjectActions.ts` holds both wrong shapes as `@ts-expect-error`, so a future loosening stops compiling instead of shipping.
28
73
 
29
74
  ## Coming from `@mcp-abap-adt/interfaces`
30
75
 
@@ -132,7 +132,15 @@ export interface IAbapObjectEntry {
132
132
  pgmid?: string;
133
133
  /** `tm:obj_desc` — the description ADT shows beside the entry. */
134
134
  description?: string;
135
- /** `tm:position` — the entry's position in the task, e.g. `000025`. */
135
+ /**
136
+ * `tm:position` — the entry's position in the task, e.g. `000025`.
137
+ *
138
+ * Optional here because an entry being described is not always an entry
139
+ * being addressed: {@link IAdtTransportObjectActions.addObject} has no
140
+ * position to give, since the entry does not exist yet.
141
+ * {@link IAdtTransportObjectActions.removeObject} requires one, and says in
142
+ * its own words what happens without it.
143
+ */
136
144
  position?: string;
137
145
  }
138
146
  /**
@@ -152,19 +160,40 @@ export interface IAbapObjectEntry {
152
160
  * `removeObject` the ways out are releasing the whole request, shipping
153
161
  * everything else in it, or SE09.
154
162
  *
155
- * Four members and no composite: the order a caller uses them in, and what
156
- * they do when `addObject` is refused, is theirs.
163
+ * Five members and no composite: the order a caller uses them in, and what
164
+ * they do when `addObject` is refused, is theirs. One of them,
165
+ * {@link IAdtTransportObjectActions.readObjects}, is there because
166
+ * {@link IAdtTransportObjectActions.removeObject} needs a value nothing else
167
+ * here answers — which is a dependency between readings, not a composite.
157
168
  */
158
- export interface IAdtTransportObjectActions<TRemoved, TAdded, TTask, TActionLog> {
169
+ export interface IAdtTransportObjectActions<TRemoved, TAdded, TTask, TActionLog, TObjects> {
159
170
  /**
160
171
  * Detach one object from a request or task.
161
172
  *
162
173
  * Addressed at the **task** that holds the object: a request's objects live
163
- * on its tasks. The answer echoes the object it was asked about and says
164
- * nothing else, so {@link IAdtTransportObjectActions.readActionLog} is what
165
- * confirms the removal happened.
174
+ * on its tasks.
175
+ *
176
+ * **`position` is what identifies the entry, and the call does nothing
177
+ * without it.** This took `IAbapObjectEntry` whole when it shipped, which
178
+ * made the field optional. Measured against an on-premise system,
179
+ * 2026-09-21: 22 objects asked for by `pgmid`/`type`/`name` alone each
180
+ * answered `200` with the usual echo document, and a re-read of the task
181
+ * found all 22 still on it. The same documents carrying `tm:position` — and
182
+ * nothing else added — removed every one, 22 down to 0, each confirmed by a
183
+ * re-read.
184
+ *
185
+ * The number comes from
186
+ * {@link IAdtTransportObjectActions.readObjects}, which is the reading that
187
+ * carries it.
188
+ *
189
+ * The answer echoes the object it was asked about and says nothing else, so
190
+ * a `200` here is not evidence:
191
+ * {@link IAdtTransportObjectActions.readActionLog}, or a re-read of the
192
+ * object list, is what confirms the removal happened.
166
193
  */
167
- removeObject<E extends IAdtError = IAdtError>(transportNumber: string, object: IAbapObjectEntry, options?: IAdtOperationOptions<E>): Promise<IAdtResponse<TRemoved, E>>;
194
+ removeObject<E extends IAdtError = IAdtError>(transportNumber: string, object: IAbapObjectEntry & {
195
+ position: string;
196
+ }, options?: IAdtOperationOptions<E>): Promise<IAdtResponse<TRemoved, E>>;
168
197
  /**
169
198
  * Attach one object to a request or task.
170
199
  *
@@ -179,15 +208,53 @@ export interface IAdtTransportObjectActions<TRemoved, TAdded, TTask, TActionLog>
179
208
  *
180
209
  * The new task is itself a request resource: it reads, writes and releases
181
210
  * like one, and {@link IAdtTransportObjectActions.removeObject} addresses it
182
- * directly. With no `targetUser` the server decides whose task it is.
211
+ * directly.
212
+ *
213
+ * **`targetUser` is required, and that is measured.** This shipped saying
214
+ * the server would decide whose task it is when the attribute was absent.
215
+ * It does not: sent without `tm:targetuser` against an on-premise system,
216
+ * 2026-09-21, the owner resolved to an empty name and the call was refused
217
+ * with `400 SCTS_ADT_MSG 009`, *"User does not exist in the system (or
218
+ * locked)"* — two spaces, because the name was empty. The same call carrying
219
+ * the attribute answered 200 and a task number.
220
+ *
221
+ * No implementation can fill it in either. `IAbapConnection` does not say
222
+ * who is authenticated, and finding out costs a second request — which is
223
+ * what a member of this size does not do. So it is the caller's to name.
183
224
  */
184
- createTask<E extends IAdtError = IAdtError>(transportNumber: string, options?: {
185
- targetUser?: string;
225
+ createTask<E extends IAdtError = IAdtError>(transportNumber: string, options: {
226
+ targetUser: string;
186
227
  } & IAdtOperationOptions<E>): Promise<IAdtResponse<TTask, E>>;
187
228
  /**
188
229
  * What has happened to this request: created, object added, object deleted,
189
230
  * owner changed — one entry per event.
190
231
  */
191
232
  readActionLog<E extends IAdtError = IAdtError>(transportNumber: string, options?: IAdtOperationOptions<E>): Promise<IAdtResponse<TActionLog, E>>;
233
+ /**
234
+ * The objects a request or task holds, each with the `tm:position` that
235
+ * {@link IAdtTransportObjectActions.removeObject} needs.
236
+ *
237
+ * **A separate reading, not a separate request.** This member exists
238
+ * because `removeObject` requires a position and nothing else here hands
239
+ * one back: without it a caller has to parse a transport document
240
+ * themselves to find a `tm:position`, which is the layering this package
241
+ * exists to prevent. What it promises is therefore about the answer —
242
+ * entries, each with its position as a value — and not about how an
243
+ * implementation obtains them.
244
+ *
245
+ * **A claim that was here is retracted.** 2.0.0 said a metadata read gets a
246
+ * representation carrying no `tm:abap_object`, because the request names no
247
+ * `Accept`, and that positions therefore could not be read from it however
248
+ * it was parsed. Measured against an on-premise system, 2026-09-22 — the
249
+ * same URL with `application/vnd.sap.adt.transportorganizer.v1+xml` and
250
+ * without it — the two answers are byte for byte identical: 95411 bytes and
251
+ * 166 `tm:abap_object` for a request, 55549 and 88 for a task. The header
252
+ * settles nothing, and a contract is no place to assert something about a
253
+ * wire that was not measured.
254
+ *
255
+ * What an implementation sends is its own business either way. This says
256
+ * what must come back.
257
+ */
258
+ readObjects<E extends IAdtError = IAdtError>(transportNumber: string, options?: IAdtOperationOptions<E>): Promise<IAdtResponse<TObjects, E>>;
192
259
  }
193
260
  //# sourceMappingURL=IAdtTransport.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"IAdtTransport.d.ts","sourceRoot":"","sources":["../../src/adt/IAdtTransport.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,cAAc,CAAC;AACzD,OAAO,KAAK,EAAE,SAAS,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAE9D,MAAM,WAAW,sBAAsB;IACrC,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;;;;;;;;GASG;AACH,MAAM,WAAW,qBAAqB;IACpC,uFAAuF;IACvF,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,sFAAsF;AACtF,MAAM,WAAW,sBAAsB;IACrC,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED;;;;;;;GAOG;AACH,MAAM,WAAW,6BAA6B;IAC5C,4EAA4E;IAC5E,GAAG,EAAE,MAAM,CAAC;IACZ,6CAA6C;IAC7C,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,kFAAkF;IAClF,UAAU,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;CACpC;AAED,mFAAmF;AACnF,eAAO,MAAM,mCAAmC,yEACwB,CAAC;AAGzE,MAAM,WAAW,gBAAgB;IAC/B;;;;;;;;;;;;;;;OAeG;IACH,QAAQ,CAAC,EAAE,MAAM,CAAC;IAElB,WAAW,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,WAAW,GAAG,aAAa,CAAC;IAC5C,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,eAAe,CAAC,EAAE,MAAM,CAAC;CAC1B;AAGD;;;;;;;;;;;;GAYG;AACH,MAAM,WAAW,WAAW,CAAC,KAAK;IAChC;;;;;;;;;;;;;;;;OAgBG;IACH,IAAI,CAAC,OAAO,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,CAAC;CACtE;AAED;;;;;;;;;;;;;;;GAeG;AACH,MAAM,WAAW,gBAAgB;IAC/B,0DAA0D;IAC1D,IAAI,EAAE,MAAM,CAAC;IACb,0EAA0E;IAC1E,IAAI,EAAE,MAAM,CAAC;IACb;;;;;OAKG;IACH,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,kEAAkE;IAClE,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,uEAAuE;IACvE,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,MAAM,WAAW,0BAA0B,CACzC,QAAQ,EACR,MAAM,EACN,KAAK,EACL,UAAU;IAEV;;;;;;;OAOG;IACH,YAAY,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,EAC1C,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,gBAAgB,EACxB,OAAO,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAChC,OAAO,CAAC,YAAY,CAAC,QAAQ,EAAE,CAAC,CAAC,CAAC,CAAC;IACtC;;;;;;;OAOG;IACH,SAAS,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,EACvC,eAAe,EAAE,MAAM,EACvB,MAAM,EAAE,gBAAgB,EACxB,OAAO,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAChC,OAAO,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC,CAAC;IACpC;;;;;;OAMG;IACH,UAAU,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,EACxC,eAAe,EAAE,MAAM,EACvB,OAAO,CAAC,EAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAA;KAAE,GAAG,oBAAoB,CAAC,CAAC,CAAC,GAC1D,OAAO,CAAC,YAAY,CAAC,KAAK,EAAE,CAAC,CAAC,CAAC,CAAC;IACnC;;;OAGG;IACH,aAAa,CAAC,CAAC,SAAS,SAAS,GAAG,SAAS,EAC3C,eAAe,EAAE,MAAM,EACvB,OAAO,CAAC,EAAE,oBAAoB,CAAC,CAAC,CAAC,GAChC,OAAO,CAAC,YAAY,CAAC,UAAU,EAAE,CAAC,CAAC,CAAC,CAAC;CACzC"}
1
+ {"version":3,"file":"IAdtTransport.d.ts","sourceRoot":"","sources":["../../src/adt/IAdtTransport.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@mcp-abap-adt/interfaces-adt",
3
- "version": "1.2.0",
3
+ "version": "2.0.1",
4
4
  "description": "ADT contracts, the ABAP and Cloud ALM connections, and SAP/BTP configuration and authentication contracts",
5
5
  "main": "dist/index.js",
6
6
  "types": "dist/index.d.ts",