arc-1 0.9.27 → 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (292) hide show
  1. package/README.md +28 -11
  2. package/dist/adt/abapgit.d.ts +19 -6
  3. package/dist/adt/abapgit.d.ts.map +1 -1
  4. package/dist/adt/abapgit.js +141 -36
  5. package/dist/adt/abapgit.js.map +1 -1
  6. package/dist/adt/client.d.ts +21 -8
  7. package/dist/adt/client.d.ts.map +1 -1
  8. package/dist/adt/client.js +47 -7
  9. package/dist/adt/client.js.map +1 -1
  10. package/dist/adt/config.d.ts +15 -0
  11. package/dist/adt/config.d.ts.map +1 -1
  12. package/dist/adt/config.js.map +1 -1
  13. package/dist/adt/crud.d.ts +7 -2
  14. package/dist/adt/crud.d.ts.map +1 -1
  15. package/dist/adt/crud.js +12 -4
  16. package/dist/adt/crud.js.map +1 -1
  17. package/dist/adt/ddic-xml.d.ts +27 -17
  18. package/dist/adt/ddic-xml.d.ts.map +1 -1
  19. package/dist/adt/ddic-xml.js +45 -34
  20. package/dist/adt/ddic-xml.js.map +1 -1
  21. package/dist/adt/devtools.d.ts +13 -0
  22. package/dist/adt/devtools.d.ts.map +1 -1
  23. package/dist/adt/devtools.js +120 -50
  24. package/dist/adt/devtools.js.map +1 -1
  25. package/dist/adt/errors.d.ts +1 -1
  26. package/dist/adt/errors.d.ts.map +1 -1
  27. package/dist/adt/errors.js +18 -0
  28. package/dist/adt/errors.js.map +1 -1
  29. package/dist/adt/http.d.ts +17 -1
  30. package/dist/adt/http.d.ts.map +1 -1
  31. package/dist/adt/http.js +102 -19
  32. package/dist/adt/http.js.map +1 -1
  33. package/dist/adt/server-driven.d.ts +154 -34
  34. package/dist/adt/server-driven.d.ts.map +1 -1
  35. package/dist/adt/server-driven.js +178 -53
  36. package/dist/adt/server-driven.js.map +1 -1
  37. package/dist/adt/transport.d.ts +6 -6
  38. package/dist/adt/transport.d.ts.map +1 -1
  39. package/dist/adt/transport.js +23 -34
  40. package/dist/adt/transport.js.map +1 -1
  41. package/dist/adt/types.d.ts +47 -6
  42. package/dist/adt/types.d.ts.map +1 -1
  43. package/dist/adt/xml-parser.d.ts +52 -12
  44. package/dist/adt/xml-parser.d.ts.map +1 -1
  45. package/dist/adt/xml-parser.js +120 -10
  46. package/dist/adt/xml-parser.js.map +1 -1
  47. package/dist/authz/policy.d.ts +8 -0
  48. package/dist/authz/policy.d.ts.map +1 -1
  49. package/dist/authz/policy.js +23 -0
  50. package/dist/authz/policy.js.map +1 -1
  51. package/dist/cache/cache.d.ts +2 -34
  52. package/dist/cache/cache.d.ts.map +1 -1
  53. package/dist/cache/cache.js +2 -3
  54. package/dist/cache/cache.js.map +1 -1
  55. package/dist/cache/caching-layer.d.ts +3 -19
  56. package/dist/cache/caching-layer.d.ts.map +1 -1
  57. package/dist/cache/caching-layer.js +2 -26
  58. package/dist/cache/caching-layer.js.map +1 -1
  59. package/dist/cache/memory.d.ts +1 -12
  60. package/dist/cache/memory.d.ts.map +1 -1
  61. package/dist/cache/memory.js +0 -69
  62. package/dist/cache/memory.js.map +1 -1
  63. package/dist/cache/sqlite.d.ts +2 -9
  64. package/dist/cache/sqlite.d.ts.map +1 -1
  65. package/dist/cache/sqlite.js +8 -84
  66. package/dist/cache/sqlite.js.map +1 -1
  67. package/dist/cli.js +6 -3
  68. package/dist/cli.js.map +1 -1
  69. package/dist/context/unit-surgery.d.ts +28 -0
  70. package/dist/context/unit-surgery.d.ts.map +1 -0
  71. package/dist/context/unit-surgery.js +150 -0
  72. package/dist/context/unit-surgery.js.map +1 -0
  73. package/dist/handlers/activate.d.ts.map +1 -1
  74. package/dist/handlers/activate.js +44 -6
  75. package/dist/handlers/activate.js.map +1 -1
  76. package/dist/handlers/context.d.ts +1 -1
  77. package/dist/handlers/context.d.ts.map +1 -1
  78. package/dist/handlers/context.js +98 -28
  79. package/dist/handlers/context.js.map +1 -1
  80. package/dist/handlers/diagnose.d.ts.map +1 -1
  81. package/dist/handlers/diagnose.js +55 -31
  82. package/dist/handlers/diagnose.js.map +1 -1
  83. package/dist/handlers/dispatch.d.ts +12 -1
  84. package/dist/handlers/dispatch.d.ts.map +1 -1
  85. package/dist/handlers/dispatch.js +160 -25
  86. package/dist/handlers/dispatch.js.map +1 -1
  87. package/dist/handlers/feature-cache.d.ts +27 -14
  88. package/dist/handlers/feature-cache.d.ts.map +1 -1
  89. package/dist/handlers/feature-cache.js +63 -25
  90. package/dist/handlers/feature-cache.js.map +1 -1
  91. package/dist/handlers/function-processing.d.ts +61 -0
  92. package/dist/handlers/function-processing.d.ts.map +1 -0
  93. package/dist/handlers/function-processing.js +45 -0
  94. package/dist/handlers/function-processing.js.map +1 -0
  95. package/dist/handlers/git.d.ts.map +1 -1
  96. package/dist/handlers/git.js +44 -19
  97. package/dist/handlers/git.js.map +1 -1
  98. package/dist/handlers/hyperfocused.d.ts.map +1 -1
  99. package/dist/handlers/hyperfocused.js +2 -3
  100. package/dist/handlers/hyperfocused.js.map +1 -1
  101. package/dist/handlers/lint.d.ts.map +1 -1
  102. package/dist/handlers/lint.js +7 -7
  103. package/dist/handlers/lint.js.map +1 -1
  104. package/dist/handlers/manage.d.ts.map +1 -1
  105. package/dist/handlers/manage.js +42 -25
  106. package/dist/handlers/manage.js.map +1 -1
  107. package/dist/handlers/navigate.d.ts.map +1 -1
  108. package/dist/handlers/navigate.js +27 -90
  109. package/dist/handlers/navigate.js.map +1 -1
  110. package/dist/handlers/object-types.d.ts +2 -0
  111. package/dist/handlers/object-types.d.ts.map +1 -1
  112. package/dist/handlers/object-types.js +10 -0
  113. package/dist/handlers/object-types.js.map +1 -1
  114. package/dist/handlers/query.d.ts.map +1 -1
  115. package/dist/handlers/query.js +2 -2
  116. package/dist/handlers/query.js.map +1 -1
  117. package/dist/handlers/read.d.ts.map +1 -1
  118. package/dist/handlers/read.js +64 -41
  119. package/dist/handlers/read.js.map +1 -1
  120. package/dist/handlers/schemas.d.ts +64 -16
  121. package/dist/handlers/schemas.d.ts.map +1 -1
  122. package/dist/handlers/schemas.js +123 -32
  123. package/dist/handlers/schemas.js.map +1 -1
  124. package/dist/handlers/search.d.ts.map +1 -1
  125. package/dist/handlers/search.js +8 -7
  126. package/dist/handlers/search.js.map +1 -1
  127. package/dist/handlers/shared.d.ts +13 -0
  128. package/dist/handlers/shared.d.ts.map +1 -1
  129. package/dist/handlers/shared.js +15 -0
  130. package/dist/handlers/shared.js.map +1 -1
  131. package/dist/handlers/tool-descriptions.d.ts +4 -0
  132. package/dist/handlers/tool-descriptions.d.ts.map +1 -0
  133. package/dist/handlers/tool-descriptions.js +52 -0
  134. package/dist/handlers/tool-descriptions.js.map +1 -0
  135. package/dist/handlers/tool-registry.d.ts +18 -4
  136. package/dist/handlers/tool-registry.d.ts.map +1 -1
  137. package/dist/handlers/tool-registry.js +18 -0
  138. package/dist/handlers/tool-registry.js.map +1 -1
  139. package/dist/handlers/tools.d.ts.map +1 -1
  140. package/dist/handlers/tools.js +113 -90
  141. package/dist/handlers/tools.js.map +1 -1
  142. package/dist/handlers/transport.d.ts +1 -1
  143. package/dist/handlers/transport.d.ts.map +1 -1
  144. package/dist/handlers/transport.js +37 -10
  145. package/dist/handlers/transport.js.map +1 -1
  146. package/dist/handlers/where-used.d.ts +25 -0
  147. package/dist/handlers/where-used.d.ts.map +1 -0
  148. package/dist/handlers/where-used.js +94 -0
  149. package/dist/handlers/where-used.js.map +1 -0
  150. package/dist/handlers/write/class-surgery.d.ts.map +1 -1
  151. package/dist/handlers/write/class-surgery.js +11 -12
  152. package/dist/handlers/write/class-surgery.js.map +1 -1
  153. package/dist/handlers/write/create.d.ts.map +1 -1
  154. package/dist/handlers/write/create.js +194 -84
  155. package/dist/handlers/write/create.js.map +1 -1
  156. package/dist/handlers/write/rap.d.ts.map +1 -1
  157. package/dist/handlers/write/rap.js +9 -9
  158. package/dist/handlers/write/rap.js.map +1 -1
  159. package/dist/handlers/write/unit-surgery.d.ts +5 -0
  160. package/dist/handlers/write/unit-surgery.d.ts.map +1 -0
  161. package/dist/handlers/write/unit-surgery.js +47 -0
  162. package/dist/handlers/write/unit-surgery.js.map +1 -0
  163. package/dist/handlers/write/update-delete.js +8 -8
  164. package/dist/handlers/write/update-delete.js.map +1 -1
  165. package/dist/handlers/write-helpers.d.ts +7 -4
  166. package/dist/handlers/write-helpers.d.ts.map +1 -1
  167. package/dist/handlers/write-helpers.js +118 -63
  168. package/dist/handlers/write-helpers.js.map +1 -1
  169. package/dist/handlers/write.d.ts.map +1 -1
  170. package/dist/handlers/write.js +35 -13
  171. package/dist/handlers/write.js.map +1 -1
  172. package/dist/lint/lint.d.ts.map +1 -1
  173. package/dist/lint/lint.js +4 -2
  174. package/dist/lint/lint.js.map +1 -1
  175. package/dist/probe/catalog.js +1 -1
  176. package/dist/probe/catalog.js.map +1 -1
  177. package/dist/public/ui/app.js +1 -14
  178. package/dist/server/audit.d.ts +27 -15
  179. package/dist/server/audit.d.ts.map +1 -1
  180. package/dist/server/audit.js.map +1 -1
  181. package/dist/server/auth-rate-limit.d.ts +18 -9
  182. package/dist/server/auth-rate-limit.d.ts.map +1 -1
  183. package/dist/server/auth-rate-limit.js +31 -6
  184. package/dist/server/auth-rate-limit.js.map +1 -1
  185. package/dist/server/auth-summary.d.ts +4 -0
  186. package/dist/server/auth-summary.d.ts.map +1 -0
  187. package/dist/server/auth-summary.js +67 -0
  188. package/dist/server/auth-summary.js.map +1 -0
  189. package/dist/server/config.d.ts.map +1 -1
  190. package/dist/server/config.js +106 -3
  191. package/dist/server/config.js.map +1 -1
  192. package/dist/server/context.d.ts +12 -0
  193. package/dist/server/context.d.ts.map +1 -1
  194. package/dist/server/context.js.map +1 -1
  195. package/dist/server/destination-discovery.d.ts +36 -0
  196. package/dist/server/destination-discovery.d.ts.map +1 -0
  197. package/dist/server/destination-discovery.js +130 -0
  198. package/dist/server/destination-discovery.js.map +1 -0
  199. package/dist/server/destination-registry.d.ts +111 -0
  200. package/dist/server/destination-registry.d.ts.map +1 -0
  201. package/dist/server/destination-registry.js +449 -0
  202. package/dist/server/destination-registry.js.map +1 -0
  203. package/dist/server/http.d.ts +43 -1
  204. package/dist/server/http.d.ts.map +1 -1
  205. package/dist/server/http.js +283 -73
  206. package/dist/server/http.js.map +1 -1
  207. package/dist/server/logger.d.ts.map +1 -1
  208. package/dist/server/logger.js +58 -13
  209. package/dist/server/logger.js.map +1 -1
  210. package/dist/server/mcp-rate-limit.d.ts +6 -4
  211. package/dist/server/mcp-rate-limit.d.ts.map +1 -1
  212. package/dist/server/mcp-rate-limit.js +6 -4
  213. package/dist/server/mcp-rate-limit.js.map +1 -1
  214. package/dist/server/multi-target-basic-auth.d.ts +49 -0
  215. package/dist/server/multi-target-basic-auth.d.ts.map +1 -0
  216. package/dist/server/multi-target-basic-auth.js +246 -0
  217. package/dist/server/multi-target-basic-auth.js.map +1 -0
  218. package/dist/server/multi-target-catalog.d.ts +33 -0
  219. package/dist/server/multi-target-catalog.d.ts.map +1 -0
  220. package/dist/server/multi-target-catalog.js +130 -0
  221. package/dist/server/multi-target-catalog.js.map +1 -0
  222. package/dist/server/multi-target-destination-config.d.ts +12 -0
  223. package/dist/server/multi-target-destination-config.d.ts.map +1 -0
  224. package/dist/server/multi-target-destination-config.js +37 -0
  225. package/dist/server/multi-target-destination-config.js.map +1 -0
  226. package/dist/server/multi-target-destination-runtime.d.ts +20 -0
  227. package/dist/server/multi-target-destination-runtime.d.ts.map +1 -0
  228. package/dist/server/multi-target-destination-runtime.js +191 -0
  229. package/dist/server/multi-target-destination-runtime.js.map +1 -0
  230. package/dist/server/multi-target-feature-state.d.ts +6 -0
  231. package/dist/server/multi-target-feature-state.d.ts.map +1 -0
  232. package/dist/server/multi-target-feature-state.js +41 -0
  233. package/dist/server/multi-target-feature-state.js.map +1 -0
  234. package/dist/server/multi-target-identity.d.ts +10 -0
  235. package/dist/server/multi-target-identity.d.ts.map +1 -0
  236. package/dist/server/multi-target-identity.js +18 -0
  237. package/dist/server/multi-target-identity.js.map +1 -0
  238. package/dist/server/multi-target-runtime.d.ts +27 -0
  239. package/dist/server/multi-target-runtime.d.ts.map +1 -0
  240. package/dist/server/multi-target-runtime.js +110 -0
  241. package/dist/server/multi-target-runtime.js.map +1 -0
  242. package/dist/server/multi-target-server.d.ts +53 -0
  243. package/dist/server/multi-target-server.d.ts.map +1 -0
  244. package/dist/server/multi-target-server.js +434 -0
  245. package/dist/server/multi-target-server.js.map +1 -0
  246. package/dist/server/multi-target-shared-auth-state.d.ts +82 -0
  247. package/dist/server/multi-target-shared-auth-state.d.ts.map +1 -0
  248. package/dist/server/multi-target-shared-auth-state.js +226 -0
  249. package/dist/server/multi-target-shared-auth-state.js.map +1 -0
  250. package/dist/server/multi-target-tools.d.ts +20 -0
  251. package/dist/server/multi-target-tools.d.ts.map +1 -0
  252. package/dist/server/multi-target-tools.js +191 -0
  253. package/dist/server/multi-target-tools.js.map +1 -0
  254. package/dist/server/oauth-session-recovery.d.ts +22 -0
  255. package/dist/server/oauth-session-recovery.d.ts.map +1 -0
  256. package/dist/server/oauth-session-recovery.js +69 -0
  257. package/dist/server/oauth-session-recovery.js.map +1 -0
  258. package/dist/server/server.d.ts +39 -27
  259. package/dist/server/server.d.ts.map +1 -1
  260. package/dist/server/server.js +433 -300
  261. package/dist/server/server.js.map +1 -1
  262. package/dist/server/sinks/btp-auditlog.d.ts.map +1 -1
  263. package/dist/server/sinks/btp-auditlog.js +83 -11
  264. package/dist/server/sinks/btp-auditlog.js.map +1 -1
  265. package/dist/server/tool-auth.d.ts +10 -0
  266. package/dist/server/tool-auth.d.ts.map +1 -0
  267. package/dist/server/tool-auth.js +75 -0
  268. package/dist/server/tool-auth.js.map +1 -0
  269. package/dist/server/trace-context.d.ts +51 -0
  270. package/dist/server/trace-context.d.ts.map +1 -0
  271. package/dist/server/trace-context.js +100 -0
  272. package/dist/server/trace-context.js.map +1 -0
  273. package/dist/server/types.d.ts +27 -6
  274. package/dist/server/types.d.ts.map +1 -1
  275. package/dist/server/types.js +5 -2
  276. package/dist/server/types.js.map +1 -1
  277. package/dist/server/ui-state.d.ts +0 -2
  278. package/dist/server/ui-state.d.ts.map +1 -1
  279. package/dist/server/ui-state.js +0 -4
  280. package/dist/server/ui-state.js.map +1 -1
  281. package/dist/server/ui.d.ts.map +1 -1
  282. package/dist/server/ui.js +0 -7
  283. package/dist/server/ui.js.map +1 -1
  284. package/package.json +16 -13
  285. package/dist/cache/warmup.d.ts +0 -41
  286. package/dist/cache/warmup.d.ts.map +0 -1
  287. package/dist/cache/warmup.js +0 -337
  288. package/dist/cache/warmup.js.map +0 -1
  289. package/dist/server/elicit.d.ts +0 -43
  290. package/dist/server/elicit.d.ts.map +0 -1
  291. package/dist/server/elicit.js +0 -183
  292. package/dist/server/elicit.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"class-surgery.js","sourceRoot":"","sources":["../../../src/handlers/write/class-surgery.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"class-surgery.js","sourceRoot":"","sources":["../../../src/handlers/write/class-surgery.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/handlers/write/create.ts"],"names":[],"mappings":"AAAA;;GAEG;AAkCH,OAAO,EAAe,KAAK,UAAU,EAAc,MAAM,cAAc,CAAC;AAkBxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAmOpD,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC,CA0WjF;AAED,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC,CAictF"}
1
+ {"version":3,"file":"create.d.ts","sourceRoot":"","sources":["../../../src/handlers/write/create.ts"],"names":[],"mappings":"AAAA;;GAEG;AA2CH,OAAO,EAAe,KAAK,UAAU,EAAc,MAAM,cAAc,CAAC;AAmBxE,OAAO,KAAK,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AA2XpD,wBAAsB,iBAAiB,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC,CAkWjF;AAED,wBAAsB,sBAAsB,CAAC,GAAG,EAAE,eAAe,GAAG,OAAO,CAAC,UAAU,CAAC,CAwftF"}
@@ -7,17 +7,19 @@ import { activate, activateBatch } from '../../adt/devtools.js';
7
7
  import { AdtApiError } from '../../adt/errors.js';
8
8
  import { spliceFmSignature } from '../../adt/fm-signature.js';
9
9
  import { checkPackage } from '../../adt/safety.js';
10
+ import { isServerDrivenObjectType } from '../../adt/server-driven.js';
10
11
  import { getTransport, getTransportInfo } from '../../adt/transport.js';
11
- import { escapeXmlAttr } from '../../adt/xml-parser.js';
12
+ import { escapeXmlAttr, parseFunctionModuleProperties } from '../../adt/xml-parser.js';
12
13
  import { validateAffHeader } from '../../aff/validator.js';
13
14
  import { logger } from '../../server/logger.js';
14
15
  import { buildBatchActivationStatuses, formatBatchActivationStatuses, } from '../activate.js';
15
16
  import { invalidateInactiveList } from '../cache-security.js';
16
17
  import { guardCdsSyntax } from '../cds-hints.js';
17
- import { cachedFeatures, isTablesEndpointAvailable, isTableTypesEndpointAvailable } from '../feature-cache.js';
18
- import { normalizeObjectType, normalizeWriteObjectType, objectBasePath, objectUrlForType, sourceUrlForType, } from '../object-types.js';
18
+ import { getCachedFeatures, isDomainsEndpointAvailable, isTablesEndpointAvailable, isTableTypesEndpointAvailable, } from '../feature-cache.js';
19
+ import { functionGroupObjectUrl, functionModuleObjectUrl, normalizeObjectType, normalizeWriteObjectType, objectBasePath, objectUrlForType, sourceUrlForType, } from '../object-types.js';
19
20
  import { errorResult, textResult } from '../shared.js';
20
- import { buildCreateXml, createContentTypeForType, dtelNeedsPostCreateUpdate, 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, dtelNeedsPostCreateUpdate, 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';
22
+ const FUNCTION_MODULE_MEDIA_TYPE = /^application\/vnd\.sap\.adt\.functions\.fmodules(?:\.v\d+)?\+xml\b/i;
21
23
  function normalizePackageOverride(rawPackage, fallback) {
22
24
  if (rawPackage === undefined || rawPackage === null) {
23
25
  return fallback;
@@ -32,6 +34,95 @@ function normalizeTransportOverride(rawTransport) {
32
34
  const value = String(rawTransport).trim();
33
35
  return value || undefined;
34
36
  }
37
+ function prepareFunctionModuleCreateSource(name, source, parameters) {
38
+ const shouldWrite = !!source || (parameters !== undefined && parameters.length > 0);
39
+ if (!shouldWrite)
40
+ return { shouldWrite: false, source: '', warnings: [] };
41
+ let prepared = source ?? '';
42
+ const warnings = [];
43
+ if (parameters !== undefined) {
44
+ const baseSource = !prepared || prepared.trim() === ''
45
+ ? `FUNCTION ${name}.\nENDFUNCTION.\n`
46
+ : /^\s*FUNCTION\s+/i.test(prepared)
47
+ ? prepared
48
+ : `FUNCTION ${name}.\n${prepared}\nENDFUNCTION.\n`;
49
+ try {
50
+ prepared = spliceFmSignature(baseSource, name, parameters);
51
+ }
52
+ catch {
53
+ prepared = baseSource;
54
+ warnings.push('Could not splice structured parameters: source did not start with FUNCTION keyword. Used the supplied source verbatim.');
55
+ }
56
+ }
57
+ const stripped = stripFmParamCommentBlock(prepared);
58
+ if (stripped.wasStripped) {
59
+ warnings.push('Stripped *"…IMPORTING/EXPORTING…*" parameter comment blocks (pass `parameters` as a structured array instead).');
60
+ }
61
+ return { shouldWrite: true, source: stripped.source, warnings };
62
+ }
63
+ function getHeader(headers, name) {
64
+ return Object.entries(headers).find(([key]) => key.toLowerCase() === name.toLowerCase())?.[1];
65
+ }
66
+ /**
67
+ * Change only the processing attributes on the server-provided FUNC metadata
68
+ * envelope. SAP creates a normal function-module shell first; processing type
69
+ * is persisted by a subsequent locked metadata PUT (the same lifecycle used by
70
+ * the ADT Properties → Specific view).
71
+ */
72
+ function rewriteFunctionModuleProcessingMetadata(xml, processingType, updateTaskKind) {
73
+ const rootMatch = /<fmodule:abapFunctionModule\b[^>]*>/i.exec(xml);
74
+ if (!rootMatch || rootMatch.index === undefined) {
75
+ throw new Error('FUNC processing metadata update failed: SAP did not return an abapFunctionModule envelope.');
76
+ }
77
+ const withoutProcessingAttributes = rootMatch[0]
78
+ .replace(/\s+fmodule:processingType\s*=\s*(?:"[^"]*"|'[^']*')/gi, '')
79
+ .replace(/\s+fmodule:updateTaskKind\s*=\s*(?:"[^"]*"|'[^']*')/gi, '');
80
+ const attributes = ` fmodule:processingType="${escapeXmlAttr(processingType)}"${updateTaskKind === undefined ? '' : ` fmodule:updateTaskKind="${escapeXmlAttr(updateTaskKind)}"`}`;
81
+ const rewrittenRoot = withoutProcessingAttributes.replace(/<fmodule:abapFunctionModule/i, (root) => `${root}${attributes}`);
82
+ return `${xml.slice(0, rootMatch.index)}${rewrittenRoot}${xml.slice(rootMatch.index + rootMatch[0].length)}`;
83
+ }
84
+ async function persistFunctionModuleProcessingMetadata(client, objectUrl, name, processingType, updateTaskKind, transport) {
85
+ try {
86
+ const inactiveUrl = `${objectUrl}?version=inactive`;
87
+ const current = await client.getObjectMetadata(inactiveUrl);
88
+ const body = rewriteFunctionModuleProcessingMetadata(current.body, processingType, updateTaskKind);
89
+ // Send the bare media type: SAP returns "…fmodules.v3+xml; charset=utf-8"
90
+ // (v2 on 750), and on-prem backends are known to reject vendor media types
91
+ // carrying parameters — same reason `resolveObjectPackage` strips them.
92
+ const responseContentType = getHeader(current.headers, 'content-type');
93
+ const discoveredContentType = client.http.discoveryAcceptFor(objectUrl);
94
+ const contentType = [responseContentType, discoveredContentType]
95
+ .find((candidate) => candidate !== undefined && FUNCTION_MODULE_MEDIA_TYPE.test(candidate))
96
+ ?.split(';')[0]
97
+ ?.trim() ?? vendorContentTypeForType('FUNC');
98
+ await safeUpdateObject(client.http, client.safety, objectUrl, body, contentType, transport, getCachedFeatures()?.abapRelease);
99
+ // A 2xx response alone is insufficient evidence: the collection POST accepts
100
+ // these attributes and still retains `normal` (live-verified on 758).
101
+ const persisted = await client.getObjectMetadata(inactiveUrl);
102
+ const { processingType: actualProcessingType, updateTaskKind: actualUpdateTaskKind } = parseFunctionModuleProperties(persisted.body);
103
+ if (actualProcessingType !== processingType ||
104
+ (updateTaskKind === undefined ? actualUpdateTaskKind !== undefined : actualUpdateTaskKind !== updateTaskKind)) {
105
+ throw new Error(`SAP retained processingType="${actualProcessingType ?? 'unknown'}"${actualUpdateTaskKind === undefined ? '' : ` and updateTaskKind="${actualUpdateTaskKind}"`}.`);
106
+ }
107
+ }
108
+ catch (cause) {
109
+ const detail = cause instanceof Error ? cause.message : String(cause);
110
+ throw new Error(`FUNC post-create processing update failed for ${name} after SAP accepted the create POST. ` +
111
+ `The object may remain as a normal function-module shell. Review it with SAPRead or delete it before retrying. ` +
112
+ detail);
113
+ }
114
+ }
115
+ async function resolveFunctionGroupCreatePackage(client, group, requestedPackage, childType = 'FUNC') {
116
+ const actualPackage = await client.resolveObjectPackage(functionGroupObjectUrl(group));
117
+ if (!actualPackage) {
118
+ throw new Error(`${childType} create blocked: ARC-1 could not determine the parent function group "${group}" package from ADT metadata.`);
119
+ }
120
+ const explicitPackage = requestedPackage === undefined || requestedPackage === null ? undefined : String(requestedPackage).trim();
121
+ if (explicitPackage && explicitPackage.toUpperCase() !== actualPackage.toUpperCase()) {
122
+ throw new Error(`${childType} inherits package "${actualPackage}" from parent function group "${group}"; requested package "${explicitPackage}" does not match.`);
123
+ }
124
+ return actualPackage;
125
+ }
35
126
  function ttypPostCreateFailureMessage(name, cause) {
36
127
  const detail = cause instanceof Error ? cause.message : String(cause);
37
128
  return (`TTYP post-create update failed for ${name} after SAP accepted the create POST. ` +
@@ -43,7 +134,7 @@ function ttypPostCreateFailureMessage(name, cause) {
43
134
  async function putTtypMetadataAfterCreate(client, objectUrl, name, body, contentType, transport) {
44
135
  try {
45
136
  await client.http.withStatefulSession(async (session) => {
46
- const lock = await lockObject(session, client.safety, objectUrl, 'MODIFY', cachedFeatures?.abapRelease);
137
+ const lock = await lockObject(session, client.safety, objectUrl, 'MODIFY', getCachedFeatures()?.abapRelease);
47
138
  const lockTransport = transport ?? (lock.corrNr || undefined);
48
139
  try {
49
140
  await updateObject(session, client.safety, objectUrl, body, lock.lockHandle, contentType, lockTransport);
@@ -210,7 +301,14 @@ function isKtdCreateEndpointUnavailable(err) {
210
301
  }
211
302
  export async function writeActionCreate(ctx) {
212
303
  const { client, args, config, type, name, source, transport, lintOverride, preflightOverride, objectUrl, srcUrl, invalidateWrittenObject, } = ctx;
213
- const pkg = String(args.package ?? '$TMP');
304
+ // FUNC and FUGR structural includes both INHERIT the parent group's package — SAP ignores
305
+ // _package for them — so the allowlist must be checked against the group's real package.
306
+ // Gating on args.package here would let a caller write into a disallowed package by claiming $TMP.
307
+ const groupArg = String(args.group ?? '').trim();
308
+ const inheritsGroupPackage = type === 'FUNC' || (type === 'INCL' && groupArg !== '');
309
+ const pkg = inheritsGroupPackage
310
+ ? await resolveFunctionGroupCreatePackage(client, groupArg, args.package, type === 'INCL' ? 'INCL' : 'FUNC')
311
+ : String(args.package ?? '$TMP');
214
312
  await checkPackage(client.safety, pkg, client.getPackageHierarchyResolver());
215
313
  const description = String(args.description ?? name);
216
314
  // Pre-flight: check transport requirements for non-$TMP packages when no transport provided.
@@ -262,11 +360,11 @@ export async function writeActionCreate(ctx) {
262
360
  }
263
361
  }
264
362
  // CDS pre-write validation: reject unsupported syntax early
265
- const cdsGuard = guardCdsSyntax(type, source, cachedFeatures);
363
+ const cdsGuard = guardCdsSyntax(type, source, getCachedFeatures());
266
364
  if (cdsGuard)
267
365
  return cdsGuard;
268
366
  // RAP deterministic preflight validation (before object creation to avoid stubs)
269
- const preflightWarnings = runRapPreflightValidation(source, type, name, cachedFeatures, config.systemType, preflightOverride);
367
+ const preflightWarnings = runRapPreflightValidation(source, type, name, getCachedFeatures(), config.systemType, preflightOverride);
270
368
  if (preflightWarnings.blocked)
271
369
  return preflightWarnings.result;
272
370
  // AFF header validation (if schema available for this type)
@@ -304,7 +402,7 @@ export async function writeActionCreate(ctx) {
304
402
  const ktdCreateUrl = '/sap/bc/adt/documentation/ktd/documents';
305
403
  let ktdResult;
306
404
  try {
307
- ktdResult = await createObject(client.http, client.safety, ktdCreateUrl, ktdBody, SKTD_V2_CONTENT_TYPE, effectiveTransport, undefined, cachedFeatures?.abapRelease);
405
+ ktdResult = await createObject(client.http, client.safety, ktdCreateUrl, ktdBody, SKTD_V2_CONTENT_TYPE, effectiveTransport, undefined, getCachedFeatures()?.abapRelease);
308
406
  }
309
407
  catch (err) {
310
408
  if (isKtdCreateEndpointUnavailable(err)) {
@@ -321,7 +419,7 @@ export async function writeActionCreate(ctx) {
321
419
  if (source) {
322
420
  const { source: currentEnvelope } = await client.getKtd(name);
323
421
  const body = rewriteKtdText(currentEnvelope, source);
324
- await safeUpdateObject(client.http, client.safety, objectUrl, body, SKTD_V2_CONTENT_TYPE, effectiveTransport, cachedFeatures?.abapRelease);
422
+ await safeUpdateObject(client.http, client.safety, objectUrl, body, SKTD_V2_CONTENT_TYPE, effectiveTransport, getCachedFeatures()?.abapRelease);
325
423
  invalidateWrittenObject(type, name);
326
424
  return textResult(`Created SKTD ${name} in package ${pkg} and wrote Markdown content.\nNext step: SAPActivate(type="SKTD", name="${name}").\n${ktdResult}`);
327
425
  }
@@ -343,11 +441,11 @@ export async function writeActionCreate(ctx) {
343
441
  // DOMA/DTEL/BDEF require vendor-specific content types; all other types use
344
442
  // 'application/*' — the wildcard lets the SAP server resolve the correct
345
443
  // handler (matching how ADT Eclipse and abap-adt-api send requests).
346
- const contentType = createContentTypeForType(type, cloud);
444
+ const contentType = createContentTypeForType(type, cloud, type === 'INCL' && String(args.group ?? '').trim() !== '');
347
445
  const needsPackageParam = type === 'BDEF' || type === 'TABL' || type === 'TABL/DT' || type === 'TABL/DS';
348
446
  let result;
349
447
  try {
350
- result = await createObject(client.http, client.safety, createUrl, body, contentType, effectiveTransport, needsPackageParam ? pkg : undefined, cachedFeatures?.abapRelease, systemType, name);
448
+ result = await createObject(client.http, client.safety, createUrl, body, contentType, effectiveTransport, needsPackageParam ? pkg : undefined, getCachedFeatures()?.abapRelease, systemType, name);
351
449
  }
352
450
  catch (createErr) {
353
451
  if (createErr instanceof AdtApiError && (createErr.statusCode === 400 || createErr.statusCode === 409)) {
@@ -370,6 +468,9 @@ export async function writeActionCreate(ctx) {
370
468
  // opportunistic only — package create falls back to an explicit `responsible`
371
469
  }
372
470
  }
471
+ if (type === 'FUNC' && metadataProperties.processingType !== undefined) {
472
+ await persistFunctionModuleProcessingMetadata(client, objectUrl, name, metadataProperties.processingType, metadataProperties.updateTaskKind, effectiveTransport);
473
+ }
373
474
  if (isMetadataWriteType(type)) {
374
475
  // SAP's DTEL POST ignores labels, searchHelp, etc. — they require a follow-up PUT.
375
476
  // Use withStatefulSession directly (not safeUpdateObject) to keep the lock cycle
@@ -377,7 +478,7 @@ export async function writeActionCreate(ctx) {
377
478
  if (type === 'DTEL' && dtelNeedsPostCreateUpdate(metadataProperties)) {
378
479
  const ct = vendorContentTypeForType(type);
379
480
  await client.http.withStatefulSession(async (session) => {
380
- const lock = await lockObject(session, client.safety, objectUrl, 'MODIFY', cachedFeatures?.abapRelease, systemType);
481
+ const lock = await lockObject(session, client.safety, objectUrl, 'MODIFY', getCachedFeatures()?.abapRelease, systemType);
381
482
  const lockTransport = effectiveTransport ?? (lock.corrNr || undefined);
382
483
  try {
383
484
  await updateObject(session, client.safety, objectUrl, body, lock.lockHandle, ct, lockTransport);
@@ -391,7 +492,7 @@ export async function writeActionCreate(ctx) {
391
492
  if (type === 'MSAG' && Array.isArray(metadataProperties.messages) && metadataProperties.messages.length > 0) {
392
493
  const ct = vendorContentTypeForType(type);
393
494
  await client.http.withStatefulSession(async (session) => {
394
- const lock = await lockObject(session, client.safety, objectUrl, 'MODIFY', cachedFeatures?.abapRelease, systemType);
495
+ const lock = await lockObject(session, client.safety, objectUrl, 'MODIFY', getCachedFeatures()?.abapRelease, systemType);
395
496
  const lockTransport = effectiveTransport ?? (lock.corrNr || undefined);
396
497
  try {
397
498
  await updateObject(session, client.safety, objectUrl, body, lock.lockHandle, ct, lockTransport);
@@ -417,55 +518,26 @@ export async function writeActionCreate(ctx) {
417
518
  // provided we must follow up with a source PUT even when `source` is
418
519
  // omitted (the array alone synthesizes a minimal FUNCTION/ENDFUNCTION
419
520
  // body containing the signature clause).
420
- const funcParameters = type === 'FUNC' ? args.parameters : undefined;
421
- const shouldWriteSource = !!source || (funcParameters !== undefined && funcParameters.length > 0);
521
+ const funcPreparation = type === 'FUNC'
522
+ ? prepareFunctionModuleCreateSource(name, source, args.parameters)
523
+ : { shouldWrite: !!source, source: source ?? '', warnings: [] };
524
+ const shouldWriteSource = funcPreparation.shouldWrite;
422
525
  if (shouldWriteSource) {
423
- // FUNC: build/splice the signature, then strip SAPGUI parameter comment
424
- // blocks as defense-in-depth (see update path for rationale).
425
- let createSource = source ?? '';
426
- let fmParamStripWarning;
427
- let fmParamMergeWarning;
428
- if (type === 'FUNC') {
429
- if (funcParameters !== undefined) {
430
- let baseSource;
431
- if (!createSource || createSource.trim() === '') {
432
- baseSource = `FUNCTION ${name}.\nENDFUNCTION.\n`;
433
- }
434
- else if (!/^\s*FUNCTION\s+/i.test(createSource)) {
435
- // Body-only source — wrap so the splicer has a signature region.
436
- baseSource = `FUNCTION ${name}.\n${createSource}\nENDFUNCTION.\n`;
437
- }
438
- else {
439
- baseSource = createSource;
440
- }
441
- try {
442
- createSource = spliceFmSignature(baseSource, name, funcParameters);
443
- }
444
- catch {
445
- createSource = baseSource;
446
- fmParamMergeWarning =
447
- 'Could not splice structured parameters: source did not start with FUNCTION keyword. Used the supplied source verbatim.';
448
- }
449
- }
450
- const stripped = stripFmParamCommentBlock(createSource);
451
- createSource = stripped.source;
452
- if (stripped.wasStripped) {
453
- fmParamStripWarning =
454
- 'Stripped *"…IMPORTING/EXPORTING…*" parameter comment blocks (pass `parameters` as a structured array instead).';
455
- }
456
- }
526
+ // FUNC processing metadata is paired with a source signature prepared above;
527
+ // other object types use their supplied source unchanged.
528
+ const createSource = funcPreparation.source;
457
529
  // Pre-write lint validation
458
530
  const lintWarnings = runPreWriteLint(createSource, type, name, config, lintOverride);
459
531
  if (lintWarnings.blocked) {
460
532
  return textResult(`Created ${type} ${name} in package ${pkg}, but source was rejected by lint:\n${lintWarnings.result.content[0].text}`);
461
533
  }
462
- await safeUpdateSource(client.http, client.safety, objectUrl, srcUrl, createSource, effectiveTransport, cachedFeatures?.abapRelease);
534
+ await safeUpdateSource(client.http, client.safety, objectUrl, srcUrl, createSource, effectiveTransport, getCachedFeatures()?.abapRelease);
463
535
  const bdefExtensionWarning = bdefExtensionBase
464
536
  ? await warnIfBdefExtensionUnconfirmed(client, name, bdefExtensionBase)
465
537
  : undefined;
466
538
  invalidateWrittenObject(type, name);
467
539
  const msg = `Created ${type} ${name} in package ${pkg} and wrote source code.`;
468
- const warnings = mergePreWriteWarnings(preflightWarnings.warnings, lintWarnings.warnings, fmParamStripWarning, fmParamMergeWarning, bdefExtensionWarning);
540
+ const warnings = mergePreWriteWarnings(preflightWarnings.warnings, lintWarnings.warnings, ...funcPreparation.warnings, bdefExtensionWarning);
469
541
  return warnings ? textResult(`${msg}\n\n${warnings}`) : textResult(msg);
470
542
  }
471
543
  return textResult(`Created ${type} ${name} in package ${pkg}.\n${result}`);
@@ -487,8 +559,31 @@ export async function writeActionBatchCreate(ctx) {
487
559
  const objName = String(obj.name ?? '');
488
560
  const objPackage = normalizePackageOverride(obj.package, defaultPackage);
489
561
  const explicitTransport = normalizeTransportOverride(obj.transport) ?? transport;
490
- return { obj, type: objType, name: objName, packageName: objPackage, explicitTransport };
562
+ const group = objType === 'FUNC' ? String(obj.group ?? args.group ?? '').trim() : undefined;
563
+ const objectUrl = objType === 'FUNC' ? (group ? functionModuleObjectUrl(group, objName) : '') : objectUrlForType(objType, objName);
564
+ return { obj, type: objType, name: objName, packageName: objPackage, explicitTransport, group, objectUrl };
491
565
  });
566
+ const functionWithoutGroup = batchPlan.find((item) => item.type === 'FUNC' && !item.group);
567
+ if (functionWithoutGroup) {
568
+ return errorResult(`FUNC ${functionWithoutGroup.name} in batch_create requires "group" on the object entry or top-level request.`);
569
+ }
570
+ // A FUNC is contained by its FUGR and inherits the parent's package. Resolve
571
+ // that package before any safety or transport check; trusting the batch's
572
+ // caller-supplied/default package would gate the wrong object boundary.
573
+ try {
574
+ for (const plan of batchPlan) {
575
+ if (plan.type === 'FUNC') {
576
+ plan.packageName = await resolveFunctionGroupCreatePackage(client, plan.group,
577
+ // The top-level package is the default for ordinary batch entries,
578
+ // not a claim about a contained FUNC. Only an item-level package is
579
+ // explicit enough to assert the inherited FUGR package.
580
+ plan.obj.package);
581
+ }
582
+ }
583
+ }
584
+ catch (err) {
585
+ return errorResult(err instanceof Error ? err.message : String(err));
586
+ }
492
587
  // Check every target package before starting any creates.
493
588
  // Resolver is shared across the loop so subtree BFS happens once even when
494
589
  // many objects target descendants of the same `ZFOO/**` root.
@@ -511,8 +606,7 @@ export async function writeActionBatchCreate(ctx) {
511
606
  }
512
607
  for (const [pkg, plan] of firstPlanNeedingTransportByPackage) {
513
608
  try {
514
- const firstUrl = objectUrlForType(plan.type, plan.name);
515
- const transportInfo = await getTransportInfo(client.http, client.safety, firstUrl, pkg, 'I');
609
+ const transportInfo = await getTransportInfo(client.http, client.safety, plan.objectUrl, pkg, 'I');
516
610
  if (transportInfo.lockedTransport) {
517
611
  autoTransportByPackage.set(pkg, transportInfo.lockedTransport);
518
612
  }
@@ -556,11 +650,16 @@ export async function writeActionBatchCreate(ctx) {
556
650
  const cloud = systemType === 'btp';
557
651
  const responsible = config.username || (await client.getEffectiveUser());
558
652
  for (const plan of batchPlan) {
559
- const { obj, type: objType, name: objName, packageName: objPackage } = plan;
653
+ const { obj, type: objType, name: objName, packageName: objPackage, objectUrl: objUrl } = plan;
560
654
  const objTransport = plan.explicitTransport ?? autoTransportByPackage.get(objPackage);
561
655
  const metadataObject = isMetadataWriteType(objType);
562
- const objSource = obj.source ? String(obj.source) : undefined;
656
+ let objSource = obj.source ? String(obj.source) : undefined;
563
657
  const objDescription = String(obj.description ?? objName);
658
+ if (objType === 'FUNC') {
659
+ const prepared = prepareFunctionModuleCreateSource(objName, objSource, obj.parameters);
660
+ objSource = prepared.shouldWrite ? prepared.source : undefined;
661
+ batchWarnings.push(...prepared.warnings.map((warning) => `${objType} ${objName}: ${warning}`));
662
+ }
564
663
  // Mixed-case object name rejection (matches the create-path check above).
565
664
  // Universal SAP convention — TADIR is uppercase on every release.
566
665
  // Cheap check first: no HTTP call, fail fast on bad names.
@@ -608,7 +707,7 @@ export async function writeActionBatchCreate(ctx) {
608
707
  // Pre-validate source with lint BEFORE creating the object to avoid orphaned objects.
609
708
  // Metadata objects (DOMA/DTEL) are XML-only and intentionally skip source lint.
610
709
  if (!metadataObject && objSource) {
611
- const preflightWarnings = runRapPreflightValidation(objSource, objType, objName, cachedFeatures, config.systemType, preflightOverride);
710
+ const preflightWarnings = runRapPreflightValidation(objSource, objType, objName, getCachedFeatures(), config.systemType, preflightOverride);
612
711
  if (preflightWarnings.blocked) {
613
712
  results.push({
614
713
  type: objType,
@@ -646,6 +745,17 @@ export async function writeActionBatchCreate(ctx) {
646
745
  });
647
746
  break;
648
747
  }
748
+ // DOMA create needs /ddic/domains/ (absent wholesale on NW 7.50/7.51) — mirror the gate above.
749
+ if (objType === 'DOMA' && isDomainsEndpointAvailable() === false) {
750
+ results.push({
751
+ type: objType,
752
+ name: objName,
753
+ packageName: objPackage,
754
+ status: 'failed',
755
+ error: DOMA_WRITE_UNAVAILABLE_HINT,
756
+ });
757
+ break;
758
+ }
649
759
  // TTYP create needs /ddic/tabletypes/ (absent on NW 7.50) — mirror the TABL/DT gate above.
650
760
  if (objType === 'TTYP' && isTableTypesEndpointAvailable() === false) {
651
761
  results.push({
@@ -657,9 +767,24 @@ export async function writeActionBatchCreate(ctx) {
657
767
  });
658
768
  break;
659
769
  }
660
- const objUrl = objectUrlForType(objType, objName);
770
+ // Server-driven objects need the AFF engine (handleServerDrivenObjectWrite), which only runs on
771
+ // the single-object path. objectBasePath() has no SDO case and silently falls through to the
772
+ // PROG path, so without this guard a batched SDO would POST a program create body.
773
+ if (isServerDrivenObjectType(objType)) {
774
+ results.push({
775
+ type: objType,
776
+ name: objName,
777
+ packageName: objPackage,
778
+ status: 'failed',
779
+ error: `batch_create does not support server-driven object type ${objType}. Create it with a single SAPWrite(action="create", type="${objType}", name="${objName}") call.`,
780
+ });
781
+ break;
782
+ }
661
783
  const createUrl = objUrl.replace(/\/[^/]+$/, '');
662
784
  const objMetadataProps = getMetadataWriteProperties(obj);
785
+ if (objType === 'FUNC') {
786
+ objMetadataProps.group = plan.group;
787
+ }
663
788
  // Sets behaviorExtension + baseBdef on the metadata so buildCreateXml emits the adtTemplate;
664
789
  // the return value (used for the optional read-back warning) isn't needed in the batch path.
665
790
  applyBdefBehaviorExtensionMetadata(objType, objSource, objMetadataProps);
@@ -667,7 +792,7 @@ export async function writeActionBatchCreate(ctx) {
667
792
  const contentType = createContentTypeForType(objType, cloud);
668
793
  const needsPackageParam = objType === 'BDEF' || objType === 'TABL' || objType === 'TABL/DT' || objType === 'TABL/DS';
669
794
  try {
670
- await createObject(client.http, client.safety, createUrl, body, contentType, objTransport, needsPackageParam ? objPackage : undefined, cachedFeatures?.abapRelease, systemType, objName);
795
+ await createObject(client.http, client.safety, createUrl, body, contentType, objTransport, needsPackageParam ? objPackage : undefined, getCachedFeatures()?.abapRelease, systemType, objName);
671
796
  }
672
797
  catch (createErr) {
673
798
  if (createErr instanceof AdtApiError && (createErr.statusCode === 400 || createErr.statusCode === 409)) {
@@ -678,10 +803,13 @@ export async function writeActionBatchCreate(ctx) {
678
803
  }
679
804
  throw createErr;
680
805
  }
806
+ if (objType === 'FUNC' && objMetadataProps.processingType !== undefined) {
807
+ await persistFunctionModuleProcessingMetadata(client, objUrl, objName, objMetadataProps.processingType, objMetadataProps.updateTaskKind, objTransport);
808
+ }
681
809
  // Step 1b: DTEL POST ignores labels — follow up with PUT on main session
682
810
  if (objType === 'DTEL' && dtelNeedsPostCreateUpdate(objMetadataProps)) {
683
811
  await client.http.withStatefulSession(async (session) => {
684
- const lock = await lockObject(session, client.safety, objUrl, 'MODIFY', cachedFeatures?.abapRelease);
812
+ const lock = await lockObject(session, client.safety, objUrl, 'MODIFY', getCachedFeatures()?.abapRelease);
685
813
  const lockTransport = objTransport ?? (lock.corrNr || undefined);
686
814
  try {
687
815
  await updateObject(session, client.safety, objUrl, body, lock.lockHandle, contentType, lockTransport);
@@ -697,30 +825,12 @@ export async function writeActionBatchCreate(ctx) {
697
825
  }
698
826
  // Step 2: Write source if provided
699
827
  if (!metadataObject && objSource) {
700
- const srcUrl = sourceUrlForType(objType, objName);
701
- await safeUpdateSource(client.http, client.safety, objUrl, srcUrl, objSource, objTransport, cachedFeatures?.abapRelease);
702
- }
703
- // Resolve the activation URL up front so both the inline path and the
704
- // deferred terminal-activate path use the same URL. FUNC needs the parent
705
- // function-group baked into the path (issue #250); objectUrlForType throws
706
- // for FUNC so we mirror the FUNC-aware resolver from handleSAPActivate. For
707
- // TABL we keep objUrl (already resolved to /tables/) — DDIC-structure FMs
708
- // aren't a real concept and the create path doesn't expose one.
709
- let activationUrl = objUrl;
710
- if (objType === 'FUNC') {
711
- let group = String(obj.group ?? args.group ?? '').trim();
712
- if (!group) {
713
- const resolved = cachingLayer
714
- ? await cachingLayer.resolveFuncGroup(client, objName)
715
- : await client.resolveFunctionGroup(objName);
716
- if (!resolved) {
717
- throw new Error(`Cannot resolve function group for FM "${objName}" in batch_create activation step. Provide "group" on the FUNC entry.`);
718
- }
719
- group = resolved;
720
- }
721
- const groupLc = encodeURIComponent(group.toLowerCase());
722
- activationUrl = `/sap/bc/adt/functions/groups/${groupLc}/fmodules/${encodeURIComponent(objName.toLowerCase())}`;
828
+ const srcUrl = objType === 'FUNC' ? `${objUrl}/source/main` : sourceUrlForType(objType, objName);
829
+ await safeUpdateSource(client.http, client.safety, objUrl, srcUrl, objSource, objTransport, getCachedFeatures()?.abapRelease);
723
830
  }
831
+ // objUrl is already subtype-aware (including parent-group routing for FUNC),
832
+ // so source and activation share one canonical address.
833
+ const activationUrl = objUrl;
724
834
  if (activateAtEnd) {
725
835
  // Step 3 deferred: track this object for the terminal activateBatch call.
726
836
  // Cache invalidation also moves to AFTER the terminal activate succeeds —