Skip to content

chore(biome): cover and format all TypeScript files#5020

Merged
cv merged 15 commits into
mainfrom
codex/biome-all-ts
Jun 9, 2026
Merged

chore(biome): cover and format all TypeScript files#5020
cv merged 15 commits into
mainfrom
codex/biome-all-ts

Conversation

@cv

@cv cv commented Jun 9, 2026

Copy link
Copy Markdown
Collaborator

Summary

Expand Biome coverage so every tracked TypeScript file is included in repo-wide formatting and linting, then apply the resulting formatting pass. The formatting commit also updates the test file size budget to the post-format line counts.

Changes

  • Broaden biome.json TypeScript includes to cover root, nested, test, agent, and config .ts files.
  • Update the prek Biome format and lint-fix hooks so all tracked .ts files trigger the Biome hooks.
  • Remove the previous src/**/*.ts formatter opt-out and format the newly covered TypeScript files.
  • Update ci/test-file-size-budget.json for deterministic post-format line counts.

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
  • npm run 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)

Signed-off-by: Carlos Villela cvillela@nvidia.com

Summary by CodeRabbit

  • Chores
    • Refactored codebase for improved formatting consistency and code organization across TypeScript files and configurations.
    • Updated Biome configuration to expand code coverage and pre-commit hooks for broader file matching.

cv added 2 commits June 8, 2026 21:48
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
@cv cv self-assigned this Jun 9, 2026
@coderabbitai

coderabbitai Bot commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

Caution

Review failed

Pull request was closed or merged during review

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Path: .coderabbit.yaml

Review profile: CHILL

Plan: Enterprise

Run ID: f5b4e7be-1a99-44b0-a961-5817beccd12a

📥 Commits

Reviewing files that changed from the base of the PR and between fc9a123 and ef3b732.

📒 Files selected for processing (300)
  • .agents/skills/nemoclaw-maintainer-day/scripts/bump-stragglers.ts
  • .agents/skills/nemoclaw-maintainer-day/scripts/check-gates.ts
  • .agents/skills/nemoclaw-maintainer-day/scripts/handoff-summary.ts
  • .agents/skills/nemoclaw-maintainer-day/scripts/hotspots.ts
  • .agents/skills/nemoclaw-maintainer-day/scripts/shared.ts
  • .agents/skills/nemoclaw-maintainer-day/scripts/state.ts
  • .agents/skills/nemoclaw-maintainer-day/scripts/triage.ts
  • .agents/skills/nemoclaw-maintainer-day/scripts/version-progress.ts
  • .agents/skills/nemoclaw-maintainer-day/scripts/version-target.ts
  • .pre-commit-config.yaml
  • agents/hermes/config/build-env.ts
  • agents/hermes/config/hermes-config.ts
  • agents/hermes/config/messaging-config.ts
  • agents/hermes/config/model-specific-setup.ts
  • agents/hermes/generate-config.ts
  • agents/hermes/host/tool-gateway-broker.ts
  • biome.json
  • ci/test-file-size-budget.json
  • src/commands/credentials.test.ts
  • src/commands/credentials.ts
  • src/commands/credentials/list.ts
  • src/commands/credentials/reset.ts
  • src/commands/deploy.ts
  • src/commands/gc.ts
  • src/commands/global-oclif-command-adapters.test.ts
  • src/commands/inference/get.ts
  • src/commands/inference/set.ts
  • src/commands/internal/dns/fix-coredns.ts
  • src/commands/internal/dns/setup-proxy.ts
  • src/commands/internal/installer/normalize-env.ts
  • src/commands/internal/installer/plan.ts
  • src/commands/internal/installer/resolve-release-tag.ts
  • src/commands/internal/uninstall/classify-shim.ts
  • src/commands/internal/uninstall/plan.ts
  • src/commands/internal/uninstall/run-plan.ts
  • src/commands/onboard.test.ts
  • src/commands/resources.test.ts
  • src/commands/sandbox/agents/add.ts
  • src/commands/sandbox/agents/delete.ts
  • src/commands/sandbox/channels/list.ts
  • src/commands/sandbox/config/set.ts
  • src/commands/sandbox/connect.ts
  • src/commands/sandbox/dashboard-url.ts
  • src/commands/sandbox/doctor.ts
  • src/commands/sandbox/exec.test.ts
  • src/commands/sandbox/gateway/token.ts
  • src/commands/sandbox/hosts/list.ts
  • src/commands/sandbox/logs.test.ts
  • src/commands/sandbox/oclif-command-adapters.test.ts
  • src/commands/sandbox/policy/list.ts
  • src/commands/sandbox/policy/mutate.test.ts
  • src/commands/sandbox/recover.ts
  • src/commands/sandbox/sessions.ts
  • src/commands/sandbox/sessions/delete.ts
  • src/commands/sandbox/sessions/list.ts
  • src/commands/sandbox/sessions/reset.ts
  • src/commands/sandbox/share.ts
  • src/commands/sandbox/share/mount.ts
  • src/commands/sandbox/share/status.ts
  • src/commands/sandbox/share/unmount.ts
  • src/commands/sandbox/shields/status.ts
  • src/commands/sandbox/shields/up.ts
  • src/commands/sandbox/skill/install.ts
  • src/commands/sandbox/snapshot/create.ts
  • src/commands/sandbox/snapshot/list.ts
  • src/commands/sandbox/snapshot/restore.ts
  • src/commands/sandbox/status.ts
  • src/commands/setup-spark.ts
  • src/commands/setup.ts
  • src/commands/simple-global-oclif-adapters.test.ts
  • src/commands/start.ts
  • src/commands/stop.ts
  • src/commands/tunnel.ts
  • src/commands/tunnel/start.ts
  • src/commands/tunnel/status.ts
  • src/commands/tunnel/stop.ts
  • src/commands/uninstall.ts
  • src/commands/update.ts
  • src/ext/wechat/login.test.ts
  • src/ext/wechat/login.ts
  • src/ext/wechat/qr.test.ts
  • src/ext/wechat/qr.ts
  • src/lib/actions/deploy.ts
  • src/lib/actions/dev/npm-link-or-shim.test.ts
  • src/lib/actions/dev/npm-link-or-shim.ts
  • src/lib/actions/dns/index.test.ts
  • src/lib/actions/dns/index.ts
  • src/lib/actions/gateway-drift-preflight.test.ts
  • src/lib/actions/global.ts
  • src/lib/actions/inference-get.test.ts
  • src/lib/actions/inference-route-api.test.ts
  • src/lib/actions/inference-set.test.ts
  • src/lib/actions/inference-set.ts
  • src/lib/actions/installer/plan.test.ts
  • src/lib/actions/installer/plan.ts
  • src/lib/actions/maintenance.ts
  • src/lib/actions/root-help.ts
  • src/lib/actions/sandbox/agents/passthrough.ts
  • src/lib/actions/sandbox/auto-pair-approval.test.ts
  • src/lib/actions/sandbox/channel-status.test.ts
  • src/lib/actions/sandbox/channel-status.ts
  • src/lib/actions/sandbox/connect-route-repair.test.ts
  • src/lib/actions/sandbox/connect.ts
  • src/lib/actions/sandbox/destroy.ts
  • src/lib/actions/sandbox/docker-health.ts
  • src/lib/actions/sandbox/doctor-gateway-fallback.ts
  • src/lib/actions/sandbox/doctor-tool-scope.test.ts
  • src/lib/actions/sandbox/doctor-tool-scope.ts
  • src/lib/actions/sandbox/doctor.ts
  • src/lib/actions/sandbox/exec.test.ts
  • src/lib/actions/sandbox/forward-health.ts
  • src/lib/actions/sandbox/gateway-failure-classifier.ts
  • src/lib/actions/sandbox/gateway-state-drift.test.ts
  • src/lib/actions/sandbox/gateway-state.ts
  • src/lib/actions/sandbox/hermes-dashboard-recovery.ts
  • src/lib/actions/sandbox/host-aliases.test.ts
  • src/lib/actions/sandbox/host-aliases.ts
  • src/lib/actions/sandbox/logs.ts
  • src/lib/actions/sandbox/policy-channel-conflict.test.ts
  • src/lib/actions/sandbox/policy-channel-policy.test.ts
  • src/lib/actions/sandbox/policy-channel-refresh.test.ts
  • src/lib/actions/sandbox/policy-channel.ts
  • src/lib/actions/sandbox/policy-context-refresh.test.ts
  • src/lib/actions/sandbox/policy-explain.test.ts
  • src/lib/actions/sandbox/policy-explain.ts
  • src/lib/actions/sandbox/process-recovery.test.ts
  • src/lib/actions/sandbox/process-recovery.ts
  • src/lib/actions/sandbox/rebuild-gateway-drift.test.ts
  • src/lib/actions/sandbox/rebuild-gpu-opt-out.test.ts
  • src/lib/actions/sandbox/rebuild-gpu-opt-out.ts
  • src/lib/actions/sandbox/rebuild-shields-finally.test.ts
  • src/lib/actions/sandbox/rebuild-shields.ts
  • src/lib/actions/sandbox/rebuild.ts
  • src/lib/actions/sandbox/sessions/delete.test.ts
  • src/lib/actions/sandbox/sessions/delete.ts
  • src/lib/actions/sandbox/sessions/gateway-rpc-envelope.ts
  • src/lib/actions/sandbox/sessions/gateway-rpc.test.ts
  • src/lib/actions/sandbox/sessions/gateway-rpc.ts
  • src/lib/actions/sandbox/sessions/reset.test.ts
  • src/lib/actions/sandbox/sessions/reset.ts
  • src/lib/actions/sandbox/skill-install.ts
  • src/lib/actions/sandbox/snapshot.ts
  • src/lib/actions/sandbox/status-snapshot.ts
  • src/lib/actions/sandbox/status.test.ts
  • src/lib/actions/sandbox/status.ts
  • src/lib/actions/sandbox/vm-dns-monkeypatch.test.ts
  • src/lib/actions/sandbox/vm-dns-monkeypatch.ts
  • src/lib/actions/uninstall/plan.test.ts
  • src/lib/actions/uninstall/run-plan.test.ts
  • src/lib/actions/uninstall/run-plan.ts
  • src/lib/actions/update.test.ts
  • src/lib/actions/update.ts
  • src/lib/actions/upgrade-sandboxes.ts
  • src/lib/adapters/docker/exec.ts
  • src/lib/adapters/docker/index.test.ts
  • src/lib/adapters/docker/pull.test.ts
  • src/lib/adapters/docker/pull.ts
  • src/lib/adapters/http/curl-args.ts
  • src/lib/adapters/http/probe.test.ts
  • src/lib/adapters/http/probe.ts
  • src/lib/adapters/openshell/client.test.ts
  • src/lib/adapters/openshell/client.ts
  • src/lib/adapters/openshell/gateway-drift.test.ts
  • src/lib/adapters/openshell/gateway-drift.ts
  • src/lib/adapters/openshell/runtime.ts
  • src/lib/agent/base-image.test.ts
  • src/lib/agent/dashboard-ui.ts
  • src/lib/agent/onboard.ts
  • src/lib/agent/runtime-hermes-secret-boundary-behavioural.test.ts
  • src/lib/agent/runtime-hermes-secret-boundary-shape.test.ts
  • src/lib/agent/runtime.test.ts
  • src/lib/agent/runtime.ts
  • src/lib/build-context.test.ts
  • src/lib/build-context.ts
  • src/lib/channel-runtime-status.test.ts
  • src/lib/channel-runtime-status.ts
  • src/lib/cli/argv-normalizer.test.ts
  • src/lib/cli/banner.ts
  • src/lib/cli/branding.ts
  • src/lib/cli/command-display-metadata.test.ts
  • src/lib/cli/command-registry.ts
  • src/lib/cli/generate-oclif-metadata-manifest.ts
  • src/lib/cli/oclif-metadata.ts
  • src/lib/cli/oclif-runner.test.ts
  • src/lib/cli/public-argv-translation.test.ts
  • src/lib/cli/public-argv-translation.ts
  • src/lib/cli/public-dispatch.ts
  • src/lib/cli/public-display-defaults.ts
  • src/lib/cli/stdout-guard.ts
  • src/lib/cluster-image-patch.test.ts
  • src/lib/cluster-image-patch.ts
  • src/lib/core/errno.test.ts
  • src/lib/core/errno.ts
  • src/lib/core/gateway-address.ts
  • src/lib/core/ports.test.ts
  • src/lib/core/ports.ts
  • src/lib/core/require-value.test.ts
  • src/lib/core/shell-quote.test.ts
  • src/lib/core/wait.ts
  • src/lib/coverage-hotspots.test.ts
  • src/lib/credentials/command-support.ts
  • src/lib/credentials/store.ts
  • src/lib/dashboard-url-command.test.ts
  • src/lib/dashboard-url-command.ts
  • src/lib/dashboard/contract.test.ts
  • src/lib/dashboard/contract.ts
  • src/lib/deploy/index.test.ts
  • src/lib/diagnostics/debug-command.ts
  • src/lib/diagnostics/debug.test.ts
  • src/lib/diagnostics/debug.ts
  • src/lib/domain/dev/npm-link-or-shim.test.ts
  • src/lib/domain/dns/coredns.test.ts
  • src/lib/domain/dns/coredns.ts
  • src/lib/domain/installer/npm.test.ts
  • src/lib/domain/installer/npm.ts
  • src/lib/domain/installer/provider.ts
  • src/lib/domain/installer/ref.ts
  • src/lib/domain/installer/version.ts
  • src/lib/domain/maintenance/images.test.ts
  • src/lib/domain/sandbox/destroy.test.ts
  • src/lib/domain/sandbox/destroy.ts
  • src/lib/domain/sandbox/image-tag.test.ts
  • src/lib/domain/sandbox/logs.test.ts
  • src/lib/domain/sandbox/logs.ts
  • src/lib/domain/uninstall/paths.test.ts
  • src/lib/domain/uninstall/paths.ts
  • src/lib/domain/uninstall/plan.test.ts
  • src/lib/domain/uninstall/plan.ts
  • src/lib/domain/uninstall/shims.test.ts
  • src/lib/domain/uninstall/shims.ts
  • src/lib/gateway-runtime-action.ts
  • src/lib/gateway-token-command.ts
  • src/lib/hermes-dashboard.ts
  • src/lib/hermes-provider-auth.test.ts
  • src/lib/hermes-tool-gateway-broker.ts
  • src/lib/inference/bedrock-runtime-adapter.test.ts
  • src/lib/inference/bedrock-runtime-adapter.ts
  • src/lib/inference/bedrock-runtime.ts
  • src/lib/inference/config.test.ts
  • src/lib/inference/gpu-trust.ts
  • src/lib/inference/health.ts
  • src/lib/inference/live.test.ts
  • src/lib/inference/local-adapter-lifecycle.ts
  • src/lib/inference/local.test.ts
  • src/lib/inference/local.ts
  • src/lib/inference/model-prompts.test.ts
  • src/lib/inference/model-prompts.ts
  • src/lib/inference/nim.test.ts
  • src/lib/inference/nim.ts
  • src/lib/inference/nous-models.test.ts
  • src/lib/inference/nous-models.ts
  • src/lib/inference/ollama-model-registry.test.ts
  • src/lib/inference/ollama-model-registry.ts
  • src/lib/inference/ollama-probe-timeout.test.ts
  • src/lib/inference/ollama-runtime-context.test.ts
  • src/lib/inference/ollama-runtime-context.ts
  • src/lib/inference/ollama-version.ts
  • src/lib/inference/ollama/proxy.ts
  • src/lib/inference/ollama/windows.test.ts
  • src/lib/inference/ollama/windows.ts
  • src/lib/inference/onboard-host-docker-internal.test.ts
  • src/lib/inference/onboard-probes.test.ts
  • src/lib/inference/onboard-probes.ts
  • src/lib/inference/provider-models.test.ts
  • src/lib/inference/vllm-models.test.ts
  • src/lib/inference/vllm-models.ts
  • src/lib/inference/vllm-runtime-context.ts
  • src/lib/inference/vllm.test.ts
  • src/lib/inference/vllm.ts
  • src/lib/inventory/index.test.ts
  • src/lib/inventory/index.ts
  • src/lib/messaging-channel-config.ts
  • src/lib/messaging/applier/agent-config.ts
  • src/lib/messaging/applier/conflict-detection-plan.test.ts
  • src/lib/messaging/applier/conflict-detection/entries.ts
  • src/lib/messaging/applier/host-state-applier.test.ts
  • src/lib/messaging/applier/host-state-applier.ts
  • src/lib/messaging/applier/openshell-provider.ts
  • src/lib/messaging/applier/plan-filter.ts
  • src/lib/messaging/applier/policy.ts
  • src/lib/messaging/applier/setup-applier.test.ts
  • src/lib/messaging/applier/setup-applier.ts
  • src/lib/messaging/applier/types.ts
  • src/lib/messaging/channels/manifests.test.ts
  • src/lib/messaging/channels/slack/hooks/credential-validation.test.ts
  • src/lib/messaging/channels/slack/hooks/credential-validation.ts
  • src/lib/messaging/channels/slack/hooks/validate-credentials.ts
  • src/lib/messaging/channels/slack/manifest.ts
  • src/lib/messaging/channels/telegram/hooks/get-me-reachability.test.ts
  • src/lib/messaging/channels/wechat/hooks/host-qr-login-runtime.ts
  • src/lib/messaging/channels/wechat/hooks/implementations.test.ts
  • src/lib/messaging/channels/wechat/hooks/seed-openclaw-account.ts
  • src/lib/messaging/compiler/engines/build-step-engine.ts
  • src/lib/messaging/compiler/engines/credential-binding-engine.ts
  • src/lib/messaging/compiler/engines/template.ts
  • src/lib/messaging/compiler/manifest-compiler.test.ts
  • src/lib/messaging/compiler/manifest-compiler.ts
  • src/lib/messaging/compiler/types.ts
  • src/lib/messaging/compiler/workflow-planner.test.ts
  • src/lib/messaging/compiler/workflow-planner.ts
