Skip to content

Commit 3795c63

Browse files
Merge upstream main into fix/sdk-list-directory-path-boundary
2 parents cb86793 + 4af54a8 commit 3795c63

136 files changed

Lines changed: 11516 additions & 1366 deletions

File tree

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

.gitignore

Lines changed: 16 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,9 @@
22
.idea/
33
.vercel
44

5+
# Exported user lists (PII) - scripts/export-user-emails.ts
6+
user-emails-*.csv
7+
58
# Environment files (secrets) - Bun loads .env.* files natively
69
.env
710
.env.*
@@ -25,6 +28,9 @@ npm-app/src/__tests__/data/
2528
debug/
2629
.context/
2730
docs/bot-detection.md
31+
# Issue-specific plans/specs belong in Linear, not the repository. Existing
32+
# tracked historical specs remain tracked; this keeps new local artifacts out.
33+
docs/specs/
2834
.codex
2935

3036
# Nx cache directories
@@ -66,3 +72,13 @@ scratch-*
6672

6773
# Ad-hoc investigation scripts — scratch, never committed
6874
scripts/_tmp-*
75+
76+
# Local operator launch manifests contain real advertiser identifiers. The
77+
# checked-in example is intentionally non-routable.
78+
ads-pilot-launch.local.json
79+
80+
# Linked git worktrees created by agent tooling. Each is a full checkout with
81+
# its own .git file, so committing one nests a second working tree inside this
82+
# one — and because a worktree carries its own generated migrations, it also
83+
# drags a DUPLICATE migration index into whichever branch swept it up.
84+
.claude/worktrees/

README.md

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,15 @@ Freebuff includes a curated model catalog. The regular picker currently offers:
3434

3535
| Model | Access | Best for |
3636
| --------------------------- | ----------------------- | ----------------------------------------------------------------- |
37-
| **DeepSeek V4 Flash 07/31** | Full access | The default everywhere in full mode; fast coding and tool use |
38-
| **GPT-5.6 Luna** | Full access | Strong all-around with native images; two sessions a day |
37+
| **GLM 5.3 Flash** | Full access | The default in full mode; deepest reasoning, unmetered |
38+
| **GPT-5.6 Luna** | Full access | Strong all-around with native images |
39+
| **DeepSeek V4 Flash 07/31** | Full access | Fast coding and tool use; pauses during peak hours |
3940
| **MiMo 2.5** | Full and limited access | The limited-mode default; balanced performance with image support |
40-
| **DeepSeek V4 Pro** | Full access | Deepest reasoning; one session a day |
41+
| **Solar Pro 4** | Full access | Limited-time trial; 524K context, text only |
4142

42-
These limits are **temporary**, and they exist because the providers serving DeepSeek now charge more than free mode can carry. V4 Pro is one session a day; GPT-5.6 Luna is two sessions a day; models may serve from a quantized (Q8_0) build. MiMo 2.5 stays unlimited. All of it is intended to be reverted.
43+
Most models draw on your normal daily sessions rather than a separate limit. GLM 5.3 Flash and MiMo 2.5 are unmetered and cost no session at all. Models may still serve from a quantized (Q8_0) build.
44+
45+
DeepSeek V4 Pro was retired from the catalog; GLM 5.3 Flash replaces it as the deep-reasoning pick.
4346

4447
Beyond the regular picker:
4548

README.zh-CN.md

Lines changed: 7 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -34,12 +34,15 @@ Freebuff 提供经过筛选的模型目录。常规模型选择器目前包括
3434

3535
| 模型 | 访问范围 | 适用场景 |
3636
| --------------------------- | -------------- | ------------------------------------------------ |
37-
| **DeepSeek V4 Flash 07/31** | 完整访问 | 完整模式下所有平台的默认模型;快速编程和工具调用 |
38-
| **GPT-5.6 Luna** | 完整访问 | 综合能力强,原生支持图像;每天两次会话 |
37+
| **GLM 5.3 Flash** | 完整访问 | 完整模式下的默认模型;推理最深入,且不消耗会话 |
38+
| **GPT-5.6 Luna** | 完整访问 | 综合能力强,原生支持图像 |
39+
| **DeepSeek V4 Flash 07/31** | 完整访问 | 快速编程和工具调用;高峰时段暂停 |
3940
| **MiMo 2.5** | 完整和受限访问 | 受限模式的默认模型;均衡性能并支持图像 |
40-
| **DeepSeek V4 Pro** | 完整访问 | 推理最深入;每天一次会话 |
41+
| **Solar Pro 4** | 完整访问 | 限时试用;52.4 万上下文,仅支持文本 |
4142

