


























@@ -5,6 +5,10 @@ import process from "node:process";
55import { fileURLToPath } from "node:url";
66import { getCommandPathWithRootOptions, hasFlag, isRootHelpInvocation } from "./cli/argv.js";
77import { parseCliContainerArgs, resolveCliContainerTarget } from "./cli/container-target.js";
8+import {
9+resolvePrecomputedSubcommandHelpCommand,
10+type PrecomputedSubcommandHelpName,
11+} from "./cli/precomputed-help.js";
812import { applyCliProfileEnv, parseCliProfileArgs } from "./cli/profile.js";
913import type { RootHelpRenderOptions } from "./cli/program/root-help.js";
1014import { createGatewayStartupTrace } from "./cli/startup-trace.js";
@@ -16,7 +20,6 @@ import {
1620} from "./entry.compile-cache.js";
1721import { buildCliRespawnPlan, runCliRespawnPlan } from "./entry.respawn.js";
1822import { tryHandleRootVersionFastPath } from "./entry.version-fast-path.js";
19-import { consumeRootOptionToken } from "./infra/cli-root-options.js";
2023import { normalizeEnv } from "./infra/env.js";
2124import { isMainModule } from "./infra/is-main.js";
2225import { ensureOpenClawExecMarkerOnProcess } from "./infra/openclaw-exec-env.js";
@@ -28,18 +31,8 @@ const ENTRY_WRAPPER_PAIRS = [
2831] as const;
29323033type PrecomputedCommandHelpName = "browser" | "secrets" | "nodes";
31-type PrecomputedSubcommandHelpName =
32-| "doctor"
33-| "gateway"
34-| "models"
35-| "plugins"
36-| "sessions"
37-| "tasks";
3834type OutputPrecomputedHelpText = () => boolean;
393540-const HELP_FLAGS = new Set(["-h", "--help"]);
41-const VERSION_FLAGS = new Set(["-V", "--version"]);
42-4336const loadRootHelpLiveConfigModule = async () => await import("./cli/root-help-live-config.js");
4437const loadRootHelpMetadataModule = async () => await import("./cli/root-help-metadata.js");
4538@@ -209,57 +202,7 @@ function resolvePrecomputedCommandHelpName(argv: string[]): PrecomputedCommandHe
209202function resolvePrecomputedSubcommandHelpName(
210203argv: string[],
211204): PrecomputedSubcommandHelpName | null {
212-const args = argv.slice(2);
213-let commandName: PrecomputedSubcommandHelpName | null = null;
214-let sawHelp = false;
215-216-for (let index = 0; index < args.length; index += 1) {
217-const arg = args[index];
218-if (!arg || arg === "--") {
219-return null;
220-}
221-if (VERSION_FLAGS.has(arg)) {
222-return null;
223-}
224-if (!commandName) {
225-const consumed = consumeRootOptionToken(args, index);
226-if (consumed > 0) {
227-index += consumed - 1;
228-continue;
229-}
230-if (arg.startsWith("-")) {
231-return null;
232-}
233-commandName = resolvePrecomputedSubcommandName(arg);
234-if (!commandName) {
235-return null;
236-}
237-continue;
238-}
239-if (HELP_FLAGS.has(arg)) {
240-sawHelp = true;
241-continue;
242-}
243-return null;
244-}
245-246-return commandName && sawHelp ? commandName : null;
247-}
248-249-function resolvePrecomputedSubcommandName(
250-commandName: string,
251-): PrecomputedSubcommandHelpName | null {
252-if (
253-commandName === "doctor" ||
254-commandName === "gateway" ||
255-commandName === "models" ||
256-commandName === "plugins" ||
257-commandName === "sessions" ||
258-commandName === "tasks"
259-) {
260-return commandName;
261-}
262-return null;
205+return resolvePrecomputedSubcommandHelpCommand(argv);
263206}
264207265208export async function tryHandlePrecomputedCommandHelpFastPath(
此内容由惯性聚合(RSS阅读器)自动聚合整理,仅供阅读参考。 原文来自 — 版权归原作者所有。