Commit Graph

1969 Commits

Author SHA1 Message Date
can1357 35dbf43670 feat(coding-agent/web): added Brave web search provider with recency filtering and API integration
- Added Brave web search provider with support for query, result count, and recency filtering.
- Added BRAVE_API_KEY environment variable configuration for Brave search authentication.
- Updated web search provider priority order to include Brave as second-highest priority after Exa.
- Extended recency filter support to Brave search provider alongside Perplexity.
- Implemented BraveProvider class with API integration, response mapping, and parameter validation.
- Added helper functions for recency mapping, result clamping, and snippet building in Brave provider.
2026-02-16 18:33:02 +01:00
can1357 82d6caf0b6 docs(coding-agent): restructured documentation from guides to technical implementation references
- Restructured documentation from user-facing guides to technical implementation references across 18 files in packages/coding-agent/docs.
- Reorganized compaction.md, config-usage.md, custom-tools.md, and extensions.md to emphasize architecture and integration patterns over step-by-step tutorials.
- Expanded environment-variables.md, extension-loading.md, fs-scan-cache-architecture.md, and python-repl.md with detailed runtime behavior and implementation details.
- Consolidated hooks.md, rpc.md, sdk.md, and theme.md from comprehensive reference documentation to focused technical specifications.
- Refined session.md, session-tree-plan.md, skills.md, tree.md, and tui.md to clarify runtime behavior, discovery mechanisms, and technical contracts.
2026-02-16 18:33:02 +01:00
can1357 5882215f49 feat(coding-agent/web): added pagination support for GitHub issue comments with partial result display
- Added pagination support for fetching GitHub issue comments, allowing retrieval of all comments beyond the initial 50-comment limit.
- Added comment count display showing partial results when not all comments could be fetched (e.g., '5 of 10 comments').
- Changed GitHub issue comment fetching to use paginated API requests with 100 comments per page instead of single request with 50-comment limit.
- Extracted comment fetching logic into dedicated fetchGitHubIssueComments function for improved code organization.
- Added GitHubIssueComment interface to provide type safety for comment data structures.
2026-02-16 18:33:02 +01:00
can1357 25de46f16d docs: update README 2026-02-16 14:04:14 +00:00
can1357 81bf013d37 chore: bump version to 12.7.6 2026-02-16 15:02:50 +01:00
can1357 2214a9a62c feat(coding-agent/config): fix spark priority 2026-02-16 15:02:16 +01:00
can1357 045d2894ff chore: bump version to 12.7.5 2026-02-16 14:37:24 +01:00
can1357 9fcfb83fe0 feat(coding-agent/config): updated model selection with additional variants for fast and comprehensive discovery
- Updated SMOL_MODEL_PRIORITY to include additional model variants (gpt-5.3-spark, cerebras/zai-glm-4.7, haiku-4-5, haiku-4.5) for improved fast model discovery.
- Updated SLOW_MODEL_PRIORITY to include additional model variants (gpt-5.3-codex, gpt-5.3, gpt-5.1-codex, gpt-5.1, opus-4.6, opus-4-6, opus-4.5, opus-4-5, opus-4.1, opus-4-1) for improved comprehensive model discovery.
2026-02-16 14:36:36 +01:00
can1357 5d966ec439 chore: bump version to 12.7.4 2026-02-16 14:26:53 +01:00
can1357 2845b8b58b fix(coding-agent/prompts): fixed codex stopping before turn finish
- Fixed system prompt to enforce tool calls on every turn until task completion, preventing premature stopping before turn finish.
- Reorganized contract and diligence sections to clarify inviolable rules and completion requirements.
- Consolidated redundant completion guidance and removed duplicate prime directive language.
2026-02-16 14:26:39 +01:00
can1357 9d5f3f2ab7 docs(coding-agent/prompts): clarified contract rules requiring tool calls per turn and forbidding standalone updates
- Clarified contract rule 2 to explicitly require at least one tool call per turn unless task is complete.
- Added new contract rule 3 forbidding standalone progress updates without task continuation.
- Renumbered subsequent contract rules 3-7 to 4-8 to accommodate new rule.
- Reinforced critical section guidance with same tool call requirement for turn validity.
2026-02-16 14:18:34 +01:00
can1357 1186b408f4 chore: bump version to 12.7.3 2026-02-16 13:44:08 +01:00
can1357 13d06f712c fix(coding-agent): suppress hashline output for agents without edit tool
Hashline prefixes (LINE:HASH|content) in read/grep output exist solely to
support the hashline edit mode. Agents that don't have the edit tool
(e.g. explore, plan, reviewer) gain nothing from them — they just waste
tokens and add noise.

