Commit Graph
811 Commits
Author SHA1 Message Date
can1357 b40d2db72e feat(coding-agent/core): added structured status events for Python prelude with TUI rendering
- Added structured status events for Python prelude functions with TUI rendering.
- Implemented status event parsing and display system with operation icons.
- Enhanced Python tool renderer to display status events alongside output.
- Added support for rich output using IPython.display.display() in Python tool.
2026-01-18 20:17:37 +01:00
can1357 27a64294b1 fix(coding-agent/core): fixed Python prelude sh() and cleaned up shell output 2026-01-18 20:07:01 +01:00
can1357 7781bdc014 feat(coding-agent/cli): added setup subcommand for optional feature dependencies
- Added setup subcommand for installing optional feature dependencies.
- Implemented Python component setup with Jupyter kernel package installation.
- Added component status checking via --check flag with JSON output support.
- Created package installation logic using uv (preferred) or pip package managers.
2026-01-18 20:00:39 +01:00
can1357 d620f07c1e feat(coding-agent/core): added Python gateway coordinator with shared resource management
- Added shared Python gateway coordinator with file locking and automatic resource management.
- Added comprehensive Git helpers and line-based operations to Python prelude.
- Enhanced /status command to display Python gateway, LSP servers, and MCP connections.
- Changed default Python tool mode from ipy-only to both for shell execution support.
- Fixed Python tool proxy execution and signal handling in worker processes.
2026-01-18 19:54:35 +01:00
can1357 feaa35a97b feat(coding-agent/core): added shared Python gateway coordinator for resource-efficient kernel management
- Added shared Python gateway coordinator for resource-efficient kernel management.
- Implemented automatic idle shutdown for shared Python gateway after 30 seconds.
- Added environment filtering for shared Python gateway to exclude API keys.
- Updated Python kernel startup to use shared gateway by default with fallback support.
- Fixed Python tool session requirement for proxy executor in workers.
2026-01-18 19:37:11 +01:00
can1357 1d414c1383 feat: added IPython-backed Python tool with streaming output and Jupyter integration
- Added IPython-backed Python tool with streaming output and image/JSON rendering.
- Implemented Jupyter kernel gateway integration with WebSocket communication.
- Added Python prelude with 30+ shell-like utility functions for file operations.
- Migrated environment variables from PI_ to OMP_ prefix with automatic migration.
- Added streaming output system with automatic spill-to-disk for large outputs.
- Reorganized settings interface into behavior, tools, display, voice, status, lsp, and exa tabs.
2026-01-18 19:32:27 +01:00
can1357 6dff3daa14 feat(coding-agent/modes): added TabBar component to model selector for provider navigation
- Updated model selector to use TabBar component for provider navigation.
- Added support for /models command alias in addition to /model command.
- Changed role badges to inverted style with colored backgrounds.
- Enhanced TabBar component with text wrapping for overflow content.
2026-01-18 18:07:51 +01:00
can1357 ac151519c1 feat: port upstream changes from pi-mono (72047c05..55769e75)
AI provider fixes:
- Fixed Claude tool prefix matching and Gemini 3 unsigned tool handling
- Added Bedrock thinking budget guardrails and tool id sanitization
- Added tool argument coercion and Codex response retry logic

TUI improvements:
- Improved Kitty key handling and editor behavior (scrolling, padding, kill ring)

Coding agent changes:
- Added extension input interception, compaction helpers, and UI updates
- Added session forking prompt for cross-project sessions
- Added APPEND_SYSTEM discovery, piped stdin print mode, and key hint exports

