Commit Graph

3127 Commits

Author SHA1 Message Date
can1357 38d1d3a2f5 feat(coding-agent): vendor relevant parts of markit 2026-06-18 19:11:22 +02:00
can1357 81563e0155 feat(coding-agent): improved retry safety for partial message streams
- Refactor replay safety logic to specifically prevent retries when a tool call is present in the assistant message.
- Enable retries for transient stream errors occurring during partial text or thinking sequences, ensuring consistency when no tool call has been completed.
- Add regression tests to verify that transient socket closures are successfully recovered while completed tool calls remain protected from redundant retries.
2026-06-18 18:58:15 +02:00
can1357 831b664a4c perf(coding-agent): optimized documentation indexing via compressed blob
- Replaced raw TypeScript documentation map with a lazily-inflated gzip blob.
- Reduced bundled binary/npm package size by approximately 0.9MB.
- Encapsulated index logic into `docs-index.ts` to separate header metadata from content.
- Added `postpack` and robust `try/finally` patterns in build scripts to ensure clean artifacts.
- Implemented disk-based fallback during development to maintain existing developer experience.
2026-06-18 18:57:13 +02:00
can1357 f5ebab2b83 feat(utils): vendor mermaid rendering 2026-06-18 18:52:38 +02:00
can1357 8427e69e1e fix(coding-agent): prevented puppeteer startup crashes
- Avoided value-imports of `puppeteer-core` in main startup files to prevent eager loading of the browser-data dependency graph.
- Used `import type` and literal string checks to defer `puppeteer-core` initialization until browser tools are actually invoked.
- Added a test to verify that `puppeteer-core` and `@puppeteer/browsers` remain off the eager startup import graph.
- Externalized additional heavy dependencies to reduce bundle size and improved minification settings in the build script.
2026-06-18 17:22:37 +02:00
can1357 957399176c Merge remote-tracking branch 'origin/farm/fd936a58/fix-leading-dollar-prompt' 2026-06-18 16:59:11 +02:00
can1357 1a5faf4a33 Merge remote-tracking branch 'origin/farm/d3ff0cb8/detect-lm-studio-vision' 2026-06-18 16:58:42 +02:00
can1357 8fcb45b9fe Merge remote-tracking branch 'origin/farm/07fc7017/fix-plan-refine-abort' 2026-06-18 16:58:30 +02:00
can1357 7bfac1b128 fix(coding-agent): resolved EPERM errors when updating binary on Windows
- Switched to unique, timestamped backup file paths to avoid file lock collisions during binary replacement.
- Implemented a best-effort strategy for backup deletion, allowing successful updates even if the previous process image remains locked.
- Added a cleanup routine for sweeping stale backups, including legacy files, during each update attempt.
2026-06-18 16:57:38 +02:00
Can Bölük 90995e9406 Merge pull request #2940 from usr-bin-roygbiv/fix/gemini-malformed-function-call-retry
fix(coding-agent): bypass stream-interrupted guard for Gemini malformed function calls
2026-06-18 16:13:33 +02:00
roboomp 8c0dce29c3 fix(coding-agent): hid plan refine approval abort
Mark the plan approval abort as an internal transition so choosing Refine plan returns to the editor without rendering Operation aborted.

Fixes #2971
2026-06-18 13:32:25 +00:00
roboomp 6cd16d6373 fix(tui): required space after python prompt sigil
Treat shell-style leading variables such as $HOME as normal chat text instead of Python eval input. Keep local Python shortcuts available through explicit $ <code> and $$ <code> prefixes.\n\nFixes #2944
2026-06-18 07:39:15 +00:00
roboomp 6cac1d06a4 fix(providers): detected lm studio vlm inputs
Queried LM Studio native /api/v0/models metadata during catalog and runtime discovery so type=vlm models advertise image input. Added regressions for both provider-manager and runtime discovery paths.\n\nFixes #2945
2026-06-18 07:38:36 +00:00
usr_bin_roygbiv 2634bbf1d2 fix(coding-agent): bypass stream-interrupted guard for Gemini malformed function calls 2026-06-18 00:42:22 -05:00
roboomp 5af43e8285 fix(coding-agent): restored /model role picker
- Routed the /model TUI slash command back to the full model setup picker.
- Kept /switch on the temporary session model selector and updated slash-command coverage.

