Commit Graph

4092 Commits

Author SHA1 Message Date
can1357 a69d166e00 perf(discovery): memoized WSL host-home probe per environment
- Deduplicated the re-imported changelog bullets from the PR #8403 merge,
  keeping the condensed register with only the new #8402 entry.
- getUserHomeCandidates memoizes the WSL home candidate keyed by
  platform + WSL markers + USERPROFILE, so a wedged interop pipe costs
  one bounded probe per process instead of one 500ms stall per
  discovery loader, while env changes (tests, SDK embeddings) still
  recompute.
2026-08-13 06:51:35 +02:00
can1357 2d512cb253 refactor: generalized thinking loop guard for multiple model families
- Generalized thinking loop guard and helper functions to support Gemini, DeepSeek, and Grok model families.
- Replaced `withGeminiThinkingLoopGuard` and related Gemini-specific symbols with generalized counterparts.
- Removed deprecated `enableGeminiThinkingLoopGuard` options and associated tests.
- Updated test suites and agent session logic to use the generalized thinking loop guard and model family tokens.
2026-08-13 06:15:00 +02:00
can1357 fc1fd664b9 chore(changelog): rewritten 2026-08-13 05:51:01 +02:00
can1357 021fdc5ba7 feat: added Grok 4.6 thinking-loop guard and model predicate
- Added `isGrok46ModelId` boundary-aware model predicate to the catalog package.
- Included Grok 4.6 models in the thinking-loop guard to prevent runaway reasoning streams.
2026-08-13 05:39:28 +02:00
can1357 1132c3e31c feat: implemented anthropic keep-alive and migration support for updates
- Added Anthropic prompt-cache refresh scheduling and state management to keep prompts warm across idle sessions.
- Updated pricing models and database stats tracking to calculate and store cost-weighted cache savings.
- Integrated cache savings metrics and efficiency displays into the stats CLI, dashboard routes, and UI components.
- Added support for package renaming, manifest pointer tracking, and installation migration during CLI updates.
2026-08-13 04:59:33 +02:00
can1357 ad2dee6351 feat(coding-agent): improved title generation quality and accuracy
- Set generation temperature to zero for online title generation to prevent garbled names.
- Update system prompt to instruct exact copying of technical terms and names.
- Reject generated titles containing no word characters to prevent punctuation-only sessions.
2026-08-13 02:07:57 +02:00
can1357 4d73392621 chore: fix changelog 2026-08-13 02:02:23 +02:00
pickpocket e7e280a6fb fix(catalog): complete GPT-5.6 off and pricing support
(cherry picked from commit fc034d61ff69e8ad1870f674c72ff3f761741862)
2026-08-13 02:00:59 +02:00
pickpocket 685055356a feat: add OpenAI Daybreak model support
(cherry picked from commit 889b55bbca0309e9eee6ce0c4287659bfc4fccb3)
2026-08-13 02:00:59 +02:00
can1357 3cbb615630 chore: normalized changelog entries after merging open pull requests 2026-08-13 01:23:13 +02:00
can1357 2dbb36ff26 fix(usage): reject malformed OpenCode quota windows 2026-08-13 01:14:54 +02:00
can1357 eafefaccf7 Merge PR #8337: fix(usage): use authoritative OpenCode Go quotas (@will-bogusz) 2026-08-13 01:14:53 +02:00
can1357 2934de944b Merge PR #8333: fix(ai): validated together login against models endpoint (@roboomp) 2026-08-13 01:14:53 +02:00
can1357 165f93ecfe fix(ai): require evidence before inferred xAI weekly usage 2026-08-13 01:14:53 +02:00
can1357 87b28daea1 Merge PR #8325: fix(ai): handle omitted creditUsagePercent in fresh xAI weekly periods (@bubua12) 2026-08-13 01:14:53 +02:00
can1357 eff0bc9d73 Merge PR #8307: fix(ai): stop stripping images from multimodal qwen3.8-max on DashScope (@roboomp) 2026-08-13 01:14:52 +02:00
can1357 149d10600f Merge PR #8284: fix(ai): release provider permit before stream completion (@ethancawse) 2026-08-13 01:14:51 +02:00
can1357 ddf7e9593e fix(ai): handle statusless hosted search completions 2026-08-13 01:14:51 +02:00
can1357 e61d595953 Merge PR #8263: fix(ai): continue after answerless hosted search (@kfxhjz) 2026-08-13 01:14:51 +02:00
can1357 ea200f1245 Merge PR #8157: fix(ai): preserve perplexity otp session cookies (@roboomp) 2026-08-13 01:14:49 +02:00
can1357 9c311d7a7b Merge PR #8040: fix(tui,utils): remove O(N²) hot paths when streaming long tool-call args (@AmecoCoding) 2026-08-13 01:14:45 +02:00
Ethan Cawse f9d647b31e fix(ai): fence late provider heartbeats 2026-08-12 11:27:27 -04:00
Ethan Cawse 6f725166cd docs(ai): clarify provider permit recovery 2026-08-12 10:54:39 -04:00
Will Bogusz 990984f19b fix(usage): purge stale quota on auth failure, reject partial payloads 2026-08-12 13:52:49 +02:00
Will Bogusz a120c96784 fix(usage): resolve reference-stored API keys before usage probes 2026-08-12 13:48:09 +02:00
Will Bogusz 9eff02d36c fix(usage): use authoritative OpenCode Go quotas 2026-08-12 13:26:01 +02:00
roboomp 62ccb64dbe fix(ai): validated together login against models endpoint
Together `/login` key validation chat-completed against the hardcoded
model `moonshotai/Kimi-K2.5`, which is not on Together's serverless
catalog. Together rejects it with HTTP 400 `model_not_available`, so no
valid key could ever pass validation.

