Skip to content

refactor(cli): extract policy and channels actions - #2839

Merged
cv merged 41 commits into
mainfrom
refactor/oclif-extract-policy-channels-actions
May 2, 2026
Merged

refactor(cli): extract policy and channels actions#2839
cv merged 41 commits into
mainfrom
refactor/oclif-extract-policy-channels-actions

Conversation

@cv

@cv cv commented May 1, 2026

Copy link
Copy Markdown
Collaborator

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

  • 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

  • npx prek run --all-files passes
  • npm test passes
  • Tests added or updated for new or changed behavior
  • 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 (doc changes only)
  • New doc pages include SPDX header and frontmatter (new pages only)

AI Disclosure

  • AI-assisted — tool: OpenAI Codex

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 #2839 in the stacked CLI oclif refactor series.

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

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.

cv added 30 commits April 30, 2026 13:51
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
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 cv added v0.0.34 and removed v0.0.33 labels May 2, 2026
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 added a commit that referenced this pull request May 2, 2026
## Summary
Extracts OpenShell command runtime helpers from `src/nemoclaw.ts` into a
dedicated module. This gives command action modules a single place to
resolve and invoke the OpenShell binary.

## Changes
- Add `src/lib/openshell-runtime.ts` with `getOpenshellBinary()`,
`runOpenshell()`, `captureOpenshell()`, and
`getInstalledOpenshellVersionOrNull()`.
- Update `src/nemoclaw.ts` to import those helpers instead of defining
them inline.
- 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 **#2835** in the stacked CLI oclif refactor series.

- Merge after: **#2832**
- Next PR: **#2836**
- Stack position: **31 / 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 code organization and maintainability by
consolidating runtime execution logic into a dedicated module.

<!-- 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 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
cv changed the base branch from refactor/oclif-extract-snapshot-actions to main May 2, 2026 18:56
@cv
cv marked this pull request as ready for review May 2, 2026 19:08
@cv
cv merged commit ae07c14 into main May 2, 2026
18 checks passed
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>
@cv
cv deleted the refactor/oclif-extract-policy-channels-actions branch May 27, 2026 21:18
@wscurran wscurran added area: cli Command line interface, flags, terminal UX, or output area: policy Network policy, egress rules, presets, or sandbox policy feature PR adds or expands user-visible functionality and removed NemoClaw CLI feature PR adds or expands user-visible functionality labels Jun 3, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area: cli Command line interface, flags, terminal UX, or output area: policy Network policy, egress rules, presets, or sandbox policy refactor PR restructures code without intended behavior change

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants