refactor(cli): extract openshell runtime helpers - #2835
Merged
Conversation
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
cv
added a commit
that referenced
this pull request
May 2, 2026
## Summary Migrates the deprecated global `deploy` compatibility command to oclif. The existing deploy implementation remains unchanged behind the wrapper. ## Changes - Add `src/lib/deploy-cli-command.ts` for `deploy`.\n- Route global `deploy [instance-name]` through `runOclif()`.\n- Add help coverage for the deprecated deploy usage. ## Type of Change - [x] Code change (feature, bug fix, or refactor) - [ ] Code change with doc updates - [ ] Doc only (prose changes, no code sample modifications) - [ ] Doc only (includes code sample changes) ## Verification - [x] `npx prek run --all-files` passes - [x] `npm test` passes - [x] Tests added or updated for new or changed behavior - [x] No secrets, API keys, or credentials committed - [ ] Docs updated for user-facing behavior changes - [ ] `make docs` builds without warnings (doc changes only) - [ ] Doc pages follow the [style guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md) (doc changes only) - [ ] New doc pages include SPDX header and frontmatter (new pages only) ## AI Disclosure - [x] AI-assisted — tool: OpenAI Codex --- Signed-off-by: Carlos Villela <cvillela@nvidia.com> <!-- STACK-CONTEXT:START --> ## Stack position > [!NOTE] > This PR is part of a stacked refactor. Please review/merge in stack order. > The current PR is highlighted below. This is PR **#2809** in the stacked CLI oclif refactor series. - Merge after: **#2808** - Next PR: **#2810** - Stack position: **16 / 37** ## Full stack Merge from top to bottom. | Order | PR | Merge after | Title | |---:|---|---|---| | 1 | #2775 | `main` | refactor(cli): migrate status and tunnel commands to oclif | | 2 | #2776 | #2775 | refactor(cli): migrate debug uninstall and gateway-token to oclif | | 3 | #2786 | #2776 | refactor(cli): migrate credentials commands to oclif | | 4 | #2787 | #2786 | refactor(cli): migrate sandbox inspection commands to oclif | | 5 | #2788 | #2787 | refactor(cli): migrate maintenance commands to oclif | | 6 | #2796 | #2788 | refactor(cli): migrate sandbox logs command to oclif | | 7 | #2797 | #2796 | refactor(cli): migrate skill install command to oclif | | 8 | #2798 | #2797 | refactor(cli): migrate snapshot list and create to oclif | | 9 | #2802 | #2798 | refactor(cli): migrate shields commands to oclif | | 10 | #2803 | #2802 | refactor(cli): migrate channels mutation commands to oclif | | 11 | #2804 | #2803 | refactor(cli): migrate policy mutation commands to oclif | | 12 | #2805 | #2804 | refactor(cli): migrate snapshot restore command to oclif | | 13 | #2806 | #2805 | refactor(cli): migrate destroy command to oclif | | 14 | #2807 | #2806 | refactor(cli): migrate rebuild command to oclif | | 15 | #2808 | #2807 | refactor(cli): migrate connect command to oclif | | 16 | **#2809** | #2808 | **refactor(cli): migrate deploy command to oclif** | | 17 | #2810 | #2809 | refactor(cli): migrate onboard aliases to oclif | | 18 | #2811 | #2810 | refactor(cli): migrate help and version commands to oclif | | 19 | #2814 | #2811 | refactor(cli): centralize legacy oclif dispatch | | 20 | #2815 | #2814 | refactor(cli): drop trivial oclif wrapper helpers | | 21 | #2816 | #2815 | refactor(cli): centralize sandbox runtime bridge | | 22 | #2817 | #2816 | refactor(cli): centralize policy and channels runtime bridge | | 23 | #2818 | #2817 | refactor(cli): centralize global runtime bridge | | 24 | #2819 | #2818 | refactor(cli): collapse runtime bridge exports | | 25 | #2826 | #2819 | refactor(cli): introduce sandbox runtime action facade | | 26 | #2827 | #2826 | refactor(cli): introduce policy and channels action facade | | 27 | #2828 | #2827 | refactor(cli): introduce global command action facade | | 28 | #2830 | #2828 | refactor(cli): extract root help action | | 29 | #2831 | #2830 | refactor(cli): extract deploy action | | 30 | #2832 | #2831 | refactor(cli): extract onboard actions | | 31 | #2835 | #2832 | refactor(cli): extract openshell runtime helpers | | 32 | #2836 | #2835 | refactor(cli): extract sandbox logs action | | 33 | #2837 | #2836 | refactor(cli): extract maintenance actions | | 34 | #2838 | #2837 | refactor(cli): extract snapshot actions | | 35 | #2839 | #2838 | refactor(cli): extract policy and channels actions | | 36 | #2840 | #2839 | refactor(cli): extract credentials and list runtime bits | | 37 | #2841 | #2840 | refactor(cli): shrink runtime bridge | <!-- STACK-CONTEXT:END --> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Deploy command is now available in the CLI with an optional instance-name argument and help documentation. * **Tests** * Added test coverage for the deploy command help functionality. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Signed-off-by: Carlos Villela <cvillela@nvidia.com>
cv
added a commit
that referenced
this pull request
May 2, 2026
## Summary Migrates onboarding and its deprecated compatibility aliases to oclif while preserving the existing onboarding parser and flows. The wrappers delegate into the existing `onboard`, `setup`, and `setup-spark` implementations. ## Changes - Add `src/lib/onboard-cli-commands.ts` for `onboard`, `setup`, and `setup-spark`.\n- Route the global onboarding commands through `runOclif()`.\n- Preserve existing onboarding help, deprecation messages, third-party notice handling, and option validation. ## Type of Change - [x] Code change (feature, bug fix, or refactor) - [ ] Code change with doc updates - [ ] Doc only (prose changes, no code sample modifications) - [ ] Doc only (includes code sample changes) ## Verification - [x] `npx prek run --all-files` passes - [x] `npm test` passes - [x] Tests added or updated for new or changed behavior - [x] No secrets, API keys, or credentials committed - [ ] Docs updated for user-facing behavior changes - [ ] `make docs` builds without warnings (doc changes only) - [ ] Doc pages follow the [style guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md) (doc changes only) - [ ] New doc pages include SPDX header and frontmatter (new pages only) ## AI Disclosure - [x] AI-assisted — tool: OpenAI Codex --- Signed-off-by: Carlos Villela <cvillela@nvidia.com> <!-- STACK-CONTEXT:START --> ## Stack position > [!NOTE] > This PR is part of a stacked refactor. Please review/merge in stack order. > The current PR is highlighted below. This is PR **#2810** in the stacked CLI oclif refactor series. - Merge after: **#2809** - Next PR: **#2811** - Stack position: **17 / 37** ## Full stack Merge from top to bottom. | Order | PR | Merge after | Title | |---:|---|---|---| | 1 | #2775 | `main` | refactor(cli): migrate status and tunnel commands to oclif | | 2 | #2776 | #2775 | refactor(cli): migrate debug uninstall and gateway-token to oclif | | 3 | #2786 | #2776 | refactor(cli): migrate credentials commands to oclif | | 4 | #2787 | #2786 | refactor(cli): migrate sandbox inspection commands to oclif | | 5 | #2788 | #2787 | refactor(cli): migrate maintenance commands to oclif | | 6 | #2796 | #2788 | refactor(cli): migrate sandbox logs command to oclif | | 7 | #2797 | #2796 | refactor(cli): migrate skill install command to oclif | | 8 | #2798 | #2797 | refactor(cli): migrate snapshot list and create to oclif | | 9 | #2802 | #2798 | refactor(cli): migrate shields commands to oclif | | 10 | #2803 | #2802 | refactor(cli): migrate channels mutation commands to oclif | | 11 | #2804 | #2803 | refactor(cli): migrate policy mutation commands to oclif | | 12 | #2805 | #2804 | refactor(cli): migrate snapshot restore command to oclif | | 13 | #2806 | #2805 | refactor(cli): migrate destroy command to oclif | | 14 | #2807 | #2806 | refactor(cli): migrate rebuild command to oclif | | 15 | #2808 | #2807 | refactor(cli): migrate connect command to oclif | | 16 | #2809 | #2808 | refactor(cli): migrate deploy command to oclif | | 17 | **#2810** | #2809 | **refactor(cli): migrate onboard aliases to oclif** | | 18 | #2811 | #2810 | refactor(cli): migrate help and version commands to oclif | | 19 | #2814 | #2811 | refactor(cli): centralize legacy oclif dispatch | | 20 | #2815 | #2814 | refactor(cli): drop trivial oclif wrapper helpers | | 21 | #2816 | #2815 | refactor(cli): centralize sandbox runtime bridge | | 22 | #2817 | #2816 | refactor(cli): centralize policy and channels runtime bridge | | 23 | #2818 | #2817 | refactor(cli): centralize global runtime bridge | | 24 | #2819 | #2818 | refactor(cli): collapse runtime bridge exports | | 25 | #2826 | #2819 | refactor(cli): introduce sandbox runtime action facade | | 26 | #2827 | #2826 | refactor(cli): introduce policy and channels action facade | | 27 | #2828 | #2827 | refactor(cli): introduce global command action facade | | 28 | #2830 | #2828 | refactor(cli): extract root help action | | 29 | #2831 | #2830 | refactor(cli): extract deploy action | | 30 | #2832 | #2831 | refactor(cli): extract onboard actions | | 31 | #2835 | #2832 | refactor(cli): extract openshell runtime helpers | | 32 | #2836 | #2835 | refactor(cli): extract sandbox logs action | | 33 | #2837 | #2836 | refactor(cli): extract maintenance actions | | 34 | #2838 | #2837 | refactor(cli): extract snapshot actions | | 35 | #2839 | #2838 | refactor(cli): extract policy and channels actions | | 36 | #2840 | #2839 | refactor(cli): extract credentials and list runtime bits | | 37 | #2841 | #2840 | refactor(cli): shrink runtime bridge | <!-- STACK-CONTEXT:END --> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Introduced three new CLI commands—`onboard`, `setup`, and `setup-spark`—to provide enhanced configuration and setup capabilities via the command line interface. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Signed-off-by: Carlos Villela <cvillela@nvidia.com>
cv
added a commit
that referenced
this pull request
May 2, 2026
## Summary Migrates top-level help and version aliases to oclif, completing the command registry migration stack. The custom NemoClaw help renderer and version output remain unchanged behind hidden oclif commands. ## Changes - Add `src/lib/help-version-cli-commands.ts` for hidden `root:help` and `root:version` commands.\n- Route no-arg help, `help`, `--help`, `-h`, `--version`, and `-v` through `runOclif()`.\n- Ignore command metadata from the CLI coverage ratchet because it is covered by registry unit tests. ## Type of Change - [x] Code change (feature, bug fix, or refactor) - [ ] Code change with doc updates - [ ] Doc only (prose changes, no code sample modifications) - [ ] Doc only (includes code sample changes) ## Verification - [x] `npx prek run --all-files` passes - [x] `npm test` passes - [x] Tests added or updated for new or changed behavior - [x] No secrets, API keys, or credentials committed - [ ] Docs updated for user-facing behavior changes - [ ] `make docs` builds without warnings (doc changes only) - [ ] Doc pages follow the [style guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md) (doc changes only) - [ ] New doc pages include SPDX header and frontmatter (new pages only) ## AI Disclosure - [x] AI-assisted — tool: OpenAI Codex --- Signed-off-by: Carlos Villela <cvillela@nvidia.com> <!-- STACK-CONTEXT:START --> ## Stack position > [!NOTE] > This PR is part of a stacked refactor. Please review/merge in stack order. > The current PR is highlighted below. This is PR **#2811** in the stacked CLI oclif refactor series. - Merge after: **#2810** - Next PR: **#2814** - Stack position: **18 / 37** ## Full stack Merge from top to bottom. | Order | PR | Merge after | Title | |---:|---|---|---| | 1 | #2775 | `main` | refactor(cli): migrate status and tunnel commands to oclif | | 2 | #2776 | #2775 | refactor(cli): migrate debug uninstall and gateway-token to oclif | | 3 | #2786 | #2776 | refactor(cli): migrate credentials commands to oclif | | 4 | #2787 | #2786 | refactor(cli): migrate sandbox inspection commands to oclif | | 5 | #2788 | #2787 | refactor(cli): migrate maintenance commands to oclif | | 6 | #2796 | #2788 | refactor(cli): migrate sandbox logs command to oclif | | 7 | #2797 | #2796 | refactor(cli): migrate skill install command to oclif | | 8 | #2798 | #2797 | refactor(cli): migrate snapshot list and create to oclif | | 9 | #2802 | #2798 | refactor(cli): migrate shields commands to oclif | | 10 | #2803 | #2802 | refactor(cli): migrate channels mutation commands to oclif | | 11 | #2804 | #2803 | refactor(cli): migrate policy mutation commands to oclif | | 12 | #2805 | #2804 | refactor(cli): migrate snapshot restore command to oclif | | 13 | #2806 | #2805 | refactor(cli): migrate destroy command to oclif | | 14 | #2807 | #2806 | refactor(cli): migrate rebuild command to oclif | | 15 | #2808 | #2807 | refactor(cli): migrate connect command to oclif | | 16 | #2809 | #2808 | refactor(cli): migrate deploy command to oclif | | 17 | #2810 | #2809 | refactor(cli): migrate onboard aliases to oclif | | 18 | **#2811** | #2810 | **refactor(cli): migrate help and version commands to oclif** | | 19 | #2814 | #2811 | refactor(cli): centralize legacy oclif dispatch | | 20 | #2815 | #2814 | refactor(cli): drop trivial oclif wrapper helpers | | 21 | #2816 | #2815 | refactor(cli): centralize sandbox runtime bridge | | 22 | #2817 | #2816 | refactor(cli): centralize policy and channels runtime bridge | | 23 | #2818 | #2817 | refactor(cli): centralize global runtime bridge | | 24 | #2819 | #2818 | refactor(cli): collapse runtime bridge exports | | 25 | #2826 | #2819 | refactor(cli): introduce sandbox runtime action facade | | 26 | #2827 | #2826 | refactor(cli): introduce policy and channels action facade | | 27 | #2828 | #2827 | refactor(cli): introduce global command action facade | | 28 | #2830 | #2828 | refactor(cli): extract root help action | | 29 | #2831 | #2830 | refactor(cli): extract deploy action | | 30 | #2832 | #2831 | refactor(cli): extract onboard actions | | 31 | #2835 | #2832 | refactor(cli): extract openshell runtime helpers | | 32 | #2836 | #2835 | refactor(cli): extract sandbox logs action | | 33 | #2837 | #2836 | refactor(cli): extract maintenance actions | | 34 | #2838 | #2837 | refactor(cli): extract snapshot actions | | 35 | #2839 | #2838 | refactor(cli): extract policy and channels actions | | 36 | #2840 | #2839 | refactor(cli): extract credentials and list runtime bits | | 37 | #2841 | #2840 | refactor(cli): shrink runtime bridge | <!-- STACK-CONTEXT:END --> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Refactor** * Restructured CLI command routing infrastructure for help and version commands. No changes to visible end-user behavior or functionality. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Signed-off-by: Carlos Villela <cvillela@nvidia.com>
cv
added a commit
that referenced
this pull request
May 2, 2026
## Summary Centralizes the legacy public CLI shape to oclif command ID mapping in a table-driven dispatcher. This shrinks the command switch in `src/nemoclaw.ts` while preserving sandbox recovery, public usage text, and legacy edge-case diagnostics. ## Changes - Add `src/lib/legacy-oclif-dispatch.ts` to resolve global and sandbox-scoped public argv shapes to oclif command IDs. - Replace the large global/sandbox dispatch switch in `src/nemoclaw.ts` with `resolveGlobalOclifDispatch()` / `resolveSandboxOclifDispatch()` plus a small result handler. - Preserve legacy fallbacks for connect argument errors, skill help/unknown subcommands, snapshot generic help, and policy-add missing path diagnostics. - Update image cleanup guard tests to account for oclif bridge dispatch instead of a literal `case "gc"` switch. ## Type of Change - [x] Code change (feature, bug fix, or refactor) - [ ] Code change with doc updates - [ ] Doc only (prose changes, no code sample modifications) - [ ] Doc only (includes code sample changes) ## Verification - [x] `npx prek run --all-files` passes - [x] `npm test` passes - [x] Tests added or updated for new or changed behavior - [x] No secrets, API keys, or credentials committed - [ ] Docs updated for user-facing behavior changes - [ ] `make docs` builds without warnings (doc changes only) - [ ] Doc pages follow the [style guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md) (doc changes only) - [ ] New doc pages include SPDX header and frontmatter (new pages only) ## AI Disclosure - [x] AI-assisted — tool: OpenAI Codex --- Signed-off-by: Carlos Villela <cvillela@nvidia.com> <!-- STACK-CONTEXT:START --> ## Stack position > [!NOTE] > This PR is part of a stacked refactor. Please review/merge in stack order. > The current PR is highlighted below. This is PR **#2814** in the stacked CLI oclif refactor series. - Merge after: **#2811** - Next PR: **#2815** - Stack position: **19 / 37** ## Full stack Merge from top to bottom. | Order | PR | Merge after | Title | |---:|---|---|---| | 1 | #2775 | `main` | refactor(cli): migrate status and tunnel commands to oclif | | 2 | #2776 | #2775 | refactor(cli): migrate debug uninstall and gateway-token to oclif | | 3 | #2786 | #2776 | refactor(cli): migrate credentials commands to oclif | | 4 | #2787 | #2786 | refactor(cli): migrate sandbox inspection commands to oclif | | 5 | #2788 | #2787 | refactor(cli): migrate maintenance commands to oclif | | 6 | #2796 | #2788 | refactor(cli): migrate sandbox logs command to oclif | | 7 | #2797 | #2796 | refactor(cli): migrate skill install command to oclif | | 8 | #2798 | #2797 | refactor(cli): migrate snapshot list and create to oclif | | 9 | #2802 | #2798 | refactor(cli): migrate shields commands to oclif | | 10 | #2803 | #2802 | refactor(cli): migrate channels mutation commands to oclif | | 11 | #2804 | #2803 | refactor(cli): migrate policy mutation commands to oclif | | 12 | #2805 | #2804 | refactor(cli): migrate snapshot restore command to oclif | | 13 | #2806 | #2805 | refactor(cli): migrate destroy command to oclif | | 14 | #2807 | #2806 | refactor(cli): migrate rebuild command to oclif | | 15 | #2808 | #2807 | refactor(cli): migrate connect command to oclif | | 16 | #2809 | #2808 | refactor(cli): migrate deploy command to oclif | | 17 | #2810 | #2809 | refactor(cli): migrate onboard aliases to oclif | | 18 | #2811 | #2810 | refactor(cli): migrate help and version commands to oclif | | 19 | **#2814** | #2811 | **refactor(cli): centralize legacy oclif dispatch** | | 20 | #2815 | #2814 | refactor(cli): drop trivial oclif wrapper helpers | | 21 | #2816 | #2815 | refactor(cli): centralize sandbox runtime bridge | | 22 | #2817 | #2816 | refactor(cli): centralize policy and channels runtime bridge | | 23 | #2818 | #2817 | refactor(cli): centralize global runtime bridge | | 24 | #2819 | #2818 | refactor(cli): collapse runtime bridge exports | | 25 | #2826 | #2819 | refactor(cli): introduce sandbox runtime action facade | | 26 | #2827 | #2826 | refactor(cli): introduce policy and channels action facade | | 27 | #2828 | #2827 | refactor(cli): introduce global command action facade | | 28 | #2830 | #2828 | refactor(cli): extract root help action | | 29 | #2831 | #2830 | refactor(cli): extract deploy action | | 30 | #2832 | #2831 | refactor(cli): extract onboard actions | | 31 | #2835 | #2832 | refactor(cli): extract openshell runtime helpers | | 32 | #2836 | #2835 | refactor(cli): extract sandbox logs action | | 33 | #2837 | #2836 | refactor(cli): extract maintenance actions | | 34 | #2838 | #2837 | refactor(cli): extract snapshot actions | | 35 | #2839 | #2838 | refactor(cli): extract policy and channels actions | | 36 | #2840 | #2839 | refactor(cli): extract credentials and list runtime bits | | 37 | #2841 | #2840 | refactor(cli): shrink runtime bridge | <!-- STACK-CONTEXT:END --> --------- Signed-off-by: Carlos Villela <cvillela@nvidia.com>
cv
added a commit
that referenced
this pull request
May 2, 2026
## Summary Removes dead wrapper helpers that became unnecessary after centralizing legacy-to-oclif dispatch. The remaining entrypoint now calls the dispatcher directly instead of bouncing through one-line local functions. ## Changes - Delete trivial `runOclif()` forwarding helpers from `src/nemoclaw.ts` such as `start`, `stop`, `tunnel`, `debug`, `uninstall`, `credentialsCommand`, `showStatus`, and `listSandboxes`. - Remove unused local argument helper functions now handled by `legacy-oclif-dispatch.ts`. - Keep the shared `runOclif()` helper and public sandbox usage printer for the dispatcher result handler. ## Type of Change - [x] Code change (feature, bug fix, or refactor) - [ ] Code change with doc updates - [ ] Doc only (prose changes, no code sample modifications) - [ ] Doc only (includes code sample changes) ## Verification - [x] `npx prek run --all-files` passes - [x] `npm test` passes - [x] Tests added or updated for new or changed behavior - [x] No secrets, API keys, or credentials committed - [ ] Docs updated for user-facing behavior changes - [ ] `make docs` builds without warnings (doc changes only) - [ ] Doc pages follow the [style guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md) (doc changes only) - [ ] New doc pages include SPDX header and frontmatter (new pages only) ## AI Disclosure - [x] AI-assisted — tool: OpenAI Codex --- Signed-off-by: Carlos Villela <cvillela@nvidia.com> <!-- STACK-CONTEXT:START --> ## Stack position > [!NOTE] > This PR is part of a stacked refactor. Please review/merge in stack order. > The current PR is highlighted below. This is PR **#2815** in the stacked CLI oclif refactor series. - Merge after: **#2814** - Next PR: **#2816** - Stack position: **20 / 37** ## Full stack Merge from top to bottom. | Order | PR | Merge after | Title | |---:|---|---|---| | 1 | #2775 | `main` | refactor(cli): migrate status and tunnel commands to oclif | | 2 | #2776 | #2775 | refactor(cli): migrate debug uninstall and gateway-token to oclif | | 3 | #2786 | #2776 | refactor(cli): migrate credentials commands to oclif | | 4 | #2787 | #2786 | refactor(cli): migrate sandbox inspection commands to oclif | | 5 | #2788 | #2787 | refactor(cli): migrate maintenance commands to oclif | | 6 | #2796 | #2788 | refactor(cli): migrate sandbox logs command to oclif | | 7 | #2797 | #2796 | refactor(cli): migrate skill install command to oclif | | 8 | #2798 | #2797 | refactor(cli): migrate snapshot list and create to oclif | | 9 | #2802 | #2798 | refactor(cli): migrate shields commands to oclif | | 10 | #2803 | #2802 | refactor(cli): migrate channels mutation commands to oclif | | 11 | #2804 | #2803 | refactor(cli): migrate policy mutation commands to oclif | | 12 | #2805 | #2804 | refactor(cli): migrate snapshot restore command to oclif | | 13 | #2806 | #2805 | refactor(cli): migrate destroy command to oclif | | 14 | #2807 | #2806 | refactor(cli): migrate rebuild command to oclif | | 15 | #2808 | #2807 | refactor(cli): migrate connect command to oclif | | 16 | #2809 | #2808 | refactor(cli): migrate deploy command to oclif | | 17 | #2810 | #2809 | refactor(cli): migrate onboard aliases to oclif | | 18 | #2811 | #2810 | refactor(cli): migrate help and version commands to oclif | | 19 | #2814 | #2811 | refactor(cli): centralize legacy oclif dispatch | | 20 | **#2815** | #2814 | **refactor(cli): drop trivial oclif wrapper helpers** | | 21 | #2816 | #2815 | refactor(cli): centralize sandbox runtime bridge | | 22 | #2817 | #2816 | refactor(cli): centralize policy and channels runtime bridge | | 23 | #2818 | #2817 | refactor(cli): centralize global runtime bridge | | 24 | #2819 | #2818 | refactor(cli): collapse runtime bridge exports | | 25 | #2826 | #2819 | refactor(cli): introduce sandbox runtime action facade | | 26 | #2827 | #2826 | refactor(cli): introduce policy and channels action facade | | 27 | #2828 | #2827 | refactor(cli): introduce global command action facade | | 28 | #2830 | #2828 | refactor(cli): extract root help action | | 29 | #2831 | #2830 | refactor(cli): extract deploy action | | 30 | #2832 | #2831 | refactor(cli): extract onboard actions | | 31 | #2835 | #2832 | refactor(cli): extract openshell runtime helpers | | 32 | #2836 | #2835 | refactor(cli): extract sandbox logs action | | 33 | #2837 | #2836 | refactor(cli): extract maintenance actions | | 34 | #2838 | #2837 | refactor(cli): extract snapshot actions | | 35 | #2839 | #2838 | refactor(cli): extract policy and channels actions | | 36 | #2840 | #2839 | refactor(cli): extract credentials and list runtime bits | | 37 | #2841 | #2840 | refactor(cli): shrink runtime bridge | <!-- STACK-CONTEXT:END --> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Refactor** * Consolidated command handling infrastructure through a unified dispatch system for improved consistency and code maintainability. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Signed-off-by: Carlos Villela <cvillela@nvidia.com>
cv
added a commit
that referenced
this pull request
May 2, 2026
## Summary Centralizes the sandbox-oriented runtime bridge used by oclif adapters so individual sandbox command adapters no longer import `../nemoclaw` directly. This is a transitional cleanup step before extracting the underlying sandbox command implementations out of `src/nemoclaw.ts`. ## Changes - Add `src/lib/nemoclaw-runtime-bridge.ts` as a typed bridge to the remaining entrypoint-hosted command actions. - Update sandbox-oriented oclif adapters (`connect`, `destroy`, `rebuild`, `logs`, `skill install`, `snapshot`, and inspection commands) to use the centralized bridge. - Add targeted helper coverage for small CLI helper modules to keep the coverage ratchet stable while adapter files remain intentionally ignored. - Keep all public CLI behavior unchanged. ## Type of Change - [x] Code change (feature, bug fix, or refactor) - [ ] Code change with doc updates - [ ] Doc only (prose changes, no code sample modifications) - [ ] Doc only (includes code sample changes) ## Verification - [x] `npx prek run --all-files` passes - [x] `npm test` passes - [x] Tests added or updated for new or changed behavior - [x] No secrets, API keys, or credentials committed - [ ] Docs updated for user-facing behavior changes - [ ] `make docs` builds without warnings (doc changes only) - [ ] Doc pages follow the [style guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md) (doc changes only) - [ ] New doc pages include SPDX header and frontmatter (new pages only) ## AI Disclosure - [x] AI-assisted — tool: OpenAI Codex --- Signed-off-by: Carlos Villela <cvillela@nvidia.com> <!-- STACK-CONTEXT:START --> ## Stack position > [!NOTE] > This PR is part of a stacked refactor. Please review/merge in stack order. > The current PR is highlighted below. This is PR **#2816** in the stacked CLI oclif refactor series. - Merge after: **#2815** - Next PR: **#2817** - Stack position: **21 / 37** ## Full stack Merge from top to bottom. | Order | PR | Merge after | Title | |---:|---|---|---| | 1 | #2775 | `main` | refactor(cli): migrate status and tunnel commands to oclif | | 2 | #2776 | #2775 | refactor(cli): migrate debug uninstall and gateway-token to oclif | | 3 | #2786 | #2776 | refactor(cli): migrate credentials commands to oclif | | 4 | #2787 | #2786 | refactor(cli): migrate sandbox inspection commands to oclif | | 5 | #2788 | #2787 | refactor(cli): migrate maintenance commands to oclif | | 6 | #2796 | #2788 | refactor(cli): migrate sandbox logs command to oclif | | 7 | #2797 | #2796 | refactor(cli): migrate skill install command to oclif | | 8 | #2798 | #2797 | refactor(cli): migrate snapshot list and create to oclif | | 9 | #2802 | #2798 | refactor(cli): migrate shields commands to oclif | | 10 | #2803 | #2802 | refactor(cli): migrate channels mutation commands to oclif | | 11 | #2804 | #2803 | refactor(cli): migrate policy mutation commands to oclif | | 12 | #2805 | #2804 | refactor(cli): migrate snapshot restore command to oclif | | 13 | #2806 | #2805 | refactor(cli): migrate destroy command to oclif | | 14 | #2807 | #2806 | refactor(cli): migrate rebuild command to oclif | | 15 | #2808 | #2807 | refactor(cli): migrate connect command to oclif | | 16 | #2809 | #2808 | refactor(cli): migrate deploy command to oclif | | 17 | #2810 | #2809 | refactor(cli): migrate onboard aliases to oclif | | 18 | #2811 | #2810 | refactor(cli): migrate help and version commands to oclif | | 19 | #2814 | #2811 | refactor(cli): centralize legacy oclif dispatch | | 20 | #2815 | #2814 | refactor(cli): drop trivial oclif wrapper helpers | | 21 | **#2816** | #2815 | **refactor(cli): centralize sandbox runtime bridge** | | 22 | #2817 | #2816 | refactor(cli): centralize policy and channels runtime bridge | | 23 | #2818 | #2817 | refactor(cli): centralize global runtime bridge | | 24 | #2819 | #2818 | refactor(cli): collapse runtime bridge exports | | 25 | #2826 | #2819 | refactor(cli): introduce sandbox runtime action facade | | 26 | #2827 | #2826 | refactor(cli): introduce policy and channels action facade | | 27 | #2828 | #2827 | refactor(cli): introduce global command action facade | | 28 | #2830 | #2828 | refactor(cli): extract root help action | | 29 | #2831 | #2830 | refactor(cli): extract deploy action | | 30 | #2832 | #2831 | refactor(cli): extract onboard actions | | 31 | #2835 | #2832 | refactor(cli): extract openshell runtime helpers | | 32 | #2836 | #2835 | refactor(cli): extract sandbox logs action | | 33 | #2837 | #2836 | refactor(cli): extract maintenance actions | | 34 | #2838 | #2837 | refactor(cli): extract snapshot actions | | 35 | #2839 | #2838 | refactor(cli): extract policy and channels actions | | 36 | #2840 | #2839 | refactor(cli): extract credentials and list runtime bits | | 37 | #2841 | #2840 | refactor(cli): shrink runtime bridge | <!-- STACK-CONTEXT:END --> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit ## Release Notes * **Refactor** * Improved internal code organization of runtime bridge acquisition across CLI commands for better maintainability and testability. * **Tests** * Enhanced test coverage for CLI helper utilities including duration parsing, token handling, and sandbox operations. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Signed-off-by: Carlos Villela <cvillela@nvidia.com>
cv
added a commit
that referenced
this pull request
May 2, 2026
## Summary Moves policy and messaging-channel oclif adapters onto the centralized runtime bridge. This removes another group of direct `../nemoclaw` imports from command adapter files. ## Changes - Update `src/lib/channels-mutate-cli-commands.ts` to use `getNemoClawRuntimeBridge()`. - Update `src/lib/policy-mutate-cli-commands.ts` to use `getNemoClawRuntimeBridge()`. - Preserve existing test injection hooks for the adapter unit tests. - Keep public CLI behavior unchanged. ## Type of Change - [x] Code change (feature, bug fix, or refactor) - [ ] Code change with doc updates - [ ] Doc only (prose changes, no code sample modifications) - [ ] Doc only (includes code sample changes) ## Verification - [x] `npx prek run --all-files` passes - [x] `npm test` passes - [x] Tests added or updated for new or changed behavior - [x] No secrets, API keys, or credentials committed - [ ] Docs updated for user-facing behavior changes - [ ] `make docs` builds without warnings (doc changes only) - [ ] Doc pages follow the [style guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md) (doc changes only) - [ ] New doc pages include SPDX header and frontmatter (new pages only) ## AI Disclosure - [x] AI-assisted — tool: OpenAI Codex --- Signed-off-by: Carlos Villela <cvillela@nvidia.com> <!-- STACK-CONTEXT:START --> ## Stack position > [!NOTE] > This PR is part of a stacked refactor. Please review/merge in stack order. > The current PR is highlighted below. This is PR **#2817** in the stacked CLI oclif refactor series. - Merge after: **#2816** - Next PR: **#2818** - Stack position: **22 / 37** ## Full stack Merge from top to bottom. | Order | PR | Merge after | Title | |---:|---|---|---| | 1 | #2775 | `main` | refactor(cli): migrate status and tunnel commands to oclif | | 2 | #2776 | #2775 | refactor(cli): migrate debug uninstall and gateway-token to oclif | | 3 | #2786 | #2776 | refactor(cli): migrate credentials commands to oclif | | 4 | #2787 | #2786 | refactor(cli): migrate sandbox inspection commands to oclif | | 5 | #2788 | #2787 | refactor(cli): migrate maintenance commands to oclif | | 6 | #2796 | #2788 | refactor(cli): migrate sandbox logs command to oclif | | 7 | #2797 | #2796 | refactor(cli): migrate skill install command to oclif | | 8 | #2798 | #2797 | refactor(cli): migrate snapshot list and create to oclif | | 9 | #2802 | #2798 | refactor(cli): migrate shields commands to oclif | | 10 | #2803 | #2802 | refactor(cli): migrate channels mutation commands to oclif | | 11 | #2804 | #2803 | refactor(cli): migrate policy mutation commands to oclif | | 12 | #2805 | #2804 | refactor(cli): migrate snapshot restore command to oclif | | 13 | #2806 | #2805 | refactor(cli): migrate destroy command to oclif | | 14 | #2807 | #2806 | refactor(cli): migrate rebuild command to oclif | | 15 | #2808 | #2807 | refactor(cli): migrate connect command to oclif | | 16 | #2809 | #2808 | refactor(cli): migrate deploy command to oclif | | 17 | #2810 | #2809 | refactor(cli): migrate onboard aliases to oclif | | 18 | #2811 | #2810 | refactor(cli): migrate help and version commands to oclif | | 19 | #2814 | #2811 | refactor(cli): centralize legacy oclif dispatch | | 20 | #2815 | #2814 | refactor(cli): drop trivial oclif wrapper helpers | | 21 | #2816 | #2815 | refactor(cli): centralize sandbox runtime bridge | | 22 | **#2817** | #2816 | **refactor(cli): centralize policy and channels runtime bridge** | | 23 | #2818 | #2817 | refactor(cli): centralize global runtime bridge | | 24 | #2819 | #2818 | refactor(cli): collapse runtime bridge exports | | 25 | #2826 | #2819 | refactor(cli): introduce sandbox runtime action facade | | 26 | #2827 | #2826 | refactor(cli): introduce policy and channels action facade | | 27 | #2828 | #2827 | refactor(cli): introduce global command action facade | | 28 | #2830 | #2828 | refactor(cli): extract root help action | | 29 | #2831 | #2830 | refactor(cli): extract deploy action | | 30 | #2832 | #2831 | refactor(cli): extract onboard actions | | 31 | #2835 | #2832 | refactor(cli): extract openshell runtime helpers | | 32 | #2836 | #2835 | refactor(cli): extract sandbox logs action | | 33 | #2837 | #2836 | refactor(cli): extract maintenance actions | | 34 | #2838 | #2837 | refactor(cli): extract snapshot actions | | 35 | #2839 | #2838 | refactor(cli): extract policy and channels actions | | 36 | #2840 | #2839 | refactor(cli): extract credentials and list runtime bits | | 37 | #2841 | #2840 | refactor(cli): shrink runtime bridge | <!-- STACK-CONTEXT:END --> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit ## Refactor - Refactored internal runtime infrastructure for CLI commands managing channels and policies. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Signed-off-by: Carlos Villela <cvillela@nvidia.com>
cv
added a commit
that referenced
this pull request
May 2, 2026
## Summary Moves global command oclif adapters onto the centralized runtime bridge. After this change, direct `../nemoclaw` imports are limited to the single runtime bridge module. ## Changes - Update global adapters for deploy, maintenance commands, onboarding aliases, help/version, credentials, and list dependencies to use `getNemoClawRuntimeBridge()`. - Extend the bridge typing to include `captureOpenshell` and typed registry recovery data needed by list dependencies. - Keep public CLI behavior unchanged. ## Type of Change - [x] Code change (feature, bug fix, or refactor) - [ ] Code change with doc updates - [ ] Doc only (prose changes, no code sample modifications) - [ ] Doc only (includes code sample changes) ## Verification - [x] `npx prek run --all-files` passes - [x] `npm test` passes - [x] Tests added or updated for new or changed behavior - [x] No secrets, API keys, or credentials committed - [ ] Docs updated for user-facing behavior changes - [ ] `make docs` builds without warnings (doc changes only) - [ ] Doc pages follow the [style guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md) (doc changes only) - [ ] New doc pages include SPDX header and frontmatter (new pages only) ## AI Disclosure - [x] AI-assisted — tool: OpenAI Codex --- Signed-off-by: Carlos Villela <cvillela@nvidia.com> <!-- STACK-CONTEXT:START --> ## Stack position > [!NOTE] > This PR is part of a stacked refactor. Please review/merge in stack order. > The current PR is highlighted below. This is PR **#2818** in the stacked CLI oclif refactor series. - Merge after: **#2817** - Next PR: **#2819** - Stack position: **23 / 37** ## Full stack Merge from top to bottom. | Order | PR | Merge after | Title | |---:|---|---|---| | 1 | #2775 | `main` | refactor(cli): migrate status and tunnel commands to oclif | | 2 | #2776 | #2775 | refactor(cli): migrate debug uninstall and gateway-token to oclif | | 3 | #2786 | #2776 | refactor(cli): migrate credentials commands to oclif | | 4 | #2787 | #2786 | refactor(cli): migrate sandbox inspection commands to oclif | | 5 | #2788 | #2787 | refactor(cli): migrate maintenance commands to oclif | | 6 | #2796 | #2788 | refactor(cli): migrate sandbox logs command to oclif | | 7 | #2797 | #2796 | refactor(cli): migrate skill install command to oclif | | 8 | #2798 | #2797 | refactor(cli): migrate snapshot list and create to oclif | | 9 | #2802 | #2798 | refactor(cli): migrate shields commands to oclif | | 10 | #2803 | #2802 | refactor(cli): migrate channels mutation commands to oclif | | 11 | #2804 | #2803 | refactor(cli): migrate policy mutation commands to oclif | | 12 | #2805 | #2804 | refactor(cli): migrate snapshot restore command to oclif | | 13 | #2806 | #2805 | refactor(cli): migrate destroy command to oclif | | 14 | #2807 | #2806 | refactor(cli): migrate rebuild command to oclif | | 15 | #2808 | #2807 | refactor(cli): migrate connect command to oclif | | 16 | #2809 | #2808 | refactor(cli): migrate deploy command to oclif | | 17 | #2810 | #2809 | refactor(cli): migrate onboard aliases to oclif | | 18 | #2811 | #2810 | refactor(cli): migrate help and version commands to oclif | | 19 | #2814 | #2811 | refactor(cli): centralize legacy oclif dispatch | | 20 | #2815 | #2814 | refactor(cli): drop trivial oclif wrapper helpers | | 21 | #2816 | #2815 | refactor(cli): centralize sandbox runtime bridge | | 22 | #2817 | #2816 | refactor(cli): centralize policy and channels runtime bridge | | 23 | **#2818** | #2817 | **refactor(cli): centralize global runtime bridge** | | 24 | #2819 | #2818 | refactor(cli): collapse runtime bridge exports | | 25 | #2826 | #2819 | refactor(cli): introduce sandbox runtime action facade | | 26 | #2827 | #2826 | refactor(cli): introduce policy and channels action facade | | 27 | #2828 | #2827 | refactor(cli): introduce global command action facade | | 28 | #2830 | #2828 | refactor(cli): extract root help action | | 29 | #2831 | #2830 | refactor(cli): extract deploy action | | 30 | #2832 | #2831 | refactor(cli): extract onboard actions | | 31 | #2835 | #2832 | refactor(cli): extract openshell runtime helpers | | 32 | #2836 | #2835 | refactor(cli): extract sandbox logs action | | 33 | #2837 | #2836 | refactor(cli): extract maintenance actions | | 34 | #2838 | #2837 | refactor(cli): extract snapshot actions | | 35 | #2839 | #2838 | refactor(cli): extract policy and channels actions | | 36 | #2840 | #2839 | refactor(cli): extract credentials and list runtime bits | | 37 | #2841 | #2840 | refactor(cli): shrink runtime bridge | <!-- STACK-CONTEXT:END --> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Added `captureOpenshell` capability to the runtime bridge. * **Refactor** * Consolidated CLI command implementations to use a centralized runtime bridge accessor, removing duplicate local bridge definitions across multiple command modules. * Enhanced runtime bridge method signatures for improved flexibility in environment and timeout configuration. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Signed-off-by: Carlos Villela <cvillela@nvidia.com>
cv
added a commit
that referenced
this pull request
May 2, 2026
## Summary
Collapses the many transitional `exports.*` bridge entries in
`src/nemoclaw.ts` into a single exported `runtimeBridge` object. This
reduces entrypoint export surface while preserving the remaining
centralized bridge until command implementations are fully extracted
into library modules.
## Changes
- Replace dozens of individual `exports.foo = foo` assignments with one
`exports.runtimeBridge = { ... }` object.
- Update `src/lib/nemoclaw-runtime-bridge.ts` to read the single
`runtimeBridge` export.
- Keep `mainPromise` exported for existing subprocess test harnesses.
- Keep public CLI behavior unchanged.
## Type of Change
- [x] Code change (feature, bug fix, or refactor)
- [ ] Code change with doc updates
- [ ] Doc only (prose changes, no code sample modifications)
- [ ] Doc only (includes code sample changes)
## Verification
- [x] `npx prek run --all-files` passes
- [x] `npm test` passes
- [x] Tests added or updated for new or changed behavior
- [x] No secrets, API keys, or credentials committed
- [ ] Docs updated for user-facing behavior changes
- [ ] `make docs` builds without warnings (doc changes only)
- [ ] Doc pages follow the [style
guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md)
(doc changes only)
- [ ] New doc pages include SPDX header and frontmatter (new pages only)
## AI Disclosure
- [x] AI-assisted — tool: OpenAI Codex
---
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
<!-- STACK-CONTEXT:START -->
## Stack position
> [!NOTE]
> This PR is part of a stacked refactor. Please review/merge in stack
order.
> The current PR is highlighted below.
This is PR **#2819** in the stacked CLI oclif refactor series.
- Merge after: **#2818**
- Next PR: **#2826**
- Stack position: **24 / 37**
## Full stack
Merge from top to bottom.
| Order | PR | Merge after | Title |
|---:|---|---|---|
| 1 | #2775 | `main` | refactor(cli): migrate status and tunnel commands
to oclif |
| 2 | #2776 | #2775 | refactor(cli): migrate debug uninstall and
gateway-token to oclif |
| 3 | #2786 | #2776 | refactor(cli): migrate credentials commands to
oclif |
| 4 | #2787 | #2786 | refactor(cli): migrate sandbox inspection commands
to oclif |
| 5 | #2788 | #2787 | refactor(cli): migrate maintenance commands to
oclif |
| 6 | #2796 | #2788 | refactor(cli): migrate sandbox logs command to
oclif |
| 7 | #2797 | #2796 | refactor(cli): migrate skill install command to
oclif |
| 8 | #2798 | #2797 | refactor(cli): migrate snapshot list and create to
oclif |
| 9 | #2802 | #2798 | refactor(cli): migrate shields commands to oclif |
| 10 | #2803 | #2802 | refactor(cli): migrate channels mutation commands
to oclif |
| 11 | #2804 | #2803 | refactor(cli): migrate policy mutation commands
to oclif |
| 12 | #2805 | #2804 | refactor(cli): migrate snapshot restore command
to oclif |
| 13 | #2806 | #2805 | refactor(cli): migrate destroy command to oclif |
| 14 | #2807 | #2806 | refactor(cli): migrate rebuild command to oclif |
| 15 | #2808 | #2807 | refactor(cli): migrate connect command to oclif |
| 16 | #2809 | #2808 | refactor(cli): migrate deploy command to oclif |
| 17 | #2810 | #2809 | refactor(cli): migrate onboard aliases to oclif |
| 18 | #2811 | #2810 | refactor(cli): migrate help and version commands
to oclif |
| 19 | #2814 | #2811 | refactor(cli): centralize legacy oclif dispatch |
| 20 | #2815 | #2814 | refactor(cli): drop trivial oclif wrapper helpers
|
| 21 | #2816 | #2815 | refactor(cli): centralize sandbox runtime bridge
|
| 22 | #2817 | #2816 | refactor(cli): centralize policy and channels
runtime bridge |
| 23 | #2818 | #2817 | refactor(cli): centralize global runtime bridge |
| 24 | **#2819** | #2818 | **refactor(cli): collapse runtime bridge
exports** |
| 25 | #2826 | #2819 | refactor(cli): introduce sandbox runtime action
facade |
| 26 | #2827 | #2826 | refactor(cli): introduce policy and channels
action facade |
| 27 | #2828 | #2827 | refactor(cli): introduce global command action
facade |
| 28 | #2830 | #2828 | refactor(cli): extract root help action |
| 29 | #2831 | #2830 | refactor(cli): extract deploy action |
| 30 | #2832 | #2831 | refactor(cli): extract onboard actions |
| 31 | #2835 | #2832 | refactor(cli): extract openshell runtime helpers
|
| 32 | #2836 | #2835 | refactor(cli): extract sandbox logs action |
| 33 | #2837 | #2836 | refactor(cli): extract maintenance actions |
| 34 | #2838 | #2837 | refactor(cli): extract snapshot actions |
| 35 | #2839 | #2838 | refactor(cli): extract policy and channels
actions |
| 36 | #2840 | #2839 | refactor(cli): extract credentials and list
runtime bits |
| 37 | #2841 | #2840 | refactor(cli): shrink runtime bridge |
<!-- STACK-CONTEXT:END -->
<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit
* **Refactor**
* Reorganized internal module structure to improve runtime bridge
initialization and module resolution without affecting the public API.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
---------
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
cv
added a commit
that referenced
this pull request
May 2, 2026
## Summary Introduces a sandbox runtime action facade between oclif adapters and the temporary NemoClaw runtime bridge. This prepares the sandbox command implementations for a later physical extraction from `src/nemoclaw.ts` without changing public behavior. ## Changes - Add `src/lib/sandbox-runtime-actions.ts` for connect/status/logs/destroy/rebuild/skill/snapshot sandbox actions. - Update sandbox-oriented oclif adapters to call the action facade instead of the runtime bridge directly. - Preserve existing test injection hooks for logs, skill install, and snapshot wrappers. - Keep public CLI behavior unchanged. ## Type of Change - [x] Code change (feature, bug fix, or refactor) - [ ] Code change with doc updates - [ ] Doc only (prose changes, no code sample modifications) - [ ] Doc only (includes code sample changes) ## Verification - [x] `npx prek run --all-files` passes - [x] `npm test` passes - [x] Tests added or updated for new or changed behavior - [x] No secrets, API keys, or credentials committed - [ ] Docs updated for user-facing behavior changes - [ ] `make docs` builds without warnings (doc changes only) - [ ] Doc pages follow the [style guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md) (doc changes only) - [ ] New doc pages include SPDX header and frontmatter (new pages only) ## AI Disclosure - [x] AI-assisted — tool: OpenAI Codex --- Signed-off-by: Carlos Villela <cvillela@nvidia.com> <!-- STACK-CONTEXT:START --> ## Stack position > [!NOTE] > This PR is part of a stacked refactor. Please review/merge in stack order. > The current PR is highlighted below. This is PR **#2826** in the stacked CLI oclif refactor series. - Merge after: **#2819** - Next PR: **#2827** - Stack position: **25 / 37** ## Full stack Merge from top to bottom. | Order | PR | Merge after | Title | |---:|---|---|---| | 1 | #2775 | `main` | refactor(cli): migrate status and tunnel commands to oclif | | 2 | #2776 | #2775 | refactor(cli): migrate debug uninstall and gateway-token to oclif | | 3 | #2786 | #2776 | refactor(cli): migrate credentials commands to oclif | | 4 | #2787 | #2786 | refactor(cli): migrate sandbox inspection commands to oclif | | 5 | #2788 | #2787 | refactor(cli): migrate maintenance commands to oclif | | 6 | #2796 | #2788 | refactor(cli): migrate sandbox logs command to oclif | | 7 | #2797 | #2796 | refactor(cli): migrate skill install command to oclif | | 8 | #2798 | #2797 | refactor(cli): migrate snapshot list and create to oclif | | 9 | #2802 | #2798 | refactor(cli): migrate shields commands to oclif | | 10 | #2803 | #2802 | refactor(cli): migrate channels mutation commands to oclif | | 11 | #2804 | #2803 | refactor(cli): migrate policy mutation commands to oclif | | 12 | #2805 | #2804 | refactor(cli): migrate snapshot restore command to oclif | | 13 | #2806 | #2805 | refactor(cli): migrate destroy command to oclif | | 14 | #2807 | #2806 | refactor(cli): migrate rebuild command to oclif | | 15 | #2808 | #2807 | refactor(cli): migrate connect command to oclif | | 16 | #2809 | #2808 | refactor(cli): migrate deploy command to oclif | | 17 | #2810 | #2809 | refactor(cli): migrate onboard aliases to oclif | | 18 | #2811 | #2810 | refactor(cli): migrate help and version commands to oclif | | 19 | #2814 | #2811 | refactor(cli): centralize legacy oclif dispatch | | 20 | #2815 | #2814 | refactor(cli): drop trivial oclif wrapper helpers | | 21 | #2816 | #2815 | refactor(cli): centralize sandbox runtime bridge | | 22 | #2817 | #2816 | refactor(cli): centralize policy and channels runtime bridge | | 23 | #2818 | #2817 | refactor(cli): centralize global runtime bridge | | 24 | #2819 | #2818 | refactor(cli): collapse runtime bridge exports | | 25 | **#2826** | #2819 | **refactor(cli): introduce sandbox runtime action facade** | | 26 | #2827 | #2826 | refactor(cli): introduce policy and channels action facade | | 27 | #2828 | #2827 | refactor(cli): introduce global command action facade | | 28 | #2830 | #2828 | refactor(cli): extract root help action | | 29 | #2831 | #2830 | refactor(cli): extract deploy action | | 30 | #2832 | #2831 | refactor(cli): extract onboard actions | | 31 | #2835 | #2832 | refactor(cli): extract openshell runtime helpers | | 32 | #2836 | #2835 | refactor(cli): extract sandbox logs action | | 33 | #2837 | #2836 | refactor(cli): extract maintenance actions | | 34 | #2838 | #2837 | refactor(cli): extract snapshot actions | | 35 | #2839 | #2838 | refactor(cli): extract policy and channels actions | | 36 | #2840 | #2839 | refactor(cli): extract credentials and list runtime bits | | 37 | #2841 | #2840 | refactor(cli): shrink runtime bridge | <!-- STACK-CONTEXT:END --> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Refactor** * Reorganized internal sandbox runtime operation handling for improved code maintainability. CLI command behavior remains unchanged—all sandbox operations (connect, destroy, rebuild, status, logs, skill installation, snapshots) continue to function as before. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Signed-off-by: Carlos Villela <cvillela@nvidia.com>
cv
added a commit
that referenced
this pull request
May 2, 2026
## Summary Introduces a policy and channels action facade between oclif adapters and the temporary NemoClaw runtime bridge. This prepares those command families for later extraction from `src/nemoclaw.ts` while preserving behavior. ## Changes - Add `src/lib/policy-channel-actions.ts` for policy and messaging channel action calls. - Update policy/channel mutation adapters to call the facade. - Update sandbox inspection channel/policy list commands to call the facade. - Preserve existing adapter test hooks and public CLI behavior. ## Type of Change - [x] Code change (feature, bug fix, or refactor) - [ ] Code change with doc updates - [ ] Doc only (prose changes, no code sample modifications) - [ ] Doc only (includes code sample changes) ## Verification - [x] `npx prek run --all-files` passes - [x] `npm test` passes - [x] Tests added or updated for new or changed behavior - [x] No secrets, API keys, or credentials committed - [ ] Docs updated for user-facing behavior changes - [ ] `make docs` builds without warnings (doc changes only) - [ ] Doc pages follow the [style guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md) (doc changes only) - [ ] New doc pages include SPDX header and frontmatter (new pages only) ## AI Disclosure - [x] AI-assisted — tool: OpenAI Codex --- Signed-off-by: Carlos Villela <cvillela@nvidia.com> <!-- STACK-CONTEXT:START --> ## Stack position > [!NOTE] > This PR is part of a stacked refactor. Please review/merge in stack order. > The current PR is highlighted below. This is PR **#2827** in the stacked CLI oclif refactor series. - Merge after: **#2826** - Next PR: **#2828** - Stack position: **26 / 37** ## Full stack Merge from top to bottom. | Order | PR | Merge after | Title | |---:|---|---|---| | 1 | #2775 | `main` | refactor(cli): migrate status and tunnel commands to oclif | | 2 | #2776 | #2775 | refactor(cli): migrate debug uninstall and gateway-token to oclif | | 3 | #2786 | #2776 | refactor(cli): migrate credentials commands to oclif | | 4 | #2787 | #2786 | refactor(cli): migrate sandbox inspection commands to oclif | | 5 | #2788 | #2787 | refactor(cli): migrate maintenance commands to oclif | | 6 | #2796 | #2788 | refactor(cli): migrate sandbox logs command to oclif | | 7 | #2797 | #2796 | refactor(cli): migrate skill install command to oclif | | 8 | #2798 | #2797 | refactor(cli): migrate snapshot list and create to oclif | | 9 | #2802 | #2798 | refactor(cli): migrate shields commands to oclif | | 10 | #2803 | #2802 | refactor(cli): migrate channels mutation commands to oclif | | 11 | #2804 | #2803 | refactor(cli): migrate policy mutation commands to oclif | | 12 | #2805 | #2804 | refactor(cli): migrate snapshot restore command to oclif | | 13 | #2806 | #2805 | refactor(cli): migrate destroy command to oclif | | 14 | #2807 | #2806 | refactor(cli): migrate rebuild command to oclif | | 15 | #2808 | #2807 | refactor(cli): migrate connect command to oclif | | 16 | #2809 | #2808 | refactor(cli): migrate deploy command to oclif | | 17 | #2810 | #2809 | refactor(cli): migrate onboard aliases to oclif | | 18 | #2811 | #2810 | refactor(cli): migrate help and version commands to oclif | | 19 | #2814 | #2811 | refactor(cli): centralize legacy oclif dispatch | | 20 | #2815 | #2814 | refactor(cli): drop trivial oclif wrapper helpers | | 21 | #2816 | #2815 | refactor(cli): centralize sandbox runtime bridge | | 22 | #2817 | #2816 | refactor(cli): centralize policy and channels runtime bridge | | 23 | #2818 | #2817 | refactor(cli): centralize global runtime bridge | | 24 | #2819 | #2818 | refactor(cli): collapse runtime bridge exports | | 25 | #2826 | #2819 | refactor(cli): introduce sandbox runtime action facade | | 26 | **#2827** | #2826 | **refactor(cli): introduce policy and channels action facade** | | 27 | #2828 | #2827 | refactor(cli): introduce global command action facade | | 28 | #2830 | #2828 | refactor(cli): extract root help action | | 29 | #2831 | #2830 | refactor(cli): extract deploy action | | 30 | #2832 | #2831 | refactor(cli): extract onboard actions | | 31 | #2835 | #2832 | refactor(cli): extract openshell runtime helpers | | 32 | #2836 | #2835 | refactor(cli): extract sandbox logs action | | 33 | #2837 | #2836 | refactor(cli): extract maintenance actions | | 34 | #2838 | #2837 | refactor(cli): extract snapshot actions | | 35 | #2839 | #2838 | refactor(cli): extract policy and channels actions | | 36 | #2840 | #2839 | refactor(cli): extract credentials and list runtime bits | | 37 | #2841 | #2840 | refactor(cli): shrink runtime bridge | <!-- STACK-CONTEXT:END --> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Refactor** * Improved internal architecture by introducing a facade layer for sandbox policy and channel management operations. * Simplified command adapter structure for enhanced testability and maintainability. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Signed-off-by: Carlos Villela <cvillela@nvidia.com>
cv
added a commit
that referenced
this pull request
May 2, 2026
## Summary Introduces a global command action facade between oclif adapters and the temporary NemoClaw runtime bridge. This groups onboard/deploy/maintenance/help/credentials bridge calls in one place ahead of moving the actual implementations out of `src/nemoclaw.ts`. ## Changes - Add `src/lib/global-cli-actions.ts` for global command action calls. - Update deploy, maintenance, onboard alias, help/version, and credentials adapters to call the facade. - Keep public CLI behavior unchanged. ## Type of Change - [x] Code change (feature, bug fix, or refactor) - [ ] Code change with doc updates - [ ] Doc only (prose changes, no code sample modifications) - [ ] Doc only (includes code sample changes) ## Verification - [x] `npx prek run --all-files` passes - [x] `npm test` passes - [x] Tests added or updated for new or changed behavior - [x] No secrets, API keys, or credentials committed - [ ] Docs updated for user-facing behavior changes - [ ] `make docs` builds without warnings (doc changes only) - [ ] Doc pages follow the [style guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md) (doc changes only) - [ ] New doc pages include SPDX header and frontmatter (new pages only) ## AI Disclosure - [x] AI-assisted — tool: OpenAI Codex --- Signed-off-by: Carlos Villela <cvillela@nvidia.com> <!-- STACK-CONTEXT:START --> ## Stack position > [!NOTE] > This PR is part of a stacked refactor. Please review/merge in stack order. > The current PR is highlighted below. This is PR **#2828** in the stacked CLI oclif refactor series. - Merge after: **#2827** - Next PR: **#2830** - Stack position: **27 / 37** ## Full stack Merge from top to bottom. | Order | PR | Merge after | Title | |---:|---|---|---| | 1 | #2775 | `main` | refactor(cli): migrate status and tunnel commands to oclif | | 2 | #2776 | #2775 | refactor(cli): migrate debug uninstall and gateway-token to oclif | | 3 | #2786 | #2776 | refactor(cli): migrate credentials commands to oclif | | 4 | #2787 | #2786 | refactor(cli): migrate sandbox inspection commands to oclif | | 5 | #2788 | #2787 | refactor(cli): migrate maintenance commands to oclif | | 6 | #2796 | #2788 | refactor(cli): migrate sandbox logs command to oclif | | 7 | #2797 | #2796 | refactor(cli): migrate skill install command to oclif | | 8 | #2798 | #2797 | refactor(cli): migrate snapshot list and create to oclif | | 9 | #2802 | #2798 | refactor(cli): migrate shields commands to oclif | | 10 | #2803 | #2802 | refactor(cli): migrate channels mutation commands to oclif | | 11 | #2804 | #2803 | refactor(cli): migrate policy mutation commands to oclif | | 12 | #2805 | #2804 | refactor(cli): migrate snapshot restore command to oclif | | 13 | #2806 | #2805 | refactor(cli): migrate destroy command to oclif | | 14 | #2807 | #2806 | refactor(cli): migrate rebuild command to oclif | | 15 | #2808 | #2807 | refactor(cli): migrate connect command to oclif | | 16 | #2809 | #2808 | refactor(cli): migrate deploy command to oclif | | 17 | #2810 | #2809 | refactor(cli): migrate onboard aliases to oclif | | 18 | #2811 | #2810 | refactor(cli): migrate help and version commands to oclif | | 19 | #2814 | #2811 | refactor(cli): centralize legacy oclif dispatch | | 20 | #2815 | #2814 | refactor(cli): drop trivial oclif wrapper helpers | | 21 | #2816 | #2815 | refactor(cli): centralize sandbox runtime bridge | | 22 | #2817 | #2816 | refactor(cli): centralize policy and channels runtime bridge | | 23 | #2818 | #2817 | refactor(cli): centralize global runtime bridge | | 24 | #2819 | #2818 | refactor(cli): collapse runtime bridge exports | | 25 | #2826 | #2819 | refactor(cli): introduce sandbox runtime action facade | | 26 | #2827 | #2826 | refactor(cli): introduce policy and channels action facade | | 27 | **#2828** | #2827 | **refactor(cli): introduce global command action facade** | | 28 | #2830 | #2828 | refactor(cli): extract root help action | | 29 | #2831 | #2830 | refactor(cli): extract deploy action | | 30 | #2832 | #2831 | refactor(cli): extract onboard actions | | 31 | #2835 | #2832 | refactor(cli): extract openshell runtime helpers | | 32 | #2836 | #2835 | refactor(cli): extract sandbox logs action | | 33 | #2837 | #2836 | refactor(cli): extract maintenance actions | | 34 | #2838 | #2837 | refactor(cli): extract snapshot actions | | 35 | #2839 | #2838 | refactor(cli): extract policy and channels actions | | 36 | #2840 | #2839 | refactor(cli): extract credentials and list runtime bits | | 37 | #2841 | #2840 | refactor(cli): shrink runtime bridge | <!-- STACK-CONTEXT:END --> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Refactor** * Restructured internal command execution framework to centralize CLI action handling and improve code organization across multiple commands. * All user-facing functionality and CLI behavior remain unchanged. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Signed-off-by: Carlos Villela <cvillela@nvidia.com>
cv
added a commit
that referenced
this pull request
May 2, 2026
## Summary Extracts the root help and version actions from `src/nemoclaw.ts` into a dedicated library module. This removes another chunk of entrypoint-owned command behavior while preserving the existing custom help renderer. ## Changes - Add `src/lib/root-help-action.ts` with `help()` and `version()` implementations. - Update global action facade and `src/nemoclaw.ts` to call the extracted root help module. - Remove help/version entries from the temporary runtime bridge. - Update image cleanup guard tests to look for help rendering in the new module. ## Type of Change - [x] Code change (feature, bug fix, or refactor) - [ ] Code change with doc updates - [ ] Doc only (prose changes, no code sample modifications) - [ ] Doc only (includes code sample changes) ## Verification - [x] `npx prek run --all-files` passes - [x] `npm test` passes - [x] Tests added or updated for new or changed behavior - [x] No secrets, API keys, or credentials committed - [ ] Docs updated for user-facing behavior changes - [ ] `make docs` builds without warnings (doc changes only) - [ ] Doc pages follow the [style guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md) (doc changes only) - [ ] New doc pages include SPDX header and frontmatter (new pages only) ## AI Disclosure - [x] AI-assisted — tool: OpenAI Codex --- Signed-off-by: Carlos Villela <cvillela@nvidia.com> <!-- STACK-CONTEXT:START --> ## Stack position > [!NOTE] > This PR is part of a stacked refactor. Please review/merge in stack order. > The current PR is highlighted below. This is PR **#2830** in the stacked CLI oclif refactor series. - Merge after: **#2828** - Next PR: **#2831** - Stack position: **28 / 37** ## Full stack Merge from top to bottom. | Order | PR | Merge after | Title | |---:|---|---|---| | 1 | #2775 | `main` | refactor(cli): migrate status and tunnel commands to oclif | | 2 | #2776 | #2775 | refactor(cli): migrate debug uninstall and gateway-token to oclif | | 3 | #2786 | #2776 | refactor(cli): migrate credentials commands to oclif | | 4 | #2787 | #2786 | refactor(cli): migrate sandbox inspection commands to oclif | | 5 | #2788 | #2787 | refactor(cli): migrate maintenance commands to oclif | | 6 | #2796 | #2788 | refactor(cli): migrate sandbox logs command to oclif | | 7 | #2797 | #2796 | refactor(cli): migrate skill install command to oclif | | 8 | #2798 | #2797 | refactor(cli): migrate snapshot list and create to oclif | | 9 | #2802 | #2798 | refactor(cli): migrate shields commands to oclif | | 10 | #2803 | #2802 | refactor(cli): migrate channels mutation commands to oclif | | 11 | #2804 | #2803 | refactor(cli): migrate policy mutation commands to oclif | | 12 | #2805 | #2804 | refactor(cli): migrate snapshot restore command to oclif | | 13 | #2806 | #2805 | refactor(cli): migrate destroy command to oclif | | 14 | #2807 | #2806 | refactor(cli): migrate rebuild command to oclif | | 15 | #2808 | #2807 | refactor(cli): migrate connect command to oclif | | 16 | #2809 | #2808 | refactor(cli): migrate deploy command to oclif | | 17 | #2810 | #2809 | refactor(cli): migrate onboard aliases to oclif | | 18 | #2811 | #2810 | refactor(cli): migrate help and version commands to oclif | | 19 | #2814 | #2811 | refactor(cli): centralize legacy oclif dispatch | | 20 | #2815 | #2814 | refactor(cli): drop trivial oclif wrapper helpers | | 21 | #2816 | #2815 | refactor(cli): centralize sandbox runtime bridge | | 22 | #2817 | #2816 | refactor(cli): centralize policy and channels runtime bridge | | 23 | #2818 | #2817 | refactor(cli): centralize global runtime bridge | | 24 | #2819 | #2818 | refactor(cli): collapse runtime bridge exports | | 25 | #2826 | #2819 | refactor(cli): introduce sandbox runtime action facade | | 26 | #2827 | #2826 | refactor(cli): introduce policy and channels action facade | | 27 | #2828 | #2827 | refactor(cli): introduce global command action facade | | 28 | **#2830** | #2828 | **refactor(cli): extract root help action** | | 29 | #2831 | #2830 | refactor(cli): extract deploy action | | 30 | #2832 | #2831 | refactor(cli): extract onboard actions | | 31 | #2835 | #2832 | refactor(cli): extract openshell runtime helpers | | 32 | #2836 | #2835 | refactor(cli): extract sandbox logs action | | 33 | #2837 | #2836 | refactor(cli): extract maintenance actions | | 34 | #2838 | #2837 | refactor(cli): extract snapshot actions | | 35 | #2839 | #2838 | refactor(cli): extract policy and channels actions | | 36 | #2840 | #2839 | refactor(cli): extract credentials and list runtime bits | | 37 | #2841 | #2840 | refactor(cli): shrink runtime bridge | <!-- STACK-CONTEXT:END --> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Refactor** * Help and version commands consolidated into a dedicated module; CLI now uses that module for displayed help and version output. Help text rendering improved (grouped commands, per-command flags, deprecated styling, uninstall and reconfiguration notes, powered-by and gateway/URL lines, respects NO_COLOR/TTY/truecolor). * **Tests** * Updated tests to validate rendered help output instead of internal wiring. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Signed-off-by: Carlos Villela <cvillela@nvidia.com>
cv
added a commit
that referenced
this pull request
May 2, 2026
## Summary Extracts the deploy action wiring from `src/nemoclaw.ts` into a dedicated library module. The deploy oclif adapter now reaches the deployment implementation through `global-cli-actions` without the temporary runtime bridge. ## Changes - Add `src/lib/deploy-action.ts` to assemble `executeDeploy()` dependencies outside the entrypoint. - Update `src/lib/global-cli-actions.ts` to call the extracted deploy action directly. - Remove `deploy` from the temporary runtime bridge and from `src/nemoclaw.ts`. - Update runner guard tests to look for deploy wiring in the new action module. ## Type of Change - [x] Code change (feature, bug fix, or refactor) - [ ] Code change with doc updates - [ ] Doc only (prose changes, no code sample modifications) - [ ] Doc only (includes code sample changes) ## Verification - [x] `npx prek run --all-files` passes - [x] `npm test` passes - [x] Tests added or updated for new or changed behavior - [x] No secrets, API keys, or credentials committed - [ ] Docs updated for user-facing behavior changes - [ ] `make docs` builds without warnings (doc changes only) - [ ] Doc pages follow the [style guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md) (doc changes only) - [ ] New doc pages include SPDX header and frontmatter (new pages only) ## AI Disclosure - [x] AI-assisted — tool: OpenAI Codex --- Signed-off-by: Carlos Villela <cvillela@nvidia.com> <!-- STACK-CONTEXT:START --> ## Stack position > [!NOTE] > This PR is part of a stacked refactor. Please review/merge in stack order. > The current PR is highlighted below. This is PR **#2831** in the stacked CLI oclif refactor series. - Merge after: **#2830** - Next PR: **#2832** - Stack position: **29 / 37** ## Full stack Merge from top to bottom. | Order | PR | Merge after | Title | |---:|---|---|---| | 1 | #2775 | `main` | refactor(cli): migrate status and tunnel commands to oclif | | 2 | #2776 | #2775 | refactor(cli): migrate debug uninstall and gateway-token to oclif | | 3 | #2786 | #2776 | refactor(cli): migrate credentials commands to oclif | | 4 | #2787 | #2786 | refactor(cli): migrate sandbox inspection commands to oclif | | 5 | #2788 | #2787 | refactor(cli): migrate maintenance commands to oclif | | 6 | #2796 | #2788 | refactor(cli): migrate sandbox logs command to oclif | | 7 | #2797 | #2796 | refactor(cli): migrate skill install command to oclif | | 8 | #2798 | #2797 | refactor(cli): migrate snapshot list and create to oclif | | 9 | #2802 | #2798 | refactor(cli): migrate shields commands to oclif | | 10 | #2803 | #2802 | refactor(cli): migrate channels mutation commands to oclif | | 11 | #2804 | #2803 | refactor(cli): migrate policy mutation commands to oclif | | 12 | #2805 | #2804 | refactor(cli): migrate snapshot restore command to oclif | | 13 | #2806 | #2805 | refactor(cli): migrate destroy command to oclif | | 14 | #2807 | #2806 | refactor(cli): migrate rebuild command to oclif | | 15 | #2808 | #2807 | refactor(cli): migrate connect command to oclif | | 16 | #2809 | #2808 | refactor(cli): migrate deploy command to oclif | | 17 | #2810 | #2809 | refactor(cli): migrate onboard aliases to oclif | | 18 | #2811 | #2810 | refactor(cli): migrate help and version commands to oclif | | 19 | #2814 | #2811 | refactor(cli): centralize legacy oclif dispatch | | 20 | #2815 | #2814 | refactor(cli): drop trivial oclif wrapper helpers | | 21 | #2816 | #2815 | refactor(cli): centralize sandbox runtime bridge | | 22 | #2817 | #2816 | refactor(cli): centralize policy and channels runtime bridge | | 23 | #2818 | #2817 | refactor(cli): centralize global runtime bridge | | 24 | #2819 | #2818 | refactor(cli): collapse runtime bridge exports | | 25 | #2826 | #2819 | refactor(cli): introduce sandbox runtime action facade | | 26 | #2827 | #2826 | refactor(cli): introduce policy and channels action facade | | 27 | #2828 | #2827 | refactor(cli): introduce global command action facade | | 28 | #2830 | #2828 | refactor(cli): extract root help action | | 29 | **#2831** | #2830 | **refactor(cli): extract deploy action** | | 30 | #2832 | #2831 | refactor(cli): extract onboard actions | | 31 | #2835 | #2832 | refactor(cli): extract openshell runtime helpers | | 32 | #2836 | #2835 | refactor(cli): extract sandbox logs action | | 33 | #2837 | #2836 | refactor(cli): extract maintenance actions | | 34 | #2838 | #2837 | refactor(cli): extract snapshot actions | | 35 | #2839 | #2838 | refactor(cli): extract policy and channels actions | | 36 | #2840 | #2839 | refactor(cli): extract credentials and list runtime bits | | 37 | #2841 | #2840 | refactor(cli): shrink runtime bridge | <!-- STACK-CONTEXT:END --> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Refactor** * Reorganized the internal deployment system architecture for improved code structure and maintainability. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Signed-off-by: Carlos Villela <cvillela@nvidia.com>
cv
added a commit
that referenced
this pull request
May 2, 2026
## Summary Extracts onboard, setup, and setup-spark action wiring from `src/nemoclaw.ts` into a dedicated library module. The onboarding oclif adapters now call the extracted action facade directly instead of routing through the temporary runtime bridge. ## Changes - Add `src/lib/onboard-action.ts` for onboarding and deprecated setup alias actions. - Update `src/lib/global-cli-actions.ts` to call the extracted onboard actions directly. - Remove onboard/setup/setup-spark from the temporary runtime bridge and from `src/nemoclaw.ts`. - Update runner guard tests to look for setup-spark alias behavior in the new action module. ## Type of Change - [x] Code change (feature, bug fix, or refactor) - [ ] Code change with doc updates - [ ] Doc only (prose changes, no code sample modifications) - [ ] Doc only (includes code sample changes) ## Verification - [x] `npx prek run --all-files` passes - [x] `npm test` passes - [x] Tests added or updated for new or changed behavior - [x] No secrets, API keys, or credentials committed - [ ] Docs updated for user-facing behavior changes - [ ] `make docs` builds without warnings (doc changes only) - [ ] Doc pages follow the [style guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md) (doc changes only) - [ ] New doc pages include SPDX header and frontmatter (new pages only) ## AI Disclosure - [x] AI-assisted — tool: OpenAI Codex --- Signed-off-by: Carlos Villela <cvillela@nvidia.com> <!-- STACK-CONTEXT:START --> ## Stack position > [!NOTE] > This PR is part of a stacked refactor. Please review/merge in stack order. > The current PR is highlighted below. This is PR **#2832** in the stacked CLI oclif refactor series. - Merge after: **#2831** - Next PR: **#2835** - Stack position: **30 / 37** ## Full stack Merge from top to bottom. | Order | PR | Merge after | Title | |---:|---|---|---| | 1 | #2775 | `main` | refactor(cli): migrate status and tunnel commands to oclif | | 2 | #2776 | #2775 | refactor(cli): migrate debug uninstall and gateway-token to oclif | | 3 | #2786 | #2776 | refactor(cli): migrate credentials commands to oclif | | 4 | #2787 | #2786 | refactor(cli): migrate sandbox inspection commands to oclif | | 5 | #2788 | #2787 | refactor(cli): migrate maintenance commands to oclif | | 6 | #2796 | #2788 | refactor(cli): migrate sandbox logs command to oclif | | 7 | #2797 | #2796 | refactor(cli): migrate skill install command to oclif | | 8 | #2798 | #2797 | refactor(cli): migrate snapshot list and create to oclif | | 9 | #2802 | #2798 | refactor(cli): migrate shields commands to oclif | | 10 | #2803 | #2802 | refactor(cli): migrate channels mutation commands to oclif | | 11 | #2804 | #2803 | refactor(cli): migrate policy mutation commands to oclif | | 12 | #2805 | #2804 | refactor(cli): migrate snapshot restore command to oclif | | 13 | #2806 | #2805 | refactor(cli): migrate destroy command to oclif | | 14 | #2807 | #2806 | refactor(cli): migrate rebuild command to oclif | | 15 | #2808 | #2807 | refactor(cli): migrate connect command to oclif | | 16 | #2809 | #2808 | refactor(cli): migrate deploy command to oclif | | 17 | #2810 | #2809 | refactor(cli): migrate onboard aliases to oclif | | 18 | #2811 | #2810 | refactor(cli): migrate help and version commands to oclif | | 19 | #2814 | #2811 | refactor(cli): centralize legacy oclif dispatch | | 20 | #2815 | #2814 | refactor(cli): drop trivial oclif wrapper helpers | | 21 | #2816 | #2815 | refactor(cli): centralize sandbox runtime bridge | | 22 | #2817 | #2816 | refactor(cli): centralize policy and channels runtime bridge | | 23 | #2818 | #2817 | refactor(cli): centralize global runtime bridge | | 24 | #2819 | #2818 | refactor(cli): collapse runtime bridge exports | | 25 | #2826 | #2819 | refactor(cli): introduce sandbox runtime action facade | | 26 | #2827 | #2826 | refactor(cli): introduce policy and channels action facade | | 27 | #2828 | #2827 | refactor(cli): introduce global command action facade | | 28 | #2830 | #2828 | refactor(cli): extract root help action | | 29 | #2831 | #2830 | refactor(cli): extract deploy action | | 30 | **#2832** | #2831 | **refactor(cli): extract onboard actions** | | 31 | #2835 | #2832 | refactor(cli): extract openshell runtime helpers | | 32 | #2836 | #2835 | refactor(cli): extract sandbox logs action | | 33 | #2837 | #2836 | refactor(cli): extract maintenance actions | | 34 | #2838 | #2837 | refactor(cli): extract snapshot actions | | 35 | #2839 | #2838 | refactor(cli): extract policy and channels actions | | 36 | #2840 | #2839 | refactor(cli): extract credentials and list runtime bits | | 37 | #2841 | #2840 | refactor(cli): shrink runtime bridge | <!-- STACK-CONTEXT:END --> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Refactor** * Reorganized CLI command handling to consolidate onboarding and setup operations into a unified architecture for improved code organization. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Signed-off-by: Carlos Villela <cvillela@nvidia.com>
cv
marked this pull request as ready for review
May 2, 2026 17:30
cv
added a commit
that referenced
this pull request
May 2, 2026
## Summary Extracts sandbox log handling from `src/nemoclaw.ts` into a dedicated action module. This moves log source setup, audit-log enabling, follow-mode process handling, and log argument construction out of the CLI entrypoint. ## Changes - Add `src/lib/sandbox-logs-action.ts` with the existing sandbox log implementation. - Update `src/lib/sandbox-runtime-actions.ts` to call the extracted logs action directly. - Remove the inline sandbox log helpers from `src/nemoclaw.ts`. - Keep the existing CLI log behavior unchanged, including `--follow` signal semantics and audit-log warnings. ## Type of Change - [x] Code change (feature, bug fix, or refactor) - [ ] Code change with doc updates - [ ] Doc only (prose changes, no code sample modifications) - [ ] Doc only (includes code sample changes) ## Verification - [x] `npx prek run --all-files` passes - [x] `npm test` passes - [x] Tests added or updated for new or changed behavior - [x] No secrets, API keys, or credentials committed - [ ] Docs updated for user-facing behavior changes - [ ] `make docs` builds without warnings (doc changes only) - [ ] Doc pages follow the [style guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md) (doc changes only) - [ ] New doc pages include SPDX header and frontmatter (new pages only) ## AI Disclosure - [x] AI-assisted — tool: OpenAI Codex --- Signed-off-by: Carlos Villela <cvillela@nvidia.com> <!-- STACK-CONTEXT:START --> ## Stack position > [!NOTE] > This PR is part of a stacked refactor. Please review/merge in stack order. > The current PR is highlighted below. This is PR **#2836** in the stacked CLI oclif refactor series. - Merge after: **#2835** - Next PR: **#2837** - Stack position: **32 / 37** ## Full stack Merge from top to bottom. | Order | PR | Merge after | Title | |---:|---|---|---| | 1 | #2775 | `main` | refactor(cli): migrate status and tunnel commands to oclif | | 2 | #2776 | #2775 | refactor(cli): migrate debug uninstall and gateway-token to oclif | | 3 | #2786 | #2776 | refactor(cli): migrate credentials commands to oclif | | 4 | #2787 | #2786 | refactor(cli): migrate sandbox inspection commands to oclif | | 5 | #2788 | #2787 | refactor(cli): migrate maintenance commands to oclif | | 6 | #2796 | #2788 | refactor(cli): migrate sandbox logs command to oclif | | 7 | #2797 | #2796 | refactor(cli): migrate skill install command to oclif | | 8 | #2798 | #2797 | refactor(cli): migrate snapshot list and create to oclif | | 9 | #2802 | #2798 | refactor(cli): migrate shields commands to oclif | | 10 | #2803 | #2802 | refactor(cli): migrate channels mutation commands to oclif | | 11 | #2804 | #2803 | refactor(cli): migrate policy mutation commands to oclif | | 12 | #2805 | #2804 | refactor(cli): migrate snapshot restore command to oclif | | 13 | #2806 | #2805 | refactor(cli): migrate destroy command to oclif | | 14 | #2807 | #2806 | refactor(cli): migrate rebuild command to oclif | | 15 | #2808 | #2807 | refactor(cli): migrate connect command to oclif | | 16 | #2809 | #2808 | refactor(cli): migrate deploy command to oclif | | 17 | #2810 | #2809 | refactor(cli): migrate onboard aliases to oclif | | 18 | #2811 | #2810 | refactor(cli): migrate help and version commands to oclif | | 19 | #2814 | #2811 | refactor(cli): centralize legacy oclif dispatch | | 20 | #2815 | #2814 | refactor(cli): drop trivial oclif wrapper helpers | | 21 | #2816 | #2815 | refactor(cli): centralize sandbox runtime bridge | | 22 | #2817 | #2816 | refactor(cli): centralize policy and channels runtime bridge | | 23 | #2818 | #2817 | refactor(cli): centralize global runtime bridge | | 24 | #2819 | #2818 | refactor(cli): collapse runtime bridge exports | | 25 | #2826 | #2819 | refactor(cli): introduce sandbox runtime action facade | | 26 | #2827 | #2826 | refactor(cli): introduce policy and channels action facade | | 27 | #2828 | #2827 | refactor(cli): introduce global command action facade | | 28 | #2830 | #2828 | refactor(cli): extract root help action | | 29 | #2831 | #2830 | refactor(cli): extract deploy action | | 30 | #2832 | #2831 | refactor(cli): extract onboard actions | | 31 | #2835 | #2832 | refactor(cli): extract openshell runtime helpers | | 32 | **#2836** | #2835 | **refactor(cli): extract sandbox logs action** | | 33 | #2837 | #2836 | refactor(cli): extract maintenance actions | | 34 | #2838 | #2837 | refactor(cli): extract snapshot actions | | 35 | #2839 | #2838 | refactor(cli): extract policy and channels actions | | 36 | #2840 | #2839 | refactor(cli): extract credentials and list runtime bits | | 37 | #2841 | #2840 | refactor(cli): shrink runtime bridge | <!-- STACK-CONTEXT:END --> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Tests** * Improved test coverage tracking for runtime components. * **Refactor** * Extracted sandbox logging functionality into a dedicated module to improve code organization and maintainability. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Signed-off-by: Carlos Villela <cvillela@nvidia.com>
cv
added a commit
that referenced
this pull request
May 2, 2026
## Summary Extracts backup-all and garbage-collection maintenance actions from `src/nemoclaw.ts` into a dedicated module. The maintenance oclif adapters now call the extracted actions instead of reaching through the runtime bridge for these commands. ## Changes - Add `src/lib/maintenance-actions.ts` with `backupAll()` and `garbageCollectImages()`. - Update `src/lib/global-cli-actions.ts` to call extracted maintenance actions directly. - Remove backup/gc entries from the temporary runtime bridge and remove inline implementations from `src/nemoclaw.ts`. - Update image cleanup tests to inspect the new maintenance action module. ## Type of Change - [x] Code change (feature, bug fix, or refactor) - [ ] Code change with doc updates - [ ] Doc only (prose changes, no code sample modifications) - [ ] Doc only (includes code sample changes) ## Verification - [x] `npx prek run --all-files` passes - [x] `npm test` passes - [x] Tests added or updated for new or changed behavior - [x] No secrets, API keys, or credentials committed - [ ] Docs updated for user-facing behavior changes - [ ] `make docs` builds without warnings (doc changes only) - [ ] Doc pages follow the [style guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md) (doc changes only) - [ ] New doc pages include SPDX header and frontmatter (new pages only) ## AI Disclosure - [x] AI-assisted — tool: OpenAI Codex --- Signed-off-by: Carlos Villela <cvillela@nvidia.com> <!-- STACK-CONTEXT:START --> ## Stack position > [!NOTE] > This PR is part of a stacked refactor. Please review/merge in stack order. > The current PR is highlighted below. This is PR **#2837** in the stacked CLI oclif refactor series. - Merge after: **#2836** - Next PR: **#2838** - Stack position: **33 / 37** ## Full stack Merge from top to bottom. | Order | PR | Merge after | Title | |---:|---|---|---| | 1 | #2775 | `main` | refactor(cli): migrate status and tunnel commands to oclif | | 2 | #2776 | #2775 | refactor(cli): migrate debug uninstall and gateway-token to oclif | | 3 | #2786 | #2776 | refactor(cli): migrate credentials commands to oclif | | 4 | #2787 | #2786 | refactor(cli): migrate sandbox inspection commands to oclif | | 5 | #2788 | #2787 | refactor(cli): migrate maintenance commands to oclif | | 6 | #2796 | #2788 | refactor(cli): migrate sandbox logs command to oclif | | 7 | #2797 | #2796 | refactor(cli): migrate skill install command to oclif | | 8 | #2798 | #2797 | refactor(cli): migrate snapshot list and create to oclif | | 9 | #2802 | #2798 | refactor(cli): migrate shields commands to oclif | | 10 | #2803 | #2802 | refactor(cli): migrate channels mutation commands to oclif | | 11 | #2804 | #2803 | refactor(cli): migrate policy mutation commands to oclif | | 12 | #2805 | #2804 | refactor(cli): migrate snapshot restore command to oclif | | 13 | #2806 | #2805 | refactor(cli): migrate destroy command to oclif | | 14 | #2807 | #2806 | refactor(cli): migrate rebuild command to oclif | | 15 | #2808 | #2807 | refactor(cli): migrate connect command to oclif | | 16 | #2809 | #2808 | refactor(cli): migrate deploy command to oclif | | 17 | #2810 | #2809 | refactor(cli): migrate onboard aliases to oclif | | 18 | #2811 | #2810 | refactor(cli): migrate help and version commands to oclif | | 19 | #2814 | #2811 | refactor(cli): centralize legacy oclif dispatch | | 20 | #2815 | #2814 | refactor(cli): drop trivial oclif wrapper helpers | | 21 | #2816 | #2815 | refactor(cli): centralize sandbox runtime bridge | | 22 | #2817 | #2816 | refactor(cli): centralize policy and channels runtime bridge | | 23 | #2818 | #2817 | refactor(cli): centralize global runtime bridge | | 24 | #2819 | #2818 | refactor(cli): collapse runtime bridge exports | | 25 | #2826 | #2819 | refactor(cli): introduce sandbox runtime action facade | | 26 | #2827 | #2826 | refactor(cli): introduce policy and channels action facade | | 27 | #2828 | #2827 | refactor(cli): introduce global command action facade | | 28 | #2830 | #2828 | refactor(cli): extract root help action | | 29 | #2831 | #2830 | refactor(cli): extract deploy action | | 30 | #2832 | #2831 | refactor(cli): extract onboard actions | | 31 | #2835 | #2832 | refactor(cli): extract openshell runtime helpers | | 32 | #2836 | #2835 | refactor(cli): extract sandbox logs action | | 33 | **#2837** | #2836 | **refactor(cli): extract maintenance actions** | | 34 | #2838 | #2837 | refactor(cli): extract snapshot actions | | 35 | #2839 | #2838 | refactor(cli): extract policy and channels actions | | 36 | #2840 | #2839 | refactor(cli): extract credentials and list runtime bits | | 37 | #2841 | #2840 | refactor(cli): shrink runtime bridge | <!-- STACK-CONTEXT:END --> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Refactor** * Reorganized internal structure of backup and image cleanup operations for improved code maintainability and organization. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Signed-off-by: Carlos Villela <cvillela@nvidia.com>
cv
added a commit
that referenced
this pull request
May 2, 2026
## Summary Extracts the snapshot command implementation from `src/nemoclaw.ts` into a dedicated action module. Snapshot list/create/restore wrappers now call the extracted action instead of the temporary runtime bridge. ## Changes - Add `src/lib/snapshot-action.ts` with snapshot create/list/restore logic and helpers. - Update `src/lib/sandbox-runtime-actions.ts` to invoke the extracted snapshot action. - Remove inline snapshot helpers and `sandboxSnapshot` from the runtime bridge in `src/nemoclaw.ts`. - Keep public snapshot CLI behavior unchanged. ## Type of Change - [x] Code change (feature, bug fix, or refactor) - [ ] Code change with doc updates - [ ] Doc only (prose changes, no code sample modifications) - [ ] Doc only (includes code sample changes) ## Verification - [x] `npx prek run --all-files` passes - [x] `npm test` passes - [x] Tests added or updated for new or changed behavior - [x] No secrets, API keys, or credentials committed - [ ] Docs updated for user-facing behavior changes - [ ] `make docs` builds without warnings (doc changes only) - [ ] Doc pages follow the [style guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md) (doc changes only) - [ ] New doc pages include SPDX header and frontmatter (new pages only) ## AI Disclosure - [x] AI-assisted — tool: OpenAI Codex --- Signed-off-by: Carlos Villela <cvillela@nvidia.com> <!-- STACK-CONTEXT:START --> ## Stack position > [!NOTE] > This PR is part of a stacked refactor. Please review/merge in stack order. > The current PR is highlighted below. This is PR **#2838** in the stacked CLI oclif refactor series. - Merge after: **#2837** - Next PR: **#2839** - Stack position: **34 / 37** ## Full stack Merge from top to bottom. | Order | PR | Merge after | Title | |---:|---|---|---| | 1 | #2775 | `main` | refactor(cli): migrate status and tunnel commands to oclif | | 2 | #2776 | #2775 | refactor(cli): migrate debug uninstall and gateway-token to oclif | | 3 | #2786 | #2776 | refactor(cli): migrate credentials commands to oclif | | 4 | #2787 | #2786 | refactor(cli): migrate sandbox inspection commands to oclif | | 5 | #2788 | #2787 | refactor(cli): migrate maintenance commands to oclif | | 6 | #2796 | #2788 | refactor(cli): migrate sandbox logs command to oclif | | 7 | #2797 | #2796 | refactor(cli): migrate skill install command to oclif | | 8 | #2798 | #2797 | refactor(cli): migrate snapshot list and create to oclif | | 9 | #2802 | #2798 | refactor(cli): migrate shields commands to oclif | | 10 | #2803 | #2802 | refactor(cli): migrate channels mutation commands to oclif | | 11 | #2804 | #2803 | refactor(cli): migrate policy mutation commands to oclif | | 12 | #2805 | #2804 | refactor(cli): migrate snapshot restore command to oclif | | 13 | #2806 | #2805 | refactor(cli): migrate destroy command to oclif | | 14 | #2807 | #2806 | refactor(cli): migrate rebuild command to oclif | | 15 | #2808 | #2807 | refactor(cli): migrate connect command to oclif | | 16 | #2809 | #2808 | refactor(cli): migrate deploy command to oclif | | 17 | #2810 | #2809 | refactor(cli): migrate onboard aliases to oclif | | 18 | #2811 | #2810 | refactor(cli): migrate help and version commands to oclif | | 19 | #2814 | #2811 | refactor(cli): centralize legacy oclif dispatch | | 20 | #2815 | #2814 | refactor(cli): drop trivial oclif wrapper helpers | | 21 | #2816 | #2815 | refactor(cli): centralize sandbox runtime bridge | | 22 | #2817 | #2816 | refactor(cli): centralize policy and channels runtime bridge | | 23 | #2818 | #2817 | refactor(cli): centralize global runtime bridge | | 24 | #2819 | #2818 | refactor(cli): collapse runtime bridge exports | | 25 | #2826 | #2819 | refactor(cli): introduce sandbox runtime action facade | | 26 | #2827 | #2826 | refactor(cli): introduce policy and channels action facade | | 27 | #2828 | #2827 | refactor(cli): introduce global command action facade | | 28 | #2830 | #2828 | refactor(cli): extract root help action | | 29 | #2831 | #2830 | refactor(cli): extract deploy action | | 30 | #2832 | #2831 | refactor(cli): extract onboard actions | | 31 | #2835 | #2832 | refactor(cli): extract openshell runtime helpers | | 32 | #2836 | #2835 | refactor(cli): extract sandbox logs action | | 33 | #2837 | #2836 | refactor(cli): extract maintenance actions | | 34 | **#2838** | #2837 | **refactor(cli): extract snapshot actions** | | 35 | #2839 | #2838 | refactor(cli): extract policy and channels actions | | 36 | #2840 | #2839 | refactor(cli): extract credentials and list runtime bits | | 37 | #2841 | #2840 | refactor(cli): shrink runtime bridge | <!-- STACK-CONTEXT:END --> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Refactor** * Reorganized snapshot functionality implementation to improve code organization and maintainability. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Signed-off-by: Carlos Villela <cvillela@nvidia.com>
cv
added a commit
that referenced
this pull request
May 2, 2026
## Summary Extracts policy and messaging-channel command implementations from `src/nemoclaw.ts` into the policy/channel action module. This moves policy add/remove/list and channels list/add/remove/start/stop behavior out of the entrypoint. ## Changes - Expand `src/lib/policy-channel-actions.ts` from a facade into the home for policy and channel command actions. - Update policy/channel oclif adapters and sandbox inspection commands to call the extracted action functions. - Remove policy/channel implementations and runtime bridge entries from `src/nemoclaw.ts`. - Keep public policy and channel CLI behavior unchanged. ## Type of Change - [x] Code change (feature, bug fix, or refactor) - [ ] Code change with doc updates - [ ] Doc only (prose changes, no code sample modifications) - [ ] Doc only (includes code sample changes) ## Verification - [x] `npx prek run --all-files` passes - [x] `npm test` passes - [x] Tests added or updated for new or changed behavior - [x] No secrets, API keys, or credentials committed - [ ] Docs updated for user-facing behavior changes - [ ] `make docs` builds without warnings (doc changes only) - [ ] Doc pages follow the [style guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md) (doc changes only) - [ ] New doc pages include SPDX header and frontmatter (new pages only) ## AI Disclosure - [x] AI-assisted — tool: OpenAI Codex --- Signed-off-by: Carlos Villela <cvillela@nvidia.com> <!-- STACK-CONTEXT:START --> ## Stack position > [!NOTE] > This PR is part of a stacked refactor. Please review/merge in stack order. > The current PR is highlighted below. This is PR **#2839** in the stacked CLI oclif refactor series. - Merge after: **#2838** - Next PR: **#2840** - Stack position: **35 / 37** ## Full stack Merge from top to bottom. | Order | PR | Merge after | Title | |---:|---|---|---| | 1 | #2775 | `main` | refactor(cli): migrate status and tunnel commands to oclif | | 2 | #2776 | #2775 | refactor(cli): migrate debug uninstall and gateway-token to oclif | | 3 | #2786 | #2776 | refactor(cli): migrate credentials commands to oclif | | 4 | #2787 | #2786 | refactor(cli): migrate sandbox inspection commands to oclif | | 5 | #2788 | #2787 | refactor(cli): migrate maintenance commands to oclif | | 6 | #2796 | #2788 | refactor(cli): migrate sandbox logs command to oclif | | 7 | #2797 | #2796 | refactor(cli): migrate skill install command to oclif | | 8 | #2798 | #2797 | refactor(cli): migrate snapshot list and create to oclif | | 9 | #2802 | #2798 | refactor(cli): migrate shields commands to oclif | | 10 | #2803 | #2802 | refactor(cli): migrate channels mutation commands to oclif | | 11 | #2804 | #2803 | refactor(cli): migrate policy mutation commands to oclif | | 12 | #2805 | #2804 | refactor(cli): migrate snapshot restore command to oclif | | 13 | #2806 | #2805 | refactor(cli): migrate destroy command to oclif | | 14 | #2807 | #2806 | refactor(cli): migrate rebuild command to oclif | | 15 | #2808 | #2807 | refactor(cli): migrate connect command to oclif | | 16 | #2809 | #2808 | refactor(cli): migrate deploy command to oclif | | 17 | #2810 | #2809 | refactor(cli): migrate onboard aliases to oclif | | 18 | #2811 | #2810 | refactor(cli): migrate help and version commands to oclif | | 19 | #2814 | #2811 | refactor(cli): centralize legacy oclif dispatch | | 20 | #2815 | #2814 | refactor(cli): drop trivial oclif wrapper helpers | | 21 | #2816 | #2815 | refactor(cli): centralize sandbox runtime bridge | | 22 | #2817 | #2816 | refactor(cli): centralize policy and channels runtime bridge | | 23 | #2818 | #2817 | refactor(cli): centralize global runtime bridge | | 24 | #2819 | #2818 | refactor(cli): collapse runtime bridge exports | | 25 | #2826 | #2819 | refactor(cli): introduce sandbox runtime action facade | | 26 | #2827 | #2826 | refactor(cli): introduce policy and channels action facade | | 27 | #2828 | #2827 | refactor(cli): introduce global command action facade | | 28 | #2830 | #2828 | refactor(cli): extract root help action | | 29 | #2831 | #2830 | refactor(cli): extract deploy action | | 30 | #2832 | #2831 | refactor(cli): extract onboard actions | | 31 | #2835 | #2832 | refactor(cli): extract openshell runtime helpers | | 32 | #2836 | #2835 | refactor(cli): extract sandbox logs action | | 33 | #2837 | #2836 | refactor(cli): extract maintenance actions | | 34 | #2838 | #2837 | refactor(cli): extract snapshot actions | | 35 | **#2839** | #2838 | **refactor(cli): extract policy and channels actions** | | 36 | #2840 | #2839 | refactor(cli): extract credentials and list runtime bits | | 37 | #2841 | #2840 | refactor(cli): shrink runtime bridge | <!-- STACK-CONTEXT:END --> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Refactor** * Consolidated internal architecture for policy and channel management operations, improving code organization and maintainability. * Restructured runtime bridge wiring to use dynamic module loading instead of static imports, enabling better separation of concerns. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Signed-off-by: Carlos Villela <cvillela@nvidia.com>
cv
added a commit
that referenced
this pull request
May 2, 2026
## Summary Extracts credentials and list runtime support out of `src/nemoclaw.ts`. Gateway recovery and registry recovery logic now live in library action modules used by credentials and list command paths. ## Changes - Add `src/lib/gateway-runtime-action.ts` for named NemoClaw gateway recovery. - Add `src/lib/registry-recovery-action.ts` for list/sandbox registry recovery. - Update credentials and list dependency wiring to use extracted runtime modules instead of the temporary runtime bridge. - Remove gateway/registry recovery entries from the runtime bridge. - Keep public credentials and list behavior unchanged. ## Type of Change - [x] Code change (feature, bug fix, or refactor) - [ ] Code change with doc updates - [ ] Doc only (prose changes, no code sample modifications) - [ ] Doc only (includes code sample changes) ## Verification - [x] `npx prek run --all-files` passes - [x] `npm test` passes - [x] Tests added or updated for new or changed behavior - [x] No secrets, API keys, or credentials committed - [ ] Docs updated for user-facing behavior changes - [ ] `make docs` builds without warnings (doc changes only) - [ ] Doc pages follow the [style guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md) (doc changes only) - [ ] New doc pages include SPDX header and frontmatter (new pages only) ## AI Disclosure - [x] AI-assisted — tool: OpenAI Codex --- Signed-off-by: Carlos Villela <cvillela@nvidia.com> <!-- STACK-CONTEXT:START --> ## Stack position > [!NOTE] > This PR is part of a stacked refactor. Please review/merge in stack order. > The current PR is highlighted below. This is PR **#2840** in the stacked CLI oclif refactor series. - Merge after: **#2839** - Next PR: **#2841** - Stack position: **36 / 37** ## Full stack Merge from top to bottom. | Order | PR | Merge after | Title | |---:|---|---|---| | 1 | #2775 | `main` | refactor(cli): migrate status and tunnel commands to oclif | | 2 | #2776 | #2775 | refactor(cli): migrate debug uninstall and gateway-token to oclif | | 3 | #2786 | #2776 | refactor(cli): migrate credentials commands to oclif | | 4 | #2787 | #2786 | refactor(cli): migrate sandbox inspection commands to oclif | | 5 | #2788 | #2787 | refactor(cli): migrate maintenance commands to oclif | | 6 | #2796 | #2788 | refactor(cli): migrate sandbox logs command to oclif | | 7 | #2797 | #2796 | refactor(cli): migrate skill install command to oclif | | 8 | #2798 | #2797 | refactor(cli): migrate snapshot list and create to oclif | | 9 | #2802 | #2798 | refactor(cli): migrate shields commands to oclif | | 10 | #2803 | #2802 | refactor(cli): migrate channels mutation commands to oclif | | 11 | #2804 | #2803 | refactor(cli): migrate policy mutation commands to oclif | | 12 | #2805 | #2804 | refactor(cli): migrate snapshot restore command to oclif | | 13 | #2806 | #2805 | refactor(cli): migrate destroy command to oclif | | 14 | #2807 | #2806 | refactor(cli): migrate rebuild command to oclif | | 15 | #2808 | #2807 | refactor(cli): migrate connect command to oclif | | 16 | #2809 | #2808 | refactor(cli): migrate deploy command to oclif | | 17 | #2810 | #2809 | refactor(cli): migrate onboard aliases to oclif | | 18 | #2811 | #2810 | refactor(cli): migrate help and version commands to oclif | | 19 | #2814 | #2811 | refactor(cli): centralize legacy oclif dispatch | | 20 | #2815 | #2814 | refactor(cli): drop trivial oclif wrapper helpers | | 21 | #2816 | #2815 | refactor(cli): centralize sandbox runtime bridge | | 22 | #2817 | #2816 | refactor(cli): centralize policy and channels runtime bridge | | 23 | #2818 | #2817 | refactor(cli): centralize global runtime bridge | | 24 | #2819 | #2818 | refactor(cli): collapse runtime bridge exports | | 25 | #2826 | #2819 | refactor(cli): introduce sandbox runtime action facade | | 26 | #2827 | #2826 | refactor(cli): introduce policy and channels action facade | | 27 | #2828 | #2827 | refactor(cli): introduce global command action facade | | 28 | #2830 | #2828 | refactor(cli): extract root help action | | 29 | #2831 | #2830 | refactor(cli): extract deploy action | | 30 | #2832 | #2831 | refactor(cli): extract onboard actions | | 31 | #2835 | #2832 | refactor(cli): extract openshell runtime helpers | | 32 | #2836 | #2835 | refactor(cli): extract sandbox logs action | | 33 | #2837 | #2836 | refactor(cli): extract maintenance actions | | 34 | #2838 | #2837 | refactor(cli): extract snapshot actions | | 35 | #2839 | #2838 | refactor(cli): extract policy and channels actions | | 36 | **#2840** | #2839 | **refactor(cli): extract credentials and list runtime bits** | | 37 | #2841 | #2840 | refactor(cli): shrink runtime bridge | <!-- STACK-CONTEXT:END --> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **New Features** * Improved automatic detection and recovery of a selected OpenShell gateway, including setting the active gateway when recovery succeeds. * Registry repopulation from session and live gateway state to restore missing sandbox entries. * **Refactor** * Moved gateway lifecycle and registry recovery logic into dedicated modules for clearer behavior and easier maintenance. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Signed-off-by: Carlos Villela <cvillela@nvidia.com>
cv
added a commit
that referenced
this pull request
May 2, 2026
## Summary Shrinks the temporary NemoClaw runtime bridge to only the remaining command actions that still live in `src/nemoclaw.ts`. Credentials provider operations now call the extracted OpenShell runtime directly. ## Changes - Remove `runOpenshell` from `NemoClawRuntimeBridge`. - Update `src/lib/global-cli-actions.ts` to call `runOpenshell()` directly for provider operations. - Remove `runOpenshell` from the `runtimeBridge` object exported by `src/nemoclaw.ts`. - Keep public CLI behavior unchanged. ## Type of Change - [x] Code change (feature, bug fix, or refactor) - [ ] Code change with doc updates - [ ] Doc only (prose changes, no code sample modifications) - [ ] Doc only (includes code sample changes) ## Verification - [x] `npx prek run --all-files` passes - [x] `npm test` passes - [x] Tests added or updated for new or changed behavior - [x] No secrets, API keys, or credentials committed - [ ] Docs updated for user-facing behavior changes - [ ] `make docs` builds without warnings (doc changes only) - [ ] Doc pages follow the [style guide](https://github.com/NVIDIA/NemoClaw/blob/main/docs/CONTRIBUTING.md) (doc changes only) - [ ] New doc pages include SPDX header and frontmatter (new pages only) ## AI Disclosure - [x] AI-assisted — tool: OpenAI Codex --- Signed-off-by: Carlos Villela <cvillela@nvidia.com> <!-- STACK-CONTEXT:START --> ## Stack position > [!NOTE] > This PR is part of a stacked refactor. Please review/merge in stack order. > The current PR is highlighted below. This is PR **#2841** in the stacked CLI oclif refactor series. - Merge after: **#2840** - Next PR: **None — this is the last PR in the stack.** - Stack position: **37 / 37** ## Full stack Merge from top to bottom. | Order | PR | Merge after | Title | |---:|---|---|---| | 1 | #2775 | `main` | refactor(cli): migrate status and tunnel commands to oclif | | 2 | #2776 | #2775 | refactor(cli): migrate debug uninstall and gateway-token to oclif | | 3 | #2786 | #2776 | refactor(cli): migrate credentials commands to oclif | | 4 | #2787 | #2786 | refactor(cli): migrate sandbox inspection commands to oclif | | 5 | #2788 | #2787 | refactor(cli): migrate maintenance commands to oclif | | 6 | #2796 | #2788 | refactor(cli): migrate sandbox logs command to oclif | | 7 | #2797 | #2796 | refactor(cli): migrate skill install command to oclif | | 8 | #2798 | #2797 | refactor(cli): migrate snapshot list and create to oclif | | 9 | #2802 | #2798 | refactor(cli): migrate shields commands to oclif | | 10 | #2803 | #2802 | refactor(cli): migrate channels mutation commands to oclif | | 11 | #2804 | #2803 | refactor(cli): migrate policy mutation commands to oclif | | 12 | #2805 | #2804 | refactor(cli): migrate snapshot restore command to oclif | | 13 | #2806 | #2805 | refactor(cli): migrate destroy command to oclif | | 14 | #2807 | #2806 | refactor(cli): migrate rebuild command to oclif | | 15 | #2808 | #2807 | refactor(cli): migrate connect command to oclif | | 16 | #2809 | #2808 | refactor(cli): migrate deploy command to oclif | | 17 | #2810 | #2809 | refactor(cli): migrate onboard aliases to oclif | | 18 | #2811 | #2810 | refactor(cli): migrate help and version commands to oclif | | 19 | #2814 | #2811 | refactor(cli): centralize legacy oclif dispatch | | 20 | #2815 | #2814 | refactor(cli): drop trivial oclif wrapper helpers | | 21 | #2816 | #2815 | refactor(cli): centralize sandbox runtime bridge | | 22 | #2817 | #2816 | refactor(cli): centralize policy and channels runtime bridge | | 23 | #2818 | #2817 | refactor(cli): centralize global runtime bridge | | 24 | #2819 | #2818 | refactor(cli): collapse runtime bridge exports | | 25 | #2826 | #2819 | refactor(cli): introduce sandbox runtime action facade | | 26 | #2827 | #2826 | refactor(cli): introduce policy and channels action facade | | 27 | #2828 | #2827 | refactor(cli): introduce global command action facade | | 28 | #2830 | #2828 | refactor(cli): extract root help action | | 29 | #2831 | #2830 | refactor(cli): extract deploy action | | 30 | #2832 | #2831 | refactor(cli): extract onboard actions | | 31 | #2835 | #2832 | refactor(cli): extract openshell runtime helpers | | 32 | #2836 | #2835 | refactor(cli): extract sandbox logs action | | 33 | #2837 | #2836 | refactor(cli): extract maintenance actions | | 34 | #2838 | #2837 | refactor(cli): extract snapshot actions | | 35 | #2839 | #2838 | refactor(cli): extract policy and channels actions | | 36 | #2840 | #2839 | refactor(cli): extract credentials and list runtime bits | | 37 | **#2841** | #2840 | **refactor(cli): shrink runtime bridge** | <!-- STACK-CONTEXT:END --> <!-- This is an auto-generated comment: release notes by coderabbit.ai --> ## Summary by CodeRabbit * **Breaking Changes** * Removed `runOpenshell` method from the runtime bridge API. External consumers can no longer invoke this operation through the bridge interface. * **Refactor** * Refactored shell command execution to implement fallback logic, preferring local implementations when runtime bridge support is unavailable. <!-- end of auto-generated comment: release notes by coderabbit.ai --> --------- Signed-off-by: Carlos Villela <cvillela@nvidia.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
Extracts OpenShell command runtime helpers from
src/nemoclaw.tsinto a dedicated module. This gives command action modules a single place to resolve and invoke the OpenShell binary.Changes
src/lib/openshell-runtime.tswithgetOpenshellBinary(),runOpenshell(),captureOpenshell(), andgetInstalledOpenshellVersionOrNull().src/nemoclaw.tsto import those helpers instead of defining them inline.Type of Change
Verification
npx prek run --all-filespassesnpm testpassesmake docsbuilds without warnings (doc changes only)AI Disclosure
Signed-off-by: Carlos Villela cvillela@nvidia.com
Stack position
Note
This PR is part of a stacked refactor. Please review/merge in stack order.
The current PR is highlighted below.
This is PR #2835 in the stacked CLI oclif refactor series.
Full stack
Merge from top to bottom.
mainSummary by CodeRabbit