@mclean-capital/neura 2.1.7 → 2.2.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -74,10 +74,17 @@ Trade-offs you should know about on Windows:
74
74
 
75
75
  ```bash
76
76
  neura update
77
- # equivalent to: npm install -g @mclean-capital/neura@latest && neura restart
78
77
  ```
79
78
 
80
- The `neura update` command runs `npm install -g @mclean-capital/neura@latest` and restarts the core service so the new version takes effect.
79
+ **Always use `neura update`** to upgrade. It stops the running core before calling `npm install -g @mclean-capital/neura@latest` so the old core's native binaries (`onnxruntime_binding.node`, `onnxruntime.dll`) aren't file-locked when npm tries to replace them. After the install completes it re-registers the service and starts the new core automatically.
80
+
81
+ **Do not run `npm install -g @mclean-capital/neura` directly while the core is running.** On Windows, the running core holds exclusive file locks on its loaded native binaries, and npm will emit noisy `EPERM: operation not permitted` warnings when it can't clean up the temp directory it swapped out. The install still succeeds but the warnings are alarming and the old core stays running on the port through the upgrade, which can confuse the re-registration step. If you need to install manually for any reason, stop the core first:
82
+
83
+ ```bash
84
+ neura stop
85
+ npm install -g @mclean-capital/neura@latest
86
+ neura install # re-registers service, starts new core
87
+ ```
81
88
 
82
89
  ### Upgrading from v1.10.x or earlier
83
90
 
@@ -70634,7 +70634,15 @@ function attachWebSocket(httpServer2, services2) {
70634
70634
  const presence = new PresenceManager({
70635
70635
  onActivate: (wakeTranscript) => void activateVoiceSession(wakeTranscript),
70636
70636
  onDeactivate: () => deactivateVoiceSession(),
70637
- onStateChange: (state) => send({ type: "presenceState", state })
70637
+ onStateChange: (state) => send({
70638
+ type: "presenceState",
70639
+ state,
70640
+ // Tell the client whether wake-word detection is available so
70641
+ // it can show the right banner in passive mode. `wakeDetector`
70642
+ // is null if the ONNX models failed to load on connection start
70643
+ // (missing files, wrong assistant name, onnxruntime failure).
70644
+ wakeDetection: wakeDetector ? "active" : "disabled"
70645
+ })
70638
70646
  });
70639
70647
  connectedClients.set(ws, {
70640
70648
  send,