@sigilry/cli
@sigilry/cli generates TypeScript types from DAML DAR files using dpm codegen-alpha-typescript.
Install
Section titled “Install”yarn add -D @sigilry/cliInitialize config
Section titled “Initialize config”sigilry initThis creates a sigilry.config.ts file in the current directory. It refuses to overwrite an existing
config unless you pass --force (-f). The generated file looks like this, with your DAR paths filled in:
import { defineConfig } from "@sigilry/cli/config";
export default defineConfig({ dars: ["./path/to/your.dar"], output: "./src/generated", cleanup: true, watch: false,});Using Splice DARs
Section titled “Using Splice DARs”For Canton Network / Splice development, use @sigilry/splice-dars instead of managing DAR files manually:
import { defineConfig } from "@sigilry/cli/config";import { spliceDars } from "@sigilry/splice-dars";
export default defineConfig({ dars: [spliceDars.amulet, spliceDars.apiTokenHolding], output: "./src/generated",});Generate types
Section titled “Generate types”sigilry codegenWithout --config, codegen looks for sigilry.config.ts, sigilry.config.mts, sigilry.config.js,
or sigilry.config.mjs in the current directory and then each parent directory. Point it at a
specific file with --config <path> (-c):
sigilry codegen --config ./config/sigilry.config.tsWatch mode
Section titled “Watch mode”sigilry codegen --watchConfiguration reference
Section titled “Configuration reference”SigilryConfig supports:
dars: array of DAR paths (required).output: output directory (default./src/generated).cleanup: clean output directory before generation (defaulttrue).watch: enable watch mode (defaultfalse).dpmSdkVersion: dpm SDK version used for codegen (default3.4.9, the last SDK that shipscodegen-alpha-typescript). A non-emptyDPM_SDK_VERSIONenvironment variable takes precedence.
Programmatic API
Section titled “Programmatic API”import { generateTypes, loadConfig } from "@sigilry/cli";
async function generate() { const { config } = await loadConfig(); const result = await generateTypes(config);
if (!result.success) { throw new Error(result.error); }
return result;}
generate();Requirements
Section titled “Requirements”- Node.js 18.19+.
- DAML SDK installed so
dpmis available in PATH, orDPM_BINset to thedpmexecutable path. - A Java runtime (
javaon PATH, orJAVA_HOME/JAVA_BINset); dpm runs the generator withjava -jar.
Codegen defaults to DPM SDK 3.4.9. The dpmSdkVersion config selects a pin; a nonempty DPM_SDK_VERSION environment override takes precedence. Consult packages/cli/src/dpm.ts for executable resolution and preflight behavior. A pin does not establish artifact availability. This wrapper’s output contract differs from canton-clients’ LF metadata generator; switching generators is an explicit migration. OpenRPC-to-Zod generation belongs to @sigilry/dapp’s codegen script.