Skip to content

spec.language ​

Which target language(s) the generator should produce. At least one language must be configured (minProperties: 1).

yaml
spec:
  language:
    go:
      module: github.com/company/customer-support-agent
      version: "1.26"
      vendor:
        deps:
          - github.com/google/uuid@v1.6.0
        devdeps:
          - github.com/stretchr/testify@v1.9.0

Supported languages ​

KeyConfig object
goGoConfig
typescriptTypeScriptConfig
rustRustConfig

Configure exactly one. The schema permits more than one language key, but current consumers (e.g. adl-cli) generate code for a single language at a time and will reject manifests with more than one.

go ​

FieldTypeRequiredDescription
modulestring✓Go module path (e.g. github.com/company/agent).
versionstring✓Go toolchain version (e.g. "1.26").
vendorobjectExtra packages - see VendorConfig.

typescript ​

FieldTypeRequiredDescription
packageNamestring✓npm package name (kebab-case or scoped: @org/name).
nodeVersionstring✓Node major version (e.g. "20").
vendorobjectExtra packages - see VendorConfig.

rust ​

FieldTypeRequiredDescription
packageNamestring✓Cargo crate name.
versionstring✓Crate version (e.g. "0.1.0").
editionstring✓Rust edition (e.g. "2021").
featuresstring[]Cargo feature list to enable by default in the generated crate.
vendorobjectExtra packages - see VendorConfig.

vendor ​

Every language config accepts an optional vendor block to declare extra packages on top of whatever the generator pulls in by default. Useful for testing libraries, linters, mock generators, or any runtime package the scaffolding doesn't ship by default.

yaml
vendor:
  deps:
    - <package>@<version>
  devdeps:
    - <package>@<version>
FieldTypeDescription
depsstring[]Runtime/production dependencies.
devdepsstring[]Development- and test-only dependencies.

Each entry is a string of the form <package>@<version> using the target language's native package and version syntax. The schema only validates the shape - language-native semantics (semver ranges, scoped npm packages, Go module paths, etc.) are intentionally not constrained further.

LanguageExample entry
Gogithub.com/google/uuid@v1.6.0
TypeScriptzod@3.23.0
TypeScript (scoped)"@types/node@20.11.0"
Rusttokio@1.36.0

Consumers (e.g. adl-cli) translate these into the language's lockfile or manifest format (go.mod, package.json, Cargo.toml).

If you need a package that isn't tied to a specific language - deno, kubectl, terraform - use spec.development.deps instead.