code-puppy 0.0.43__py3-none-any.whl → 0.0.44__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.
@@ -5,12 +5,12 @@ from prompt_toolkit.completion import Completer, Completion
5
5
  from prompt_toolkit.history import FileHistory
6
6
  from prompt_toolkit.document import Document
7
7
  from prompt_toolkit import PromptSession
8
+ from code_puppy.config import get_model_name, set_model_name
8
9
 
9
10
  MODELS_JSON_PATH = os.environ.get("MODELS_JSON_PATH")
10
11
  if not MODELS_JSON_PATH:
11
12
  MODELS_JSON_PATH = os.path.join(os.path.dirname(__file__), '..', 'models.json')
12
13
  MODELS_JSON_PATH = os.path.abspath(MODELS_JSON_PATH)
13
- MODEL_STATE_PATH = os.path.expanduser('~/.code_puppy_model')
14
14
 
15
15
  def load_model_names():
16
16
  with open(MODELS_JSON_PATH, 'r') as f:
@@ -18,18 +18,26 @@ def load_model_names():
18
18
  return list(models.keys())
19
19
 
20
20
  def get_active_model():
21
+ """
22
+ Returns the active model in order of priority:
23
+ 1. Model stored in config (sticky, highest priority)
24
+ 2. MODEL_NAME environment variable (for temporary override/testing)
25
+ 3. None if unset
26
+ """
27
+ model = get_model_name()
28
+ if model:
29
+ return model
21
30
  env_model = os.environ.get('MODEL_NAME')
22
31
  if env_model:
23
32
  return env_model
24
- try:
25
- with open(MODEL_STATE_PATH, 'r') as f:
26
- return f.read().strip()
27
- except Exception:
28
- return None
33
+ return None
29
34
 
30
35
  def set_active_model(model_name: str):
31
- with open(MODEL_STATE_PATH, 'w') as f:
32
- f.write(model_name.strip())
36
+ """
37
+ Sets the active model name by updating both config (for persistence)
38
+ and env (for process lifetime override).
39
+ """
40
+ set_model_name(model_name)
33
41
  os.environ['MODEL_NAME'] = model_name.strip()
34
42
  # Reload agent globally
35
43
  try:
code_puppy/config.py CHANGED
@@ -51,3 +51,18 @@ def get_puppy_name():
51
51
 
52
52
  def get_owner_name():
53
53
  return get_value("owner_name") or "Master"
54
+
55
+ # --- MODEL STICKY EXTENSION STARTS HERE ---
56
+ def get_model_name():
57
+ """Returns the last used model name stored in config, or None if unset."""
58
+ return get_value("model")
59
+
60
+ def set_model_name(model: str):
61
+ """Sets the model name in the persistent config file."""
62
+ config = configparser.ConfigParser()
63
+ config.read(CONFIG_FILE)
64
+ if DEFAULT_SECTION not in config:
65
+ config[DEFAULT_SECTION] = {}
66
+ config[DEFAULT_SECTION]["model"] = model or ""
67
+ with open(CONFIG_FILE, "w") as f:
68
+ config.write(f)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-puppy
3
- Version: 0.0.43
3
+ Version: 0.0.44
4
4
  Summary: Code generation agent
5
5
  Author: Michael Pfaffenberger
6
6
  License: MIT
@@ -1,7 +1,7 @@
1
1
  code_puppy/__init__.py,sha256=orgffM-uGp8g1XCqXGKWaFB4tCCz8TVgsLMPKCOGNx0,81
2
2
  code_puppy/agent.py,sha256=OtDhM9j5IrxuLStxM2X0h8tWXcaDAMS4mMZlbmAH7UU,3146
3
3
  code_puppy/agent_prompts.py,sha256=O8vzlEPct6qRNhKSRctJRwq3aDOhT_-vyVozS5DtmVA,6554
4
- code_puppy/config.py,sha256=DvmctmrHsOmjiXaiwT-4vAUiTZ4Cib-imyjKewI70eU,1661
4
+ code_puppy/config.py,sha256=LZMyrRH2YqUCvqZ6R9V1MlXG6MV9Zi800QnElja-jmk,2190
5
5
  code_puppy/main.py,sha256=bc27bk6rFge95H2BumTTzRLtOx43z5FnsmjIjQx_RpU,10052
