@clawos-dev/clawd 0.2.454 → 0.2.455

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -24514,11 +24514,13 @@ var ProjectStore = class {
24514
24514
  * spec 2026-06-02 §5.6.3:scaffold 对 assistant 不可见,避免 assistant 被诱导去"读 example
24515
24515
  * 代码再参考"。assistant 进 project 时目录已是完整模板,直接 pnpm install 即可。
24516
24516
  */
24517
- async scaffold(name, templateSrcDir, scaffoldScriptPath) {
24517
+ async scaffold(name, templateSrcDir, scaffoldScriptPath, extraEnv) {
24518
24518
  const destDir = this.projectDir(name);
24519
24519
  return await new Promise((resolve, reject) => {
24520
24520
  const child = (0, import_node_child_process.spawn)("bash", [scaffoldScriptPath, name, templateSrcDir, destDir], {
24521
- env: { ...process.env, PATH: process.env.PATH ?? "" },
24521
+ // extraEnv 排在 PATH **之前**:凭据表里若混进一条名叫 PATH 的条目,顶掉 PATH 会让
24522
+ // 脚本以「命令找不到」的形态崩在离现场很远的地方。
24523
+ env: { ...process.env, ...extraEnv ?? {}, PATH: process.env.PATH ?? "" },
24522
24524
  stdio: ["ignore", "pipe", "pipe"]
24523
24525
  });
24524
24526
  let stdout = "";
@@ -24722,7 +24724,11 @@ async function startPublishJob(deps, args) {
24722
24724
  }
24723
24725
  const child = spawn2("bash", [args.scriptPath, projDir, args.personaRoot ?? ""], {
24724
24726
  cwd: projDir,
24725
- env: process.env,
24727
+ // 宿主给的 env 覆盖在 process.env 之上:daemon 进程本身没有这些变量(它们只在这一个
24728
+ // 子进程里活着)。云上宿主不传 extraEnv,凭据本来就在容器 env 里。
24729
+ // PATH 排在最后(与 ProjectStore.scaffold 同款):extraEnv 里若混进一条名叫 PATH 的条目,
24730
+ // 顶掉 PATH 会让脚本以「命令找不到」的形态崩在离现场很远的地方。
24731
+ env: { ...process.env, ...args.extraEnv ?? {}, PATH: process.env.PATH ?? "" },
24726
24732
  stdio: ["ignore", "pipe", "pipe"]
24727
24733
  });
24728
24734
  const jobId = registry2.create({
@@ -25003,7 +25009,8 @@ function createPublishService() {
25003
25009
  name: args.name,
25004
25010
  sessionId: args.sessionId,
25005
25011
  scriptPath: args.scriptPath,
25006
- personaRoot: args.personaRoot
25012
+ personaRoot: args.personaRoot,
25013
+ ...args.extraEnv ? { extraEnv: args.extraEnv } : {}
25007
25014
  }
25008
25015
  );
25009
25016
  },
@@ -25020,7 +25027,7 @@ async function createProjectOnDisk(args) {
25020
25027
  const { store, name, templateSrcDir, scaffoldScript, logger } = args;
25021
25028
  const project = await store.create(name, args.reservedPorts);
25022
25029
  try {
25023
- const result = await store.scaffold(name, templateSrcDir, scaffoldScript);
25030
+ const result = await store.scaffold(name, templateSrcDir, scaffoldScript, args.extraEnv);
25024
25031
  logger?.info("app-builder.scaffold.done", { name, stdout: result.stdout.slice(0, 200) });
25025
25032
  } catch (err) {
25026
25033
  const message = err instanceof Error ? err.message : String(err);