arc-1 1.3.0 → 1.5.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.
Files changed (279) hide show
  1. package/README.md +1 -1
  2. package/dist/adt/abapgit.d.ts.map +1 -1
  3. package/dist/adt/abapgit.js +64 -7
  4. package/dist/adt/abapgit.js.map +1 -1
  5. package/dist/adt/aunit.js +4 -4
  6. package/dist/adt/aunit.js.map +1 -1
  7. package/dist/adt/class-structure.d.ts +4 -2
  8. package/dist/adt/class-structure.d.ts.map +1 -1
  9. package/dist/adt/class-structure.js +18 -9
  10. package/dist/adt/class-structure.js.map +1 -1
  11. package/dist/adt/client.d.ts +18 -52
  12. package/dist/adt/client.d.ts.map +1 -1
  13. package/dist/adt/client.js +69 -92
  14. package/dist/adt/client.js.map +1 -1
  15. package/dist/adt/config.d.ts +5 -0
  16. package/dist/adt/config.d.ts.map +1 -1
  17. package/dist/adt/config.js.map +1 -1
  18. package/dist/adt/create-request.d.ts +4 -0
  19. package/dist/adt/create-request.d.ts.map +1 -0
  20. package/dist/adt/create-request.js +16 -0
  21. package/dist/adt/create-request.js.map +1 -0
  22. package/dist/adt/crud.d.ts +3 -3
  23. package/dist/adt/crud.d.ts.map +1 -1
  24. package/dist/adt/crud.js +28 -9
  25. package/dist/adt/crud.js.map +1 -1
  26. package/dist/adt/data-source-policy.d.ts +20 -8
  27. package/dist/adt/data-source-policy.d.ts.map +1 -1
  28. package/dist/adt/data-source-policy.js +55 -109
  29. package/dist/adt/data-source-policy.js.map +1 -1
  30. package/dist/adt/ddic-xml.d.ts +9 -0
  31. package/dist/adt/ddic-xml.d.ts.map +1 -1
  32. package/dist/adt/ddic-xml.js +17 -3
  33. package/dist/adt/ddic-xml.js.map +1 -1
  34. package/dist/adt/devtools.d.ts.map +1 -1
  35. package/dist/adt/devtools.js +10 -7
  36. package/dist/adt/devtools.js.map +1 -1
  37. package/dist/adt/diagnostics.d.ts +11 -9
  38. package/dist/adt/diagnostics.d.ts.map +1 -1
  39. package/dist/adt/diagnostics.js +88 -14
  40. package/dist/adt/diagnostics.js.map +1 -1
  41. package/dist/adt/enhancements.d.ts +7 -0
  42. package/dist/adt/enhancements.d.ts.map +1 -0
  43. package/dist/adt/enhancements.js +89 -0
  44. package/dist/adt/enhancements.js.map +1 -0
  45. package/dist/adt/errors.d.ts +21 -10
  46. package/dist/adt/errors.d.ts.map +1 -1
  47. package/dist/adt/errors.js +76 -54
  48. package/dist/adt/errors.js.map +1 -1
  49. package/dist/adt/features.d.ts.map +1 -1
  50. package/dist/adt/features.js +2 -0
  51. package/dist/adt/features.js.map +1 -1
  52. package/dist/adt/flp.d.ts.map +1 -1
  53. package/dist/adt/flp.js +5 -4
  54. package/dist/adt/flp.js.map +1 -1
  55. package/dist/adt/fm-signature.d.ts +1 -1
  56. package/dist/adt/fm-signature.d.ts.map +1 -1
  57. package/dist/adt/fm-signature.js +9 -1
  58. package/dist/adt/fm-signature.js.map +1 -1
  59. package/dist/adt/http-deadline.d.ts +2 -0
  60. package/dist/adt/http-deadline.d.ts.map +1 -1
  61. package/dist/adt/http-deadline.js.map +1 -1
  62. package/dist/adt/http.d.ts +12 -29
  63. package/dist/adt/http.d.ts.map +1 -1
  64. package/dist/adt/http.js +102 -95
  65. package/dist/adt/http.js.map +1 -1
  66. package/dist/adt/internal-data-operations.d.ts +3 -2
  67. package/dist/adt/internal-data-operations.d.ts.map +1 -1
  68. package/dist/adt/internal-data-operations.js +8 -1
  69. package/dist/adt/internal-data-operations.js.map +1 -1
  70. package/dist/adt/lock-object.d.ts +92 -0
  71. package/dist/adt/lock-object.d.ts.map +1 -0
  72. package/dist/adt/lock-object.js +195 -0
  73. package/dist/adt/lock-object.js.map +1 -0
  74. package/dist/adt/publish-state.d.ts +4 -0
  75. package/dist/adt/publish-state.d.ts.map +1 -0
  76. package/dist/adt/publish-state.js +61 -0
  77. package/dist/adt/publish-state.js.map +1 -0
  78. package/dist/adt/rap-generate.d.ts +5 -1
  79. package/dist/adt/rap-generate.d.ts.map +1 -1
  80. package/dist/adt/rap-generate.js +112 -100
  81. package/dist/adt/rap-generate.js.map +1 -1
  82. package/dist/adt/server-driven.d.ts +56 -13
  83. package/dist/adt/server-driven.d.ts.map +1 -1
  84. package/dist/adt/server-driven.js +114 -23
  85. package/dist/adt/server-driven.js.map +1 -1
  86. package/dist/adt/source-precondition.d.ts +3 -0
  87. package/dist/adt/source-precondition.d.ts.map +1 -0
  88. package/dist/adt/source-precondition.js +12 -0
  89. package/dist/adt/source-precondition.js.map +1 -0
  90. package/dist/adt/text-search.js +5 -5
  91. package/dist/adt/text-search.js.map +1 -1
  92. package/dist/adt/transport.d.ts +1 -2
  93. package/dist/adt/transport.d.ts.map +1 -1
  94. package/dist/adt/transport.js +20 -15
  95. package/dist/adt/transport.js.map +1 -1
  96. package/dist/adt/types.d.ts +21 -1
  97. package/dist/adt/types.d.ts.map +1 -1
  98. package/dist/adt/user-agent.d.ts +4 -0
  99. package/dist/adt/user-agent.d.ts.map +1 -0
  100. package/dist/adt/user-agent.js +11 -0
  101. package/dist/adt/user-agent.js.map +1 -0
  102. package/dist/adt/xml-entities.d.ts +3 -0
  103. package/dist/adt/xml-entities.d.ts.map +1 -0
  104. package/dist/adt/xml-entities.js +19 -0
  105. package/dist/adt/xml-entities.js.map +1 -0
  106. package/dist/adt/xml-parser.d.ts +7 -30
  107. package/dist/adt/xml-parser.d.ts.map +1 -1
  108. package/dist/adt/xml-parser.js +25 -54
  109. package/dist/adt/xml-parser.js.map +1 -1
  110. package/dist/authz/policy.d.ts.map +1 -1
  111. package/dist/authz/policy.js +2 -0
  112. package/dist/authz/policy.js.map +1 -1
  113. package/dist/cache/caching-layer.d.ts.map +1 -1
  114. package/dist/cache/caching-layer.js +5 -10
  115. package/dist/cache/caching-layer.js.map +1 -1
  116. package/dist/cli.js +1 -1
  117. package/dist/cli.js.map +1 -1
  118. package/dist/context/grep.d.ts +14 -0
  119. package/dist/context/grep.d.ts.map +1 -1
  120. package/dist/context/grep.js +49 -0
  121. package/dist/context/grep.js.map +1 -1
  122. package/dist/context/unit-surgery.d.ts +4 -2
  123. package/dist/context/unit-surgery.d.ts.map +1 -1
  124. package/dist/context/unit-surgery.js +54 -6
  125. package/dist/context/unit-surgery.js.map +1 -1
  126. package/dist/handlers/activate.d.ts.map +1 -1
  127. package/dist/handlers/activate.js +11 -20
  128. package/dist/handlers/activate.js.map +1 -1
  129. package/dist/handlers/diagnose.d.ts.map +1 -1
  130. package/dist/handlers/diagnose.js +11 -30
  131. package/dist/handlers/diagnose.js.map +1 -1
  132. package/dist/handlers/dispatch.d.ts.map +1 -1
  133. package/dist/handlers/dispatch.js +63 -8
  134. package/dist/handlers/dispatch.js.map +1 -1
  135. package/dist/handlers/editable-source.d.ts +6 -0
  136. package/dist/handlers/editable-source.d.ts.map +1 -0
  137. package/dist/handlers/editable-source.js +53 -0
  138. package/dist/handlers/editable-source.js.map +1 -0
  139. package/dist/handlers/feature-cache.d.ts +2 -0
  140. package/dist/handlers/feature-cache.d.ts.map +1 -1
  141. package/dist/handlers/feature-cache.js +8 -0
  142. package/dist/handlers/feature-cache.js.map +1 -1
  143. package/dist/handlers/hyperfocused.js +1 -1
  144. package/dist/handlers/hyperfocused.js.map +1 -1
  145. package/dist/handlers/lint.d.ts.map +1 -1
  146. package/dist/handlers/lint.js +13 -4
  147. package/dist/handlers/lint.js.map +1 -1
  148. package/dist/handlers/object-types.d.ts +2 -3
  149. package/dist/handlers/object-types.d.ts.map +1 -1
  150. package/dist/handlers/object-types.js +13 -5
  151. package/dist/handlers/object-types.js.map +1 -1
  152. package/dist/handlers/publish-failure.d.ts +7 -0
  153. package/dist/handlers/publish-failure.d.ts.map +1 -0
  154. package/dist/handlers/publish-failure.js +42 -0
  155. package/dist/handlers/publish-failure.js.map +1 -0
  156. package/dist/handlers/read.d.ts.map +1 -1
  157. package/dist/handlers/read.js +39 -9
  158. package/dist/handlers/read.js.map +1 -1
  159. package/dist/handlers/schemas.d.ts +45 -0
  160. package/dist/handlers/schemas.d.ts.map +1 -1
  161. package/dist/handlers/schemas.js +50 -7
  162. package/dist/handlers/schemas.js.map +1 -1
  163. package/dist/handlers/syntax.d.ts +5 -0
  164. package/dist/handlers/syntax.d.ts.map +1 -0
  165. package/dist/handlers/syntax.js +35 -0
  166. package/dist/handlers/syntax.js.map +1 -0
  167. package/dist/handlers/tool-descriptions.d.ts.map +1 -1
  168. package/dist/handlers/tool-descriptions.js +7 -5
  169. package/dist/handlers/tool-descriptions.js.map +1 -1
  170. package/dist/handlers/tool-registry.d.ts +4 -4
  171. package/dist/handlers/tool-registry.d.ts.map +1 -1
  172. package/dist/handlers/tool-registry.js +4 -0
  173. package/dist/handlers/tool-registry.js.map +1 -1
  174. package/dist/handlers/tools.d.ts +1 -16
  175. package/dist/handlers/tools.d.ts.map +1 -1
  176. package/dist/handlers/tools.js +44 -55
  177. package/dist/handlers/tools.js.map +1 -1
  178. package/dist/handlers/transport.d.ts.map +1 -1
  179. package/dist/handlers/transport.js +17 -3
  180. package/dist/handlers/transport.js.map +1 -1
  181. package/dist/handlers/write/class-edit.d.ts +16 -0
  182. package/dist/handlers/write/class-edit.d.ts.map +1 -0
  183. package/dist/handlers/write/class-edit.js +55 -0
  184. package/dist/handlers/write/class-edit.js.map +1 -0
  185. package/dist/handlers/write/class-surgery.d.ts +2 -2
  186. package/dist/handlers/write/class-surgery.d.ts.map +1 -1
  187. package/dist/handlers/write/class-surgery.js +189 -220
  188. package/dist/handlers/write/class-surgery.js.map +1 -1
  189. package/dist/handlers/write/context.d.ts +1 -8
  190. package/dist/handlers/write/context.d.ts.map +1 -1
  191. package/dist/handlers/write/create.d.ts.map +1 -1
  192. package/dist/handlers/write/create.js +11 -4
  193. package/dist/handlers/write/create.js.map +1 -1
  194. package/dist/handlers/write/metadata-update.d.ts +4 -0
  195. package/dist/handlers/write/metadata-update.d.ts.map +1 -0
  196. package/dist/handlers/write/metadata-update.js +58 -0
  197. package/dist/handlers/write/metadata-update.js.map +1 -0
  198. package/dist/handlers/write/rap.d.ts.map +1 -1
  199. package/dist/handlers/write/rap.js +132 -155
  200. package/dist/handlers/write/rap.js.map +1 -1
  201. package/dist/handlers/write/unit-surgery.d.ts +2 -2
  202. package/dist/handlers/write/unit-surgery.d.ts.map +1 -1
  203. package/dist/handlers/write/unit-surgery.js +58 -34
  204. package/dist/handlers/write/unit-surgery.js.map +1 -1
  205. package/dist/handlers/write/update-delete.d.ts.map +1 -1
  206. package/dist/handlers/write/update-delete.js +34 -82
  207. package/dist/handlers/write/update-delete.js.map +1 -1
  208. package/dist/handlers/write-helpers.d.ts +4 -3
  209. package/dist/handlers/write-helpers.d.ts.map +1 -1
  210. package/dist/handlers/write-helpers.js +135 -21
  211. package/dist/handlers/write-helpers.js.map +1 -1
  212. package/dist/handlers/write.d.ts.map +1 -1
  213. package/dist/handlers/write.js +13 -31
  214. package/dist/handlers/write.js.map +1 -1
  215. package/dist/lint/config-builder.d.ts +10 -1
  216. package/dist/lint/config-builder.d.ts.map +1 -1
  217. package/dist/lint/config-builder.js +4 -0
  218. package/dist/lint/config-builder.js.map +1 -1
  219. package/dist/lint/lint.d.ts +3 -1
  220. package/dist/lint/lint.d.ts.map +1 -1
  221. package/dist/lint/lint.js +2 -1
  222. package/dist/lint/lint.js.map +1 -1
  223. package/dist/public/read-only-client.d.ts +6 -0
  224. package/dist/public/read-only-client.d.ts.map +1 -0
  225. package/dist/public/read-only-client.js +66 -0
  226. package/dist/public/read-only-client.js.map +1 -0
  227. package/dist/public/testing.d.ts +4 -0
  228. package/dist/public/testing.d.ts.map +1 -1
  229. package/dist/public/testing.js +6 -0
  230. package/dist/public/testing.js.map +1 -1
  231. package/dist/public/types.d.ts +14 -15
  232. package/dist/public/types.d.ts.map +1 -1
  233. package/dist/server/audit.d.ts +6 -1
  234. package/dist/server/audit.d.ts.map +1 -1
  235. package/dist/server/audit.js.map +1 -1
  236. package/dist/server/config.d.ts.map +1 -1
  237. package/dist/server/config.js +9 -2
  238. package/dist/server/config.js.map +1 -1
  239. package/dist/server/deny-actions.d.ts +2 -1
  240. package/dist/server/deny-actions.d.ts.map +1 -1
  241. package/dist/server/deny-actions.js +13 -2
  242. package/dist/server/deny-actions.js.map +1 -1
  243. package/dist/server/http.d.ts.map +1 -1
  244. package/dist/server/http.js +7 -5
  245. package/dist/server/http.js.map +1 -1
  246. package/dist/server/logger.d.ts +3 -3
  247. package/dist/server/logger.d.ts.map +1 -1
  248. package/dist/server/logger.js +7 -7
  249. package/dist/server/logger.js.map +1 -1
  250. package/dist/server/multi-target-basic-auth.d.ts.map +1 -1
  251. package/dist/server/multi-target-basic-auth.js +1 -0
  252. package/dist/server/multi-target-basic-auth.js.map +1 -1
  253. package/dist/server/multi-target-runtime.d.ts.map +1 -1
  254. package/dist/server/multi-target-runtime.js +1 -0
  255. package/dist/server/multi-target-runtime.js.map +1 -1
  256. package/dist/server/oauth-redirect-policy.d.ts +13 -0
  257. package/dist/server/oauth-redirect-policy.d.ts.map +1 -0
  258. package/dist/server/oauth-redirect-policy.js +21 -0
  259. package/dist/server/oauth-redirect-policy.js.map +1 -0
  260. package/dist/server/plugin-loader.d.ts.map +1 -1
  261. package/dist/server/plugin-loader.js +1 -3
  262. package/dist/server/plugin-loader.js.map +1 -1
  263. package/dist/server/safe-http-client.d.ts +8 -14
  264. package/dist/server/safe-http-client.d.ts.map +1 -1
  265. package/dist/server/safe-http-client.js +51 -73
  266. package/dist/server/safe-http-client.js.map +1 -1
  267. package/dist/server/server.d.ts +5 -4
  268. package/dist/server/server.d.ts.map +1 -1
  269. package/dist/server/server.js +36 -27
  270. package/dist/server/server.js.map +1 -1
  271. package/dist/server/types.d.ts +6 -4
  272. package/dist/server/types.d.ts.map +1 -1
  273. package/dist/server/types.js +2 -0
  274. package/dist/server/types.js.map +1 -1
  275. package/dist/version.d.ts +3 -0
  276. package/dist/version.d.ts.map +1 -0
  277. package/dist/version.js +3 -0
  278. package/dist/version.js.map +1 -0
  279. package/package.json +15 -15
