Skip to content

Commit 3cdc0fa

Browse files
Sync public snapshot from freebuff-private
Source: CodebuffAI/freebuff-private@316afa9604c5297c16b82360f6516e2e6c175243
1 parent 335cfbf commit 3cdc0fa

3 files changed

Lines changed: 26 additions & 11 deletions

File tree

‎bun.lock‎

Lines changed: 0 additions & 2 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

‎common/src/constants/__tests__/freebuff-retired-models.test.ts‎

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,13 +18,14 @@ describe('retired free models', () => {
1818
'minimax/minimax-m3-20260211',
1919
'z-ai/glm-5.2',
2020
'stealth/ox-alpha',
21+
'stealth/ox-alpha-20260820',
22+
'deepseek/deepseek-v4-pro',
2123
])
2224
expect(isFreebuffRetiredModelId(id)).toBe(true)
2325
for (const model of FREEBUFF_MODELS)
2426
expect(isFreebuffRetiredModelId(model.id)).toBe(false)
2527
expect(isFreebuffRetiredModelId('some/unknown-model')).toBe(false)
26-
// Paused but still served through compatibility paths: not retired here.
27-
expect(isFreebuffRetiredModelId('deepseek/deepseek-v4-pro')).toBe(false)
28+
// Paused, but still a paid path on Freebuff's own Luna agents.
2829
expect(isFreebuffRetiredModelId('openai/gpt-5.6-luna')).toBe(false)
2930
expect(isFreebuffRetiredModelId(null)).toBe(false)
3031
})

‎common/src/constants/freebuff-models.ts‎

Lines changed: 23 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -3217,8 +3217,8 @@ export const FREEBUFF_PAUSED_FREE_MODEL_IDS: readonly string[] = [
32173217
// PAUSED rather than deleted, for the reason every entry here gives: those
32183218
// binaries hold the id in their compiled-in catalog and keep sending it. A
32193219
// full-access pick is refused with the non-session-ending withdrawn
3220-
// `model_unavailable`, which names GLM 5.3 Flash (the default) as the
3221-
// replacement; a limited pick is coerced to the limited default.
3220+
// `model_unavailable`, which names the default as the replacement; a
3221+
// limited pick is coerced to the limited default.
32223222
//
32233223
// NOT substituted with GPT-6 Luna, deliberately: GPT-6 Luna was open only
32243224
// to US or paid accounts when this was written (every full-access account
@@ -3410,16 +3410,25 @@ export function freebuffPurchasesPausedAvailabilityLabel(): string {
34103410
* instead of an unknown-model error), in no picker, admitted at no tier. The
34113411
* completions route answers them with `freebuffRetiredModelMessage`
34123412
* (2026-10-01: an old CLI was still running MiniMax M3 on `base2-free`,
3413-
* ~2,300 requests a day, because only session admission refused it).
3414-
*
3415-
* DeepSeek V4 Pro and GPT-5.6 Luna are paused too but NOT here: V4 Pro is
3416-
* still served as V4 Flash to the clients that name it, and GPT-5.6 Luna is
3417-
* shared with paid lite mode. Retiring either is a separate decision.
3413+
* ~2,300 requests a day, because only session admission refused it), and
3414+
* session admission refuses them as withdrawn with
3415+
* `freebuffRetiredModelAvailabilityLabel`. Every id here shipped in released
3416+
* CLI and Desktop catalogs, so the caller is an old build: both answers tell
3417+
* it to update.
3418+
*
3419+
* DeepSeek V4 Pro joined on 2026-10-06: no V4 Pro request had been served as
3420+
* V4 Flash in the week before, so it had no compatibility path left either.
3421+
*
3422+
* GPT-5.6 Luna is paused too but NOT here: paid requests still run it on
3423+
* Freebuff's own Luna agents (`base2-free-luna` in a paid cost mode) and in
3424+
* paid lite mode, and this list refuses an agent bundled for a retired model
3425+
* in every cost mode. Free admission refuses it as withdrawn.
34183426
*/
34193427
export const FREEBUFF_RETIRED_MODEL_IDS: readonly string[] = [
34203428
FREEBUFF_MINIMAX_M3_MODEL_ID,
34213429
FREEBUFF_GLM_V52_MODEL_ID,
34223430
FREEBUFF_OX_ALPHA_MODEL_ID,
3431+
FREEBUFF_DEEPSEEK_V4_PRO_MODEL_ID,
34233432
]
34243433

34253434
export function isFreebuffRetiredModelId(
@@ -3439,6 +3448,13 @@ export function freebuffRetiredModelMessage(id: string): string {
34393448
return `${name} is no longer available in Freebuff. Update to the latest version to keep coding: run \`npm install -g freebuff@latest\` for the CLI, or restart Freebuff Desktop to update it.`
34403449
}
34413450

3451+
/** The same fact shaped to sit inside "<model> isn't available right now (…)",
3452+
* the sentence every released client builds from a `model_unavailable`
3453+
* admission refusal (see `freebuffWithdrawnModelAvailabilityLabel`). */
3454+
export function freebuffRetiredModelAvailabilityLabel(): string {
3455+
return 'retired — update Freebuff to the latest version and pick another model to keep going'
3456+
}
3457+
34423458
/** Suffix-tolerant like the other model predicates, so a dated provider
34433459
* snapshot of a paused model cannot slip past the pause. */
34443460
export function isFreebuffPausedFreeModelId(

0 commit comments

Comments
 (0)