Switch Together to the model-agnostic `models-endpoint` validation
against `https://api.together.xyz/v1/models`, matching the pattern used
by the other API-key providers.

Fixes #8328
2026-08-12 09:11:13 +00:00
bubua12 d4832c8c04 fix(ai): reject inferred weekly credits when monthly config has positive limit but malformed fields
- Differentiate explicit zero monthly limit from malformed positive monthly configurations.
- Reject inferred weekly credits when monthly config has a positive limit that fails parsing, preserving the retain-last-good fallback.
- Add unit test verifying rejection of malformed positive monthly payloads.
2026-08-12 16:21:55 +08:00
bubua12 31c77339c2 fix(ai): guard inferred unified weekly usage against monthly probe network errors
- Ensure inferred weekly credits on unified accounts are only used when the monthly probe successfully returns a config without positive monthly quota.
- If the monthly probe fails (transient network error), reject the inferred report so AuthStorage's retain-last-good cache preserves the previous valid snapshot.
- Add unit test verifying network error behavior on unified monthly probe.
2026-08-12 16:17:15 +08:00
bubua12 d22c3ee36f fix(ai): preserve monthly fallback when weekly credits percent is inferred
- Prefer explicit monthly included quota when weekly credits percentage was only inferred from an omitted field.
- Prevent pure monthly unified billing accounts from reporting phantom weekly credit limits.
- Keep tests clean and fully backward compatible.
2026-08-12 16:12:55 +08:00
bubua12 bbd6c59d25 fix(ai): gate 0% usage inference to active weekly periods
- Only infer 0% creditUsagePercent when end > now (active period).
- Reject expired weekly periods without explicit usage data so stale cache fallback is retained until rollover completes.
- Add unit test verifying expired periods without usage percent are rejected.
2026-08-12 16:05:56 +08:00
bubua12 1e8a44e272 docs(ai): add changelog entry for xai weekly usage fix 2026-08-12 16:03:54 +08:00
bubua12 2aad7ab8fc fix(ai): handle omitted creditUsagePercent in fresh xAI weekly periods
- Default creditUsagePercent to 0 when a valid weekly currentPeriod is present but the percentage field is omitted by xAI API (such as newly reset weekly cycles with zero usage).
- Default product usage percentage to 0 when omitted.
- Add test coverage for unconsumed weekly periods and update unified billing tests.
2026-08-12 15:59:43 +08:00
dynamicer 281c612ec1 chore(ai): restore unreleased changelog entry 2026-08-12 14:42:09 +08:00
dynamicer f1200b37c5 fix(ai): continue after answerless hosted search 2026-08-12 14:28:21 +08:00
roboomp 6ad4b02a8e fix(ai): compare qwen -max version components, not decimal floats
Number.parseFloat("3.10") is 3.1, so a future qwen3.10-max flagship would
sort below 3.8 and get its images stripped. Parse major/minor separately and
compare component-wise so 3.10 > 3.8. Locks the contract with a qwen3.10-max
counter-case.

