@mcp-abap-adt/core 2.5.0 → 2.5.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +49 -0
- package/README.md +3 -0
- package/dist/handlers/bdef/handleCreateBehaviorDefinition.d.ts +50 -0
- package/dist/handlers/bdef/handleCreateBehaviorDefinition.d.ts.map +1 -0
- package/dist/handlers/bdef/handleCreateBehaviorDefinition.js +101 -0
- package/dist/handlers/bdef/handleGetBdef.d.ts +54 -0
- package/dist/handlers/bdef/handleGetBdef.d.ts.map +1 -0
- package/dist/handlers/bdef/handleGetBdef.js +89 -0
- package/dist/handlers/bdef/handleUpdateBehaviorDefinition.d.ts +37 -0
- package/dist/handlers/bdef/handleUpdateBehaviorDefinition.d.ts.map +1 -0
- package/dist/handlers/bdef/handleUpdateBehaviorDefinition.js +85 -0
- package/dist/handlers/behavior_definition/readonly/handleGetBdef.d.ts +54 -0
- package/dist/handlers/behavior_definition/readonly/handleGetBdef.d.ts.map +1 -0
- package/dist/handlers/behavior_definition/readonly/handleGetBdef.js +89 -0
- package/dist/handlers/class/handleCheckClass.d.ts +59 -0
- package/dist/handlers/class/handleCheckClass.d.ts.map +1 -0
- package/dist/handlers/class/handleCheckClass.js +138 -0
- package/dist/handlers/class/handleCreateClass.d.ts +80 -0
- package/dist/handlers/class/handleCreateClass.d.ts.map +1 -0
- package/dist/handlers/class/handleCreateClass.js +192 -0
- package/dist/handlers/class/handleGetClass.d.ts +16 -0
- package/dist/handlers/class/handleGetClass.d.ts.map +1 -0
- package/dist/handlers/class/handleGetClass.js +159 -0
- package/dist/handlers/class/handleUpdateClassSource.d.ts +44 -0
- package/dist/handlers/class/handleUpdateClassSource.d.ts.map +1 -0
- package/dist/handlers/class/handleUpdateClassSource.js +131 -0
- package/dist/handlers/class/handleValidateClass.d.ts +62 -0
- package/dist/handlers/class/handleValidateClass.d.ts.map +1 -0
- package/dist/handlers/class/handleValidateClass.js +136 -0
- package/dist/handlers/class/readonly/handleGetClass.d.ts +20 -0
- package/dist/handlers/class/readonly/handleGetClass.d.ts.map +1 -0
- package/dist/handlers/class/readonly/handleGetClass.js +159 -0
- package/dist/handlers/common/handleActivateObject.d.ts +62 -0
- package/dist/handlers/common/handleActivateObject.d.ts.map +1 -0
- package/dist/handlers/common/handleActivateObject.js +137 -0
- package/dist/handlers/common/handleCheckObject.d.ts +63 -0
- package/dist/handlers/common/handleCheckObject.d.ts.map +1 -0
- package/dist/handlers/common/handleCheckObject.js +197 -0
- package/dist/handlers/common/handleDeleteObject.d.ts +46 -0
- package/dist/handlers/common/handleDeleteObject.d.ts.map +1 -0
- package/dist/handlers/common/handleDeleteObject.js +176 -0
- package/dist/handlers/common/handleLockObject.d.ts +57 -0
- package/dist/handlers/common/handleLockObject.d.ts.map +1 -0
- package/dist/handlers/common/handleLockObject.js +195 -0
- package/dist/handlers/common/handleUnlockObject.d.ts +61 -0
- package/dist/handlers/common/handleUnlockObject.d.ts.map +1 -0
- package/dist/handlers/common/handleUnlockObject.js +178 -0
- package/dist/handlers/common/handleValidateObject.d.ts +58 -0
- package/dist/handlers/common/handleValidateObject.d.ts.map +1 -0
- package/dist/handlers/common/handleValidateObject.js +177 -0
- package/dist/handlers/compact/high/compactSchemas.d.ts +218 -9
- package/dist/handlers/compact/high/compactSchemas.d.ts.map +1 -1
- package/dist/handlers/compact/high/compactSchemas.js +410 -134
- package/dist/handlers/compact/high/compactSchemas.js.map +1 -1
- package/dist/handlers/compact/high/handleHandlerActivate.d.ts +7 -1
- package/dist/handlers/compact/high/handleHandlerActivate.d.ts.map +1 -1
- package/dist/handlers/compact/high/handleHandlerActivate.js +1 -1
- package/dist/handlers/compact/high/handleHandlerActivate.js.map +1 -1
- package/dist/handlers/compact/high/handleHandlerCdsUnitTestResult.d.ts +4 -1
- package/dist/handlers/compact/high/handleHandlerCdsUnitTestResult.d.ts.map +1 -1
- package/dist/handlers/compact/high/handleHandlerCdsUnitTestResult.js +1 -1
- package/dist/handlers/compact/high/handleHandlerCdsUnitTestResult.js.map +1 -1
- package/dist/handlers/compact/high/handleHandlerCdsUnitTestStatus.d.ts +3 -1
- package/dist/handlers/compact/high/handleHandlerCdsUnitTestStatus.d.ts.map +1 -1
- package/dist/handlers/compact/high/handleHandlerCdsUnitTestStatus.js +1 -1
- package/dist/handlers/compact/high/handleHandlerCdsUnitTestStatus.js.map +1 -1
- package/dist/handlers/compact/high/handleHandlerCheckRun.d.ts +7 -1
- package/dist/handlers/compact/high/handleHandlerCheckRun.d.ts.map +1 -1
- package/dist/handlers/compact/high/handleHandlerCheckRun.js +1 -1
- package/dist/handlers/compact/high/handleHandlerCheckRun.js.map +1 -1
- package/dist/handlers/compact/high/handleHandlerCreate.d.ts +23 -1
- package/dist/handlers/compact/high/handleHandlerCreate.d.ts.map +1 -1
- package/dist/handlers/compact/high/handleHandlerCreate.js +1 -1
- package/dist/handlers/compact/high/handleHandlerCreate.js.map +1 -1
- package/dist/handlers/compact/high/handleHandlerDelete.d.ts +7 -1
- package/dist/handlers/compact/high/handleHandlerDelete.d.ts.map +1 -1
- package/dist/handlers/compact/high/handleHandlerDelete.js +1 -1
- package/dist/handlers/compact/high/handleHandlerDelete.js.map +1 -1
- package/dist/handlers/compact/high/handleHandlerDumpList.d.ts +6 -1
- package/dist/handlers/compact/high/handleHandlerDumpList.d.ts.map +1 -1
- package/dist/handlers/compact/high/handleHandlerDumpList.js +1 -1
- package/dist/handlers/compact/high/handleHandlerDumpList.js.map +1 -1
- package/dist/handlers/compact/high/handleHandlerDumpView.d.ts +3 -1
- package/dist/handlers/compact/high/handleHandlerDumpView.d.ts.map +1 -1
- package/dist/handlers/compact/high/handleHandlerDumpView.js +1 -1
- package/dist/handlers/compact/high/handleHandlerDumpView.js.map +1 -1
- package/dist/handlers/compact/high/handleHandlerGet.d.ts +60 -1
- package/dist/handlers/compact/high/handleHandlerGet.d.ts.map +1 -1
- package/dist/handlers/compact/high/handleHandlerGet.js +1 -1
- package/dist/handlers/compact/high/handleHandlerGet.js.map +1 -1
- package/dist/handlers/compact/high/handleHandlerLock.d.ts +7 -1
- package/dist/handlers/compact/high/handleHandlerLock.d.ts.map +1 -1
- package/dist/handlers/compact/high/handleHandlerLock.js +1 -1
- package/dist/handlers/compact/high/handleHandlerLock.js.map +1 -1
- package/dist/handlers/compact/high/handleHandlerProfileList.d.ts +1 -1
- package/dist/handlers/compact/high/handleHandlerProfileList.js +1 -1
- package/dist/handlers/compact/high/handleHandlerProfileList.js.map +1 -1
- package/dist/handlers/compact/high/handleHandlerProfileRun.d.ts +17 -1
- package/dist/handlers/compact/high/handleHandlerProfileRun.d.ts.map +1 -1
- package/dist/handlers/compact/high/handleHandlerProfileRun.js +1 -1
- package/dist/handlers/compact/high/handleHandlerProfileRun.js.map +1 -1
- package/dist/handlers/compact/high/handleHandlerProfileView.d.ts +7 -1
- package/dist/handlers/compact/high/handleHandlerProfileView.d.ts.map +1 -1
- package/dist/handlers/compact/high/handleHandlerProfileView.js +1 -1
- package/dist/handlers/compact/high/handleHandlerProfileView.js.map +1 -1
- package/dist/handlers/compact/high/handleHandlerServiceBindingListTypes.d.ts +2 -1
- package/dist/handlers/compact/high/handleHandlerServiceBindingListTypes.d.ts.map +1 -1
- package/dist/handlers/compact/high/handleHandlerServiceBindingListTypes.js +1 -1
- package/dist/handlers/compact/high/handleHandlerServiceBindingListTypes.js.map +1 -1
- package/dist/handlers/compact/high/handleHandlerServiceBindingValidate.d.ts +6 -1
- package/dist/handlers/compact/high/handleHandlerServiceBindingValidate.d.ts.map +1 -1
- package/dist/handlers/compact/high/handleHandlerServiceBindingValidate.js +1 -1
- package/dist/handlers/compact/high/handleHandlerServiceBindingValidate.js.map +1 -1
- package/dist/handlers/compact/high/handleHandlerTransportCreate.d.ts +5 -1
- package/dist/handlers/compact/high/handleHandlerTransportCreate.d.ts.map +1 -1
- package/dist/handlers/compact/high/handleHandlerTransportCreate.js +1 -1
- package/dist/handlers/compact/high/handleHandlerTransportCreate.js.map +1 -1
- package/dist/handlers/compact/high/handleHandlerUnitTestResult.d.ts +4 -1
- package/dist/handlers/compact/high/handleHandlerUnitTestResult.d.ts.map +1 -1
- package/dist/handlers/compact/high/handleHandlerUnitTestResult.js +1 -1
- package/dist/handlers/compact/high/handleHandlerUnitTestResult.js.map +1 -1
- package/dist/handlers/compact/high/handleHandlerUnitTestRun.d.ts +18 -1
- package/dist/handlers/compact/high/handleHandlerUnitTestRun.d.ts.map +1 -1
- package/dist/handlers/compact/high/handleHandlerUnitTestRun.js +1 -1
- package/dist/handlers/compact/high/handleHandlerUnitTestRun.js.map +1 -1
- package/dist/handlers/compact/high/handleHandlerUnitTestStatus.d.ts +3 -1
- package/dist/handlers/compact/high/handleHandlerUnitTestStatus.d.ts.map +1 -1
- package/dist/handlers/compact/high/handleHandlerUnitTestStatus.js +1 -1
- package/dist/handlers/compact/high/handleHandlerUnitTestStatus.js.map +1 -1
- package/dist/handlers/compact/high/handleHandlerUnlock.d.ts +7 -1
- package/dist/handlers/compact/high/handleHandlerUnlock.d.ts.map +1 -1
- package/dist/handlers/compact/high/handleHandlerUnlock.js +1 -1
- package/dist/handlers/compact/high/handleHandlerUnlock.js.map +1 -1
- package/dist/handlers/compact/high/handleHandlerUpdate.d.ts +21 -1
- package/dist/handlers/compact/high/handleHandlerUpdate.d.ts.map +1 -1
- package/dist/handlers/compact/high/handleHandlerUpdate.js +1 -1
- package/dist/handlers/compact/high/handleHandlerUpdate.js.map +1 -1
- package/dist/handlers/compact/high/handleHandlerValidate.d.ts +22 -10
- package/dist/handlers/compact/high/handleHandlerValidate.d.ts.map +1 -1
- package/dist/handlers/compact/high/handleHandlerValidate.js +1 -1
- package/dist/handlers/compact/high/handleHandlerValidate.js.map +1 -1
- package/dist/handlers/data_element/handleCreateDataElement.d.ts +83 -0
- package/dist/handlers/data_element/handleCreateDataElement.d.ts.map +1 -0
- package/dist/handlers/data_element/handleCreateDataElement.js +180 -0
- package/dist/handlers/data_element/handleGetDataElement.d.ts +29 -0
- package/dist/handlers/data_element/handleGetDataElement.d.ts.map +1 -0
- package/dist/handlers/data_element/handleGetDataElement.js +173 -0
- package/dist/handlers/data_element/handleUpdateDataElement.d.ts +131 -0
- package/dist/handlers/data_element/handleUpdateDataElement.d.ts.map +1 -0
- package/dist/handlers/data_element/handleUpdateDataElement.js +258 -0
- package/dist/handlers/data_element/readonly/handleGetDataElement.d.ts +33 -0
- package/dist/handlers/data_element/readonly/handleGetDataElement.d.ts.map +1 -0
- package/dist/handlers/data_element/readonly/handleGetDataElement.js +173 -0
- package/dist/handlers/ddlx/handleCreateMetadataExtension.d.ts +41 -0
- package/dist/handlers/ddlx/handleCreateMetadataExtension.d.ts.map +1 -0
- package/dist/handlers/ddlx/handleCreateMetadataExtension.js +92 -0
- package/dist/handlers/ddlx/handleUpdateMetadataExtension.d.ts +37 -0
- package/dist/handlers/ddlx/handleUpdateMetadataExtension.d.ts.map +1 -0
- package/dist/handlers/ddlx/handleUpdateMetadataExtension.js +81 -0
- package/dist/handlers/domain/handleCreateDomain.d.ts +104 -0
- package/dist/handlers/domain/handleCreateDomain.d.ts.map +1 -0
- package/dist/handlers/domain/handleCreateDomain.js +187 -0
- package/dist/handlers/domain/handleGetDomain.d.ts +19 -0
- package/dist/handlers/domain/handleGetDomain.d.ts.map +1 -0
- package/dist/handlers/domain/handleGetDomain.js +138 -0
- package/dist/handlers/domain/handleUpdateDomain.d.ts +99 -0
- package/dist/handlers/domain/handleUpdateDomain.d.ts.map +1 -0
- package/dist/handlers/domain/handleUpdateDomain.js +204 -0
- package/dist/handlers/domain/readonly/handleGetDomain.d.ts +23 -0
- package/dist/handlers/domain/readonly/handleGetDomain.d.ts.map +1 -0
- package/dist/handlers/domain/readonly/handleGetDomain.js +138 -0
- package/dist/handlers/enhancement/handleGetEnhancementImpl.d.ts +69 -0
- package/dist/handlers/enhancement/handleGetEnhancementImpl.d.ts.map +1 -0
- package/dist/handlers/enhancement/handleGetEnhancementImpl.js +171 -0
- package/dist/handlers/enhancement/handleGetEnhancementSpot.d.ts +53 -0
- package/dist/handlers/enhancement/handleGetEnhancementSpot.d.ts.map +1 -0
- package/dist/handlers/enhancement/handleGetEnhancementSpot.js +153 -0
- package/dist/handlers/enhancement/handleGetEnhancements.d.ts +64 -0
- package/dist/handlers/enhancement/handleGetEnhancements.d.ts.map +1 -0
- package/dist/handlers/enhancement/handleGetEnhancements.js +599 -0
- package/dist/handlers/function/handleCheckFunctionModule.d.ts +59 -0
- package/dist/handlers/function/handleCheckFunctionModule.d.ts.map +1 -0
- package/dist/handlers/function/handleCheckFunctionModule.js +140 -0
- package/dist/handlers/function/handleCreateFunctionGroup.d.ts +52 -0
- package/dist/handlers/function/handleCreateFunctionGroup.d.ts.map +1 -0
- package/dist/handlers/function/handleCreateFunctionGroup.js +114 -0
- package/dist/handlers/function/handleCreateFunctionModule.d.ts +57 -0
- package/dist/handlers/function/handleCreateFunctionModule.d.ts.map +1 -0
- package/dist/handlers/function/handleCreateFunctionModule.js +137 -0
- package/dist/handlers/function/handleGetFunction.d.ts +17 -0
- package/dist/handlers/function/handleGetFunction.d.ts.map +1 -0
- package/dist/handlers/function/handleGetFunction.js +172 -0
- package/dist/handlers/function/handleGetFunctionGroup.d.ts +16 -0
- package/dist/handlers/function/handleGetFunctionGroup.d.ts.map +1 -0
- package/dist/handlers/function/handleGetFunctionGroup.js +132 -0
- package/dist/handlers/function/handleUpdateFunctionModuleSource.d.ts +54 -0
- package/dist/handlers/function/handleUpdateFunctionModuleSource.d.ts.map +1 -0
- package/dist/handlers/function/handleUpdateFunctionModuleSource.js +108 -0
- package/dist/handlers/function/handleValidateFunctionModule.d.ts +58 -0
- package/dist/handlers/function/handleValidateFunctionModule.d.ts.map +1 -0
- package/dist/handlers/function/handleValidateFunctionModule.js +132 -0
- package/dist/handlers/function/readonly/handleGetFunctionGroup.d.ts +16 -0
- package/dist/handlers/function/readonly/handleGetFunctionGroup.d.ts.map +1 -0
- package/dist/handlers/function/readonly/handleGetFunctionGroup.js +132 -0
- package/dist/handlers/include/handleGetInclude.d.ts +16 -0
- package/dist/handlers/include/handleGetInclude.d.ts.map +1 -0
- package/dist/handlers/include/handleGetInclude.js +81 -0
- package/dist/handlers/include/handleGetIncludesList.d.ts +36 -0
- package/dist/handlers/include/handleGetIncludesList.d.ts.map +1 -0
- package/dist/handlers/include/handleGetIncludesList.js +223 -0
- package/dist/handlers/interface/handleCreateInterface.d.ts +64 -0
- package/dist/handlers/interface/handleCreateInterface.d.ts.map +1 -0
- package/dist/handlers/interface/handleCreateInterface.js +175 -0
- package/dist/handlers/interface/handleGetInterface.d.ts +40 -0
- package/dist/handlers/interface/handleGetInterface.d.ts.map +1 -0
- package/dist/handlers/interface/handleGetInterface.js +134 -0
- package/dist/handlers/interface/handleUpdateInterfaceSource.d.ts +48 -0
- package/dist/handlers/interface/handleUpdateInterfaceSource.d.ts.map +1 -0
- package/dist/handlers/interface/handleUpdateInterfaceSource.js +127 -0
- package/dist/handlers/interface/readonly/handleGetInterface.d.ts +44 -0
- package/dist/handlers/interface/readonly/handleGetInterface.d.ts.map +1 -0
- package/dist/handlers/interface/readonly/handleGetInterface.js +134 -0
- package/dist/handlers/package/handleCreatePackage.d.ts +38 -0
- package/dist/handlers/package/handleCreatePackage.d.ts.map +1 -0
- package/dist/handlers/package/handleCreatePackage.js +127 -0
- package/dist/handlers/package/handleGetPackage.d.ts +16 -0
- package/dist/handlers/package/handleGetPackage.d.ts.map +1 -0
- package/dist/handlers/package/handleGetPackage.js +94 -0
- package/dist/handlers/package/readonly/handleGetPackage.d.ts +21 -0
- package/dist/handlers/package/readonly/handleGetPackage.d.ts.map +1 -0
- package/dist/handlers/package/readonly/handleGetPackage.js +94 -0
- package/dist/handlers/program/handleCreateProgram.d.ts +73 -0
- package/dist/handlers/program/handleCreateProgram.d.ts.map +1 -0
- package/dist/handlers/program/handleCreateProgram.js +220 -0
- package/dist/handlers/program/handleGetProgFullCode.d.ts +67 -0
- package/dist/handlers/program/handleGetProgFullCode.d.ts.map +1 -0
- package/dist/handlers/program/handleGetProgFullCode.js +249 -0
- package/dist/handlers/program/handleGetProgram.d.ts +16 -0
- package/dist/handlers/program/handleGetProgram.d.ts.map +1 -0
- package/dist/handlers/program/handleGetProgram.js +71 -0
- package/dist/handlers/program/handleUpdateProgramSource.d.ts +44 -0
- package/dist/handlers/program/handleUpdateProgramSource.d.ts.map +1 -0
- package/dist/handlers/program/handleUpdateProgramSource.js +121 -0
- package/dist/handlers/program/readonly/handleGetProgram.d.ts +20 -0
- package/dist/handlers/program/readonly/handleGetProgram.d.ts.map +1 -0
- package/dist/handlers/program/readonly/handleGetProgram.js +71 -0
- package/dist/handlers/search/handleGetObjectsByType.d.ts +42 -0
- package/dist/handlers/search/handleGetObjectsByType.d.ts.map +1 -0
- package/dist/handlers/search/handleGetObjectsByType.js +166 -0
- package/dist/handlers/search/handleGetObjectsList.d.ts +46 -0
- package/dist/handlers/search/handleGetObjectsList.d.ts.map +1 -0
- package/dist/handlers/search/handleGetObjectsList.js +145 -0
- package/dist/handlers/search/handleSearchObject.d.ts +28 -0
- package/dist/handlers/search/handleSearchObject.d.ts.map +1 -0
- package/dist/handlers/search/handleSearchObject.js +119 -0
- package/dist/handlers/service_definition/readonly/handleGetServiceDefinition.d.ts +17 -0
- package/dist/handlers/service_definition/readonly/handleGetServiceDefinition.d.ts.map +1 -0
- package/dist/handlers/service_definition/readonly/handleGetServiceDefinition.js +136 -0
- package/dist/handlers/structure/handleCreateStructure.d.ts +107 -0
- package/dist/handlers/structure/handleCreateStructure.d.ts.map +1 -0
- package/dist/handlers/structure/handleCreateStructure.js +184 -0
- package/dist/handlers/structure/handleGetStructure.d.ts +16 -0
- package/dist/handlers/structure/handleGetStructure.d.ts.map +1 -0
- package/dist/handlers/structure/handleGetStructure.js +139 -0
- package/dist/handlers/structure/readonly/handleGetStructure.d.ts +16 -0
- package/dist/handlers/structure/readonly/handleGetStructure.d.ts.map +1 -0
- package/dist/handlers/structure/readonly/handleGetStructure.js +139 -0
- package/dist/handlers/system/handleDescribeByList.d.ts +36 -0
- package/dist/handlers/system/handleDescribeByList.d.ts.map +1 -0
- package/dist/handlers/system/handleDescribeByList.js +121 -0
- package/dist/handlers/system/handleGetAbapAST.d.ts +26 -0
- package/dist/handlers/system/handleGetAbapAST.d.ts.map +1 -0
- package/dist/handlers/system/handleGetAbapAST.js +172 -0
- package/dist/handlers/system/handleGetAbapSemanticAnalysis.d.ts +26 -0
- package/dist/handlers/system/handleGetAbapSemanticAnalysis.d.ts.map +1 -0
- package/dist/handlers/system/handleGetAbapSemanticAnalysis.js +353 -0
- package/dist/handlers/system/handleGetAbapSystemSymbols.d.ts +26 -0
- package/dist/handlers/system/handleGetAbapSystemSymbols.d.ts.map +1 -0
- package/dist/handlers/system/handleGetAbapSystemSymbols.js +574 -0
- package/dist/handlers/system/handleGetAllTypes.d.ts +22 -0
- package/dist/handlers/system/handleGetAllTypes.d.ts.map +1 -0
- package/dist/handlers/system/handleGetAllTypes.js +102 -0
- package/dist/handlers/system/handleGetInactiveObjects.d.ts +20 -0
- package/dist/handlers/system/handleGetInactiveObjects.d.ts.map +1 -0
- package/dist/handlers/system/handleGetInactiveObjects.js +41 -0
- package/dist/handlers/system/handleGetObjectInfo.d.ts +41 -0
- package/dist/handlers/system/handleGetObjectInfo.d.ts.map +1 -0
- package/dist/handlers/system/handleGetObjectInfo.js +210 -0
- package/dist/handlers/system/handleGetObjectNodeFromCache.d.ts +40 -0
- package/dist/handlers/system/handleGetObjectNodeFromCache.d.ts.map +1 -0
- package/dist/handlers/system/handleGetObjectNodeFromCache.js +70 -0
- package/dist/handlers/system/handleGetObjectStructure.d.ts +26 -0
- package/dist/handlers/system/handleGetObjectStructure.d.ts.map +1 -0
- package/dist/handlers/system/handleGetObjectStructure.js +103 -0
- package/dist/handlers/system/handleGetSession.d.ts +33 -0
- package/dist/handlers/system/handleGetSession.d.ts.map +1 -0
- package/dist/handlers/system/handleGetSession.js +63 -0
- package/dist/handlers/system/handleGetSqlQuery.d.ts +49 -0
- package/dist/handlers/system/handleGetSqlQuery.d.ts.map +1 -0
- package/dist/handlers/system/handleGetSqlQuery.js +176 -0
- package/dist/handlers/system/handleGetTransaction.d.ts +42 -0
- package/dist/handlers/system/handleGetTransaction.d.ts.map +1 -0
- package/dist/handlers/system/handleGetTransaction.js +91 -0
- package/dist/handlers/system/handleGetTypeInfo.d.ts +69 -0
- package/dist/handlers/system/handleGetTypeInfo.d.ts.map +1 -0
- package/dist/handlers/system/handleGetTypeInfo.js +169 -0
- package/dist/handlers/system/handleGetWhereUsed.d.ts +69 -0
- package/dist/handlers/system/handleGetWhereUsed.d.ts.map +1 -0
- package/dist/handlers/system/handleGetWhereUsed.js +405 -0
- package/dist/handlers/table/handleCheckTable.d.ts +55 -0
- package/dist/handlers/table/handleCheckTable.d.ts.map +1 -0
- package/dist/handlers/table/handleCheckTable.js +138 -0
- package/dist/handlers/table/handleCreateTable.d.ts +42 -0
- package/dist/handlers/table/handleCreateTable.d.ts.map +1 -0
- package/dist/handlers/table/handleCreateTable.js +118 -0
- package/dist/handlers/table/handleGetTable.d.ts +16 -0
- package/dist/handlers/table/handleGetTable.d.ts.map +1 -0
- package/dist/handlers/table/handleGetTable.js +140 -0
- package/dist/handlers/table/handleGetTableContents.d.ts +56 -0
- package/dist/handlers/table/handleGetTableContents.d.ts.map +1 -0
- package/dist/handlers/table/handleGetTableContents.js +387 -0
- package/dist/handlers/table/handleValidateTable.d.ts +53 -0
- package/dist/handlers/table/handleValidateTable.d.ts.map +1 -0
- package/dist/handlers/table/handleValidateTable.js +125 -0
- package/dist/handlers/table/readonly/handleGetTable.d.ts +20 -0
- package/dist/handlers/table/readonly/handleGetTable.d.ts.map +1 -0
- package/dist/handlers/table/readonly/handleGetTable.js +140 -0
- package/dist/handlers/transport/handleCreateTransport.d.ts +50 -0
- package/dist/handlers/transport/handleCreateTransport.d.ts.map +1 -0
- package/dist/handlers/transport/handleCreateTransport.js +151 -0
- package/dist/handlers/transport/handleGetTransport.d.ts +44 -0
- package/dist/handlers/transport/handleGetTransport.d.ts.map +1 -0
- package/dist/handlers/transport/handleGetTransport.js +183 -0
- package/dist/handlers/view/handleCreateView.d.ts +52 -0
- package/dist/handlers/view/handleCreateView.d.ts.map +1 -0
- package/dist/handlers/view/handleCreateView.js +139 -0
- package/dist/handlers/view/handleGetView.d.ts +26 -0
- package/dist/handlers/view/handleGetView.d.ts.map +1 -0
- package/dist/handlers/view/handleGetView.js +349 -0
- package/dist/handlers/view/handleUpdateViewSource.d.ts +44 -0
- package/dist/handlers/view/handleUpdateViewSource.d.ts.map +1 -0
- package/dist/handlers/view/handleUpdateViewSource.js +136 -0
- package/dist/handlers/view/readonly/handleGetView.d.ts +26 -0
- package/dist/handlers/view/readonly/handleGetView.d.ts.map +1 -0
- package/dist/handlers/view/readonly/handleGetView.js +349 -0
- package/dist/index.d.ts +94 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +2453 -0
- package/dist/lib/activationUtils.d.ts +59 -0
- package/dist/lib/activationUtils.d.ts.map +1 -0
- package/dist/lib/activationUtils.js +168 -0
- package/dist/lib/config/ArgumentsParser.d.ts +2 -0
- package/dist/lib/config/ArgumentsParser.d.ts.map +1 -1
- package/dist/lib/config/ArgumentsParser.js +11 -1
- package/dist/lib/config/ArgumentsParser.js.map +1 -1
- package/dist/lib/config/IServerConfig.d.ts +2 -0
- package/dist/lib/config/IServerConfig.d.ts.map +1 -1
- package/dist/lib/config/ServerConfigManager.d.ts.map +1 -1
- package/dist/lib/config/ServerConfigManager.js +3 -0
- package/dist/lib/config/ServerConfigManager.js.map +1 -1
- package/dist/lib/getFullCodeCache.d.ts +3 -0
- package/dist/lib/getFullCodeCache.d.ts.map +1 -0
- package/dist/lib/getFullCodeCache.js +56 -0
- package/dist/lib/toolsRegistry.d.ts +13 -0
- package/dist/lib/toolsRegistry.d.ts.map +1 -0
- package/dist/lib/toolsRegistry.js +410 -0
- package/dist/server/AuthBrokerConfig.d.ts.map +1 -1
- package/dist/server/AuthBrokerConfig.js +14 -9
- package/dist/server/AuthBrokerConfig.js.map +1 -1
- package/dist/server/BaseMcpServer.d.ts.map +1 -1
- package/dist/server/BaseMcpServer.js +6 -0
- package/dist/server/BaseMcpServer.js.map +1 -1
- package/dist/server/launcher.js +4 -4
- package/dist/server/launcher.js.map +1 -1
- package/dist/utils/lockStateManager.d.ts +64 -0
- package/dist/utils/lockStateManager.d.ts.map +1 -0
- package/dist/utils/lockStateManager.js +173 -0
- package/dist/utils/lockStateManager.js.map +1 -0
- package/docs/user-guide/AUTHENTICATION.md +7 -0
- package/docs/user-guide/AVAILABLE_TOOLS.md +189 -174
- package/docs/user-guide/AVAILABLE_TOOLS_COMPACT.md +189 -174
- package/docs/user-guide/AVAILABLE_TOOLS_HIGH.md +189 -174
- package/docs/user-guide/CLI_OPTIONS.md +14 -0
- package/package.json +2 -1
- package/dist/handlers/service_binding/high/handleListServiceBindings.d.ts +0 -44
- package/dist/handlers/service_binding/high/handleListServiceBindings.d.ts.map +0 -1
- package/dist/handlers/service_binding/high/handleListServiceBindings.js +0 -211
- package/dist/handlers/service_binding/high/handleListServiceBindings.js.map +0 -1
- package/dist/handlers/service_binding/high/serviceBindingXmlBuilder.d.ts +0 -11
- package/dist/handlers/service_binding/high/serviceBindingXmlBuilder.d.ts.map +0 -1
- package/dist/handlers/service_binding/high/serviceBindingXmlBuilder.js +0 -27
- package/dist/handlers/service_binding/high/serviceBindingXmlBuilder.js.map +0 -1
- package/dist/handlers/system/readonly/handleRuntimeGetDumpByUri.d.ts +0 -27
- package/dist/handlers/system/readonly/handleRuntimeGetDumpByUri.d.ts.map +0 -1
- package/dist/handlers/system/readonly/handleRuntimeGetDumpByUri.js +0 -47
- package/dist/handlers/system/readonly/handleRuntimeGetDumpByUri.js.map +0 -1
- package/dist/handlers/system/readonly/runtimeDumpReadCompat.d.ts +0 -8
- package/dist/handlers/system/readonly/runtimeDumpReadCompat.d.ts.map +0 -1
- package/dist/handlers/system/readonly/runtimeDumpReadCompat.js +0 -55
- package/dist/handlers/system/readonly/runtimeDumpReadCompat.js.map +0 -1
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handleUpdateProgramSource.d.ts","sourceRoot":"","sources":["../../../src/handlers/program/handleUpdateProgramSource.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;CAqBlB,CAAC;AASX;;;;;GAKG;AACH,wBAAsB,yBAAyB,CAAC,MAAM,EAAE,GAAG;;;;;;GA4F1D"}
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* UpdateProgramSource Handler - Update Existing ABAP Program Source Code
|
|
4
|
+
*
|
|
5
|
+
* Uses ProgramBuilder from @mcp-abap-adt/adt-clients for all operations.
|
|
6
|
+
* Session and lock management handled internally by builder.
|
|
7
|
+
*
|
|
8
|
+
* Workflow: validate -> lock -> update -> check -> unlock -> (activate)
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.TOOL_DEFINITION = void 0;
|
|
12
|
+
exports.handleUpdateProgramSource = handleUpdateProgramSource;
|
|
13
|
+
const utils_1 = require("../../lib/utils");
|
|
14
|
+
const fast_xml_parser_1 = require("fast-xml-parser");
|
|
15
|
+
const adt_clients_1 = require("@mcp-abap-adt/adt-clients");
|
|
16
|
+
exports.TOOL_DEFINITION = {
|
|
17
|
+
name: "UpdateProgramSource",
|
|
18
|
+
description: "Update source code of an existing ABAP program. Locks the program, uploads new source code, and unlocks. Optionally activates after update. Use this to modify existing programs without re-creating metadata.",
|
|
19
|
+
inputSchema: {
|
|
20
|
+
type: "object",
|
|
21
|
+
properties: {
|
|
22
|
+
program_name: {
|
|
23
|
+
type: "string",
|
|
24
|
+
description: "Program name (e.g., Z_TEST_PROGRAM_001). Program must already exist."
|
|
25
|
+
},
|
|
26
|
+
source_code: {
|
|
27
|
+
type: "string",
|
|
28
|
+
description: "Complete ABAP program source code."
|
|
29
|
+
},
|
|
30
|
+
activate: {
|
|
31
|
+
type: "boolean",
|
|
32
|
+
description: "Activate program after source update. Default: false. Set to true to activate immediately, or use ActivateObject for batch activation."
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
required: ["program_name", "source_code"]
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Main handler for UpdateProgramSource MCP tool
|
|
40
|
+
*
|
|
41
|
+
* Uses ProgramBuilder from @mcp-abap-adt/adt-clients for all operations
|
|
42
|
+
* Session and lock management handled internally by builder
|
|
43
|
+
*/
|
|
44
|
+
async function handleUpdateProgramSource(params) {
|
|
45
|
+
try {
|
|
46
|
+
const args = params;
|
|
47
|
+
// Validate required parameters
|
|
48
|
+
if (!args.program_name || !args.source_code) {
|
|
49
|
+
return (0, utils_1.return_error)(new Error("Missing required parameters: program_name and source_code"));
|
|
50
|
+
}
|
|
51
|
+
const connection = (0, utils_1.getManagedConnection)();
|
|
52
|
+
const programName = args.program_name.toUpperCase();
|
|
53
|
+
utils_1.logger.info(`Starting program source update: ${programName}`);
|
|
54
|
+
try {
|
|
55
|
+
// Create builder with configuration
|
|
56
|
+
const builder = new adt_clients_1.CrudClient(connection);
|
|
57
|
+
// Build operation chain: validate -> lock -> update -> check -> unlock -> (activate)
|
|
58
|
+
const shouldActivate = args.activate === true; // Default to false if not specified
|
|
59
|
+
await builder
|
|
60
|
+
.validateProgram(programName)
|
|
61
|
+
.then(b => b.lockProgram(programName))
|
|
62
|
+
.then(b => b.updateProgram(programName, args.source_code))
|
|
63
|
+
.then(b => b.checkProgram(programName))
|
|
64
|
+
.then(b => b.unlockProgram(programName))
|
|
65
|
+
.then(b => shouldActivate ? b.activateProgram(programName) : Promise.resolve(b))
|
|
66
|
+
.catch(error => {
|
|
67
|
+
utils_1.logger.error('Program update chain failed:', error);
|
|
68
|
+
throw error;
|
|
69
|
+
});
|
|
70
|
+
// Parse activation warnings if activation was performed
|
|
71
|
+
let activationWarnings = [];
|
|
72
|
+
if (shouldActivate && builder.getActivateResult()) {
|
|
73
|
+
const activateResponse = builder.getActivateResult();
|
|
74
|
+
if (typeof activateResponse.data === 'string' && activateResponse.data.includes('<chkl:messages')) {
|
|
75
|
+
const parser = new fast_xml_parser_1.XMLParser({ ignoreAttributes: false, attributeNamePrefix: '@_' });
|
|
76
|
+
const result = parser.parse(activateResponse.data);
|
|
77
|
+
const messages = result?.['chkl:messages']?.['msg'];
|
|
78
|
+
if (messages) {
|
|
79
|
+
const msgArray = Array.isArray(messages) ? messages : [messages];
|
|
80
|
+
activationWarnings = msgArray.map((msg) => `${msg['@_type']}: ${msg['shortText']?.['txt'] || 'Unknown'}`);
|
|
81
|
+
}
|
|
82
|
+
}
|
|
83
|
+
}
|
|
84
|
+
utils_1.logger.info(`✅ UpdateProgramSource completed successfully: ${programName}`);
|
|
85
|
+
// Return success result
|
|
86
|
+
const stepsCompleted = ['validate', 'lock', 'update', 'check', 'unlock'];
|
|
87
|
+
if (shouldActivate) {
|
|
88
|
+
stepsCompleted.push('activate');
|
|
89
|
+
}
|
|
90
|
+
const result = {
|
|
91
|
+
success: true,
|
|
92
|
+
program_name: programName,
|
|
93
|
+
type: 'PROG/P',
|
|
94
|
+
message: shouldActivate
|
|
95
|
+
? `Program ${programName} source updated and activated successfully`
|
|
96
|
+
: `Program ${programName} source updated successfully (not activated)`,
|
|
97
|
+
uri: `/sap/bc/adt/programs/programs/${(0, utils_1.encodeSapObjectName)(programName).toLowerCase()}`,
|
|
98
|
+
steps_completed: stepsCompleted,
|
|
99
|
+
activation_warnings: activationWarnings.length > 0 ? activationWarnings : undefined,
|
|
100
|
+
source_size_bytes: args.source_code.length
|
|
101
|
+
};
|
|
102
|
+
return (0, utils_1.return_response)({
|
|
103
|
+
data: JSON.stringify(result, null, 2),
|
|
104
|
+
status: 200,
|
|
105
|
+
statusText: 'OK',
|
|
106
|
+
headers: {},
|
|
107
|
+
config: {}
|
|
108
|
+
});
|
|
109
|
+
}
|
|
110
|
+
catch (error) {
|
|
111
|
+
utils_1.logger.error(`Error updating program source ${programName}:`, error);
|
|
112
|
+
const errorMessage = error.response?.data
|
|
113
|
+
? (typeof error.response.data === 'string' ? error.response.data : JSON.stringify(error.response.data))
|
|
114
|
+
: error.message || String(error);
|
|
115
|
+
return (0, utils_1.return_error)(new Error(`Failed to update program ${programName}: ${errorMessage}`));
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
catch (error) {
|
|
119
|
+
return (0, utils_1.return_error)(error);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import * as z from 'zod';
|
|
2
|
+
export declare const TOOL_DEFINITION: {
|
|
3
|
+
readonly name: "GetProgram";
|
|
4
|
+
readonly description: "[read-only] Retrieve ABAP program source code. Returns only the main program source code without includes or enhancements.";
|
|
5
|
+
readonly inputSchema: {
|
|
6
|
+
readonly program_name: z.ZodString;
|
|
7
|
+
};
|
|
8
|
+
};
|
|
9
|
+
interface GetProgramArgs {
|
|
10
|
+
[key: string]: any;
|
|
11
|
+
}
|
|
12
|
+
export declare function handleGetProgram(args: GetProgramArgs): Promise<{
|
|
13
|
+
isError: boolean;
|
|
14
|
+
content: {
|
|
15
|
+
type: string;
|
|
16
|
+
text: any;
|
|
17
|
+
}[];
|
|
18
|
+
}>;
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=handleGetProgram.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handleGetProgram.d.ts","sourceRoot":"","sources":["../../../../src/handlers/program/readonly/handleGetProgram.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,eAAO,MAAM,eAAe;;;;;;CAMlB,CAAC;AAEX,UAAU,cAAc;IACtB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AAGD,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,cAAc;;;;;;GAqB1D"}
|
|
@@ -0,0 +1,71 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
|
|
14
|
+
Object.defineProperty(o, "default", { enumerable: true, value: v });
|
|
15
|
+
}) : function(o, v) {
|
|
16
|
+
o["default"] = v;
|
|
17
|
+
});
|
|
18
|
+
var __importStar = (this && this.__importStar) || (function () {
|
|
19
|
+
var ownKeys = function(o) {
|
|
20
|
+
ownKeys = Object.getOwnPropertyNames || function (o) {
|
|
21
|
+
var ar = [];
|
|
22
|
+
for (var k in o) if (Object.prototype.hasOwnProperty.call(o, k)) ar[ar.length] = k;
|
|
23
|
+
return ar;
|
|
24
|
+
};
|
|
25
|
+
return ownKeys(o);
|
|
26
|
+
};
|
|
27
|
+
return function (mod) {
|
|
28
|
+
if (mod && mod.__esModule) return mod;
|
|
29
|
+
var result = {};
|
|
30
|
+
if (mod != null) for (var k = ownKeys(mod), i = 0; i < k.length; i++) if (k[i] !== "default") __createBinding(result, mod, k[i]);
|
|
31
|
+
__setModuleDefault(result, mod);
|
|
32
|
+
return result;
|
|
33
|
+
};
|
|
34
|
+
})();
|
|
35
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
36
|
+
exports.TOOL_DEFINITION = void 0;
|
|
37
|
+
exports.handleGetProgram = handleGetProgram;
|
|
38
|
+
const utils_1 = require("../../../lib/utils");
|
|
39
|
+
const utils_2 = require("../../../lib/utils");
|
|
40
|
+
const adt_clients_1 = require("@mcp-abap-adt/adt-clients");
|
|
41
|
+
const writeResultToFile_1 = require("../../../lib/writeResultToFile");
|
|
42
|
+
const z = __importStar(require("zod"));
|
|
43
|
+
exports.TOOL_DEFINITION = {
|
|
44
|
+
name: "GetProgram",
|
|
45
|
+
description: "[read-only] Retrieve ABAP program source code. Returns only the main program source code without includes or enhancements.",
|
|
46
|
+
inputSchema: {
|
|
47
|
+
program_name: z.string().describe("Name of the ABAP program")
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
async function handleGetProgram(args) {
|
|
51
|
+
try {
|
|
52
|
+
if (!args?.program_name) {
|
|
53
|
+
throw new utils_1.McpError(utils_1.ErrorCode.InvalidParams, 'Program name is required');
|
|
54
|
+
}
|
|
55
|
+
const connection = (0, utils_1.getManagedConnection)();
|
|
56
|
+
const client = new adt_clients_1.CrudClient(connection);
|
|
57
|
+
await client.readProgram(args.program_name);
|
|
58
|
+
const response = client.getReadResult();
|
|
59
|
+
if (!response) {
|
|
60
|
+
throw new utils_1.McpError(utils_1.ErrorCode.InternalError, 'Failed to read program');
|
|
61
|
+
}
|
|
62
|
+
const plainText = response.data;
|
|
63
|
+
if (args.filePath) {
|
|
64
|
+
(0, writeResultToFile_1.writeResultToFile)(plainText, args.filePath);
|
|
65
|
+
}
|
|
66
|
+
return (0, utils_2.return_response)(response);
|
|
67
|
+
}
|
|
68
|
+
catch (error) {
|
|
69
|
+
return (0, utils_2.return_error)(error);
|
|
70
|
+
}
|
|
71
|
+
}
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
export declare const TOOL_DEFINITION: {
|
|
2
|
+
readonly name: "GetObjectsByType";
|
|
3
|
+
readonly description: "Retrieves all ABAP objects of a specific type under a given node.";
|
|
4
|
+
readonly inputSchema: {
|
|
5
|
+
readonly type: "object";
|
|
6
|
+
readonly properties: {
|
|
7
|
+
readonly parent_name: {
|
|
8
|
+
readonly type: "string";
|
|
9
|
+
readonly description: "Parent object name";
|
|
10
|
+
};
|
|
11
|
+
readonly parent_tech_name: {
|
|
12
|
+
readonly type: "string";
|
|
13
|
+
readonly description: "Parent technical name";
|
|
14
|
+
};
|
|
15
|
+
readonly parent_type: {
|
|
16
|
+
readonly type: "string";
|
|
17
|
+
readonly description: "Parent object type";
|
|
18
|
+
};
|
|
19
|
+
readonly node_id: {
|
|
20
|
+
readonly type: "string";
|
|
21
|
+
readonly description: "Node ID";
|
|
22
|
+
};
|
|
23
|
+
readonly format: {
|
|
24
|
+
readonly type: "string";
|
|
25
|
+
readonly description: "Output format: 'raw' or 'parsed'";
|
|
26
|
+
};
|
|
27
|
+
readonly with_short_descriptions: {
|
|
28
|
+
readonly type: "boolean";
|
|
29
|
+
readonly description: "Include short descriptions";
|
|
30
|
+
};
|
|
31
|
+
};
|
|
32
|
+
readonly required: readonly ["parent_name", "parent_tech_name", "parent_type", "node_id"];
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
export declare function handleGetObjectsByType(args: any): Promise<{
|
|
36
|
+
isError: boolean;
|
|
37
|
+
content: {
|
|
38
|
+
type: string;
|
|
39
|
+
text: any;
|
|
40
|
+
}[];
|
|
41
|
+
}>;
|
|
42
|
+
//# sourceMappingURL=handleGetObjectsByType.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handleGetObjectsByType.d.ts","sourceRoot":"","sources":["../../../src/handlers/search/handleGetObjectsByType.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAelB,CAAC;AAoDX,wBAAsB,sBAAsB,CAAC,IAAI,EAAE,GAAG;;;;;;GAgIrD"}
|
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TOOL_DEFINITION = void 0;
|
|
4
|
+
exports.handleGetObjectsByType = handleGetObjectsByType;
|
|
5
|
+
exports.TOOL_DEFINITION = {
|
|
6
|
+
name: "GetObjectsByType",
|
|
7
|
+
description: "Retrieves all ABAP objects of a specific type under a given node.",
|
|
8
|
+
inputSchema: {
|
|
9
|
+
type: "object",
|
|
10
|
+
properties: {
|
|
11
|
+
parent_name: { type: "string", description: "Parent object name" },
|
|
12
|
+
parent_tech_name: { type: "string", description: "Parent technical name" },
|
|
13
|
+
parent_type: { type: "string", description: "Parent object type" },
|
|
14
|
+
node_id: { type: "string", description: "Node ID" },
|
|
15
|
+
format: { type: "string", description: "Output format: 'raw' or 'parsed'" },
|
|
16
|
+
with_short_descriptions: { type: "boolean", description: "Include short descriptions" }
|
|
17
|
+
},
|
|
18
|
+
required: ["parent_name", "parent_tech_name", "parent_type", "node_id"]
|
|
19
|
+
}
|
|
20
|
+
};
|
|
21
|
+
const utils_1 = require("../../lib/utils");
|
|
22
|
+
const utils_2 = require("../../lib/utils");
|
|
23
|
+
const getObjectsListCache_1 = require("../../lib/getObjectsListCache");
|
|
24
|
+
/**
|
|
25
|
+
* Parses XML response to extract object names from node structure
|
|
26
|
+
* @param xmlData XML response data
|
|
27
|
+
* @returns Array of object info with name, type, and URI
|
|
28
|
+
*/
|
|
29
|
+
function parseObjectNamesFromXml(xmlData) {
|
|
30
|
+
const objects = [];
|
|
31
|
+
try {
|
|
32
|
+
// Look for SEU_ADT_REPOSITORY_OBJ_NODE entries
|
|
33
|
+
const nodeRegex = /<SEU_ADT_REPOSITORY_OBJ_NODE>(.*?)<\/SEU_ADT_REPOSITORY_OBJ_NODE>/gs;
|
|
34
|
+
const nodeMatches = xmlData.match(nodeRegex);
|
|
35
|
+
if (nodeMatches) {
|
|
36
|
+
for (const nodeMatch of nodeMatches) {
|
|
37
|
+
const objectTypeMatch = nodeMatch.match(/<OBJECT_TYPE>([^<]+)<\/OBJECT_TYPE>/);
|
|
38
|
+
const objectNameMatch = nodeMatch.match(/<OBJECT_NAME>([^<]+)<\/OBJECT_NAME>/);
|
|
39
|
+
const techNameMatch = nodeMatch.match(/<TECH_NAME>([^<]+)<\/TECH_NAME>/);
|
|
40
|
+
const uriMatch = nodeMatch.match(/<OBJECT_URI>([^<]+)<\/OBJECT_URI>/);
|
|
41
|
+
if (objectTypeMatch && objectNameMatch) {
|
|
42
|
+
const objectName = decodeURIComponent(objectNameMatch[1]);
|
|
43
|
+
const techName = techNameMatch ? decodeURIComponent(techNameMatch[1]) : objectName;
|
|
44
|
+
const uri = uriMatch ? decodeURIComponent(uriMatch[1]) : undefined;
|
|
45
|
+
objects.push({
|
|
46
|
+
name: objectName,
|
|
47
|
+
type: objectTypeMatch[1],
|
|
48
|
+
tech_name: techName,
|
|
49
|
+
uri: uri
|
|
50
|
+
});
|
|
51
|
+
}
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
catch (error) {
|
|
56
|
+
// console.warn('Error parsing XML for object names:', error);
|
|
57
|
+
}
|
|
58
|
+
return objects;
|
|
59
|
+
}
|
|
60
|
+
async function handleGetObjectsByType(args) {
|
|
61
|
+
try {
|
|
62
|
+
const { parent_name, parent_tech_name, parent_type, node_id, format, with_short_descriptions } = args;
|
|
63
|
+
if (!parent_name || typeof parent_name !== 'string' || parent_name.trim() === '') {
|
|
64
|
+
throw new utils_1.McpError(utils_1.ErrorCode.InvalidParams, 'Parameter "parent_name" (string) is required and cannot be empty.');
|
|
65
|
+
}
|
|
66
|
+
if (!parent_tech_name || typeof parent_tech_name !== 'string' || parent_tech_name.trim() === '') {
|
|
67
|
+
throw new utils_1.McpError(utils_1.ErrorCode.InvalidParams, 'Parameter "parent_tech_name" (string) is required and cannot be empty.');
|
|
68
|
+
}
|
|
69
|
+
if (!parent_type || typeof parent_type !== 'string' || parent_type.trim() === '') {
|
|
70
|
+
throw new utils_1.McpError(utils_1.ErrorCode.InvalidParams, 'Parameter "parent_type" (string) is required and cannot be empty.');
|
|
71
|
+
}
|
|
72
|
+
if (!node_id || typeof node_id !== 'string' || node_id.trim() === '') {
|
|
73
|
+
throw new utils_1.McpError(utils_1.ErrorCode.InvalidParams, 'Parameter "node_id" (string) is required and cannot be empty.');
|
|
74
|
+
}
|
|
75
|
+
const withDescriptions = with_short_descriptions !== undefined ? Boolean(with_short_descriptions) : true;
|
|
76
|
+
const outputFormat = format || 'parsed'; // 'raw' or 'parsed'
|
|
77
|
+
// Get specific node structure
|
|
78
|
+
const response = await (0, utils_2.fetchNodeStructure)(parent_name.toUpperCase(), parent_tech_name.toUpperCase(), parent_type, node_id, withDescriptions);
|
|
79
|
+
if (outputFormat === 'raw') {
|
|
80
|
+
const plainResult = (0, utils_2.return_response)(response);
|
|
81
|
+
getObjectsListCache_1.objectsListCache.setCache(plainResult);
|
|
82
|
+
return plainResult;
|
|
83
|
+
}
|
|
84
|
+
// Parse and format the response
|
|
85
|
+
const objects = parseObjectNamesFromXml(response.data);
|
|
86
|
+
if (objects.length === 0) {
|
|
87
|
+
const mockResponse = {
|
|
88
|
+
data: `No objects found for node_id '${node_id}' in ${parent_type} '${parent_name}'.`,
|
|
89
|
+
status: 200,
|
|
90
|
+
statusText: 'OK',
|
|
91
|
+
headers: {},
|
|
92
|
+
config: {}
|
|
93
|
+
};
|
|
94
|
+
const plainResult = (0, utils_2.return_response)(mockResponse);
|
|
95
|
+
getObjectsListCache_1.objectsListCache.setCache(plainResult);
|
|
96
|
+
return plainResult;
|
|
97
|
+
}
|
|
98
|
+
// Create formatted response
|
|
99
|
+
let responseText = '';
|
|
100
|
+
responseText = `Found ${objects.length} objects for node_id '${node_id}' in ${parent_type} '${parent_name}':\n\n`;
|
|
101
|
+
// Group by object type if there are multiple types
|
|
102
|
+
const objectTypes = [...new Set(objects.map(obj => obj.type))];
|
|
103
|
+
if (objectTypes.length > 1) {
|
|
104
|
+
for (const objType of objectTypes) {
|
|
105
|
+
const typeObjects = objects.filter(obj => obj.type === objType);
|
|
106
|
+
responseText += `📁 Type: ${objType} (${typeObjects.length} objects)\n`;
|
|
107
|
+
for (const obj of typeObjects) {
|
|
108
|
+
responseText += ` • ${obj.name}`;
|
|
109
|
+
if (obj.tech_name !== obj.name) {
|
|
110
|
+
responseText += ` (${obj.tech_name})`;
|
|
111
|
+
}
|
|
112
|
+
if (obj.uri) {
|
|
113
|
+
responseText += `\n URI: ${obj.uri}`;
|
|
114
|
+
}
|
|
115
|
+
responseText += '\n';
|
|
116
|
+
}
|
|
117
|
+
responseText += '\n';
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
else {
|
|
121
|
+
// Single type, simpler format
|
|
122
|
+
const objType = objectTypes[0];
|
|
123
|
+
responseText += `📁 Object Type: ${objType}\n\n`;
|
|
124
|
+
for (const obj of objects) {
|
|
125
|
+
responseText += ` • ${obj.name}`;
|
|
126
|
+
if (obj.tech_name !== obj.name) {
|
|
127
|
+
responseText += ` (${obj.tech_name})`;
|
|
128
|
+
}
|
|
129
|
+
if (obj.uri) {
|
|
130
|
+
responseText += `\n URI: ${obj.uri}`;
|
|
131
|
+
}
|
|
132
|
+
responseText += '\n';
|
|
133
|
+
}
|
|
134
|
+
}
|
|
135
|
+
// Add summary
|
|
136
|
+
responseText += `\n📊 Summary: ${objects.length} objects found\n`;
|
|
137
|
+
if (objectTypes.length > 1) {
|
|
138
|
+
for (const objType of objectTypes) {
|
|
139
|
+
const count = objects.filter(obj => obj.type === objType).length;
|
|
140
|
+
responseText += ` ${objType}: ${count} objects\n`;
|
|
141
|
+
}
|
|
142
|
+
}
|
|
143
|
+
const mockResponse = {
|
|
144
|
+
data: responseText,
|
|
145
|
+
status: 200,
|
|
146
|
+
statusText: 'OK',
|
|
147
|
+
headers: {},
|
|
148
|
+
config: {}
|
|
149
|
+
};
|
|
150
|
+
const finalResult = (0, utils_2.return_response)(mockResponse);
|
|
151
|
+
getObjectsListCache_1.objectsListCache.setCache(finalResult);
|
|
152
|
+
return finalResult;
|
|
153
|
+
}
|
|
154
|
+
catch (error) {
|
|
155
|
+
// MCP-compliant error response: always return content[] with type "text"
|
|
156
|
+
return {
|
|
157
|
+
isError: true,
|
|
158
|
+
content: [
|
|
159
|
+
{
|
|
160
|
+
type: "text",
|
|
161
|
+
text: `ADT error: ${String(error)}`
|
|
162
|
+
}
|
|
163
|
+
]
|
|
164
|
+
};
|
|
165
|
+
}
|
|
166
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
export declare const TOOL_DEFINITION: {
|
|
2
|
+
readonly name: "GetObjectsList";
|
|
3
|
+
readonly description: "Recursively retrieves all valid ABAP repository objects for a given parent (program, function group, etc.) including nested includes.";
|
|
4
|
+
readonly inputSchema: {
|
|
5
|
+
readonly type: "object";
|
|
6
|
+
readonly properties: {
|
|
7
|
+
readonly parent_name: {
|
|
8
|
+
readonly type: "string";
|
|
9
|
+
readonly description: "Parent object name";
|
|
10
|
+
};
|
|
11
|
+
readonly parent_tech_name: {
|
|
12
|
+
readonly type: "string";
|
|
13
|
+
readonly description: "Parent technical name";
|
|
14
|
+
};
|
|
15
|
+
readonly parent_type: {
|
|
16
|
+
readonly type: "string";
|
|
17
|
+
readonly description: "Parent object type (e.g. PROG/P, FUGR)";
|
|
18
|
+
};
|
|
19
|
+
readonly with_short_descriptions: {
|
|
20
|
+
readonly type: "boolean";
|
|
21
|
+
readonly description: "Include short descriptions (default: true)";
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
readonly required: readonly ["parent_name", "parent_tech_name", "parent_type"];
|
|
25
|
+
};
|
|
26
|
+
};
|
|
27
|
+
/**
|
|
28
|
+
* Main handler for GetObjectsListStrict
|
|
29
|
+
* @param args { parent_name, parent_tech_name, parent_type, with_short_descriptions }
|
|
30
|
+
*/
|
|
31
|
+
export declare function handleGetObjectsList(args: any): Promise<{
|
|
32
|
+
content: {
|
|
33
|
+
type: string;
|
|
34
|
+
text: string;
|
|
35
|
+
}[];
|
|
36
|
+
cache: any;
|
|
37
|
+
isError?: undefined;
|
|
38
|
+
} | {
|
|
39
|
+
isError: boolean;
|
|
40
|
+
content: {
|
|
41
|
+
type: string;
|
|
42
|
+
text: string;
|
|
43
|
+
}[];
|
|
44
|
+
cache?: undefined;
|
|
45
|
+
}>;
|
|
46
|
+
//# sourceMappingURL=handleGetObjectsList.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handleGetObjectsList.d.ts","sourceRoot":"","sources":["../../../src/handlers/search/handleGetObjectsList.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;CAalB,CAAC;AAsGX;;;GAGG;AACH,wBAAsB,oBAAoB,CAAC,IAAI,EAAE,GAAG;;;;;;;;;;;;;;GA4DnD"}
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.TOOL_DEFINITION = void 0;
|
|
4
|
+
exports.handleGetObjectsList = handleGetObjectsList;
|
|
5
|
+
exports.TOOL_DEFINITION = {
|
|
6
|
+
name: "GetObjectsList",
|
|
7
|
+
description: "Recursively retrieves all valid ABAP repository objects for a given parent (program, function group, etc.) including nested includes.",
|
|
8
|
+
inputSchema: {
|
|
9
|
+
type: "object",
|
|
10
|
+
properties: {
|
|
11
|
+
parent_name: { type: "string", description: "Parent object name" },
|
|
12
|
+
parent_tech_name: { type: "string", description: "Parent technical name" },
|
|
13
|
+
parent_type: { type: "string", description: "Parent object type (e.g. PROG/P, FUGR)" },
|
|
14
|
+
with_short_descriptions: { type: "boolean", description: "Include short descriptions (default: true)" }
|
|
15
|
+
},
|
|
16
|
+
required: ["parent_name", "parent_tech_name", "parent_type"]
|
|
17
|
+
}
|
|
18
|
+
};
|
|
19
|
+
// handleGetObjectsListStrict performs a recursive ADT node traversal starting from node_id '000000' like in the user example
|
|
20
|
+
const utils_1 = require("../../lib/utils");
|
|
21
|
+
const utils_2 = require("../../lib/utils");
|
|
22
|
+
const getObjectsListCache_1 = require("../../lib/getObjectsListCache");
|
|
23
|
+
/**
|
|
24
|
+
* Parses every SEU_ADT_REPOSITORY_OBJ_NODE element from the XML and returns objects with the required fields
|
|
25
|
+
*/
|
|
26
|
+
function parseValidObjects(xmlData) {
|
|
27
|
+
const nodes = [];
|
|
28
|
+
try {
|
|
29
|
+
const nodeRegex = /<SEU_ADT_REPOSITORY_OBJ_NODE>([\s\S]*?)<\/SEU_ADT_REPOSITORY_OBJ_NODE>/g;
|
|
30
|
+
let match;
|
|
31
|
+
while ((match = nodeRegex.exec(xmlData)) !== null) {
|
|
32
|
+
const nodeXml = match[1];
|
|
33
|
+
const obj = {};
|
|
34
|
+
// Pull out the fields we need
|
|
35
|
+
const typeMatch = nodeXml.match(/<OBJECT_TYPE>([^<]+)<\/OBJECT_TYPE>/);
|
|
36
|
+
const nameMatch = nodeXml.match(/<OBJECT_NAME>([^<]+)<\/OBJECT_NAME>/);
|
|
37
|
+
const techNameMatch = nodeXml.match(/<TECH_NAME>([^<]+)<\/TECH_NAME>/);
|
|
38
|
+
const uriMatch = nodeXml.match(/<OBJECT_URI>([^<]+)<\/OBJECT_URI>/);
|
|
39
|
+
if (typeMatch && nameMatch && techNameMatch && uriMatch) {
|
|
40
|
+
obj.OBJECT_TYPE = typeMatch[1];
|
|
41
|
+
obj.OBJECT_NAME = nameMatch[1];
|
|
42
|
+
obj.TECH_NAME = techNameMatch[1];
|
|
43
|
+
obj.OBJECT_URI = uriMatch[1];
|
|
44
|
+
nodes.push(obj);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
catch (error) {
|
|
49
|
+
// console.warn('Error parsing XML for valid objects:', error);
|
|
50
|
+
}
|
|
51
|
+
return nodes;
|
|
52
|
+
}
|
|
53
|
+
/**
|
|
54
|
+
* Extracts every NODE_ID from the OBJECT_TYPES XML block
|
|
55
|
+
*/
|
|
56
|
+
function parseNodeIds(xmlData) {
|
|
57
|
+
const nodeIds = [];
|
|
58
|
+
try {
|
|
59
|
+
const typeRegex = /<SEU_ADT_OBJECT_TYPE_INFO>([\s\S]*?)<\/SEU_ADT_OBJECT_TYPE_INFO>/g;
|
|
60
|
+
let match;
|
|
61
|
+
while ((match = typeRegex.exec(xmlData)) !== null) {
|
|
62
|
+
const block = match[1];
|
|
63
|
+
const nodeIdMatch = block.match(/<NODE_ID>([^<]+)<\/NODE_ID>/);
|
|
64
|
+
if (nodeIdMatch) {
|
|
65
|
+
nodeIds.push(nodeIdMatch[1]);
|
|
66
|
+
}
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
catch (error) {
|
|
70
|
+
// console.warn('Error parsing XML for node ids:', error);
|
|
71
|
+
}
|
|
72
|
+
return nodeIds;
|
|
73
|
+
}
|
|
74
|
+
/**
|
|
75
|
+
* Recursively walks the ADT node structure and returns only valid objects
|
|
76
|
+
*/
|
|
77
|
+
async function collectValidObjectsStrict(parent_name, parent_tech_name, parent_type, node_id, with_short_descriptions, visited) {
|
|
78
|
+
if (visited.has(node_id))
|
|
79
|
+
return [];
|
|
80
|
+
visited.add(node_id);
|
|
81
|
+
const response = await (0, utils_2.fetchNodeStructure)(parent_name, parent_tech_name, parent_type, node_id, with_short_descriptions);
|
|
82
|
+
const xml = response.data;
|
|
83
|
+
// Keep only the nodes that represent valid objects
|
|
84
|
+
const objects = parseValidObjects(xml);
|
|
85
|
+
// Traverse child nodes recursively via NODE_ID
|
|
86
|
+
const nodeIds = parseNodeIds(xml);
|
|
87
|
+
for (const childNodeId of nodeIds) {
|
|
88
|
+
const childObjects = await collectValidObjectsStrict(parent_name, parent_tech_name, parent_type, childNodeId, with_short_descriptions, visited);
|
|
89
|
+
objects.push(...childObjects);
|
|
90
|
+
}
|
|
91
|
+
return objects;
|
|
92
|
+
}
|
|
93
|
+
/**
|
|
94
|
+
* Main handler for GetObjectsListStrict
|
|
95
|
+
* @param args { parent_name, parent_tech_name, parent_type, with_short_descriptions }
|
|
96
|
+
*/
|
|
97
|
+
async function handleGetObjectsList(args) {
|
|
98
|
+
try {
|
|
99
|
+
const { parent_name, parent_tech_name, parent_type, with_short_descriptions } = args;
|
|
100
|
+
if (!parent_name || typeof parent_name !== 'string' || parent_name.trim() === '') {
|
|
101
|
+
throw new utils_1.McpError(utils_1.ErrorCode.InvalidParams, 'Parameter "parent_name" (string) is required and cannot be empty.');
|
|
102
|
+
}
|
|
103
|
+
if (!parent_tech_name || typeof parent_tech_name !== 'string' || parent_tech_name.trim() === '') {
|
|
104
|
+
throw new utils_1.McpError(utils_1.ErrorCode.InvalidParams, 'Parameter "parent_tech_name" (string) is required and cannot be empty.');
|
|
105
|
+
}
|
|
106
|
+
if (!parent_type || typeof parent_type !== 'string' || parent_type.trim() === '') {
|
|
107
|
+
throw new utils_1.McpError(utils_1.ErrorCode.InvalidParams, 'Parameter "parent_type" (string) is required and cannot be empty.');
|
|
108
|
+
}
|
|
109
|
+
const withDescriptions = with_short_descriptions !== undefined ? Boolean(with_short_descriptions) : true;
|
|
110
|
+
// Begin traversal from node_id '000000' (the root node)
|
|
111
|
+
const objects = await collectValidObjectsStrict(parent_name.toUpperCase(), parent_tech_name.toUpperCase(), parent_type, '000000', withDescriptions, new Set());
|
|
112
|
+
// Format the aggregated data as JSON
|
|
113
|
+
const result = {
|
|
114
|
+
parent_name,
|
|
115
|
+
parent_tech_name,
|
|
116
|
+
parent_type,
|
|
117
|
+
total_objects: objects.length,
|
|
118
|
+
objects
|
|
119
|
+
};
|
|
120
|
+
// Persist the result inside the in-memory cache
|
|
121
|
+
getObjectsListCache_1.objectsListCache.setCache(result);
|
|
122
|
+
return {
|
|
123
|
+
content: [
|
|
124
|
+
{
|
|
125
|
+
type: "text",
|
|
126
|
+
text: JSON.stringify(result, null, 2)
|
|
127
|
+
}
|
|
128
|
+
],
|
|
129
|
+
// Expose the cache snapshot for potential reuse by other modules
|
|
130
|
+
cache: getObjectsListCache_1.objectsListCache.getCache()
|
|
131
|
+
};
|
|
132
|
+
}
|
|
133
|
+
catch (error) {
|
|
134
|
+
// MCP-compliant error response: always return content[] with type "text"
|
|
135
|
+
return {
|
|
136
|
+
isError: true,
|
|
137
|
+
content: [
|
|
138
|
+
{
|
|
139
|
+
type: "text",
|
|
140
|
+
text: `ADT error: ${String(error)}`
|
|
141
|
+
}
|
|
142
|
+
]
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
}
|
|
@@ -0,0 +1,28 @@
|
|
|
1
|
+
export declare const TOOL_DEFINITION: {
|
|
2
|
+
readonly name: "SearchObject";
|
|
3
|
+
readonly description: "Search for ABAP objects by name pattern. Parameters: object_name (with or without mask), object_type (optional), maxResults (optional). If object_type is specified, results are filtered by type.";
|
|
4
|
+
readonly inputSchema: {
|
|
5
|
+
readonly type: "object";
|
|
6
|
+
readonly properties: {
|
|
7
|
+
readonly object_name: {
|
|
8
|
+
readonly type: "string";
|
|
9
|
+
readonly description: "Object name or mask (e.g. 'MARA*')";
|
|
10
|
+
};
|
|
11
|
+
readonly object_type: {
|
|
12
|
+
readonly type: "string";
|
|
13
|
+
readonly description: "Optional ABAP object type (e.g. 'TABL', 'CLAS/OC')";
|
|
14
|
+
};
|
|
15
|
+
readonly maxResults: {
|
|
16
|
+
readonly type: "number";
|
|
17
|
+
readonly description: "Maximum number of results to return";
|
|
18
|
+
readonly default: 100;
|
|
19
|
+
};
|
|
20
|
+
};
|
|
21
|
+
readonly required: readonly ["object_name"];
|
|
22
|
+
};
|
|
23
|
+
};
|
|
24
|
+
export declare function handleSearchObject(args: any): Promise<{
|
|
25
|
+
isError: boolean;
|
|
26
|
+
content: any[];
|
|
27
|
+
}>;
|
|
28
|
+
//# sourceMappingURL=handleSearchObject.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handleSearchObject.d.ts","sourceRoot":"","sources":["../../../src/handlers/search/handleSearchObject.ts"],"names":[],"mappings":"AAIA,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;CAYlB,CAAC;AAkBX,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,GAAG;aAfO,OAAO;aAAW,GAAG,EAAE;GAmG/E"}
|