Docs:
- Updated pi-mono sync point
2026-01-18 17:52:58 +01:00
can1357 f1d71fbd9d feat: implemented Emacs-style kill ring with Alt+D and Ctrl+Y bindings
- Added automatic retry logic for OpenAI Codex responses with configurable delay and max retries.
- Added input event handlers for extensions to intercept user input and argument completion support.
- Added Emacs-style kill ring for text deletion operations with Alt+D and Ctrl+Y keybindings.
- Added configurable editor padding via editorPaddingX theme option and setMaxHeight() method.
- Fixed tool prefix handling in Claude provider to use case-insensitive comparison.
- Enhanced Kitty keyboard protocol support for better key detection and shifted symbol handling.
2026-01-18 17:12:18 +01:00
can1357 f9ababd17b refactor(ai): updated User-Agent header to 'pi' and simplified Codex prompts
- Updated User-Agent header from 'opencode' to 'pi' for OpenAI Codex requests.
- Simplified Codex system prompt instructions and removed bridge text override.
- Removed bridge text parameter from buildCodexSystemPrompt function.
- Updated task execution guidelines with parallelization instructions.
2026-01-18 04:54:15 +01:00
can1357 96475db41b feat(coding-agent): added pre-serialized settings support to model resolver
- Improved model resolution to accept pre-serialized settings for better performance.
- Enhanced system prompt guidance for position-addressed vs content-addressed file edits.
- Added comprehensive edit tool documentation with bash alternatives comparison.
- Refactored model resolver to accept optional settings parameters for role resolution.
2026-01-16 13:26:43 +01:00
can1357 861a9cbb5a feat(ai): added 100+ Vercel AI Gateway models and updated provider configurations
- Added Vercel AI Gateway model fetching with 100+ model configurations.
- Updated Amazon Bedrock models with new Claude 4.5 EU variants.
- Added GPT-5.2-codex model across OpenAI, GitHub Copilot, and OpenCode providers.
- Changed MiniMax models to use anthropic-messages API format.
- Added thinkingFormat support to ZAI provider models.
- Improved LSP diagnostic output by stripping clippy URLs and noise.
2026-01-15 18:11:58 +01:00
can1357 3d1757a393 feat(ai): simplified Codex system instructions and replaced with pi assistant documentation references
- Replaced detailed Codex system instructions with simplified pi assistant instructions that reference internal documentation via pi-internal:// protocol.
- Reduced Codex instructions from 321 lines to 11 lines by moving detailed guidance to referenced documentation.
- Changed assistant identity from 'coding agent running in opencode' to 'pi, an expert coding assistant'.
- Added documentation references for creating custom models, providers, extensions, themes, skills, and TUI components.
- Expanded bash tool guidance to explicitly list appropriate use cases including file operations, build commands, and process management.
- Reframed bash guidance from negative-only to showing both appropriate and inappropriate uses.
2026-01-15 13:21:11 +01:00
can1357 03d30b891a fix(coding-agent/core): fixed race condition in LSP diagnostics by tracking versions before file sync
- Fixed stale diagnostic results by tracking diagnostic versions before file sync operations.
- Fixed race condition where LSP diagnostics could return outdated results after file modifications.
2026-01-14 13:23:08 +01:00
can1357 591c17e645 chore(coding-agent): set initial terminal title to π 2026-01-14 08:56:49 +01:00
can1357 1e8969290c fix(coding-agent): handled task abort gracefully with partial results 2026-01-14 08:56:45 +01:00
can1357 416baf8ea3 refactor(coding-agent): rendered find/grep/ls tools inline without background box 2026-01-14 08:56:36 +01:00
can1357 01e8d889c9 fix(coding-agent): truncated bash renderer lines to prevent TUI crash on narrow terminals 2026-01-14 08:56:26 +01:00
can1357 331e92fe33 feat(coding-agent): added withLines parameter to read tool for line numbers 2026-01-14 05:13:47 +01:00
can1357 bfd81ad5e8 fix(coding-agent): fixed find tool glob pattern matching for **/filename 2026-01-14 05:13:44 +01:00
can1357 014b0fb23e fix(coding-agent): prevent clipboard image paste from getting stuck on Wayland 2026-01-14 03:32:06 +01:00
can1357 48b44a6ef8 refactor(coding-agent): simplify Photon integration with native Node.js binding
- Replaced @silvia-odwyer/photon (WASM) with @silvia-odwyer/photon-node (native)
- Removed async initialization wrapper (photon.ts)
- Removed ImageMagick fallback (image-magick.ts)
- Fixed truncateToWidth test to expect Unicode ellipsis
2026-01-14 03:15:10 +01:00
can1357 0b85098862 feat: port upstream changes from pi-mono (6730b4fa..b74535dc)
Provider additions:
- Added Amazon Bedrock provider with bedrock-converse-stream API
- Added MiniMax provider with OpenAI-compatible API
- Added EU cross-region inference model variants for Bedrock

