@mcp-abap-adt/adt-clients 0.1.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 (477) hide show
  1. package/LICENSE +22 -0
  2. package/README.md +184 -0
  3. package/bin/README.md +368 -0
  4. package/bin/lock-object.js +274 -0
  5. package/bin/manage-locks.js +331 -0
  6. package/bin/manage-sessions.js +235 -0
  7. package/bin/unlock-object.js +291 -0
  8. package/bin/unlock-test-objects.js +248 -0
  9. package/dist/clients/CrudClient.d.ts +48 -0
  10. package/dist/clients/CrudClient.d.ts.map +1 -0
  11. package/dist/clients/CrudClient.js +135 -0
  12. package/dist/clients/LockClient.d.ts +28 -0
  13. package/dist/clients/LockClient.d.ts.map +1 -0
  14. package/dist/clients/LockClient.js +141 -0
  15. package/dist/clients/ManagementClient.d.ts +34 -0
  16. package/dist/clients/ManagementClient.d.ts.map +1 -0
  17. package/dist/clients/ManagementClient.js +80 -0
  18. package/dist/clients/ReadOnlyClient.d.ts +70 -0
  19. package/dist/clients/ReadOnlyClient.d.ts.map +1 -0
  20. package/dist/clients/ReadOnlyClient.js +141 -0
  21. package/dist/clients/ValidationClient.d.ts +8 -0
  22. package/dist/clients/ValidationClient.d.ts.map +1 -0
  23. package/dist/clients/ValidationClient.js +14 -0
  24. package/dist/core/class/ClassBuilder.d.ts +140 -0
  25. package/dist/core/class/ClassBuilder.d.ts.map +1 -0
  26. package/dist/core/class/ClassBuilder.js +400 -0
  27. package/dist/core/class/activation.d.ts +11 -0
  28. package/dist/core/class/activation.d.ts.map +1 -0
  29. package/dist/core/class/activation.js +16 -0
  30. package/dist/core/class/check.d.ts +24 -0
  31. package/dist/core/class/check.d.ts.map +1 -0
  32. package/dist/core/class/check.js +73 -0
  33. package/dist/core/class/create.d.ts +30 -0
  34. package/dist/core/class/create.d.ts.map +1 -0
  35. package/dist/core/class/create.js +118 -0
  36. package/dist/core/class/index.d.ts +14 -0
  37. package/dist/core/class/index.d.ts.map +1 -0
  38. package/dist/core/class/index.js +31 -0
  39. package/dist/core/class/lock.d.ts +20 -0
  40. package/dist/core/class/lock.d.ts.map +1 -0
  41. package/dist/core/class/lock.js +49 -0
  42. package/dist/core/class/read.d.ts +34 -0
  43. package/dist/core/class/read.d.ts.map +1 -0
  44. package/dist/core/class/read.js +59 -0
  45. package/dist/core/class/run.d.ts +51 -0
  46. package/dist/core/class/run.d.ts.map +1 -0
  47. package/dist/core/class/run.js +105 -0
  48. package/dist/core/class/unlock.d.ts +11 -0
  49. package/dist/core/class/unlock.d.ts.map +1 -0
  50. package/dist/core/class/unlock.js +16 -0
  51. package/dist/core/class/update.d.ts +11 -0
  52. package/dist/core/class/update.d.ts.map +1 -0
  53. package/dist/core/class/update.js +30 -0
  54. package/dist/core/class/validation.d.ts +28 -0
  55. package/dist/core/class/validation.d.ts.map +1 -0
  56. package/dist/core/class/validation.js +269 -0
  57. package/dist/core/dataElement/DataElementBuilder.d.ts +113 -0
  58. package/dist/core/dataElement/DataElementBuilder.d.ts.map +1 -0
  59. package/dist/core/dataElement/DataElementBuilder.js +449 -0
  60. package/dist/core/dataElement/activation.d.ts +11 -0
  61. package/dist/core/dataElement/activation.d.ts.map +1 -0
  62. package/dist/core/dataElement/activation.js +123 -0
  63. package/dist/core/dataElement/check.d.ts +12 -0
  64. package/dist/core/dataElement/check.d.ts.map +1 -0
  65. package/dist/core/dataElement/check.js +32 -0
  66. package/dist/core/dataElement/create.d.ts +12 -0
  67. package/dist/core/dataElement/create.d.ts.map +1 -0
  68. package/dist/core/dataElement/create.js +259 -0
  69. package/dist/core/dataElement/delete.d.ts +14 -0
  70. package/dist/core/dataElement/delete.d.ts.map +1 -0
  71. package/dist/core/dataElement/delete.js +21 -0
  72. package/dist/core/dataElement/index.d.ts +14 -0
  73. package/dist/core/dataElement/index.d.ts.map +1 -0
  74. package/dist/core/dataElement/index.js +31 -0
  75. package/dist/core/dataElement/lock.d.ts +10 -0
  76. package/dist/core/dataElement/lock.d.ts.map +1 -0
  77. package/dist/core/dataElement/lock.js +31 -0
  78. package/dist/core/dataElement/read.d.ts +17 -0
  79. package/dist/core/dataElement/read.d.ts.map +1 -0
  80. package/dist/core/dataElement/read.js +42 -0
  81. package/dist/core/dataElement/types.d.ts +64 -0
  82. package/dist/core/dataElement/types.d.ts.map +1 -0
  83. package/dist/core/dataElement/types.js +5 -0
  84. package/dist/core/dataElement/unlock.d.ts +11 -0
  85. package/dist/core/dataElement/unlock.d.ts.map +1 -0
  86. package/dist/core/dataElement/unlock.js +17 -0
  87. package/dist/core/dataElement/update.d.ts +29 -0
  88. package/dist/core/dataElement/update.d.ts.map +1 -0
  89. package/dist/core/dataElement/update.js +269 -0
  90. package/dist/core/delete.d.ts +22 -0
  91. package/dist/core/delete.d.ts.map +1 -0
  92. package/dist/core/delete.js +148 -0
  93. package/dist/core/domain/DomainBuilder.d.ts +135 -0
  94. package/dist/core/domain/DomainBuilder.d.ts.map +1 -0
  95. package/dist/core/domain/DomainBuilder.js +430 -0
  96. package/dist/core/domain/activation.d.ts +11 -0
  97. package/dist/core/domain/activation.d.ts.map +1 -0
  98. package/dist/core/domain/activation.js +16 -0
  99. package/dist/core/domain/check.d.ts +16 -0
  100. package/dist/core/domain/check.d.ts.map +1 -0
  101. package/dist/core/domain/check.js +36 -0
  102. package/dist/core/domain/create.d.ts +21 -0
  103. package/dist/core/domain/create.d.ts.map +1 -0
  104. package/dist/core/domain/create.js +172 -0
  105. package/dist/core/domain/delete.d.ts +14 -0
  106. package/dist/core/domain/delete.d.ts.map +1 -0
  107. package/dist/core/domain/delete.js +21 -0
  108. package/dist/core/domain/index.d.ts +14 -0
  109. package/dist/core/domain/index.d.ts.map +1 -0
  110. package/dist/core/domain/index.js +31 -0
  111. package/dist/core/domain/lock.d.ts +15 -0
  112. package/dist/core/domain/lock.d.ts.map +1 -0
  113. package/dist/core/domain/lock.js +61 -0
  114. package/dist/core/domain/read.d.ts +17 -0
  115. package/dist/core/domain/read.d.ts.map +1 -0
  116. package/dist/core/domain/read.js +42 -0
  117. package/dist/core/domain/types.d.ts +38 -0
  118. package/dist/core/domain/types.d.ts.map +1 -0
  119. package/dist/core/domain/types.js +5 -0
  120. package/dist/core/domain/unlock.d.ts +11 -0
  121. package/dist/core/domain/unlock.d.ts.map +1 -0
  122. package/dist/core/domain/unlock.js +17 -0
  123. package/dist/core/domain/update.d.ts +12 -0
  124. package/dist/core/domain/update.d.ts.map +1 -0
  125. package/dist/core/domain/update.js +144 -0
  126. package/dist/core/functionGroup/FunctionGroupBuilder.d.ts +91 -0
  127. package/dist/core/functionGroup/FunctionGroupBuilder.d.ts.map +1 -0
  128. package/dist/core/functionGroup/FunctionGroupBuilder.js +268 -0
  129. package/dist/core/functionGroup/activation.d.ts +10 -0
  130. package/dist/core/functionGroup/activation.d.ts.map +1 -0
  131. package/dist/core/functionGroup/activation.js +30 -0
  132. package/dist/core/functionGroup/check.d.ts +24 -0
  133. package/dist/core/functionGroup/check.d.ts.map +1 -0
  134. package/dist/core/functionGroup/check.js +91 -0
  135. package/dist/core/functionGroup/create.d.ts +12 -0
  136. package/dist/core/functionGroup/create.d.ts.map +1 -0
  137. package/dist/core/functionGroup/create.js +90 -0
  138. package/dist/core/functionGroup/delete.d.ts +14 -0
  139. package/dist/core/functionGroup/delete.d.ts.map +1 -0
  140. package/dist/core/functionGroup/delete.js +21 -0
  141. package/dist/core/functionGroup/index.d.ts +15 -0
  142. package/dist/core/functionGroup/index.d.ts.map +1 -0
  143. package/dist/core/functionGroup/index.js +32 -0
  144. package/dist/core/functionGroup/lock.d.ts +25 -0
  145. package/dist/core/functionGroup/lock.d.ts.map +1 -0
  146. package/dist/core/functionGroup/lock.js +50 -0
  147. package/dist/core/functionGroup/read.d.ts +17 -0
  148. package/dist/core/functionGroup/read.d.ts.map +1 -0
  149. package/dist/core/functionGroup/read.js +42 -0
  150. package/dist/core/functionGroup/types.d.ts +11 -0
  151. package/dist/core/functionGroup/types.d.ts.map +1 -0
  152. package/dist/core/functionGroup/types.js +5 -0
  153. package/dist/core/functionGroup/unlock.d.ts +5 -0
  154. package/dist/core/functionGroup/unlock.d.ts.map +1 -0
  155. package/dist/core/functionGroup/unlock.js +8 -0
  156. package/dist/core/functionGroup/update.d.ts +20 -0
  157. package/dist/core/functionGroup/update.d.ts.map +1 -0
  158. package/dist/core/functionGroup/update.js +119 -0
  159. package/dist/core/functionGroup/validation.d.ts +10 -0
  160. package/dist/core/functionGroup/validation.d.ts.map +1 -0
  161. package/dist/core/functionGroup/validation.js +17 -0
  162. package/dist/core/functionModule/FunctionModuleBuilder.d.ts +101 -0
  163. package/dist/core/functionModule/FunctionModuleBuilder.d.ts.map +1 -0
  164. package/dist/core/functionModule/FunctionModuleBuilder.js +314 -0
  165. package/dist/core/functionModule/activation.d.ts +10 -0
  166. package/dist/core/functionModule/activation.d.ts.map +1 -0
  167. package/dist/core/functionModule/activation.js +17 -0
  168. package/dist/core/functionModule/check.d.ts +23 -0
  169. package/dist/core/functionModule/check.d.ts.map +1 -0
  170. package/dist/core/functionModule/check.js +116 -0
  171. package/dist/core/functionModule/create.d.ts +12 -0
  172. package/dist/core/functionModule/create.d.ts.map +1 -0
  173. package/dist/core/functionModule/create.js +158 -0
  174. package/dist/core/functionModule/delete.d.ts +15 -0
  175. package/dist/core/functionModule/delete.d.ts.map +1 -0
  176. package/dist/core/functionModule/delete.js +25 -0
  177. package/dist/core/functionModule/index.d.ts +15 -0
  178. package/dist/core/functionModule/index.d.ts.map +1 -0
  179. package/dist/core/functionModule/index.js +32 -0
  180. package/dist/core/functionModule/lock.d.ts +18 -0
  181. package/dist/core/functionModule/lock.d.ts.map +1 -0
  182. package/dist/core/functionModule/lock.js +52 -0
  183. package/dist/core/functionModule/read.d.ts +31 -0
  184. package/dist/core/functionModule/read.d.ts.map +1 -0
  185. package/dist/core/functionModule/read.js +57 -0
  186. package/dist/core/functionModule/types.d.ts +19 -0
  187. package/dist/core/functionModule/types.d.ts.map +1 -0
  188. package/dist/core/functionModule/types.js +5 -0
  189. package/dist/core/functionModule/unlock.d.ts +10 -0
  190. package/dist/core/functionModule/unlock.d.ts.map +1 -0
  191. package/dist/core/functionModule/unlock.js +20 -0
  192. package/dist/core/functionModule/update.d.ts +17 -0
  193. package/dist/core/functionModule/update.d.ts.map +1 -0
  194. package/dist/core/functionModule/update.js +103 -0
  195. package/dist/core/functionModule/validation.d.ts +27 -0
  196. package/dist/core/functionModule/validation.d.ts.map +1 -0
  197. package/dist/core/functionModule/validation.js +107 -0
  198. package/dist/core/interface/InterfaceBuilder.d.ts +98 -0
  199. package/dist/core/interface/InterfaceBuilder.d.ts.map +1 -0
  200. package/dist/core/interface/InterfaceBuilder.js +311 -0
  201. package/dist/core/interface/activation.d.ts +11 -0
  202. package/dist/core/interface/activation.d.ts.map +1 -0
  203. package/dist/core/interface/activation.js +16 -0
  204. package/dist/core/interface/check.d.ts +10 -0
  205. package/dist/core/interface/check.d.ts.map +1 -0
  206. package/dist/core/interface/check.js +18 -0
  207. package/dist/core/interface/create.d.ts +12 -0
  208. package/dist/core/interface/create.d.ts.map +1 -0
  209. package/dist/core/interface/create.js +119 -0
  210. package/dist/core/interface/delete.d.ts +20 -0
  211. package/dist/core/interface/delete.d.ts.map +1 -0
  212. package/dist/core/interface/delete.js +47 -0
  213. package/dist/core/interface/index.d.ts +15 -0
  214. package/dist/core/interface/index.d.ts.map +1 -0
  215. package/dist/core/interface/index.js +32 -0
  216. package/dist/core/interface/lock.d.ts +23 -0
  217. package/dist/core/interface/lock.d.ts.map +1 -0
  218. package/dist/core/interface/lock.js +51 -0
  219. package/dist/core/interface/read.d.ts +26 -0
  220. package/dist/core/interface/read.d.ts.map +1 -0
  221. package/dist/core/interface/read.js +51 -0
  222. package/dist/core/interface/types.d.ts +19 -0
  223. package/dist/core/interface/types.d.ts.map +1 -0
  224. package/dist/core/interface/types.js +5 -0
  225. package/dist/core/interface/unlock.d.ts +11 -0
  226. package/dist/core/interface/unlock.d.ts.map +1 -0
  227. package/dist/core/interface/unlock.js +35 -0
  228. package/dist/core/interface/update.d.ts +12 -0
  229. package/dist/core/interface/update.d.ts.map +1 -0
  230. package/dist/core/interface/update.js +82 -0
  231. package/dist/core/interface/validation.d.ts +10 -0
  232. package/dist/core/interface/validation.d.ts.map +1 -0
  233. package/dist/core/interface/validation.js +17 -0
  234. package/dist/core/managementOperations.d.ts +34 -0
  235. package/dist/core/managementOperations.d.ts.map +1 -0
  236. package/dist/core/managementOperations.js +136 -0
  237. package/dist/core/package/PackageBuilder.d.ts +129 -0
  238. package/dist/core/package/PackageBuilder.d.ts.map +1 -0
  239. package/dist/core/package/PackageBuilder.js +386 -0
  240. package/dist/core/package/check.d.ts +9 -0
  241. package/dist/core/package/check.d.ts.map +1 -0
  242. package/dist/core/package/check.js +29 -0
  243. package/dist/core/package/create.d.ts +12 -0
  244. package/dist/core/package/create.d.ts.map +1 -0
  245. package/dist/core/package/create.js +145 -0
  246. package/dist/core/package/delete.d.ts +27 -0
  247. package/dist/core/package/delete.d.ts.map +1 -0
  248. package/dist/core/package/delete.js +138 -0
  249. package/dist/core/package/index.d.ts +15 -0
  250. package/dist/core/package/index.d.ts.map +1 -0
  251. package/dist/core/package/index.js +32 -0
  252. package/dist/core/package/lock.d.ts +10 -0
  253. package/dist/core/package/lock.d.ts.map +1 -0
  254. package/dist/core/package/lock.js +28 -0
  255. package/dist/core/package/read.d.ts +17 -0
  256. package/dist/core/package/read.d.ts.map +1 -0
  257. package/dist/core/package/read.js +42 -0
  258. package/dist/core/package/transportCheck.d.ts +10 -0
  259. package/dist/core/package/transportCheck.d.ts.map +1 -0
  260. package/dist/core/package/transportCheck.js +52 -0
  261. package/dist/core/package/types.d.ts +15 -0
  262. package/dist/core/package/types.d.ts.map +1 -0
  263. package/dist/core/package/types.js +5 -0
  264. package/dist/core/package/unlock.d.ts +11 -0
  265. package/dist/core/package/unlock.d.ts.map +1 -0
  266. package/dist/core/package/unlock.js +16 -0
  267. package/dist/core/package/update.d.ts +19 -0
  268. package/dist/core/package/update.d.ts.map +1 -0
  269. package/dist/core/package/update.js +125 -0
  270. package/dist/core/package/validation.d.ts +14 -0
  271. package/dist/core/package/validation.d.ts.map +1 -0
  272. package/dist/core/package/validation.js +72 -0
  273. package/dist/core/program/ProgramBuilder.d.ts +102 -0
  274. package/dist/core/program/ProgramBuilder.d.ts.map +1 -0
  275. package/dist/core/program/ProgramBuilder.js +321 -0
  276. package/dist/core/program/activation.d.ts +11 -0
  277. package/dist/core/program/activation.d.ts.map +1 -0
  278. package/dist/core/program/activation.js +16 -0
  279. package/dist/core/program/check.d.ts +10 -0
  280. package/dist/core/program/check.d.ts.map +1 -0
  281. package/dist/core/program/check.js +18 -0
  282. package/dist/core/program/create.d.ts +23 -0
  283. package/dist/core/program/create.d.ts.map +1 -0
  284. package/dist/core/program/create.js +159 -0
  285. package/dist/core/program/delete.d.ts +14 -0
  286. package/dist/core/program/delete.d.ts.map +1 -0
  287. package/dist/core/program/delete.js +21 -0
  288. package/dist/core/program/index.d.ts +14 -0
  289. package/dist/core/program/index.d.ts.map +1 -0
  290. package/dist/core/program/index.js +31 -0
  291. package/dist/core/program/lock.d.ts +20 -0
  292. package/dist/core/program/lock.d.ts.map +1 -0
  293. package/dist/core/program/lock.js +49 -0
  294. package/dist/core/program/read.d.ts +26 -0
  295. package/dist/core/program/read.d.ts.map +1 -0
  296. package/dist/core/program/read.js +51 -0
  297. package/dist/core/program/unlock.d.ts +11 -0
  298. package/dist/core/program/unlock.d.ts.map +1 -0
  299. package/dist/core/program/unlock.js +16 -0
  300. package/dist/core/program/update.d.ts +16 -0
  301. package/dist/core/program/update.d.ts.map +1 -0
  302. package/dist/core/program/update.js +82 -0
  303. package/dist/core/program/validation.d.ts +10 -0
  304. package/dist/core/program/validation.d.ts.map +1 -0
  305. package/dist/core/program/validation.js +17 -0
  306. package/dist/core/readOperations.d.ts +63 -0
  307. package/dist/core/readOperations.d.ts.map +1 -0
  308. package/dist/core/readOperations.js +204 -0
  309. package/dist/core/shared/checkRun.d.ts +68 -0
  310. package/dist/core/shared/checkRun.d.ts.map +1 -0
  311. package/dist/core/shared/checkRun.js +292 -0
  312. package/dist/core/shared/readMetadata.d.ts +16 -0
  313. package/dist/core/shared/readMetadata.d.ts.map +1 -0
  314. package/dist/core/shared/readMetadata.js +74 -0
  315. package/dist/core/shared/readSource.d.ts +21 -0
  316. package/dist/core/shared/readSource.d.ts.map +1 -0
  317. package/dist/core/shared/readSource.js +83 -0
  318. package/dist/core/shared/search.d.ts +26 -0
  319. package/dist/core/shared/search.d.ts.map +1 -0
  320. package/dist/core/shared/search.js +32 -0
  321. package/dist/core/shared/sqlQuery.d.ts +22 -0
  322. package/dist/core/shared/sqlQuery.d.ts.map +1 -0
  323. package/dist/core/shared/sqlQuery.js +36 -0
  324. package/dist/core/shared/systemInfo.d.ts +22 -0
  325. package/dist/core/shared/systemInfo.d.ts.map +1 -0
  326. package/dist/core/shared/systemInfo.js +67 -0
  327. package/dist/core/shared/tableContents.d.ts +22 -0
  328. package/dist/core/shared/tableContents.d.ts.map +1 -0
  329. package/dist/core/shared/tableContents.js +89 -0
  330. package/dist/core/shared/validation.d.ts +26 -0
  331. package/dist/core/shared/validation.d.ts.map +1 -0
  332. package/dist/core/shared/validation.js +134 -0
  333. package/dist/core/shared/whereUsed.d.ts +19 -0
  334. package/dist/core/shared/whereUsed.d.ts.map +1 -0
  335. package/dist/core/shared/whereUsed.js +88 -0
  336. package/dist/core/structure/StructureBuilder.d.ts +124 -0
  337. package/dist/core/structure/StructureBuilder.d.ts.map +1 -0
  338. package/dist/core/structure/StructureBuilder.js +357 -0
  339. package/dist/core/structure/activation.d.ts +10 -0
  340. package/dist/core/structure/activation.d.ts.map +1 -0
  341. package/dist/core/structure/activation.js +15 -0
  342. package/dist/core/structure/check.d.ts +12 -0
  343. package/dist/core/structure/check.d.ts.map +1 -0
  344. package/dist/core/structure/check.js +44 -0
  345. package/dist/core/structure/create.d.ts +12 -0
  346. package/dist/core/structure/create.d.ts.map +1 -0
  347. package/dist/core/structure/create.js +136 -0
  348. package/dist/core/structure/delete.d.ts +14 -0
  349. package/dist/core/structure/delete.d.ts.map +1 -0
  350. package/dist/core/structure/delete.js +21 -0
  351. package/dist/core/structure/index.d.ts +15 -0
  352. package/dist/core/structure/index.d.ts.map +1 -0
  353. package/dist/core/structure/index.js +32 -0
  354. package/dist/core/structure/lock.d.ts +10 -0
  355. package/dist/core/structure/lock.d.ts.map +1 -0
  356. package/dist/core/structure/lock.js +28 -0
  357. package/dist/core/structure/read.d.ts +26 -0
  358. package/dist/core/structure/read.d.ts.map +1 -0
  359. package/dist/core/structure/read.js +51 -0
  360. package/dist/core/structure/types.d.ts +33 -0
  361. package/dist/core/structure/types.d.ts.map +1 -0
  362. package/dist/core/structure/types.js +5 -0
  363. package/dist/core/structure/unlock.d.ts +11 -0
  364. package/dist/core/structure/unlock.d.ts.map +1 -0
  365. package/dist/core/structure/unlock.js +16 -0
  366. package/dist/core/structure/update.d.ts +11 -0
  367. package/dist/core/structure/update.d.ts.map +1 -0
  368. package/dist/core/structure/update.js +26 -0
  369. package/dist/core/structure/validation.d.ts +10 -0
  370. package/dist/core/structure/validation.d.ts.map +1 -0
  371. package/dist/core/structure/validation.js +17 -0
  372. package/dist/core/table/TableBuilder.d.ts +115 -0
  373. package/dist/core/table/TableBuilder.d.ts.map +1 -0
  374. package/dist/core/table/TableBuilder.js +328 -0
  375. package/dist/core/table/activation.d.ts +10 -0
  376. package/dist/core/table/activation.d.ts.map +1 -0
  377. package/dist/core/table/activation.js +15 -0
  378. package/dist/core/table/check.d.ts +11 -0
  379. package/dist/core/table/check.d.ts.map +1 -0
  380. package/dist/core/table/check.js +30 -0
  381. package/dist/core/table/create.d.ts +12 -0
  382. package/dist/core/table/create.d.ts.map +1 -0
  383. package/dist/core/table/create.js +182 -0
  384. package/dist/core/table/delete.d.ts +14 -0
  385. package/dist/core/table/delete.d.ts.map +1 -0
  386. package/dist/core/table/delete.js +21 -0
  387. package/dist/core/table/index.d.ts +15 -0
  388. package/dist/core/table/index.d.ts.map +1 -0
  389. package/dist/core/table/index.js +32 -0
  390. package/dist/core/table/lock.d.ts +9 -0
  391. package/dist/core/table/lock.d.ts.map +1 -0
  392. package/dist/core/table/lock.js +29 -0
  393. package/dist/core/table/read.d.ts +26 -0
  394. package/dist/core/table/read.d.ts.map +1 -0
  395. package/dist/core/table/read.js +51 -0
  396. package/dist/core/table/types.d.ts +10 -0
  397. package/dist/core/table/types.d.ts.map +1 -0
  398. package/dist/core/table/types.js +5 -0
  399. package/dist/core/table/unlock.d.ts +15 -0
  400. package/dist/core/table/unlock.d.ts.map +1 -0
  401. package/dist/core/table/unlock.js +32 -0
  402. package/dist/core/table/update.d.ts +16 -0
  403. package/dist/core/table/update.d.ts.map +1 -0
  404. package/dist/core/table/update.js +32 -0
  405. package/dist/core/table/validation.d.ts +10 -0
  406. package/dist/core/table/validation.d.ts.map +1 -0
  407. package/dist/core/table/validation.js +17 -0
  408. package/dist/core/transport/TransportBuilder.d.ts +85 -0
  409. package/dist/core/transport/TransportBuilder.d.ts.map +1 -0
  410. package/dist/core/transport/TransportBuilder.js +154 -0
  411. package/dist/core/transport/create.d.ts +11 -0
  412. package/dist/core/transport/create.d.ts.map +1 -0
  413. package/dist/core/transport/create.js +157 -0
  414. package/dist/core/transport/index.d.ts +8 -0
  415. package/dist/core/transport/index.d.ts.map +1 -0
  416. package/dist/core/transport/index.js +25 -0
  417. package/dist/core/transport/read.d.ts +10 -0
  418. package/dist/core/transport/read.d.ts.map +1 -0
  419. package/dist/core/transport/read.js +22 -0
  420. package/dist/core/transport/types.d.ts +10 -0
  421. package/dist/core/transport/types.d.ts.map +1 -0
  422. package/dist/core/transport/types.js +5 -0
  423. package/dist/core/view/ViewBuilder.d.ts +117 -0
  424. package/dist/core/view/ViewBuilder.d.ts.map +1 -0
  425. package/dist/core/view/ViewBuilder.js +335 -0
  426. package/dist/core/view/activation.d.ts +10 -0
  427. package/dist/core/view/activation.d.ts.map +1 -0
  428. package/dist/core/view/activation.js +15 -0
  429. package/dist/core/view/check.d.ts +7 -0
  430. package/dist/core/view/check.d.ts.map +1 -0
  431. package/dist/core/view/check.js +57 -0
  432. package/dist/core/view/create.d.ts +12 -0
  433. package/dist/core/view/create.d.ts.map +1 -0
  434. package/dist/core/view/create.js +88 -0
  435. package/dist/core/view/delete.d.ts +14 -0
  436. package/dist/core/view/delete.d.ts.map +1 -0
  437. package/dist/core/view/delete.js +21 -0
  438. package/dist/core/view/index.d.ts +15 -0
  439. package/dist/core/view/index.d.ts.map +1 -0
  440. package/dist/core/view/index.js +32 -0
  441. package/dist/core/view/lock.d.ts +18 -0
  442. package/dist/core/view/lock.d.ts.map +1 -0
  443. package/dist/core/view/lock.js +45 -0
  444. package/dist/core/view/read.d.ts +26 -0
  445. package/dist/core/view/read.d.ts.map +1 -0
  446. package/dist/core/view/read.js +51 -0
  447. package/dist/core/view/types.d.ts +19 -0
  448. package/dist/core/view/types.d.ts.map +1 -0
  449. package/dist/core/view/types.js +5 -0
  450. package/dist/core/view/unlock.d.ts +10 -0
  451. package/dist/core/view/unlock.d.ts.map +1 -0
  452. package/dist/core/view/unlock.js +15 -0
  453. package/dist/core/view/update.d.ts +12 -0
  454. package/dist/core/view/update.d.ts.map +1 -0
  455. package/dist/core/view/update.js +89 -0
  456. package/dist/core/view/validation.d.ts +10 -0
  457. package/dist/core/view/validation.d.ts.map +1 -0
  458. package/dist/core/view/validation.js +17 -0
  459. package/dist/core.d.ts +133 -0
  460. package/dist/core.d.ts.map +1 -0
  461. package/dist/core.js +175 -0
  462. package/dist/index.d.ts +38 -0
  463. package/dist/index.d.ts.map +1 -0
  464. package/dist/index.js +60 -0
  465. package/dist/utils/activationUtils.d.ts +44 -0
  466. package/dist/utils/activationUtils.d.ts.map +1 -0
  467. package/dist/utils/activationUtils.js +127 -0
  468. package/dist/utils/internalUtils.d.ts +12 -0
  469. package/dist/utils/internalUtils.d.ts.map +1 -0
  470. package/dist/utils/internalUtils.js +16 -0
  471. package/dist/utils/lockStateManager.d.ts +64 -0
  472. package/dist/utils/lockStateManager.d.ts.map +1 -0
  473. package/dist/utils/lockStateManager.js +172 -0
  474. package/dist/utils/sessionUtils.d.ts +69 -0
  475. package/dist/utils/sessionUtils.d.ts.map +1 -0
  476. package/dist/utils/sessionUtils.js +134 -0
  477. package/package.json +75 -0