Fixes #2933
2026-06-18 05:27:22 +00:00
can1357 bd9418f142 fix: remove stale test 2026-06-18 05:12:25 +02:00
can1357 31fe9ab3f1 hack: backtrack changelog 2026-06-18 04:55:19 +02:00
can1357 2e658e28ce Merge remote-tracking branch 'origin/farm/39009a49/fix-extension-validation-shims' 2026-06-18 04:52:33 +02:00
can1357 291b3c74c2 feat: enhanced model reasoning, schema normalization, and loop guarding
- Integrated comprehensive loop guard support for DeepSeek and assistant prose patterns, including configurable stream checks.
- Implemented Moonshot Flavored JSON Schema (MFJS) normalization for improved tool compatibility and enum type inference.
- Added support for Ollama reasoning effort backfilling and Grok-specific service tier cost tracking across providers.
- Expanded model catalog with new entries and unified compatibility logic for improved OpenRouter API integration.
2026-06-18 04:51:43 +02:00
roboomp 71481ab47e fix(cli): returned usable legacy coding tools
Changed createCodingTools compatibility exports to instantiate cwd-bound built-in read/bash/edit/write tool definitions instead of throwing placeholders.

Fixes #2858
2026-06-18 02:37:53 +00:00
roboomp d2d876b129 fix(cli): preserved legacy shim behavior
Restored StringEnum's plain string enum wire schema and returned legacy coding tool placeholders that let createAgentSession keep the real built-in tools active.

Fixes #2858
2026-06-18 02:10:39 +00:00
roboomp 906143e9fd fix(cli): restored legacy extension shim exports
Added compatibility exports for legacy plugin validation, including defineTool, StringEnum, TypeBox bare imports, frontmatter helpers, SettingsManager, and createCodingTools.

Updated SDK settingsManager alias handling and regression coverage for the affected shim surfaces.

