# Fresh artifact builder. Candidate plans and runtime dependencies are supplied by the workspace compiler. { pkgs, src, plan, protocol, core, sharedRuntime, typescript ? core.dependencies, packageRevisionId, portable ? null, remote ? null, service ? { }, nodeModules ? null, components ? null, group ? false, }: let compiler = "${protocol}/libexec/quixos-protocol/execution-world.mjs"; config = pkgs.writeText "camino-artifact-build.json" ( builtins.toJSON { inherit plan compiler packageRevisionId core sharedRuntime nodeModules service group ; components = if components == null then null else { inherit (components) sdk runtime entries; dependencies = components.sdk.dependencies; bindingOutput = components.bindingOutput or "src/gen/client.ts"; contracts = components.contracts or [ ]; }; source = src; portable = if portable == null then null else { inherit (portable) entry; entries = portable.entries or { }; registryExport = portable.registryExport or "registry"; bindingOutput = portable.bindingOutput or "src/gen/qx.ts"; targets = portable.targets or [ "browser" "server" ]; }; remote = if remote == null then null else { inherit (remote) entry; registryExport = remote.registryExport or "registry"; bindingOutput = remote.bindingOutput or "src/gen/remote.ts"; }; node = "${pkgs.nodejs_24}/bin/node"; tsc = "${typescript}/node_modules/typescript/bin/tsc"; esbuild = "${pkgs.esbuild}/bin/esbuild"; shell = "${pkgs.runtimeShell}"; serviceAdapter = ./portable-service.mjs; } ); in pkgs.runCommand "camino-checked-artifacts" { passthru.buildConfig = config; } '' ${pkgs.nodejs_24}/bin/node ${./.}/build-artifacts.mjs ${config} ''