Provider fixes:
- Fixed Gemini CLI retries with header parsing and empty stream retry logic
- Fixed Bedrock tool call transforms via transformMessages
- Fixed z.ai thinking/reasoning params
- Fixed OpenRouter+Anthropic cache control
- Fixed OpenAI responses timeout and service tier options
- Fixed tool call ID normalization for cross-provider switches
- Fixed thought signature validation for Google providers
- Fixed prompt cache key using session ID

TUI improvements:
- Added OverlayOptions API with CSS-like positioning (SizeValue, percentages)
- Added OverlayHandle for programmatic visibility control
- Added visible callback for responsive overlays
- Added pad parameter to truncateToWidth
- Added pageUp/pageDown key support
- Fixed numbered list items showing 1. when code blocks break continuity
- Fixed overlay width overflow crash with complex ANSI sequences
- Fixed light theme colors for WCAG AA compliance

Coding agent fixes:
- Fixed /new command to create new session file
- Fixed session selector to stay open when folder has no sessions
- Added session header emission in JSON print mode
- Added queued message hint with theme.tree.hook
- Exported highlightCode and getLanguageFromPath for extensions

Also renamed transorm-messages.ts to transform-messages.ts (typo fix)
2026-01-14 01:50:47 +01:00
can1357 e299e5b45c fix(coding-agent): serialize settings to subagent workers to avoid SQLite locking 2026-01-14 01:25:26 +01:00
can1357 db98635f07 fix(coding-agent/core): added PRAGMA busy_timeout=5000 to SQLite database initialization
- Added PRAGMA busy_timeout=5000 to SQLite database initialization to prevent database locked errors.
2026-01-14 01:20:55 +01:00
can1357 16fa5533e5 feat(coding-agent): migrated image processing from wasm-vips to Photon with graceful fallbacks
- Migrated image processing library from wasm-vips to Photon (Rust/WASM) for improved performance and reliability.
- Added graceful fallback for failed image resizing operations, allowing the system to use original images when WASM processing fails.
- Added error handling for image conversion failures in interactive mode to prevent crashes during WASM processing.
- Implemented lazy initialization pattern for Photon WASM module with proper resource cleanup using try-finally blocks.
- Added NULL_PROMPT environment variable support for debugging and testing system prompt generation.
2026-01-12 15:23:35 +01:00
can1357 2aec94bcd4 fix(coding-agent): cleaner & properly typed Vips integration 2026-01-12 12:09:00 +01:00
can1357 f9a7159035 fix(coding-agent): replace sharp with wasm-vips for cross-platform support 2026-01-12 11:45:26 +01:00
can1357 976acd10bf feat(coding-agent/core): added multi-part questions support and improved cursor behavior in ask tool
- Added multi-part questions support to ask tool via questions array parameter for asking multiple related questions in sequence.
- Updated multi-select cursor behavior in ask tool to stay on toggled option instead of jumping to top.
- Added initialIndex parameter to ExtensionUIDialogOptions interface for controlling initial cursor position in select dialogs.
- Extracted question selection logic into askSingleQuestion helper function with UIContext interface.
- Added formatQuestionResult helper function and QuestionResult interface for multi-part question results.
- Updated ask tool prompt documentation with multi-part questions examples and Other option guidance.
2026-01-12 08:39:27 +01:00
can1357 355e2f22ad feat(cli): add omp config subcommand for managing settings 2026-01-12 07:17:32 +01:00
can1357 66ea245f2d fix(tui): reload todos when switching sessions or navigating tree 2026-01-12 07:15:39 +01:00
can1357 7f459214c1 fix(tui): align todo list 'more' indicator with item indentation 2026-01-12 07:09:12 +01:00
can1357 e29f0017af feat(agent): add todoCompletion setting to remind agent of incomplete todos 2026-01-12 07:05:01 +01:00
can1357 7003c7c605 chore(tui): use π prefix in terminal title 2026-01-12 06:53:10 +01:00
can1357 a90b6a0f8f fix(compaction): skip to next model when retry delay exceeds 30s 2026-01-12 06:53:07 +01:00
can1357 b5a0fe9ec4 fix(task): respect explicit provider prefix in model resolution 2026-01-12 06:52:59 +01:00
can1357 700281d8a8 fix(tui): render single-file reads inline 2026-01-12 06:51:50 +01:00
can1357 741ab06ed2 feat: port upstream improvements from pi-mono (f1b64b9d..6730b4fa)
TUI:
- Add fuzzy matching module (moved from coding-agent)
- Remove Kitty protocol query timeout (fixes shift+enter delays)
- Add bracketed paste check for key release/repeat detection
- Rendering optimizations (only re-render changed lines)
- Add backslash+enter newline fallback, getExpandedText()
- Refactor input.ts to use keybindings manager

