Commit Graph

153 Commits

Author SHA1 Message Date
can1357 d11ccd2e93 feat(coding-agent): added temp model controls and auto-chdir 2026-01-08 02:51:29 +01:00
can1357 02cae69bb5 feat: added session storage abstraction and configurable bash interceptor rules
- Added in-memory session storage abstraction with SessionStorage interface and MemorySessionStorage implementation.
- Added configurable bash interceptor rules with pattern-based command interception settings.
- Added AbortSignal support to 80+ web scrapers for request cancellation.
- Changed task tool to require explicit task `id` field and single `agent` parameter at top level.
- Removed `submit_review` tool - reviewers now use `complete` tool with structured output.
- Replaced Date.now() and crypto.randomUUID() with nanoid() for unique ID generation throughout codebase.
2026-01-07 23:17:09 +01:00
can1357 5919b0df94 refactor: switched to upstream @mariozechner/pi-ai and removed unused packages
- Replaced local @oh-my-pi/pi-ai with upstream @mariozechner/pi-ai@0.37.4
- Added sessionId support to agent for provider caching (OpenAI Codex)
- Deleted packages/ai (now using upstream)
- Deleted packages/mom (unused)
- Deleted packages/web-ui (unused)
2026-01-06 22:25:24 +00:00
can1357 6f128238f3 feat(coding-agent): added configurable sub-providers and fixed a few
- Added webSearchProvider, imageProvider, and git.enabled settings for configurable provider selection and feature toggles.
- Added offset and limit parameters to Output tool for paginated reading of large outputs.
- Added provider fallback chain for web search with WebSearchProviderError class for graceful degradation.
- Changed generate_image tool to save images to temp files instead of inline base64 to reduce context bloat.
- Changed web search default model from claude-sonnet-4-5-20250514 to claude-haiku-4-5.
- Added git command interception in bash to redirect to dedicated git tool when enabled.
2026-01-06 22:16:24 +00:00
can1357 ca03a5e075 feat(coding-agent): added ImageMagick fallback for image ops when sharp unavailable
- Added ImageMagick fallback for image processing when sharp is unavailable.
- Added image-magick utility module with detection, conversion, and resize functions.
- Changed web_fetch tool label from 'web_fetch' to 'Web Fetch'.
- Updated image-convert and image-resize to use ImageMagick fallback instead of failing or returning original.
2026-01-06 22:04:24 +00:00
can1357 3536e2aaaa feat(coding-agent): added branch summaries setting to disable prompt
Branch summary prompts when navigating away from a branch are now
controlled by a setting (disabled by default). Enable in Settings →
Config → "Branch summaries" to restore the previous prompting behavior.
2026-01-06 21:58:24 +00:00
can1357 15fbe228b3 feat(monorepo): merged codex providers and extensions 2026-01-05 15:37:44 +01:00
can1357 44b10b12d5 feat(coding-agent): added background execution with terminal notifications
- Added /background (or /bg) command to detach UI and continue agent execution in background.
- Added completion notification system with configurable methods (bell, osc99, osc9, auto, off).
- Added completionNotification setting and OMP_NOTIFICATIONS environment variable for notification control.
- Added terminal-notify module with protocol detection for terminal emulator notifications.
2026-01-05 15:37:44 +01:00
can1357 2baae16a34 fix(coding-agent): made browser opening cross-platform and non-failing
- Windows uses cmd /c start instead of raw start (shell builtin)
- macOS uses open, Linux uses xdg-open
- Wrapped in try-catch to fail silently when unavailable
2026-01-05 15:37:44 +01:00
can1357 8b38705146 feat(coding-agent): implemented OpenAI Realtime API voice mode
- Added VoiceSupervisor and VoiceController classes for realtime voice mode using OpenAI Realtime API.
- Added echo suppression, noise floor filtering, and fallback transcript handling for voice input.
- Changed voice mode toggle from Caps Lock to Ctrl+Y with auto-send on silence behavior.
- Changed default TTS model from gpt-4o-mini-tts to tts-1.
- Added kwaipilot/kat-coder-pro model and removed deprecated OpenRouter models.
2026-01-05 15:11:28 +01:00
can1357 f5251cce30 refactor(coding-agent): removed pendingVoiceResponses counter
- Removed pendingVoiceResponses counter to simplify voice response handling logic.
2026-01-05 08:12:58 +01:00
can1357 40586a8919 feat: added voice mode with push-to-talk for hands-free interaction
- Added voice mode with Caps Lock push-to-talk for speech-to-text and text-to-speech using OpenAI APIs.
- Added voice settings configuration for transcription model, TTS model, voice selection, and audio format.
- Added description field to task tool for user-facing progress summaries in subagent spawning.
- Added isCapsLock helper function to tui package for Kitty protocol key detection.
- Added getApiKeyForProvider() method to ModelRegistry for retrieving API keys by provider name.
2026-01-05 08:11:18 +01:00
can1357 36db3ff6fc feat(tui): added hardware cursor support for native terminal blinking
- Added terminal cursor mode support to Editor component with setUseTerminalCursor() and getCursorPosition() methods.
- Added getCursorPosition() method to Component interface and Container class for cursor position aggregation.
- Added hardware cursor positioning and visibility management to TUI class with change detection.
- Enabled terminal cursor mode in HookEditorComponent and CustomEditor for proper cursor blinking.
2026-01-05 05:16:39 +01:00
can1357 7f68705afa fix(coding-agent): corrected bash spinner syntax and removed redundant metadata
- Fixed string interpolation syntax error in bash execution spinner text.
- Removed redundant line count display from file read tool output metadata.
2026-01-05 04:32:22 +01:00
can1357 fa726683b1 fix(coding-agent): used theme ellipsis in loading animation text
Replaced hardcoded "..." with theme.format.ellipsis in the "Working..."
loading message for consistent styling. Fixed template literal syntax.
2026-01-05 04:23:15 +01:00
can1357 f3bc4db78a feat(coding-agent): registered session flush in async cleanup registry
InteractiveMode now registers sessionManager.flush() with the async cleanup
registry, ensuring pending writes are flushed on SIGINT/SIGTERM/SIGHUP.
2026-01-05 04:22:00 +01:00
can1357 fd67003028 feat(coding-agent): added streaming persistence with backpressure control
- Added streaming NDJSON writer with backpressure handling for session persistence.
- Added SessionManager.flush() method for explicit write synchronization before session operations.
- Added content truncation for oversized blocks (500K char limit) to prevent memory exhaustion.
- Replaced synchronous file appends with streaming NDJSON writer in session persistence.
2026-01-05 02:23:36 +01:00
can1357 f693c285ef feat(coding-agent): added /exit command for interactive mode termination
- Added /exit slash command to exit the application from interactive mode.
2026-01-05 02:20:46 +01:00
can1357 9b7596c4aa feat(coding-agent): added theme system with 30+ presets and status line editor
- Added 30+ built-in color themes and comprehensive symbol customization via theme presets and overrides.
- Added status line segment editor with presets, separators, and customizable left/right segments.
- Added Biome CLI-based linter client as alternative to LSP for diagnostics and formatting.
- Added 20MB file size limit for image files to prevent memory issues during serialization.
- Replaced hardcoded Unicode symbols throughout codebase with theme-configurable symbol system.
2026-01-05 00:57:16 +01:00
can1357 b0ce4696ae fix(coding-agent): resolved status line not updating after new session
- Fixed status line not updating token counts and cost after starting a new session.
2026-01-04 16:12:01 +01:00
can1357 eba38cfa6e feat(coding-agent): introduced powerline status bar with git integration
- Replaced FooterComponent with new StatusLineComponent featuring powerline-style segments and Nerd Font icons.
- Added git branch detection with file watching and status tracking with 1-second TTL cache.
- Added setTopBorder() method to Editor component for custom status content in top border.
- Changed Editor component to use rounded box-drawing characters for borders.
- Renamed footer theme properties to statusLine prefix across dark and light themes.
2026-01-04 15:24:39 +01:00
can1357 c711092c6f feat(coding-agent): added auto-open browser for HTML export and Gist sharing
- Added automatic browser opening after exporting session to HTML.
- Added automatic browser opening after sharing session as a Gist.
- Extracted browser-opening logic into reusable openInBrowser method.
2026-01-04 14:20:47 +01:00
can1357 47837a0fa7 feat(coding-agent): introduced LSP writethrough for unified file operations
- Added createLspWritethrough factory for unified LSP-aware file write operations with formatting and diagnostics.
- Added syncContent and notifySaved LSP client methods for in-memory content synchronization.
- Added EditMatchError class and utils module with once and untilAborted helper functions.
- Changed FileDiagnosticsResult interface: renamed diagnostics->messages, hasErrors->errored, serverName->server.
- Changed session title generation to trigger before first message instead of after agent work begins.
- Simplified edit and write tools by delegating to writethrough callback and removing manual abort handling.
2026-01-04 02:23:00 +01:00
can1357 f676ef0521 refactor(coding-agent): moved title generation to turn start for earlier feedback
- Moved session title generation to trigger at turn start instead of turn end for earlier feedback.
2026-01-03 23:37:39 +01:00
can1357 44ccf7c1cb feat(coding-agent): replaced 3-column layout with tabbed interface
- Redesigned Extension Control Center from 3-column layout to tabbed interface with provider tabs.
- Replaced sidebar tree navigation with horizontal tab bar supporting TAB/Shift+TAB cycling.
- Added session header/footer output in text mode showing version, model, provider, and thinking level.
- Removed HolyGrailLayout and SidebarTree components in favor of TwoColumnBody with tabs.
2026-01-03 21:53:01 +01:00
can1357 b7cf5a0296 feat(coding-agent): introduced extension control dashboard with search
- Added Extension Control Center dashboard with three-column layout, fuzzy search, and keyboard navigation.
- Added extension enable/disable functionality with persistent settings via SettingsManager.
- Renamed /status command to /extensions with /status as alias.
- Removed dynamic discovery settings from settings selector in favor of new extension dashboard.
2026-01-03 21:25:29 +01:00
can1357 d61a196864 fix: resolved title generation flag reset on new session start
- Fixed title generation flag reset when starting new sessions.
- Added localhost URL detection for OpenAI-compatible provider auto-configuration.
- Changed terminal title prefix from 'pi:' to 'omp:'.
- Added debug logging for title generation model lookup, API key retrieval, and request/response handling.
- Removed title length validation that rejected titles over 60 characters.
2026-01-03 21:04:13 +01:00
can1357 13f3eae8c0 feat: introduced TTSR for real-time pattern matching during streaming
- Added Time Traveling Streamed Rules (TTSR) feature for real-time pattern matching and rule injection during streaming.
- Added TtsrManager with configurable settings for context mode, repeat mode, and repeat gap.
- Added TTSR trigger support across all rule discovery sources (builtin, cline, cursor, windsurf).
- Added abort signal handling in agent loop to support stream interruption for TTSR.
- Added TtsrNotificationComponent for displaying rule violation notifications in interactive mode.
2026-01-03 19:43:17 +01:00
can1357 0654e5e477 fix(coding-agent): corrected /status column alignment across all sections
- Fixed /status command output to use consistent column alignment across all sections.
- Refactored status rendering to collect all line sections before calculating max width.
- Renamed dev:install script to install:dev for consistency.
2026-01-03 18:38:33 +01:00
can1357 f9f0e6385b docs(coding-agent): renamed CLI references from 'pi' to 'omp'
- Renamed CLI command references from 'pi' to 'omp' throughout documentation.
- Updated version update notification to suggest 'omp update' instead of npm install.
- Updated SDK and extension loading documentation with new command naming.
2026-01-03 18:37:07 +01:00
can1357 a135b65fe8 chore: bump version to 3.1.1337 2026-01-03 18:33:15 +01:00
can1357 bfb5cb13b7 chore: bump version to 3.0.1337 2026-01-03 18:27:32 +01:00
can1357 0438f01fd5 feat(coding-agent): added multi-tool config discovery across 8 AI IDEs
- Added unified capability-based discovery system for loading configuration from 8 AI coding tools (Cursor, Windsurf, Cline, GitHub Copilot, Gemini, Codex, Claude, VS Code).
- Added Discovery settings tab in interactive mode for enabling/disabling configuration providers.
- Added provider source attribution showing which tool contributed each configuration item.
- Added support for tool-specific rule formats including Cursor MDC, Windsurf global_rules, and Cline .clinerules.
- Changed MCP tool name parsing to use last underscore separator for improved server name handling.
- Refactored core loaders (skills, hooks, custom tools, slash commands) to use capability API instead of manual directory scanning.
2026-01-03 18:26:07 +01:00
can1357 790a5370bb feat: renamed binary from pi to omp with config migration support
- Renamed CLI binary and package from 'pi' to 'omp' across all platforms and installers.
- Changed environment variable prefix from PI_* to OMP_* with automatic migration support.
- Changed configuration directory from ~/.pi/ to ~/.omp/ with multi-path fallback discovery.
- Added getConfigDirPaths(), findConfigFile(), and readConfigFile() functions for config resolution across .omp, .pi, and .claude directories.
2026-01-03 15:54:45 +01:00
can1357 a42061d9ee feat(coding-agent): added self-update command with bundled templates
- Added `pi update` command for checking and installing CLI updates from GitHub releases or bun.
- Added cross-platform installer scripts (shell and PowerShell) with automatic PATH configuration.
- Changed HTML export to use compile-time bundled templates via Bun macros.
- Changed `exportToHtml` and `exportFromFile` functions to async operations.
2026-01-03 14:17:28 +01:00
can1357 9f9d5b1e76 feat(coding-agent): added auto-read for @filepath mentions in prompts
Files referenced with @path/to/file.ext syntax are automatically read
and injected as synthetic Read tool calls before the agent responds,
eliminating the need for manual file reads.
2026-01-03 05:52:40 +01:00
can1357 50ab6b8b1b style: removed .js extension from imports and added node: prefix to builtins 2026-01-03 05:12:25 +01:00
can1357 a099076a99 feat(coding-agent): added custom slash command loading from user and project directories
- Added custom TypeScript slash commands loaded from ~/.pi/commands/ and .pi/commands/ directories.
- Added support for loading markdown slash commands from Claude's ~/.claude/commands/ and .claude/commands/ directories.
- Added commands.enableClaudeUser and commands.enableClaudeProject settings to control Claude command directory loading.
- Implemented CustomCommandAPI with exec, typebox, and pi module injection for command execution context.
- Integrated custom commands into autocomplete provider for interactive mode discovery.
2026-01-03 04:31:07 +01:00
can1357 ac051daf90 feat(coding-agent): added clipboard export option to /export command 2026-01-03 04:05:00 +01:00
can1357 015f2c7e54 feat(agent): added interruptMode to control queued message timing
- Added interruptMode option to control when queued messages interrupt tool execution.
- Implemented "immediate" mode (default) to check queue after each tool and interrupt remaining tools.
- Implemented "wait" mode to defer queue processing until the entire turn completes.
- Exposed interruptMode configuration in interactive settings UI with immediate/wait options.
- Wired interrupt mode through AgentSession and SDK to enable runtime configuration and persistence.
2026-01-03 03:56:13 +01:00
can1357 4f8df6b79f refactor(coding-agent): renamed small to smol consistently
- Renamed SMALL_MODEL_PRIORITY to SMOL_MODEL_PRIORITY
- Renamed findSmallModel to findSmolModel
- Updated all role strings from 'small' to 'smol'
- Updated UI labels and comments
2026-01-03 03:46:45 +01:00
can1357 003a19bdaa feat(coding-agent): added model roles for default and small model configuration
- Settings now use modelRoles map (e.g., { default: 'anthropic/claude-sonnet-4-5', small: 'anthropic/claude-haiku-4-5' })
- Session persistence uses 'provider/modelId' string format with optional role field
- Model selector: Enter sets default, S sets small, Escape closes
- Added role markers in selector: checkmark for default, lightning bolt for small
- Task tool supports pi/<role> aliases (e.g., model: pi/small, haiku, flash, mini)
- Title generation uses configured small model with auto-discovery fallback
- Explore agent now uses pi/small as primary model preference
2026-01-03 03:33:02 +01:00
can1357 ebcdf50e48 feat(coding-agent): added auto session titles for better identification
- Added automatic session title generation using small models (Haiku/GPT-4o-mini/Flash) to improve session identification.
- Implemented terminal window title updates to display current session context.
- Updated session selector to show title with dimmed first message preview for better session browsing.
- Extended SessionInfo and SessionHeader interfaces to persist and display generated titles.
- Added title model preference hierarchy with fallback to any available model for reliability.
2026-01-03 03:07:03 +01:00
can1357 ccc0a8b6c8 feat(coding-agent): added LSP format-on-write with server warmup
- Added LSP format on write to automatically format code files using language server formatters after writing.
- Implemented LSP server warmup at startup to avoid cold-start delays when first writing files.
- Added LSP server status display in welcome banner to show which language servers are active and ready.
- Fixed recent sessions display in welcome banner which was never wired up.
- Improved grep tool description to document pagination options and clarify recursive search behavior.
2026-01-03 02:58:30 +01:00
can1357 ed03480309 refactor(coding-agent): replaced vendored highlight.js with CDN to reduce bundle size
- Replaced vendored highlight.js with CDN-hosted version to reduce bundle size by ~1200 lines.
- Added CSS, JS, and HTML minification functions to reduce exported file size.
- Implemented caching for minified template and JS assets to avoid redundant processing.
- Updated share preview URL to use gistpreview.github.io for session sharing.
2026-01-03 01:31:15 +01:00
can1357 7db3b35dc4 refactor(coding-agent): extracted settings defs for single source
- Introduced declarative settings definitions to eliminate duplicated setting logic across UI and handlers.
- Extracted settings configuration into settings-defs.ts for single-source-of-truth maintenance.
- Simplified SettingsSelectorComponent to generate UI from definitions rather than hardcoded items.
- Added bash interceptor toggle to allow users to control shell command interception behavior.
- Updated CLI help text to reflect all available tools with accurate default states.
- Consolidated settings change handling into unified handler dispatching by setting ID.
2026-01-03 00:28:51 +01:00
can1357 26fd43d999 refactor(coding-agent): improved process cleanup with tree kill
- Replaced process group kill with descendant-aware tree traversal to handle non-leader processes.
- Added pgrep-based child discovery with /proc fallback for broader Linux compatibility.
- Introduced optional grace period parameter to allow SIGTERM before SIGKILL for graceful shutdown.
- Simplified focus return value in interactive mode for consistency.
2026-01-02 22:33:26 +01:00
can1357 cfb99df249 feat(coding-agent): added specialized Exa tools with granular toggles
- Added specialized Exa web search tools for deep search, code context, URL crawling, LinkedIn, and company research.
- Implemented settings UI for granular control over Exa tool availability with per-feature toggles.
- Changed Exa addon defaults to disabled to prevent unexpected API usage for LinkedIn, company, researcher, and websets features.
- Added settings manager methods to persist individual Exa feature preferences.
2026-01-02 22:26:21 +01:00
can1357 2be354322d chore: renamed package scope to @oh-my-pi for consistent branding
- Renamed npm package scope from @mariozechner to @oh-my-pi across all packages for consistent branding.
- Removed packages/pods directory and all related pod management functionality.
- Updated import paths and module declarations throughout codebase to reflect new package names.
- Reformatted code with consistent trailing comma removal and ternary operator alignment.
2026-01-02 18:08:23 +01:00
can1357 560c9670a8 feat: added MCP support and plugin system for external tool integration
- Added MCP (Model Context Protocol) support with stdio and HTTP transports for external tool integration.
- Implemented plugin system with install, enable, configure, and doctor commands for extensibility.
- Added 22 Exa MCP tools for web search, LinkedIn, company research, and websets operations.
- Introduced LSP tool with rust-analyzer support for code intelligence (diagnostics, hover, references, code actions).
- Added task tool for delegating work to specialized subagents with parallel execution support.
- Implemented web_search and web_fetch tools with Anthropic and Perplexity provider support.
2026-01-02 17:54:42 +01:00