loreguard-cli 0.14.1__tar.gz → 0.14.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 (62) hide show
  1. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/PKG-INFO +1 -1
  2. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/loreguard_entry.py +3 -0
  3. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/pyproject.toml +1 -1
  4. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/src/nli.py +4 -0
  5. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/src/tui/screens/main.py +9 -3
  6. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/src/tui/screens/running.py +11 -3
  7. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/.claude/skills/llama-cpp-troubleshooting/SKILL.md +0 -0
  8. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/.env.example +0 -0
  9. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/.github/workflows/release.yml +0 -0
  10. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/.gitignore +0 -0
  11. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/LICENSE +0 -0
  12. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/README.md +0 -0
  13. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/THIRD_PARTY_NOTICES.md +0 -0
  14. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/loreguard.spec +0 -0
  15. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/scripts/build.py +0 -0
  16. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/sdk/API.md +0 -0
  17. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/sdk/csharp/LoreguardSDK.cs +0 -0
  18. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/sdk/gdscript/LoreguardSDK.gd +0 -0
  19. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/sdk/javascript/loreguard-sdk.js +0 -0
  20. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/sdk/python/loreguard_sdk.py +0 -0
  21. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/src/__init__.py +0 -0
  22. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/src/__main__.py +0 -0
  23. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/src/chunk_detector.py +0 -0
  24. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/src/cli.py +0 -0
  25. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/src/config.py +0 -0
  26. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/src/dialogue_act_classifier.py +0 -0
  27. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/src/hf_discovery.py +0 -0
  28. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/src/http_server.py +0 -0
  29. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/src/intent_classifier.py +0 -0
  30. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/src/llama_server.py +0 -0
  31. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/src/llm.py +0 -0
  32. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/src/main.py +0 -0
  33. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/src/models_registry.py +0 -0
  34. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/src/npc_chat.py +0 -0
  35. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/src/runtime.py +0 -0
  36. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/src/steam.py +0 -0
  37. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/src/term_ui.py +0 -0
  38. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/src/tui/__init__.py +0 -0
  39. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/src/tui/app.py +0 -0
  40. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/src/tui/modals/__init__.py +0 -0
  41. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/src/tui/modals/auth_menu.py +0 -0
  42. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/src/tui/modals/npc_chat.py +0 -0
  43. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/src/tui/modals/token_input.py +0 -0
  44. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/src/tui/modals/unified_palette.py +0 -0
  45. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/src/tui/screens/__init__.py +0 -0
  46. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/src/tui/screens/auth.py +0 -0
  47. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/src/tui/screens/model_select.py +0 -0
  48. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/src/tui/screens/nli_setup.py +0 -0
  49. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/src/tui/styles.py +0 -0
  50. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/src/tui/widgets/__init__.py +0 -0
  51. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/src/tui/widgets/banner.py +0 -0
  52. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/src/tui/widgets/footer.py +0 -0
  53. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/src/tui/widgets/hardware_info.py +0 -0
  54. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/src/tui/widgets/npc_chat.py +0 -0
  55. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/src/tui/widgets/server_monitor.py +0 -0
  56. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/src/tui/widgets/status_panel.py +0 -0
  57. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/src/tunnel.py +0 -0
  58. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/src/wizard.py +0 -0
  59. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/templates/llama31-no-tools.jinja +0 -0
  60. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/tests/test_nli_hhem.py +0 -0
  61. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/tests/test_websocket_timeout.py +0 -0
  62. {loreguard_cli-0.14.1 → loreguard_cli-0.14.3}/uv.lock +0 -0
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: loreguard-cli
3
- Version: 0.14.1
3
+ Version: 0.14.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
@@ -3,6 +3,9 @@
3
3
 
4
4
  Imports src as a proper package so relative imports inside src/__main__.py work.
5
5
  """
6
+ import multiprocessing
7
+ multiprocessing.freeze_support() # Required for PyInstaller on macOS/Windows
8
+
6
9
  from src.__main__ import main
7
10
 
8
11
  main()
@@ -4,7 +4,7 @@ build-backend = "hatchling.build"
4
4
 
5
5
  [project]
6
6
  name = "loreguard-cli"
7
- version = "0.14.1"
7
+ version = "0.14.3"
8
8
  description = "Local inference client for Loreguard NPCs"
9
9
  readme = "README.md"
10
10
  license = "MIT"
@@ -123,6 +123,10 @@ class NLIService:
123
123
  self._model_path,
124
124
  trust_remote_code=True,
125
125
  )
126
+ # HHEMv2 custom class may lack all_tied_weights_keys (needed by
127
+ # newer transformers for .to() / .eval()). Patch if missing.
128
+ if not hasattr(self._model, "_tied_weights_keys"):
129
+ self._model._tied_weights_keys = []
126
130
  self._model.to(self._device)
127
131
  self._model.eval()
128
132
 
@@ -546,11 +546,17 @@ class MainScreen(Screen):
546
546
  intent_classifier = None
547
547
 
548
548
  # Load dialogue act classifier (filler selection) - run in thread pool
549
- self._update_status("Loading dialogue act model...", log=False)
550
- self._log("Loading dialogue act classifier...")
551
549
  dialogue_act_classifier = None
550
+ enable_dialogue_act = os.getenv("LOREGUARD_DIALOGUE_ACT_ENABLED", "true").lower() == "true"
551
+ if not enable_dialogue_act:
552
+ self._log("Dialogue act classifier disabled via LOREGUARD_DIALOGUE_ACT_ENABLED")
553
+ else:
554
+ self._update_status("Loading dialogue act model...", log=False)
555
+ self._log("Loading dialogue act classifier...")
552
556
  try:
553
- if is_dialogue_act_model_available():
557
+ if not enable_dialogue_act:
558
+ pass # Skip loading
559
+ elif is_dialogue_act_model_available():
554
560
  dialogue_act_classifier = DialogueActClassifier()
555
561
  loop = asyncio.get_event_loop()
556
562
  with concurrent.futures.ThreadPoolExecutor() as pool:
@@ -2,6 +2,7 @@
2
2
 
3
3
  import asyncio
4
4
  import concurrent.futures
5
+ import os
5
6
  from typing import TYPE_CHECKING, Optional
6
7
 
7
8
  from textual.app import ComposeResult
@@ -247,10 +248,17 @@ class RunningScreen(Screen):
247
248
 
248
249
  # Load Dialogue Act Classifier
249
250
  dialogue_act_classifier = None
250
- self._update_status("dialogue_act", "Dialogue Act", "Loading...", "info")
251
- self._log("Loading Dialogue Act classifier...", "info")
251
+ enable_dialogue_act = os.getenv("LOREGUARD_DIALOGUE_ACT_ENABLED", "true").lower() == "true"
252
+ if not enable_dialogue_act:
253
+ self._update_status("dialogue_act", "Dialogue Act", "Disabled", "info")
254
+ self._log("Dialogue act classifier disabled via LOREGUARD_DIALOGUE_ACT_ENABLED", "info")
255
+ else:
256
+ self._update_status("dialogue_act", "Dialogue Act", "Loading...", "info")
257
+ self._log("Loading Dialogue Act classifier...", "info")
252
258
  try:
253
- if is_dialogue_act_model_available():
259
+ if not enable_dialogue_act:
260
+ pass # Skip loading
261
+ elif is_dialogue_act_model_available():
254
262
  dialogue_act_classifier = DialogueActClassifier()
255
263
  loop = asyncio.get_event_loop()
256
264
  with concurrent.futures.ThreadPoolExecutor() as pool:
File without changes
File without changes
File without changes