Coding-agent:
- Add /skill:name slash commands with enableSkillCommands setting
- Add cwd to SessionInfo for session list display
- Improve tree selector with custom summarization instructions
- Add dequeue (Alt+Up) to restore all queued messages at once
- Add shutdown request handling for extensions
- Component invalidate() fixes for theme changes
2026-01-12 03:18:30 +01:00
can1357 dbe2995df4 fix(ai/providers): preserved property names matching schema keywords in Google sanitization
The sanitizeSchemaForGoogle function was incorrectly stripping property
names like "pattern" and "format" from tool schemas because they matched
JSON Schema keywords in UNSUPPORTED_SCHEMA_FIELDS. This caused errors
like "required fields ['pattern'] are not defined in the schema properties"
when using tools like grep/find with Google's Cloud Code Assist API.

Modified the sanitization to track when processing inside a "properties"
object, only stripping schema keywords at the schema level, not when
they appear as property names.
2026-01-12 02:50:39 +01:00
can1357 ef607b921d chore: bump version to 4.4.9 2026-01-12 01:28:30 +01:00
can1357 5f080866d2 fix(ai): extended Google provider JSON Schema sanitization with 12 additional unsupported fields
- Added 12 new unsupported JSON Schema fields to Google provider sanitization including patternProperties, additionalProperties, min/max constraints, pattern, and format.
- Removed unsupported JSON Schema constraints from tool schemas to ensure Google AI compatibility.
2026-01-12 01:25:28 +01:00
can1357 827841d19f fix(ai/providers): fixed schema sanitization and standardized priority format to string labels
- Fixed Google provider schema sanitization to collapse anyOf/oneOf with const values into enum arrays.
- Fixed const-to-enum conversion to infer type from const value when type is not specified.
- Changed review finding priority format from numeric (0-3) to string labels (P0-P3).
- Replaced Type.Union with Type.Literal patterns with StringEnum helper across tool schemas.
- Added const modifier to StringEnum generic type parameter for improved TypeScript type inference.
- Consolidated priority metadata into single PRIORITY_INFO record with exported getPriorityInfo function.
2026-01-12 01:02:47 +01:00
can1357 bb9c3e1d61 chore: bump version to 4.4.5 2026-01-12 00:09:49 +01:00
can1357 b4782538c3 feat(ai): improved Google provider schema sanitization and added schema validation tests
- Exported sanitizeSchemaForGoogle utility function for public use.
- Added filtering of unsupported JSON Schema fields ($schema, $ref, $defs, format, examples, etc.) in Google provider schema sanitization.
- Added handling to ignore unsupported additionalProperties: false in Google provider.
- Removed format: date-time from timestamp type conversion in JTD to JSON Schema transformation.
- Added schema validation tests to verify tool schemas don't contain problematic JSON Schema features.
- Reorganized system prompt to display context, environment, and tools sections before discipline guidelines.
2026-01-12 00:07:36 +01:00
can1357 45060a5f5a feat(coding-agent): improved frontmatter parsing with better error handling and source context
- Added FrontmatterError custom error class and FrontmatterOptions interface for improved error handling.
- Enhanced parseFrontmatter function with source, fallback, normalize, and fatal options for better error context.
- Updated all parseFrontmatter call sites to include source file information for better error messages.
- Fixed frontmatter parsing to properly report source location when YAML parsing fails.
- Updated system prompt to show file paths more clearly in output.
- Added template sections for systemPromptCustomization, environment, and tools in system prompt.
2026-01-11 23:55:33 +01:00
can1357 03876d0360 feat(coding-agent): added todo_write tool, persistent todo panel, grouped Read display, and refactored prompts
- Added todo_write tool for creating and managing structured task lists during coding sessions.
- Added persistent todo panel above the editor that displays task progress with Ctrl+T toggle.
- Added grouped display for consecutive Read tool calls in a compact tree view.
- Changed system prompt to use more direct, field-oriented language with emphasis on verification and assumptions.
- Changed Ctrl+Enter to insert newline when not streaming, and Ctrl+T from toggling thinking blocks to toggling todo list.
- Replaced yaml package dependency with Bun's built-in YAML parser and extracted frontmatter parsing to dedicated module.
2026-01-11 23:33:27 +01:00
can1357 8ba0498eb7 fix(coding-agent): fixed keybindings and input handling for TUI editor and Cursor provider
- Changed temporary model selector keybinding from Ctrl+Y to Alt+P to avoid conflicts.
- Fixed Alt+Enter to insert newline when not streaming instead of submitting.
- Fixed Cursor provider to avoid advertising Edit tool, using full-file Write instead.
- Added Ctrl+Enter support for inserting newlines in TUI editor using Kitty and legacy terminal formats.
- Removed duplicate Ctrl+Y handler and refactored input controller to use trimmedText variable.
2026-01-11 22:59:04 +01:00
can1357 c11b2f9058 feat(coding-agent): added grouped display and compact tree view for consecutive Read tool calls
- Added grouped display for consecutive Read tool calls, showing multiple file reads in a compact tree view.
- Changed Read tool result display to hide content by default, showing only file path and status.
- Changed expand hint text from 'Ctrl+O to expand' to 'Ctrl+O for more'.
- Added ReadToolGroupComponent class to group multiple Read tool executions together in a single display.
- Renamed getStyledStatusIcon to formatStatusIcon for consistency with other format functions.
- Refactored formatExpandHint function signature to put theme parameter first and make expanded/hasMore optional.
2026-01-11 16:23:42 +01:00
can1357 18bb7c3855 feat(coding-agent): improved bash output preview with 10-line default and full output in expanded view
- Increased default bash output preview from 5 to 10 lines when collapsed.
- Updated expanded bash output view to show full untruncated output when available.
- Added fullOutput field to BashToolDetails to preserve complete output for expanded view.
- Exported BASH_DEFAULT_PREVIEW_LINES constant for consistent preview line configuration.
2026-01-11 15:25:34 +01:00
can1357 b682b35e9b style(coding-agent/core): adjusted whitespace in diagnostic tree branch formatting
- Adjusted whitespace in diagnostic tree branch formatting.
2026-01-11 15:01:39 +01:00