@@ -1 +1 @@
1
- {"version":3,"file":"fm-signature.js","sourceRoot":"","sources":["../../src/adt/fm-signature.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"fm-signature.js","sourceRoot":"","sources":["../../src/adt/fm-signature.ts"],"names":[],"mappings":"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"}
@@ -13,6 +13,8 @@ export interface AdtRequestOptions extends RequestDeadlineOptions {
13
13
  probe?: boolean;
14
14
  /** Explicit post-content-decoding response allowance for a guarded data operation. */
15
15
  responseBudget?: DataResponseBudget;
16
+ /** Disable availability/DB-session replays when a mutation may already have completed. */
17
+ retryTransientErrors?: boolean;
16
18
  /** Optional request-local SAP send allowance; CSRF and retries share the same counter. */
17
19
  attemptBudget?: RequestAttemptBudget;
18
20
  /** Internal control requests need headers only; do not buffer their bodies through Connectivity. */
@@ -1 +1 @@
1
- {"version":3,"file":"http-deadline.d.ts","sourceRoot":"","sources":["../../src/adt/http-deadline.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAEnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAExE,MAAM,WAAW,sBAAsB;IACrC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAkB,SAAQ,sBAAsB;IAC/D,oFAAoF;IACpF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,2EAA2E;IAC3E,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,wFAAwF;IACxF,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,sFAAsF;IACtF,cAAc,CAAC,EAAE,kBAAkB,CAAC;IACpC,0FAA0F;IAC1F,aAAa,CAAC,EAAE,oBAAoB,CAAC;IACrC,oGAAoG;IACpG,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,8GAA8G;AAC9G,wBAAgB,qBAAqB,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,iBAAiB,GAAG,SAAS,CAIhG;AA+BD,wBAAgB,uBAAuB,CAAC,OAAO,CAAC,EAAE,sBAAsB,GAAG,IAAI,CAS9E;AAED,kEAAkE;AAClE,wBAAgB,mBAAmB,CAAC,OAAO,CAAC,EAAE,sBAAsB,GAAG,WAAW,GAAG,SAAS,CAQ7F;AAED,8FAA8F;AAC9F,wBAAsB,sBAAsB,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAoBvG;AAED,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,CAAC,CAAC,CAS/G;AAED,gFAAgF;AAChF,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,sBAAsB,GAAG,WAAW,CAK3E;AAED,qFAAqF;AACrF,wBAAsB,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAY/G"}
1
+ {"version":3,"file":"http-deadline.d.ts","sourceRoot":"","sources":["../../src/adt/http-deadline.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAE,kBAAkB,EAAE,MAAM,0BAA0B,CAAC;AAEnE,OAAO,KAAK,EAAE,oBAAoB,EAAE,MAAM,6BAA6B,CAAC;AAExE,MAAM,WAAW,sBAAsB;IACrC,MAAM,CAAC,EAAE,WAAW,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,iBAAkB,SAAQ,sBAAsB;IAC/D,oFAAoF;IACpF,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,2EAA2E;IAC3E,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,wFAAwF;IACxF,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,sFAAsF;IACtF,cAAc,CAAC,EAAE,kBAAkB,CAAC;IACpC,0FAA0F;IAC1F,oBAAoB,CAAC,EAAE,OAAO,CAAC;IAC/B,0FAA0F;IAC1F,aAAa,CAAC,EAAE,oBAAoB,CAAC;IACrC,oGAAoG;IACpG,mBAAmB,CAAC,EAAE,OAAO,CAAC;CAC/B;AAED,8GAA8G;AAC9G,wBAAgB,qBAAqB,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,iBAAiB,GAAG,SAAS,CAIhG;AA+BD,wBAAgB,uBAAuB,CAAC,OAAO,CAAC,EAAE,sBAAsB,GAAG,IAAI,CAS9E;AAED,kEAAkE;AAClE,wBAAgB,mBAAmB,CAAC,OAAO,CAAC,EAAE,sBAAsB,GAAG,WAAW,GAAG,SAAS,CAQ7F;AAED,8FAA8F;AAC9F,wBAAsB,sBAAsB,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,CAAC,CAAC,CAoBvG;AAED,wBAAgB,wBAAwB,CAAC,CAAC,EAAE,SAAS,EAAE,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,CAAC,CAAC,CAS/G;AAED,gFAAgF;AAChF,wBAAgB,aAAa,CAAC,OAAO,CAAC,EAAE,sBAAsB,GAAG,WAAW,CAK3E;AAED,qFAAqF;AACrF,wBAAsB,wBAAwB,CAAC,OAAO,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,sBAAsB,GAAG,OAAO,CAAC,IAAI,CAAC,CAY/G"}
@@ -1 +1 @@
1
- {"version":3,"file":"http-deadline.js","sourceRoot":"","sources":["../../src/adt/http-deadline.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"http-deadline.js","sourceRoot":"","sources":["../../src/adt/http-deadline.ts"],"names":[],"mappings":"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"}
@@ -1,31 +1,9 @@
1
1
  /**
2
- * ADT HTTP Transport for ARC-1.
3
- *
4
- * Handles all HTTP communication with SAP ADT REST API:
5
- * - CSRF token lifecycle (fetch, cache, refresh on 403)
6
- * - Cookie-based and Basic auth
7
- * - Stateful sessions (lock → modify → unlock must share session)
8
- * - Automatic retry on session expiry
9
- *
10
- * Design decisions:
11
- *
12
- * 1. CSRF token fetch uses HEAD /sap/bc/adt/core/discovery with "X-CSRF-Token: fetch".
13
- * HEAD is ~5s vs ~56s for GET on slow systems (learned from Go version benchmarks).
14
- *
15
- * 2. Modifying requests (POST/PUT/DELETE/PATCH) auto-include CSRF token.
16
- * On 403, token is refreshed and request is retried once.
17
- * (Pattern from both abap-adt-api and fr0ster implementations.)
18
- *
19
- * 3. Stateful sessions use "X-sap-adt-sessiontype: stateful" header.
20
- * Lock/modify/unlock must use the same session cookies.
21
- * withStatefulSession() ensures session isolation and closes the backend
22
- * context when the operation finishes.
23
- *
24
- * 4. sap-client and sap-language are added to every request as query params.
25
- * This is an SAP convention, not ADT-specific.
26
- *
27
- * 5. Uses native fetch() with undici dispatchers for proxy and TLS configuration.
28
- * No external HTTP dependencies — undici ships with Node.js 22+.
2
+ * SAP ADT HTTP transport: authentication, cookies, CSRF and bounded retries.
3
+ * Modifying requests fetch a token when needed and refresh it once on HTTP 403.
4
+ * Stateful writes share cookies and one proxy connection through lock/save/unlock,
5
+ * then close their SAP context. Requests carry the configured client and language.
6
+ * Uses undici dispatchers for direct, proxy and custom-TLS connections.
29
7
  */
30
8
  import type { BTPProxyConfig } from '@arc-mcp/xsuaa-auth/btp';
31
9
  import { type AdtRequestOptions } from './http-deadline.js';
@@ -40,6 +18,7 @@ export interface AdtHttpConfig {
40
18
  password?: string;
41
19
  client?: string;
42
20
  language?: string;
21
+ userAgent?: string;
43
22
  insecure?: boolean;
44
23
  /** Gzip non-empty data-preview POST bodies for approved WAF compatibility. */
45
24
  gzipDataPreviewBody?: boolean;
@@ -104,9 +83,12 @@ interface AuthenticationAttemptState {
104
83
  export declare class AdtHttpClient {
105
84
  private discoveryMap;
106
85
  private negotiatedHeaders;
86
+ private readonly userAgent;
107
87
  private csrfToken;
108
88
  private dispatcher;
109
89
  private longOperationDispatcher;
90
+ private statefulProxyClient;
91
+ private reuseStatefulProxyClient;
110
92
  private config;
111
93
  /**
112
94
  * Cookie jar — stores Set-Cookie headers from responses and sends them back.
@@ -169,9 +151,10 @@ export declare class AdtHttpClient {
169
151
  private handleResponse;
170
152
  /**
171
153
  * Fetch CSRF token from SAP.
172
- * Uses HEAD /sap/bc/adt/core/discovery for speed.
154
+ * Uses core discovery first, then legacy discovery when the core resource is unavailable.
155
+ * Returns the endpoint that supplied the token for startup diagnostics.
173
156
  */
174
- fetchCsrfToken(options?: AdtRequestOptions): Promise<void>;
157
+ fetchCsrfToken(options?: AdtRequestOptions): Promise<string>;
175
158
  /**
176
159
  * Detect "database connection is not open" error from SAP.
177
160
  * This happens when a work process loses its HANA DB connection.
@@ -1 +1 @@
1
- {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/adt/http.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA4BG;AAEH,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,yBAAyB,CAAC;AAS9D,OAAO,EACL,KAAK,iBAAiB,EAOvB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC;AAEhD,YAAY,EAAE,iBAAiB,EAAE,MAAM,oBAAoB,CAAC;AAmE5D,oCAAoC;AACpC,MAAM,MAAM,WAAW,GAAG,UAAU,GAAG,WAAW,GAAG,SAAS,CAAC;AAE/D,4CAA4C;AAC5C,MAAM,WAAW,aAAa;IAC5B,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,8EAA8E;IAC9E,mBAAmB,CAAC,EAAE,OAAO,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IACjC,6DAA6D;IAC7D,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,yEAAyE;IACzE,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,+CAA+C;IAC/C,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B;;;;;;OAMG;IACH,mBAAmB,CAAC,EAAE,MAAM,CAAC;IAC7B,4EAA4E;IAC5E,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB;;;;;OAKG;IACH,mBAAmB,CAAC,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC;IAC5C;;;;OAIG;IACH,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,+EAA+E;IAC/E,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,2EAA2E;IAC3E,iBAAiB,CAAC,EAAE,OAAO,CAAC;IAC5B,yEAAyE;IACzE,cAAc,CAAC,EAAE,CAAC,OAAO,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,UAAU,EAAE,GAAG,CAAA;KAAE,KAAK,IAAI,CAAC;IACtE,0DAA0D;IAC1D,SAAS,CAAC,EAAE,SAAS,CAAC;CACvB;AAED,wCAAwC;AACxC,MAAM,WAAW,WAAW;IAC1B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,CAAC;IAChC,IAAI,EAAE,MAAM,CAAC;CACd;AAED,UAAU,0BAA0B;IAClC,QAAQ,EAAE,OAAO,CAAC;IAClB,IAAI,EAAE,OAAO,CAAC,IAAI,CAAC,CAAC;CACrB;AAED;;;;GAIG;AACH,qBAAa,aAAa;IACxB,OAAO,CAAC,YAAY,CAAoC;IACxD,OAAO,CAAC,iBAAiB,CAAqE;IAC9F,OAAO,CAAC,SAAS,CAAM;IACvB,OAAO,CAAC,UAAU,CAAyB;IAC3C,OAAO,CAAC,uBAAuB,CAAyB;IACxD,OAAO,CAAC,MAAM,CAAgB;IAC9B;;;;;;;;;;OAUG;IACH,OAAO,CAAC,SAAS,CAAkC;IACnD,qEAAqE;IACrE,OAAO,CAAC,iBAAiB,CAAS;IAClC,sFAAsF;IACtF,OAAO,CAAC,cAAc,CAAS;IAC/B,4FAA4F;IAC5F,OAAO,CAAC,QAAQ,CAAC,0BAA0B,CAA6B;IACxE,YAAY,MAAM,EAAE,aAAa,EAAE,0BAA0B,CAAC,EAAE,0BAA0B,EAWzF;IAED,yEAAyE;IACzE,eAAe,CAAC,GAAG,EAAE,GAAG,CAAC,MAAM,EAAE,MAAM,EAAE,CAAC,GAAG,IAAI,CAEhD;IAED,6GAA6G;IAC7G,gBAAgB,IAAI,OAAO,CAE1B;IAED,sHAAsH;IACtH,kBAAkB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,SAAS,CAEnD;IAED;;mGAE+F;IAC/F,IAAI,SAAS,IAAI,SAAS,GAAG,SAAS,CAErC;IAED,kBAAkB;IACZ,GAAG,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,CAE3G;IAED,yDAAyD;IACnD,IAAI,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,CAE5G;IAED,yCAAyC;IACnC,IAAI,CACR,IAAI,EAAE,MAAM,EACZ,IAAI,CAAC,EAAE,MAAM,EACb,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,WAAW,CAAC,CAEtB;IAED,wCAAwC;IAClC,GAAG,CACP,IAAI,EAAE,MAAM,EACZ,IAAI,EAAE,MAAM,EACZ,WAAW,CAAC,EAAE,MAAM,EACpB,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAChC,OAAO,CAAC,EAAE,iBAAiB,GAC1B,OAAO,CAAC,WAAW,CAAC,CAEtB;IAED,2CAA2C;IACrC,MAAM,CAAC,IAAI,EAAE,MAAM,EAAE,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,CAAC,EAAE,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,WAAW,CAAC,CAE9G;IAED;;;;;;OAMG;IACG,mBAAmB,CAAC,CAAC,EAAE,EAAE,EAAE,CAAC,MAAM,EAAE,aAAa,KAAK,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,CAAC,CAAC,CAAC,CAgBlF;IAED,2FAA2F;YAC7E,oBAAoB;IA+BlC,iFAAiF;YACnE,OAAO;YA0CP,kCAAkC;IAwBhD,gEAAgE;YAClD,YAAY;IA4gB1B,OAAO,CAAC,uBAAuB;IAO/B,OAAO,CAAC,wBAAwB;IAiBhC,OAAO,CAAC,kBAAkB;IAW1B,yEAAyE;IACzE,OAAO,CAAC,cAAc;IAyCtB;;;OAGG;IACG,cAAc,CAAC,OAAO,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,IAAI,CAAC,CAqI/D;IAED;;;;OAIG;IACH,OAAO,CAAC,mBAAmB;IAI3B,OAAO,CAAC,gBAAgB;IAIxB;;;;;;;;;;;;;;;;;;;;OAoBG;IACH,OAAO,CAAC,mBAAmB;IAO3B;;;;;;;OAOG;IACH,gBAAgB,IAAI,IAAI,CAGvB;IAED;;;OAGG;IACH,OAAO,CAAC,uBAAuB;IAqB/B;;;OAGG;IACH,OAAO,CAAC,YAAY;IAKpB;;;;;;;;;;;;;;;;OAgBG;IACH,OAAO,CAAC,mBAAmB;IAc3B,OAAO,CAAC,YAAY;IAgBpB,mEAAmE;IACnE,OAAO,CAAC,QAAQ;IAkBhB,2FAA2F;IAC3F,OAAO,CAAC,eAAe;IAsBvB;;;;;;;;;;;OAWG;YACW,OAAO;IAyCrB;;;;;;;;;;;;;;;;OAgBG;YACW,cAAc;CAsE7B;AAOD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,eAAe,CAC7B,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,EACjC,UAAU,EAAE,MAAM,GACjB;IAAE,OAAO,EAAE,MAAM,CAAC;IAAC,MAAM,EAAE,QAAQ,GAAG,UAAU,CAAA;CAAE,CAoBpD"}
1
+ {"version":3,"file":"http.d.ts","sourceRoot":"","sources":["../../src/adt/http.ts"],"names":[],"mappings":"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"}
package/dist/adt/http.js CHANGED
@@ -1,31 +1,9 @@
1
1
  /**
2
- * ADT HTTP Transport for ARC-1.
3
- *
4
- * Handles all HTTP communication with SAP ADT REST API:
5
- * - CSRF token lifecycle (fetch, cache, refresh on 403)
6
- * - Cookie-based and Basic auth
7
- * - Stateful sessions (lock → modify → unlock must share session)
8
- * - Automatic retry on session expiry
9
- *
10
- * Design decisions:
11
- *
12
- * 1. CSRF token fetch uses HEAD /sap/bc/adt/core/discovery with "X-CSRF-Token: fetch".
13
- * HEAD is ~5s vs ~56s for GET on slow systems (learned from Go version benchmarks).
14
- *
15
- * 2. Modifying requests (POST/PUT/DELETE/PATCH) auto-include CSRF token.
16
- * On 403, token is refreshed and request is retried once.
17
- * (Pattern from both abap-adt-api and fr0ster implementations.)
18
- *
19
- * 3. Stateful sessions use "X-sap-adt-sessiontype: stateful" header.
20
- * Lock/modify/unlock must use the same session cookies.
21
- * withStatefulSession() ensures session isolation and closes the backend
22
- * context when the operation finishes.
23
- *
24
- * 4. sap-client and sap-language are added to every request as query params.
25
- * This is an SAP convention, not ADT-specific.
26
- *
27
- * 5. Uses native fetch() with undici dispatchers for proxy and TLS configuration.
28
- * No external HTTP dependencies — undici ships with Node.js 22+.
2
+ * SAP ADT HTTP transport: authentication, cookies, CSRF and bounded retries.
3
+ * Modifying requests fetch a token when needed and refresh it once on HTTP 403.
4
+ * Stateful writes share cookies and one proxy connection through lock/save/unlock,
5
+ * then close their SAP context. Requests carry the configured client and language.
6
+ * Uses undici dispatchers for direct, proxy and custom-TLS connections.
29
7
  */
30
8
  import { Agent, Client } from 'undici';
31
9
  import { getCurrentContext } from '../server/context.js';
@@ -38,6 +16,7 @@ import { AdtApiError, AdtNetworkError, AdtResponseLimitError } from './errors.js
38
16
  import { awaitWithinRequestBudget, requestBudgetSignal, requestSignal, sleepWithinRequestBudget, throwIfRequestCancelled, withoutResponseBudget, } from './http-deadline.js';
39
17
  import { prepareDataPreviewWireBody } from './http-wire-body.js';
40
18
  import { fetchWithAttemptBudget } from './request-attempt-budget.js';
19
+ import { resolveSapUserAgent } from './user-agent.js';
41
20
  /**
42
21
  * Opt-in wire-level debug logging.
43
22
  *
@@ -99,9 +78,13 @@ function buildHttpDebugFields(reqHeaders, reqBody, respHeaders, respBody) {
99
78
  export class AdtHttpClient {
100
79
  discoveryMap = new Map();
101
80
  negotiatedHeaders = new Map();
81
+ userAgent;
102
82
  csrfToken = '';
103
83
  dispatcher;
104
84
  longOperationDispatcher;
85
+ statefulProxyClient;
86
+ // Owned only by a withStatefulSession clone, including its final stateless close request.
87
+ reuseStatefulProxyClient = false;
105
88
  config;
106
89
  /**
107
90
  * Cookie jar — stores Set-Cookie headers from responses and sends them back.
@@ -123,6 +106,7 @@ export class AdtHttpClient {
123
106
  authenticationAttemptState;
124
107
  constructor(config, authenticationAttemptState) {
125
108
  this.config = config;
109
+ this.userAgent = resolveSapUserAgent(config.userAgent);
126
110
  this.authenticationAttemptState = authenticationAttemptState ?? { rejected: false, tail: Promise.resolve() };
127
111
  // Set up undici dispatcher for TLS configuration (non-proxy mode only).
128
112
  // Proxy requests use a dedicated Client connected to the connectivity proxy
@@ -188,11 +172,18 @@ export class AdtHttpClient {
188
172
  sessionClient.cookieJar = new Map(this.cookieJar);
189
173
  sessionClient.discoveryMap = this.discoveryMap;
190
174
  sessionClient.negotiatedHeaders = new Map(this.negotiatedHeaders);
175
+ sessionClient.reuseStatefulProxyClient = true;
191
176
  try {
192
177
  return await fn(sessionClient);
193
178
  }
194
179
  finally {
195
180
  await sessionClient.closeStatefulSession();
181
+ try {
182
+ await sessionClient.statefulProxyClient?.close();
183
+ }
184
+ catch {
185
+ logger.warn('Failed to close stateful Connectivity proxy client.');
186
+ }
196
187
  }
197
188
  }
198
189
  /** Close the SAP application context without changing the completed operation's result. */
@@ -361,6 +352,7 @@ export class AdtHttpClient {
361
352
  const url = this.buildUrl(path);
362
353
  const httpStart = Date.now();
363
354
  // Per-request guards to prevent infinite retry loops
355
+ const retryTransientErrors = options?.retryTransientErrors !== false;
364
356
  let negotiationRetried = false;
365
357
  let authRetried = false;
366
358
  let retried429 = false;
@@ -374,7 +366,10 @@ export class AdtHttpClient {
374
366
  // work process. If that WP has a broken HANA connection, every request fails
375
367
  // with "database connection is not open". Fix: clear the session to force
376
368
  // ICM to assign a different work process on retry.
377
- if (response.status === 500 && this.isDbConnectionError(responseBody) && !this.dbRetryInProgress) {
369
+ if (retryTransientErrors &&
370
+ response.status === 500 &&
371
+ this.isDbConnectionError(responseBody) &&
372
+ !this.dbRetryInProgress) {
378
373
  this.dbRetryInProgress = true;
379
374
  try {
380
375
  logger.emitAudit({
@@ -426,11 +421,9 @@ export class AdtHttpClient {
426
421
  }
427
422
  }
428
423
  // Handle 503 Service Unavailable — ICM thread/MPI exhaustion or WP overload.
429
- // Retry ALL methods: a 503 means ICM rejected the request before it reached a work
430
- // process, so the operation never executed — retrying is safe even for POST/PUT/DELETE.
424
+ // Legacy retries remain the default; ambiguous mutations can disable transient replay.
431
425
  // Retry happens INSIDE the semaphore slot to avoid increasing load on an overloaded system.
432
- // Honors RFC 7231 Retry-After header when present; falls back to 1-2 s jitter otherwise.
433
- if (response.status === 503) {
426
+ if (response.status === 503 && retryTransientErrors) {
434
427
  const { delayMs: jitterMs, source } = parseRetryAfter(response.headers.get('retry-after'), 1000 + Math.random() * 1000);
435
428
  logger.emitAudit({
436
429
  timestamp: new Date().toISOString(),
@@ -459,13 +452,9 @@ export class AdtHttpClient {
459
452
  return this.handleResponse(retryResp.status, retryResp.headers, retryBody, path);
460
453
  }
461
454
  // Handle 429 Too Many Requests — emitted by SAP Web Dispatcher, BTP API
462
- // Management, or any upstream gateway throttling us. Like 503, the request did
463
- // not reach a SAP work process, so retrying ALL methods is safe (gateway-level
464
- // rejection, never partial execution). Honors RFC 7231 Retry-After when present;
465
- // falls back to 1-2 s jitter. Single retry only — per-request `retried429` guard
466
- // prevents loops. If the upstream is still throttling on the second attempt, we
467
- // surface the 429 to the caller for them to back off at the agent/LLM layer.
468
- if (response.status === 429 && !retried429) {
455
+ // Management, or any upstream gateway throttling us. Honors Retry-After when present;
456
+ // otherwise wait 1-2 s. Surface a repeated 429 without a third attempt.
457
+ if (response.status === 429 && !retried429 && retryTransientErrors) {
469
458
  retried429 = true;
470
459
  const { delayMs: jitterMs, source } = parseRetryAfter(response.headers.get('retry-after'), 1000 + Math.random() * 1000);
471
460
  logger.emitAudit({
@@ -768,10 +757,10 @@ export class AdtHttpClient {
768
757
  /** Handle response: throw on error status, return normalized response */
769
758
  handleResponse(status, headers, body, path) {
770
759
  const contentType = headers.get('content-type')?.toLowerCase();
771
- const isCoreDiscovery = path.split('?', 1)[0] === '/sap/bc/adt/core/discovery';
760
+ const isDiscovery = ['/sap/bc/adt/core/discovery', '/sap/bc/adt/discovery'].includes(path.split('?', 1)[0]);
772
761
  if (status === 200 &&
773
762
  path.startsWith('/sap/bc/adt/') &&
774
- (contentType?.startsWith('text/html') || isCoreDiscovery) &&
763
+ (contentType?.startsWith('text/html') || isDiscovery) &&
775
764
  looksLikeLoginPage(body)) {
776
765
  if (this.isCookieAuthMode()) {
777
766
  this.clearCookiesAndMark();
@@ -798,11 +787,12 @@ export class AdtHttpClient {
798
787
  }
799
788
  /**
800
789
  * Fetch CSRF token from SAP.
801
- * Uses HEAD /sap/bc/adt/core/discovery for speed.
790
+ * Uses core discovery first, then legacy discovery when the core resource is unavailable.
791
+ * Returns the endpoint that supplied the token for startup diagnostics.
802
792
  */
803
793
  async fetchCsrfToken(options) {
804
794
  throwIfRequestCancelled(options);
805
- const url = this.buildUrl('/sap/bc/adt/core/discovery');
795
+ let path = '/sap/bc/adt/core/discovery';
806
796
  const headers = {
807
797
  'X-CSRF-Token': 'fetch',
808
798
  Accept: '*/*',
@@ -832,14 +822,47 @@ export class AdtHttpClient {
832
822
  if (this.cookiesCleared && this.isCookieAuthMode()) {
833
823
  this.reloadCookiesFromSource();
834
824
  }
835
- // Include existing cookies (config + jar, jar wins) so the session is maintained.
836
- const cookieHeader = this.composeCookieHeader();
837
- if (cookieHeader) {
838
- headers.Cookie = cookieHeader;
839
- }
825
+ // A token only counts as proof when the response itself succeeded: SAP returns one on
826
+ // failures too, and the old code accepted a token from a 401 — masking the auth error.
827
+ const usableToken = (response) => {
828
+ const token = response.headers.get('x-csrf-token')?.trim();
829
+ return response.ok && token && token.toLowerCase() !== 'required' ? token : undefined;
830
+ };
831
+ // Every probe keeps the same identity, current cookies and caller's request budget.
832
+ const probe = async (method) => {
833
+ const cookieHeader = this.composeCookieHeader();
834
+ if (cookieHeader)
835
+ headers.Cookie = cookieHeader;
836
+ else
837
+ delete headers.Cookie;
838
+ const started = Date.now();
839
+ const response = await this.doFetch(this.buildUrl(path), method, headers, undefined, options);
840
+ this.storeCookies(response);
841
+ logger.emitAudit({
842
+ timestamp: new Date().toISOString(),
843
+ level: 'debug',
844
+ event: 'http_csrf_fetch',
845
+ method,
846
+ path,
847
+ statusCode: response.status,
848
+ durationMs: Date.now() - started,
849
+ success: !!usableToken(response),
850
+ adtMode: this.config.sessionType ?? 'unspecified',
851
+ hasContext: /(?:^|;\s*)sap-contextid=/.test(cookieHeader ?? ''),
852
+ });
853
+ if (method === 'GET' && response.status === 200 && !usableToken(response)) {
854
+ // Preserve the login-page check even when an old handler reports HTTP 200.
855
+ this.handleResponse(response.status, response.headers, await response.text(), path);
856
+ }
857
+ // Only headers are needed; release GET bodies before a fallback or return.
858
+ if (!response.bodyUsed)
859
+ await response.body?.cancel();
860
+ return response;
861
+ };
840
862
  try {
841
- let response = await this.doFetch(url, 'HEAD', headers, undefined, options);
842
- // Retry once on 503 — ICM may be temporarily overloaded (thread/MPI exhaustion)
863
+ // HEAD avoids downloading discovery when supported; refused HEADs fall back to GET below.
864
+ let response = await probe('HEAD');
865
+ // Retry once on 503 — ICM may be temporarily overloaded (thread/MPI exhaustion).
843
866
  if (response.status === 503) {
844
867
  const jitterMs = 1000 + Math.random() * 1000;
845
868
  logger.emitAudit({
@@ -847,61 +870,41 @@ export class AdtHttpClient {
847
870
  level: 'warn',
848
871
  event: 'http_request',
849
872
  method: 'HEAD',
850
- path: '/sap/bc/adt/core/discovery',
873
+ path,
851
874
  statusCode: 503,
852
875
  durationMs: 0,
853
876
  errorBody: `CSRF fetch got 503 — retrying in ${Math.round(jitterMs)}ms`,
854
877
  });
855
878
  await sleepWithinRequestBudget(jitterMs, options);
856
- response = await this.doFetch(url, 'HEAD', headers, undefined, options);
879
+ response = await probe('HEAD');
857
880
  }
858
- // Preserve any session established by HEAD before deciding whether GET is needed.
859
- // The fallback request must use the same SAP session as the eventual write.
860
- this.storeCookies(response);
861
- const headToken = response.headers.get('x-csrf-token');
862
- const headSucceededWithoutToken = response.ok && (!headToken || headToken.toLowerCase() === 'required');
863
- // Some systems reject HEAD with 403; others accept it but omit the token. In both
864
- // cases retry with GET, which is the broadly supported CSRF bootstrap method and
865
- // also exposes a real authentication failure instead of a misleading HTTP 200 error.
866
- if (response.status === 403 || headSucceededWithoutToken) {
867
- const fallbackCookieHeader = this.composeCookieHeader();
868
- if (fallbackCookieHeader) {
869
- headers.Cookie = fallbackCookieHeader;
870
- }
871
- else {
872
- delete headers.Cookie;
873
- }
874
- logger.emitAudit({
875
- timestamp: new Date().toISOString(),
876
- level: response.status === 403 ? 'warn' : 'debug',
877
- event: 'http_request',
878
- method: 'HEAD',
879
- path: '/sap/bc/adt/core/discovery',
880
- statusCode: response.status,
881
- durationMs: 0,
882
- errorBody: response.status === 403
883
- ? 'CSRF HEAD returned 403 — retrying with GET (S/4HANA Public Cloud compat)'
884
- : 'CSRF HEAD returned no usable token — retrying with GET',
885
- });
886
- response = await this.doFetch(url, 'GET', headers, undefined, options);
881
+ // The tested 7.50/7.58/8.16 systems returned HEAD 400 with a token; GET returned 200.
882
+ // Retry these HEAD refusals or a successful response without a token on the same path.
883
+ // A successful HEAD with a usable token remains the one-request fast path.
884
+ if ([400, 403, 405].includes(response.status) || (response.ok && !usableToken(response))) {
885
+ response = await probe('GET');
887
886
  }
888
- // Store cookies from the final CSRF response — critical for session correlation.
889
- this.storeCookies(response);
890
- const token = response.headers.get('x-csrf-token');
891
- if (!token || token === 'Required') {
887
+ // Older ADT handlers may return an empty 200 for a missing core resource (#817).
888
+ // A real auth/server failure must not be hidden by trying another endpoint.
889
+ if (response.status === 404 || response.status === 405 || (response.ok && !usableToken(response))) {
890
+ path = '/sap/bc/adt/discovery';
891
+ response = await probe('GET');
892
+ }
893
+ const token = usableToken(response);
894
+ if (!token) {
892
895
  if (response.status === 401) {
893
- if (this.isCookieAuthMode()) {
896
+ if (this.isCookieAuthMode())
894
897
  this.clearCookiesAndMark();
895
- }
896
- this.notifyUnauthorized('/sap/bc/adt/core/discovery');
897
- throw new AdtApiError(`Authentication failed (401) using sap-client=${this.config.client ?? '100'}. Check SAP_CLIENT, SAP_USER, and SAP_PASSWORD.`, 401, '/sap/bc/adt/core/discovery');
898
+ this.notifyUnauthorized(path);
899
+ throw new AdtApiError(`Authentication failed (401) using sap-client=${this.config.client ?? '100'}. Check SAP_CLIENT, SAP_USER, and SAP_PASSWORD.`, 401, path);
898
900
  }
899
901
  if (response.status === 403) {
900
- throw new AdtApiError(`Access forbidden (403) using sap-client=${this.config.client ?? '100'}. Check user authorizations.`, 403, '/sap/bc/adt/core/discovery');
902
+ throw new AdtApiError(`Access forbidden (403) using sap-client=${this.config.client ?? '100'}. Check user authorizations.`, 403, path);
901
903
  }
902
- throw new AdtApiError(`No CSRF token in response (HTTP ${response.status})`, response.status, '/sap/bc/adt/core/discovery');
904
+ throw new AdtApiError(`No CSRF token in response (HTTP ${response.status})`, response.status, path);
903
905
  }
904
906
  this.csrfToken = token;
907
+ return path;
905
908
  }
906
909
  catch (err) {
907
910
  if (err instanceof AdtApiError || err instanceof AdtNetworkError)
@@ -1097,7 +1100,7 @@ export class AdtHttpClient {
1097
1100
  // Empty unless the MCP client sent a valid `traceparent`; ARC-1 never originates a trace.
1098
1101
  // Injected here because doFetch is the single outbound choke point (the proxy branch below
1099
1102
  // spreads these headers too).
1100
- const outbound = { ...headers, ...traceHeaders(getCurrentContext()) };
1103
+ const outbound = { ...headers, 'User-Agent': this.userAgent, ...traceHeaders(getCurrentContext()) };
1101
1104
  let response;
1102
1105
  if (this.config.btpProxy) {
1103
1106
  response = await this.doProxyRequest(url, method, outbound, body, options);
@@ -1169,8 +1172,9 @@ export class AdtHttpClient {
1169
1172
  if (proxy.locationId) {
1170
1173
  proxyHeaders['SAP-Connectivity-SCC-Location_ID'] = proxy.locationId;
1171
1174
  }
1172
- const clientOptions = options?.fetchTimeoutMs === undefined ? undefined : { headersTimeout: 0, bodyTimeout: 0 };
1173
- const client = new Client(proxyOrigin, clientOptions);
1175
+ // Streaming/discard adapters own their client and may close or destroy it.
1176
+ const reuseProxyClient = this.reuseStatefulProxyClient && options?.responseBudget === undefined && !options?.discardResponseBody;
1177
+ const client = reuseProxyClient ? (this.statefulProxyClient ??= new Client(proxyOrigin)) : new Client(proxyOrigin);
1174
1178
  let responseOwnsClient = false;
1175
1179
  try {
1176
1180
  const signal = requestSignal(options);
@@ -1182,6 +1186,9 @@ export class AdtHttpClient {
1182
1186
  headers: proxyHeaders,
1183
1187
  body: body ?? undefined,
1184
1188
  signal,
1189
+ // A reused client's first request must not determine later requests' parser timeouts.
1190
+ // The per-request abort signal still enforces fetchTimeoutMs and the caller deadline.
1191
+ ...(options?.fetchTimeoutMs === undefined ? {} : { headersTimeout: 0, bodyTimeout: 0 }),
1185
1192
  });
1186
1193
  const isNullBodyStatus = resp.statusCode === 204 || resp.statusCode === 205 || resp.statusCode === 304;
1187
1194
  responseOwnsClient =
@@ -1189,7 +1196,7 @@ export class AdtHttpClient {
1189
1196
  return await connectivityProxyResponse(resp, client, signal, options?.responseBudget !== undefined, options?.discardResponseBody);
1190
1197
  }
1191
1198
  finally {
1192
- if (!responseOwnsClient)
1199
+ if (!reuseProxyClient && !responseOwnsClient)
1193
1200
  await client.close();
1194
1201
  }
1195
1202
  }