arc-1 1.5.2 → 1.7.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 (472) hide show
  1. package/README.md +26 -16
  2. package/bin/arc1-source.js +83 -0
  3. package/dist/adt/accept-fallback.d.ts +4 -0
  4. package/dist/adt/accept-fallback.d.ts.map +1 -0
  5. package/dist/adt/accept-fallback.js +27 -0
  6. package/dist/adt/accept-fallback.js.map +1 -0
  7. package/dist/adt/api-release.d.ts +40 -0
  8. package/dist/adt/api-release.d.ts.map +1 -0
  9. package/dist/adt/api-release.js +224 -0
  10. package/dist/adt/api-release.js.map +1 -0
  11. package/dist/adt/application-log.d.ts +36 -0
  12. package/dist/adt/application-log.d.ts.map +1 -0
  13. package/dist/adt/application-log.js +143 -0
  14. package/dist/adt/application-log.js.map +1 -0
  15. package/dist/adt/authorization-trace.d.ts.map +1 -1
  16. package/dist/adt/authorization-trace.js +2 -1
  17. package/dist/adt/authorization-trace.js.map +1 -1
  18. package/dist/adt/class-structure.d.ts +2 -1
  19. package/dist/adt/class-structure.d.ts.map +1 -1
  20. package/dist/adt/class-structure.js +28 -10
  21. package/dist/adt/class-structure.js.map +1 -1
  22. package/dist/adt/client.d.ts +12 -6
  23. package/dist/adt/client.d.ts.map +1 -1
  24. package/dist/adt/client.js +32 -49
  25. package/dist/adt/client.js.map +1 -1
  26. package/dist/adt/codeintel.d.ts +9 -23
  27. package/dist/adt/codeintel.d.ts.map +1 -1
  28. package/dist/adt/codeintel.js +14 -34
  29. package/dist/adt/codeintel.js.map +1 -1
  30. package/dist/adt/ddic-xml.d.ts +5 -3
  31. package/dist/adt/ddic-xml.d.ts.map +1 -1
  32. package/dist/adt/ddic-xml.js +14 -0
  33. package/dist/adt/ddic-xml.js.map +1 -1
  34. package/dist/adt/devtools.d.ts +8 -1
  35. package/dist/adt/devtools.d.ts.map +1 -1
  36. package/dist/adt/devtools.js +94 -40
  37. package/dist/adt/devtools.js.map +1 -1
  38. package/dist/adt/diagnostics.d.ts +2 -0
  39. package/dist/adt/diagnostics.d.ts.map +1 -1
  40. package/dist/adt/diagnostics.js +10 -8
  41. package/dist/adt/diagnostics.js.map +1 -1
  42. package/dist/adt/enhancement-impl.d.ts +125 -0
  43. package/dist/adt/enhancement-impl.d.ts.map +1 -0
  44. package/dist/adt/enhancement-impl.js +408 -0
  45. package/dist/adt/enhancement-impl.js.map +1 -0
  46. package/dist/adt/enhancements.d.ts.map +1 -1
  47. package/dist/adt/enhancements.js +4 -2
  48. package/dist/adt/enhancements.js.map +1 -1
  49. package/dist/adt/enho-filter.d.ts +49 -0
  50. package/dist/adt/enho-filter.d.ts.map +1 -0
  51. package/dist/adt/enho-filter.js +229 -0
  52. package/dist/adt/enho-filter.js.map +1 -0
  53. package/dist/adt/errors.d.ts +5 -1
  54. package/dist/adt/errors.d.ts.map +1 -1
  55. package/dist/adt/errors.js +32 -8
  56. package/dist/adt/errors.js.map +1 -1
  57. package/dist/adt/features.d.ts +3 -9
  58. package/dist/adt/features.d.ts.map +1 -1
  59. package/dist/adt/features.js +24 -8
  60. package/dist/adt/features.js.map +1 -1
  61. package/dist/adt/feed-schema.d.ts +32 -0
  62. package/dist/adt/feed-schema.d.ts.map +1 -0
  63. package/dist/adt/feed-schema.js +123 -0
  64. package/dist/adt/feed-schema.js.map +1 -0
  65. package/dist/adt/fm-parameter-docs.d.ts +7 -0
  66. package/dist/adt/fm-parameter-docs.d.ts.map +1 -0
  67. package/dist/adt/fm-parameter-docs.js +134 -0
  68. package/dist/adt/fm-parameter-docs.js.map +1 -0
  69. package/dist/adt/fm-signature.d.ts +8 -1
  70. package/dist/adt/fm-signature.d.ts.map +1 -1
  71. package/dist/adt/fm-signature.js +37 -28
  72. package/dist/adt/fm-signature.js.map +1 -1
  73. package/dist/adt/http-deadline.d.ts.map +1 -1
  74. package/dist/adt/http-deadline.js +4 -1
  75. package/dist/adt/http-deadline.js.map +1 -1
  76. package/dist/adt/http-retry-after.d.ts +20 -0
  77. package/dist/adt/http-retry-after.d.ts.map +1 -0
  78. package/dist/adt/http-retry-after.js +37 -0
  79. package/dist/adt/http-retry-after.js.map +1 -0
  80. package/dist/adt/http.d.ts +7 -20
  81. package/dist/adt/http.d.ts.map +1 -1
  82. package/dist/adt/http.js +112 -135
  83. package/dist/adt/http.js.map +1 -1
  84. package/dist/adt/include-expansion.d.ts +143 -0
  85. package/dist/adt/include-expansion.d.ts.map +1 -0
  86. package/dist/adt/include-expansion.js +475 -0
  87. package/dist/adt/include-expansion.js.map +1 -0
  88. package/dist/adt/internal-data-operations.d.ts +3 -3
  89. package/dist/adt/internal-data-operations.d.ts.map +1 -1
  90. package/dist/adt/internal-data-operations.js +9 -2
  91. package/dist/adt/internal-data-operations.js.map +1 -1
  92. package/dist/adt/legacy-content-handler.d.ts +2 -0
  93. package/dist/adt/legacy-content-handler.d.ts.map +1 -1
  94. package/dist/adt/legacy-content-handler.js +13 -1
  95. package/dist/adt/legacy-content-handler.js.map +1 -1
  96. package/dist/adt/package-contents.d.ts +5 -0
  97. package/dist/adt/package-contents.d.ts.map +1 -1
  98. package/dist/adt/package-contents.js +31 -0
  99. package/dist/adt/package-contents.js.map +1 -1
  100. package/dist/adt/rap-generate.d.ts +2 -4
  101. package/dist/adt/rap-generate.d.ts.map +1 -1
  102. package/dist/adt/rap-generate.js +2 -4
  103. package/dist/adt/rap-generate.js.map +1 -1
  104. package/dist/adt/revision-feed.d.ts +8 -0
  105. package/dist/adt/revision-feed.d.ts.map +1 -0
  106. package/dist/adt/revision-feed.js +108 -0
  107. package/dist/adt/revision-feed.js.map +1 -0
  108. package/dist/adt/security-session-gate.d.ts +23 -0
  109. package/dist/adt/security-session-gate.d.ts.map +1 -0
  110. package/dist/adt/security-session-gate.js +56 -0
  111. package/dist/adt/security-session-gate.js.map +1 -0
  112. package/dist/adt/server-driven.d.ts +12 -1
  113. package/dist/adt/server-driven.d.ts.map +1 -1
  114. package/dist/adt/server-driven.js +22 -4
  115. package/dist/adt/server-driven.js.map +1 -1
  116. package/dist/adt/source-diff.d.ts +4 -1
  117. package/dist/adt/source-diff.d.ts.map +1 -1
  118. package/dist/adt/source-diff.js +5 -3
  119. package/dist/adt/source-diff.js.map +1 -1
  120. package/dist/adt/stored-text/chunks.d.ts +8 -0
  121. package/dist/adt/stored-text/chunks.d.ts.map +1 -0
  122. package/dist/adt/stored-text/chunks.js +55 -0
  123. package/dist/adt/stored-text/chunks.js.map +1 -0
  124. package/dist/adt/stored-text/decoder.d.ts +31 -0
  125. package/dist/adt/stored-text/decoder.d.ts.map +1 -0
  126. package/dist/adt/stored-text/decoder.js +319 -0
  127. package/dist/adt/stored-text/decoder.js.map +1 -0
  128. package/dist/adt/stored-text/errors.d.ts +10 -0
  129. package/dist/adt/stored-text/errors.d.ts.map +1 -0
  130. package/dist/adt/stored-text/errors.js +10 -0
  131. package/dist/adt/stored-text/errors.js.map +1 -0
  132. package/dist/adt/stored-text/index.d.ts +7 -0
  133. package/dist/adt/stored-text/index.d.ts.map +1 -0
  134. package/dist/adt/stored-text/index.js +6 -0
  135. package/dist/adt/stored-text/index.js.map +1 -0
  136. package/dist/adt/stored-text/key.d.ts +3 -0
  137. package/dist/adt/stored-text/key.d.ts.map +1 -0
  138. package/dist/adt/stored-text/key.js +23 -0
  139. package/dist/adt/stored-text/key.js.map +1 -0
  140. package/dist/adt/stored-text/reader.d.ts +52 -0
  141. package/dist/adt/stored-text/reader.d.ts.map +1 -0
  142. package/dist/adt/stored-text/reader.js +142 -0
  143. package/dist/adt/stored-text/reader.js.map +1 -0
  144. package/dist/adt/stored-text/source.d.ts +5 -0
  145. package/dist/adt/stored-text/source.d.ts.map +1 -0
  146. package/dist/adt/stored-text/source.js +284 -0
  147. package/dist/adt/stored-text/source.js.map +1 -0
  148. package/dist/adt/stored-text/types.d.ts +38 -0
  149. package/dist/adt/stored-text/types.d.ts.map +1 -0
  150. package/dist/adt/stored-text/types.js +2 -0
  151. package/dist/adt/stored-text/types.js.map +1 -0
  152. package/dist/adt/structure-hierarchy.d.ts.map +1 -1
  153. package/dist/adt/structure-hierarchy.js +11 -27
  154. package/dist/adt/structure-hierarchy.js.map +1 -1
  155. package/dist/adt/syntax-batch.d.ts +66 -0
  156. package/dist/adt/syntax-batch.d.ts.map +1 -0
  157. package/dist/adt/syntax-batch.js +115 -0
  158. package/dist/adt/syntax-batch.js.map +1 -0
  159. package/dist/adt/table-index.d.ts +23 -0
  160. package/dist/adt/table-index.d.ts.map +1 -0
  161. package/dist/adt/table-index.js +69 -0
  162. package/dist/adt/table-index.js.map +1 -0
  163. package/dist/adt/table-query.d.ts +4 -2
  164. package/dist/adt/table-query.d.ts.map +1 -1
  165. package/dist/adt/table-query.js +37 -10
  166. package/dist/adt/table-query.js.map +1 -1
  167. package/dist/adt/table-settings.d.ts +67 -0
  168. package/dist/adt/table-settings.d.ts.map +1 -0
  169. package/dist/adt/table-settings.js +207 -0
  170. package/dist/adt/table-settings.js.map +1 -0
  171. package/dist/adt/text-elements.d.ts +7 -1
  172. package/dist/adt/text-elements.d.ts.map +1 -1
  173. package/dist/adt/text-elements.js +67 -25
  174. package/dist/adt/text-elements.js.map +1 -1
  175. package/dist/adt/text-part-changes.d.ts +4 -0
  176. package/dist/adt/text-part-changes.d.ts.map +1 -0
  177. package/dist/adt/text-part-changes.js +43 -0
  178. package/dist/adt/text-part-changes.js.map +1 -0
  179. package/dist/adt/transport-diff.d.ts +16 -25
  180. package/dist/adt/transport-diff.d.ts.map +1 -1
  181. package/dist/adt/transport-diff.js +201 -103
  182. package/dist/adt/transport-diff.js.map +1 -1
  183. package/dist/adt/transport-review-budget.d.ts +15 -0
  184. package/dist/adt/transport-review-budget.d.ts.map +1 -0
  185. package/dist/adt/transport-review-budget.js +57 -0
  186. package/dist/adt/transport-review-budget.js.map +1 -0
  187. package/dist/adt/transport.d.ts +1 -1
  188. package/dist/adt/transport.d.ts.map +1 -1
  189. package/dist/adt/transport.js +4 -3
  190. package/dist/adt/transport.js.map +1 -1
  191. package/dist/adt/types.d.ts +10 -4
  192. package/dist/adt/types.d.ts.map +1 -1
  193. package/dist/adt/user-agent.d.ts +1 -1
  194. package/dist/adt/where-used-native.d.ts +22 -0
  195. package/dist/adt/where-used-native.d.ts.map +1 -0
  196. package/dist/adt/where-used-native.js +111 -0
  197. package/dist/adt/where-used-native.js.map +1 -0
  198. package/dist/adt/xml-parser.d.ts +6 -36
  199. package/dist/adt/xml-parser.d.ts.map +1 -1
  200. package/dist/adt/xml-parser.js +28 -235
  201. package/dist/adt/xml-parser.js.map +1 -1
  202. package/dist/aff/validator.d.ts.map +1 -1
  203. package/dist/aff/validator.js +8 -2
  204. package/dist/aff/validator.js.map +1 -1
  205. package/dist/authz/policy.d.ts.map +1 -1
  206. package/dist/authz/policy.js +10 -2
  207. package/dist/authz/policy.js.map +1 -1
  208. package/dist/cache/sqlite-driver.d.ts +24 -0
  209. package/dist/cache/sqlite-driver.d.ts.map +1 -0
  210. package/dist/cache/sqlite-driver.js +59 -0
  211. package/dist/cache/sqlite-driver.js.map +1 -0
  212. package/dist/cache/sqlite.d.ts +4 -2
  213. package/dist/cache/sqlite.d.ts.map +1 -1
  214. package/dist/cache/sqlite.js +5 -4
  215. package/dist/cache/sqlite.js.map +1 -1
  216. package/dist/cli.js +4 -1
  217. package/dist/cli.js.map +1 -1
  218. package/dist/context/grep.d.ts +2 -0
  219. package/dist/context/grep.d.ts.map +1 -1
  220. package/dist/context/grep.js +8 -7
  221. package/dist/context/grep.js.map +1 -1
  222. package/dist/context/line-range.d.ts +6 -0
  223. package/dist/context/line-range.d.ts.map +1 -0
  224. package/dist/context/line-range.js +23 -0
  225. package/dist/context/line-range.js.map +1 -0
  226. package/dist/extract-sap-cookies.js +1 -0
  227. package/dist/extract-sap-cookies.js.map +1 -1
  228. package/dist/handlers/activate.d.ts.map +1 -1
  229. package/dist/handlers/activate.js +69 -7
  230. package/dist/handlers/activate.js.map +1 -1
  231. package/dist/handlers/activation-results.d.ts.map +1 -1
  232. package/dist/handlers/activation-results.js +9 -1
  233. package/dist/handlers/activation-results.js.map +1 -1
  234. package/dist/handlers/api-release-fields.d.ts +23 -0
  235. package/dist/handlers/api-release-fields.d.ts.map +1 -0
  236. package/dist/handlers/api-release-fields.js +21 -0
  237. package/dist/handlers/api-release-fields.js.map +1 -0
  238. package/dist/handlers/application-log-input.d.ts +32 -0
  239. package/dist/handlers/application-log-input.d.ts.map +1 -0
  240. package/dist/handlers/application-log-input.js +34 -0
  241. package/dist/handlers/application-log-input.js.map +1 -0
  242. package/dist/handlers/application-log.d.ts +4 -0
  243. package/dist/handlers/application-log.d.ts.map +1 -0
  244. package/dist/handlers/application-log.js +14 -0
  245. package/dist/handlers/application-log.js.map +1 -0
  246. package/dist/handlers/cds-hints.d.ts +2 -2
  247. package/dist/handlers/cds-hints.d.ts.map +1 -1
  248. package/dist/handlers/cds-hints.js +21 -63
  249. package/dist/handlers/cds-hints.js.map +1 -1
  250. package/dist/handlers/context.d.ts.map +1 -1
  251. package/dist/handlers/context.js +7 -3
  252. package/dist/handlers/context.js.map +1 -1
  253. package/dist/handlers/diagnose.d.ts.map +1 -1
  254. package/dist/handlers/diagnose.js +10 -1
  255. package/dist/handlers/diagnose.js.map +1 -1
  256. package/dist/handlers/dispatch.d.ts.map +1 -1
  257. package/dist/handlers/dispatch.js +54 -9
  258. package/dist/handlers/dispatch.js.map +1 -1
  259. package/dist/handlers/dump-filter-inputs.d.ts +38 -0
  260. package/dist/handlers/dump-filter-inputs.d.ts.map +1 -0
  261. package/dist/handlers/dump-filter-inputs.js +44 -0
  262. package/dist/handlers/dump-filter-inputs.js.map +1 -0
  263. package/dist/handlers/expanded-read.d.ts +24 -0
  264. package/dist/handlers/expanded-read.d.ts.map +1 -0
  265. package/dist/handlers/expanded-read.js +56 -0
  266. package/dist/handlers/expanded-read.js.map +1 -0
  267. package/dist/handlers/feature-cache.d.ts +11 -3
  268. package/dist/handlers/feature-cache.d.ts.map +1 -1
  269. package/dist/handlers/feature-cache.js +57 -3
  270. package/dist/handlers/feature-cache.js.map +1 -1
  271. package/dist/handlers/function-parameter-language.d.ts +5 -0
  272. package/dist/handlers/function-parameter-language.d.ts.map +1 -0
  273. package/dist/handlers/function-parameter-language.js +19 -0
  274. package/dist/handlers/function-parameter-language.js.map +1 -0
  275. package/dist/handlers/function-processing.d.ts +5 -0
  276. package/dist/handlers/function-processing.d.ts.map +1 -1
  277. package/dist/handlers/function-processing.js +5 -0
  278. package/dist/handlers/function-processing.js.map +1 -1
  279. package/dist/handlers/hyperfocused.d.ts +1 -1
  280. package/dist/handlers/hyperfocused.d.ts.map +1 -1
  281. package/dist/handlers/hyperfocused.js +2 -1
  282. package/dist/handlers/hyperfocused.js.map +1 -1
  283. package/dist/handlers/long-text-input.d.ts +113 -0
  284. package/dist/handlers/long-text-input.d.ts.map +1 -0
  285. package/dist/handlers/long-text-input.js +113 -0
  286. package/dist/handlers/long-text-input.js.map +1 -0
  287. package/dist/handlers/long-text.d.ts +5 -0
  288. package/dist/handlers/long-text.d.ts.map +1 -0
  289. package/dist/handlers/long-text.js +122 -0
  290. package/dist/handlers/long-text.js.map +1 -0
  291. package/dist/handlers/manage.d.ts.map +1 -1
  292. package/dist/handlers/manage.js +7 -23
  293. package/dist/handlers/manage.js.map +1 -1
  294. package/dist/handlers/navigate.d.ts.map +1 -1
  295. package/dist/handlers/navigate.js +8 -3
  296. package/dist/handlers/navigate.js.map +1 -1
  297. package/dist/handlers/object-types.d.ts.map +1 -1
  298. package/dist/handlers/object-types.js +31 -7
  299. package/dist/handlers/object-types.js.map +1 -1
  300. package/dist/handlers/query-input.d.ts +50 -0
  301. package/dist/handlers/query-input.d.ts.map +1 -0
  302. package/dist/handlers/query-input.js +59 -0
  303. package/dist/handlers/query-input.js.map +1 -0
  304. package/dist/handlers/query-tool.d.ts +11 -0
  305. package/dist/handlers/query-tool.d.ts.map +1 -0
  306. package/dist/handlers/query-tool.js +99 -0
  307. package/dist/handlers/query-tool.js.map +1 -0
  308. package/dist/handlers/query.d.ts +1 -1
  309. package/dist/handlers/query.d.ts.map +1 -1
  310. package/dist/handlers/query.js +7 -1
  311. package/dist/handlers/query.js.map +1 -1
  312. package/dist/handlers/read.d.ts +1 -0
  313. package/dist/handlers/read.d.ts.map +1 -1
  314. package/dist/handlers/read.js +119 -14
  315. package/dist/handlers/read.js.map +1 -1
  316. package/dist/handlers/schemas.d.ts +57 -4
  317. package/dist/handlers/schemas.d.ts.map +1 -1
  318. package/dist/handlers/schemas.js +140 -17
  319. package/dist/handlers/schemas.js.map +1 -1
  320. package/dist/handlers/search.d.ts.map +1 -1
  321. package/dist/handlers/search.js +10 -6
  322. package/dist/handlers/search.js.map +1 -1
  323. package/dist/handlers/syntax.d.ts.map +1 -1
  324. package/dist/handlers/syntax.js +8 -0
  325. package/dist/handlers/syntax.js.map +1 -1
  326. package/dist/handlers/table-type-fields.d.ts +33 -0
  327. package/dist/handlers/table-type-fields.d.ts.map +1 -0
  328. package/dist/handlers/table-type-fields.js +22 -0
  329. package/dist/handlers/table-type-fields.js.map +1 -0
  330. package/dist/handlers/tool-descriptions.d.ts.map +1 -1
  331. package/dist/handlers/tool-descriptions.js +8 -3
  332. package/dist/handlers/tool-descriptions.js.map +1 -1
  333. package/dist/handlers/tool-registry.d.ts +5 -5
  334. package/dist/handlers/tool-registry.d.ts.map +1 -1
  335. package/dist/handlers/tool-registry.js +10 -7
  336. package/dist/handlers/tool-registry.js.map +1 -1
  337. package/dist/handlers/tools.d.ts +1 -1
  338. package/dist/handlers/tools.d.ts.map +1 -1
  339. package/dist/handlers/tools.js +99 -101
  340. package/dist/handlers/tools.js.map +1 -1
  341. package/dist/handlers/transport-review.d.ts +5 -0
  342. package/dist/handlers/transport-review.d.ts.map +1 -0
  343. package/dist/handlers/transport-review.js +108 -0
  344. package/dist/handlers/transport-review.js.map +1 -0
  345. package/dist/handlers/transport.d.ts.map +1 -1
  346. package/dist/handlers/transport.js +3 -58
  347. package/dist/handlers/transport.js.map +1 -1
  348. package/dist/handlers/where-used-details.d.ts +28 -0
  349. package/dist/handlers/where-used-details.d.ts.map +1 -0
  350. package/dist/handlers/where-used-details.js +67 -0
  351. package/dist/handlers/where-used-details.js.map +1 -0
  352. package/dist/handlers/where-used.d.ts +8 -3
  353. package/dist/handlers/where-used.d.ts.map +1 -1
  354. package/dist/handlers/where-used.js +40 -18
  355. package/dist/handlers/where-used.js.map +1 -1
  356. package/dist/handlers/write/create.d.ts.map +1 -1
  357. package/dist/handlers/write/create.js +69 -27
  358. package/dist/handlers/write/create.js.map +1 -1
  359. package/dist/handlers/write/rap.d.ts.map +1 -1
  360. package/dist/handlers/write/rap.js +2 -4
  361. package/dist/handlers/write/rap.js.map +1 -1
  362. package/dist/handlers/write/table-settings.d.ts +5 -0
  363. package/dist/handlers/write/table-settings.d.ts.map +1 -0
  364. package/dist/handlers/write/table-settings.js +27 -0
  365. package/dist/handlers/write/table-settings.js.map +1 -0
  366. package/dist/handlers/write/update-delete.d.ts +1 -1
  367. package/dist/handlers/write/update-delete.d.ts.map +1 -1
  368. package/dist/handlers/write/update-delete.js +32 -12
  369. package/dist/handlers/write/update-delete.js.map +1 -1
  370. package/dist/handlers/write-helpers.d.ts +4 -1
  371. package/dist/handlers/write-helpers.d.ts.map +1 -1
  372. package/dist/handlers/write-helpers.js +68 -8
  373. package/dist/handlers/write-helpers.js.map +1 -1
  374. package/dist/handlers/write.d.ts.map +1 -1
  375. package/dist/handlers/write.js +6 -10
  376. package/dist/handlers/write.js.map +1 -1
  377. package/dist/server/audit.d.ts +4 -0
  378. package/dist/server/audit.d.ts.map +1 -1
  379. package/dist/server/audit.js +49 -2
  380. package/dist/server/audit.js.map +1 -1
  381. package/dist/server/config.d.ts.map +1 -1
  382. package/dist/server/config.js +43 -2
  383. package/dist/server/config.js.map +1 -1
  384. package/dist/server/destination-discovery.d.ts +12 -2
  385. package/dist/server/destination-discovery.d.ts.map +1 -1
  386. package/dist/server/destination-discovery.js +33 -7
  387. package/dist/server/destination-discovery.js.map +1 -1
  388. package/dist/server/destination-registry.d.ts +10 -6
  389. package/dist/server/destination-registry.d.ts.map +1 -1
  390. package/dist/server/destination-registry.js +38 -15
  391. package/dist/server/destination-registry.js.map +1 -1
  392. package/dist/server/http-request-body.d.ts +4 -0
  393. package/dist/server/http-request-body.d.ts.map +1 -0
  394. package/dist/server/http-request-body.js +65 -0
  395. package/dist/server/http-request-body.js.map +1 -0
  396. package/dist/server/http.d.ts +5 -2
  397. package/dist/server/http.d.ts.map +1 -1
  398. package/dist/server/http.js +71 -9
  399. package/dist/server/http.js.map +1 -1
  400. package/dist/server/multi-target-authorization-audit.d.ts +5 -0
  401. package/dist/server/multi-target-authorization-audit.d.ts.map +1 -0
  402. package/dist/server/multi-target-authorization-audit.js +18 -0
  403. package/dist/server/multi-target-authorization-audit.js.map +1 -0
  404. package/dist/server/multi-target-authorization-startup.d.ts +8 -0
  405. package/dist/server/multi-target-authorization-startup.d.ts.map +1 -0
  406. package/dist/server/multi-target-authorization-startup.js +38 -0
  407. package/dist/server/multi-target-authorization-startup.js.map +1 -0
  408. package/dist/server/multi-target-authorization.d.ts +29 -0
  409. package/dist/server/multi-target-authorization.d.ts.map +1 -0
  410. package/dist/server/multi-target-authorization.js +97 -0
  411. package/dist/server/multi-target-authorization.js.map +1 -0
  412. package/dist/server/multi-target-bearer-auth.d.ts +5 -0
  413. package/dist/server/multi-target-bearer-auth.d.ts.map +1 -0
  414. package/dist/server/multi-target-bearer-auth.js +39 -0
  415. package/dist/server/multi-target-bearer-auth.js.map +1 -0
  416. package/dist/server/multi-target-catalog-enforced.d.ts +29 -0
  417. package/dist/server/multi-target-catalog-enforced.d.ts.map +1 -0
  418. package/dist/server/multi-target-catalog-enforced.js +142 -0
  419. package/dist/server/multi-target-catalog-enforced.js.map +1 -0
  420. package/dist/server/multi-target-catalog-projection.d.ts +7 -0
  421. package/dist/server/multi-target-catalog-projection.d.ts.map +1 -0
  422. package/dist/server/multi-target-catalog-projection.js +52 -0
  423. package/dist/server/multi-target-catalog-projection.js.map +1 -0
  424. package/dist/server/multi-target-feature-state.d.ts +0 -2
  425. package/dist/server/multi-target-feature-state.d.ts.map +1 -1
  426. package/dist/server/multi-target-feature-state.js +0 -19
  427. package/dist/server/multi-target-feature-state.js.map +1 -1
  428. package/dist/server/multi-target-identity.d.ts +3 -0
  429. package/dist/server/multi-target-identity.d.ts.map +1 -1
  430. package/dist/server/multi-target-identity.js +9 -0
  431. package/dist/server/multi-target-identity.js.map +1 -1
  432. package/dist/server/multi-target-request-projection.d.ts +14 -0
  433. package/dist/server/multi-target-request-projection.d.ts.map +1 -0
  434. package/dist/server/multi-target-request-projection.js +16 -0
  435. package/dist/server/multi-target-request-projection.js.map +1 -0
  436. package/dist/server/multi-target-runtime.d.ts.map +1 -1
  437. package/dist/server/multi-target-runtime.js +1 -0
  438. package/dist/server/multi-target-runtime.js.map +1 -1
  439. package/dist/server/multi-target-server.d.ts +4 -1
  440. package/dist/server/multi-target-server.d.ts.map +1 -1
  441. package/dist/server/multi-target-server.js +111 -11
  442. package/dist/server/multi-target-server.js.map +1 -1
  443. package/dist/server/multi-target-tools.d.ts +1 -1
  444. package/dist/server/multi-target-tools.d.ts.map +1 -1
  445. package/dist/server/multi-target-tools.js +22 -15
  446. package/dist/server/multi-target-tools.js.map +1 -1
  447. package/dist/server/private-mcp-response.d.ts +4 -0
  448. package/dist/server/private-mcp-response.d.ts.map +1 -0
  449. package/dist/server/private-mcp-response.js +14 -0
  450. package/dist/server/private-mcp-response.js.map +1 -0
  451. package/dist/server/server-cache.d.ts +5 -0
  452. package/dist/server/server-cache.d.ts.map +1 -0
  453. package/dist/server/server-cache.js +30 -0
  454. package/dist/server/server-cache.js.map +1 -0
  455. package/dist/server/server.d.ts +7 -21
  456. package/dist/server/server.d.ts.map +1 -1
  457. package/dist/server/server.js +60 -89
  458. package/dist/server/server.js.map +1 -1
  459. package/dist/server/sinks/btp-auditlog.d.ts.map +1 -1
  460. package/dist/server/sinks/btp-auditlog.js +4 -1
  461. package/dist/server/sinks/btp-auditlog.js.map +1 -1
  462. package/dist/server/tool-auth.d.ts +1 -1
  463. package/dist/server/tool-auth.d.ts.map +1 -1
  464. package/dist/server/tool-auth.js +24 -4
  465. package/dist/server/tool-auth.js.map +1 -1
  466. package/dist/server/types.d.ts +7 -0
  467. package/dist/server/types.d.ts.map +1 -1
  468. package/dist/server/types.js +4 -0
  469. package/dist/server/types.js.map +1 -1
  470. package/dist/version.d.ts +1 -1
  471. package/dist/version.js +1 -1
  472. package/package.json +21 -13
