mirror of
https://github.com/NousResearch/hermes-agent.git
synced 2026-07-31 19:16:29 +00:00
refactor(desktop): extract app-version IPC from main.cjs into version-ipc.cjs
Ninth main.cjs cluster peel. The hermes:version handler moves verbatim into
electron/version-ipc.cjs behind a registerVersionIpc({ ipcMain,
resolveHermesVersion, resolveUpdateRoot }) registrar. The version + root resolvers
stay in the main process (shared with the About menu) and are injected.
Channel name unchanged → preload + renderer untouched. Adds
electron/version-ipc.test.cjs (surface + payload behavior).
This commit is contained in:
parent
150e023fe2
commit
9d19cfbb78
3 changed files with 61 additions and 7 deletions
|
|
@ -63,6 +63,7 @@ const { registerLogsIpc } = require('./logs-ipc.cjs')
|
|||
const { registerProjectDirIpc } = require('./project-dir-ipc.cjs')
|
||||
const { registerVscodeThemeIpc } = require('./vscode-theme-ipc.cjs')
|
||||
const { registerUninstallIpc } = require('./uninstall-ipc.cjs')
|
||||
const { registerVersionIpc } = require('./version-ipc.cjs')
|
||||
const { OFFICIAL_REPO_HTTPS_URL, isOfficialSshRemote } = require('./update-remote.cjs')
|
||||
const { resolveBehindCount, shouldCountCommits } = require('./update-count.cjs')
|
||||
const { runRebuildWithRetry } = require('./update-rebuild.cjs')
|
||||
|
|
@ -6929,13 +6930,8 @@ function showAboutPanelFresh() {
|
|||
app.showAboutPanel()
|
||||
}
|
||||
|
||||
ipcMain.handle('hermes:version', async () => ({
|
||||
appVersion: resolveHermesVersion(),
|
||||
electronVersion: process.versions.electron,
|
||||
nodeVersion: process.versions.node,
|
||||
platform: process.platform,
|
||||
hermesRoot: resolveUpdateRoot()
|
||||
}))
|
||||
// App-version IPC lives in version-ipc.cjs; the version + root resolvers are injected.
|
||||
registerVersionIpc({ ipcMain, resolveHermesVersion, resolveUpdateRoot })
|
||||
|
||||
// ===========================================================================
|
||||
// Uninstall — remove the Chat GUI (and optionally the agent / user data).
|
||||
|
|
|
|||
17
apps/desktop/electron/version-ipc.cjs
Normal file
17
apps/desktop/electron/version-ipc.cjs
Normal file
|
|
@ -0,0 +1,17 @@
|
|||
'use strict'
|
||||
|
||||
// App-version IPC: report the canonical Hermes version (resolved from the source
|
||||
// tree, falling back to the Electron app version) alongside the Electron/Node
|
||||
// runtime versions + the resolved Hermes root. The version + root resolvers live
|
||||
// in the main process and are injected.
|
||||
function registerVersionIpc({ ipcMain, resolveHermesVersion, resolveUpdateRoot }) {
|
||||
ipcMain.handle('hermes:version', async () => ({
|
||||
appVersion: resolveHermesVersion(),
|
||||
electronVersion: process.versions.electron,
|
||||
nodeVersion: process.versions.node,
|
||||
platform: process.platform,
|
||||
hermesRoot: resolveUpdateRoot()
|
||||
}))
|
||||
}
|
||||
|
||||
module.exports = { registerVersionIpc }
|
||||
41
apps/desktop/electron/version-ipc.test.cjs
Normal file
41
apps/desktop/electron/version-ipc.test.cjs
Normal file
|
|
@ -0,0 +1,41 @@
|
|||
'use strict'
|
||||
|
||||
const assert = require('node:assert/strict')
|
||||
const test = require('node:test')
|
||||
|
||||
const { registerVersionIpc } = require('./version-ipc.cjs')
|
||||
|
||||
function fakeIpcMain() {
|
||||
const handlers = new Map()
|
||||
|
||||
return {
|
||||
handlers,
|
||||
handle(channel, handler) {
|
||||
assert.ok(!handlers.has(channel), `duplicate registration for ${channel}`)
|
||||
handlers.set(channel, handler)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
test('registerVersionIpc wires hermes:version to a handler fn', () => {
|
||||
const ipcMain = fakeIpcMain()
|
||||
|
||||
registerVersionIpc({ ipcMain, resolveHermesVersion: () => '1.2.3', resolveUpdateRoot: () => '/root' })
|
||||
|
||||
assert.deepEqual([...ipcMain.handlers.keys()], ['hermes:version'])
|
||||
assert.equal(typeof ipcMain.handlers.get('hermes:version'), 'function')
|
||||
})
|
||||
|
||||
test('version reports the resolved Hermes version + root alongside runtime versions', async () => {
|
||||
const ipcMain = fakeIpcMain()
|
||||
|
||||
registerVersionIpc({ ipcMain, resolveHermesVersion: () => '1.2.3', resolveUpdateRoot: () => '/root' })
|
||||
|
||||
const res = await ipcMain.handlers.get('hermes:version')({})
|
||||
|
||||
assert.equal(res.appVersion, '1.2.3')
|
||||
assert.equal(res.hermesRoot, '/root')
|
||||
assert.equal(res.electronVersion, process.versions.electron)
|
||||
assert.equal(res.nodeVersion, process.versions.node)
|
||||
assert.equal(res.platform, process.platform)
|
||||
})
|
||||
Loading…
Add table
Add a link
Reference in a new issue