abapify — ADT CLI Monorepo
TypeScript monorepo providing a CLI and supporting libraries for SAP ABAP Development Tools (ADT) REST APIs.
Package
version
Description
adt-cli
Command-line interface — adt binary
Package
version
Description
adt-client
Contract-driven HTTP client for ADT REST APIs
adt-contracts
Typed ADT REST API contract definitions
adt-schemas
SAP ADT XML schemas generated from XSD
adk
ABAP Development Kit — object construction and serialization
adt-auth
Authentication: Basic, SLC, OAuth, browser SSO
adt-config
Config loader for adt.config.ts / .json
Package
version
Description
adt-atc
ABAP Test Cockpit — runs ATC, outputs SARIF / GitLab Code Quality
adt-export
Export plugin — deploy local files to SAP
adt-plugin
Plugin interface contract
adt-plugin-abapgit
abapGit serialization format plugin
Package
version
Description
speci
Arrow-function REST contract specification
ts-xsd
XSD parser, builder, and TypeScript type inference
adt-codegen
Hook-based code generation toolkit
asjson-parser
ABAP asJSON canonical format parser
logger
Shared logger interface
adt-cli (Commander.js CLI, plugin loader)
│
├── adt-client (HTTP client, auth interceptor)
│ ├── adt-contracts (speci endpoint definitions)
│ └── adt-schemas (XSD-derived TypeScript types)
│
├── adk (ABAP object construction: parse ADT XML → domain objects)
│
├── adt-auth (session management: basic / SLC / OAuth / browser SSO)
│ ├── adt-playwright (Playwright browser adapter)
│ └── adt-puppeteer (Puppeteer browser adapter)
│
└── plugins (opt-in command extensions)
├── adt-atc (ATC runs → SARIF / GitLab Code Quality)
├── adt-export (file system → SAP deploy)
└── adt-plugin-abapgit (abapGit format serialization)
Type flow: SAP XSD definitions → ts-xsd generates schema literals → adt-schemas exports them → adt-contracts wraps them in speci endpoint descriptors → adt-client executes with full type inference.
Requirements: Node.js 18+, npm (not pnpm or yarn)
git clone https://github.com/abapify/adt-cli.git
cd adt-cli
npm install
# Build all packages
npx nx build
# Run all tests
npx nx test
# Type check
npx nx typecheck
# Build a specific package
npx nx build adt-cli
# Test a specific package
npx nx test adt-cli
# Lint everything
npx nx lint
# Watch mode for a package
npx nx test adt-cli --watch
adt-cli/
├── packages/
│ ├── adt-cli/ # Main CLI binary
│ ├── adt-client/ # HTTP client
│ ├── adt-contracts/ # REST API contracts
│ ├── adt-schemas/ # SAP ADT XSD schemas
│ ├── adk/ # ABAP object modeling
│ ├── adt-auth/ # Authentication
│ ├── adt-config/ # Config loader
│ ├── adt-atc/ # ATC plugin
│ ├── adt-export/ # Export plugin
│ ├── adt-plugin/ # Plugin interface
│ ├── adt-plugin-abapgit/ # abapGit plugin
│ ├── browser-auth/ # Browser SSO core
│ ├── adt-playwright/ # Playwright adapter
│ ├── adt-puppeteer/ # Puppeteer adapter
│ ├── speci/ # Contract spec
│ ├── ts-xsd/ # XSD tools
│ ├── adt-codegen/ # Code generation
│ ├── asjson-parser/ # asJSON parser
│ └── logger/ # Shared logger
├── docs/ # Architecture docs and specs
├── samples/ # Example projects
└── tmp/ # Local temp files (gitignored)
TypeScript strict mode throughout
ESM modules ("type": "module" in all packages)
Async/await over callbacks
Native Node.js APIs preferred over external dependencies
tsdown for building (outputs .mjs + .d.mts)
Vitest for testing
git checkout -b feat/my-change
# make changes
npx nx build adt-cli && npx nx test adt-cli
git push origin feat/my-change
# open pull request
See AGENTS.md for conventions used by AI coding agents.
MIT