nexo-brain 5.3.16 → 5.3.17

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.3.16",
3
+ "version": "5.3.17",
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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nexo-brain",
3
- "version": "5.3.16",
3
+ "version": "5.3.17",
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",
@@ -1512,18 +1512,27 @@ def _auto_update_check_locked() -> dict:
1512
1512
  except Exception as e:
1513
1513
  _log(f"Doctor plugin backfill error: {e}")
1514
1514
 
1515
- # Backfill script/skill templates for existing installs
1515
+ # Backfill all templates for existing installs (no hardcoded list)
1516
1516
  try:
1517
1517
  templates_src = REPO_DIR / "templates"
1518
1518
  templates_dest = NEXO_HOME / "templates"
1519
1519
  templates_dest.mkdir(parents=True, exist_ok=True)
1520
- for fname in ("script-template.py", "nexo_helper.py", "skill-template.md", "skill-script-template.py"):
1521
- src_file = templates_src / fname
1522
- dest_file = templates_dest / fname
1523
- if src_file.is_file() and (not dest_file.exists() or src_file.stat().st_mtime > dest_file.stat().st_mtime):
1524
- import shutil
1525
- shutil.copy2(str(src_file), str(dest_file))
1526
- _log(f"Backfilled template {fname}")
1520
+ import shutil
1521
+ if templates_src.is_dir():
1522
+ for item in templates_src.iterdir():
1523
+ if item.name == "__pycache__":
1524
+ continue
1525
+ dest_item = templates_dest / item.name
1526
+ if item.is_file():
1527
+ if not dest_item.exists() or item.stat().st_mtime > dest_item.stat().st_mtime:
1528
+ shutil.copy2(str(item), str(dest_item))
1529
+ elif item.is_dir():
1530
+ dest_item.mkdir(parents=True, exist_ok=True)
1531
+ for sub in item.iterdir():
1532
+ if sub.is_file():
1533
+ dest_sub = dest_item / sub.name
1534
+ if not dest_sub.exists() or sub.stat().st_mtime > dest_sub.stat().st_mtime:
1535
+ shutil.copy2(str(sub), str(dest_sub))
1527
1536
  except Exception as e:
1528
1537
  _log(f"Template backfill error: {e}")
1529
1538
 
@@ -1888,8 +1897,16 @@ def _copy_runtime_from_source(src_dir: Path, repo_dir: Path, dest: Path = NEXO_H
1888
1897
  if templates_src.is_dir():
1889
1898
  templates_dest.mkdir(parents=True, exist_ok=True)
1890
1899
  for item in templates_src.iterdir():
1900
+ if item.name == "__pycache__":
1901
+ continue
1891
1902
  if item.is_file():
1892
1903
  shutil.copy2(str(item), str(templates_dest / item.name))
1904
+ elif item.is_dir():
1905
+ sub_dest = templates_dest / item.name
1906
+ sub_dest.mkdir(parents=True, exist_ok=True)
1907
+ for sub in item.iterdir():
1908
+ if sub.is_file():
1909
+ shutil.copy2(str(sub), str(sub_dest / sub.name))
1893
1910
 
1894
1911
  package_json = repo_dir / "package.json"
1895
1912
  if package_json.is_file():