@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,44 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* UpdateClassSource Handler - Update Existing ABAP Class Source Code
|
|
3
|
+
*
|
|
4
|
+
* Uses ClassBuilder from @mcp-abap-adt/adt-clients for all operations.
|
|
5
|
+
* Session and lock management handled internally by builder.
|
|
6
|
+
*
|
|
7
|
+
* Workflow: lock -> update -> check -> unlock -> (activate)
|
|
8
|
+
*/
|
|
9
|
+
export declare const TOOL_DEFINITION: {
|
|
10
|
+
readonly name: "UpdateClassSource";
|
|
11
|
+
readonly description: "Update source code of an existing ABAP class. Locks the class, uploads new source code, and unlocks. Optionally activates after update. Use this to modify existing classes without re-creating metadata.";
|
|
12
|
+
readonly inputSchema: {
|
|
13
|
+
readonly type: "object";
|
|
14
|
+
readonly properties: {
|
|
15
|
+
readonly class_name: {
|
|
16
|
+
readonly type: "string";
|
|
17
|
+
readonly description: "Class name (e.g., ZCL_TEST_CLASS_001). Class must already exist.";
|
|
18
|
+
};
|
|
19
|
+
readonly source_code: {
|
|
20
|
+
readonly type: "string";
|
|
21
|
+
readonly description: "Complete ABAP class source code including CLASS DEFINITION and IMPLEMENTATION sections.";
|
|
22
|
+
};
|
|
23
|
+
readonly activate: {
|
|
24
|
+
readonly type: "boolean";
|
|
25
|
+
readonly description: "Activate class after source update. Default: false. Set to true to activate immediately, or use ActivateObject for batch activation.";
|
|
26
|
+
};
|
|
27
|
+
};
|
|
28
|
+
readonly required: readonly ["class_name", "source_code"];
|
|
29
|
+
};
|
|
30
|
+
};
|
|
31
|
+
/**
|
|
32
|
+
* Main handler for UpdateClassSource
|
|
33
|
+
*
|
|
34
|
+
* Uses ClassBuilder from @mcp-abap-adt/adt-clients for all operations
|
|
35
|
+
* Session and lock management handled internally by builder
|
|
36
|
+
*/
|
|
37
|
+
export declare function handleUpdateClassSource(params: any): Promise<{
|
|
38
|
+
isError: boolean;
|
|
39
|
+
content: {
|
|
40
|
+
type: string;
|
|
41
|
+
text: any;
|
|
42
|
+
}[];
|
|
43
|
+
}>;
|
|
44
|
+
//# sourceMappingURL=handleUpdateClassSource.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handleUpdateClassSource.d.ts","sourceRoot":"","sources":["../../../src/handlers/class/handleUpdateClassSource.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAOH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;CAqBlB,CAAC;AASX;;;;;GAKG;AACH,wBAAsB,uBAAuB,CAAC,MAAM,EAAE,GAAG;;;;;;GAuGxD"}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* UpdateClassSource Handler - Update Existing ABAP Class Source Code
|
|
4
|
+
*
|
|
5
|
+
* Uses ClassBuilder from @mcp-abap-adt/adt-clients for all operations.
|
|
6
|
+
* Session and lock management handled internally by builder.
|
|
7
|
+
*
|
|
8
|
+
* Workflow: lock -> update -> check -> unlock -> (activate)
|
|
9
|
+
*/
|
|
10
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
11
|
+
exports.TOOL_DEFINITION = void 0;
|
|
12
|
+
exports.handleUpdateClassSource = handleUpdateClassSource;
|
|
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: "UpdateClassSource",
|
|
18
|
+
description: "Update source code of an existing ABAP class. Locks the class, uploads new source code, and unlocks. Optionally activates after update. Use this to modify existing classes without re-creating metadata.",
|
|
19
|
+
inputSchema: {
|
|
20
|
+
type: "object",
|
|
21
|
+
properties: {
|
|
22
|
+
class_name: {
|
|
23
|
+
type: "string",
|
|
24
|
+
description: "Class name (e.g., ZCL_TEST_CLASS_001). Class must already exist."
|
|
25
|
+
},
|
|
26
|
+
source_code: {
|
|
27
|
+
type: "string",
|
|
28
|
+
description: "Complete ABAP class source code including CLASS DEFINITION and IMPLEMENTATION sections."
|
|
29
|
+
},
|
|
30
|
+
activate: {
|
|
31
|
+
type: "boolean",
|
|
32
|
+
description: "Activate class after source update. Default: false. Set to true to activate immediately, or use ActivateObject for batch activation."
|
|
33
|
+
}
|
|
34
|
+
},
|
|
35
|
+
required: ["class_name", "source_code"]
|
|
36
|
+
}
|
|
37
|
+
};
|
|
38
|
+
/**
|
|
39
|
+
* Main handler for UpdateClassSource
|
|
40
|
+
*
|
|
41
|
+
* Uses ClassBuilder from @mcp-abap-adt/adt-clients for all operations
|
|
42
|
+
* Session and lock management handled internally by builder
|
|
43
|
+
*/
|
|
44
|
+
async function handleUpdateClassSource(params) {
|
|
45
|
+
const args = params;
|
|
46
|
+
// Validate required parameters
|
|
47
|
+
if (!args.class_name || !args.source_code) {
|
|
48
|
+
return (0, utils_1.return_error)(new Error("Missing required parameters: class_name and source_code"));
|
|
49
|
+
}
|
|
50
|
+
const className = args.class_name.toUpperCase();
|
|
51
|
+
const connection = (0, utils_1.getManagedConnection)();
|
|
52
|
+
utils_1.logger.info(`Starting UpdateClassSource for ${className}`);
|
|
53
|
+
try {
|
|
54
|
+
// Create client
|
|
55
|
+
const client = new adt_clients_1.CrudClient(connection);
|
|
56
|
+
// Build operation chain: validate -> lock -> update -> check -> unlock -> (activate)
|
|
57
|
+
const shouldActivate = args.activate === true; // Default to false if not specified
|
|
58
|
+
// Validate
|
|
59
|
+
await client.validateClass(className);
|
|
60
|
+
// Lock
|
|
61
|
+
await client.lockClass(className);
|
|
62
|
+
const lockHandle = client.getLockHandle();
|
|
63
|
+
try {
|
|
64
|
+
// Update source code
|
|
65
|
+
await client.updateClass(className, args.source_code, lockHandle);
|
|
66
|
+
// Check
|
|
67
|
+
await client.checkClass(className);
|
|
68
|
+
// Unlock
|
|
69
|
+
await client.unlockClass(className, lockHandle);
|
|
70
|
+
// Activate if requested
|
|
71
|
+
if (shouldActivate) {
|
|
72
|
+
await client.activateClass(className);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
catch (error) {
|
|
76
|
+
// Try to unlock on error
|
|
77
|
+
try {
|
|
78
|
+
await client.unlockClass(className, lockHandle);
|
|
79
|
+
}
|
|
80
|
+
catch (unlockError) {
|
|
81
|
+
utils_1.logger.error('Failed to unlock class after error:', unlockError);
|
|
82
|
+
}
|
|
83
|
+
throw error;
|
|
84
|
+
}
|
|
85
|
+
// Parse activation warnings if activation was performed
|
|
86
|
+
let activationWarnings = [];
|
|
87
|
+
if (shouldActivate && client.getActivateResult()) {
|
|
88
|
+
const activateResponse = client.getActivateResult();
|
|
89
|
+
if (typeof activateResponse.data === 'string' && activateResponse.data.includes('<chkl:messages')) {
|
|
90
|
+
const parser = new fast_xml_parser_1.XMLParser({ ignoreAttributes: false, attributeNamePrefix: '@_' });
|
|
91
|
+
const result = parser.parse(activateResponse.data);
|
|
92
|
+
const messages = result?.['chkl:messages']?.['msg'];
|
|
93
|
+
if (messages) {
|
|
94
|
+
const msgArray = Array.isArray(messages) ? messages : [messages];
|
|
95
|
+
activationWarnings = msgArray.map((msg) => `${msg['@_type']}: ${msg['shortText']?.['txt'] || 'Unknown'}`);
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
}
|
|
99
|
+
// Return success result
|
|
100
|
+
const stepsCompleted = ['lock', 'update', 'check', 'unlock'];
|
|
101
|
+
if (shouldActivate) {
|
|
102
|
+
stepsCompleted.push('activate');
|
|
103
|
+
}
|
|
104
|
+
const result = {
|
|
105
|
+
success: true,
|
|
106
|
+
class_name: className,
|
|
107
|
+
type: 'CLAS/OC',
|
|
108
|
+
message: shouldActivate
|
|
109
|
+
? `Class ${className} source updated and activated successfully`
|
|
110
|
+
: `Class ${className} source updated successfully (not activated)`,
|
|
111
|
+
uri: `/sap/bc/adt/oo/classes/${(0, utils_1.encodeSapObjectName)(className).toLowerCase()}`,
|
|
112
|
+
steps_completed: stepsCompleted,
|
|
113
|
+
activation_warnings: activationWarnings.length > 0 ? activationWarnings : undefined,
|
|
114
|
+
source_size_bytes: args.source_code.length
|
|
115
|
+
};
|
|
116
|
+
return (0, utils_1.return_response)({
|
|
117
|
+
data: JSON.stringify(result, null, 2),
|
|
118
|
+
status: 200,
|
|
119
|
+
statusText: 'OK',
|
|
120
|
+
headers: {},
|
|
121
|
+
config: {}
|
|
122
|
+
});
|
|
123
|
+
}
|
|
124
|
+
catch (error) {
|
|
125
|
+
utils_1.logger.error(`Error updating class ${className}:`, error);
|
|
126
|
+
const errorMessage = error.response?.data
|
|
127
|
+
? (typeof error.response.data === 'string' ? error.response.data : JSON.stringify(error.response.data))
|
|
128
|
+
: error.message || String(error);
|
|
129
|
+
return (0, utils_1.return_error)(new Error(`Failed to update class ${className}: ${errorMessage}`));
|
|
130
|
+
}
|
|
131
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ValidateClass Handler - Validate ABAP class name via ADT API
|
|
3
|
+
*
|
|
4
|
+
* Uses validateClassName from @mcp-abap-adt/adt-clients/core/class for class-specific validation.
|
|
5
|
+
* Supports package, description, and superclass validation.
|
|
6
|
+
*/
|
|
7
|
+
export declare const TOOL_DEFINITION: {
|
|
8
|
+
readonly name: "ValidateClass";
|
|
9
|
+
readonly description: "Validate an ABAP class name before creation. Checks if the name is valid, available, and validates package, description, and superclass if provided. 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 class_name: {
|
|
14
|
+
readonly type: "string";
|
|
15
|
+
readonly description: "Class name to validate (e.g., ZCL_MY_CLASS)";
|
|
16
|
+
};
|
|
17
|
+
readonly package_name: {
|
|
18
|
+
readonly type: "string";
|
|
19
|
+
readonly description: "Optional package name for validation";
|
|
20
|
+
};
|
|
21
|
+
readonly description: {
|
|
22
|
+
readonly type: "string";
|
|
23
|
+
readonly description: "Optional description for validation";
|
|
24
|
+
};
|
|
25
|
+
readonly superclass: {
|
|
26
|
+
readonly type: "string";
|
|
27
|
+
readonly description: "Optional superclass name for validation (e.g., CL_OBJECT)";
|
|
28
|
+
};
|
|
29
|
+
readonly session_id: {
|
|
30
|
+
readonly type: "string";
|
|
31
|
+
readonly description: "Session ID from GetSession. If not provided, a new session will be created.";
|
|
32
|
+
};
|
|
33
|
+
readonly session_state: {
|
|
34
|
+
readonly type: "object";
|
|
35
|
+
readonly description: "Session state from GetSession (cookies, csrf_token, cookie_store). Required if session_id is provided.";
|
|
36
|
+
readonly properties: {
|
|
37
|
+
readonly cookies: {
|
|
38
|
+
readonly type: "string";
|
|
39
|
+
};
|
|
40
|
+
readonly csrf_token: {
|
|
41
|
+
readonly type: "string";
|
|
42
|
+
};
|
|
43
|
+
readonly cookie_store: {
|
|
44
|
+
readonly type: "object";
|
|
45
|
+
};
|
|
46
|
+
};
|
|
47
|
+
};
|
|
48
|
+
};
|
|
49
|
+
readonly required: readonly ["class_name"];
|
|
50
|
+
};
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* Main handler for ValidateClass MCP tool
|
|
54
|
+
*/
|
|
55
|
+
export declare function handleValidateClass(args: any): Promise<{
|
|
56
|
+
isError: boolean;
|
|
57
|
+
content: {
|
|
58
|
+
type: string;
|
|
59
|
+
text: any;
|
|
60
|
+
}[];
|
|
61
|
+
}>;
|
|
62
|
+
//# sourceMappingURL=handleValidateClass.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handleValidateClass.d.ts","sourceRoot":"","sources":["../../../src/handlers/class/handleValidateClass.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAMH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAsClB,CAAC;AAeX;;GAEG;AACH,wBAAsB,mBAAmB,CAAC,IAAI,EAAE,GAAG;;;;;;GAkGlD"}
|
|
@@ -0,0 +1,136 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* ValidateClass Handler - Validate ABAP class name via ADT API
|
|
4
|
+
*
|
|
5
|
+
* Uses validateClassName from @mcp-abap-adt/adt-clients/core/class for class-specific validation.
|
|
6
|
+
* Supports package, description, and superclass validation.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
exports.TOOL_DEFINITION = void 0;
|
|
10
|
+
exports.handleValidateClass = handleValidateClass;
|
|
11
|
+
const utils_1 = require("../../lib/utils");
|
|
12
|
+
const adt_clients_1 = require("@mcp-abap-adt/adt-clients");
|
|
13
|
+
exports.TOOL_DEFINITION = {
|
|
14
|
+
name: "ValidateClass",
|
|
15
|
+
description: "Validate an ABAP class name before creation. Checks if the name is valid, available, and validates package, description, and superclass if provided. Can use session_id and session_state from GetSession to maintain the same session.",
|
|
16
|
+
inputSchema: {
|
|
17
|
+
type: "object",
|
|
18
|
+
properties: {
|
|
19
|
+
class_name: {
|
|
20
|
+
type: "string",
|
|
21
|
+
description: "Class name to validate (e.g., ZCL_MY_CLASS)"
|
|
22
|
+
},
|
|
23
|
+
package_name: {
|
|
24
|
+
type: "string",
|
|
25
|
+
description: "Optional package name for validation"
|
|
26
|
+
},
|
|
27
|
+
description: {
|
|
28
|
+
type: "string",
|
|
29
|
+
description: "Optional description for validation"
|
|
30
|
+
},
|
|
31
|
+
superclass: {
|
|
32
|
+
type: "string",
|
|
33
|
+
description: "Optional superclass name for validation (e.g., CL_OBJECT)"
|
|
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: ["class_name"]
|
|
50
|
+
}
|
|
51
|
+
};
|
|
52
|
+
/**
|
|
53
|
+
* Main handler for ValidateClass MCP tool
|
|
54
|
+
*/
|
|
55
|
+
async function handleValidateClass(args) {
|
|
56
|
+
try {
|
|
57
|
+
const { class_name, package_name, description, superclass, session_id, session_state } = args;
|
|
58
|
+
if (!class_name) {
|
|
59
|
+
return (0, utils_1.return_error)(new Error('class_name is required'));
|
|
60
|
+
}
|
|
61
|
+
const connection = (0, utils_1.getManagedConnection)();
|
|
62
|
+
// Restore session state if provided
|
|
63
|
+
if (session_id && session_state) {
|
|
64
|
+
connection.setSessionState({
|
|
65
|
+
cookies: session_state.cookies || null,
|
|
66
|
+
csrfToken: session_state.csrf_token || null,
|
|
67
|
+
cookieStore: session_state.cookie_store || {}
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
else {
|
|
71
|
+
// Ensure connection is established
|
|
72
|
+
await connection.connect();
|
|
73
|
+
}
|
|
74
|
+
const className = class_name.toUpperCase();
|
|
75
|
+
utils_1.logger.info(`Starting class validation: ${className}`);
|
|
76
|
+
try {
|
|
77
|
+
const builder = new adt_clients_1.CrudClient(connection);
|
|
78
|
+
await builder.validateClass(className);
|
|
79
|
+
const result = builder.getValidationResult();
|
|
80
|
+
if (!result) {
|
|
81
|
+
throw new Error('Validation did not return a result');
|
|
82
|
+
}
|
|
83
|
+
// Get updated session state after validation
|
|
84
|
+
const updatedSessionState = connection.getSessionState();
|
|
85
|
+
utils_1.logger.info(`✅ ValidateClass completed: ${className}`);
|
|
86
|
+
utils_1.logger.info(` Valid: ${result.valid}, Message: ${result.message || 'N/A'}`);
|
|
87
|
+
return (0, utils_1.return_response)({
|
|
88
|
+
data: JSON.stringify({
|
|
89
|
+
success: result.valid,
|
|
90
|
+
class_name: className,
|
|
91
|
+
package_name: package_name || null,
|
|
92
|
+
description: description || null,
|
|
93
|
+
superclass: superclass || null,
|
|
94
|
+
validation_result: result,
|
|
95
|
+
session_id: session_id,
|
|
96
|
+
session_state: updatedSessionState ? {
|
|
97
|
+
cookies: updatedSessionState.cookies,
|
|
98
|
+
csrf_token: updatedSessionState.csrfToken,
|
|
99
|
+
cookie_store: updatedSessionState.cookieStore
|
|
100
|
+
} : null,
|
|
101
|
+
message: result.valid
|
|
102
|
+
? `Class name ${className} is valid and available`
|
|
103
|
+
: `Class name ${className} validation failed: ${result.message || 'Unknown error'}`
|
|
104
|
+
}, null, 2)
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
catch (error) {
|
|
108
|
+
utils_1.logger.error(`Error validating class ${className}:`, error);
|
|
109
|
+
let errorMessage = `Failed to validate class: ${error.message || String(error)}`;
|
|
110
|
+
if (error.response?.status === 404) {
|
|
111
|
+
errorMessage = `Class ${className} not found.`;
|
|
112
|
+
}
|
|
113
|
+
else if (error.response?.data && typeof error.response.data === 'string') {
|
|
114
|
+
try {
|
|
115
|
+
const { XMLParser } = require('fast-xml-parser');
|
|
116
|
+
const parser = new XMLParser({
|
|
117
|
+
ignoreAttributes: false,
|
|
118
|
+
attributeNamePrefix: '@_'
|
|
119
|
+
});
|
|
120
|
+
const errorData = parser.parse(error.response.data);
|
|
121
|
+
const errorMsg = errorData['exc:exception']?.message?.['#text'] || errorData['exc:exception']?.message;
|
|
122
|
+
if (errorMsg) {
|
|
123
|
+
errorMessage = `SAP Error: ${errorMsg}`;
|
|
124
|
+
}
|
|
125
|
+
}
|
|
126
|
+
catch (parseError) {
|
|
127
|
+
// Ignore parse errors
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
return (0, utils_1.return_error)(new Error(errorMessage));
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
catch (error) {
|
|
134
|
+
return (0, utils_1.return_error)(error);
|
|
135
|
+
}
|
|
136
|
+
}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
import * as z from 'zod';
|
|
2
|
+
export declare const TOOL_DEFINITION: {
|
|
3
|
+
readonly name: "GetClass";
|
|
4
|
+
readonly description: "[read-only] Retrieve ABAP class source code.";
|
|
5
|
+
readonly inputSchema: {
|
|
6
|
+
readonly class_name: z.ZodString;
|
|
7
|
+
};
|
|
8
|
+
};
|
|
9
|
+
interface GetClassArgs {
|
|
10
|
+
[key: string]: any;
|
|
11
|
+
}
|
|
12
|
+
export declare function handleGetClass(args: GetClassArgs): Promise<{
|
|
13
|
+
isError: boolean;
|
|
14
|
+
content: {
|
|
15
|
+
type: string;
|
|
16
|
+
text: any;
|
|
17
|
+
}[];
|
|
18
|
+
}>;
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=handleGetClass.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handleGetClass.d.ts","sourceRoot":"","sources":["../../../../src/handlers/class/readonly/handleGetClass.ts"],"names":[],"mappings":"AAIA,OAAO,KAAK,CAAC,MAAM,KAAK,CAAC;AAEzB,eAAO,MAAM,eAAe;;;;;;CAMlB,CAAC;AAEX,UAAU,YAAY;IACpB,CAAC,GAAG,EAAE,MAAM,GAAG,GAAG,CAAC;CACpB;AA4DD,wBAAsB,cAAc,CAAC,IAAI,EAAE,YAAY;;;;;;GAsDtD"}
|
|
@@ -0,0 +1,159 @@
|
|
|
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.handleGetClass = handleGetClass;
|
|
38
|
+
const utils_1 = require("../../../lib/utils");
|
|
39
|
+
const adt_clients_1 = require("@mcp-abap-adt/adt-clients");
|
|
40
|
+
const fast_xml_parser_1 = require("fast-xml-parser");
|
|
41
|
+
const writeResultToFile_1 = require("../../../lib/writeResultToFile");
|
|
42
|
+
const z = __importStar(require("zod"));
|
|
43
|
+
exports.TOOL_DEFINITION = {
|
|
44
|
+
name: "GetClass",
|
|
45
|
+
description: "[read-only] Retrieve ABAP class source code.",
|
|
46
|
+
inputSchema: {
|
|
47
|
+
class_name: z.string().describe("Name of the ABAP class")
|
|
48
|
+
}
|
|
49
|
+
};
|
|
50
|
+
function parseClassXml(xml) {
|
|
51
|
+
const parser = new fast_xml_parser_1.XMLParser({
|
|
52
|
+
ignoreAttributes: false,
|
|
53
|
+
attributeNamePrefix: '',
|
|
54
|
+
parseAttributeValue: true,
|
|
55
|
+
trimValues: true
|
|
56
|
+
});
|
|
57
|
+
const result = parser.parse(xml);
|
|
58
|
+
// ADT Class XML (CLAS/OC)
|
|
59
|
+
if (result['oo:class']) {
|
|
60
|
+
const c = result['oo:class'];
|
|
61
|
+
// Method implementations extracted from the XML payload
|
|
62
|
+
let methodImpls = [];
|
|
63
|
+
const implSection = c['oo:methodImplementations']?.['oo:methodImplementation'];
|
|
64
|
+
if (Array.isArray(implSection)) {
|
|
65
|
+
methodImpls = implSection.map(m => ({
|
|
66
|
+
name: m['adtcore:name'],
|
|
67
|
+
source: m['oo:source']
|
|
68
|
+
}));
|
|
69
|
+
}
|
|
70
|
+
else if (implSection) {
|
|
71
|
+
methodImpls = [{
|
|
72
|
+
name: implSection['adtcore:name'],
|
|
73
|
+
source: implSection['oo:source']
|
|
74
|
+
}];
|
|
75
|
+
}
|
|
76
|
+
return {
|
|
77
|
+
name: c['adtcore:name'],
|
|
78
|
+
objectType: 'class',
|
|
79
|
+
description: c['adtcore:description'],
|
|
80
|
+
package: c['adtcore:packageRef']?.['adtcore:name'] || null,
|
|
81
|
+
superClass: c['oo:superClass']?.['adtcore:name'] || null,
|
|
82
|
+
interfaces: Array.isArray(c['oo:interfaces']?.['oo:interface'])
|
|
83
|
+
? c['oo:interfaces']['oo:interface'].map(i => i['adtcore:name'])
|
|
84
|
+
: c['oo:interfaces']?.['oo:interface']
|
|
85
|
+
? [c['oo:interfaces']['oo:interface']['adtcore:name']]
|
|
86
|
+
: [],
|
|
87
|
+
methods: Array.isArray(c['oo:methods']?.['oo:method'])
|
|
88
|
+
? c['oo:methods']['oo:method'].map(m => m['adtcore:name'])
|
|
89
|
+
: c['oo:methods']?.['oo:method']
|
|
90
|
+
? [c['oo:methods']['oo:method']['adtcore:name']]
|
|
91
|
+
: [],
|
|
92
|
+
attributes: Array.isArray(c['oo:attributes']?.['oo:attribute'])
|
|
93
|
+
? c['oo:attributes']['oo:attribute'].map(a => a['adtcore:name'])
|
|
94
|
+
: c['oo:attributes']?.['oo:attribute']
|
|
95
|
+
? [c['oo:attributes']['oo:attribute']['adtcore:name']]
|
|
96
|
+
: [],
|
|
97
|
+
methodImplementations: methodImpls
|
|
98
|
+
};
|
|
99
|
+
}
|
|
100
|
+
// fallback: return raw
|
|
101
|
+
return { raw: result };
|
|
102
|
+
}
|
|
103
|
+
async function handleGetClass(args) {
|
|
104
|
+
try {
|
|
105
|
+
if (!args?.class_name) {
|
|
106
|
+
throw new utils_1.McpError(utils_1.ErrorCode.InvalidParams, 'Class name is required');
|
|
107
|
+
}
|
|
108
|
+
const connection = (0, utils_1.getManagedConnection)();
|
|
109
|
+
const client = new adt_clients_1.CrudClient(connection);
|
|
110
|
+
await client.readClass(args.class_name);
|
|
111
|
+
const response = client.getReadResult();
|
|
112
|
+
if (!response) {
|
|
113
|
+
throw new utils_1.McpError(utils_1.ErrorCode.InternalError, 'Failed to read class');
|
|
114
|
+
}
|
|
115
|
+
// Parse XML responses; otherwise return the payload unchanged
|
|
116
|
+
if (typeof response.data === 'string' && response.data.trim().startsWith('<?xml')) {
|
|
117
|
+
const resultObj = parseClassXml(response.data);
|
|
118
|
+
const result = {
|
|
119
|
+
isError: false,
|
|
120
|
+
content: [
|
|
121
|
+
{
|
|
122
|
+
type: "text",
|
|
123
|
+
text: JSON.stringify(resultObj, null, 2)
|
|
124
|
+
}
|
|
125
|
+
]
|
|
126
|
+
};
|
|
127
|
+
if (args.filePath) {
|
|
128
|
+
(0, writeResultToFile_1.writeResultToFile)(JSON.stringify(result, null, 2), args.filePath);
|
|
129
|
+
}
|
|
130
|
+
return result;
|
|
131
|
+
}
|
|
132
|
+
else {
|
|
133
|
+
// Plain text responses still follow the MCP wrapper format
|
|
134
|
+
if (args.filePath) {
|
|
135
|
+
(0, writeResultToFile_1.writeResultToFile)(response.data, args.filePath);
|
|
136
|
+
}
|
|
137
|
+
return {
|
|
138
|
+
isError: false,
|
|
139
|
+
content: [
|
|
140
|
+
{
|
|
141
|
+
type: "text",
|
|
142
|
+
text: response.data
|
|
143
|
+
}
|
|
144
|
+
]
|
|
145
|
+
};
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
catch (error) {
|
|
149
|
+
return {
|
|
150
|
+
isError: true,
|
|
151
|
+
content: [
|
|
152
|
+
{
|
|
153
|
+
type: "text",
|
|
154
|
+
text: error instanceof Error ? error.message : String(error)
|
|
155
|
+
}
|
|
156
|
+
]
|
|
157
|
+
};
|
|
158
|
+
}
|
|
159
|
+
}
|
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* ActivateObject Handler - Universal ABAP Object Activation via ADT API
|
|
3
|
+
*
|
|
4
|
+
* Uses activateObjectsGroup and parseActivationResponse from @mcp-abap-adt/adt-clients/core for all operations.
|
|
5
|
+
* Connection management handled internally.
|
|
6
|
+
*
|
|
7
|
+
* Activates one or multiple ABAP repository objects using ADT activation endpoint.
|
|
8
|
+
* This is a stateless operation - no session management or locking required.
|
|
9
|
+
*/
|
|
10
|
+
export declare const TOOL_DEFINITION: {
|
|
11
|
+
readonly name: "ActivateObject";
|
|
12
|
+
readonly 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.";
|
|
13
|
+
readonly inputSchema: {
|
|
14
|
+
readonly type: "object";
|
|
15
|
+
readonly properties: {
|
|
16
|
+
readonly objects: {
|
|
17
|
+
readonly type: "array";
|
|
18
|
+
readonly description: "Array of objects to activate. Each object must have 'name' and 'type'. URI is auto-generated.";
|
|
19
|
+
readonly items: {
|
|
20
|
+
readonly type: "object";
|
|
21
|
+
readonly properties: {
|
|
22
|
+
readonly name: {
|
|
23
|
+
readonly type: "string";
|
|
24
|
+
readonly description: "Object name in uppercase (e.g., 'ZCL_MY_CLASS', 'Z_MY_PROGRAM', 'ZOK_I_MARKET_0001')";
|
|
25
|
+
};
|
|
26
|
+
readonly type: {
|
|
27
|
+
readonly type: "string";
|
|
28
|
+
readonly description: "Object type code (e.g., 'CLAS/OC', 'PROG/P', 'DDLS/DF', 'TABL/DT'). URI will be auto-generated from this.";
|
|
29
|
+
};
|
|
30
|
+
readonly uri: {
|
|
31
|
+
readonly type: "string";
|
|
32
|
+
readonly description: "Optional: Object URI in ADT format. If not provided, will be auto-generated from name and type.";
|
|
33
|
+
};
|
|
34
|
+
};
|
|
35
|
+
readonly required: readonly ["name", "type"];
|
|
36
|
+
};
|
|
37
|
+
};
|
|
38
|
+
readonly preaudit: {
|
|
39
|
+
readonly type: "boolean";
|
|
40
|
+
readonly description: "Request pre-audit before activation. Default: true";
|
|
41
|
+
};
|
|
42
|
+
};
|
|
43
|
+
readonly required: readonly ["objects"];
|
|
44
|
+
};
|
|
45
|
+
};
|
|
46
|
+
/**
|
|
47
|
+
* Main handler for ActivateObject MCP tool
|
|
48
|
+
*
|
|
49
|
+
* Uses activateObjectsGroup and parseActivationResponse from @mcp-abap-adt/adt-clients/core for all operations
|
|
50
|
+
* Connection management handled internally
|
|
51
|
+
*
|
|
52
|
+
* This is a stateless operation - no session management needed.
|
|
53
|
+
* Activation endpoint handles multiple objects in one request.
|
|
54
|
+
*/
|
|
55
|
+
export declare function handleActivateObject(params: any): Promise<{
|
|
56
|
+
isError: boolean;
|
|
57
|
+
content: {
|
|
58
|
+
type: string;
|
|
59
|
+
text: any;
|
|
60
|
+
}[];
|
|
61
|
+
}>;
|
|
62
|
+
//# sourceMappingURL=handleActivateObject.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"handleActivateObject.d.ts","sourceRoot":"","sources":["../../../src/handlers/common/handleActivateObject.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAKH,eAAO,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAmClB,CAAC;AAaX;;;;;;;;GAQG;AACH,wBAAsB,oBAAoB,CAAC,MAAM,EAAE,GAAG;;;;;;GAyFrD"}
|