resolveFileDisplayMode now takes a session-like object with an optional
hasEditTool flag. When false, hashlines are suppressed regardless of
settings. ToolSession gains hasEditTool (set from toolNames in the SDK),
and AgentSession exposes it as a getter over the tool registry.
2026-02-16 13:43:35 +01:00
can1357 774acb04d6 chore: bump version to 12.7.2 2026-02-16 12:26:25 +01:00
can1357 6497f72ba3 docs(coding-agent/prompts): simplified system prompt to emphasize action over planning
- Simplified system prompt instructions to emphasize action over planning and metadata.
2026-02-16 12:23:25 +01:00
can1357 24c0bdb5a6 chore: bump version to 12.7.1 2026-02-16 11:37:30 +01:00
can1357 abccce7e3a docs(coding-agent/prompts): restructured execution guidance to prioritize scope assessment and tool-driven progress
- Restructured execution procedure guidance to emphasize scope assessment and continuous tool-driven progress over planning-first approach.
- Updated task tracking instructions to prohibit metadata-only turns and require immediate completion marking of todo items.
- Clarified parallel execution guidance to distinguish between genuine parallelization and sequential work, with explicit criteria for Task tool usage.
- Modified output style requirements to mandate stating intent before tool calls and reordered style constraints for clarity.
- Reinforced requirement that every turn must include at least one tool call advancing the deliverable, with explicit failure condition for planning-only turns.
- Added prime directive section emphasizing completion of requested output as primary objective.
2026-02-16 11:36:59 +01:00
can1357 733522cbab chore: bump version to 12.7.0 2026-02-16 10:09:23 +01:00
can1357 c12be01a5f fix(coding-agent): backported pi-mono changes (34878e..5133697)
packages/ai:
- fix: hardened OpenAI tool-call JSON parsing for malformed trailing arguments
- feat: routed GitHub Copilot Claude 4.x models through anthropic-messages
- feat: centralized dynamic Copilot headers and anthropic bearer auth handling
- feat: added optional StreamOptions.metadata propagation
- test: added Copilot headers/auth/routing coverage
- fix: updated model generator and models.json for Copilot Claude API mapping

packages/coding-agent:
- fix: made CLI model resolution deterministic with provider-aware pattern parsing
- fix: corrected compaction boundary/context usage handling after compaction
- feat: expanded extension events and terminal input hook integration
- fix: hardened git source parsing to avoid local-path misclassification
- test: added git-url parser coverage and model-resolver cases

packages/tui:
- fix: scoped @ fuzzy autocomplete to typed path prefixes
- feat: added Windows VT input mode support via bun:ffi

docs:
- chore: updated porting sync point to 5133697
2026-02-16 10:08:53 +01:00
can1357 0615f5328e fix(coding-agent/cli): fixed GitHub API rate limiting by using npm registry for release info
- Changed release info fetching from GitHub API to npm registry to avoid unauthenticated rate limiting.
- Constructed deterministic GitHub release download URLs instead of relying on API response.
2026-02-16 09:59:07 +01:00
zhzy0077 62864782a5 fix(coding-agent): add null safety for finding.title in renderFindings
Handle cases where finding.title is null/undefined by defaulting to 'Untitled'.
2026-02-16 15:47:29 +08:00
can1357 a39702f003 feat(web-search): added Z.AI web search provider with MCP integration
- Added Z.AI web search provider with MCP integration for remote web search capabilities.
- Added 'zai' as a selectable web search provider option in settings and CLI.
- Added Z.AI to the automatic provider fallback chain for web search after Gemini and Codex.
- Implemented ZaiProvider class with support for multiple Z.AI API response formats and retry logic.
- Added comprehensive error handling and response parsing for Z.AI MCP endpoint integration.
2026-02-16 05:22:50 +01:00
can1357 cbbaa5e74d chore: bump version to 12.6.0 2026-02-16 05:02:54 +01:00
can1357 f1a05f5133 fix(coding-agent/modes): fixed welcome screen layout to handle small terminal widths gracefully
- Fixed welcome screen layout to gracefully handle small terminal widths and prevent rendering errors on narrow displays.
- Fixed welcome screen title truncation to prevent overflow when content exceeds available width.
- Improved welcome screen responsiveness to dynamically show or hide the right column based on available terminal width.
2026-02-16 04:59:07 +01:00
Can Bölük 5d9ef17d3b Merge pull request #81 from romanalexander/feat/extension-register-provider
feat(extensions): add registerProvider() to ExtensionAPI for custom LLM providers
2026-02-16 04:54:19 +01:00
can1357 d6bd208c25 fix: deferred model resolution and extension provider registration
- Fixes deferred `--model` resolution to match extension-provided models before fallback
- Fixes CLI `--api-key` handling to support deferred model selection
- Adds OAuth provider support for extensions with source-scoped registration cleanup
- Adds custom API registration helpers with built-in collision checks
- Expands `Api` type to support extension-defined identifiers
- Adds tests for runtime provider registration and model selection
2026-02-16 04:52:33 +01:00
Can Bölük f5503a423d Merge pull request #78 from DeprecatedLuke/feat/rpc-busy-poll-on-stdin-close
fix(coding-agent/rpc): exit cleanly when stdin closes instead of busy-polling
2026-02-15 22:18:06 +01:00
Roman Alexander 8ccd3859b1 Fix 2026-02-16 00:40:52 +07:00
Roman Alexander 9743ed4f8a Fix 2026-02-16 00:33:50 +07:00
Roman Alexander 04c1a189b5 feat(extensions): add registerProvider() to ExtensionAPI for custom LLM providers
packages/ai:
- feat: added custom API provider registry (api-registry.ts)
- feat: stream() and streamSimple() check custom registry before built-in switch