@@ -0,0 +1,235 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * CLI utility to manage session state files
4
+ *
5
+ * Usage:
6
+ * adt-manage-sessions [options] <command>
7
+ *
8
+ * Commands:
9
+ * list Show all active sessions
10
+ * info <sessionId> Show session details
11
+ * cleanup Remove stale sessions
12
+ * clear Clear all sessions
13
+ * help Show this help message
14
+ *
15
+ * Options:
16
+ * --sessions-dir <path> Directory with session files (default: .sessions)
17
+ * --help, -h Show help
18
+ *
19
+ * Examples:
20
+ * adt-manage-sessions list
21
+ * adt-manage-sessions --sessions-dir /custom/path list
22
+ * adt-manage-sessions info my-session-id
23
+ * adt-manage-sessions cleanup
24
+ */
25
+
26
+ const path = require('path');
27
+ const { FileSessionStorage } = require('@mcp-abap-adt/connection');
28
+
29
+ // Parse command line arguments
30
+ function parseArgs() {
31
+ const args = process.argv.slice(2);
32
+ const options = {
33
+ sessionsDir: '.sessions',
34
+ command: null,
35
+ commandArgs: []
36
+ };
37
+
38
+ for (let i = 0; i < args.length; i++) {
39
+ const arg = args[i];
40
+
41
+ if (arg === '--sessions-dir' && i + 1 < args.length) {
42
+ options.sessionsDir = args[++i];
43
+ } else if (arg === '--help' || arg === '-h' || arg === 'help') {
44
+ return { ...options, command: 'help' };
45
+ } else if (!options.command) {
46
+ options.command = arg;
47
+ } else {
48
+ options.commandArgs.push(arg);
49
+ }
50
+ }
51
+
52
+ return options;
53
+ }
54
+
55
+ function showHelp() {
56
+ console.log(`
57
+ adt-manage-sessions - Manage HTTP session state (cookies, CSRF tokens)
58
+
59
+ USAGE:
60
+ adt-manage-sessions [options] <command>
61
+
62
+ COMMANDS:
63
+ list Show all active sessions with metadata
64
+ info <sessionId> Show detailed session information
65
+ cleanup Remove stale sessions (>30 min or from dead processes)
66
+ clear Clear all sessions from storage
67
+ help Show this help message
68
+
69
+ OPTIONS:
70
+ --sessions-dir <path> Directory with session files (default: .sessions)
71
+ --help, -h Show this help
72
+
73
+ EXAMPLES:
74
+ # List all sessions
75
+ adt-manage-sessions list
76
+
77
+ # Use custom sessions directory
78
+ adt-manage-sessions --sessions-dir /custom/.sessions list
79
+
80
+ # Show session details
81
+ adt-manage-sessions info test-session-123
82
+
83
+ # Clean up stale sessions
84
+ adt-manage-sessions cleanup
85
+
86
+ # Clear all sessions
87
+ adt-manage-sessions clear
88
+
89
+ FILES:
90
+ .sessions/<sessionId>.json Session state files (cookies, CSRF tokens)
91
+
92
+ For more info: https://github.com/fr0ster/mcp-abap-adt-clients
93
+ `);
94
+ }
95
+
96
+ const options = parseArgs();
97
+
98
+ // Show help
99
+ if (!options.command || options.command === 'help') {
100
+ showHelp();
101
+ process.exit(0);
102
+ }
103
+
104
+ const sessionStorage = new FileSessionStorage({
105
+ sessionDir: options.sessionsDir,
106
+ prettyPrint: true
107
+ });
108
+
109
+ function formatAge(ms) {
110
+ const seconds = Math.floor(ms / 1000);
111
+ const minutes = Math.floor(seconds / 60);
112
+ const hours = Math.floor(minutes / 60);
113
+
114
+ if (hours > 0) {
115
+ return `${hours}h ${minutes % 60}m`;
116
+ } else if (minutes > 0) {
117
+ return `${minutes}m ${seconds % 60}s`;
118
+ } else {
119
+ return `${seconds}s`;
120
+ }
121
+ }
122
+
123
+ function formatSessionInfo(sessionId, metadata) {
124
+ const processStatus = (() => {
125
+ try {
126
+ process.kill(metadata.pid, 0);
127
+ return '🟢 Running';
128
+ } catch {
129
+ return '🔴 Dead';
130
+ }
131
+ })();
132
+
133
+ return `
134
+ Session ID: ${sessionId}
135
+ Created: ${new Date(metadata.timestamp).toISOString()}
136
+ Age: ${formatAge(metadata.age)}
137
+ Process: ${metadata.pid} ${processStatus}`;
138
+ }
139
+
140
+ async function main() {
141
+ const command = process.argv[2];
142
+ const arg = process.argv[3];
143
+
144
+ if (!command || command === 'list') {
145
+ // List all sessions
146
+ const sessions = await sessionStorage.listSessions();
147
+
148
+ if (sessions.length === 0) {
149
+ console.log('✅ No active sessions found');
150
+ return;
151
+ }
152
+
153
+ console.log(`\n📋 Active Sessions (${sessions.length}):\n`);
154
+
155
+ for (const sessionId of sessions) {
156
+ const metadata = await sessionStorage.getSessionMetadata(sessionId);
157
+ if (metadata) {
158
+ console.log(formatSessionInfo(sessionId, metadata));
159
+ }
160
+ }
161
+ console.log();
162
+
163
+ } else if (command === 'info') {
164
+ // Show session details
165
+ if (!arg) {
166
+ console.error('❌ Usage: manage-sessions info <sessionId>');
167
+ process.exit(1);
168
+ }
169
+
170
+ const state = await sessionStorage.load(arg);
171
+ const metadata = await sessionStorage.getSessionMetadata(arg);
172
+
173
+ if (!state || !metadata) {
174
+ console.error(`❌ Session not found: ${arg}`);
175
+ process.exit(1);
176
+ }
177
+
178
+ console.log(formatSessionInfo(arg, metadata));
179
+ console.log('\nSession State:');
180
+ console.log(` Has Cookies: ${!!state.cookies}`);
181
+ console.log(` Has CSRF Token: ${!!state.csrfToken}`);
182
+ console.log(` Cookie Store: ${Object.keys(state.cookieStore).length} entries`);
183
+
184
+ if (state.cookies) {
185
+ console.log(`\nCookies:\n ${state.cookies}`);
186
+ }
187
+
188
+ if (state.csrfToken) {
189
+ console.log(`\nCSRF Token:\n ${state.csrfToken}`);
190
+ }
191
+
192
+ if (Object.keys(state.cookieStore).length > 0) {
193
+ console.log('\nCookie Store:');
194
+ for (const [key, value] of Object.entries(state.cookieStore)) {
195
+ console.log(` ${key}: ${value}`);
196
+ }
197
+ }
198
+
199
+ } else if (command === 'cleanup') {
200
+ // Clean up stale sessions
201
+ console.log('🧹 Cleaning up stale sessions...\n');
202
+
203
+ const stale = await sessionStorage.cleanupStaleSessions();
204
+ const dead = await sessionStorage.cleanupDeadProcessSessions();
205
+
206
+ const allCleaned = [...new Set([...stale, ...dead])];
207
+
208
+ if (allCleaned.length === 0) {
209
+ console.log('✅ No stale sessions to cleanup');
210
+ } else {
211
+ console.log(`🧹 Cleaned up ${allCleaned.length} session(s):`);
212
+ allCleaned.forEach(id => console.log(` - ${id}`));
213
+ }
214
+
215
+ } else if (command === 'clear') {
216
+ // Clear all sessions
217
+ const sessions = await sessionStorage.listSessions();
218
+ await sessionStorage.clearAll();
219
+ console.log(`🧹 Cleared ${sessions.length} session(s)`);
220
+
221
+ } else {
222
+ console.error(`❌ Unknown command: ${command}`);
223
+ console.error('Usage:');
224
+ console.error(' manage-sessions list - Show all active sessions');
225
+ console.error(' manage-sessions info <sessionId> - Show session details');
226
+ console.error(' manage-sessions cleanup - Remove stale sessions');
227
+ console.error(' manage-sessions clear - Clear all sessions');
228
+ process.exit(1);
229
+ }
230
+ }
231
+
232
+ main().catch(error => {
233
+ console.error('❌ Error:', error.message);
234
+ process.exit(1);
235
+ });
@@ -0,0 +1,291 @@
1
+ #!/usr/bin/env node
2
+ /**
3
+ * Unlock Object CLI - Unlock an SAP object using saved session/lock handle
4
+ *
5
+ * Usage:
6
+ * adt-unlock-object <type> <name> [options]
7
+ *
8
+ * Examples:
9
+ * adt-unlock-object class ZCL_MY_CLASS --session-id my_session
10
+ * adt-unlock-object program Z_MY_PROGRAM --session-id auto_123456
11
+ * adt-unlock-object fm MY_FUNCTION_MODULE --function-group Z_MY_FUGR --session-id my_session
12
+ */
13
+
14
+ const path = require('path');
15
+ const fs = require('fs');
16
+
17
+ // Color codes for terminal output
18
+ const colors = {
19
+ reset: '\x1b[0m',
20
+ bright: '\x1b[1m',
21
+ green: '\x1b[32m',
22
+ red: '\x1b[31m',
23
+ yellow: '\x1b[33m',
24
+ blue: '\x1b[34m',
25
+ cyan: '\x1b[36m',
26
+ };
27
+
28
+ function showHelp() {
29
+ console.log(`
30
+ ${colors.bright}Unlock Object CLI${colors.reset} - Unlock an SAP object using saved session/lock handle
31
+
32
+ ${colors.bright}USAGE:${colors.reset}
33
+ adt-unlock-object <type> <name> --session-id <id> [options]
34
+
35
+ ${colors.bright}ARGUMENTS:${colors.reset}
36
+ type Object type: class, program, interface, fm, domain, dataelement
37
+ name Object name (e.g., ZCL_MY_CLASS, Z_MY_PROGRAM)
38
+
39
+ ${colors.bright}REQUIRED OPTIONS:${colors.reset}
40
+ --session-id <id> Session ID used when locking
41
+
42
+ ${colors.bright}OPTIONS:${colors.reset}
43
+ --function-group <name> Function group name (required for fm type)
44
+ --sessions-dir <path> Sessions directory (default: .sessions)
45
+ --locks-dir <path> Locks directory (default: .locks)
46
+ --env <path> Path to .env file (default: .env)
47
+ --help, -h Show this help message
48
+
49
+ ${colors.bright}EXAMPLES:${colors.reset}
50
+ # Unlock a class
51
+ adt-unlock-object class ZCL_MY_CLASS --session-id my_session
52
+
53
+ # Unlock a program
54
+ adt-unlock-object program Z_MY_PROGRAM --session-id auto_1234567890
55
+
56
+ # Unlock a function module
57
+ adt-unlock-object fm MY_FUNCTION_MODULE --function-group Z_MY_FUGR --session-id my_session
58
+
59
+ # Unlock with custom directories
60
+ adt-unlock-object class ZCL_TEST --session-id test --sessions-dir /tmp/sessions --locks-dir /tmp/locks
61
+
62
+ ${colors.bright}NOTES:${colors.reset}
63
+ - Restores session from <sessions-dir>/<session-id>.json
64
+ - Retrieves lock handle from <locks-dir>/active-locks.json
65
+ - Removes lock from registry after successful unlock
66
+ - Use same session-id that was used with 'adt-lock-object'
67
+ `);
68
+ }
69
+
70
+ async function main() {
71
+ const args = process.argv.slice(2);
72
+
73
+ // Show help
74
+ if (args.length === 0 || args.includes('--help') || args.includes('-h')) {
75
+ showHelp();
76
+ process.exit(0);
77
+ }
78
+
79
+ // Parse arguments
80
+ const objectType = args[0];
81
+ const objectName = args[1];
82
+
83
+ if (!objectType || !objectName) {
84
+ console.error(`${colors.red}Error: Object type and name are required${colors.reset}`);
85
+ console.log(`Run with --help for usage information`);
86
+ process.exit(1);
87
+ }
88
+
89
+ // Parse options
90
+ let functionGroup;
91
+ let sessionId;
92
+ let sessionsDir = '.sessions';
93
+ let locksDir = '.locks';
94
+ let envPath = '.env';
95
+
96
+ for (let i = 2; i < args.length; i++) {
97
+ if (args[i] === '--function-group' && args[i + 1]) {
98
+ functionGroup = args[++i];
99
+ } else if (args[i] === '--session-id' && args[i + 1]) {
100
+ sessionId = args[++i];
101
+ } else if (args[i] === '--sessions-dir' && args[i + 1]) {
102
+ sessionsDir = args[++i];
103
+ } else if (args[i] === '--locks-dir' && args[i + 1]) {
104
+ locksDir = args[++i];
105
+ } else if (args[i] === '--env' && args[i + 1]) {
106
+ envPath = args[++i];
107
+ }
108
+ }
109
+
110
+ // Validate required options
111
+ if (!sessionId) {
112
+ console.error(`${colors.red}Error: --session-id is required${colors.reset}`);
113
+ console.log(`Run with --help for usage information`);
114
+ process.exit(1);
115
+ }
116
+
117
+ // Validate function group for FM
118
+ if (objectType === 'fm' && !functionGroup) {
119
+ console.error(`${colors.red}Error: --function-group is required for function modules${colors.reset}`);
120
+ process.exit(1);
121
+ }
122
+
123
+ // Load environment
124
+ require('dotenv').config({ path: envPath });
125
+
126
+ const sapUrl = process.env.SAP_URL;
127
+ const sapUsername = process.env.SAP_USERNAME;
128
+ const sapPassword = process.env.SAP_PASSWORD;
129
+ const sapJwtToken = process.env.SAP_JWT_TOKEN;
130
+
131
+ if (!sapUrl) {
132
+ console.error(`${colors.red}Error: SAP_URL must be set in ${envPath}${colors.reset}`);
133
+ process.exit(1);
134
+ }
135
+
136
+ // Auto-detect auth type based on what's available
137
+ let sapAuthType;
138
+ if (sapJwtToken) {
139
+ sapAuthType = 'jwt';
140
+ } else if (sapUsername && sapPassword) {
141
+ sapAuthType = 'basic';
142
+ } else {
143
+ console.error(`${colors.red}Error: Either SAP_JWT_TOKEN or (SAP_USERNAME and SAP_PASSWORD) must be set in ${envPath}${colors.reset}`);
144
+ process.exit(1);
145
+ }
146
+
147
+ console.log(`${colors.cyan}🔓 Unlocking ${objectType}: ${objectName}${colors.reset}`);
148
+ if (functionGroup) {
149
+ console.log(`${colors.cyan} Function Group: ${functionGroup}${colors.reset}`);
150
+ }
151
+ console.log(`${colors.cyan} Session ID: ${sessionId}${colors.reset}`);
152
+
153
+ try {
154
+ // Dynamic imports
155
+ const { createAbapConnection, FileSessionStorage } = require('@mcp-abap-adt/connection');
156
+ const { LockStateManager } = require('../dist/utils/lockStateManager.js');
157
+
158
+ // Map object type to unlock function
159
+ let unlockFunction;
160
+ let adtObjectType;
161
+
162
+ switch (objectType.toLowerCase()) {
163
+ case 'class':
164
+ unlockFunction = require('../dist/core/class/unlock.js').unlockClass;
165
+ adtObjectType = 'class';
166
+ break;
167
+ case 'program':
168
+ unlockFunction = require('../dist/core/program/unlock.js').unlockProgram;
169
+ adtObjectType = 'program';
170
+ break;
171
+ case 'interface':
172
+ unlockFunction = require('../dist/core/interface/unlock.js').unlockInterface;
173
+ adtObjectType = 'interface';
174
+ break;
175
+ case 'fugr':
176
+ unlockFunction = require('../dist/core/functionGroup/lock.js').unlockFunctionGroup;
177
+ adtObjectType = 'fugr';
178
+ break;
179
+ case 'fm':
180
+ unlockFunction = require('../dist/core/functionModule/unlock.js').unlockFunctionModule;
181
+ adtObjectType = 'fm';
182
+ break;
183
+ case 'domain':
184
+ unlockFunction = require('../dist/core/domain/unlock.js').unlockDomain;
185
+ adtObjectType = 'domain';
186
+ break;
187
+ case 'dataelement':
188
+ unlockFunction = require('../dist/core/dataElement/unlock.js').unlockDataElement;
189
+ adtObjectType = 'dataElement';
190
+ break;
191
+ default:
192
+ console.error(`${colors.red}Error: Unsupported object type: ${objectType}${colors.reset}`);
193
+ console.log('Supported types: class, program, interface, fugr, fm, domain, dataelement');
194
+ process.exit(1);
195
+ }
196
+
197
+ // Load session from file
198
+ const sessionStorage = new FileSessionStorage({
199
+ sessionDir: sessionsDir,
200
+ prettyPrint: true,
201
+ });
202
+
203
+ console.log(`${colors.yellow}📂 Loading session...${colors.reset}`);
204
+ const sessionState = await sessionStorage.load(sessionId);
205
+
206
+ if (!sessionState) {
207
+ console.error(`${colors.red}Error: Session not found: ${sessionId}${colors.reset}`);
208
+ console.error(` Expected file: ${path.join(sessionsDir, sessionId + '.json')}`);
209
+ process.exit(1);
210
+ }
211
+
212
+ console.log(`${colors.green}✓ Session loaded${colors.reset}`);
213
+
214
+ // Get lock handle from lock manager
215
+ const lockManager = new LockStateManager(locksDir);
216
+ const lockState = lockManager.getLock(adtObjectType, objectName, functionGroup);
217
+
218
+ if (!lockState) {
219
+ console.error(`${colors.red}Error: Lock not found for ${objectType} ${objectName}${colors.reset}`);
220
+ console.error(` Check ${path.join(locksDir, 'active-locks.json')}`);
221
+ process.exit(1);
222
+ }
223
+
224
+ if (lockState.sessionId !== sessionId) {
225
+ console.warn(`${colors.yellow}Warning: Lock was created with different session ID${colors.reset}`);
226
+ console.warn(` Expected: ${sessionId}`);
227
+ console.warn(` Found: ${lockState.sessionId}`);
228
+ }
229
+
230
+ const lockHandle = lockState.lockHandle;
231
+ console.log(`${colors.green}✓ Lock handle retrieved${colors.reset}`);
232
+ console.log(` Lock Handle: ${colors.bright}${lockHandle}${colors.reset}`);
233
+
234
+ // Create connection config based on auth type
235
+ const config = {
236
+ url: sapUrl,
237
+ authType: sapAuthType,
238
+ };
239
+
240
+ if (sapAuthType === 'jwt') {
241
+ config.jwtToken = sapJwtToken;
242
+ } else {
243
+ config.username = sapUsername;
244
+ config.password = sapPassword;
245
+ }
246
+
247
+ const logger = {
248
+ debug: () => {},
249
+ info: console.log,
250
+ warn: console.warn,
251
+ error: console.error,
252
+ csrfToken: () => {},
253
+ };
254
+
255
+ const connection = createAbapConnection(config, logger);
256
+
257
+ // Enable stateful session - this will automatically load session state
258
+ await connection.enableStatefulSession(sessionId, sessionStorage);
259
+ console.log(`${colors.green}✓ Session restored to connection${colors.reset}`);
260
+
261
+ // Unlock the object
262
+ console.log(`${colors.yellow}🔓 Unlocking object...${colors.reset}`);
263
+
264
+ if (objectType.toLowerCase() === 'fm') {
265
+ await unlockFunction(connection, functionGroup, objectName, lockHandle, sessionId);
266
+ } else {
267
+ await unlockFunction(connection, objectName, lockHandle, sessionId);
268
+ }
269
+
270
+ console.log(`${colors.green}✓ Object unlocked successfully${colors.reset}`);
271
+
272
+ // Remove lock from registry
273
+ lockManager.removeLock(adtObjectType, objectName, functionGroup);
274
+ console.log(`${colors.green}✓ Lock removed from registry${colors.reset}`);
275
+
276
+ // Optionally cleanup session
277
+ console.log(`\n${colors.yellow}Session file preserved: ${path.join(sessionsDir, sessionId + '.json')}${colors.reset}`);
278
+ console.log(`To clean up session, run: rm ${path.join(sessionsDir, sessionId + '.json')}`);
279
+
280
+ console.log(`\n${colors.bright}${colors.green}SUCCESS!${colors.reset} Object unlocked.`);
281
+
282
+ } catch (error) {
283
+ console.error(`\n${colors.red}Error: ${error.message}${colors.reset}`);
284
+ if (error.response) {
285
+ console.error(`HTTP ${error.response.status}: ${error.response.statusText}`);
286
+ }
287
+ process.exit(1);
288
+ }
289
+ }
290
+
291
+ main();