dsh-gitbash-shell 0.38.4 → 0.38.5
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +10 -0
- package/dsh.plugin.json +1 -1
- package/package.json +1 -1
- package/src/fastctx-bridge.js +22 -1
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,16 @@
|
|
|
3
3
|
> 倒序排列,新版本条目在最上面。条目格式:`## vX.Y.Z — YYYY-MM-DD` + 类型(feat / fix / docs / chore)+ 要点 + 相关链接。
|
|
4
4
|
> 纪律见 AGENTS.md「变更记录纪律」:发版前先更新本文件并随版本提交;事故复盘、复现与真机验证记录也记在这里。
|
|
5
5
|
|
|
6
|
+
## v0.38.5 — 2026-10-13
|
|
7
|
+
|
|
8
|
+
**类型**:fix(用户 27 工具全量冒烟报告的 FastCtx 两项;bash 工具真机验收通过)。
|
|
9
|
+
|
|
10
|
+
- **同轮验收**:用户 Windows 真机全量测试确认 **bash 工具出现且作为唯一命令通道正常工作**(退出码标记、后台任务、job_kill 全过)——v0.35.0 以来「行内补位」五层问题(注入缺失/output 契约/restrict 作用域/asar 解析/fiber 时序/服务授权)全部闭环。
|
|
11
|
+
- **gb_glob 畸形 pattern 由静默放行改为响亮报错**:上游对非字符串 pattern 静默当「全部文件」处理(测试实测:传数组形状的字符串返回全库),桥侧在 `glob`/`replace` 的 execute 里前置校验——pattern 必须非空字符串,否则抛 `pattern must be a non-empty string`。静默错误结果比报错更危险。
|
|
12
|
+
- **忽略规则透明化**:三套「找文件」默认行为各不相同(官方 glob 不忽略任何;gb_grep 尊重 .gitignore 跳 .git;gb_glob 只认裸 .ignore 且 .git 恒可见)——在 gb_glob/gb_grep 的 description 里**如实声明各自规则**,混用时模型不再拿到意外结果集而不知情。
|
|
13
|
+
- 其余发现归属:web_search 402 是 web-search-deepseek 插件的端点余额问题(非本插件);read_image webp 重编码/行尾不对称/wait_agent 下限等为宿主行为,不在本仓库范围。
|
|
14
|
+
- **冒烟**:119 项全绿(新增畸形 pattern 校验与忽略规则断言)。
|
|
15
|
+
|
|
6
16
|
## v0.38.4 — 2026-10-13
|
|
7
17
|
|
|
8
18
|
**类型**:fix(bash 挂载的服务授权 + 折叠分区自绘;两条真机日志驱动)。
|
package/dsh.plugin.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "dsh-external/dsh-gitbash-shell",
|
|
3
|
-
"version": "0.38.
|
|
3
|
+
"version": "0.38.5",
|
|
4
4
|
"main": "./src/index.js",
|
|
5
5
|
"description": "Windows 全模式 Git Bash:用 Git for Windows bash 替换 PowerShell 执行器;官方四个模式经行内工具补位直接获得 Git Bash(v0.35.0,默认),四个 *·Git Bash 变体 preset 可开关;附带 gitbash_pwsh(系统 PowerShell 7)与 gb_* FastCtx 文件工具,检测到 dsh-ops 自动让位。联动:dsh-ptc-cordis-preset(PTC 创造模式带 Git Bash 行且可去重)+ dsh-better-sidebar(终端标签自动切 Git Bash)。",
|
|
6
6
|
"engines": {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "dsh-gitbash-shell",
|
|
3
|
-
"version": "0.38.
|
|
3
|
+
"version": "0.38.5",
|
|
4
4
|
"description": "Windows 上让 agent 的每条 shell 命令改经 Git for Windows bash 执行;物化四个内置预设的 Git Bash 变体,统一 MSYS 盘根路径方言,侧栏终端接管可开关。· Run every agent shell command through Git for Windows bash on Windows; materialize Git Bash variants of the built-in presets, unify the MSYS drive-root path dialect, and adopt the sidebar terminal behind a switch.",
|
|
5
5
|
"type": "module",
|
|
6
6
|
"repository": {
|
package/src/fastctx-bridge.js
CHANGED
|
@@ -323,16 +323,37 @@ export function mountFastctx(ctx, deps) {
|
|
|
323
323
|
for (const tool of wanted) {
|
|
324
324
|
const rawName = String(tool.name)
|
|
325
325
|
const schema = tool.inputSchema && typeof tool.inputSchema === 'object' ? tool.inputSchema : { type: 'object', properties: {} }
|
|
326
|
+
// Ignore-rule transparency (v0.38.5, the field smoke report): the three
|
|
327
|
+
// "find files" surfaces disagree by default — the official glob ignores
|
|
328
|
+
// nothing, gb_grep honors .gitignore and skips .git, while gb_glob only
|
|
329
|
+
// honors a bare .ignore file and keeps .git visible. State it on the
|
|
330
|
+
// tools the model sees, instead of letting mixed usage produce
|
|
331
|
+
// surprising result sets.
|
|
332
|
+
const ignoreNote = rawName === 'glob'
|
|
333
|
+
? '\nIgnore rules: this tool only honors a bare .ignore file and does NOT hide .git — use gb_grep (honors .gitignore) or the official glob when those semantics are wanted.'
|
|
334
|
+
: rawName === 'grep'
|
|
335
|
+
? '\nIgnore rules: this tool honors .gitignore and skips .git — unlike gb_glob (bare .ignore only) and the official glob (ignores nothing).'
|
|
336
|
+
: ''
|
|
326
337
|
try {
|
|
327
338
|
const dispose = registry.register({
|
|
328
339
|
name: gbName(rawName),
|
|
329
|
-
description: `${String(tool.description ?? rawName)}\n${FASTCTX_SANDBOX_NOTE}`,
|
|
340
|
+
description: `${String(tool.description ?? rawName)}\n${FASTCTX_SANDBOX_NOTE}${ignoreNote}`,
|
|
330
341
|
parameters: schema,
|
|
331
342
|
output: {
|
|
332
343
|
schema: TOOL_OUTPUT_SCHEMA,
|
|
333
344
|
render: (_args, value) => renderTextContent(value),
|
|
334
345
|
},
|
|
335
346
|
async execute(args) {
|
|
347
|
+
// Fail LOUD on malformed patterns (v0.38.5, the field smoke
|
|
348
|
+
// report): the upstream server silently treats a non-string
|
|
349
|
+
// pattern as "everything", which turns a typo into a full-tree
|
|
350
|
+
// result set — a silent wrong answer is worse than an error.
|
|
351
|
+
if ((rawName === 'glob' || rawName === 'replace') && args !== null && typeof args === 'object' && 'pattern' in args) {
|
|
352
|
+
const pattern = args.pattern
|
|
353
|
+
if (typeof pattern !== 'string' || pattern.trim() === '') {
|
|
354
|
+
throw new Error(`invalid arguments: ${gbName(rawName)} pattern must be a non-empty string (got ${pattern === null ? 'null' : typeof pattern})`)
|
|
355
|
+
}
|
|
356
|
+
}
|
|
336
357
|
const translated = translateFastctxArgs(args, msysToWin)
|
|
337
358
|
const result = await callWithReconnect(rawName, translated)
|
|
338
359
|
return { content: [{ type: 'text', text: renderFastctxResult(rawName, result, echo) }] }
|