code-puppy 0.0.198__py3-none-any.whl → 0.0.199__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.
@@ -460,16 +460,21 @@ class BaseAgent(ABC):
460
460
 
461
461
  def get_model_context_length(self) -> int:
462
462
  """
463
- Get the context length for the currently configured model from models.json
464
- """
465
- model_configs = ModelFactory.load_config()
466
- model_name = get_global_model_name()
467
-
468
- # Get context length from model config
469
- model_config = model_configs.get(model_name, {})
470
- context_length = model_config.get("context_length", 128000) # Default value
463
+ Return the context length for this agent's effective model.
471
464
 
472
- return int(context_length)
465
+ Honors per-agent pinned model via `self.get_model_name()`; falls back
466
+ to global model when no pin is set. Defaults conservatively on failure.
467
+ """
468
+ try:
469
+ model_configs = ModelFactory.load_config()
470
+ # Use the agent's effective model (respects /pin_model)
471
+ model_name = self.get_model_name()
472
+ model_config = model_configs.get(model_name, {})
473
+ context_length = model_config.get("context_length", 128000)
474
+ return int(context_length)
475
+ except Exception:
476
+ # Be safe; don't blow up status/compaction if model lookup fails
477
+ return 128000
473
478
 
474
479
  def prune_interrupted_tool_calls(
475
480
  self, messages: List[ModelMessage]
@@ -29,13 +29,22 @@ def set_active_model(model_name: str):
29
29
  Sets the active model name by updating the config (for persistence).
30
30
  """
31
31
  set_model_name(model_name)
32
- # Reload agent globally
32
+ # Reload the currently active agent so the new model takes effect immediately
33
33
  try:
34
- from code_puppy.agent import reload_code_generation_agent
35
-
36
- reload_code_generation_agent() # This will reload dynamically everywhere
34
+ from code_puppy.agents import get_current_agent
35
+
36
+ current_agent = get_current_agent()
37
+ # JSON agents may need to refresh their config before reload
38
+ if hasattr(current_agent, "refresh_config"):
39
+ try:
40
+ current_agent.refresh_config()
41
+ except Exception:
42
+ # Non-fatal, continue to reload
43
+ ...
44
+ current_agent.reload_code_generation_agent()
37
45
  except Exception:
38
- pass # If reload fails, agent will still be switched next interpreter run
46
+ # Swallow errors to avoid breaking the prompt flow; model persists for next run
47
+ pass
39
48
 
40
49
 
41
50
  class ModelNameCompleter(Completer):
@@ -217,6 +217,20 @@ class SettingsScreen(ModalScreen):
217
217
  # Save model selection
218
218
  if selected_model:
219
219
  set_model_name(selected_model)
220
+ # Reload the active agent so model switch takes effect immediately
221
+ try:
222
+ from code_puppy.agents import get_current_agent
223
+
224
+ current_agent = get_current_agent()
225
+ if hasattr(current_agent, "refresh_config"):
226
+ try:
227
+ current_agent.refresh_config()
228
+ except Exception:
229
+ ...
230
+ current_agent.reload_code_generation_agent()
231
+ except Exception:
232
+ # Non-fatal: settings saved; reload will happen on next run if needed
233
+ pass
220
234
 
221
235
  set_config_value("yolo_mode", yolo_mode)
222
236
 
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-puppy
3
- Version: 0.0.198
3
+ Version: 0.0.199
4
4
  Summary: Code generation agent
5
5
  Project-URL: repository, https://github.com/mpfaffenberger/code_puppy
6
6
  Project-URL: HomePage, https://github.com/mpfaffenberger/code_puppy
@@ -27,13 +27,13 @@ code_puppy/agents/agent_qa_expert.py,sha256=wCGXzuAVElT5c-QigQVb8JX9Gw0JmViCUQQn
27
27
  code_puppy/agents/agent_qa_kitten.py,sha256=5PeFFSwCFlTUvP6h5bGntx0xv5NmRwBiw0HnMqY8nLI,9107
28
28
  code_puppy/agents/agent_security_auditor.py,sha256=ADafi2x4gqXw6m-Nch5vjiKjO0Urcbj0x4zxHti3gDw,3712
29
29
  code_puppy/agents/agent_typescript_reviewer.py,sha256=EDY1mFkVpuJ1BPXsJFu2wQ2pfAV-90ipc_8w9ymrKPg,4054
30
- code_puppy/agents/base_agent.py,sha256=ikeV6Sui3HAagJBPTtI9T9pCDCFTCYDNEkFFw7XU21Y,39084
30
+ code_puppy/agents/base_agent.py,sha256=EHAIQrfsM7x1lz9YHXxlidWhw35HTN4f1JIvdx469ZQ,39390
31
31
  code_puppy/agents/json_agent.py,sha256=lhopDJDoiSGHvD8A6t50hi9ZBoNRKgUywfxd0Po_Dzc,4886
