From cff643136a3e5559750da364184b95faf6edbca2 Mon Sep 17 00:00:00 2001 From: rUv Date: Wed, 31 Dec 2025 15:17:35 +0000 Subject: [PATCH] fix: robust sessionEnd with full data structure validation (v0.1.68) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - Check this.data exists before accessing properties - Initialize trajectories array if missing - Add try/catch around engine and save operations - Null-check trajectory objects in filter 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 --- .../ruvector/.ruvector/intelligence.json | 7 ++--- npm/packages/ruvector/bin/cli.js | 27 ++++++++++++++----- npm/packages/ruvector/package.json | 2 +- 3 files changed, 26 insertions(+), 10 deletions(-) diff --git a/npm/packages/ruvector/.ruvector/intelligence.json b/npm/packages/ruvector/.ruvector/intelligence.json index 0e7d1450..e79e50a5 100644 --- a/npm/packages/ruvector/.ruvector/intelligence.json +++ b/npm/packages/ruvector/.ruvector/intelligence.json @@ -127,7 +127,8 @@ "total_memories": 0, "total_trajectories": 0, "total_errors": 0, - "session_count": 0, - "last_session": 0 - } + "session_count": 1, + "last_session": 1767194227 + }, + "trajectories": [] } \ No newline at end of file diff --git a/npm/packages/ruvector/bin/cli.js b/npm/packages/ruvector/bin/cli.js index b8187255..38a05b41 100755 --- a/npm/packages/ruvector/bin/cli.js +++ b/npm/packages/ruvector/bin/cli.js @@ -2609,22 +2609,37 @@ class Intelligence { } sessionEnd() { - // Ensure stats exists with defaults + // Ensure data structure exists with defaults + if (!this.data) { + this.data = { patterns: {}, memories: [], trajectories: [], errors: [], agents: {}, edges: [], stats: {} }; + } 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 }; } + if (!this.data.trajectories) { + this.data.trajectories = []; + } + 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; + const actions = this.data.trajectories.filter(t => t && t.timestamp >= lastSession).length; // Force learning cycle (only if engine already initialized) - const eng = this.getEngineIfReady(); - if (eng) { - eng.forceLearn(); + try { + const eng = this.getEngineIfReady(); + if (eng) { + eng.forceLearn(); + } + } catch (e) { + // Ignore engine errors on session end } // Save all data - this.save(); + try { + this.save(); + } catch (e) { + // Ignore save errors on session end + } return { duration, actions }; } diff --git a/npm/packages/ruvector/package.json b/npm/packages/ruvector/package.json index ecc297d1..6b04930b 100644 --- a/npm/packages/ruvector/package.json +++ b/npm/packages/ruvector/package.json @@ -1,6 +1,6 @@ { "name": "ruvector", - "version": "0.1.67", + "version": "0.1.68", "description": "High-performance vector database for Node.js with automatic native/WASM fallback", "main": "dist/index.js", "types": "dist/index.d.ts",