Просмотр исходного кода

修复 CLI 参数解析与 Windows 打包测试

- 启用 Commander positional options,避免全局 LLM 参数吞掉 set-model 子命令参数
- 兼容 Windows runner 不支持 tar --force-local 的打包测试环境
- 清理两处测试文件尾随空白
fanghanjun 6 месяцев назад
Родитель
Сommit
be8858e1bb

+ 15 - 2
packages/cli/src/__tests__/publish-package.test.ts

@@ -16,6 +16,19 @@ const sourceStudioPackageJsonPromise = readFile(resolve(studioDir, "package.json
   JSON.parse(raw),
 );
 
+function tarForceLocalArgs(): string[] {
+  if (process.platform !== "win32") return [];
+  try {
+    const version = execFileSync("tar", ["--version"], {
+      encoding: "utf-8",
+      stdio: ["ignore", "pipe", "ignore"],
+    });
+    return version.includes("GNU tar") ? ["--force-local"] : [];
+  } catch {
+    return [];
+  }
+}
+
 async function packPackage(packageDir: string, packDir: string) {
   const npmCmd = process.platform === "win32" ? "npm.cmd" : "npm";
   execFileSync(npmCmd, ["pack", "--pack-destination", packDir], {
@@ -35,7 +48,7 @@ async function packPackage(packageDir: string, packDir: string) {
 
 async function extractPackedPackageJson(packageDir: string, packDir: string) {
   const tarballPath = await packPackage(packageDir, packDir);
-  const tarArgs = process.platform === "win32" ? ["--force-local", "-xOf"] : ["-xOf"];
+  const tarArgs = [...tarForceLocalArgs(), "-xOf"];
   return execFileSync("tar", [...tarArgs, tarballPath, "package/package.json"], {
     cwd: workspaceRoot,
     encoding: "utf-8",
@@ -242,7 +255,7 @@ describe.sequential("publish packaging", () => {
 
     try {
       const tarballPath = await packPackage(studioDir, packDir);
-      const tarArgs = process.platform === "win32" ? ["--force-local", "-tf"] : ["-tf"];
+      const tarArgs = [...tarForceLocalArgs(), "-tf"];
       const archiveListing = execFileSync("tar", [...tarArgs, tarballPath], {
         cwd: workspaceRoot,
         encoding: "utf-8",

+ 1 - 0
packages/cli/src/program.ts

@@ -47,6 +47,7 @@ export function createProgram(hooks: ProgramHooks = {}): Command {
     .name("inkos")
     .description("InkOS — Multi-agent novel production system")
     .version(version)
+    .enablePositionalOptions()
     .option("--service <service>", "Override LLM service for this CLI run")
     .option("--model <model>", "Override LLM model for this CLI run")
     .option("--api-key-env <envVar>", "Read LLM API key from this environment variable for this CLI run")

+ 1 - 1
packages/core/src/__tests__/pipeline-runner-memory-sync.test.ts

@@ -187,7 +187,7 @@ describe("PipelineRunner structured-state memory sync", () => {
           temperature: 0.7,
           maxTokens: 4096,
           thinkingBudget: 0,
-          
+
         },
       } as ConstructorParameters<typeof PipelineRunner>[0]["client"],
       model: "test-model",

+ 1 - 1
packages/core/src/__tests__/provider.test.ts

@@ -120,7 +120,7 @@ function makeClient(temperature = 0.7, extra: Partial<LLMClient> = {}): LLMClien
       temperature,
       maxTokens: 512,
       thinkingBudget: 0,
-      
+
       extra: {},
     },
     ...extra,