Collects login data for your virtual machines and reports them to your VMPower account. Read the documentation here.
These are the instructions for developing this package. Only follow these if you need to make a change to the agent.
Use Node 18.20.8 with npm 10, or Node 24.22.1 with npm 11, for the validated development toolchain. npm must support the scoped dependency override; do not regenerate this lock with npm 6. The agent's runtime dependency ranges and application version are unchanged. The process readers now return explicit errors when collection fails, as covered below.
# Install dependencies
npm ci --legacy-peer-deps --ignore-scripts --no-audit --no-fund
# Transpile the code
npm run build
# Run the CLI
node build/index.js# Runs flow typechecks
npm run flow
# Runs the functional test suite
npm run test
# Runs the CI checks. Do this before a PR
npm run ci_validateJest 27 explicitly retains the previous jsdom test environment. node-notifier
remains an explicit development peer so optional test notifications are still
available; only its UUID dependency is pinned to the patched CommonJS release.
The regression tests exercise that actual caller with pipe creation and command
execution mocked, plus UUID bounds, JSON5 inheritance, multipart serialization,
Babel evaluation, and the real Windows run-query module. Query tests must
import run-query, assert the query user command, and distinguish Windows
exit code 1 from errors; tests of run-last do not establish that behavior.
The unchanged Flow 0.124 executable is x86_64 on macOS and cannot start on an
ARM Mac without a supported runtime. npm run flow now runs the full foreground
flow check --max-workers 2; it does not start the default background server.
A passing build, lint and functional suite does not replace ci_validate.
The Linux source-qualification job runs that complete command with a timeout,
separate Flow temporary directory, and cleanup on success, failure or signal.
No Flow ignores or tests are removed. Keep dependency updates at least seven
days old and verify their public registry dates and integrity before accepting
a new lock.
Branch pushes and pull requests to master run the GitHub Linux source-qualification
job on Node 24.22.1. A supported-host push check can qualify Flow before opening
the PR when the local architecture cannot run its pinned executable. The job
checks out the exact source head and installs the lock without package scripts or audit uploads,
then runs build, lint, full Flow and functional tests in a container with no
network. A real transport negative control verifies that namespace before
testing. Tests additionally deny Node transports and machine agent-config
reads; notification pipes, processes and provider calls remain synthetic.
Drone's ordinary branch pushes, pull requests and master merges run only the
modern source-validation step. Every legacy packaging and Azure publishing
step requires both the tag event and a refs/tags/v* reference. A release tag
is an explicit binary-delivery event; do not create one as part of source
integration. This follows Drone's combined event/ref conditions.
The legacy Node 10/nexe/Chocolatey distribution steps are retained, but remain
unqualified and must be modernized and tested before binary delivery. Node 10
cannot parse the new development UUID dependency and npm 6 ignores overrides;
a failed build is never a publishing safeguard.
Process-reader tests emit real EventEmitter data, error and close events.
They cover stderr diagnostics, spawn and stream failures, signal termination,
and the reporting caller: failed collection must return a nonempty error and
must not send partial login data. Successful payloads and the Windows query
exit-one no-user result remain covered. The full functional suite has 55 tests.
These checks do not run an installed customer agent. Windows/Linux installer, service lifecycle, and actual user-session behavior require separate delivery validation; synthetic process and transport tests do not establish those results.