💤 Files with no reviewable changes (3)
  • src/lib/actions/maintenance.ts
  • src/lib/domain/sandbox/destroy.ts
  • src/lib/actions/sandbox/skill-install.ts

📝 Walkthrough

Walkthrough

This PR mainly reformats TypeScript and command metadata across the repository, broadens Biome and pre-commit TypeScript coverage, adds sandbox destroy domain helpers, changes uninstall stdin reading, adds log-merge tests, updates a public argv translation test, and adjusts a few targeted tests and user-facing messages.

Changes

Repository-wide formatting and targeted behavior adjustments

Layer / File(s) Summary
Tooling scripts and formatter scope
.agents/skills/nemoclaw-maintainer-day/scripts/*, biome.json, .pre-commit-config.yaml, ci/test-file-size-budget.json
Maintainer scripts are reflowed around multiline CLI argument lists, Biome/pre-commit now target TypeScript files more broadly, and test size budget values are updated.
CLI metadata and command dispatch
src/commands/..., src/lib/cli/*, src/lib/dashboard-url-command*, src/lib/gateway-token-command*
Command metadata and tests are reformatted broadly, one onboard test adds --yes to the GPU-forwarding invocation, and public argv translation adds coverage for inference get --json.
Sandbox, uninstall, inference, and runtime internals
src/lib/actions/sandbox/*, src/lib/actions/uninstall/*, src/lib/domain/sandbox/*, src/lib/inference/*, src/ext/wechat/*, src/lib/adapters/*, src/lib/core/*
Sandbox and inference internals are mostly reformatted, uninstall input reading now uses direct stdin reads, sandbox destroy domain helpers are added, rebuild shields messages are updated, and new log timestamp/merge tests are added.
Hermes, messaging, inventory, and shared library formatting
agents/hermes/..., src/lib/messaging/..., src/lib/inventory/*, src/lib/dashboard/*, src/lib/diagnostics/*
Hermes config and messaging planning code are reformatted, inventory rendering and shared helpers are reflowed, and related tests are updated without broader flow changes.

Estimated code review effort

🎯 4 (Complex) | ⏱️ ~55 minutes

Possibly related PRs

Suggested reviewers

  • jyaunches

Poem

🐇 I hopped through lines both wide and small,
And straightened paths across them all.
A flag here, logs there, globs set right,
With tidy tests in moonlit light.
Carrot cheers for a cleaner trail tonight!

✨ Finishing Touches
📝 Generate docstrings
  • Create stacked PR
  • Commit on current branch
🧪 Generate unit tests (beta)
  • Create PR with unit tests
  • Commit unit tests in branch codex/biome-all-ts

Comment thread src/lib/onboard/web-search-flow.ts Fixed
Comment thread src/lib/onboard.ts Fixed
@github-actions

github-actions Bot commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

E2E Advisor Recommendation

Required E2E: None
Optional E2E: cloud-onboard-e2e, sandbox-operations-e2e, inference-routing-e2e, hermes-secret-boundary-e2e

Dispatch hint: cloud-onboard-e2e,sandbox-operations-e2e,inference-routing-e2e,hermes-secret-boundary-e2e

Workflow run

Full advisor summary

E2E Recommendation Advisor

Base: origin/main
Head: HEAD
Confidence: medium

Required E2E

  • None. No merge-blocking E2E is recommended because the visible changes are formatting/tooling-driven and do not show semantic changes to installer, onboarding, sandbox, credentials, security, network policy, inference, deployment, or assistant user flows. Optional smoke E2E may be run if maintainers want extra confidence for the unusually broad touched runtime surface.

Optional E2E

  • cloud-onboard-e2e (medium): Optional smoke for the broad CLI/onboard/installer formatting churn; verifies install/onboard still reaches a usable sandbox with cloud inference.
  • sandbox-operations-e2e (high): Optional confidence for the many formatted sandbox command/action files covering lifecycle, status, logs, exec, recovery, policy, sessions, share, snapshots, and shields.
  • inference-routing-e2e (medium): Optional confidence for formatted inference get/set/routing/provider and credential-isolation code paths.
  • hermes-secret-boundary-e2e (medium): Optional confidence for Hermes config generation and host broker formatting, especially around secret placeholders and sandbox boundary assertions.

New E2E recommendations

  • None.

Dispatch hint

  • Workflow: .github/workflows/nightly-e2e.yaml
  • jobs input: cloud-onboard-e2e,sandbox-operations-e2e,inference-routing-e2e,hermes-secret-boundary-e2e

@github-actions

github-actions Bot commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

E2E Scenario Advisor Recommendation

Required scenario E2E: e2e-scenarios-all
Optional scenario E2E: None

Dispatch required scenario E2E:

  • gh workflow run e2e-scenarios-all.yaml --ref <pr-head-ref>

Workflow run

Full scenario advisor summary

E2E Scenario Advisor

Base: origin/main
Head: HEAD
Confidence: high

Required scenario E2E

  • e2e-scenarios-all: Scenario E2E framework/runtime and typed scenario runner/catalog files under test/e2e-scenario/ changed, including framework clients/phases, scenario compiler/manifests/matrix/run/orchestrator code, probes, and runtime report code. Per policy these shared scenario surfaces require the full scenario fan-out.
    • Dispatch: gh workflow run e2e-scenarios-all.yaml --ref <pr-head-ref>

Optional scenario E2E

  • None.

Relevant changed files

  • test/e2e-scenario/framework-tests/e2e-assertion-modules.test.ts
  • test/e2e-scenario/framework-tests/e2e-clients.test.ts
  • test/e2e-scenario/framework-tests/e2e-context-helper.test.ts
  • test/e2e-scenario/framework-tests/e2e-convention-lint.test.ts
  • test/e2e-scenario/framework-tests/e2e-expected-state.test.ts
  • test/e2e-scenario/framework-tests/e2e-fixture-context.test.ts
  • test/e2e-scenario/framework-tests/e2e-lib-helpers.test.ts
  • test/e2e-scenario/framework-tests/e2e-live-project-config.test.ts
  • test/e2e-scenario/framework-tests/e2e-live-registry-discovery.test.ts
  • test/e2e-scenario/framework-tests/e2e-manifests.test.ts
  • test/e2e-scenario/framework-tests/e2e-migration-inventory.test.ts
  • test/e2e-scenario/framework-tests/e2e-negative-matcher.test.ts
  • test/e2e-scenario/framework-tests/e2e-phase-environment.test.ts
  • test/e2e-scenario/framework-tests/e2e-phase-onboarding.test.ts
  • test/e2e-scenario/framework-tests/e2e-phase-orchestrators.test.ts
  • test/e2e-scenario/framework-tests/e2e-phase-state-validation.test.ts
  • test/e2e-scenario/framework-tests/e2e-plan-compiler.test.ts
  • test/e2e-scenario/framework-tests/e2e-probes.test.ts
  • test/e2e-scenario/framework-tests/e2e-scenario-registry.test.ts
  • test/e2e-scenario/framework-tests/e2e-scenarios-workflow.test.ts
  • test/e2e-scenario/framework/availability-env.ts
  • test/e2e-scenario/framework/cleanup.ts
  • test/e2e-scenario/framework/clients/command.ts
  • test/e2e-scenario/framework/clients/gateway.ts
  • test/e2e-scenario/framework/clients/host.ts
  • test/e2e-scenario/framework/clients/index.ts
  • test/e2e-scenario/framework/clients/provider.ts
  • test/e2e-scenario/framework/clients/sandbox.ts
  • test/e2e-scenario/framework/e2e-test.ts
  • test/e2e-scenario/framework/phases/environment.ts
  • test/e2e-scenario/framework/phases/onboarding.ts
  • test/e2e-scenario/framework/phases/state-validation.ts
  • test/e2e-scenario/framework/shell-probe.ts
  • test/e2e-scenario/live/registry-scenarios.test.ts
  • test/e2e-scenario/live/ubuntu-repo-cli-smoke.test.ts
  • test/e2e-scenario/runtime/reports/render-gap-report.ts
  • test/e2e-scenario/scenarios/assertions/registry.ts
  • test/e2e-scenario/scenarios/compiler.ts
  • test/e2e-scenario/scenarios/expected-states.ts
  • test/e2e-scenario/scenarios/manifests.ts
  • test/e2e-scenario/scenarios/matrix.ts
  • test/e2e-scenario/scenarios/orchestrators/negative-matcher.ts
  • test/e2e-scenario/scenarios/orchestrators/phase.ts
  • test/e2e-scenario/scenarios/orchestrators/redaction.ts
  • test/e2e-scenario/scenarios/orchestrators/runner.ts
  • test/e2e-scenario/scenarios/probes/injection-blocked.ts
  • test/e2e-scenario/scenarios/probes/network-policy.ts
  • test/e2e-scenario/scenarios/probes/shields-config.ts
  • test/e2e-scenario/scenarios/probes/util.ts
  • test/e2e-scenario/scenarios/run.ts
  • test/e2e-scenario/scenarios/scenarios/baseline.ts
  • test/e2e-scenario/scenarios/types.ts

@github-actions

github-actions Bot commented Jun 9, 2026

Copy link
Copy Markdown
Contributor

PR Review Advisor

Findings: 1 needs attention, 6 worth checking, 0 nice ideas
Since last review: 2 prior items resolved, 7 still apply, 0 new items found

Review findings

🛠️ Needs attention

  • Formatter pass grows multiple monolith hotspots (src/lib/onboard.ts:1): The repository-wide formatter pass increases several already-large files, worsening maintenance cost, reviewability, and conflict pressure even when many edits are formatting-only.
    • Recommendation: Offset the hotspot growth before merge by extracting helpers, splitting oversized tests/modules, or narrowing/staging the formatter rollout so blocker-level large-file deltas are reduced.
    • Evidence: Deterministic monolith drift reports blocker-level growth including src/lib/onboard.ts +285, src/lib/actions/dns/index.ts +156, src/lib/actions/uninstall/run-plan.ts +82, src/lib/onboard/machine/handlers/sandbox.ts +62, src/lib/actions/sandbox/policy-channel-conflict.test.ts +51, and src/lib/inference/local.test.ts +44.

🔎 Worth checking

  • Source-of-truth review needed: .agents/skills/nemoclaw-maintainer-day/scripts/bump-stragglers.ts JSON parsing: The advisor marked localized patch analysis as needs_followup.
    • Recommendation: Identify the invalid state, source boundary, source-fix constraint, regression test, and removal condition before merging the localized behavior.
    • Evidence: bump-stragglers.ts catches both parse failures with `catch { /* ignore */ }`.
  • Source-of-truth review needed: .agents/skills/nemoclaw-maintainer-day/scripts/triage.ts enrichPr JSON parsing: The advisor marked localized patch analysis as needs_followup.
    • Recommendation: Identify the invalid state, source boundary, source-fix constraint, regression test, and removal condition before merging the localized behavior.
    • Evidence: triage.ts catches enrichPr JSON failures with `catch { /* leave as-is */ }`.
  • All-TypeScript formatter scope rewrites security-critical trusted surfaces (biome.json:17): The PR broadens Biome from selected TypeScript paths to effectively every tracked TypeScript file and removes the prior src formatter opt-out. That pulls sandbox lifecycle, SSRF/network policy, credential, installer/uninstaller, Hermes broker, inference, policy, and maintainer automation code into one very large mass-rewrite boundary.
    • Recommendation: Consider splitting the tooling-scope change from the mass formatting pass, or stage high-risk directories separately with focused review evidence for sandbox lifecycle, SSRF validation, credential handling, installer/uninstaller, workflow automation, and Hermes broker surfaces.
    • Evidence: biome.json now includes "*.ts" and "**/*.ts"; .pre-commit-config.yaml Biome hooks now match ".*\\.ts". Changed high-risk files include src/lib/sandbox/config.ts, src/lib/private-networks.ts, src/lib/actions/sandbox/rebuild.ts, agents/hermes/host/tool-gateway-broker.ts, installer/uninstaller code, policy code, inference code, and .agents maintainer scripts.
  • Maintainer automation silently defaults on invalid GitHub JSON (.agents/skills/nemoclaw-maintainer-day/scripts/bump-stragglers.ts:85): Changed trusted workflow automation still silently ignores invalid GitHub CLI/API JSON. In bump-stragglers this can emit a success-shaped response with an empty or incomplete bumped list after no or partial mutation; in triage, invalid enrichment JSON leaves default PR fields in place without diagnostics.
    • Recommendation: Make parse failures observable and preferably fail closed for mutation scripts. Add targeted runtime validation for invalid PR/issue JSON in bump-stragglers and invalid enrichment JSON in triage.
    • Evidence: bump-stragglers.ts catches JSON.parse failures at PR and issue list paths with catch { /* ignore */ }; triage.ts catches enrichPr JSON failures with catch { /* leave as-is */ }; no targeted .agents maintainer script tests were found.
  • Changed maintainer automation lacks targeted runtime validation (.agents/skills/nemoclaw-maintainer-day/scripts/check-gates.ts:1): Several operational maintainer scripts were reformatted under the expanded Biome scope. They call gh/git, parse JSON, classify required checks, and sometimes fail closed or default on API failures. Targeted tests were not found for these changed scripts, so behavior drift in missing-check or invalid-JSON paths could be missed.
    • Recommendation: Add or identify targeted runtime/integration validation for check-gates, triage, and bump-stragglers behavior around missing required checks, invalid GitHub JSON, and API failures. Make silent/defaulted parse failures observable where practical.
    • Evidence: Changed scripts include bump-stragglers.ts, check-gates.ts, handoff-summary.ts, hotspots.ts, shared.ts, state.ts, triage.ts, version-progress.ts, and version-target.ts. File search did not find matching .agents maintainer script tests.
  • Formatter hook coverage lacks targeted matcher tests (.pre-commit-config.yaml:109): The broad Biome coverage and pre-commit hook expansion are implemented in configuration, but no targeted test evidence was found that intended tracked TypeScript surfaces are included while generated/build outputs remain excluded.
    • Recommendation: Add a small config-contract test that evaluates representative paths for root, .agents, src, test, agent/config TypeScript, dist, node_modules, nemoclaw/dist, nemoclaw/node_modules, and docs/_build against biome.json and the Biome pre-commit hook regexes.
    • Evidence: biome.json includes "*.ts" and "**/*.ts", and the pre-commit Biome hooks include ".*\\.ts". Existing inspected coverage covers workflow contracts and test-file budget ratcheting, not Biome/pre-commit matcher semantics.

🌱 Nice ideas

  • None.
Consider writing more tests for
  • **Runtime validation** — bump-stragglers exits non-zero and reports invalid PR list JSON before editing labels or emitting success-shaped bumped output. The Brave CR/LF security regression has targeted unit coverage, and installer/test-budget helper mechanics have existing coverage. Runtime/workflow automation and formatter matcher behavior changed under a broad all-TypeScript rollout without enough targeted validation.
  • **Runtime validation** — bump-stragglers exits non-zero and reports invalid issue list JSON after PR parsing succeeds without hiding the partial failure. The Brave CR/LF security regression has targeted unit coverage, and installer/test-budget helper mechanics have existing coverage. Runtime/workflow automation and formatter matcher behavior changed under a broad all-TypeScript rollout without enough targeted validation.
  • **Runtime validation** — triage logs or records enrichment parse failure when gh pr view returns invalid JSON instead of silently using default CI/review fields. The Brave CR/LF security regression has targeted unit coverage, and installer/test-budget helper mechanics have existing coverage. Runtime/workflow automation and formatter matcher behavior changed under a broad all-TypeScript rollout without enough targeted validation.
  • **Runtime validation** — check-gates reports missing required checks when statusCheckRollup lacks checks, commit-lint, or dco-check. The Brave CR/LF security regression has targeted unit coverage, and installer/test-budget helper mechanics have existing coverage. Runtime/workflow automation and formatter matcher behavior changed under a broad all-TypeScript rollout without enough targeted validation.
  • **Runtime validation** — biome and pre-commit matcher contract includes representative root, nested, .agents, src, test, agent, and config TypeScript files while excluding dist, node_modules, nemoclaw/dist, nemoclaw/node_modules, and docs/_build. The Brave CR/LF security regression has targeted unit coverage, and installer/test-budget helper mechanics have existing coverage. Runtime/workflow automation and formatter matcher behavior changed under a broad all-TypeScript rollout without enough targeted validation.
  • **Changed maintainer automation lacks targeted runtime validation** — Add or identify targeted runtime/integration validation for check-gates, triage, and bump-stragglers behavior around missing required checks, invalid GitHub JSON, and API failures. Make silent/defaulted parse failures observable where practical.
  • **Acceptance clause:** Broaden `biome.json` TypeScript includes to cover root, nested, test, agent, and config `.ts` files. — add test evidence or identify existing coverage. biome.json now includes "*.ts" and "**/*.ts", which appears to cover the stated surfaces through Biome's VCS ignore handling. No matcher-contract test was found proving representative included and excluded paths.
  • **Acceptance clause:** Update the prek Biome format and lint-fix hooks so all tracked `.ts` files trigger the Biome hooks. — add test evidence or identify existing coverage. .pre-commit-config.yaml updates biome-format and biome-lint-fix files regexes to include `.*\.ts`; no targeted pre-commit matcher test was found.
Since last review details

Current findings:

  • Source-of-truth review needed: .agents/skills/nemoclaw-maintainer-day/scripts/bump-stragglers.ts JSON parsing: The advisor marked localized patch analysis as needs_followup.
    • Recommendation: Identify the invalid state, source boundary, source-fix constraint, regression test, and removal condition before merging the localized behavior.
    • Evidence: bump-stragglers.ts catches both parse failures with `catch { /* ignore */ }`.
  • Source-of-truth review needed: .agents/skills/nemoclaw-maintainer-day/scripts/triage.ts enrichPr JSON parsing: The advisor marked localized patch analysis as needs_followup.
    • Recommendation: Identify the invalid state, source boundary, source-fix constraint, regression test, and removal condition before merging the localized behavior.
    • Evidence: triage.ts catches enrichPr JSON failures with `catch { /* leave as-is */ }`.
  • Formatter pass grows multiple monolith hotspots (src/lib/onboard.ts:1): The repository-wide formatter pass increases several already-large files, worsening maintenance cost, reviewability, and conflict pressure even when many edits are formatting-only.
    • Recommendation: Offset the hotspot growth before merge by extracting helpers, splitting oversized tests/modules, or narrowing/staging the formatter rollout so blocker-level large-file deltas are reduced.
    • Evidence: Deterministic monolith drift reports blocker-level growth including src/lib/onboard.ts +285, src/lib/actions/dns/index.ts +156, src/lib/actions/uninstall/run-plan.ts +82, src/lib/onboard/machine/handlers/sandbox.ts +62, src/lib/actions/sandbox/policy-channel-conflict.test.ts +51, and src/lib/inference/local.test.ts +44.
  • All-TypeScript formatter scope rewrites security-critical trusted surfaces (biome.json:17): The PR broadens Biome from selected TypeScript paths to effectively every tracked TypeScript file and removes the prior src formatter opt-out. That pulls sandbox lifecycle, SSRF/network policy, credential, installer/uninstaller, Hermes broker, inference, policy, and maintainer automation code into one very large mass-rewrite boundary.
    • Recommendation: Consider splitting the tooling-scope change from the mass formatting pass, or stage high-risk directories separately with focused review evidence for sandbox lifecycle, SSRF validation, credential handling, installer/uninstaller, workflow automation, and Hermes broker surfaces.
    • Evidence: biome.json now includes "*.ts" and "**/*.ts"; .pre-commit-config.yaml Biome hooks now match ".*\\.ts". Changed high-risk files include src/lib/sandbox/config.ts, src/lib/private-networks.ts, src/lib/actions/sandbox/rebuild.ts, agents/hermes/host/tool-gateway-broker.ts, installer/uninstaller code, policy code, inference code, and .agents maintainer scripts.
  • Maintainer automation silently defaults on invalid GitHub JSON (.agents/skills/nemoclaw-maintainer-day/scripts/bump-stragglers.ts:85): Changed trusted workflow automation still silently ignores invalid GitHub CLI/API JSON. In bump-stragglers this can emit a success-shaped response with an empty or incomplete bumped list after no or partial mutation; in triage, invalid enrichment JSON leaves default PR fields in place without diagnostics.
    • Recommendation: Make parse failures observable and preferably fail closed for mutation scripts. Add targeted runtime validation for invalid PR/issue JSON in bump-stragglers and invalid enrichment JSON in triage.
    • Evidence: bump-stragglers.ts catches JSON.parse failures at PR and issue list paths with catch { /* ignore */ }; triage.ts catches enrichPr JSON failures with catch { /* leave as-is */ }; no targeted .agents maintainer script tests were found.
  • Changed maintainer automation lacks targeted runtime validation (.agents/skills/nemoclaw-maintainer-day/scripts/check-gates.ts:1): Several operational maintainer scripts were reformatted under the expanded Biome scope. They call gh/git, parse JSON, classify required checks, and sometimes fail closed or default on API failures. Targeted tests were not found for these changed scripts, so behavior drift in missing-check or invalid-JSON paths could be missed.
    • Recommendation: Add or identify targeted runtime/integration validation for check-gates, triage, and bump-stragglers behavior around missing required checks, invalid GitHub JSON, and API failures. Make silent/defaulted parse failures observable where practical.
    • Evidence: Changed scripts include bump-stragglers.ts, check-gates.ts, handoff-summary.ts, hotspots.ts, shared.ts, state.ts, triage.ts, version-progress.ts, and version-target.ts. File search did not find matching .agents maintainer script tests.
  • Formatter hook coverage lacks targeted matcher tests (.pre-commit-config.yaml:109): The broad Biome coverage and pre-commit hook expansion are implemented in configuration, but no targeted test evidence was found that intended tracked TypeScript surfaces are included while generated/build outputs remain excluded.
    • Recommendation: Add a small config-contract test that evaluates representative paths for root, .agents, src, test, agent/config TypeScript, dist, node_modules, nemoclaw/dist, nemoclaw/node_modules, and docs/_build against biome.json and the Biome pre-commit hook regexes.
    • Evidence: biome.json includes "*.ts" and "**/*.ts", and the pre-commit Biome hooks include ".*\\.ts". Existing inspected coverage covers workflow contracts and test-file budget ratcheting, not Biome/pre-commit matcher semantics.

Workflow run details

This is an automated advisory review. A human maintainer must make the final merge decision.

Signed-off-by: Carlos Villela <cvillela@nvidia.com>
@cv

cv commented Jun 9, 2026

Copy link
Copy Markdown
Collaborator Author

Codebase Growth Guardrail Exemption

The codebase-growth-guardrails failure is from the formatter-only pass over src/lib/onboard.ts, not new behavior or new onboard logic. Current diff for that file is +527/-246 (net +281), caused by Biome wrapping/reflow after removing the previous src/**/*.ts formatter opt-out.

This PR intentionally separates the tooling change and the mechanical formatting change:

  • 4209ee7b2 expands Biome coverage.
  • 151881350 applies the formatting pass.
  • ba5a29224 only addresses CodeQL feedback from the review comments.

@cv

cv commented Jun 9, 2026

Copy link
Copy Markdown
Collaborator Author

Feedback Update

Addressed the PR Review Advisor test-size budget finding in cd506e732.

What changed:

  • Kept every existing legacyMaxLines entry at or below the origin/main value.
  • Consolidated repeated test helpers/shims so formatted large tests no longer require raised legacy ceilings.
  • Current examples: test/channels-add-preset.test.ts is now net +105/-134, test/onboard-selection.test.ts is +211/-445, test/onboard.test.ts is +792/-805, and test/install-preflight.test.ts is +191/-192 versus origin/main.

Validation on the updated branch:

  • make check passed
  • npm test passed: 599 files passed, 2 skipped; 7681 tests passed, 17 skipped
  • npm run typecheck:cli passed
  • npm run test-size:check passed

I also dispatched the required scenario E2E from the advisor on the latest PR head: https://github.com/NVIDIA/NemoClaw/actions/runs/27188638108

The remaining codebase-growth-guardrails failure is still the source-formatting growth, especially src/lib/onboard.ts at +527/-246, so I’m still requesting the maintainer exemption/override for that formatting-only guardrail hit.

@cv

cv commented Jun 9, 2026

Copy link
Copy Markdown
Collaborator Author

Latest Sync / Static Checks Update

Synced the branch with current origin/main and addressed the CI-only static-checks failure in fa8522f54.

What happened:

  • CI checked the PR merge ref against a newer main, where shfmt/Biome would modify four newly merged files.
  • I reproduced that locally with the exact static-checks hook subset from CI.
  • fa8522f54 commits those deterministic formatting changes after the fresh main merge.

Validation on the latest head (fa8522f54):

  • Exact CI static hook subset passed on rerun.
  • make check passed.
  • npm run typecheck:cli passed.
  • npm test passed: 604 files passed, 2 skipped; 7718 tests passed, 17 skipped.

I also re-dispatched the required scenario E2E on the latest head: https://github.com/NVIDIA/NemoClaw/actions/runs/27189152047

The remaining known failure is still codebase-growth-guardrails, which needs the maintainer exemption/override requested above because the remaining growth is formatter-only source reflow.

cv added 5 commits June 9, 2026 00:10
Signed-off-by: Carlos Villela <cvillela@nvidia.com>

# Conflicts:
#	src/lib/core/wait.ts
#	src/lib/onboard/sandbox-provider-cleanup.ts
#	test/wait.test.ts
#	test/whatsapp-qr-compact.test.ts
Signed-off-by: Carlos Villela <cvillela@nvidia.com>

# Conflicts:
#	test/e2e-scenario/framework-tests/e2e-negative-matcher.test.ts
#	test/e2e-scenario/framework/clients/index.ts
#	test/e2e-scenario/framework/phases/environment.ts
#	test/e2e-scenario/scenarios/assertions/registry.ts
Signed-off-by: Carlos Villela <cvillela@nvidia.com>

# Conflicts:
#	test/e2e-scenario/framework-tests/e2e-assertion-modules.test.ts
#	test/e2e-scenario/framework-tests/e2e-convention-lint.test.ts
#	test/e2e-scenario/framework-tests/e2e-lib-helpers.test.ts
#	test/e2e-scenario/framework-tests/e2e-manifests.test.ts
#	test/e2e-scenario/framework-tests/e2e-scenario-registry.test.ts
Signed-off-by: Carlos Villela <cvillela@nvidia.com>
Signed-off-by: Carlos Villela <cvillela@nvidia.com>

# Conflicts:
#	test/pr-workflow-contract.test.ts
@cv cv added the v0.0.62 Release target label Jun 9, 2026
@wscurran wscurran added the chore Build, CI, dependency, or tooling maintenance label Jun 9, 2026
@cv cv merged commit b7cddd7 into main Jun 9, 2026
40 of 42 checks passed
@cv cv deleted the codex/biome-all-ts branch June 9, 2026 15:52
jyaunches added a commit that referenced this pull request Jun 9, 2026
After merging main (which brought #5020 'cover and format all
TypeScript files' into the branch), biome flagged 5 PR files for
organize-imports and one wrap. Auto-applied via:

  npx biome check --write \
    test/e2e-scenario/framework-tests/e2e-live-skip-name-contract.test.ts \
    test/e2e-scenario/framework-tests/e2e-scenario-matrix.test.ts \
    test/e2e-scenario/framework-tests/e2e-scenarios-workflow.test.ts \
    test/e2e-scenario/live/registry-scenarios.test.ts \
    test/e2e-scenario/scenarios/run.ts

Verified post-format:
- 24/24 e2e-scenario-framework tests still green (skip-name contract,
  live-registry-discovery, scenario-matrix, workflow boundary).
- Workflow filter sim still works: SCENARIO_ID=ubuntu-repo-cloud-hermes
  + -t "^ubuntu-repo-cloud-hermes$" exits 0 with structured
  [not wired] reason in stderr.

Signed-off-by: Julie Yaunches <jyaunches@nvidia.com>
cv pushed a commit that referenced this pull request Jun 12, 2026
<!-- markdownlint-disable MD041 -->
## Summary
Interactive `nemoclaw uninstall` printed `Proceed? [y/N]` and then
immediately `Aborted.` before the user could type — on every Linux TTY.
Regression from #5020, which replaced the child-shell stdin read with an
in-process `fs.readSync(0)` loop: `buildRuntime` touches `process.stdin`
to detect a TTY, which flips fd 0 to non-blocking (libuv side effect),
so the empty read throws `EAGAIN` and the catch treated it as EOF. This
PR detects the TTY without side effects, retries transient read errors,
and clarifies the abort message.


## Related Issue
<!-- Fixes #NNN or Closes #NNN. Remove this section if none. -->
Fixes #5188 

## Changes
- Detect TTY via `tty.isatty(0)` in `buildRuntime` instead of
`process.stdin.isTTY`, which instantiates the stdin stream and switches
fd 0 to non-blocking mode for the rest of the process.
- Retry `EAGAIN`/`EWOULDBLOCK` (25 ms sleep) and `EINTR` in
`defaultReadLine` instead of conflating them with EOF; hard errors and
real EOF keep prior behavior (return buffered bytes or null).
- Print a `re-run with --yes` hint when stdin yields no input at the
confirm prompt instead of a bare `Aborted.`.
- Export `defaultReadLine` with injectable `readSync`/`sleep` deps; add
7 unit tests (EAGAIN retry, EINTR, EOF, CRLF, partial-line, hard errors)
and 1 integration test for the no-input message.

Manually verified under a pty against the compiled CLI: with fd 0
poisoned non-blocking, the prompt now waits for input (read `"y"` after
~1 s) instead of aborting in ~1 ms; full `internal uninstall run-plan`
waits and aborts only after an actual `n`.

## 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
<!-- Check each item you ran and confirmed. Leave unchecked items you
skipped. Doc-only changes do not require npm test unless you ran it. -->
- [ ] `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
- [ ] `npm run 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)

---
<!-- DCO sign-off required by CI. Run: git config user.name && git
config user.email -->
Signed-off-by: Hung Le <hple@nvidia.com>


<!-- This is an auto-generated comment: release notes by coderabbit.ai
-->
## Summary by CodeRabbit

* **Bug Fixes**
* Improved uninstall confirmation behavior when stdin is
closed/non-interactive; now logs a clear message and guides rerunning
with --yes.
* Better terminal detection to avoid unwanted side effects and ensure
interactive prompts behave correctly.

* **Tests**
* Added robust tests covering no-stdin, TTY vs non-TTY, retry/error
cases, and PTY-driven prompt interactions to prevent regressions.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

chore Build, CI, dependency, or tooling maintenance v0.0.62 Release target

Projects

None yet

Development

Successfully merging this pull request may close these issues.

3 participants