Commit Graph
3836 Commits
Author SHA1 Message Date
can1357 bb01e58865 chore: bump version to 13.17.4 2026-04-01 23:50:36 +02:00
can1357 cc4b3f270f fix(ci): add --external mupdf to release build_binary function
The previous fix (513982b16) only added --external mupdf to the
package.json build:binary script, but the CI release job uses its
own inline build_binary function that was missing the flag. This
caused the release job to fail on tag push v13.17.3 with a
top-level await error from mupdf via markit-ai.
2026-04-01 23:47:57 +02:00
can1357 9498032d68 feat(coding-agent): enabled archive entry writes with automatic creation support
- Added support for writing to archive entries using `archive.ext:path/inside/archive` syntax for .tar, .tar.gz, .tgz, and .zip formats.
- Added ability to create new archives automatically when writing to non-existent archive subpaths with nested directory support.
- Implemented archive path resolution and validation with fallback to plain file writes for non-archive filenames.
- Added comprehensive test coverage for archive write operations including entry updates, archive creation, and fallback behavior.
2026-04-01 21:25:36 +02:00
can1357 513982b16e fix(ci): externalize mupdf from compiled binary and update ci-green test assertions
- Add --external mupdf to bun build --compile to avoid top-level await error
- Update ci-green test to match current prompt template content
2026-04-01 21:07:16 +02:00
can1357 236fedaf2e chore: bump version to 13.17.3 2026-04-01 20:57:14 +02:00
can1357 d4d5c9924e test(coding-agent): removed brittle tests relying on implementation details
- Removed 3 test cases from gh.test.ts that relied on implementation details and external state.
- Removed unused helper functions getCurrentHeadSha() and GhToolDetails import.
- Updated test assertions to use path.resolve() and corrected expected remote name from fork-contrib to forksrc.
- Reformatted else blocks in shell.rs for consistency.
2026-04-01 20:54:50 +02:00
can1357 3ff3dd5245 chore: linter fixes 2026-04-01 20:52:25 +02:00
can1357 d8f5bb4be2 feat(coding-agent): replaced markitdown CLI with native markit-ai library for document conversion
- Replaced Python-based markitdown CLI with native markit-ai library for document and notebook conversion.
- Added support for converting Jupyter notebooks (.ipynb) to markdown via markit-ai integration.
- Created markit utility module with file/buffer conversion wrappers and standardized error handling.
- Removed markitdown from Python tools manager and eliminated external CLI dependency.
- Updated fetch, read, and scraper tools to use new markit conversion API across codebase.
- Added test coverage for ipynb file conversion through markit utility.
2026-04-01 20:51:29 +02:00
can1357 9d5508980f perf(pi-natives): optimized pipe I/O to use async instead of blocking workers
- Replaced blocking Tokio worker with non-blocking async I/O for pipe reading to prevent stalling the runtime when child processes keep pipes open.
- Refactored background job termination to use process group and process tree APIs instead of deprecated signal parsing, improving reliability across Unix and Windows.
- Added non-blocking pipe registration and fcntl-based flag management for Unix platforms to enable efficient async I/O without blocking workers.
- Added test case verifying read_output cancellation before pipe EOF to ensure proper cleanup behavior.
2026-04-01 20:46:59 +02:00
can1357 9281e6b50e feat(coding-agent): added archive reading support for tar, tar.gz, tgz, zip
- Added archive reading support for .tar, .tar.gz, .tgz, and .zip files with virtual subpath syntax (archive.ext:path/inside/archive).
- Added archive listing and subdirectory navigation capabilities to explore archive contents without extraction.
- Added /tools slash command to display visible agent tools and their capabilities.
- Implemented ArchiveReader module with openArchive(), parseArchivePathCandidates(), and archive content extraction methods.
- Added fflate 0.8.2 dependency for archive decompression support.
- Added comprehensive test coverage for TAR, TAR.GZ, TGZ, and ZIP archive reading with fixture generation utilities.
2026-04-01 20:45:51 +02:00
can1357 e59436ba31 feat(coding-agent): added /tools command to display available agent tools
- Added `/tools` slash command to display agent-visible tools in interactive sessions.
- Added `handleToolsCommand()` method to InteractiveMode to delegate tools display to command controller.
- Added `buildToolsMarkdown()` utility function to generate formatted markdown table of available tools.
- Refactored `showMarkdownPanel()` helper to reduce duplication in markdown display logic across commands.
2026-04-01 20:32:59 +02:00
can1357 2e0186a952 fix(ci): resolve gh_run_watch test hang and hardcoded path
- abortableSleep used Bun.sleep which vitest fake timers do not intercept;
  switch to setTimeout via Promise.withResolvers so vi.useFakeTimers() +
  vi.advanceTimersByTime() work correctly in the polling loop tests
