Skip to content

@sigilry/cli

@sigilry/cli generates TypeScript types from DAML DAR files using dpm codegen-alpha-typescript.

Terminal window
yarn add -D @sigilry/cli
Terminal window
sigilry init

This 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:

sigilry.config.ts
import { defineConfig } from "@sigilry/cli/config";
export default defineConfig({
dars: ["./path/to/your.dar"],
output: "./src/generated",
cleanup: true,
watch: false,
});

For Canton Network / Splice development, use @sigilry/splice-dars instead of managing DAR files manually:

sigilry.config.ts
import { defineConfig } from "@sigilry/cli/config";
import { spliceDars } from "@sigilry/splice-dars";
export default defineConfig({
dars: [spliceDars.amulet, spliceDars.apiTokenHolding],
output: "./src/generated",
});
Terminal window
sigilry codegen

Without --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):

Terminal window
sigilry codegen --config ./config/sigilry.config.ts
Terminal window
sigilry codegen --watch

SigilryConfig supports:

  • dars: array of DAR paths (required).
  • output: output directory (default ./src/generated).
  • cleanup: clean output directory before generation (default true).
  • watch: enable watch mode (default false).
  • dpmSdkVersion: dpm SDK version used for codegen (default 3.4.9, the last SDK that ships codegen-alpha-typescript). A non-empty DPM_SDK_VERSION environment variable takes precedence.
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();
  • Node.js 18.19+.
  • DAML SDK installed so dpm is available in PATH, or DPM_BIN set to the dpm executable path.
  • A Java runtime (java on PATH, or JAVA_HOME / JAVA_BIN set); dpm runs the generator with java -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.