@zmice/zc 0.2.4 → 0.2.6

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.
Files changed (112) hide show
  1. package/README.md +89 -9
  2. package/dist/cli/__tests__/platform.test.js +169 -2
  3. package/dist/cli/__tests__/platform.test.js.map +1 -1
  4. package/dist/cli/__tests__/surface.test.js +52 -0
  5. package/dist/cli/__tests__/surface.test.js.map +1 -1
  6. package/dist/cli/__tests__/team.test.d.ts +2 -0
  7. package/dist/cli/__tests__/team.test.d.ts.map +1 -0
  8. package/dist/cli/__tests__/team.test.js +29 -0
  9. package/dist/cli/__tests__/team.test.js.map +1 -0
  10. package/dist/cli/__tests__/upstream.test.js +4 -0
  11. package/dist/cli/__tests__/upstream.test.js.map +1 -1
  12. package/dist/cli/platform.d.ts +11 -3
  13. package/dist/cli/platform.d.ts.map +1 -1
  14. package/dist/cli/platform.js +186 -49
  15. package/dist/cli/platform.js.map +1 -1
  16. package/dist/cli/team.d.ts.map +1 -1
  17. package/dist/cli/team.js +114 -4
  18. package/dist/cli/team.js.map +1 -1
  19. package/dist/cli/upstream.d.ts +1 -0
  20. package/dist/cli/upstream.d.ts.map +1 -1
  21. package/dist/cli/upstream.js +84 -5
  22. package/dist/cli/upstream.js.map +1 -1
  23. package/dist/node_modules/@zmice/platform-core/dist/index.d.ts +37 -3
  24. package/dist/node_modules/@zmice/platform-core/dist/index.d.ts.map +1 -1
  25. package/dist/node_modules/@zmice/platform-core/dist/index.js +68 -0
  26. package/dist/node_modules/@zmice/platform-core/dist/index.js.map +1 -1
  27. package/dist/node_modules/@zmice/platform-core/dist/index.test.js +44 -1
  28. package/dist/node_modules/@zmice/platform-core/dist/index.test.js.map +1 -1
  29. package/dist/runtime/__tests__/worktree-manager.test.js +63 -1
  30. package/dist/runtime/__tests__/worktree-manager.test.js.map +1 -1
  31. package/dist/runtime/worktree-manager.d.ts +26 -1
  32. package/dist/runtime/worktree-manager.d.ts.map +1 -1
  33. package/dist/runtime/worktree-manager.js +126 -12
  34. package/dist/runtime/worktree-manager.js.map +1 -1
  35. package/dist/team/__tests__/orchestrator.test.js +40 -0
  36. package/dist/team/__tests__/orchestrator.test.js.map +1 -1
  37. package/dist/team/__tests__/planner.test.d.ts +2 -0
  38. package/dist/team/__tests__/planner.test.d.ts.map +1 -0
  39. package/dist/team/__tests__/planner.test.js +43 -0
  40. package/dist/team/__tests__/planner.test.js.map +1 -0
  41. package/dist/team/__tests__/task-queue.test.js +18 -0
  42. package/dist/team/__tests__/task-queue.test.js.map +1 -1
  43. package/dist/team/orchestrator.d.ts +2 -1
  44. package/dist/team/orchestrator.d.ts.map +1 -1
  45. package/dist/team/orchestrator.js +29 -10
  46. package/dist/team/orchestrator.js.map +1 -1
  47. package/dist/team/planner.d.ts +27 -0
  48. package/dist/team/planner.d.ts.map +1 -0
  49. package/dist/team/planner.js +120 -0
  50. package/dist/team/planner.js.map +1 -0
  51. package/dist/team/task-queue.d.ts +3 -0
  52. package/dist/team/task-queue.d.ts.map +1 -1
  53. package/dist/team/task-queue.js +11 -2
  54. package/dist/team/task-queue.js.map +1 -1
  55. package/dist/utils/qwen-extension-cli.d.ts.map +1 -1
  56. package/dist/utils/qwen-extension-cli.js +23 -0
  57. package/dist/utils/qwen-extension-cli.js.map +1 -1
  58. package/dist/utils/qwen-extension-cli.test.js +40 -0
  59. package/dist/utils/qwen-extension-cli.test.js.map +1 -1
  60. package/package.json +3 -3
  61. package/vendor/node_modules/@zmice/platform-core/dist/index.d.ts +37 -3
  62. package/vendor/node_modules/@zmice/platform-core/dist/index.d.ts.map +1 -1
  63. package/vendor/node_modules/@zmice/platform-core/dist/index.js +68 -0
  64. package/vendor/node_modules/@zmice/platform-core/dist/index.js.map +1 -1
  65. package/vendor/node_modules/@zmice/platform-core/dist/index.test.js +44 -1
  66. package/vendor/node_modules/@zmice/platform-core/dist/index.test.js.map +1 -1
  67. package/vendor/packages/platform-claude/dist/index.d.ts.map +1 -1
  68. package/vendor/packages/platform-claude/dist/index.js +12 -70
  69. package/vendor/packages/platform-claude/dist/index.js.map +1 -1
  70. package/vendor/packages/platform-codex/dist/generate.d.ts +1 -1
  71. package/vendor/packages/platform-codex/dist/generate.d.ts.map +1 -1
  72. package/vendor/packages/platform-codex/dist/generate.js +1 -1
  73. package/vendor/packages/platform-codex/dist/generate.js.map +1 -1
  74. package/vendor/packages/platform-codex/dist/index.d.ts +16 -1
  75. package/vendor/packages/platform-codex/dist/index.d.ts.map +1 -1
  76. package/vendor/packages/platform-codex/dist/index.js +268 -67
  77. package/vendor/packages/platform-codex/dist/index.js.map +1 -1
  78. package/vendor/packages/platform-codex/dist/index.test.js +102 -7
  79. package/vendor/packages/platform-codex/dist/index.test.js.map +1 -1
  80. package/vendor/packages/platform-opencode/dist/index.d.ts.map +1 -1
  81. package/vendor/packages/platform-opencode/dist/index.js +15 -81
  82. package/vendor/packages/platform-opencode/dist/index.js.map +1 -1
  83. package/vendor/packages/platform-qwen/dist/index.d.ts.map +1 -1
  84. package/vendor/packages/platform-qwen/dist/index.js +28 -84
  85. package/vendor/packages/platform-qwen/dist/index.js.map +1 -1
  86. package/vendor/packages/toolkit/src/content/agents/architect/body.md +8 -0
  87. package/vendor/packages/toolkit/src/content/agents/code-reviewer/body.md +10 -0
  88. package/vendor/packages/toolkit/src/content/agents/product-owner/body.md +8 -0
  89. package/vendor/packages/toolkit/src/content/commands/plan-review/body.md +3 -1
  90. package/vendor/packages/toolkit/src/content/commands/start/body.md +51 -2
  91. package/vendor/packages/toolkit/src/content/commands/start/meta.yaml +2 -2
  92. package/vendor/packages/toolkit/src/content/skills/branch-finish-and-cleanup/body.md +17 -0
  93. package/vendor/packages/toolkit/src/content/skills/browser-qa-testing/body.md +77 -520
  94. package/vendor/packages/toolkit/src/content/skills/ci-cd-and-automation/body.md +56 -387
  95. package/vendor/packages/toolkit/src/content/skills/code-review-and-quality/body.md +10 -0
  96. package/vendor/packages/toolkit/src/content/skills/code-simplification/body.md +55 -301
  97. package/vendor/packages/toolkit/src/content/skills/context-engineering/body.md +10 -0
  98. package/vendor/packages/toolkit/src/content/skills/continuous-learning/body.md +66 -331
  99. package/vendor/packages/toolkit/src/content/skills/multi-perspective-review/body.md +30 -1
  100. package/vendor/packages/toolkit/src/content/skills/parallel-agent-dispatch/body.md +79 -317
  101. package/vendor/packages/toolkit/src/content/skills/performance-optimization/body.md +60 -330
  102. package/vendor/packages/toolkit/src/content/skills/planning-and-task-breakdown/body.md +35 -0
  103. package/vendor/packages/toolkit/src/content/skills/sdd-tdd-workflow/body.md +66 -342
  104. package/vendor/packages/toolkit/src/content/skills/sprint-retrospective/body.md +66 -303
  105. package/vendor/packages/toolkit/src/content/skills/team-orchestration/body.md +81 -327
  106. package/vendor/packages/toolkit/src/content/skills/test-driven-development/body.md +50 -346
  107. package/vendor/packages/toolkit/src/content/skills/using-agent-skills/body.md +26 -2
  108. package/vendor/references/upstreams.yaml +5 -0
  109. package/dist/cli/setup.d.ts +0 -3
  110. package/dist/cli/setup.d.ts.map +0 -1
  111. package/dist/cli/setup.js +0 -41
  112. package/dist/cli/setup.js.map +0 -1