packages/coding-agent:
- feat: added registerProvider() to ExtensionAPI for registering custom model providers
- feat: added ProviderConfig and ProviderModelConfig types
- feat: ModelRegistry.registerProvider() registers models and custom streaming functions
- feat: extension loader queues provider registrations, runner processes them on initialize

This enables extensions to register custom LLM providers with their own streaming
implementations. For example, a Vertex AI Claude extension can register a provider
that uses @anthropic-ai/vertex-sdk for Google Cloud ADC authentication:

  pi.registerProvider("google-vertex-claude", {
    baseUrl: "https://us-east5-aiplatform.googleapis.com",
    apiKey: "GOOGLE_CLOUD_PROJECT",
    api: "vertex-claude-api",
    models: [...],
    streamSimple: streamVertexClaude,
  });

Backported from pi-mono's extension provider registration system.
2026-02-16 00:20:42 +07:00
luk 1c4721dae2 fix(coding-agent/rpc): exit cleanly when stdin closes instead of busy-polling 2026-02-15 14:42:28 +00:00
can1357 e7d90ff703 chore: bump version to 12.5.1 2026-02-15 15:38:46 +01:00
can1357 0d3fc0d614 style: prompt formatting 2026-02-15 15:38:23 +01:00
can1357 aab245bc63 feat(edit): better hashline & benchmark prompts, re-ran codex 2026-02-15 15:38:06 +01:00
can1357 3a2b604db3 docs(coding-agent/prompts): clarified hashline anchor format and tool usage patterns in documentation
- Clarified hashline anchor format to emphasize `LINE:HASH` only without content suffix.
- Added explicit guidance on `set_line` with empty text behavior versus `replace_lines` for deletion.
- Added instruction to prefer `insert_after` over line replacement when adding fields/arguments/imports.
- Added common failure patterns section documenting anchor copying errors and wide range pitfalls.
- Updated all example tool calls to use concrete `LINE:HASH` format instead of template placeholders.
2026-02-15 15:22:16 +01:00
can1357 6cc367f37b feat(coding-agent): added repeatToolDescriptions config to control tool description rendering
- Added `repeatToolDescriptions` configuration setting to control tool description rendering in system prompts.
- Implemented conditional tool display logic that renders full tool descriptions when enabled or a concise comma-separated list when disabled.
- Threaded `repeatToolDescriptions` setting through SDK and system prompt building pipeline.
2026-02-15 14:55:44 +01:00
can1357 082eae59d1 chore: bump version to 12.5.0 2026-02-15 14:23:09 +01:00
can1357 8ff758ed07 feat(coding-agent/modes): fixed theme selector with non-destructive preview and deduplication
- Added new previewTheme() function to enable non-destructive theme preview during settings browsing.
- Implemented asynchronous theme loading with request deduplication to prevent race conditions when rapidly browsing theme options.
- Enhanced theme preview cancellation behavior to restore the previously active theme instead of the current value.
- Fixed theme preview updates being applied out-of-order when rapidly browsing theme options by using request ID tracking.
2026-02-15 14:22:43 +01:00
can1357 79cfe855c9 feat: enhanced glob patterns, symlink handling, and Tailwind CSS compilation
- Added `recursive` option to GlobOptions to control whether simple glob patterns match recursively by default (true).
- Changed glob pattern behavior to always apply recursive matching for simple patterns instead of requiring explicit `**/` prefix.
- Improved symlink handling in glob file type filters to resolve symlink targets and match based on their actual type (file/dir).
- Enhanced skill discovery in coding-agent to use dual-pass glob approach with deduplication and improved extension module detection.
- Implemented dynamic Tailwind CSS compilation in stats package by extracting actual class names from source files instead of building with empty candidates.
- Refactored Tailwind stylesheet imports to use centralized `tailwindcss/index.css` import with custom stylesheet loader callback.
2026-02-15 14:15:04 +01:00
can1357 5f2f26a901 perf(coding-agent): optimized model discovery and initialization with caching and parallel skills loading
- Added caching for model API key availability checks to avoid redundant lookups.
- Optimized model discovery loop to exit early on first available model instead of checking all models.
- Moved skills discovery to run in parallel with other initialization by starting it earlier.
2026-02-15 13:56:42 +01:00
can1357 fec2c04311 chore(monorepo): refreshed deps, migrated stats to tailwind v4, and improved discovery
- Updated dependency versions across root, ai, coding-agent, stats, and tui packages.
- Pinned @sinclair/typebox to 0.34.48.
- Migrated stats Tailwind build from PostCSS plugin usage to Tailwind v4 compile() API and emitted a standalone styles.css.
- Switched discovery helpers to native glob scanning for faster gitignore-aware file/module discovery.
- Added startup timing markers around model selection and skill discovery in sdk initialization.
2026-02-15 13:56:40 +01:00
can1357 7ec6668b0b feat(coding-agent): improved skill discovery and hardened hashline edit parsing with type safety
- Improved skill discovery to use native glob pattern matching instead of manual directory traversal, enabling more efficient file discovery with gitignore support.
- Enhanced hashline reference parsing to accept optional leading whitespace and arrow prefixes (>>> or >>), allowing more flexible formatting of hashline references.
- Strengthened type safety in hashline edit formatting by adding runtime type guards and defensive property access for malformed edit objects.
- Fixed skill discovery to extract skill names from directory paths when frontmatter name is missing, improving fallback behavior.
- Updated ajv dependency from ^8.17.1 to ^8.18.0.
2026-02-15 13:40:11 +01:00
can1357 f20a964986 feat(coding-agent): added animated microphone icon and skill discovery via symlinks, improved STT feedback
- Added animated microphone icon with color cycling during voice recording and transcription states.
- Added support for discovering skills via symbolic links in the skills directory.
- Changed STT status messages to display via state change callbacks instead of dedicated status line segment.
- Removed dedicated STT status line segment in favor of animated cursor-based feedback.
- Added cursor override feature to TUI editor for customizing end-of-text cursor glyph with ANSI-styled strings.
2026-02-15 13:37:43 +01:00
can1357 d1f41ae553 merge: PR #51 — speech-to-text with Alt+H (closes #51)
- Moved /stt slash command to 'omp setup stt' CLI command
- Fixed pip install blocking TUI (sync -> async)
- Fixed 'Transcribing...' status not clearing after success
2026-02-15 10:30:47 +01:00
can1357 9e32219a21 fix(stt): address review feedback 2026-02-15 10:23:48 +01:00
can1357 629f0a1d60 fix(stt): added concurrency guard and dispose cancellation for STT controller 2026-02-15 10:23:48 +01:00
can1357 b56e8a72fc fix(stt): set stderr to ignore on recording spawns and removed exists() anti-pattern 2026-02-15 10:23:48 +01:00
daaximus 6969076386 feat(coding-agent): add speech-to-text with Alt+H keybinding
Cross-platform audio recording with automatic tool detection and
fallback chain (SoX > FFmpeg > arecord > PowerShell mciSendString).
Transcription via Python openai-whisper with automatic pip install
on first use.

