Skip to content

feat(adt-server): add bounded ADT server sidecar with REST API#134

Closed
ThePlenkov wants to merge 1044 commits into
mainfrom
feat/adt-server-sidecar
Closed

feat(adt-server): add bounded ADT server sidecar with REST API#134
ThePlenkov wants to merge 1044 commits into
mainfrom
feat/adt-server-sidecar

Conversation

@ThePlenkov

@ThePlenkov ThePlenkov commented Jul 21, 2026

Copy link
Copy Markdown
Member

Summary

  • Add typed REST client for ADT server
  • Add canonical ATC REST endpoints
  • Add bounded object source REST
  • Add canonical object history/metadata REST
  • Add canonical package/object search with pagination
  • Add capability-bound source reads
  • Add guarded MCP sidecar with signed invocations
  • Enforce destination scopes for frozen reads
  • Add bounded ADT source history support

Test plan

  • Unit tests pass
  • Integration tests pass
  • Manual testing with real SAP system

Generated with Devin


Summary by cubic

Adds a bounded ADT server sidecar that exposes a typed REST API for ATC, object source, history/metadata, and package/object search. Also introduces a guarded MCP sidecar with signed, capability-scoped reads and enforced destination scopes for frozen reads.

  • New Features

    • Typed REST client for the new ADT sidecar.
    • Canonical REST endpoints for ATC, object source, history/metadata.
    • Package/object search with pagination.
    • Capability-bound source reads.
    • Bounded source history support.
    • Guarded MCP sidecar with signed invocations.
    • Enforce destination scopes for frozen reads.
  • Migration

    • No breaking changes. The sidecar is optional.
    • To adopt: run the sidecar, configure destination scopes, enable signing for MCP calls, and point clients to the canonical REST endpoints (use pagination for search).

Written for commit 4fcb826. Summary will update on new commits.

Review in cubic

Copilot AI and others added 30 commits April 20, 2026 10:23
… docs + openspec

Sample refresh:
- samples/petstore3-client/package.json: drop the two v1 generate:* scripts,
  use a single "generate" targeting --base petstore3 --format abapgit,gcts.
- samples/petstore3-client/generated/: fully regenerated against the v2
  pipeline (11 abapGit files + 11 gCTS files: types/ops interfaces,
  exception class, minimal implementation class with locals_def/locals_imp
  includes).
- samples/petstore3-client/e2e/abapgit/src/zcl_ps3_client_tests.clas.abap:
  update to v2 naming — uses `zif_petstore3_types=>pet` / `=>order`, and
  instantiates `NEW zcl_petstore3( destination = 'PETSTORE' )` through the
  `zif_petstore3` interface reference.
- samples/petstore3-client/e2e/README.md: rewritten around the v2 output
  contract, lists the 11 artefacts, generic BTP deploy recipe.

Documentation:
- packages/abap-ast/README.md + AGENTS.md: document the new optional
  `abapDoc: readonly string[]` field on TypeDef / MethodDef / AttributeDef
  / InterfaceDef / ClassDef nodes and the printer's `"! <line>` emission.
- packages/openai-codegen/README.md + AGENTS.md: rewrite for v2 —
  3-interfaces-plus-one-class architecture, `json=>`/`lcl_http=>` bundle,
  per-op CASE response->status( ) dispatch, NamesConfig + CLI flag table,
  type mapping table, round-trip ABAPDoc markers, deploy recipe.
- website/docs/sdk/packages/abap-ast.md + openai-codegen.md: matching
  docusaurus pages.
- .agents/skills/openapi-to-abap/SKILL.md: rewrite under the v2
  architecture (how to add profiles, mappings, CLI flags; common pitfalls
  of the monolithic v1 design to avoid).

OpenSpec:
- proposal.md: full rewrite describing v2 motivation (v1 monolithic
  rejected), the 11-file bundle contract, and the "typed AST + 3-layer
  contract" design.
- tasks.md: wave-by-wave breakdown matching reality (Wave 0-4).
- specs/openai-codegen/spec.md: new requirements (3-layer output, minimal
  impl class, zero Z-deps, configurable names, ABAPDoc markers,
  deterministic output, abaplint-clean, <ABAP_LANGUAGE_VERSION>5</...>,
  transport-only fetch, abapify/json + abapify/fetch API shape).
- specs/abap-ast/spec.md: add ABAPDoc comment requirement.

Verification:
- `bunx nx run-many -t typecheck,test,build,lint -p abap-ast,openai-codegen`
  all 8 targets green.
- `bunx nx build website` succeeds.
- grep "Booking|BHF" over all changed files returns empty.

