@mcp-abap-adt/adt-clients 18.0.0 → 18.0.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/README.md CHANGED
@@ -69,6 +69,10 @@ This package interacts with external packages **ONLY through interfaces**:
69
69
  - **`@mcp-abap-adt/connection`**: Uses the `IAbapConnection` interface for HTTP requests — does not know about the concrete connection implementation. It is a **dev** dependency; consumers supply their own implementation.
70
70
  - **No other direct package dependencies**: all remaining interactions happen through well-defined interfaces
71
71
 
72
+ > **Coming from 17.x?** 18.0.0 is a breaking release — see
73
+ > [docs/usage/MIGRATION-18.0.md](docs/usage/MIGRATION-18.0.md) for what changes
74
+ > and why.
75
+
72
76
  ## Installation
73
77
 
74
78
  ### As npm Package
@@ -44,10 +44,12 @@ export type IAtcRunResult = {
44
44
  * `FINDING_STATS` as the server sent it — a comma-separated triple, for
45
45
  * example `"0,0,1"`.
46
46
  *
47
- * Not parsed into named counts. Which position is which severity has been
48
- * seen once, in a worklist with a single finding at priority 3, which fits
49
- * several orderings; inventing `{ errors, warnings, infos }` would publish
50
- * two guesses to save a caller one `split(',')`.
47
+ * Not parsed into named counts, though the ordering is now measured
48
+ * twice: one priority-3 finding read `"0,0,1"`, one priority-2 finding
49
+ * read `"0,1,0"` (BTP trial, 2026-09-08 — see the ATC integration test).
50
+ * Both fit `(priority 1, priority 2, priority 3)` and nothing else fits
51
+ * both. What is still unseen is a non-zero first position, so naming the
52
+ * fields would publish one guess to save a caller one `split(',')`.
51
53
  */
52
54
  findingStats: string;
53
55
  };
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/runtime/atc/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa,GACrB;IACE;;;;;OAKG;IACH,MAAM,EAAE,KAAK,CAAC;IACd,gDAAgD;IAChD,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,KAAK,EAAE,MAAM,CAAC;CACf,GACD;IACE,8DAA8D;IAC9D,MAAM,EAAE,IAAI,CAAC;IACb,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;;;;OAQG;IACH,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEN,kEAAkE;AAClE,MAAM,WAAW,aAAa;IAC5B;;;;;;OAMG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;;;;;;;;;;;OAYG;IACH,UAAU,EAAE,OAAO,CAAC;IAEpB,sEAAsE;IACtE,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/runtime/atc/types.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;GAWG;AAEH;;;;;;;GAOG;AACH,MAAM,MAAM,aAAa,GACrB;IACE;;;;;OAKG;IACH,MAAM,EAAE,KAAK,CAAC;IACd,gDAAgD;IAChD,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;OAKG;IACH,KAAK,EAAE,MAAM,CAAC;CACf,GACD;IACE,8DAA8D;IAC9D,MAAM,EAAE,IAAI,CAAC;IACb,wCAAwC;IACxC,UAAU,EAAE,MAAM,CAAC;IACnB;;;;;;;;;;OAUG;IACH,YAAY,EAAE,MAAM,CAAC;CACtB,CAAC;AAEN,kEAAkE;AAClE,MAAM,WAAW,aAAa;IAC5B;;;;;;OAMG;IACH,MAAM,EAAE,MAAM,CAAC;IAEf;;;;;;;;;;;;OAYG;IACH,UAAU,EAAE,OAAO,CAAC;IAEpB,sEAAsE;IACtE,UAAU,CAAC,EAAE,MAAM,CAAC;IAEpB,8EAA8E;IAC9E,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB"}
package/docs/README.md ADDED
@@ -0,0 +1,111 @@
1
+ # Documentation
2
+
3
+ Complete documentation for the `@mcp-abap-adt/adt-clients` package.
4
+
5
+ ## Quick Start
6
+
7
+ - [Main README](../README.md) - Package overview, installation, and quick start guide
8
+ - [CHANGELOG](../CHANGELOG.md) - Version history and release notes
9
+
10
+ ## Architecture
11
+
12
+ - [**ARCHITECTURE.md**](architecture/ARCHITECTURE.md) - System architecture, design patterns, and type system organization
13
+ - [**LEGACY.md**](architecture/LEGACY.md) - Legacy system support (BASIS < 7.50): supported types, RFC transport, endpoint availability
14
+
15
+ ## Usage Guides
16
+
17
+ - [**MIGRATION-18.0.md**](usage/MIGRATION-18.0.md) — what a consumer on 17.x has to change, and why the compiler is right
18
+ - [**OBJECT_LIFECYCLE.md**](usage/OBJECT_LIFECYCLE.md) — create → lock → update → unlock → activate: the calls you make, what each one does, where the flow does not hold
19
+ - [**CLIENT_API_REFERENCE.md**](usage/CLIENT_API_REFERENCE.md) - Complete API reference for `AdtClient`
20
+ - [**RFC_CONNECTION.md**](usage/RFC_CONNECTION.md) - RFC connection guide for legacy systems
21
+ - [**STATEFUL_SESSION_GUIDE.md**](usage/STATEFUL_SESSION_GUIDE.md) - Guide for stateful session management
22
+ - [**CHECK_LOCAL_TEST_CLASS.md**](usage/CHECK_LOCAL_TEST_CLASS.md) - Guide for validating ABAP Unit test classes
23
+ - [**DEBUG.md**](usage/DEBUG.md) - Debugging and troubleshooting guide
24
+ - [TROUBLESHOOTING.md](usage/TROUBLESHOOTING.md) — what ADT answers when it refuses, and why the message is often accurate about the wrong thing
25
+ - [**OPERATION_DELAYS.md**](usage/OPERATION_DELAYS.md) - Detailed guide on operation delays and timing
26
+ - [**OPERATION_DELAYS_SUMMARY.md**](usage/OPERATION_DELAYS_SUMMARY.md) - Quick reference for operation delays
27
+
28
+ ## Development
29
+ - [**RUNNING_TESTS.md**](development/RUNNING_TESTS.md) — how to run the suite, why an agent CLI must run it detached, and what order things go in
30
+ - [**TEST_CONFIG_SCHEMA.md**](development/TEST_CONFIG_SCHEMA.md) - Test configuration schema and guidelines
31
+ - [**UPDATE_CONTENT_TYPES.md**](development/UPDATE_CONTENT_TYPES.md) - Content types for update operations (text/plain vs XML)
32
+ - [**RFC_TESTING.md**](development/RFC_TESTING.md) - RFC testing setup and environment variables
33
+
34
+ ## Documentation Structure
35
+
36
+ ```
37
+ docs/
38
+ ├── README.md # This file - documentation index
39
+ ├── architecture/
40
+ │ ├── ARCHITECTURE.md # System architecture and design
41
+ │ ├── LEGACY.md # Legacy system support (BASIS < 7.50)
42
+ │ ├── discovery.md # ADT Discovery documentation
43
+ │ └── discovery.xml # Pretty-printed ADT discovery XML
44
+ ├── usage/
45
+ │ ├── OBJECT_LIFECYCLE.md # The create → … → activate flow and its exceptions
46
+ │ ├── CLIENT_API_REFERENCE.md # Client API reference
47
+ │ ├── STATEFUL_SESSION_GUIDE.md # Session management
48
+ │ ├── CHECK_LOCAL_TEST_CLASS.md # Local test class validation
49
+ │ ├── DEBUG.md # Debugging guide
50
+ │ ├── OPERATION_DELAYS.md # Operation delays (detailed)
51
+ │ └── OPERATION_DELAYS_SUMMARY.md # Operation delays (summary)
52
+ └── development/
53
+ ├── TEST_CONFIG_SCHEMA.md # Test configuration
54
+ ├── UPDATE_CONTENT_TYPES.md # Update content types reference
55
+ └── BUILDER_TEST_PATTERN.md # Integration test pattern (AdtClient/BaseTester)
56
+ ```
57
+
58
+ ## Key Concepts
59
+
60
+ ### Client Classes
61
+
62
+ The package provides the main client classes:
63
+
64
+ - **AdtClient** - High-level CRUD API; one member, one ADT request (recommended)
65
+ - **AdtRuntimeClient** - Runtime operations (ABAP debugger, traces, dumps, logs, feeds, ATC check runs)
66
+
67
+ See [CLIENT_API_REFERENCE.md](usage/CLIENT_API_REFERENCE.md) for complete method documentation.
68
+
69
+ ### Usage Examples
70
+
71
+ **Using AdtClient (recommended):**
72
+ ```typescript
73
+ const client = new AdtClient(connection, logger);
74
+
75
+ // Every member answers a contract: a result or a failure, never both.
76
+ const created = await client.getClass().create({
77
+ className: 'ZCL_TEST',
78
+ packageName: 'ZPACKAGE',
79
+ description: 'Test',
80
+ });
81
+ if (!created.ok) throw new Error(created.getError().message);
82
+
83
+ // Utility operations
84
+ const found = await client.getUtils().search({ query: 'Z*', objectType: 'CLAS' });
85
+ if (found.ok) found.getResult().value; // ISearchResult[]
86
+ ```
87
+
88
+ ### Type System
89
+
90
+ The package uses a dual naming convention:
91
+ - **snake_case** - Low-level ADT parameters
92
+ - **camelCase** - Adt* configuration and high-level APIs
93
+
94
+ See [ARCHITECTURE.md](architecture/ARCHITECTURE.md#type-system-organization) for details.
95
+
96
+ ### Session Management
97
+
98
+ The package supports stateful sessions with automatic lock handle tracking and session persistence.
99
+
100
+ See [STATEFUL_SESSION_GUIDE.md](usage/STATEFUL_SESSION_GUIDE.md) for implementation details.
101
+
102
+ ## Contributing
103
+
104
+ - [CONTRIBUTORS.md](../CONTRIBUTORS.md) - Contribution guidelines and contributor list
105
+ - [LICENSE](../LICENSE) - MIT License
106
+
107
+ ## Support
108
+
109
+ For issues and questions:
110
+ - GitHub Issues: [mcp-abap-adt-clients repository](https://github.com/fr0ster/mcp-abap-adt-clients)
111
+ - See [DEBUG.md](usage/DEBUG.md) for troubleshooting common issues
@@ -0,0 +1,248 @@
1
+ # ADT Object Entities
2
+
3
+ _Generated by `tools/adt-object-entities.js`. Do not edit by hand._
4
+
5
+ ## AccessControl
6
+ - Core module: `accessControl`
7
+ - Core classes: `AdtAccessControl`
8
+ - Client methods: `AdtClient.getAccessControl`
9
+ - Core functions: `activation.ts:activateAccessControl`, `check.ts:checkAccessControl`, `create.ts:create`, `delete.ts:checkDeletion`, `delete.ts:deleteAccessControl`, `lock.ts:lockAccessControl`, `read.ts:getAccessControl`, `read.ts:getAccessControlSource`, `read.ts:getAccessControlTransport`, `unlock.ts:unlockAccessControl`, `update.ts:updateAccessControl`, `validation.ts:validateAccessControlName`, `versions.ts:getAccessControlVersions`, `versions.ts:getAccessControlVersionSource`
10
+
11
+ ## AppendStructure
12
+ - Core module: `appendStructure`
13
+ - Core classes: `AdtAppendStructure`
14
+ - Client methods: `AdtClient.getAppendStructure`
15
+ - Core functions: `activation.ts:activateAppendStructure`, `check.ts:checkAppendStructure`, `create.ts:create`, `delete.ts:checkDeletion`, `delete.ts:deleteAppendStructure`, `lock.ts:lockAppendStructure`, `read.ts:getAppendStructure`, `read.ts:getAppendStructureSource`, `read.ts:getAppendStructureTransport`, `unlock.ts:unlockAppendStructure`, `update.ts:updateAppendStructure`, `validation.ts:validateAppendStructureName`, `versions.ts:getAppendStructureVersions`, `versions.ts:getAppendStructureVersionSource`
16
+
17
+ ## AuthorizationField
18
+ - Core module: `authorizationField`
19
+ - Core classes: `AdtAuthorizationField`
20
+ - Client methods: `AdtClient.getAuthorizationField`
21
+ - Core functions: `activation.ts:activateAuthorizationField`, `check.ts:checkAuthorizationField`, `create.ts:create`, `delete.ts:checkDeletion`, `delete.ts:deleteAuthorizationField`, `lock.ts:lockAuthorizationField`, `read.ts:readAuthorizationField`, `unlock.ts:unlockAuthorizationField`, `update.ts:updateAuthorizationField`, `validation.ts:validateAuthorizationFieldName`, `xmlBuilder.ts:buildAuthorizationFieldXml`
22
+
23
+ ## BehaviorDefinition
24
+ - Core module: `behaviorDefinition`
25
+ - Core classes: `AdtBehaviorDefinition`
26
+ - Client methods: `AdtClient.getBehaviorDefinition`
27
+ - Core functions: `activation.ts:activate`, `check.ts:check`, `check.ts:checkAbap`, `check.ts:checkImplementation`, `create.ts:create`, `delete.ts:checkDeletion`, `delete.ts:deleteBehaviorDefinition`, `lock.ts:lock`, `lock.ts:lockForUpdate`, `read.ts:getBehaviorDefinitionTransport`, `read.ts:read`, `read.ts:readSource`, `unlock.ts:unlock`, `update.ts:update`, `validation.ts:validate`, `versions.ts:getBehaviorDefinitionVersions`, `versions.ts:getBehaviorDefinitionVersionSource`
28
+
29
+ ## BehaviorImplementation
30
+ - Core module: `behaviorImplementation`
31
+ - Core classes: `AdtBehaviorImplementation`
32
+ - Client methods: `AdtClient.getBehaviorImplementation`
33
+ - Core functions: `read.ts:getBehaviorImplementationImplementations`, `read.ts:getBehaviorImplementationMetadata`, `read.ts:getBehaviorImplementationSource`, `read.ts:getBehaviorImplementationTransport`, `update.ts:updateBehaviorImplementation`, `validation.ts:validateBehaviorImplementationName`, `versions.ts:getBehaviorImplementationVersions`, `versions.ts:getBehaviorImplementationVersionSource`
34
+
35
+ ## CdsUnitTest
36
+ - Core module: `unitTest`
37
+ - Core classes: `AdtCdsUnitTest`, `AdtUnitTest`, `AdtUnitTestLegacy`
38
+ - Client methods: `AdtClient.getCdsUnitTest`
39
+ - Core functions: `checkCdsTestDoublesAvailability.ts:checkCdsTestDoublesAvailability`, `run.ts:getClassUnitTestResult`, `run.ts:getClassUnitTestStatus`, `run.ts:startClassUnitTestRun`, `run.ts:startClassUnitTestRunByObject`, `runLegacy.ts:getClassUnitTestResultLegacy`, `runLegacy.ts:getClassUnitTestStatusLegacy`, `runLegacy.ts:startClassUnitTestRunLegacy`
40
+
41
+ ## Class
42
+ - Core module: `class`
43
+ - Core classes: `AdtClass`, `AdtClassLegacy`, `AdtLocalDefinitions`, `AdtLocalMacros`, `AdtLocalTestClass`, `AdtLocalTypes`
44
+ - Client methods: `AdtClient.getClass`
45
+ - Core functions: `activation.ts:activateClass`, `check.ts:checkClass`, `check.ts:checkClassDefinitions`, `check.ts:checkClassLocalTestClass`, `check.ts:checkClassLocalTypes`, `check.ts:checkClassMacros`, `create.ts:create`, `delete.ts:checkDeletion`, `delete.ts:deleteClass`, `includes.ts:updateClassDefinitions`, `includes.ts:updateClassLocalTypes`, `includes.ts:updateClassMacros`, `lock.ts:lockClass`, `lock.ts:lockClassForUpdate`, `read.ts:getClass`, `read.ts:getClassDefinitionsInclude`, `read.ts:getClassImplementationsInclude`, `read.ts:getClassMacrosInclude`, `read.ts:getClassMetadata`, `read.ts:getClassSource`, `read.ts:getClassTestClassesInclude`, `read.ts:getClassTransport`, `run.ts:getClassUnitTestResult`, `run.ts:getClassUnitTestStatus`, `run.ts:runClass`, `run.ts:startClassUnitTestRun`, `run.ts:startClassUnitTestRunByObject`, `testclasses.ts:activateClassTestClasses`, `testclasses.ts:updateClassTestInclude`, `unlock.ts:unlockClass`, `update.ts:updateClass`, `update.ts:updateClassImplementations`, `update.ts:updateClassWithCheck`, `validation.ts:validateClassName`, `validation.ts:validateClassSource`, `versions.ts:getClassIncludeVersions`, `versions.ts:getClassVersionSource`
46
+
47
+ ## DataElement
48
+ - Core module: `dataElement`
49
+ - Core classes: `AdtDataElement`
50
+ - Client methods: `AdtClient.getDataElement`
51
+ - Core functions: `activation.ts:activateDataElement`, `check.ts:checkDataElement`, `create.ts:create`, `delete.ts:checkDeletion`, `delete.ts:deleteDataElement`, `lock.ts:lockDataElement`, `read.ts:getDataElement`, `read.ts:getDataElementTransport`, `unlock.ts:unlockDataElement`, `update.ts:getDomainInfo`, `update.ts:updateDataElement`, `update.ts:updateDataElementInternal`, `validation.ts:validateDataElementName`
52
+
53
+ ## Ddl
54
+ - Core module: `ddl`
55
+ - Core classes: `AdtDdl`, `AdtDdlLegacy`
56
+ - Client methods: `AdtClient.getDdl`
57
+ - Core functions: `activation.ts:activateDDLS`, `check.ts:checkDdl`, `create.ts:createDdl`, `delete.ts:checkDeletion`, `delete.ts:deleteDdl`, `lock.ts:lockDDLS`, `lock.ts:lockDDLSForUpdate`, `read.ts:getDdl`, `read.ts:getDdlMetadata`, `read.ts:getDdlSource`, `read.ts:getDdlTransport`, `unlock.ts:unlockDDLS`, `update.ts:updateDdl`, `validation.ts:validateDdlName`, `versions.ts:getDdlVersions`, `versions.ts:getDdlVersionSource`
58
+
59
+ ## Domain
60
+ - Core module: `domain`
61
+ - Core classes: `AdtDomain`
62
+ - Client methods: `AdtClient.getDomain`
63
+ - Core functions: `activation.ts:activateDomain`, `check.ts:checkDomainSyntax`, `create.ts:create`, `delete.ts:checkDeletion`, `delete.ts:deleteDomain`, `lock.ts:acquireLockHandle`, `lock.ts:lockDomain`, `read.ts:getDomain`, `read.ts:getDomainTransport`, `unlock.ts:unlockDomain`, `update.ts:updateDomain`, `validation.ts:validateDomainName`
64
+
65
+ ## Enhancement
66
+ - Core module: `enhancement`
67
+ - Core classes: `AdtEnhancement`
68
+ - Client methods: `AdtClient.getEnhancement`
69
+ - Core functions: `activation.ts:activateEnhancement`, `check.ts:check`, `check.ts:checkEnhancement`, `create.ts:create`, `delete.ts:checkDeletion`, `delete.ts:deleteEnhancement`, `lock.ts:lockEnhancement`, `lock.ts:lockEnhancementForUpdate`, `read.ts:getEnhancementMetadata`, `read.ts:getEnhancementSource`, `read.ts:getEnhancementTransport`, `unlock.ts:unlockEnhancement`, `update.ts:update`, `update.ts:updateEnhancement`, `validation.ts:validate`, `validation.ts:validateEnhancementName`, `versions.ts:getEnhancementVersions`, `versions.ts:getEnhancementVersionSource`
70
+
71
+ ## FeatureToggle
72
+ - Core module: `featureToggle`
73
+ - Core classes: `AdtFeatureToggle`
74
+ - Client methods: `AdtClient.getFeatureToggle`
75
+ - Core functions: `activation.ts:activateFeatureToggle`, `check.ts:checkFeatureToggle`, `checkState.ts:checkFeatureToggleState`, `create.ts:create`, `delete.ts:checkDeletion`, `delete.ts:deleteFeatureToggle`, `getState.ts:getFeatureToggleState`, `lock.ts:lockFeatureToggle`, `read.ts:readFeatureToggle`, `readSource.ts:readFeatureToggleSource`, `switch.ts:toggleFeatureToggle`, `unlock.ts:unlockFeatureToggle`, `update.ts:updateFeatureToggle`, `updateSource.ts:uploadFeatureToggleSource`, `validation.ts:validateFeatureToggleName`, `xmlBuilder.ts:buildFeatureToggleXml`
76
+
77
+ ## FunctionGroup
78
+ - Core module: `functionGroup`
79
+ - Core classes: `AdtFunctionGroup`, `AdtFunctionGroupLegacy`
80
+ - Client methods: `AdtClient.getFunctionGroup`
81
+ - Core functions: `activation.ts:activateFunctionGroup`, `check.ts:checkFunctionGroup`, `create.ts:create`, `delete.ts:checkDeletion`, `delete.ts:deleteFunctionGroup`, `lock.ts:lockFunctionGroup`, `lock.ts:unlockFunctionGroup`, `read.ts:getFunctionGroup`, `read.ts:getFunctionGroupTransport`, `update.ts:updateFunctionGroup`, `validation.ts:validateFunctionGroupName`
82
+
83
+ ## FunctionInclude
84
+ - Core module: `functionInclude`
85
+ - Core classes: `AdtFunctionInclude`
86
+ - Client methods: `AdtClient.getFunctionInclude`
87
+ - Core functions: `activation.ts:activateFunctionInclude`, `check.ts:checkFunctionInclude`, `create.ts:create`, `delete.ts:checkDeletion`, `delete.ts:deleteFunctionInclude`, `lock.ts:lockFunctionInclude`, `read.ts:readFunctionInclude`, `readSource.ts:readFunctionIncludeSource`, `unlock.ts:unlockFunctionInclude`, `update.ts:updateFunctionInclude`, `updateSource.ts:uploadFunctionIncludeSource`, `validation.ts:validateFunctionIncludeName`, `versions.ts:getFunctionIncludeVersions`, `versions.ts:getFunctionIncludeVersionSource`, `xmlBuilder.ts:buildFunctionIncludeXml`
88
+
89
+ ## FunctionModule
90
+ - Core module: `functionModule`
91
+ - Core classes: `AdtFunctionModule`, `AdtFunctionModuleLegacy`
92
+ - Client methods: `AdtClient.getFunctionModule`
93
+ - Core functions: `activation.ts:activateFunctionModule`, `check.ts:checkFunctionModule`, `create.ts:create`, `delete.ts:checkDeletion`, `delete.ts:deleteFunctionModule`, `lock.ts:lockFunctionModule`, `lock.ts:lockFunctionModuleForUpdate`, `read.ts:getFunction`, `read.ts:getFunctionMetadata`, `read.ts:getFunctionModuleTransport`, `read.ts:getFunctionSource`, `unlock.ts:unlockFunctionModule`, `update.ts:update`, `validation.ts:validateFunctionModuleName`, `validation.ts:validateFunctionModuleSource`, `versions.ts:getFunctionModuleVersions`, `versions.ts:getFunctionModuleVersionSource`
94
+
95
+ ## Interface
96
+ - Core module: `interface`
97
+ - Core classes: `AdtInterface`, `AdtInterfaceLegacy`
98
+ - Client methods: `AdtClient.getInterface`
99
+ - Core functions: `activation.ts:activateInterface`, `check.ts:checkInterface`, `create.ts:create`, `create.ts:generateInterfaceTemplate`, `delete.ts:checkDeletion`, `delete.ts:deleteInterface`, `lock.ts:lockInterface`, `lock.ts:lockInterfaceForUpdate`, `read.ts:getInterface`, `read.ts:getInterfaceMetadata`, `read.ts:getInterfaceSource`, `read.ts:getInterfaceTransport`, `unlock.ts:unlockInterface`, `update.ts:upload`, `validation.ts:validateInterfaceName`, `versions.ts:getInterfaceVersions`, `versions.ts:getInterfaceVersionSource`
100
+
101
+ ## LocalDefinitions
102
+ - Core module: `class`
103
+ - Core classes: `AdtClass`, `AdtClassLegacy`, `AdtLocalDefinitions`, `AdtLocalMacros`, `AdtLocalTestClass`, `AdtLocalTypes`
104
+ - Client methods: `AdtClient.getLocalDefinitions`
105
+ - Core functions: `activation.ts:activateClass`, `check.ts:checkClass`, `check.ts:checkClassDefinitions`, `check.ts:checkClassLocalTestClass`, `check.ts:checkClassLocalTypes`, `check.ts:checkClassMacros`, `create.ts:create`, `delete.ts:checkDeletion`, `delete.ts:deleteClass`, `includes.ts:updateClassDefinitions`, `includes.ts:updateClassLocalTypes`, `includes.ts:updateClassMacros`, `lock.ts:lockClass`, `lock.ts:lockClassForUpdate`, `read.ts:getClass`, `read.ts:getClassDefinitionsInclude`, `read.ts:getClassImplementationsInclude`, `read.ts:getClassMacrosInclude`, `read.ts:getClassMetadata`, `read.ts:getClassSource`, `read.ts:getClassTestClassesInclude`, `read.ts:getClassTransport`, `run.ts:getClassUnitTestResult`, `run.ts:getClassUnitTestStatus`, `run.ts:runClass`, `run.ts:startClassUnitTestRun`, `run.ts:startClassUnitTestRunByObject`, `testclasses.ts:activateClassTestClasses`, `testclasses.ts:updateClassTestInclude`, `unlock.ts:unlockClass`, `update.ts:updateClass`, `update.ts:updateClassImplementations`, `update.ts:updateClassWithCheck`, `validation.ts:validateClassName`, `validation.ts:validateClassSource`, `versions.ts:getClassIncludeVersions`, `versions.ts:getClassVersionSource`
106
+
107
+ ## LocalMacros
108
+ - Core module: `class`
109
+ - Core classes: `AdtClass`, `AdtClassLegacy`, `AdtLocalDefinitions`, `AdtLocalMacros`, `AdtLocalTestClass`, `AdtLocalTypes`
110
+ - Client methods: `AdtClient.getLocalMacros`
111
+ - Core functions: `activation.ts:activateClass`, `check.ts:checkClass`, `check.ts:checkClassDefinitions`, `check.ts:checkClassLocalTestClass`, `check.ts:checkClassLocalTypes`, `check.ts:checkClassMacros`, `create.ts:create`, `delete.ts:checkDeletion`, `delete.ts:deleteClass`, `includes.ts:updateClassDefinitions`, `includes.ts:updateClassLocalTypes`, `includes.ts:updateClassMacros`, `lock.ts:lockClass`, `lock.ts:lockClassForUpdate`, `read.ts:getClass`, `read.ts:getClassDefinitionsInclude`, `read.ts:getClassImplementationsInclude`, `read.ts:getClassMacrosInclude`, `read.ts:getClassMetadata`, `read.ts:getClassSource`, `read.ts:getClassTestClassesInclude`, `read.ts:getClassTransport`, `run.ts:getClassUnitTestResult`, `run.ts:getClassUnitTestStatus`, `run.ts:runClass`, `run.ts:startClassUnitTestRun`, `run.ts:startClassUnitTestRunByObject`, `testclasses.ts:activateClassTestClasses`, `testclasses.ts:updateClassTestInclude`, `unlock.ts:unlockClass`, `update.ts:updateClass`, `update.ts:updateClassImplementations`, `update.ts:updateClassWithCheck`, `validation.ts:validateClassName`, `validation.ts:validateClassSource`, `versions.ts:getClassIncludeVersions`, `versions.ts:getClassVersionSource`
112
+
113
+ ## LocalTestClass
114
+ - Core module: `class`
115
+ - Core classes: `AdtClass`, `AdtClassLegacy`, `AdtLocalDefinitions`, `AdtLocalMacros`, `AdtLocalTestClass`, `AdtLocalTypes`
116
+ - Client methods: `AdtClient.getLocalTestClass`
117
+ - Core functions: `activation.ts:activateClass`, `check.ts:checkClass`, `check.ts:checkClassDefinitions`, `check.ts:checkClassLocalTestClass`, `check.ts:checkClassLocalTypes`, `check.ts:checkClassMacros`, `create.ts:create`, `delete.ts:checkDeletion`, `delete.ts:deleteClass`, `includes.ts:updateClassDefinitions`, `includes.ts:updateClassLocalTypes`, `includes.ts:updateClassMacros`, `lock.ts:lockClass`, `lock.ts:lockClassForUpdate`, `read.ts:getClass`, `read.ts:getClassDefinitionsInclude`, `read.ts:getClassImplementationsInclude`, `read.ts:getClassMacrosInclude`, `read.ts:getClassMetadata`, `read.ts:getClassSource`, `read.ts:getClassTestClassesInclude`, `read.ts:getClassTransport`, `run.ts:getClassUnitTestResult`, `run.ts:getClassUnitTestStatus`, `run.ts:runClass`, `run.ts:startClassUnitTestRun`, `run.ts:startClassUnitTestRunByObject`, `testclasses.ts:activateClassTestClasses`, `testclasses.ts:updateClassTestInclude`, `unlock.ts:unlockClass`, `update.ts:updateClass`, `update.ts:updateClassImplementations`, `update.ts:updateClassWithCheck`, `validation.ts:validateClassName`, `validation.ts:validateClassSource`, `versions.ts:getClassIncludeVersions`, `versions.ts:getClassVersionSource`
118
+
119
+ ## LocalTypes
120
+ - Core module: `class`
121
+ - Core classes: `AdtClass`, `AdtClassLegacy`, `AdtLocalDefinitions`, `AdtLocalMacros`, `AdtLocalTestClass`, `AdtLocalTypes`
122
+ - Client methods: `AdtClient.getLocalTypes`
123
+ - Core functions: `activation.ts:activateClass`, `check.ts:checkClass`, `check.ts:checkClassDefinitions`, `check.ts:checkClassLocalTestClass`, `check.ts:checkClassLocalTypes`, `check.ts:checkClassMacros`, `create.ts:create`, `delete.ts:checkDeletion`, `delete.ts:deleteClass`, `includes.ts:updateClassDefinitions`, `includes.ts:updateClassLocalTypes`, `includes.ts:updateClassMacros`, `lock.ts:lockClass`, `lock.ts:lockClassForUpdate`, `read.ts:getClass`, `read.ts:getClassDefinitionsInclude`, `read.ts:getClassImplementationsInclude`, `read.ts:getClassMacrosInclude`, `read.ts:getClassMetadata`, `read.ts:getClassSource`, `read.ts:getClassTestClassesInclude`, `read.ts:getClassTransport`, `run.ts:getClassUnitTestResult`, `run.ts:getClassUnitTestStatus`, `run.ts:runClass`, `run.ts:startClassUnitTestRun`, `run.ts:startClassUnitTestRunByObject`, `testclasses.ts:activateClassTestClasses`, `testclasses.ts:updateClassTestInclude`, `unlock.ts:unlockClass`, `update.ts:updateClass`, `update.ts:updateClassImplementations`, `update.ts:updateClassWithCheck`, `validation.ts:validateClassName`, `validation.ts:validateClassSource`, `versions.ts:getClassIncludeVersions`, `versions.ts:getClassVersionSource`
124
+
125
+ ## MessageClass
126
+ - Core module: `messageClass`
127
+ - Core classes: `AdtMessageClass`, `AdtMessageClassMessage`
128
+ - Client methods: `AdtClient.getMessageClass`
129
+ - Core functions: `create.ts:createMessageClass`, `delete.ts:checkDeletion`, `delete.ts:deleteMessageClass`, `lock.ts:lockClassForMessage`, `lock.ts:lockMessage`, `lock.ts:lockMessageClass`, `read.ts:getMessageClassSource`, `unlock.ts:unlockAllMessages`, `unlock.ts:unlockMessageClass`, `update.ts:updateMessageClass`, `xml.ts:buildMessageClassXml`, `xml.ts:parseMessageClass`
130
+
131
+ ## MessageClassMessage
132
+ - Core module: `messageClass`
133
+ - Core classes: `AdtMessageClass`, `AdtMessageClassMessage`
134
+ - Client methods: `AdtClient.getMessageClassMessage`
135
+ - Core functions: `create.ts:createMessageClass`, `delete.ts:checkDeletion`, `delete.ts:deleteMessageClass`, `lock.ts:lockClassForMessage`, `lock.ts:lockMessage`, `lock.ts:lockMessageClass`, `read.ts:getMessageClassSource`, `unlock.ts:unlockAllMessages`, `unlock.ts:unlockMessageClass`, `update.ts:updateMessageClass`, `xml.ts:buildMessageClassXml`, `xml.ts:parseMessageClass`
136
+
137
+ ## MetadataExtension
138
+ - Core module: `metadataExtension`
139
+ - Core classes: `AdtMetadataExtension`
140
+ - Client methods: `AdtClient.getMetadataExtension`
141
+ - Core functions: `activate.ts:activateMetadataExtension`, `check.ts:checkMetadataExtension`, `create.ts:createMetadataExtension`, `delete.ts:deleteMetadataExtension`, `lock.ts:lockMetadataExtension`, `read.ts:getMetadataExtensionTransport`, `read.ts:readMetadataExtension`, `read.ts:readMetadataExtensionSource`, `unlock.ts:unlockMetadataExtension`, `update.ts:updateMetadataExtension`, `validation.ts:validateMetadataExtension`, `versions.ts:getMetadataExtensionVersions`, `versions.ts:getMetadataExtensionVersionSource`
142
+
143
+ ## Package
144
+ - Core module: `package`
145
+ - Core classes: `AdtPackage`, `AdtPackageLegacy`
146
+ - Client methods: `AdtClient.getPackage`
147
+ - Core functions: `check.ts:checkPackage`, `create.ts:createPackage`, `delete.ts:checkPackageDeletion`, `delete.ts:deletePackage`, `delete.ts:parsePackageDeletionCheck`, `lock.ts:lockPackage`, `read.ts:getPackage`, `read.ts:getPackageTransport`, `transportCheck.ts:checkTransportRequirements`, `unlock.ts:unlockPackage`, `update.ts:updatePackage`, `update.ts:updatePackageDescription`, `validation.ts:validatePackageBasic`, `validation.ts:validatePackageFull`
148
+
149
+ ## Program
150
+ - Core module: `program`
151
+ - Core classes: `AdtProgram`, `AdtProgramLegacy`
152
+ - Client methods: `AdtClient.getProgram`
153
+ - Core functions: `activation.ts:activateProgram`, `check.ts:checkProgram`, `create.ts:create`, `delete.ts:checkDeletion`, `delete.ts:deleteProgram`, `lock.ts:lockProgram`, `lock.ts:lockProgramForUpdate`, `read.ts:getProgram`, `read.ts:getProgramMetadata`, `read.ts:getProgramSource`, `read.ts:getProgramTransport`, `run.ts:runProgram`, `unlock.ts:unlockProgram`, `update.ts:uploadProgramSource`, `validation.ts:validateProgramName`, `versions.ts:getProgramVersions`, `versions.ts:getProgramVersionSource`
154
+
155
+ ## Request
156
+ - Core module: `transport`
157
+ - Core classes: `AdtRequest`, `AdtRequestLegacy`
158
+ - Client methods: `AdtClient.getRequest`
159
+ - Core functions: `create.ts:createTransport`, `delete.ts:deleteTransport`, `list.ts:getTransportSearchConfigurations`, `list.ts:listTransports`, `parseSearchConfigurations.ts:parseSearchConfigurations`, `parseTransportTree.ts:parseTransportTree`, `read.ts:getTransport`, `readLegacy.ts:getTransportLegacy`, `readLegacy.ts:listTransportsLegacy`, `update.ts:updateTransport`
160
+
161
+ ## ScalarFunction
162
+ - Core module: `scalarFunction`
163
+ - Core classes: `AdtScalarFunction`
164
+ - Client methods: `AdtClient.getScalarFunction`
165
+ - Core functions: `activation.ts:activateScalarFunction`, `check.ts:checkScalarFunction`, `create.ts:create`, `delete.ts:checkDeletion`, `delete.ts:deleteScalarFunction`, `lock.ts:lockScalarFunction`, `read.ts:getScalarFunction`, `read.ts:getScalarFunctionSource`, `read.ts:getScalarFunctionTransport`, `unlock.ts:unlockScalarFunction`, `update.ts:updateScalarFunction`, `validation.ts:validateScalarFunctionName`, `versions.ts:getScalarFunctionVersions`, `versions.ts:getScalarFunctionVersionSource`
166
+
167
+ ## ScalarFunctionImplementation
168
+ - Core module: `scalarFunctionImplementation`
169
+ - Core classes: `AdtScalarFunctionImplementation`
170
+ - Client methods: `AdtClient.getScalarFunctionImplementation`
171
+ - Core functions: `activation.ts:activateScalarFunctionImplementation`, `check.ts:checkScalarFunctionImplementation`, `create.ts:buildServerDrivenContent`, `create.ts:create`, `delete.ts:checkDeletion`, `delete.ts:deleteScalarFunctionImplementation`, `lock.ts:lockScalarFunctionImplementation`, `read.ts:getScalarFunctionImplementation`, `read.ts:getScalarFunctionImplementationSource`, `read.ts:getScalarFunctionImplementationTransport`, `unlock.ts:unlockScalarFunctionImplementation`, `update.ts:updateScalarFunctionImplementation`, `updateMetadata.ts:updateScalarFunctionImplementationMetadata`, `validation.ts:validateScalarFunctionImplementationName`, `versions.ts:getScalarFunctionImplementationVersions`, `versions.ts:getScalarFunctionImplementationVersionSource`
172
+
173
+ ## Service
174
+ - Core module: `service`
175
+ - Core classes: `AdtService`, `AdtServiceBinding`
176
+ - Client methods: `AdtClient.getService`
177
+ - Core functions: —
178
+
179
+ ## ServiceBinding
180
+ - Core module: `service`
181
+ - Core classes: `AdtService`, `AdtServiceBinding`
182
+ - Client methods: `AdtClient.getServiceBinding`
183
+ - Core functions: —
184
+
185
+ ## ServiceDefinition
186
+ - Core module: `serviceDefinition`
187
+ - Core classes: `AdtServiceDefinition`
188
+ - Client methods: `AdtClient.getServiceDefinition`
189
+ - Core functions: `activation.ts:activateServiceDefinition`, `check.ts:checkServiceDefinition`, `create.ts:create`, `delete.ts:checkDeletion`, `delete.ts:deleteServiceDefinition`, `lock.ts:lockServiceDefinition`, `read.ts:getServiceDefinition`, `read.ts:getServiceDefinitionSource`, `read.ts:getServiceDefinitionTransport`, `unlock.ts:unlockServiceDefinition`, `update.ts:updateServiceDefinition`, `validation.ts:validateServiceDefinitionName`, `versions.ts:getServiceDefinitionVersions`, `versions.ts:getServiceDefinitionVersionSource`
190
+
191
+ ## Structure
192
+ - Core module: `structure`
193
+ - Core classes: `AdtStructure`
194
+ - Client methods: `AdtClient.getStructure`
195
+ - Core functions: `activation.ts:activateStructure`, `check.ts:checkStructure`, `create.ts:create`, `delete.ts:checkDeletion`, `delete.ts:deleteStructure`, `lock.ts:lockStructure`, `read.ts:getStructure`, `read.ts:getStructureMetadata`, `read.ts:getStructureSource`, `read.ts:getStructureTransport`, `unlock.ts:unlockStructure`, `update.ts:updateStructure`, `update.ts:upload`, `validation.ts:validateStructureName`, `versions.ts:getStructureVersions`, `versions.ts:getStructureVersionSource`
196
+
197
+ ## Table
198
+ - Core module: `table`
199
+ - Core classes: `AdtTable`
200
+ - Client methods: `AdtClient.getTable`
201
+ - Core functions: `activation.ts:activateTable`, `check.ts:runTableCheckRun`, `create.ts:createTable`, `delete.ts:checkDeletion`, `delete.ts:deleteTable`, `lock.ts:acquireTableLockHandle`, `read.ts:getTable`, `read.ts:getTableMetadata`, `read.ts:getTableSource`, `read.ts:getTableTransport`, `unlock.ts:deleteTableLock`, `unlock.ts:unlockTable`, `update.ts:updateTable`, `validation.ts:validateTableName`, `versions.ts:getTableVersions`, `versions.ts:getTableVersionSource`
202
+
203
+ ## TableType
204
+ - Core module: `tabletype`
205
+ - Core classes: `AdtDdicTableType`
206
+ - Client methods: `AdtClient.getTableType`
207
+ - Core functions: `activation.ts:activateTableType`, `check.ts:runTableTypeCheckRun`, `create.ts:createTableType`, `delete.ts:checkDeletion`, `delete.ts:deleteTableType`, `lock.ts:acquireTableTypeLockHandle`, `read.ts:getTableType`, `read.ts:getTableTypeMetadata`, `read.ts:getTableTypeSource`, `read.ts:getTableTypeTransport`, `unlock.ts:deleteTableTypeLock`, `unlock.ts:unlockTableType`, `update.ts:updateTableType`, `validation.ts:validateTableTypeName`, `versions.ts:getTableTypeVersions`, `versions.ts:getTableTypeVersionSource`
208
+
209
+ ## Transformation
210
+ - Core module: `transformation`
211
+ - Core classes: `AdtTransformation`
212
+ - Client methods: `AdtClient.getTransformation`
213
+ - Core functions: `activation.ts:activateTransformation`, `check.ts:checkTransformation`, `create.ts:create`, `delete.ts:checkDeletion`, `delete.ts:deleteTransformation`, `lock.ts:lockTransformation`, `read.ts:getTransformation`, `read.ts:getTransformationSource`, `read.ts:getTransformationTransport`, `unlock.ts:unlockTransformation`, `update.ts:updateTransformation`, `validation.ts:validateTransformationName`, `versions.ts:getTransformationVersions`, `versions.ts:getTransformationVersionSource`
214
+
215
+ ## UnitTest
216
+ - Core module: `unitTest`
217
+ - Core classes: `AdtCdsUnitTest`, `AdtUnitTest`, `AdtUnitTestLegacy`
218
+ - Client methods: `AdtClient.getUnitTest`
219
+ - Core functions: `checkCdsTestDoublesAvailability.ts:checkCdsTestDoublesAvailability`, `run.ts:getClassUnitTestResult`, `run.ts:getClassUnitTestStatus`, `run.ts:startClassUnitTestRun`, `run.ts:startClassUnitTestRunByObject`, `runLegacy.ts:getClassUnitTestResultLegacy`, `runLegacy.ts:getClassUnitTestStatusLegacy`, `runLegacy.ts:startClassUnitTestRunLegacy`
220
+
221
+ ## Standalone Clients
222
+
223
+ Top-level client classes instantiated directly (not via `AdtClient.getXxx()`). They live under `src/clients/` alongside `AdtClient` and wrap non-`IAdtObject` surfaces.
224
+
225
+ ### AdtAbapGitClient
226
+ - Source: `src/clients/AdtAbapGitClient.ts`
227
+ - Public methods: `checkExternalRepo`, `getErrorLog`, `getRepo`, `link`, `listRepos`, `pull`, `unlink`
228
+
229
+ ### AdtClientLegacy
230
+ - Source: `src/clients/AdtClientLegacy.ts`
231
+ - Public methods: —
232
+
233
+ ### AdtClientsWS
234
+ - Source: `src/clients/AdtClientsWS.ts`
235
+ - Public methods: `connect`, `disconnect`, `getDebuggerSessionClient`, `isConnected`, `onEvent`, `request`, `sendEvent`
236
+
237
+ ### AdtExecutor
238
+ - Source: `src/clients/AdtExecutor.ts`
239
+ - Public methods: `getClassExecutor`, `getProgramExecutor`
240
+
241
+ ### AdtRuntimeClient
242
+ - Source: `src/clients/AdtRuntimeClient.ts`
243
+ - Public methods: `getApplicationLog`, `getAtc`, `getAtcLog`, `getCrossTrace`, `getDdicActivation`, `getDebugger`, `getDumps`, `getFeeds`, `getGatewayErrorLog`, `getProfiler`, `getSt05Trace`, `getSystemMessages`
244
+
245
+ ### DebuggerSessionClient
246
+ - Source: `src/clients/DebuggerSessionClient.ts`
247
+ - Public methods: `attach`, `detach`, `getStack`, `getVariables`, `listen`, `step`
248
+
@@ -0,0 +1,46 @@
1
+ # Check Local Test Class
2
+
3
+ This guide shows how to validate local test classes using `AdtClient`.
4
+
5
+ ## Using AdtClient
6
+
7
+ ```typescript
8
+ import {
9
+ AdtOnPremConnector,
10
+ BasicAuthProvider,
11
+ OnPremHttpTransport,
12
+ } from '@mcp-abap-adt/connection';
13
+ import { AdtClient } from '@mcp-abap-adt/adt-clients';
14
+
15
+ const config = {
16
+ url: process.env.SAP_URL!,
17
+ authType: 'basic' as const,
18
+ username: process.env.SAP_USERNAME!,
19
+ password: process.env.SAP_PASSWORD!,
20
+ client: process.env.SAP_CLIENT,
21
+ };
22
+
23
+ // System, credential and wire — all stated, never inferred.
24
+ const connection = new AdtOnPremConnector(
25
+ config,
26
+ new BasicAuthProvider(config.username, config.password),
27
+ new OnPremHttpTransport(() => ({}), null, {
28
+ client: config.client,
29
+ baseUrl: config.url,
30
+ }),
31
+ );
32
+ await connection.connect();
33
+
34
+ const client = new AdtClient(connection);
35
+
36
+ const result = await client.getLocalTestClass().check({
37
+ className: 'ZCL_MY_CLASS',
38
+ });
39
+
40
+ console.log(result.checkResult?.status);
41
+ ```
42
+
43
+ ## Notes
44
+
45
+ - Local test class checks use the same ADT endpoints as class checks.
46
+ - If you need to read metadata, use `readMetadata` on the same object.