code-puppy 0.0.172__py3-none-any.whl → 0.0.174__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.
Files changed (34) hide show
  1. code_puppy/agent.py +14 -14
  2. code_puppy/agents/__init__.py +4 -6
  3. code_puppy/agents/agent_manager.py +15 -187
  4. code_puppy/agents/base_agent.py +798 -4
  5. code_puppy/command_line/command_handler.py +40 -41
  6. code_puppy/command_line/mcp/add_command.py +1 -1
  7. code_puppy/command_line/mcp/install_command.py +1 -1
  8. code_puppy/command_line/mcp/start_all_command.py +3 -6
  9. code_puppy/command_line/mcp/start_command.py +0 -5
  10. code_puppy/command_line/mcp/stop_all_command.py +3 -6
  11. code_puppy/command_line/mcp/stop_command.py +2 -6
  12. code_puppy/command_line/model_picker_completion.py +2 -2
  13. code_puppy/command_line/prompt_toolkit_completion.py +2 -2
  14. code_puppy/config.py +2 -3
  15. code_puppy/main.py +13 -49
  16. code_puppy/messaging/message_queue.py +4 -4
  17. code_puppy/summarization_agent.py +2 -2
  18. code_puppy/tools/agent_tools.py +5 -4
  19. code_puppy/tools/browser/vqa_agent.py +1 -3
  20. code_puppy/tools/command_runner.py +1 -1
  21. code_puppy/tui/app.py +49 -78
  22. code_puppy/tui/screens/settings.py +2 -2
  23. code_puppy/tui_state.py +55 -0
  24. {code_puppy-0.0.172.dist-info → code_puppy-0.0.174.dist-info}/METADATA +2 -2
  25. {code_puppy-0.0.172.dist-info → code_puppy-0.0.174.dist-info}/RECORD +29 -33
  26. code_puppy/agents/agent_orchestrator.json +0 -26
  27. code_puppy/agents/runtime_manager.py +0 -272
  28. code_puppy/command_line/meta_command_handler.py +0 -153
  29. code_puppy/message_history_processor.py +0 -486
  30. code_puppy/state_management.py +0 -159
  31. {code_puppy-0.0.172.data → code_puppy-0.0.174.data}/data/code_puppy/models.json +0 -0
  32. {code_puppy-0.0.172.dist-info → code_puppy-0.0.174.dist-info}/WHEEL +0 -0
  33. {code_puppy-0.0.172.dist-info → code_puppy-0.0.174.dist-info}/entry_points.txt +0 -0
  34. {code_puppy-0.0.172.dist-info → code_puppy-0.0.174.dist-info}/licenses/LICENSE +0 -0
@@ -6,7 +6,7 @@ from functools import lru_cache
6
6
  from typing import Optional
7
7
 
8
8
  from pydantic import BaseModel, Field
9
- from pydantic_ai import Agent, BinaryContent, InstrumentationSettings
9
+ from pydantic_ai import Agent, BinaryContent
10
10
 
11
11
  from code_puppy.config import get_vqa_model_name
12
12
  from code_puppy.model_factory import ModelFactory
@@ -26,8 +26,6 @@ def _load_vqa_agent(model_name: str) -> Agent[None, VisualAnalysisResult]:
26
26
  models_config = ModelFactory.load_config()
27
27
  model = ModelFactory.get_model(model_name, models_config)
28
28
 