Generated with [Devin](https://cli.devin.ai/docs)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
…implementation plan

Agent-Logs-Url: https://github.com/abapify/adt-cli/sessions/cdc98640-eebb-45fb-a9e6-e211fcbd88d6

Co-authored-by: ThePlenkov <6381507+ThePlenkov@users.noreply.github.com>
Fixes discovered while activating the generated petstore3 client on a
real SAP BTP Steampunk (s4-cloud) system:

* abap-ast/print-class: emit INTERFACES inside PUBLIC SECTION when the
  class body uses explicit sections. ABAP cloud rejects INTERFACES at
  class-body level with "There is no PUBLIC/PROTECTED/PRIVATE SECTION
  statement" during activation.

* openai-codegen/locals-imp template:
  - cl_http_destination_provider=>create_by_destination uses parameter
    i_destination (not i_name, not i_destination_name)
  - Use if_web_http_request=>name_value_pairs for response header table
    (if_web_http_response=>name_value_pairs does not exist on cloud)
  - All cl_web_http_utility=>escape_url / set_binary / describe_by_data
    kernel whitelist adjustments are preserved

* petstore3 sample regenerated under samples/petstore3-client/generated
  (flattened output — no more abapgit/ subdir).

Tests: openai-codegen 142/142 passing; abap-ast 115/115 passing.

Generated with [Devin](https://cli.devin.ai/docs)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Two Steampunk activation blockers, both driven by real errors observed
when activating the generated petstore3 client:

* **Array query params**: OpenAPI operations like `GET /pet/findByTags`
  declare `tags: array<string>` as a query parameter. The emitter now
  detects table-typed params (`pluckType(schema) === 'array'`) and emits
  a `FOR _<name> IN <name> ( name = '...' value = _<name> )` row
  comprehension inside the `VALUE #( ... )` table, producing one
  `name/value` pair per array element. Non-array params keep the simple
  inline entry. Fixes activation error `MESSAGE(GXD): The type of "TAGS"
  cannot be converted to the type of "VALUE".`

* **HTTP exceptions**: the method bodies now wrap the fetch + CASE block
  in a TRY/CATCH that translates `cx_web_http_client_error` and
  `cx_http_dest_provider_error` into the generated `ZCX_*_ERROR`. The
  public method signature still RAISES only the generated exception, so
  Steampunk no longer flags `MESSAGE(G-Q): The exception … is not caught
  or declared in the RAISING clause`.

Validated on a real SAP BTP Steampunk system (TRL, us10):
  - activation: preauditRequested=false returns
    `checkExecuted="false" activationExecuted="false"
     generationExecuted="true"` with no errors or warnings
  - active source on SAP contains both fixes (TRY blocks + `i_destination =`)
  - `adt aunit -c ZCL_PS3_CLIENT_TESTS` → 3/3 tests pass:
      TEST_INSTANTIATION  pass
      TEST_TYPED_PET      pass
      TEST_TYPED_ORDER    pass

Added test `emitImplementationClass (Petstore v3) > snapshots find_pets_by_tags`
to lock the new FOR-loop rendering. All 142 openai-codegen tests pass.

Generated with [Devin](https://cli.devin.ai/docs)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Responding to CodeQL + SonarCloud + Devin/CodeRabbit/Copilot review
findings on feat/openai-codegen.

### Security hotspots / CodeQL
* `packages/openai-codegen/src/types/naming.ts`
  - Rewrite camelCase-splitter regex with lookahead-only patterns (no
    overlapping quantifiers). Kills CodeQL `js/polynomial-redos`.
    Verified same semantics on HTTPServer / camelCase / APIKey / etc.
  - Switch `shortHash()` from SHA-1 to SHA-256. The hash is only used
    as a collision tag inside identifiers, but using a weak algorithm
    trips Sonar `typescript:S4790`.
* `packages/openai-codegen/src/oas/load.ts` — replace
  `synthesizeOperationId`'s chained regex pipeline with an explicit
  character-by-character loop. Kills Sonar `typescript:S5852` regex
  super-linear runtime warnings.

### SonarCloud BUGs (→ reliability rating)
* `typescript:S2871` — every `Array#sort()` without a compare function
  across emit + format + tests now uses
  `(a, b) => a.localeCompare(b)`.
* `typescript:S7739` — rename `If.then` / `ifStmt({ then })` to
  `If.thenBody` / `ifStmt({ thenBody })`. `then` on a plain object makes
  JS engines treat the node as a thenable/Promise.

### Review comments
* **Cloud profile ↔ locals_imp mismatch** (kilo-code-bot) — the s4-cloud
  profile description claimed "no /ui2/cl_json" and excluded it from the
  whitelist, yet the generated locals_imp template uses `/ui2/cl_json`.
  Updated the profile to reflect reality: `/ui2/cl_json` is released for
  ABAP for Cloud Development per SAP Note 2931335 and IS in the allow-
  list. JSON strategy is now `ui2_cl_json` (matching what we actually
  emit and verified on live BTP Steampunk).
* **gCTS `abapLanguageVersion` missing** (Devin review) — added
  `"abapLanguageVersion": "5"` to `buildClasJson()`. Without it the
  gCTS layout defaults to Standard ABAP and the class fails to activate
  on BTP Steampunk with S_ABPLNGVS.
* **`Return` with value emits invalid ABAP `rv = ...`** (Copilot) —
  added required `target` field on `Return` AST node. ABAP has no
  implicit `rv` identifier; callers must supply the RETURNING parameter
  name explicitly. Factory throws if `value` is set without `target`.
* **Nested BinOp lost parens** (CodeRabbit) — `printExpression` now
  wraps nested BinOp operands in `( ... )` so `a AND (b OR c)` no
  longer flattens to `a AND b OR c`.
* **Sample README `$TMP` misleading** (Copilot) — switched example to
  `--package ZPEPL` and documented why `$TMP` typically fails on ABAP
  Cloud (S_ABPLNGVS / 403). Also refreshed the output-layout and test
  commands.

### SonarCloud code smells addressed
* `typescript:S3358` — removed nested ternary in
  `print-types.ts` TableType printer, replaced with a lookup table.

### Housekeeping
* Regenerated petstore3 sample with the updated cloud profile + gcts
  metadata. abapGit output now under `generated/abapgit/src/`, gCTS
  under `generated/gcts/CLAS|INTF/`.

Tests: openai-codegen 142/142, abap-ast 115/115 passing.
Live verification on BTP (TRL) still holds — the previously landed
active source matches what this PR emits for the cloud profile.

Generated with [Devin](https://cli.devin.ai/docs)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
… class, default-is-success ordering

Four additional PR #109 review fixes (CodeRabbit + Devin):

* **`lcl_http.fetch` now prefixes the configured `server` path.** Specs
  with a non-root server base (`/v1`, `/api/v3`, …) were silently losing
  the prefix. Emits `|{ server }{ path }|` when `server` is non-empty.

* **Wrap the HTTP round-trip in `TRY … CLEANUP … ENDTRY`** so the client
  is always `close()`d — previously a kernel exception during
  `execute()`, binary read, or codepage conversion could leak the
  connection.

* **`renderFetchCall` now uses the configured local JSON class** (pass
  `ctx.jsonLocal` through) instead of hard-coding `json=>stringify`.
  Response parsing already used `ctx.jsonLocal`; request serialization
  is now symmetric and custom `--local-json-class` names work end-to-end.

* **`mapResponseHandling` — fix WHEN-ordering when `default` is the
  success response.** Two related issues:
  1. `pickSuccessStatus` no longer treats a `default` response as
     success when it's marked `isError: true`.
  2. When `default` IS the success branch (`WHEN OTHERS.`), error WHENs
     are now emitted *before* it so that `OTHERS` remains the final
     branch (ABAP forbids any WHEN after OTHERS; previously errors
     after OTHERS were unreachable).

Tests: openai-codegen 142/142 passing, abap-ast 115/115 passing.
Live TRL verification: deployed to ZPEPL, activation pre-audit clean,
`adt aunit -c ZCL_PS3_CLIENT_TESTS` → 3/3 pass.

Generated with [Devin](https://cli.devin.ai/docs)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
* `emit-local-classes.test.ts` — broaden the Z-prefix guard to also
  catch solid identifiers (`ZFOO`, `ZAPI`, `ZCLIENT`) that the previous
  underscore-only regex missed. Strip banner/star/line-comment rows
  before matching so the doc header ("* ZERO Z-dependencies…") remains
  allowed while the body is strictly zero-Z.

* `samples/petstore3-client/e2e/abapgit/src/zcl_ps3_client_tests.clas.xml`
  — add `<WITH_UNIT_TESTS>X</WITH_UNIT_TESTS>` to VSEOCLASS so the
  abapGit metadata matches the class body and ABAP Unit's discovery
  path does not rely purely on ABAP-level `FOR TESTING` semantics.

Generated with [Devin](https://cli.devin.ai/docs)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Addresses additional CodeRabbit + Devin review comments:

* **gCTS interface envelope now carries `abapLanguageVersion: '5'`**
  (Devin, 🔴 critical). Parallel to the class envelope fix; required
  for BTP Steampunk gCTS imports so interfaces don't default back to
  Standard ABAP.

* **`call()` node factory validates `callKind`** (CodeRabbit, 🟠 major).
  Previously accepted `undefined` at runtime, which fell into the
  instance-call path on print. Now throws `AbapAstError` unless
  `callKind` is `'static'` or `'instance'`.

* **gCTS docblock lists `locals_imp.abap`** (CodeRabbit, 🟡 minor).
  The emitter has written this file for a while; docblock was stale.

* **Sample README header grammar** (CodeRabbit, 🟡 minor). "requires
  an authenticated `adt-cli` session".

* Regenerated petstore3 sample to pick up the interface
  `abapLanguageVersion: '5'` field.

Generated with [Devin](https://cli.devin.ai/docs)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
feat: OpenAPI → ABAP client codegen v2 (3-layer, fetch-style, zero Z-deps)
… + multi-system routing

Adds an HTTP transport alongside the existing stdio transport for
@abapify/adt-mcp, backed by stateful MCP sessions that own a cached
AdtClient plus a lock registry. Credentials are supplied once per MCP
session via a new `sap_connect` handshake tool (resolvable by explicit
args, multi-system config, or existing adt-cli auth store), rather than
on every tool call. This unlocks running the MCP server as a long-lived
service, drops the per-call SAP CSRF/security-session handshake, and
prepares the surface for Wave 2 (MCP auth) and Wave 4 (Okta / OAuth).

Context: PR #110 feature-parity analysis vs AWS ABAP Accelerator.

W0 — OpenSpec change proposal (docs only):
  openspec/changes/add-mcp-http-transport/{proposal,design,tasks}.md
  openspec/changes/add-mcp-http-transport/specs/adt-mcp/spec.md

W1-A — transport + registry + multi-system:
  new  src/bin/adt-mcp-http.ts        (second bin, node:http + SDK StreamableHTTPServerTransport)
  new  src/lib/http/{server,multi-system}.ts
  new  src/lib/session/{registry,types}.ts
  edit src/lib/server.ts              (ToolContext gains optional registry + resolveSystem)
  edit src/lib/types.ts, src/index.ts, tsdown.config.ts, package.json

W1-B — handshake tools + tests:
  new  src/lib/tools/sap-connect.ts   (priority: explicit baseUrl → multi-system → ~/.adt auth store)
  new  src/lib/tools/sap-disconnect.ts
  new  src/lib/tools/session-helpers.ts (resolveClient helper for future tool migration)
  edit src/lib/tools/{index,shared-schemas}.ts
  edit packages/adt-cli/src/index.ts  (re-export getAdtClientV2)
  new  packages/adt-mcp/tests/http-integration.test.ts (6 tests, all pass)

Verified:
  - bunx nx build adt-mcp adt-cli → OK
  - 84 existing stdio + 6 new HTTP integration tests all pass
  - Live smoke against real BTP Steampunk (TRL) — initialize → sap_connect
    via ~/.adt browser-SSO cookie → SAP discovery 200 → sap_disconnect →
    DELETE /mcp all succeeded.

Known follow-ups (see tasks.md):
  - W1-C: migrate the 90+ existing tools to session-aware args so they
    can run with just an active MCP session (today they still require
    per-call baseUrl); wrap getAdtClientV2 to throw instead of
    process.exit(1) on auth failures.
  - W2: MCP auth layer (MCP_AUTH_TOKEN bearer + reverse-proxy mode).
  - W3: transactional changesets (ChangesetService in adt-cli for parity).
  - W4: Okta / OAuth 2.1 bearer.
  - W5: Dockerfile.mcp + deployment docs.

Generated with [Devin](https://cli.devin.ai/docs)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
…sessions + multi-system routing"

This reverts commit 19157a5.
…+ CORS)

Adds configurable authentication and CORS to the Streamable HTTP
transport introduced in Wave 1:

- new 'src/lib/http/auth.ts' — createAuthMiddleware() supports three
  modes: 'none' (default), 'bearer' (constant-time token compare via
  crypto.timingSafeEqual), and 'proxy' (trust X-Forwarded-User /
  -Email / -Groups from an authenticating reverse proxy, e.g.
  oauth2-proxy). Bearer mode returns 401 {"error":"unauthorized"}
  on mismatch with no detail leak.
- new 'src/lib/http/cors.ts' — exact-match origin allow-list (plus '*'
  shortcut for dev), preflight short-circuit, response headers for
  regular requests, Access-Control-Expose-Headers: mcp-session-id so
  browser clients can read the session id off initialize.
- 'src/lib/http/server.ts' — wires CORS + auth into the pipeline
  (CORS → host validation → /healthz escape-hatch → auth → route).
  /healthz stays outside auth for monitoring probes. Adds authMode,
  authToken, trustForwardedAuth, allowedOrigins to
  HttpServerOptions. Preserves prior behaviour when unconfigured.
- 'src/bin/adt-mcp-http.ts' — new flags (--auth-token,
  --auth-mode, --trust-forwarded-auth, --cors-origin) and env vars
  (MCP_AUTH_TOKEN, TRUST_FORWARDED_AUTH, MCP_CORS_ORIGIN). CLI flag
  wins over env. Emits a stderr WARN banner at startup when auth is
  off on a non-loopback bind, and when proxy trust is active on a
  non-loopback bind.
- new 'tests/http-auth.test.ts' — 13 node:test integration tests
  covering no-auth passthrough, bearer missing/wrong/equal-length-
  wrong/correct, proxy missing/present, misconfig rejection, CORS
  preflight for allowed and disallowed origins, and response-header
  propagation.

Smoke-verified: MCP_AUTH_TOKEN=secret123 start → no-token=401,
bad-token=401, good-token=200.

Refs: openspec/changes/add-mcp-http-transport/{proposal,design,specs}
…tClientV2Safe

Goal 1: getAdtClientV2Safe
- Add AdtAuthError (typed error with code + systemId) to adt-cli
- Factor error-exit paths in getAdtClientV2 into small helpers
  (reportNoSessionAndExit, reportUnsupportedAuthAndExit)
- Add getAdtClientV2Safe: same contract as getAdtClientV2 but throws
  AdtAuthError instead of calling process.exit(1). Required by
  long-running processes (adt-mcp HTTP transport, daemons) where
  process.exit would tear down unrelated connections.
- Re-export getAdtClientV2Safe + AdtAuthError from @abapify/adt-cli
- sap_connect now uses getAdtClientV2Safe; AdtAuthError code surfaces
  in the MCP error response
- Unit test verifies getAdtClientV2Safe throws (does not exit) when
  the SID has no session on disk

Goal 2: session-aware tools
- Migrated 82 tool files (every MCP tool except sap-connect, sap-disconnect,
  object-creation helpers, and non-handler utility modules)
- Input schemas now use sessionOrConnectionShape instead of connectionShape,
  so baseUrl/client/username/password/systemId are all optional
- Handlers take (args, extra) and resolve the client via
  resolveClient(ctx, args, extra ?? {}) — which prefers the session-scoped
  client from the registry when the MCP session has already run sap_connect,
  and otherwise falls back to the legacy ephemeral-client path
- update-source and run-abap: client resolution wrapped in try/catch so
  resolveClient throws do not escape the tool handler
- call-rfc: manual migration (variable was renamed to adtClient)

No functional changes to tool behaviour beyond the optional connection args
and session reuse. All parity tests pass.

Verification:
- bunx nx build adt-cli adt-mcp — green
- bunx nx test adt-cli — 194 tests pass (includes all parity.* tests)
- adt-mcp integration + http-integration + http-auth — 103 tests pass
- bunx nx lint adt-mcp — 2 pre-existing errors unrelated to this wave
  (adt-mcp-http.ts no-fallthrough, multi-system.ts preserve-caught-error)
- bunx nx format:write — applied

Generated with [Devin](https://cli.devin.ai/docs)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
…/ Cognito)

- New authMode='oauth' in HTTP auth middleware
- JWT validation via jose: issuer, audience, expiry, required scopes, JWKS fetch
- OIDC discovery fallback (.well-known/openid-configuration)
- User identity + email + groups extracted from configurable claims
- RFC 6750 compliant 401 responses
- CLI flags: --oauth-issuer/--oauth-audience/--oauth-jwks-uri/--oauth-required-scope

Generated with [Devin](https://cli.devin.ai/docs)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
…arity)

- Changeset state machine (open/committing/committed/rolled_back) bound to MCP session
- ChangesetService in adt-cli: begin/add/commit/rollback — transport-agnostic
- 4 new MCP tools: changeset_begin/add/commit/rollback — session-aware
- 4 matching CLI commands: adt changeset {begin,add,commit,rollback} with file-based state under ~/.adt/changesets/
- Parity test proving CLI ↔ MCP behavioural equivalence
- Auto-rollback of open changesets on MCP session close

Generated with [Devin](https://cli.devin.ai/docs)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
…docs, AGENTS/README updates

- Dockerfile.mcp (multi-stage, non-root, healthcheck)
- docker-compose.mcp.yaml with oauth2-proxy skeleton
- docs/deployment/mcp-http.md: full deployment guide (quickstart, auth modes, Okta recipe, multi-system, changesets, troubleshooting)
- packages/adt-mcp/README.md: HTTP transport + changeset sections
- packages/adt-mcp/AGENTS.md: transports/sessions/auth/changesets invariants
- root AGENTS.md: package guide pointer

Generated with [Devin](https://cli.devin.ai/docs)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
…y-research-sap-abap-accelerator

# Conflicts:
#	packages/adt-cli/src/index.ts
#	packages/adt-mcp/src/bin/adt-mcp-http.ts
#	packages/adt-mcp/src/lib/http/server.ts
#	packages/adt-mcp/src/lib/session/types.ts
#	packages/adt-mcp/src/lib/tools/index.ts
#	packages/adt-mcp/src/lib/tools/sap-connect.ts
Fixes 2 pre-existing ESLint errors blocking CI on PR #110:
- src/bin/adt-mcp-http.ts: move no-fallthrough disable before default:
- src/lib/http/multi-system.ts: pass { cause: err } to preserve caught error

Generated with [Devin](https://cli.devin.ai/docs)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
Replace /^Bearer\s+(.+)$/ regex with plain-string + charCode check
to eliminate polynomial backtracking risk on uncontrolled Authorization
header input flagged by CodeQL on PR #110.

Generated with [Devin](https://cli.devin.ai/docs)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
…-code CORS branch + Dockerfile hardening

- Extract changeset-helpers.ts (requireSession/requireOpenChangeset/textError/textOk) used by all 4 changeset_* tools; drops ~120 lines of duplicated precondition + error-wrap boilerplate.
- cors.ts: remove 'allowed[0] === "*" ? origin : origin' dead-code branch (SonarCloud typescript:S3923 bug).
- Dockerfile.mcp: --chmod=0555/0444 on COPY to satisfy CWE-732 / docker:S6504.

Generated with [Devin](https://cli.devin.ai/docs)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
SonarCloud quality gate still flags COPY --chmod=0555/0444 as missing
defence against write permissions. Add a follow-up 'chmod -R a-w' RUN
step that makes the read-only intent unambiguous to the scanner.

Generated with [Devin](https://cli.devin.ai/docs)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
…liant)

Sonar's compliant example: COPY --chown=root:root --chmod=755 …
Runtime user (appuser) falls into 'others' mode bits — r-x, no write.
Files remain readable + executable without granting appuser ownership.

Generated with [Devin](https://cli.devin.ai/docs)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
1. (security) TRUST_FORWARDED_AUTH and --trust-forwarded-auth may no longer
   silently downgrade an explicit --auth-mode=oauth|bearer to 'proxy'.
   Stale env vars in the shell would otherwise bypass JWT validation
   entirely. Gate the override on authMode === 'none' in both
   bin/adt-mcp-http.ts and lib/http/server.ts.

2. (stability) changeset_rollback catch block now clears session.changeset
   and tracked locks on rollback failure — previously the session was
   left wedged in 'open' state and subsequent changeset_begin calls
   required force=true to recover.

Review: https://app.devin.ai/review/abapify/adt-cli/pull/110

Generated with [Devin](https://cli.devin.ai/docs)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
- Dockerfile.mcp CMD: drop hardcoded --port, let MCP_PORT env flow
  through so containers run on whatever port the user sets. Fixes
  perpetually-unhealthy container when -e MCP_PORT=… overridden.
- http/server.ts: return 403 (not 421) on host-header reject, aligned
  with openspec/changes/add-mcp-http-transport/specs/adt-mcp/spec.md.
- http/server.ts: touch() the session on every POST that carries an
  existing Mcp-Session-Id. Previously only GET/DELETE refreshed the
  TTL, so actively-used sessions could be swept as idle between tool
  calls.
- sap-connect: reject ambiguous baseUrl+systemId input instead of
  silently preferring baseUrl — prevents accidental wrong-target
  connections.
- multi-system registry: forbid credentials on disk (drop with
  stderr warning on load). Credentials must flow through sap_connect
  at runtime, never persist to the config file. Registry schema now
  baseUrl + client only.
- sap-connect priority B: merge tool-call credentials with the
  registry-resolved metadata so the multi-system flow still works
  with the narrowed schema.
- OpenSpec: rename sap_{begin,add_to,commit,rollback}_changeset →
  changeset_{begin,add,commit,rollback} in proposal/design/tasks/spec
  to match the implemented tool names.
- README: rewrite the changeset tool table to match real semantics
  (lock+PUT on add, batch-activate on commit, no source revert on
  rollback).

Generated with [Devin](https://cli.devin.ai/docs)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
…vin finding)

Mirror the sap-connect fix in session-helpers.ts: when resolveClient
takes path 3 (systemId + resolveSystem) without an active session, it
now merges args.username/args.password into the resolved params.
Previously it built the client from the bare registry entry (baseUrl +
client), silently dropping any credentials the caller supplied on the
tool call.

Generated with [Devin](https://cli.devin.ai/docs)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
…match code (Devin findings)

- changeset_begin force=true: on rollback failure, return an explicit
  error instead of silently overwriting session.changeset. Previously
  a throwing rollback caused the old changeset object to be orphaned,
  leaking its lock handles until the SAP security session expired.
  Option 1 from the reviewer's suggestion (safer than lock-by-lock
  release because the service already does that best-effort inside
  rollback).
- docs/deployment/mcp-http.md multi-system section: drop username /
  password from the schema example + fields table and state that
  credentials must come via sap_connect at runtime — matches the
  'secrets are not persisted' security policy enforced in
  multi-system.ts:normalise.

Generated with [Devin](https://cli.devin.ai/docs)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
…Client (Devin findings)

- sap_connect: when the session is already bound to systemId=X and the
  caller requests systemId=Y (Y != X), return isError instead of ok:true
  bound to X. Prevents a PROD-requesting agent from silently operating
  on a DEV session.
- session-helpers.resolveClient: return type Promise<ResolvedClient>
  with async keyword, matching the fact that every caller already
  await's it. Keeps the door open for future async resolution paths
  (OIDC token exchange, etc) without silently returning an unhandled
  Promise.

Generated with [Devin](https://cli.devin.ai/docs)

Co-Authored-By: Devin <158243242+devin-ai-integration[bot]@users.noreply.github.com>
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@codeant-ai

codeant-ai Bot commented Jul 21, 2026

Copy link
Copy Markdown

Skipping CodeAnt AI review — this PR changes more than 100 files, which usually means a migration, codemod, or vendored drop. Line-level review on diffs this large produces duplicate findings on the same rewrite pattern and drowns out anything that actually matters.

If you still want a review, comment @codeant-ai : review. For better signal, consider splitting the PR into smaller chunks.

@netlify

netlify Bot commented Jul 21, 2026

Copy link
Copy Markdown

Deploy Preview for adt-cli ready!

Name Link
🔨 Latest commit 4fcb826
🔍 Latest deploy log https://app.netlify.com/projects/adt-cli/deploys/6a5f14dee612ea0007b87910
😎 Deploy Preview https://deploy-preview-134--adt-cli.netlify.app
📱 Preview on mobile
Toggle QR Code...

QR Code

Use your smartphone camera to open QR code link.
🤖 Make changes Run an agent on this branch

To edit notification comments on pull requests, go to your Netlify project configuration.

@coderabbitai

coderabbitai Bot commented Jul 21, 2026

Copy link
Copy Markdown
Contributor

Important

Review skipped

Too many files!

This PR contains 2115 files, which is 2015 over the limit of 100.

To get a review, narrow the scope:
• coderabbit review --committed # exclude uncommitted changes
• coderabbit review --dir # limit to a subdirectory
• coderabbit review --base # compare against a closer base

Upgrade to a paid plan to raise the limit.

Usage-priced reviews support at most 300 files.

⚙️ Run configuration

Configuration used: defaults

Review profile: CHILL

Plan: Pro

Run ID: d25ba7e2-62d4-4707-9d30-ed0ebcabfd79

📥 Commits

Reviewing files that changed from the base of the PR and between a52b9a8 and 4fcb826.

⛔ Files ignored due to path filters (196)
  • bun.lock is excluded by !**/*.lock
  • packages/adt-codegen/generated/collections/test.json is excluded by !**/generated/**
  • packages/adt-contracts/src/generated/adt/index.ts is excluded by !**/generated/**
  • packages/adt-contracts/src/generated/adt/sap/bc/adt/atc/results.ts is excluded by !**/generated/**
  • packages/adt-contracts/src/generated/adt/sap/bc/adt/atc/worklists.ts is excluded by !**/generated/**
  • packages/adt-contracts/src/generated/adt/sap/bc/adt/cts/transportrequests.ts is excluded by !**/generated/**
  • packages/adt-contracts/src/generated/adt/sap/bc/adt/cts/transportrequests/reference.ts is excluded by !**/generated/**
  • packages/adt-contracts/src/generated/adt/sap/bc/adt/cts/transportrequests/searchconfiguration/configurations.ts is excluded by !**/generated/**
  • packages/adt-contracts/src/generated/adt/sap/bc/adt/cts/transportrequests/searchconfiguration/metadata.ts is excluded by !**/generated/**
  • packages/adt-contracts/src/generated/adt/sap/bc/adt/packages.ts is excluded by !**/generated/**
  • packages/adt-contracts/src/generated/adt/sap/bc/adt/packages/settings.ts is excluded by !**/generated/**
  • packages/adt-contracts/src/generated/adt/sap/bc/adt/packages/validation.ts is excluded by !**/generated/**
  • packages/adt-contracts/src/generated/schemas.ts is excluded by !**/generated/**
  • packages/adt-fixtures/src/fixtures/system/security/cert.pem is excluded by !**/*.pem
  • packages/adt-plugin-abapgit/src/schemas/generated/index.ts is excluded by !**/generated/**
  • packages/adt-plugin-abapgit/src/schemas/generated/schemas/bdef.ts is excluded by !**/generated/**
  • packages/adt-plugin-abapgit/src/schemas/generated/schemas/clas.ts is excluded by !**/generated/**
  • packages/adt-plugin-abapgit/src/schemas/generated/schemas/devc.ts is excluded by !**/generated/**
  • packages/adt-plugin-abapgit/src/schemas/generated/schemas/doma.ts is excluded by !**/generated/**
  • packages/adt-plugin-abapgit/src/schemas/generated/schemas/dtel.ts is excluded by !**/generated/**
  • packages/adt-plugin-abapgit/src/schemas/generated/schemas/fugr.ts is excluded by !**/generated/**
  • packages/adt-plugin-abapgit/src/schemas/generated/schemas/index.ts is excluded by !**/generated/**
  • packages/adt-plugin-abapgit/src/schemas/generated/schemas/intf.ts is excluded by !**/generated/**
  • packages/adt-plugin-abapgit/src/schemas/generated/schemas/prog.ts is excluded by !**/generated/**
  • packages/adt-plugin-abapgit/src/schemas/generated/schemas/srvb.ts is excluded by !**/generated/**
  • packages/adt-plugin-abapgit/src/schemas/generated/schemas/srvd.ts is excluded by !**/generated/**
  • packages/adt-plugin-abapgit/src/schemas/generated/schemas/tabl.ts is excluded by !**/generated/**
  • packages/adt-plugin-abapgit/src/schemas/generated/schemas/ttyp.ts is excluded by !**/generated/**
  • packages/adt-plugin-abapgit/src/schemas/generated/types/bdef.ts is excluded by !**/generated/**
  • packages/adt-plugin-abapgit/src/schemas/generated/types/clas.ts is excluded by !**/generated/**
  • packages/adt-plugin-abapgit/src/schemas/generated/types/devc.ts is excluded by !**/generated/**
  • packages/adt-plugin-abapgit/src/schemas/generated/types/doma.ts is excluded by !**/generated/**
  • packages/adt-plugin-abapgit/src/schemas/generated/types/dtel.ts is excluded by !**/generated/**
  • packages/adt-plugin-abapgit/src/schemas/generated/types/fugr.ts is excluded by !**/generated/**
  • packages/adt-plugin-abapgit/src/schemas/generated/types/index.ts is excluded by !**/generated/**
  • packages/adt-plugin-abapgit/src/schemas/generated/types/intf.ts is excluded by !**/generated/**
  • packages/adt-plugin-abapgit/src/schemas/generated/types/prog.ts is excluded by !**/generated/**
  • packages/adt-plugin-abapgit/src/schemas/generated/types/srvb.ts is excluded by !**/generated/**
  • packages/adt-plugin-abapgit/src/schemas/generated/types/srvd.ts is excluded by !**/generated/**
  • packages/adt-plugin-abapgit/src/schemas/generated/types/tabl.ts is excluded by !**/generated/**
  • packages/adt-plugin-abapgit/src/schemas/generated/types/ttyp.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/index.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/custom/acoverageResult.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/custom/acoverageStatements.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/custom/adtcoreObjectSets.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/custom/atcRun.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/custom/atomExtended.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/custom/atomFeed.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/custom/aunitResult.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/custom/aunitRun.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/custom/badi.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/custom/blueSource.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/custom/dataelementWrapper.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/custom/dclSource.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/custom/ddlSource.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/custom/discovery.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/custom/http.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/custom/index.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/custom/objectProperties.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/custom/srvdSource.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/custom/templatelinkExtended.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/custom/transportUseraction.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/custom/transportfind.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/custom/transportmanagmentCreate.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/custom/transportmanagmentSingle.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/index.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/sap/Ecore.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/sap/abapoo.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/sap/abapsource.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/sap/adtcore.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/sap/atc.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/sap/atcexemption.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/sap/atcfinding.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/sap/atcinfo.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/sap/atcobject.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/sap/atcresult.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/sap/atcresultquery.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/sap/atctagdescription.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/sap/atcworklist.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/sap/atom.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/sap/checklist.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/sap/checkrun.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/sap/classes.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/sap/configuration.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/sap/configurations.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/sap/dataelements.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/sap/debugger.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/sap/domain.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/sap/exception.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/sap/fincludes.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/sap/fmodules.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/sap/groups.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/sap/includes.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/sap/index.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/sap/interfaces.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/sap/log.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/sap/logpoint.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/sap/packagesV1.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/sap/programs.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/sap/quickfixes.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/sap/servicebinding.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/sap/tablesettings.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/sap/tabletype.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/sap/templatelink.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/sap/traces.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/sap/transportmanagment.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/sap/transportsearch.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/schemas/sap/xml.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/typed.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/custom/acoverageResult.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/custom/acoverageStatements.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/custom/adtcoreObjectSets.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/custom/atcRun.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/custom/atomExtended.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/custom/atomFeed.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/custom/aunitResult.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/custom/aunitRun.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/custom/badi.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/custom/blueSource.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/custom/dataelementWrapper.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/custom/dclSource.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/custom/ddlSource.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/custom/discovery.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/custom/http.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/custom/objectProperties.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/custom/srvdSource.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/custom/templatelinkExtended.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/custom/transportUseraction.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/custom/transportfind.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/custom/transportmanagmentCreate.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/custom/transportmanagmentSingle.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/sap/abapFunctionGroup.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/sap/abapProgram.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/sap/abapsource.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/sap/adtcore.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/sap/atc.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/sap/atcexemption.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/sap/atcfinding.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/sap/atcinfo.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/sap/atcobject.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/sap/atcresult.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/sap/atcresultquery.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/sap/atctagdescription.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/sap/atcworklist.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/sap/atom.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/sap/checklist.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/sap/checkrun.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/sap/classes.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/sap/configuration.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/sap/configurations.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/sap/dataelements.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/sap/debugger.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/sap/domain.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/sap/exception.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/sap/fincludes.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/sap/fmodules.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/sap/groups.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/sap/includes.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/sap/interfaces.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/sap/log.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/sap/logpoint.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/sap/packagesV1.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/sap/programs.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/sap/quickfixes.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/sap/servicebinding.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/sap/tablesettings.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/sap/tabletype.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/sap/templatelink.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/sap/traces.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/sap/transportmanagment.types.ts is excluded by !**/generated/**
  • packages/adt-schemas/src/schemas/generated/types/sap/transportsearch.types.ts is excluded by !**/generated/**
  • packages/openai-codegen/tests/__snapshots__/emit-types-interface.test.ts.snap is excluded by !**/*.snap
  • samples/petstore3-client/generated/abapgit/package.devc.xml is excluded by !**/generated/**
  • samples/petstore3-client/generated/abapgit/src/zcl_petstore3.clas.abap is excluded by !**/generated/**
  • samples/petstore3-client/generated/abapgit/src/zcl_petstore3.clas.locals_def.abap is excluded by !**/generated/**
  • samples/petstore3-client/generated/abapgit/src/zcl_petstore3.clas.locals_imp.abap is excluded by !**/generated/**
  • samples/petstore3-client/generated/abapgit/src/zcl_petstore3.clas.xml is excluded by !**/generated/**
  • samples/petstore3-client/generated/abapgit/src/zcx_petstore3_error.clas.abap is excluded by !**/generated/**
  • samples/petstore3-client/generated/abapgit/src/zcx_petstore3_error.clas.xml is excluded by !**/generated/**
  • samples/petstore3-client/generated/abapgit/src/zif_petstore3.intf.abap is excluded by !**/generated/**
  • samples/petstore3-client/generated/abapgit/src/zif_petstore3.intf.xml is excluded by !**/generated/**
  • samples/petstore3-client/generated/abapgit/src/zif_petstore3_types.intf.abap is excluded by !**/generated/**
  • samples/petstore3-client/generated/abapgit/src/zif_petstore3_types.intf.xml is excluded by !**/generated/**
  • samples/petstore3-client/generated/gcts/CLAS/zcl_petstore3/zcl_petstore3.clas.abap is excluded by !**/generated/**
  • samples/petstore3-client/generated/gcts/CLAS/zcl_petstore3/zcl_petstore3.clas.json is excluded by !**/generated/**
  • samples/petstore3-client/generated/gcts/CLAS/zcl_petstore3/zcl_petstore3.clas.locals_def.abap is excluded by !**/generated/**
  • samples/petstore3-client/generated/gcts/CLAS/zcl_petstore3/zcl_petstore3.clas.locals_imp.abap is excluded by !**/generated/**
  • samples/petstore3-client/generated/gcts/CLAS/zcx_petstore3_error/zcx_petstore3_error.clas.abap is excluded by !**/generated/**
  • samples/petstore3-client/generated/gcts/CLAS/zcx_petstore3_error/zcx_petstore3_error.clas.json is excluded by !**/generated/**
  • samples/petstore3-client/generated/gcts/INTF/zif_petstore3/zif_petstore3.intf.abap is excluded by !**/generated/**
  • samples/petstore3-client/generated/gcts/INTF/zif_petstore3/zif_petstore3.intf.json is excluded by !**/generated/**
  • samples/petstore3-client/generated/gcts/INTF/zif_petstore3_types/zif_petstore3_types.intf.abap is excluded by !**/generated/**
  • samples/petstore3-client/generated/gcts/INTF/zif_petstore3_types/zif_petstore3_types.intf.json is excluded by !**/generated/**
  • samples/petstore3-client/generated/gcts/package.devc.json is excluded by !**/generated/**
  • website/static/img/favicon.svg is excluded by !**/*.svg
  • website/static/img/logo.svg is excluded by !**/*.svg
📒 Files selected for processing (2115)
  • .agents/README.md
  • .agents/agents/README.md
  • .agents/agents/claude-code.md
  • .agents/agents/cursor-ide.md
  • .agents/agents/manifest.yaml
  • .agents/commands/adt/adk.md
  • .agents/commands/adt/command.md
  • .agents/commands/adt/contract.md
  • .agents/commands/adt/page.md
  • .agents/commands/adt/schema.md
  • .agents/repo-guide.md
  • .agents/rules/adt/adk-save-logic.md
  • .agents/rules/adt/adt-ddic-mapping.md
  • .agents/rules/adt/xsd-best-practices.md
  • .agents/rules/development/bundler-imports.md
  • .agents/rules/development/coding-conventions.md
  • .agents/rules/development/file-lifecycle.md
  • .agents/rules/development/package-versions.md
  • .agents/rules/development/tmp-folder-testing.md
  • .agents/rules/git/no-auto-commit.md
  • .agents/rules/nx/nx-circular-dependencies.md
  • .agents/rules/nx/nx-monorepo-setup.md
  • .agents/rules/openspec/project-planning-memory.md
  • .agents/rules/openspec/spec-first-then-code.md
  • .agents/rules/verification/after-changes.md
  • .agents/skills/add-endpoint/SKILL.md
  • .agents/skills/add-object-type/SKILL.md
  • .agents/skills/adt-export/SKILL.md
  • .agents/skills/adt-reverse-engineering/SKILL.md
  • .agents/skills/docs-sync/SKILL.md
  • .agents/skills/docs-sync/scripts/check-structure.ts
  • .agents/skills/docs-sync/scripts/generate-stubs.ts
  • .agents/skills/link-workspace-packages/SKILL.md
  • .agents/skills/monitor-ci/SKILL.md
  • .agents/skills/monitor-ci/references/fix-flows.md
  • .agents/skills/monitor-ci/scripts/ci-poll-decide.mjs
  • .agents/skills/monitor-ci/scripts/ci-state-update.mjs
  • .agents/skills/nx-generate/SKILL.md
  • .agents/skills/nx-import/SKILL.md
  • .agents/skills/nx-import/references/ESLINT.md
  • .agents/skills/nx-import/references/GRADLE.md
  • .agents/skills/nx-import/references/JEST.md
  • .agents/skills/nx-import/references/NEXT.md
  • .agents/skills/nx-import/references/TURBOREPO.md
  • .agents/skills/nx-import/references/VITE.md
  • .agents/skills/nx-plugins/SKILL.md
  • .agents/skills/nx-run-tasks/SKILL.md
  • .agents/skills/nx-workspace/SKILL.md
  • .agents/skills/nx-workspace/references/AFFECTED.md
  • .agents/skills/openapi-to-abap/SKILL.md
  • .agents/skills/openspec-apply-change/SKILL.md
  • .agents/skills/openspec-archive-change/SKILL.md
  • .agents/skills/openspec-explore/SKILL.md
  • .agents/skills/openspec-propose/SKILL.md
  • .agents/workflows/README.md
  • .agents/workflows/adt/README.md
  • .agents/workflows/lint.md
  • .agents/workflows/opsx-apply.md
  • .agents/workflows/opsx-archive.md
  • .agents/workflows/opsx-explore.md
  • .agents/workflows/opsx-propose.md
  • .claude/README.md
  • .claude/commands/opsx/apply.md
  • .claude/commands/opsx/archive.md
  • .claude/commands/opsx/explore.md
  • .claude/commands/opsx/propose.md
  • .claude/git-commit
  • .claude/hooks/sonar-secrets/build-scripts/pretool-secrets.sh
  • .claude/hooks/sonar-secrets/build-scripts/prompt-secrets.sh
  • .claude/nx-ci
  • .claude/settings.json
  • .claude/skills/openspec-apply-change/SKILL.md
  • .claude/skills/openspec-archive-change/SKILL.md
  • .claude/skills/openspec-explore/SKILL.md
  • .claude/skills/openspec-propose/SKILL.md
  • .codex/agents/ci-monitor-subagent.toml
  • .codex/config.toml
  • .cursor/README.md
  • .cursor/commands/README.md
  • .cursor/commands/opsx-apply.md
  • .cursor/commands/opsx-archive.md
  • .cursor/commands/opsx-explore.md
  • .cursor/commands/opsx-propose.md
  • .cursor/rules/agents-ssot.mdc
  • .cursor/skills/openspec-apply-change/SKILL.md
  • .cursor/skills/openspec-archive-change/SKILL.md
  • .cursor/skills/openspec-explore/SKILL.md
  • .cursor/skills/openspec-propose/SKILL.md
  • .devcontainer/Dockerfile
  • .devcontainer/devcontainer.json
  • .devin/rules
  • .devin/skills
  • .dockerignore
  • .env.example
  • .github/agents/ci-monitor-subagent.agent.md
  • .github/copilot-instructions.md
  • .github/dependabot.yml
  • .github/hooks/hooks.json
  • .github/hooks/scripts/approve-workflows.sh
  • .github/hooks/scripts/log-tool-calls.sh
  • .github/hooks/scripts/print-tool-log.sh
  • .github/hooks/scripts/test-hooks.sh
  • .github/prompts/monitor-ci.prompt.md
  • .github/prompts/opsx-apply.prompt.md
  • .github/prompts/opsx-archive.prompt.md
  • .github/prompts/opsx-explore.prompt.md
  • .github/prompts/opsx-propose.prompt.md
  • .github/skills/adt-mcp/SKILL.md
  • .github/skills/openspec-apply-change/SKILL.md
  • .github/skills/openspec-archive-change/SKILL.md
  • .github/skills/openspec-explore/SKILL.md
  • .github/skills/openspec-propose/SKILL.md
  • .github/workflows/ci.yml
  • .github/workflows/copilot-setup-steps.yml
  • .github/workflows/docker.yml
  • .github/workflows/publish-gpr.yml
  • .github/workflows/publish.yml
  • .github/workflows/release.yml
  • .gitignore
  • .gitmessage
  • .gitmodules
  • .husky/pre-commit
  • .kilocode/mcp.json
  • .npmrc
  • .nxignore
  • .prettierignore
  • .prettierrc
  • .verdaccio/config.yml
  • .vscode/extensions.json
  • .vscode/settings.json
  • .windsurf/README.md
  • .windsurf/best-practices/esnext-patterns.md
  • .windsurf/rules
  • .windsurf/skills/openspec-apply-change/SKILL.md
  • .windsurf/skills/openspec-archive-change/SKILL.md
  • .windsurf/skills/openspec-explore/SKILL.md
  • .windsurf/skills/openspec-propose/SKILL.md
  • .windsurf/workflows/adt/adt-adk.md
  • .windsurf/workflows/adt/adt-command.md
  • .windsurf/workflows/adt/adt-contract.md
  • .windsurf/workflows/adt/adt-page.md
  • .windsurf/workflows/adt/adt-schema.md
  • .windsurf/workflows/lint.md
  • .windsurf/workflows/opsx-apply.md
  • .windsurf/workflows/opsx-archive.md
  • .windsurf/workflows/opsx-explore.md
  • .windsurf/workflows/opsx-propose.md
  • AGENTS.md
  • CHANGELOG.md
  • Dockerfile
  • Dockerfile.adt-server
  • Dockerfile.mcp
  • LICENSE
  • README.md
  • SECURITY.md
  • adt.config.ts
  • discrepancy_report.md
  • docker-compose.mcp.yaml
  • docker-entrypoint.adt-server.sh
  • docs/README.md
  • docs/architecture/adk-overview.md
  • docs/architecture/plugin-system.md
  • docs/changelogs/2024-12-12-1700-type-generation-overhaul.md
  • docs/changelogs/2024-12-13-0056-circular-ref-fix.md
  • docs/ci-cd-setup.md
  • docs/deployment/mcp-http.md
  • docs/deployment/pilot-local-dev.md
  • docs/design/export-architecture.md
  • docs/examples/adk-facade-usage.md
  • docs/examples/intelligent-adk-usage.md
  • docs/history/2025-09-09.md
  • docs/history/2025-09-10-adt-cli-decoupling-plan.md
  • docs/history/2025-09-12-ci-pipeline-stabilization.md
  • docs/migration/adk2-migration-notes.md
  • docs/migration/v1-to-v2-status.md
  • docs/planning/README.md
  • docs/planning/abap-code-review.md
  • docs/planning/adk2-migration.md
  • docs/planning/aws-abap-accelerator-feature-parity.md
  • docs/planning/current-sprint.md
  • docs/planning/docs-rollout.md
  • docs/planning/roadmap.md
  • docs/roadmap/README.md
  • docs/roadmap/epics/_template.md
  • docs/roadmap/epics/e01-include.md
  • docs/roadmap/epics/e02-function.md
  • docs/roadmap/epics/e03-badi.md
  • docs/roadmap/epics/e04-strust.md
  • docs/roadmap/epics/e05-format-plugin-api.md
  • docs/roadmap/epics/e06-gcts-format-plugin.md
  • docs/roadmap/epics/e07-gcts-command-plugin.md
  • docs/roadmap/epics/e08-checkin.md
  • docs/roadmap/epics/e09-acds-parser.md
  • docs/roadmap/epics/e10-rap-bdef.md
  • docs/roadmap/epics/e11-rap-srvd.md
  • docs/roadmap/epics/e12-rap-srvb.md
  • docs/roadmap/epics/e13-startrfc.md
  • docs/roadmap/epics/e14-flp.md
  • docs/roadmap/epics/e15-wb.md
  • eslint.config.mjs
  • git_modules/abap-file-formats
  • git_modules/abapgit-examples
  • jest.config.ts
  • jest.preset.js
  • knip.json
  • migrations.json
  • netlify.toml
  • nx.json
  • openspec/changes/add-abapify-pilot/.openspec.yaml
  • openspec/changes/add-abapify-pilot/design.md
  • openspec/changes/add-abapify-pilot/proposal.md
  • openspec/changes/add-abapify-pilot/specs/abapify-pilot-agent/spec.md
  • openspec/changes/add-abapify-pilot/specs/code-review-workflow/spec.md
  • openspec/changes/add-abapify-pilot/tasks.md
  • openspec/changes/add-aclass-parser/proposal.md
  • openspec/changes/add-aclass-parser/specs/aclass/spec.md
  • openspec/changes/add-aclass-parser/tasks.md
  • openspec/changes/add-exact-source-history/.openspec.yaml
  • openspec/changes/add-exact-source-history/design.md
  • openspec/changes/add-exact-source-history/proposal.md
  • openspec/changes/add-exact-source-history/specs/adt-cli/spec.md
  • openspec/changes/add-exact-source-history/specs/adt-source-history/spec.md
  • openspec/changes/add-exact-source-history/specs/transport-source-manifest/spec.md
  • openspec/changes/add-exact-source-history/tasks.md
  • openspec/changes/add-mcp-http-transport/design.md
  • openspec/changes/add-mcp-http-transport/proposal.md
  • openspec/changes/add-mcp-http-transport/specs/adt-mcp/spec.md
  • openspec/changes/add-mcp-http-transport/tasks.md
  • openspec/changes/add-openai-codegen/proposal.md
  • openspec/changes/add-openai-codegen/specs/abap-ast/spec.md
  • openspec/changes/add-openai-codegen/specs/openai-codegen/spec.md
  • openspec/changes/add-openai-codegen/tasks.md
  • openspec/changes/arc-1-feature-parity/.openspec.yaml
  • openspec/changes/arc-1-feature-parity/design.md
  • openspec/changes/arc-1-feature-parity/proposal.md
  • openspec/changes/arc-1-feature-parity/specs/abap-lint/spec.md
  • openspec/changes/arc-1-feature-parity/specs/adt-cli/spec.md
  • openspec/changes/arc-1-feature-parity/specs/code-completion/spec.md
  • openspec/changes/arc-1-feature-parity/specs/context-compression/spec.md
  • openspec/changes/arc-1-feature-parity/specs/method-surgery/spec.md
  • openspec/changes/arc-1-feature-parity/specs/short-dumps/spec.md
  • openspec/changes/arc-1-feature-parity/specs/traces/spec.md
  • openspec/changes/arc-1-feature-parity/tasks.md
  • openspec/config.yaml
  • openspec/specs/adk/abapgit-serialization.md
  • openspec/specs/adk/adk-factory.md
  • openspec/specs/adk/adk2-on-xmld.md
  • openspec/specs/adk/intelligent-object-factory.md
  • openspec/specs/adk/object-grouping-structure.md
  • openspec/specs/adk/redesigned-object-architecture.md
  • openspec/specs/adk/spec.md
  • openspec/specs/adt-cli/adt-response-logging.md
  • openspec/specs/adt-cli/logging-and-utilities.md
  • openspec/specs/adt-cli/plugin-architecture.md
  • openspec/specs/adt-cli/spec.md
  • openspec/specs/adt-client/spec.md
  • openspec/specs/cicd/abap-cicd-pipeline.md
  • openspec/specs/cicd/spec.md
  • package.json
  • packages/abap-ast/AGENTS.md
  • packages/abap-ast/CHANGELOG.md
  • packages/abap-ast/README.md
  • packages/abap-ast/eslint.config.js
  • packages/abap-ast/package.json
  • packages/abap-ast/src/index.ts
  • packages/abap-ast/src/nodes/base.ts
  • packages/abap-ast/src/nodes/class.ts
  • packages/abap-ast/src/nodes/data.ts
  • packages/abap-ast/src/nodes/errors.ts
  • packages/abap-ast/src/nodes/expressions.ts
  • packages/abap-ast/src/nodes/index.ts
  • packages/abap-ast/src/nodes/interface.ts
  • packages/abap-ast/src/nodes/members.ts
  • packages/abap-ast/src/nodes/statements.ts
  • packages/abap-ast/src/nodes/types.ts
  • packages/abap-ast/src/printer/index.ts
  • packages/abap-ast/src/printer/options.ts
  • packages/abap-ast/src/printer/print-class.ts
  • packages/abap-ast/src/printer/print-expressions.ts
  • packages/abap-ast/src/printer/print-interface.ts
  • packages/abap-ast/src/printer/print-members.ts
  • packages/abap-ast/src/printer/print-statements.ts
  • packages/abap-ast/src/printer/print-types.ts
  • packages/abap-ast/src/printer/writer.ts
  • packages/abap-ast/tests/abapdoc.test.ts
  • packages/abap-ast/tests/nodes.test.ts
  • packages/abap-ast/tests/printer.test.ts
  • packages/abap-ast/tsconfig.json
  • packages/abap-ast/tsdown.config.ts
  • packages/abap-ast/vitest.config.ts
  • packages/acds/AGENTS.md
  • packages/acds/CHANGELOG.md
  • packages/acds/README.md
  • packages/acds/eslint.config.js
  • packages/acds/package.json
  • packages/acds/src/ast.ts
  • packages/acds/src/errors.ts
  • packages/acds/src/index.ts
  • packages/acds/src/lib/ast/annotations.ts
  • packages/acds/src/lib/ast/associations.ts
  • packages/acds/src/lib/ast/index.ts
  • packages/acds/src/lib/ast/types.ts
  • packages/acds/src/lib/ast/views.ts
  • packages/acds/src/lib/ast/walker.ts
  • packages/acds/src/lib/grammar/actions.ts
  • packages/acds/src/lib/grammar/annotations.ts
  • packages/acds/src/lib/grammar/associations.ts
  • packages/acds/src/lib/grammar/dcl.ts
  • packages/acds/src/lib/grammar/ddl.ts
  • packages/acds/src/lib/grammar/index.ts
  • packages/acds/src/lib/grammar/parameters.ts
  • packages/acds/src/lib/grammar/projections.ts
  • packages/acds/src/lib/validate/cardinality.ts
  • packages/acds/src/lib/validate/elements.ts
  • packages/acds/src/lib/validate/index.ts
  • packages/acds/src/parser.test.ts
  • packages/acds/src/parser.ts
  • packages/acds/src/tokens.ts
  • packages/acds/src/visitor.ts
  • packages/acds/tests/fixtures.test.ts
  • packages/acds/tests/fixtures/abstract-entity.ddls.acds
  • packages/acds/tests/fixtures/custom-entity.ddls.acds
  • packages/acds/tests/fixtures/metadata-extension.ddlx.acds
  • packages/acds/tests/fixtures/projection-view.ddls.acds
  • packages/acds/tests/fixtures/role-basic.dcls.acds
  • packages/acds/tests/fixtures/role-multigrant.dcls.acds
  • packages/acds/tests/fixtures/service.srvd.acds
  • packages/acds/tests/fixtures/simple-type.drty.acds
  • packages/acds/tests/fixtures/table-basic.tabl.acds
  • packages/acds/tests/fixtures/view-entity-basic.ddls.acds
  • packages/acds/tests/fixtures/view-entity-product.ddls.acds
  • packages/acds/tests/fixtures/view-entity-rich.ddls.acds
  • packages/acds/tests/grammar/annotations.test.ts
  • packages/acds/tests/grammar/associations.test.ts
  • packages/acds/tests/grammar/dcl.test.ts
  • packages/acds/tests/grammar/parameters.test.ts
  • packages/acds/tests/grammar/views.test.ts
  • packages/acds/tests/validate.test.ts
  • packages/acds/tests/walker.test.ts
  • packages/acds/tsconfig.json
  • packages/acds/tsdown.config.ts
  • packages/acds/vitest.config.ts
  • packages/aclass/AGENTS.md
  • packages/aclass/CHANGELOG.md
  • packages/aclass/eslint.config.js
  • packages/aclass/package.json
  • packages/aclass/src/assert.ts
  • packages/aclass/src/ast.ts
  • packages/aclass/src/errors.ts
  • packages/aclass/src/index.ts
  • packages/aclass/src/lex.ts
  • packages/aclass/src/parser.ts
  • packages/aclass/src/tokens.ts
  • packages/aclass/tests/assert.test.ts
  • packages/aclass/tests/fixtures.test.ts
  • packages/aclass/tests/lex.test.ts
  • packages/aclass/tests/parse-interface.test.ts
  • packages/aclass/tests/roundtrip.test.ts
  • packages/aclass/tsconfig.json
  • packages/aclass/tsdown.config.ts
  • packages/aclass/vitest.config.ts
  • packages/adk/AGENTS.md
  • packages/adk/CHANGELOG.md
  • packages/adk/README.md
  • packages/adk/package.json
  • packages/adk/project.json
  • packages/adk/src/base/adt.ts
  • packages/adk/src/base/context.ts
  • packages/adk/src/base/fetch-utils.ts
  • packages/adk/src/base/global-context.ts
  • packages/adk/src/base/index.ts
  • packages/adk/src/base/kinds.ts
  • packages/adk/src/base/lock-registry.ts
  • packages/adk/src/base/model.ts
  • packages/adk/src/base/object-set.ts
  • packages/adk/src/base/registry.ts
  • packages/adk/src/base/types.ts
  • packages/adk/src/decorators/datetime.ts
  • packages/adk/src/decorators/index.ts
  • packages/adk/src/decorators/lazy.ts
  • packages/adk/src/decorators/lockable.ts
  • packages/adk/src/factory.ts
  • packages/adk/src/index.ts
  • packages/adk/src/objects/cds/dcl.model.ts
  • packages/adk/src/objects/cds/ddl.model.ts
  • packages/adk/src/objects/cds/index.ts
  • packages/adk/src/objects/cts/index.ts
  • packages/adk/src/objects/cts/transport-import.ts
  • packages/adk/src/objects/cts/transport/index.ts
  • packages/adk/src/objects/cts/transport/transport-object.ts
  • packages/adk/src/objects/cts/transport/transport.ts
  • packages/adk/src/objects/cts/transport/transport.types.ts
  • packages/adk/src/objects/ddic/doma/doma.model.ts
  • packages/adk/src/objects/ddic/doma/index.ts
  • packages/adk/src/objects/ddic/dtel/dtel.model.ts
  • packages/adk/src/objects/ddic/dtel/index.ts
  • packages/adk/src/objects/ddic/index.ts
  • packages/adk/src/objects/ddic/tabl/index.ts
  • packages/adk/src/objects/ddic/tabl/tabl.model.ts
  • packages/adk/src/objects/ddic/ttyp/index.ts
  • packages/adk/src/objects/ddic/ttyp/ttyp.model.ts
  • packages/adk/src/objects/repository/badi/badi.model.ts
  • packages/adk/src/objects/repository/badi/index.ts
  • packages/adk/src/objects/repository/bdef/bdef.model.ts
  • packages/adk/src/objects/repository/bdef/index.ts
  • packages/adk/src/objects/repository/clas/clas.model.ts
  • packages/adk/src/objects/repository/clas/clas.types.ts
  • packages/adk/src/objects/repository/clas/index.ts
  • packages/adk/src/objects/repository/devc/devc.model.ts
  • packages/adk/src/objects/repository/devc/devc.types.ts
  • packages/adk/src/objects/repository/devc/index.ts
  • packages/adk/src/objects/repository/fugr/fugr.model.ts
  • packages/adk/src/objects/repository/fugr/fugr.types.ts
  • packages/adk/src/objects/repository/fugr/func/func.model.ts
  • packages/adk/src/objects/repository/fugr/func/func.types.ts
  • packages/adk/src/objects/repository/fugr/func/index.ts
  • packages/adk/src/objects/repository/fugr/index.ts
  • packages/adk/src/objects/repository/incl/incl.model.ts
  • packages/adk/src/objects/repository/incl/incl.types.ts
  • packages/adk/src/objects/repository/incl/index.ts
  • packages/adk/src/objects/repository/intf/index.ts
  • packages/adk/src/objects/repository/intf/intf.model.ts
  • packages/adk/src/objects/repository/intf/intf.types.ts
  • packages/adk/src/objects/repository/prog/index.ts
  • packages/adk/src/objects/repository/prog/prog.model.ts
  • packages/adk/src/objects/repository/prog/prog.types.ts
  • packages/adk/src/objects/repository/srvb/index.ts
  • packages/adk/src/objects/repository/srvb/srvb.model.ts
  • packages/adk/src/objects/repository/srvd/index.ts
  • packages/adk/src/objects/repository/srvd/srvd.model.ts
  • packages/adk/src/transport-source-manifest.ts
  • packages/adk/tests/badi.test.ts
  • packages/adk/tests/bdef.test.ts
  • packages/adk/tests/cds.test.ts
  • packages/adk/tests/fetch-utils.test.ts
  • packages/adk/tests/incl.test.ts
  • packages/adk/tests/lock-integration.test.ts
  • packages/adk/tests/registry.test.ts
  • packages/adk/tests/srvb.test.ts
  • packages/adk/tests/srvd.test.ts
  • packages/adk/tests/transport-import.test.ts
  • packages/adk/tests/transport-source-manifest.test.ts
  • packages/adk/tsconfig.json
  • packages/adk/tsconfig.lib.json
  • packages/adk/tsdown.config.ts
  • packages/adk/vitest.config.ts
  • packages/adt-atc/CHANGELOG.md
  • packages/adt-atc/README.md
  • packages/adt-atc/package.json
  • packages/adt-atc/project.json
  • packages/adt-atc/src/commands/atc-customizing.ts
  • packages/adt-atc/src/commands/atc.ts
  • packages/adt-atc/src/formatters/gitlab.ts
  • packages/adt-atc/src/formatters/index.ts
  • packages/adt-atc/src/formatters/sarif.ts
  • packages/adt-atc/src/index.ts
  • packages/adt-atc/src/resolvers/abapgit.ts
  • packages/adt-atc/src/types.ts
  • packages/adt-atc/tsconfig.json
  • packages/adt-atc/tsdown.config.ts
  • packages/adt-aunit/CHANGELOG.md
  • packages/adt-aunit/README.md
  • packages/adt-aunit/package.json
  • packages/adt-aunit/project.json
  • packages/adt-aunit/src/commands/aunit.ts
  • packages/adt-aunit/src/formatters/index.ts
  • packages/adt-aunit/src/formatters/jacoco.ts
  • packages/adt-aunit/src/formatters/junit.ts
  • packages/adt-aunit/src/formatters/sonar.ts
  • packages/adt-aunit/src/index.ts
  • packages/adt-aunit/src/types.ts
  • packages/adt-aunit/tests/formatters/jacoco.test.ts
  • packages/adt-aunit/tests/formatters/sonar.test.ts
  • packages/adt-aunit/tsconfig.json
  • packages/adt-aunit/tsdown.config.ts
  • packages/adt-aunit/vitest.config.ts
  • packages/adt-auth/AGENTS.md
  • packages/adt-auth/CHANGELOG.md
  • packages/adt-auth/README.md
  • packages/adt-auth/TODO-migrate-from-cli.md
  • packages/adt-auth/package.json
  • packages/adt-auth/project.json
  • packages/adt-auth/src/auth-manager.ts
  • packages/adt-auth/src/index.ts
  • packages/adt-auth/src/plugins/basic.ts
  • packages/adt-auth/src/plugins/service-key.ts
  • packages/adt-auth/src/storage/file-storage.ts
  • packages/adt-auth/src/types.ts
  • packages/adt-auth/src/types/service-key.ts
  • packages/adt-auth/src/utils/env.ts
  • packages/adt-auth/src/utils/pkce.ts
  • packages/adt-auth/tsconfig.json
  • packages/adt-auth/tsconfig.lib.json
  • packages/adt-auth/tsdown.config.ts
  • packages/adt-cli/AGENTS.md
  • packages/adt-cli/CHANGELOG.md
  • packages/adt-cli/README.md
  • packages/adt-cli/eslint.config.js
  • packages/adt-cli/package.json
  • packages/adt-cli/project.json
  • packages/adt-cli/src/bin/adt-all.ts
  • packages/adt-cli/src/bin/adt.ts
  • packages/adt-cli/src/index.ts
  • packages/adt-cli/src/lib/cli.test.ts
  • packages/adt-cli/src/lib/cli.ts
  • packages/adt-cli/src/lib/commands/abap/index.ts
  • packages/adt-cli/src/lib/commands/abap/run.ts
  • packages/adt-cli/src/lib/commands/auth/list.ts
  • packages/adt-cli/src/lib/commands/auth/login.ts
  • packages/adt-cli/src/lib/commands/auth/logout.ts
  • packages/adt-cli/src/lib/commands/auth/refresh.ts
  • packages/adt-cli/src/lib/commands/auth/set-default.ts
  • packages/adt-cli/src/lib/commands/auth/status.ts
  • packages/adt-cli/src/lib/commands/badi/index.ts
  • packages/adt-cli/src/lib/commands/bdef/index.ts
  • packages/adt-cli/src/lib/commands/cds/dcl.ts
  • packages/adt-cli/src/lib/commands/cds/ddl.ts
  • packages/adt-cli/src/lib/commands/cds/index.ts
  • packages/adt-cli/src/lib/commands/changeset/add.ts
  • packages/adt-cli/src/lib/commands/changeset/begin.ts
  • packages/adt-cli/src/lib/commands/changeset/commit.ts
  • packages/adt-cli/src/lib/commands/changeset/index.ts
  • packages/adt-cli/src/lib/commands/changeset/rollback.ts
  • packages/adt-cli/src/lib/commands/changeset/state.ts
  • packages/adt-cli/src/lib/commands/check.ts
  • packages/adt-cli/src/lib/commands/checkin.ts
  • packages/adt-cli/src/lib/commands/checkout.ts
  • packages/adt-cli/src/lib/commands/context.ts
  • packages/adt-cli/src/lib/commands/cts/index.ts
  • packages/adt-cli/src/lib/commands/cts/search.ts
  • packages/adt-cli/src/lib/commands/cts/tr/create.ts
  • packages/adt-cli/src/lib/commands/cts/tr/delete.ts
  • packages/adt-cli/src/lib/commands/cts/tr/get.ts
  • packages/adt-cli/src/lib/commands/cts/tr/index.ts
  • packages/adt-cli/src/lib/commands/cts/tr/list.ts
  • packages/adt-cli/src/lib/commands/cts/tr/objects.ts
  • packages/adt-cli/src/lib/commands/cts/tr/reassign.ts
  • packages/adt-cli/src/lib/commands/cts/tr/release.ts
  • packages/adt-cli/src/lib/commands/cts/tr/set.ts
  • packages/adt-cli/src/lib/commands/cts/tr/source-manifest.test.ts
  • packages/adt-cli/src/lib/commands/cts/tr/source-manifest.ts
  • packages/adt-cli/src/lib/commands/cts/tree/config-set.ts
  • packages/adt-cli/src/lib/commands/cts/tree/config.ts
  • packages/adt-cli/src/lib/commands/cts/tree/index.ts
  • packages/adt-cli/src/lib/commands/cts/tree/list.ts
  • packages/adt-cli/src/lib/commands/datapreview/index.ts
  • packages/adt-cli/src/lib/commands/datapreview/osql.ts
  • packages/adt-cli/src/lib/commands/ddic/dataelement.ts
  • packages/adt-cli/src/lib/commands/ddic/domain.ts
  • packages/adt-cli/src/lib/commands/ddic/index.ts
  • packages/adt-cli/src/lib/commands/ddic/structure.ts
  • packages/adt-cli/src/lib/commands/ddic/table.ts
  • packages/adt-cli/src/lib/commands/diagnose/dumps.ts
  • packages/adt-cli/src/lib/commands/diagnose/index.ts
  • packages/adt-cli/src/lib/commands/diagnose/traces.ts
  • packages/adt-cli/src/lib/commands/discovery.ts
  • packages/adt-cli/src/lib/commands/fetch.ts
  • packages/adt-cli/src/lib/commands/flp/get-tile.ts
  • packages/adt-cli/src/lib/commands/flp/index.ts
  • packages/adt-cli/src/lib/commands/flp/list-catalogs.ts
  • packages/adt-cli/src/lib/commands/flp/list-groups.ts
  • packages/adt-cli/src/lib/commands/flp/list-tiles.ts
  • packages/adt-cli/src/lib/commands/function/group.ts
  • packages/adt-cli/src/lib/commands/function/index.ts
  • packages/adt-cli/src/lib/commands/function/module.ts
  • packages/adt-cli/src/lib/commands/get.ts
  • packages/adt-cli/src/lib/commands/import/object.ts
  • packages/adt-cli/src/lib/commands/import/package.ts
  • packages/adt-cli/src/lib/commands/import/transport.ts
  • packages/adt-cli/src/lib/commands/index.ts
  • packages/adt-cli/src/lib/commands/info.ts
  • packages/adt-cli/src/lib/commands/lint.ts
  • packages/adt-cli/src/lib/commands/lock.ts
  • packages/adt-cli/src/lib/commands/locks.ts
  • packages/adt-cli/src/lib/commands/ls.ts
  • packages/adt-cli/src/lib/commands/object/builder.ts
  • packages/adt-cli/src/lib/commands/object/class.ts
  • packages/adt-cli/src/lib/commands/object/include.ts
  • packages/adt-cli/src/lib/commands/object/index.ts
  • packages/adt-cli/src/lib/commands/object/interface.ts
  • packages/adt-cli/src/lib/commands/object/program.ts
  • packages/adt-cli/src/lib/commands/package/activate.ts
  • packages/adt-cli/src/lib/commands/package/create.ts
  • packages/adt-cli/src/lib/commands/package/delete.ts
  • packages/adt-cli/src/lib/commands/package/get.ts
  • packages/adt-cli/src/lib/commands/package/index.ts
  • packages/adt-cli/src/lib/commands/package/list.ts
  • packages/adt-cli/src/lib/commands/package/stat.ts
  • packages/adt-cli/src/lib/commands/proxy.ts
  • packages/adt-cli/src/lib/commands/repl/index.ts
  • packages/adt-cli/src/lib/commands/research-sessions.ts
  • packages/adt-cli/src/lib/commands/rfc/index.ts
  • packages/adt-cli/src/lib/commands/search.ts
  • packages/adt-cli/src/lib/commands/source-history.test.ts
  • packages/adt-cli/src/lib/commands/source.ts
  • packages/adt-cli/src/lib/commands/srvb/index.ts
  • packages/adt-cli/src/lib/commands/srvd/index.ts
  • packages/adt-cli/src/lib/commands/strust/command.ts
  • packages/adt-cli/src/lib/commands/strust/delete.ts
  • packages/adt-cli/src/lib/commands/strust/get.ts
  • packages/adt-cli/src/lib/commands/strust/index.ts
  • packages/adt-cli/src/lib/commands/strust/list.ts
  • packages/adt-cli/src/lib/commands/strust/put.ts
  • packages/adt-cli/src/lib/commands/strust/utils.ts
  • packages/adt-cli/src/lib/commands/test-adt.ts
  • packages/adt-cli/src/lib/commands/unlock.ts
  • packages/adt-cli/src/lib/commands/user.ts
  • packages/adt-cli/src/lib/commands/wb/callees.ts
  • packages/adt-cli/src/lib/commands/wb/callers.ts
  • packages/adt-cli/src/lib/commands/wb/definition.ts
  • packages/adt-cli/src/lib/commands/wb/index.ts
  • packages/adt-cli/src/lib/commands/wb/outline.ts
  • packages/adt-cli/src/lib/commands/wb/utils.ts
  • packages/adt-cli/src/lib/commands/wb/where-used.ts
  • packages/adt-cli/src/lib/components/TreeConfigEditor.tsx
  • packages/adt-cli/src/lib/config.ts
  • packages/adt-cli/src/lib/config/auth.ts
  • packages/adt-cli/src/lib/config/index.ts
  • packages/adt-cli/src/lib/config/interfaces.ts
  • packages/adt-cli/src/lib/config/loader.ts
  • packages/adt-cli/src/lib/config/package-mapper.ts
  • packages/adt-cli/src/lib/config/types.ts
  • packages/adt-cli/src/lib/config/validation.ts
  • packages/adt-cli/src/lib/plugin-loader.ts
  • packages/adt-cli/src/lib/plugins/errors.ts
  • packages/adt-cli/src/lib/plugins/index.ts
  • packages/adt-cli/src/lib/plugins/interfaces.ts
  • packages/adt-cli/src/lib/plugins/mock-e2e.test.ts
  • packages/adt-cli/src/lib/plugins/plugin-manager.ts
  • packages/adt-cli/src/lib/plugins/registry.ts
  • packages/adt-cli/src/lib/services/changeset/index.ts
  • packages/adt-cli/src/lib/services/changeset/service.ts
  • packages/adt-cli/src/lib/services/checkin/apply.ts
  • packages/adt-cli/src/lib/services/checkin/diff.ts
  • packages/adt-cli/src/lib/services/checkin/filetree.ts
  • packages/adt-cli/src/lib/services/checkin/index.ts
  • packages/adt-cli/src/lib/services/checkin/plan.ts
  • packages/adt-cli/src/lib/services/checkin/service.ts
  • packages/adt-cli/src/lib/services/connection/index.ts
  • packages/adt-cli/src/lib/services/connection/service.test.ts
  • packages/adt-cli/src/lib/services/connection/service.ts
  • packages/adt-cli/src/lib/services/import/service.ts
  • packages/adt-cli/src/lib/services/source-history/index.ts
  • packages/adt-cli/src/lib/services/source-history/service.test.ts
  • packages/adt-cli/src/lib/services/source-history/service.ts
  • packages/adt-cli/src/lib/shared/adt-client.ts
  • packages/adt-cli/src/lib/ui/components/box.ts
  • packages/adt-cli/src/lib/ui/components/field.ts
  • packages/adt-cli/src/lib/ui/components/index.ts
  • packages/adt-cli/src/lib/ui/components/link.ts
  • packages/adt-cli/src/lib/ui/components/section.ts
  • packages/adt-cli/src/lib/ui/components/text.ts
  • packages/adt-cli/src/lib/ui/index.ts
  • packages/adt-cli/src/lib/ui/pages/adt-core.ts
  • packages/adt-cli/src/lib/ui/pages/class.ts
  • packages/adt-cli/src/lib/ui/pages/discovery.ts
  • packages/adt-cli/src/lib/ui/pages/generic.ts
  • packages/adt-cli/src/lib/ui/pages/index.ts
  • packages/adt-cli/src/lib/ui/pages/interface.ts
  • packages/adt-cli/src/lib/ui/pages/package.ts
  • packages/adt-cli/src/lib/ui/pages/transport.ts
  • packages/adt-cli/src/lib/ui/render.ts
  • packages/adt-cli/src/lib/ui/router.ts
  • packages/adt-cli/src/lib/ui/routes.ts
  • packages/adt-cli/src/lib/ui/types.ts
  • packages/adt-cli/src/lib/utils/adt-client-v2.test.ts
  • packages/adt-cli/src/lib/utils/adt-client-v2.ts
  • packages/adt-cli/src/lib/utils/auth.ts
  • packages/adt-cli/src/lib/utils/command-helpers.ts
  • packages/adt-cli/src/lib/utils/destinations.ts
  • packages/adt-cli/src/lib/utils/format-loader.ts
  • packages/adt-cli/src/lib/utils/icon-registry.ts
  • packages/adt-cli/src/lib/utils/lock-helpers.ts
  • packages/adt-cli/src/lib/utils/lock-registry.ts
  • packages/adt-cli/src/lib/utils/logger-config.ts
  • packages/adt-cli/src/lib/utils/object-uri.test.ts
  • packages/adt-cli/src/lib/utils/object-uri.ts
  • packages/adt-cli/src/lib/utils/progress-reporter.ts
  • packages/adt-cli/src/test/integration/lock-test.ts
  • packages/adt-cli/tests/e2e/harness.ts
  • packages/adt-cli/tests/e2e/index.ts
  • packages/adt-cli/tests/e2e/parity.arc1.test.ts
  • packages/adt-cli/tests/e2e/parity.badi.test.ts
  • packages/adt-cli/tests/e2e/parity.bdef.test.ts
  • packages/adt-cli/tests/e2e/parity.changeset.test.ts
  • packages/adt-cli/tests/e2e/parity.checkin.test.ts
  • packages/adt-cli/tests/e2e/parity.coverage.test.ts
  • packages/adt-cli/tests/e2e/parity.cts.test.ts
  • packages/adt-cli/tests/e2e/parity.ddic-cds.test.ts
  • packages/adt-cli/tests/e2e/parity.e13-rfc.test.ts
  • packages/adt-cli/tests/e2e/parity.flp.test.ts
  • packages/adt-cli/tests/e2e/parity.function.test.ts
  • packages/adt-cli/tests/e2e/parity.gcts.test.ts
  • packages/adt-cli/tests/e2e/parity.include.test.ts
  • packages/adt-cli/tests/e2e/parity.misc.test.ts
  • packages/adt-cli/tests/e2e/parity.objects.test.ts
  • packages/adt-cli/tests/e2e/parity.source-history.test.ts
  • packages/adt-cli/tests/e2e/parity.srvb.test.ts
  • packages/adt-cli/tests/e2e/parity.srvd.test.ts
  • packages/adt-cli/tests/e2e/parity.strust.test.ts
  • packages/adt-cli/tests/e2e/parity.wb.test.ts
  • packages/adt-cli/tests/e2e/smoke.test.ts
  • packages/adt-cli/tests/real-e2e/README.md
  • packages/adt-cli/tests/real-e2e/backfill-synthetic.real.test.ts
  • packages/adt-cli/tests/real-e2e/helpers.ts
  • packages/adt-cli/tests/real-e2e/parity.e03-badi.real.test.ts
  • packages/adt-cli/tests/real-e2e/parity.e13-rfc.real.test.ts
  • packages/adt-cli/tests/real-e2e/parity.e14-flp.real.test.ts
  • packages/adt-cli/tests/real-e2e/parity.e15-wb.real.test.ts
  • packages/adt-cli/tests/real-e2e/smoke.real.test.ts
  • packages/adt-cli/tests/services/changeset/service.test.ts
  • packages/adt-cli/tests/services/checkin/apply.test.ts
  • packages/adt-cli/tests/services/checkin/plan.test.ts
  • packages/adt-cli/tests/services/import/transport.test.ts
  • packages/adt-cli/tsconfig.json
  • packages/adt-cli/tsconfig.lib.json
  • packages/adt-cli/tsdown.config.ts
  • packages/adt-cli/vitest.config.ts
  • packages/adt-cli/vitest.real.config.ts
  • packages/adt-client/.gitignore
  • packages/adt-client/AGENTS.md
  • packages/adt-client/CHANGELOG.md
  • packages/adt-client/README.md
  • packages/adt-client/docs/SERVICE-ARCHITECTURE.md
  • packages/adt-client/examples/basic-usage.ts
  • packages/adt-client/examples/comparison.md
  • packages/adt-client/fixtures/sap/bc/adt/core/discovery.xml
  • packages/adt-client/fixtures/sap/bc/adt/oo/classes/zcl_age_sample_class.xml
  • packages/adt-client/package.json
  • packages/adt-client/src/adapter.ts
  • packages/adt-client/src/client.ts
  • packages/adt-client/src/errors.ts
  • packages/adt-client/src/index.ts
  • packages/adt-client/src/plugins/file-logging.ts
  • packages/adt-client/src/plugins/index.ts
  • packages/adt-client/src/plugins/logging.ts
  • packages/adt-client/src/plugins/types.ts
  • packages/adt-client/src/services/index.ts
  • packages/adt-client/src/services/source-history.ts
  • packages/adt-client/src/services/transports.ts
  • packages/adt-client/src/services/users.ts
  • packages/adt-client/src/types.ts
  • packages/adt-client/src/utils/session.ts
  • packages/adt-client/tests/adapter-bounded-read.test.ts
  • packages/adt-client/tests/discovery-type-inference.test.ts
  • packages/adt-client/tests/source-history.test.ts
  • packages/adt-client/tests/systeminformation-type-inference.test.ts
  • packages/adt-client/tests/type-inference.test.ts
  • packages/adt-client/tsconfig.json
  • packages/adt-client/tsdown.config.ts
  • packages/adt-client/vitest.config.ts
  • packages/adt-codegen/.gitignore
  • packages/adt-codegen/CHANGELOG.md
  • packages/adt-codegen/README.md
  • packages/adt-codegen/package.json
  • packages/adt-codegen/src/cli.ts
  • packages/adt-codegen/src/commands/codegen.ts
  • packages/adt-codegen/src/commands/contracts.ts
  • packages/adt-codegen/src/config.ts
  • packages/adt-codegen/src/filters.ts
  • packages/adt-codegen/src/framework.ts
  • packages/adt-codegen/src/index.ts
  • packages/adt-codegen/src/logger.ts
  • packages/adt-codegen/src/plugin.ts
  • packages/adt-codegen/src/plugins/bootstrap-schemas.ts
  • packages/adt-codegen/src/plugins/discovery-parser.ts
  • packages/adt-codegen/src/plugins/endpoint-config.ts
  • packages/adt-codegen/src/plugins/extract-collections.ts
  • packages/adt-codegen/src/plugins/generate-contracts.ts
  • packages/adt-codegen/src/plugins/generate-types.ts
  • packages/adt-codegen/src/plugins/index.ts
  • packages/adt-codegen/src/plugins/workspace-splitter.ts
  • packages/adt-codegen/src/types.ts
  • packages/adt-codegen/tsconfig.json
  • packages/adt-codegen/tsdown.config.ts
  • packages/adt-config/CHANGELOG.md
  • packages/adt-config/README.md
  • packages/adt-config/package.json
  • packages/adt-config/src/config-loader.ts
  • packages/adt-config/src/index.ts
  • packages/adt-config/src/plugin.ts
  • packages/adt-config/src/types.ts
  • packages/adt-config/tests/config.test.ts
  • packages/adt-config/tsconfig.json
  • packages/adt-config/tsconfig.lib.json
  • packages/adt-config/tsconfig.spec.json
  • packages/adt-config/tsdown.config.ts
  • packages/adt-config/vitest.config.ts
  • packages/adt-contracts/.nxignore
  • packages/adt-contracts/AGENTS.md
  • packages/adt-contracts/CHANGELOG.md
  • packages/adt-contracts/README.md
  • packages/adt-contracts/adt.config.ts
  • packages/adt-contracts/config/contracts/content-type-mapping.ts
  • packages/adt-contracts/config/contracts/enabled-endpoints.ts
  • packages/adt-contracts/docs/adt-endpoints.md
  • packages/adt-contracts/package.json
  • packages/adt-contracts/project.json
  • packages/adt-contracts/scripts/generate-schemas.ts
  • packages/adt-contracts/src/adt/activation/index.ts
  • packages/adt-contracts/src/adt/atc/index.ts
  • packages/adt-contracts/src/adt/aunit/coverage-link.ts
  • packages/adt-contracts/src/adt/aunit/index.ts
  • packages/adt-contracts/src/adt/bo/behaviordefinitions.ts
  • packages/adt-contracts/src/adt/bo/index.ts
  • packages/adt-contracts/src/adt/businessservices/bindings.ts
  • packages/adt-contracts/src/adt/businessservices/index.ts
  • packages/adt-contracts/src/adt/checkruns/index.ts
  • packages/adt-contracts/src/adt/codeassistance/completion.ts
  • packages/adt-contracts/src/adt/codeassistance/index.ts
  • packages/adt-contracts/src/adt/codeassistance/schema.ts
  • packages/adt-contracts/src/adt/core/http/index.ts
  • packages/adt-contracts/src/adt/core/http/sessions.ts
  • packages/adt-contracts/src/adt/core/http/systeminformation.ts
  • packages/adt-contracts/src/adt/core/index.ts
  • packages/adt-contracts/src/adt/cts/index.ts
  • packages/adt-contracts/src/adt/cts/transportchecks.ts
  • packages/adt-contracts/src/adt/cts/transportrequests/index.ts
  • packages/adt-contracts/src/adt/cts/transportrequests/reference.ts
  • packages/adt-contracts/src/adt/cts/transportrequests/searchconfiguration/configurations.ts
  • packages/adt-contracts/src/adt/cts/transportrequests/searchconfiguration/index.ts
  • packages/adt-contracts/src/adt/cts/transportrequests/searchconfiguration/metadata.ts
  • packages/adt-contracts/src/adt/cts/transportrequests/useraction.ts
  • packages/adt-contracts/src/adt/cts/transportrequests/valuehelp/attribute.ts
  • packages/adt-contracts/src/adt/cts/transportrequests/valuehelp/ctsproject.ts
  • packages/adt-contracts/src/adt/cts/transportrequests/valuehelp/index.ts
  • packages/adt-contracts/src/adt/cts/transportrequests/valuehelp/object.ts
  • packages/adt-contracts/src/adt/cts/transportrequests/valuehelp/target.ts
  • packages/adt-contracts/src/adt/cts/transports.ts
  • packages/adt-contracts/src/adt/datapreview/freestyle.ts
  • packages/adt-contracts/src/adt/datapreview/index.ts
  • packages/adt-contracts/src/adt/datapreview/schema.ts
  • packages/adt-contracts/src/adt/ddic/dataelements.ts
  • packages/adt-contracts/src/adt/ddic/dcl/index.ts
  • packages/adt-contracts/src/adt/ddic/dcl/sources.ts
  • packages/adt-contracts/src/adt/ddic/ddl/index.ts
  • packages/adt-contracts/src/adt/ddic/ddl/sources.ts
  • packages/adt-contracts/src/adt/ddic/domains.ts
  • packages/adt-contracts/src/adt/ddic/index.ts
  • packages/adt-contracts/src/adt/ddic/srvd/index.ts
  • packages/adt-contracts/src/adt/ddic/srvd/sources.ts
  • packages/adt-contracts/src/adt/ddic/structures.ts
  • packages/adt-contracts/src/adt/ddic/tables.ts
  • packages/adt-contracts/src/adt/ddic/tablesettings.ts
  • packages/adt-contracts/src/adt/ddic/tabletypes.ts
  • packages/adt-contracts/src/adt/discovery/index.ts
  • packages/adt-contracts/src/adt/enhancements/enhoxhh.ts
  • packages/adt-contracts/src/adt/enhancements/index.ts
  • packages/adt-contracts/src/adt/functions/fmodules.ts
  • packages/adt-contracts/src/adt/functions/groups.ts
  • packages/adt-contracts/src/adt/functions/index.ts
  • packages/adt-contracts/src/adt/gcts/branches.ts
  • packages/adt-contracts/src/adt/gcts/commits.ts
  • packages/adt-contracts/src/adt/gcts/config.ts
  • packages/adt-contracts/src/adt/gcts/index.ts
  • packages/adt-contracts/src/adt/gcts/repository.ts
  • packages/adt-contracts/src/adt/gcts/schema.ts
  • packages/adt-contracts/src/adt/index.ts
  • packages/adt-contracts/src/adt/oo/classes.ts
  • packages/adt-contracts/src/adt/oo/classrun.ts
  • packages/adt-contracts/src/adt/oo/index.ts
  • packages/adt-contracts/src/adt/oo/interfaces.ts
  • packages/adt-contracts/src/adt/packages/index.ts
  • packages/adt-contracts/src/adt/programs/includes.ts
  • packages/adt-contracts/src/adt/programs/index.ts
  • packages/adt-contracts/src/adt/programs/programs.ts
  • packages/adt-contracts/src/adt/repository/index.ts
  • packages/adt-contracts/src/adt/repository/informationsystem/index.ts
  • packages/adt-contracts/src/adt/repository/informationsystem/objectproperties.ts
  • packages/adt-contracts/src/adt/repository/informationsystem/search.ts
  • packages/adt-contracts/src/adt/repository/informationsystem/usagereferences.ts
  • packages/adt-contracts/src/adt/repository/objectstructure.ts
  • packages/adt-contracts/src/adt/repository/sourceversions.ts
  • packages/adt-contracts/src/adt/runtime/dumps.ts
  • packages/adt-contracts/src/adt/runtime/index.ts
  • packages/adt-contracts/src/adt/runtime/schema.ts
  • packages/adt-contracts/src/adt/runtime/traces/coverage/index.ts
  • packages/adt-contracts/src/adt/runtime/traces/coverage/measurements.ts
  • packages/adt-contracts/src/adt/runtime/traces/coverage/statements.ts
  • packages/adt-contracts/src/adt/runtime/traces/index.ts
  • packages/adt-contracts/src/adt/runtime/traces/profile.ts
  • packages/adt-contracts/src/adt/system/index.ts
  • packages/adt-contracts/src/adt/system/security/pses.ts
  • packages/adt-contracts/src/adt/system/users.ts
  • packages/adt-contracts/src/adt/uifsa/catalogs.ts
  • packages/adt-contracts/src/adt/uifsa/groups.ts
  • packages/adt-contracts/src/adt/uifsa/index.ts
  • packages/adt-contracts/src/adt/uifsa/schema.ts
  • packages/adt-contracts/src/adt/uifsa/tiles.ts
  • packages/adt-contracts/src/base.ts
  • packages/adt-contracts/src/helpers/crud.ts
  • packages/adt-contracts/src/helpers/speci-schema.ts
  • packages/adt-contracts/src/helpers/text-schema.ts
  • packages/adt-contracts/src/index.ts
  • packages/adt-contracts/src/schemas.ts
  • packages/adt-contracts/tests/contracts/atc-typed.test.ts
  • packages/adt-contracts/tests/contracts/atc.test.ts
  • packages/adt-contracts/tests/contracts/aunit.test.ts
  • packages/adt-contracts/tests/contracts/badi.test.ts
  • packages/adt-contracts/tests/contracts/base/index.ts
  • packages/adt-contracts/tests/contracts/base/mock-adapter.ts
  • packages/adt-contracts/tests/contracts/base/typed-scenario.ts
  • packages/adt-contracts/tests/contracts/bdef.test.ts
  • packages/adt-contracts/tests/contracts/core.test.ts
  • packages/adt-contracts/tests/contracts/coverage.test.ts
  • packages/adt-contracts/tests/contracts/cts-useraction.test.ts
  • packages/adt-contracts/tests/contracts/cts.test.ts
  • packages/adt-contracts/tests/contracts/datapreview.test.ts
  • packages/adt-contracts/tests/contracts/ddic-sources.test.ts
  • packages/adt-contracts/tests/contracts/discovery.test.ts
  • packages/adt-contracts/tests/contracts/flp.test.ts
  • packages/adt-contracts/tests/contracts/gcts.test.ts
  • packages/adt-contracts/tests/contracts/includes.test.ts
  • packages/adt-contracts/tests/contracts/objectproperties.test.ts
  • packages/adt-contracts/tests/contracts/oo.test.ts
  • packages/adt-contracts/tests/contracts/packages.test.ts
  • packages/adt-contracts/tests/contracts/repository.test.ts
  • packages/adt-contracts/tests/contracts/sourceversions.test.ts
  • packages/adt-contracts/tests/contracts/srvb.test.ts
  • packages/adt-contracts/tests/contracts/srvd.test.ts
  • packages/adt-contracts/tests/contracts/strust.test.ts
  • packages/adt-contracts/tests/contracts/system.test.ts
  • packages/adt-contracts/tests/helpers/mock-adapter.ts
  • packages/adt-contracts/tests/typed-client.test.ts
  • packages/adt-contracts/tsconfig.json
  • packages/adt-contracts/tsconfig.test.json
  • packages/adt-contracts/tsdown.config.ts
  • packages/adt-contracts/vitest.config.ts
  • packages/adt-diff/CHANGELOG.md
  • packages/adt-diff/README.md
  • packages/adt-diff/package.json
  • packages/adt-diff/project.json
  • packages/adt-diff/src/commands/diff.ts
  • packages/adt-diff/src/index.ts
  • packages/adt-diff/src/lib/abapgit-to-cds.ts
  • packages/adt-diff/tests/abapgit-to-cds.test.ts
  • packages/adt-diff/tsconfig.json
  • packages/adt-diff/tsdown.config.ts
  • packages/adt-diff/vitest.config.ts
  • packages/adt-export/CHANGELOG.md
  • packages/adt-export/README.md
  • packages/adt-export/package.json
  • packages/adt-export/project.json
  • packages/adt-export/src/commands/activate.ts
  • packages/adt-export/src/commands/export.ts
  • packages/adt-export/src/commands/roundtrip.ts
  • packages/adt-export/src/index.ts
  • packages/adt-export/src/types.ts
  • packages/adt-export/src/utils/filetree.ts
  • packages/adt-export/src/utils/format-plugin.ts
  • packages/adt-export/tsconfig.json
  • packages/adt-export/tsdown.config.ts
  • packages/adt-fixtures/AGENTS.md
  • packages/adt-fixtures/CHANGELOG.md
  • packages/adt-fixtures/README.md
  • packages/adt-fixtures/TODO.md
  • packages/adt-fixtures/package.json
  • packages/adt-fixtures/src/fixtures.ts
  • packages/adt-fixtures/src/fixtures/atc/customizing.xml
  • packages/adt-fixtures/src/fixtures/atc/runs-response.xml
  • packages/adt-fixtures/src/fixtures/atc/worklist.xml
  • packages/adt-fixtures/src/fixtures/aunit/coverage-measurements.xml
  • packages/adt-fixtures/src/fixtures/aunit/coverage-results.xml
  • packages/adt-fixtures/src/fixtures/aunit/coverage-statements.xml
  • packages/adt-fixtures/src/fixtures/aunit/run-request.xml
  • packages/adt-fixtures/src/fixtures/aunit/run-result.xml
  • packages/adt-fixtures/src/fixtures/bo/bdef/single.xml
  • packages/adt-fixtures/src/fixtures/bo/bdef/source.abdl
  • packages/adt-fixtures/src/fixtures/businessservices/binding.xml
  • packages/adt-fixtures/src/fixtures/core/http/session.xml
  • packages/adt-fixtures/src/fixtures/core/http/systeminformation.json
  • packages/adt-fixtures/src/fixtures/datapreview/freestyle.json
  • packages/adt-fixtures/src/fixtures/ddic/dataelements/single.xml
  • packages/adt-fixtures/src/fixtures/ddic/dcl/source.xml
  • packages/adt-fixtures/src/fixtures/ddic/ddl/source.xml
  • packages/adt-fixtures/src/fixtures/ddic/domains/single.xml
  • packages/adt-fixtures/src/fixtures/ddic/srvd/single.xml
  • packages/adt-fixtures/src/fixtures/ddic/srvd/source.asrvd
  • packages/adt-fixtures/src/fixtures/ddic/structures/single.xml
  • packages/adt-fixtures/src/fixtures/ddic/tabl/structure.tabl.xml
  • packages/adt-fixtures/src/fixtures/ddic/tabl/structure1.tabl.xml
  • packages/adt-fixtures/src/fixtures/ddic/tabl/transparent.tabl.xml
  • packages/adt-fixtures/src/fixtures/ddic/tabl/value-table.tabl.xml
  • packages/adt-fixtures/src/fixtures/enhancements/enhoxhh/single.xml
  • packages/adt-fixtures/src/fixtures/enhancements/enhoxhh/source.abap
  • packages/adt-fixtures/src/fixtures/flp/catalog-list.json
  • packages/adt-fixtures/src/fixtures/flp/catalog-single.json
  • packages/adt-fixtures/src/fixtures/flp/group-list.json
  • packages/adt-fixtures/src/fixtures/flp/real-catalog-list.json
  • packages/adt-fixtures/src/fixtures/flp/real-group-list.json
  • packages/adt-fixtures/src/fixtures/flp/real-tile-list.json
  • packages/adt-fixtures/src/fixtures/flp/real-tile-single.json
  • packages/adt-fixtures/src/fixtures/flp/tile-list.json
  • packages/adt-fixtures/src/fixtures/flp/tile-single.json
  • packages/adt-fixtures/src/fixtures/functions/functionGroup.xml
  • packages/adt-fixtures/src/fixtures/gcts/branches.json
  • packages/adt-fixtures/src/fixtures/gcts/commit-response.json
  • packages/adt-fixtures/src/fixtures/gcts/config.json
  • packages/adt-fixtures/src/fixtures/gcts/create-branch.json
  • packages/adt-fixtures/src/fixtures/gcts/create-response.json
  • packages/adt-fixtures/src/fixtures/gcts/log.json
  • packages/adt-fixtures/src/fixtures/gcts/objects.json
  • packages/adt-fixtures/src/fixtures/gcts/pull.json
  • packages/adt-fixtures/src/fixtures/gcts/repositories.json
  • packages/adt-fixtures/src/fixtures/gcts/repository.json
  • packages/adt-fixtures/src/fixtures/mcp/abapgit/export.json
  • packages/adt-fixtures/src/fixtures/mcp/abapgit/objects.json
  • packages/adt-fixtures/src/fixtures/mcp/activation/result.xml
  • packages/adt-fixtures/src/fixtures/mcp/atc/run.json
  • packages/adt-fixtures/src/fixtures/mcp/atc/worklist.json
  • packages/adt-fixtures/src/fixtures/mcp/aunit/result.json
  • packages/adt-fixtures/src/fixtures/mcp/callees/result.json
  • packages/adt-fixtures/src/fixtures/mcp/callers/result.json
  • packages/adt-fixtures/src/fixtures/mcp/checkruns/result.xml
  • packages/adt-fixtures/src/fixtures/mcp/datapreview/contents.json
  • packages/adt-fixtures/src/fixtures/mcp/discovery/service.xml
  • packages/adt-fixtures/src/fixtures/mcp/fugr/group.json
  • packages/adt-fixtures/src/fixtures/mcp/fugr/module.json
  • packages/adt-fixtures/src/fixtures/mcp/grep/results.json
  • packages/adt-fixtures/src/fixtures/mcp/inactive/objects.json
  • packages/adt-fixtures/src/fixtures/mcp/lock/response.xml
  • packages/adt-fixtures/src/fixtures/mcp/navigation/target.json
  • packages/adt-fixtures/src/fixtures/mcp/objectstructure/class.json
  • packages/adt-fixtures/src/fixtures/mcp/prettyprinter/pretty.abap
  • packages/adt-fixtures/src/fixtures/mcp/search/results.json
  • packages/adt-fixtures/src/fixtures/mcp/session/session.json
  • packages/adt-fixtures/src/fixtures/mcp/softwarecomponents/list.json
  • packages/adt-fixtures/src/fixtures/mcp/source/class.abap
  • packages/adt-fixtures/src/fixtures/mcp/source/testclasses.abap
  • packages/adt-fixtures/src/fixtures/mcp/systeminfo/systeminfo.json
  • packages/adt-fixtures/src/fixtures/mcp/tables/definition.json
  • packages/adt-fixtures/src/fixtures/mcp/transport/create.json
  • packages/adt-fixtures/src/fixtures/mcp/transport/list.json
  • packages/adt-fixtures/src/fixtures/mcp/transport/release.xml
  • packages/adt-fixtures/src/fixtures/mcp/transport/single.json
  • packages/adt-fixtures/src/fixtures/mcp/typehierarchy/result.json
  • packages/adt-fixtures/src/fixtures/mcp/usageReferences/result.xml
  • packages/adt-fixtures/src/fixtures/mcp/usageReferences/scope.xml
  • packages/adt-fixtures/src/fixtures/mcp/usages/result.json
  • packages/adt-fixtures/src/fixtures/oo/class.xml
  • packages/adt-fixtures/src/fixtures/oo/classrun-response.json
  • packages/adt-fixtures/src/fixtures/oo/interface.xml
  • packages/adt-fixtures/src/fixtures/packages/tmp.xml
  • packages/adt-fixtures/src/fixtures/programs/include.xml
  • packages/adt-fixtures/src/fixtures/programs/program.xml
  • packages/adt-fixtures/src/fixtures/registry.ts
  • packages/adt-fixtures/src/fixtures/repository/search/quickSearch.xml
  • packages/adt-fixtures/src/fixtures/repository/sourceversions/program.xml
  • packages/adt-fixtures/src/fixtures/system/security/cert-list.xml
  • packages/adt-fixtures/src/fixtures/system/security/pse-list.xml
  • packages/adt-fixtures/src/fixtures/system/users/search.xml
  • packages/adt-fixtures/src/fixtures/system/users/single.xml
  • packages/adt-fixtures/src/fixtures/transport/create-response.xml
  • packages/adt-fixtures/src/fixtures/transport/create.xml
  • packages/adt-fixtures/src/fixtures/transport/find.xml
  • packages/adt-fixtures/src/fixtures/transport/searchconfiguration-metadata.xml
  • packages/adt-fixtures/src/fixtures/transport/single-task.xml
  • packages/adt-fixtures/src/fixtures/transport/single.xml
  • packages/adt-fixtures/src/fixtures/transport/useraction-changeowner.xml
  • packages/adt-fixtures/src/fixtures/transport/useraction-newrequest.xml
  • packages/adt-fixtures/src/fixtures/transport/useraction-release.xml
  • packages/adt-fixtures/src/fixtures/wb/real-object-structure-class.xml
  • packages/adt-fixtures/src/fixtures/wb/real-usage-references-result.xml
  • packages/adt-fixtures/src/fixtures/wb/real-usage-references-scope.xml
  • packages/adt-fixtures/src/index.ts
  • packages/adt-fixtures/src/loader.ts
  • packages/adt-fixtures/src/mock-server/csrf.ts
  • packages/adt-fixtures/src/mock-server/lock-registry.ts
  • packages/adt-fixtures/src/mock-server/routes.ts
  • packages/adt-fixtures/src/mock-server/server.ts
  • packages/adt-fixtures/src/repository/search/quickSearch.ts
  • packages/adt-fixtures/tsconfig.json
  • packages/adt-fixtures/tsdown.config.ts
  • packages/adt-lint/CHANGELOG.md
  • packages/adt-lint/README.md
  • packages/adt-lint/package.json
  • packages/adt-lint/src/index.ts
  • packages/adt-lint/src/lib/context.ts
  • packages/adt-lint/src/lib/lint.ts
  • packages/adt-lint/src/lib/preset.ts
  • packages/adt-lint/src/lib/types.ts
  • packages/adt-lint/tests/lint.test.ts
  • packages/adt-lint/tsconfig.json
  • packages/adt-lint/tsconfig.lib.json
  • packages/adt-lint/tsdown.config.ts
  • packages/adt-lint/vitest.config.ts
  • packages/adt-locks/CHANGELOG.md
  • packages/adt-locks/README.md
  • packages/adt-locks/package.json
  • packages/adt-locks/project.json
  • packages/adt-locks/src/batch/batch-lock-session.ts
  • packages/adt-locks/src/batch/index.ts
  • packages/adt-locks/src/index.ts
  • packages/adt-locks/src/service.ts
  • packages/adt-locks/src/store.ts
  • packages/adt-locks/src/types.ts
  • packages/adt-locks/tests/batch-lock-session.test.ts
  • packages/adt-locks/tests/parse-lock-response.test.ts
  • packages/adt-locks/tests/service.test.ts
  • packages/adt-locks/tests/store.test.ts
  • packages/adt-locks/tsconfig.json
  • packages/adt-locks/tsconfig.lib.json
  • packages/adt-locks/tsdown.config.ts
  • packages/adt-locks/vitest.config.ts
  • packages/adt-mcp/AGENTS.md
  • packages/adt-mcp/CHANGELOG.md
  • packages/adt-mcp/README.md
  • packages/adt-mcp/package.json
  • packages/adt-mcp/project.json
  • packages/adt-mcp/src/bin/adt-mcp-http.ts
  • packages/adt-mcp/src/bin/adt-mcp.ts
  • packages/adt-mcp/src/index.ts
  • packages/adt-mcp/src/lib/http/adt-config-loader.ts
  • packages/adt-mcp/src/lib/http/auth.ts
  • packages/adt-mcp/src/lib/http/cors.ts
  • packages/adt-mcp/src/lib/http/invocation.ts
  • packages/adt-mcp/src/lib/http/multi-system.ts
  • packages/adt-mcp/src/lib/http/oauth.ts
  • packages/adt-mcp/src/lib/http/server.ts
  • packages/adt-mcp/src/lib/mock/index.ts
  • packages/adt-mcp/src/lib/mock/server.ts
  • packages/adt-mcp/src/lib/server.ts
  • packages/adt-mcp/src/lib/session/changeset.ts
  • packages/adt-mcp/src/lib/session/destination-registry.ts
  • packages/adt-mcp/src/lib/session/registry.ts
  • packages/adt-mcp/src/lib/session/types.ts
  • packages/adt-mcp/src/lib/source-capabilities.ts
  • packages/adt-mcp/src/lib/tools/activate-object.ts
  • packages/adt-mcp/src/lib/tools/activate-package.ts
  • packages/adt-mcp/src/lib/tools/atc-run.ts
  • packages/adt-mcp/src/lib/tools/call-hierarchy.ts
  • packages/adt-mcp/src/lib/tools/call-rfc.ts
  • packages/adt-mcp/src/lib/tools/changeset-add.ts
  • packages/adt-mcp/src/lib/tools/changeset-begin.ts
  • packages/adt-mcp/src/lib/tools/changeset-commit.ts
  • packages/adt-mcp/src/lib/tools/changeset-helpers.ts
  • packages/adt-mcp/src/lib/tools/changeset-rollback.ts
  • packages/adt-mcp/src/lib/tools/check-syntax.ts
  • packages/adt-mcp/src/lib/tools/checkin.ts
  • packages/adt-mcp/src/lib/tools/clone-object.ts
  • packages/adt-mcp/src/lib/tools/create-badi.ts
  • packages/adt-mcp/src/lib/tools/create-bdef.ts
  • packages/adt-mcp/src/lib/tools/create-function-group.ts
  • packages/adt-mcp/src/lib/tools/create-function-module.ts
  • packages/adt-mcp/src/lib/tools/create-object.ts
  • packages/adt-mcp/src/lib/tools/create-package.ts
  • packages/adt-mcp/src/lib/tools/create-srvb.ts
  • packages/adt-mcp/src/lib/tools/create-srvd.ts
  • packages/adt-mcp/src/lib/tools/cts-create-transport.ts
  • packages/adt-mcp/src/lib/tools/cts-delete-transport.ts
  • packages/adt-mcp/src/lib/tools/cts-get-transport.ts
  • packages/adt-mcp/src/lib/tools/cts-list-transports.ts
  • packages/adt-mcp/src/lib/tools/cts-reassign-transport.ts
  • packages/adt-mcp/src/lib/tools/cts-release-transport.ts
  • packages/adt-mcp/src/lib/tools/cts-search-transports.ts
  • packages/adt-mcp/src/lib/tools/cts-transport-objects.ts
  • packages/adt-mcp/src/lib/tools/cts-transport-source-manifest.ts
  • packages/adt-mcp/src/lib/tools/cts-update-transport.ts
  • packages/adt-mcp/src/lib/tools/delete-badi.ts
  • packages/adt-mcp/src/lib/tools/delete-bdef.ts
  • packages/adt-mcp/src/lib/tools/delete-cert.ts
  • packages/adt-mcp/src/lib/tools/delete-function-module.ts
  • packages/adt-mcp/src/lib/tools/delete-object.ts
  • packages/adt-mcp/src/lib/tools/delete-srvb.ts
  • packages/adt-mcp/src/lib/tools/delete-srvd.ts
  • packages/adt-mcp/src/lib/tools/destination-mode.ts
  • packages/adt-mcp/src/lib/tools/discovery.ts
  • packages/adt-mcp/src/lib/tools/find-definition.ts
  • packages/adt-mcp/src/lib/tools/find-references.ts
  • packages/adt-mcp/src/lib/tools/function-tools.ts
  • packages/adt-mcp/src/lib/tools/gcts-tools.ts
  • packages/adt-mcp/src/lib/tools/get-badi.ts
  • packages/adt-mcp/src/lib/tools/get-bdef.ts
  • packages/adt-mcp/src/lib/tools/get-cds-dcl.ts
  • packages/adt-mcp/src/lib/tools/get-cds-ddl.ts
  • packages/adt-mcp/src/lib/tools/get-completions.ts
  • packages/adt-mcp/src/lib/tools/get-context.ts
  • packages/adt-mcp/src/lib/tools/get-data-element.ts
  • packages/adt-mcp/src/lib/tools/get-domain.ts
  • packages/adt-mcp/src/lib/tools/get-flp-tile.ts
  • packages/adt-mcp/src/lib/tools/get-frozen-source.ts
  • packages/adt-mcp/src/lib/tools/get-include.ts
  • packages/adt-mcp/src/lib/tools/get-installed-components.ts
  • packages/adt-mcp/src/lib/tools/get-object-structure.ts
  • packages/adt-mcp/src/lib/tools/get-object.ts
  • packages/adt-mcp/src/lib/tools/get-package.ts
  • packages/adt-mcp/src/lib/tools/get-short-dumps.ts
  • packages/adt-mcp/src/lib/tools/get-source-version.ts
  • packages/adt-mcp/src/lib/tools/get-source.ts
  • packages/adt-mcp/src/lib/tools/get-srvb.ts
  • packages/adt-mcp/src/lib/tools/get-srvd.ts
  • packages/adt-mcp/src/lib/tools/get-structure.ts
  • packages/adt-mcp/src/lib/tools/get-table-contents.ts
  • packages/adt-mcp/src/lib/tools/get-table.ts
  • packages/adt-mcp/src/lib/tools/get-test-classes.ts
  • packages/adt-mcp/src/lib/tools/get-traces.ts
  • packages/adt-mcp/src/lib/tools/get-type-hierarchy.ts
  • packages/adt-mcp/src/lib/tools/git-tools.ts
  • packages/adt-mcp/src/lib/tools/grep-objects.ts
  • packages/adt-mcp/src/lib/tools/grep-packages.ts
  • packages/adt-mcp/src/lib/tools/import-object.ts
  • packages/adt-mcp/src/lib/tools/import-package.ts
  • packages/adt-mcp/src/lib/tools/import-transport.ts
  • packages/adt-mcp/src/lib/tools/index.ts
  • packages/adt-mcp/src/lib/tools/lint-abap.ts
  • packages/adt-mcp/src/lib/tools/list-certs.ts
  • packages/adt-mcp/src/lib/tools/list-flp-catalogs.ts
  • packages/adt-mcp/src/lib/tools/list-flp-groups.ts
  • packages/adt-mcp/src/lib/tools/list-flp-tiles.ts
  • packages/adt-mcp/src/lib/tools/list-package-objects.ts
  • packages/adt-mcp/src/lib/tools/list-pses.ts
  • packages/adt-mcp/src/lib/tools/list-source-versions.ts
  • packages/adt-mcp/src/lib/tools/lock-object.ts
  • packages/adt-mcp/src/lib/tools/lookup-user.ts
  • packages/adt-mcp/src/lib/tools/object-creation.ts
  • packages/adt-mcp/src/lib/tools/pretty-print.ts
  • packages/adt-mcp/src/lib/tools/publish-service-binding.ts
  • packages/adt-mcp/src/lib/tools/run-abap.ts
  • packages/adt-mcp/src/lib/tools/run-query.ts
  • packages/adt-mcp/src/lib/tools/run-unit-tests.ts
  • packages/adt-mcp/src/lib/tools/sap-connect.ts
  • packages/adt-mcp/src/lib/tools/sap-disconnect.ts
  • packages/adt-mcp/src/lib/tools/scope-catalogue.ts
  • packages/adt-mcp/src/lib/tools/search-objects.ts
  • packages/adt-mcp/src/lib/tools/session-helpers.ts
  • packages/adt-mcp/src/lib/tools/shared-schemas.ts
  • packages/adt-mcp/src/lib/tools/stat-package.ts
  • packages/adt-mcp/src/lib/tools/system-info.ts
  • packages/adt-mcp/src/lib/tools/unlock-object.ts
  • packages/adt-mcp/src/lib/tools/unpublish-srvb.ts
  • packages/adt-mcp/src/lib/tools/update-source.ts
  • packages/adt-mcp/src/lib/tools/upload-cert.ts
  • packages/adt-mcp/src/lib/tools/utils.ts
  • packages/adt-mcp/src/lib/types.ts
  • packages/adt-mcp/tests/destination-registry.test.ts
  • packages/adt-mcp/tests/http-auth.test.ts
  • packages/adt-mcp/tests/http-changeset.test.ts
  • packages/adt-mcp/tests/http-destination-scope.test.ts
  • packages/adt-mcp/tests/http-handler.test.ts
  • packages/adt-mcp/tests/http-integration.test.ts
  • packages/adt-mcp/tests/http-invocation-auth.test.ts
  • packages/adt-mcp/tests/http-invocation.test.ts
  • packages/adt-mcp/tests/http-oauth.test.ts
  • packages/adt-mcp/tests/integration.test.ts
  • packages/adt-mcp/tests/scope-enforcement.test.ts
  • packages/adt-mcp/tests/source-capabilities.test.ts
  • packages/adt-mcp/tests/source-version-metadata.test.ts
  • packages/adt-mcp/tests/transport-source-manifest-capabilities.test.ts
  • packages/adt-mcp/tsconfig.json
  • packages/adt-mcp/tsdown.config.ts
  • packages/adt-pilot/CHANGELOG.md
  • packages/adt-pilot/eslint.config.js
  • packages/adt-pilot/package.json
  • packages/adt-pilot/project.json
  • packages/adt-pilot/src/agent.ts
  • packages/adt-pilot/src/harness.ts
  • packages/adt-pilot/src/index.ts
  • packages/adt-pilot/src/mcp-client.ts
  • packages/adt-pilot/src/types.ts
  • packages/adt-pilot/src/workflow.ts
  • packages/adt-pilot/tests/harness.test.ts
  • packages/adt-pilot/tests/mcp-client.test.ts
  • packages/adt-pilot/tests/types.test.ts
  • packages/adt-pilot/tests/workflow.test.ts
  • packages/adt-pilot/tsconfig.json
  • packages/adt-pilot/tsconfig.lib.json
  • packages/adt-pilot/tsconfig.spec.json
  • packages/adt-pilot/tsdown.config.ts
  • packages/adt-pilot/vitest.config.ts
  • packages/adt-playwright/CHANGELOG.md
  • packages/adt-playwright/README.md
  • packages/adt-playwright/package.json
  • packages/adt-playwright/src/adapter.ts
  • packages/adt-playwright/src/auth-plugin.ts
  • packages/adt-playwright/src/index.ts
  • packages/adt-playwright/src/playwright-auth.ts
  • packages/adt-playwright/tsconfig.json
  • packages/adt-playwright/tsdown.config.ts
  • packages/adt-plugin-abapgit/AGENTS.md
  • packages/adt-plugin-abapgit/CHANGELOG.md
  • packages/adt-plugin-abapgit/CONTRIBUTING.md
  • packages/adt-plugin-abapgit/README.md
  • packages/adt-plugin-abapgit/eslint.config.js
  • packages/adt-plugin-abapgit/package.json
  • packages/adt-plugin-abapgit/project.json
  • packages/adt-plugin-abapgit/src/index.ts
  • packages/adt-plugin-abapgit/src/lib/abapgit.ts
  • packages/adt-plugin-abapgit/src/lib/deserializer.ts
  • packages/adt-plugin-abapgit/src/lib/filename/adt-uri-to-path.ts
  • packages/adt-plugin-abapgit/src/lib/finding-resolver.ts
  • packages/adt-plugin-abapgit/src/lib/folder-logic.ts
  • packages/adt-plugin-abapgit/src/lib/format-plugin.ts
  • packages/adt-plugin-abapgit/src/lib/handlers/abapgit-schema.ts
  • packages/adt-plugin-abapgit/src/lib/handlers/adk.ts
  • packages/adt-plugin-abapgit/src/lib/handlers/base.ts
  • packages/adt-plugin-abapgit/src/lib/handlers/cds-to-abapgit.ts
  • packages/adt-plugin-abapgit/src/lib/handlers/index.ts
  • packages/adt-plugin-abapgit/src/lib/handlers/lang.ts
  • packages/adt-plugin-abapgit/src/lib/handlers/objects/bdef.ts
  • packages/adt-plugin-abapgit/src/lib/handlers/objects/clas.ts
  • packages/adt-plugin-abapgit/src/lib/handlers/objects/devc.ts
  • packages/adt-plugin-abapgit/src/lib/handlers/objects/doma.ts
  • packages/adt-plugin-abapgit/src/lib/handlers/objects/dtel.ts
  • packages/adt-plugin-abapgit/src/lib/handlers/objects/fugr.ts
  • packages/adt-plugin-abapgit/src/lib/handlers/objects/index.ts
  • packages/adt-plugin-abapgit/src/lib/handlers/objects/intf.ts
  • packages/adt-plugin-abapgit/src/lib/handlers/objects/prog.ts
  • packages/adt-plugin-abapgit/src/lib/handlers/objects/srvb.ts
  • packages/adt-plugin-abapgit/src/lib/handlers/objects/srvd.ts
  • packages/adt-plugin-abapgit/src/lib/handlers/objects/tabl.ts
  • packages/adt-plugin-abapgit/src/lib/handlers/objects/ttyp.ts
  • packages/adt-plugin-abapgit/src/lib/handlers/registry.ts
  • packages/adt-plugin-abapgit/src/lib/handlers/xml-format.ts
  • packages/adt-plugin-abapgit/src/lib/serializer.ts
  • packages/adt-plugin-abapgit/tests/deserializer.test.ts
  • packages/adt-plugin-abapgit/tests/filename/adt-uri-to-path.test.ts
  • packages/adt-plugin-abapgit/tests/fixtures/clas/zcl_age_sample_class.clas.xml
  • packages/adt-plugin-abapgit/tests/fixtures/devc/package.devc.xml
  • packages/adt-plugin-abapgit/tests/fixtures/doma/zage_char_with_length.doma.xml
  • packages/adt-plugin-abapgit/tests/fixtures/doma/zage_doma_case_sensitive.doma.xml
  • packages/adt-plugin-abapgit/tests/fixtures/doma/zage_doma_char_with_length.doma.xml
  • packages/adt-plugin-abapgit/tests/fixtures/doma/zage_doma_conversion.doma.xml
  • packages/adt-plugin-abapgit/tests/fixtures/doma/zage_doma_intervals.doma.xml
  • packages/adt-plugin-abapgit/tests/fixtures/doma/zage_doma_value_table.doma.xml
  • packages/adt-plugin-abapgit/tests/fixtures/doma/zage_fixed_values.doma.xml
  • packages/adt-plugin-abapgit/tests/fixtures/dtel/zage_dtel_predefined_type.dtel.xml
  • packages/adt-plugin-abapgit/tests/fixtures/dtel/zage_dtel_ref_to_clas.dtel.xml
  • packages/adt-plugin-abapgit/tests/fixtures/dtel/zage_dtel_ref_to_ddic.dtel.xml
  • packages/adt-plugin-abapgit/tests/fixtures/dtel/zage_dtel_ref_to_predefined.dtel.xml
  • packages/adt-plugin-abapgit/tests/fixtures/dtel/zage_dtel_value_table_key.dtel.xml
  • packages/adt-plugin-abapgit/tests/fixtures/dtel/zage_dtel_with_decimals.dtel.xml
  • packages/adt-plugin-abapgit/tests/fixtures/dtel/zage_dtel_with_domain.dtel.xml
  • packages/adt-plugin-abapgit/tests/fixtures/intf/zif_age_test.intf.xml
  • packages/adt-plugin-abapgit/tests/fixtures/tabl/zage_structure.tabl.xml
  • packages/adt-plugin-abapgit/tests/fixtures/tabl/zage_transparent_table.tabl.xml
  • packages/adt-plugin-abapgit/tests/fixtures/ttyp/zage_ttyp_string.ttyp.xml
  • packages/adt-plugin-abapgit/tests/fixtures/ttyp/zage_ttyp_strtab.ttyp.xml
  • packages/adt-plugin-abapgit/tests/fixtures/ttyp/zage_ttyp_strtab2.ttyp.xml
  • packages/adt-plugin-abapgit/tests/fixtures/ttyp/zage_ttyp_struct.ttyp.xml
  • packages/adt-plugin-abapgit/tests/folder-logic.test.ts
  • packages/adt-plugin-abapgit/tests/handlers/abapgit-delete.test.ts
  • packages/adt-plugin-abapgit/tests/handlers/base.test.ts
  • packages/adt-plugin-abapgit/tests/handlers/bdef.test.ts
  • packages/adt-plugin-abapgit/tests/handlers/dtel-e2e.test.ts
  • packages/adt-plugin-abapgit/tests/handlers/dtel.test.ts
  • packages/adt-plugin-abapgit/tests/handlers/intf-clas-roundtrip.test.ts
  • packages/adt-plugin-abapgit/tests/handlers/srvb.test.ts
  • packages/adt-plugin-abapgit/tests/handlers/srvd.test.ts
  • packages/adt-plugin-abapgit/tests/handlers/tabl.test.ts
  • packages/adt-plugin-abapgit/tests/schemas/base/scenario.ts
  • packages/adt-plugin-abapgit/tests/schemas/clas.test.ts
  • packages/adt-plugin-abapgit/tests/schemas/devc.test.ts
  • packages/adt-plugin-abapgit/tests/schemas/doma.test.ts
  • packages/adt-plugin-abapgit/tests/schemas/dtel.test.ts
  • packages/adt-plugin-abapgit/tests/schemas/intf.test.ts
  • packages/adt-plugin-abapgit/tests/schemas/tabl.test.ts
  • packages/adt-plugin-abapgit/tests/schemas/ttyp.test.ts
  • packages/adt-plugin-abapgit/tests/xsd/xsd-root-validation.test.ts
  • packages/adt-plugin-abapgit/ts-xsd.config.ts
  • packages/adt-plugin-abapgit/tsconfig.json
  • packages/adt-plugin-abapgit/tsconfig.lib.json
  • packages/adt-plugin-abapgit/tsconfig.test.json
  • packages/adt-plugin-abapgit/tsdown.config.ts
  • packages/adt-plugin-abapgit/vitest.config.ts
  • packages/adt-plugin-abapgit/xsd/abapgit.xsd
  • packages/adt-plugin-abapgit/xsd/asx.xsd
  • packages/adt-plugin-abapgit/xsd/bdef.xsd
  • packages/adt-plugin-abapgit/xsd/clas.xsd
  • packages/adt-plugin-abapgit/xsd/devc.xsd
  • packages/adt-plugin-abapgit/xsd/doma.xsd
  • packages/adt-plugin-abapgit/xsd/dtel.xsd
  • packages/adt-plugin-abapgit/xsd/fugr.xsd
  • packages/adt-plugin-abapgit/xsd/intf.xsd
  • packages/adt-plugin-abapgit/xsd/prog.xsd
  • packages/adt-plugin-abapgit/xsd/srvb.xsd
  • packages/adt-plugin-abapgit/xsd/srvd.xsd
  • packages/adt-plugin-abapgit/xsd/tabl.xsd
  • packages/adt-plugin-abapgit/xsd/ttyp.xsd
  • packages/adt-plugin-abapgit/xsd/types/dd01v.xsd
  • packages/adt-plugin-abapgit/xsd/types/dd02v.xsd
  • packages/adt-plugin-abapgit/xsd/types/dd03p.xsd
  • packages/adt-plugin-abapgit/xsd/types/dd04v.xsd
  • packages/adt-plugin-abapgit/xsd/types/dd07v.xsd
  • packages/adt-plugin-abapgit/xsd/types/dd09l.xsd
  • packages/adt-plugin-abapgit/xsd/types/dd40v.xsd
  • packages/adt-plugin-abapgit/xsd/types/devc.xsd
  • packages/adt-plugin-abapgit/xsd/types/fugr.xsd
  • packages/adt-plugin-abapgit/xsd/types/progdir.xsd
  • packages/adt-plugin-abapgit/xsd/types/tddat.xsd
  • packages/adt-plugin-abapgit/xsd/types/vseoclass.xsd
  • packages/adt-plugin-abapgit/xsd/types/vseointerf.xsd
  • packages/adt-plugin-gcts-cli/AGENTS.md
  • packages/adt-plugin-gcts-cli/CHANGELOG.md
  • packages/adt-plugin-gcts-cli/README.md
  • packages/adt-plugin-gcts-cli/package.json
  • packages/adt-plugin-gcts-cli/project.json
  • packages/adt-plugin-gcts-cli/src/index.ts
  • packages/adt-plugin-gcts-cli/src/lib/client/gcts-client.ts
  • packages/adt-plugin-gcts-cli/src/lib/commands/gcts.ts
  • packages/adt-plugin-gcts-cli/tsconfig.json
  • packages/adt-plugin-gcts-cli/tsconfig.lib.json
  • packages/adt-plugin-gcts-cli/tsconfig.test.json
  • packages/adt-plugin-gcts-cli/tsdown.config.ts
  • packages/adt-plugin-gcts/AGENTS.md
  • packages/adt-plugin-gcts/CHANGELOG.md
  • packages/adt-plugin-gcts/README.md
  • packages/adt-plugin-gcts/eslint.config.js
  • packages/adt-plugin-gcts/package.json
  • packages/adt-plugin-gcts/project.json
  • packages/adt-plugin-gcts/src/index.ts
  • packages/adt-plugin-gcts/src/lib/deserializer.ts
  • packages/adt-plugin-gcts/src/lib/format/filename.ts
  • packages/adt-plugin-gcts/src/lib/format/gcts-format.ts
  • packages/adt-plugin-gcts/src/lib/format/types.ts
  • packages/adt-plugin-gcts/src/lib/gcts-plugin.ts
  • packages/adt-plugin-gcts/src/lib/handlers/base.ts
  • packages/adt-plugin-gcts/src/lib/handlers/objects/clas.ts
  • packages/adt-plugin-gcts/src/lib/handlers/objects/devc.ts
  • packages/adt-plugin-gcts/src/lib/handlers/objects/doma.ts
  • packages/adt-plugin-gcts/src/lib/handlers/objects/dtel.ts
  • packages/adt-plugin-gcts/src/lib/handlers/objects/fugr.ts
  • packages/adt-plugin-gcts/src/lib/handlers/objects/index.ts
  • packages/adt-plugin-gcts/src/lib/handlers/objects/intf.ts
  • packages/adt-plugin-gcts/src/lib/handlers/objects/prog.ts
  • packages/adt-plugin-gcts/src/lib/handlers/objects/tabl.ts
  • packages/adt-plugin-gcts/src/lib/handlers/objects/ttyp.ts
  • packages/adt-plugin-gcts/tests/format/filename.test.ts
  • packages/adt-plugin-gcts/tests/format/round-trip.test.ts
  • packages/adt-plugin-gcts/tests/handlers/base.test.ts
  • packages/adt-plugin-gcts/tsconfig.json
  • packages/adt-plugin-gcts/tsconfig.lib.json
  • packages/adt-plugin-gcts/tsconfig.test.json
  • packages/adt-plugin-gcts/tsdown.config.ts
  • packages/adt-plugin/CHANGELOG.md
  • packages/adt-plugin/README.md
  • packages/adt-plugin/package.json
  • packages/adt-plugin/project.json
  • packages/adt-plugin/src/cli-types.ts
  • packages/adt-plugin/src/factory.ts
  • packages/adt-plugin/src/index.ts
  • packages/adt-plugin/src/lib/format/format-plugin.ts
  • packages/adt-plugin/src/lib/format/format-registry.ts
  • packages/adt-plugin/src/lib/format/index.ts
  • packages/adt-plugin/src/types.ts
  • packages/adt-plugin/tests/format-registry.test.ts
  • packages/adt-plugin/tsconfig.json
  • packages/adt-plugin/tsconfig.lib.json
  • packages/adt-plugin/tsdown.config.ts
  • packages/adt-proxy/package.json
  • packages/adt-proxy/project.json
  • packages/adt-proxy/src/converter.test.ts
  • packages/adt-proxy/src/converter.ts
  • packages/adt-proxy/src/index.ts
  • packages/adt-proxy/src/proxy.ts
  • packages/adt-proxy/src/types.ts
  • packages/adt-proxy/tsconfig.json
  • packages/adt-proxy/tsdown.config.ts
  • packages/adt-proxy/vitest.config.ts
  • packages/adt-puppeteer/CHANGELOG.md
  • packages/adt-puppeteer/README.md
  • packages/adt-puppeteer/package.json
  • packages/adt-puppeteer/src/adapter.ts
  • packages/adt-puppeteer/src/auth-plugin.ts
  • packages/adt-puppeteer/src/index.ts
  • packages/adt-puppeteer/src/puppeteer-auth.ts
  • packages/adt-puppeteer/tsconfig.json
  • packages/adt-puppeteer/tsconfig.lib.json
  • packages/adt-puppeteer/tsconfig.spec.json
  • packages/adt-puppeteer/tsdown.config.ts
  • packages/adt-puppeteer/vitest.config.ts
  • packages/adt-rfc/AGENTS.md
  • packages/adt-rfc/CHANGELOG.md
  • packages/adt-rfc/README.md
  • packages/adt-rfc/package.json
  • packages/adt-rfc/project.json
  • packages/adt-rfc/src/index.ts
  • packages/adt-rfc/src/lib/client/rfc-client.ts
  • packages/adt-rfc/src/lib/transport/soap-rfc.ts
  • packages/adt-rfc/src/lib/transport/types.ts
  • packages/adt-rfc/tests/soap-rfc.test.ts
  • packages/adt-rfc/tsconfig.json
  • packages/adt-rfc/tsconfig.lib.json
  • packages/adt-rfc/tsdown.config.ts
  • packages/adt-rfc/vitest.config.ts
  • packages/adt-schemas/.gitignore
  • packages/adt-schemas/.xsd/custom/Ecore.xsd
  • packages/adt-schemas/.xsd/custom/acoverageResult.xsd
  • packages/adt-schemas/.xsd/custom/acoverageStatements.xsd
  • packages/adt-schemas/.xsd/custom/adtcoreObjectSets.xsd
  • packages/adt-schemas/.xsd/custom/atcRun.xsd
  • packages/adt-schemas/.xsd/custom/atomExtended.xsd
  • packages/adt-schemas/.xsd/custom/atomFeed.xsd
  • packages/adt-schemas/.xsd/custom/aunitResult.xsd
  • packages/adt-schemas/.xsd/custom/aunitRun.xsd
  • packages/adt-schemas/.xsd/custom/badi.xsd
  • packages/adt-schemas/.xsd/custom/blueSource.xsd
  • packages/adt-schemas/.xsd/custom/dataelementWrapper.xsd
  • packages/adt-schemas/.xsd/custom/dclSource.xsd
  • packages/adt-schemas/.xsd/custom/ddlSource.xsd
  • packages/adt-schemas/.xsd/custom/discovery.xsd
  • packages/adt-schemas/.xsd/custom/http.xsd
  • packages/adt-schemas/.xsd/custom/objectProperties.xsd
  • packages/adt-schemas/.xsd/custom/srvdSource.xsd
  • packages/adt-schemas/.xsd/custom/templatelinkExtended.xsd
  • packages/adt-schemas/.xsd/custom/transportUseraction.xsd
  • packages/adt-schemas/.xsd/custom/transportfind.xsd
  • packages/adt-schemas/.xsd/custom/transportmanagmentCreate.xsd
  • packages/adt-schemas/.xsd/custom/transportmanagmentSingle.xsd
  • packages/adt-schemas/AGENTS.md
  • packages/adt-schemas/CHANGELOG.md
  • packages/adt-schemas/README.md
  • packages/adt-schemas/package.json
  • packages/adt-schemas/project.json
  • packages/adt-schemas/scripts/normalize-xsd.ts
  • packages/adt-schemas/src/index.ts
  • packages/adt-schemas/src/schemas/index.ts
  • packages/adt-schemas/src/schemas/json/index.ts
  • packages/adt-schemas/src/schemas/json/systeminformation.ts
  • packages/adt-schemas/tests/scenarios/atc.test.ts
  • packages/adt-schemas/tests/scenarios/atom-feed.test.ts
  • packages/adt-schemas/tests/scenarios/base/scenario.ts
  • packages/adt-schemas/tests/scenarios/classes.test.ts
  • packages/adt-schemas/tests/scenarios/interfaces.test.ts
  • packages/adt-schemas/tests/scenarios/packages.test.ts
  • packages/adt-schemas/tests/scenarios/search.test.ts
  • packages/adt-schemas/tests/scenarios/sessions.test.ts
  • packages/adt-schemas/tests/scenarios/systeminformation.test.ts
  • packages/adt-schemas/tests/scenarios/tm.test.ts
  • packages/adt-schemas/ts-xsd.config.ts
  • packages/adt-schemas/tsconfig.json
  • packages/adt-schemas/tsconfig.test.json
  • packages/adt-schemas/tsdown.config.ts
  • packages/adt-schemas/vitest.config.ts
  • packages/adt-server-client/package.json
  • packages/adt-server-client/project.json
  • packages/adt-server-client/scripts/generate.ts
  • packages/adt-server-client/src/generated.ts
  • packages/adt-server-client/src/index.ts
  • packages/adt-server-client/tests/client.test.ts
  • packages/adt-server-client/tsconfig.json
  • packages/adt-server-client/tsdown.config.ts
  • packages/adt-server/package.json
  • packages/adt-server/project.json
  • packages/adt-server/src/atc-documentation-capabilities.ts
  • packages/adt-server/src/bin/adt-server.ts
  • packages/adt-server/src/broker.ts
  • packages/adt-server/src/index.ts
  • packages/adt-server/src/mcp-runtime.ts
  • packages/adt-server/src/openapi.ts
  • packages/adt-server/src/page-cursors.ts
  • packages/adt-server/src/rest-auth.ts
  • packages/adt-server/src/rest-runtime.ts
  • packages/adt-server/src/rest-schemas.ts
  • packages/adt-server/src/server.ts
  • packages/adt-server/src/source-capabilities.ts
  • packages/adt-server/tests/broker.test.ts
  • packages/adt-server/tests/mcp-runtime.test.ts
  • packages/adt-server/tests/openapi.test.ts
  • packages/adt-server/tests/rest-auth.test.ts
  • packages/adt-server/tests/rest-runtime.test.ts
  • packages/adt-server/tests/server.test.ts
  • packages/adt-server/tests/source-capabilities.test.ts
  • packages/adt-server/tsconfig.json
  • packages/adt-server/tsdown.config.ts
  • packages/adt-tui/CHANGELOG.md
  • packages/adt-tui/README.md
  • packages/adt-tui/package.json
  • packages/adt-tui/project.json
  • packages/adt-tui/scripts/generate-routes.ts
  • packages/adt-tui/src/App.tsx
  • packages/adt-tui/src/Navigator.tsx
  • packages/adt-tui/src/index.ts
  • packages/adt-tui/src/lib/PageRenderer.tsx
  • packages/adt-tui/src/lib/context.tsx
  • packages/adt-tui/src/lib/parser.ts
  • packages/adt-tui/src/lib/router.ts
  • packages/adt-tui/src/lib/types.ts
  • packages/adt-tui/src/pages/GenericPage.tsx
  • packages/adt-tui/src/pages/_routes.ts
  • packages/adt-tui/src/pages/index.ts
  • packages/adt-tui/src/pages/sap/bc/adt/cts/transportrequests/[slug].loader.ts
  • packages/adt-tui/src/pages/sap/bc/adt/cts/transportrequests/[slug].tsx
  • packages/adt-tui/src/run.tsx
  • packages/adt-tui/tsconfig.lib.json
  • packages/adt-tui/tsdown.config.ts
  • packages/asjson-parser/.swcrc
  • packages/asjson-parser/CHANGELOG.md
  • packages/asjson-parser/README.md
  • packages/asjson-parser/eslint.config.js
  • packages/asjson-parser/package.json
  • packages/asjson-parser/project.json
  • packages/asjson-parser/src/index.ts
  • packages/asjson-parser/src/lib/asjson.spec.ts
  • packages/asjson-parser/src/lib/asjson.ts
  • packages/asjson-parser/tsconfig.json
  • packages/asjson-parser/tsconfig.lib.json
  • packages/asjson-parser/tsconfig.spec.json
  • packages/asjson-parser/tsdown.config.ts
  • packages/browser-auth/CHANGELOG.md
  • packages/browser-auth/README.md
  • packages/browser-auth/package.json
  • packages/browser-auth/src/auth-core.ts
  • packages/browser-auth/src/index.ts
  • packages/browser-auth/src/types.ts
  • packages/browser-auth/src/utils.ts
  • packages/browser-auth/tsconfig.json
  • packages/browser-auth/tsdown.config.ts
  • packages/logger/CHANGELOG.md
  • packages/logger/README.md
  • packages/logger/package.json
  • packages/logger/src/index.ts
  • packages/logger/src/loggers/console-logger.ts
  • packages/logger/src/loggers/index.ts
  • packages/logger/src/loggers/noop-logger.ts
  • packages/logger/src/types.ts
  • packages/logger/tsconfig.json
  • packages/logger/tsdown.config.ts
  • packages/openai-codegen/AGENTS.md
  • packages/openai-codegen/CHANGELOG.md
  • packages/openai-codegen/README.md
  • packages/openai-codegen/eslint.config.js
  • packages/openai-codegen/package.json
  • packages/openai-codegen/src/cli.ts
  • packages/openai-codegen/src/emit/exception-class.ts
  • packages/openai-codegen/src/emit/implementation-class.ts
  • packages/openai-codegen/src/emit/index.ts
  • packages/openai-codegen/src/emit/local-classes.ts
  • packages/openai-codegen/src/emit/naming.ts
  • packages/openai-codegen/src/emit/operations-interface.ts
  • packages/openai-codegen/src/emit/response-mapper.ts
  • packages/openai-codegen/src/emit/templates/locals-def.abap.ts
  • packages/openai-codegen/src/emit/templates/locals-imp.abap.ts
  • packages/openai-codegen/src/emit/types-interface.ts
  • packages/openai-codegen/src/format/abapgit.ts
  • packages/openai-codegen/src/format/gcts.ts
  • packages/openai-codegen/src/format/index.ts
  • packages/openai-codegen/src/format/types.ts
  • packages/openai-codegen/src/format/validate.ts
  • packages/openai-codegen/src/generate.ts
  • packages/openai-codegen/src/index.ts
  • packages/openai-codegen/src/oas/index.ts
  • packages/openai-codegen/src/oas/iterate.ts
  • packages/openai-codegen/src/oas/load.ts
  • packages/openai-codegen/src/oas/types.ts
  • packages/openai-codegen/src/profiles/cloud.ts
  • packages/openai-codegen/src/profiles/errors.ts
  • packages/openai-codegen/src/profiles/index.ts
  • packages/openai-codegen/src/profiles/onprem-classic.ts
  • packages/openai-codegen/src/profiles/onprem-modern.ts
  • packages/openai-codegen/src/profiles/registry.ts
  • packages/openai-codegen/src/profiles/types.ts
  • packages/openai-codegen/src/types/emit.ts
  • packages/openai-codegen/src/types/errors.ts
  • packages/openai-codegen/src/types/index.ts
  • packages/openai-codegen/src/types/map.ts
  • packages/openai-codegen/src/types/naming.ts
  • packages/openai-codegen/src/types/plan.ts
  • packages/openai-codegen/tests/aclass-parse-gate.test.ts
  • packages/openai-codegen/tests/cli.test.ts
  • packages/openai-codegen/tests/emit-exception-class.test.ts
  • packages/openai-codegen/tests/emit-implementation-class.test.ts
  • packages/openai-codegen/tests/emit-local-classes.test.ts
  • packages/openai-codegen/tests/emit-naming.test.ts
  • packages/openai-codegen/tests/emit-operations-interface.test.ts
  • packages/openai-codegen/tests/emit-response-mapper.test.ts
  • packages/openai-codegen/tests/emit-types-interface.test.ts
  • packages/openai-codegen/tests/format-interface.test.ts
  • packages/openai-codegen/tests/format.test.ts
  • packages/openai-codegen/tests/generate.test.ts
  • packages/openai-codegen/tests/oas.test.ts
  • packages/openai-codegen/tests/profiles.test.ts
  • packages/openai-codegen/tests/types-emit.test.ts
  • packages/openai-codegen/tsconfig.json
  • packages/openai-codegen/tsdown.config.ts
  • packages/openai-codegen/vitest.config.ts
  • packages/speci/CHANGELOG.md
  • packages/speci/README.md
  • packages/speci/docs/body-inference.md
  • packages/speci/examples/basic-usage.ts
  • packages/speci/examples/global-error-responses.ts
  • packages/speci/examples/inferrable-schemas.ts
  • packages/speci/package.json
  • packages/speci/project.json
  • packages/speci/src/core/helpers.ts
  • packages/speci/src/core/index.ts
  • packages/speci/src/core/types.ts
  • packages/speci/src/index.ts
  • packages/speci/src/rest/body-inference.test.ts
  • packages/speci/src/rest/client/create-client.ts
  • packages/speci/src/rest/client/fetch-adapter.ts
  • packages/speci/src/rest/client/index.ts
  • packages/speci/src/rest/client/types.ts
  • packages/speci/src/rest/helpers.test.ts
  • packages/speci/src/rest/helpers.ts
  • packages/speci/src/rest/index.ts
  • packages/speci/src/rest/inferrable.test.ts
  • packages/speci/src/rest/server/create-server.test.ts
  • packages/speci/src/rest/server/create-server.ts
  • packages/speci/src/rest/server/index.ts
  • packages/speci/src/rest/server/types.ts
  • packages/speci/src/rest/types.ts
  • packages/speci/src/rest/url-params.test.ts
  • packages/speci/src/rest/xsd-body-inference.test.ts
  • packages/speci/tsconfig.json
  • packages/speci/tsdown.config.ts
  • packages/speci/vitest.config.ts
  • packages/ts-xsd/AGENTS.md
  • packages/ts-xsd/CHANGELOG.md
  • packages/ts-xsd/README.md
  • packages/ts-xsd/docs/codegen.md
  • packages/ts-xsd/package.json
  • packages/ts-xsd/project.json
  • packages/ts-xsd/src/codegen/cli.ts
  • packages/ts-xsd/src/codegen/generate.ts
  • packages/ts-xsd/src/codegen/index.ts
  • packages/ts-xsd/src/codegen/interface-generator.ts
  • packages/ts-xsd/src/codegen/runner.ts
  • packages/ts-xsd/src/codegen/ts-morph.ts
  • packages/ts-xsd/src/codegen/types.ts
  • packages/ts-xsd/src/generators/index-barrel.ts
  • packages/ts-xsd/src/generators/index.ts
  • packages/ts-xsd/src/generators/inferred-types.ts
  • packages/ts-xsd/src/generators/interfaces.ts
  • packages/ts-xsd/src/generators/raw-schema.ts
  • packages/ts-xsd/src/generators/typed-schemas.ts
  • packages/ts-xsd/src/index.ts
  • packages/ts-xsd/src/infer/index.ts
  • packages/ts-xsd/src/infer/infer.ts
  • packages/ts-xsd/src/walker/index.ts
  • packages/ts-xsd/src/xml/build-utils.ts
  • packages/ts-xsd/src/xml/build.ts
  • packages/ts-xsd/src/xml/dom-utils.ts
  • packages/ts-xsd/src/xml/index.ts
  • packages/ts-xsd/src/xml/parse.ts
  • packages/ts-xsd/src/xml/typed.ts
  • packages/ts-xsd/src/xsd/build.ts
  • packages/ts-xsd/src/xsd/helpers.ts
  • packages/ts-xsd/src/xsd/index.ts
  • packages/ts-xsd/src/xsd/loader.ts
  • packages/ts-xsd/src/xsd/parse.ts
  • packages/ts-xsd/src/xsd/resolve.ts
  • packages/ts-xsd/src/xsd/schema-like.ts
  • packages/ts-xsd/src/xsd/traverser.ts
  • packages/ts-xsd/src/xsd/types.ts
  • packages/ts-xsd/tests/.gitignore
  • packages/ts-xsd/tests/fixtures/.gitignore
  • packages/ts-xsd/tests/fixtures/abapgit-doma/abapgit.xsd
  • packages/ts-xsd/tests/fixtures/abapgit-doma/asx.xsd
  • packages/ts-xsd/tests/fixtures/abapgit-doma/doma.xsd
  • packages/ts-xsd/tests/fixtures/abapgit-doma/types/dd01v.xsd
  • packages/ts-xsd/tests/fixtures/abapgit-doma/types/dd07v.xsd
  • packages/ts-xsd/tests/fixtures/cache/W3C-XMLSchema.xsd
  • packages/ts-xsd/tests/fixtures/includes/common.xsd
  • packages/ts-xsd/tests/fixtures/includes/document.xsd
  • packages/ts-xsd/tests/fixtures/includes/ts-xsd.config.ts
  • packages/ts-xsd/tests/fixtures/index.ts
  • packages/ts-xsd/tests/fixtures/resolution-demo/base.xsd
  • packages/ts-xsd/tests/fixtures/resolution-demo/common.xsd
  • packages/ts-xsd/tests/fixtures/resolution-demo/main.xsd
  • packages/ts-xsd/tests/fixtures/resolution-demo/types.xsd
  • packages/ts-xsd/tests/fixtures/xsd/order.xsd
  • packages/ts-xsd/tests/fixtures/xsd/person.xsd
  • packages/ts-xsd/tests/integration/abapgit-doma.test.ts
  • packages/ts-xsd/tests/integration/codegen-infer.test.ts
  • packages/ts-xsd/tests/integration/includes.test.ts
  • packages/ts-xsd/tests/integration/resolution-demo.test.ts
  • packages/ts-xsd/tests/integration/roundtrip.test.ts
  • packages/ts-xsd/tests/integration/ts-morph.test.ts
  • packages/ts-xsd/tests/integration/w3c-roundtrip.test.ts
  • packages/ts-xsd/tests/integration/xml-roundtrip.test.ts
  • packages/ts-xsd/tests/unit/build-abapgit-format.test.ts
  • packages/ts-xsd/tests/unit/build-elementFormDefault.test.ts
  • packages/ts-xsd/tests/unit/build.test.ts
  • packages/ts-xsd/tests/unit/circular-ref.test.ts
  • packages/ts-xsd/tests/unit/codegen-namespace.test.ts
  • packages/ts-xsd/tests/unit/codegen.test.ts
  • packages/ts-xsd/tests/unit/infer-element.test.ts
  • packages/ts-xsd/tests/unit/infer.test.ts
  • packages/ts-xsd/tests/unit/interface-generator.test.ts
  • packages/ts-xsd/tests/unit/link-schema-same-name.test.ts
  • packages/ts-xsd/tests/unit/link-schema.test.ts
  • packages/ts-xsd/tests/unit/loader.test.ts
  • packages/ts-xsd/tests/unit/parse-coverage.test.ts
  • packages/ts-xsd/tests/unit/parse.test.ts
  • packages/ts-xsd/tests/unit/resolve-includes.test.ts
  • packages/ts-xsd/tests/unit/resolve.test.ts
  • packages/ts-xsd/tests/unit/substitution-group.test.ts
  • packages/ts-xsd/tests/unit/traverser.test.ts
  • packages/ts-xsd/tests/unit/ts-morph.test.ts
  • packages/ts-xsd/tests/unit/type-parse-consistency.test.ts
  • packages/ts-xsd/tests/unit/walker-attribute-ref.test.ts
  • packages/ts-xsd/tests/unit/walker.test.ts
  • packages/ts-xsd/tests/unit/xml-build.test.ts
  • packages/ts-xsd/tests/unit/xml-cross-schema.test.ts
  • packages/ts-xsd/tests/unit/xml-parse.test.ts
  • packages/ts-xsd/tsconfig.json
  • packages/ts-xsd/tsconfig.test.json
  • packages/ts-xsd/tsdown.config.ts
  • project.json
  • samples/cf/service_bindings.test.ts
  • samples/cf/service_instances.test.ts
  • samples/petstore-abapgit/.abapgit.xml
  • samples/petstore-abapgit/src/zcl_petstore_impl.clas.abap
  • samples/petstore-abapgit/src/zcl_petstore_impl.clas.xml
  • samples/petstore-abapgit/src/zif_petstore.intf.abap
  • samples/petstore-abapgit/src/zif_petstore.intf.xml
  • samples/petstore3-client/README.md
  • samples/petstore3-client/e2e/README.md
  • samples/petstore3-client/e2e/abapgit/package.devc.xml
  • samples/petstore3-client/e2e/abapgit/src/zcl_ps3_client_tests.clas.abap
  • samples/petstore3-client/e2e/abapgit/src/zcl_ps3_client_tests.clas.xml
  • samples/petstore3-client/package.json
  • samples/petstore3-client/spec/openapi.json
  • samples/sample-tsdown/README.md
  • samples/sample-tsdown/package.json
  • samples/sample-tsdown/src/index.ts
  • samples/sample-tsdown/src/lib/sample-tsdown.ts
  • samples/sample-tsdown/tsconfig.json
  • samples/sample-tsdown/tsconfig.lib.json
  • samples/sample-tsdown/tsdown.config.ts
  • scripts/run-e2e-test.ts
  • sonar-project.properties
  • src/mastra/index.ts
  • tools/nx-npm-trust/README.md
  • tools/nx-npm-trust/package.json
  • tools/nx-npm-trust/project.json
  • tools/nx-npm-trust/src/check.ts
  • tools/nx-npm-trust/src/index.ts
  • tools/nx-npm-trust/src/plugin.ts
  • tools/nx-npm-trust/tsconfig.json
  • tools/nx-npm-trust/tsconfig.lib.json
  • tools/nx-sync/README.md
  • tools/nx-sync/generators.json
  • tools/nx-sync/package.json
  • tools/nx-sync/project.json
  • tools/nx-sync/src/generators/nested-sync/generator.ts
  • tools/nx-sync/src/generators/nested-sync/schema.d.ts
  • tools/nx-sync/src/generators/nested-sync/schema.json
  • tools/nx-sync/src/index.ts
  • tools/nx-sync/tsconfig.json
  • tools/nx-sync/tsconfig.lib.json
  • tools/nx-tsdown/README.md
  • tools/nx-tsdown/package.json
  • tools/nx-tsdown/project.json
  • tools/nx-tsdown/scripts/build.sh
  • tools/nx-tsdown/src/index.ts
  • tools/nx-tsdown/src/plugin.ts
  • tools/nx-tsdown/tsconfig.json
  • tools/nx-tsdown/tsconfig.lib.json
  • tools/nx-typecheck/README.md
  • tools/nx-typecheck/package.json
  • tools/nx-typecheck/project.json
  • tools/nx-typecheck/src/index.ts
  • tools/nx-typecheck/src/plugin.ts
  • tools/nx-typecheck/tsconfig.json
  • tools/nx-typecheck/tsconfig.lib.json
  • tools/nx-vitest/README.md
  • tools/nx-vitest/package.json
  • tools/nx-vitest/src/index.ts
  • tools/nx-vitest/src/plugin.ts
  • tools/nx-vitest/tsconfig.json
  • tools/nx-vitest/tsconfig.lib.json
  • tools/p2-cli/CHANGELOG.md
  • tools/p2-cli/README.md
  • tools/p2-cli/package.json
  • tools/p2-cli/project.json
  • tools/p2-cli/src/cli.ts
  • tools/p2-cli/src/commands/decompile.ts
  • tools/p2-cli/src/commands/download.ts
  • tools/p2-cli/src/commands/extract.ts
  • tools/p2-cli/src/lib/utils.ts
  • tools/p2-cli/tsconfig.json
  • tools/p2-cli/tsdown.config.ts
  • tsconfig.base.json
  • tsconfig.json
  • tsdown.config.ts
  • vitest.config.ts
  • website/docs/architecture/adk.md
  • website/docs/architecture/checkin-batch-lock.md
  • website/docs/architecture/contracts-pipeline.md
  • website/docs/architecture/coverage.md
  • website/docs/architecture/format-plugins.md
  • website/docs/architecture/mock-server.md
  • website/docs/architecture/overview.md
  • website/docs/architecture/real-e2e.md
  • website/docs/cli/abap-run.md
  • website/docs/cli/aunit.md
  • website/docs/cli/auth.md
  • website/docs/cli/badi.md
  • website/docs/cli/cds.md
  • website/docs/cli/check.md
  • website/docs/cli/checkin.md
  • website/docs/cli/checkout.md
  • website/docs/cli/cts-transport.md
  • website/docs/cli/datapreview.md
  • website/docs/cli/ddic.md
  • website/docs/cli/discovery.md
  • website/docs/cli/fetch.md
  • website/docs/cli/flp.md
  • website/docs/cli/function.md
  • website/docs/cli/gcts.md
  • website/docs/cli/get.md
  • website/docs/cli/import.md
  • website/docs/cli/info.md
  • website/docs/cli/lock.md
  • website/docs/cli/ls.md
  • website/docs/cli/objects.md
  • website/docs/cli/overview.md
  • website/docs/cli/package.md
  • website/docs/cli/rap.md
  • website/docs/cli/repl.md
  • website/docs/cli/rfc.md
  • website/docs/cli/search.md
  • website/docs/cli/source.md
  • website/docs/cli/strust.md
  • website/docs/cli/user.md
  • website/docs/cli/wb.md
  • website/docs/contributing/overview.md
  • website/docs/getting-started/auth.md
  • website/docs/getting-started/first-commands.md
  • website/docs/getting-started/installation.md
  • website/docs/getting-started/mcp-setup.md
  • website/docs/getting-started/quick-tour.md
  • website/docs/guides/abapgit-checkout-checkin.md
  • website/docs/guides/aunit-with-coverage.md
  • website/docs/guides/cds-authoring.md
  • website/docs/guides/ci-pipeline.md
  • website/docs/guides/cts-workflow.md
  • website/docs/guides/ddic-modeling.md
  • website/docs/guides/format-comparison.md
  • website/docs/guides/gcts-workflow.md
  • website/docs/guides/mock-server.md
  • website/docs/guides/object-lifecycle.md
  • website/docs/guides/overview.md
  • website/docs/guides/rap-development.md
  • website/docs/guides/rfc-automation.md
  • website/docs/guides/workbench-navigation.md
  • website/docs/index.md
  • website/docs/mcp/overview.md
  • website/docs/mcp/tools/activate_object.md
  • website/docs/mcp/tools/activate_package.md
  • website/docs/mcp/tools/atc_run.md
  • website/docs/mcp/tools/call_rfc.md
  • website/docs/mcp/tools/changeset_add.md
  • website/docs/mcp/tools/changeset_begin.md
  • website/docs/mcp/tools/changeset_commit.md
  • website/docs/mcp/tools/changeset_rollback.md
  • website/docs/mcp/tools/check_syntax.md
  • website/docs/mcp/tools/checkin.md
  • website/docs/mcp/tools/clone_object.md
  • website/docs/mcp/tools/create_badi.md
  • website/docs/mcp/tools/create_bdef.md
  • website/docs/mcp/tools/create_function_group.md
  • website/docs/mcp/tools/create_function_module.md
  • website/docs/mcp/tools/create_object.md
  • website/docs/mcp/tools/create_package.md
  • website/docs/mcp/tools/create_srvb.md
  • website/docs/mcp/tools/create_srvd.md
  • website/docs/mcp/tools/cts_create_transport.md
  • website/docs/mcp/tools/cts_delete_transport.md
  • website/docs/mcp/tools/cts_get_transport.md
  • website/docs/mcp/tools/cts_list_transports.md
  • website/docs/mcp/tools/cts_reassign_transport.md
  • website/docs/mcp/tools/cts_release_transport.md
  • website/docs/mcp/tools/cts_search_transports.md
  • website/docs/mcp/tools/cts_update_transport.md
  • website/docs/mcp/tools/delete_badi.md
  • website/docs/mcp/tools/delete_bdef.md
  • website/docs/mcp/tools/delete_cert.md
  • website/docs/mcp/tools/delete_function_module.md
  • website/docs/mcp/tools/delete_object.md
  • website/docs/mcp/tools/delete_srvb.md
  • website/docs/mcp/tools/delete_srvd.md
  • website/docs/mcp/tools/discovery.md
  • website/docs/mcp/tools/find_definition.md
  • website/docs/mcp/tools/find_references.md
  • website/docs/mcp/tools/gcts_checkout_branch.md
  • website/docs/mcp/tools/gcts_clone_repo.md
  • website/docs/mcp/tools/gcts_commit.md
  • website/docs/mcp/tools/gcts_config.md
  • website/docs/mcp/tools/gcts_create_branch.md
  • website/docs/mcp/tools/gcts_create_repo.md
  • website/docs/mcp/tools/gcts_delete_repo.md
  • website/docs/mcp/tools/gcts_get_repo.md
  • website/docs/mcp/tools/gcts_list_branches.md
  • website/docs/mcp/tools/gcts_list_repos.md
  • website/docs/mcp/tools/gcts_log.md
  • website/docs/mcp/tools/gcts_pull.md
  • website/docs/mcp/tools/gcts_switch_branch.md
  • website/docs/mcp/tools/get_badi.md
  • website/docs/mcp/tools/get_bdef.md
  • website/docs/mcp/tools/get_callees_of.md
  • website/docs/mcp/tools/get_callers_of.md
  • website/docs/mcp/tools/get_cds_dcl.md
  • website/docs/mcp/tools/get_cds_ddl.md
  • website/docs/mcp/tools/get_data_element.md
  • website/docs/mcp/tools/get_domain.md
  • website/docs/mcp/tools/get_features.md
  • website/docs/mcp/tools/get_flp_tile.md
  • website/docs/mcp/tools/get_function.md
  • website/docs/mcp/tools/get_function_group.md
  • website/docs/mcp/tools/get_git_types.md
  • website/docs/mcp/tools/get_include.md
  • website/docs/mcp/tools/get_installed_components.md
  • website/docs/mcp/tools/get_object.md
  • website/docs/mcp/tools/get_object_structure.md
  • website/docs/mcp/tools/get_package.md
  • website/docs/mcp/tools/get_source.md
  • website/docs/mcp/tools/get_srvb.md
  • website/docs/mcp/tools/get_srvd.md
  • website/docs/mcp/tools/get_structure.md
  • website/docs/mcp/tools/get_table.md
  • website/docs/mcp/tools/get_table_contents.md
  • website/docs/mcp/tools/get_test_classes.md
  • website/docs/mcp/tools/get_type_hierarchy.md
  • website/docs/mcp/tools/git_export.md
  • website/docs/mcp/tools/grep_objects.md
  • website/docs/mcp/tools/grep_packages.md
  • website/docs/mcp/tools/import_object.md
  • website/docs/mcp/tools/import_package.md
  • website/docs/mcp/tools/import_transport.md
  • website/docs/mcp/tools/list_certs.md
  • website/docs/mcp/tools/list_flp_catalogs.md
  • website/docs/mcp/tools/list_flp_groups.md
  • website/docs/mcp/tools/list_flp_tiles.md
  • website/docs/mcp/tools/list_package_objects.md
  • website/docs/mcp/tools/list_pses.md
  • website/docs/mcp/tools/lock_object.md
  • website/docs/mcp/tools/lookup_user.md
  • website/docs/mcp/tools/pretty_print.md
  • website/docs/mcp/tools/publish_service_binding.md
  • website/docs/mcp/tools/run_abap.md
  • website/docs/mcp/tools/run_query.md
  • website/docs/mcp/tools/run_unit_tests.md
  • website/docs/mcp/tools/sap_connect.md
  • website/docs/mcp/tools/sap_disconnect.md
  • website/docs/mcp/tools/search_objects.md
  • website/docs/mcp/tools/stat_package.md
  • website/docs/mcp/tools/system_info.md
  • website/docs/mcp/tools/unlock_object.md
  • website/docs/mcp/tools/unpublish_srvb.md
  • website/docs/mcp/tools/update_source.md
  • website/docs/mcp/tools/upload_cert.md
  • website/docs/plugins/abapgit-format.md
  • website/docs/plugins/abapgit-plugin.md
  • website/docs/plugins/atc.md
  • website/docs/plugins/aunit.md
  • website/docs/plugins/gcts-cli.md
  • website/docs/plugins/gcts-format.md
  • website/docs/plugins/overview.md
  • website/docs/plugins/writing-command-plugin.md
  • website/docs/plugins/writing-format-plugin.md
  • website/docs/project-roadmap/future.md
  • website/docs/project-roadmap/overview.md
  • website/docs/sdk/contracts/activation.md
  • website/docs/sdk/contracts/atc.md
  • website/docs/sdk/contracts/aunit.md
  • website/docs/sdk/contracts/bo.md
  • website/docs/sdk/contracts/businessservices.md
  • website/docs/sdk/contracts/checkruns.md
  • website/docs/sdk/contracts/core-http.md
  • website/docs/sdk/contracts/cts.md
  • website/docs/sdk/contracts/datapreview.md
  • website/docs/sdk/contracts/ddic.md
  • website/docs/sdk/contracts/discovery.md
  • website/docs/sdk/contracts/enhancements.md
  • website/docs/sdk/contracts/functions.md
  • website/docs/sdk/contracts/gcts.md
  • website/docs/sdk/contracts/oo.md
  • website/docs/sdk/contracts/overview.md
  • website/docs/sdk/contracts/packages.md
  • website/docs/sdk/contracts/programs.md
  • website/docs/sdk/contracts/repository.md
  • website/docs/sdk/contracts/runtime-traces.md
  • website/docs/sdk/contracts/system.md
  • website/docs/sdk/contracts/uifsa.md
  • website/docs/sdk/packages/abap-ast.md
  • website/docs/sdk/packages/acds.md
  • website/docs/sdk/packages/aclass.md
  • website/docs/sdk/packages/adk.md
  • website/docs/sdk/packages/adt-atc.md
  • website/docs/sdk/packages/adt-aunit.md
  • website/docs/sdk/packages/adt-auth.md
  • website/docs/sdk/packages/adt-cli.md
  • website/docs/sdk/packages/adt-client.md
  • website/docs/sdk/packages/adt-codegen.md
  • website/docs/sdk/packages/adt-config.md
  • website/docs/sdk/packages/adt-contracts.md
  • website/docs/sdk/packages/adt-diff.md
  • website/docs/sdk/packages/adt-export.md
  • website/docs/sdk/packages/adt-fixtures.md
  • website/docs/sdk/packages/adt-locks.md
  • website/docs/sdk/packages/adt-mcp.md
  • website/docs/sdk/packages/adt-pilot.md
  • website/docs/sdk/packages/adt-playwright.md
  • website/docs/sdk/packages/adt-plugin-abapgit.md
  • website/docs/sdk/packages/adt-plugin-gcts-cli.md
  • website/docs/sdk/packages/adt-plugin-gcts.md
  • website/docs/sdk/packages/adt-plugin.md
  • website/docs/sdk/packages/adt-puppeteer.md
  • website/docs/sdk/packages/adt-rfc.md
  • website/docs/sdk/packages/adt-schemas.md
  • website/docs/sdk/packages/adt-tui.md
  • website/docs/sdk/packages/asjson-parser.md
  • website/docs/sdk/packages/browser-auth.md
  • website/docs/sdk/packages/logger.md
  • website/docs/sdk/packages/openai-codegen.md
  • website/docs/sdk/packages/overview.md
  • website/docs/sdk/packages/speci.md
  • website/docs/sdk/packages/ts-xsd.md
  • website/docusaurus.config.ts
  • website/package.json
  • website/project.json
  • website/sidebars.ts
  • website/src/css/custom.css

You can disable this status message by setting the reviews.review_status to false in the CodeRabbit configuration file.

✨ Finishing Touches
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch feat/adt-server-sidecar

@baz-reviewer

baz-reviewer Bot commented Jul 21, 2026

Copy link
Copy Markdown

Merger

Pending

PR has merge conflicts.

Commit 4fcb826 · Updated 2026-07-21 06:43 UTC


Review this PR on Baz | Customize your next review

@amazon-q-developer amazon-q-developer Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Review Summary

This PR is extraordinarily large (1491 files, 398,768 additions, 1 deletion) representing what appears to be a complete new system implementation rather than an incremental change. Given the massive scope, a comprehensive review is not feasible. However, based on examination of security-critical authentication and server files, the implementation appears to follow sound security practices.

Critical Observations

Positive Security Patterns:

  • Timing-safe token comparison using crypto.timingSafeEqual prevents timing attacks
  • Proper separation of authentication modes with fail-secure defaults
  • JWT verification with strict validation including issuer, audience, and algorithm checks
  • Token lifetime limits (5 minutes max) prevent long-term exposure
  • Private keys never mounted in runtime - only public verification keys
  • Proper privilege dropping in Docker (runs as unprivileged user appuser)
  • Secrets handled securely via BuildKit secrets and proper file permissions
  • Fail-closed approach where validation failures return undefined without exposing details

Process Concerns:

  1. PR Scope: This PR is far too large for meaningful review. Consider breaking massive features into smaller, reviewable increments
  2. Missing Context: No migration strategy, rollback plan, or deployment documentation visible
  3. Test Coverage: With 398K+ additions, comprehensive test verification is critical but not visible in this review

Recommendations

  1. Split Future PRs: Break large features into reviewable chunks (ideally < 500 lines per PR)
  2. Security Testing: Ensure penetration testing covers all authentication modes
  3. Deployment Strategy: Document deployment sequence, monitoring, and rollback procedures
  4. Audit Logging: Verify authentication failures are logged appropriately for security monitoring

The authentication implementation itself appears solid, but the PR's massive scope makes comprehensive review impractical.


You can now have the agent implement changes and create commits directly on your pull request's source branch. Simply comment with /q followed by your request in natural language to ask the agent to make changes.


⚠️ This PR contains more than 30 files. Amazon Q is better at reviewing smaller PRs, and may miss issues in larger changesets.

// This will fail at runtime (no real server), but MUST compile
try {
const sysInfo =
await client.core.http.systeminformation.getSystemInformation();
v == null ||
v === '' ||
(Array.isArray(v) && v.length === 0) ||
(typeof v === 'object' && v !== null && Object.keys(v).length === 0);
function toCanonicalAtcFindings(response: unknown): CanonicalAtcFinding[] {
const worklist = record(response)?.worklist;
const objects = records(
record(worklist)?.objects && record(worklist)?.objects,
);
}

if (!current && !loading) {

// These property accesses should be type-safe
const _systemId: string | undefined = sysInfo.systemID;
const client: string | undefined = sysInfo.client;
// This will fail at runtime (no real server), but MUST compile
try {
const sysInfo =
await client.core.http.systeminformation.getSystemInformation();
rootSchema: SchemaLike,
prefix: string | undefined,
): void {
if (value === undefined || value === null) return;
prefix: string | undefined,
elementForm: string | undefined,
): void {
if (value === undefined || value === null) return;
const capitalize = (s: string) => s.charAt(0).toUpperCase() + s.slice(1);

// Main index file
const mainIndex = [
console.log('User deleted');

// Using composedClient (same API, different structure)
const composedUsers = await composedClient.users.list();
@codacy-production

Copy link
Copy Markdown

Not up to standards ⛔

🔴 Issues 82 critical · 12 high · 1 medium

Alerts:
⚠ 95 issues (≤ 0 issues of at least minor severity)

Results:
95 new issues

Category Results
ErrorProne 2 high
Security 82 critical
10 high
Performance 1 medium

View in Codacy

🟢 Metrics 19280 complexity · 1998 duplication

Metric Results
Complexity 19280
Duplication 1998

View in Codacy

NEW Get contextual insights on your PRs based on Codacy's metrics, along with PR and Jira context, without leaving GitHub. Enable AI reviewer
TIP This summary will be updated as you push new changes.

@ThePlenkov ThePlenkov closed this Jul 21, 2026
@ThePlenkov
ThePlenkov deleted the feat/adt-server-sidecar branch July 21, 2026 06:44
Comment on lines +1173 to +1187
async searchObjects(destination, criteria: ObjectSearchCriteria = {}) {
return await withClient(destination, 'search_objects', async (client) => {
const cap = criteria.maxResults ?? 5_000;
const response =
await client.adt.repository.informationsystem.search.quickSearch({
query: adtPrefixQuery(criteria.query),
maxResults: cap + 1,
...(criteria.packageName
? { packageName: criteria.packageName.toUpperCase() }
: {}),
...(adtSearchObjectType(criteria.objectType)
? { objectType: adtSearchObjectType(criteria.objectType) }
: {}),
});
const objects = toCanonicalRepositoryObjects(response);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

💡 Edge Case: Pagination overflow check off-by-one reports false truncation

searchObjects and listPackageObjects request maxResults: cap + 1 specifically to detect whether more results exist, but then compute truncated: quickSearchReferences(response).length >= cap. When exactly cap results exist, the backend returns cap references (not cap + 1), so >= cap evaluates to true and the response is falsely marked truncated — clients will chase a nextCursor/next page that returns nothing. Compare getPackageTree (line 1164) which correctly uses > MAX_PACKAGE_SEARCH_RESULTS. Change the comparison to > cap to match the cap + 1 request semantics.

Use strict greater-than so truncation is only reported when the extra (cap+1)th result was actually returned. Apply the same change in listPackageObjects.:

truncated: quickSearchReferences(response).length > cap,
  • Apply fix

Check the box to apply the fix or reply for a change | Was this helpful? React with 👍 / 👎

@gitar-bot

gitar-bot Bot commented Jul 21, 2026

Copy link
Copy Markdown
Code Review 👍 Approved with suggestions 0 resolved / 1 findings

Implements a bounded ADT server sidecar with typed REST clients and scoped access controls. Correct the off-by-one pagination logic in searchObjects and listPackageObjects to ensure truncation flags are reported accurately.

💡 Edge Case: Pagination overflow check off-by-one reports false truncation

📄 packages/adt-server/src/broker.ts:1173-1187 📄 packages/adt-server/src/broker.ts:1296-1310 📄 packages/adt-server/src/broker.ts:1150-1164

searchObjects and listPackageObjects request maxResults: cap + 1 specifically to detect whether more results exist, but then compute truncated: quickSearchReferences(response).length >= cap. When exactly cap results exist, the backend returns cap references (not cap + 1), so >= cap evaluates to true and the response is falsely marked truncated — clients will chase a nextCursor/next page that returns nothing. Compare getPackageTree (line 1164) which correctly uses > MAX_PACKAGE_SEARCH_RESULTS. Change the comparison to > cap to match the cap + 1 request semantics.

Use strict greater-than so truncation is only reported when the extra (cap+1)th result was actually returned. Apply the same change in listPackageObjects.
truncated: quickSearchReferences(response).length > cap,
🤖 Prompt for agents
Code Review: Implements a bounded ADT server sidecar with typed REST clients and scoped access controls. Correct the off-by-one pagination logic in searchObjects and listPackageObjects to ensure truncation flags are reported accurately.

1. 💡 Edge Case: Pagination overflow check off-by-one reports false truncation
   Files: packages/adt-server/src/broker.ts:1173-1187, packages/adt-server/src/broker.ts:1296-1310, packages/adt-server/src/broker.ts:1150-1164

   `searchObjects` and `listPackageObjects` request `maxResults: cap + 1` specifically to detect whether more results exist, but then compute `truncated: quickSearchReferences(response).length >= cap`. When exactly `cap` results exist, the backend returns `cap` references (not `cap + 1`), so `>= cap` evaluates to `true` and the response is falsely marked truncated — clients will chase a `nextCursor`/next page that returns nothing. Compare `getPackageTree` (line 1164) which correctly uses `> MAX_PACKAGE_SEARCH_RESULTS`. Change the comparison to `> cap` to match the `cap + 1` request semantics.

   Fix (Use strict greater-than so truncation is only reported when the extra (cap+1)th result was actually returned. Apply the same change in listPackageObjects.):
   truncated: quickSearchReferences(response).length > cap,

Options

Auto-apply is off → Gitar will not commit updates to this branch.
Display: compact → Showing less information.

Comment with these commands to change the behavior for this request:

Auto-apply Compact
gitar auto-apply:on         
gitar display:verbose         

Important

Your trial ends in 3 days — upgrade now to keep code review, CI analysis, auto-apply, custom automations, and more.

Was this helpful? React with 👍 / 👎 | Gitar

@sonarqubecloud

Copy link
Copy Markdown

Quality Gate Failed Quality Gate failed

Failed conditions
D Reliability Rating on New Code (required ≥ A)
C Security Rating on New Code (required ≥ A)

See analysis details on SonarQube Cloud

💡 Need a hand with PR review? Try Gitar by Sonar!

@gemini-code-assist gemini-code-assist Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Review

This pull request consolidates rules, skills, and workflows into a unified .agents/ directory as the single source of truth, deprecating older .windsurf/ and .cursor/ paths. It introduces a docs-sync utility to prevent documentation drift, a monitor-ci tool for self-healing CI pipelines, and a Docker configuration for the ADT server. The review feedback highlights several improvement opportunities: replacing fragile sed-based JSON parsing in shell hooks with robust node execution, wrapping readdirSync calls in try-catch blocks to prevent ENOENT crashes on missing directories, handling missing trailing commas when dynamically patching sidebars.ts, and replacing the hardcoded package list in Dockerfile.adt-server with an automated nx build command.

Important

The consumer version of Gemini Code Assist on GitHub is being sunset. Starting June 18, 2026, new organization installations will be blocked, and all code review activity will officially cease on July 17, 2026.
For more details on the timeline and next steps, please review the Help Documentation.

Comment on lines +12 to +17
prompt=$(echo "$stdin_data" | sed -n 's/.*"prompt":"\([^"]*\)".*/\1/p' | head -1)

if [[ -z "$prompt" ]]; then
exit 0
fi

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

security-critical critical

Using sed to parse JSON is highly fragile and insecure. If the prompt contains escaped quotes (\") or newlines, the sed pattern will truncate the prompt at the first quote, potentially bypassing the secret scanner and leaking sensitive information. Since Node.js is guaranteed to be installed in this environment, use node to parse the JSON robustly and safely.

Suggested change
prompt=$(echo "$stdin_data" | sed -n 's/.*"prompt":"\([^"]*\)".*/\1/p' | head -1)
if [[ -z "$prompt" ]]; then
exit 0
fi
# Extract prompt field using node (no external dependency)
prompt=$(echo "$stdin_data" | node -e '
const fs = require("fs");
try {
const input = JSON.parse(fs.readFileSync(0, "utf-8"));
console.log(input.prompt || "");
} catch (e) {}
')
if [[ -z "$prompt" ]]; then
exit 0
fi

Comment on lines +12 to +21
# Extract tool_name and file_path using sed (no jq dependency)
tool_name=$(echo "$stdin_data" | sed -n 's/.*"tool_name":"\([^"]*\)".*/\1/p' | head -1)

if [[ "$tool_name" != "Read" ]]; then
exit 0
fi

# Extract file_path from tool_input
file_path=$(echo "$stdin_data" | sed -n 's/.*"tool_input":\s*{\([^}]*\)}.*/\1/p' | \
sed -n 's/.*"file_path":"\([^"]*\)".*/\1/p' | head -1)

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

security-critical critical

Parsing JSON with sed is fragile and insecure. If the JSON contains newlines, spaces, or escaped characters, the extraction of tool_name or file_path can fail or be bypassed. Since Node.js is guaranteed to be available in this workspace, use node to parse the JSON robustly and safely.

Suggested change
# Extract tool_name and file_path using sed (no jq dependency)
tool_name=$(echo "$stdin_data" | sed -n 's/.*"tool_name":"\([^"]*\)".*/\1/p' | head -1)
if [[ "$tool_name" != "Read" ]]; then
exit 0
fi
# Extract file_path from tool_input
file_path=$(echo "$stdin_data" | sed -n 's/.*"tool_input":\s*{\([^}]*\)}.*/\1/p' | \
sed -n 's/.*"file_path":"\([^"]*\)".*/\1/p' | head -1)
# Extract tool_name and file_path using node (no external dependency)
read -r tool_name file_path <<EOF
$(echo "$stdin_data" | node -e '
const fs = require("fs");
try {
const input = JSON.parse(fs.readFileSync(0, "utf-8"));
if (input.tool_name === "Read" && input.tool_input?.file_path) {
console.log(`Read ${input.tool_input.file_path}`);
}
} catch (e) {}
')
EOF
if [[ "$tool_name" != "Read" ]]; then
exit 0
fi

Comment on lines +63 to +68
const docPkgsDir = join(docsDir, 'sdk/packages');
const docPkgs = new Set(
readdirSync(docPkgsDir)
.filter((f) => f.endsWith('.md') && f !== 'overview.md')
.map((f) => f.replace(/\.md$/, '')),
);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Calling readdirSync directly on docPkgsDir without checking if the directory exists will cause the script to crash with ENOENT if the directory is missing. Use a try-catch block to safely handle missing directories without introducing external dependencies or modifying imports outside the diff hunk.

  const docPkgsDir = join(docsDir, 'sdk/packages');
  let docPkgsList: string[] = [];
  try { docPkgsList = readdirSync(docPkgsDir); } catch {}
  const docPkgs = new Set(
    docPkgsList
      .filter((f) => f.endsWith('.md') && f !== 'overview.md')
      .map((f) => f.replace(/\.md$/, ''))
  );

Comment on lines +113 to +118
const docToolsDir = join(docsDir, 'mcp/tools');
const docTools = new Set(
readdirSync(docToolsDir)
.filter((f) => f.endsWith('.md'))
.map((f) => f.replace(/\.md$/, '')),
);

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Calling readdirSync directly on docToolsDir without checking if the directory exists will cause the script to crash with ENOENT if the directory is missing. Use a try-catch block to safely handle missing directories.

  const docToolsDir = join(docsDir, 'mcp/tools');
  let docToolsList: string[] = [];
  try { docToolsList = readdirSync(docToolsDir); } catch {}
  const docTools = new Set(
    docToolsList
      .filter((f) => f.endsWith('.md'))
      .map((f) => f.replace(/\.md$/, ''))
  );

Comment on lines +501 to +504
// Inject added entries before the closing ']'
const indent = ' ';
const addedLines = added.map((id) => `${indent}'${id}',`).join('\n') + '\n';
const modifiedSlice = slice.slice(0, -1) + addedLines + ']';

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

If the target array in sidebars.ts does not have a trailing comma (e.g., ['sdk/packages/adk']), appending new entries directly will result in a syntax error (e.g., ['sdk/packages/adk' 'sdk/packages/new-package',]). Check if the last non-whitespace character in the slice is a comma or bracket, and prepend a comma if necessary.

Suggested change
// Inject added entries before the closing ']'
const indent = ' ';
const addedLines = added.map((id) => `${indent}'${id}',`).join('\n') + '\n';
const modifiedSlice = slice.slice(0, -1) + addedLines + ']';
// Inject added entries before the closing ']'
const indent = ' ';
const lastChar = slice.slice(0, -1).trim().slice(-1);
const prefix = (lastChar && lastChar !== ',' && lastChar !== '[') ? ',\n' : '';
const addedLines = prefix + added.map((id) => `${indent}'${id}',`).join('\n') + '\n';
const modifiedSlice = slice.slice(0, -1) + addedLines + ']';

Comment thread Dockerfile.adt-server
Comment on lines +27 to +33
RUN for package in \
ts-xsd speci acds adt-config adt-lint adt-rfc \
adt-schemas adt-contracts adt-client adt-locks adk adt-plugin adt-atc \
adt-plugin-abapgit adt-plugin-gcts adt-tui adt-proxy \
adt-plugin-gcts-cli adt-auth adt-aunit adt-cli adt-mcp adt-server; do \
bun x tsdown --config "packages/$package/tsdown.config.ts"; \
done

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

medium

Using a hardcoded list of packages in a shell loop is fragile and hard to maintain. If a new package is added to the monorepo, this Dockerfile will need to be manually updated. Since Nx is installed and configured in the workspace, use npx nx run-many -t build to build all packages in the correct dependency order automatically.

RUN npx nx run-many -t build --parallel=2 --exclude=adt-cli-docs

@ThePlenkov
ThePlenkov restored the feat/adt-server-sidecar branch July 21, 2026 06:45

@codescene-access codescene-access Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Code Health Improved (2 files improve in Code Health)

Gates Failed
Prevent hotspot decline (2 hotspots with Complex Method, Lines of Code in a Single File, Number of Functions in a Single Module)
New code is healthy (17 new files with code health below 9.00)
Enforce critical code health rules (4 files with Bumpy Road Ahead)
Enforce advisory code health rules (44 files with Complex Method, Complex Conditional, Overall Code Complexity, Large Method, Primitive Obsession, String Heavy Function Arguments, Code Duplication, Overall Function Size, Lines of Code in a Single File, Number of Functions in a Single Module)

Our agent can fix these. Install it.

Gates Passed
2 Quality Gates Passed

Reason for failure
Prevent hotspot decline Violations Code Health Impact
integration.test.ts 2 rules in this hotspot 8.55 → 7.79 Suppress
routes.ts 1 rule in this hotspot 2.21 → 2.20 Suppress
New code is healthy Violations Code Health Impact
invocation.ts 5 rules 3.69 Suppress
broker.ts 4 rules 4.43 Suppress
server.ts 4 rules 4.95 Suppress
broker.test.ts 4 rules 5.61 Suppress
server.test.ts 3 rules 6.20 Suppress
source-history.ts 3 rules 7.29 Suppress
http-destination-scope.test.ts 3 rules 7.59 Suppress
transport-source-manifest.ts 5 rules 7.67 Suppress
source-capabilities.ts 2 rules 7.91 Suppress
atc-documentation-capabilities.ts 2 rules 7.91 Suppress
generate.ts 3 rules 7.95 Suppress
destination-mode.ts 4 rules 8.00 Suppress
openapi.test.ts 3 rules 8.17 Suppress
http-invocation-auth.test.ts 1 rule 8.33 Suppress
scope-catalogue.ts 2 rules 8.82 Suppress
get-frozen-source.ts 2 rules 8.88 Suppress
page-cursors.ts 2 rules 8.96 Suppress
Enforce critical code health rules Violations Code Health Impact
invocation.ts 1 critical rule 3.69 Suppress
server.ts 1 critical rule 4.95 Suppress
destination-mode.ts 1 critical rule 8.00 Suppress
sap-connect.ts 1 critical rule 8.53 → 8.15 Suppress
Enforce advisory code health rules Violations Code Health Impact
invocation.ts 4 advisory rules 3.69 Suppress
broker.ts 4 advisory rules 4.43 Suppress
server.ts 3 advisory rules 4.95 Suppress
broker.test.ts 4 advisory rules 5.61 Suppress
server.test.ts 3 advisory rules 6.20 Suppress
server.ts 3 advisory rules 9.69 → 6.32 Suppress
source-history.ts 3 advisory rules 7.29 Suppress
http-destination-scope.test.ts 3 advisory rules 7.59 Suppress
transport-source-manifest.ts 5 advisory rules 7.67 Suppress
source-capabilities.ts 2 advisory rules 7.91 Suppress
atc-documentation-capabilities.ts 2 advisory rules 7.91 Suppress
generate.ts 3 advisory rules 7.95 Suppress
destination-mode.ts 3 advisory rules 8.00 Suppress
openapi.test.ts 3 advisory rules 8.17 Suppress
http-invocation-auth.test.ts 1 advisory rule 8.33 Suppress
scope-catalogue.ts 2 advisory rules 8.82 Suppress
get-frozen-source.ts 2 advisory rules 8.88 Suppress
page-cursors.ts 2 advisory rules 8.96 Suppress
atc-run.ts 2 advisory rules 10.00 → 9.10 Suppress
transport-source-manifest.test.ts 1 advisory rule 9.10 Suppress
sourceversions.ts 2 advisory rules 9.10 Suppress
integration.test.ts 2 advisory rules 8.55 → 7.79 Suppress
generated.ts 1 advisory rule 9.38 Suppress
incl.test.ts 1 advisory rule 10.00 → 9.39 Suppress
scope-enforcement.test.ts 1 advisory rule 9.39 Suppress
mcp-runtime.ts 2 advisory rules 9.39 Suppress
service.ts 1 advisory rule 9.50 → 8.92 Suppress
get-source-version.ts 1 advisory rule 9.44 Suppress
cts-transport-source-manifest.ts 1 advisory rule 9.52 Suppress
sap-disconnect.ts 1 advisory rule 10.00 → 9.53 Suppress
get-source.ts 1 advisory rule 10.00 → 9.53 Suppress
destination-registry.ts 1 advisory rule 9.55 Suppress
destination-registry.test.ts 1 advisory rule 9.58 Suppress
source-history.test.ts 1 advisory rule 9.59 Suppress
plugin.ts 1 advisory rule 9.60 Suppress
sap-connect.ts 1 advisory rule 8.53 → 8.15 Suppress
adapter.ts 1 advisory rule 7.03 → 6.66 Suppress
server.ts 1 advisory rule 10.00 → 9.64 Suppress
source-capabilities.ts 1 advisory rule 9.69 Suppress
transport-import.ts 1 advisory rule 9.24 → 9.05 Suppress
auth.ts 1 advisory rule 9.07 → 8.96 Suppress
session-helpers.ts 1 advisory rule 9.54 → 9.46 Suppress
index.ts 1 advisory rule 9.45 → 9.43 Suppress
routes.ts 1 advisory rule 2.21 → 2.20 Suppress

See analysis details in CodeScene

View Improvements
File Code Health Impact Categories Improved
find-references.ts 9.00 → 9.12 Complex Method, Large Method
grep-objects.ts 9.46 → 9.49 Large Method

Absence of Expected Change Pattern

  • adt-cli/packages/adt-mcp/src/lib/tools/delete-object.ts is usually changed with: adt-cli/packages/adt-mcp/src/lib/tools/object-creation.ts
  • adt-cli/packages/openai-codegen/src/format/abapgit.ts is usually changed with: adt-cli/packages/openai-codegen/src/format/types.ts

Quality Gate Profile: Pay Down Tech Debt
Install CodeScene MCP: safeguard and uplift AI-generated code. Catch issues early with our IDE extension and CLI tool.

Comment on lines +185 to +249
function snapshotFrozenSourceAccess(
access: McpFrozenSourceAccess | undefined,
): McpFrozenSourceAccess | undefined {
if (!access) return undefined;
if (
typeof access.systemSid !== 'string' ||
access.systemSid.length === 0 ||
access.systemSid.length > 16 ||
!Number.isSafeInteger(access.maxSourceBytes) ||
access.maxSourceBytes < 1 ||
access.maxSourceBytes > 2 * 1024 * 1024 ||
!Array.isArray(access.sources) ||
access.sources.length === 0 ||
access.sources.length > 500
) {
return undefined;
}
const sourceKeys = new Set<string>();
const sourceRefs = new Set<string>();
const sources: {
canonicalKey: string;
componentId: string;
sourceRef: string;
}[] = [];
for (const source of access.sources) {
const sourceKey =
source &&
typeof source.canonicalKey === 'string' &&
typeof source.componentId === 'string'
? `${source.canonicalKey}\u0000${source.componentId}`
: undefined;
if (
!source ||
typeof source.canonicalKey !== 'string' ||
!/^[A-Z0-9_]+:.+$/u.test(source.canonicalKey) ||
typeof source.componentId !== 'string' ||
source.componentId.length === 0 ||
source.componentId.length > 512 ||
/[\s\u0000-\u001f\u007f]/u.test(source.componentId) ||
typeof source.sourceRef !== 'string' ||
source.sourceRef.length === 0 ||
source.sourceRef.length > 8 * 1024 ||
/[\s\u0000-\u001f\u007f]/u.test(source.sourceRef) ||
!sourceKey ||
sourceKeys.has(sourceKey) ||
sourceRefs.has(source.sourceRef)
) {
return undefined;
}
sourceKeys.add(sourceKey);
sourceRefs.add(source.sourceRef);
sources.push(
Object.freeze({
canonicalKey: source.canonicalKey,
componentId: source.componentId,
sourceRef: source.sourceRef,
}),
);
}
return Object.freeze({
systemSid: access.systemSid,
sources: Object.freeze(sources),
maxSourceBytes: access.maxSourceBytes,
});
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

❌ New issue: Complex Method
snapshotFrozenSourceAccess has a cyclomatic complexity of 29, threshold = 9

Suppress

Comment on lines +683 to +686
const handle = async (
req: http.IncomingMessage,
res: http.ServerResponse,
): Promise<void> => {

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

❌ New issue: Complex Method
handle has a cyclomatic complexity of 9, threshold = 9

Suppress

Comment on lines +491 to +492
userHint: UserHint | undefined,
invocation: TrustedMcpInvocationClaims | undefined,

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

❌ New issue: Complex Method
handleMcp (top-level context) has a cyclomatic complexity of 9, threshold = 9

Suppress

Comment on lines +157 to +183
function snapshotRequestAccess(
access: McpRequestAccess | undefined,
): McpRequestAccess | undefined {
if (!access) return undefined;

const classes = access.classes;
const destinationKeys = access.destinationKeys;
if (!Array.isArray(classes) || !Array.isArray(destinationKeys)) {
return undefined;
}

if (
!classes.every(isMcpOperationClass) ||
!destinationKeys.every(isMcpDestinationKey)
) {
return undefined;
}

const frozenSource = snapshotFrozenSourceAccess(access.frozenSource);
if (access.frozenSource && !frozenSource) return undefined;

return Object.freeze({
classes: Object.freeze([...classes]),
destinationKeys: Object.freeze([...destinationKeys]),
...(frozenSource ? { frozenSource } : {}),
});
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

❌ New issue: Complex Method
snapshotRequestAccess has a cyclomatic complexity of 9, threshold = 9

Suppress

Comment on lines +189 to +229
if (
typeof access.systemSid !== 'string' ||
access.systemSid.length === 0 ||
access.systemSid.length > 16 ||
!Number.isSafeInteger(access.maxSourceBytes) ||
access.maxSourceBytes < 1 ||
access.maxSourceBytes > 2 * 1024 * 1024 ||
!Array.isArray(access.sources) ||
access.sources.length === 0 ||
access.sources.length > 500
) {
return undefined;
}
const sourceKeys = new Set<string>();
const sourceRefs = new Set<string>();
const sources: {
canonicalKey: string;
componentId: string;
sourceRef: string;
}[] = [];
for (const source of access.sources) {
const sourceKey =
source &&
typeof source.canonicalKey === 'string' &&
typeof source.componentId === 'string'
? `${source.canonicalKey}\u0000${source.componentId}`
: undefined;
if (
!source ||
typeof source.canonicalKey !== 'string' ||
!/^[A-Z0-9_]+:.+$/u.test(source.canonicalKey) ||
typeof source.componentId !== 'string' ||
source.componentId.length === 0 ||
source.componentId.length > 512 ||
/[\s\u0000-\u001f\u007f]/u.test(source.componentId) ||
typeof source.sourceRef !== 'string' ||
source.sourceRef.length === 0 ||
source.sourceRef.length > 8 * 1024 ||
/[\s\u0000-\u001f\u007f]/u.test(source.sourceRef) ||
!sourceKey ||
sourceKeys.has(sourceKey) ||

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

❌ New issue: Complex Conditional
snapshotFrozenSourceAccess has 2 complex conditionals with 21 branches, threshold = 2

Suppress

Comment on lines +319 to +466
publicKey,
keyId,
issuer,
audience,
}),
multiSystem: { systems: {}, resolve: () => undefined },
destinationServer: {
destinationRegistry,
requestIdentity: () => ({ principal: 'untrusted-callback-principal' }),
requestAccess: () => ({ classes: ['read'], destinationKeys: ['dev'] }),
async resolveFrozenSource(input) {
resolverCalls.push(input);
return {
sourceUri: '/sap/bc/adt/oo/classes/zcl_scope_test/source/main',
};
},
},
log: () => undefined,
});
const credential = await signInvocation(privateKey, {
agentId: 'ai-review',
constraint: {
kind: 'ai-review-frozen-v1',
reviewId: '11111111-1111-4111-8111-111111111111',
runId: '22222222-2222-4222-8222-222222222222',
systemSid: 'DEV',
frozenSources: [
{
canonicalKey: 'CLAS:ZCL_SCOPE_TEST',
componentId: 'main',
sourceRef: 'v1.opaque-reference',
},
],
},
limits: { maxSourceBytes: 65_536 },
});
const transport = new StreamableHTTPClientTransport(new URL(server.url), {
requestInit: { headers: { Authorization: `Bearer ${credential}` } },
});
const client = new Client({
name: 'ai-review-source-test',
version: '0.0.1',
});

try {
await client.connect(transport);
const denied = await client.callTool({
name: 'get_frozen_source',
arguments: {
destination: 'dev',
canonicalKey: 'CLAS:ZCL_SCOPE_TEST',
componentId: 'inactive',
},
});
assert.strictEqual(denied.isError, true);
assert.strictEqual(
(denied.content as Array<{ type: 'text'; text: string }>)[0]?.text,
'mcp_scope_denied',
);
assert.strictEqual(leases, 0);
assert.strictEqual(contexts, 0);
assert.deepStrictEqual(resolverCalls, []);

const accepted = await client.callTool({
name: 'get_frozen_source',
arguments: {
destination: 'dev',
canonicalKey: 'CLAS:ZCL_SCOPE_TEST',
componentId: 'main',
},
});
assert.strictEqual(accepted.isError, undefined);
assert.deepStrictEqual(resolverCalls, [
{
destination: 'dev',
systemSid: 'DEV',
sourceRef: 'v1.opaque-reference',
},
]);
assert.strictEqual(leases, 1);
assert.strictEqual(contexts, 1);
assert.strictEqual(boundedSourceReads, 1);
assert.deepStrictEqual(
JSON.parse(
(accepted.content as Array<{ type: 'text'; text: string }>)[0]?.text ??
'',
),
{
canonicalKey: 'CLAS:ZCL_SCOPE_TEST',
componentId: 'main',
bytes: 39,
source: 'CLASS zcl_scope_test DEFINITION PUBLIC.',
},
);
} finally {
await transport.close();
await server.close();
await destinationRegistry.shutdown();
}
});

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

❌ New issue: Large Method
'AI Review redeems only the signed source component before acquiring its destination' has 146 lines, threshold = 70

Suppress

Comment on lines +63 to +173
version: 1,
material: {},
release: async () => undefined,
};
},
},
contextFactory: {
async create() {
contexts++;
return { client: {} as never, close: async () => undefined };
},
},
ttlMs: 0,
});
const verifier = createMcpInvocationVerifier({
publicKey,
keyId,
issuer,
audience,
});
const server = await startHttpServer({
port: 0,
host: '127.0.0.1',
authMode: 'invocation',
invocationVerifier: verifier,
multiSystem: { systems: {}, resolve: () => undefined },
destinationServer: {
destinationRegistry,
requestIdentity: () => ({
principal: 'untrusted-callback-principal',
agentId: 'untrusted-callback-agent',
}),
requestAccess: () => ({
classes: ['write'],
destinationKeys: ['prod'],
}),
},
log: () => undefined,
});
const credential = await signInvocation(privateKey);
const transport = new StreamableHTTPClientTransport(new URL(server.url), {
requestInit: { headers: { Authorization: `Bearer ${credential}` } },
});
const client = new Client({ name: 'invocation-auth-test', version: '0.0.1' });

try {
await client.connect(transport);
assert.ok(transport.sessionId);

const tools = await client.listTools();
assert.ok(tools.tools.some((tool) => tool.name === 'system_info'));
assert.ok(!tools.tools.some((tool) => tool.name === 'lock_object'));

const denied = await client.callTool({
name: 'lock_object',
arguments: { destination: 'dev', objectName: 'ZCL_SCOPE_TEST' },
});
assert.strictEqual(denied.isError, true);
assert.strictEqual(
(denied.content as Array<{ type: 'text'; text: string }>)[0]?.text,
'mcp_scope_denied',
);
assert.strictEqual(leases, 0);
assert.strictEqual(contexts, 0);

const replacementCredential = await signInvocation(privateKey, {
tokenId: 'invocation-jti-2',
});
const replacementResponse = await fetch(server.url, {
method: 'POST',
headers: {
Accept: 'application/json, text/event-stream',
Authorization: `Bearer ${replacementCredential}`,
'Content-Type': 'application/json',
'Mcp-Session-Id': transport.sessionId,
},
body: JSON.stringify({
jsonrpc: '2.0',
id: 1,
method: 'tools/call',
params: {
name: 'system_info',
arguments: { destination: 'dev' },
},
}),
});
assert.strictEqual(replacementResponse.status, 403);
assert.deepStrictEqual(await replacementResponse.json(), {
jsonrpc: '2.0',
error: { code: -32000, message: 'mcp_session_identity_mismatch' },
id: null,
});
assert.strictEqual(leases, 0);
assert.strictEqual(contexts, 0);
} finally {
await transport.close();
await server.close();
await destinationRegistry.shutdown();
}
});

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

❌ New issue: Large Method
'ARM invocation auth snapshots verified read scope and binds continuation to its JTI' has 107 lines, threshold = 70

Suppress

Comment on lines +175 to +247
test('ARM invocation auth fails closed for an AI Review policy the sidecar cannot yet enforce', async () => {
const { privateKey, publicKey } = await generateKeyPair('ES256');
let leases = 0;
let contexts = 0;
const destinationRegistry = createDestinationContextRegistry({
leaseProvider: {
async acquire({ destination }) {
leases++;
return {
destination,
expiresAt: Date.now() + 60_000,
version: 1,
material: {},
release: async () => undefined,
};
},
},
contextFactory: {
async create() {
contexts++;
return { client: {} as never, close: async () => undefined };
},
},
ttlMs: 0,
});
const server = await startHttpServer({
port: 0,
host: '127.0.0.1',
authMode: 'invocation',
invocationVerifier: createMcpInvocationVerifier({
publicKey,
keyId,
issuer,
audience,
}),
multiSystem: { systems: {}, resolve: () => undefined },
destinationServer: {
destinationRegistry,
requestIdentity: () => ({ principal: 'untrusted-callback-principal' }),
requestAccess: () => ({ classes: ['read'], destinationKeys: ['dev'] }),
},
log: () => undefined,
});
const credential = await signInvocation(privateKey, { agentId: 'ai-review' });
const transport = new StreamableHTTPClientTransport(new URL(server.url), {
requestInit: { headers: { Authorization: `Bearer ${credential}` } },
});
const client = new Client({
name: 'ai-review-policy-test',
version: '0.0.1',
});

try {
await client.connect(transport);
assert.deepStrictEqual((await client.listTools()).tools, []);

const denied = await client.callTool({
name: 'system_info',
arguments: { destination: 'dev' },
});
assert.strictEqual(denied.isError, true);
assert.strictEqual(
(denied.content as Array<{ type: 'text'; text: string }>)[0]?.text,
'mcp_scope_denied',
);
assert.strictEqual(leases, 0);
assert.strictEqual(contexts, 0);
} finally {
await transport.close();
await server.close();
await destinationRegistry.shutdown();
}
});

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

❌ New issue: Large Method
'ARM invocation auth fails closed for an AI Review policy the sidecar cannot yet enforce' has 71 lines, threshold = 70

Suppress

@@ -0,0 +1,1579 @@
import { randomUUID } from 'node:crypto';

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

❌ New issue: Lines of Code in a Single File
This module has 1139 lines of code, improve code health by reducing it to 1000

Suppress

Comment on lines +246 to +317
function toCanonicalAtcFindings(response: unknown): CanonicalAtcFinding[] {
const worklist = record(response)?.worklist;
const objects = records(
record(worklist)?.objects && record(worklist)?.objects,
).flatMap((objects) => records(objects.object));
return objects.flatMap((object) =>
records(record(object.findings)?.finding).map((finding) => {
const line = atcLineFromLocation(finding.location);
const quickfixes = record(finding.quickfixes);
return {
checkId: stringField(finding, 'checkId') ?? '',
checkTitle: stringField(finding, 'checkTitle') ?? '',
messageText: stringField(finding, 'messageTitle') ?? '',
priority: Number.parseInt(stringField(finding, 'priority') ?? '3', 10),
objectType: stringField(object, 'type') ?? '',
objectName: stringField(object, 'name') ?? '',
...(line ? { lineStart: line, lineEnd: line } : {}),
...(optionalText(finding.messageId)
? { messageId: optionalText(finding.messageId) }
: {}),
...(optionalText(object.packageName)
? { packageName: optionalText(object.packageName) }
: {}),
...(optionalText(object.description)
? { objectDescription: optionalText(object.description) }
: {}),
...(optionalText(finding.contactPerson)
? { contactPerson: optionalText(finding.contactPerson) }
: {}),
...(optionalText(finding.processor)
? { processor: optionalText(finding.processor) }
: {}),
...(optionalText(finding.lastChangedBy)
? { lastChangedBy: optionalText(finding.lastChangedBy) }
: {}),
...(optionalText(finding.exemptionKind)
? { exemptionKind: optionalText(finding.exemptionKind) }
: {}),
...(optionalText(finding.exemptionApproval)
? { exemptionApproval: optionalText(finding.exemptionApproval) }
: {}),
...(optionalAtcBoolean(finding.noExemption) === undefined
? {}
: { noExemption: optionalAtcBoolean(finding.noExemption) }),
...(optionalText(finding.quickfixInfo)
? { quickfixInfo: optionalText(finding.quickfixInfo) }
: {}),
...(quickfixes
? {
quickfixes: {
...(optionalAtcBoolean(quickfixes.manual) === undefined
? {}
: { manual: optionalAtcBoolean(quickfixes.manual) }),
...(optionalAtcBoolean(quickfixes.automatic) === undefined
? {}
: { automatic: optionalAtcBoolean(quickfixes.automatic) }),
...(optionalAtcBoolean(quickfixes.pseudo) === undefined
? {}
: { pseudo: optionalAtcBoolean(quickfixes.pseudo) }),
},
}
: {}),
...(finding.checksum === undefined
? {}
: { checksum: String(finding.checksum) }),
...(documentationUriForFinding(finding)
? { documentationUri: documentationUriForFinding(finding) }
: {}),
};
}),
);
}

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

❌ New issue: Complex Method
toCanonicalAtcFindings has a cyclomatic complexity of 23, threshold = 9

Suppress

@ThePlenkov
ThePlenkov deleted the feat/adt-server-sidecar branch July 21, 2026 06:46
@qodo-code-review

Copy link
Copy Markdown

PR Summary by Qodo

feat(adt-server): add bounded ADT server sidecar with REST API

✨ Enhancement ⚙️ Configuration changes 🧪 Tests 📝 Documentation 🕐 40+ Minutes

Grey Divider

AI Description

• Add ADT Server sidecar exposing bounded REST endpoints for transports, packages, objects, and ATC.
• Enforce safe reads via bearer auth, signed cursors, and short-lived capability tokens.
• Add optional invocation-signed MCP endpoint plus typed client and Docker runtime packaging.
Diagram

graph TD
  C["REST clients"] -->|"Bearer REST"| S["ADT Server sidecar"] -->|"ops"| B["ARM broker"] --> X["SAP ADT"]
  A["AI agent"] -->|"Signed MCP"| S
  S --> O["OpenAPI spec"]
  S --> K["Capabilities & cursors"]
Loading
High-Level Assessment

The following are alternative approaches to this PR:

1. Use a web framework (Fastify/Express) + middleware
  • ➕ Less bespoke routing and error mapping
  • ➕ Simpler auth/limits/cors as reusable middleware
  • ➕ Easier observability hooks (logging/tracing)
  • ➖ Adds dependencies and a broader attack surface for a security-sensitive sidecar
  • ➖ Harder to guarantee strict fail-closed behavior without careful configuration
2. OpenAPI-first server (generated router + validation)
  • ➕ Single source of truth for routes and validation
  • ➕ Reduces risk of server/client contract drift
  • ➖ Generator/tooling complexity becomes part of release pipeline
  • ➖ May constrain custom security boundaries (capabilities, cursor signing)

Recommendation: The current minimal node:http implementation is appropriate for a hardened sidecar with explicit fail-closed checks and a small dependency footprint. If the REST API grows significantly, consider migrating routing/validation to a framework or OpenAPI-driven router while keeping capability/cursor primitives as explicit security boundaries.

Files changed (13) +4951 / -0

Enhancement (8) +4235 / -0
server.tsAdd sidecar HTTP server with bounded REST API and optional MCP handler +1023/-0

Add sidecar HTTP server with bounded REST API and optional MCP handler

• Implements a 'node:http' server with explicit routing for health, OpenAPI, REST endpoints, and optional '/mcp'. Enforces REST authorization, validates inputs with Zod, paginates searches, and converts broker-local URIs into sealed capabilities before returning responses.

packages/adt-server/src/server.ts

rest-schemas.tsDefine canonical REST schemas and query parsing (Zod) +589/-0

Define canonical REST schemas and query parsing (Zod)

• Adds Zod schemas for request/response bodies, path parameters, and query parameters (including max-bytes/max-results). Centralizes validation for transports, packages, objects, ATC, immutable source reads, and pagination inputs.

packages/adt-server/src/rest-schemas.ts

broker.tsImplement broker-backed operations and safe canonical projections +1579/-0

Implement broker-backed operations and safe canonical projections

• Adds an ARM-broker adapter that acquires destination connections, calls ADT services, and projects results into canonical REST shapes. Ensures byte limits are enforced and replaces upstream ADT URIs with sidecar-issued capabilities.

packages/adt-server/src/broker.ts

mcp-runtime.tsEnable invocation-signed MCP mode (opt-in, fail-closed) +119/-0

Enable invocation-signed MCP mode (opt-in, fail-closed)

• Loads and validates an ES256 P-256 public key and configures an invocation verifier plus destination context registry. Keeps MCP disabled unless fully configured; rejects partial config to avoid weaker auth modes.

packages/adt-server/src/mcp-runtime.ts

source-capabilities.tsAdd encrypted short-lived source capability tokens +153/-0

Add encrypted short-lived source capability tokens

• Implements AES-256-GCM sealed tokens binding destination + ADT source URI with a short TTL. Validates that only safe ADT paths can be sealed and rejects expired/mismatched/oversized capabilities.

packages/adt-server/src/source-capabilities.ts

page-cursors.tsAdd signed, query-bound pagination cursors +132/-0

Add signed, query-bound pagination cursors

• Implements HMAC-signed cursors bound to a query fingerprint and last-seen key. Prevents cursor tampering and cross-query reuse while keeping cursor payload free of SAP URIs or response data.

packages/adt-server/src/page-cursors.ts

rest-auth.tsAdd constant-time REST bearer-token authorizer +39/-0

Add constant-time REST bearer-token authorizer

• Implements bearer auth with 'timingSafeEqual' and supports optional secret-file loading for local/dev or mesh-auth bridging. Ensures REST stays disabled when no token is configured.

packages/adt-server/src/rest-auth.ts

generated.tsAdd generated typed REST client for the ADT Server API +601/-0

Add generated typed REST client for the ADT Server API

• Introduces a generated client with typed params/responses and structured HTTP errors. Aligns client operation definitions with the OpenAPI contract.

packages/adt-server-client/src/generated.ts

Documentation (1) +524 / -0
openapi.tsExpose deterministic OpenAPI 3.1 contract for REST endpoints +524/-0

Expose deterministic OpenAPI 3.1 contract for REST endpoints

• Builds an OpenAPI document from the Zod schemas and serves JSON/YAML forms. The contract is destination-scoped and intentionally omits SAP URLs/credentials.

packages/adt-server/src/openapi.ts

Other (4) +192 / -0
rest-runtime.tsLoad REST runtime security and persisted secrets for tokens/cursors +68/-0

Load REST runtime security and persisted secrets for tokens/cursors

• Loads bearer auth and, when enabled, requires mounted secrets for capability and cursor signing so state survives restarts/replicas. Produces preconfigured security services injected into the server.

packages/adt-server/src/rest-runtime.ts

adt-server.tsAdd adt-server entrypoint wiring broker + REST + MCP runtime +40/-0

Add adt-server entrypoint wiring broker + REST + MCP runtime

• Bootstraps sidecar startup from env vars, creates broker-backed operations, loads REST security, and enables MCP only when configured. Defines default host/port wiring used by container runtime.

packages/adt-server/src/bin/adt-server.ts

Dockerfile.adt-serverAdd Docker image for ADT Server sidecar runtime +49/-0

Add Docker image for ADT Server sidecar runtime

• Builds the workspace dependency closure and sidecar bundle, then ships a slim Node runtime image with healthcheck and non-root execution. Exposes port 3002 and runs the sidecar entrypoint by default.

Dockerfile.adt-server

docker-entrypoint.adt-server.shHarden container startup and secret handling for sidecar +35/-0

Harden container startup and secret handling for sidecar

• Copies mounted secrets to least-privilege temp locations before dropping privileges. Makes MCP explicitly opt-in and ensures only public verification keys are passed to the unprivileged process.

docker-entrypoint.adt-server.sh

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants