@mcp-abap-adt/core 2.5.1 → 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 +22 -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/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/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,137 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ActivateObject Handler - Universal ABAP Object Activation via ADT API
|
|
4
|
+
*
|
|
5
|
+
* Uses activateObjectsGroup and parseActivationResponse from @mcp-abap-adt/adt-clients/core for all operations.
|
|
6
|
+
* Connection management handled internally.
|
|
7
|
+
*
|
|
8
|
+
* Activates one or multiple ABAP repository objects using ADT activation endpoint.
|
|
9
|
+
* This is a stateless operation - no session management or locking required.
|
|
10
|
+
*/
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.TOOL_DEFINITION = void 0;
|
|
13
|
+
exports.handleActivateObject = handleActivateObject;
|
|
14
|
+
const utils_1 = require("../../lib/utils");
|
|
15
|
+
const adt_clients_1 = require("@mcp-abap-adt/adt-clients");
|
|
16
|
+
exports.TOOL_DEFINITION = {
|
|
17
|
+
name: "ActivateObject",
|
|
18
|
+
description: "Activate one or multiple ABAP repository objects. Works with any object type: classes, programs, tables, views, domains, data elements, etc. URI is auto-generated from name and type. Returns activation status and any warnings/errors.",
|
|
19
|
+
inputSchema: {
|
|
20
|
+
type: "object",
|
|
21
|
+
properties: {
|
|
22
|
+
objects: {
|
|
23
|
+
type: "array",
|
|
24
|
+
description: "Array of objects to activate. Each object must have 'name' and 'type'. URI is auto-generated.",
|
|
25
|
+
items: {
|
|
26
|
+
type: "object",
|
|
27
|
+
properties: {
|
|
28
|
+
name: {
|
|
29
|
+
type: "string",
|
|
30
|
+
description: "Object name in uppercase (e.g., 'ZCL_MY_CLASS', 'Z_MY_PROGRAM', 'ZOK_I_MARKET_0001')"
|
|
31
|
+
},
|
|
32
|
+
type: {
|
|
33
|
+
type: "string",
|
|
34
|
+
description: "Object type code (e.g., 'CLAS/OC', 'PROG/P', 'DDLS/DF', 'TABL/DT'). URI will be auto-generated from this."
|
|
35
|
+
},
|
|
36
|
+
uri: {
|
|
37
|
+
type: "string",
|
|
38
|
+
description: "Optional: Object URI in ADT format. If not provided, will be auto-generated from name and type."
|
|
39
|
+
}
|
|
40
|
+
},
|
|
41
|
+
required: ["name", "type"]
|
|
42
|
+
}
|
|
43
|
+
},
|
|
44
|
+
preaudit: {
|
|
45
|
+
type: "boolean",
|
|
46
|
+
description: "Request pre-audit before activation. Default: true"
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
required: ["objects"]
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* Main handler for ActivateObject MCP tool
|
|
54
|
+
*
|
|
55
|
+
* Uses activateObjectsGroup and parseActivationResponse from @mcp-abap-adt/adt-clients/core for all operations
|
|
56
|
+
* Connection management handled internally
|
|
57
|
+
*
|
|
58
|
+
* This is a stateless operation - no session management needed.
|
|
59
|
+
* Activation endpoint handles multiple objects in one request.
|
|
60
|
+
*/
|
|
61
|
+
async function handleActivateObject(params) {
|
|
62
|
+
try {
|
|
63
|
+
const args = params;
|
|
64
|
+
// Validate required parameters
|
|
65
|
+
if (!args.objects || !Array.isArray(args.objects) || args.objects.length === 0) {
|
|
66
|
+
return (0, utils_1.return_error)(new Error("Missing required parameter: objects (must be non-empty array)"));
|
|
67
|
+
}
|
|
68
|
+
// Validate each object has required properties
|
|
69
|
+
for (const obj of args.objects) {
|
|
70
|
+
if (!obj.name) {
|
|
71
|
+
return (0, utils_1.return_error)(new Error("Each object must have 'name' property"));
|
|
72
|
+
}
|
|
73
|
+
if (!obj.uri && !obj.type) {
|
|
74
|
+
utils_1.logger.warn(`Object ${obj.name} has no URI or type, will attempt to guess from name`);
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
const connection = (0, utils_1.getManagedConnection)();
|
|
78
|
+
const preaudit = args.preaudit !== false; // Default: true
|
|
79
|
+
const client = new adt_clients_1.CrudClient(connection);
|
|
80
|
+
utils_1.logger.info(`Starting activation of ${args.objects.length} object(s)`);
|
|
81
|
+
try {
|
|
82
|
+
// Prepare objects for group activation
|
|
83
|
+
const activationObjects = args.objects.map(obj => ({
|
|
84
|
+
type: obj.type,
|
|
85
|
+
name: obj.name.toUpperCase()
|
|
86
|
+
}));
|
|
87
|
+
utils_1.logger.debug('Activating objects:', activationObjects);
|
|
88
|
+
// Make group activation request using CrudClient
|
|
89
|
+
const response = await client.activateObjectsGroup(activationObjects, preaudit);
|
|
90
|
+
// Debug: log raw response
|
|
91
|
+
utils_1.logger.debug('Activation response status:', response.status);
|
|
92
|
+
utils_1.logger.debug('Activation response data:', typeof response.data === 'string' ? response.data.substring(0, 500) : response.data);
|
|
93
|
+
// Parse response
|
|
94
|
+
const activationResult = client.parseActivationResponse(response.data);
|
|
95
|
+
const success = activationResult.activated && activationResult.checked;
|
|
96
|
+
// Build result object
|
|
97
|
+
const result = {
|
|
98
|
+
success,
|
|
99
|
+
objects_count: args.objects.length,
|
|
100
|
+
objects: activationObjects.map((obj, idx) => ({
|
|
101
|
+
name: obj.name,
|
|
102
|
+
uri: args.objects[idx].uri,
|
|
103
|
+
type: args.objects[idx].type
|
|
104
|
+
})),
|
|
105
|
+
activation: {
|
|
106
|
+
activated: activationResult.activated,
|
|
107
|
+
checked: activationResult.checked,
|
|
108
|
+
generated: activationResult.generated
|
|
109
|
+
},
|
|
110
|
+
messages: activationResult.messages,
|
|
111
|
+
warnings: activationResult.messages.filter(m => m.type === 'warning' || m.type === 'W'),
|
|
112
|
+
errors: activationResult.messages.filter(m => m.type === 'error' || m.type === 'E'),
|
|
113
|
+
message: success
|
|
114
|
+
? `Successfully activated ${args.objects.length} object(s)`
|
|
115
|
+
: `Activation completed with issues: ${activationResult.messages.length} message(s)`
|
|
116
|
+
};
|
|
117
|
+
utils_1.logger.info(`Activation completed: ${success ? 'SUCCESS' : 'WITH ISSUES'}`);
|
|
118
|
+
return (0, utils_1.return_response)({
|
|
119
|
+
data: JSON.stringify(result, null, 2),
|
|
120
|
+
status: 200,
|
|
121
|
+
statusText: 'OK',
|
|
122
|
+
headers: {},
|
|
123
|
+
config: {}
|
|
124
|
+
});
|
|
125
|
+
}
|
|
126
|
+
catch (error) {
|
|
127
|
+
const errorMessage = error.response?.data
|
|
128
|
+
? (typeof error.response.data === 'string' ? error.response.data : JSON.stringify(error.response.data))
|
|
129
|
+
: error.message || String(error);
|
|
130
|
+
utils_1.logger.error(`Activation failed:`, errorMessage);
|
|
131
|
+
return (0, utils_1.return_error)(new Error(`Failed to activate objects: ${errorMessage}`));
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
catch (error) {
|
|
135
|
+
return (0, utils_1.return_error)(error);
|
|
136
|
+
}
|
|
137
|
+
}
|
|
@@ -0,0 +1,63 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* CheckObject Handler - Syntax check for ABAP objects via ADT API
|
|
3
|
+
*
|
|
4
|
+
* Uses runCheckRun and parseCheckRunResponse from @mcp-abap-adt/adt-clients/core for all operations.
|
|
5
|
+
* Connection management handled internally.
|
|
6
|
+
*/
|
|
7
|
+
export declare const TOOL_DEFINITION: {
|
|
8
|
+
readonly name: "CheckObject";
|
|
9
|
+
readonly description: "Perform syntax check on an ABAP object without activation. Returns syntax errors, warnings, and messages. Useful for validation during development. Can use session_id and session_state from GetSession to maintain the same session.";
|
|
10
|
+
readonly inputSchema: {
|
|
11
|
+
readonly type: "object";
|
|
12
|
+
readonly properties: {
|
|
13
|
+
readonly object_name: {
|
|
14
|
+
readonly type: "string";
|
|
15
|
+
readonly description: "Object name (e.g., ZCL_MY_CLASS, Z_MY_PROGRAM, ZIF_MY_INTERFACE)";
|
|
16
|
+
};
|
|
17
|
+
readonly object_type: {
|
|
18
|
+
readonly type: "string";
|
|
19
|
+
readonly description: "Object type: 'class', 'program', 'interface', 'function_group', 'table', 'structure', 'view', 'domain', 'data_element', 'behavior_definition', 'metadata_extension'";
|
|
20
|
+
readonly enum: readonly ["class", "program", "interface", "function_group", "table", "structure", "view", "domain", "data_element", "behavior_definition", "metadata_extension"];
|
|
21
|
+
};
|
|
22
|
+
readonly version: {
|
|
23
|
+
readonly type: "string";
|
|
24
|
+
readonly description: "Version to check: 'active' (last activated) or 'inactive' (current unsaved). Default: active";
|
|
25
|
+
readonly enum: readonly ["active", "inactive"];
|
|
26
|
+
};
|
|
27
|
+
readonly session_id: {
|
|
28
|
+
readonly type: "string";
|
|
29
|
+
readonly description: "Session ID from GetSession. If not provided, a new session will be created.";
|
|
30
|
+
};
|
|
31
|
+
readonly session_state: {
|
|
32
|
+
readonly type: "object";
|
|
33
|
+
readonly description: "Session state from GetSession (cookies, csrf_token, cookie_store). Required if session_id is provided.";
|
|
34
|
+
readonly properties: {
|
|
35
|
+
readonly cookies: {
|
|
36
|
+
readonly type: "string";
|
|
37
|
+
};
|
|
38
|
+
readonly csrf_token: {
|
|
39
|
+
readonly type: "string";
|
|
40
|
+
};
|
|
41
|
+
readonly cookie_store: {
|
|
42
|
+
readonly type: "object";
|
|
43
|
+
};
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
readonly required: readonly ["object_name", "object_type"];
|
|
48
|
+
};
|
|
49
|
+
};
|
|
50
|
+
/**
|
|
51
|
+
* Main handler for CheckObject MCP tool
|
|
52
|
+
*
|
|
53
|
+
* Uses runCheckRun and parseCheckRunResponse from @mcp-abap-adt/adt-clients/core for all operations
|
|
54
|
+
* Connection management handled internally
|
|
55
|
+
*/
|
|
56
|
+
export declare function handleCheckObject(args: any): Promise<{
|
|
57
|
+
isError: boolean;
|
|
58
|
+
content: {
|
|
59
|
+
type: string;
|
|
60
|
+
text: any;
|
|
61
|
+
}[];
|
|
62
|
+
}>;
|
|
63
|
+
//# sourceMappingURL=handleCheckObject.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handleCheckObject.d.ts","sourceRoot":"","sources":["../../../src/handlers/common/handleCheckObject.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoClB,CAAC;AAeX;;;;;GAKG;AACH,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,GAAG;;;;;;GA+JhD"}
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* CheckObject Handler - Syntax check for ABAP objects via ADT API
|
|
4
|
+
*
|
|
5
|
+
* Uses runCheckRun and parseCheckRunResponse from @mcp-abap-adt/adt-clients/core for all operations.
|
|
6
|
+
* Connection management handled internally.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.TOOL_DEFINITION = void 0;
|
|
10
|
+
exports.handleCheckObject = handleCheckObject;
|
|
11
|
+
const utils_1 = require("../../lib/utils");
|
|
12
|
+
const fast_xml_parser_1 = require("fast-xml-parser");
|
|
13
|
+
const adt_clients_1 = require("@mcp-abap-adt/adt-clients");
|
|
14
|
+
const checkRunParser_1 = require("../../lib/checkRunParser");
|
|
15
|
+
exports.TOOL_DEFINITION = {
|
|
16
|
+
name: "CheckObject",
|
|
17
|
+
description: "Perform syntax check on an ABAP object without activation. Returns syntax errors, warnings, and messages. Useful for validation during development. Can use session_id and session_state from GetSession to maintain the same session.",
|
|
18
|
+
inputSchema: {
|
|
19
|
+
type: "object",
|
|
20
|
+
properties: {
|
|
21
|
+
object_name: {
|
|
22
|
+
type: "string",
|
|
23
|
+
description: "Object name (e.g., ZCL_MY_CLASS, Z_MY_PROGRAM, ZIF_MY_INTERFACE)"
|
|
24
|
+
},
|
|
25
|
+
object_type: {
|
|
26
|
+
type: "string",
|
|
27
|
+
description: "Object type: 'class', 'program', 'interface', 'function_group', 'table', 'structure', 'view', 'domain', 'data_element', 'behavior_definition', 'metadata_extension'",
|
|
28
|
+
enum: ["class", "program", "interface", "function_group", "table", "structure", "view", "domain", "data_element", "behavior_definition", "metadata_extension"]
|
|
29
|
+
},
|
|
30
|
+
version: {
|
|
31
|
+
type: "string",
|
|
32
|
+
description: "Version to check: 'active' (last activated) or 'inactive' (current unsaved). Default: active",
|
|
33
|
+
enum: ["active", "inactive"]
|
|
34
|
+
},
|
|
35
|
+
session_id: {
|
|
36
|
+
type: "string",
|
|
37
|
+
description: "Session ID from GetSession. If not provided, a new session will be created."
|
|
38
|
+
},
|
|
39
|
+
session_state: {
|
|
40
|
+
type: "object",
|
|
41
|
+
description: "Session state from GetSession (cookies, csrf_token, cookie_store). Required if session_id is provided.",
|
|
42
|
+
properties: {
|
|
43
|
+
cookies: { type: "string" },
|
|
44
|
+
csrf_token: { type: "string" },
|
|
45
|
+
cookie_store: { type: "object" }
|
|
46
|
+
}
|
|
47
|
+
}
|
|
48
|
+
},
|
|
49
|
+
required: ["object_name", "object_type"]
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* Main handler for CheckObject MCP tool
|
|
54
|
+
*
|
|
55
|
+
* Uses runCheckRun and parseCheckRunResponse from @mcp-abap-adt/adt-clients/core for all operations
|
|
56
|
+
* Connection management handled internally
|
|
57
|
+
*/
|
|
58
|
+
async function handleCheckObject(args) {
|
|
59
|
+
try {
|
|
60
|
+
const { object_name, object_type, version = 'active', session_id, session_state } = args;
|
|
61
|
+
// Validation
|
|
62
|
+
if (!object_name || !object_type) {
|
|
63
|
+
return (0, utils_1.return_error)(new Error('object_name and object_type are required'));
|
|
64
|
+
}
|
|
65
|
+
const validTypes = ['class', 'program', 'interface', 'function_group', 'table', 'structure', 'view', 'domain', 'data_element', 'behavior_definition', 'metadata_extension'];
|
|
66
|
+
if (!validTypes.includes(object_type.toLowerCase())) {
|
|
67
|
+
return (0, utils_1.return_error)(new Error(`Invalid object_type. Must be one of: ${validTypes.join(', ')}`));
|
|
68
|
+
}
|
|
69
|
+
const checkVersion = (version && ['active', 'inactive'].includes(version.toLowerCase()))
|
|
70
|
+
? version.toLowerCase()
|
|
71
|
+
: 'active';
|
|
72
|
+
const connection = (0, utils_1.getManagedConnection)();
|
|
73
|
+
// Restore session state if provided
|
|
74
|
+
if (session_id && session_state) {
|
|
75
|
+
connection.setSessionState({
|
|
76
|
+
cookies: session_state.cookies || null,
|
|
77
|
+
csrfToken: session_state.csrf_token || null,
|
|
78
|
+
cookieStore: session_state.cookie_store || {}
|
|
79
|
+
});
|
|
80
|
+
}
|
|
81
|
+
else {
|
|
82
|
+
// Ensure connection is established
|
|
83
|
+
await connection.connect();
|
|
84
|
+
}
|
|
85
|
+
const objectName = object_name.toUpperCase();
|
|
86
|
+
utils_1.logger.info(`Starting object check: ${objectName} (type: ${object_type}, version: ${checkVersion})`);
|
|
87
|
+
try {
|
|
88
|
+
const client = new adt_clients_1.CrudClient(connection);
|
|
89
|
+
let response;
|
|
90
|
+
// Call appropriate check method based on object type
|
|
91
|
+
switch (object_type.toLowerCase()) {
|
|
92
|
+
case 'class':
|
|
93
|
+
await client.checkClass(objectName);
|
|
94
|
+
response = client.getCheckResult();
|
|
95
|
+
break;
|
|
96
|
+
case 'program':
|
|
97
|
+
await client.checkProgram(objectName);
|
|
98
|
+
response = client.getCheckResult();
|
|
99
|
+
break;
|
|
100
|
+
case 'interface':
|
|
101
|
+
await client.checkInterface(objectName);
|
|
102
|
+
response = client.getCheckResult();
|
|
103
|
+
break;
|
|
104
|
+
case 'function_group':
|
|
105
|
+
await client.checkFunctionGroup(objectName);
|
|
106
|
+
response = client.getCheckResult();
|
|
107
|
+
break;
|
|
108
|
+
case 'table':
|
|
109
|
+
await client.checkTable(objectName);
|
|
110
|
+
response = client.getCheckResult();
|
|
111
|
+
break;
|
|
112
|
+
case 'structure':
|
|
113
|
+
await client.checkStructure(objectName);
|
|
114
|
+
response = client.getCheckResult();
|
|
115
|
+
break;
|
|
116
|
+
case 'view':
|
|
117
|
+
await client.checkView(objectName);
|
|
118
|
+
response = client.getCheckResult();
|
|
119
|
+
break;
|
|
120
|
+
case 'domain':
|
|
121
|
+
await client.checkDomain(objectName);
|
|
122
|
+
response = client.getCheckResult();
|
|
123
|
+
break;
|
|
124
|
+
case 'data_element':
|
|
125
|
+
await client.checkDataElement(objectName);
|
|
126
|
+
response = client.getCheckResult();
|
|
127
|
+
break;
|
|
128
|
+
case 'behavior_definition':
|
|
129
|
+
await client.checkBehaviorDefinition(objectName, checkVersion);
|
|
130
|
+
response = client.getCheckResult();
|
|
131
|
+
break;
|
|
132
|
+
case 'metadata_extension':
|
|
133
|
+
await client.checkMetadataExtension(objectName, checkVersion);
|
|
134
|
+
response = client.getCheckResult();
|
|
135
|
+
break;
|
|
136
|
+
default:
|
|
137
|
+
return (0, utils_1.return_error)(new Error(`Unsupported object_type: ${object_type}`));
|
|
138
|
+
}
|
|
139
|
+
if (!response) {
|
|
140
|
+
throw new Error(`Check did not return a response for object ${objectName}`);
|
|
141
|
+
}
|
|
142
|
+
// Parse check results
|
|
143
|
+
const checkResult = (0, checkRunParser_1.parseCheckRunResponse)(response);
|
|
144
|
+
// Get updated session state after check
|
|
145
|
+
const updatedSessionState = connection.getSessionState();
|
|
146
|
+
utils_1.logger.info(`✅ CheckObject completed: ${objectName}`);
|
|
147
|
+
utils_1.logger.info(` Status: ${checkResult.status}`);
|
|
148
|
+
utils_1.logger.info(` Errors: ${checkResult.errors.length}, Warnings: ${checkResult.warnings.length}`);
|
|
149
|
+
return (0, utils_1.return_response)({
|
|
150
|
+
data: JSON.stringify({
|
|
151
|
+
success: checkResult.success,
|
|
152
|
+
object_name: objectName,
|
|
153
|
+
object_type,
|
|
154
|
+
version: checkVersion,
|
|
155
|
+
check_result: checkResult,
|
|
156
|
+
session_id: session_id || null,
|
|
157
|
+
session_state: updatedSessionState ? {
|
|
158
|
+
cookies: updatedSessionState.cookies,
|
|
159
|
+
csrf_token: updatedSessionState.csrfToken,
|
|
160
|
+
cookie_store: updatedSessionState.cookieStore
|
|
161
|
+
} : null,
|
|
162
|
+
message: checkResult.success
|
|
163
|
+
? `Object ${objectName} has no syntax errors`
|
|
164
|
+
: `Object ${objectName} has ${checkResult.errors.length} error(s) and ${checkResult.warnings.length} warning(s)`
|
|
165
|
+
}, null, 2)
|
|
166
|
+
});
|
|
167
|
+
}
|
|
168
|
+
catch (error) {
|
|
169
|
+
utils_1.logger.error(`Error checking object ${objectName}:`, error);
|
|
170
|
+
// Parse error message
|
|
171
|
+
let errorMessage = `Failed to check object: ${error.message || String(error)}`;
|
|
172
|
+
if (error.response?.status === 404) {
|
|
173
|
+
errorMessage = `Object ${objectName} not found.`;
|
|
174
|
+
}
|
|
175
|
+
else if (error.response?.data && typeof error.response.data === 'string') {
|
|
176
|
+
try {
|
|
177
|
+
const parser = new fast_xml_parser_1.XMLParser({
|
|
178
|
+
ignoreAttributes: false,
|
|
179
|
+
attributeNamePrefix: '@_'
|
|
180
|
+
});
|
|
181
|
+
const errorData = parser.parse(error.response.data);
|
|
182
|
+
const errorMsg = errorData['exc:exception']?.message?.['#text'] || errorData['exc:exception']?.message;
|
|
183
|
+
if (errorMsg) {
|
|
184
|
+
errorMessage = `SAP Error: ${errorMsg}`;
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
catch (parseError) {
|
|
188
|
+
// Ignore parse errors
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
return (0, utils_1.return_error)(new Error(errorMessage));
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
catch (error) {
|
|
195
|
+
return (0, utils_1.return_error)(error);
|
|
196
|
+
}
|
|
197
|
+
}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* DeleteObject Handler - Delete ABAP objects via ADT API
|
|
3
|
+
*
|
|
4
|
+
* Uses deleteObject function from @mcp-abap-adt/adt-clients for all operations.
|
|
5
|
+
* Connection management handled internally.
|
|
6
|
+
*/
|
|
7
|
+
export declare const TOOL_DEFINITION: {
|
|
8
|
+
readonly name: "DeleteObject";
|
|
9
|
+
readonly description: "Delete an ABAP object from the SAP system via ADT deletion API. Object URI is built automatically from object_name and object_type. Transport request optional for $TMP objects.";
|
|
10
|
+
readonly inputSchema: {
|
|
11
|
+
readonly type: "object";
|
|
12
|
+
readonly properties: {
|
|
13
|
+
readonly object_name: {
|
|
14
|
+
readonly type: "string";
|
|
15
|
+
readonly description: "Object name (e.g., ZCL_MY_CLASS, Z_MY_PROGRAM, Z_TEST_FM_MCP01)";
|
|
16
|
+
};
|
|
17
|
+
readonly object_type: {
|
|
18
|
+
readonly type: "string";
|
|
19
|
+
readonly description: "Object type: 'CLAS/OC' (class), 'PROG/P' (program), 'INTF/OI' (interface), 'FUGR/F' (function group), 'FUGR/FF' (function module), 'TABL/DT' (table), 'TTYP/ST' (structure), 'DDLS/DF' (view), 'DTEL/DE' (data element), 'DOMA/DM' (domain), 'BDEF/BD' (behavior definition), 'DDLX/EX' (metadata extension). Or simplified: 'class', 'program', 'interface', 'function_group', 'function_module', 'table', 'structure', 'view', 'domain', 'data_element', 'behavior_definition', 'metadata_extension'";
|
|
20
|
+
};
|
|
21
|
+
readonly function_group_name: {
|
|
22
|
+
readonly type: "string";
|
|
23
|
+
readonly description: "Required only for function_module type - name of the function group containing the module";
|
|
24
|
+
};
|
|
25
|
+
readonly transport_request: {
|
|
26
|
+
readonly type: "string";
|
|
27
|
+
readonly description: "Transport request number (e.g., E19K905635). Required for transportable objects. Optional for local objects ($TMP).";
|
|
28
|
+
};
|
|
29
|
+
};
|
|
30
|
+
readonly required: readonly ["object_name", "object_type"];
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Main handler for DeleteObject MCP tool
|
|
35
|
+
*
|
|
36
|
+
* Uses deleteObject function from @mcp-abap-adt/adt-clients for all operations
|
|
37
|
+
* Connection management handled internally
|
|
38
|
+
*/
|
|
39
|
+
export declare function handleDeleteObject(args: any): Promise<{
|
|
40
|
+
isError: boolean;
|
|
41
|
+
content: {
|
|
42
|
+
type: string;
|
|
43
|
+
text: any;
|
|
44
|
+
}[];
|
|
45
|
+
}>;
|
|
46
|
+
//# sourceMappingURL=handleDeleteObject.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handleDeleteObject.d.ts","sourceRoot":"","sources":["../../../src/handlers/common/handleDeleteObject.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAOH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;CAyBlB,CAAC;AAUX;;;;;GAKG;AACH,wBAAsB,kBAAkB,CAAC,IAAI,EAAE,GAAG;;;;;;GA8IjD"}
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* DeleteObject Handler - Delete ABAP objects via ADT API
|
|
4
|
+
*
|
|
5
|
+
* Uses deleteObject function from @mcp-abap-adt/adt-clients for all operations.
|
|
6
|
+
* Connection management handled internally.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.TOOL_DEFINITION = void 0;
|
|
10
|
+
exports.handleDeleteObject = handleDeleteObject;
|
|
11
|
+
const utils_1 = require("../../lib/utils");
|
|
12
|
+
const fast_xml_parser_1 = require("fast-xml-parser");
|
|
13
|
+
const adt_clients_1 = require("@mcp-abap-adt/adt-clients");
|
|
14
|
+
exports.TOOL_DEFINITION = {
|
|
15
|
+
name: "DeleteObject",
|
|
16
|
+
description: "Delete an ABAP object from the SAP system via ADT deletion API. Object URI is built automatically from object_name and object_type. Transport request optional for $TMP objects.",
|
|
17
|
+
inputSchema: {
|
|
18
|
+
type: "object",
|
|
19
|
+
properties: {
|
|
20
|
+
object_name: {
|
|
21
|
+
type: "string",
|
|
22
|
+
description: "Object name (e.g., ZCL_MY_CLASS, Z_MY_PROGRAM, Z_TEST_FM_MCP01)"
|
|
23
|
+
},
|
|
24
|
+
object_type: {
|
|
25
|
+
type: "string",
|
|
26
|
+
description: "Object type: 'CLAS/OC' (class), 'PROG/P' (program), 'INTF/OI' (interface), 'FUGR/F' (function group), 'FUGR/FF' (function module), 'TABL/DT' (table), 'TTYP/ST' (structure), 'DDLS/DF' (view), 'DTEL/DE' (data element), 'DOMA/DM' (domain), 'BDEF/BD' (behavior definition), 'DDLX/EX' (metadata extension). Or simplified: 'class', 'program', 'interface', 'function_group', 'function_module', 'table', 'structure', 'view', 'domain', 'data_element', 'behavior_definition', 'metadata_extension'"
|
|
27
|
+
},
|
|
28
|
+
function_group_name: {
|
|
29
|
+
type: "string",
|
|
30
|
+
description: "Required only for function_module type - name of the function group containing the module"
|
|
31
|
+
},
|
|
32
|
+
transport_request: {
|
|
33
|
+
type: "string",
|
|
34
|
+
description: "Transport request number (e.g., E19K905635). Required for transportable objects. Optional for local objects ($TMP)."
|
|
35
|
+
}
|
|
36
|
+
},
|
|
37
|
+
required: ["object_name", "object_type"]
|
|
38
|
+
}
|
|
39
|
+
};
|
|
40
|
+
/**
|
|
41
|
+
* Main handler for DeleteObject MCP tool
|
|
42
|
+
*
|
|
43
|
+
* Uses deleteObject function from @mcp-abap-adt/adt-clients for all operations
|
|
44
|
+
* Connection management handled internally
|
|
45
|
+
*/
|
|
46
|
+
async function handleDeleteObject(args) {
|
|
47
|
+
try {
|
|
48
|
+
const { object_name, object_type, function_group_name, transport_request } = args;
|
|
49
|
+
// Validation
|
|
50
|
+
if (!object_name || !object_type) {
|
|
51
|
+
return (0, utils_1.return_error)(new Error('object_name and object_type are required'));
|
|
52
|
+
}
|
|
53
|
+
const connection = (0, utils_1.getManagedConnection)();
|
|
54
|
+
const crudClient = new adt_clients_1.CrudClient(connection);
|
|
55
|
+
const objectName = object_name.toUpperCase();
|
|
56
|
+
utils_1.logger.info(`Starting object deletion: ${objectName} (type: ${object_type})`);
|
|
57
|
+
try {
|
|
58
|
+
let response;
|
|
59
|
+
// Call appropriate delete method based on object type
|
|
60
|
+
switch (object_type.toLowerCase()) {
|
|
61
|
+
case 'class':
|
|
62
|
+
case 'clas/oc':
|
|
63
|
+
await crudClient.deleteClass(objectName, transport_request);
|
|
64
|
+
response = crudClient.getDeleteResult();
|
|
65
|
+
break;
|
|
66
|
+
case 'program':
|
|
67
|
+
case 'prog/p':
|
|
68
|
+
await crudClient.deleteProgram(objectName, transport_request);
|
|
69
|
+
response = crudClient.getDeleteResult();
|
|
70
|
+
break;
|
|
71
|
+
case 'interface':
|
|
72
|
+
case 'intf/oi':
|
|
73
|
+
await crudClient.deleteInterface(objectName, transport_request);
|
|
74
|
+
response = crudClient.getDeleteResult();
|
|
75
|
+
break;
|
|
76
|
+
case 'function_group':
|
|
77
|
+
case 'fugr/f':
|
|
78
|
+
await crudClient.deleteFunctionGroup(objectName, transport_request);
|
|
79
|
+
response = crudClient.getDeleteResult();
|
|
80
|
+
break;
|
|
81
|
+
case 'function_module':
|
|
82
|
+
case 'fugr/ff':
|
|
83
|
+
if (!function_group_name) {
|
|
84
|
+
return (0, utils_1.return_error)(new Error('function_group_name is required for function_module deletion'));
|
|
85
|
+
}
|
|
86
|
+
await crudClient.deleteFunctionModule(objectName, function_group_name, transport_request);
|
|
87
|
+
response = crudClient.getDeleteResult();
|
|
88
|
+
break;
|
|
89
|
+
case 'table':
|
|
90
|
+
case 'tabl/dt':
|
|
91
|
+
await crudClient.deleteTable(objectName, transport_request);
|
|
92
|
+
response = crudClient.getDeleteResult();
|
|
93
|
+
break;
|
|
94
|
+
case 'structure':
|
|
95
|
+
case 'ttyp/st':
|
|
96
|
+
await crudClient.deleteStructure(objectName, transport_request);
|
|
97
|
+
response = crudClient.getDeleteResult();
|
|
98
|
+
break;
|
|
99
|
+
case 'view':
|
|
100
|
+
case 'ddls/df':
|
|
101
|
+
await crudClient.deleteView(objectName, transport_request);
|
|
102
|
+
response = crudClient.getDeleteResult();
|
|
103
|
+
break;
|
|
104
|
+
case 'domain':
|
|
105
|
+
case 'doma/dm':
|
|
106
|
+
await crudClient.deleteDomain(objectName, transport_request);
|
|
107
|
+
response = crudClient.getDeleteResult();
|
|
108
|
+
break;
|
|
109
|
+
case 'data_element':
|
|
110
|
+
case 'dtel/de':
|
|
111
|
+
await crudClient.deleteDataElement(objectName, transport_request);
|
|
112
|
+
response = crudClient.getDeleteResult();
|
|
113
|
+
break;
|
|
114
|
+
case 'package':
|
|
115
|
+
case 'devc/k':
|
|
116
|
+
await crudClient.deletePackage(objectName, transport_request);
|
|
117
|
+
response = crudClient.getDeleteResult();
|
|
118
|
+
break;
|
|
119
|
+
case 'behavior_definition':
|
|
120
|
+
case 'bdef/bd':
|
|
121
|
+
await crudClient.deleteBehaviorDefinition(objectName, transport_request);
|
|
122
|
+
response = crudClient.getDeleteResult();
|
|
123
|
+
break;
|
|
124
|
+
case 'metadata_extension':
|
|
125
|
+
case 'ddlx/ex':
|
|
126
|
+
await crudClient.deleteMetadataExtension(objectName, transport_request);
|
|
127
|
+
response = crudClient.getDeleteResult();
|
|
128
|
+
break;
|
|
129
|
+
default:
|
|
130
|
+
return (0, utils_1.return_error)(new Error(`Unsupported object_type: ${object_type}`));
|
|
131
|
+
}
|
|
132
|
+
if (!response) {
|
|
133
|
+
throw new Error(`Delete did not return a response for object ${objectName}`);
|
|
134
|
+
}
|
|
135
|
+
utils_1.logger.info(`✅ DeleteObject completed successfully: ${objectName}`);
|
|
136
|
+
return (0, utils_1.return_response)({
|
|
137
|
+
data: JSON.stringify(response.data, null, 2)
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
catch (error) {
|
|
141
|
+
utils_1.logger.error(`Error deleting object ${objectName}:`, error);
|
|
142
|
+
// Parse error message for better user feedback
|
|
143
|
+
let errorMessage = `Failed to delete object: ${error.message || String(error)}`;
|
|
144
|
+
if (error.response?.status === 404) {
|
|
145
|
+
errorMessage = `Object ${objectName} not found. It may already be deleted.`;
|
|
146
|
+
}
|
|
147
|
+
else if (error.response?.status === 423) {
|
|
148
|
+
errorMessage = `Object ${objectName} is locked by another user. Cannot delete.`;
|
|
149
|
+
}
|
|
150
|
+
else if (error.response?.status === 400) {
|
|
151
|
+
errorMessage = `Bad request. Check if transport request is required and valid.`;
|
|
152
|
+
}
|
|
153
|
+
else if (error.response?.data && typeof error.response.data === 'string') {
|
|
154
|
+
// Try to parse XML error message
|
|
155
|
+
try {
|
|
156
|
+
const parser = new fast_xml_parser_1.XMLParser({
|
|
157
|
+
ignoreAttributes: false,
|
|
158
|
+
attributeNamePrefix: '@_'
|
|
159
|
+
});
|
|
160
|
+
const errorData = parser.parse(error.response.data);
|
|
161
|
+
const errorMsg = errorData['exc:exception']?.message?.['#text'] || errorData['exc:exception']?.message;
|
|
162
|
+
if (errorMsg) {
|
|
163
|
+
errorMessage = `SAP Error: ${errorMsg}`;
|
|
164
|
+
}
|
|
165
|
+
}
|
|
166
|
+
catch (parseError) {
|
|
167
|
+
// Ignore parse errors, use default message
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
return (0, utils_1.return_error)(new Error(errorMessage));
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
catch (error) {
|
|
174
|
+
return (0, utils_1.return_error)(error);
|
|
175
|
+
}
|
|
176
|
+
}
|