42-
以下限制是**临时**的,原因是为 DeepSeek 提供服务的供应商收费已超出免费模式可承受的范围。V4 Pro 每天一次会话;GPT-5.6 Luna 每天两次会话;模型可能由量化(Q8_0)版本提供服务。MiMo 2.5 保持无限使用。这些调整都计划在之后恢复。
43+
大多数模型使用你的常规每日会话,而不再各自设限。GLM 5.3 Flash 和 MiMo 2.5 保持无限使用,完全不消耗会话。模型仍可能由量化(Q8_0)版本提供服务。
44+
45+
DeepSeek V4 Pro 已从模型目录中下线,由 GLM 5.3 Flash 接替其深度推理的位置。
4346

4447
常规模型选择器之外:
4548

agents/__tests__/base3.test.ts

Lines changed: 12 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,9 +12,12 @@ import base3FreeDeepseekFlash from '../base3-free-deepseek-flash'
1212
import base3FreeDeepseekFlashEvals from '../base3-free-deepseek-flash-evals'
1313
import base3FreeFable from '../base3-free-fable'
1414
import base3FreeGlm from '../base3-free-glm'
15+
import base3FreeGlmV53Flash from '../base3-free-glm-5-3-flash'
1516
import base3FreeLuna from '../base3-free-luna'
1617
import base3FreeMimo from '../base3-free-mimo'
1718
import base3FreeMinimaxM3 from '../base3-free-minimax-m3'
19+
import base3FreeOxAlpha from '../base3-free-ox-alpha'
20+
import base3FreeSolarPro4 from '../base3-free-solar-pro4'
1821
import base3Lite from '../base3-lite'
1922