Fixes #2858
2026-06-18 01:29:32 +00:00
can1357 44c7c6a3f2 fix(coding-agent): prevented terminal layout corruption from multiline content
- Sanitized newlines from agent hub display text to ensure single-line output.
- Enforced line clamping during render to prevent terminal wrapping.
- Added test coverage to verify output truncation and newline removal.
2026-06-18 03:09:29 +02:00
can1357 a4d767a58c chore(integration): add missing changelog entries (#2911, #2838), apply biome formatting, normalize changelogs 2026-06-18 02:54:13 +02:00
can1357 4a1f3483c7 feat(coding-agent): promote completed /btw answers into branches (#2894) 2026-06-18 02:50:23 +02:00
can1357 9382439b52 feat(cli): add retry keybinding (#2899) 2026-06-18 02:48:29 +02:00
can1357 0919aeadea feat(coding-agent): add startup splash setting (#2884) 2026-06-18 02:48:29 +02:00
can1357 bbd39ee1b8 fix(coding-agent): preserve plan and goal slash history (#2891) 2026-06-18 02:48:28 +02:00
can1357 7e2b13917c fix(cli): switch /model through session selector (#2849) 2026-06-18 02:48:28 +02:00
can1357 50bc9353aa fix(mcp): keep resources when resources/templates/list unimplemented (#2838) 2026-06-18 02:46:48 +02:00
can1357 76dc05da65 fix(coding-agent): guided goal fallback model resolution (#2889) 2026-06-18 02:46:48 +02:00
can1357 39cd8d19c0 Merge remote-tracking branch 'origin/farm/9eb49b02/fast-fallback-compaction-timeouts' 2026-06-18 02:31:04 +02:00
can1357 d1ac94c1ea Merge remote-tracking branch 'origin/farm/fe8c31c7/copy-provider-auth-link' 2026-06-18 02:30:27 +02:00
roboomp 492c528aa3 fix(agent): skipped compaction timeout retries
Stopped auto context-full maintenance from retrying repeated summarization timeouts on the same model before fallback. Added a regression test for timeout fast-fallback behavior.\n\nFixes #2913
2026-06-18 00:25:17 +00:00
can1357 31aa25da11 feat(coding-agent): updated the primaryArg selection logic to check
- Updated the `primaryArg` selection logic to check for the `advise` tool explicitly.
- Preformatted the summary format for advice as `{severity}: {note}` when both are present, falling back to either if only one exists.
- Updated and verified the associated test suite to confirm the output structure.
2026-06-18 02:07:25 +02:00
can1357 566999854a feat(pi-natives): returned total searched files count in grep results
- Implemented file tracking during search using an `AtomicU64` counter.
- Integrated the counter into parallel visitor structures to increment with each visited file.
- Updated the streaming grep function signature to return the cumulative count of searched files.
- Expanded the native test suite to verify accurate file counts and edge cases like empty search directories.
- Added a JavaScript unit test to validate that advise tool calls are summarized correctly by their note argument.
2026-06-18 02:06:43 +02:00
can1357 4c36a48eb7 refactor(coding-agent): extended primary argument keys list and add type annotation
- Added "note" to the list of primary argument keys for formatting session history.
- Added an explicit type annotation to the inline savings unit test options.
2026-06-18 02:06:38 +02:00
can1357 4816fceadc test(coding-agent): aligned mock branch names in status-line leak test
- Updated mock `GitRefHead` branch name and reference paths to consistently use "main" instead of "feature".
2026-06-18 01:59:06 +02:00
can1357 8749241c11 test(coding-agent): isolated inline geometry tests using a custom shape
- Switched tests to evaluate geometry bounds using a dedicated high-capacity `6x12-dim` test shape.
- Isolated test assertions from dependency on default snapcompact shapes.
- Introduced `withTestShape` utility to apply test dimensions uniformly across test suites.
2026-06-18 01:57:23 +02:00
can1357 dd69e0e4fe refactor(coding-agent): hardened input schema validation and constraints
- Hardened the `hashline` parameters parsing pipeline to guarantee presence of the `input` field.
- Enforced input length limits on task roles to secure against oversized payloads.
- Configured Arktype schemas to reject or delete extra, undeclared fields in task and inspect-image payloads.
- Updated mock test parameters to align with corrected success exit codes.
2026-06-18 01:57:23 +02:00
can1357 d182db3973 feat(coding-agent): implemented gitignore-aware scan command to ttsr cli
- Added the `scan` action to `ttsr` CLI with support for gitignore-aware file globbing.
- Integrated AST pre-filtering and optimized AST/regex matching to evaluate scan rules.
- Implemented file size limits, binary file detection, and custom `--no-gitignore` and `--max-bytes` flags.
- Introduced comprehensive test suites validating directory mapping, exclusions, and size-limit enforcement.
2026-06-18 01:57:23 +02:00
can1357 fd06fe07ae refactor(coding-agent): migrated tool schema helpers to toolWireSchema
- Swapped legacy `zodToWireSchema` for `toolWireSchema` to normalize tool schemas.
- Updated `getSchemaPropertyKeys` in `tool-index.ts` to process schemas via `toolWireSchema`.
- Refactored tool token estimation in `context-usage.ts` to utilize the new schema helper.
- Fixed ArkType assertion checks in test helpers to correctly verify instances against `arkType.errors`.
- Aligned test suites and mock specifications with raw schema-based parameters instead of manually stringified JSON structures.
2026-06-18 01:57:23 +02:00
can1357 93347438ed fix(coding-agent): prevented async leaks and state pollution on disposal
- Added `#disposed` flags and guards to `StatusLineComponent` to stop async callbacks running post-dispose.
- Updated `onThemeChange` to return an unsubscribe function and registered it in `InteractiveMode`.
- Fixed schema validation for `spinnerFramesSchema` to narrower types instead of dynamic or-validation.
- Resolved settings leaks by saving and restoring `tuiTight` state in tests.
- Added regression tests verifying that pending async microtasks do not trigger updates after disposal.
2026-06-18 01:57:23 +02:00
can1357 7bec9af48f refactor(coding-agent): integrated zod validation and upgraded typebox shim
- Imported and injected `zod/v4` under `zod` in runtime environments for custom commands, custom tools, extensions, and hooks.
- Added corresponding Type definitions to `CustomCommandAPI`, `CustomToolAPI`, `ExtensionAPI`, and `HookAPI` interfaces.
- Re-exported Zod and its alias from the main package entry point to expand the public API surface.
- Refactored the internal Typebox validation shim to support parsing via standard `.safeParse()` and `.toJSON()` methods.
- Advanced Typebox shim utility capabilities with support for dual-key record validation and enhanced schema structure handling.
2026-06-18 01:57:23 +02:00
roboomp 507e0516d1 fix(auth): routed setup copy shortcut through prompt
Paste-code provider prompts now preserve the Alt+C authentication URL retry while their input owns TUI focus.\n\nFixes #2908
2026-06-17 23:30:14 +00:00
can1357 17ce678468 fix(coding-agent): handled provider error finish reasons and preserve subprocess failure codes
- Added detection for provider error finish reasons occurring before tool calls to identify fatal messages.
- Prevented subprocess tool execution finalization from resetting a non-zero exit code when yield items exist.
- Ensured a default error message is set in stderr when a subprocess fails after yielding a result.
2026-06-18 01:11:10 +02:00
roboomp ba3b1529c1 fix(auth): copied setup sign-in urls
Provider setup now attempts clipboard/OSC 52 copy for authentication URLs and exposes Alt+C as a retry shortcut while the setup TUI owns selection.\n\nFixes #2908
2026-06-17 23:04:11 +00:00
can1357 a050474af7 feat: migrated validation schemas and tool definitions from Zod to ArkType
- Migrated all wire protocol, schema definitions, and tools validation from Zod to ArkType across multiple packages.
- Updated extension runtimes, custom tools loader, and TypeBox compatibility shim to expose and use ArkType instances.
- Added a comprehensive ArkType migration guide, validation parity tests, and helper utilities.
- Removed redundant PDF asset routing and parsing implementations from the read tool.
2026-06-18 00:59:53 +02:00
can1357 d4317d3d20 feat(ai): consolidated OpenAI-family streaming and add OpenRouter API support
This change introduces a new `openrouter` API type and extensively refactors OpenAI-family streaming providers, centralizing shared logic and improving robustness.

Key changes include:
- **Unified OpenAI-family Logic:** Consolidated core utilities, compat resolution, request shaping, and stream processing into `openai-shared.ts`, reducing duplication across `openai-completions`, `openai-responses`, and `openai-codex-responses`.
- **OpenRouter API Type:** Introduced a dedicated `openrouter` API type with dual-surface compatibility, allowing it to dispatch requests as either OpenAI Chat Completions or Responses.
- **Enhanced Provider Integration:**
    - Improved Perplexity search to leverage shared OpenAI streaming transports, including API-key fallback to OpenRouter and support for Perplexity's Responses API.
    - Integrated xAI-specific logic directly into the shared `stream.ts` dispatch, removing the dedicated `xai-responses` provider.
    - Refined credential parsing for Google Gemini CLI and handling of Azure deployment names.
- **Robustness & Consistency:** Improved error handling for Codex, standardized output token parameter resolution, and ensured consistent application of reasoning suppression across all Chat Completions dialects.
- **New Documentation:** Added `provider-endpoint-constraints.md` to detail endpoint-specific behaviors and quirks for various providers.
- **Telemetry & Debugging:** Extended telemetry propagation to advisor calls and overflow compaction tasks. Improved debugging for Codex WebSocket failures and stream error messages.
- **Tooling & Security:** Updated browser stealth scripts to prevent detection and added a new `ts-no-inline-cast-access` TTSR rule.
2026-06-17 21:36:48 +02:00
KamijoToma da29a25e54 fix(coding-agent): cancel btw post-prompt work 2026-06-18 03:10:09 +08:00