neuralnode 2.2.2__py3-none-any.whl → 2.2.3__py3-none-any.whl

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.
neuralnode/__init__.py CHANGED
@@ -42,7 +42,7 @@ Quick Start::
42
42
  text = sr.listen()
43
43
  """
44
44
 
45
- __version__ = "2.2.2"
45
+ __version__ = "2.2.3"
46
46
  __author__ = "NeuralNode Contributors"
47
47
 
48
48
  # ── Core types ────────────────────────────────────────────────────────────────
@@ -13,6 +13,7 @@ import socket
13
13
  import logging
14
14
  import threading
15
15
  import subprocess
16
+ import shutil
16
17
  from pathlib import Path
17
18
  from typing import Any, Dict, List, Optional, Union, Generator
18
19
 
@@ -348,6 +349,8 @@ class OpenClawManager:
348
349
 
349
350
  # Step 1: Clone OpenClaw repository if not present
350
351
  if not repo_dir.exists():
352
+ if shutil.which("git") is None:
353
+ raise RuntimeError("git is required to download OpenClaw. Install git and retry.")
351
354
  logger.info(f"Cloning OpenClaw repository to {repo_dir}...")
352
355
  try:
353
356
  subprocess.run(
@@ -363,8 +366,12 @@ class OpenClawManager:
363
366
  # Check npm package manager
364
367
  try:
365
368
  # We check if pnpm or npm is available
366
- use_pnpm = subprocess.run(["pnpm", "--version"], capture_output=True).returncode == 0
367
- pm_cmd = ["pnpm", "install"] if use_pnpm else ["npm", "install"]
369
+ if shutil.which("pnpm"):
370
+ pm_cmd = ["pnpm", "install"]
371
+ elif shutil.which("npm"):
372
+ pm_cmd = ["npm", "install"]
373
+ else:
374
+ raise RuntimeError("npm or pnpm is required to install OpenClaw dependencies. Install Node.js and retry.")
368
375
  subprocess.run(
369
376
  pm_cmd,
370
377
  cwd=str(repo_dir),
@@ -432,8 +439,12 @@ class OpenClawManager:
432
439
  # Fallback to dev command if js build not present
433
440
  if not (repo_dir / "openclaw.mjs").exists():
434
441
  # Check pnpm vs npm run dev
435
- use_pnpm = subprocess.run(["pnpm", "--version"], capture_output=True).returncode == 0
436
- startup_cmd = ["pnpm", "run", "dev"] if use_pnpm else ["npm", "run", "dev"]
442
+ if shutil.which("pnpm"):
443
+ startup_cmd = ["pnpm", "run", "dev"]
444
+ elif shutil.which("npm"):
445
+ startup_cmd = ["npm", "run", "dev"]
446
+ else:
447
+ raise RuntimeError("npm or pnpm is required to start OpenClaw. Install Node.js and retry.")
437
448
 
438
449
  logger.info(f"Starting OpenClaw Gateway via: {' '.join(startup_cmd)}")
439
450
  self.process = subprocess.Popen(
@@ -12,6 +12,7 @@ import time
12
12
  import requests
13
13
  import subprocess
14
14
  import threading
15
+ import shutil
15
16
  from pathlib import Path
16
17
  from typing import Optional, Dict, Any, List, Union
17
18
  from dataclasses import dataclass, field
@@ -209,6 +210,9 @@ class EvolutionWhatsAppBot:
209
210
 
210
211
  def start_gateway(self, port: int = 8080, wait_seconds: int = 15):
211
212
  """Start the rebranded local Node.js Evolution API gateway."""
213
+ if shutil.which("npm") is None:
214
+ raise RuntimeError("npm is required to start the WhatsApp gateway. Install Node.js and retry.")
215
+
212
216
  gateway_dir = Path(__file__).parent / "whatsapp" / "evolution-api"
213
217
  if not gateway_dir.exists():
214
218
  raise FileNotFoundError(
@@ -1195,7 +1195,19 @@ class HorusProvider(BaseLLMProvider):
1195
1195
  except Exception:
1196
1196
  cpu_kwargs = dict(base_kwargs)
1197
1197
  cpu_kwargs["n_gpu_layers"] = 0
1198
- self.model = Llama(**cpu_kwargs)
1198
+ try:
1199
+ self.model = Llama(**cpu_kwargs)
1200
+ except Exception as exc:
1201
+ raise RuntimeError(
1202
+ "Failed to load Horus GGUF with llama.cpp.\n"
1203
+ f"Model file: {model_path}\n"
1204
+ f"Runtime context window: {llama_kwargs.get('n_ctx')}\n"
1205
+ "The file was downloaded, but llama.cpp could not initialize it. "
1206
+ "This usually means the GGUF file is incompatible with the installed "
1207
+ "llama-cpp-python build, the GGUF conversion is invalid, or the file "
1208
+ "requires a newer llama.cpp backend. Try upgrading llama-cpp-python, "
1209
+ "using a different quantization, or loading the Transformers model variant."
1210
+ ) from exc
1199
1211
  return self
1200
1212
 
1201
1213
  def _resolve_gguf_turboquant_kwargs(self) -> Dict[str, Any]:
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: neuralnode
3
- Version: 2.2.2
3
+ Version: 2.2.3
4
4
  Summary: Comprehensive AI Framework with 50+ LLM Providers, Advanced Agents, Chains, Memory, RAG, and 100+ Tools
5
5
  Project-URL: Homepage, https://assem.cloud/
6
6
  Project-URL: Documentation, https://neuralnode.readthedocs.io
@@ -1,4 +1,4 @@
1
- neuralnode/__init__.py,sha256=r1L6pRe7BQccux9Ib6b8Pp7OnpOlFHAV88lLG8xLnT0,25360
1
+ neuralnode/__init__.py,sha256=Zf4b-xXoaACFN3Vg_jxyBW8O8ZFkRQV8vhRDU7_lPBk,25360
2
2
  neuralnode/replica.py,sha256=QlvR3tfLt0Y7XSsUsB5wiKI_EO7oUFM-8XH0wsrrvls,7995
3
3
  neuralnode/thinking.py,sha256=iBfCfBrLkD6AaHf2WaWfmzhFeV6zcXEZDjzLxmYt4VY,12614
4
4
  neuralnode/turboquant.py,sha256=bRKsUbniJrtxvQ8mQqlSK-N6M2PltJJxd5H4lBW7kDc,18340
@@ -10,10 +10,10 @@ neuralnode/core/openai_blocker.py,sha256=NyMH5aXBF5toSfc_eObr3L7qHszWiOoCwDVrbOn
10
10
  neuralnode/diagnostics/__init__.py,sha256=22U_NVNN3Y9FhheUXxwDLx1LGELxiN75ehHrH0t_QkM,25622
11
11
  neuralnode/integrations/__init__.py,sha256=lB3CU5Inw5JQYiIMHzZgJtygxtsaQp_5_AefnU1lQh0,711
12
12
  neuralnode/integrations/discord.py,sha256=_xneToa06BFcvvaXWjG4G3w6iRtCJ_dwtfFz7pjtBZA,6465
13
- neuralnode/integrations/openclaw.py,sha256=AdEg9WW5Tz02zArunaovLnImFUxP_XXvA2_Wzg8EmRw,18284
13
+ neuralnode/integrations/openclaw.py,sha256=z1BIwy1PvO8HdYR-9jUqBa6zeT9R1FqL8lCIAGcFGeM,18691
14
14
  neuralnode/integrations/slack.py,sha256=phgr4_fS2uMFkY7FeDOuzOagY2wQxhNDlqHK2KbtLGw,6259
15
15
  neuralnode/integrations/telegram.py,sha256=re9Off7zT_Rxm7yR4FOYN3JrjYqth4UQJ3O5AIJXKMU,26632
16
- neuralnode/integrations/whatsapp.py,sha256=JaR-yAkkGtKJzO85YgwCG2aeKUWzehiIrg7CQQKIzcI,14507
16
+ neuralnode/integrations/whatsapp.py,sha256=dVDFA-IhkE6AGBEvIViIrL2rY-D0OoPDfgQM7Ft_B3U,14670
17
17
  neuralnode/integrations/whatsapp/evolution_rebrander.py,sha256=gJz17UKNdZgm17Rq9sYkWLEJyMraHjZPupeadoAudzQ,2167
18
18
  neuralnode/integrations/whatsapp/evolution-api/.dockerignore,sha256=13PLq0nO_oGE6lbH3NL1xqLQe1TLFSnuDqlrdXKGZlo,62
19
19
  neuralnode/integrations/whatsapp/evolution-api/.env.example,sha256=kK5glghFWjbbeZYc4Y7Md-BTFg7QdFkPDnTFrbqzQu0,13777
@@ -372,7 +372,7 @@ neuralnode/prompts/__init__.py,sha256=GVCynrijvJ6zXWmg8knn7AkxGM0PFHwU7rEOUAdlJr
372
372
  neuralnode/providers/__init__.py,sha256=e0bI1rFwIl-olmVKrZ5wyzpWl9HputNf8FrBBS9gM1k,9422
373
373
  neuralnode/providers/base.py,sha256=kkNDOuij2E4TM2lsbJKoRwUDd2n6u0C67Qg0hy449iE,12668
374
374
  neuralnode/providers/embeddings.py,sha256=P2AO36a0j6kd2ldN0CpVJZ0q0hDkKlUlTlf-_8x3Iz4,37551
375
- neuralnode/providers/horus.py,sha256=M1q1nuxqMAfanQdE02cud13SCr1PA4DwyoizVtM7PYU,98785
375
+ neuralnode/providers/horus.py,sha256=ObMOo6L6KxM2NJeNn1nQP63VqHGkn0Dn28JvvYyedqo,99652
376
376
  neuralnode/providers/local_providers.py,sha256=5c5E7kLhk-YTEp9EXNX3-BIiacvWPgxMRZye9A6htNA,61417
377
377
  neuralnode/providers/text_generation.py,sha256=FMTJ6aDe78ODvnZ7WEFRfqeNiij0sBR0pRRjU7rxxag,36513
378
378
  neuralnode/providers/universal_local.py,sha256=DNqICw0G99eR5BnXjYCeEvjUhnoSS22D4HnLs0x9Y70,19541
@@ -407,7 +407,7 @@ neuralnode/utils/logger.py,sha256=vh0K2JYqqgwdtyYjtNbPK9QW6ZhOEqpp_NOHghl94e8,86
407
407
  neuralnode/utils/metrics.py,sha256=z5JHDV-I5foOiY8j7vQE-GYyTSM5p04_EcWBP7qJlY4,7389
408
408
  neuralnode/vectorstores/__init__.py,sha256=vCQ-L7jbhTVEQPrLehpzhm6K3SQIprUicF1X7BOF8w8,28172
409
409
  neuralnode/vision/__init__.py,sha256=MepTSuvOBXjGJK1i2zxZLSGlBm-WOV1ylu4Xa-pAObw,5756
410
- neuralnode-2.2.2.dist-info/METADATA,sha256=ckW4ArzefKInotxmLZ3hSgrtyM8-IKIkBQn2n46wWZg,14175
411
- neuralnode-2.2.2.dist-info/WHEEL,sha256=mffPy8wBnZQn2VnJUU5jE99KsxaSfiyMHV9Yt0aLVxs,87
412
- neuralnode-2.2.2.dist-info/licenses/LICENSE,sha256=Pwd03UGSoleqoehkTRuTj6FwLzMknjSiVDuLOD2sfts,1067
413
- neuralnode-2.2.2.dist-info/RECORD,,
410
+ neuralnode-2.2.3.dist-info/METADATA,sha256=rLAgT8M5CdxIqslRiFbxM3WyPigPeMMSHP7M31lWVjY,14175
411
+ neuralnode-2.2.3.dist-info/WHEEL,sha256=mffPy8wBnZQn2VnJUU5jE99KsxaSfiyMHV9Yt0aLVxs,87
412
+ neuralnode-2.2.3.dist-info/licenses/LICENSE,sha256=Pwd03UGSoleqoehkTRuTj6FwLzMknjSiVDuLOD2sfts,1067
413
+ neuralnode-2.2.3.dist-info/RECORD,,