{"_id":"@babamba2/mcp-abap-adt-interfaces","_rev":"2-4aa8fa530f35958e33f12f93e9c17723","name":"@babamba2/mcp-abap-adt-interfaces","dist-tags":{"latest":"5.0.0"},"versions":{"3.1.0":{"name":"@babamba2/mcp-abap-adt-interfaces","version":"3.1.0","keywords":["abap","sap","adt","interfaces","types","mcp","abap-adt"],"author":{"name":"babamba2","email":"psspss1122@gmail.com"},"license":"MIT","_id":"@babamba2/mcp-abap-adt-interfaces@3.1.0","maintainers":[{"name":"psspss1122","email":"psspss1122@gmail.com"},{"name":"s2hoon326","email":"s2hoon326@gmail.com"}],"contributors":[{"url":"original author","name":"Oleksii Kyslytsia","email":"oleksij.kyslytsja@gmail.com"}],"homepage":"https://github.com/babamba2/mcp-abap-adt-interfaces#readme","bugs":{"url":"https://github.com/babamba2/mcp-abap-adt-interfaces/issues"},"dist":{"shasum":"d13ffc451490515efb7b05739c582d4ebec0e4e0","tarball":"https://registry.npmjs.org/@babamba2/mcp-abap-adt-interfaces/-/mcp-abap-adt-interfaces-3.1.0.tgz","fileCount":109,"integrity":"sha512-BMIoZn+nQFjuU3fh519oc4+NUcx6HwFwNMYxgGjFKIfD/Jna/YxY7450WkR+S59Te8oEcdQ12dc/9iz0Z2zidg==","signatures":[{"sig":"MEYCIQCm94Q1Kgexh6ZPc0bAelhZz+vEhx/FWXax6XzzIY5S8gIhAJW2/HZFVeCyyIFaGOmx7XmlipKiNDfB4/xvo2+3ovYf","keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U"}],"unpackedSize":140060},"main":"dist/index.js","types":"dist/index.d.ts","engines":{"node":">=18.0.0"},"gitHead":"3bf57668fe6dc74780787b20ab1f3c24d3052595","scripts":{"lint":"npx biome check --write src","build":"npm run --silent clean && npx biome check src --diagnostic-level=error && npx tsc -p tsconfig.json","clean":"rm -rf dist tsconfig.tsbuildinfo","chrono":"./tools/version-stats.sh","format":"npx biome format --write src","build:fast":"npx tsc -p tsconfig.json","lint:check":"npx biome check src","test:check":"npx tsc --noEmit","prepublishOnly":"npm run build:fast"},"_npmUser":{"name":"psspss1122","email":"psspss1122@gmail.com"},"repository":{"url":"git+https://github.com/babamba2/mcp-abap-adt-interfaces.git","type":"git"},"_npmVersion":"11.8.0","description":"Shared interfaces for MCP ABAP ADT packages (fork of @mcp-abap-adt/interfaces by fr0ster)","directories":{},"_nodeVersion":"24.13.1","publishConfig":{"access":"public"},"_hasShrinkwrap":false,"devDependencies":{"axios":"^1.11.0","typescript":"^5.9.2","@types/node":"^24.2.1","@biomejs/biome":"^2.3.10"},"_npmOperationalInternal":{"tmp":"tmp/mcp-abap-adt-interfaces_3.1.0_1776490371569_0.2919699654135428","host":"s3://npm-registry-packages-npm-production"}},"5.0.0":{"name":"@babamba2/mcp-abap-adt-interfaces","version":"5.0.0","description":"Shared interfaces for MCP ABAP ADT packages (fork of @mcp-abap-adt/interfaces by fr0ster)","main":"dist/index.js","types":"dist/index.d.ts","keywords":["abap","sap","adt","interfaces","types","mcp","abap-adt"],"author":{"name":"babamba2","email":"psspss1122@gmail.com"},"contributors":[{"name":"Oleksii Kyslytsia","email":"oleksij.kyslytsja@gmail.com","url":"original author"}],"license":"MIT","homepage":"https://github.com/babamba2/mcp-abap-adt-interfaces#readme","bugs":{"url":"https://github.com/babamba2/mcp-abap-adt-interfaces/issues"},"repository":{"type":"git","url":"git+https://github.com/babamba2/mcp-abap-adt-interfaces.git"},"publishConfig":{"access":"public"},"scripts":{"chrono":"./tools/version-stats.sh","clean":"rm -rf dist tsconfig.tsbuildinfo","lint":"npx biome check --write src","lint:check":"npx biome check src","format":"npx biome format --write src","build":"npm run --silent clean && npx biome check src --diagnostic-level=error && npx tsc -p tsconfig.json","build:fast":"npx tsc -p tsconfig.json","test:check":"npx tsc --noEmit","prepublishOnly":"npm run build:fast"},"engines":{"node":">=18.0.0"},"devDependencies":{"@biomejs/biome":"^2.3.10","@types/node":"^24.2.1","axios":"^1.11.0","typescript":"^5.9.2"},"gitHead":"df35a7fb6ebdd07aeb3f01556c09dd079fc8dbb6","_id":"@babamba2/mcp-abap-adt-interfaces@5.0.0","_nodeVersion":"24.13.1","_npmVersion":"11.8.0","dist":{"integrity":"sha512-DJAXeac7OJOlrvi1Eh+oOuoNr4XoqhBqOMjBmGVmjlao8egW2rtre3IkoFwkyrvNh8DelU6OFv0ZDo3wkiOfuA==","shasum":"f9bb15713bf1dae6829ee948e44f2fa70b33a16d","tarball":"https://registry.npmjs.org/@babamba2/mcp-abap-adt-interfaces/-/mcp-abap-adt-interfaces-5.0.0.tgz","fileCount":175,"unpackedSize":186488,"signatures":[{"keyid":"SHA256:DhQ8wR5APBvFHLF/+Tc+AYvPOdTpcIDqOhxsBHRwC7U","sig":"MEYCIQCKjRWUTWLvezvEvPH0HBJeo59Au4IdNQMBr2I5FywW1QIhAKfLz2ejLwjup120ArUPqphleiMUxZZ1T4gW4P1LuB63"}]},"_npmUser":{"name":"psspss1122","email":"psspss1122@gmail.com"},"directories":{},"maintainers":[{"name":"psspss1122","email":"psspss1122@gmail.com"},{"name":"s2hoon326","email":"s2hoon326@gmail.com"}],"_npmOperationalInternal":{"host":"s3://npm-registry-packages-npm-production","tmp":"tmp/mcp-abap-adt-interfaces_5.0.0_1776492678976_0.9776285682628494"},"_hasShrinkwrap":false}},"time":{"created":"2026-04-18T05:32:51.490Z","modified":"2026-04-18T06:11:19.336Z","3.1.0":"2026-04-18T05:32:51.729Z","5.0.0":"2026-04-18T06:11:19.120Z"},"bugs":{"url":"https://github.com/babamba2/mcp-abap-adt-interfaces/issues"},"author":{"name":"babamba2","email":"psspss1122@gmail.com"},"license":"MIT","homepage":"https://github.com/babamba2/mcp-abap-adt-interfaces#readme","keywords":["abap","sap","adt","interfaces","types","mcp","abap-adt"],"repository":{"type":"git","url":"git+https://github.com/babamba2/mcp-abap-adt-interfaces.git"},"description":"Shared interfaces for MCP ABAP ADT packages (fork of @mcp-abap-adt/interfaces by fr0ster)","contributors":[{"name":"Oleksii Kyslytsia","email":"oleksij.kyslytsja@gmail.com","url":"original author"}],"maintainers":[{"name":"psspss1122","email":"psspss1122@gmail.com"},{"name":"s2hoon326","email":"s2hoon326@gmail.com"}],"readme":"# @mcp-abap-adt/interfaces\r\n\r\nShared interfaces for MCP ABAP ADT packages.\r\n\r\nThis package provides all TypeScript interfaces used across the MCP ABAP ADT ecosystem, ensuring consistency and type safety across all packages.\r\n\r\n## Installation\r\n\r\n```bash\r\nnpm install @mcp-abap-adt/interfaces\r\n```\r\n\r\n## Overview\r\n\r\nThis package contains all interfaces organized by domain:\r\n\r\n- **`adt/`** - ADT object operations interfaces (IAdtObject, operation options, error codes)\r\n- **`auth/`** - Core authentication interfaces (configs, auth types)\r\n- **`token/`** - Token-related interfaces (token provider, results, options)\r\n- **`session/`** - Session storage interface\r\n- **`serviceKey/`** - Service key storage interface\r\n- **`connection/`** - Connection and realtime transport interfaces (AbapConnection, request options, WebSocket transport contracts)\r\n- **`execution/`** - Execution contracts for runnable entities (`IExecutor`)\r\n- **`sap/`** - SAP-specific configuration (SapConfig, SapAuthType)\r\n- **`service/`** - Business service lifecycle contracts (`IAdtService`, service binding params)\r\n- **`storage/`** - Storage interfaces (session storage, state)\r\n- **`logging/`** - Logging interfaces (ILogger, LogLevel enum)\r\n- **`validation/`** - Validation interfaces\r\n- **`utils/`** - Utility types and interfaces\r\n\r\n## Interface Naming Convention\r\n\r\n**All interfaces start with `I` prefix** (e.g., `IAbapConnection`, `ISapConfig`, `ITokenProvider`).\r\n\r\nThis ensures consistency across all packages and follows TypeScript naming conventions for interfaces.\r\n\r\n## Usage\r\n\r\n### Basic Imports\r\n\r\n```typescript\r\nimport {\r\n  IAuthorizationConfig,\r\n  IConnectionConfig,\r\n  ISessionStore,\r\n  IServiceKeyStore,\r\n  ITokenProvider,\r\n  IAbapConnection,\r\n  IExecutor,\r\n  IWebSocketTransport,\r\n  IWebSocketMessageEnvelope,\r\n  ISapConfig,\r\n  ILogger,\r\n  TOKEN_PROVIDER_ERROR_CODES,\r\n  STORE_ERROR_CODES\r\n} from '@mcp-abap-adt/interfaces';\r\n```\r\n\r\n### ADT Object Operations\r\n\r\n```typescript\r\nimport {\r\n  IAdtObject,\r\n  IAdtOperationOptions,\r\n  AdtObjectErrorCodes,\r\n  LogLevel\r\n} from '@mcp-abap-adt/interfaces';\r\n\r\n// Example: Read with long polling\r\nconst domain = await adtDomain.read(\r\n  { domainName: 'Z_TEST' },\r\n  'active',\r\n  { withLongPolling: true } // Wait until object is available\r\n);\r\n\r\n// Example: Read metadata with long polling and version selection\r\nconst metadata = await adtDomain.readMetadata(\r\n  { domainName: 'Z_TEST' },\r\n  { withLongPolling: true, version: 'active' }\r\n);\r\n```\r\n\r\n### Error Handling\r\n\r\n```typescript\r\nimport {\r\n  TOKEN_PROVIDER_ERROR_CODES,\r\n  STORE_ERROR_CODES\r\n} from '@mcp-abap-adt/interfaces';\r\n\r\n// Token Provider Error Codes\r\ntry {\r\n  await tokenProvider.getTokens(authConfig);\r\n} catch (error: any) {\r\n  if (error.code === TOKEN_PROVIDER_ERROR_CODES.VALIDATION_ERROR) {\r\n    console.error('Invalid auth config:', error.missingFields);\r\n  } else if (error.code === TOKEN_PROVIDER_ERROR_CODES.REFRESH_ERROR) {\r\n    console.error('Token refresh failed:', error.cause);\r\n  }\r\n}\r\n\r\n// Store Error Codes\r\ntry {\r\n  const authConfig = await serviceKeyStore.getAuthorizationConfig('TRIAL');\r\n} catch (error: any) {\r\n  if (error.code === STORE_ERROR_CODES.FILE_NOT_FOUND) {\r\n    console.error('Service key not found:', error.filePath);\r\n  } else if (error.code === STORE_ERROR_CODES.PARSE_ERROR) {\r\n    console.error('Invalid JSON:', error.filePath, error.cause);\r\n  } else if (error.code === STORE_ERROR_CODES.INVALID_CONFIG) {\r\n    console.error('Missing fields:', error.missingFields);\r\n  }\r\n}\r\n```\r\n\r\n## Responsibilities and Design Principles\r\n\r\n### Core Development Principle\r\n\r\n**Interface-Only Communication**: This package defines **interfaces only**. It contains no implementations, no dependencies on other packages (except type-only imports), and serves as the single source of truth for all interface definitions.\r\n\r\n### Package Responsibilities\r\n\r\nThis package is responsible for:\r\n\r\n1. **Defining interfaces**: Provides all TypeScript interfaces used across MCP ABAP ADT packages\r\n2. **Type safety**: Ensures consistent type definitions across all packages\r\n3. **Version management**: Single version for all interfaces\r\n4. **Documentation**: Centralized documentation for all interfaces\r\n\r\n#### What This Package Does\r\n\r\n- **Defines interfaces**: All interfaces used across MCP ABAP ADT packages\r\n- **Organizes by domain**: Interfaces grouped by functional domain\r\n- **Follows naming convention**: All interfaces start with `I` prefix\r\n- **Type-only exports**: No runtime code, only type definitions\r\n\r\n#### What This Package Does NOT Do\r\n\r\n- **Does NOT implement anything**: This is a type-only package\r\n- **Does NOT have runtime dependencies**: Only devDependencies for TypeScript compilation\r\n- **Does NOT know about implementations**: Interfaces are independent of implementations\r\n\r\n## Interface Domains\r\n\r\n### ADT Domain (`adt/`)\r\n- `IAdtObject<TConfig, TReadResult>` - High-level ADT object operations interface\r\n  - Provides simplified CRUD operations with automatic operation chains, error handling, and resource cleanup\r\n  - Methods: `validate()`, `create()`, `read()`, `readMetadata()`, `readTransport()`, `update()`, `delete()`, `activate()`, `check()`\r\n  - All read methods support optional `withLongPolling` parameter for waiting until object becomes available\r\n  - Supports full operation chains:\r\n    - Create: validate → create → check → lock → check(inactive) → update → unlock → check → activate\r\n    - Update: lock → check(inactive) → update → unlock → check → activate\r\n    - Delete: check(deletion) → delete\r\n- `IAdtOperationOptions` - Unified options for create and update operations\r\n  - Fields: `activateOnCreate`, `activateOnUpdate`, `deleteOnFailure`, `sourceCode`, `xmlContent`, `timeout`\r\n- `AdtObjectErrorCodes` - Error code constants for ADT object operations\r\n  - Constants: `OBJECT_NOT_FOUND`, `OBJECT_NOT_READY`, `VALIDATION_FAILED`, `CREATE_FAILED`, `UPDATE_FAILED`, `DELETE_FAILED`, `ACTIVATE_FAILED`, `CHECK_FAILED`, `LOCK_FAILED`, `UNLOCK_FAILED`\r\n- `IAdtObjectState` - Base state interface for ADT object operations\r\n  - Fields: `validationResponse`, `createResult`, `lockHandle`, `updateResult`, `checkResult`, `unlockResult`, `activateResult`, `deleteResult`, `readResult`, `metadataResult`, `transportResult`, `errors`\r\n- `IAdtObjectConfig` - Base configuration interface for ADT objects\r\n  - Common fields: `packageName`, `description`, `transportRequest`\r\n\r\n### Authentication Domain (`auth/`)\r\n- `IAuthorizationConfig` - Authorization values (UAA credentials, refresh token)\r\n- `IConnectionConfig` - Connection values (service URL, token, client, language)\r\n- `IConfig` - Composition of authorization and connection config\r\n- `AuthType` - Auth type: `'jwt' | 'xsuaa' | 'basic'`\r\n\r\n### Token Domain (`token/`)\r\n- `ITokenProvider` - Token provider interface (stateful token lifecycle)\r\n- `ITokenProviderOptions` - Options for token providers\r\n- `ITokenResult` - Token result payload (supports `expiresAt` and `tokenType` for non-JWT tokens)\r\n- `IConnectionConfig` / `ISapConfig` - now support `authType: 'saml'` and `sessionCookies`\r\n- `ITokenRefresher` - Token refresher interface for DI into connections\r\n  - Created by `AuthBroker.createTokenRefresher(destination)`\r\n  - Injected into `JwtAbapConnection` to enable automatic token refresh\r\n  - Methods: `getTokens()`\r\n\r\n### Session Domain (`session/`)\r\n- `ISessionStore` - Session storage interface\r\n\r\n### Service Key Domain (`serviceKey/`)\r\n- `IServiceKeyStore` - Service key storage interface\r\n\r\n### Connection Domain (`connection/`)\r\n- `IAbapConnection` - Minimal connection interface for ADT operations\r\n  - Consumer-facing methods only: `getBaseUrl()`, `getSessionId()`, `setSessionType()`, `makeAdtRequest()`\r\n  - Implementation details (auth, CSRF, cookies, token refresh) are encapsulated\r\n  - For JWT: token refresh handled internally via `ITokenRefresher`\r\n  - For Basic: no token refresh needed\r\n- `IAdtResponse` - Minimal response shape returned by `makeAdtRequest()`\r\n- `IWebSocketTransport` - Generic realtime transport contract for WS-based flows\r\n  - Methods: `connect()`, `disconnect()`, `send()`, `onMessage()`, `onOpen()`, `onError()`, `onClose()`, `isConnected()`\r\n- `IWebSocketConnectOptions` - WS connect options (`protocols`, `headers`, timeouts, heartbeat)\r\n- `IWebSocketMessageEnvelope` - Generic request/response/event/error message shape with correlation id\r\n- `IWebSocketCloseInfo` / `IWebSocketMessageHandler` - Close payload and message callback contracts\r\n- `IAbapConnectionExtended` - Deprecated, for backward compatibility\r\n  - Extends `IAbapConnection` with: `getConfig()`, `getAuthHeaders()`, `connect()`, `reset()`\r\n  - Will be removed in next major version\r\n- `IAbapRequestOptions` - Request options for ADT operations\r\n\r\n### Execution Domain (`execution/`)\r\n- `IExecutor<TTarget, TResult, TRunWithProfilerOptions, TRunWithProfilingOptions, TRunWithProfilingResult>`\r\n  - Generic contract for entities that support:\r\n    - `run(target)`\r\n    - `runWithProfiler(target, options)`\r\n    - `runWithProfiling(target, options?)`\r\n\r\n### SAP Domain (`sap/`)\r\n- `ISapConfig` - SAP connection configuration\r\n- `SapAuthType` - Authentication type: `\"basic\" | \"jwt\"`\r\n\r\n### Service Domain (`service/`)\r\n- `IAdtService` - Service binding lifecycle contract for non-CRUD service operations\r\n  - Methods for binding discovery/validation, transport checks, create/read/update, activate/check, and generation\r\n  - `updateServiceBinding()` uses explicit `desiredPublicationState` and validates allowed state transition\r\n- Parameter/enum types:\r\n  - `ServiceBindingType`, `ServiceBindingVersion`, `GeneratedServiceType`, `DesiredPublicationState`\r\n  - `ICreateServiceBindingParams`, `IUpdateServiceBindingParams`, `IReadServiceBindingParams`\r\n  - `ITransportCheckServiceBindingParams`, `ICheckServiceBindingParams`, `IActivateServiceBindingParams`\r\n  - `IGenerateServiceBindingParams`, `ICreateAndGenerateServiceBindingParams`\r\n\r\n### Storage Domain (`storage/`)\r\n- `ISessionStorage` - Session storage interface\r\n- `ISessionState` - Session state structure\r\n\r\n### Logging Domain (`logging/`)\r\n- `ILogger` - Logger interface\r\n- `LogLevel` - Log level enum (`ERROR = 0`, `WARN = 1`, `INFO = 2`, `DEBUG = 3`)\r\n  - Exported from package root: `import { LogLevel } from '@mcp-abap-adt/interfaces'`\r\n\r\n### Validation Domain (`validation/`)\r\n- `IValidatedAuthConfig` - Validated authentication configuration\r\n- `IHeaderValidationResult` - Header validation result\r\n- `AuthMethodPriority` - Authentication method priority enum\r\n\r\n### Utilities Domain (`utils/`)\r\n- `ITokenRefreshResult` - Token refresh result\r\n- `ITimeoutConfig` - Timeout configuration\r\n\r\n## Dependencies\r\n\r\nThis package has **no runtime dependencies**. It only has devDependencies for TypeScript compilation:\r\n- `typescript` - TypeScript compiler\r\n- `@types/node` - Node.js type definitions\r\n\r\n## Documentation\r\n\r\n- **[Package Dependencies Analysis](docs/PACKAGE_DEPENDENCIES_ANALYSIS.md)** - Analysis of dependencies between all `@mcp-abap-adt/*` packages, verification that interfaces package has no runtime dependencies, and roadmap for eliminating unnecessary dependencies\r\n\r\n## License\r\n\r\nMIT\r\n","readmeFilename":"README.md"}