newcode 0.1.1__tar.gz → 0.1.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.
- {newcode-0.1.1 → newcode-0.1.3}/PKG-INFO +1 -1
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/agents/agent_c_reviewer.py +0 -1
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/agents/agent_code_puppy.py +3 -51
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/agents/agent_code_reviewer.py +0 -1
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/agents/agent_cpp_reviewer.py +0 -1
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/agents/agent_creator_agent.py +11 -19
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/agents/agent_golang_reviewer.py +0 -1
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/agents/agent_helios.py +0 -3
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/agents/agent_javascript_reviewer.py +0 -1
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/agents/agent_pack_leader.py +0 -2
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/agents/agent_planning.py +0 -2
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/agents/agent_python_programmer.py +0 -3
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/agents/agent_python_reviewer.py +0 -1
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/agents/agent_qa_expert.py +0 -1
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/agents/agent_qa_kitten.py +2 -4
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/agents/agent_scheduler.py +1 -2
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/agents/agent_security_auditor.py +0 -1
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/agents/agent_terminal_qa.py +1 -3
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/agents/agent_typescript_reviewer.py +0 -1
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/agents/base_agent.py +2 -20
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/agents/event_stream_handler.py +6 -6
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/agents/pack/bloodhound.py +1 -3
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/agents/pack/husky.py +2 -7
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/agents/pack/retriever.py +0 -2
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/agents/pack/shepherd.py +2 -6
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/agents/pack/terrier.py +0 -2
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/agents/pack/watchdog.py +1 -3
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/agents/prompt_reviewer.py +0 -2
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/cli_runner.py +4 -4
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/command_line/autosave_menu.py +7 -7
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/command_line/colors_menu.py +20 -22
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/config.py +16 -1
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/mcp_/managed_server.py +2 -2
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/messaging/__init__.py +0 -4
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/messaging/message_queue.py +0 -5
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/messaging/messages.py +0 -13
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/messaging/rich_renderer.py +153 -171
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/tools/__init__.py +1 -64
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/tools/agent_tools.py +1 -1
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/tools/browser/__init__.py +1 -1
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/tools/command_runner.py +0 -43
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/tools/display.py +1 -1
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/tools/tools_content.py +0 -2
- {newcode-0.1.1 → newcode-0.1.3}/pyproject.toml +1 -1
- {newcode-0.1.1 → newcode-0.1.3}/.gitignore +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/LICENSE +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/README.md +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/__init__.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/__main__.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/agents/__init__.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/agents/agent_manager.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/agents/json_agent.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/agents/pack/__init__.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/agents/subagent_stream_handler.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/api/__init__.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/api/app.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/api/main.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/api/pty_manager.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/api/routers/__init__.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/api/routers/agents.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/api/routers/commands.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/api/routers/config.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/api/routers/sessions.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/api/templates/terminal.html +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/api/websocket.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/callbacks.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/chatgpt_codex_client.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/claude_cache_client.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/command_line/__init__.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/command_line/add_model_menu.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/command_line/agent_menu.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/command_line/attachments.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/command_line/clipboard.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/command_line/command_handler.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/command_line/command_registry.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/command_line/config_commands.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/command_line/core_commands.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/command_line/diff_menu.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/command_line/file_path_completion.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/command_line/load_context_completion.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/command_line/mcp/__init__.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/command_line/mcp/base.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/command_line/mcp/catalog_server_installer.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/command_line/mcp/custom_server_form.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/command_line/mcp/custom_server_installer.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/command_line/mcp/edit_command.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/command_line/mcp/handler.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/command_line/mcp/help_command.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/command_line/mcp/install_command.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/command_line/mcp/install_menu.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/command_line/mcp/list_command.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/command_line/mcp/logs_command.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/command_line/mcp/remove_command.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/command_line/mcp/restart_command.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/command_line/mcp/search_command.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/command_line/mcp/start_all_command.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/command_line/mcp/start_command.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/command_line/mcp/status_command.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/command_line/mcp/stop_all_command.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/command_line/mcp/stop_command.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/command_line/mcp/test_command.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/command_line/mcp/utils.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/command_line/mcp/wizard_utils.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/command_line/mcp_completion.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/command_line/model_picker_completion.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/command_line/model_settings_menu.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/command_line/motd.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/command_line/onboarding_slides.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/command_line/onboarding_wizard.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/command_line/pin_command_completion.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/command_line/prompt_toolkit_completion.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/command_line/session_commands.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/command_line/skills_completion.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/command_line/uc_menu.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/command_line/utils.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/command_line/wiggum_state.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/error_logging.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/gemini_code_assist.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/gemini_model.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/hook_engine/README.md +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/hook_engine/__init__.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/hook_engine/aliases.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/hook_engine/engine.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/hook_engine/executor.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/hook_engine/matcher.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/hook_engine/models.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/hook_engine/registry.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/hook_engine/validator.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/http_utils.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/keymap.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/main.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/mcp_/__init__.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/mcp_/async_lifecycle.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/mcp_/blocking_startup.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/mcp_/captured_stdio_server.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/mcp_/circuit_breaker.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/mcp_/config_wizard.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/mcp_/dashboard.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/mcp_/error_isolation.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/mcp_/examples/retry_example.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/mcp_/health_monitor.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/mcp_/manager.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/mcp_/mcp_logs.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/mcp_/registry.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/mcp_/retry_manager.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/mcp_/server_registry_catalog.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/mcp_/status_tracker.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/mcp_/system_tools.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/mcp_prompts/__init__.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/mcp_prompts/hook_creator.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/messaging/bus.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/messaging/commands.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/messaging/markdown_patches.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/messaging/queue_console.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/messaging/renderers.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/messaging/spinner/__init__.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/messaging/spinner/console_spinner.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/messaging/spinner/spinner_base.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/messaging/subagent_console.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/model_factory.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/model_switching.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/model_utils.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/models.json +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/models_dev_api.json +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/models_dev_parser.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/__init__.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/agent_skills/__init__.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/agent_skills/config.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/agent_skills/discovery.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/agent_skills/downloader.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/agent_skills/installer.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/agent_skills/metadata.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/agent_skills/prompt_builder.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/agent_skills/register_callbacks.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/agent_skills/remote_catalog.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/agent_skills/skill_catalog.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/agent_skills/skills_install_menu.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/agent_skills/skills_menu.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/antigravity_oauth/__init__.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/antigravity_oauth/accounts.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/antigravity_oauth/antigravity_model.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/antigravity_oauth/config.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/antigravity_oauth/constants.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/antigravity_oauth/oauth.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/antigravity_oauth/register_callbacks.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/antigravity_oauth/storage.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/antigravity_oauth/test_plugin.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/antigravity_oauth/token.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/antigravity_oauth/transport.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/antigravity_oauth/utils.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/chatgpt_oauth/__init__.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/chatgpt_oauth/config.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/chatgpt_oauth/oauth_flow.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/chatgpt_oauth/register_callbacks.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/chatgpt_oauth/test_plugin.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/chatgpt_oauth/utils.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/claude_code_hooks/__init__.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/claude_code_hooks/config.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/claude_code_hooks/register_callbacks.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/claude_code_oauth/README.md +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/claude_code_oauth/SETUP.md +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/claude_code_oauth/__init__.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/claude_code_oauth/config.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/claude_code_oauth/register_callbacks.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/claude_code_oauth/test_plugin.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/claude_code_oauth/token_refresh_heartbeat.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/claude_code_oauth/utils.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/customizable_commands/__init__.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/customizable_commands/register_callbacks.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/example_custom_command/README.md +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/example_custom_command/register_callbacks.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/file_permission_handler/__init__.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/file_permission_handler/register_callbacks.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/frontend_emitter/__init__.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/frontend_emitter/emitter.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/frontend_emitter/register_callbacks.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/hook_creator/__init__.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/hook_creator/register_callbacks.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/hook_manager/__init__.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/hook_manager/config.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/hook_manager/hooks_menu.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/hook_manager/register_callbacks.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/oauth_puppy_html.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/scheduler/__init__.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/scheduler/register_callbacks.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/scheduler/scheduler_menu.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/scheduler/scheduler_wizard.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/shell_safety/__init__.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/shell_safety/agent_shell_safety.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/shell_safety/command_cache.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/shell_safety/register_callbacks.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/synthetic_status/__init__.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/synthetic_status/register_callbacks.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/synthetic_status/status_api.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/universal_constructor/__init__.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/universal_constructor/models.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/universal_constructor/register_callbacks.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/universal_constructor/registry.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/plugins/universal_constructor/sandbox.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/prompts/antigravity_system_prompt.md +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/pydantic_patches.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/reopenable_async_client.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/round_robin_model.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/scheduler/__init__.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/scheduler/__main__.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/scheduler/cli.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/scheduler/config.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/scheduler/daemon.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/scheduler/executor.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/scheduler/platform.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/scheduler/platform_unix.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/scheduler/platform_win.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/session_storage.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/status_display.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/summarization_agent.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/terminal_utils.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/tools/ask_user_question/__init__.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/tools/ask_user_question/constants.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/tools/ask_user_question/demo_tui.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/tools/ask_user_question/handler.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/tools/ask_user_question/models.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/tools/ask_user_question/registration.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/tools/ask_user_question/renderers.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/tools/ask_user_question/terminal_ui.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/tools/ask_user_question/theme.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/tools/ask_user_question/tui_loop.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/tools/browser/browser_control.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/tools/browser/browser_interactions.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/tools/browser/browser_locators.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/tools/browser/browser_manager.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/tools/browser/browser_navigation.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/tools/browser/browser_screenshot.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/tools/browser/browser_scripts.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/tools/browser/browser_workflows.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/tools/browser/chromium_terminal_manager.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/tools/browser/terminal_command_tools.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/tools/browser/terminal_screenshot_tools.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/tools/browser/terminal_tools.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/tools/common.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/tools/file_modifications.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/tools/file_operations.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/tools/scheduler_tools.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/tools/skills_tools.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/tools/subagent_context.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/tools/universal_constructor.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/uvx_detection.py +0 -0
- {newcode-0.1.1 → newcode-0.1.3}/code_puppy/version_checker.py +0 -0
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Metadata-Version: 2.4
|
|
2
2
|
Name: newcode
|
|
3
|
-
Version: 0.1.
|
|
3
|
+
Version: 0.1.3
|
|
4
4
|
Summary: AI-powered code generation agent - a fedstew fork of code-puppy
|
|
5
5
|
Project-URL: repository, https://github.com/janfeddersen-wq/new_code
|
|
6
6
|
Project-URL: HomePage, https://github.com/janfeddersen-wq/new_code
|
|
@@ -21,7 +21,6 @@ class CReviewerAgent(BaseAgent):
|
|
|
21
21
|
def get_available_tools(self) -> list[str]:
|
|
22
22
|
"""Reviewers need read-only inspection helpers plus agent collaboration."""
|
|
23
23
|
return [
|
|
24
|
-
"agent_share_your_reasoning",
|
|
25
24
|
"agent_run_shell_command",
|
|
26
25
|
"list_files",
|
|
27
26
|
"read_file",
|
|
@@ -32,64 +32,16 @@ class CodePuppyAgent(BaseAgent):
|
|
|
32
32
|
"edit_file",
|
|
33
33
|
"delete_file",
|
|
34
34
|
"agent_run_shell_command",
|
|
35
|
-
"agent_share_your_reasoning",
|
|
36
35
|
"ask_user_question",
|
|
37
36
|
"activate_skill",
|
|
38
37
|
"list_or_search_skills",
|
|
39
38
|
"load_image_for_analysis",
|
|
40
39
|
]
|
|
41
40
|
|
|
42
|
-
def _has_extended_thinking(self) -> bool:
|
|
43
|
-
"""Check if the current model has extended thinking active."""
|
|
44
|
-
from code_puppy.tools import has_extended_thinking_active
|
|
45
|
-
|
|
46
|
-
return has_extended_thinking_active(self.get_model_name())
|
|
47
|
-
|
|
48
|
-
def _get_reasoning_prompt_sections(self) -> dict[str, str]:
|
|
49
|
-
"""Return prompt sections that vary based on extended thinking state.
|
|
50
|
-
|
|
51
|
-
When extended thinking is active the model already exposes its
|
|
52
|
-
chain-of-thought, so we drop the share_your_reasoning tool docs
|
|
53
|
-
and adjust the "important rules" accordingly.
|
|
54
|
-
"""
|
|
55
|
-
if self._has_extended_thinking():
|
|
56
|
-
return {
|
|
57
|
-
"reasoning_tool_section": "",
|
|
58
|
-
"pre_tool_rule": (
|
|
59
|
-
"- Use your extended thinking to reason through problems "
|
|
60
|
-
"before acting — plan your approach, then execute"
|
|
61
|
-
),
|
|
62
|
-
"loop_rule": (
|
|
63
|
-
"- You're encouraged to loop between reasoning, file "
|
|
64
|
-
"tools, and run_shell_command to test output in order "
|
|
65
|
-
"to write programs"
|
|
66
|
-
),
|
|
67
|
-
}
|
|
68
|
-
return {
|
|
69
|
-
"reasoning_tool_section": (
|
|
70
|
-
"\nReasoning & Explanation:\n"
|
|
71
|
-
" - share_your_reasoning(reasoning, next_steps=None): "
|
|
72
|
-
"Use this to explicitly share your thought process and "
|
|
73
|
-
"planned next steps\n"
|
|
74
|
-
),
|
|
75
|
-
"pre_tool_rule": (
|
|
76
|
-
"- Before every other tool use, you must use "
|
|
77
|
-
'"share_your_reasoning" to explain your thought process '
|
|
78
|
-
"and planned next steps"
|
|
79
|
-
),
|
|
80
|
-
"loop_rule": (
|
|
81
|
-
"- You're encouraged to loop between "
|
|
82
|
-
"share_your_reasoning, file tools, and "
|
|
83
|
-
"run_shell_command to test output in order to write "
|
|
84
|
-
"programs"
|
|
85
|
-
),
|
|
86
|
-
}
|
|
87
|
-
|
|
88
41
|
def get_system_prompt(self) -> str:
|
|
89
42
|
"""Get the Code Agent's full system prompt."""
|
|
90
43
|
agent_name = get_agent_name()
|
|
91
44
|
user_name = get_user_name()
|
|
92
|
-
r = self._get_reasoning_prompt_sections()
|
|
93
45
|
|
|
94
46
|
result = f"""
|
|
95
47
|
You are {agent_name}, a code agent assisting {user_name} with software development tasks. You have access to tools for writing, modifying, and executing code. You MUST use the provided tools to complete tasks rather than just describing what to do.
|
|
@@ -117,7 +69,7 @@ File Operations:
|
|
|
117
69
|
- edit_file(payload): Swiss-army file editor. Prefer ReplacementsPayload for targeted edits. Keep diffs small (100-300 lines). Never paste entire files in old_str.
|
|
118
70
|
- delete_file(file_path): Remove files when needed
|
|
119
71
|
- grep(search_string, directory): Ripgrep-powered search across files (max 200 matches)
|
|
120
|
-
|
|
72
|
+
|
|
121
73
|
System Operations:
|
|
122
74
|
- run_shell_command(command, cwd, timeout, background): Execute commands, run tests, start services. Use background=True for long-running servers.
|
|
123
75
|
- For JS/TS test suites use `--silent` flag. For single test files, run without it. Pytest needs no special flags.
|
|
@@ -132,11 +84,11 @@ User Interaction:
|
|
|
132
84
|
|
|
133
85
|
Important rules:
|
|
134
86
|
- You MUST use tools -- DO NOT just output code or descriptions
|
|
135
|
-
|
|
87
|
+
- Reason through problems before acting -- plan your approach, then execute
|
|
136
88
|
- Check if files exist before modifying or deleting them
|
|
137
89
|
- Prefer MODIFYING existing files (edit_file) over creating new ones
|
|
138
90
|
- After system operations, always explain the results
|
|
139
|
-
|
|
91
|
+
- You're encouraged to loop between reasoning, file tools, and run_shell_command to test output in order to write programs
|
|
140
92
|
- Continue autonomously unless user input is definitively required
|
|
141
93
|
- Solutions should be production-ready, maintainable, and follow best practices
|
|
142
94
|
"""
|
|
@@ -21,7 +21,6 @@ class CodeQualityReviewerAgent(BaseAgent):
|
|
|
21
21
|
def get_available_tools(self) -> list[str]:
|
|
22
22
|
"""Reviewers stick to read-only analysis helpers plus agent collaboration."""
|
|
23
23
|
return [
|
|
24
|
-
"agent_share_your_reasoning",
|
|
25
24
|
"agent_run_shell_command",
|
|
26
25
|
"list_files",
|
|
27
26
|
"read_file",
|
|
@@ -19,7 +19,6 @@ class CppReviewerAgent(BaseAgent):
|
|
|
19
19
|
def get_available_tools(self) -> list[str]:
|
|
20
20
|
"""Reviewers need read-only inspection helpers plus agent collaboration."""
|
|
21
21
|
return [
|
|
22
|
-
"agent_share_your_reasoning",
|
|
23
22
|
"agent_run_shell_command",
|
|
24
23
|
"list_files",
|
|
25
24
|
"read_file",
|
|
@@ -158,8 +158,7 @@ Users can optionally pin a specific model to their agent to override the global
|
|
|
158
158
|
### 💻 **Command Execution** (for agents running programs):
|
|
159
159
|
- `agent_run_shell_command` - Execute terminal commands and scripts
|
|
160
160
|
|
|
161
|
-
### 🧠 **Communication &
|
|
162
|
-
- `agent_share_your_reasoning` - Explain thought processes (recommended for most agents)
|
|
161
|
+
### 🧠 **Communication & Coordination** (for all agents):
|
|
163
162
|
- `list_agents` - List all available sub-agents (recommended for agent managers)
|
|
164
163
|
- `invoke_agent` - Invoke other agents with specific prompts (recommended for agent managers)
|
|
165
164
|
|
|
@@ -250,9 +249,6 @@ npm test -- ./path/to/test/file.tsx # or something like this.
|
|
|
250
249
|
|
|
251
250
|
DONT USE THE TERMINAL TOOL TO RUN THE CODE WE WROTE UNLESS THE USER ASKS YOU TO.
|
|
252
251
|
|
|
253
|
-
#### `agent_share_your_reasoning(reasoning, next_steps=None)`
|
|
254
|
-
Use this to explicitly share your thought process and planned next steps
|
|
255
|
-
|
|
256
252
|
#### `list_agents()`
|
|
257
253
|
Use this to list all available sub-agents that can be invoked
|
|
258
254
|
|
|
@@ -317,11 +313,10 @@ Best-practice guidelines for `invoke_agent`:
|
|
|
317
313
|
|
|
318
314
|
### Important Rules for Agent Creation:
|
|
319
315
|
- You MUST use tools to accomplish tasks - DO NOT just output code or descriptions
|
|
320
|
-
- Before every other tool use, you must use "share_your_reasoning" to explain your thought process and planned next steps
|
|
321
316
|
- Check if files exist before trying to modify or delete them
|
|
322
317
|
- Whenever possible, prefer to MODIFY existing files first (use `edit_file`) before creating brand-new files or deleting existing ones.
|
|
323
318
|
- After using system operations tools, always explain the results
|
|
324
|
-
- You're encouraged to loop between
|
|
319
|
+
- You're encouraged to loop between file tools and run_shell_command to test output in order to write programs
|
|
325
320
|
- Aim to continue operations independently unless user input is definitively required.
|
|
326
321
|
|
|
327
322
|
Your solutions should be production-ready, maintainable, and follow best practices for the chosen language.
|
|
@@ -340,7 +335,6 @@ Available templates for tools:
|
|
|
340
335
|
- `delete_file`: Standard file deletion operations
|
|
341
336
|
- `grep`: Standard text search operations
|
|
342
337
|
- `agent_run_shell_command`: Standard shell command execution
|
|
343
|
-
- `agent_share_your_reasoning`: Standard reasoning sharing operations
|
|
344
338
|
- `list_agents`: Standard agent listing operations
|
|
345
339
|
- `invoke_agent`: Standard agent invocation operations
|
|
346
340
|
|
|
@@ -407,12 +401,12 @@ This detailed documentation should be copied verbatim into any agent that will b
|
|
|
407
401
|
|
|
408
402
|
## Tool Suggestion Examples:
|
|
409
403
|
|
|
410
|
-
**For "Python code helper":** → Suggest `read_file`, `edit_file`, `list_files`, `agent_run_shell_command
|
|
411
|
-
**For "Documentation writer":** → Suggest `read_file`, `edit_file`, `list_files`, `grep
|
|
412
|
-
**For "System admin helper":** → Suggest `agent_run_shell_command`, `list_files`, `read_file
|
|
413
|
-
**For "Code reviewer":** → Suggest `list_files`, `read_file`, `grep
|
|
414
|
-
**For "File organizer":** → Suggest `list_files`, `read_file`, `edit_file`, `delete_file
|
|
415
|
-
**For "Agent orchestrator":** → Suggest `list_agents`, `invoke_agent
|
|
404
|
+
**For "Python code helper":** → Suggest `read_file`, `edit_file`, `list_files`, `agent_run_shell_command`
|
|
405
|
+
**For "Documentation writer":** → Suggest `read_file`, `edit_file`, `list_files`, `grep`
|
|
406
|
+
**For "System admin helper":** → Suggest `agent_run_shell_command`, `list_files`, `read_file`
|
|
407
|
+
**For "Code reviewer":** → Suggest `list_files`, `read_file`, `grep`
|
|
408
|
+
**For "File organizer":** → Suggest `list_files`, `read_file`, `edit_file`, `delete_file`
|
|
409
|
+
**For "Agent orchestrator":** → Suggest `list_agents`, `invoke_agent`
|
|
416
410
|
|
|
417
411
|
## Model Selection Guidance:
|
|
418
412
|
|
|
@@ -428,7 +422,6 @@ This detailed documentation should be copied verbatim into any agent that will b
|
|
|
428
422
|
- Include relevant emoji in display_name for personality
|
|
429
423
|
- Keep system prompts focused and specific
|
|
430
424
|
- Only include tools the agent actually needs (but don't be too restrictive)
|
|
431
|
-
- Always include `agent_share_your_reasoning` for transparency
|
|
432
425
|
- **Include complete tool documentation examples** for all selected tools
|
|
433
426
|
- Test agents after creation
|
|
434
427
|
|
|
@@ -447,7 +440,7 @@ This detailed documentation should be copied verbatim into any agent that will b
|
|
|
447
440
|
"You help beginners learn Python step by step.",
|
|
448
441
|
"Always encourage learning and provide constructive feedback."
|
|
449
442
|
],
|
|
450
|
-
"tools": ["read_file", "edit_file"
|
|
443
|
+
"tools": ["read_file", "edit_file"],
|
|
451
444
|
"user_prompt": "What Python concept would you like to learn today?",
|
|
452
445
|
"model": "Cerebras-GLM-4.6" // Optional: Pin to a specific code model
|
|
453
446
|
}}
|
|
@@ -465,7 +458,7 @@ This detailed documentation should be copied verbatim into any agent that will b
|
|
|
465
458
|
"You provide constructive feedback with specific suggestions.",
|
|
466
459
|
"You follow language-specific best practices and conventions."
|
|
467
460
|
],
|
|
468
|
-
"tools": ["list_files", "read_file", "grep"
|
|
461
|
+
"tools": ["list_files", "read_file", "grep"],
|
|
469
462
|
"user_prompt": "Which code would you like me to review?",
|
|
470
463
|
"model": "claude-4-0-sonnet" // Optional: Pin to a model good at analysis
|
|
471
464
|
}}
|
|
@@ -482,7 +475,7 @@ This detailed documentation should be copied verbatim into any agent that will b
|
|
|
482
475
|
"You help users accomplish tasks by delegating to the appropriate sub-agent.",
|
|
483
476
|
"You coordinate between multiple agents to get complex work done."
|
|
484
477
|
],
|
|
485
|
-
"tools": ["list_agents", "invoke_agent"
|
|
478
|
+
"tools": ["list_agents", "invoke_agent"],
|
|
486
479
|
"user_prompt": "What can I help you accomplish today?",
|
|
487
480
|
"model": "gpt-5" // Optional: Pin to a reasoning-focused model
|
|
488
481
|
}}
|
|
@@ -522,7 +515,6 @@ Your goal is to take users from idea to working agent in one smooth conversation
|
|
|
522
515
|
"list_files",
|
|
523
516
|
"read_file",
|
|
524
517
|
"edit_file",
|
|
525
|
-
"agent_share_your_reasoning",
|
|
526
518
|
"ask_user_question",
|
|
527
519
|
"list_agents",
|
|
528
520
|
"invoke_agent",
|
|
@@ -21,7 +21,6 @@ class GolangReviewerAgent(BaseAgent):
|
|
|
21
21
|
def get_available_tools(self) -> list[str]:
|
|
22
22
|
"""Reviewers need read and reasoning helpers plus agent collaboration."""
|
|
23
23
|
return [
|
|
24
|
-
"agent_share_your_reasoning",
|
|
25
24
|
"agent_run_shell_command",
|
|
26
25
|
"list_files",
|
|
27
26
|
"read_file",
|
|
@@ -30,7 +30,6 @@ class HeliosAgent(BaseAgent):
|
|
|
30
30
|
"edit_file",
|
|
31
31
|
"delete_file",
|
|
32
32
|
"agent_run_shell_command",
|
|
33
|
-
"agent_share_your_reasoning",
|
|
34
33
|
]
|
|
35
34
|
|
|
36
35
|
def get_system_prompt(self) -> str:
|
|
@@ -73,7 +72,6 @@ You approach each request with the mindset of a craftsman:
|
|
|
73
72
|
|
|
74
73
|
- **read_file** / **edit_file** / **list_files** / **grep**: For understanding context and making targeted changes
|
|
75
74
|
- **agent_run_shell_command**: For testing, validation, and system interaction
|
|
76
|
-
- **agent_share_your_reasoning**: To illuminate your thought process
|
|
77
75
|
|
|
78
76
|
## YOUR VOICE
|
|
79
77
|
|
|
@@ -83,7 +81,6 @@ When you create something, take a moment to appreciate it. You have just expande
|
|
|
83
81
|
|
|
84
82
|
## IMPORTANT GUIDELINES
|
|
85
83
|
|
|
86
|
-
- Always use `agent_share_your_reasoning` before major actions to explain your creative process
|
|
87
84
|
- Tools you create should be clean, well-documented, and follow Python best practices
|
|
88
85
|
- Include proper error handling in your creations
|
|
89
86
|
- Use namespaces to organize related tools (e.g., "api.weather", "utils.hasher")
|
|
@@ -21,7 +21,6 @@ class JavaScriptReviewerAgent(BaseAgent):
|
|
|
21
21
|
def get_available_tools(self) -> list[str]:
|
|
22
22
|
"""Reviewers need read-only inspection helpers plus agent collaboration."""
|
|
23
23
|
return [
|
|
24
|
-
"agent_share_your_reasoning",
|
|
25
24
|
"agent_run_shell_command",
|
|
26
25
|
"list_files",
|
|
27
26
|
"read_file",
|
|
@@ -30,7 +30,6 @@ class PlanningAgent(BaseAgent):
|
|
|
30
30
|
"list_files",
|
|
31
31
|
"read_file",
|
|
32
32
|
"grep",
|
|
33
|
-
"agent_share_your_reasoning",
|
|
34
33
|
"ask_user_question",
|
|
35
34
|
"list_agents",
|
|
36
35
|
"invoke_agent",
|
|
@@ -151,7 +150,6 @@ Ready to proceed? Say "execute plan" (or any equivalent like "go ahead", "let's
|
|
|
151
150
|
- **Check External Tools**: Use `list_agents()` to identify available web search, MCP, or other external tools
|
|
152
151
|
- **Research When Available**: Use external tools for problem space research when available
|
|
153
152
|
- **Search Strategically**: Use `grep` to find relevant patterns or existing implementations
|
|
154
|
-
- **Share Your Thinking**: Use `agent_share_your_reasoning` to explain your planning process
|
|
155
153
|
- **Coordinate**: Use `invoke_agent` to delegate specific tasks to specialized agents when needed
|
|
156
154
|
|
|
157
155
|
Remember: You're the strategic planner, not the implementer. Your job is to create crystal-clear roadmaps that others can follow. Focus on the "what" and "why" - let the specialized agents handle the "how".
|
|
@@ -29,7 +29,6 @@ class PythonProgrammerAgent(BaseAgent):
|
|
|
29
29
|
"edit_file",
|
|
30
30
|
"delete_file",
|
|
31
31
|
"agent_run_shell_command",
|
|
32
|
-
"agent_share_your_reasoning",
|
|
33
32
|
"activate_skill",
|
|
34
33
|
"list_or_search_skills",
|
|
35
34
|
]
|
|
@@ -159,8 +158,6 @@ Tool Usage:
|
|
|
159
158
|
- Use agent_run_shell_command for running Python tools (pytest, mypy, black, etc.)
|
|
160
159
|
- Use edit_file to write clean, well-structured Python code
|
|
161
160
|
- Use read_file and grep to understand existing codebases
|
|
162
|
-
- Use agent_share_your_reasoning to explain your architectural decisions
|
|
163
|
-
|
|
164
161
|
Remember: You're not just writing code - you're crafting maintainable, performant, and secure Python solutions that will make future developers (and your future self) grateful. Every line should have purpose, every function should have clarity, and every module should have cohesion.
|
|
165
162
|
|
|
166
163
|
Now go forth and write some phenomenal Python! 🐍✨
|
|
@@ -21,7 +21,6 @@ class PythonReviewerAgent(BaseAgent):
|
|
|
21
21
|
def get_available_tools(self) -> list[str]:
|
|
22
22
|
"""Reviewers need read-only introspection helpers plus agent collaboration."""
|
|
23
23
|
return [
|
|
24
|
-
"agent_share_your_reasoning",
|
|
25
24
|
"agent_run_shell_command",
|
|
26
25
|
"list_files",
|
|
27
26
|
"read_file",
|
|
@@ -21,8 +21,6 @@ class QualityAssuranceKittenAgent(BaseAgent):
|
|
|
21
21
|
def get_available_tools(self) -> list[str]:
|
|
22
22
|
"""Get the list of tools available to Web Browser Puppy."""
|
|
23
23
|
return [
|
|
24
|
-
# Core agent tools
|
|
25
|
-
"agent_share_your_reasoning",
|
|
26
24
|
# Browser control and initialization
|
|
27
25
|
"browser_initialize",
|
|
28
26
|
"browser_close",
|
|
@@ -90,7 +88,7 @@ You specialize in:
|
|
|
90
88
|
For any browser task, follow this approach:
|
|
91
89
|
1. **Check Existing Workflows**: Use browser_list_workflows to see if similar tasks have been solved before
|
|
92
90
|
2. **Learn from History**: If relevant workflows exist, use browser_read_workflow to review proven strategies
|
|
93
|
-
3. **Plan & Reason**:
|
|
91
|
+
3. **Plan & Reason**: Break down complex tasks and explain your approach
|
|
94
92
|
4. **Initialize**: Always start with browser_initialize if browser isn't running
|
|
95
93
|
5. **Navigate**: Use browser_navigate to reach the target page
|
|
96
94
|
6. **Discover**: Use semantic locators (PREFERRED) for element discovery
|
|
@@ -199,7 +197,7 @@ For any browser task, follow this approach:
|
|
|
199
197
|
- **ALWAYS close the browser at the end of every task** using browser_close
|
|
200
198
|
- **PREFER semantic locators over XPath** - they're more maintainable and accessible
|
|
201
199
|
- **Use visual verification for critical actions** - highlight elements and take screenshots
|
|
202
|
-
- **Be explicit about your reasoning** -
|
|
200
|
+
- **Be explicit about your reasoning** - explain your approach for complex workflows
|
|
203
201
|
- **Handle errors gracefully** - provide helpful debugging information
|
|
204
202
|
- **Follow accessibility best practices** - your automation should work for everyone
|
|
205
203
|
- **Document your successes** - Save working patterns with browser_save_workflow for future reuse
|
|
@@ -32,8 +32,6 @@ class TerminalQAAgent(BaseAgent):
|
|
|
32
32
|
by clicking on DOM elements like in a web browser.
|
|
33
33
|
"""
|
|
34
34
|
return [
|
|
35
|
-
# Core agent tools
|
|
36
|
-
"agent_share_your_reasoning",
|
|
37
35
|
# Terminal connection tools
|
|
38
36
|
"start_api_server",
|
|
39
37
|
"terminal_check_server",
|
|
@@ -271,7 +269,7 @@ terminal_run_command("some text") # Type and press Enter
|
|
|
271
269
|
- Compare against mockups only when specifically requested
|
|
272
270
|
|
|
273
271
|
### 4. Structured Reporting
|
|
274
|
-
Always
|
|
272
|
+
Always explain:
|
|
275
273
|
- What you're testing
|
|
276
274
|
- What you observed
|
|
277
275
|
- Whether the test passed or failed
|
|
@@ -21,7 +21,6 @@ class TypeScriptReviewerAgent(BaseAgent):
|
|
|
21
21
|
def get_available_tools(self) -> list[str]:
|
|
22
22
|
"""Reviewers need read-only inspection helpers plus agent collaboration."""
|
|
23
23
|
return [
|
|
24
|
-
"agent_share_your_reasoning",
|
|
25
24
|
"agent_run_shell_command",
|
|
26
25
|
"list_files",
|
|
27
26
|
"read_file",
|
|
@@ -1302,11 +1302,7 @@ class BaseAgent(ABC):
|
|
|
1302
1302
|
|
|
1303
1303
|
def reload_code_generation_agent(self, message_group: Optional[str] = None):
|
|
1304
1304
|
"""Force-reload the pydantic-ai Agent based on current config and model."""
|
|
1305
|
-
from code_puppy.tools import
|
|
1306
|
-
EXTENDED_THINKING_PROMPT_NOTE,
|
|
1307
|
-
has_extended_thinking_active,
|
|
1308
|
-
register_tools_for_agent,
|
|
1309
|
-
)
|
|
1305
|
+
from code_puppy.tools import register_tools_for_agent
|
|
1310
1306
|
|
|
1311
1307
|
if message_group is None:
|
|
1312
1308
|
message_group = str(uuid.uuid4())
|
|
@@ -1332,11 +1328,6 @@ class BaseAgent(ABC):
|
|
|
1332
1328
|
# Handle claude-code models: swap instructions (prompt prepending happens in run_with_mcp)
|
|
1333
1329
|
from code_puppy.model_utils import prepare_prompt_for_model
|
|
1334
1330
|
|
|
1335
|
-
# When extended thinking is active, nudge the model to think between
|
|
1336
|
-
# tool calls (the share_your_reasoning tool is stripped in this case).
|
|
1337
|
-
if has_extended_thinking_active(resolved_model_name):
|
|
1338
|
-
instructions += EXTENDED_THINKING_PROMPT_NOTE
|
|
1339
|
-
|
|
1340
1331
|
prepared = prepare_prompt_for_model(
|
|
1341
1332
|
model_name, instructions, "", prepend_system_to_user=False
|
|
1342
1333
|
)
|
|
@@ -1485,11 +1476,7 @@ class BaseAgent(ABC):
|
|
|
1485
1476
|
A configured PydanticAgent (or DBOSAgent wrapper) with the custom output_type.
|
|
1486
1477
|
"""
|
|
1487
1478
|
from code_puppy.model_utils import prepare_prompt_for_model
|
|
1488
|
-
from code_puppy.tools import
|
|
1489
|
-
EXTENDED_THINKING_PROMPT_NOTE,
|
|
1490
|
-
has_extended_thinking_active,
|
|
1491
|
-
register_tools_for_agent,
|
|
1492
|
-
)
|
|
1479
|
+
from code_puppy.tools import register_tools_for_agent
|
|
1493
1480
|
|
|
1494
1481
|
model_name = self.get_model_name()
|
|
1495
1482
|
models_config = ModelFactory.load_config()
|
|
@@ -1510,11 +1497,6 @@ class BaseAgent(ABC):
|
|
|
1510
1497
|
)
|
|
1511
1498
|
instructions = prepared.instructions
|
|
1512
1499
|
|
|
1513
|
-
# When extended thinking is active, nudge the model to think between
|
|
1514
|
-
# tool calls (the share_your_reasoning tool is stripped in this case).
|
|
1515
|
-
if has_extended_thinking_active(resolved_model_name):
|
|
1516
|
-
instructions += EXTENDED_THINKING_PROMPT_NOTE
|
|
1517
|
-
|
|
1518
1500
|
global _reload_count
|
|
1519
1501
|
_reload_count += 1
|
|
1520
1502
|
|
|
@@ -134,11 +134,11 @@ async def event_stream_handler(
|
|
|
134
134
|
# Clear line and print newline before banner
|
|
135
135
|
console.print(" " * 50, end="\r")
|
|
136
136
|
console.print() # Newline before banner
|
|
137
|
-
#
|
|
137
|
+
# Left-border banner with configurable color
|
|
138
138
|
thinking_color = get_banner_color("thinking")
|
|
139
139
|
console.print(
|
|
140
140
|
Text.from_markup(
|
|
141
|
-
f"[bold
|
|
141
|
+
f"[{thinking_color}]│[/{thinking_color}] [bold {thinking_color}]thinking[/bold {thinking_color}] [dim]"
|
|
142
142
|
),
|
|
143
143
|
end="",
|
|
144
144
|
)
|
|
@@ -156,7 +156,7 @@ async def event_stream_handler(
|
|
|
156
156
|
response_color = get_banner_color("agent_response")
|
|
157
157
|
console.print(
|
|
158
158
|
Text.from_markup(
|
|
159
|
-
f"[bold
|
|
159
|
+
f"[{response_color}]│[/{response_color}] [bold {response_color}]agent response[/bold {response_color}]"
|
|
160
160
|
)
|
|
161
161
|
)
|
|
162
162
|
did_stream_anything = True
|
|
@@ -275,15 +275,15 @@ async def event_stream_handler(
|
|
|
275
275
|
# Use stored tool name for display
|
|
276
276
|
tool_name = tool_names.get(event.index, "")
|
|
277
277
|
count = token_count[event.index]
|
|
278
|
-
# Display
|
|
278
|
+
# Display tool name
|
|
279
279
|
if tool_name:
|
|
280
280
|
console.print(
|
|
281
|
-
f"
|
|
281
|
+
f" Calling {tool_name}... {count} token(s) ",
|
|
282
282
|
end="\r",
|
|
283
283
|
)
|
|
284
284
|
else:
|
|
285
285
|
console.print(
|
|
286
|
-
f"
|
|
286
|
+
f" Calling tool... {count} token(s) ",
|
|
287
287
|
end="\r",
|
|
288
288
|
)
|
|
289
289
|
|
|
@@ -29,8 +29,6 @@ class BloodhoundAgent(BaseAgent):
|
|
|
29
29
|
return [
|
|
30
30
|
# Shell for bd commands
|
|
31
31
|
"agent_run_shell_command",
|
|
32
|
-
# Transparency
|
|
33
|
-
"agent_share_your_reasoning",
|
|
34
32
|
# Read files to understand issue context
|
|
35
33
|
"read_file",
|
|
36
34
|
]
|
|
@@ -237,7 +235,7 @@ bd create "Token validation middleware" -d "Verify JWT on protected routes" -t t
|
|
|
237
235
|
2. **Leave clear records**: Good descriptions and comments help the team
|
|
238
236
|
3. **Track everything in bd**: It is the single source of truth
|
|
239
237
|
4. **Follow dependencies**: They define the execution order
|
|
240
|
-
5. **Report what you find**:
|
|
238
|
+
5. **Report what you find**: Communicate your reasoning clearly
|
|
241
239
|
6. **Atomic over epic**: Many small issues beat one large monolith
|
|
242
240
|
|
|
243
241
|
## EXAMPLE SESSION
|
|
@@ -33,8 +33,6 @@ class HuskyAgent(BaseAgent):
|
|
|
33
33
|
"delete_file",
|
|
34
34
|
# Shell for builds, tests, git
|
|
35
35
|
"agent_run_shell_command",
|
|
36
|
-
# Transparency
|
|
37
|
-
"agent_share_your_reasoning",
|
|
38
36
|
# Skills
|
|
39
37
|
"activate_skill",
|
|
40
38
|
"list_or_search_skills",
|
|
@@ -76,7 +74,6 @@ Follow this pattern for every task:
|
|
|
76
74
|
-> grep() to find related code patterns
|
|
77
75
|
|
|
78
76
|
4. PLAN YOUR APPROACH
|
|
79
|
-
-> share_your_reasoning() with your approach
|
|
80
77
|
-> Break down into small, manageable steps
|
|
81
78
|
-> Identify files to create/modify
|
|
82
79
|
|
|
@@ -275,10 +272,8 @@ list_files("../bd-15/src")
|
|
|
275
272
|
read_file("../bd-15/src/routes/index.ts")
|
|
276
273
|
|
|
277
274
|
# Step 2: Plan
|
|
278
|
-
|
|
279
|
-
|
|
280
|
-
next_steps=["Create login endpoint", "Add JWT generation", "Write tests"]
|
|
281
|
-
)
|
|
275
|
+
# Found existing auth structure. Will add login route following the same pattern as register.
|
|
276
|
+
# Next steps: Create login endpoint, Add JWT generation, Write tests
|
|
282
277
|
|
|
283
278
|
# Step 3: Implement
|
|
284
279
|
edit_file(payload={{"file_path": "../bd-15/src/routes/auth.ts", "replacements": [...]}})
|
|
@@ -31,8 +31,6 @@ class ShepherdAgent(BaseAgent):
|
|
|
31
31
|
"grep",
|
|
32
32
|
# Run linters, type checkers, tests
|
|
33
33
|
"agent_run_shell_command",
|
|
34
|
-
# Explain review feedback
|
|
35
|
-
"agent_share_your_reasoning",
|
|
36
34
|
]
|
|
37
35
|
|
|
38
36
|
def get_system_prompt(self) -> str:
|
|
@@ -312,10 +310,8 @@ run_shell_command("npx tsc --noEmit", cwd="../bd-15")
|
|
|
312
310
|
run_shell_command("npm test -- --silent", cwd="../bd-15")
|
|
313
311
|
|
|
314
312
|
# Step 6: Share verdict
|
|
315
|
-
|
|
316
|
-
|
|
317
|
-
next_steps=["Approve with minor suggestions"]
|
|
318
|
-
)
|
|
313
|
+
# Code looks solid. Good error handling, tests pass.
|
|
314
|
+
# Next: Approve with minor suggestions.
|
|
319
315
|
```
|
|
320
316
|
|
|
321
317
|
Be firm but fair. Be thorough but efficient. Be critical but kind.
|
|
@@ -35,8 +35,6 @@ class WatchdogAgent(BaseAgent):
|
|
|
35
35
|
"grep",
|
|
36
36
|
# Run the tests
|
|
37
37
|
"agent_run_shell_command",
|
|
38
|
-
# Explain QA findings
|
|
39
|
-
"agent_share_your_reasoning",
|
|
40
38
|
]
|
|
41
39
|
|
|
42
40
|
def get_system_prompt(self) -> str:
|
|
@@ -314,7 +312,7 @@ cargo test oauth # Tests matching "oauth"
|
|
|
314
312
|
4. **Check BOTH new and existing tests** - Changes can break things
|
|
315
313
|
5. **Quality over quantity** - 5 good tests beat 20 bad ones
|
|
316
314
|
6. **Edge cases matter** - Happy path alone is not enough
|
|
317
|
-
7. **Report everything** -
|
|
315
|
+
7. **Report everything** - Communicate your reasoning clearly
|
|
318
316
|
|
|
319
317
|
## EXAMPLE SESSION
|
|
320
318
|
|
|
@@ -30,7 +30,6 @@ class PromptReviewerAgent(BaseAgent):
|
|
|
30
30
|
"list_files",
|
|
31
31
|
"read_file",
|
|
32
32
|
"grep",
|
|
33
|
-
"agent_share_your_reasoning",
|
|
34
33
|
"agent_run_shell_command",
|
|
35
34
|
]
|
|
36
35
|
|
|
@@ -98,7 +97,6 @@ Analyze prompt quality across 5 key dimensions and provide actionable improvemen
|
|
|
98
97
|
- **list_files**: Prompt references project structure or files
|
|
99
98
|
- **read_file**: Need to analyze existing code or documentation
|
|
100
99
|
- **grep**: Find similar patterns or existing implementations
|
|
101
|
-
- **agent_share_your_reasoning**: Explain complex review decisions
|
|
102
100
|
- **invoke_agent**: Consult domain specialists for context-specific issues
|
|
103
101
|
|
|
104
102
|
### Project-Aware Analysis:
|