- getCurrentHeadSha() and GhRunWatchTool session cwd used a hardcoded
  /work/pi path; replace with import.meta.dir so the tests resolve the
  real repo HEAD on any machine
- add timeout-minutes: 30 to the CI test job as a safety net against
  future hangs blocking release runs
2026-04-01 20:18:23 +02:00
can1357 5fbfbafa58 chore: bump version to 13.17.2 2026-04-01 19:32:22 +02:00
can1357 5f0944ffe2 feat: added marketplace help command and improved catalog parsing resilience
- Added `/marketplace help` subcommand to display marketplace operations usage guide.
- Enhanced marketplace catalog parsing to skip invalid entries with warnings instead of failing.
- Improved `/marketplace discover` command to suggest official marketplace when no plugins available.
- Fixed marketplace error messages to display error details instead of object stringification.
- Added comprehensive marketplace plugin system documentation covering discovery, installation, and management.
2026-04-01 19:31:48 +02:00
can1357 8de3ccfcdd chore: bump models 2026-04-01 19:15:40 +02:00
can1357 94edc693cb fix(marketplace): corrected plugin name validation to allow dots
- Corrected plugin name validation regex to allow dots in addition to hyphens.
2026-04-01 19:09:55 +02:00
can1357 68cf52de3c fix(session): corrected artifact storage fallback for non-persistent sessions
- Fixed artifact storage for non-persistent sessions to use in-memory fallback instead of returning undefined, enabling proper spill truncation for all session types.
- Added in-memory artifact map and counter to SessionManager for fallback storage when file-based ArtifactManager is unavailable.
- Updated saveArtifact() JSDoc to reflect new behavior of returning artifact IDs for all sessions.
2026-04-01 19:08:48 +02:00
can1357 5366888205 ux(tools): added animated spinner with status icons to gh_run_watch output
- Enhanced `gh_run_watch` tool call rendering to display animated spinner status and target description (run ID, branch, or current HEAD) with improved visual hierarchy.
- Refactored renderer to use `formatStatusIcon` helper for consistent status display across spinner frames.
2026-04-01 17:44:31 +02:00
can1357 b7c801fab2 feat(tools): added GitHub Actions workflow renderer and enhanced gh-* tool outputs
- Added gh-renderer.ts module with GitHub Actions workflow visualization for terminal output.
- Enhanced gh_pr_view tool to fetch and display inline review comments alongside pull request reviews.
- Improved gh_run_watch tool output with structured job state tracking and failed log formatting.
- Fixed gh_run_watch to resolve explicit branch watches against GitHub API branch head instead of local HEAD.
- Fixed gh_* tool outputs to spill full large results to artifacts instead of pre-truncating.
- Standardized trailing newlines across 100+ prompt template files for POSIX compliance.
2026-04-01 17:35:39 +02:00
can1357 a0f2b0ad99 feat(tools): added gh_pr_checkout and gh_pr_push tools for worktree-based PR management
- Added gh_pr_checkout tool to check out GitHub pull requests into git worktrees with branch metadata.
- Added gh_pr_push tool to push checked-out pull request branches to source fork with force-with-lease support.
- Implemented 15+ git helper functions for worktree, branch, and remote management operations.
- Extended GhPrViewData interface with headRefOid, headRepository, isCrossRepository, and maintainerCanModify fields.
- Added comprehensive integration tests for gh_pr_checkout and gh_pr_push tools with fixture setup and cleanup.
2026-04-01 17:21:27 +02:00
can1357 010a69c7d6 feat(tools): introduced GitHub CLI tools for repository and workflow operations
- Added 7 GitHub CLI tools (repo view, issue view, PR view, PR diff, PR search, issue search, run watch) for repository and workflow operations.
- Added `github.enabled` setting to gate read-only GitHub CLI tools, disabled by default.
- Added bundled `/green` command for iterative CI failure fixing with optional git tag instructions.
- Implemented gh-cli module with GitHub CLI command execution utilities and output parsing.
- Added comprehensive test coverage for GitHub tools and custom commands with mocked CLI interactions.
2026-04-01 17:15:10 +02:00
Can BölükandGitHub 513f928bc1 Merge pull request #595 from daandden/fix/openai-first-event-timeout-retry
fix(ai): preserve OpenAI first-event timeout errors so auto-retry works
2026-04-01 15:36:47 +02:00
can1357 7b05dbf9ef Merge remote-tracking branch 'origin/main' into pr-595 2026-04-01 15:36:17 +02:00
Can BölükandGitHub 9df5af60a6 Merge pull request #594 from daandden/fix/592-strip-stale-assistant-replay-payload
fix(coding-agent): strip stale assistant OpenAI Responses replay payload on rehydrate
2026-04-01 15:36:05 +02:00
can1357 d42975618d Merge remote-tracking branch 'origin/main' into pr-594
# Conflicts:
#	packages/coding-agent/CHANGELOG.md
2026-04-01 15:35:50 +02:00
Can BölükandGitHub d3acee0742 Merge pull request #587 from smileynet/fix/puppeteer-excessive-scrolling
fix(tui): cap inline image height and preserve multiplexer scrollback
2026-04-01 15:35:22 +02:00
can1357 b264ddda84 Merge remote-tracking branch 'origin/main' into pr-594
# Conflicts:
#	packages/coding-agent/CHANGELOG.md
2026-04-01 15:34:54 +02:00
can1357 766d81e8e4 Merge remote-tracking branch 'origin/main' into pr-587
# Conflicts:
#	packages/coding-agent/CHANGELOG.md
2026-04-01 15:34:54 +02:00
Can BölükandGitHub d3459f2d31 Merge pull request #586 from apoc/fix/marketplace-plugin-scope
feat(coding-agent): marketplace plugin project scope
2026-04-01 15:33:50 +02:00
can1357 268dca8fe8 Merge remote-tracking branch 'origin/main' into pr-587
# Conflicts:
#	packages/coding-agent/CHANGELOG.md
2026-04-01 15:33:13 +02:00
can1357 606f9ac1f5 Merge remote-tracking branch 'origin/main' into pr-586-r2
# Conflicts:
#	packages/coding-agent/CHANGELOG.md
2026-04-01 15:33:13 +02:00
can1357 c667cb3720 docs(coding-agent): add changelog entry for stale replay fix 2026-04-01 15:31:46 +02:00
can1357 522f6b0c8d docs(coding-agent): add changelog entry for inline image cap 2026-04-01 15:31:46 +02:00
can1357 dca0fcb974 fix(coding-agent): validate plugin scope flag 2026-04-01 15:31:46 +02:00
2d5f802daf fix(coding-agent): do not enable web_search if explicitly disabled (#593)
Co-authored-by: le-cameleon <200889489+le-cameleon@users.noreply.github.com>
2026-04-01 15:26:08 +02:00
Vu Anh Nguyen bd2283610f fix(ai): preserve first-event timeout errors for OpenAI stream retries
fixes #591
2026-04-01 15:14:31 +07:00
Vu Anh Nguyen 3860ac986c fix(coding-agent): strip stale assistant OpenAI Responses replay payload on rehydrate
sanitizeRehydratedOpenAIResponsesAssistantMessage now removes the
assistant providerPayload for Responses-family messages, not just the
stale thinkingSignature. After rehydration the native replay snapshot
belongs to a previous live provider connection and replaying it on a
warmed session causes 401 rejections from GitHub Copilot.

User/developer providerPayload is preserved by the caller since it
carries durable compaction and preserved history needed for valid cold
request reconstruction.

Fixes #592
2026-04-01 14:53:28 +07:00
can1357 4b1d5ebb0b ci: enabled workspace crate caching in Rust cache action
- Enabled workspace crate caching in Rust cache action across three CI jobs for faster builds.
2026-04-01 07:45:00 +02:00
can1357 2185f32363 fix: publish packages in dependency order 2026-04-01 06:08:13 +02:00
can1357 9b453ce2e5 chore: bump version to 13.17.1 2026-04-01 05:19:32 +02:00
Sam BigginsandGitHub 15db1dec56 fix(ai): update spoofed Gemini CLI User-Agent to v0.35.3 format (#574)
* fix(ai): update spoofed Gemini CLI User-Agent to v0.35.3 format

Gemini CLI v0.35+ changed its User-Agent format:
- Dropped 'google-api-nodejs-client/10.5.0' suffix
- Added surface field (third param in parens)
- New format: GeminiCLI/VERSION/MODEL (PLATFORM; ARCH; SURFACE)

The stale v0.34.0 UA was contributing to google-gemini-cli/gemini-3.1-pro-preview
being rejected, alongside Google's new abuse detection for third-party CCA usage
(google-gemini/gemini-cli#22970).

Verified: model responds successfully with updated UA.

* feat(scripts): add spoofed version drift checker

Fetches latest stable release from google-gemini/gemini-cli GitHub
releases and compares against the hardcoded version in the provider.

  bun check-spoofed-versions         # report drift, exit 1 on mismatch
  bun check-spoofed-versions --update # apply version bump in-place

Extensible for additional spoofed tools (Antigravity, Copilot headers).
2026-04-01 05:18:58 +02:00
can1357 bccc62eb2e fix: CI reasoning replay and test imports 2026-04-01 05:17:54 +02:00
can1357 906123c97d style: reformat 2026-04-01 04:52:47 +02:00
can1357 77eddf80e9 fix(patch): wrapped long diff lines with continuation gutters
- Replaced truncation with line wrapping for diff output in the edit tool renderer.
- Added `wrapEditRendererLine` to preserve gutter markers and line numbers on continuation lines.
Fixes #578
2026-04-01 04:52:03 +02:00
can1357 6645a7a059 fix(model-registry): filtered disabled providers from model listing
- Applied `disabledProviders` setting to `getAvailable()` and `getDiscoverableProviders()` so `--list-models` and `/model` hide models from disabled providers.
- Initialized settings before model refresh in the `--list-models` code path.
- Added tests verifying disabled providers are excluded from both methods.
Fixes #588
2026-04-01 04:52:03 +02:00
can1357 7ebe965905 feat(ai): added thinkingSignature field to preserve reasoning field names across conversation turns
- Added `thinkingSignature` field to thinking content blocks to preserve the original reasoning field name (e.g., `reasoning_text`, `reasoning_content`) for accurate follow-up requests.
- Enhanced thinking block handling to track and distinguish between different reasoning field types, enabling proper field name preservation across multiple conversation turns.
- Updated `appendThinking` function to accept optional signature parameter and conditionally create new thinking blocks when signature changes.
- Added test case validating that streamed reasoning field names are preserved for follow-up requests.
2026-04-01 04:52:03 +02:00
can1357 bcee42ae3b feat(ai): implemented first-event timeout detection for streaming responses
- Added first-event timeout detection for streaming responses to prevent stuck requests and enable faster recovery from stream stalls.
- Added PI_STREAM_FIRST_EVENT_TIMEOUT_MS environment variable to configure first-event timeout behavior independently from idle timeouts.
- Fixed Anthropic stream timeout errors to be properly retried with first-event recognition, distinguishing first-event from idle timeouts.
- Enhanced idle-iterator utility with FirstEventWatchdog mechanism and markFirstStreamEvent wrapper for unified timeout handling across OpenAI, Azure OpenAI, and Anthropic providers.
2026-04-01 04:52:03 +02:00
can1357 3b68346123 fix(render-utils): used diff-specific colors for diffstat add/remove
- Replaced success/error theme colors with toolDiffAdded/toolDiffRemoved for diff stats display.
Fixes #589
2026-04-01 04:52:02 +02:00
can1357 cbb9f21363 chore(tools): added napi-rs to auto-generated file detection patterns
- Added napi-rs to known code generator patterns for auto-generated file detection.
2026-04-01 04:52:02 +02:00
can1357 15f34723c1 feat(web): removed code_search tool and Exa API integration from web module
- Removed code_search tool and all related Exa API integration from web search module.
- Deleted code-search.ts implementation including CodeSearchResponse types and executeCodeSearch() function.
- Updated getSearchTools() to return only webSearchCustomTool, removing dual-tool support.
- Removed code_search tool documentation from README and prompt files.
2026-04-01 04:52:02 +02:00