6
6
  code_puppy/model_factory.py,sha256=Pi46jRr7JaBtJfNpSFk-fK2DlBy0Dv6tG2RcXLf4ZVI,11560
7
7
  code_puppy/models.json,sha256=7H-y97YK9BXhag5wJU19rtg24JtZWYx60RsBLBW3WiI,2162
@@ -10,7 +10,7 @@ code_puppy/version_checker.py,sha256=cK-eU7Y_yYjn7feIONqzzZUdiedozL0iiKXlGKjfq68
10
10
  code_puppy/command_line/__init__.py,sha256=y7WeRemfYppk8KVbCGeAIiTuiOszIURCDjOMZv_YRmU,45
11
11
  code_puppy/command_line/file_path_completion.py,sha256=HAlOu9XVYgJ7FbjdrhKBL0rFmCVFxSGGewdcfKTUsPw,2865
12
12
  code_puppy/command_line/meta_command_handler.py,sha256=Q-aDOZfefF0m2Bo-N6_DNVvT0gLrg8nBalrK1uJwEUA,3321
13
- code_puppy/command_line/model_picker_completion.py,sha256=5D2HkrMCtee7Eo6augls4KU6bh7tu7xR2zH5triRuZg,3658
13
+ code_puppy/command_line/model_picker_completion.py,sha256=bs-tor8vR5OShu6GB1yKt4RKdMaAI0W8tuFDeum0V1c,3907
14
14
  code_puppy/command_line/prompt_toolkit_completion.py,sha256=pOX3gd2-nn42ReM3_pp3g-NxvslZ9tBSd0S_IeyNelk,5156
15
15
  code_puppy/command_line/utils.py,sha256=L1PnV9tNupEW1zeziyb5aGAq8DYP8sMiuQbFYLO5Nus,1236
16
16
  code_puppy/tools/__init__.py,sha256=48BVpMt0HAMtz8G_z9SQhX6LnRqR83_AVfMQMf7bY0g,557
@@ -20,9 +20,9 @@ code_puppy/tools/common.py,sha256=dbmyZTrTBQh_0WWpaYN6jEync62W2mMrzNS8UFK0co4,14
20
20
  code_puppy/tools/file_modifications.py,sha256=V8as4Pp_qBJSUFuFl5Y-jpiJKH0tUEQ8dNdkGHzpQM0,11645
21
21
  code_puppy/tools/file_operations.py,sha256=9M-JntSSTElsLZ1EMLo9Xu2ifje-N0hjXbwARoBm2Tw,9722
22
22
  code_puppy/tools/web_search.py,sha256=HhcwX0MMvMDPFO8gr8gzgesD5wPXOypjkxyLZeNwL5g,589
23
- code_puppy-0.0.43.data/data/code_puppy/models.json,sha256=7H-y97YK9BXhag5wJU19rtg24JtZWYx60RsBLBW3WiI,2162
24
- code_puppy-0.0.43.dist-info/METADATA,sha256=AiR6F_KVYn0DmXNjwkSKL3KEl-dPHZCmYt2QJVs57D8,4716
25
- code_puppy-0.0.43.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
26
- code_puppy-0.0.43.dist-info/entry_points.txt,sha256=d8YkBvIUxF-dHNJAj-x4fPEqizbY5d_TwvYpc01U5kw,58
27
- code_puppy-0.0.43.dist-info/licenses/LICENSE,sha256=31u8x0SPgdOq3izJX41kgFazWsM43zPEF9eskzqbJMY,1075
28
- code_puppy-0.0.43.dist-info/RECORD,,
23
+ code_puppy-0.0.44.data/data/code_puppy/models.json,sha256=7H-y97YK9BXhag5wJU19rtg24JtZWYx60RsBLBW3WiI,2162
24
+ code_puppy-0.0.44.dist-info/METADATA,sha256=WoVZ0GiAyd05MLZhQzxnTe-wegvFvxQD5-oB_QCulnc,4716
25
+ code_puppy-0.0.44.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
26
+ code_puppy-0.0.44.dist-info/entry_points.txt,sha256=d8YkBvIUxF-dHNJAj-x4fPEqizbY5d_TwvYpc01U5kw,58
27
+ code_puppy-0.0.44.dist-info/licenses/LICENSE,sha256=31u8x0SPgdOq3izJX41kgFazWsM43zPEF9eskzqbJMY,1075
28
+ code_puppy-0.0.44.dist-info/RECORD,,