32
32
  code_puppy/command_line/__init__.py,sha256=y7WeRemfYppk8KVbCGeAIiTuiOszIURCDjOMZv_YRmU,45
33
33
  code_puppy/command_line/command_handler.py,sha256=alxMe5v_4jq8Sm6HETsgfF-VoDtgExj9dVzxP77fwmY,31614
34
34
  code_puppy/command_line/file_path_completion.py,sha256=gw8NpIxa6GOpczUJRyh7VNZwoXKKn-yvCqit7h2y6Gg,2931
35
35
  code_puppy/command_line/load_context_completion.py,sha256=6eZxV6Bs-EFwZjN93V8ZDZUC-6RaWxvtZk-04Wtikyw,2240
36
- code_puppy/command_line/model_picker_completion.py,sha256=vYNCZS1QWu6fxF__hTwpc7jwH7h_48wUxrnITawc83E,4140
36
+ code_puppy/command_line/model_picker_completion.py,sha256=uqwpbMYnCcWUZZ10Y4pMBKBfW52wQ-KdML2PO4Xjwr0,4501
37
37
  code_puppy/command_line/motd.py,sha256=PEdkp3ZnydVfvd7mNJylm8YyFNUKg9jmY6uwkA1em8c,2152
38
38
  code_puppy/command_line/prompt_toolkit_completion.py,sha256=_8SUUCKfjOxgNMkcHTeB08NIjCeqL3utHljROXLTEZE,10656
39
39
  code_puppy/command_line/utils.py,sha256=7eyxDHjPjPB9wGDJQQcXV_zOsGdYsFgI0SGCetVmTqE,1251
@@ -120,11 +120,11 @@ code_puppy/tui/screens/__init__.py,sha256=qxiJKyO3MKCNdPjUuHA2-Pnpda0JN20n7e9sU2
120
120
  code_puppy/tui/screens/autosave_picker.py,sha256=9bazha2C5N3Xg_VcmpcTv-CYOBq_mwcECBfrQM9tHxA,5416
121
121
  code_puppy/tui/screens/help.py,sha256=eJuPaOOCp7ZSUlecearqsuX6caxWv7NQszUh0tZJjBM,3232
122
122
  code_puppy/tui/screens/mcp_install_wizard.py,sha256=vObpQwLbXjQsxmSg-WCasoev1usEi0pollKnL0SHu9U,27693
123
- code_puppy/tui/screens/settings.py,sha256=EsoL_gbN5FpEXGuDqhtdDznNZy_eGNMMuZnWuARSWi8,10790
123
+ code_puppy/tui/screens/settings.py,sha256=EoMxiguyeF0srwV1bj4_MG9rrxkNthh6TdTNsxnXLfE,11460
124
124
  code_puppy/tui/screens/tools.py,sha256=3pr2Xkpa9Js6Yhf1A3_wQVRzFOui-KDB82LwrsdBtyk,1715
125
- code_puppy-0.0.198.data/data/code_puppy/models.json,sha256=dClUciCo2RlVDs0ZAQCIur8MOavZUEAXHEecn0uPa-4,1629
126
- code_puppy-0.0.198.dist-info/METADATA,sha256=p-54EnWxhZ2h9yAcVbjToU39Fqch7Si6kmSVHCtqAWA,20759
127
- code_puppy-0.0.198.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
128
- code_puppy-0.0.198.dist-info/entry_points.txt,sha256=Tp4eQC99WY3HOKd3sdvb22vZODRq0XkZVNpXOag_KdI,91
129
- code_puppy-0.0.198.dist-info/licenses/LICENSE,sha256=31u8x0SPgdOq3izJX41kgFazWsM43zPEF9eskzqbJMY,1075
130
- code_puppy-0.0.198.dist-info/RECORD,,
125
+ code_puppy-0.0.199.data/data/code_puppy/models.json,sha256=dClUciCo2RlVDs0ZAQCIur8MOavZUEAXHEecn0uPa-4,1629
126
+ code_puppy-0.0.199.dist-info/METADATA,sha256=IV5OoNejufscIc5UvwoIbTCR0z7Worz6m0N0QFniEuI,20759
127
+ code_puppy-0.0.199.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
128
+ code_puppy-0.0.199.dist-info/entry_points.txt,sha256=Tp4eQC99WY3HOKd3sdvb22vZODRq0XkZVNpXOag_KdI,91
129
+ code_puppy-0.0.199.dist-info/licenses/LICENSE,sha256=31u8x0SPgdOq3izJX41kgFazWsM43zPEF9eskzqbJMY,1075
130
+ code_puppy-0.0.199.dist-info/RECORD,,