@@ -1,5 +1,7 @@
1
1
  import { type AdtClient } from '../adt/client.js';
2
2
  import { type ReferenceResult, type WhereUsedResult } from '../adt/codeintel.js';
3
+ import { type UsageOptions } from '../adt/where-used-native.js';
4
+ import { expandUsageDetails } from './where-used-details.js';
3
5
  export type LiveUsageResult = WhereUsedResult | ReferenceResult;
4
6
  export interface LiveUsageLookup {
5
7
  /** At most `maxResults` entries. */
@@ -12,6 +14,8 @@ export interface LiveUsageLookup {
12
14
  warning?: string;
13
15
  /** The symbol SAP searched for, from its result scope (absent on the fallback endpoint). */
14
16
  searchedFor?: string;
17
+ scopeFiltering?: 'server' | 'client';
18
+ usageDetails?: Awaited<ReturnType<typeof expandUsageDetails>>;
15
19
  }
16
20
  /** Resolve the canonical ADT object URI used by the where-used APIs. */
17
21
  export declare function resolveWhereUsedUri(client: AdtClient, objectType: string, objectName: string): Promise<string | null>;
@@ -19,11 +23,12 @@ export declare function resolveWhereUsedUri(client: AdtClient, objectType: strin
19
23
  * Run the live SAP-authorized where-used lookup shared by SAPNavigate.references and
20
24
  * SAPContext.usages. Older systems fall back to the simple references endpoint.
21
25
  *
22
- * Filtering and paging are both client-side: SAP's `usageReferences` endpoint declares only
26
+ * Legacy filtering and paging are client-side: the older `usageReferences` endpoint declares only
23
27
  * `{?uri}` and ignores every limit/filter we can send — `objectTypeFilter` in the body, and
24
28
  * `maxResults`/`maxItemCount`/`searchFromIndex` as query params all return byte-identical
25
29
  * responses (verified live on 758, 9 variants). So the full set always crosses the wire; we bound
26
- * what reaches the model, not what SAP computes.
30
+ * what reaches the model, not what SAP computes. SAPNavigate optionally uses native scope
31
+ * on systems advertising it; paging remains client-side.
27
32
  */
28
- export declare function lookupLiveUsages(client: AdtClient, uri: string, objectType?: string, maxResults?: number): Promise<LiveUsageLookup>;
33
+ export declare function lookupLiveUsages(client: AdtClient, uri: string, objectType?: string, maxResults?: number, options?: UsageOptions): Promise<LiveUsageLookup>;
29
34
  //# sourceMappingURL=where-used.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"where-used.d.ts","sourceRoot":"","sources":["../../src/handlers/where-used.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAsB,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAIL,KAAK,eAAe,EACpB,KAAK,eAAe,EACrB,MAAM,qBAAqB,CAAC;AAO7B,MAAM,MAAM,eAAe,GAAG,eAAe,GAAG,eAAe,CAAC;AAMhE,MAAM,WAAW,eAAe;IAC9B,oCAAoC;IACpC,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,+FAA+F;IAC/F,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;IACtB,4FAA4F;IAC5F,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4FAA4F;IAC5F,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAUD,wEAAwE;AACxE,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAaxB;AAED;;;;;;;;;GASG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,SAAS,EACjB,GAAG,EAAE,MAAM,EACX,UAAU,CAAC,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,MAAM,GAClB,OAAO,CAAC,eAAe,CAAC,CAgD1B"}
1
+ {"version":3,"file":"where-used.d.ts","sourceRoot":"","sources":["../../src/handlers/where-used.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAsB,MAAM,kBAAkB,CAAC;AACtE,OAAO,EAIL,KAAK,eAAe,EACpB,KAAK,eAAe,EACrB,MAAM,qBAAqB,CAAC;AAK7B,OAAO,EAAsC,KAAK,YAAY,EAAE,MAAM,6BAA6B,CAAC;AAEpG,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAE7D,MAAM,MAAM,eAAe,GAAG,eAAe,GAAG,eAAe,CAAC;AAMhE,MAAM,WAAW,eAAe;IAC9B,oCAAoC;IACpC,OAAO,EAAE,eAAe,EAAE,CAAC;IAC3B,+FAA+F;IAC/F,KAAK,EAAE,MAAM,CAAC;IACd,SAAS,EAAE,OAAO,CAAC;IACnB,YAAY,EAAE,OAAO,CAAC;IACtB,4FAA4F;IAC5F,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,4FAA4F;IAC5F,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,cAAc,CAAC,EAAE,QAAQ,GAAG,QAAQ,CAAC;IACrC,YAAY,CAAC,EAAE,OAAO,CAAC,UAAU,CAAC,OAAO,kBAAkB,CAAC,CAAC,CAAC;CAC/D;AAED,wEAAwE;AACxE,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,SAAS,EACjB,UAAU,EAAE,MAAM,EAClB,UAAU,EAAE,MAAM,GACjB,OAAO,CAAC,MAAM,GAAG,IAAI,CAAC,CAaxB;AAED;;;;;;;;;;GAUG;AACH,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,SAAS,EACjB,GAAG,EAAE,MAAM,EACX,UAAU,CAAC,EAAE,MAAM,EACnB,UAAU,CAAC,EAAE,MAAM,EACnB,OAAO,CAAC,EAAE,YAAY,GACrB,OAAO,CAAC,eAAe,CAAC,CAyF1B"}
@@ -4,17 +4,12 @@ import { DataSourcePolicyError } from '../adt/data-source-policy.js';
4
4
  import { AdtApiError } from '../adt/errors.js';
5
5
  import { internalOperationWarning } from '../adt/internal-data-operations.js';
6
6
  import { isOperationAllowed, OperationType } from '../adt/safety.js';
7
+ import { loadNativeUsages, matchesUsageType } from '../adt/where-used-native.js';
7
8
  import { normalizeObjectType, objectUrlForType } from './object-types.js';
9
+ import { expandUsageDetails } from './where-used-details.js';
8
10
  /** Default page size for where-used. A bare lookup on a common type returns thousands of rows
9
11
  * (CL_ABAP_TYPEDESCR: 6,644 refs ≈ 968k tokens) — far past any context window. */
10
12
  const DEFAULT_USAGE_RESULTS = 100;
11
- /** Match a result's ADT type against a filter: "CLAS" matches "CLAS/OC", "CLAS/OC" matches exactly.
12
- * Trimmed — a padded `" CLAS "` would otherwise match nothing and read as "no references found". */
13
- function matchesObjectType(resultType, filter) {
14
- const type = resultType.trim().toUpperCase();
15
- const wanted = filter.trim().toUpperCase();
16
- return type === wanted || type.startsWith(`${wanted}/`);
17
- }
18
13
  /** Resolve the canonical ADT object URI used by the where-used APIs. */
19
14
  export async function resolveWhereUsedUri(client, objectType, objectName) {
20
15
  const type = normalizeObjectType(objectType);
@@ -34,13 +29,14 @@ export async function resolveWhereUsedUri(client, objectType, objectName) {
34
29
  * Run the live SAP-authorized where-used lookup shared by SAPNavigate.references and
35
30
  * SAPContext.usages. Older systems fall back to the simple references endpoint.
36
31
  *
37
- * Filtering and paging are both client-side: SAP's `usageReferences` endpoint declares only
32
+ * Legacy filtering and paging are client-side: the older `usageReferences` endpoint declares only
38
33
  * `{?uri}` and ignores every limit/filter we can send — `objectTypeFilter` in the body, and
39
34
  * `maxResults`/`maxItemCount`/`searchFromIndex` as query params all return byte-identical
40
35
  * responses (verified live on 758, 9 variants). So the full set always crosses the wire; we bound
41
- * what reaches the model, not what SAP computes.
36
+ * what reaches the model, not what SAP computes. SAPNavigate optionally uses native scope
37
+ * on systems advertising it; paging remains client-side.
42
38
  */
43
- export async function lookupLiveUsages(client, uri, objectType, maxResults) {
39
+ export async function lookupLiveUsages(client, uri, objectType, maxResults, options) {
44
40
  // Normalize the filter ONCE, at the entry, and use only this value below. A whitespace-only filter
45
41
  // means "no filter" (matching the empty type would match nothing and read as "No references
46
42
  // found"). Trimming here rather than at the comparison is what keeps `" CLAS/OC "` behaving like
@@ -52,29 +48,53 @@ export async function lookupLiveUsages(client, uri, objectType, maxResults) {
52
48
  let searchedFor;
53
49
  let referencedObjectIdentifier;
54
50
  let fallbackUsed = false;
51
+ let native;
55
52
  try {
56
- ({ results, searchedFor, referencedObjectIdentifier } = await findWhereUsedWithScope(client.http, client.safety, uri, filter));
53
+ native =
54
+ options && (options.packages?.length || (options.detail && options.detail !== 'objects'))
55
+ ? await loadNativeUsages(client, uri, options)
56
+ : undefined;
57
+ ({ results, searchedFor, referencedObjectIdentifier } =
58
+ native ?? (await findWhereUsedWithScope(client.http, client.safety, uri, filter)));
57
59
  }
58
60
  catch (err) {
59
- if (!(err instanceof AdtApiError) || ![404, 405, 415, 501].includes(err.statusCode))
61
+ if (!(err instanceof AdtApiError) ||
62
+ ![404, 405, 415, 501].includes(err.statusCode) ||
63
+ !/\/usageReferences(?:\?|$)/.test(err.path))
60
64
  throw err;
65
+ if (options?.packages?.length)
66
+ throw new Error('This legacy reference endpoint cannot provide package-filtered results. Retry without packages.');
61
67
  results = await findReferences(client.http, client.safety, uri);
62
68
  fallbackUsed = true;
63
69
  }
64
70
  // Kept outside the try: an augment failure must not be mistaken for a missing where-used endpoint.
65
71
  let warning;
66
- // Empty is SAP's explicit fallback to the original object; absent/nonempty cannot justify enrichment.
67
- if (!fallbackUsed && (!scoped || referencedObjectIdentifier === '')) {
68
- warning = await augmentInterfaceImplementers(client, uri, filter, results);
72
+ // Empty also occurs when SAP reports an unsupported search. Require native rows before
73
+ // treating an empty cursor identifier as fallback to the original object.
74
+ if (!fallbackUsed && (!scoped || (referencedObjectIdentifier === '' && results.length > 0))) {
75
+ warning = await augmentInterfaceImplementers(client, uri, filter, results, Boolean(options?.packages?.length));
69
76
  }
70
77
  if (scoped && !searchedFor) {
71
78
  const scopeWarning = 'SAP did not report the searched symbol. Results may refer to the whole object; confirm the scope before using them.';
72
79
  warning = warning ? `${warning} ${scopeWarning}` : scopeWarning;
73
80
  }
74
- const filtered = filter ? results.filter((result) => matchesObjectType(result.type, filter)) : results;
81
+ const filtered = results.filter((result) => (!filter || matchesUsageType(result.type, filter)) &&
82
+ (!options?.packages?.length ||
83
+ (result.type !== 'DEVC/K' &&
84
+ 'packageName' in result &&
85
+ options.packages.includes(result.packageName.toUpperCase()))));
75
86
  const limit = clampSearchResults(maxResults, DEFAULT_USAGE_RESULTS);
87
+ const usageDetails = options?.detail && options.detail !== 'objects'
88
+ ? await expandUsageDetails(client, results, filter, options, limit, native?.supportsSnippets ?? false, native?.deadline ?? Date.now())
89
+ : undefined;
76
90
  return {
77
- results: filtered.slice(0, limit),
91
+ results: filtered.slice(0, limit).map(({ ...row }) => {
92
+ if ('objectIdentifier' in row)
93
+ delete row.objectIdentifier;
94
+ return row;
95
+ }),
96
+ ...(native && options?.packages?.length ? { scopeFiltering: native.scopeFiltering } : {}),
97
+ ...(usageDetails ? { usageDetails } : {}),
78
98
  total: filtered.length,
79
99
  truncated: filtered.length > limit,
80
100
  fallbackUsed,
@@ -82,13 +102,15 @@ export async function lookupLiveUsages(client, uri, objectType, maxResults) {
82
102
  ...(searchedFor ? { searchedFor } : {}),
83
103
  };
84
104
  }
85
- async function augmentInterfaceImplementers(client, uri, objectType, results) {
105
+ async function augmentInterfaceImplementers(client, uri, objectType, results, packageFiltered) {
86
106
  const intfMatch = uri.match(/\/sap\/bc\/adt\/oo\/interfaces\/([^/?#]+)/i);
87
107
  if (!intfMatch || (objectType && !/^CLAS/i.test(objectType)))
88
108
  return undefined;
89
109
  const interfaceName = decodeURIComponent(intfMatch[1]).toUpperCase();
90
110
  const canFreeSQL = isOperationAllowed(client.safety, OperationType.FreeSQL);
91
111
  const canQuery = isOperationAllowed(client.safety, OperationType.Query);
112
+ if (packageFiltered && (canFreeSQL || canQuery))
113
+ return 'Interface-implementer enrichment was skipped: SEOMETAREL does not provide packages for filtering. Native results are retained.';
92
114
  try {
93
115
  let implementers = [];
94
116
  if (canFreeSQL) {
@@ -1 +1 @@
1
- {"version":3,"file":"where-used.js","sourceRoot":"","sources":["../../src/handlers/where-used.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"where-used.js","sourceRoot":"","sources":["../../src/handlers/where-used.ts"],"names":[],"mappings":"AAAA,OAAO,EAAkB,kBAAkB,EAAE,MAAM,kBAAkB,CAAC;AACtE,OAAO,EACL,sCAAsC,EACtC,cAAc,EACd,sBAAsB,GAGvB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,qBAAqB,EAAE,MAAM,8BAA8B,CAAC;AACrE,OAAO,EAAE,WAAW,EAAE,MAAM,kBAAkB,CAAC;AAC/C,OAAO,EAAE,wBAAwB,EAAE,MAAM,oCAAoC,CAAC;AAC9E,OAAO,EAAE,kBAAkB,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AACrE,OAAO,EAAE,gBAAgB,EAAE,gBAAgB,EAAqB,MAAM,6BAA6B,CAAC;AACpG,OAAO,EAAE,mBAAmB,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAC1E,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAI7D;mFACmF;AACnF,MAAM,qBAAqB,GAAG,GAAG,CAAC;AAiBlC,wEAAwE;AACxE,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,MAAiB,EACjB,UAAkB,EAClB,UAAkB;IAElB,MAAM,IAAI,GAAG,mBAAmB,CAAC,UAAU,CAAC,CAAC;IAC7C,MAAM,IAAI,GAAG,UAAU,CAAC,WAAW,EAAE,CAAC;IACtC,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpB,MAAM,KAAK,GAAG,MAAM,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;QACtD,OAAO,KAAK;YACV,CAAC,CAAC,gCAAgC,kBAAkB,CAAC,KAAK,CAAC,aAAa,kBAAkB,CAAC,IAAI,CAAC,EAAE;YAClG,CAAC,CAAC,IAAI,CAAC;IACX,CAAC;IACD,IAAI,IAAI,KAAK,MAAM,EAAE,CAAC;QACpB,OAAO,MAAM,CAAC,oBAAoB,CAAC,IAAI,CAAC,CAAC;IAC3C,CAAC;IACD,OAAO,gBAAgB,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AACtC,CAAC;AAED;;;;;;;;;;GAUG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,MAAiB,EACjB,GAAW,EACX,UAAmB,EACnB,UAAmB,EACnB,OAAsB;IAEtB,mGAAmG;IACnG,4FAA4F;IAC5F,iGAAiG;IACjG,6FAA6F;IAC7F,kGAAkG;IAClG,MAAM,MAAM,GAAG,UAAU,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,UAAU,CAAC,IAAI,EAAE,CAAC,CAAC,CAAC,SAAS,CAAC;IAClE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;IAE1C,IAAI,OAA0B,CAAC;IAC/B,IAAI,WAA+B,CAAC;IACpC,IAAI,0BAA8C,CAAC;IACnD,IAAI,YAAY,GAAG,KAAK,CAAC;IACzB,IAAI,MAAgE,CAAC;IACrE,IAAI,CAAC;QACH,MAAM;YACJ,OAAO,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,MAAM,IAAI,CAAC,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS,CAAC,CAAC;gBACvF,CAAC,CAAC,MAAM,gBAAgB,CAAC,MAAM,EAAE,GAAG,EAAE,OAAO,CAAC;gBAC9C,CAAC,CAAC,SAAS,CAAC;QAChB,CAAC,EAAE,OAAO,EAAE,WAAW,EAAE,0BAA0B,EAAE;YACnD,MAAM,IAAI,CAAC,MAAM,sBAAsB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC,CAAC,CAAC;IACvF,CAAC;IAAC,OAAO,GAAG,EAAE,CAAC;QACb,IACE,CAAC,CAAC,GAAG,YAAY,WAAW,CAAC;YAC7B,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,GAAG,EAAE,GAAG,CAAC,CAAC,QAAQ,CAAC,GAAG,CAAC,UAAU,CAAC;YAC9C,CAAC,2BAA2B,CAAC,IAAI,CAAC,GAAG,CAAC,IAAI,CAAC;YAE3C,MAAM,GAAG,CAAC;QACZ,IAAI,OAAO,EAAE,QAAQ,EAAE,MAAM;YAC3B,MAAM,IAAI,KAAK,CACb,iGAAiG,CAClG,CAAC;QACJ,OAAO,GAAG,MAAM,cAAc,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;QAChE,YAAY,GAAG,IAAI,CAAC;IACtB,CAAC;IAED,mGAAmG;IACnG,IAAI,OAA2B,CAAC;IAChC,uFAAuF;IACvF,0EAA0E;IAC1E,IAAI,CAAC,YAAY,IAAI,CAAC,CAAC,MAAM,IAAI,CAAC,0BAA0B,KAAK,EAAE,IAAI,OAAO,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC;QAC5F,OAAO,GAAG,MAAM,4BAA4B,CAC1C,MAAM,EACN,GAAG,EACH,MAAM,EACN,OAA4B,EAC5B,OAAO,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CACnC,CAAC;IACJ,CAAC;IACD,IAAI,MAAM,IAAI,CAAC,WAAW,EAAE,CAAC;QAC3B,MAAM,YAAY,GAChB,qHAAqH,CAAC;QACxH,OAAO,GAAG,OAAO,CAAC,CAAC,CAAC,GAAG,OAAO,IAAI,YAAY,EAAE,CAAC,CAAC,CAAC,YAAY,CAAC;IAClE,CAAC;IAED,MAAM,QAAQ,GAAG,OAAO,CAAC,MAAM,CAC7B,CAAC,MAAM,EAAE,EAAE,CACT,CAAC,CAAC,MAAM,IAAI,gBAAgB,CAAC,MAAM,CAAC,IAAI,EAAE,MAAM,CAAC,CAAC;QAClD,CAAC,CAAC,OAAO,EAAE,QAAQ,EAAE,MAAM;YACzB,CAAC,MAAM,CAAC,IAAI,KAAK,QAAQ;gBACvB,aAAa,IAAI,MAAM;gBACvB,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,WAAW,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CACpE,CAAC;IACF,MAAM,KAAK,GAAG,kBAAkB,CAAC,UAAU,EAAE,qBAAqB,CAAC,CAAC;IACpE,MAAM,YAAY,GAChB,OAAO,EAAE,MAAM,IAAI,OAAO,CAAC,MAAM,KAAK,SAAS;QAC7C,CAAC,CAAC,MAAM,kBAAkB,CACtB,MAAM,EACN,OAA4B,EAC5B,MAAM,EACN,OAAO,EACP,KAAK,EACL,MAAM,EAAE,gBAAgB,IAAI,KAAK,EACjC,MAAM,EAAE,QAAQ,IAAI,IAAI,CAAC,GAAG,EAAE,CAC/B;QACH,CAAC,CAAC,SAAS,CAAC;IAChB,OAAO;QACL,OAAO,EAAE,QAAQ,CAAC,KAAK,CAAC,CAAC,EAAE,KAAK,CAAC,CAAC,GAAG,CAAC,CAAC,EAAE,GAAG,GAAG,EAAE,EAAE,EAAE;YACnD,IAAI,kBAAkB,IAAI,GAAG;gBAAE,OAAO,GAAG,CAAC,gBAAgB,CAAC;YAC3D,OAAO,GAAG,CAAC;QACb,CAAC,CAAC;QACF,GAAG,CAAC,MAAM,IAAI,OAAO,EAAE,QAAQ,EAAE,MAAM,CAAC,CAAC,CAAC,EAAE,cAAc,EAAE,MAAM,CAAC,cAAc,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzF,GAAG,CAAC,YAAY,CAAC,CAAC,CAAC,EAAE,YAAY,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QACzC,KAAK,EAAE,QAAQ,CAAC,MAAM;QACtB,SAAS,EAAE,QAAQ,CAAC,MAAM,GAAG,KAAK;QAClC,YAAY;QACZ,GAAG,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;QAC/B,GAAG,CAAC,WAAW,CAAC,CAAC,CAAC,EAAE,WAAW,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;KACxC,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,4BAA4B,CACzC,MAAiB,EACjB,GAAW,EACX,UAA8B,EAC9B,OAA0B,EAC1B,eAAwB;IAExB,MAAM,SAAS,GAAG,GAAG,CAAC,KAAK,CAAC,4CAA4C,CAAC,CAAC;IAC1E,IAAI,CAAC,SAAS,IAAI,CAAC,UAAU,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAAE,OAAO,SAAS,CAAC;IAE/E,MAAM,aAAa,GAAG,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAAE,CAAC,CAAC,WAAW,EAAE,CAAC;IACtE,MAAM,UAAU,GAAG,kBAAkB,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,OAAO,CAAC,CAAC;IAC5E,MAAM,QAAQ,GAAG,kBAAkB,CAAC,MAAM,CAAC,MAAM,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;IACxE,IAAI,eAAe,IAAI,CAAC,UAAU,IAAI,QAAQ,CAAC;QAC7C,OAAO,gIAAgI,CAAC;IAE1I,IAAI,CAAC;QACH,IAAI,YAAY,GAAsB,EAAE,CAAC;QACzC,IAAI,UAAU,EAAE,CAAC;YACf,YAAY,GAAG,MAAM,sCAAsC,CACzD,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE,CAAC,MAAM,CAAC,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC,EACvC,aAAa,CACd,CAAC;QACJ,CAAC;aAAM,IAAI,QAAQ,EAAE,CAAC;YACpB,2FAA2F;YAC3F,0FAA0F;YAC1F,wFAAwF;YACxF,YAAY,GAAG,MAAM,sCAAsC,CACzD,CAAC,IAAI,EAAE,GAAG,EAAE,EAAE,CACZ,MAAM,CAAC,aAAa,CAAC,YAAY,EAAE;gBACjC,OAAO,EAAE,CAAC,SAAS,EAAE,YAAY,EAAE,SAAS,CAAC;gBAC7C,KAAK,EAAE;oBACL,EAAE,KAAK,EAAE,YAAY,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,aAAa,EAAE;oBACtD,EAAE,KAAK,EAAE,SAAS,EAAE,EAAE,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE;iBAC1C;gBACD,OAAO,EAAE,GAAG;aACb,CAAC,EACJ,aAAa,CACd,CAAC;QACJ,CAAC;QAED,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,MAAM,CAAC,IAAI,EAAE,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QACnG,OAAO,CAAC,IAAI,CAAC,GAAG,YAAY,CAAC,MAAM,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,EAAE,CAAC,CAAC,CAAC,CAAC;QAChG,OAAO,SAAS,CAAC;IACnB,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,+FAA+F;QAC/F,wFAAwF;QACxF,wFAAwF;QACxF,OAAO,wBAAwB,CAC7B,wBAAwB,EACxB,KAAK,YAAY,qBAAqB,CAAC,CAAC,CAAC,KAAK,CAAC,IAAI,CAAC,CAAC,CAAC,8BAA8B,CACrF,CAAC;IACJ,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/handlers/write/create.ts"],"names":[],"mappings":"AAAA;;GAEG;AA4CH,OAAO,EAAe,KAAK,UAAU,EAAc,MAAM,cAAc,CAAC;AA0BxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAmYpD,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC,CA4VjF;AAED,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC,CAgWtF"}
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/handlers/write/create.ts"],"names":[],"mappings":"AAAA;;GAEG;AA+CH,OAAO,EAAe,KAAK,UAAU,EAAc,MAAM,cAAc,CAAC;AA4BxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAmapD,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC,CAmXjF;AAED,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC,CAwXtF"}
@@ -4,8 +4,9 @@
4
4
  import { createObject, lockObject, safeUpdateObject, safeUpdateSource, unlockObject, updateObject, } from '../../adt/crud.js';
5
5
  import { formatKtdWriteReport, normalizeAdtLanguage, rewriteKtdDocument, } from '../../adt/ddic-xml.js';
6
6
  import { activate, activateBatch } from '../../adt/devtools.js';
7
+ import { badiContainerXml, hasBadiImplementations } from '../../adt/enhancement-impl.js';
7
8
  import { AdtApiError, AdtSafetyError } from '../../adt/errors.js';
8
- import { spliceFmSignature } from '../../adt/fm-signature.js';
9
+ import { findFmHeader, spliceFmSignature } from '../../adt/fm-signature.js';
9
10
  import { checkOperation, checkPackage, OperationType } from '../../adt/safety.js';
10
11
  import { isServerDrivenObjectType } from '../../adt/server-driven.js';
11
12
  import { getTransport } from '../../adt/transport.js';
@@ -13,10 +14,11 @@ import { escapeXmlAttr, parseFunctionModuleProperties } from '../../adt/xml-pars
13
14
  import { validateAffHeader } from '../../aff/validator.js';
14
15
  import { activationDetailMatchesObject } from '../activation-results.js';
15
16
  import { guardCdsSyntax } from '../cds-hints.js';
16
- import { getCachedFeatures, isDomainsEndpointAvailable, isLockObjectsEndpointAvailable, isTablesEndpointAvailable, isTableTypesEndpointAvailable, } from '../feature-cache.js';
17
+ import { getCachedFeatures, isDomainsEndpointAvailable, isEnhoXhbEndpointAvailable, isLockObjectsEndpointAvailable, isTablesEndpointAvailable, isTableTypesEndpointAvailable, } from '../feature-cache.js';
18
+ import { resolveFmDescriptionLanguage } from '../function-parameter-language.js';
17
19
  import { canonicalTablType, functionGroupObjectUrl, functionModuleObjectUrl, normalizeWriteObjectType, objectBasePath, objectUrlForType, sourceUrlForType, } from '../object-types.js';
18
20
  import { errorResult, textResult } from '../shared.js';
19
- import { buildCreateXml, createContentTypeForType, DOMA_WRITE_UNAVAILABLE_HINT, ENQU_WRITE_UNAVAILABLE_HINT, getMetadataWriteProperties, isMetadataWriteType, mergePreWriteWarnings, resolveWriteSystemType, runPreWriteLint, runRapPreflightValidation, SKTD_V2_CONTENT_TYPE, stripFmParamCommentBlock, TABL_DT_WRITE_UNAVAILABLE_HINT, TTYP_WRITE_UNAVAILABLE_HINT, tryPostSaveSyntaxCheck, vendorContentTypeForType, } from '../write-helpers.js';
21
+ import { buildCreateXml, createContentTypeForType, DOMA_WRITE_UNAVAILABLE_HINT, ENHO_WRITE_UNAVAILABLE_HINT, ENQU_WRITE_UNAVAILABLE_HINT, getMetadataWriteProperties, isMetadataWriteType, mergePreWriteWarnings, prepareEnhoCreateProperties, resolveWriteSystemType, runPreWriteLint, runRapPreflightValidation, SKTD_V2_CONTENT_TYPE, stripFmParamCommentBlock, TABL_DT_WRITE_UNAVAILABLE_HINT, TTYP_WRITE_UNAVAILABLE_HINT, tryPostSaveSyntaxCheck, vendorContentTypeForType, } from '../write-helpers.js';
20
22
  import { batchCreateResult, batchEntryResult, batchFailureMessage, failBatchEntry, } from './batch-results.js';
21
23
  import { resolveCreateTransport } from './create-transport.js';
22
24
  const FUNCTION_MODULE_MEDIA_TYPE = /^application\/vnd\.sap\.adt\.functions\.fmodules(?:\.v\d+)?\+xml\b/i;
@@ -34,7 +36,7 @@ function normalizeTransportOverride(rawTransport) {
34
36
  const value = String(rawTransport).trim();
35
37
  return value || undefined;
36
38
  }
37
- function prepareFunctionModuleCreateSource(name, source, parameters) {
39
+ function prepareFunctionModuleCreateSource(name, source, parameters, language) {
38
40
  const shouldWrite = !!source || (parameters !== undefined && parameters.length > 0);
39
41
  if (!shouldWrite)
40
42
  return { shouldWrite: false, source: '', warnings: [] };
@@ -43,13 +45,16 @@ function prepareFunctionModuleCreateSource(name, source, parameters) {
43
45
  if (parameters !== undefined) {
44
46
  const baseSource = !prepared || prepared.trim() === ''
45
47
  ? `FUNCTION ${name}.\nENDFUNCTION.\n`
46
- : /^\s*FUNCTION\s+/i.test(prepared)
48
+ : findFmHeader(prepared)
47
49
  ? prepared
48
50
  : `FUNCTION ${name}.\n${prepared}\nENDFUNCTION.\n`;
49
51
  try {
50
- prepared = spliceFmSignature(baseSource, name, parameters);
52
+ prepared = spliceFmSignature(baseSource, name, parameters, language);
51
53
  }
52
- catch {
54
+ catch (error) {
55
+ // Explicit descriptions must never be silently dropped by the legacy source fallback.
56
+ if (parameters.some((parameter) => parameter.description !== undefined))
57
+ throw error;
53
58
  prepared = baseSource;
54
59
  warnings.push('Could not splice structured parameters into the FUNCTION source. Used the source without structured parameter changes.');
55
60
  }
@@ -148,6 +153,25 @@ async function putTtypMetadataAfterCreate(client, objectUrl, name, body, content
148
153
  throw new Error(ttypPostCreateFailureMessage(name, err));
149
154
  }
150
155
  }
156
+ /**
157
+ * ENHO create, step 2 (as Eclipse does it): the POST created the empty container; save the BAdI
158
+ * implementations with lock → PUT (with the transport) → unlock. Posting them with the create fails in a
159
+ * transportable package (live 816, 2026-10-07; see badiContainerXml).
160
+ */
161
+ async function saveBadiImplementationsAfterCreate(client, objectUrl, name, body, contentType, transport, minimalErrors) {
162
+ if (!hasBadiImplementations(body))
163
+ return;
164
+ try {
165
+ await safeUpdateObject(client.http, client.safety, objectUrl, body, contentType, transport, getCachedFeatures()?.abapRelease);
166
+ }
167
+ catch (err) {
168
+ // The POST already succeeded: the object exists. A blind retry of create would 409.
169
+ throw new Error(`Created ENHO ${name}, but saving or unlocking failed; the resulting state is unconfirmed. ` +
170
+ `The object exists — check it with SAPRead(type="ENHO", name="${name}"), then use ` +
171
+ `SAPWrite(action="update", type="ENHO", name="${name}", source=…) if needed; do not retry create.\n` +
172
+ batchFailureMessage(err, minimalErrors));
173
+ }
174
+ }
151
175
  const KTD_REF_OBJECT_TYPES_ROUTABLE_BY_ARC = new Set([
152
176
  'BDEF/BAC',
153
177
  'BDEF/BAE',
@@ -163,12 +187,6 @@ const KTD_REF_OBJECT_TYPES_ROUTABLE_BY_ARC = new Set([
163
187
  'SRVB/SVB',
164
188
  'SRVD/SRV',
165
189
  ]);
166
- // Parent types without a canonical ARC-1 object type (no objectBasePath case); the KTD parent
167
- // adtcore:uri is built from this base path. SMBC = Business Configuration Maintenance Object,
168
- // ADT returns /sap/bc/adt/bct/smbctyp/<name> for it (e.g. in package object listings).
169
- const KTD_PARENT_BASE_PATHS = {
170
- SMBC: '/sap/bc/adt/bct/smbctyp/',
171
- };
172
190
  // Live WBOBJTYPES_SCOPE registry entries for SCOPE_ID = 'DOCUMENTATION' observed on
173
191
  // SAP_BASIS 758 and 816. This is diagnostic evidence, not a create allowlist:
174
192
  // KTD create still needs a verified ADT parent URI route for <sktd:refObject>.
@@ -310,6 +328,8 @@ export async function writeActionCreate(ctx) {
310
328
  // Discovery gate before any SAP call (the TTYP/DOMA gates live in write.ts, which is at its size budget).
311
329
  if (type === 'ENQU' && isLockObjectsEndpointAvailable() === false)
312
330
  return errorResult(ENQU_WRITE_UNAVAILABLE_HINT);
331
+ if (type === 'ENHO' && isEnhoXhbEndpointAvailable() === false)
332
+ return errorResult(ENHO_WRITE_UNAVAILABLE_HINT);
313
333
  // FUNC and FUGR structural includes both INHERIT the parent group's package — SAP ignores
314
334
  // _package for them — so the allowlist must be checked against the group's real package.
315
335
  // Gating on args.package here would let a caller write into a disallowed package by claiming $TMP.
@@ -372,18 +392,17 @@ export async function writeActionCreate(ctx) {
372
392
  return errorResult(`SKTD name "${name}" must match refObjectName "${refName}" — a Knowledge Transfer Document inherits the name of the ABAP object it documents (one KTD per object). To document "${refName}", call SAPWrite(action="create", type="SKTD", name="${refName}", refObjectType="${refType}", ...).`);
373
393
  }
374
394
  const refDescription = String(args.refObjectDescription ?? '');
375
- // SAP_BASIS 758 rejects an empty SMBC parent description with only "Check of condition failed".
376
- if (refType === 'SMBC/TYP' && !refDescription.trim()) {
377
- return errorResult('"refObjectDescription" is required for SMBC/TYP KTD creation. Provide the business configuration description.');
378
- }
379
395
  // Build the parent URI. ADT URIs use lowercase names by convention (matches the Eclipse trace).
380
396
  const refParentType = refType.split('/')[0] ?? '';
381
- const refUri = `${KTD_PARENT_BASE_PATHS[refParentType] ?? objectBasePath(refParentType)}${encodeURIComponent(refName.toLowerCase())}`;
397
+ const refUri = `${objectBasePath(refParentType)}${encodeURIComponent(refName.toLowerCase())}`;
398
+ // SADT_OBJECT_REFERENCE reads adtcore:description under check="not-initial(...)": an empty
399
+ // attribute fails with "Check of condition failed"; an absent one is skipped.
400
+ const refDescriptionAttr = refDescription.trim() ? ` adtcore:description="${escapeXmlAttr(refDescription)}"` : '';
382
401
  const ktdLang = normalizeAdtLanguage(config.language);
383
402
  const ktdBody = `<?xml version="1.0" encoding="UTF-8"?>
384
403
  <sktd:docu xmlns:sktd="http://www.sap.com/wbobj/texts/sktd" xmlns:adtcore="http://www.sap.com/adt/core" adtcore:language="${ktdLang}" adtcore:name="${escapeXmlAttr(name)}" adtcore:type="SKTD/TYP" adtcore:masterLanguage="${ktdLang}">
385
404
  <adtcore:packageRef adtcore:name="${escapeXmlAttr(pkg)}"/>
386
- <sktd:refObject adtcore:description="${escapeXmlAttr(refDescription)}" adtcore:name="${escapeXmlAttr(refName)}" adtcore:type="${escapeXmlAttr(refType)}" adtcore:uri="${escapeXmlAttr(refUri)}"/>
405
+ <sktd:refObject${refDescriptionAttr} adtcore:name="${escapeXmlAttr(refName)}" adtcore:type="${escapeXmlAttr(refType)}" adtcore:uri="${escapeXmlAttr(refUri)}"/>
387
406
  </sktd:docu>`;
388
407
  const ktdCreateUrl = '/sap/bc/adt/documentation/ktd/documents';
389
408
  let ktdResult;
@@ -432,7 +451,7 @@ export async function writeActionCreate(ctx) {
432
451
  // Prepare and lint before creating metadata: rejection must not leave an empty object
433
452
  // or transport entry. FUNC parameters can synthesize source even when source is omitted.
434
453
  const funcPreparation = type === 'FUNC'
435
- ? prepareFunctionModuleCreateSource(name, source, args.parameters)
454
+ ? prepareFunctionModuleCreateSource(name, source, args.parameters, await resolveFmDescriptionLanguage(client, groupArg, args.parameters))
436
455
  : { shouldWrite: !!source, source: source ?? '', warnings: [] };
437
456
  const shouldWriteSource = funcPreparation.shouldWrite;
438
457
  const lintWarnings = runPreWriteLint(funcPreparation.source, type, name, config, lintOverride);
@@ -447,6 +466,8 @@ export async function writeActionCreate(ctx) {
447
466
  const systemType = resolveWriteSystemType(config, client);
448
467
  const cloud = systemType === 'btp';
449
468
  const responsible = config.username || (await client.getEffectiveUser());
469
+ if (type === 'ENHO')
470
+ await prepareEnhoCreateProperties(client, metadataProperties, name);
450
471
  const body = buildCreateXml(type, name, pkg, description, metadataProperties, config.language, responsible, cloud);
451
472
  // Step 1: Create the object (metadata only)
452
473
  const createUrl = objectUrl.replace(/\/[^/]+$/, ''); // parent collection URL
@@ -457,7 +478,7 @@ export async function writeActionCreate(ctx) {
457
478
  const needsPackageParam = type === 'BDEF' || type === 'TABL' || type === 'TABL/DT' || type === 'TABL/DS';
458
479
  let result;
459
480
  try {
460
- result = await createObject(client.http, client.safety, createUrl, body, contentType, effectiveTransport, needsPackageParam ? pkg : undefined, getCachedFeatures()?.abapRelease, systemType, name);
481
+ result = await createObject(client.http, client.safety, createUrl, type === 'ENHO' ? badiContainerXml(body) : body, contentType, effectiveTransport, needsPackageParam ? pkg : undefined, getCachedFeatures()?.abapRelease, systemType, name);
461
482
  }
462
483
  catch (createErr) {
463
484
  if (createErr instanceof AdtApiError && (createErr.statusCode === 400 || createErr.statusCode === 409)) {
@@ -515,6 +536,16 @@ export async function writeActionCreate(ctx) {
515
536
  }
516
537
  });
517
538
  }
539
+ if (type === 'ENHO') {
540
+ try {
541
+ const ct = vendorContentTypeForType(type);
542
+ await saveBadiImplementationsAfterCreate(client, objectUrl, name, body, ct, effectiveTransport, config.minimalErrors);
543
+ }
544
+ catch (err) {
545
+ invalidateWrittenObject(type, name);
546
+ return errorResult(err instanceof Error ? err.message : String(err));
547
+ }
548
+ }
518
549
  // TTYP: the POST creates a default-typed (CHAR) shell — a follow-up PUT writes the real row type.
519
550
  if (type === 'TTYP') {
520
551
  const ct = vendorContentTypeForType(type);
@@ -525,7 +556,9 @@ export async function writeActionCreate(ctx) {
525
556
  ? `\n\nNext steps:\n1. SAPActivate(type="SRVB", name="${name}")\n2. SAPActivate(action="publish_srvb", name="${name}")`
526
557
  : type === 'ENQU'
527
558
  ? `\n\nNext step: SAPActivate(type="ENQU", name="${name}") — activation generates ENQUEUE_${name}/DEQUEUE_${name}.`
528
- : '';
559
+ : type === 'ENHO'
560
+ ? `\n\nNext step: activate the implementing class(es), then SAPActivate(type="ENHO", name="${name}").`
561
+ : '';
529
562
  return textResult(`Created ${type} ${name} in package ${pkg}.\n${result}${followUpHint}`);
530
563
  }
531
564
  // Step 2: Write the already-validated source if provided.
@@ -614,6 +647,8 @@ export async function writeActionBatchCreate(ctx) {
614
647
  errors.push(TTYP_WRITE_UNAVAILABLE_HINT);
615
648
  if (plan.type === 'ENQU' && isLockObjectsEndpointAvailable() === false)
616
649
  errors.push(ENQU_WRITE_UNAVAILABLE_HINT);
650
+ if (plan.type === 'ENHO' && isEnhoXhbEndpointAvailable() === false)
651
+ errors.push(ENHO_WRITE_UNAVAILABLE_HINT);
617
652
  if (plan.type === 'INCL' && plan.name.startsWith('L')) {
618
653
  errors.push('Function-group structural includes require a single SAPWrite create with group; batch_create does not support them.');
619
654
  }
@@ -621,7 +656,7 @@ export async function writeActionBatchCreate(ctx) {
621
656
  if (!aff.valid)
622
657
  errors.push(`AFF metadata validation failed:\n- ${(aff.errors ?? []).join('\n- ')}`);
623
658
  if (plan.type === 'FUNC') {
624
- const prepared = prepareFunctionModuleCreateSource(plan.name, plan.source, plan.obj.parameters);
659
+ const prepared = prepareFunctionModuleCreateSource(plan.name, plan.source, plan.obj.parameters, await resolveFmDescriptionLanguage(client, plan.group ?? '', plan.obj.parameters));
625
660
  plan.source = prepared.shouldWrite ? prepared.source : undefined;
626
661
  warnings.push(...prepared.warnings.map((warning) => `${plan.type} ${plan.name}: ${warning}`));
627
662
  }
@@ -646,6 +681,7 @@ export async function writeActionBatchCreate(ctx) {
646
681
  }
647
682
  if (plan.type === 'DTEL' ||
648
683
  plan.type === 'TTYP' ||
684
+ plan.type === 'ENHO' ||
649
685
  (plan.type === 'FUNC' && plan.metadata.processingType !== undefined) ||
650
686
  (!plan.metadataObject && plan.source)) {
651
687
  plan.result.write = 'not_attempted';
@@ -714,12 +750,14 @@ export async function writeActionBatchCreate(ctx) {
714
750
  }
715
751
  try {
716
752
  applyBdefBehaviorExtensionMetadata(plan.type, plan.source, plan.metadata);
753
+ if (plan.type === 'ENHO')
754
+ await prepareEnhoCreateProperties(client, plan.metadata, plan.name);
717
755
  plan.body = buildCreateXml(plan.type, plan.name, plan.packageName, plan.description, plan.metadata, config.language, responsible, cloud);
718
756
  plan.contentType = createContentTypeForType(plan.type, cloud);
719
757
  }
720
758
  catch (err) {
721
- // Construction errors are local input diagnostics, not SAP response details.
722
- failBatchEntry(plan.result, 'preflight', batchFailureMessage(err, false));
759
+ // Construction errors are local input diagnostics, except the ENHO spot read, which is a SAP response.
760
+ failBatchEntry(plan.result, 'preflight', batchFailureMessage(err, err instanceof AdtApiError && config.minimalErrors));
723
761
  }
724
762
  }
725
763
  if (results.some((entry) => entry.status === 'failed'))
@@ -732,7 +770,7 @@ export async function writeActionBatchCreate(ctx) {
732
770
  const needsPackage = plan.type === 'BDEF' || canonicalTablType(plan.type) === 'TABL';
733
771
  entry.creation = 'unknown';
734
772
  try {
735
- await createObject(client.http, client.safety, plan.objectUrl.replace(/\/[^/]+$/, ''), plan.body, plan.contentType, plan.transport, needsPackage ? plan.packageName : undefined, getCachedFeatures()?.abapRelease, systemType, plan.name);
773
+ await createObject(client.http, client.safety, plan.objectUrl.replace(/\/[^/]+$/, ''), plan.type === 'ENHO' ? badiContainerXml(plan.body) : plan.body, plan.contentType, plan.transport, needsPackage ? plan.packageName : undefined, getCachedFeatures()?.abapRelease, systemType, plan.name);
736
774
  }
737
775
  catch (err) {
738
776
  if (err instanceof AdtSafetyError)
@@ -752,6 +790,8 @@ export async function writeActionBatchCreate(ctx) {
752
790
  if (plan.type === 'FUNC' && plan.metadata.processingType !== undefined) {
753
791
  await persistFunctionModuleProcessingMetadata(client, plan.objectUrl, plan.name, plan.metadata.processingType, plan.metadata.updateTaskKind, plan.transport);
754
792
  }
793
+ if (plan.type === 'ENHO')
794
+ await saveBadiImplementationsAfterCreate(client, plan.objectUrl, plan.name, plan.body, plan.contentType, plan.transport, config.minimalErrors);
755
795
  if (plan.type === 'DTEL') {
756
796
  await client.http.withStatefulSession(async (session) => {
757
797
  const lock = await lockObject(session, client.safety, plan.objectUrl, 'MODIFY', getCachedFeatures()?.abapRelease);
@@ -776,7 +816,9 @@ export async function writeActionBatchCreate(ctx) {
776
816
  else {
777
817
  phase = 'activate';
778
818
  entry.activation = 'unknown';
779
- const outcome = await activate(client.http, client.safety, plan.objectUrl);
819
+ // Send the name like SAPActivate does: ENHO activation fails with 403 "Resource could not be
820
+ // locked" when the reference carries only the URI (live 816, 2026-10-07).
821
+ const outcome = await activate(client.http, client.safety, plan.objectUrl, { name: plan.name });
780
822
  if (!outcome.success) {
781
823
  entry.activation = 'failed';
782
824
  failBatchEntry(entry, phase, `activation failed: ${batchFailureMessage(outcome.messages.join('; '), config.minimalErrors)}`);