loreguard-cli 0.20.2__tar.gz → 0.20.3__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.3}/PKG-INFO +1 -1
  2. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/pyproject.toml +1 -1
  3. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/src/nli.py +26 -10
  4. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/.claude/skills/llama-cpp-troubleshooting/SKILL.md +0 -0
  5. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/.env.example +0 -0
  6. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/.github/workflows/release.yml +0 -0
  7. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/.gitignore +0 -0
  8. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/LICENSE +0 -0
  9. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/README.md +0 -0
  10. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/THIRD_PARTY_NOTICES.md +0 -0
  11. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/loreguard.spec +0 -0
  12. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/loreguard_entry.py +0 -0
  13. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/scripts/build.py +0 -0
  14. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/sdk/API.md +0 -0
  15. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/sdk/csharp/LoreguardSDK.cs +0 -0
  16. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/sdk/gdscript/LoreguardSDK.gd +0 -0
  17. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/sdk/javascript/loreguard-sdk.js +0 -0
  18. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/sdk/python/loreguard_sdk.py +0 -0
  19. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/src/__init__.py +0 -0
  20. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/src/__main__.py +0 -0
  21. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/src/chunk_detector.py +0 -0
  22. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/src/cli.py +0 -0
  23. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/src/config.py +0 -0
  24. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/src/dialogue_act_classifier.py +0 -0
  25. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/src/hf_discovery.py +0 -0
  26. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/src/http_server.py +0 -0
  27. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/src/intent_classifier.py +0 -0
  28. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/src/llama_server.py +0 -0
  29. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/src/llm.py +0 -0
  30. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/src/main.py +0 -0
  31. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/src/model_families.py +0 -0
  32. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/src/models_registry.py +0 -0
  33. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/src/npc_chat.py +0 -0
  34. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/src/runtime.py +0 -0
  35. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/src/steam.py +0 -0
  36. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/src/term_ui.py +0 -0
  37. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/src/tui/__init__.py +0 -0
  38. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/src/tui/app.py +0 -0
  39. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/src/tui/modals/__init__.py +0 -0
  40. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/src/tui/modals/auth_menu.py +0 -0
  41. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/src/tui/modals/npc_chat.py +0 -0
  42. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/src/tui/modals/token_input.py +0 -0
  43. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/src/tui/modals/unified_palette.py +0 -0
  44. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/src/tui/screens/__init__.py +0 -0
  45. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/src/tui/screens/auth.py +0 -0
  46. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/src/tui/screens/main.py +0 -0
  47. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/src/tui/screens/model_select.py +0 -0
  48. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/src/tui/screens/nli_setup.py +0 -0
  49. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/src/tui/screens/running.py +0 -0
  50. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/src/tui/styles.py +0 -0
  51. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/src/tui/widgets/__init__.py +0 -0
  52. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/src/tui/widgets/banner.py +0 -0
  53. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/src/tui/widgets/footer.py +0 -0
  54. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/src/tui/widgets/hardware_info.py +0 -0
  55. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/src/tui/widgets/npc_chat.py +0 -0
  56. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/src/tui/widgets/server_monitor.py +0 -0
  57. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/src/tui/widgets/status_panel.py +0 -0
  58. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/src/tunnel.py +0 -0
  59. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/src/wizard.py +0 -0
  60. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/templates/llama31-no-tools.jinja +0 -0
  61. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/tests/test_intent_classifier.py +0 -0
  62. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/tests/test_nli_hhem.py +0 -0
  63. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/tests/test_websocket_timeout.py +0 -0
  64. {loreguard_cli-0.20.2 → loreguard_cli-0.20.3}/uv.lock +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.3
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.3"
8
8
  description = "Local inference client for Loreguard NPCs"
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -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
 
File without changes
File without changes
File without changes