loreguard-cli 0.20.2__tar.gz → 0.20.4__tar.gz

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.
Files changed (64) hide show
  1. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/PKG-INFO +1 -1
  2. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/pyproject.toml +1 -1
  3. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/src/llama_server.py +1 -1
  4. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/src/nli.py +26 -10
  5. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/uv.lock +1 -1
  6. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/.claude/skills/llama-cpp-troubleshooting/SKILL.md +0 -0
  7. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/.env.example +0 -0
  8. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/.github/workflows/release.yml +0 -0
  9. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/.gitignore +0 -0
  10. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/LICENSE +0 -0
  11. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/README.md +0 -0
  12. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/THIRD_PARTY_NOTICES.md +0 -0
  13. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/loreguard.spec +0 -0
  14. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/loreguard_entry.py +0 -0
  15. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/scripts/build.py +0 -0
  16. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/sdk/API.md +0 -0
  17. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/sdk/csharp/LoreguardSDK.cs +0 -0
  18. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/sdk/gdscript/LoreguardSDK.gd +0 -0
  19. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/sdk/javascript/loreguard-sdk.js +0 -0
  20. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/sdk/python/loreguard_sdk.py +0 -0
  21. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/src/__init__.py +0 -0
  22. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/src/__main__.py +0 -0
  23. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/src/chunk_detector.py +0 -0
  24. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/src/cli.py +0 -0
  25. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/src/config.py +0 -0
  26. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/src/dialogue_act_classifier.py +0 -0
  27. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/src/hf_discovery.py +0 -0
  28. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/src/http_server.py +0 -0
  29. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/src/intent_classifier.py +0 -0
  30. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/src/llm.py +0 -0
  31. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/src/main.py +0 -0
  32. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/src/model_families.py +0 -0
  33. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/src/models_registry.py +0 -0
  34. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/src/npc_chat.py +0 -0
  35. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/src/runtime.py +0 -0
  36. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/src/steam.py +0 -0
  37. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/src/term_ui.py +0 -0
  38. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/src/tui/__init__.py +0 -0
  39. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/src/tui/app.py +0 -0
  40. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/src/tui/modals/__init__.py +0 -0
  41. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/src/tui/modals/auth_menu.py +0 -0
  42. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/src/tui/modals/npc_chat.py +0 -0
  43. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/src/tui/modals/token_input.py +0 -0
  44. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/src/tui/modals/unified_palette.py +0 -0
  45. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/src/tui/screens/__init__.py +0 -0
  46. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/src/tui/screens/auth.py +0 -0
  47. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/src/tui/screens/main.py +0 -0
  48. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/src/tui/screens/model_select.py +0 -0
  49. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/src/tui/screens/nli_setup.py +0 -0
  50. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/src/tui/screens/running.py +0 -0
  51. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/src/tui/styles.py +0 -0
  52. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/src/tui/widgets/__init__.py +0 -0
  53. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/src/tui/widgets/banner.py +0 -0
  54. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/src/tui/widgets/footer.py +0 -0
  55. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/src/tui/widgets/hardware_info.py +0 -0
  56. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/src/tui/widgets/npc_chat.py +0 -0
  57. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/src/tui/widgets/server_monitor.py +0 -0
  58. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/src/tui/widgets/status_panel.py +0 -0
  59. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/src/tunnel.py +0 -0
  60. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/src/wizard.py +0 -0
  61. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/templates/llama31-no-tools.jinja +0 -0
  62. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/tests/test_intent_classifier.py +0 -0
  63. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/tests/test_nli_hhem.py +0 -0
  64. {loreguard_cli-0.20.2 → loreguard_cli-0.20.4}/tests/test_websocket_timeout.py +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: loreguard-cli
3
- Version: 0.20.2
3
+ Version: 0.20.4
4
4
  Summary: Local inference client for Loreguard NPCs
5
5
  Project-URL: Homepage, https://loreguard.com
6
6
  Project-URL: Documentation, https://github.com/beyond-logic-labs/loreguard-cli#readme
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "loreguard-cli"
7
- version = "0.20.2"
7
+ version = "0.20.4"
8
8
  description = "Local inference client for Loreguard NPCs"
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -30,7 +30,7 @@ def _get_templates_dir() -> Path:
30
30
  return Path(__file__).parent.parent / "templates"
31
31
 
32
32
 
33
- LLAMA_VERSION = "b8467" # Must match loreguard-engine bundle version
33
+ LLAMA_VERSION = "b9761" # Must match loreguard-engine bundle version (b9761: adds gemma4 arch, retains Qwen 3.5 / Gemma-3)
34
34
 
35
35
  # Download URLs for each platform
36
36
  BINARIES = {
@@ -423,24 +423,40 @@ class NLIService:
423
423
  except Exception as e:
424
424
  logger.warning(f"Could not patch config.json: {e}")
425
425
 
426
- # Patch 3: configuration_hhem_v2.py use local flan-t5-base instead of HuggingFace
427
- # The HHEM model downloads google/flan-t5-base config+tokenizer at init.
428
- # If we've bundled those files locally, rewrite the foundation path.
426
+ # Patch 3: configuration_hhem_v2.py, point the foundation at the bundled
427
+ # flan-t5-base. Resolve it RELATIVE to the config file at runtime (via
428
+ # __file__) so the path is portable and never a baked absolute machine path.
429
429
  config_py = os.path.join(patch_dir, "configuration_hhem_v2.py")
430
430
  local_foundation = os.path.join(patch_dir, "flan-t5-base")
431
431
  if os.path.exists(config_py) and os.path.isdir(local_foundation):
432
432
  try:
433
+ import re
434
+
433
435
  content = open(config_py, "r").read()
434
- if '"google/flan-t5-base"' in content:
435
- # Use absolute path to the bundled flan-t5-base files
436
- abs_path = os.path.abspath(local_foundation)
437
- patched = content.replace(
438
- '"google/flan-t5-base"',
439
- f'"{abs_path}"',
436
+ resolver = (
437
+ 'os.path.join(os.path.dirname(os.path.abspath(__file__)), '
438
+ '"flan-t5-base")'
439
+ )
440
+ patched = content
441
+ if "import os" not in patched:
442
+ patched = patched.replace(
443
+ "from transformers import PretrainedConfig",
444
+ "from transformers import PretrainedConfig\nimport os",
445
+ 1,
440
446
  )
447
+ # Replace the class-level foundation assignment, whatever it is now
448
+ # (the HuggingFace default OR a previously-baked absolute path), with
449
+ # the self-resolving expression. count=1 leaves any __init__ default.
450
+ patched = re.sub(
451
+ r'foundation\s*=\s*"[^"]*"',
452
+ "foundation = " + resolver,
453
+ patched,
454
+ count=1,
455
+ )
456
+ if patched != content:
441
457
  with open(config_py, "w") as f:
442
458
  f.write(patched)
443
- logger.info(f"Patched foundation to local: {abs_path}")
459
+ logger.info("Patched foundation to self-resolving relative path")
444
460
  except Exception as e:
445
461
  logger.warning(f"Could not patch configuration_hhem_v2.py: {e}")
446
462
 
@@ -600,7 +600,7 @@ wheels = [
600
600
 
601
601
  [[package]]
602
602
  name = "loreguard-cli"
603
- version = "0.16.0"
603
+ version = "0.20.4"
604
604
  source = { editable = "." }
605
605
  dependencies = [
606
606
  { name = "aiofiles" },
File without changes
File without changes