code-puppy 0.0.155__py3-none-any.whl → 0.0.156__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.
- code_puppy/agent.py +22 -2
- code_puppy/agents/agent_creator_agent.py +56 -11
- code_puppy/agents/json_agent.py +8 -0
- code_puppy/command_line/command_handler.py +83 -0
- code_puppy/command_line/prompt_toolkit_completion.py +18 -2
- {code_puppy-0.0.155.dist-info → code_puppy-0.0.156.dist-info}/METADATA +3 -2
- {code_puppy-0.0.155.dist-info → code_puppy-0.0.156.dist-info}/RECORD +11 -11
- {code_puppy-0.0.155.data → code_puppy-0.0.156.data}/data/code_puppy/models.json +0 -0
- {code_puppy-0.0.155.dist-info → code_puppy-0.0.156.dist-info}/WHEEL +0 -0
- {code_puppy-0.0.155.dist-info → code_puppy-0.0.156.dist-info}/entry_points.txt +0 -0
- {code_puppy-0.0.155.dist-info → code_puppy-0.0.156.dist-info}/licenses/LICENSE +0 -0
code_puppy/agent.py
CHANGED
|
@@ -134,7 +134,15 @@ def reload_code_generation_agent(message_group: str | None):
|
|
|
134
134
|
clear_model_cache()
|
|
135
135
|
clear_agent_cache()
|
|
136
136
|
|
|
137
|
-
|
|
137
|
+
# Check if current agent has a pinned model
|
|
138
|
+
from code_puppy.agents import get_current_agent_config
|
|
139
|
+
agent_config = get_current_agent_config()
|
|
140
|
+
agent_model_name = None
|
|
141
|
+
if hasattr(agent_config, 'get_model_name'):
|
|
142
|
+
agent_model_name = agent_config.get_model_name()
|
|
143
|
+
|
|
144
|
+
# Use agent-specific model if pinned, otherwise use global model
|
|
145
|
+
model_name = agent_model_name if agent_model_name else get_model_name()
|
|
138
146
|
emit_info(
|
|
139
147
|
f"[bold cyan]Loading Model: {model_name}[/bold cyan]",
|
|
140
148
|
message_group=message_group,
|
|
@@ -193,7 +201,19 @@ def get_code_generation_agent(force_reload=False, message_group: str | None = No
|
|
|
193
201
|
message_group = str(uuid.uuid4())
|
|
194
202
|
from code_puppy.config import get_model_name
|
|
195
203
|
|
|
196
|
-
|
|
204
|
+
# Get the global model name
|
|
205
|
+
global_model_name = get_model_name()
|
|
206
|
+
|
|
207
|
+
# Check if current agent has a pinned model
|
|
208
|
+
from code_puppy.agents import get_current_agent_config
|
|
209
|
+
agent_config = get_current_agent_config()
|
|
210
|
+
agent_model_name = None
|
|
211
|
+
if hasattr(agent_config, 'get_model_name'):
|
|
212
|
+
agent_model_name = agent_config.get_model_name()
|
|
213
|
+
|
|
214
|
+
# Use agent-specific model if pinned, otherwise use global model
|
|
215
|
+
model_name = agent_model_name if agent_model_name else global_model_name
|
|
216
|
+
|
|
197
217
|
if _code_generation_agent is None or _LAST_MODEL_NAME != model_name or force_reload:
|
|
198
218
|
return reload_code_generation_agent(message_group)
|
|
199
219
|
return _code_generation_agent
|
|
@@ -6,6 +6,7 @@ from typing import Dict, List, Optional
|
|
|
6
6
|
|
|
7
7
|
from .base_agent import BaseAgent
|
|
8
8
|
from code_puppy.config import get_user_agents_directory
|
|
9
|
+
from code_puppy.model_factory import ModelFactory
|
|
9
10
|
from code_puppy.tools import get_available_tool_names
|
|
10
11
|
|
|
11
12
|
|
|
@@ -27,6 +28,16 @@ class AgentCreatorAgent(BaseAgent):
|
|
|
27
28
|
def get_system_prompt(self) -> str:
|
|
28
29
|
available_tools = get_available_tool_names()
|
|
29
30
|
agents_dir = get_user_agents_directory()
|
|
31
|
+
|
|
32
|
+
# Load available models dynamically
|
|
33
|
+
models_config = ModelFactory.load_config()
|
|
34
|
+
model_descriptions = []
|
|
35
|
+
for model_name, model_info in models_config.items():
|
|
36
|
+
model_type = model_info.get('type', 'Unknown')
|
|
37
|
+
context_length = model_info.get('context_length', 'Unknown')
|
|
38
|
+
model_descriptions.append(f"- **{model_name}**: {model_type} model with {context_length} context")
|
|
39
|
+
|
|
40
|
+
available_models_str = "\n".join(model_descriptions)
|
|
30
41
|
|
|
31
42
|
return f"""You are the Agent Creator! 🏗️ Your mission is to help users create awesome JSON agent files through an interactive process.
|
|
32
43
|
|
|
@@ -39,7 +50,7 @@ You specialize in:
|
|
|
39
50
|
- Creating properly structured JSON agent files
|
|
40
51
|
- Explaining agent capabilities and best practices
|
|
41
52
|
|
|
42
|
-
## MANDATORY
|
|
53
|
+
## MANDATORY AGENT CREATION PROCESS
|
|
43
54
|
|
|
44
55
|
**YOU MUST ALWAYS:**
|
|
45
56
|
1. Ask the user what the agent should be able to do
|
|
@@ -47,6 +58,8 @@ You specialize in:
|
|
|
47
58
|
3. List ALL available tools so they can see other options
|
|
48
59
|
4. Ask them to confirm their tool selection
|
|
49
60
|
5. Explain why each selected tool is useful for their agent
|
|
61
|
+
6. Ask if they want to pin a specific model to the agent using your `ask_about_model_pinning` method
|
|
62
|
+
7. Include the model in the final JSON if the user chooses to pin one
|
|
50
63
|
|
|
51
64
|
## JSON Agent Schema
|
|
52
65
|
|
|
@@ -63,7 +76,8 @@ Here's the complete schema for JSON agent files:
|
|
|
63
76
|
"user_prompt": "How can I help?", // OPTIONAL: Custom greeting
|
|
64
77
|
"tools_config": {{ // OPTIONAL: Tool configuration
|
|
65
78
|
"timeout": 60
|
|
66
|
-
}}
|
|
79
|
+
}},
|
|
80
|
+
"model": "model-name" // OPTIONAL: Pin a specific model for this agent
|
|
67
81
|
}}
|
|
68
82
|
```
|
|
69
83
|
|
|
@@ -77,10 +91,24 @@ Here's the complete schema for JSON agent files:
|
|
|
77
91
|
- `display_name`: Pretty display name (defaults to title-cased name + 🤖)
|
|
78
92
|
- `user_prompt`: Custom user greeting
|
|
79
93
|
- `tools_config`: Tool configuration object
|
|
94
|
+
- `model`: Pin a specific model for this agent (defaults to global model)
|
|
80
95
|
|
|
81
96
|
## ALL AVAILABLE TOOLS:
|
|
82
97
|
{", ".join(f"- **{tool}**" for tool in available_tools)}
|
|
83
98
|
|
|
99
|
+
## ALL AVAILABLE MODELS:
|
|
100
|
+
{available_models_str}
|
|
101
|
+
|
|
102
|
+
Users can optionally pin a specific model to their agent to override the global default.
|
|
103
|
+
|
|
104
|
+
### When to Pin Models:
|
|
105
|
+
- For specialized agents that need specific capabilities (e.g., code-heavy agents might need a coding model)
|
|
106
|
+
- When cost optimization is important (use a smaller model for simple tasks)
|
|
107
|
+
- For privacy-sensitive work (use a local model)
|
|
108
|
+
- When specific performance characteristics are needed
|
|
109
|
+
|
|
110
|
+
**When asking users about model pinning, explain these use cases and why it might be beneficial for their agent!**
|
|
111
|
+
|
|
84
112
|
## Tool Categories & Suggestions:
|
|
85
113
|
|
|
86
114
|
### 📁 **File Operations** (for agents working with files):
|
|
@@ -122,13 +150,15 @@ Use this to recursively search for a string across files starting from the speci
|
|
|
122
150
|
|
|
123
151
|
### Tool Usage Instructions:
|
|
124
152
|
|
|
125
|
-
#### `
|
|
153
|
+
#### `ask_about_model_pinning(agent_config)`
|
|
154
|
+
Use this method to ask the user whether they want to pin a specific model to their agent. Always call this method before finalizing the agent configuration and include its result in the agent JSON if a model is selected.
|
|
126
155
|
This is an all-in-one file-modification tool. It supports the following Pydantic Object payload types:
|
|
127
156
|
1. ContentPayload: {{ file_path="example.py", "content": "…", "overwrite": true|false }} → Create or overwrite a file with the provided content.
|
|
128
157
|
2. ReplacementsPayload: {{ file_path="example.py", "replacements": [ {{ "old_str": "…", "new_str": "…" }}, … ] }} → Perform exact text replacements inside an existing file.
|
|
129
158
|
3. DeleteSnippetPayload: {{ file_path="example.py", "delete_snippet": "…" }} → Remove a snippet of text from an existing file.
|
|
130
159
|
|
|
131
160
|
Arguments:
|
|
161
|
+
- agent_config (required): The agent configuration dictionary built so far.
|
|
132
162
|
- payload (required): One of the Pydantic payload types above.
|
|
133
163
|
|
|
134
164
|
Example (create):
|
|
@@ -271,11 +301,12 @@ This detailed documentation should be copied verbatim into any agent that will b
|
|
|
271
301
|
3. **🎯 SUGGEST TOOLS** based on their answer with explanations
|
|
272
302
|
4. **📋 SHOW ALL TOOLS** so they know all options
|
|
273
303
|
5. **✅ CONFIRM TOOL SELECTION** and explain choices
|
|
274
|
-
6. **
|
|
275
|
-
7. **
|
|
276
|
-
8.
|
|
277
|
-
9.
|
|
278
|
-
10.
|
|
304
|
+
6. **Ask about model pinning**: "Do you want to pin a specific model to this agent?" with list of options
|
|
305
|
+
7. **Craft system prompt** that defines agent behavior, including ALL detailed tool documentation for selected tools
|
|
306
|
+
8. **Generate complete JSON** with proper structure
|
|
307
|
+
9. **🚨 MANDATORY: ASK FOR USER CONFIRMATION** of the generated JSON
|
|
308
|
+
10. **🤖 AUTOMATICALLY CREATE THE FILE** once user confirms (no additional asking)
|
|
309
|
+
11. **Validate and test** the new agent
|
|
279
310
|
|
|
280
311
|
## CRITICAL WORKFLOW RULES:
|
|
281
312
|
|
|
@@ -302,6 +333,14 @@ This detailed documentation should be copied verbatim into any agent that will b
|
|
|
302
333
|
**For "File organizer":** → Suggest `list_files`, `read_file`, `edit_file`, `delete_file`, `agent_share_your_reasoning`
|
|
303
334
|
**For "Agent orchestrator":** → Suggest `list_agents`, `invoke_agent`, `agent_share_your_reasoning`
|
|
304
335
|
|
|
336
|
+
## Model Selection Guidance:
|
|
337
|
+
|
|
338
|
+
**For code-heavy tasks**: → Suggest `Cerebras-Qwen3-Coder-480b`, `grok-code-fast-1`, or `gpt-4.1`
|
|
339
|
+
**For document analysis**: → Suggest `gemini-2.5-flash-preview-05-20` or `claude-4-0-sonnet`
|
|
340
|
+
**For general reasoning**: → Suggest `gpt-5` or `o3`
|
|
341
|
+
**For cost-conscious tasks**: → Suggest `gpt-4.1-mini` or `gpt-4.1-nano`
|
|
342
|
+
**For local/private work**: → Suggest `ollama-llama3.3` or `gpt-4.1-custom`
|
|
343
|
+
|
|
305
344
|
## Best Practices
|
|
306
345
|
|
|
307
346
|
- Use descriptive names with hyphens (e.g., "python-tutor", "code-reviewer")
|
|
@@ -320,6 +359,7 @@ This detailed documentation should be copied verbatim into any agent that will b
|
|
|
320
359
|
"name": "python-tutor",
|
|
321
360
|
"display_name": "Python Tutor 🐍",
|
|
322
361
|
"description": "Teaches Python programming concepts with examples",
|
|
362
|
+
"model": "gpt-5",
|
|
323
363
|
"system_prompt": [
|
|
324
364
|
"You are a patient Python programming tutor.",
|
|
325
365
|
"You explain concepts clearly with practical examples.",
|
|
@@ -327,7 +367,8 @@ This detailed documentation should be copied verbatim into any agent that will b
|
|
|
327
367
|
"Always encourage learning and provide constructive feedback."
|
|
328
368
|
],
|
|
329
369
|
"tools": ["read_file", "edit_file", "agent_share_your_reasoning"],
|
|
330
|
-
"user_prompt": "What Python concept would you like to learn today?"
|
|
370
|
+
"user_prompt": "What Python concept would you like to learn today?",
|
|
371
|
+
"model": "Cerebras-Qwen3-Coder-480b" // Optional: Pin to a specific code model
|
|
331
372
|
}}
|
|
332
373
|
```
|
|
333
374
|
|
|
@@ -344,7 +385,8 @@ This detailed documentation should be copied verbatim into any agent that will b
|
|
|
344
385
|
"You follow language-specific best practices and conventions."
|
|
345
386
|
],
|
|
346
387
|
"tools": ["list_files", "read_file", "grep", "agent_share_your_reasoning"],
|
|
347
|
-
"user_prompt": "Which code would you like me to review?"
|
|
388
|
+
"user_prompt": "Which code would you like me to review?",
|
|
389
|
+
"model": "claude-4-0-sonnet" // Optional: Pin to a model good at analysis
|
|
348
390
|
}}
|
|
349
391
|
```
|
|
350
392
|
|
|
@@ -360,7 +402,8 @@ This detailed documentation should be copied verbatim into any agent that will b
|
|
|
360
402
|
"You coordinate between multiple agents to get complex work done."
|
|
361
403
|
],
|
|
362
404
|
"tools": ["list_agents", "invoke_agent", "agent_share_your_reasoning"],
|
|
363
|
-
"user_prompt": "What can I help you accomplish today?"
|
|
405
|
+
"user_prompt": "What can I help you accomplish today?",
|
|
406
|
+
"model": "gpt-5" // Optional: Pin to a reasoning-focused model
|
|
364
407
|
}}
|
|
365
408
|
```
|
|
366
409
|
|
|
@@ -370,9 +413,11 @@ Be interactive - ask questions, suggest improvements, and guide users through th
|
|
|
370
413
|
|
|
371
414
|
## REMEMBER: COMPLETE THE WORKFLOW!
|
|
372
415
|
- After generating JSON, ALWAYS get confirmation
|
|
416
|
+
- Ask about model pinning using your `ask_about_model_pinning` method
|
|
373
417
|
- Once confirmed, IMMEDIATELY create the file (don't ask again)
|
|
374
418
|
- Use your `edit_file` tool to save the JSON
|
|
375
419
|
- Always explain how to use the new agent with `/agent agent-name`
|
|
420
|
+
- Mention that users can later change or pin the model with `/pin_model agent-name model-name`
|
|
376
421
|
|
|
377
422
|
## Tool Documentation Requirements
|
|
378
423
|
|
code_puppy/agents/json_agent.py
CHANGED
|
@@ -101,6 +101,14 @@ class JSONAgent(BaseAgent):
|
|
|
101
101
|
"""Get tool configuration from JSON config."""
|
|
102
102
|
return self._config.get("tools_config")
|
|
103
103
|
|
|
104
|
+
def get_model_name(self) -> Optional[str]:
|
|
105
|
+
"""Get pinned model name from JSON config, if specified.
|
|
106
|
+
|
|
107
|
+
Returns:
|
|
108
|
+
Model name to use for this agent, or None to use global default.
|
|
109
|
+
"""
|
|
110
|
+
return self._config.get("model")
|
|
111
|
+
|
|
104
112
|
|
|
105
113
|
def discover_json_agents() -> Dict[str, str]:
|
|
106
114
|
"""Discover JSON agent files in the user's agents directory.
|
|
@@ -42,6 +42,10 @@ def get_commands_help():
|
|
|
42
42
|
help_lines.append(
|
|
43
43
|
Text("/model, /m", style="cyan") + Text(" <model> Set active model")
|
|
44
44
|
)
|
|
45
|
+
help_lines.append(
|
|
46
|
+
Text("/pin_model", style="cyan")
|
|
47
|
+
+ Text(" <agent> <model> Pin a specific model to an agent")
|
|
48
|
+
)
|
|
45
49
|
help_lines.append(
|
|
46
50
|
Text("/mcp", style="cyan")
|
|
47
51
|
+ Text(" Manage MCP servers (list, start, stop, status, etc.)")
|
|
@@ -398,6 +402,85 @@ def handle_command(command: str):
|
|
|
398
402
|
emit_info(help_text, message_group_id=group_id)
|
|
399
403
|
return True
|
|
400
404
|
|
|
405
|
+
if command.startswith("/pin_model"):
|
|
406
|
+
# Handle agent model pinning
|
|
407
|
+
from code_puppy.agents.json_agent import discover_json_agents
|
|
408
|
+
from code_puppy.command_line.model_picker_completion import load_model_names
|
|
409
|
+
import json
|
|
410
|
+
|
|
411
|
+
tokens = command.split()
|
|
412
|
+
|
|
413
|
+
if len(tokens) != 3:
|
|
414
|
+
emit_warning("Usage: /pin_model <agent-name> <model-name>")
|
|
415
|
+
|
|
416
|
+
# Show available models and JSON agents
|
|
417
|
+
available_models = load_model_names()
|
|
418
|
+
json_agents = discover_json_agents()
|
|
419
|
+
|
|
420
|
+
emit_info("Available models:")
|
|
421
|
+
for model in available_models:
|
|
422
|
+
emit_info(f" [cyan]{model}[/cyan]")
|
|
423
|
+
|
|
424
|
+
if json_agents:
|
|
425
|
+
emit_info("\nAvailable JSON agents:")
|
|
426
|
+
for agent_name, agent_path in json_agents.items():
|
|
427
|
+
emit_info(f" [cyan]{agent_name}[/cyan] ({agent_path})")
|
|
428
|
+
return True
|
|
429
|
+
|
|
430
|
+
agent_name = tokens[1].lower()
|
|
431
|
+
model_name = tokens[2]
|
|
432
|
+
|
|
433
|
+
# Check if model exists
|
|
434
|
+
available_models = load_model_names()
|
|
435
|
+
if model_name not in available_models:
|
|
436
|
+
emit_error(f"Model '{model_name}' not found")
|
|
437
|
+
emit_warning(f"Available models: {', '.join(available_models)}")
|
|
438
|
+
return True
|
|
439
|
+
|
|
440
|
+
# Check that we're modifying a JSON agent (not a built-in Python agent)
|
|
441
|
+
json_agents = discover_json_agents()
|
|
442
|
+
if agent_name not in json_agents:
|
|
443
|
+
emit_error(f"JSON agent '{agent_name}' not found")
|
|
444
|
+
|
|
445
|
+
# Show available JSON agents
|
|
446
|
+
if json_agents:
|
|
447
|
+
emit_info("Available JSON agents:")
|
|
448
|
+
for name, path in json_agents.items():
|
|
449
|
+
emit_info(f" [cyan]{name}[/cyan] ({path})")
|
|
450
|
+
return True
|
|
451
|
+
|
|
452
|
+
agent_file_path = json_agents[agent_name]
|
|
453
|
+
|
|
454
|
+
# Load, modify, and save the agent configuration
|
|
455
|
+
try:
|
|
456
|
+
with open(agent_file_path, "r", encoding="utf-8") as f:
|
|
457
|
+
agent_config = json.load(f)
|
|
458
|
+
|
|
459
|
+
# Set the model
|
|
460
|
+
agent_config["model"] = model_name
|
|
461
|
+
|
|
462
|
+
# Save the updated configuration
|
|
463
|
+
with open(agent_file_path, "w", encoding="utf-8") as f:
|
|
464
|
+
json.dump(agent_config, f, indent=2, ensure_ascii=False)
|
|
465
|
+
|
|
466
|
+
emit_success(f"Model '{model_name}' pinned to agent '{agent_name}'")
|
|
467
|
+
|
|
468
|
+
# If this is the current agent, reload it to use the new model
|
|
469
|
+
from code_puppy.agents import get_current_agent_config
|
|
470
|
+
from code_puppy.agents.runtime_manager import get_runtime_agent_manager
|
|
471
|
+
|
|
472
|
+
current_agent = get_current_agent_config()
|
|
473
|
+
if current_agent.name == agent_name:
|
|
474
|
+
manager = get_runtime_agent_manager()
|
|
475
|
+
manager.reload_agent()
|
|
476
|
+
emit_info(f"Active agent reloaded with pinned model '{model_name}'")
|
|
477
|
+
|
|
478
|
+
return True
|
|
479
|
+
|
|
480
|
+
except Exception as e:
|
|
481
|
+
emit_error(f"Failed to pin model to agent '{agent_name}': {e}")
|
|
482
|
+
return True
|
|
483
|
+
|
|
401
484
|
if command.startswith("/generate-pr-description"):
|
|
402
485
|
# Parse directory argument (e.g., /generate-pr-description @some/dir)
|
|
403
486
|
tokens = command.split()
|
|
@@ -139,12 +139,28 @@ def get_prompt_with_active_model(base: str = ">>> "):
|
|
|
139
139
|
from code_puppy.agents.agent_manager import get_current_agent_config
|
|
140
140
|
|
|
141
141
|
puppy = get_puppy_name()
|
|
142
|
-
|
|
142
|
+
global_model = get_active_model() or "(default)"
|
|
143
143
|
|
|
144
144
|
# Get current agent information
|
|
145
145
|
current_agent = get_current_agent_config()
|
|
146
146
|
agent_display = current_agent.display_name if current_agent else "code-puppy"
|
|
147
147
|
|
|
148
|
+
# Check if current agent has a pinned model
|
|
149
|
+
agent_model = None
|
|
150
|
+
if current_agent and hasattr(current_agent, 'get_model_name'):
|
|
151
|
+
agent_model = current_agent.get_model_name()
|
|
152
|
+
|
|
153
|
+
# Determine which model to display
|
|
154
|
+
if agent_model and agent_model != global_model:
|
|
155
|
+
# Show both models when they differ
|
|
156
|
+
model_display = f"[{global_model} → {agent_model}]"
|
|
157
|
+
elif agent_model:
|
|
158
|
+
# Show only the agent model when pinned
|
|
159
|
+
model_display = f"[{agent_model}]"
|
|
160
|
+
else:
|
|
161
|
+
# Show only the global model when no agent model is pinned
|
|
162
|
+
model_display = f"[{global_model}]"
|
|
163
|
+
|
|
148
164
|
cwd = os.getcwd()
|
|
149
165
|
home = os.path.expanduser("~")
|
|
150
166
|
if cwd.startswith(home):
|
|
@@ -157,7 +173,7 @@ def get_prompt_with_active_model(base: str = ">>> "):
|
|
|
157
173
|
("class:puppy", f"{puppy}"),
|
|
158
174
|
("", " "),
|
|
159
175
|
("class:agent", f"[{agent_display}] "),
|
|
160
|
-
("class:model",
|
|
176
|
+
("class:model", model_display + " "),
|
|
161
177
|
("class:cwd", "(" + str(cwd_display) + ") "),
|
|
162
178
|
("class:arrow", str(base)),
|
|
163
179
|
]
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: code-puppy
|
|
3
|
-
Version: 0.0.
|
|
3
|
+
Version: 0.0.156
|
|
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
|
|
@@ -10,8 +10,9 @@ License-File: LICENSE
|
|
|
10
10
|
Classifier: License :: OSI Approved :: MIT License
|
|
11
11
|
Classifier: Operating System :: OS Independent
|
|
12
12
|
Classifier: Programming Language :: Python :: 3
|
|
13
|
-
Classifier: Programming Language :: Python :: 3.10
|
|
14
13
|
Classifier: Programming Language :: Python :: 3.11
|
|
14
|
+
Classifier: Programming Language :: Python :: 3.12
|
|
15
|
+
Classifier: Programming Language :: Python :: 3.13
|
|
15
16
|
Classifier: Topic :: Software Development :: Code Generators
|
|
16
17
|
Requires-Python: >=3.11
|
|
17
18
|
Requires-Dist: bs4>=0.0.2
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
code_puppy/__init__.py,sha256=ehbM1-wMjNmOXk_DBhhJECFyBv2dRHwwo7ucjHeM68E,107
|
|
2
2
|
code_puppy/__main__.py,sha256=pDVssJOWP8A83iFkxMLY9YteHYat0EyWDQqMkKHpWp4,203
|
|
3
|
-
code_puppy/agent.py,sha256=
|
|
3
|
+
code_puppy/agent.py,sha256=hZOrJJJDwtLtb82b6Zyt5CZb8RbzDtvHMIBUPVYsgOM,8133
|
|
4
4
|
code_puppy/callbacks.py,sha256=6wYB6K_fGSCkKKEFaYOYkJT45WaV5W_NhUIzcvVH_nU,5060
|
|
5
5
|
code_puppy/config.py,sha256=nD-1Ftwzd1LgZIi5Pi0P4_8DvPkZiOwFXQ5UuYFMO6E,16207
|
|
6
6
|
code_puppy/http_utils.py,sha256=BAvt4hed7fVMXglA7eS9gOb08h2YTuOyai6VmQq09fg,3432
|
|
@@ -16,20 +16,20 @@ code_puppy/summarization_agent.py,sha256=kos4_YK-l_YjYRq4Fs4X5YoTUbmAcDhhPqefL-r
|
|
|
16
16
|
code_puppy/version_checker.py,sha256=bjLDmgGPrl7XnYwX1u13O8uFlsfikV90PK6nbA9Z9QU,1150
|
|
17
17
|
code_puppy/agents/__init__.py,sha256=SwtHGNG1GIgDBv7y3EGIXOXEWrG_Ou7fEknNgFbrHv8,594
|
|
18
18
|
code_puppy/agents/agent_code_puppy.py,sha256=sbuQxLzlkMbPOyLbILbXOAHecRsxbFdQt13HJ_GEqQo,7972
|
|
19
|
-
code_puppy/agents/agent_creator_agent.py,sha256=
|
|
19
|
+
code_puppy/agents/agent_creator_agent.py,sha256=jyOfqCa4d3Tqlv0ZODjK1J6cRwJjBxKyNa9RQSdsB44,23256
|
|
20
20
|
code_puppy/agents/agent_manager.py,sha256=nXvro6fpX8KA-NedRoVJuhJW966trrePOrH4eAnqq40,17034
|
|
21
21
|
code_puppy/agents/agent_orchestrator.json,sha256=Iqnc0p6ICoAlUTMkEsi1XXMXJi4pdxVnWZUMaih6s5o,1267
|
|
22
22
|
code_puppy/agents/base_agent.py,sha256=XYSff6IQX9Z6C7hPVbN_YXC2xfjwd268e2jtG3ZGnVk,3450
|
|
23
|
-
code_puppy/agents/json_agent.py,sha256=
|
|
23
|
+
code_puppy/agents/json_agent.py,sha256=y6AYE3Fx9LhmemcPzt46d7359MNnkGIjU83YBGNer2g,4533
|
|
24
24
|
code_puppy/agents/runtime_manager.py,sha256=fUOBpmETo3wTyLc5wWBfGKSX1HFRQWSpuwxYAOyA-_8,10059
|
|
25
25
|
code_puppy/command_line/__init__.py,sha256=y7WeRemfYppk8KVbCGeAIiTuiOszIURCDjOMZv_YRmU,45
|
|
26
|
-
code_puppy/command_line/command_handler.py,sha256=
|
|
26
|
+
code_puppy/command_line/command_handler.py,sha256=KVZySqUMJwrRadKSUCcWa62FZ_lge5XjxD0Hebzr2EE,24520
|
|
27
27
|
code_puppy/command_line/file_path_completion.py,sha256=gw8NpIxa6GOpczUJRyh7VNZwoXKKn-yvCqit7h2y6Gg,2931
|
|
28
28
|
code_puppy/command_line/load_context_completion.py,sha256=6eZxV6Bs-EFwZjN93V8ZDZUC-6RaWxvtZk-04Wtikyw,2240
|
|
29
29
|
code_puppy/command_line/meta_command_handler.py,sha256=80aK5JQOaqjt149qBmSsM02uy2Cikkee8zaQnu5u2KQ,5712
|
|
30
30
|
code_puppy/command_line/model_picker_completion.py,sha256=adxp3NZaDV67YqaGv0SG7WVvOTXN0UwkkLqxTsknAvs,4126
|
|
31
31
|
code_puppy/command_line/motd.py,sha256=PEdkp3ZnydVfvd7mNJylm8YyFNUKg9jmY6uwkA1em8c,2152
|
|
32
|
-
code_puppy/command_line/prompt_toolkit_completion.py,sha256=
|
|
32
|
+
code_puppy/command_line/prompt_toolkit_completion.py,sha256=saq1ZRjcxK8s2M-SKy-7I62xGC4Cpxdw02bvxbMwTxA,10010
|
|
33
33
|
code_puppy/command_line/utils.py,sha256=7eyxDHjPjPB9wGDJQQcXV_zOsGdYsFgI0SGCetVmTqE,1251
|
|
34
34
|
code_puppy/command_line/mcp/__init__.py,sha256=0-OQuwjq_pLiTVJ1_NrirVwdRerghyKs_MTZkwPC7YY,315
|
|
35
35
|
code_puppy/command_line/mcp/add_command.py,sha256=RghGmOCjwwYJfrbLiV5UZojMA4-FNPlM04LKci0rpAw,6415
|
|
@@ -104,9 +104,9 @@ code_puppy/tui/screens/help.py,sha256=eJuPaOOCp7ZSUlecearqsuX6caxWv7NQszUh0tZJjB
|
|
|
104
104
|
code_puppy/tui/screens/mcp_install_wizard.py,sha256=xqwN5omltMkfxWZwXj3D2PbXbtrxUi1dT0XT77oxOKk,27685
|
|
105
105
|
code_puppy/tui/screens/settings.py,sha256=GMpv-qa08rorAE9mj3AjmqjZFPhmeJ_GWd-DBHG6iAA,10671
|
|
106
106
|
code_puppy/tui/screens/tools.py,sha256=3pr2Xkpa9Js6Yhf1A3_wQVRzFOui-KDB82LwrsdBtyk,1715
|
|
107
|
-
code_puppy-0.0.
|
|
108
|
-
code_puppy-0.0.
|
|
109
|
-
code_puppy-0.0.
|
|
110
|
-
code_puppy-0.0.
|
|
111
|
-
code_puppy-0.0.
|
|
112
|
-
code_puppy-0.0.
|
|
107
|
+
code_puppy-0.0.156.data/data/code_puppy/models.json,sha256=jNLDAGhbASNAhul64H4SMS5V4Y6QKW09WcNej4I_4oc,4034
|
|
108
|
+
code_puppy-0.0.156.dist-info/METADATA,sha256=-z0wFe40Q3FDRWzi1Z5vv-2VmPBu2fwa_57kwZHYhJg,19567
|
|
109
|
+
code_puppy-0.0.156.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
|
|
110
|
+
code_puppy-0.0.156.dist-info/entry_points.txt,sha256=d8YkBvIUxF-dHNJAj-x4fPEqizbY5d_TwvYpc01U5kw,58
|
|
111
|
+
code_puppy-0.0.156.dist-info/licenses/LICENSE,sha256=31u8x0SPgdOq3izJX41kgFazWsM43zPEF9eskzqbJMY,1075
|
|
112
|
+
code_puppy-0.0.156.dist-info/RECORD,,
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|