nexo-brain 0.8.1 → 0.8.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/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "nexo-brain",
3
- "version": "0.8.1",
3
+ "version": "0.8.2",
4
4
  "mcpName": "io.github.wazionapps/nexo",
5
5
  "description": "NEXO — Cognitive co-operator for Claude Code. Atkinson-Shiffrin memory, semantic RAG, trust scoring, and metacognitive error prevention.",
6
6
  "bin": {
@@ -4,7 +4,7 @@ from db import create_agent, get_agent, list_agents, update_agent, delete_agent
4
4
  def handle_agent_get(id: str) -> str:
5
5
  """Get an agent's full profile by ID."""
6
6
  a = get_agent(id)
7
- if not a: return f"Agente '{id}' no encontrado."
7
+ if not a: return f"Agent '{id}' not found."
8
8
  lines = [f"AGENTE: {a['name']} ({a['id']})", f" Especialización: {a['specialization']}", f" Modelo: {a['model']}"]
9
9
  if a["tools"]: lines.append(f" Tools: {a['tools']}")
10
10
  if a["context_files"]: lines.append(f" Contexto: {a['context_files']}")
@@ -15,7 +15,7 @@ def handle_agent_create(id: str, name: str, specialization: str, model: str = "s
15
15
  tools: str = "", context_files: str = "", rules: str = "") -> str:
16
16
  """Register a new agent in the registry."""
17
17
  create_agent(id, name, specialization, model, tools, context_files, rules)
18
- return f"Agente '{id}' ({name}) registrado. Modelo: {model}"
18
+ return f"Agent '{id}' ({name}) registered. Model: {model}"
19
19
 
20
20
  def handle_agent_update(id: str, name: str = "", specialization: str = "", model: str = "",
21
21
  tools: str = "", context_files: str = "", rules: str = "") -> str:
@@ -26,12 +26,12 @@ def handle_agent_update(id: str, name: str = "", specialization: str = "", model
26
26
  if v: kwargs[k] = v
27
27
  if not kwargs: return "Nada que actualizar."
28
28
  update_agent(id, **kwargs)
29
- return f"Agente '{id}' actualizado."
29
+ return f"Agent '{id}' updated."
30
30
 
31
31
  def handle_agent_list() -> str:
32
32
  """List all registered agents."""
33
33
  agents = list_agents()
34
- if not agents: return "Sin agentes registrados."
34
+ if not agents: return "No agents registered."
35
35
  lines = ["AGENTES REGISTRADOS:"]
36
36
  for a in agents:
37
37
  lines.append(f" {a['id']} — {a['name']} ({a['model']}) — {a['specialization'][:60]}")
@@ -40,8 +40,8 @@ def handle_agent_list() -> str:
40
40
  def handle_agent_delete(id: str) -> str:
41
41
  """Remove an agent from the registry."""
42
42
  if not delete_agent(id):
43
- return f"ERROR: Agente '{id}' no encontrado."
44
- return f"Agente '{id}' eliminado."
43
+ return f"ERROR: Agent '{id}' not found."
44
+ return f"Agent '{id}' deleted."
45
45
 
46
46
  TOOLS = [
47
47
  (handle_agent_get, "nexo_agent_get", "Get an agent's full profile"),
@@ -56,7 +56,7 @@ def handle_backup_restore(filename: str) -> str:
56
56
  """
57
57
  src = os.path.join(BACKUP_DIR, filename)
58
58
  if not os.path.isfile(src):
59
- return f"Backup no encontrado: {filename}"
59
+ return f"Backup not found: {filename}"
60
60
 
61
61
  # Create safety backup first
62
62
  safety = os.path.join(BACKUP_DIR, f"nexo-pre-restore-{time.strftime('%Y%m%d%H%M%S')}.db")
@@ -101,7 +101,7 @@ def handle_decision_search(query: str = '', domain: str = '', days: int = 30) ->
101
101
  results = search_decisions(query, domain, days)
102
102
  if not results:
103
103
  scope = f"'{query}'" if query else domain or 'todas'
104
- return f"Sin decisiones encontradas para {scope} en {days} días."
104
+ return f"Sin decisiones encontradas para {scope} in {days} days."
105
105
 
106
106
  lines = [f"DECISIONES ({len(results)}):"]
107
107
  for d in results:
@@ -312,7 +312,7 @@ def handle_change_search(query: str = '', files: str = '', days: int = 30) -> st
312
312
  results = search_changes(query, files, days)
313
313
  if not results:
314
314
  scope = f"'{query}'" if query else files or 'todos'
315
- return f"Sin cambios encontrados para {scope} en {days} días."
315
+ return f"No changes found for {scope} in {days} days."
316
316
 
317
317
  lines = [f"CAMBIOS ({len(results)}):"]
318
318
  for c in results:
@@ -24,7 +24,7 @@ def handle_learning_add(category: str, title: str, content: str, reasoning: str
24
24
  """
25
25
  if category not in VALID_CATEGORIES:
26
26
  valid = ", ".join(sorted(VALID_CATEGORIES))
27
- return f"ERROR: Categoría '{category}' inválida. Válidas: {valid}"
27
+ return f"ERROR: Category '{category}' invalid. Valid: {valid}"
28
28
  result = create_learning(
29
29
  category, title, content, reasoning=reasoning
30
30
  )
@@ -142,7 +142,7 @@ def handle_learning_update(id: int, title: str = '', content: str = '', category
142
142
  if category:
143
143
  if category not in VALID_CATEGORIES:
144
144
  valid = ", ".join(sorted(VALID_CATEGORIES))
145
- return f"ERROR: Categoría '{category}' inválida. Válidas: {valid}"
145
+ return f"ERROR: Category '{category}' invalid. Valid: {valid}"
146
146
  kwargs["category"] = category
147
147
  if reasoning:
148
148
  kwargs["reasoning"] = reasoning
@@ -183,7 +183,7 @@ def handle_learning_delete(id: int) -> str:
183
183
  """Delete a learning entry by ID."""
184
184
  deleted = delete_learning(id)
185
185
  if not deleted:
186
- return f"ERROR: Learning #{id} no encontrado."
186
+ return f"ERROR: Learning #{id} not found."
187
187
  return f"Learning #{id} eliminado."
188
188
 
189
189