Fixes #8305
2026-08-12 03:27:46 +00:00
roboomp a556ad61f8 fix(ai): stop stripping images from multimodal qwen3.8-max on dashscope
The DashScope compatible-mode text-only override from #1859 matched all
qwen*-max ids, so it vetoed image content for qwen3.8-max even though that
model is multimodal in the bundled catalog (image input, #8019). inspect_image
routed to qwen3.8-max therefore received the [image omitted] placeholder and
reported no image.

Narrow isDashscopeCompatibleModeTextOnlyQwen so the -max branch only flags
pre-3.8 SKUs as text-only; coder families stay text-only. 3.8+ -max ids now
send image_url content.

Fixes #8305
2026-08-12 03:23:19 +00:00
Ethan Cawse dd0a69baa7 fix(ai): preserve results when lease release fails 2026-08-11 23:03:48 -04:00
Ethan Cawse 3b2249d653 fix(ai): fence timed-out provider heartbeats 2026-08-11 23:03:48 -04:00
Ethan Cawse 3e538d71a4 fix(ai): release provider permit before stream completion 2026-08-11 23:03:48 -04:00
can1357 5481d8b9b0 chore: bump version to 17.2.15 2026-08-12 03:26:12 +02:00
can1357 92098d60ec chore: rewrote changelog 2026-08-12 03:25:42 +02:00
can1357 94a76a8f27 feat: hardened tar parser and optimize prompt handling
- Bound PAX sparse record memory overhead by caching sparse markers and specific keys.
- Update system prompt phrasing and tests for tool inventory and date displays.
2026-08-12 03:04:07 +02:00
can1357 a4d8860a6c feat: added google reasoning controls mcp stream resumption and tar support
- Added Google provider thinking configuration parameters and force-reasoning-off controls.
- Implemented MCP SSE stream resumption using Last-Event-ID and `SSEResumeError`.
- Added support for TAR old-GNU sparse extension blocks, path length checks, and archive entry overrides.
- Restricted external thinking support to specific models and added semver fallback parsing.
2026-08-12 02:32:45 +02:00
can1357 19c0afcc0d feat: implemented external thinking flags and transport reasoning controls
- Added the `--external-thinking` CLI flag alongside model capability checks to gate external thinking tool availability.
- Updated Anthropic and Google transports to honor `forceReasoningOff` for native thinking-off controls.
- Renamed the `thoughts` property and parameter to `notes` across think fixtures, tools, and tests.
- Updated system prompt instructions and test suites to verify transport-specific thinking and tool activation.
2026-08-12 02:23:17 +02:00
can1357 5ffafec146 chore: normalized changelog 2026-08-12 01:57:33 +02:00
can1357 6f58d45d4a Merge PR #8269: fix(ai): honor Bedrock skip-auth during model discovery (@roboomp) 2026-08-12 01:53:44 +02:00
can1357 78ef4f6bb9 feat(ai/providers): added forced tool directive for antigravity gemini routes
- Added a markdown template defining a tool-only turn directive for Gemini models.
- Appended the forced tool directive to request contents when using Antigravity Gemini routes with forced tool mode.
2026-08-12 00:58:25 +02:00
can1357 e5ebb2aee0 chore: bump version to 17.2.14 2026-08-11 20:43:02 +02:00
can1357 10fd42289c feat: introduced external thinking support and private scratchpad think tool
- Added support for external thinking and forced reasoning disablement across AI provider options and request transformers.
- Implemented the private scratchpad think tool along with its renderer, system prompt rules, and schema configuration.
- Updated agent session management and SDK tools to support dynamic runtime activation of the think tool via the externalThinking setting.
- Added comprehensive unit tests covering reasoning fallbacks, tool activation, and rendering behavior.
2026-08-11 20:39:57 +02:00