Recording:
- SoX with explicit waveaudio device on Windows (-t waveaudio 0)
- FFmpeg with auto-detected dshow device name on Windows
- arecord for ALSA on Linux
- PowerShell mciSendString as zero-dependency Windows fallback
- Process health check after spawn, graceful stop for FFmpeg/PS
- Fallback chain: if one tool fails, tries the next automatically

Transcription:
- Python openai-whisper as primary backend (pip install openai-whisper)
- Custom WAV loader in transcribe.py using Python wave module
- Resamples to 16kHz mono via numpy (no ffmpeg dependency)
- Passes float32 numpy array directly to whisper.transcribe()
- 120s timeout with process kill guard

TUI integration:
- Alt+H keybinding to toggle recording (configurable in keybindings)
- /stt command with on|off|status|setup subcommands
- Status line segment showing REC/STT state
- Transcribed text inserted directly into editor prompt
- Lazy controller instantiation on first use

Settings:
- stt.enabled (default: false)
- stt.language (default: en)
- stt.modelName (default: base.en)

New files: packages/coding-agent/src/stt/{downloader,index,recorder,
setup,stt-controller,transcribe.py,transcriber}.ts
2026-02-15 10:23:48 +01:00
can1357 2365a4e8f7 merge: PR #62 (closes #62) 2026-02-15 10:22:47 +01:00
can1357 a155d98f9f feat(coding-agent): auto-switch dark/light theme via SIGWINCH
Replace single `theme` setting with `theme.dark` and `theme.light`.
Auto-detection is always on — COLORFGBG determines which slot to use.
On SIGWINCH, re-check COLORFGBG and switch themes if background changed.
Old `theme` setting auto-migrated using luminance detection.

Fixes #65
2026-02-15 10:20:11 +01:00