From 64cec0edcad1f9a906ee6fd60ed20453c2c569f2 Mon Sep 17 00:00:00 2001 From: Ben Hardill Date: Mon, 22 Jun 2026 10:04:16 +0100 Subject: [PATCH 1/2] Send NodeJS version to forge app fixes #651 --- lib/agent.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/lib/agent.js b/lib/agent.js index 3d465883..b6dc26b5 100644 --- a/lib/agent.js +++ b/lib/agent.js @@ -276,7 +276,8 @@ class Agent { snapshotRestartCount: this.launcher?.restartCount || 0 }, agentVersion: this.config.version, - licensed: this.config.licensed + licensed: this.config.licensed, + nodejsVersion: process.version } if (this.launcher?.readPackage) { if (!this.config.moduleCache) { From e9184cfa8a6795e61280bf121144c1bd2214b81b Mon Sep 17 00:00:00 2001 From: Ben Hardill Date: Mon, 22 Jun 2026 10:44:14 +0100 Subject: [PATCH 2/2] add test --- test/unit/lib/agent_spec.js | 23 +++++++++++++++++++++++ 1 file changed, 23 insertions(+) diff --git a/test/unit/lib/agent_spec.js b/test/unit/lib/agent_spec.js index 25fc2eec..2c9b115f 100644 --- a/test/unit/lib/agent_spec.js +++ b/test/unit/lib/agent_spec.js @@ -658,6 +658,29 @@ describe('Agent', function () { // now that state has been retrieved, reportPackages should be reset to false agent.mqttClient.reportPackages.should.be.false() }) + it('includes NodeJS version', async function () { + const agent = createMQTTAgent() + agent.launcher = Launcher.newLauncher() + agent.launcher.readPackage = sinon.stub().returns({ + modules: { + 'node-red': '5.0.0' + } + }) + agent.launcher.reportPackages = sinon.stub().returns({ + packageList: { + 'node-red-node-random': '1.0.0', + 'node-red-contrib-other': '1.2.3' + }, + moduleCache: 'xyz' + }) + await agent.start() + + agent.mqttClient.reportPackages = true + + // Call getState and validate results + const state = agent.getState() + state.should.have.property('nodejsVersion', process.version) + }) }) describe('setState', function () {