nexo-brain 7.15.1 → 7.15.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.
- package/.claude-plugin/plugin.json +1 -1
- package/README.md +3 -1
- package/package.json +1 -1
- package/src/doctor/providers/runtime.py +16 -7
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nexo-brain",
|
|
3
|
-
"version": "7.15.
|
|
3
|
+
"version": "7.15.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
|
@@ -18,7 +18,9 @@
|
|
|
18
18
|
|
|
19
19
|
[Watch the overview video](https://nexo-brain.com/watch/) · [Watch on YouTube](https://www.youtube.com/watch?v=i2lkGhKyVqI) · [Open the infographic](https://nexo-brain.com/assets/nexo-brain-infographic-v5.png)
|
|
20
20
|
|
|
21
|
-
Version `7.15.
|
|
21
|
+
Version `7.15.2` is the current packaged-runtime line. Patch release over v7.15.1 - Brain treats normal Codex startup context reads of calibration and project atlas files as healthy bootstrap activity instead of conditioned-file drift.
|
|
22
|
+
|
|
23
|
+
Previously in `7.15.1`: patch release over v7.15.0 - Brain drains larger self-audit clusters, bounds hook history with update-time cleanup, filters normal Codex bootstrap reads, routes email-monitor effort by message complexity, and locks morning briefings by local date and recipient.
|
|
22
24
|
|
|
23
25
|
Previously in `7.15.0`: minor release — Brain unifies sent-email continuity across send paths, moves cognitive recall to multilingual embeddings, forces tagged learnings into context, hardens email loop guards and headless runners, exposes learning creation dates, and adds AUTO-N burst postmortems.
|
|
24
26
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "nexo-brain",
|
|
3
|
-
"version": "7.15.
|
|
3
|
+
"version": "7.15.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",
|
|
@@ -503,14 +503,18 @@ def _extract_declared_file_targets(args: dict, cwd: str) -> set[str]:
|
|
|
503
503
|
return resolved
|
|
504
504
|
|
|
505
505
|
|
|
506
|
-
|
|
506
|
+
_CODEX_BOOTSTRAP_READ_EXEMPT_FILENAMES = {"calibration.json", "project-atlas.json"}
|
|
507
507
|
|
|
508
508
|
|
|
509
|
-
def
|
|
510
|
-
|
|
509
|
+
def _is_codex_bootstrap_runtime_read_exempt(
|
|
510
|
+
touched: str,
|
|
511
|
+
operation: str,
|
|
512
|
+
bootstrap_context_phase: bool,
|
|
513
|
+
) -> bool:
|
|
514
|
+
if not bootstrap_context_phase or operation != "read":
|
|
511
515
|
return False
|
|
512
516
|
normalized = _normalize_path_token(touched)
|
|
513
|
-
if Path(normalized).name not in
|
|
517
|
+
if Path(normalized).name not in _CODEX_BOOTSTRAP_READ_EXEMPT_FILENAMES:
|
|
514
518
|
return False
|
|
515
519
|
return "/.nexo/" in normalized
|
|
516
520
|
|
|
@@ -587,7 +591,7 @@ def _recent_codex_conditioned_file_discipline_status(*, days: int = 7, max_files
|
|
|
587
591
|
protocol_files: set[str] = set()
|
|
588
592
|
guard_files: set[str] = set()
|
|
589
593
|
guard_ack = False
|
|
590
|
-
|
|
594
|
+
bootstrap_context_phase = True
|
|
591
595
|
session_touches = 0
|
|
592
596
|
session_samples: list[dict] = []
|
|
593
597
|
|
|
@@ -615,9 +619,9 @@ def _recent_codex_conditioned_file_discipline_status(*, days: int = 7, max_files
|
|
|
615
619
|
args = _parse_jsonish_arguments(payload.get("arguments"))
|
|
616
620
|
|
|
617
621
|
if name in {"mcp__nexo__nexo_startup", "nexo_startup"}:
|
|
618
|
-
startup_seen = True
|
|
619
622
|
continue
|
|
620
623
|
if name in {"mcp__nexo__nexo_task_open", "nexo_task_open"}:
|
|
624
|
+
bootstrap_context_phase = False
|
|
621
625
|
protocol_active = True
|
|
622
626
|
protocol_files.update(_extract_declared_file_targets(args, cwd))
|
|
623
627
|
continue
|
|
@@ -627,6 +631,7 @@ def _recent_codex_conditioned_file_discipline_status(*, days: int = 7, max_files
|
|
|
627
631
|
"mcp__nexo__nexo_guard_file_check",
|
|
628
632
|
"nexo_guard_file_check",
|
|
629
633
|
}:
|
|
634
|
+
bootstrap_context_phase = False
|
|
630
635
|
guard_files.update(_extract_declared_file_targets(args, cwd))
|
|
631
636
|
continue
|
|
632
637
|
if name in {"mcp__nexo__nexo_task_acknowledge_guard", "nexo_task_acknowledge_guard"}:
|
|
@@ -644,7 +649,11 @@ def _recent_codex_conditioned_file_discipline_status(*, days: int = 7, max_files
|
|
|
644
649
|
continue
|
|
645
650
|
|
|
646
651
|
for touched, operation in touched_files:
|
|
647
|
-
if
|
|
652
|
+
if _is_codex_bootstrap_runtime_read_exempt(
|
|
653
|
+
touched,
|
|
654
|
+
operation,
|
|
655
|
+
bootstrap_context_phase,
|
|
656
|
+
):
|
|
648
657
|
continue
|
|
649
658
|
matches = [row for row in conditioned if _applies_to_matches_file(str(row.get("applies_to", "")), touched)]
|
|
650
659
|
if not matches:
|