Merge remote-tracking branch 'origin/master' into worktree/subagent-missing-tools-fb2359

This commit is contained in:
Yichen Jiang
2026-08-10 20:32:58 +08:00
222 changed files with 3457 additions and 694 deletions
@@ -2,5 +2,5 @@
# side as of the last confirmed-consistent state. Both languages carry equal authority;
# after editing either side, bring the other along and re-record with:
# pnpm run verify-translation-pairing --write packages/preset/agent-presets/README.md
README.md: 250d2a6560e680aee5d3088834d5db220854d1d4
README.zh.md: bd02327a3cca01bc794d63c8933b61bfa5c1008b
README.md: 632fc7828313a932512cb59a924050005067a008
README.zh.md: 41dfab1af81149a221cb333a5613ab0a2d899899
+1 -1
View File
@@ -73,7 +73,7 @@ A preset may publish display text in an optional `preset.yml` beside its composi
```yaml
name: 极简模式
description: 只向模型呈现 bash 与 str_replace_editor,适合 benchmark 与最小复现。
description: 仅提供 bash 与 str_replace_editor 的双工具编码 Agent,用于基准测试和最小复现。
```
It carries display text ONLY. `id` is the directory name and `trust` comes from the root the preset was discovered under, so neither is writable here — otherwise a locally authored preset could name itself into the shipped set. It is a separate file because the composition is a top-level list of plugin rows: YAML cannot carry sibling keys beside it, and a fake metadata row would hand the Loader something to load.
+1 -1
View File
@@ -73,7 +73,7 @@ preset 可以在组装文件旁的可选 `preset.yml` 里发布展示文本:
```yaml
name: 极简模式
description: 只向模型呈现 bash 与 str_replace_editor,适合 benchmark 与最小复现。
description: 仅提供 bash 与 str_replace_editor 的双工具编码 Agent,用于基准测试和最小复现。
```
它**只**承载展示文本。`id` 是目录名,`trust` 取自 preset 被发现时所在的根目录,两者都不可写在这里——否则本地创作的 preset 就能把自己命名进随附集合。之所以是独立文件:组装是插件行的顶层列表,YAML 无法在其旁携带同级键,而伪造一个元信息行等于递给 Loader 一个要加载的东西。
@@ -105,6 +105,8 @@ async function tightenModes(dir: string): Promise<void> {
if (entry.isDirectory()) {
await tightenModes(target)
} else {
/* v8 ignore next -- Windows mode bits cannot represent POSIX owner-execute state;
* the Windows native gate preserves the DACL while the POSIX suite covers this branch. */
await chmod(target, ((await stat(target)).mode & 0o100) === 0 ? 0o600 : 0o700)
}
}