Commit Graph

2261 Commits

Author SHA1 Message Date
can1357 e710d97d74 fix(coding-agent): corrected config display to render arrays and objects as JSON
- Improved config display formatting to properly render arrays and objects as JSON instead of `[object Object]`.
- Enhanced type display in config list output to show correct type indicators for number, array, and record settings.
- Added test coverage for record settings rendering in config list output.
2026-02-26 12:38:57 +01:00
can1357 944d7f8d8d feat(coding-agent): increased async max jobs limit to 100 for concurrency
- Increased default async max jobs limit from 15 to 100 for improved concurrent task handling.
- Updated fallback default in SDK initialization to match schema configuration.
2026-02-26 12:34:29 +01:00
can1357 5e17dbd994 chore: bump version to 13.3.4 2026-02-26 11:54:40 +01:00
can1357 334b47094f fix: ssh conn to not trigger mux/channel-open failures
Fixes #154
2026-02-26 11:54:08 +01:00
Nathan Owens b20a874904 fix: improve Gemini tool selection with substitution table and read reinforcement (#144)
Add explicit WRONG→CORRECT substitution table to bash.md and read-over-bash
critical section to read.md. These concrete examples help models like
Gemini 3.1 Pro select specialized tools (read, grep, find, write, edit)
instead of defaulting to bash for file operations.

Changes:
- bash.md: Add 9-row substitution table inside <critical> showing exact
  tool calls to use instead of common bash patterns; add 2>/dev/null
  to the banned stderr patterns
- read.md: Add <critical> section emphasizing read over cat/head/tail/ls
  and requiring the path parameter (prevents empty {} calls)

Validated via GEPA optimization + live A/B testing with Gemini 3.1 Pro:

v13.2.1 (latest): Baseline avg 0.694 → PR avg 0.894 (+0.200)
  grep_pattern:       0.000 → 0.938 (+0.938)
  multi_tool_workflow: 0.000 → 0.955 (+0.955)
  find_files:         0.795 → 0.983 (+0.188)
  grep_and_read:      0.618 → 0.858 (+0.240)
  Wins 4 / Ties 3 / Losses 3

v13.1.1: Baseline avg 0.799 → PR avg 0.884 (+0.085)
  Wins 5 / Ties 3 / Losses 2
2026-02-26 11:47:53 +01:00
can1357 5faaf7ad4f chore: bump version to 13.3.3 2026-02-26 11:44:10 +01:00
can1357 9bcd1310d9 feat(ai/providers): added MCP resource and computer use message types to cursor provider
- Added support for four new exec message types: listMcpResources, readMcpResource, recordScreen, and computerUse.
- Imported four new result schemas to handle responses for MCP resource operations and computer use capabilities.
- Updated bash execution handler to use standardized 'cwd' parameter name instead of 'workdir'.
2026-02-26 11:25:02 +01:00
can1357 6c42ad43b7 feat(coding-agent): no warning necessary for move
- Modified no-op detection logic to allow move-only operations with unchanged content.
2026-02-26 11:04:42 +01:00
can1357 4bf357ec44 chore: bump version to 13.3.2 2026-02-26 11:02:34 +01:00
can1357 8f78e50f1b Move poimandres themes into builtin defaults 2026-02-26 11:02:17 +01:00
can1357 d0f04d4417 fix: align missing skill directory test behavior 2026-02-26 10:53:42 +01:00
can1357 4b20bdad27 chore: bump version to 13.3.1 2026-02-26 10:45:26 +01:00
can1357 21c00550b9 fix(discovery): corrected skill discovery to handle missing user skills directory
- Fixed skill discovery to continue loading project skills when user skills directory is missing.
- Added error handling in scanSkillsFromDir to gracefully handle ENOENT and log other read failures.
- Added test case verifying project skills load successfully despite missing user skills directory.
2026-02-26 10:41:54 +01:00
can1357 0d87031f1b feat: added sampling control parameters (topP, topK, minP, penalties) to agent options
- Added topP, topK, minP, presencePenalty, and repetitionPenalty sampling control options to StreamOptions and AgentOptions interfaces.
- Implemented getter and setter properties on Agent class for runtime configuration of model sampling parameters.
- Added UI configuration and preset value providers for five new sampling parameters in coding-agent settings schema and components.
- Integrated sampling control parameters through proxy layer and agent session configuration for end-to-end provider support.
2026-02-26 10:20:41 +01:00
can1357 50d392a3ba fix(coding-agent): source config CLI settings from schema 2026-02-26 10:14:14 +01:00
can1357 130b646d1d fix(coding-agent): guard report_finding extraction and rendering
Validate report_finding details before extraction and normalize findings before task rendering to avoid crashes when tool errors emit empty details.

Fixes #173
2026-02-26 10:07:02 +01:00
can1357 ad1229f9d3 fix(coding-agent): strip hallucinated hashline prefixes
Fixes #163
2026-02-26 10:02:47 +01:00
can1357 383e8a29d3 chore: bump version to 13.3.0 2026-02-26 09:48:11 +01:00
can1357 0e668a25ed fix: persist approved plan file to new session local directory
After plan approval, handleClearCommand() creates a new session with a
fresh artifacts directory. The local:// URL is session-scoped, so the
renamed plan file in the old session local dir was unreachable from
the execution session.

Write the plan content to the new session local dir after the session
switch so the titled plan artifact resolves correctly.
2026-02-26 09:45:23 +01:00
can1357 a90b282277 fix(coding-agent): harden hashline range-end duplicate handling
Clarify inclusive end semantics in the hashline prompt with bad/good examples.
Add range-replace duplicate-boundary auto-correction with a safety guard so correction only triggers for off-by-one ends.
Expand hashline heuristics tests to cover brace/); correction, blank-line guard, and boundary-already-in-range false-positive prevention.
2026-02-26 09:45:23 +01:00
can1357 da2f3a2143 fix(coding-agent): keep Claude user skills when project skills dir is missing
Fixes #177
2026-02-26 09:45:22 +01:00
can1357 f5ec1fd09e test(system-prompts): validate templates with Handlebars compile 2026-02-26 09:22:50 +01:00
can1357 049a5a8a2c Merge PR #148 2026-02-26 09:16:56 +01:00
can1357 ccbcb682df fix(submit-result): enforce data-or-error union contract 2026-02-26 09:02:09 +01:00
can1357 9da1b441a8 style(prompts): reformat 2026-02-26 08:56:47 +01:00
can1357 6dd384120c Merge branch 'pr-172' 2026-02-26 08:56:02 +01:00
can1357 1c8b3f8cb3 Merge PR #155 and fix isolation merge regressions 2026-02-26 08:53:25 +01:00
luke bac30de126 feat: add PERPLEXITY_COOKIES env var for session cookie auth (#178)
Support Perplexity web search via session cookies extracted from
the desktop app (Electron/AppImage). Accepts either a raw cookie
string or a bare session token value.

Auth resolution order: PERPLEXITY_COOKIES > agent.db OAuth > PERPLEXITY_API_KEY
2026-02-26 08:42:53 +01:00
Kevin Loftis bb9f899638 fix: prevent thundering herd of git status processes in status line (#180)
The #getGitStatus() method fires an async `git status --porcelain` but
only updates the TTL timestamp after the async completes. In large repos
where git status takes seconds, every TUI render cycle during that window
spawns a new process — cascading into hundreds of concurrent git processes,
exhausting file descriptors and creating .git/index.lock contention.

Add a #gitStatusInFlight boolean guard that ensures exactly one git status
process runs at a time. Use a finally block to unconditionally reset the
guard and refresh the TTL to completion time.
2026-02-26 08:41:56 +01:00
Muhammad Zahid Masruri fa7b962e51 fix(exa): synthesize answer from per-result summaries (#169)
Request contents.summary from Exa /search API and combine up to
3 non-empty summaries into SearchResponse.answer, replacing the
previous 'No answer text returned' output.

Changes:
- Add contents.summary to every Exa search request body
- Add summary field to ExaSearchResult interface
- Export synthesizeAnswer() to build combined answer from summaries
- Export buildExaRequestBody() for testability
- Export normalizeSearchType() (was private)
- Prefer summary over text/highlights for snippet field (falsy check)
- Only synthesize answer from results that have a URL (mirrors sources filter)

Tests: 37 new tests covering normalizeSearchType, buildExaRequestBody,
synthesizeAnswer (pure unit tests) and searchExa (mocked fetch)
2026-02-25 19:45:34 +01:00
Chay Choong b29b06d73a fix(mcp): make disabledServers work on user-level third-party servers (#175)
The disabledServers mechanism introduced in 4bfa3b0c (Merge branch
'pr-82', 2026-02-16) was defeated by a level guard added after merge:
servers with _source.level === "user" were exempt from the disabled
check. This meant servers discovered from ~/.claude.json (which the
Claude provider tags as level "user") were never actually filtered out,
even when present in disabledServers.

Remove the level guard so disabledServers applies unconditionally. This
is safe because the /mcp disable command already uses updateMCPServer
(setting enabled: false inline) for servers defined in omp own configs;
the disabledServers path only fires for third-party discovered servers.

Also fix the /mcp list display to cross-filter discovered servers
against the disabled list, preventing a server from appearing both as
"connected" and "disabled" when the MCP manager has stale state.
2026-02-25 19:43:42 +01:00
Joshua Christman 7e85f2a299 fix(submit-result): make data required in schema to prevent submit loop
The submit_result tool marked 'data' as optional (Type.Optional) in its
JSON schema, but runtime validation requires it when status is 'success'.
Models that follow the schema literally omit the data parameter, causing
every call to fail with 'data is required when status is success (got
null/undefined)'. The agent then retries indefinitely.

Change data from Type.Optional(dataSchema) to dataSchema so the schema
matches runtime requirements. Models are now forced to include the data
object when calling submit_result with success, resolving the loop.

For aborted status, models can pass data: {}; validation is skipped.

Co-authored-by: Cursor <cursoragent@cursor.com>
2026-02-24 20:12:05 -06:00
can1357 2bf90e5a94 fix: align task-template test expectations with trimmed prompt output
optimizePromptLayout trims the rendered template, stripping the leading
newlines from sectionSeparator. Tests now account for this.
2026-02-24 03:37:47 +01:00
can1357 5b867435e6 chore: bump version to 13.2.1 2026-02-24 03:35:13 +01:00
Julia 2ff8f25d31 fix(coding-agent/commit): Hardened changelog schemas and shared categories (#149)
- Added a shared CHANGELOG_CATEGORIES constant and reused it across changelog tooling.
- Validated changelog entry and deletion payloads to require arrays and flag invalid categories.
- Exported the changelog tool schema for generator validation and referenced it during parsing.

Co-authored-by: Can Bölük <can1357@users.noreply.github.com>
2026-02-24 03:30:34 +01:00
Zakhar Kogan bb7f288489 fix(extensions): guard wrapTextWithAnsi with width validation
- Guard Container.render() to ensure width >= 1 for ALL components
- Guard TwoColumnBody.rightWidth with Math.max(0, ...)
- Validate description type before passing to native function
- Fall back to truncation when width <= 2

Fixes crash when opening extensions in narrow terminals.
2026-02-24 03:29:06 +01:00
can1357 d4469b3eb7 fix(coding-agent): updated edit rules and recovery instructions
Fixes #158.
2026-02-24 03:25:13 +01:00
can1357 523dca5bbc fix: extended exa search types
Fixes #159.
2026-02-24 03:15:43 +01:00
Zahid c37bd1553b fix(coding-agent): use supported Exa search type for deep wrapper 2026-02-24 03:14:13 +01:00
can1357 ac384045cc fix(coding-agent): refine Exa no-key behavior and fallback priority 2026-02-24 03:12:33 +01:00
haosenwang1018 e3dc860925 fix: allow Exa MCP tools without EXA_API_KEY
The Exa MCP endpoint at https://mcp.exa.ai/mcp is publicly accessible
without an API key. Previously, all Exa tools bailed early with
'EXA_API_KEY not found' when no key was set, even though the basic
tools (web_search_exa, company_research_exa, get_code_context_exa)
work fine unauthenticated.

Changes:
- fetchExaTools/callExaTool: accept null apiKey, omit exaApiKey param
- MCPWrappedTool.execute: only require key for Websets tools
- createExaTool (factory): remove early-return guard on missing key

Fixes #151
2026-02-24 03:12:02 +01:00
can1357 289258d590 fix: minimax login must override
Fixes #156.
2026-02-24 03:01:30 +01:00
can1357 fb150a9e39 fix(coding-agent): redirect ssh stdin to avoid mux fd errors
Fixes #154.
2026-02-24 02:59:42 +01:00
can1357 86f3d1b42f test(coding-agent): add Handlebars coverage for system prompt templates
Fixes #147.
2026-02-24 02:59:12 +01:00
can1357 e116b87bed fix(model-selector): show commit role badge in /model
Fixes #157.
2026-02-24 02:58:35 +01:00
can1357 76a921f284 fix: apply non-interactive env to all bash execution paths
The non-interactive environment variables (pager, editor, and prompt
suppression) were only applied in the PTY (interactive) bash path.
The non-PTY executeBash path had no such defaults, so commands could
block on pagers or credential prompts.

- Extract NO_PAGER_ENV from bash-interactive.ts into shared
  non-interactive-env.ts module (renamed to NON_INTERACTIVE_ENV)
- Apply it in executeBash (non-PTY) with user overrides taking
  precedence
- Fix ordering in interactive PTY path so user env overrides
  the defaults (was reversed)
- Add test verifying defaults are applied alongside user env
2026-02-24 02:57:43 +01:00
can1357 6240e7bb03 refactor(prompts): clarified agent and system guidance
- Standardized prompt format, removing XML-like tags.
- Emphasized RFC 2119 keywords using bolding across all prompts.
- Rewrote the core system prompt with enhanced structure and directives.
2026-02-24 02:50:20 +01:00
Zahid 91fc0300b9 fix(coding-agent): align Exa MCP tool names with _exa suffix 2026-02-24 07:36:17 +07:00
DeprecatedLuke 745e38aebf fix(task): filter lock files from commit message diff input 2026-02-23 20:42:49 +00:00
DeprecatedLuke 7499379756 fix(task): make merge failures non-fatal, preserve agent output 2026-02-23 20:37:51 +00:00