- Renamed web search types and functions to remove 'Web' prefix for broader applicability (WebSearchProvider -> SearchProviderId, WebSearchResponse -> SearchResponse, WebSearchTool -> SearchTool, etc.).
- Refactored web search provider system from object-based configuration to class-based architecture with abstract SearchProvider base class and concrete provider implementations.
- Refactored ModelRegistry to use direct constructor instantiation instead of discoverModels() helper function, simplifying model discovery pattern.
- Refactored config system to use new ConfigFile class with schema validation, caching, and multi-format support (JSON, JSONC, YAML).
- Simplified Exa API key discovery to check environment variables only, removing .env file reading logic.
- Refactored task API to use 'assignment' field instead of 'args' for per-task instructions, enabling clearer separation between shared context and task-specific work.
- Introduced structured context/assignment separation pattern with '<swarm_context>' wrapper for template rendering, replacing placeholder-based substitution.
- Changed agent frontmatter field from 'thinkingLevel' to 'thinking-level' (kebab-case) for consistency with YAML conventions.
- Removed 'context' parameter from ExecutorOptions as context is now prepended at template level rather than executor level.
- Removed 'args' field from AgentProgress and SingleResult interfaces, simplifying task result tracking.
- Updated task rendering to display full task text instead of formatted args, improving clarity in progress output.
- Updated subagent system prompt to clarify that aborting is only acceptable when truly blocked after exhausting tools and reasonable attempts.
- Updated system prompt to emphasize proceeding without confirmation after stating assumptions and to avoid asking for file paths that can be resolved from repo context.
- Clarified checkpoint procedure to be an internal step that continues in the same response without waiting for user input.
- Updated requirements conflict guidance to only ask for resolution after exhausting exploration with tools and context.
- Added task.maxRecursionDepth setting to control how many levels deep subagents can spawn their own subagents (0=none, 1=one level, 2=two levels, -1=unlimited).
- Added nested task artifact naming with parent task prefixes (e.g., '0-Auth.1-Subtask') to support hierarchical task identification.
- Added taskDepth and parentTaskPrefix options to CreateAgentSessionOptions for supporting nested/subagent sessions.
- Changed task tool spawns configuration from 'explore' to '*' to allow spawning any type of subagent.
- Updated system prompt to unconditionally include parallel delegation guidance for all agent types instead of only coordinators.
- Implemented automatic task tool disabling at maximum recursion depth to prevent excessive task nesting.
- Updated system prompt guidance to state assumptions and proceed without asking for confirmation, reducing unnecessary round-trips.
- Tightened ask tool conditions to require multiple approaches with significantly different tradeoffs before prompting user.
- Strengthened ask tool guidance to default to action and only ask when genuinely blocked by decisions with materially different outcomes.
- Changed refactor workflow to automatically remove now-unused elements and note removals instead of asking for confirmation.
- Fixed timeout handling in LSP write-through operations to properly clear formatter and diagnostics results when operations exceed the 10-second timeout threshold.
- Added timeout detection mechanism in LSP index that sets a flag when the timeout signal is aborted.
- Added nonAbortable property to EditTool and WriteTool classes to prevent these operations from being aborted during execution.
- Externalized subagent submit reminder prompt to a separate template file for improved maintainability and dynamic retry tracking.
- Applied semantic compression rules to system prompt and skill documentation, removing grammatical scaffolding while preserving meaning-carrying content.
- Updated semantic-compression skill documentation with more aggressive compression stance, expanded deletion tiers, and clarified preservation rules.
- Refactored system prompt for brevity using fragments, label:value pairs, and direct phrasing without sacrificing clarity or instruction fidelity.
- Added semantic-compression skill documentation with deletion tiers, preservation rules, and compression examples.
- Enhanced system prompt with explicit assumption-stating guidance, pre-finishing checklist, and conflict resolution procedures.
- Added verification guidance for test-first approach and naive-before-optimizing pattern for algorithmic work.
- Clarified commitment to high-reliability contexts and user stamina constraints in stakes section.
- Consolidated directory listing functionality from dedicated `ls` tool into the `read` tool.
- Removed the `ls` tool and all related exports, types, and configurations from the public API.
- Updated `read` tool to return formatted directory listings with modification times instead of redirecting to `ls` tool.
- Removed `bashInterceptor.simpleLs` setting and related interception logic from bash tool.
- Removed `ls.enabled` setting and related tool registration logic.
- Removed test cases for the `ls` tool and updated tool type definitions to remove `LsToolResultEvent`.
- Added enable/disable settings for specialized tools (find, grep, ls, notebook, fetch, web_search, lsp, calc) allowing fine-grained control over tool availability.
- Implemented conditional tool documentation in system prompt that dynamically lists only enabled specialized tools based on configuration.
- Updated tool filtering logic to respect enable/disable settings, preventing unavailable tools from being exposed to the agent.
- Condensed prompt documentation throughout by removing articles, auxiliary verbs, and redundant explanations for improved clarity and conciseness.
- Simplified system prompts by replacing multi-line explanations with terse, semicolon-separated fragments and removing verbose motivational language.
- Reformatted tool documentation to use abbreviated language, removing 'the', 'a', and 'is' throughout for more direct technical writing.
- Removed blank lines and consolidated spacing in prompt files to reduce vertical whitespace and improve document density.
- Reorganized system prompt guidance for parallel task execution, moving coordinator section earlier and restructuring parallel_reflex section for improved clarity.
- Removed redundant instruction about preferring delegation in coordinator prompt.
- Improved task context template formatting with consistent markdown code fence markers.
- Removed dependencies section from task template constraints as it was redundant.
- Enhanced readability of task examples with better spacing and formatting.
- Added getCompactContext() API to agent session for accessing parent conversation context.
- Implemented automatic submit_result tool injection for subagents with explicit tool lists.
- Added contextFile parameter to ExecutorOptions for passing parent conversation context to subagents.
- Enhanced subagent system prompt with conditional context file instructions and improved code formatting.
- Removed schema override notification from task summary prompt to simplify output.
- Implemented formatCompactContext() method to format conversation history for subagent consumption.
- Clarified that user instructions about delegation override tool-use defaults in system prompt.
- Updated coordinator guidance to emphasize Task tool preference for substantial work with improved emphasis on context window limitations.
- Enhanced `context` parameter documentation to require self-contained information for subagents, including file contents and user requirements.
- Added persistent shell session support for bash tool with environment variable preservation across commands.
- Added shellForceBasic setting to force bash/sh even if user's default shell is different (default: true).
- Added OMP_SHELL_PERSIST environment variable to control persistent shell behavior (set to 0 to disable).
- Restructured system prompt with coordinator-specific guidance for parallel task delegation.
- Added outline option to dialog and select UI components for rendering outlined lists in extension dialogs and ask tool.
- Replaced ripgrep-based file listing with fs.glob for project scans in system-prompt, find, and read tools.
- Added timeout tracking to ask tool multi-select flow to prevent hanging on selection operations.
- Created new OutlinedList component in hook-selector for rendering bordered list containers.
- Implemented globPaths utility function in pi-utils for glob-based file discovery with gitignore support.
- Restructured system prompt templates for improved clarity and consistency.
- Simplified XML tag structure in custom and system prompts by removing redundant wrapper elements and consolidating metadata.
- Updated skill and rule references to use inline path notation (e.g., `skill://<name>`, `rule://<name>`) instead of separate location tags.
- Improved prompt readability by reorganizing sections with clearer headers and more concise instructional text.
- Added project tree visualization to system prompts with configurable depth and entry limits.
- Implemented scanProjectTree function to recursively scan directory structure with intelligent truncation and sorting by modification time.
- Added renderProjectTree function to format scanned directory structure as XML with path collapsing for single-child directories.
- Integrated projectTree snapshot into both custom and main system prompt templates with conditional rendering.
- Added XML escaping utility to safely render file paths and names in prompt context.
- Extracted tool choice mapping logic into dedicated utility module for provider-specific format conversions.
- Refactored task summary generation to use template-based rendering instead of string concatenation.
- Migrated system prompt generation to use Handlebars templates with structured data instead of hardcoded strings.
- Extracted JTD to TypeScript conversion logic into dedicated utility module for schema documentation.
- Consolidated prompt template rendering across multiple modules using unified renderPromptTemplate function.
- Simplified type assertions in stream module to use generic OptionsForApi type instead of provider-specific types.
- Added available tools list to system prompt for agent coherence.
- Improved output preview logic to show full output for smaller results and truncate larger outputs to 10 lines.
- Inline preloaded skill contents in system prompts and allow task-level skill selection.
- Record session init entries with system prompt, task, tools, and output schema.
- Fix session persistence to keep pre-assistant entries in subagent logs.
- Renamed `head_limit` to `limit` in grep and find tools for consistency.
- Added `context` as optional alias for the `c` parameter in grep.
- Made hidden files inclusion configurable in find with `hidden` parameter.
- Integrated .gitignore and .ignore file support in find tool.
- Updated plan mode documentation for self-contained plan files.
- Refined descriptions to be more concise and focused.
- Restructured content for improved clarity and consistency across all plan mode prompts.
- Tightened critical sections with more direct language.
- Improved plan mode prompt clarity and organization.
- Plan mode provides structured workflow where agents propose plans for user approval before execution.
- Added plan:// internal URL protocol for accessing plan files and injecting plan-mode context into subagent prompts.
- Added plan mode toggle shortcut and paused status indicator in status line.
- Fixed plan reference injection to properly pass workflow state to plan-mode system prompts.
- Improved autocomplete fuzzy matching to support subsequence matching for skill suggestions.
- Simplified Python gateway coordination by removing reference counting and idle timeout functionality.
- Updated Python kernel initialization to support environment variable setup and working directory configuration.
- Modified interactive status display to show Python and venv paths instead of client counts.
- Updated system prompt to clarify CHECKPOINT step 0 timing after user request completion.
- Renamed task parameter from vars to args throughout task tool interface.
- Enhanced task template rendering with built-in {{id}} and {{description}} placeholders.
- Simplified task template validation by removing strict placeholder requirements.
- Streamlined CHECKPOINT step requirements in system prompts.
- Added internal URL routing system with agent:// and skill:// protocol handlers.
- Enhanced fetch tool to support internal URLs and JSON extraction from agent outputs.
- Extended read tool to handle internal URLs with pagination and query extraction.
- Removed Output tool and replaced functionality with agent:// URL integration.
- Replaced minimatch dependency with Bun.Glob for pattern matching across modules.
- Added format-prompts script for standardizing prompt file formatting across the codebase.
- Updated system prompt tags from `<required>`/`<antipatterns>` to `<important>`/`<avoid>` for clarity.
- Enhanced prompt formatting by removing blank lines after colons and around blocks for consistency.
- Standardized whitespace handling across all prompt files to improve readability.
- Updated task decomposition guidance with clearer triggers for using Task tool.
- Added mandatory CHECKPOINT step for task evaluation before first tool call.
- Enhanced skills and rules checking with explicit validation requirements.
- Improved task decomposition criteria with dependency analysis.
- Added failure conditions for checkpoint and parallel processing validation.
- Simplified web-search tool parameters by removing advanced configuration options.
- Standardized web-search tool to use built-in system prompt for consistent responses.
- Updated web-search tool to use `recency` parameter instead of `search_recency_filter`.
- Added unified web search system prompt with research assistant guidelines.
- Removed centralized tool descriptions from prompt generation logic.
- Eliminated consolidated tool list rendering in system prompts.
- Added explicit tool name headings to individual tool documentation files.
- Simplifies prompt construction by decentralizing tool information.
- Updated system prompt structure and formatting for better readability.
- Reorganized tool hierarchy and discipline sections.
- Added parallel work guidance for task-based workflows.
- Enhanced verification and integration methodology sections.
- Updated skills and rules formatting for cleaner presentation.
- Added stronger emphasis on completeness and quality standards.
- Added cell-by-cell Python execution tracking with duration and exit codes.
- Added template system with {{placeholders}} for task tool context rendering.
- Enhanced patch applicator to preserve exact indentation when intended.
- Changed Python tool to use cells array instead of single code parameter.
- Updated task tool schema to require vars instead of task field.
- 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.
- 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.
- 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.
- 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.
- 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.
- Added automatic discovery and pre-listing of AGENTS.md files in the system prompt.
- Eliminated runtime searching for AGENTS.md files by providing an authoritative list upfront.
- Added buildAgentsMdSearch function to scan for AGENTS.md files at prompt build time.
- Added listAgentsMdFiles helper with glob pattern matching and node_modules filtering.
- Removed rulebook tool and migrated rules loading to use read tool instead.
- Reorganized prompt files into subdirectories: agents/, compaction/, and system/.
- Added Handlebars helpers for template rendering including list, join, table, codeblock, xml, when, pluralize, and arithmetic operations.
- Migrated prompt template rendering from simple string replacement to Handlebars-style templating with structured data objects.
- Refactored system prompt generation to pass structured data instead of pre-formatted strings.
- Removed rulebookRules property from ToolSession interface and updated all test files accordingly.