-
Notifications
You must be signed in to change notification settings - Fork 70
feature/shell #118
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
jasimpson-yobo
wants to merge
761
commits into
mpfaffenberger:main
Choose a base branch
from
jasimpson-yobo:feature/shell
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
feature/shell #118
jasimpson-yobo
wants to merge
761
commits into
mpfaffenberger:main
from
jasimpson-yobo:feature/shell
+85,479
−2,460
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
…tory mutation - Remove URL detection from _parse_link to prevent URLs from being treated as attachments - URLs in prompts now remain as plain text instead of being converted to ImageUrl or DocumentUrl - Fix potential mutation bug in agent_manager by storing shallow copies of message histories - Prevent shared list instances between agent history cache and active agents - Update tests to reflect new behavior where URLs are left untouched in prompts
- Add persistent profile directory management to maintain browser state across runs - Configure Camoufox to use stored cookies, localStorage, and history via storage_state - Save browser context state on cleanup to preserve session data for future use - Display profile directory path in startup info and state save confirmation - Ensure profile directory is created if it doesn't exist at ~/.code_puppy/camoufox_profile
- Fix UsageLimits import to use public API instead of private module path - Downgrade pydantic-ai from 1.0.6 to 1.0.5 for stability - Refactor Camoufox browser initialization to use persistent context mode - Remove automatic homepage navigation to prevent duplicate tabs - Implement lazy page creation in get_current_page() method - Add persistent storage state handling for cookies and localStorage
…th handling - Add new claude-4.1-opus model with 200k context length to models.json - Implement MAX_PATH_LENGTH limit (1024 chars) to prevent OS filesystem errors - Skip real-time path detection for long text input (>500 chars) to avoid UI slowdown - Improve error handling for filesystem operations with better OSError catching - Add tests for very long token handling and long paragraph paste scenarios - Refactor code formatting for better readability in several functions
- Updated configuration to include 'http2' option for enabling HTTP/2 protocol. - Implemented functions to get and set the 'http2' configuration value. - Modified client creation functions to utilize HTTP/2 if enabled in the configuration. - Updated tests to verify the inclusion of 'http2' in configuration keys. Co-authored-by: Mike Pfaffenberger <[email protected]>
Add support for the Synthetic provider (https://dev.synthetic.new), enabling access to high-quality open-source models through an OpenAI-compatible API. This integration provides developers with additional model options featuring generous context windows. - Add four new Synthetic provider models: DeepSeek-V3.1-Terminus (128K), Kimi-K2-Instruct-0905 (256K), Qwen3-Coder-480B-A35B-Instruct (256K), and GLM-4.6 (200K) - Configure custom OpenAI endpoint at api.synthetic.new/openai/v1/ for all Synthetic models - Document SYN_API_KEY environment variable setup in README - Add dedicated Synthetic Provider section explaining available models and their capabilities
* add DBOS dependency * tweak, disable some failing tests * basic DBOS working * temp comment out failed test * Cancel workflow when cancelling the agent task * Print system message about DBOS * Set DBOS app version to the same as code puppy version * revert changes in tests * clean up * Support configurable database url * Edit README * add DBOS dependency * tweak, disable some failing tests * basic DBOS working * temp comment out failed test * Cancel workflow when cancelling the agent task * Print system message about DBOS * Set DBOS app version to the same as code puppy version * revert changes in tests * clean up * Support configurable database url * Edit README * ruff format
Replace compile-time environment variable (CODE_PUPPY_NO_DBOS) with runtime config setting that persists across sessions. Users can now toggle DBOS with `/set enable_dbos true|false` command. - Convert USE_DBOS constant to get_use_dbos() function reading from config - Update all USE_DBOS references across agent wrappers and lifecycle management - Add enable_dbos to config keys with false as default - Display DBOS status in /status output with toggle instructions - Update README to document new configuration method
- Add user notification when DBOS is enabled/disabled via config command - Inform users to restart Code Puppy for DBOS changes to take effect - Remove emoji from config success message for consistency - Prevent confusion when DBOS settings don't immediately apply
- Add conftest.py with reusable mock_cleanup fixture to reduce test duplication - Update test_config.py to include enable_dbos in expected configuration keys - Remove obsolete test cases for keybinding handlers and link placeholder processing that are no longer applicable
…processing - Convert environment variable errors to warnings for optional model configurations - Allow graceful degradation when API keys or endpoints are missing - Return None for unavailable models instead of raising exceptions - Suppress attachment parsing warnings to reduce noise in user prompts - Skip unsupported attachments silently without halting execution - Fix OpenRouter API key resolution logic indentation - Rename glm model aliases to avoid naming conflicts (glm-4.5-api, glm-4.6-api) - Update tests to verify new warning-based behavior
Add validation and user-friendly warnings when ZAI_API_KEY environment variable is not set, preventing runtime errors during model initialization. - Check for ZAI_API_KEY presence before creating ZAI models - Emit warning message with model name when API key is missing - Return None instead of failing to allow application to continue with other models - Apply consistent error handling for both zai_coding and zai_api model types
…ic filtering Split IGNORE_PATTERNS into DIR_IGNORE_PATTERNS and FILE_IGNORE_PATTERNS to enable more precise filtering behavior across different tools. This change addresses an issue where list_files was excluding binary files even when their containing directories weren't ignored, while grep needed to skip both directories and binary files to avoid attempting to search non-text content. - Add should_ignore_dir_path() function for directory-only filtering - Update list_files to use directory patterns only, allowing it to show binary files in non-ignored directories - Update grep to continue using both directory and file patterns to avoid searching binary content - Maintain IGNORE_PATTERNS for backwards compatibility with existing code - Expand tilde (~) in file paths for better home directory handling - Fix non-recursive list_files to properly include both directories and files at the target level - Apply ignore filters to directories in non-recursive mode to respect exclusion patterns
…allback Restructure ripgrep integration to only handle recursive listings, improving code clarity and maintainability. - Wrap entire ripgrep logic in conditional block for recursive mode only - Remove --max-depth parameter handling from ripgrep command construction - Remove post-processing filter that checked for path separators in non-recursive mode - Eliminate redundant FILE_IGNORE_PATTERNS from ripgrep ignore file (only DIR_IGNORE_PATTERNS needed) - Let existing fallback implementation handle non-recursive directory listings naturally - Reduce code indentation by one level for better readability
…oved filtering (mpfaffenberger#108) * chore: update .gitignore to exclude environment files and serena directory - Add .env to prevent environment variable files from being tracked - Add .serena/ directory to gitignore to exclude local serena configuration * refactor: remove deprecated Cerebras-Qwen3-Coder-480b model - Removed the Cerebras-Qwen3-Coder-480b model configuration from models.json - This model appears to be deprecated or no longer supported - Cleanup reduces configuration clutter and removes unused model reference * feat: filter Claude models to keep only latest versions Add intelligent model filtering to automatically keep only the most recent versions of Claude models (haiku, sonnet, opus) when configuring the plugin. - Implement filter_latest_claude_models() function that parses model names using semantic versioning patterns - Support both dashed (claude-haiku-3-5-20241022) and dotted (claude-haiku-3.5-20241022) version formats - Compare models by major version, then minor version, then date to determine latest - Integrate filtering into add_models_to_extra_config() to reduce configuration clutter - Add logging to track filtering results for debugging This ensures users only see the latest model variants while maintaining backward compatibility with existing API responses. * feat: add /unpin command to reset agent models to default - Implement new /unpin command that removes pinned models from agents - Add support for both JSON agents and built-in Python agents - Extend /pin_model command to handle '(unpin)' special case for convenience - Add autocompletion support for the new unpin command - Include (unpin) option in pin command completion suggestions - Add command registration and test coverage for the unpin functionality This change provides users with an easy way to reset agents to their default models, complementing the existing pin functionality and improving the overall model management workflow. * feat: filter Claude Code OAuth models to show only latest versions - Add load_claude_models_filtered() function to return only the latest haiku, sonnet, and opus models - Update ModelFactory to use filtered loading for Claude Code OAuth models to prevent showing duplicate older versions - Modify register_callbacks to use filtered models when handling custom commands - Apply same filtering logic during loading that was previously only used during saving - Improve user experience by reducing model selection noise and confusion * feat: add GPT-5.1 and GPT-5.1-codex models to configuration - Added new OpenAI model configurations for GPT-5.1 and GPT-5.1-codex variants - Both models support context length of 272,000 tokens - Extends available model options for users with access to newer GPT versions * feat: add gpt-5.1-codex-mini-api model configuration - Added new OpenAI model "gpt-5.1-codex-mini" with 272k context length - Extended available model options for code generation capabilities - Maintained consistent model configuration structure * feat: update GLM-4.5 model to GLM-4.5-air variant - Changed model key from "glm-4.5-coding" to "glm-4.5-air-coding" - Updated API model key from "glm-4.5-api" to "glm-4.5-air-api" - Modified model name references from "glm-4.5" to "glm-4.5-air" - Maintains same model types (zai_coding and zai_api) for consistency * feat: add Claude 4.5 Haiku model and update Anthropic model names - Add new claude-4-5-haiku model with 200k context length - Update Anthropic model names to simplified format: - claude-sonnet-4-0 (was claude-sonnet-4-20250514) - claude-sonnet-4-5 (was claude-sonnet-4-5-20250929) - claude-opus-4-1 (was claude-opus-4-1-20250805) - Standardize naming convention for better maintainability --------- Co-authored-by: cellwebb <[email protected]>
- Extended model factory to recognize and properly instantiate gpt-5.1-codex-api - Ensures the new model uses OpenAIResponsesModel like gpt-5-codex-api - Maintains consistency with existing model instantiation patterns
- Replace explicit model name checks with generic substring detection - Improve maintainability by using "codex" in model_name instead of hardcoded names - Reduce code duplication and make logic more resilient to future model additions
- Add comprehensive proxy configuration support for HTTP/HTTPS traffic in http_utils.py - Introduce CODE_PUPPY_DISABLE_RETRY_TRANSPORT environment variable for testing scenarios - Disable custom retry transport when proxy environment variables are detected to ensure compatibility - Add comprehensive integration test with custom proxy server to monitor and validate network traffic - Implement strict domain whitelist validation to ensure only authorized external domains are contacted - Remove deprecated ENVIRONMENT_VARIABLES.md documentation file - Enhance client creation logic to properly handle proxy settings and SSL verification based on environment
- Move _colorize_diff and _get_optimal_color_pair functions from file_modifications.py to common.py to eliminate code duplication - Update format_diff_with_colors in common.py to use the consolidated functions and support both text and highlighted rendering modes - Update imports in config.py and file_modifications.py to reference the centralized functions - Remove duplicate implementation and legacy helper function from file_modifications.py - Improve code organization and maintainability by centralizing diff formatting logic
- Enable "highlight" mode with beautiful syntax highlighting using Pygments - Implement Monokai color scheme for Python, JavaScript, TypeScript, and many other languages - Add intelligent lexer detection based on file extensions - Update diff configuration menu to enable style selection - Modify preview system to show appropriate examples for both text and highlight modes - Set "highlight" as the new default diff style for improved readability - Maintain backward compatibility with "text" mode as fallback when Pygments unavailable - Enhance diff formatting to return Rich Text objects for syntax-highlighted content
- Replace manual FormattedText construction with Rich-based ANSI output - Generate live preview using actual diff formatting with current color settings - Support both text and highlight styles with proper syntax highlighting - Temporarily override config to show accurate preview of user selections - Remove manual color conversion logic in favor of Rich's native color system - Improve error handling with detailed error messages in preview panel
- Remove text/plain diff mode option, always use syntax highlighting - Simplify diff configuration by removing style selection menu - Update color palettes with darker, more readable hex colors - Add truecolor support to diff preview for better color accuracy - Brighten hex colors dynamically for optimal contrast - Consolidate diff formatting to always use Pygments syntax highlighting - Update config keys from diff_* to highlight_* for clarity - Add cloud.dbos.dev to network monitoring test whitelist
…#115) * feat: add case-insensitive command and model matching - Implement case-insensitive command lookup in registry while maintaining backward compatibility with exact matches - Add case-insensitive model name matching for /model and /m commands, preserving original model names in configuration - Extend case-insensitive completion to all command completions including agent names, model names, and special options like (unpin) - Add 'a' alias for /agent command with corresponding completion support - Ensure all pin/unpin operations work case-insensitively for agent names - Preserve user input casing while matching internally, maintaining a better user experience - Add comprehensive test coverage for all case-insensitive functionality including edge cases and backward compatibility * style: improve code formatting and remove unused import - Remove unused import from code_puppy.tools.common - Improve line wrapping for better readability in language navigation methods - Format multi-line function calls consistently across the file - Clean up whitespace and spacing in docstrings and function parameters --------- Co-authored-by: cellwebb <[email protected]>
- Remove entire TUI codebase including components, screens, and models - Convert --tui flag to alias for --i (interactive mode) - Update --web mode to indicate TUI has been removed - Simplify message queue system to remove TUI-specific logic - Update documentation and comments to reflect TUI removal - Maintain backward compatibility for existing command line usage - Remove TUI-related spinner implementations - Streamline autosave and diff picker descriptions This change removes 33 files and 6178 lines of code, significantly simplifying the codebase by eliminating the complex TUI implementation while preserving all interactive mode functionality. The application now focuses on a single, well-maintained interactive terminal interface.
…terface" This reverts commit 12bc812.
Owner
|
@jasimpson-yobo ty for the contrib - please make sure you run the linters |
Owner
|
closes #109 |
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Added ability to pause code puppy to use shell commands
/shell to switch to a shell
