Commit Graph
9801 Commits
Author SHA1 Message Date
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
can1357 5e9ef021bb feat: enhanced subagent config, reviewer output schema, and consolidated discovery helpers
- Added thinkingLevel field to agent frontmatter allowing subagents to override thinking level with clamping to model capabilities.
- Added structured output schema to reviewer agent ensuring consistent review output format with findings, correctness verdict, and confidence.
- Expanded system prompt with defensive reasoning guidance including assumption checks, edge case awareness, and completion reflex inhibition.
- Consolidated expandPath, parseFrontmatter, and parseAgentFields utilities into discovery/helpers module eliminating code duplication across loaders.
- Replaced silent error handling with logger.warn calls across config parsing, migrations, extension loading, and OAuth refresh failures.
2026-01-11 14:09:18 +01:00
can1357 242f319cfc feat(cursor): added Cursor AI provider with OAuth, HTTP/2 streaming, and tool execution bridge
- Added Cursor AI provider with HTTP/2 streaming support using Connect protocol and protobuf binary serialization.
- Added OAuth authentication flow for Cursor including browser-based login, token refresh, and expiry detection.
- Added 14 Cursor model definitions including Claude 4.5, GPT 5.x, Gemini 3, and Grok variants.
- Added execution bridge for Cursor tool calls supporting read, ls, grep, write, delete, shell, diagnostics, and MCP operations.
- Added cursorExecHandlers and cursorOnToolResult options to Agent for local tool execution with cursor-based streaming.
- Added emitExternalEvent method to Agent class for external event injection into agent state.
2026-01-11 07:42:41 +01:00
can1357 27e337e347 fix(coding-agent): added fallback matching for inconsistent indentation and refactored fuzzy matching logic
- Added fallback matching without indent depth when file and target have inconsistent indentation patterns.
- Refactored fuzzy matching logic into findBestFuzzyMatchCore helper function.
- Added comprehensive test suite for findEditMatch covering exact matching, tab/space normalization, and edge cases.
2026-01-11 07:32:39 +01:00
can1357 4cef97d29a feat: changed find tool to include hidden files by default, added test job to publish workflow
- Changed default for `hidden` option in find tool from `false` to `true`, now including hidden files by default.
- Added test job to publish workflow that runs before build.
2026-01-11 04:33:22 +01:00
can1357 fcb056c341 fix(coding-agent): initialized serialized auth storage 2026-01-11 04:32:18 +01:00
can1357 2a1529801f feat(coding-agent/core): added persistent DB cache with expiry support for Codex usage data
- Added persistent cache storage table with expiry support to AgentStorage.
- Added getCache, setCache, and cleanExpiredCache methods for cache operations.
- Added persistent DB caching for Codex usage data that survives application restarts.
- Updated AuthStorage to use two-tier caching (memory + DB) for Codex usage.
2026-01-11 04:27:01 +01:00
can1357 e6d33e0a48 feat(coding-agent): converted capability loading and discovery providers to async APIs with caching fs layer
- Converted SettingsManager.create(), loadSettings(), discoverSkills(), loadSlashCommands(), buildSystemPrompt(), loadSkills(), loadProjectContextFiles(), and getShellConfig() from synchronous to asynchronous APIs.
- Changed capability provider load() method from supporting both sync and async to async-only by removing loadSync().
- Removed fs property from LoadContext interface in capability types.
- Added new fs.ts module with caching layer for filesystem operations using readFile, readDirEntries, readDir, walkUp, and cache management functions.
- Refactored all discovery providers (builtin, claude, cline, codex, cursor, gemini, github, mcp-json, ssh, vscode, windsurf) to use async file operations with Promise.all for parallel loading.
2026-01-11 04:26:43 +01:00
can1357 d6af8e7da7 feat(coding-agent): propagated discovery metadata and proxied MCP calls through parent for subagents
- Added serialize()/fromSerialized() to AuthStorage and ModelRegistry for
  passing credentials and models to subagent workers without re-discovery
- Extended worker protocol with MCP tool call proxying (mcp_tool_call request,
  mcp_tool_result response) enabling subagents to use parent's MCP connections
- Added MCPToolMetadata to pass tool schemas from parent to worker
- Updated executor to handle MCP proxy calls and pass serialized data in payload
- Updated worker to use serialized auth/models when available and create MCP
  proxy tools that route calls through parent
- Extended ToolSession with authStorage, modelRegistry, and mcpManager fields
- Threaded context from sdk.ts through task tool to executor

Benefits:
- Reduced ~200-500ms startup latency per subagent (skips auth/model discovery)
- Single MCP connection pool (no redundant MCP server processes)
- Clean bidirectional protocol with timeout and abort support for MCP calls
2026-01-11 03:39:01 +01:00
can1357 68bd2f1f07 refactor(coding-agent/prompts): consolidated planner agent into plan agent with structured 4-phase planning process
- Consolidated 'planner' agent functionality into the 'plan' agent.
- Enhanced 'plan' agent with structured 4-phase planning process (Understand, Explore, Design, Produce Plan).
- Added parallel exploration support via 'explore' agent spawning to 'plan' agent.
- Improved 'plan' agent output format with concrete implementation plan examples.
- Removed 'planner' agent command template from embedded commands.
- Deleted planner.md agent prompt file.
2026-01-11 03:38:06 +01:00
can1357 cc52799844 feat(coding-agent): disabled LSP for subtasks spawned via the task tool
- Added `--no-lsp` CLI flag to disable LSP tools, formatting, diagnostics, and warmup for a session.
- Added `enableLsp` option to session configuration for programmatic control of LSP features.
- Added `enableLsp` property to ToolSession interface to propagate LSP state to tools.
- Modified tool filtering logic to exclude LSP tool when disabled.
- Disabled LSP for subtasks spawned via the task tool.
2026-01-11 03:27:27 +01:00