Merge upstream b1f003e186 while preserving PM runtime ownership and
Python 3.14 worker startup, Windows signing, and macOS wait recovery.
Keep retired runtime modules deleted. Port upstream updater preflight
checks into the checkout strategy and preserve live build logging.
Carry checkpoint filename handling and process recovery into the current
module layout. Regenerate locks and adapt incoming platform test markers.
Focused Python and JavaScript tests, desktop and root-test typechecks,
conflict-path lint checks, lock validation, and retired-import checks pass.
The full test suite and packaged release builds were not run.
192 lines
9.1 KiB
JSON
192 lines
9.1 KiB
JSON
{
|
|
"name": "hermes",
|
|
"productName": "Hermes",
|
|
"private": true,
|
|
"version": "0.17.2",
|
|
"description": "Native desktop shell for Hermes Agent.",
|
|
"author": "Nous Research",
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "git+https://github.com/NousResearch/hermes-agent.git"
|
|
},
|
|
"type": "module",
|
|
"main": "dist/electron-main.mjs",
|
|
"engines": {
|
|
"node": "^22.22.0 || ^24.11.0 || >=26.0.0"
|
|
},
|
|
"scripts": {
|
|
"clean": "npm run clean:e2e && npm run clean:renderer && npm run clean:electron",
|
|
"clean:e2e": "tsc --build tsconfig.e2e.json --clean",
|
|
"clean:renderer": "tsc --build tsconfig.json --clean ",
|
|
"clean:electron": "tsc --build tsconfig.electron.json --clean",
|
|
"dev": "node ../../scripts/generate-icons.mjs && concurrently -k \"npm:dev:renderer\" \"npm:dev:electron\"",
|
|
"dev:fake-boot": "cross-env HERMES_DESKTOP_BOOT_FAKE=1 HERMES_DESKTOP_BOOT_FAKE_STEP_MS=650 npm run dev",
|
|
"dev:mock": "node ../../tests-js/scripts/mock-server.ts",
|
|
"dev:renderer": "node scripts/assert-root-install.mjs && npm run clean:renderer && vite --host 127.0.0.1 --port 5174",
|
|
"dev:electron": "tsc --build tsconfig.electron.json && wait-on http://127.0.0.1:5174 && node scripts/bundle-electron-main.mjs --dev && cross-env XCURSOR_SIZE=24 HERMES_DESKTOP_DEV_SERVER=http://127.0.0.1:5174 electron .",
|
|
"profile:main": "tsc --build tsconfig.electron.json && wait-on http://127.0.0.1:5174 && node scripts/bundle-electron-main.mjs --dev && cross-env XCURSOR_SIZE=24 HERMES_DESKTOP_DEV_SERVER=http://127.0.0.1:5174 electron --inspect=9229 .",
|
|
"profile:main:cpu": "tsc --build tsconfig.electron.json && wait-on http://127.0.0.1:5174 && node scripts/bundle-electron-main.mjs --dev && cross-env XCURSOR_SIZE=24 NODE_OPTIONS=--cpu-prof HERMES_DESKTOP_DEV_SERVER=http://127.0.0.1:5174 electron .",
|
|
"start": "npm run build && electron .",
|
|
"prebuild": "node ../../scripts/generate-icons.mjs && node scripts/assert-root-install.mjs && npm run clean",
|
|
"build": "node scripts/assert-root-install.mjs && node scripts/write-build-stamp.mjs && vite build && node scripts/bundle-electron-main.mjs && node scripts/stage-native-deps.mjs",
|
|
"postbuild": "node scripts/assert-dist-built.mjs",
|
|
"prebuilder": "node scripts/patch-electron-builder-mac-binary.mjs",
|
|
"builder": "cross-env NODE_OPTIONS=--max-old-space-size=16384 node scripts/run-electron-builder.mjs",
|
|
"pack": "npm run build && npm run builder -- --dir --publish never",
|
|
"dist": "npm run build && npm run builder",
|
|
"payload": "uv run --no-project python ../../scripts/bundles/stage.py --out build/agent-payload",
|
|
"dist:bundled": "npm run payload && cross-env HERMES_DESKTOP_VARIANT=bundled npm run dist",
|
|
"dist:mac": "npm run build && npm run builder -- --mac",
|
|
"dist:mac:dmg": "npm run build && npm run builder -- --mac dmg",
|
|
"dist:mac:zip": "npm run build && npm run builder -- --mac zip",
|
|
"dist:win": "npm run build && npm run builder -- --win msix",
|
|
"dist:win:msix": "npm run build && npm run builder -- --win msix",
|
|
"dist:linux": "npm run build && npm run builder -- --linux AppImage deb rpm",
|
|
"perf": "node scripts/perf/run.mjs",
|
|
"update:shim": "bash ../../scripts/desktop-update/repro.sh shim",
|
|
"update:shim:fail": "bash ../../scripts/desktop-update/repro.sh shim-fail",
|
|
"update:repro:fresh": "bash ../../scripts/desktop-update/repro.sh fresh",
|
|
"update:repro:behind": "bash ../../scripts/desktop-update/repro.sh behind",
|
|
"update:repro:error": "bash ../../scripts/desktop-update/repro.sh error",
|
|
"update:repro:gate": "bash ../../scripts/desktop-update/repro.sh gate",
|
|
"update:repro:launch": "bash ../../scripts/desktop-update/repro.sh launch",
|
|
"perf:serve": "node scripts/perf/serve.mjs",
|
|
"test:desktop": "node scripts/test-desktop.mjs",
|
|
"test:desktop:all": "node scripts/test-desktop.mjs all",
|
|
"test:desktop:dmg": "node scripts/test-desktop.mjs dmg",
|
|
"test:desktop:msix": "node scripts/test-desktop.mjs msix",
|
|
"test:desktop:existing": "node scripts/test-desktop.mjs existing",
|
|
"test:desktop:fresh": "node scripts/test-desktop.mjs fresh",
|
|
"test:desktop:lifecycle": "node scripts/test-desktop.mjs lifecycle",
|
|
"typecheck": "tsc -p . --noEmit && tsc -p tsconfig.electron.json --noEmit && tsc -p tsconfig.e2e.json --noEmit && tsc --ignoreConfig --allowJs --checkJs --noEmit --skipLibCheck --module nodenext --moduleResolution nodenext --target es2022 electron-builder.config.cjs",
|
|
"lint": "eslint src/ electron/",
|
|
"lint:fix": "eslint src/ electron/ --fix",
|
|
"fmt": "prettier --write 'src/**/*.{ts,tsx}' 'electron/**/*.ts' 'vite.config.ts'",
|
|
"fix": "npm run lint:fix && npm run fmt",
|
|
"test:ui": "vitest run --project ui",
|
|
"test:task-scroll": "node --test scripts/tasks-scroll.test.mjs",
|
|
"test:desktop:platforms": "vitest run --project electron",
|
|
"test:find-in-page-native": "electron electron/find-in-page-native-fixture",
|
|
"test": "vitest run",
|
|
"preview": "node scripts/assert-root-install.mjs && vite preview --host 127.0.0.1 --port 4174",
|
|
"check:test:ui": "npm run test:ui",
|
|
"check:test:desktop:platforms": "npm run test:desktop:platforms",
|
|
"check:test:desktop:all": "npm run test:desktop:all",
|
|
"check:lint": "npm run typecheck && npm run lint",
|
|
"check": "npm run check:lint && npm run test:ui && npm run test:desktop:platforms && npm run test:desktop:all",
|
|
"test:e2e": "npm run build && playwright test e2e/",
|
|
"test:e2e:visual": "npm run build && WLR_BACKENDS=headless WLR_NO_HARDWARE_CURSORS=1 cage -- npx playwright test e2e/ --reporter=list",
|
|
"test:e2e:update-snapshots": "npm run build && WLR_BACKENDS=headless WLR_NO_HARDWARE_CURSORS=1 cage -- npx playwright test e2e/ --reporter=list --update-snapshots",
|
|
"repro:short-session-hang": "node scripts/run-short-session-hang-repro.mjs",
|
|
"repro:short-session-hang:test": "node --test scripts/run-short-session-hang-repro.test.mjs"
|
|
},
|
|
"dependencies": {
|
|
"@assistant-ui/core": "0.2.23",
|
|
"@assistant-ui/react": "0.14.24",
|
|
"@assistant-ui/react-streamdown": "0.3.5",
|
|
"@audiowave/react": "0.6.2",
|
|
"@chenglou/pretext": "0.0.6",
|
|
"@codemirror/commands": "6.10.4",
|
|
"@codemirror/language": "6.12.4",
|
|
"@codemirror/language-data": "6.5.2",
|
|
"@codemirror/state": "6.7.1",
|
|
"@codemirror/view": "6.43.6",
|
|
"@dnd-kit/core": "6.3.1",
|
|
"@dnd-kit/sortable": "10.0.0",
|
|
"@dnd-kit/utilities": "3.2.2",
|
|
"@hermes/shared": "file:../shared",
|
|
"@icons-pack/react-simple-icons": "13.11.1",
|
|
"@lezer/highlight": "1.2.3",
|
|
"@nanostores/react": "1.1.0",
|
|
"@nous-research/ui": "0.18.2",
|
|
"@streamdown/code": "1.1.1",
|
|
"@streamdown/math": "1.0.2",
|
|
"@tabler/icons-react": "3.44.0",
|
|
"@tailwindcss/typography": "0.5.20",
|
|
"@tailwindcss/vite": "4.3.3",
|
|
"@tanstack/react-query": "5.101.2",
|
|
"@tanstack/react-virtual": "3.14.6",
|
|
"@vscode/codicons": "0.0.45",
|
|
"@xterm/addon-fit": "0.11.0",
|
|
"@xterm/addon-serialize": "0.14.0",
|
|
"@xterm/addon-unicode11": "0.9.0",
|
|
"@xterm/addon-web-links": "0.12.0",
|
|
"@xterm/addon-webgl": "0.19.0",
|
|
"@xterm/xterm": "6.0.0",
|
|
"blobatar": "2.0.0",
|
|
"class-variance-authority": "0.7.1",
|
|
"clsx": "2.1.1",
|
|
"cmdk": "1.1.1",
|
|
"d3-force": "3.0.0",
|
|
"dnd-core": "14.0.1",
|
|
"dompurify": "3.4.13",
|
|
"driver.js": "1.8.0",
|
|
"electron-updater": "6.8.9",
|
|
"emojibase-data": "16.0.3",
|
|
"fflate": "0.8.3",
|
|
"frimousse": "0.3.0",
|
|
"hast-util-from-html-isomorphic": "2.0.0",
|
|
"hast-util-to-text": "4.0.2",
|
|
"ignore": "7.0.6",
|
|
"katex": "0.16.47",
|
|
"mermaid": "11.16.1",
|
|
"motion": "12.42.2",
|
|
"nanostores": "1.4.2",
|
|
"node-pty": "1.1.0",
|
|
"radix-ui": "1.6.7",
|
|
"react": "19.2.7",
|
|
"react-arborist": "3.13.2",
|
|
"react-dnd-html5-backend": "14.1.0",
|
|
"react-dom": "19.2.7",
|
|
"react-router": "8.3.0",
|
|
"react-shiki": "0.9.3",
|
|
"remark-math": "6.0.0",
|
|
"remend": "1.3.0",
|
|
"shiki": "4.3.1",
|
|
"simple-git": "3.36.0",
|
|
"streamdown": "2.5.0",
|
|
"tailwind-merge": "3.6.0",
|
|
"tailwindcss": "4.3.3",
|
|
"tw-shimmer": "0.4.12",
|
|
"unicode-animations": "1.0.3",
|
|
"unified": "11.0.5",
|
|
"unist-util-visit-parents": "6.0.2",
|
|
"use-stick-to-bottom": "1.1.6",
|
|
"vfile": "6.0.3",
|
|
"web-haptics": "0.0.6"
|
|
},
|
|
"optionalDependencies": {
|
|
"get-windows": "9.3.0"
|
|
},
|
|
"devDependencies": {
|
|
"@babel/core": "8.0.1",
|
|
"@electron/rebuild": "4.2.0",
|
|
"@playwright/test": "1.62.1",
|
|
"@rolldown/plugin-babel": "0.2.3",
|
|
"@testing-library/dom": "10.4.1",
|
|
"@testing-library/react": "16.3.2",
|
|
"@types/babel__core": "7.20.5",
|
|
"@types/d3-force": "3.0.10",
|
|
"@types/hast": "3.0.5",
|
|
"@types/node": "22.20.1",
|
|
"@types/react": "19.2.17",
|
|
"@types/react-dom": "19.2.3",
|
|
"@vitejs/plugin-react": "6.0.3",
|
|
"babel-plugin-react-compiler": "1.0.0",
|
|
"bippy": "0.5.43",
|
|
"concurrently": "10.0.4",
|
|
"cross-env": "10.1.0",
|
|
"electron": "40.10.2",
|
|
"electron-builder": "27.0.0-alpha.6",
|
|
"esbuild": "0.28.1",
|
|
"jsdom": "29.1.1",
|
|
"prettier": "3.9.5",
|
|
"rcedit": "5.0.2",
|
|
"tsx": "4.23.1",
|
|
"typescript": "6.0.3",
|
|
"vite": "8.2.0",
|
|
"vitest": "4.1.10",
|
|
"wait-on": "9.0.10"
|
|
}
|
|
}
|