diff --git a/src/commands/internal/dns/fix-coredns.ts b/src/commands/internal/dns/fix-coredns.ts index 98902f347bc..3dbf06681db 100644 --- a/src/commands/internal/dns/fix-coredns.ts +++ b/src/commands/internal/dns/fix-coredns.ts @@ -1,11 +1,12 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { Args, Command, Flags } from "@oclif/core"; +import { Args, Flags } from "@oclif/core"; +import { NemoClawCommand } from "../../../lib/cli/nemoclaw-oclif-command"; import { runFixCoreDns } from "../../../lib/actions/dns"; -export default class InternalDnsFixCoreDnsCommand extends Command { +export default class InternalDnsFixCoreDnsCommand extends NemoClawCommand { static hidden = true; static strict = true; static summary = "Internal: patch CoreDNS for local gateway DNS"; diff --git a/src/commands/internal/dns/setup-proxy.ts b/src/commands/internal/dns/setup-proxy.ts index ab70f982d47..f5ffc072c58 100644 --- a/src/commands/internal/dns/setup-proxy.ts +++ b/src/commands/internal/dns/setup-proxy.ts @@ -1,11 +1,12 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { Args, Command, Flags } from "@oclif/core"; +import { Args, Flags } from "@oclif/core"; +import { NemoClawCommand } from "../../../lib/cli/nemoclaw-oclif-command"; import { runSetupDnsProxy } from "../../../lib/actions/dns"; -export default class InternalDnsSetupProxyCommand extends Command { +export default class InternalDnsSetupProxyCommand extends NemoClawCommand { static hidden = true; static strict = true; static summary = "Internal: configure sandbox DNS proxy"; diff --git a/src/commands/internal/installer/normalize-env.ts b/src/commands/internal/installer/normalize-env.ts index 2903093cbcf..482186b22ce 100644 --- a/src/commands/internal/installer/normalize-env.ts +++ b/src/commands/internal/installer/normalize-env.ts @@ -1,11 +1,12 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { Command, Flags } from "@oclif/core"; +import { Flags } from "@oclif/core"; +import { NemoClawCommand } from "../../../lib/cli/nemoclaw-oclif-command"; import { normalizeInstallerEnv } from "../../../lib/actions/installer/plan"; -export default class InternalInstallerNormalizeEnvCommand extends Command { +export default class InternalInstallerNormalizeEnvCommand extends NemoClawCommand { static hidden = true; static strict = true; static summary = "Internal: normalize installer environment values"; diff --git a/src/commands/internal/installer/plan.ts b/src/commands/internal/installer/plan.ts index caffee124e4..5b96c7d6ec0 100644 --- a/src/commands/internal/installer/plan.ts +++ b/src/commands/internal/installer/plan.ts @@ -1,11 +1,12 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { Command, Flags } from "@oclif/core"; +import { Flags } from "@oclif/core"; +import { NemoClawCommand } from "../../../lib/cli/nemoclaw-oclif-command"; import { buildInstallerPlan } from "../../../lib/actions/installer/plan"; -export default class InternalInstallerPlanCommand extends Command { +export default class InternalInstallerPlanCommand extends NemoClawCommand { static hidden = true; static strict = true; static summary = "Internal: build the NemoClaw installer plan"; diff --git a/src/commands/internal/installer/resolve-release-tag.ts b/src/commands/internal/installer/resolve-release-tag.ts index 56bd7ae9575..ca3fefb08e4 100644 --- a/src/commands/internal/installer/resolve-release-tag.ts +++ b/src/commands/internal/installer/resolve-release-tag.ts @@ -1,11 +1,12 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { Command, Flags } from "@oclif/core"; +import { Flags } from "@oclif/core"; +import { NemoClawCommand } from "../../../lib/cli/nemoclaw-oclif-command"; import { resolveInstallRef } from "../../../lib/domain/installer/ref"; -export default class InternalInstallerResolveReleaseTagCommand extends Command { +export default class InternalInstallerResolveReleaseTagCommand extends NemoClawCommand { static hidden = true; static strict = true; static summary = "Internal: resolve the installer release ref"; diff --git a/src/commands/internal/uninstall/classify-shim.ts b/src/commands/internal/uninstall/classify-shim.ts index e771008abe2..38312ce9938 100644 --- a/src/commands/internal/uninstall/classify-shim.ts +++ b/src/commands/internal/uninstall/classify-shim.ts @@ -1,11 +1,12 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { Args, Command, Flags } from "@oclif/core"; +import { Args, Flags } from "@oclif/core"; +import { NemoClawCommand } from "../../../lib/cli/nemoclaw-oclif-command"; import { classifyShimPath } from "../../../lib/actions/uninstall/plan"; -export default class InternalUninstallClassifyShimCommand extends Command { +export default class InternalUninstallClassifyShimCommand extends NemoClawCommand { static hidden = true; static strict = true; static summary = "Internal: classify a NemoClaw shim path"; diff --git a/src/commands/internal/uninstall/plan.ts b/src/commands/internal/uninstall/plan.ts index 99bf3d51968..72b99d5e3dd 100644 --- a/src/commands/internal/uninstall/plan.ts +++ b/src/commands/internal/uninstall/plan.ts @@ -1,12 +1,13 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { Command, Flags } from "@oclif/core"; +import { Flags } from "@oclif/core"; +import { NemoClawCommand } from "../../../lib/cli/nemoclaw-oclif-command"; import { buildHostUninstallPlan } from "../../../lib/actions/uninstall/plan"; import { CLI_DISPLAY_NAME, CLI_NAME } from "../../../lib/cli/branding"; -export default class InternalUninstallPlanCommand extends Command { +export default class InternalUninstallPlanCommand extends NemoClawCommand { static hidden = true; static strict = true; static summary = `Internal: build the ${CLI_DISPLAY_NAME} uninstall plan`; diff --git a/src/commands/internal/uninstall/run-plan.ts b/src/commands/internal/uninstall/run-plan.ts index 654f08b309e..b3f1b58056e 100644 --- a/src/commands/internal/uninstall/run-plan.ts +++ b/src/commands/internal/uninstall/run-plan.ts @@ -1,12 +1,13 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { Command, Flags } from "@oclif/core"; +import { Flags } from "@oclif/core"; +import { NemoClawCommand } from "../../../lib/cli/nemoclaw-oclif-command"; import { runUninstallPlan } from "../../../lib/actions/uninstall/run-plan"; import { CLI_DISPLAY_NAME, CLI_NAME } from "../../../lib/cli/branding"; -export default class InternalUninstallRunPlanCommand extends Command { +export default class InternalUninstallRunPlanCommand extends NemoClawCommand { static hidden = true; static strict = true; static summary = `${CLI_DISPLAY_NAME} Uninstaller`; diff --git a/src/lib/cli/oclif-command-metadata.test.ts b/src/lib/cli/oclif-command-metadata.test.ts index b1a96706033..a906ceedd23 100644 --- a/src/lib/cli/oclif-command-metadata.test.ts +++ b/src/lib/cli/oclif-command-metadata.test.ts @@ -4,7 +4,29 @@ import { Config as OclifConfig } from "@oclif/core"; import { describe, expect, it } from "vitest"; +function extendsNemoClawCommand(commandClass: unknown): boolean { + if (typeof commandClass !== "function") return false; + let current = Object.getPrototypeOf(commandClass) as { name?: string } | null; + while (current) { + if (current.name === "NemoClawCommand") return true; + current = Object.getPrototypeOf(current) as { name?: string } | null; + } + return false; +} + describe("oclif command metadata", () => { + it("keeps discovered commands on the shared NemoClaw oclif base", async () => { + const config = await OclifConfig.load(process.cwd()); + const nonConforming: string[] = []; + + for (const command of config.commands) { + const commandClass = await command.load(); + if (!extendsNemoClawCommand(commandClass)) nonConforming.push(command.id); + } + + expect(nonConforming).toEqual([]); + }); + it("keeps public discovered commands documented in oclif statics", async () => { const config = await OclifConfig.load(process.cwd()); const publicCommands = config.commands.filter((command) => command.hidden !== true); diff --git a/src/lib/commands/credentials.ts b/src/lib/commands/credentials.ts index bbcb929016c..be26a172e4d 100644 --- a/src/lib/commands/credentials.ts +++ b/src/lib/commands/credentials.ts @@ -1,11 +1,12 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { Command, Flags } from "@oclif/core"; +import { Flags } from "@oclif/core"; +import { NemoClawCommand } from "../cli/nemoclaw-oclif-command"; import { printCredentialsUsage } from "./credentials/common"; -export default class CredentialsCommand extends Command { +export default class CredentialsCommand extends NemoClawCommand { static id = "credentials"; static strict = true; static summary = "Manage provider credentials"; diff --git a/src/lib/commands/credentials/list.ts b/src/lib/commands/credentials/list.ts index cffd4cc4479..b1f3ac6fdd6 100644 --- a/src/lib/commands/credentials/list.ts +++ b/src/lib/commands/credentials/list.ts @@ -1,14 +1,15 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { Command, Flags } from "@oclif/core"; +import { Flags } from "@oclif/core"; +import { NemoClawCommand } from "../../cli/nemoclaw-oclif-command"; import { CLI_NAME } from "../../cli/branding"; import { runOpenshellProviderCommand } from "../../actions/global"; import { OPENSHELL_OPERATION_TIMEOUT_MS } from "../../adapters/openshell/timeouts"; import { isBridgeProviderName, recoverGatewayOrExit } from "./common"; -export default class CredentialsListCommand extends Command { +export default class CredentialsListCommand extends NemoClawCommand { static id = "credentials:list"; static strict = true; static summary = "List stored credential providers"; diff --git a/src/lib/commands/credentials/reset.ts b/src/lib/commands/credentials/reset.ts index 4b2265b9fa6..25c2f32cacc 100644 --- a/src/lib/commands/credentials/reset.ts +++ b/src/lib/commands/credentials/reset.ts @@ -1,7 +1,8 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { Args, Command, Flags } from "@oclif/core"; +import { Args, Flags } from "@oclif/core"; +import { NemoClawCommand } from "../../cli/nemoclaw-oclif-command"; import { CLI_NAME } from "../../cli/branding"; import { prompt as askPrompt } from "../../credentials/store"; @@ -9,7 +10,7 @@ import { runOpenshellProviderCommand } from "../../actions/global"; import { OPENSHELL_OPERATION_TIMEOUT_MS } from "../../adapters/openshell/timeouts"; import { isBridgeProviderName, recoverGatewayOrExit } from "./common"; -export default class CredentialsResetCommand extends Command { +export default class CredentialsResetCommand extends NemoClawCommand { static id = "credentials:reset"; static strict = true; static summary = "Remove a provider credential"; diff --git a/src/lib/commands/debug.ts b/src/lib/commands/debug.ts index c846d7b1529..52c743d0a9e 100644 --- a/src/lib/commands/debug.ts +++ b/src/lib/commands/debug.ts @@ -1,7 +1,8 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { Command, Flags } from "@oclif/core"; +import { Flags } from "@oclif/core"; +import { NemoClawCommand } from "../cli/nemoclaw-oclif-command"; import { CLI_NAME } from "../cli/branding"; import { runDebug } from "../diagnostics/debug"; @@ -67,7 +68,7 @@ function buildDebugCommandDeps(rootDir: string): RunDebugCommandDeps { }; } -export default class DebugCliCommand extends Command { +export default class DebugCliCommand extends NemoClawCommand { static id = "debug"; static strict = true; static summary = "Collect diagnostics for bug reports"; diff --git a/src/lib/commands/deploy.ts b/src/lib/commands/deploy.ts index 78a27ece12d..51c1706d173 100644 --- a/src/lib/commands/deploy.ts +++ b/src/lib/commands/deploy.ts @@ -1,11 +1,12 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { Args, Command, Flags } from "@oclif/core"; +import { Args, Flags } from "@oclif/core"; +import { NemoClawCommand } from "../cli/nemoclaw-oclif-command"; import { runDeployAction } from "../actions/global"; -export default class DeployCliCommand extends Command { +export default class DeployCliCommand extends NemoClawCommand { static id = "deploy"; static strict = true; static summary = "Deprecated Brev-specific bootstrap path"; diff --git a/src/lib/commands/deprecated/start.ts b/src/lib/commands/deprecated/start.ts index f3bafd262ae..e0d4f75efa7 100644 --- a/src/lib/commands/deprecated/start.ts +++ b/src/lib/commands/deprecated/start.ts @@ -1,14 +1,15 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { Command, Flags } from "@oclif/core"; +import { Flags } from "@oclif/core"; +import { NemoClawCommand } from "../../cli/nemoclaw-oclif-command"; import { CLI_NAME } from "../../cli/branding"; import { startAll } from "../../tunnel/services"; import { runStartCommand } from "../../tunnel/service-command"; import { serviceDeps } from "../tunnel/common"; -export default class DeprecatedStartCommand extends Command { +export default class DeprecatedStartCommand extends NemoClawCommand { static id = "start"; static strict = true; static summary = "Deprecated alias for 'tunnel start'"; diff --git a/src/lib/commands/deprecated/stop.ts b/src/lib/commands/deprecated/stop.ts index 46fbf833dc4..272ef927a21 100644 --- a/src/lib/commands/deprecated/stop.ts +++ b/src/lib/commands/deprecated/stop.ts @@ -1,14 +1,15 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { Command, Flags } from "@oclif/core"; +import { Flags } from "@oclif/core"; +import { NemoClawCommand } from "../../cli/nemoclaw-oclif-command"; import { CLI_NAME } from "../../cli/branding"; import { stopAll } from "../../tunnel/services"; import { runStopCommand } from "../../tunnel/service-command"; import { serviceDeps } from "../tunnel/common"; -export default class DeprecatedStopCommand extends Command { +export default class DeprecatedStopCommand extends NemoClawCommand { static id = "stop"; static strict = true; static summary = "Deprecated alias for 'tunnel stop'"; diff --git a/src/lib/commands/gateway-token.ts b/src/lib/commands/gateway-token.ts index 9d546322017..3a602d0127f 100644 --- a/src/lib/commands/gateway-token.ts +++ b/src/lib/commands/gateway-token.ts @@ -1,7 +1,8 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { Args, Command, Flags } from "@oclif/core"; +import { Args, Flags } from "@oclif/core"; +import { NemoClawCommand } from "../cli/nemoclaw-oclif-command"; import { runGatewayTokenCommand } from "../gateway-token-command"; @@ -40,7 +41,7 @@ function getRuntimeBridge(): GatewayTokenRuntimeBridge { return runtimeBridgeFactory(); } -export default class GatewayTokenCliCommand extends Command { +export default class GatewayTokenCliCommand extends NemoClawCommand { static id = "sandbox:gateway:token"; static strict = true; static summary = "Print the OpenClaw gateway auth token to stdout"; diff --git a/src/lib/commands/onboard.ts b/src/lib/commands/onboard.ts index 4e2bf9b9c8c..a3817a86083 100644 --- a/src/lib/commands/onboard.ts +++ b/src/lib/commands/onboard.ts @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { Command } from "@oclif/core"; +import { NemoClawCommand } from "../cli/nemoclaw-oclif-command"; import { runOnboardAction } from "../actions/global"; import { @@ -12,7 +12,7 @@ import { toLegacyOnboardArgs, } from "./onboard/common"; -export default class OnboardCliCommand extends Command { +export default class OnboardCliCommand extends NemoClawCommand { static id = "onboard"; static strict = true; static summary = "Configure inference endpoint and credentials"; diff --git a/src/lib/commands/sandbox/channels/add.ts b/src/lib/commands/sandbox/channels/add.ts index 369455140a4..12e9e794d2f 100644 --- a/src/lib/commands/sandbox/channels/add.ts +++ b/src/lib/commands/sandbox/channels/add.ts @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { Command } from "@oclif/core"; +import { NemoClawCommand } from "../../../cli/nemoclaw-oclif-command"; import { buildChannelArgs, @@ -10,7 +10,7 @@ import { getChannelsRuntimeBridge, } from "./common"; -export default class ChannelsAddCommand extends Command { +export default class ChannelsAddCommand extends NemoClawCommand { static id = "sandbox:channels:add"; static strict = true; static summary = "Save messaging channel credentials and rebuild"; diff --git a/src/lib/commands/sandbox/channels/list.ts b/src/lib/commands/sandbox/channels/list.ts index 1783ea200e8..76eb74cf175 100644 --- a/src/lib/commands/sandbox/channels/list.ts +++ b/src/lib/commands/sandbox/channels/list.ts @@ -1,12 +1,13 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { Command, Flags } from "@oclif/core"; +import { Flags } from "@oclif/core"; +import { NemoClawCommand } from "../../../cli/nemoclaw-oclif-command"; import { listSandboxChannels } from "../../../actions/sandbox/policy-channel"; import { sandboxNameArg } from "../common"; -export default class SandboxChannelsListCommand extends Command { +export default class SandboxChannelsListCommand extends NemoClawCommand { static id = "sandbox:channels:list"; static strict = true; static summary = "List supported messaging channels"; diff --git a/src/lib/commands/sandbox/channels/remove.ts b/src/lib/commands/sandbox/channels/remove.ts index fe483c582a4..2b0e6903c9f 100644 --- a/src/lib/commands/sandbox/channels/remove.ts +++ b/src/lib/commands/sandbox/channels/remove.ts @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { Command } from "@oclif/core"; +import { NemoClawCommand } from "../../../cli/nemoclaw-oclif-command"; import { buildChannelArgs, @@ -10,7 +10,7 @@ import { getChannelsRuntimeBridge, } from "./common"; -export default class ChannelsRemoveCommand extends Command { +export default class ChannelsRemoveCommand extends NemoClawCommand { static id = "sandbox:channels:remove"; static strict = true; static summary = "Clear messaging channel credentials and rebuild"; diff --git a/src/lib/commands/sandbox/channels/start.ts b/src/lib/commands/sandbox/channels/start.ts index 044b44ad048..d014c512c2d 100644 --- a/src/lib/commands/sandbox/channels/start.ts +++ b/src/lib/commands/sandbox/channels/start.ts @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { Command } from "@oclif/core"; +import { NemoClawCommand } from "../../../cli/nemoclaw-oclif-command"; import { buildChannelArgs, @@ -10,7 +10,7 @@ import { getChannelsRuntimeBridge, } from "./common"; -export default class ChannelsStartCommand extends Command { +export default class ChannelsStartCommand extends NemoClawCommand { static id = "sandbox:channels:start"; static strict = true; static summary = "Re-enable a stopped messaging channel"; diff --git a/src/lib/commands/sandbox/channels/stop.ts b/src/lib/commands/sandbox/channels/stop.ts index f4100a81645..a891eeac894 100644 --- a/src/lib/commands/sandbox/channels/stop.ts +++ b/src/lib/commands/sandbox/channels/stop.ts @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { Command } from "@oclif/core"; +import { NemoClawCommand } from "../../../cli/nemoclaw-oclif-command"; import { buildChannelArgs, @@ -10,7 +10,7 @@ import { getChannelsRuntimeBridge, } from "./common"; -export default class ChannelsStopCommand extends Command { +export default class ChannelsStopCommand extends NemoClawCommand { static id = "sandbox:channels:stop"; static strict = true; static summary = "Disable channel without wiping credentials"; diff --git a/src/lib/commands/sandbox/config/get.ts b/src/lib/commands/sandbox/config/get.ts index 400127dd163..f94388bf27e 100644 --- a/src/lib/commands/sandbox/config/get.ts +++ b/src/lib/commands/sandbox/config/get.ts @@ -1,13 +1,14 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { Command, Flags } from "@oclif/core"; +import { Flags } from "@oclif/core"; +import { NemoClawCommand } from "../../../cli/nemoclaw-oclif-command"; import { CLI_NAME } from "../../../cli/branding"; import * as sandboxConfig from "../../../sandbox/config"; import { sandboxNameArg } from "../common"; -export default class SandboxConfigGetCommand extends Command { +export default class SandboxConfigGetCommand extends NemoClawCommand { static id = "sandbox:config:get"; static strict = true; static summary = "Get sandbox configuration"; diff --git a/src/lib/commands/sandbox/config/set.ts b/src/lib/commands/sandbox/config/set.ts index 90eaa12ee9f..830d0528f6d 100644 --- a/src/lib/commands/sandbox/config/set.ts +++ b/src/lib/commands/sandbox/config/set.ts @@ -2,7 +2,8 @@ // SPDX-License-Identifier: Apache-2.0 -import { Args, Command, Flags } from "@oclif/core"; +import { Args, Flags } from "@oclif/core"; +import { NemoClawCommand } from "../../../cli/nemoclaw-oclif-command"; import * as sandboxConfig from "../../../sandbox/config"; @@ -12,7 +13,7 @@ const sandboxNameArg = Args.string({ required: true, }); -export default class SandboxConfigSetCommand extends Command { +export default class SandboxConfigSetCommand extends NemoClawCommand { static id = "sandbox:config:set"; static strict = true; static summary = "Set sandbox configuration"; diff --git a/src/lib/commands/sandbox/connect.ts b/src/lib/commands/sandbox/connect.ts index 36a61c5ea62..76eb7e6d45f 100644 --- a/src/lib/commands/sandbox/connect.ts +++ b/src/lib/commands/sandbox/connect.ts @@ -1,12 +1,13 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { Args, Command, Flags } from "@oclif/core"; +import { Args, Flags } from "@oclif/core"; +import { NemoClawCommand } from "../../cli/nemoclaw-oclif-command"; import { CLI_NAME } from "../../cli/branding"; import { connectSandbox } from "../../actions/sandbox/connect"; -export default class ConnectCliCommand extends Command { +export default class ConnectCliCommand extends NemoClawCommand { static id = "sandbox:connect"; static strict = true; static summary = "Shell into a running sandbox"; diff --git a/src/lib/commands/sandbox/doctor.ts b/src/lib/commands/sandbox/doctor.ts index 2cd2ab60ed3..914af1e47a9 100644 --- a/src/lib/commands/sandbox/doctor.ts +++ b/src/lib/commands/sandbox/doctor.ts @@ -1,11 +1,12 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { Args, Command, Flags } from "@oclif/core"; +import { Args, Flags } from "@oclif/core"; +import { NemoClawCommand } from "../../cli/nemoclaw-oclif-command"; import { runSandboxDoctor } from "../../actions/sandbox/doctor"; -export default class SandboxDoctorCliCommand extends Command { +export default class SandboxDoctorCliCommand extends NemoClawCommand { static id = "sandbox:doctor"; static strict = true; static summary = "Diagnose sandbox and gateway health"; diff --git a/src/lib/commands/sandbox/hosts/add.ts b/src/lib/commands/sandbox/hosts/add.ts index f2f7a899ed6..e01c4752ad2 100644 --- a/src/lib/commands/sandbox/hosts/add.ts +++ b/src/lib/commands/sandbox/hosts/add.ts @@ -1,11 +1,11 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { Command } from "@oclif/core"; +import { NemoClawCommand } from "../../../cli/nemoclaw-oclif-command"; import { buildHostAliasArgs, getHostsRuntimeBridge, hostAliasAddArgs, hostAliasMutationFlags } from "./common"; -export default class HostsAddCommand extends Command { +export default class HostsAddCommand extends NemoClawCommand { static id = "sandbox:hosts:add"; static strict = true; static summary = "Add a sandbox /etc/hosts alias"; diff --git a/src/lib/commands/sandbox/hosts/list.ts b/src/lib/commands/sandbox/hosts/list.ts index c621e3a3d06..e6aec22687a 100644 --- a/src/lib/commands/sandbox/hosts/list.ts +++ b/src/lib/commands/sandbox/hosts/list.ts @@ -1,11 +1,12 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { Command, Flags } from "@oclif/core"; +import { Flags } from "@oclif/core"; +import { NemoClawCommand } from "../../../cli/nemoclaw-oclif-command"; import { getHostsRuntimeBridge, hostAliasSandboxArgs } from "./common"; -export default class HostsListCommand extends Command { +export default class HostsListCommand extends NemoClawCommand { static id = "sandbox:hosts:list"; static strict = true; static summary = "List sandbox host aliases"; diff --git a/src/lib/commands/sandbox/hosts/remove.ts b/src/lib/commands/sandbox/hosts/remove.ts index 66b85bd5fd9..d3417989dbe 100644 --- a/src/lib/commands/sandbox/hosts/remove.ts +++ b/src/lib/commands/sandbox/hosts/remove.ts @@ -1,11 +1,11 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { Command } from "@oclif/core"; +import { NemoClawCommand } from "../../../cli/nemoclaw-oclif-command"; import { buildHostAliasArgs, getHostsRuntimeBridge, hostAliasMutationArgs, hostAliasMutationFlags } from "./common"; -export default class HostsRemoveCommand extends Command { +export default class HostsRemoveCommand extends NemoClawCommand { static id = "sandbox:hosts:remove"; static strict = true; static summary = "Remove a sandbox /etc/hosts alias"; diff --git a/src/lib/commands/sandbox/logs.ts b/src/lib/commands/sandbox/logs.ts index 09a8f818e8c..ba984d9b4d4 100644 --- a/src/lib/commands/sandbox/logs.ts +++ b/src/lib/commands/sandbox/logs.ts @@ -1,7 +1,8 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { Args, Command, Flags } from "@oclif/core"; +import { Args, Flags } from "@oclif/core"; +import { NemoClawCommand } from "../../cli/nemoclaw-oclif-command"; import { logsSinceDurationFlag } from "../../cli/duration-flags"; import type { SandboxLogsOptions } from "../../domain/sandbox/log-options"; @@ -31,7 +32,7 @@ function getRuntimeBridge() { return runtimeBridgeFactory(); } -export default class SandboxLogsCommand extends Command { +export default class SandboxLogsCommand extends NemoClawCommand { static id = "sandbox:logs"; static strict = true; static summary = "Stream sandbox logs"; diff --git a/src/lib/commands/sandbox/policy/add.ts b/src/lib/commands/sandbox/policy/add.ts index c110591f56c..1eaf67c8b94 100644 --- a/src/lib/commands/sandbox/policy/add.ts +++ b/src/lib/commands/sandbox/policy/add.ts @@ -1,7 +1,8 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { Command, Flags } from "@oclif/core"; +import { Flags } from "@oclif/core"; +import { NemoClawCommand } from "../../../cli/nemoclaw-oclif-command"; import { appendCommonPolicyFlags, @@ -10,7 +11,7 @@ import { policyMutationFlags, } from "./common"; -export default class PolicyAddCommand extends Command { +export default class PolicyAddCommand extends NemoClawCommand { static id = "sandbox:policy:add"; static strict = true; static summary = "Add a network or filesystem policy preset"; diff --git a/src/lib/commands/sandbox/policy/list.ts b/src/lib/commands/sandbox/policy/list.ts index 2349e6d123d..b68fb7b1c49 100644 --- a/src/lib/commands/sandbox/policy/list.ts +++ b/src/lib/commands/sandbox/policy/list.ts @@ -1,12 +1,13 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { Command, Flags } from "@oclif/core"; +import { Flags } from "@oclif/core"; +import { NemoClawCommand } from "../../../cli/nemoclaw-oclif-command"; import { listSandboxPolicies } from "../../../actions/sandbox/policy-channel"; import { sandboxNameArg } from "../common"; -export default class SandboxPolicyListCommand extends Command { +export default class SandboxPolicyListCommand extends NemoClawCommand { static id = "sandbox:policy:list"; static strict = true; static summary = "List policy presets"; diff --git a/src/lib/commands/sandbox/policy/remove.ts b/src/lib/commands/sandbox/policy/remove.ts index ce4b2e3212a..a8db63627f7 100644 --- a/src/lib/commands/sandbox/policy/remove.ts +++ b/src/lib/commands/sandbox/policy/remove.ts @@ -1,7 +1,7 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { Command } from "@oclif/core"; +import { NemoClawCommand } from "../../../cli/nemoclaw-oclif-command"; import { appendCommonPolicyFlags, @@ -10,7 +10,7 @@ import { policyMutationFlags, } from "./common"; -export default class PolicyRemoveCommand extends Command { +export default class PolicyRemoveCommand extends NemoClawCommand { static id = "sandbox:policy:remove"; static strict = true; static summary = "Remove an applied policy preset"; diff --git a/src/lib/commands/sandbox/share.ts b/src/lib/commands/sandbox/share.ts index 8f2e26e983d..6f808eb9d57 100644 --- a/src/lib/commands/sandbox/share.ts +++ b/src/lib/commands/sandbox/share.ts @@ -1,12 +1,13 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { Command, Flags } from "@oclif/core"; +import { Flags } from "@oclif/core"; +import { NemoClawCommand } from "../../cli/nemoclaw-oclif-command"; import { printShareUsageAndExit } from "../../share-command"; import { sandboxNameArg } from "./common"; -export default class ShareCommand extends Command { +export default class ShareCommand extends NemoClawCommand { static id = "sandbox:share"; static strict = true; static summary = "Mount/unmount sandbox filesystem on the host via SSHFS"; diff --git a/src/lib/commands/sandbox/share/mount.ts b/src/lib/commands/sandbox/share/mount.ts index f85d1dd00ae..e00f4db57f2 100644 --- a/src/lib/commands/sandbox/share/mount.ts +++ b/src/lib/commands/sandbox/share/mount.ts @@ -1,12 +1,13 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { Args, Command, Flags } from "@oclif/core"; +import { Args, Flags } from "@oclif/core"; +import { NemoClawCommand } from "../../../cli/nemoclaw-oclif-command"; import { runShareMount } from "../../../share-command"; import { sandboxNameArg } from "../common"; -export default class ShareMountCommand extends Command { +export default class ShareMountCommand extends NemoClawCommand { static id = "sandbox:share:mount"; static strict = true; static summary = "Mount sandbox filesystem on the host"; diff --git a/src/lib/commands/sandbox/share/status.ts b/src/lib/commands/sandbox/share/status.ts index 24bb6e44e76..910dfbaecad 100644 --- a/src/lib/commands/sandbox/share/status.ts +++ b/src/lib/commands/sandbox/share/status.ts @@ -1,12 +1,13 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { Args, Command, Flags } from "@oclif/core"; +import { Args, Flags } from "@oclif/core"; +import { NemoClawCommand } from "../../../cli/nemoclaw-oclif-command"; import { runShareStatus } from "../../../share-command"; import { sandboxNameArg } from "../common"; -export default class ShareStatusCommand extends Command { +export default class ShareStatusCommand extends NemoClawCommand { static id = "sandbox:share:status"; static strict = true; static summary = "Show sandbox share mount status"; diff --git a/src/lib/commands/sandbox/share/unmount.ts b/src/lib/commands/sandbox/share/unmount.ts index 3cb6cd9c5d7..174cf7691ad 100644 --- a/src/lib/commands/sandbox/share/unmount.ts +++ b/src/lib/commands/sandbox/share/unmount.ts @@ -1,12 +1,13 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { Args, Command, Flags } from "@oclif/core"; +import { Args, Flags } from "@oclif/core"; +import { NemoClawCommand } from "../../../cli/nemoclaw-oclif-command"; import { runShareUnmount } from "../../../share-command"; import { sandboxNameArg } from "../common"; -export default class ShareUnmountCommand extends Command { +export default class ShareUnmountCommand extends NemoClawCommand { static id = "sandbox:share:unmount"; static strict = true; static summary = "Unmount a shared sandbox filesystem"; diff --git a/src/lib/commands/sandbox/shields/down.ts b/src/lib/commands/sandbox/shields/down.ts index 2c0c0e39592..925036223fe 100644 --- a/src/lib/commands/sandbox/shields/down.ts +++ b/src/lib/commands/sandbox/shields/down.ts @@ -1,13 +1,14 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { Command, Flags } from "@oclif/core"; +import { Flags } from "@oclif/core"; +import { NemoClawCommand } from "../../../cli/nemoclaw-oclif-command"; import { shieldsTimeoutDurationFlag } from "../../../cli/duration-flags"; import * as shields from "../../../shields"; import { sandboxNameArg } from "../common"; -export default class ShieldsDownCommand extends Command { +export default class ShieldsDownCommand extends NemoClawCommand { static id = "sandbox:shields:down"; static hidden = true; static strict = true; diff --git a/src/lib/commands/sandbox/shields/status.ts b/src/lib/commands/sandbox/shields/status.ts index 1e4d537009c..df6efa089be 100644 --- a/src/lib/commands/sandbox/shields/status.ts +++ b/src/lib/commands/sandbox/shields/status.ts @@ -1,12 +1,13 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { Command, Flags } from "@oclif/core"; +import { Flags } from "@oclif/core"; +import { NemoClawCommand } from "../../../cli/nemoclaw-oclif-command"; import * as shields from "../../../shields"; import { sandboxNameArg } from "../common"; -export default class ShieldsStatusCommand extends Command { +export default class ShieldsStatusCommand extends NemoClawCommand { static id = "sandbox:shields:status"; static hidden = true; static strict = true; diff --git a/src/lib/commands/sandbox/shields/up.ts b/src/lib/commands/sandbox/shields/up.ts index f730f4fe1d0..e3d8464f7ad 100644 --- a/src/lib/commands/sandbox/shields/up.ts +++ b/src/lib/commands/sandbox/shields/up.ts @@ -1,12 +1,13 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { Command, Flags } from "@oclif/core"; +import { Flags } from "@oclif/core"; +import { NemoClawCommand } from "../../../cli/nemoclaw-oclif-command"; import * as shields from "../../../shields"; import { sandboxNameArg } from "../common"; -export default class ShieldsUpCommand extends Command { +export default class ShieldsUpCommand extends NemoClawCommand { static id = "sandbox:shields:up"; static hidden = true; static strict = true; diff --git a/src/lib/commands/sandbox/skill/install.ts b/src/lib/commands/sandbox/skill/install.ts index 98dd35c9993..10d8796941c 100644 --- a/src/lib/commands/sandbox/skill/install.ts +++ b/src/lib/commands/sandbox/skill/install.ts @@ -1,11 +1,12 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { Args, Command, Flags } from "@oclif/core"; +import { Args, Flags } from "@oclif/core"; +import { NemoClawCommand } from "../../../cli/nemoclaw-oclif-command"; import { getSkillInstallRuntimeBridge } from "./common"; -export default class SkillInstallCliCommand extends Command { +export default class SkillInstallCliCommand extends NemoClawCommand { static id = "sandbox:skill:install"; static strict = true; static summary = "Deploy a skill directory to the sandbox"; diff --git a/src/lib/commands/sandbox/snapshot/create.ts b/src/lib/commands/sandbox/snapshot/create.ts index c9b6f5fb252..19c5091eda0 100644 --- a/src/lib/commands/sandbox/snapshot/create.ts +++ b/src/lib/commands/sandbox/snapshot/create.ts @@ -1,11 +1,12 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { Command, Flags } from "@oclif/core"; +import { Flags } from "@oclif/core"; +import { NemoClawCommand } from "../../../cli/nemoclaw-oclif-command"; import { getSnapshotRuntimeBridge, sandboxNameArg } from "./common"; -export default class SnapshotCreateCommand extends Command { +export default class SnapshotCreateCommand extends NemoClawCommand { static id = "sandbox:snapshot:create"; static strict = true; static summary = "Create a snapshot of sandbox state"; diff --git a/src/lib/commands/sandbox/snapshot/list.ts b/src/lib/commands/sandbox/snapshot/list.ts index 2de740fd524..e5f602df822 100644 --- a/src/lib/commands/sandbox/snapshot/list.ts +++ b/src/lib/commands/sandbox/snapshot/list.ts @@ -1,11 +1,12 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { Command, Flags } from "@oclif/core"; +import { Flags } from "@oclif/core"; +import { NemoClawCommand } from "../../../cli/nemoclaw-oclif-command"; import { getSnapshotRuntimeBridge, sandboxNameArg } from "./common"; -export default class SnapshotListCommand extends Command { +export default class SnapshotListCommand extends NemoClawCommand { static id = "sandbox:snapshot:list"; static strict = true; static summary = "List available snapshots"; diff --git a/src/lib/commands/sandbox/snapshot/restore.ts b/src/lib/commands/sandbox/snapshot/restore.ts index 21c6b379cba..20dafa08afa 100644 --- a/src/lib/commands/sandbox/snapshot/restore.ts +++ b/src/lib/commands/sandbox/snapshot/restore.ts @@ -1,11 +1,12 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { Args, Command, Flags } from "@oclif/core"; +import { Args, Flags } from "@oclif/core"; +import { NemoClawCommand } from "../../../cli/nemoclaw-oclif-command"; import { getSnapshotRuntimeBridge, sandboxNameArg } from "./common"; -export default class SnapshotRestoreCommand extends Command { +export default class SnapshotRestoreCommand extends NemoClawCommand { static id = "sandbox:snapshot:restore"; static strict = true; static summary = "Restore state from a snapshot"; diff --git a/src/lib/commands/sandbox/status.ts b/src/lib/commands/sandbox/status.ts index 78a9284058d..aaa21c61bac 100644 --- a/src/lib/commands/sandbox/status.ts +++ b/src/lib/commands/sandbox/status.ts @@ -1,12 +1,13 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { Command, Flags } from "@oclif/core"; +import { Flags } from "@oclif/core"; +import { NemoClawCommand } from "../../cli/nemoclaw-oclif-command"; import { showSandboxStatus } from "../../actions/sandbox/status"; import { sandboxNameArg } from "./common"; -export default class SandboxStatusCommand extends Command { +export default class SandboxStatusCommand extends NemoClawCommand { static id = "sandbox:status"; static strict = true; static summary = "Sandbox health and NIM status"; diff --git a/src/lib/commands/setup-spark.ts b/src/lib/commands/setup-spark.ts index a3c8e0ab810..46b80d6a1bc 100644 --- a/src/lib/commands/setup-spark.ts +++ b/src/lib/commands/setup-spark.ts @@ -1,12 +1,12 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { Command } from "@oclif/core"; +import { NemoClawCommand } from "../cli/nemoclaw-oclif-command"; import { runSetupSparkAction } from "../actions/global"; import { buildOnboardFlags, type OnboardFlags, toLegacyOnboardArgs } from "./onboard/common"; -export default class SetupSparkCliCommand extends Command { +export default class SetupSparkCliCommand extends NemoClawCommand { static id = "setup-spark"; static strict = true; static summary = "Deprecated alias for nemoclaw onboard"; diff --git a/src/lib/commands/setup.ts b/src/lib/commands/setup.ts index c55f90240e9..5708e0d437d 100644 --- a/src/lib/commands/setup.ts +++ b/src/lib/commands/setup.ts @@ -1,12 +1,12 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { Command } from "@oclif/core"; +import { NemoClawCommand } from "../cli/nemoclaw-oclif-command"; import { runSetupAction } from "../actions/global"; import { buildOnboardFlags, type OnboardFlags, toLegacyOnboardArgs } from "./onboard/common"; -export default class SetupCliCommand extends Command { +export default class SetupCliCommand extends NemoClawCommand { static id = "setup"; static strict = true; static summary = "Deprecated alias for nemoclaw onboard"; diff --git a/src/lib/commands/tunnel/start.ts b/src/lib/commands/tunnel/start.ts index e3288dc25c1..bc5d1d4517d 100644 --- a/src/lib/commands/tunnel/start.ts +++ b/src/lib/commands/tunnel/start.ts @@ -1,13 +1,14 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { Command, Flags } from "@oclif/core"; +import { Flags } from "@oclif/core"; +import { NemoClawCommand } from "../../cli/nemoclaw-oclif-command"; import { startAll } from "../../tunnel/services"; import { runStartCommand } from "../../tunnel/service-command"; import { serviceDeps } from "./common"; -export default class TunnelStartCommand extends Command { +export default class TunnelStartCommand extends NemoClawCommand { static id = "tunnel:start"; static strict = true; static summary = "Start the cloudflared public-URL tunnel"; diff --git a/src/lib/commands/tunnel/stop.ts b/src/lib/commands/tunnel/stop.ts index 0d25b7f1523..cf02729f531 100644 --- a/src/lib/commands/tunnel/stop.ts +++ b/src/lib/commands/tunnel/stop.ts @@ -1,13 +1,14 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // SPDX-License-Identifier: Apache-2.0 -import { Command, Flags } from "@oclif/core"; +import { Flags } from "@oclif/core"; +import { NemoClawCommand } from "../../cli/nemoclaw-oclif-command"; import { stopAll } from "../../tunnel/services"; import { runStopCommand } from "../../tunnel/service-command"; import { serviceDeps } from "./common"; -export default class TunnelStopCommand extends Command { +export default class TunnelStopCommand extends NemoClawCommand { static id = "tunnel:stop"; static strict = true; static summary = "Stop the cloudflared public-URL tunnel"; diff --git a/src/lib/commands/uninstall.ts b/src/lib/commands/uninstall.ts index a4834a33ff1..b2d662bf58b 100644 --- a/src/lib/commands/uninstall.ts +++ b/src/lib/commands/uninstall.ts @@ -3,12 +3,13 @@ import { spawnSync } from "node:child_process"; -import { Command, Flags } from "@oclif/core"; +import { Flags } from "@oclif/core"; +import { NemoClawCommand } from "../cli/nemoclaw-oclif-command"; import { getVersion } from "../core/version"; import { buildVersionedUninstallUrl, runUninstallCommand } from "../uninstall-command"; -export default class UninstallCliCommand extends Command { +export default class UninstallCliCommand extends NemoClawCommand { static id = "uninstall"; static strict = false; static summary = "Run uninstall.sh"; diff --git a/src/lib/recover-cli-command.ts b/src/lib/recover-cli-command.ts index 576b5a89c89..b974fc3a746 100644 --- a/src/lib/recover-cli-command.ts +++ b/src/lib/recover-cli-command.ts @@ -1,12 +1,12 @@ // SPDX-FileCopyrightText: Copyright (c) 2026 NVIDIA CORPORATION & AFFILIATES. All rights reserved. // SPDX-License-Identifier: Apache-2.0 - -import { Args, Command, Flags } from "@oclif/core"; +import { Args, Flags } from "@oclif/core"; import { connectSandbox } from "./actions/sandbox/connect"; +import { NemoClawCommand } from "./cli/nemoclaw-oclif-command"; -export default class RecoverCliCommand extends Command { +export default class RecoverCliCommand extends NemoClawCommand { static id = "sandbox:recover"; static strict = true; static summary = "Restart the sandbox gateway and dashboard port-forward";