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/[email protected]
        devdeps:
          - github.com/stretchr/[email protected]

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
modulestringGo module path (e.g. github.com/company/agent).
versionstringGo toolchain version (e.g. "1.26").
vendorobjectExtra packages - see VendorConfig.

typescript

FieldTypeRequiredDescription
packageNamestringnpm package name (kebab-case or scoped: @org/name).
nodeVersionstringNode major version (e.g. "20").
vendorobjectExtra packages - see VendorConfig.

rust

FieldTypeRequiredDescription
packageNamestringCargo crate name.
versionstringCrate version (e.g. "0.1.0").
editionstringRust 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/[email protected]
TypeScript[email protected]
TypeScript (scoped)"@types/[email protected]"
Rust[email protected]

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.