29
- instrumentation = InstrumentationSettings(include_binary_content=False)
30
-
31
29
  instructions = (
32
30
  "You are a visual analysis specialist. Answer the user's question about the provided image. "
33
31
  "Always respond using the structured schema: answer, confidence (0-1 float), observations. "
@@ -19,7 +19,7 @@ from code_puppy.messaging import (
19
19
  emit_system_message,
20
20
  emit_warning,
21
21
  )
22
- from code_puppy.state_management import is_tui_mode
22
+ from code_puppy.tui_state import is_tui_mode
23
23
  from code_puppy.tools.common import generate_group_id
24
24
 
25
25
  # Maximum line length for shell command output to prevent massive token usage
code_puppy/tui/app.py CHANGED
@@ -12,27 +12,19 @@ from textual.events import Resize
12
12
  from textual.reactive import reactive
13
13
  from textual.widgets import Footer, ListView
14
14
 
15
- from code_puppy.agent import get_code_generation_agent, get_custom_usage_limits
16
- from code_puppy.agents.runtime_manager import get_runtime_agent_manager
17
15
  from code_puppy.command_line.command_handler import handle_command
18
16
  from code_puppy.config import (
19
- get_model_name,
17
+ get_global_model_name,
20
18
  get_puppy_name,
21
19
  initialize_command_history_file,
22
20
  save_command_to_history,
23
21
  )
24
- from code_puppy.message_history_processor import (
25
- message_history_accumulator,
26
- prune_interrupted_tool_calls,
27
- )
22
+ # message_history_accumulator and prune_interrupted_tool_calls have been moved to BaseAgent class
23
+ from code_puppy.agents.agent_manager import get_current_agent
28
24
 
29
25
  # Import our message queue system
30
26
  from code_puppy.messaging import TUIRenderer, get_global_queue
31
- from code_puppy.state_management import (
32
- clear_message_history,
33
- get_message_history,
34
- set_message_history,
35
- )
27
+
36
28
  from code_puppy.tui.components import (
37
29
  ChatView,
38
30
  CustomTextArea,
@@ -41,7 +33,6 @@ from code_puppy.tui.components import (
41
33
  StatusBar,
42
34
  )
43
35
 
44
- from .. import state_management
45
36
 
46
37
  # Import shared message classes
47
38
  from .messages import CommandSelected, HistoryEntrySelected
@@ -112,9 +103,9 @@ class CodePuppyTUI(App):
112
103
  def _on_agent_reload(self, agent_id: str, agent_name: str) -> None:
113
104
  """Callback for when agent is reloaded/changed."""
114
105
  # Get the updated agent configuration
115
- from code_puppy.agents.agent_manager import get_current_agent_config
106
+ from code_puppy.agents.agent_manager import get_current_agent
116
107
 
117
- current_agent_config = get_current_agent_config()
108
+ current_agent_config = get_current_agent()
118
109
  new_agent_display = (
119
110
  current_agent_config.display_name if current_agent_config else "code-puppy"
120
111
  )
@@ -127,7 +118,6 @@ class CodePuppyTUI(App):
127
118
 
128
119
  def __init__(self, initial_command: str = None, **kwargs):
129
120
  super().__init__(**kwargs)
130
- self.agent_manager = None
131
121
  self._current_worker = None
132
122
  self.initial_command = initial_command
133
123
 
@@ -149,7 +139,7 @@ class CodePuppyTUI(App):
149
139
  def on_mount(self) -> None:
150
140
  """Initialize the application when mounted."""
151
141
  # Register this app instance for global access
152
- from code_puppy.state_management import set_tui_app_instance
142
+ from code_puppy.tui_state import set_tui_app_instance
153
143
 
154
144
  set_tui_app_instance(self)
155
145
 
@@ -159,13 +149,13 @@ class CodePuppyTUI(App):
159
149
  register_callback("agent_reload", self._on_agent_reload)
160
150
 
161
151
  # Load configuration
162
- self.current_model = get_model_name()
152
+ self.current_model = get_global_model_name()
163
153
  self.puppy_name = get_puppy_name()
164
154
 
165
155
  # Get current agent information
166
- from code_puppy.agents.agent_manager import get_current_agent_config
156
+ from code_puppy.agents.agent_manager import get_current_agent
167
157
 
168
- current_agent_config = get_current_agent_config()
158
+ current_agent_config = get_current_agent()
169
159
  self.current_agent = (
170
160
  current_agent_config.display_name if current_agent_config else "code-puppy"
171
161
  )
@@ -174,8 +164,6 @@ class CodePuppyTUI(App):
174
164
  self._update_title()
175
165
 
176
166
  # Use runtime manager to ensure we always have the current agent
177
- self.agent_manager = get_runtime_agent_manager()
178
-
179
167
  # Update status bar
180
168
  status_bar = self.query_one(StatusBar)
181
169
  status_bar.current_model = self.current_model
@@ -188,7 +176,7 @@ class CodePuppyTUI(App):
188
176
  )
189
177
 
190
178
  # Get current agent and display info
191
- get_code_generation_agent()
179
+ agent = get_current_agent()
192
180
  self.add_system_message(
193
181
  f"🐕 Loaded agent '{self.puppy_name}' with model '{self.current_model}'"
194
182
  )
@@ -430,11 +418,6 @@ class CodePuppyTUI(App):
430
418
  else:
431
419
  # Only cancel the agent task if NO processes were killed
432
420
  self._current_worker.cancel()
433
- state_management.set_message_history(
434
- prune_interrupted_tool_calls(
435
- state_management.get_message_history()
436
- )
437
- )
438
421
  self.add_system_message("⚠️ Processing cancelled by user")
439
422
  # Stop spinner and clear state only when agent is actually cancelled
440
423
  self._current_worker = None
@@ -491,55 +474,44 @@ class CodePuppyTUI(App):
491
474
  return
492
475
 
493
476
  # Process with agent
494
- if self.agent_manager:
495
- try:
496
- self.update_agent_progress("Processing", 25)
497
-
498
- # Use agent_manager's run_with_mcp to handle MCP servers properly
499
- try:
500
- self.update_agent_progress("Processing", 50)
501
- result = await self.agent_manager.run_with_mcp(
502
- message,
503
- message_history=get_message_history(),
504
- usage_limits=get_custom_usage_limits(),
505
- )
506
-
507
- if not result or not hasattr(result, "output"):
508
- self.add_error_message("Invalid response format from agent")
509
- return
510
-
511
- self.update_agent_progress("Processing", 75)
512
- agent_response = result.output
513
- self.add_agent_message(agent_response)
514
-
515
- # Update message history
516
- new_msgs = result.new_messages()
517
- message_history_accumulator(new_msgs)
518
-
519
- # Refresh history display to show new interaction
520
- self.refresh_history_display()
477
+ try:
478
+ self.update_agent_progress("Processing", 25)
521
479
 
522
- except Exception as eg:
523
- # Handle TaskGroup and other exceptions
524
- # BaseExceptionGroup is only available in Python 3.11+
525
- if hasattr(eg, "exceptions"):
526
- # Handle TaskGroup exceptions specifically (Python 3.11+)
527
- for e in eg.exceptions:
528
- self.add_error_message(f"MCP/Agent error: {str(e)}")
529
- else:
530
- # Handle regular exceptions
531
- self.add_error_message(f"MCP/Agent error: {str(eg)}")
532
- finally:
533
- set_message_history(
534
- prune_interrupted_tool_calls(get_message_history())
535
- )
536
- except Exception as agent_error:
537
- # Handle any other errors in agent processing
538
- self.add_error_message(
539
- f"Agent processing failed: {str(agent_error)}"
480
+ # Use agent_manager's run_with_mcp to handle MCP servers properly
481
+ try:
482
+ agent = get_current_agent()
483
+ self.update_agent_progress("Processing", 50)
484
+ result = await agent.run_with_mcp(
485
+ message,
540
486
  )
541
- else:
542
- self.add_error_message("Agent manager not initialized")
487
+
488
+ if not result or not hasattr(result, "output"):
489
+ self.add_error_message("Invalid response format from agent")
490
+ return
491
+
492
+ self.update_agent_progress("Processing", 75)
493
+ agent_response = result.output
494
+ self.add_agent_message(agent_response)
495
+ # Refresh history display to show new interaction
496
+ self.refresh_history_display()
497
+
498
+ except Exception as eg:
499
+ # Handle TaskGroup and other exceptions
500
+ # BaseExceptionGroup is only available in Python 3.11+
501
+ if hasattr(eg, "exceptions"):
502
+ # Handle TaskGroup exceptions specifically (Python 3.11+)
503
+ for e in eg.exceptions:
504
+ self.add_error_message(f"MCP/Agent error: {str(e)}")
505
+ else:
506
+ # Handle regular exceptions
507
+ self.add_error_message(f"MCP/Agent error: {str(eg)}")
508
+ finally:
509
+ pass
510
+ except Exception as agent_error:
511
+ # Handle any other errors in agent processing
512
+ self.add_error_message(
513
+ f"Agent processing failed: {str(agent_error)}"
514
+ )
543
515
 
544
516
  except Exception as e:
545
517
  self.add_error_message(f"Error processing message: {str(e)}")
@@ -553,7 +525,6 @@ class CodePuppyTUI(App):
553
525
  """Clear the chat history."""
554
526
  chat_view = self.query_one("#chat-view", ChatView)
555
527
  chat_view.clear_messages()
556
- clear_message_history()
557
528
  self.add_system_message("Chat history cleared")
558
529
 
559
530
  def action_show_help(self) -> None:
@@ -652,13 +623,13 @@ class CodePuppyTUI(App):
652
623
  def handle_settings_result(result):
653
624
  if result and result.get("success"):
654
625
  # Update reactive variables
655
- from code_puppy.config import get_model_name, get_puppy_name
626
+ from code_puppy.config import get_global_model_name, get_puppy_name
656
627
 
657
628
  self.puppy_name = get_puppy_name()
658
629
 
659
630
  # Handle model change if needed
660
631
  if result.get("model_changed"):
661
- new_model = get_model_name()
632
+ new_model = get_global_model_name()
662
633
  self.current_model = new_model
663
634
  # Reinitialize agent with new model
664
635
  self.agent_manager.reload_agent()
@@ -125,7 +125,7 @@ class SettingsScreen(ModalScreen):
125
125
  def on_mount(self) -> None:
126
126
  """Load current settings when the screen mounts."""
127
127
  from code_puppy.config import (
128
- get_model_name,
128
+ get_global_model_name,
129
129
  get_owner_name,
130
130
  get_protected_token_count,
131
131
  get_puppy_name,
@@ -155,7 +155,7 @@ class SettingsScreen(ModalScreen):
155
155
  self.load_model_options(model_select)
156
156
 
157
157
  # Set current model selection
158
- current_model = get_model_name()
158
+ current_model = get_global_model_name()
159
159
  model_select.value = current_model
160
160
 
161
161
  # YOLO mode is always enabled in TUI mode
@@ -0,0 +1,55 @@
1
+ # TUI State Management
2
+ # This module contains functions for managing the global TUI state
3
+
4
+ from typing import Any
5
+
6
+ # Global TUI state variables
7
+ _tui_mode: bool = False
8
+ _tui_app_instance: Any = None
9
+
10
+
11
+ def set_tui_mode(enabled: bool) -> None:
12
+ """Set the global TUI mode state.
13
+
14
+ Args:
15
+ enabled: True if running in TUI mode, False otherwise
16
+ """
17
+ global _tui_mode
18
+ _tui_mode = enabled
19
+
20
+
21
+ def is_tui_mode() -> bool:
22
+ """Check if the application is running in TUI mode.
23
+
24
+ Returns:
25
+ True if running in TUI mode, False otherwise
26
+ """
27
+ return _tui_mode
28
+
29
+
30
+ def set_tui_app_instance(app_instance: Any) -> None:
31
+ """Set the global TUI app instance reference.
32
+
33
+ Args:
34
+ app_instance: The TUI app instance
35
+ """
36
+ global _tui_app_instance
37
+ _tui_app_instance = app_instance
38
+
39
+
40
+ def get_tui_app_instance() -> Any:
41
+ """Get the current TUI app instance.
42
+
43
+ Returns:
44
+ The TUI app instance if available, None otherwise
45
+ """
46
+ return _tui_app_instance
47
+
48
+
49
+ def get_tui_mode() -> bool:
50
+ """Get the current TUI mode state.
51
+
52
+ Returns:
53
+ True if running in TUI mode, False otherwise
54
+ """
55
+ return _tui_mode
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.4
2
2
  Name: code-puppy
3
- Version: 0.0.172
3
+ Version: 0.0.174
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
@@ -26,7 +26,7 @@ Requires-Dist: openai>=1.99.1
26
26
  Requires-Dist: pathspec>=0.11.0
27
27
  Requires-Dist: playwright>=1.40.0
28
28
  Requires-Dist: prompt-toolkit>=3.0.38
29
- Requires-Dist: pydantic-ai>=1.0.10
29
+ Requires-Dist: pydantic-ai<=0.8
30
30
  Requires-Dist: pydantic>=2.4.0
31
31
  Requires-Dist: pyjwt>=2.8.0
32
32
  Requires-Dist: pytest-cov>=6.1.1
@@ -1,53 +1,49 @@
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=G0eSd7RLFw0A1Jf6ZJFgtnzMD9PX9HA-QuKmbtHs4v8,8403
3
+ code_puppy/agent.py,sha256=CGdK-vIwRQh27c552Glc39eqhnXJh2ZeE9D2BaYkhms,8505
4
4
  code_puppy/callbacks.py,sha256=6wYB6K_fGSCkKKEFaYOYkJT45WaV5W_NhUIzcvVH_nU,5060
5
- code_puppy/config.py,sha256=g0X-X_Wieo94k0hmwSXqpB5nPIif1H5p7Zw47A7aDmo,20651
5
+ code_puppy/config.py,sha256=ruPGe9f3kFI9F563NQOKuNQY12kw5eXPzbm2utJ0DO8,20639
6
6
  code_puppy/http_utils.py,sha256=jnElpVNNIK-_gcqwsBYRImDGU-tYNfsLR7Gtme5CYzs,8423
7
- code_puppy/main.py,sha256=tYLfhUjPTJ-4S1r-pr-jSbn6kIU1iYvt2Z8lxI7zDFY,22220
8
- code_puppy/message_history_processor.py,sha256=TsmH4L4srbk0JStaVIcLFoFqm6DVkj1yW3yyY2X_RqY,17823
7
+ code_puppy/main.py,sha256=hVPFNN8QOuct2FFH6OMGQ3E04cmEnmO88ffTbbpfuWY,20516
9
8
  code_puppy/model_factory.py,sha256=z9vQbcGllgMwU0On8rPvzYxkygW2Uyd3NJmRzbKv-is,13759
10
9
  code_puppy/models.json,sha256=iXmLZGflnQcu2DRh4WUlgAhoXdvoxUc7KBhB8YxawXM,3088
11
10
  code_puppy/reopenable_async_client.py,sha256=4UJRaMp5np8cbef9F0zKQ7TPKOfyf5U-Kv-0zYUWDho,8274
12
11
  code_puppy/round_robin_model.py,sha256=SEN3VSwTgC5wHjx2sZsHQLPWOycf4jGwzB-EydgqkdY,5643
13
- code_puppy/state_management.py,sha256=wAK8J63DHta0FQg89dn_FihW60aNU-wZI9cYv5XsfH0,4999
14
12
  code_puppy/status_display.py,sha256=F6eEAkGePDp4StM2BWj-uLLQTDGtJrf0IufzCeP1rRg,8336
15
- code_puppy/summarization_agent.py,sha256=kos4_YK-l_YjYRq4Fs4X5YoTUbmAcDhhPqefL-rdenI,3197
13
+ code_puppy/summarization_agent.py,sha256=LnObgtLmM6N4z2553XXQlXAOf8R1BPSNmFSfXkjpivg,3211
14
+ code_puppy/tui_state.py,sha256=TT76XBVapKj6fKjFzz6oxCONeN_BZwcMILxxZcxu6-Y,1171
16
15
  code_puppy/version_checker.py,sha256=bjLDmgGPrl7XnYwX1u13O8uFlsfikV90PK6nbA9Z9QU,1150
17
- code_puppy/agents/__init__.py,sha256=SwtHGNG1GIgDBv7y3EGIXOXEWrG_Ou7fEknNgFbrHv8,594
16
+ code_puppy/agents/__init__.py,sha256=37co1Xux3E10ynvbCBkyeTZAZpjEb-ci2uUy6nzM1hA,518
18
17
  code_puppy/agents/agent_code_puppy.py,sha256=sbuQxLzlkMbPOyLbILbXOAHecRsxbFdQt13HJ_GEqQo,7972
19
18
  code_puppy/agents/agent_creator_agent.py,sha256=eNOlJssQdyoQm1F7d-TZWcMXpkYmZ-w9WN-NDFXCgtw,23042
20
- code_puppy/agents/agent_manager.py,sha256=nXvro6fpX8KA-NedRoVJuhJW966trrePOrH4eAnqq40,17034
21
- code_puppy/agents/agent_orchestrator.json,sha256=Iqnc0p6ICoAlUTMkEsi1XXMXJi4pdxVnWZUMaih6s5o,1267
19
+ code_puppy/agents/agent_manager.py,sha256=BmIxguNN3qq1S7UebxqrcdB0Q4ZuwWRVRsnYUDMgfYg,11050
22
20
  code_puppy/agents/agent_qa_kitten.py,sha256=5PeFFSwCFlTUvP6h5bGntx0xv5NmRwBiw0HnMqY8nLI,9107
23
- code_puppy/agents/base_agent.py,sha256=mll5s4Lsc6V-YcBJJT-oyXC50LZBGeR7xAJLBk62Zf8,3769
21
+ code_puppy/agents/base_agent.py,sha256=LRBj-ap7-pjiXGbAUfNMt45W1KnCBZjfYPKENlmg89U,36701
24
22
  code_puppy/agents/json_agent.py,sha256=y6AYE3Fx9LhmemcPzt46d7359MNnkGIjU83YBGNer2g,4533
25
- code_puppy/agents/runtime_manager.py,sha256=fUOBpmETo3wTyLc5wWBfGKSX1HFRQWSpuwxYAOyA-_8,10059
26
23
  code_puppy/command_line/__init__.py,sha256=y7WeRemfYppk8KVbCGeAIiTuiOszIURCDjOMZv_YRmU,45
27
- code_puppy/command_line/command_handler.py,sha256=45jUScWIikVi2OgCL7LrcpWoDcrmfWv0do-y_mS4i8U,27248
24
+ code_puppy/command_line/command_handler.py,sha256=z4p62jwdJXUJVVzTHStTOFyzv-PwjjNhu8bziIo8gns,27191
28
25
  code_puppy/command_line/file_path_completion.py,sha256=gw8NpIxa6GOpczUJRyh7VNZwoXKKn-yvCqit7h2y6Gg,2931
29
26
  code_puppy/command_line/load_context_completion.py,sha256=6eZxV6Bs-EFwZjN93V8ZDZUC-6RaWxvtZk-04Wtikyw,2240
30
- code_puppy/command_line/meta_command_handler.py,sha256=80aK5JQOaqjt149qBmSsM02uy2Cikkee8zaQnu5u2KQ,5712
31
- code_puppy/command_line/model_picker_completion.py,sha256=adxp3NZaDV67YqaGv0SG7WVvOTXN0UwkkLqxTsknAvs,4126
27
+ code_puppy/command_line/model_picker_completion.py,sha256=vYNCZS1QWu6fxF__hTwpc7jwH7h_48wUxrnITawc83E,4140
32
28
  code_puppy/command_line/motd.py,sha256=PEdkp3ZnydVfvd7mNJylm8YyFNUKg9jmY6uwkA1em8c,2152
33
- code_puppy/command_line/prompt_toolkit_completion.py,sha256=PLb1Yt_65iQI2mzPEPxPsSaRww5Ur951Qn-K-TLMCGQ,10006
29
+ code_puppy/command_line/prompt_toolkit_completion.py,sha256=O-wTYIGb9J_ONEBa-bWNFeQLnqC6LIFKsKQ7hjMbssM,9992
34
30
  code_puppy/command_line/utils.py,sha256=7eyxDHjPjPB9wGDJQQcXV_zOsGdYsFgI0SGCetVmTqE,1251
35
31
  code_puppy/command_line/mcp/__init__.py,sha256=0-OQuwjq_pLiTVJ1_NrirVwdRerghyKs_MTZkwPC7YY,315
36
- code_puppy/command_line/mcp/add_command.py,sha256=f65ZVb_LF4y9KjAms66bPxGrxUW6EeEJCT4HrZXdkqY,6416
32
+ code_puppy/command_line/mcp/add_command.py,sha256=lZ09RpFDIeghX1zhc2YIAqBASs5Ra52x5YAasUKvqJg,6409
37
33
  code_puppy/command_line/mcp/base.py,sha256=0uessGekNM37X3tLrKImkhZpgxjAoR7fqskbmkBjcf8,890
38
34
  code_puppy/command_line/mcp/handler.py,sha256=ZPWNfJEwGurNQh4KUCRRRsHXuB0kHlaGG4oLN1sFhBg,4412
39
35
  code_puppy/command_line/mcp/help_command.py,sha256=Z55-ObpUQFMdqMWAkSJkRi_v2uZhDFVxg6DcIdjVY6Q,5250
40
- code_puppy/command_line/mcp/install_command.py,sha256=Smp7nCDTwXplltQi2OPlUIwWdFvNEMcg-6h62EI5AhM,8827
36
+ code_puppy/command_line/mcp/install_command.py,sha256=kNASwQ-CUL_5zBTzJhBy_G2ClI6kRzgLJx7EeQX4TmE,8820
41
37
  code_puppy/command_line/mcp/list_command.py,sha256=tjxCMmK6yrmjM5L-lFY_qdL_dKTPdBZ_q0bEoAmBADg,3179
42
38
  code_puppy/command_line/mcp/logs_command.py,sha256=x_QsVGPpI5XY7RCZtiNFegc6R3csiwF_IEB_Rh2575w,4453
43
39
  code_puppy/command_line/mcp/remove_command.py,sha256=MrWmXQ9jZTq1wrohFDO3ls0a1faTHCqRZocN-ynTzh8,2753
44
40
  code_puppy/command_line/mcp/restart_command.py,sha256=-arZhayEVjTg3WErQKiBoFxbpbQcFlPXTzUI5o8AQLg,3254
45
41
  code_puppy/command_line/mcp/search_command.py,sha256=k4CGiNJ1MKJ1_dPHd3wlwXo899nzizSUr7PsR0V9y4Y,4113
46
- code_puppy/command_line/mcp/start_all_command.py,sha256=9f8BPTijs7BVBQKKNXjtH3laQVuqhNyfPSgISvBUcfM,4295
47
- code_puppy/command_line/mcp/start_command.py,sha256=r00onOpfSSL-gtJLDOvmD-8G4RZhhmd-nv3TyIWGMUI,3350
42
+ code_puppy/command_line/mcp/start_all_command.py,sha256=cdFi-eEAp4SKTiUvSkCAHaeq3PiujW35a3ZT7UPNlUc,4197
43
+ code_puppy/command_line/mcp/start_command.py,sha256=dFB64MJMHAh8v_Jq07Ux4K74P9CP239l_0BHk7wH_2A,3108
48
44
  code_puppy/command_line/mcp/status_command.py,sha256=tQJrEDlN4DJ3n9jnKW-4kD0vL3TyUQbovb4V3nz-RsA,6640
49
- code_puppy/command_line/mcp/stop_all_command.py,sha256=QioqCPFjIbbdT_P5tyVakB2idUD1rnlhwYXLpa-G4TI,3716
50
- code_puppy/command_line/mcp/stop_command.py,sha256=zuZO8pIP2Ix11LATf-cwwX3fPFIGAbRDaZ6qnfPTqLY,2594
45
+ code_puppy/command_line/mcp/stop_all_command.py,sha256=BcsvkGcSGCexCnWfpirBNxJNHP0HSGrjQP0LslHbano,3618
46
+ code_puppy/command_line/mcp/stop_command.py,sha256=6ruOlABIgGmuFmoakAsaqStaCUctBsA_KbvYNKmlt8U,2456
51
47
  code_puppy/command_line/mcp/test_command.py,sha256=Pjod77DYRcA9WDZcxaCe6AUgpEXKJr42QRkxMhSjXhM,3689
52
48
  code_puppy/command_line/mcp/utils.py,sha256=0Wt4ttYgSlVvtusYmBLKXSkjAjcsDiUxcZQAoFLUNnE,3625
53
49
  code_puppy/command_line/mcp/wizard_utils.py,sha256=mWuE5epVgCxgGoj-VGwPO_XWVkkXjegXoIJpC9LC2TM,11075
@@ -69,7 +65,7 @@ code_puppy/mcp_/status_tracker.py,sha256=uekxrzkzIWrv3OfSVgblaPuoGFcAh_dBYwCcaHZ
69
65
  code_puppy/mcp_/system_tools.py,sha256=7_oR8k0c8YjtCcYF9g7A946oAGuKOf_i-92aJH7VmlQ,7331
70
66
  code_puppy/mcp_/examples/retry_example.py,sha256=VVdSr7Jq7PPS7AVU1Ev5LnUZe2uBpdZYG7oJSo05TKM,7221
71
67
  code_puppy/messaging/__init__.py,sha256=h2eZ7nJblKF71_dNUIBj3vL5RDw7WGy8nh6T_EYVrcA,1176
72
- code_puppy/messaging/message_queue.py,sha256=CDVpstLee_RbCBeJWv2eON3c3qhlEISf2i9aSXJTLU4,12600
68
+ code_puppy/messaging/message_queue.py,sha256=A6_CVn55tA5cINrIML9N_fS6fGQP-n8gC8abnkwF034,12572
73
69
  code_puppy/messaging/queue_console.py,sha256=hf32bKfAOdAaxYuARnmDuWhq4ET77xMWDvu5_T2JggY,10912
74
70
  code_puppy/messaging/renderers.py,sha256=9VOpVmu7emyyg1CXgm17u4IzMNcLHvueBl7G14pLQho,16123
75
71
  code_puppy/messaging/spinner/__init__.py,sha256=9mkXPYojafydBOAMh9ZUrB4X6uH5Iqz_-E-Obpd72ko,1365
@@ -78,7 +74,7 @@ code_puppy/messaging/spinner/spinner_base.py,sha256=474qMrTYpNfWcprFzmhaOJEOC-2r
78
74
  code_puppy/messaging/spinner/textual_spinner.py,sha256=Omx9A-FSPkxYDMYgBXgYMBQnK-DMlyqLOgkFVG8cmo4,3465
79
75
  code_puppy/plugins/__init__.py,sha256=fksDqMUiXPJ5WNuMsYsVR8ulueQRCXPlvECEyicHPtQ,1312
80
76
  code_puppy/tools/__init__.py,sha256=BVTZ85jLHgDANwOnUSOz3UDlp8VQDq4DoGF23BRlyWw,6032
81
- code_puppy/tools/agent_tools.py,sha256=bHMrFIbYRhuubR41G_XdLsk3cUKWfIPl2O4bVzo2pE0,5591
77
+ code_puppy/tools/agent_tools.py,sha256=h3i4c6KOxdjLr-fFjUDJdL0OR_XHo_AWx7uwfvavQJ8,5640
82
78
  code_puppy/tools/browser_control.py,sha256=6E_Kq63cErBk-iM9-03Cq8sTWWLh-Tk2kpdrB_rMmbg,8603
83
79
  code_puppy/tools/browser_interactions.py,sha256=m-bVsAUbdrS-P1GbS0ChO2tMMg4tMIsDX34azn_Olzs,17070
84
80
  code_puppy/tools/browser_locators.py,sha256=ZshjhYuV600vJqXUC23oNX89AZLMvY8rlvj-9oy7GMw,19574
@@ -87,7 +83,7 @@ code_puppy/tools/browser_screenshot.py,sha256=QSwxS37G4LSo-Q9SBiuIofxWKnyInM90TY
87
83
  code_puppy/tools/browser_scripts.py,sha256=BLSx1Q2F_mOOoGCoyXat3HvazTb1XaFYPXAF8CYVeX8,15071
88
84
  code_puppy/tools/browser_workflows.py,sha256=4u4u59arpY65hdcDMvJGpT02vks0ufnXNJVujzKe_dg,6430
89
85
  code_puppy/tools/camoufox_manager.py,sha256=bYnwyOETGDe_h8Q3kXH7w6kFr-OCpMi_Zuh4y11p__E,5097
90
- code_puppy/tools/command_runner.py,sha256=sum09fxhHtQ0-8xBpVYyVGbQyLjscGQh0fHNYsoU09E,22424
86
+ code_puppy/tools/command_runner.py,sha256=5H4wK-v3UQ713_0JRefpAwyxGBWD9R5yLptR6BhZyIY,22417
91
87
  code_puppy/tools/common.py,sha256=pL-9xcRs3rxU7Fl9X9EUgbDp2-csh2LLJ5DHH_KAHKY,10596
92
88
  code_puppy/tools/file_modifications.py,sha256=EaDWcv6gi8wAvpgyeJdKSKPWg9fTpZoEkxQiLCE6rn4,23218
93
89
  code_puppy/tools/file_operations.py,sha256=3RX-eqhIukle3KA-QTEaiTMIefOWy_JhmPQaijEAt6U,32481
@@ -101,9 +97,9 @@ code_puppy/tools/browser/browser_screenshot.py,sha256=zbOMmN9_9aVDWJkC54-3zv4OEG
101
97
  code_puppy/tools/browser/browser_scripts.py,sha256=BLSx1Q2F_mOOoGCoyXat3HvazTb1XaFYPXAF8CYVeX8,15071
102
98
  code_puppy/tools/browser/browser_workflows.py,sha256=HZ0lPmEyAobPIWR-SK1E0ngW1OfULLqw8XILVT4N8Fg,5979
103
99
  code_puppy/tools/browser/camoufox_manager.py,sha256=E1CJwQtzPFoDQiXSHHk28niWuJhk3soZ-ItxXCXWO0M,6938
104
- code_puppy/tools/browser/vqa_agent.py,sha256=u3EhZQHNBiWUn-XLDK9MnVyd2ChshPnVZbB9iEkEqH4,2118
100
+ code_puppy/tools/browser/vqa_agent.py,sha256=jUvzsk9okOZ9jskuBuij2n8wRTpTkUU2JDaHmfY8PLc,2016
105
101
  code_puppy/tui/__init__.py,sha256=XesAxIn32zLPOmvpR2wIDxDAnnJr81a5pBJB4cZp1Xs,321
106
- code_puppy/tui/app.py,sha256=6yNOC7_93WjfwUxI6LBLmhTZl1FAXO03ErsSq5HxBVs,39434
102
+ code_puppy/tui/app.py,sha256=gZvg7ZOUp3JurZyKZ7ehpHEhmyC0NnfmQYWF_yZm36o,38163
107
103
  code_puppy/tui/messages.py,sha256=zQoToWI0eWdT36NEsY6RdCFzcDfAmfvoPlHv8jiCbgo,720
108
104
  code_puppy/tui/components/__init__.py,sha256=uj5pnk3s6SEN3SbFI0ZnzaA2KK1NNg8TfUj6U-Z732U,455
109
105
  code_puppy/tui/components/chat_view.py,sha256=NfyNXuN2idPht1rKJB4YhHVXb1AIRNO5q_nLdt8Ocug,19913
@@ -121,11 +117,11 @@ code_puppy/tui/models/enums.py,sha256=1ulsei95Gxy4r1sk-m-Sm5rdmejYCGRI-YtUwJmKFf
121
117
  code_puppy/tui/screens/__init__.py,sha256=tJ00d0aYQ9kzOGHRChqy6cCQ6JUKKXBzLUTEbk_eA2Y,286
122
118
  code_puppy/tui/screens/help.py,sha256=eJuPaOOCp7ZSUlecearqsuX6caxWv7NQszUh0tZJjBM,3232
123
119
  code_puppy/tui/screens/mcp_install_wizard.py,sha256=vObpQwLbXjQsxmSg-WCasoev1usEi0pollKnL0SHu9U,27693
124
- code_puppy/tui/screens/settings.py,sha256=GMpv-qa08rorAE9mj3AjmqjZFPhmeJ_GWd-DBHG6iAA,10671
120
+ code_puppy/tui/screens/settings.py,sha256=W22sevojC1_HZBoeoJTH3HWkehini3bGi_ic0OKgeLI,10685
125
121
  code_puppy/tui/screens/tools.py,sha256=3pr2Xkpa9Js6Yhf1A3_wQVRzFOui-KDB82LwrsdBtyk,1715
126
- code_puppy-0.0.172.data/data/code_puppy/models.json,sha256=iXmLZGflnQcu2DRh4WUlgAhoXdvoxUc7KBhB8YxawXM,3088
127
- code_puppy-0.0.172.dist-info/METADATA,sha256=VjpMGSIgA_Trvm70on6SEy3_9eFjgsOoakkVueRMWvA,20106
128
- code_puppy-0.0.172.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
129
- code_puppy-0.0.172.dist-info/entry_points.txt,sha256=Tp4eQC99WY3HOKd3sdvb22vZODRq0XkZVNpXOag_KdI,91
130
- code_puppy-0.0.172.dist-info/licenses/LICENSE,sha256=31u8x0SPgdOq3izJX41kgFazWsM43zPEF9eskzqbJMY,1075
131
- code_puppy-0.0.172.dist-info/RECORD,,
122
+ code_puppy-0.0.174.data/data/code_puppy/models.json,sha256=iXmLZGflnQcu2DRh4WUlgAhoXdvoxUc7KBhB8YxawXM,3088
123
+ code_puppy-0.0.174.dist-info/METADATA,sha256=cnh7U5TS6UOkwhUSw8Nek8vBxdinFzq-K7FO5FRZiIU,20103
124
+ code_puppy-0.0.174.dist-info/WHEEL,sha256=qtCwoSJWgHk21S1Kb4ihdzI2rlJ1ZKaIurTj_ngOhyQ,87
125
+ code_puppy-0.0.174.dist-info/entry_points.txt,sha256=Tp4eQC99WY3HOKd3sdvb22vZODRq0XkZVNpXOag_KdI,91
126
+ code_puppy-0.0.174.dist-info/licenses/LICENSE,sha256=31u8x0SPgdOq3izJX41kgFazWsM43zPEF9eskzqbJMY,1075
127
+ code_puppy-0.0.174.dist-info/RECORD,,
@@ -1,26 +0,0 @@
1
- {
2
- "id": "agent-orchestrator-id",
3
- "name": "agent-orchestrator",
4
- "display_name": "Agent Orchestrator 🎭",
5
- "description": "Coordinates and manages various specialized agents to accomplish tasks",
6
- "system_prompt": [
7
- "You are an agent orchestrator that coordinates various specialized agents.",
8
- "When given a task, first list the available agents to understand what's at your disposal.",
9
- "Then, invoke the most appropriate agent to handle the task. If needed, you can invoke multiple agents.",
10
- "",
11
- "#### `list_agents()`",
12
- "Use this to list all available sub-agents that can be invoked",
13
- "",
14
- "#### `invoke_agent(agent_name: str, user_prompt: str)`",
15
- "Use this to invoke another agent with a specific prompt. This allows agents to delegate tasks to specialized sub-agents.",
16
- "Arguments:",
17
- "- agent_name (required): Name of the agent to invoke",
18
- "- user_prompt (required): The prompt to send to the invoked agent",
19
- "Example usage:",
20
- "```python",
21
- "invoke_agent(agent_name=\"python-tutor\", user_prompt=\"Explain how to use list comprehensions\")",
22
- "```"
23
- ],
24
- "tools": ["list_agents", "invoke_agent", "agent_share_your_reasoning"],
25
- "user_prompt": "What would you like me to coordinate for you?"
26
- }