From 3b99b3efb712d64bac047e8423be2aad3ef21323 Mon Sep 17 00:00:00 2001 From: rUv Date: Wed, 31 Dec 2025 15:15:45 +0000 Subject: [PATCH] fix: handle undefined stats in sessionEnd (v0.1.67) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Add defensive check for this.data.stats - Initialize with defaults if missing - Fixes "Cannot read properties of undefined (reading 'last_session')" 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- npm/packages/ruvector/.ruvector/intelligence.json | 8 ++++++++ npm/packages/ruvector/bin/cli.js | 9 +++++++-- npm/packages/ruvector/package.json | 2 +- 3 files changed, 16 insertions(+), 3 deletions(-) diff --git a/npm/packages/ruvector/.ruvector/intelligence.json b/npm/packages/ruvector/.ruvector/intelligence.json index b84a6a9b3..0e7d14509 100644 --- a/npm/packages/ruvector/.ruvector/intelligence.json +++ b/npm/packages/ruvector/.ruvector/intelligence.json @@ -121,5 +121,13 @@ "rewardHistory": [ 1 ] + }, + "stats": { + "total_patterns": 0, + "total_memories": 0, + "total_trajectories": 0, + "total_errors": 0, + "session_count": 0, + "last_session": 0 } } \ No newline at end of file diff --git a/npm/packages/ruvector/bin/cli.js b/npm/packages/ruvector/bin/cli.js index 7ab4903e0..b8187255f 100755 --- a/npm/packages/ruvector/bin/cli.js +++ b/npm/packages/ruvector/bin/cli.js @@ -2609,8 +2609,13 @@ class Intelligence { } sessionEnd() { - const duration = this.now() - (this.sessionStartTime || this.data.stats.last_session); - const actions = this.data.trajectories.filter(t => t.timestamp >= this.data.stats.last_session).length; + // Ensure stats exists with defaults + if (!this.data.stats) { + this.data.stats = { total_patterns: 0, total_memories: 0, total_trajectories: 0, total_errors: 0, session_count: 0, last_session: 0 }; + } + const lastSession = this.data.stats.last_session || 0; + const duration = this.now() - (this.sessionStartTime || lastSession); + const actions = (this.data.trajectories || []).filter(t => t.timestamp >= lastSession).length; // Force learning cycle (only if engine already initialized) const eng = this.getEngineIfReady(); diff --git a/npm/packages/ruvector/package.json b/npm/packages/ruvector/package.json index c067465da..ecc297d17 100644 --- a/npm/packages/ruvector/package.json +++ b/npm/packages/ruvector/package.json @@ -1,6 +1,6 @@ { "name": "ruvector", - "version": "0.1.66", + "version": "0.1.67", "description": "High-performance vector database for Node.js with automatic native/WASM fallback", "main": "dist/index.js", "types": "dist/index.d.ts",