@@ -0,0 +1 @@
1
+ {"version":3,"file":"team.test.d.ts","sourceRoot":"","sources":["../../../src/cli/__tests__/team.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,29 @@
1
+ import { describe, expect, it, vi, afterEach } from "vitest";
2
+ import { createProgram } from "../index.js";
3
+ describe("team CLI", () => {
4
+ afterEach(() => {
5
+ vi.restoreAllMocks();
6
+ process.exitCode = undefined;
7
+ });
8
+ it("prints a dry-run team plan without starting runtime", async () => {
9
+ const output = [];
10
+ vi.spyOn(console, "log").mockImplementation((message) => {
11
+ output.push(String(message));
12
+ });
13
+ const program = createProgram();
14
+ await program.parseAsync([
15
+ "node",
16
+ "zc",
17
+ "team",
18
+ "plan",
19
+ "--tasks",
20
+ "API | files=src/api.ts",
21
+ "UI | files=src/ui.ts",
22
+ "--json",
23
+ ]);
24
+ const plan = JSON.parse(output.join("\n"));
25
+ expect(plan.canStart).toBe(true);
26
+ expect(plan.tasks).toHaveLength(2);
27
+ });
28
+ });
29
+ //# sourceMappingURL=team.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"team.test.js","sourceRoot":"","sources":["../../../src/cli/__tests__/team.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,EAAE,EAAE,EAAE,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAC7D,OAAO,EAAE,aAAa,EAAE,MAAM,aAAa,CAAC;AAE5C,QAAQ,CAAC,UAAU,EAAE,GAAG,EAAE;IACxB,SAAS,CAAC,GAAG,EAAE;QACb,EAAE,CAAC,eAAe,EAAE,CAAC;QACrB,OAAO,CAAC,QAAQ,GAAG,SAAS,CAAC;IAC/B,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,qDAAqD,EAAE,KAAK,IAAI,EAAE;QACnE,MAAM,MAAM,GAAa,EAAE,CAAC;QAC5B,EAAE,CAAC,KAAK,CAAC,OAAO,EAAE,KAAK,CAAC,CAAC,kBAAkB,CAAC,CAAC,OAAiB,EAAE,EAAE;YAChE,MAAM,CAAC,IAAI,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;QAC/B,CAAC,CAAC,CAAC;QAEH,MAAM,OAAO,GAAG,aAAa,EAAE,CAAC;QAChC,MAAM,OAAO,CAAC,UAAU,CAAC;YACvB,MAAM;YACN,IAAI;YACJ,MAAM;YACN,MAAM;YACN,SAAS;YACT,wBAAwB;YACxB,sBAAsB;YACtB,QAAQ;SACT,CAAC,CAAC;QAEH,MAAM,IAAI,GAAG,IAAI,CAAC,KAAK,CAAC,MAAM,CAAC,IAAI,CAAC,IAAI,CAAC,CAA4C,CAAC;QACtF,MAAM,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC,IAAI,CAAC,IAAI,CAAC,CAAC;QACjC,MAAM,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,YAAY,CAAC,CAAC,CAAC,CAAC;IACrC,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
@@ -86,6 +86,9 @@ describe("upstream governance commands", () => {
86
86
  expect(result.stdout).toContain("## Summary");
87
87
  expect(result.stdout).toContain("## Evidence");
88
88
  expect(result.stdout).toContain("## Decision");
89
+ expect(result.stdout).toContain("source url");
90
+ expect(result.stdout).toContain("https://github.com/addyosmani/agent-skills.git");
91
+ expect(result.stdout).toContain("remote_head: 未采集");
89
92
  expect(result.stdout).toContain("`pending-manual-review`");
90
93
  expect(result.stdout).toContain("人工审阅");
91
94
  });
@@ -101,6 +104,7 @@ describe("upstream governance commands", () => {
101
104
  expect(payload.upstream).toBe("agent-skills");
102
105
  expect(payload.label).toBe(label);
103
106
  expect(payload.metadata.status).toBe("active");
107
+ expect(payload.metadata.source_url).toBe("https://github.com/addyosmani/agent-skills.git");
104
108
  }, 15000);
105
109
  it("report --output 会把 Markdown 审阅材料写入文件", async () => {
106
110
  const outputDir = join(tmpdir(), "ai-coding-upstream-report");
@@ -1 +1 @@
1
- {"version":3,"file":"upstream.test.js","sourceRoot":"","sources":["../../../src/cli/__tests__/upstream.test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"upstream.test.js","sourceRoot":"","sources":["../../../src/cli/__tests__/upstream.test.ts"],"names":[],"mappings":"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"}
@@ -1,17 +1,25 @@
1
1
  import { Command } from "commander";
2
2
  type PlatformName = "qwen" | "codex" | "claude" | "opencode";
3
- type PlatformGenerateBundleType = "release-bundle";
3
+ type PlatformGenerateBundleType = "release-bundle" | "codex-plugin" | "codex-marketplace";
4
4
  type PlatformTargetSelectorOpts = {
5
5
  dir?: string;
6
6
  project?: boolean;
7
7
  global?: boolean;
8
8
  };
9
- export declare function runPlatformGenerate(target: PlatformName, opts: {
10
- dir?: string;
9
+ type PlatformGenerateOpts = PlatformTargetSelectorOpts & {
11
10
  force?: boolean;
12
11
  plan?: boolean;
13
12
  json?: boolean;
14
13
  bundle?: PlatformGenerateBundleType;
14
+ };
15
+ export declare function runPlatformGenerate(target: PlatformName, opts: PlatformGenerateOpts): Promise<void>;
16
+ export declare function runPlatformPlugin(target: PlatformName, opts: {
17
+ dir?: string;
18
+ project?: boolean;
19
+ global?: boolean;
20
+ force?: boolean;
21
+ plan?: boolean;
22
+ json?: boolean;
15
23
  }): Promise<void>;
16
24
  export declare function runPlatformInstall(target: PlatformName, opts: PlatformTargetSelectorOpts & {
17
25
  force?: boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../src/cli/platform.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAwB,MAAM,WAAW,CAAC;AA0C1D,KAAK,YAAY,GAAG,MAAM,GAAG,OAAO,GAAG,QAAQ,GAAG,UAAU,CAAC;AAG7D,KAAK,0BAA0B,GAAG,gBAAgB,CAAC;AAEnD,KAAK,0BAA0B,GAAG;IAChC,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,MAAM,CAAC,EAAE,OAAO,CAAC;CAClB,CAAC;AA68BF,wBAAsB,mBAAmB,CACvC,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,IAAI,CAAC,EAAE,OAAO,CAAC;IAAC,MAAM,CAAC,EAAE,0BAA0B,CAAA;CAAE,GAC3G,OAAO,CAAC,IAAI,CAAC,CAkFf;AAuCD,wBAAsB,kBAAkB,CACtC,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,0BAA0B,GAAG;IACjC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GACA,OAAO,CAAC,IAAI,CAAC,CA+Nf;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,0BAA0B,GAAG;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GACpD,OAAO,CAAC,IAAI,CAAC,CA4Ef;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,0BAA0B,GAAG;IACjC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GACA,OAAO,CAAC,IAAI,CAAC,CA0Qf;AAED,wBAAsB,oBAAoB,CACxC,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,0BAA0B,GAAG;IACjC,KAAK,CAAC,EAAE,OAAO,CAAC;IAChB,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GACA,OAAO,CAAC,IAAI,CAAC,CA+Jf;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,0BAA0B,GAAG;IACjC,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,IAAI,CAAC,EAAE,OAAO,CAAC;CAChB,GACA,OAAO,CAAC,IAAI,CAAC,CAkQf;AAED,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,0BAA0B,GAAG;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GACpD,OAAO,CAAC,IAAI,CAAC,CA0Cf;AAED,wBAAsB,gBAAgB,CACpC,MAAM,EAAE,YAAY,EACpB,IAAI,EAAE,0BAA0B,GAAG;IAAE,IAAI,CAAC,EAAE,OAAO,CAAA;CAAE,GACpD,OAAO,CAAC,IAAI,CAAC,CAyCf;AAUD,wBAAgB,uBAAuB,CAAC,OAAO,EAAE,OAAO,GAAG,IAAI,CA6F9D"}
1
+ {"version":3,"file":"platform.d.ts","sourceRoot":"","sources":["../../src/cli/platform.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { InvalidArgumentError } from "commander";
2
2
  import { readFileSync } from "node:fs";
3
- import { join, resolve } from "node:path";
3
+ import { homedir } from "node:os";
4
+ import { isAbsolute, join, resolve } from "node:path";
4
5
  import { attachPlanMetadata } from "@zmice/platform-core";
5
6
  import { resolvePlatformInstallDoctor } from "../platform-state/doctor.js";
6
7
  import { resolvePlatformInstallStatus } from "../platform-state/status.js";
@@ -84,6 +85,8 @@ function formatSurfaceLabel(surface) {
84
85
  return "agents 目录";
85
86
  case "extension-dir":
86
87
  return "extension 目录";
88
+ case "plugin-dir":
89
+ return "plugin 目录";
87
90
  default:
88
91
  return surface;
89
92
  }
@@ -290,6 +293,12 @@ function formatInstallSourceLabel(source) {
290
293
  return source === "github-repo" ? "GitHub 扩展仓库" : "本地 bundle";
291
294
  }
292
295
  function formatBundleTypeLabel(type) {
296
+ if (type === "codex-marketplace") {
297
+ return "Codex marketplace";
298
+ }
299
+ if (type === "codex-plugin") {
300
+ return "Codex plugin";
301
+ }
293
302
  return type === "release-bundle" ? "发布态扩展包" : "开发态源包";
294
303
  }
295
304
  function formatScopeFlag(scope, root) {
@@ -421,11 +430,68 @@ function buildPlanPayload(action, target, root, plan, metadata) {
421
430
  artifacts: plan.artifacts,
422
431
  };
423
432
  }
433
+ function resolveGenerateArtifact(outputRoot, artifact) {
434
+ return {
435
+ path: isAbsolute(artifact.path) ? artifact.path : join(outputRoot, artifact.path),
436
+ content: artifact.content,
437
+ };
438
+ }
439
+ function assertExclusiveTargetSelector(opts) {
440
+ if (opts.dir && (opts.project || opts.global)) {
441
+ throw new Error("显式目录 `--dir` 不能与 `--project` 或 `--global` 同时使用。");
442
+ }
443
+ if (opts.project && opts.global) {
444
+ throw new Error("`--project` 与 `--global` 不能同时使用。");
445
+ }
446
+ }
447
+ function assertGenerateTargetSelectorSupported(target, opts) {
448
+ if ((opts.project || opts.global) && !(target === "codex" && opts.bundle === "codex-marketplace")) {
449
+ throw new Error("`platform generate --project/--global` 当前仅支持 `codex --bundle codex-marketplace`。");
450
+ }
451
+ }
452
+ async function resolveGenerateOutputRoot(target, opts) {
453
+ assertExclusiveTargetSelector(opts);
454
+ assertGenerateTargetSelectorSupported(target, opts);
455
+ if (opts.project) {
456
+ const targetResolution = await resolveInstallTarget(target, { project: true });
457
+ return {
458
+ root: targetResolution.root,
459
+ metadata: {
460
+ scope: "project",
461
+ rootSource: targetResolution.source,
462
+ autoResolvedRoot: true,
463
+ hint: targetResolution.hint,
464
+ },
465
+ };
466
+ }
467
+ if (opts.global) {
468
+ return {
469
+ root: resolve(homedir()),
470
+ metadata: {
471
+ scope: "global",
472
+ rootSource: "official-global",
473
+ },
474
+ };
475
+ }
476
+ return {
477
+ root: opts.dir ? resolve(opts.dir) : resolveWorkspacePath(`.generated/${target}`),
478
+ metadata: {
479
+ scope: "dir",
480
+ rootSource: "explicit",
481
+ },
482
+ };
483
+ }
424
484
  function parseGenerateBundleType(value) {
425
485
  if (value === "release-bundle" || value === "release") {
426
486
  return "release-bundle";
427
487
  }
428
- throw new InvalidArgumentError(`不支持的 bundle 类型:${value}。当前仅支持:release-bundle`);
488
+ if (value === "codex-plugin" || value === "plugin") {
489
+ return "codex-plugin";
490
+ }
491
+ if (value === "codex-marketplace" || value === "marketplace") {
492
+ return "codex-marketplace";
493
+ }
494
+ throw new InvalidArgumentError(`不支持的 bundle 类型:${value}。当前支持:release-bundle | codex-plugin | codex-marketplace`);
429
495
  }
430
496
  function buildResultPayload(action, target, root, result, metadata) {
431
497
  return {
@@ -678,57 +744,86 @@ function buildUninstallPayload(target, root, result, metadata) {
678
744
  }
679
745
  export async function runPlatformGenerate(target, opts) {
680
746
  const format = resolveOutputFormat(opts.json);
681
- const outputRoot = opts.dir ? resolve(opts.dir) : resolveWorkspacePath(`.generated/${target}`);
682
747
  try {
748
+ const outputTarget = await resolveGenerateOutputRoot(target, opts);
749
+ const outputRoot = outputTarget.root;
750
+ const outputMetadata = outputTarget.metadata;
683
751
  const manifest = await loadToolkitManifest();
684
752
  const platformModule = await loadPlatformModule(target);
685
753
  let plan = createGenerationPlan(target, platformModule, manifest);
686
754
  let bundleType;
687
755
  let bundlePath;
688
756
  if (opts.bundle) {
689
- if (target !== "qwen") {
690
- throw new Error(`${target} 暂不支持 bundle 导出。当前仅 qwen 支持 --bundle release-bundle。`);
757
+ if (opts.bundle === "release-bundle") {
758
+ if (target !== "qwen") {
759
+ throw new Error(`${target} 暂不支持 release-bundle 导出。当前仅 qwen 支持 --bundle release-bundle。`);
760
+ }
761
+ const installPlan = createInstallPlan(target, platformModule, manifest, outputRoot, "dir", resolveOverwriteMode(opts.force));
762
+ bundleType = opts.bundle;
763
+ bundlePath = outputRoot;
764
+ plan = {
765
+ ...installPlan,
766
+ artifacts: toQwenOfficialCliReleaseArtifacts(installPlan, outputRoot),
767
+ };
768
+ }
769
+ if (opts.bundle === "codex-plugin") {
770
+ if (target !== "codex") {
771
+ throw new Error(`${target} 暂不支持 codex-plugin 导出。当前仅 codex 支持 --bundle codex-plugin。`);
772
+ }
773
+ if (!platformModule.createCodexPluginGenerationPlan) {
774
+ throw new Error("Codex 平台包未导出 createCodexPluginGenerationPlan()");
775
+ }
776
+ bundleType = opts.bundle;
777
+ bundlePath = outputRoot;
778
+ plan = finalizePlan(platformModule.createCodexPluginGenerationPlan(manifest, {
779
+ manifestSource: manifest.source,
780
+ pluginVersion: getCliVersion(),
781
+ extensionVersion: getCliVersion(),
782
+ }));
783
+ }
784
+ if (opts.bundle === "codex-marketplace") {
785
+ if (target !== "codex") {
786
+ throw new Error(`${target} 暂不支持 codex-marketplace 导出。当前仅 codex 支持 --bundle codex-marketplace。`);
787
+ }
788
+ if (!platformModule.createCodexMarketplaceGenerationPlan) {
789
+ throw new Error("Codex 平台包未导出 createCodexMarketplaceGenerationPlan()");
790
+ }
791
+ bundleType = opts.bundle;
792
+ bundlePath = outputRoot;
793
+ plan = finalizePlan(platformModule.createCodexMarketplaceGenerationPlan(manifest, {
794
+ manifestSource: manifest.source,
795
+ pluginVersion: getCliVersion(),
796
+ extensionVersion: getCliVersion(),
797
+ scope: outputMetadata.scope === "global" ? "global" : "project",
798
+ }));
691
799
  }
692
- const installPlan = createInstallPlan(target, platformModule, manifest, outputRoot, "dir", resolveOverwriteMode(opts.force));
693
- bundleType = opts.bundle;
694
- bundlePath = outputRoot;
695
- plan = {
696
- ...installPlan,
697
- artifacts: toQwenOfficialCliReleaseArtifacts(installPlan, outputRoot),
698
- };
699
800
  }
700
801
  if (opts.plan) {
701
- const outputPlan = bundleType
702
- ? plan
703
- : {
704
- ...plan,
705
- artifacts: plan.artifacts.map((artifact) => ({
706
- path: join(outputRoot, artifact.path),
707
- content: artifact.content,
708
- })),
709
- };
802
+ const outputPlan = {
803
+ ...plan,
804
+ artifacts: plan.artifacts.map((artifact) => resolveGenerateArtifact(outputRoot, artifact)),
805
+ };
710
806
  emitOutput(format, buildPlanPayload("generate", target, outputRoot, outputPlan, {
807
+ ...outputMetadata,
711
808
  bundleType,
712
809
  bundlePath,
713
810
  }), summarizePlan("generate", target, outputRoot, outputPlan, {
811
+ ...outputMetadata,
714
812
  bundleType,
715
813
  bundlePath,
716
814
  }));
717
815
  return;
718
816
  }
719
- const result = await writeArtifacts((bundleType
720
- ? plan.artifacts
721
- : plan.artifacts.map((artifact) => ({
722
- path: join(outputRoot, artifact.path),
723
- content: artifact.content,
724
- }))), {
817
+ const result = await writeArtifacts(plan.artifacts.map((artifact) => resolveGenerateArtifact(outputRoot, artifact)), {
725
818
  dryRun: false,
726
819
  overwrite: resolveOverwriteMode(opts.force)
727
820
  });
728
821
  emitOutput(format, buildResultPayload("generate", target, outputRoot, result, {
822
+ ...outputMetadata,
729
823
  bundleType,
730
824
  bundlePath,
731
825
  }), summarizeResult("generate", target, outputRoot, result, {
826
+ ...outputMetadata,
732
827
  bundleType,
733
828
  bundlePath,
734
829
  }));
@@ -738,6 +833,29 @@ export async function runPlatformGenerate(target, opts) {
738
833
  process.exitCode = 1;
739
834
  }
740
835
  }
836
+ export async function runPlatformPlugin(target, opts) {
837
+ const format = resolveOutputFormat(opts.json);
838
+ try {
839
+ if (target !== "codex") {
840
+ throw new Error("当前仅 Codex 支持插件 marketplace 快捷安装。");
841
+ }
842
+ assertExclusiveTargetSelector(opts);
843
+ const useProject = opts.project || (!opts.dir && !opts.global);
844
+ await runPlatformGenerate(target, {
845
+ dir: opts.dir,
846
+ project: useProject,
847
+ global: opts.global,
848
+ bundle: "codex-marketplace",
849
+ force: opts.force,
850
+ plan: opts.plan,
851
+ json: opts.json,
852
+ });
853
+ }
854
+ catch (error) {
855
+ emitPlatformError(format, target, "generate", error instanceof Error ? `${target} 插件生成失败:${error.message}` : `${target} 插件生成失败。`);
856
+ process.exitCode = 1;
857
+ }
858
+ }
741
859
  function getUpdateOverwriteMode(status, force) {
742
860
  if (status.kind === "update-available") {
743
861
  return "force";
@@ -1662,19 +1780,33 @@ export function registerPlatformCommand(program) {
1662
1780
  .description("导出平台内容或 Qwen 发布 bundle")
1663
1781
  .argument("<target>", "目标平台 (qwen|codex|claude|opencode)", parsePlatformName)
1664
1782
  .option("-d, --dir <dir>", "输出目录")
1665
- .option("-b, --bundle <type>", "导出指定 bundle 布局(当前仅 qwen: release-bundle)", parseGenerateBundleType)
1783
+ .option("-p, --project", "输出到当前目录向上解析出的最近项目根(当前仅 codex marketplace)")
1784
+ .option("-g, --global", "输出到用户级默认位置(当前仅 codex marketplace)")
1785
+ .option("-b, --bundle <type>", "导出指定 bundle 布局(qwen: release-bundle;codex: codex-plugin/codex-marketplace)", parseGenerateBundleType)
1666
1786
  .option("--plan", "只查看生成计划,不写文件")
1667
1787
  .option("-j, --json", "输出 JSON")
1668
1788
  .option("-f, --force", "覆盖目标目录中已有但内容不同的产物")
1669
1789
  .action(runPlatformGenerate);
1790
+ platform
1791
+ .command("plugin")
1792
+ .alias("p")
1793
+ .description("生成 Codex 插件 marketplace")
1794
+ .argument("<target>", "目标平台(当前支持 codex)", parsePlatformName)
1795
+ .option("-d, --dir <dir>", "使用指定 marketplace root")
1796
+ .option("-p, --project", "使用当前目录向上解析出的最近项目根")
1797
+ .option("-g, --global", "使用用户级 personal marketplace")
1798
+ .option("--plan", "只查看生成计划,不写文件")
1799
+ .option("-j, --json", "输出 JSON")
1800
+ .option("-f, --force", "覆盖目标目录中已有但内容不同的产物")
1801
+ .action(runPlatformPlugin);
1670
1802
  platform
1671
1803
  .command("install")
1672
1804
  .alias("i")
1673
1805
  .description("把平台内容安装到项目、用户级或指定目录")
1674
1806
  .argument("<target>", "目标平台 (qwen|codex|claude|opencode)", parsePlatformName)
1675
- .option("-d, --dir <dir>", "安装到指定目录")
1676
- .option("-p, --project", "安装到当前目录向上解析出的最近项目根")
1677
- .option("-g, --global", "安装到官方文档定义的用户级默认位置")
1807
+ .option("-d, --dir <dir>", "使用指定目录")
1808
+ .option("-p, --project", "使用当前目录向上解析出的最近项目根")
1809
+ .option("-g, --global", "使用平台定义的用户级默认位置")
1678
1810
  .option("--plan", "只查看安装计划,不写文件")
1679
1811
  .option("-j, --json", "输出 JSON")
1680
1812
  .option("-f, --force", "覆盖目标目录中已有但内容不同的产物")
@@ -1684,59 +1816,64 @@ export function registerPlatformCommand(program) {
1684
1816
  .alias("w")
1685
1817
  .description("查看平台内容会安装到哪里")
1686
1818
  .argument("<target>", "目标平台 (qwen|codex|claude|opencode)", parsePlatformName)
1687
- .option("-d, --dir <dir>", "指定目录")
1688
- .option("-p, --project", "解析最近项目根")
1689
- .option("-g, --global", "解析官方文档定义的默认全局位置")
1819
+ .option("-d, --dir <dir>", "使用指定目录")
1820
+ .option("-p, --project", "使用当前目录向上解析出的最近项目根")
1821
+ .option("-g, --global", "使用平台定义的用户级默认位置")
1690
1822
  .option("-j, --json", "输出 JSON")
1691
1823
  .action(runPlatformWhere);
1692
1824
  platform
1693
1825
  .command("status")
1826
+ .alias("s")
1694
1827
  .description("查看是否已安装、是否可更新、是否漂移")
1695
1828
  .argument("<target>", "目标平台 (qwen|codex|claude|opencode)", parsePlatformName)
1696
- .option("-d, --dir <dir>", "指定目录")
1697
- .option("-p, --project", "解析最近项目根")
1698
- .option("-g, --global", "解析官方文档定义的默认全局位置")
1829
+ .option("-d, --dir <dir>", "使用指定目录")
1830
+ .option("-p, --project", "使用当前目录向上解析出的最近项目根")
1831
+ .option("-g, --global", "使用平台定义的用户级默认位置")
1699
1832
  .option("-j, --json", "输出 JSON")
1700
1833
  .action(runPlatformStatus);
1701
1834
  platform
1702
1835
  .command("update")
1836
+ .alias("u")
1703
1837
  .description("更新已安装的平台内容")
1704
1838
  .argument("<target>", "目标平台 (qwen|codex|claude|opencode)", parsePlatformName)
1705
- .option("-d, --dir <dir>", "指定目录")
1706
- .option("-p, --project", "解析最近项目根")
1707
- .option("-g, --global", "解析官方文档定义的默认全局位置")
1839
+ .option("-d, --dir <dir>", "使用指定目录")
1840
+ .option("-p, --project", "使用当前目录向上解析出的最近项目根")
1841
+ .option("-g, --global", "使用平台定义的用户级默认位置")
1708
1842
  .option("--plan", "只查看更新计划,不写文件")
1709
1843
  .option("-j, --json", "输出 JSON")
1710
1844
  .option("-f, --force", "覆盖已漂移的已安装产物")
1711
1845
  .action(runPlatformUpdate);
1712
1846
  platform
1713
1847
  .command("uninstall")
1848
+ .alias("remove")
1714
1849
  .description("卸载受管平台内容并删除安装记录")
1715
1850
  .argument("<target>", "目标平台 (qwen|codex|claude|opencode)", parsePlatformName)
1716
- .option("-d, --dir <dir>", "指定目录")
1717
- .option("-p, --project", "解析最近项目根")
1718
- .option("-g, --global", "解析官方文档定义的默认全局位置")
1851
+ .option("-d, --dir <dir>", "使用指定目录")
1852
+ .option("-p, --project", "使用当前目录向上解析出的最近项目根")
1853
+ .option("-g, --global", "使用平台定义的用户级默认位置")
1719
1854
  .option("--plan", "只查看卸载计划,不写文件")
1720
1855
  .option("-j, --json", "输出 JSON")
1721
1856
  .option("-f, --force", "允许卸载已漂移的受管内容")
1722
1857
  .action(runPlatformUninstall);
1723
1858
  platform
1724
1859
  .command("repair")
1860
+ .alias("fix")
1725
1861
  .description("修复漂移、缺失或官方 CLI 失配的安装")
1726
1862
  .argument("<target>", "目标平台 (qwen|codex|claude|opencode)", parsePlatformName)
1727
- .option("-d, --dir <dir>", "指定目录")
1728
- .option("-p, --project", "解析最近项目根")
1729
- .option("-g, --global", "解析官方文档定义的默认全局位置")
1863
+ .option("-d, --dir <dir>", "使用指定目录")
1864
+ .option("-p, --project", "使用当前目录向上解析出的最近项目根")
1865
+ .option("-g, --global", "使用平台定义的用户级默认位置")
1730
1866
  .option("--plan", "只查看修复计划,不写文件")
1731
1867
  .option("-j, --json", "输出 JSON")
1732
1868
  .action(runPlatformRepair);
1733
1869
  platform
1734
1870
  .command("doctor")
1871
+ .alias("check")
1735
1872
  .description("诊断当前平台安装的健康度和下一步建议")
1736
1873
  .argument("<target>", "目标平台 (qwen|codex|claude|opencode)", parsePlatformName)
1737
- .option("-d, --dir <dir>", "指定目录")
1738
- .option("-p, --project", "解析最近项目根")
1739
- .option("-g, --global", "解析官方文档定义的默认全局位置")
1874
+ .option("-d, --dir <dir>", "使用指定目录")
1875
+ .option("-p, --project", "使用当前目录向上解析出的最近项目根")
1876
+ .option("-g, --global", "使用平台定义的用户级默认位置")
1740
1877
  .option("-j, --json", "输出 JSON")
1741
1878
  .action(runPlatformDoctor);
1742
1879
  }