newcode 0.1.3__tar.gz → 0.1.5__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.3 → newcode-0.1.5}/PKG-INFO +1 -1
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/agent_code_puppy.py +1 -1
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/event_stream_handler.py +3 -3
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/autosave_menu.py +1 -1
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/colors_menu.py +2 -2
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/config.py +15 -6
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/mcp_/managed_server.py +1 -1
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/messaging/rich_renderer.py +11 -11
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/agent_tools.py +1 -1
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/browser/__init__.py +1 -1
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/display.py +1 -1
- {newcode-0.1.3 → newcode-0.1.5}/pyproject.toml +1 -1
- {newcode-0.1.3 → newcode-0.1.5}/.gitignore +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/LICENSE +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/README.md +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/__init__.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/__main__.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/__init__.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/agent_c_reviewer.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/agent_code_reviewer.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/agent_cpp_reviewer.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/agent_creator_agent.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/agent_golang_reviewer.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/agent_helios.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/agent_javascript_reviewer.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/agent_manager.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/agent_pack_leader.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/agent_planning.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/agent_python_programmer.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/agent_python_reviewer.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/agent_qa_expert.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/agent_qa_kitten.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/agent_scheduler.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/agent_security_auditor.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/agent_terminal_qa.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/agent_typescript_reviewer.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/base_agent.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/json_agent.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/pack/__init__.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/pack/bloodhound.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/pack/husky.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/pack/retriever.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/pack/shepherd.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/pack/terrier.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/pack/watchdog.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/prompt_reviewer.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/agents/subagent_stream_handler.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/api/__init__.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/api/app.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/api/main.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/api/pty_manager.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/api/routers/__init__.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/api/routers/agents.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/api/routers/commands.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/api/routers/config.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/api/routers/sessions.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/api/templates/terminal.html +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/api/websocket.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/callbacks.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/chatgpt_codex_client.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/claude_cache_client.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/cli_runner.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/__init__.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/add_model_menu.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/agent_menu.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/attachments.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/clipboard.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/command_handler.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/command_registry.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/config_commands.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/core_commands.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/diff_menu.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/file_path_completion.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/load_context_completion.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/mcp/__init__.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/mcp/base.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/mcp/catalog_server_installer.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/mcp/custom_server_form.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/mcp/custom_server_installer.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/mcp/edit_command.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/mcp/handler.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/mcp/help_command.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/mcp/install_command.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/mcp/install_menu.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/mcp/list_command.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/mcp/logs_command.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/mcp/remove_command.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/mcp/restart_command.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/mcp/search_command.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/mcp/start_all_command.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/mcp/start_command.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/mcp/status_command.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/mcp/stop_all_command.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/mcp/stop_command.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/mcp/test_command.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/mcp/utils.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/mcp/wizard_utils.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/mcp_completion.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/model_picker_completion.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/model_settings_menu.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/motd.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/onboarding_slides.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/onboarding_wizard.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/pin_command_completion.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/prompt_toolkit_completion.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/session_commands.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/skills_completion.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/uc_menu.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/utils.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/command_line/wiggum_state.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/error_logging.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/gemini_code_assist.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/gemini_model.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/hook_engine/README.md +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/hook_engine/__init__.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/hook_engine/aliases.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/hook_engine/engine.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/hook_engine/executor.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/hook_engine/matcher.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/hook_engine/models.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/hook_engine/registry.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/hook_engine/validator.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/http_utils.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/keymap.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/main.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/mcp_/__init__.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/mcp_/async_lifecycle.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/mcp_/blocking_startup.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/mcp_/captured_stdio_server.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/mcp_/circuit_breaker.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/mcp_/config_wizard.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/mcp_/dashboard.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/mcp_/error_isolation.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/mcp_/examples/retry_example.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/mcp_/health_monitor.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/mcp_/manager.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/mcp_/mcp_logs.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/mcp_/registry.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/mcp_/retry_manager.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/mcp_/server_registry_catalog.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/mcp_/status_tracker.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/mcp_/system_tools.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/mcp_prompts/__init__.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/mcp_prompts/hook_creator.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/messaging/__init__.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/messaging/bus.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/messaging/commands.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/messaging/markdown_patches.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/messaging/message_queue.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/messaging/messages.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/messaging/queue_console.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/messaging/renderers.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/messaging/spinner/__init__.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/messaging/spinner/console_spinner.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/messaging/spinner/spinner_base.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/messaging/subagent_console.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/model_factory.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/model_switching.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/model_utils.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/models.json +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/models_dev_api.json +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/models_dev_parser.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/__init__.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/agent_skills/__init__.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/agent_skills/config.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/agent_skills/discovery.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/agent_skills/downloader.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/agent_skills/installer.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/agent_skills/metadata.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/agent_skills/prompt_builder.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/agent_skills/register_callbacks.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/agent_skills/remote_catalog.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/agent_skills/skill_catalog.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/agent_skills/skills_install_menu.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/agent_skills/skills_menu.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/antigravity_oauth/__init__.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/antigravity_oauth/accounts.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/antigravity_oauth/antigravity_model.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/antigravity_oauth/config.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/antigravity_oauth/constants.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/antigravity_oauth/oauth.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/antigravity_oauth/register_callbacks.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/antigravity_oauth/storage.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/antigravity_oauth/test_plugin.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/antigravity_oauth/token.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/antigravity_oauth/transport.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/antigravity_oauth/utils.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/chatgpt_oauth/__init__.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/chatgpt_oauth/config.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/chatgpt_oauth/oauth_flow.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/chatgpt_oauth/register_callbacks.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/chatgpt_oauth/test_plugin.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/chatgpt_oauth/utils.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/claude_code_hooks/__init__.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/claude_code_hooks/config.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/claude_code_hooks/register_callbacks.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/claude_code_oauth/README.md +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/claude_code_oauth/SETUP.md +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/claude_code_oauth/__init__.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/claude_code_oauth/config.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/claude_code_oauth/register_callbacks.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/claude_code_oauth/test_plugin.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/claude_code_oauth/token_refresh_heartbeat.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/claude_code_oauth/utils.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/customizable_commands/__init__.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/customizable_commands/register_callbacks.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/example_custom_command/README.md +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/example_custom_command/register_callbacks.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/file_permission_handler/__init__.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/file_permission_handler/register_callbacks.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/frontend_emitter/__init__.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/frontend_emitter/emitter.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/frontend_emitter/register_callbacks.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/hook_creator/__init__.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/hook_creator/register_callbacks.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/hook_manager/__init__.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/hook_manager/config.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/hook_manager/hooks_menu.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/hook_manager/register_callbacks.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/oauth_puppy_html.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/scheduler/__init__.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/scheduler/register_callbacks.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/scheduler/scheduler_menu.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/scheduler/scheduler_wizard.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/shell_safety/__init__.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/shell_safety/agent_shell_safety.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/shell_safety/command_cache.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/shell_safety/register_callbacks.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/synthetic_status/__init__.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/synthetic_status/register_callbacks.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/synthetic_status/status_api.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/universal_constructor/__init__.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/universal_constructor/models.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/universal_constructor/register_callbacks.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/universal_constructor/registry.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/plugins/universal_constructor/sandbox.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/prompts/antigravity_system_prompt.md +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/pydantic_patches.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/reopenable_async_client.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/round_robin_model.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/scheduler/__init__.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/scheduler/__main__.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/scheduler/cli.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/scheduler/config.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/scheduler/daemon.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/scheduler/executor.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/scheduler/platform.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/scheduler/platform_unix.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/scheduler/platform_win.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/session_storage.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/status_display.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/summarization_agent.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/terminal_utils.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/__init__.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/ask_user_question/__init__.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/ask_user_question/constants.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/ask_user_question/demo_tui.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/ask_user_question/handler.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/ask_user_question/models.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/ask_user_question/registration.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/ask_user_question/renderers.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/ask_user_question/terminal_ui.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/ask_user_question/theme.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/ask_user_question/tui_loop.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/browser/browser_control.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/browser/browser_interactions.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/browser/browser_locators.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/browser/browser_manager.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/browser/browser_navigation.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/browser/browser_screenshot.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/browser/browser_scripts.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/browser/browser_workflows.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/browser/chromium_terminal_manager.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/browser/terminal_command_tools.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/browser/terminal_screenshot_tools.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/browser/terminal_tools.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/command_runner.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/common.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/file_modifications.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/file_operations.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/scheduler_tools.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/skills_tools.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/subagent_context.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/tools_content.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/tools/universal_constructor.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/code_puppy/uvx_detection.py +0 -0
- {newcode-0.1.3 → newcode-0.1.5}/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.5
|
|
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
|
|
@@ -19,7 +19,7 @@ class CodePuppyAgent(BaseAgent):
|
|
|
19
19
|
|
|
20
20
|
@property
|
|
21
21
|
def description(self) -> str:
|
|
22
|
-
return "General-purpose code
|
|
22
|
+
return "General-purpose code agent that can read, write, and modify files, search codebases, and execute shell commands"
|
|
23
23
|
|
|
24
24
|
def get_available_tools(self) -> list[str]:
|
|
25
25
|
"""Get the list of tools available to the Code Agent."""
|
|
@@ -138,10 +138,10 @@ async def event_stream_handler(
|
|
|
138
138
|
thinking_color = get_banner_color("thinking")
|
|
139
139
|
console.print(
|
|
140
140
|
Text.from_markup(
|
|
141
|
-
f"[{thinking_color}]
|
|
141
|
+
f"[{thinking_color}]───[/{thinking_color}] [bold]THINKING[/bold] [{thinking_color}]───[/{thinking_color}]"
|
|
142
142
|
),
|
|
143
|
-
end="",
|
|
144
143
|
)
|
|
144
|
+
console.print("[dim]", end="")
|
|
145
145
|
did_stream_anything = True
|
|
146
146
|
|
|
147
147
|
async def _print_response_banner() -> None:
|
|
@@ -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"[{response_color}]
|
|
159
|
+
f"[{response_color}]───[/{response_color}] [bold]AGENT RESPONSE[/bold] [{response_color}]───[/{response_color}]"
|
|
160
160
|
)
|
|
161
161
|
)
|
|
162
162
|
did_stream_anything = True
|
|
@@ -481,7 +481,7 @@ def display_resumed_history(
|
|
|
481
481
|
console.print(f"[dim]{content}[/dim]")
|
|
482
482
|
else: # assistant
|
|
483
483
|
# Use the exact same banner format as normal agent response
|
|
484
|
-
banner = f"[{response_color}]
|
|
484
|
+
banner = f"[{response_color}]───[/{response_color}] [bold]AGENT RESPONSE[/bold] [{response_color}]───[/{response_color}]"
|
|
485
485
|
console.print(f"\n{banner}")
|
|
486
486
|
# Render content as markdown (same as normal chat)
|
|
487
487
|
md = Markdown(content)
|
|
@@ -420,7 +420,7 @@ def _get_preview_text_for_prompt_toolkit(config: ColorConfiguration) -> ANSI:
|
|
|
420
420
|
# Print the banner with its configured color (left-border style)
|
|
421
421
|
icon_str = f" {icon}" if icon else ""
|
|
422
422
|
banner_text = (
|
|
423
|
-
f"[{color}]
|
|
423
|
+
f"[{color}]───[/{color}] [bold]{display_name.upper()}[/bold] [{color}]───[/{color}]{icon_str}"
|
|
424
424
|
)
|
|
425
425
|
console.print(banner_text)
|
|
426
426
|
|
|
@@ -507,7 +507,7 @@ def _get_single_banner_preview(config: ColorConfiguration) -> ANSI:
|
|
|
507
507
|
# Show the banner large (left-border style)
|
|
508
508
|
icon_str = f" {icon}" if icon else ""
|
|
509
509
|
banner_text = (
|
|
510
|
-
f"[{color}]
|
|
510
|
+
f"[{color}]───[/{color}] [bold]{display_name.upper()}[/bold] [{color}]───[/{color}]{icon_str}"
|
|
511
511
|
)
|
|
512
512
|
console.print(banner_text)
|
|
513
513
|
console.print()
|
|
@@ -336,6 +336,15 @@ def get_config_keys():
|
|
|
336
336
|
default_keys.append("resume_message_count")
|
|
337
337
|
# Add show_diffs toggle
|
|
338
338
|
default_keys.append("show_diffs")
|
|
339
|
+
# Add remaining settable keys
|
|
340
|
+
default_keys.append("subagent_verbose")
|
|
341
|
+
default_keys.append("safety_permission_level")
|
|
342
|
+
default_keys.append("mcp_disabled")
|
|
343
|
+
default_keys.append("grep_output_verbose")
|
|
344
|
+
default_keys.append("diff_addition_color")
|
|
345
|
+
default_keys.append("diff_deletion_color")
|
|
346
|
+
default_keys.append("suppress_thinking_messages")
|
|
347
|
+
default_keys.append("suppress_informational_messages")
|
|
339
348
|
|
|
340
349
|
config = configparser.ConfigParser()
|
|
341
350
|
config.read(CONFIG_FILE)
|
|
@@ -1620,15 +1629,15 @@ def finalize_autosave_session() -> str:
|
|
|
1620
1629
|
def get_show_diffs() -> bool:
|
|
1621
1630
|
"""Check whether diff content should be shown in edit blocks.
|
|
1622
1631
|
|
|
1623
|
-
Defaults to
|
|
1624
|
-
|
|
1632
|
+
Defaults to False (compact mode showing only filename and line counts).
|
|
1633
|
+
When True, full diff content is displayed.
|
|
1625
1634
|
"""
|
|
1626
|
-
|
|
1635
|
+
true_vals = {"1", "true", "yes", "on"}
|
|
1627
1636
|
cfg_val = get_value("show_diffs")
|
|
1628
1637
|
if cfg_val is not None:
|
|
1629
|
-
if str(cfg_val).strip().lower() in
|
|
1630
|
-
return
|
|
1631
|
-
return
|
|
1638
|
+
if str(cfg_val).strip().lower() in true_vals:
|
|
1639
|
+
return True
|
|
1640
|
+
return False
|
|
1632
1641
|
|
|
1633
1642
|
|
|
1634
1643
|
def get_suppress_thinking_messages() -> bool:
|
|
@@ -86,7 +86,7 @@ async def process_tool_call(
|
|
|
86
86
|
|
|
87
87
|
console = Console()
|
|
88
88
|
color = get_banner_color("mcp_tool_call")
|
|
89
|
-
banner = f"[{color}]
|
|
89
|
+
banner = f"[{color}]───[/{color}] [bold]MCP TOOL CALL[/bold] [{color}]───[/{color}]"
|
|
90
90
|
console.print(f"\n{banner} [bold cyan]{name}[/bold cyan]")
|
|
91
91
|
return await call_tool(name, tool_args, {"deps": ctx.deps})
|
|
92
92
|
|
|
@@ -170,7 +170,7 @@ class RichConsoleRenderer:
|
|
|
170
170
|
return get_banner_color(banner_name)
|
|
171
171
|
|
|
172
172
|
def _format_banner(self, banner_name: str, text: str) -> str:
|
|
173
|
-
"""Format a banner with
|
|
173
|
+
"""Format a banner with colored dashes and bold capitalized text.
|
|
174
174
|
|
|
175
175
|
Args:
|
|
176
176
|
banner_name: The banner identifier
|
|
@@ -180,7 +180,7 @@ class RichConsoleRenderer:
|
|
|
180
180
|
Rich markup string for the banner
|
|
181
181
|
"""
|
|
182
182
|
color = self._get_banner_color(banner_name)
|
|
183
|
-
return f"[{color}]
|
|
183
|
+
return f"[{color}]───[/{color}] [bold]{text.upper()}[/bold] [{color}]───[/{color}]"
|
|
184
184
|
|
|
185
185
|
def _should_suppress_subagent_output(self) -> bool:
|
|
186
186
|
"""Check if sub-agent output should be suppressed.
|
|
@@ -431,7 +431,7 @@ class RichConsoleRenderer:
|
|
|
431
431
|
|
|
432
432
|
bar = self._bar(color)
|
|
433
433
|
self._console.print(
|
|
434
|
-
f"{bar} [bold cyan]{msg.directory}[/bold cyan] [dim]{rec_flag}[/dim]
|
|
434
|
+
f"{bar} [bold cyan]{msg.directory}[/bold cyan] [dim]{rec_flag}[/dim]"
|
|
435
435
|
)
|
|
436
436
|
|
|
437
437
|
# Build a tree structure: {parent_path: {files: [], dirs: set(), size: int}}
|
|
@@ -484,7 +484,10 @@ class RichConsoleRenderer:
|
|
|
484
484
|
|
|
485
485
|
# For root level, just show contents
|
|
486
486
|
if dir_path == root_key:
|
|
487
|
-
# Show
|
|
487
|
+
# Show subdirs first (like ls), then files
|
|
488
|
+
for subdir in subdirs:
|
|
489
|
+
render_dir_tree(subdir, depth)
|
|
490
|
+
|
|
488
491
|
for f in sorted(files, key=lambda x: x.path):
|
|
489
492
|
name = os.path.basename(f.path)
|
|
490
493
|
size_str = (
|
|
@@ -495,10 +498,6 @@ class RichConsoleRenderer:
|
|
|
495
498
|
self._console.print(
|
|
496
499
|
f"{bar}{indent}[green]{name}[/green]{size_str}"
|
|
497
500
|
)
|
|
498
|
-
|
|
499
|
-
# Show subdirs at root level
|
|
500
|
-
for subdir in subdirs:
|
|
501
|
-
render_dir_tree(subdir, depth)
|
|
502
501
|
else:
|
|
503
502
|
# Show directory with summary
|
|
504
503
|
dir_name = os.path.basename(dir_path)
|
|
@@ -538,6 +537,7 @@ class RichConsoleRenderer:
|
|
|
538
537
|
f"[green]{msg.file_count} files[/green] "
|
|
539
538
|
f"[dim]({self._format_size(msg.total_size)} total)[/dim]"
|
|
540
539
|
)
|
|
540
|
+
self._console.print(f"{bar}")
|
|
541
541
|
|
|
542
542
|
def _render_file_content(self, msg: FileContentMessage) -> None:
|
|
543
543
|
"""Render a file read - just show the header, not the content."""
|
|
@@ -773,7 +773,7 @@ class RichConsoleRenderer:
|
|
|
773
773
|
"""Render agent response with header and markdown formatting."""
|
|
774
774
|
# Header
|
|
775
775
|
banner = self._format_banner("agent_response", "AGENT RESPONSE")
|
|
776
|
-
self._console.print(f"\n{banner}
|
|
776
|
+
self._console.print(f"\n{banner}")
|
|
777
777
|
|
|
778
778
|
# Content (markdown or plain)
|
|
779
779
|
if msg.is_markdown:
|
|
@@ -1057,13 +1057,13 @@ class RichConsoleRenderer:
|
|
|
1057
1057
|
banner = self._format_banner("agent_response", "LIST SKILLS")
|
|
1058
1058
|
query_info = f" matching [cyan]'{msg.query}'[/cyan]" if msg.query else ""
|
|
1059
1059
|
self._console.print(
|
|
1060
|
-
f"\n{banner} Found [bold]{msg.total_count}[/bold] skill(s){query_info}
|
|
1060
|
+
f"\n{banner} Found [bold]{msg.total_count}[/bold] skill(s){query_info}"
|
|
1061
1061
|
)
|
|
1062
1062
|
|
|
1063
1063
|
if not msg.skills:
|
|
1064
1064
|
self._console.print(f"{bar}[dim] No skills found.[/dim]")
|
|
1065
1065
|
self._console.print(
|
|
1066
|
-
f"{bar}[dim] Install skills in ~/.code_puppy/skills/[/dim]
|
|
1066
|
+
f"{bar}[dim] Install skills in ~/.code_puppy/skills/[/dim]"
|
|
1067
1067
|
)
|
|
1068
1068
|
return
|
|
1069
1069
|
|
|
@@ -250,7 +250,7 @@ def register_list_agents(agent):
|
|
|
250
250
|
list_agents_color = get_banner_color("list_agents")
|
|
251
251
|
emit_info(
|
|
252
252
|
Text.from_markup(
|
|
253
|
-
f"\n[{list_agents_color}]
|
|
253
|
+
f"\n[{list_agents_color}]───[/{list_agents_color}] [bold]LIST AGENTS[/bold] [{list_agents_color}]───[/{list_agents_color}]"
|
|
254
254
|
),
|
|
255
255
|
message_group=group_id,
|
|
256
256
|
)
|
|
@@ -25,7 +25,7 @@ def format_terminal_banner(text: str) -> str:
|
|
|
25
25
|
Rich markup formatted string
|
|
26
26
|
"""
|
|
27
27
|
color = get_banner_color("terminal_tool")
|
|
28
|
-
return f"[{color}]
|
|
28
|
+
return f"[{color}]───[/{color}] [bold]{text.upper()}[/bold] [{color}]───[/{color}]"
|
|
29
29
|
|
|
30
30
|
|
|
31
31
|
__all__ = [
|
|
@@ -60,7 +60,7 @@ def display_non_streamed_result(
|
|
|
60
60
|
banner_color = get_banner_color(banner_name)
|
|
61
61
|
console.print(
|
|
62
62
|
Text.from_markup(
|
|
63
|
-
f"[{banner_color}]
|
|
63
|
+
f"[{banner_color}]───[/{banner_color}] [bold]{banner_text.upper()}[/bold] [{banner_color}]───[/{banner_color}]"
|
|
64
64
|
)
|
|
65
65
|
)
|
|
66
66
|
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|
|
File without changes
|