Skip to content

Standalone Executable#2737

Open
rinatkhaziev wants to merge 10 commits intotrunkfrom
sea
Open

Standalone Executable#2737
rinatkhaziev wants to merge 10 commits intotrunkfrom
sea

Conversation

@rinatkhaziev
Copy link
Contributor

@rinatkhaziev rinatkhaziev commented Feb 12, 2026

Description

This depends on #2736 to be merged first. This is the first pass on shipping a standalone executable (no need to download Node and such).

The next pass is actually code-signing the executables so that they can be ran on all supported platforms.

Pull request checklist

New release checklist

Steps to Test

Outline the steps to test and verify the PR here.

Example:

  1. Check out PR.
  2. Run npm run build
  3. Run ./dist/bin/vip-cookies.js nom
  4. Verify cookies are delicious.

@rinatkhaziev rinatkhaziev changed the title Standalone Executables Standalone Executable Feb 12, 2026
Copy link
Contributor

Copilot AI left a comment

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

This PR introduces first-pass support for distributing VIP-CLI as a standalone Node SEA executable, including runtime dependency extraction, internal command dispatch, and updates to dev-env/Lando loading to work in SEA mode.

Changes:

  • Add SEA runtime preparation (embedded node_modules archive extraction) and internal-bin dispatch for standalone execution.
  • Refactor Lando/dev-env module loading to resolve from the SEA runtime filesystem when applicable, and add readiness polling for dev-env start/exec.
  • Add SEA build tooling (helpers/build-sea.js, npm run build:sea), CI workflow for building/signing artifacts, and supporting documentation/runbooks.

Reviewed changes

Copilot reviewed 19 out of 23 changed files in this pull request and generated 2 comments.

Show a summary per file
File Description
src/lib/dev-environment/lando-loader.ts Adds SEA-aware require/resolve for loading Lando modules from extracted runtime deps.
src/lib/dev-environment/dev-environment-lando.ts Switches direct Lando imports to SEA-aware lazy loaders; logs runtime mode in dev-env log banner.
src/lib/dev-environment/dev-environment-core.ts Loads template assets from SEA when available; adds bounded readiness checks + one retry after start/rebuild.
src/lib/dev-environment/dev-environment-cli.ts Loads Lando formatter module via SEA-aware loader.
src/lib/cli/sea-runtime.js Extracts embedded node_modules archive and amends module resolution for SEA runtime.
src/lib/cli/sea-dispatch.js Resolves internal bins from argv and rewrites argv for internal execution under SEA.
src/lib/cli/runtime-mode.ts Adds runtime-mode detection and label for diagnostics/logging.
src/lib/cli/internal-bin-loader.js Adds internal bin dynamic import map for SEA-mode dispatch.
src/lib/cli/exit.ts Includes runtime mode label in debug output.
src/lib/cli/config.ts Ensures a default publish config is always available via JSON import (SEA-friendly).
src/lib/cli/command.js Commander-backed args compatibility wrapper + SEA-aware subcommand execution path; update-notifier disabled in SEA mode.
src/commands/dev-env-sync-sql.ts Type-only import tweak for Lando.
src/bin/vip.js Adds SEA target-bin dispatch and makes command argv handling async.
src/bin/vip-sea.js New SEA entrypoint to prep runtime FS and set dispatch env vars before importing vip.
src/bin/vip-dev-env-exec.js Adds bounded readiness polling before failing “env not running”.
helpers/build-sea.js Adds SEA build script to bundle CLI, generate blob, inject into Node, and emit executable.
docs/SEA-BUILD-SIGNING.md Adds build/signing runbook for macOS/Linux/Windows (+ WSL notes).
docs/COMMANDER-MIGRATION.md Adds migration status and verification guidance.
AGENTS.md / CLAUDE.md Adds contributor/agent guidance and pointers to SEA docs.
.github/workflows/sea-build-sign.yml Adds workflow to build SEA artifacts across platforms and optionally sign them.
package.json / npm-shrinkwrap.json Adds build:sea, introduces esbuild + postject, replaces args with commander.
Files not reviewed (1)
  • npm-shrinkwrap.json: Language not supported

rinatkhaziev and others added 2 commits February 12, 2026 20:29
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
Co-authored-by: Copilot <175728472+Copilot@users.noreply.github.com>
@sonarqubecloud
Copy link

Quality Gate Failed Quality Gate failed

Failed conditions
1 Security Hotspot

See analysis details on SonarQube Cloud

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant