Commit Graph

586 Commits

Author SHA1 Message Date
can1357 52ad6516ef feat(diff): implemented native UTF-16 diff processing and removed jsdiff
- Implemented native UTF-16 text processing in Rust diff module with support for unpaired surrogates.
- Removed `similar` crate from Rust workspace and `diff` npm package from coding-agent, hashline, and natives.
- Removed jsdiff fallback wrappers and `isWellFormed()` guards from TypeScript diff implementations.
- Added comprehensive test suite for native diff functions covering random inputs and edge cases including surrogates and emoji.
- Renamed model `codex-auto-review` to `gpt-5.3-codex-spark` with updated pricing and context window.
2026-07-23 01:35:31 +02:00
can1357 9b54d9e9ac chore: bump version to 17.0.8 2026-07-23 00:41:54 +02:00
can1357 7d404686c2 chore: updated changelogs + remove summarization marker 2026-07-22 23:59:32 +02:00
can1357 e4de9509c7 test: adapt catalog-pinned tests to regenerated model catalog
- Repointed tests off removed gpt-5.2/5.3 codex variants and devin models (e06ac0b787): context-promotion and TTSR tests pin gpt-5.5 -> gpt-5.6-sol via per-test modelOverrides since no bundled codex model has a runtime-effective promotion target anymore; replay-boundary and history-payload suites use gpt-5.5; advisor quota fallback uses devin/swe-1-6-slow with suffix-less selectors per #4579 devin-agent semantics; gateway-reference pins kilo/giga-potato and now asserts the reference carries effortRouting so the cross-provider no-inherit contract stays meaningful.
- Verified cross-provider gateway references do not inherit wire routing after variant collapse (identity/reference.ts:145-154) - stale test, no product bug.
2026-07-22 22:26:10 +02:00
can1357 0002905ec5 chore: untrack node_modules symlinks and harden ignore pattern
- An eval-worktree cherry-pick swept 16 packages/*/node_modules symlinks into the index; 'node_modules/' with a trailing slash only matches directories, so symlinked installs bypassed the ignore. Dropped the slash and removed the tracked links.
2026-07-22 21:43:22 +02:00
can1357 dd80dcd035 test(catalog): adapt ChatGPT-only retention test to multi-account discovery API
- #6266 replaced openaiCodexModelManagerOptions' accessToken field with resolveAccounts; #6219's authoritative-pruning test predates that and silently skipped discovery, leaving the absent static model unpruned.
2026-07-22 21:19:53 +02:00
can1357 1b7dc1c3f6 docs: normalize changelog entries under [Unreleased]
- Promoted union-merge strays back under [Unreleased] and merged duplicate headings across ai, catalog, coding-agent, natives, and tui changelogs (scripts/fix-changelogs.ts --since 7b141199d5).
- Restored the pi-ai changelog entry for #6139 that its fix commit missed.
2026-07-22 21:14:15 +02:00
can1357 b9072f1991 fix(extensibility): validate Type.Unsafe against the draft-2020-12 upgraded schema
Aligns the shim's runtime safeParse/__validator with the wire/tool-call
path, so legacy draft-07 documents (tuple items) accept the same values
validateToolArguments does. Adds a regression test.
2026-07-22 21:13:21 +02:00
can1357 892beba18b Merge PR #6210: fix(catalog): use LM Studio's loaded context window not the max (@roboomp) 2026-07-22 21:13:12 +02:00
can1357 45df1a0fd5 Merge PR #6286: fix(catalog): restore cached Copilot 1M models via requestModelId (@roboomp) 2026-07-22 21:13:12 +02:00
can1357 45d00ad296 Merge PR #6266: fix(catalog): union Codex models across OAuth accounts (@roboomp) 2026-07-22 21:13:12 +02:00
can1357 f1cf6af338 fix(catalog): move #6108 changelog entry under Unreleased 2026-07-22 21:13:01 +02:00
can1357 12b6c33c07 Merge PR #6219: fix(catalog): retain ChatGPT-only Codex models (@roboomp)
# Conflicts:
#	packages/catalog/test/codex-discovery.test.ts
2026-07-22 21:13:01 +02:00
can1357 8aa37edf16 Merge PR #6261: fix(catalog): floor gpt-5.6 codex context window at 372k (@roboomp) 2026-07-22 21:12:22 +02:00
can1357 e06ac0b787 feat(catalog): updated model catalog with new models and variant support
- Removed deprecated devin models and legacy GPT-5 codex variants from model catalog.
- Added Gemini 3.5 Flash Lite and Gemini 3.6 Flash models across multiple providers.
- Added SWE-1.6, SWE-1.7, poolside/laguna, and other new models to catalog.
- Added variant collapse support for Gemini 3.6 Flash family.
- Updated context windows, pricing, and API routing for various qwen and grok models.
2026-07-22 20:30:03 +02:00
roboomp b823c18837 fix(catalog): guarded request-model header recovery
Versioned request-header restoration metadata inside v10 cache rows so only markers written by the old id-only matcher can bypass an unrestorable marker through requestModelId. Current aliases whose live headers differ from their static base remain unresolved and are refetched or dropped.

Added catalog and startup-registry regressions for custom-header aliases while preserving legacy Copilot -1m cache recovery.

Fixes #6284
2026-07-22 11:10:23 +00:00
roboomp d9bab7ce8b fix(catalog): restore cached request-model variants via requestModelId
Copilot -1m long-context variants are synthesized with transport
headers and a requestModelId to a bundled base. The v10 cache omits
headers; the writer only matched a same-id static entry, so these
variants were flagged unrestorable and dropped on the next offline
read, vanishing from the picker with a "Could not restore model"
warning. The startup registry loader dropped them the same way.

Restore/match headers through requestModelId in the cache writer, the
model-manager restore path, and the coding-agent startup loader, and
bypass a stale unrestorable marker written by the old id-only writer.

Fixes #6284
2026-07-22 10:59:10 +00:00
roboomp dfeaa7aed1 fix(catalog): aborted codex discovery on failed account refresh
resolveCodexDiscoveryAccounts now returns null when any stored Codex OAuth
account fails to resolve (e.g. a transient refresh failure), and the manager's
resolveAccounts callback propagates null to skip discovery. Previously a failed
account was silently dropped before unionCodexModels saw it, so the remaining
accounts were unioned and cached as the authoritative catalog, hiding the
failed account's models for the cache TTL. Aborting keeps the previous/bundled
catalog.

Add a ModelRegistry regression test with one refreshable and one failing Codex
account asserting discovery makes no /models call and bundled models survive.

Fixes #6265
2026-07-22 07:19:11 +00:00
roboomp a3a39b1b00 fix(catalog): rejected partial codex account unions
Treat a multi-account Codex discovery result as authoritative only when every
configured account returned a valid catalog. If any account fetch fails, return
null so model resolution retains the previous or bundled catalog instead of
caching a partial union that hides models for the cache TTL.

Update the regression coverage to combine one successful account response with
one failed response and assert the partial account model is not promoted.

Fixes #6265
2026-07-22 07:11:55 +00:00
roboomp b9dd5bce8a fix(catalog): unioned codex models across oauth accounts
Codex catalog discovery resolved a single access token, mapped it to one
chatgpt-account-id, and made one authoritative fetchCodexModels call whose
result pruned bundled entries. With multiple ChatGPT/Codex OAuth accounts,
the visible catalog depended on whichever account the discovery preflight
selected, hiding models available only through a sibling account.

openaiCodexModelManagerOptions now takes a resolveAccounts callback, fetches
each configured account's /models catalog independently, and unions them by
id before the authoritative merge. Bundled models are retained when every
account fetch fails. The runtime wiring resolves every stored openai-codex
OAuth account via AuthStorage.getOAuthAccesses.

Fixes #6265
2026-07-22 07:00:31 +00:00
roboomp 930bb33f4a fix(catalog): floored gpt-5.6 codex context window at 372k
Codex discovery under-reports the gpt-5.6 sol/terra/luna window: some
accounts omit `context_window`, others actively return 272000. The #5707
`?? fallback` only fired on absence, so an actively-reported 272000 passed
through and `preferDiscoveryLimit` overwrote the bundled 372K pin at
runtime, dropping compaction from 279000 to 204000 tokens.

Treat GPT_5_6_CONTEXT_WINDOW as a floor for these SKUs via Math.max so
neither omission nor active under-report regresses the real capacity;
other models keep honoring the reported value. Corrected the stale
"omits" comments in codex.ts and generated-policies.ts.

Fixes #6259
2026-07-22 04:03:25 +00:00
roboomp 5c5d860719 fix(catalog): retained ChatGPT-only Codex models
Stopped treating the public API availability flag as an OAuth discovery rejection signal while preserving account-hidden filtering and authoritative pruning.

Fixes #6108
2026-07-21 21:14:16 +00:00
roboomp da64bc8cbf fix(catalog): use LM Studio's loaded context window not the max
getLmStudioNativeContextWindow tried max_context_length first and never
read loaded_context_length, so omp believed a window the backend would
not accept. Models are routinely loaded below their architectural
maximum (user picks a smaller window, or MLX context auto-fit shrinks it
to fit unified memory), and compaction scheduled against the max window
never fired, killing sessions mid-run.

Prefer loaded_context_length when a model reports state: "loaded",
matching the runtime-over-max rule from #3754 for Ollama and llama.cpp.
Unloaded models report loaded_context_length: null and fall through to
the existing max/train chain unchanged.

Fixes #6082
2026-07-21 20:55:05 +00:00
can1357 7b141199d5 chore: bump version to 17.0.7 2026-07-21 22:11:51 +02:00
can1357 5b798685ef fix(catalog): preserve opaque gateway model ids
Co-authored-by: Matheus Gois <matheus.gois@doordash.com>
2026-07-21 21:46:09 +02:00
can1357 aa1b89db49 chore: bump version to 17.0.6 2026-07-20 23:46:18 +02:00
can1357 1fe22ee58c docs: normalized changelogs after merges (fix-changelogs --since 924ea9a4) 2026-07-20 22:55:56 +02:00
can1357 f20be013ca chore(catalog): regenerated devin models for GLM-5.2 variant collapse
- Applied resolver changes from PR #4882 to the bundled catalog: gated
  GLM-5.2 variants collapsed into the free glm-5-2 wire UID.
- Dropped the redundant swe-1-7 static seed entry.
- Unrelated upstream catalog drift (openai-codex removals, new inkling
  models) deliberately excluded from this regeneration.
2026-07-20 22:55:28 +02:00
can1357 ee26bec5a5 fix(catalog): drop redundant swe-1-7 static seed
main already bundles devin/swe-1-7 (discovered live, with image input);
the text-only seed wins the earlier-sources dedup in generate-models and
downgrades the bundled entry to text-only. Carry-over from the previous
snapshot already preserves the model across keyless regens.
2026-07-20 22:50:16 +02:00
can1357 024497995c Merge PR #4882: fix(catalog): collapse Devin GLM-5.2 variants so free 200K model works when quota is exhausted (@oldschoola)
# Conflicts:
#	packages/catalog/src/models.json
2026-07-20 22:50:16 +02:00
can1357 9fd6e97113 chore: bump version to 17.0.5 2026-07-18 23:51:40 +02:00
can1357 546dce7638 chore: update changelogs 2026-07-18 23:51:15 +02:00
can1357 c3b9e5415d chore: normalized changelog sections after merges 2026-07-18 21:04:24 +02:00
can1357 ffab5689a0 Merge PR #5497: fix(catalog): prune unsupported Codex account models (@roboomp)
# Conflicts:
#	packages/catalog/src/discovery/codex.ts
#	packages/catalog/src/models.json
#	packages/catalog/test/codex-discovery.test.ts
2026-07-18 21:02:46 +02:00
can1357 401fca701b Merge PR #5448: fix(coding-agent): rescue snapcompact dead-end when nothing is summarizable (@roboomp) 2026-07-18 21:01:41 +02:00
can1357 cbd6164e3a chore: normalized changelog sections after merges 2026-07-18 20:14:18 +02:00
can1357 157e940d5e Merge PR #5786: fix(auth): scoped post-login model refresh and stripped cache credentials (@roboomp)
# Conflicts:
#	packages/catalog/src/model-cache.ts
2026-07-18 20:14:11 +02:00
can1357 1acda6c1e6 style: formatted merge resolutions with biome 2026-07-18 19:58:59 +02:00
can1357 eefbb12923 chore: normalized changelog sections after merges 2026-07-18 19:58:30 +02:00
can1357 c2b241401b Merge PR #5919: fix(providers): sanitize boolean subschemas for grammar backends (@roboomp)
# Conflicts:
#	packages/catalog/src/compat/openai.ts
#	packages/catalog/src/types.ts
2026-07-18 19:58:22 +02:00
can1357 5c9b5f7b64 Merge PR #5890: fix(ai): allow custom OAuth fingerprint header overrides (@roboomp) 2026-07-18 19:57:45 +02:00
roboomp cc9fba7513 fix(catalog): normalized kimi k3 reasoning efforts
- Derived the mandatory low, high, and max ladder for Kimi K3 across OpenAI-compatible routes.
- Mapped generic requested tiers onto K3 wire values and defaulted the model to max.
- Added request-level regression coverage for LiteLLM-compatible models.

Fixes #5983
2026-07-18 11:36:38 +00:00
can1357 0ca454befa chore: bump version to 17.0.4 2026-07-18 06:41:08 +02:00
can1357 9ee329c9d7 chore: update changelogs 2026-07-18 06:40:52 +02:00
can1357 f60c7791c1 fix(catalog): used Moonshot MFJS schema for Kimi models on all hosts
- Enable `moonshot-mfjs` tool schema flavor for Kimi-family ids on any host, not just native endpoints, since proxies forward schemas verbatim to Moonshot's validator.
2026-07-18 06:27:36 +02:00
roboomp b468f3a7af docs(catalog): correct grammar flavor additionalProperties contract
The grammar tool-schema flavor preserves boolean additionalProperties/unevaluatedProperties rather than stripping them; the doc comment wrongly promised the Ollama-style strip.
2026-07-17 22:39:45 +00:00
roboomp 2eb35e300f fix(providers): sanitize boolean subschemas for grammar backends
Local grammar-constrained OpenAI-compatible servers (llama.cpp, LM Studio,
vLLM) build a GBNF grammar from tool JSON Schemas and 400 with
"Unrecognized schema: true" on a bare boolean subschema. The task tool's
open outputSchema field normalizes to boolean `true` (issue #1179), which
the converter cannot compile, breaking every tool request.

Add a "grammar" tool-schema flavor, auto-detected for local backends, that
widens bare boolean/empty subschemas into a value-accepting primitive union
while preserving closed-object `additionalProperties: false`.

Fixes #5914
2026-07-17 22:35:44 +00:00
can1357 2c225a0d00 chore: bump version to 17.0.3 2026-07-17 21:38:00 +02:00
can1357 3848a37f9a Merge PR #5820: fix(catalog): read litellm per-model cost from rich metadata (@roboomp) 2026-07-17 21:22:31 +02:00
can1357 8577371187 Merge PR #5896: fix(kimi-code): preserve K3 native effort contract (@roboomp) 2026-07-17 21:22:08 +02:00