2023
/**
@@ -44,13 +47,18 @@ const CLI_ROOTS = [
4447
base3FreeMinimaxM3,
4548
base3FreeMimo,
4649
base3FreeGlm,
50+
base3FreeGlmV53Flash,
4751
base3FreeLuna,
4852
base3FreeFable,
53+
base3FreeOxAlpha,
54+
base3FreeSolarPro4,
4955
]
5056

5157
describe('base3 CLI roots', () => {
5258
test('keeps the efficiency flags the runtime reads', () => {
53-
expect(CLI_ROOTS.length).toBe(11)
59+
// 14 since Solar Pro 4 reached the CLI. The count is asserted so a root
60+
// added without the flags below cannot slip in unnoticed.
61+
expect(CLI_ROOTS.length).toBe(14)
5462
for (const agent of CLI_ROOTS) {
5563
// Windowed reads + the 100-entry glob cap + search-first tool wording.
5664
expect(agent.windowedFileReads).toBe(true)
@@ -83,6 +91,9 @@ describe('base3 CLI roots', () => {
8391
// requires a canonical opening at byte 0, so prepending 403s every turn.
8492
for (const agent of CLI_ROOTS) {
8593
expect(hasFreebuffRootSystemPromptOpening(agent.systemPrompt!)).toBe(true)
94+
expect(
95+
agent.systemPrompt!.match(/\{CODEBUFF_GIT_CHANGES_PROMPT\}/g),
96+
).toHaveLength(1)
8697
}
8798
})
8899

agents/base-chat.ts

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -66,6 +66,10 @@ End every response by calling the suggest_followups tool with exactly 3 followup
6666
'meta/muse-spark-1.2-contributor': 1_000_000,
6767
// Ox Alpha: 1,048,576 published, entered low for the same reason.
6868
'stealth/ox-alpha': 1_000_000,
69+
// GLM 5.3 Flash: 1,310,720 published, entered low for the same reason.
70+
'z-ai/glm-5.3-flash': 1_000_000,
71+
// Solar Pro 4: 524,288 published, entered low for the same reason.
72+
'upstage/solar-pro4': 500_000,
6973
}
7074

7175
/** For any model not listed above. Assuming a window is smaller than it is
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import { FREEBUFF_GLM_V53_FLASH_MODEL_ID } from '@codebuff/common/constants/freebuff-models'
2+
3+
import { createBase2 } from './base2'
4+
5+
const definition = {
6+
...createBase2('free', {
7+
model: FREEBUFF_GLM_V53_FLASH_MODEL_ID,
8+
}),
9+
id: 'base2-free-glm-5-3-flash',
10+
displayName: 'Buffy the GLM 5.3 Flash Free Orchestrator',
11+
}
12+
13+
export default definition
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
import { FREEBUFF_SOLAR_PRO_4_MODEL_ID } from '@codebuff/common/constants/freebuff-models'
2+
3+
import { createBase2 } from './base2'
4+
5+
const definition = {
6+
...createBase2('free', {
7+
model: FREEBUFF_SOLAR_PRO_4_MODEL_ID,
8+
}),
9+
id: 'base2-free-solar-pro4',
10+
displayName: 'Buffy the Solar Pro 4 Free Orchestrator',
11+
}
12+
13+
export default definition

agents/base3-free-glm-5-3-flash.ts

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
import { FREEBUFF_GLM_V53_FLASH_MODEL_ID } from '@codebuff/common/constants/freebuff-models'
2+
3+
import { createBase3CliRoot } from './base3'
4+
5+
// No `reasoningOptions`, for the reason spelled out on base3-free-luna: an
6+
// agent-declared reasoning reaches the wire as `body.reasoning`, which makes
7+
// the definition rather than the user the authority on effort. It costs nothing
8+
// here in particular — OpenRouter reports no effort levels for this model, so
9+
// the catalog row declares no ladder and the picker shows no control.
10+
const definition = {
11+
...createBase3CliRoot({
12+
model: FREEBUFF_GLM_V53_FLASH_MODEL_ID,
13+
isFreebuff: true,
14+
}),
15+
id: 'base3-free-glm-5-3-flash',
16+
displayName: 'Buffy on GLM 5.3 Flash',
17+
}
18+
19+
export default definition

agents/base3-free-ox-alpha.ts

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,28 @@
1+
import { FREEBUFF_OX_ALPHA_MODEL_ID } from '@codebuff/common/constants/freebuff-models'
2+
3+
import { createBase3CliRoot } from './base3'
4+
5+
/**
6+
* Buffy on Ox Alpha, for CLI and Desktop (2026-08-24).
7+
*
8+
* No `reasoningOptions`, for the reason spelled out on base3-free-luna: an
9+
* agent-declared reasoning reaches the wire as `body.reasoning` and makes the
10+
* agent the authority on effort, which leaves the user's picker choice unable
11+
* to do anything. That matters more here than on most rows -- this endpoint
12+
* reports `reasoning.mandatory: true` with `default_effort: max`, and `max`
13+
* costs ~4.8x the tokens of `high` for no better answer while being the rung
14+
* most likely to spend the whole budget thinking and return
15+
* `finish_reason: "length"` with null content. The catalog row names `high`
16+
* explicitly and the server fills it in; hard-coding anything here would take
17+
* that away.
18+
*/
19+
const definition = {
20+
...createBase3CliRoot({
21+
model: FREEBUFF_OX_ALPHA_MODEL_ID,
22+
isFreebuff: true,
23+
}),
24+
id: 'base3-free-ox-alpha',
25+
displayName: 'Buffy on Ox Alpha',
26+
}
27+
28+
export default definition

agents/base3-free-solar-pro4.ts

Lines changed: 14 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,14 @@
1+
import { FREEBUFF_SOLAR_PRO_4_MODEL_ID } from '@codebuff/common/constants/freebuff-models'
2+
3+
import { createBase3CliRoot } from './base3'
4+
5+
const definition = {
6+
...createBase3CliRoot({
7+
model: FREEBUFF_SOLAR_PRO_4_MODEL_ID,
8+
isFreebuff: true,
9+
}),
10+
id: 'base3-free-solar-pro4',
11+
displayName: 'Buffy on Solar Pro 4',
12+
}
13+
14+
export default definition

0 commit comments

Comments
 (0)