nexo-brain 5.0.1 → 5.0.2

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.
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nexo-brain",
3
- "version": "5.0.1",
3
+ "version": "5.0.2",
4
4
  "description": "Local cognitive runtime for Claude Code \u2014 persistent memory, overnight learning, doctor diagnostics, personal scripts, recovery-aware jobs, startup preflight, and optional dashboard/power helper.",
5
5
  "author": {
6
6
  "name": "NEXO Brain",
package/README.md CHANGED
@@ -87,6 +87,11 @@ Versions `3.1.7` through `3.2.0` close the recent-memory gap:
87
87
  - when even that misses, NEXO now exposes raw transcript fallback tools for Claude Code and Codex session stores
88
88
  - NEXO can now inspect itself through a live system catalog derived from canonical sources instead of relying only on stale docs or operator memory
89
89
 
90
+ Version `5.0.2` closes the small post-5.0.1 doctor drift:
91
+
92
+ - deep doctor now reads the live `learnings` schema correctly whether the install uses `status` or the older `archived` flag
93
+ - a real upgraded runtime was revalidated with `nexo update`, `nexo doctor --tier deep`, `nexo doctor --tier all`, and a fresh Claude Code startup smoke
94
+
90
95
  Version `5.0.1` hardens the live 5.0 upgrade path:
91
96
 
92
97
  - managed Claude Code hooks are now cleaned up when an older release left obsolete core-managed entries behind
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nexo-brain",
3
- "version": "5.0.1",
3
+ "version": "5.0.2",
4
4
  "mcpName": "io.github.wazionapps/nexo",
5
5
  "description": "NEXO Brain — Shared brain for AI agents. Persistent memory, semantic RAG, natural forgetting, metacognitive guard, trust scoring, 150+ MCP tools. Works with Claude Code, Codex, Claude Desktop & any MCP client. 100% local, free.",
6
6
  "homepage": "https://nexo-brain.com",
@@ -264,7 +264,20 @@ def check_learning_count() -> DoctorCheck:
264
264
  severity="info",
265
265
  summary="No learnings table yet",
266
266
  )
267
- count = conn.execute("SELECT COUNT(*) FROM learnings WHERE archived=0").fetchone()[0]
267
+ columns = {
268
+ row[1]
269
+ for row in conn.execute("PRAGMA table_info(learnings)").fetchall()
270
+ }
271
+ if "status" in columns:
272
+ count = conn.execute(
273
+ "SELECT COUNT(*) FROM learnings WHERE COALESCE(status, 'active') != 'archived'"
274
+ ).fetchone()[0]
275
+ elif "archived" in columns:
276
+ count = conn.execute(
277
+ "SELECT COUNT(*) FROM learnings WHERE archived=0"
278
+ ).fetchone()[0]
279
+ else:
280
+ count = conn.execute("SELECT COUNT(*) FROM learnings").fetchone()[0]
268
281
  finally:
269
282
  conn.close()
270
283
  return DoctorCheck(
@@ -272,15 +285,16 @@ def check_learning_count() -> DoctorCheck:
272
285
  tier="deep",
273
286
  status="healthy",
274
287
  severity="info",
275
- summary=f"{count} active learnings in memory",
288
+ summary=f"{count} non-archived learnings in memory",
276
289
  )
277
290
  except Exception as e:
278
291
  return DoctorCheck(
279
292
  id="deep.learning_count",
280
293
  tier="deep",
281
- status="healthy",
282
- severity="info",
283
- summary=f"Learning check skipped: {e}",
294
+ status="degraded",
295
+ severity="warn",
296
+ summary=f"Learning check unreadable: {e}",
297
+ evidence=[str(e)],
284
298
  )
285
299
 
286
300