Commit Graph

3665 Commits

Author SHA1 Message Date
can1357 d1239fd3e5 test(ai): deterministically refreshed broker snapshot before asserting healed block
- The broker heals its store synchronously while serving /v1/usage, but the
  remote client snapshot only converges via the background long-poll; the
  assertion raced that poll and flaked on slow CI runners.
- Pull one explicit snapshot after fetchUsageReports, matching the sibling
  same-deadline re-upsert test.
2026-07-27 06:26:25 +02:00
can1357 7d3f9d382c chore: bump version to 17.1.5 2026-07-27 05:30:59 +02:00
can1357 b3612324a6 chore: normalized changelog sections after merging community fixes 2026-07-27 05:00:04 +02:00
can1357 b485b902ab Merge PR #6645: fix(ai): avoid OAuth barrel import cycle (@usr-bin-roygbiv) 2026-07-27 04:58:25 +02:00
can1357 d7ce99b907 Merge PR #6744: perf(ai): lazily construct auth broker wire schemas (@usr-bin-roygbiv) 2026-07-27 04:58:25 +02:00
can1357 4be05b373a Merge PR #6722: fix(auth-broker): revalidate fresh snapshot caches (@Git-on-my-level) 2026-07-27 04:58:25 +02:00
can1357 679d26a71f Merge PR #6721: fix(ai): preserve Kimi Code cache affinity (@usr-bin-roygbiv) 2026-07-27 04:58:24 +02:00
can1357 955ee4ce34 fix(ai): honored non-official compat signing classification for interleaved beta
Provider ids (ZenMux mirrors) and explicit compat.signingEndpoint spec
overrides on opaque proxies now qualify alongside URL-recognized signing
routes; stale-official compat and the Vertex/Copilot header exclusions
are preserved (#6717).
2026-07-27 04:58:24 +02:00
can1357 bf7441ed96 Merge PR #6718: fix(ai): send interleaved beta through signing proxies (@roboomp) 2026-07-27 04:58:24 +02:00
can1357 9d76e168ba Merge PR #6706: fix(ai): preserve custom Anthropic web-search history (@roboomp) 2026-07-27 04:58:24 +02:00
usr-bin-roygbiv 19fdbe2835 perf(ai): lazily construct auth broker wire schemas 2026-07-27 00:46:39 +00:00
usr-bin-roygbiv 19beceb00a test(ai): cover both public OAuth barrels 2026-07-26 21:05:10 +00:00
Git-on-my-level 263126cb5c test(auth-broker): assert canonical rejection class 2026-07-26 18:27:47 +00:00
Git-on-my-level 98d25e3c67 fix(auth-broker): retain cache resilience on server errors 2026-07-26 18:24:56 +00:00
Hermes DevOps Bot 3a73349d93 fix(auth-broker): revalidate fresh snapshot caches 2026-07-26 18:05:30 +00:00
Roy ff76dfd298 docs(ai): clarify Kimi cache identity normalization 2026-07-26 17:20:24 +00:00
Roy 2d71251188 fix(ai): preserve Kimi cache affinity 2026-07-26 16:57:28 +00:00
Roy 3e0ec9daec fix(ai): respect Responses replay pair order 2026-07-26 16:33:24 +00:00
roboomp 8a0cb21092 fix(ai): excluded copilot urls from interleaved http beta
- Excluded effective github-copilot URLs from the interleaved beta path so custom-provider and rerouted Copilot hosts don't send the rejected header.
- Covered a custom provider on a Copilot host omitting the beta.

Fixes #6717
2026-07-26 16:03:56 +00:00
roboomp 6c254ca4f1 fix(ai): classified interleaved beta by effective endpoint
- Classified known signing proxies from the resolved request URL instead of materialized model compat.
- Excluded Vertex rawPredict by URL regardless of provider id.
- Covered canonical-model reroutes and custom-provider Vertex routes.

Fixes #6717
2026-07-26 15:58:12 +00:00
roboomp 5c3a7d8d5f fix(ai): excluded vertex rawpredict from interleaved http beta
- Gated the signing-endpoint interleaved beta on non-vertex providers so Vertex rawPredict keeps body-only betas.
- Asserted the google-vertex adaptive path omits the anthropic-beta HTTP header.

Fixes #6717
2026-07-26 15:48:54 +00:00
roboomp dc86bc2e15 fix(ai): sent interleaved beta through signing proxies
- Sent the interleaved-thinking beta for adaptive models on recognized non-official signing endpoints.
- Covered signing and non-signing proxy header behavior.
- Documented the replay failure fix in the AI changelog.

Fixes #6717
2026-07-26 15:42:24 +00:00
can1357 6d2a8de1bb chore: bump version to 17.1.4 2026-07-26 17:01:19 +02:00
can1357 5a6334a508 fix(ai): surfaced inactive Claude scoped weekly limits in omp usage
- Stopped dropping /usage limits[] entries with is_active: false. Anthropic marks only the currently binding limit active (an account pinned at a 100% Fable cap reports its 77% shared weekly row as inactive), so is_active signals severity, not bucket existence; filtering on it rendered real utilization as "not reported". Exhaustion gating unchanged: tier rows still hard-block only at confirmed 100% with a future reset.
- Moved the Claude Code fingerprint constants into the leaf module providers/claude-code-fingerprint (star re-exported from providers/anthropic, import paths unchanged). Fixes the providers/anthropic -> stream -> registry -> registry/oauth/anthropic init cycle that TDZ-crashed on claudeCodeVersion whenever providers/anthropic was the first module loaded, which blocked the covering test file.
2026-07-26 16:12:51 +02:00
can1357 b622601499 fix(ai): exclude output lifecycle status from Responses delta prefix identity
- PR #6513 strips status from sanitized replay items, which made buildResponsesDeltaInput's strict prefix compare treat raw response output items as history mutations and break previous_response_id chaining on every websocket continuation.
- Prefix identity now ignores the status field on both sides; regression covered by the existing openai-codex-stream websocket delta tests.
2026-07-26 15:55:16 +02:00
roboomp 319ab0c3c6 fix(ai): reset leaked text signatures by source
Reset text replay metadata whenever the projector enters a new source block, including unsigned terminal-only blocks.

Covered a signed terminal text block followed by an unsigned block to prevent invalid signature carryover.

Fixes #6703
2026-07-26 13:54:42 +00:00
can1357 4b8323b872 fix(natives): use Self for capture reference in desktop batch dispatch
- Clippy use_self violation introduced by the PR #6595 dispatch-closure refactor surfaced under -D warnings.
2026-07-26 15:48:29 +02:00
can1357 7420dfb1dc chore: normalized changelogs after merging 54 pull requests 2026-07-26 15:46:20 +02:00
can1357 4b0eb5a35e Merge PR #6650: feat(ai): report MiniMax Token Plan quota in usage (@everton-dgn) 2026-07-26 15:46:04 +02:00
can1357 d1dc436d1e Merge PR #6596: fix(coding-agent): preserve Claude computer coordinates (@wolfiesch)
# Conflicts:
#	docs/computer-use.md
#	packages/coding-agent/src/tools/computer.ts
#	packages/coding-agent/test/tools/computer.test.ts
2026-07-26 15:44:51 +02:00
can1357 e7987cc9fb Merge PR #6502: fix(cursor): synthesize missing exec MCP tool calls (@roboomp) 2026-07-26 15:41:27 +02:00
can1357 daf2680298 fix(cursor): bound the dispatch drain by the abort signal and settle todo calls when the host sync callback throws
Two defects flagged by review on the final head, both in the new drain/settle
machinery:

- drainInFlightDispatches looped on Promise.all unconditionally. Exec handlers
  have no cancellation contract (the bridge calls tool.execute with no signal),
  so a hung or long-running tool held the terminal error hostage after Ctrl+C.
  The drain now returns once the signal aborts; late results were discarded
  after agent_end regardless.

- A host todoSync callback that throws (session persistence on disk failure)
  skipped both the paired result and toolcall_end, stranding the live card and
  leaving the resolved block to be stripped from rebuilt transcripts. The
  callback is now caught and the call settles as a failure carrying the thrown
  message.

Both regression tests fail without their fix (the first by hanging the stream).
2026-07-26 15:41:27 +02:00
can1357 9b651f2869 Merge PR #6616: fix(cursor): sync native todo list from server-resolved tool calls (@quantmind-br) 2026-07-26 15:41:27 +02:00
can1357 d15c77ad62 docs(ai): changelog entry for Cursor history image data-URI fix 2026-07-26 15:41:27 +02:00
can1357 b8d0174503 Merge PR #6564: fix(cursor): embed data URI for images in root-prompt history (@sethmorton) 2026-07-26 15:41:27 +02:00
can1357 637e2c51f3 Merge PR #6601: fix(catalog): downgrade forced tool choice for thinking-locked Kimi Code aliases (@voidfreud) 2026-07-26 15:41:26 +02:00
can1357 27798df315 Merge PR #6683: fix(providers): add China (Beijing) region for alibaba-token-plan (@roboomp)
# Conflicts:
#	packages/ai/src/registry/alibaba-token-plan.ts
#	packages/ai/test/alibaba-token-plan.test.ts
2026-07-26 15:41:26 +02:00
can1357 2cc6b28d98 Merge PR #6537: fix(advisor): bound Codex SSE retries (@jeffscottward) 2026-07-26 15:38:52 +02:00
can1357 0f078e8af2 Merge PR #6521: fix(ai): repair Alibaba Token Plan usage reporting (@eggpeat) 2026-07-26 15:38:52 +02:00
can1357 d43e68b01c Merge PR #6505: fix(ai): retry statusless provider capacity errors (@roboomp) 2026-07-26 15:38:52 +02:00
can1357 62fc652056 Merge PR #6613: fix(ai): preserved Bedrock ARN thinking signatures (@roboomp) 2026-07-26 15:38:52 +02:00
can1357 b1f3bdbda7 Merge PR #6590: fix(ai): disable adaptive-only thinking on disableReasoning and forced tool choice (@roboomp)
# Conflicts:
#	packages/ai/test/anthropic-alignment.test.ts
2026-07-26 15:38:51 +02:00
can1357 dde9b30363 docs(ai): move Codex meter-isolation changelog entries to Unreleased
The entries were appended inside the released 17.1.3 section under a
duplicate '### Fixed' heading, retroactively mutating published release
history while leaving Unreleased empty.
2026-07-26 15:38:20 +02:00
can1357 0df4a22649 Merge PR #6541: fix(ai): stop one Codex window's limit from blocking the others (@paralin) 2026-07-26 15:38:19 +02:00
can1357 1408afd30a Merge PR #6513: fix(ai): strip output-only statuses from Responses replay (@Ant39140) 2026-07-26 15:38:19 +02:00
can1357 c1b77c9c44 Merge PR #6628: fix(natives): stabilize forwarded PulseAudio capture and playback (@anatoli-tsinovoy)
# Conflicts:
#	packages/ai/src/providers/anthropic.ts
#	packages/ai/src/registry/oauth/anthropic.ts
#	packages/ai/src/usage/claude.ts
2026-07-26 15:38:19 +02:00
can1357 33f4484118 Merge PR #6533: fix(computer-use): correct Codex subscription routing (@usr-bin-roygbiv)
# Conflicts:
#	packages/ai/src/providers/anthropic.ts
#	packages/ai/src/registry/oauth/anthropic.ts
2026-07-26 15:37:25 +02:00
roboomp 2fb9f888ad fix(ai): preserved custom anthropic web-search history
Retained complete native web-search call/result pairs through leaked-thinking projection at their original source anchors.

Kept opaque server-tool blocks atomic during persistence, stripped them on reparent, and covered custom continuations plus compaction retention.

Fixes #6703
2026-07-26 13:32:08 +00:00
Diogo Soares Rodrigues 07b813b948 fix(cursor): honor MCP application errors carried inside the success variant
describeExecResult treated every `success` oneof variant as a
successful call, but MCP encodes application-level tool failures inside
that variant as McpSuccess.is_error (agent.proto:2058), mirroring the
MCP spec. A handler using the TResult-only form that returned such a
result therefore reached Cursor as a failed tool while the rebuilt
transcript recorded success - the same inconsistency the previous fix
closed for the error/rejected variants.

The success branch now inspects is_error and, when set, flattens the
payload content into the transcript body instead of the generic
placeholder. Image items carry no text, so an all-image failure falls
back to a generic message. McpSuccess is the only *Success message in
agent.proto with an is_error field, so no other shape needs this.
2026-07-26 09:29:13 -03:00
Diogo Soares Rodrigues 90b89bf3c4 fix(cursor): drain exec dispatches on transport error and preserve raw failure state
Two P2 findings on the exec-handler path.

1. The success path waits for in-flight exec dispatches before pushing
   done, but the catch path did not. When the HTTP/2 completion rejects
   while a handler decoded from the last chunk is still running, the
   Agent finalizes the synthesized call from the terminal error and
   clears its Cursor result buffer; the handler then lands its real
   result after agent_end and it is discarded at the next run - even
   though the tool may already have performed side effects. The barrier
   is now a shared helper and inFlightDispatches is hoisted out of the
   try so both exits drain it.

2. resolveExecHandler always synthesized "Tool produced no transcript
   result" with isError: false for the TResult-only handler form. A
   rejected or error protocol result therefore reached Cursor as a
   failure while the rebuilt transcript recorded the same call as
   successful. Every exec result is a proto oneof whose only non-failure
   variant is success, so describeExecResult() derives the state from
   the variant and reuses its own error/reason text - the same string
   the server received.
2026-07-26 09:29:13 -03:00