# 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, service ? { }, nodeModules ? null, }: 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 ; source = src; portable = if portable == null then null else { inherit (portable) entry; registryExport = portable.registryExport or "registry"; bindingOutput = portable.bindingOutput or "src/gen/qx.ts"; targets = portable.targets or [ "browser" "server" ]; }; 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" { } '' ${pkgs.nodejs_24}/bin/node ${./build-portable-artifacts.mjs} ${config} ''