dsh-gitbash-shell 0.35.3 → 0.37.0
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 +22 -0
- package/dsh.plugin.json +1 -1
- package/package.json +1 -1
- package/src/client.js +188 -109
- package/src/fastctx-bridge.js +1 -1
- package/src/index.js +10 -5
- package/src/inline-tools.js +80 -55
package/CHANGELOG.md
CHANGED
|
@@ -3,6 +3,28 @@
|
|
|
3
3
|
> 倒序排列,新版本条目在最上面。条目格式:`## vX.Y.Z — YYYY-MM-DD` + 类型(feat / fix / docs / chore)+ 要点 + 相关链接。
|
|
4
4
|
> 纪律见 AGENTS.md「变更记录纪律」:发版前先更新本文件并随版本提交;事故复盘、复现与真机验证记录也记在这里。
|
|
5
5
|
|
|
6
|
+
## v0.37.0 — 2026-10-13
|
|
7
|
+
|
|
8
|
+
**类型**:feat(用户拍板的命名与开关重构;真机反馈驱动)。
|
|
9
|
+
|
|
10
|
+
- **`gitbash_pwsh` 更名 `pwsh7`(破坏性:工具名变更)**:旧名读起来像「bash/pwsh 二选一的混合工具」,让人误解(用户真机反馈)。新名 `pwsh7` 语义直白(PowerShell 7),且**绝不占用宿主被污染的 `pwsh` 名**(那个名字的全局工具在本机执行 Git Bash,是假 pwsh,恒定拒绝)。真机已装旧版的会话在新版下自然看到 `pwsh7`。
|
|
11
|
+
- **`pwshTool` 开关默认翻转为 `false`(破坏性:默认值变更)**:默认**不提供**专门的 PowerShell 工具——平时全部走 bash 工具,需要 Windows 原生操作的用户在设置卡自己打开。开关只在 gitbash-shell 一侧行上(ptc 创造模式零参与,装了本插件即自动适配,2026-10-13 拍板)。
|
|
12
|
+
- **pwsh7 的提供方式改为 per-agent scope 注册**(原为全局注册):agent 独立 scope 内注册、随 agent 销毁回收;与 dsh-ops 共存时照旧让位(它的宿主 pwsh 故事优先)。
|
|
13
|
+
- **路由提示词按开关分支**:`pwsh7` 关(默认)时 bash 工具的描述**不再提及任何 PowerShell 工具**(给模型指一条到不了的路只会教它调用被拒的名字);开时才出现「pwsh7 仅用于 Windows 原生能力」的路由句。新增 `GITBASH_ROUTE_ADDENDUM_NO_PWSH` 常量,assemble 处按 `pwshTool()` 现场选择。
|
|
14
|
+
- **调用层守卫保持恒定 deny `pwsh`**:`pwsh7` 是纯加法名字,不会误杀;deny 理由句更新为指路 `pwsh7` 与设置卡开关。
|
|
15
|
+
- **词典**:pwsh.label/pwsh.hint × 21 语言重写(名字 pwsh7、默认关、**必须已安装 PowerShell 7** 的提醒与下载地址);工具 description 与错误消息同步更名。
|
|
16
|
+
- **冒烟**:117 项全绿;路由句测试加「OFF 变体不得出现 pwsh7 字样」与「 misleading 名绝迹」断言。
|
|
17
|
+
- **待真机复验**:bash 工具补位仍未在标准模式出现(v0.35.3 观察)——`activateOfficialBash` 链路失败必有日志行("not resolvable"/"import failed"/"activation failed"),等宿主日志定位;与本版无耦合。
|
|
18
|
+
|
|
19
|
+
## v0.36.0 — 2026-10-13
|
|
20
|
+
|
|
21
|
+
**类型**:feat(设置卡分组重排;用户反馈「一排按钮不知道分类」)。
|
|
22
|
+
|
|
23
|
+
- **七分区语义分组**:此前 9 个开关一锅炖在「路径方言」分区里(方言、终端接管、Git 行尾、bash 路径混排),行内工具区连标题都没有。重排为按功能域的七个分区,显示顺序即用户决策顺序:**模式**(变体开关)→ **行内工具**(gitbash_pwsh、gb_*——补上标题)→ **路径方言**(瘦身,纯翻译层 6 开关)→ **执行器**(新分区:Git 行尾 + Git Bash 路径——找「为什么 diff 飘红」或填 bash 路径不用再滚过六个翻译开关)→ **终端**(新建终端接管 + 侧栏接管)→ **终端工具**(win32 工具链,原样)→ **插件联动**(新合并分区:去重开关 + python 后端两个席位一个标题)。
|
|
24
|
+
- **词典**:新增 `sec.inline`/`sec.executor`/`sec.peer` × 21 语言;`sec.terminal` 文案从「侧栏终端」改为「终端」(该分区现在装的是两个终端接管开关)。合计 21 门逐键对齐(冒烟键集断言全过)。
|
|
25
|
+
- **冒烟**:117 项(116 过 + 1 跳)。新增「client card: the body groups switches into seven labelled sections」——锁七分区定义齐全、body 挂载顺序、方言区不再吞执行器/终端行、行内工具区有标题。
|
|
26
|
+
- 功能面零变化:所有开关的字段名、写入通道(configForms)、默认值全部原样,纯布局重组。
|
|
27
|
+
|
|
6
28
|
## v0.35.3 — 2026-10-12
|
|
7
29
|
|
|
8
30
|
**类型**:fix(issue [#18](https://github.com/KannaKuron/dsh-gitbash-shell/issues/18) 三个独立根因;Windows 真机 v0.35.0 四面全灭)。
|
package/dsh.plugin.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"id": "dsh-external/dsh-gitbash-shell",
|
|
3
|
-
"version": "0.
|
|
3
|
+
"version": "0.37.0",
|
|
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.
|
|
3
|
+
"version": "0.37.0",
|
|
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/client.js
CHANGED
|
@@ -76,8 +76,11 @@ window.__ModuleLoader__.load({
|
|
|
76
76
|
"switch.off": "停用",
|
|
77
77
|
"error": "写入失败",
|
|
78
78
|
"hint": "启用后:所有工具(bash 命令与 workdir、read/write/edit/read_image/glob/grep 与 present 的路径参数)统一使用 MSYS 盘根 POSIX 路径(/c/Users/...);bash 的原生习惯——~ 家目录、/tmp 临时目录、/dev/null、/usr 等——在所有工具中同样有效(与 Git Bash 挂载表一致),路径参数由宿主自动翻译,模型无感。停用后恢复 dsh 原生行为(文件工具用 Windows 路径)。bash 始终是 Git Bash,不受此开关影响。",
|
|
79
|
+
"sec.inline": "行内工具",
|
|
80
|
+
"sec.executor": "执行器",
|
|
81
|
+
"sec.peer": "插件联动",
|
|
79
82
|
"sec.dialect": "路径方言",
|
|
80
|
-
"sec.terminal": "
|
|
83
|
+
"sec.terminal": "终端",
|
|
81
84
|
"mnts.label": "虚拟路径挂载",
|
|
82
85
|
"mnts.hint": "bash 的原生路径习惯——~ 家目录、/tmp、/usr 等——按 Git Bash 挂载表在所有工具解析;关闭则仅 /c/ 盘根形式。",
|
|
83
86
|
"errs.label": "报错路径翻译",
|
|
@@ -134,8 +137,8 @@ window.__ModuleLoader__.load({
|
|
|
134
137
|
"tools.updating": "更新中…",
|
|
135
138
|
"variant.label": "四个「·Git Bash」变体模式",
|
|
136
139
|
"variant.hint": "默认关闭:官方四个模式经行内工具补位直接获得 Git Bash,模式列表保持官方原样。开启后注册四个变体(standard/minimal/ptc/cordis · Git Bash)并停用官方模式的工具补位——两者互斥。钉在变体 id 上的旧会话在关闭升级后需重新选择模式;变更对新会话生效。",
|
|
137
|
-
"pwsh.label": "PowerShell 7 工具(
|
|
138
|
-
"pwsh.hint": "
|
|
140
|
+
"pwsh.label": "PowerShell 7 工具(pwsh7)",
|
|
141
|
+
"pwsh.hint": "默认关闭:开启后本插件在会话里提供真正的 pwsh7 工具,用系统安装的 PowerShell 7 执行 Windows 原生操作(注册表/服务/WMI),仅完全权限会话可用。前提:机器上已安装 PowerShell 7(https://aka.ms/powershell),没装则工具不会出现。宿主自带的 pwsh 工具在本机实际执行 Git Bash(名字是假的),无论开关一律拒绝——命令一律走 bash 工具。",
|
|
139
142
|
"fctx.label": "FastCtx 文件工具(gb_*)",
|
|
140
143
|
"fctx.hint": "默认开启:发布 gb_inspect_local_file / gb_grep / gb_glob / gb_replace(Rust 实现:批量读取带 token 预算、编码探测)。它们是官方 read/grep/glob/edit 的补充——官方工具接文件沙箱,仍是默认推荐;检测到 dsh-ops(ops_* 工具)时本组自动让位。",
|
|
141
144
|
};
|
|
@@ -150,8 +153,11 @@ window.__ModuleLoader__.load({
|
|
|
150
153
|
"switch.off": "Disable",
|
|
151
154
|
"error": "write failed",
|
|
152
155
|
"hint": "Enabled: every tool (bash commands and workdir, read/write/edit/read_image/glob/grep and present path arguments) uses MSYS drive-root POSIX paths (/c/Users/...); bash-native habits — the ~ home shorthand, /tmp, /dev/null, /usr — resolve in every tool exactly as bash itself resolves them, and the host translates the path fields automatically. Disabled restores dsh-native behavior (Windows paths for file tools). Bash is always Git Bash while the plugin is installed; this switch only governs the cross-tool path dialect.",
|
|
156
|
+
"sec.inline": "Inline tools",
|
|
157
|
+
"sec.executor": "Executor",
|
|
158
|
+
"sec.peer": "Plugin integrations",
|
|
153
159
|
"sec.dialect": "Path dialect",
|
|
154
|
-
"sec.terminal": "
|
|
160
|
+
"sec.terminal": "Terminal",
|
|
155
161
|
"mnts.label": "Virtual path mounts",
|
|
156
162
|
"mnts.hint": "Bash-native habits — ~ home, /tmp, /usr — resolve through the Git Bash mount table in every tool; off = /c/ drive roots only.",
|
|
157
163
|
"errs.label": "Error-path translation",
|
|
@@ -208,8 +214,8 @@ window.__ModuleLoader__.load({
|
|
|
208
214
|
"tools.updating": "Updating…",
|
|
209
215
|
"variant.label": "The four \"· Git Bash\" variant presets",
|
|
210
216
|
"variant.hint": "Off by default: the four OFFICIAL presets get Git Bash through the inline tool patch and the roster stays official. On: register the four variants (standard/minimal/ptc/cordis · Git Bash) and stop patching the official presets — the two are exclusive. A session pinned to a variant id must re-select a preset after upgrading with the switch off. Applies to new sessions.",
|
|
211
|
-
"pwsh.label": "PowerShell 7 tool (
|
|
212
|
-
"pwsh.hint": "
|
|
217
|
+
"pwsh.label": "PowerShell 7 tool (pwsh7)",
|
|
218
|
+
"pwsh.hint": "Off by default: when on, this plugin provides a REAL pwsh7 tool over the system-installed PowerShell 7 for Windows-native work (registry/services/WMI), danger-full-access sessions only. Requires PowerShell 7 installed (https://aka.ms/powershell) — without it the tool never appears. The host's own pwsh tool actually runs Git Bash on this machine (a lying name) and is denied regardless of this switch — route commands through the bash tool.",
|
|
213
219
|
"fctx.label": "FastCtx file tools (gb_*)",
|
|
214
220
|
"fctx.hint": "On by default: publishes gb_inspect_local_file / gb_grep / gb_glob / gb_replace (Rust: batched reads with a token budget, encoding detection). ADDITIONS to the official read/grep/glob/edit — the official tools keep the file sandbox and stay the default. Stands down automatically when dsh-ops is installed.",
|
|
215
221
|
};
|
|
@@ -234,8 +240,11 @@ window.__ModuleLoader__.load({
|
|
|
234
240
|
"switch.off": "تعطيل",
|
|
235
241
|
"error": "فشل الكتابة",
|
|
236
242
|
"hint": "عند التفعيل: تستخدم كل الأدوات (أوامر bash و workdir، ومعاملات المسار في read/write/edit/read_image/glob/grep و present) مسارات POSIX من جذر قرص MSYS (/c/Users/...)؛ وعادات bash الأصلية — ~ للمجلد الرئيسي و /tmp و /dev/null و /usr — تعمل في كل أداة تمامًا كما تحلّها bash نفسها، ويتولّى المضيف ترجمة حقول المسار تلقائيًا. عند التعطيل يعود السلوك الأصلي لـ dsh (مسارات Windows لأدوات الملفات). يبقى bash دائمًا Git Bash ما دامت الإضافة مثبَّتة؛ هذا المفتاح لا يحكم سوى لهجة المسارات بين الأدوات.",
|
|
243
|
+
"sec.inline": "الأدوات المضمنة",
|
|
244
|
+
"sec.executor": "المنفّذ",
|
|
245
|
+
"sec.peer": "تكامل الإضافات",
|
|
237
246
|
"sec.dialect": "لهجة المسارات",
|
|
238
|
-
"sec.terminal": "
|
|
247
|
+
"sec.terminal": "الطرفية",
|
|
239
248
|
"mnts.label": "التركيبات الافتراضية للمسارات",
|
|
240
249
|
"mnts.hint": "عادات bash الأصلية — ~ و /tmp و /usr — تُحل عبر جدول تحميلات Git Bash في كل أداة؛ الإيقاف يعني جذور الأقراص /c/ فقط.",
|
|
241
250
|
"errs.label": "ترجمة مسارات الأخطاء",
|
|
@@ -292,8 +301,8 @@ window.__ModuleLoader__.load({
|
|
|
292
301
|
"tools.updating": "جارٍ الترقية…",
|
|
293
302
|
"variant.label": "الأنماط الأربعة «· Git Bash»",
|
|
294
303
|
"variant.hint": "معطَّل افتراضيًا: تحصل الأنماط الرسمية الأربعة على Git Bash عبر ترقيع الأدوات داخل العملية وتبقى القائمة رسمية. عند التفعيل تُسجَّل الأنماط الأربعة المتغيّرة وتتوقف ترقيع الأنماط الرسمية — الاثنان حصريان متباددان. الجلسة المثبَّتة على معرّف متغيّر تحتاج إعادة اختيار بعد الترقية مع بقاء المفتاح معطَّلًا.",
|
|
295
|
-
"pwsh.label": "أداة PowerShell 7 (
|
|
296
|
-
"pwsh.hint": "
|
|
304
|
+
"pwsh.label": "أداة PowerShell 7 (pwsh7)",
|
|
305
|
+
"pwsh.hint": "مُعطَّلة افتراضيًا: عند التفعيل توفر هذه الإضافة أداة pwsh7 حقيقية عبر PowerShell 7 المثبَّت على النظام لأعمال Windows الأصلية (السجل/الخدمات/WMI)، وللجلسات كاملة الصلاحيات فقط. تتطلب تثبيت PowerShell 7 (https://aka.ms/powershell) — بدونها لن تظهر الأداة. أداة pwsh الرسمية تشغّل Git Bash فعليًا على هذا الجهاز (اسم كاذب) وتُرفض بغض النظر عن هذا المفتاح — مرّر الأوامر عبر أداة bash.",
|
|
297
306
|
"fctx.label": "أدوات ملفات FastCtx (gb_*)",
|
|
298
307
|
"fctx.hint": "مُفعَّلة افتراضيًا: تنشر gb_inspect_local_file / gb_grep / gb_glob / gb_replace (Rust: قراءات دفعية بميزانية رموز وكشف ترميز). إضافة إلى read/grep/glob/edit الرسمية التي تحتفظ بصندوق الرمل وتبقى الافتراض؛ تتوقف تلقائيًا عند تثبيت dsh-ops.",
|
|
299
308
|
},
|
|
@@ -308,8 +317,11 @@ window.__ModuleLoader__.load({
|
|
|
308
317
|
"switch.off": "Deaktivieren",
|
|
309
318
|
"error": "Schreiben fehlgeschlagen",
|
|
310
319
|
"hint": "Aktiviert: Alle Tools (bash-Befehle und workdir sowie Pfadargumente von read/write/edit/read_image/glob/grep und present) verwenden POSIX-Pfade ab der MSYS-Laufwerkswurzel (/c/Users/...); bash-eigene Gewohnheiten — ~ für das Home-Verzeichnis, /tmp, /dev/null, /usr — funktionieren in jedem Tool genau so, wie bash sie selbst auflöst, und der Host übersetzt die Pfadfelder automatisch. Deaktiviert stellt das dsh-native Verhalten wieder her (Windows-Pfade für Dateitools). Bash ist bei installiertem Plugin immer Git Bash; dieser Schalter steuert nur den Pfaddialekt zwischen den Tools.",
|
|
320
|
+
"sec.inline": "Inline-Werkzeuge",
|
|
321
|
+
"sec.executor": "Executor",
|
|
322
|
+
"sec.peer": "Plugin-Integrationen",
|
|
311
323
|
"sec.dialect": "Pfaddialekt",
|
|
312
|
-
"sec.terminal": "
|
|
324
|
+
"sec.terminal": "Terminal",
|
|
313
325
|
"mnts.label": "Virtuelle Pfad-Mounts",
|
|
314
326
|
"mnts.hint": "Bash-eigene Gewohnheiten — ~ Home, /tmp, /usr — werden über die Git-Bash-Mount-Tabelle in jedem Tool aufgelöst; aus = nur /c/-Laufwerkswurzeln.",
|
|
315
327
|
"errs.label": "Fehlerpfad-Übersetzung",
|
|
@@ -366,8 +378,8 @@ window.__ModuleLoader__.load({
|
|
|
366
378
|
"tools.updating": "Wird aktualisiert…",
|
|
367
379
|
"variant.label": "Die vier „· Git Bash“-Varianten",
|
|
368
380
|
"variant.hint": "Standardmäßig aus: Die vier OFFIZIELLEN Presets bekommen Git Bash durch den Inline-Tool-Patch, die Liste bleibt offiziell. Ein: Registriert die vier Varianten und stoppt das Patchen der offiziellen Presets — beides schließt sich aus. Eine am Varianten-Id festhängende Sitzung muss nach dem Upgrade neu wählen. Gilt für neue Sitzungen.",
|
|
369
|
-
"pwsh.label": "PowerShell-7-Werkzeug (
|
|
370
|
-
"pwsh.hint": "Standardmäßig
|
|
381
|
+
"pwsh.label": "PowerShell-7-Werkzeug (pwsh7)",
|
|
382
|
+
"pwsh.hint": "Standardmäßig aus: Beim Einschalten stellt dieses Plugin ein ECHTES pwsh7-Werkzeug über das installierte PowerShell 7 bereit (Windows-natives Arbeiten: Registry/Dienste/WMI), nur mit voller Berechtigung. Erfordert installiertes PowerShell 7 (https://aka.ms/powershell) — ohne es erscheint das Werkzeug nie. Das pwsh-Werkzeug des Hosts läuft hier tatsächlich als Git Bash (täuschender Name) und wird unabhängig von diesem Schalter abgelehnt — Befehle laufen über das bash-Werkzeug.",
|
|
371
383
|
"fctx.label": "FastCtx-Dateiwerkzeuge (gb_*)",
|
|
372
384
|
"fctx.hint": "Standardmäßig ein: Veröffentlicht gb_inspect_local_file / gb_grep / gb_glob / gb_replace (Rust: stapelweise Lesevorgänge mit Token-Budget, Kodierungserkennung). ERGÄNZUNGEN zu read/grep/glob/edit — die offiziellen Werkzeuge behalten die Datei-Sandbox und bleiben Standard. Weicht automatisch zurück, wenn dsh-ops installiert ist.",
|
|
373
385
|
},
|
|
@@ -382,8 +394,11 @@ window.__ModuleLoader__.load({
|
|
|
382
394
|
"switch.off": "Désactiver",
|
|
383
395
|
"error": "échec de l'écriture",
|
|
384
396
|
"hint": "Activé : tous les outils (commandes bash et workdir, arguments de chemin de read/write/edit/read_image/glob/grep et de present) utilisent des chemins POSIX à racine de lecteur MSYS (/c/Users/...) ; les habitudes natives de bash — ~ pour le dossier personnel, /tmp, /dev/null, /usr — fonctionnent dans chaque outil exactement comme bash les résout lui-même, et l'hôte traduit les champs de chemin automatiquement. Désactivé rétablit le comportement natif de dsh (chemins Windows pour les outils de fichiers). Bash reste toujours Git Bash tant que le plugin est installé ; ce commutateur ne régit que le dialecte de chemins entre outils.",
|
|
397
|
+
"sec.inline": "Outils en ligne",
|
|
398
|
+
"sec.executor": "Exécuteur",
|
|
399
|
+
"sec.peer": "Intégrations de plugins",
|
|
385
400
|
"sec.dialect": "Dialecte de chemins",
|
|
386
|
-
"sec.terminal": "Terminal
|
|
401
|
+
"sec.terminal": "Terminal",
|
|
387
402
|
"mnts.label": "Montages de chemins virtuels",
|
|
388
403
|
"mnts.hint": "Les habitudes natives de bash — ~ home, /tmp, /usr — se résolvent via la table de montages de Git Bash dans chaque outil ; désactivé = racines /c/ uniquement.",
|
|
389
404
|
"errs.label": "Traduction des chemins d'erreur",
|
|
@@ -440,8 +455,8 @@ window.__ModuleLoader__.load({
|
|
|
440
455
|
"tools.updating": "Mise à jour…",
|
|
441
456
|
"variant.label": "Les quatre variantes « · Git Bash »",
|
|
442
457
|
"variant.hint": "Désactivé par défaut : les quatre presets OFFICIELS obtiennent Git Bash via le correctif d’outils en ligne et la liste reste officielle. Activé : enregistre les quatre variantes et cesse de corriger les presets officiels — les deux s’excluent. Une session attachée à un id de variante doit être rechoisie après mise à niveau. S’applique aux nouvelles sessions.",
|
|
443
|
-
"pwsh.label": "Outil PowerShell 7 (
|
|
444
|
-
"pwsh.hint": "
|
|
458
|
+
"pwsh.label": "Outil PowerShell 7 (pwsh7)",
|
|
459
|
+
"pwsh.hint": "Désactivé par défaut : activé, ce plugin fournit un VRAI outil pwsh7 via le PowerShell 7 installé sur le système pour le travail Windows natif (registre/services/WMI), sessions en accès complet uniquement. Nécessite PowerShell 7 installé (https://aka.ms/powershell) — sans lui l'outil n'apparaît jamais. L'outil pwsh de l'hôte exécute en réalité Git Bash sur cette machine (nom trompeur) et est refusé quel que soit ce commutateur — passez par l'outil bash.",
|
|
445
460
|
"fctx.label": "Outils de fichiers FastCtx (gb_*)",
|
|
446
461
|
"fctx.hint": "Activé par défaut : publie gb_inspect_local_file / gb_grep / gb_glob / gb_replace (Rust : lectures par lots avec budget de tokens, détection d’encodage). COMPLÉMENTS aux outils officiels read/grep/glob/edit — ceux-ci conservent le bac à sable fichiers et restent la valeur par défaut. Se retire automatiquement si dsh-ops est installé.",
|
|
447
462
|
},
|
|
@@ -456,8 +471,11 @@ window.__ModuleLoader__.load({
|
|
|
456
471
|
"switch.off": "अक्षम करें",
|
|
457
472
|
"error": "लिखना विफल रहा",
|
|
458
473
|
"hint": "सक्षम होने पर: सभी टूल (bash कमांड और workdir, तथा read/write/edit/read_image/glob/grep और present के पथ तर्क) MSYS ड्राइव-रूट POSIX पथ (/c/Users/...) का उपयोग करते हैं; bash की मूल आदतें — होम के लिए ~, /tmp, /dev/null, /usr — हर टूल में ठीक वैसे काम करती हैं जैसे bash स्वयं उन्हें हल करता है, और होस्ट पथ फ़ील्ड स्वतः अनुवादित करता है। अक्षम करने पर dsh का मूल व्यवहार बहाल होता है (फ़ाइल टूल के लिए Windows पथ)। जब तक प्लगइन इंस्टॉल है bash हमेशा Git Bash रहता है; यह स्विच केवल टूल के बीच पथ शैली नियंत्रित करता है।",
|
|
474
|
+
"sec.inline": "इनलाइन टूल्स",
|
|
475
|
+
"sec.executor": "एक्ज़ीक्यूटर",
|
|
476
|
+
"sec.peer": "प्लगइन एकीकरण",
|
|
459
477
|
"sec.dialect": "पथ बोली",
|
|
460
|
-
"sec.terminal": "
|
|
478
|
+
"sec.terminal": "टर्मिनल",
|
|
461
479
|
"mnts.label": "वर्चुअल पथ माउंट",
|
|
462
480
|
"mnts.hint": "bash की मूल आदतें — ~ होम, /tmp, /usr — हर टूल में Git Bash माउंट तालिका से हल होती हैं; बंद = केवल /c/ ड्राइव-रूट।",
|
|
463
481
|
"errs.label": "त्रुटि-पथ अनुवाद",
|
|
@@ -514,8 +532,8 @@ window.__ModuleLoader__.load({
|
|
|
514
532
|
"tools.updating": "अपडेट हो रहा है…",
|
|
515
533
|
"variant.label": "चार «· Git Bash» वेरिएंट प्रीसेट",
|
|
516
534
|
"variant.hint": "डिफ़ॉल्ट रूप से बंद: चार आधिकारिक प्रीसेट को इनलाइन टूल पैच से Git Bash मिलता है और सूची आधिकारिक रहती है। चालू: चार वेरिएंट पंजीकृत होते हैं और आधिकारिक प्रीसेट पैचिंग रुक जाती है — दोनों परस्पर अनन्य हैं। वेरिएंट id पर बंधे सत्र को अपग्रेड के बाद दोबारा चुनना पड़ेगा। नए सत्रों पर लागू।",
|
|
517
|
-
"pwsh.label": "PowerShell 7
|
|
518
|
-
"pwsh.hint": "डिफ़ॉल्ट रूप से
|
|
535
|
+
"pwsh.label": "PowerShell 7 टूल (pwsh7)",
|
|
536
|
+
"pwsh.hint": "डिफ़ॉल्ट रूप से बंद: चालू करने पर यह प्लगइन सिस्टम-इंस्टॉल्ड PowerShell 7 पर एक असली pwsh7 टूल देता है (Windows-नेटिव काम: रजिस्ट्री/सेवाएँ/WMI), केवल पूर्ण-अनुमति सत्रों के लिए। PowerShell 7 इंस्टॉल होना ज़रूरी है (https://aka.ms/powershell) — बिना इसके टूल कभी नहीं दिखेगा। होस्ट का pwsh टूल इस मशीन पर असल में Git Bash चलाता है (झूठा नाम) और इस स्विच से इतर हमेशा अस्वीकृत रहता है — कमांड bash टूल से चलाएँ।",
|
|
519
537
|
"fctx.label": "FastCtx फ़ाइल उपकरण (gb_*)",
|
|
520
538
|
"fctx.hint": "डिफ़ॉल्ट रूप से चालू: gb_inspect_local_file / gb_grep / gb_glob / gb_replace प्रकाशित करता है (Rust: टोकन बजट के साथ बैच रीड, एनकोडिंग पहचान)। आधिकारिक read/grep/glob/edit के अतिरिक्त — आधिकारिक उपकरण फ़ाइल सैंडबॉक्स रखते हैं और डिफ़ॉल्ट बने रहते हैं। dsh-ops इंस्टॉल होने पर स्वतः पीछे हट जाता है।",
|
|
521
539
|
},
|
|
@@ -530,8 +548,11 @@ window.__ModuleLoader__.load({
|
|
|
530
548
|
"switch.off": "Nonaktifkan",
|
|
531
549
|
"error": "gagal menulis",
|
|
532
550
|
"hint": "Saat aktif: semua alat (perintah bash dan workdir, serta argumen path read/write/edit/read_image/glob/grep dan present) memakai path POSIX berakar drive MSYS (/c/Users/...); kebiasaan asli bash — ~ untuk direktori home, /tmp, /dev/null, /usr — bekerja di setiap alat persis seperti bash sendiri menyelesaikannya, dan host menerjemahkan bidang path secara otomatis. Saat nonaktif, perilaku asli dsh dipulihkan (path Windows untuk alat berkas). Bash selalu Git Bash selama plugin terpasang; sakelar ini hanya mengatur dialek path antaralat.",
|
|
551
|
+
"sec.inline": "Alat inline",
|
|
552
|
+
"sec.executor": "Eksekutor",
|
|
553
|
+
"sec.peer": "Integrasi plugin",
|
|
533
554
|
"sec.dialect": "Dialek path",
|
|
534
|
-
"sec.terminal": "Terminal
|
|
555
|
+
"sec.terminal": "Terminal",
|
|
535
556
|
"mnts.label": "Mount path virtual",
|
|
536
557
|
"mnts.hint": "Kebiasaan asli bash — ~ home, /tmp, /usr — diselesaikan lewat tabel mount Git Bash di setiap alat; nonaktif = hanya akar drive /c/.",
|
|
537
558
|
"errs.label": "Terjemahan path error",
|
|
@@ -588,8 +609,8 @@ window.__ModuleLoader__.load({
|
|
|
588
609
|
"tools.updating": "Memperbarui…",
|
|
589
610
|
"variant.label": "Empat preset varian «· Git Bash»",
|
|
590
611
|
"variant.hint": "Nonaktif secara bawaan: empat preset RESMI mendapat Git Bash melalui patch alat inline dan daftar tetap resmi. Aktif: mendaftarkan empat varian dan berhenti mem-patch preset resmi — keduanya saling eksklusif. Sesi yang terikat pada id varian harus memilih ulang setelah peningkatan. Berlaku untuk sesi baru.",
|
|
591
|
-
"pwsh.label": "Alat PowerShell 7 (
|
|
592
|
-
"pwsh.hint": "
|
|
612
|
+
"pwsh.label": "Alat PowerShell 7 (pwsh7)",
|
|
613
|
+
"pwsh.hint": "Nonaktif secara default: saat aktif, plugin ini menyediakan alat pwsh7 ASLI melalui PowerShell 7 yang terinstal di sistem untuk kerja native Windows (registry/layanan/WMI), hanya untuk sesi akses penuh. Butuh PowerShell 7 terinstal (https://aka.ms/powershell) — tanpanya alat tak akan muncul. Alat pwsh bawaan host sebenarnya menjalankan Git Bash di mesin ini (nama palsu) dan ditolak apa pun status sakelar ini — jalankan perintah lewat alat bash.",
|
|
593
614
|
"fctx.label": "Alat berkas FastCtx (gb_*)",
|
|
594
615
|
"fctx.hint": "Aktif secara bawaan: menerbitkan gb_inspect_local_file / gb_grep / gb_glob / gb_replace (Rust: pembacaan batch dengan anggaran token, deteksi enkode). TAMBAHAN untuk read/grep/glob/edit resmi — alat resmi tetap memiliki sandbox berkas dan menjadi bawaan. Mundur otomatis saat dsh-ops terinstal.",
|
|
595
616
|
},
|
|
@@ -604,8 +625,11 @@ window.__ModuleLoader__.load({
|
|
|
604
625
|
"switch.off": "Disattiva",
|
|
605
626
|
"error": "scrittura non riuscita",
|
|
606
627
|
"hint": "Attivato: tutti gli strumenti (comandi bash e workdir, argomenti di percorso di read/write/edit/read_image/glob/grep e di present) usano percorsi POSIX con radice di unità MSYS (/c/Users/...); le abitudini native di bash — ~ per la home, /tmp, /dev/null, /usr — funzionano in ogni strumento esattamente come le risolve bash stesso, e l'host traduce automaticamente i campi di percorso. Disattivato ripristina il comportamento nativo di dsh (percorsi Windows per gli strumenti per i file). Bash resta sempre Git Bash finché il plugin è installato; questo interruttore governa solo il dialetto dei percorsi tra gli strumenti.",
|
|
628
|
+
"sec.inline": "Strumenti inline",
|
|
629
|
+
"sec.executor": "Esecutore",
|
|
630
|
+
"sec.peer": "Integrazioni plugin",
|
|
607
631
|
"sec.dialect": "Dialetto dei percorsi",
|
|
608
|
-
"sec.terminal": "Terminale
|
|
632
|
+
"sec.terminal": "Terminale",
|
|
609
633
|
"mnts.label": "Mount di percorsi virtuali",
|
|
610
634
|
"mnts.hint": "Le abitudini native di bash — ~ home, /tmp, /usr — si risolvono tramite la tabella di mount di Git Bash in ogni strumento; off = solo radici /c/.",
|
|
611
635
|
"errs.label": "Traduzione dei percorsi d'errore",
|
|
@@ -662,8 +686,8 @@ window.__ModuleLoader__.load({
|
|
|
662
686
|
"tools.updating": "Aggiornamento…",
|
|
663
687
|
"variant.label": "Le quattro varianti «· Git Bash»",
|
|
664
688
|
"variant.hint": "Disattivo per impostazione predefinita: i quattro preset UFFICIALI ottengono Git Bash tramite la patch inline degli strumenti e l’elenco resta ufficiale. Attivo: registra le quattro varianti e smette di correggere i preset ufficiali — i due si escludono. Una sessione legata a un id di variante va riscelta dopo l’aggiornamento. Vale per le nuove sessioni.",
|
|
665
|
-
"pwsh.label": "Strumento PowerShell 7 (
|
|
666
|
-
"pwsh.hint": "
|
|
689
|
+
"pwsh.label": "Strumento PowerShell 7 (pwsh7)",
|
|
690
|
+
"pwsh.hint": "Disattivo per impostazione predefinita: quando attivo, questo plugin fornisce un VERO strumento pwsh7 tramite il PowerShell 7 installato sul sistema per lavoro Windows nativo (registro/servizi/WMI), solo sessioni con accesso completo. Richiede PowerShell 7 installato (https://aka.ms/powershell) — senza di esso lo strumento non appare mai. Lo strumento pwsh dell'host esegue in realtà Git Bash su questa macchina (nome ingannevole) e viene rifiutato a prescindere da questo interruttore — instrada i comandi tramite lo strumento bash.",
|
|
667
691
|
"fctx.label": "Strumenti file FastCtx (gb_*)",
|
|
668
692
|
"fctx.hint": "Attivo per impostazione predefinita: pubblica gb_inspect_local_file / gb_grep / gb_glob / gb_replace (Rust: letture in batch con budget di token, rilevamento della codifica). AGGIUNTE ai read/grep/glob/edit ufficiali — quelli ufficiali mantengono la sandbox dei file e restano la scelta predefinita. Si ritira automaticamente con dsh-ops installato.",
|
|
669
693
|
},
|
|
@@ -678,8 +702,11 @@ window.__ModuleLoader__.load({
|
|
|
678
702
|
"switch.off": "無効にする",
|
|
679
703
|
"error": "書き込みに失敗しました",
|
|
680
704
|
"hint": "有効にすると、すべてのツール(bash コマンドと workdir、read/write/edit/read_image/glob/grep と present のパス引数)が MSYS ドライブルートの POSIX パス(/c/Users/...)を使います。bash のネイティブな習慣——ホームの ~、/tmp、/dev/null、/usr——も、bash 自身が解決するのとまったく同じようにすべてのツールで動作し、パスフィールドはホストが自動的に変換します。無効にすると dsh 本来の動作(ファイルツールは Windows パス)に戻ります。bash はプラグインがインストールされている限り常に Git Bash で、このスイッチの影響を受けません。",
|
|
705
|
+
"sec.inline": "インラインツール",
|
|
706
|
+
"sec.executor": "実行エンジン",
|
|
707
|
+
"sec.peer": "プラグイン連携",
|
|
681
708
|
"sec.dialect": "パス方言",
|
|
682
|
-
"sec.terminal": "
|
|
709
|
+
"sec.terminal": "端末",
|
|
683
710
|
"mnts.label": "仮想パスマウント",
|
|
684
711
|
"mnts.hint": "bash 固有の習慣——~ ホーム、/tmp、/usr——は Git Bash のマウントテーブルで全ツールに解決;オフなら /c/ ドライブルートのみ。",
|
|
685
712
|
"errs.label": "エラーパス翻訳",
|
|
@@ -736,8 +763,8 @@ window.__ModuleLoader__.load({
|
|
|
736
763
|
"tools.updating": "更新中…",
|
|
737
764
|
"variant.label": "4 つの「· Git Bash」バリアント",
|
|
738
765
|
"variant.hint": "既定はオフ:公式 4 プリセットはインラインツールパッチで Git Bash を得られ、一覧は公式のまま。オンにすると 4 バリアントを登録し、公式プリセットへのパッチを停止(両者は排他)。バリアント id に固定されたセッションはアップグレード後に再選択が必要。新規セッションに適用。",
|
|
739
|
-
"pwsh.label": "PowerShell 7 ツール(
|
|
740
|
-
"pwsh.hint": "
|
|
766
|
+
"pwsh.label": "PowerShell 7 ツール(pwsh7)",
|
|
767
|
+
"pwsh.hint": "既定はオフ:オンにすると、システムにインストールされた PowerShell 7 で本物の pwsh7 ツールを提供します(レジストリ/サービス/WMI など Windows ネイティブ作業用)。完全権限セッションのみ。PowerShell 7 のインストールが必要です(https://aka.ms/powershell)— 未インストールではツールは出現しません。ホスト純正の pwsh ツールはこのマシンでは実際には Git Bash を実行する(偽の名前)ため、このスイッチとは無関係に常に拒否されます — コマンドは bash ツールへ。",
|
|
741
768
|
"fctx.label": "FastCtx ファイルツール(gb_*)",
|
|
742
769
|
"fctx.hint": "既定はオン:gb_inspect_local_file / gb_grep / gb_glob / gb_replace を公開(Rust:トークン予算付き一括読み取り、エンコーディング検出)。公式 read/grep/glob/edit への追加であり、公式ツールはファイルサンドボックスを保ち既定の推奨のまま。dsh-ops が入ると自動で退きます。",
|
|
743
770
|
},
|
|
@@ -752,8 +779,11 @@ window.__ModuleLoader__.load({
|
|
|
752
779
|
"switch.off": "사용 안 함",
|
|
753
780
|
"error": "쓰기 실패",
|
|
754
781
|
"hint": "켜면 모든 도구(bash 명령과 workdir, read/write/edit/read_image/glob/grep 및 present의 경로 인수)가 MSYS 드라이브 루트 POSIX 경로(/c/Users/...)를 사용합니다. bash 고유 습관——홈의 ~, /tmp, /dev/null, /usr——도 bash 자신이 해석하는 그대로 모든 도구에서 작동하며 호스트가 경로 필드를 자동 변환합니다. 끄면 dsh 기본 동작(파일 도구에 Windows 경로 사용)으로 돌아갑니다. 플러그인이 설치되어 있는 동안 bash는 항상 Git Bash이며 이 스위치의 영향을 받지 않습니다.",
|
|
782
|
+
"sec.inline": "인라인 도구",
|
|
783
|
+
"sec.executor": "실행기",
|
|
784
|
+
"sec.peer": "플러그인 연동",
|
|
755
785
|
"sec.dialect": "경로 방언",
|
|
756
|
-
"sec.terminal": "
|
|
786
|
+
"sec.terminal": "터미널",
|
|
757
787
|
"mnts.label": "가상 경로 마운트",
|
|
758
788
|
"mnts.hint": "bash 고유 습관——~ 홈, /tmp, /usr——은 Git Bash 마운트 테이블로 모든 도구에서 해석; 끄면 /c/ 드라이브 루트만.",
|
|
759
789
|
"errs.label": "오류 경로 번역",
|
|
@@ -810,8 +840,8 @@ window.__ModuleLoader__.load({
|
|
|
810
840
|
"tools.updating": "업데이트 중…",
|
|
811
841
|
"variant.label": "네 개의 «· Git Bash» 변형 프리셋",
|
|
812
842
|
"variant.hint": "기본 꺼짐: 공식 4개 프리셋이 인라인 도구 패치로 Git Bash를 얻으며 목록은 공식 그대로입니다. 켜면 4개 변형을 등록하고 공식 프리셋 패칭을 중단합니다(상호 배타). 변형 id 에 고정된 세션은 업그레이드 후 다시 선택해야 합니다. 새 세션에 적용.",
|
|
813
|
-
"pwsh.label": "PowerShell 7 도구(
|
|
814
|
-
"pwsh.hint": "
|
|
843
|
+
"pwsh.label": "PowerShell 7 도구(pwsh7)",
|
|
844
|
+
"pwsh.hint": "기본적으로 꺼짐: 켜면 이 플러그인이 시스템에 설치된 PowerShell 7으로 실제 pwsh7 도구를 제공합니다(레지스트리/서비스/WMI 등 Windows 네이티브 작업), 전체 권한 세션 전용. PowerShell 7 설치가 필요합니다(https://aka.ms/powershell) — 없으면 도구가 나타나지 않습니다. 호스트의 pwsh 도구는 이 머신에서 실제로 Git Bash를 실행하는(거짓 이름) 도구로, 이 스위치와 무관하게 항상 거부됩니다 — 명령은 bash 도구로 실행하세요.",
|
|
815
845
|
"fctx.label": "FastCtx 파일 도구(gb_*)",
|
|
816
846
|
"fctx.hint": "기본 켜짐: gb_inspect_local_file / gb_grep / gb_glob / gb_replace 를 공개합니다(Rust: 토큰 예산 기반 일괄 읽기, 인코딩 감지). 공식 read/grep/glob/edit 의 추가이며 공식 도구는 파일 샌드박스를 유지하고 기본 권장입니다. dsh-ops 가 설치되면 자동으로 물러납니다.",
|
|
817
847
|
},
|
|
@@ -826,8 +856,11 @@ window.__ModuleLoader__.load({
|
|
|
826
856
|
"switch.off": "Uitschakelen",
|
|
827
857
|
"error": "schrijven mislukt",
|
|
828
858
|
"hint": "Ingeschakeld: alle tools (bash-opdrachten en workdir, padargumenten van read/write/edit/read_image/glob/grep en present) gebruiken POSIX-paden vanaf de MSYS-schijfwortel (/c/Users/...); bash-eigen gewoonten — ~ voor de home-map, /tmp, /dev/null, /usr — werken in elke tool precies zoals bash ze zelf oplost, en de host vertaalt de padvelden automatisch. Uitgeschakeld herstelt het oorspronkelijke dsh-gedrag (Windows-paden voor bestandstools). Bash is altijd Git Bash zolang de plugin is geïnstalleerd; deze schakelaar bepaalt alleen het paddialect tussen de tools.",
|
|
859
|
+
"sec.inline": "Inline tools",
|
|
860
|
+
"sec.executor": "Executor",
|
|
861
|
+
"sec.peer": "Plug-in-integraties",
|
|
829
862
|
"sec.dialect": "Paddialect",
|
|
830
|
-
"sec.terminal": "
|
|
863
|
+
"sec.terminal": "Terminal",
|
|
831
864
|
"mnts.label": "Virtuele pad-mounts",
|
|
832
865
|
"mnts.hint": "Bash-eigen gewoonten — ~ home, /tmp, /usr — lossen op via de Git Bash-mount tabel in elke tool; uit = alleen /c/-schijfwortels.",
|
|
833
866
|
"errs.label": "Foutpad-vertaling",
|
|
@@ -884,8 +917,8 @@ window.__ModuleLoader__.load({
|
|
|
884
917
|
"tools.updating": "Bijwerken…",
|
|
885
918
|
"variant.label": "De vier «· Git Bash»-varianten",
|
|
886
919
|
"variant.hint": "Standaard uit: de vier OFFICIËLE presets krijgen Git Bash via de inline-toolpatch en de lijst blijft officieel. Aan: registreert de vier varianten en stopt het patchen van de officiële presets — sluit elkaar uit. Een sessie die aan een variant-id vastzit moet na een upgrade opnieuw kiezen. Geldt voor nieuwe sessies.",
|
|
887
|
-
"pwsh.label": "PowerShell 7-hulpmiddel (
|
|
888
|
-
"pwsh.hint": "Standaard
|
|
920
|
+
"pwsh.label": "PowerShell 7-hulpmiddel (pwsh7)",
|
|
921
|
+
"pwsh.hint": "Standaard uit: ingeschakeld biedt deze plugin een ECHT pwsh7-hulpmiddel via de op het systeem geïnstalleerde PowerShell 7 voor Windows-natief werk (register/services/WMI), alleen sessies met volledige rechten. Vereist geïnstalleerde PowerShell 7 (https://aka.ms/powershell) — zonder verschijnt het hulpmiddel nooit. Het pwsh-hulpmiddel van de host draait hier feitelijk Git Bash (een misleidende naam) en wordt ongeacht deze schakelaar geweigerd — voer opdrachten uit via het bash-hulpmiddel.",
|
|
889
922
|
"fctx.label": "FastCtx-bestandshulpmiddelen (gb_*)",
|
|
890
923
|
"fctx.hint": "Standaard aan: publiceert gb_inspect_local_file / gb_grep / gb_glob / gb_replace (Rust: gelezen in batches met tokenbudget, coderingsdetectie). AANVULLINGEN op read/grep/glob/edit — de officiële hulpmiddelen houden de bestandssandbox en blijven de standaard. Trekt zich automatisch terug wanneer dsh-ops is geïnstalleerd.",
|
|
891
924
|
},
|
|
@@ -900,8 +933,11 @@ window.__ModuleLoader__.load({
|
|
|
900
933
|
"switch.off": "Wyłącz",
|
|
901
934
|
"error": "zapis nie powiódł się",
|
|
902
935
|
"hint": "Po włączeniu: wszystkie narzędzia (polecenia bash i workdir, argumenty ścieżek w read/write/edit/read_image/glob/grep i w present) używają ścieżek POSIX od korzenia dysku MSYS (/c/Users/...); natywne nawyki basha — ~ dla katalogu domowego, /tmp, /dev/null, /usr — działają w każdym narzędziu dokładnie tak, jak rozwiązuje je sam bash, a host automatycznie tłumaczy pola ścieżek. Wyłączenie przywraca natywne zachowanie dsh (ścieżki Windows dla narzędzi plikowych). Bash jest zawsze Git Bash, dopóki wtyczka jest zainstalowana; ten przełącznik reguluje wyłącznie dialekt ścieżek między narzędziami.",
|
|
936
|
+
"sec.inline": "Narzędzia wbudowane",
|
|
937
|
+
"sec.executor": "Egzekutor",
|
|
938
|
+
"sec.peer": "Integracje wtyczek",
|
|
903
939
|
"sec.dialect": "Dialekt ścieżek",
|
|
904
|
-
"sec.terminal": "Terminal
|
|
940
|
+
"sec.terminal": "Terminal",
|
|
905
941
|
"mnts.label": "Wirtualne montowanie ścieżek",
|
|
906
942
|
"mnts.hint": "Natywne nawyki basha — ~ home, /tmp, /usr — rozwiązują się przez tablicę montowań Git Bash w każdym narzędziu; wył. = tylko korzenie /c/.",
|
|
907
943
|
"errs.label": "Tłumaczenie ścieżek błędów",
|
|
@@ -958,8 +994,8 @@ window.__ModuleLoader__.load({
|
|
|
958
994
|
"tools.updating": "Aktualizowanie…",
|
|
959
995
|
"variant.label": "Cztery warianty «· Git Bash»",
|
|
960
996
|
"variant.hint": "Domyślnie wyłączone: cztery OFICJALNE presety dostają Git Bash przez inline-owy patch narzędzi, a lista pozostaje oficjalna. Włączenie rejestruje cztery warianty i zatrzymuje patchowanie oficjalnych presetów — opcje wykluczają się. Sesja przypięta do id wariantu musi zostać wybrana ponownie po aktualizacji. Dotyczy nowych sesji.",
|
|
961
|
-
"pwsh.label": "Narzędzie PowerShell 7 (
|
|
962
|
-
"pwsh.hint": "Domyślnie
|
|
997
|
+
"pwsh.label": "Narzędzie PowerShell 7 (pwsh7)",
|
|
998
|
+
"pwsh.hint": "Domyślnie wyłączone: po włączeniu ta wtyczka udostępnia PRAWDZIWE narzędzie pwsh7 przez zainstalowany w systemie PowerShell 7 do natywnej pracy w Windows (rejestr/usługi/WMI), tylko sesje z pełnymi uprawnieniami. Wymaga zainstalowanego PowerShell 7 (https://aka.ms/powershell) — bez niego narzędzie nigdy się nie pojawi. Narzędzie pwsh hosta faktycznie uruchamia Git Bash na tej maszynie (myląca nazwa) i jest odrzucane niezależnie od tego przełącznika — polecenia wykonuj przez narzędzie bash.",
|
|
963
999
|
"fctx.label": "Narzędzia plików FastCtx (gb_*)",
|
|
964
1000
|
"fctx.hint": "Domyślnie włączone: publikuje gb_inspect_local_file / gb_grep / gb_glob / gb_replace (Rust: odczyty wsadowe z budżetem tokenów, wykrywanie kodowania). DODATKI do oficjalnych read/grep/glob/edit — oficjalne narzędzia zachowują sandbox plików i pozostają domyślne. Wycofuje się automatycznie, gdy zainstalowano dsh-ops.",
|
|
965
1001
|
},
|
|
@@ -974,8 +1010,11 @@ window.__ModuleLoader__.load({
|
|
|
974
1010
|
"switch.off": "Desativar",
|
|
975
1011
|
"error": "falha ao gravar",
|
|
976
1012
|
"hint": "Ativada: todas as ferramentas (comandos bash e workdir, argumentos de caminho de read/write/edit/read_image/glob/grep e de present) usam caminhos POSIX a partir da raiz da unidade MSYS (/c/Users/...); os hábitos nativos do bash — ~ para a pasta pessoal, /tmp, /dev/null, /usr — funcionam em cada ferramenta exatamente como o próprio bash os resolve, e o host traduz os campos de caminho automaticamente. Desativada restaura o comportamento nativo do dsh (caminhos Windows para as ferramentas de arquivo). O bash é sempre Git Bash enquanto o plugin estiver instalado; este interruptor rege apenas o dialeto de caminhos entre ferramentas.",
|
|
1013
|
+
"sec.inline": "Ferramentas inline",
|
|
1014
|
+
"sec.executor": "Executor",
|
|
1015
|
+
"sec.peer": "Integrações de plugins",
|
|
977
1016
|
"sec.dialect": "Dialeto de caminhos",
|
|
978
|
-
"sec.terminal": "Terminal
|
|
1017
|
+
"sec.terminal": "Terminal",
|
|
979
1018
|
"mnts.label": "Montagens de caminhos virtuais",
|
|
980
1019
|
"mnts.hint": "Hábitos nativos do bash — ~ home, /tmp, /usr — resolvem pela tabela de montagens do Git Bash em cada ferramenta; desligado = só raízes /c/.",
|
|
981
1020
|
"errs.label": "Tradução de caminhos de erro",
|
|
@@ -1032,8 +1071,8 @@ window.__ModuleLoader__.load({
|
|
|
1032
1071
|
"tools.updating": "A atualizar…",
|
|
1033
1072
|
"variant.label": "As quatro variantes «· Git Bash»",
|
|
1034
1073
|
"variant.hint": "Desativado por padrão: os quatro presets OFICIAIS recebem Git Bash pelo patch de ferramentas em linha e a lista permanece oficial. Ativado: registra as quatro variantes e deixa de corrigir os presets oficiais — mutuamente exclusivos. Uma sessão presa a um id de variante precisa ser reescolhida após a atualização. Vale para novas sessões.",
|
|
1035
|
-
"pwsh.label": "Ferramenta PowerShell 7 (
|
|
1036
|
-
"pwsh.hint": "
|
|
1074
|
+
"pwsh.label": "Ferramenta PowerShell 7 (pwsh7)",
|
|
1075
|
+
"pwsh.hint": "Desativado por padrão: ao ativar, este plugin fornece uma ferramenta pwsh7 REAL via o PowerShell 7 instalado no sistema para trabalho nativo do Windows (registro/serviços/WMI), apenas sessões com acesso total. Requer o PowerShell 7 instalado (https://aka.ms/powershell) — sem ele a ferramenta nunca aparece. A ferramenta pwsh do host na verdade executa o Git Bash nesta máquina (nome enganoso) e é negada independentemente deste interruptor — encaminhe comandos pela ferramenta bash.",
|
|
1037
1076
|
"fctx.label": "Ferramentas de arquivos FastCtx (gb_*)",
|
|
1038
1077
|
"fctx.hint": "Ativado por padrão: publica gb_inspect_local_file / gb_grep / gb_glob / gb_replace (Rust: leituras em lote com orçamento de tokens, detecção de codificação). ADIÇÕES aos read/grep/glob/edit oficiais — os oficiais mantêm o sandbox de arquivos e continuam o padrão. Recua automaticamente quando o dsh-ops está instalado.",
|
|
1039
1078
|
},
|
|
@@ -1048,8 +1087,11 @@ window.__ModuleLoader__.load({
|
|
|
1048
1087
|
"switch.off": "Выключить",
|
|
1049
1088
|
"error": "не удалось записать",
|
|
1050
1089
|
"hint": "Включено: все инструменты (команды bash и workdir, аргументы путей read/write/edit/read_image/glob/grep и present) используют POSIX-пути от корня диска MSYS (/c/Users/...); собственные привычки bash — ~ для домашнего каталога, /tmp, /dev/null, /usr — работают в каждом инструменте ровно так, как их разрешает сам bash, а хост автоматически преобразует поля путей. Выключение возвращает исходное поведение dsh (пути Windows для файловых инструментов). Пока плагин установлен, bash всегда остаётся Git Bash; этот переключатель управляет только диалектом путей между инструментами.",
|
|
1090
|
+
"sec.inline": "Встроенные инструменты",
|
|
1091
|
+
"sec.executor": "Исполнитель",
|
|
1092
|
+
"sec.peer": "Интеграции плагинов",
|
|
1051
1093
|
"sec.dialect": "Диалект путей",
|
|
1052
|
-
"sec.terminal": "Терминал
|
|
1094
|
+
"sec.terminal": "Терминал",
|
|
1053
1095
|
"mnts.label": "Виртуальные монтирования путей",
|
|
1054
1096
|
"mnts.hint": "Собственные привычки bash — ~ домашний, /tmp, /usr — разрешаются через таблицу монтирований Git Bash в каждом инструменте; выкл = только корни /c/.",
|
|
1055
1097
|
"errs.label": "Перевод путей в ошибках",
|
|
@@ -1106,8 +1148,8 @@ window.__ModuleLoader__.load({
|
|
|
1106
1148
|
"tools.updating": "Обновление…",
|
|
1107
1149
|
"variant.label": "Четыре варианта «· Git Bash»",
|
|
1108
1150
|
"variant.hint": "По умолчанию выключено: четыре ОФИЦИАЛЬНЫХ пресета получают Git Bash через встроенный патч инструментов, список остаётся официальным. Включено — регистрирует четыре варианта и прекращает патчить официальные пресеты (взаимоисключающе). Сессия, привязанная к id варианта, после обновления должна выбрать пресет заново. Действует для новых сессий.",
|
|
1109
|
-
"pwsh.label": "Инструмент PowerShell 7 (
|
|
1110
|
-
"pwsh.hint": "По умолчанию
|
|
1151
|
+
"pwsh.label": "Инструмент PowerShell 7 (pwsh7)",
|
|
1152
|
+
"pwsh.hint": "По умолчанию выключено: при включении плагин предоставляет НАСТОЯЩИЙ инструмент pwsh7 через установленный в системе PowerShell 7 для нативной работы Windows (реестр/службы/WMI), только сессии с полным доступом. Требуется установленный PowerShell 7 (https://aka.ms/powershell) — без него инструмент не появится. Штатный pwsh-инструмент хоста на этой машине фактически запускает Git Bash (лживое имя) и отклоняется независимо от этого переключателя — команды выполняйте через инструмент bash.",
|
|
1111
1153
|
"fctx.label": "Файловые инструменты FastCtx (gb_*)",
|
|
1112
1154
|
"fctx.hint": "По умолчанию включено: публикует gb_inspect_local_file / gb_grep / gb_glob / gb_replace (Rust: пакетные чтения с бюджетом токенов, определение кодировки). ДОПОЛНЕНИЯ к официальным read/grep/glob/edit — официальные сохраняют файловую песочницу и остаются выбором по умолчанию. Автоматически отступает при установленном dsh-ops.",
|
|
1113
1155
|
},
|
|
@@ -1122,8 +1164,11 @@ window.__ModuleLoader__.load({
|
|
|
1122
1164
|
"switch.off": "Inaktivera",
|
|
1123
1165
|
"error": "skrivning misslyckades",
|
|
1124
1166
|
"hint": "Aktiverad: alla verktyg (bash-kommandon och workdir, sökvägsargument för read/write/edit/read_image/glob/grep och present) använder POSIX-sökvägar från MSYS-enhetsroten (/c/Users/...); bash egna vanor — ~ för hemkatalogen, /tmp, /dev/null, /usr — fungerar i varje verktyg exakt som bash själv löser dem, och värden översätter sökvägsfälten automatiskt. Inaktiverad återställer dsh:s ursprungliga beteende (Windows-sökvägar för filverktygen). Bash är alltid Git Bash så länge insticksprogrammet är installerat; den här växeln styr bara sökvägsdialekten mellan verktygen.",
|
|
1167
|
+
"sec.inline": "Inline-verktyg",
|
|
1168
|
+
"sec.executor": "Exekutor",
|
|
1169
|
+
"sec.peer": "Plugin-integrationer",
|
|
1125
1170
|
"sec.dialect": "Sökvägsdialekt",
|
|
1126
|
-
"sec.terminal": "
|
|
1171
|
+
"sec.terminal": "Terminal",
|
|
1127
1172
|
"mnts.label": "Virtuella sökvägsmonteringar",
|
|
1128
1173
|
"mnts.hint": "Bash egna vanor — ~ hem, /tmp, /usr — löses via Git Bash monteringstabell i varje verktyg; av = endast /c/-enhetsrötter.",
|
|
1129
1174
|
"errs.label": "Felsökvägsöversättning",
|
|
@@ -1180,8 +1225,8 @@ window.__ModuleLoader__.load({
|
|
|
1180
1225
|
"tools.updating": "Uppdaterar…",
|
|
1181
1226
|
"variant.label": "De fyra «· Git Bash»-varianterna",
|
|
1182
1227
|
"variant.hint": "Av som standard: de fyra OFFICIELLA presetten får Git Bash via inline-verktygspatchen och listan förblir officiell. På: registrerar de fyra varianterna och slutar patcha de officiella presetten — ömsesidigt uteslutande. En session fastnåld på ett variant-id måste väljas om efter uppgradering. Gäller nya sessioner.",
|
|
1183
|
-
"pwsh.label": "PowerShell 7-verktyg (
|
|
1184
|
-
"pwsh.hint": "
|
|
1228
|
+
"pwsh.label": "PowerShell 7-verktyg (pwsh7)",
|
|
1229
|
+
"pwsh.hint": "Av som standard: när den är på tillhandahåller denna plugin ett ÄKTA pwsh7-verktyg via systemets installerade PowerShell 7 för Windows-inbyggt arbete (register/tjänster/WMI), endast sessioner med full behörighet. Kräver installerad PowerShell 7 (https://aka.ms/powershell) — utan den visas verktyget aldrig. Hostens pwsh-verktyg kör i själva verket Git Bash på denna maskin (ett vilseledande namn) och nekas oavsett denna växel — kör kommandon via bash-verktyget.",
|
|
1185
1230
|
"fctx.label": "FastCtx-filverktyg (gb_*)",
|
|
1186
1231
|
"fctx.hint": "På som standard: publicerar gb_inspect_local_file / gb_grep / gb_glob / gb_replace (Rust: batchläsningar med tokenbudget, kodningsdetektering). TILLÄGG till de officiella read/grep/glob/edit — de officiella behåller filsandlådan och förblir standard. Drar sig automatiskt tillbaka när dsh-ops är installerat.",
|
|
1187
1232
|
},
|
|
@@ -1196,8 +1241,11 @@ window.__ModuleLoader__.load({
|
|
|
1196
1241
|
"switch.off": "ปิดใช้งาน",
|
|
1197
1242
|
"error": "เขียนไม่สำเร็จ",
|
|
1198
1243
|
"hint": "เมื่อเปิดใช้งาน: เครื่องมือทั้งหมด (คำสั่ง bash และ workdir รวมถึงอาร์กิวเมนต์พาธของ read/write/edit/read_image/glob/grep และ present) ใช้พาธ POSIX จากรากไดรฟ์ของ MSYS (/c/Users/...); พฤติกรรมดั้งเดิมของ bash — ~ สำหรับโฮม, /tmp, /dev/null, /usr — ทำงานในทุกเครื่องมือเหมือนที่ bash แก้เองพอดี และโฮสต์แปลฟิลด์พาธให้อัตโนมัติ เมื่อปิดใช้งานจะกลับสู่พฤติกรรมดั้งเดิมของ dsh (เครื่องมือจัดการไฟล์ใช้พาธ Windows) bash เป็น Git Bash เสมอเมื่อติดตั้งปลั๊กอินนี้ สวิตช์นี้ควบคุมเฉพาะรูปแบบพาธระหว่างเครื่องมือเท่านั้น",
|
|
1244
|
+
"sec.inline": "เครื่องมือแบบ inline",
|
|
1245
|
+
"sec.executor": "ตัวรัน",
|
|
1246
|
+
"sec.peer": "การเชื่อมต่อปลั๊กอิน",
|
|
1199
1247
|
"sec.dialect": "ภาษาถิ่นเส้นทาง",
|
|
1200
|
-
"sec.terminal": "
|
|
1248
|
+
"sec.terminal": "เทอร์มินัล",
|
|
1201
1249
|
"mnts.label": "จุดเมานต์เส้นทางเสมือน",
|
|
1202
1250
|
"mnts.hint": "พฤติกรรมดั้งเดิมของ bash — ~ โฮม, /tmp, /usr — แก้ผ่านตารางเมานต์ของ Git Bash ในทุกเครื่องมือ; ปิด = เฉพาะรากไดรฟ์ /c/",
|
|
1203
1251
|
"errs.label": "การแปลเส้นทางในข้อผิดพลาด",
|
|
@@ -1254,8 +1302,8 @@ window.__ModuleLoader__.load({
|
|
|
1254
1302
|
"tools.updating": "กำลังอัปเกรด…",
|
|
1255
1303
|
"variant.label": "พรีเซ็ตย่อย «· Git Bash» ทั้งสี่",
|
|
1256
1304
|
"variant.hint": "ปิดตามค่าเริ่มต้น: พรีเซ็ตทางการทั้งสี่ได้ Git Bash ผ่านแพตช์เครื่องมือในตัว และรายการยังเป็นทางการ เปิด: ลงทะเบียนสี่ตัวย่อยและหยุดแพตช์พรีเซ็ตทางการ — ทั้งสองไม่ใช้ร่วมกันได้ เซสชันที่ตรึงกับ id ย่อยต้องเลือกใหม่หลังอัปเกรด ใช้กับเซสชันใหม่",
|
|
1257
|
-
"pwsh.label": "เครื่องมือ PowerShell 7 (
|
|
1258
|
-
"pwsh.hint": "
|
|
1305
|
+
"pwsh.label": "เครื่องมือ PowerShell 7 (pwsh7)",
|
|
1306
|
+
"pwsh.hint": "ปิดอยู่โดยค่าเริ่มต้น: เมื่อเปิด ปลั๊กอินนี้จะให้เครื่องมือ pwsh7 จริงผ่าน PowerShell 7 ที่ติดตั้งในระบบสำหรับงาน Windows แบบเนทีฟ (registry/services/WMI) เฉพาะเซสชันสิทธิ์เต็มเท่านั้น ต้องติดตั้ง PowerShell 7 (https://aka.ms/powershell) — หากไม่มี เครื่องมือจะไม่ปรากฏ เครื่องมือ pwsh ของโฮสต์ที่จริงรัน Git Bash บนเครื่องนี้ (ชื่อหลอก) และจะถูกปฏิเสธไม่ว่าสวิตช์นี้ — ส่งคำสั่งผ่านเครื่องมือ bash",
|
|
1259
1307
|
"fctx.label": "เครื่องมือไฟล์ FastCtx (gb_*)",
|
|
1260
1308
|
"fctx.hint": "เปิดตามค่าเริ่มต้น: เผยแพร่ gb_inspect_local_file / gb_grep / gb_glob / gb_replace (Rust: อ่านเป็นชุดพร้อมงบ token, ตรวจจับ encoding) เป็นส่วนเสริมของ read/grep/glob/edit ทางการ — เครื่องมือทางการยังมี sandbox ไฟล์และเป็นค่าเริ่มต้น ถอยอัตโนมัติเมื่อติดตั้ง dsh-ops",
|
|
1261
1309
|
},
|
|
@@ -1270,8 +1318,11 @@ window.__ModuleLoader__.load({
|
|
|
1270
1318
|
"switch.off": "Devre dışı bırak",
|
|
1271
1319
|
"error": "yazma başarısız",
|
|
1272
1320
|
"hint": "Etkinleştirildiğinde: tüm araçlar (bash komutları ve workdir ile read/write/edit/read_image/glob/grep ve present yol bağımsız değişkenleri) MSYS sürücü kökünden POSIX yolları (/c/Users/...) kullanır; bash'e özgü alışkanlıklar — ev için ~, /tmp, /dev/null, /usr — her araçta tam bash'in kendisinin çözdüğü gibi çalışır ve ana süreç yol alanlarını otomatik olarak çevirir. Devre dışı bırakıldığında dsh yerel davranışına döner (dosya araçları için Windows yolları). Eklenti kurulu olduğu sürece bash her zaman Git Bash olarak kalır; bu anahtar yalnızca araçlar arası yol lehçesini yönetir.",
|
|
1321
|
+
"sec.inline": "Satır içi araçlar",
|
|
1322
|
+
"sec.executor": "Yürütücü",
|
|
1323
|
+
"sec.peer": "Eklenti entegrasyonları",
|
|
1273
1324
|
"sec.dialect": "Yol lehçesi",
|
|
1274
|
-
"sec.terminal": "
|
|
1325
|
+
"sec.terminal": "Terminal",
|
|
1275
1326
|
"mnts.label": "Sanal yol bağlamaları",
|
|
1276
1327
|
"mnts.hint": "Bash'e özgü alışkanlıklar — ~ ev, /tmp, /usr — her araçta Git Bash bağlama tablosuyla çözülür; kapalı = yalnızca /c/ sürücü kökleri.",
|
|
1277
1328
|
"errs.label": "Hata yolu çevirisi",
|
|
@@ -1328,8 +1379,8 @@ window.__ModuleLoader__.load({
|
|
|
1328
1379
|
"tools.updating": "Güncelleniyor…",
|
|
1329
1380
|
"variant.label": "Dört «· Git Bash» varyantı",
|
|
1330
1381
|
"variant.hint": "Varsayılan olarak kapalı: dört RESMİ preset, satır içi araç yamasıyla Git Bash alır; liste resmi kalır. Açık: dört varyantı kaydeder ve resmi presetleri yamalamayı bırakır — ikisi birbirini dışlar. Bir varyant kimliğine bağlı oturum yükseltmeden sonra yeniden seçilmelidir. Yeni oturumlar için geçerlidir.",
|
|
1331
|
-
"pwsh.label": "PowerShell 7 aracı (
|
|
1332
|
-
"pwsh.hint": "Varsayılan
|
|
1382
|
+
"pwsh.label": "PowerShell 7 aracı (pwsh7)",
|
|
1383
|
+
"pwsh.hint": "Varsayılan olarak kapalı: açıkken bu eklenti, sistemde kurulu PowerShell 7 üzerinden GERÇEK bir pwsh7 aracı sağlar (Windows-yerel işler: kayıt defteri/hizmetler/WMI), yalnızca tam yetkili oturumlar. PowerShell 7 kurulu olmalıdır (https://aka.ms/powershell) — yoksa araç asla görünmez. Ana makinenin pwsh aracı bu makinede aslında Git Bash çalıştırır (yanıltıcı ad) ve bu anahtar ne olursa olsun reddedilir — komutları bash aracıyla çalıştırın.",
|
|
1333
1384
|
"fctx.label": "FastCtx dosya araçları (gb_*)",
|
|
1334
1385
|
"fctx.hint": "Varsayılan açık: gb_inspect_local_file / gb_grep / gb_glob / gb_replace yayımlar (Rust: token bütçeli toplu okumalar, kodlama algılama). Resmî read/grep/glob/edit’e EKLER — resmî araçlar dosya kum havuzunu korur ve varsayılan kalır. dsh-ops kurulu olduğunda otomatik olarak geri çekilir.",
|
|
1335
1386
|
},
|
|
@@ -1344,8 +1395,11 @@ window.__ModuleLoader__.load({
|
|
|
1344
1395
|
"switch.off": "Tắt",
|
|
1345
1396
|
"error": "ghi thất bại",
|
|
1346
1397
|
"hint": "Khi bật: mọi công cụ (lệnh bash và workdir, tham số đường dẫn của read/write/edit/read_image/glob/grep và present) dùng đường dẫn POSIX từ gốc ổ đĩa MSYS (/c/Users/...); thói quen gốc của bash — ~ cho thư mục home, /tmp, /dev/null, /usr — hoạt động trong mọi công cụ đúng như chính bash giải quyết chúng, và máy chủ tự động chuyển đổi trường đường dẫn. Khi tắt, hành vi gốc của dsh được khôi phục (công cụ tệp dùng đường dẫn Windows). bash luôn là Git Bash khi plugin được cài đặt; công tắc này chỉ điều khiển phương ngữ đường dẫn giữa các công cụ.",
|
|
1398
|
+
"sec.inline": "Công cụ nội tuyến",
|
|
1399
|
+
"sec.executor": "Trình thực thi",
|
|
1400
|
+
"sec.peer": "Tích hợp plugin",
|
|
1347
1401
|
"sec.dialect": "Phương ngữ đường dẫn",
|
|
1348
|
-
"sec.terminal": "Terminal
|
|
1402
|
+
"sec.terminal": "Terminal",
|
|
1349
1403
|
"mnts.label": "Gán đường dẫn ảo",
|
|
1350
1404
|
"mnts.hint": "Thói quen gốc của bash — ~ home, /tmp, /usr — được giải qua bảng gán của Git Bash trong mọi công cụ; tắt = chỉ gốc ổ /c/.",
|
|
1351
1405
|
"errs.label": "Dịch đường dẫn lỗi",
|
|
@@ -1402,8 +1456,8 @@ window.__ModuleLoader__.load({
|
|
|
1402
1456
|
"tools.updating": "Đang nâng cấp…",
|
|
1403
1457
|
"variant.label": "Bốn biến thể «· Git Bash»",
|
|
1404
1458
|
"variant.hint": "Mặc định tắt: bốn preset CHÍNH THỨC nhận Git Bash qua bản vá công cụ nội tuyến và danh sách vẫn chính thức. Bật: đăng ký bốn biến thể và ngừng vá các preset chính thức — hai bên loại trừ nhau. Phiên đang ghim vào id biến thể cần chọn lại sau nâng cấp. Áp dụng cho phiên mới.",
|
|
1405
|
-
"pwsh.label": "Công cụ PowerShell 7 (
|
|
1406
|
-
"pwsh.hint": "Mặc định
|
|
1459
|
+
"pwsh.label": "Công cụ PowerShell 7 (pwsh7)",
|
|
1460
|
+
"pwsh.hint": "Mặc định tắt: khi bật, plugin này cung cấp công cụ pwsh7 THỰC qua PowerShell 7 đã cài trong hệ thống cho công việc Windows gốc (registry/services/WMI), chỉ dành cho phiên đầy đủ quyền. Cần PowerShell 7 đã cài (https://aka.ms/powershell) — không có thì công cụ không bao giờ xuất hiện. Công cụ pwsh của host trên máy này thực chất chạy Git Bash (tên gây hiểu lầm) và luôn bị từ chối bất kể công tắc này — chạy lệnh qua công cụ bash.",
|
|
1407
1461
|
"fctx.label": "Công cụ tệp FastCtx (gb_*)",
|
|
1408
1462
|
"fctx.hint": "Mặc định bật: phát hành gb_inspect_local_file / gb_grep / gb_glob / gb_replace (Rust: đọc theo lô có ngân sách token, phát hiện mã hóa). BỔ SUNG cho read/grep/glob/edit chính thức — công cụ chính thức giữ sandbox tệp và vẫn là mặc định. Tự rút khi dsh-ops được cài.",
|
|
1409
1463
|
},
|
|
@@ -1418,8 +1472,11 @@ window.__ModuleLoader__.load({
|
|
|
1418
1472
|
"switch.off": "停用",
|
|
1419
1473
|
"error": "寫入失敗",
|
|
1420
1474
|
"hint": "啟用後:所有工具(bash 指令同 workdir、read/write/edit/read_image/glob/grep 同 present 嘅路徑參數)統一使用 MSYS 磁碟根 POSIX 路徑(/c/Users/...);bash 原生習慣——~ 家目錄、/tmp、/dev/null、/usr——喺所有工具一樣有效(同 Git Bash 掛載表一致),路徑參數由宿主自動翻譯,模型無感。停用後回復 dsh 原生行為(檔案工具用 Windows 路徑)。bash 永遠係 Git Bash,唔受呢個開關影響。",
|
|
1475
|
+
"sec.inline": "行內工具",
|
|
1476
|
+
"sec.executor": "執行器",
|
|
1477
|
+
"sec.peer": "外掛聯動",
|
|
1421
1478
|
"sec.dialect": "路徑方言",
|
|
1422
|
-
"sec.terminal": "
|
|
1479
|
+
"sec.terminal": "終端機",
|
|
1423
1480
|
"mnts.label": "虛擬路徑掛載",
|
|
1424
1481
|
"mnts.hint": "bash 原生習慣——~ 家目錄、/tmp、/usr——按 Git Bash 掛載表喺所有工具解析;關閉就只剩 /c/ 磁碟根。",
|
|
1425
1482
|
"errs.label": "報錯路徑翻譯",
|
|
@@ -1476,8 +1533,8 @@ window.__ModuleLoader__.load({
|
|
|
1476
1533
|
"tools.updating": "升級緊…",
|
|
1477
1534
|
"variant.label": "四個「·Git Bash」變體模式",
|
|
1478
1535
|
"variant.hint": "預設關閉:官方四個模式經行內工具補位直接獲得 Git Bash,模式列表保持官方原樣。開啟後註冊四個變體並停用官方模式的工具補位——兩者互斥。釘在變體 id 的舊會話在關閉升級後需重新選擇模式;變更對新會話生效。",
|
|
1479
|
-
"pwsh.label": "PowerShell 7 工具(
|
|
1480
|
-
"pwsh.hint": "
|
|
1536
|
+
"pwsh.label": "PowerShell 7 工具(pwsh7)",
|
|
1537
|
+
"pwsh.hint": "預設關閉:開啟後本外掛在會話裡提供真正的 pwsh7 工具,用系統安裝的 PowerShell 7 執行 Windows 原生操作(登錄檔/服務/WMI),僅完全權限會話可用。前提:機器上已安裝 PowerShell 7(https://aka.ms/powershell),沒裝則工具不會出現。宿主自帶的 pwsh 工具在本機實際執行 Git Bash(名字是假的),無論開關一律拒絕——命令一律走 bash 工具。",
|
|
1481
1538
|
"fctx.label": "FastCtx 檔案工具(gb_*)",
|
|
1482
1539
|
"fctx.hint": "預設開啟:發布 gb_inspect_local_file / gb_grep / gb_glob / gb_replace(Rust 實現:批量讀取帶 token 預算、編碼探測)。它們是官方 read/grep/glob/edit 的補充——官方工具接檔案沙箱,仍是預設推薦;偵測到 dsh-ops 時本組自動讓位。",
|
|
1483
1540
|
},
|
|
@@ -1492,8 +1549,11 @@ window.__ModuleLoader__.load({
|
|
|
1492
1549
|
"switch.off": "停用",
|
|
1493
1550
|
"error": "寫入失敗",
|
|
1494
1551
|
"hint": "啟用後:所有工具(bash 指令同 workdir、read/write/edit/read_image/glob/grep 同 present 嘅路徑參數)統一使用 MSYS 磁碟根 POSIX 路徑(/c/Users/...);bash 原生習慣——~ 家目錄、/tmp、/dev/null、/usr——喺所有工具一樣有效(同 Git Bash 掛載表一致),路徑參數由宿主自動翻譯,模型無感。停用後回復 dsh 原生行為(檔案工具用 Windows 路徑)。bash 永遠係 Git Bash,唔受呢個開關影響。",
|
|
1552
|
+
"sec.inline": "行內工具",
|
|
1553
|
+
"sec.executor": "執行器",
|
|
1554
|
+
"sec.peer": "外掛聯動",
|
|
1495
1555
|
"sec.dialect": "路徑方言",
|
|
1496
|
-
"sec.terminal": "
|
|
1556
|
+
"sec.terminal": "終端機",
|
|
1497
1557
|
"mnts.label": "虛擬路徑掛載",
|
|
1498
1558
|
"mnts.hint": "bash 原生習慣——~ 家目錄、/tmp、/usr——按 Git Bash 掛載表喺所有工具解析;關閉就只剩 /c/ 磁碟根。",
|
|
1499
1559
|
"errs.label": "報錯路徑翻譯",
|
|
@@ -1550,8 +1610,8 @@ window.__ModuleLoader__.load({
|
|
|
1550
1610
|
"tools.updating": "升級緊…",
|
|
1551
1611
|
"variant.label": "四個「·Git Bash」變體模式",
|
|
1552
1612
|
"variant.hint": "預設關閉:官方四個模式經行內工具補位直接獲得 Git Bash,模式列表保持官方原樣。開啟後註冊四個變體並停用官方模式的工具補位——兩者互斥。釘在變體 id 的舊會話在關閉升級後需重新選擇模式;變更對新會話生效。",
|
|
1553
|
-
"pwsh.label": "PowerShell 7 工具(
|
|
1554
|
-
"pwsh.hint": "
|
|
1613
|
+
"pwsh.label": "PowerShell 7 工具(pwsh7)",
|
|
1614
|
+
"pwsh.hint": "預設關閉:開啟後本外掛在會話裡提供真正的 pwsh7 工具,用系統安裝的 PowerShell 7 執行 Windows 原生操作(登錄檔/服務/WMI),僅完全權限會話可用。前提:機器上已安裝 PowerShell 7(https://aka.ms/powershell),沒裝則工具不會出現。宿主自帶的 pwsh 工具在本機實際執行 Git Bash(名字是假的),無論開關一律拒絕——命令一律走 bash 工具。",
|
|
1555
1615
|
"fctx.label": "FastCtx 檔案工具(gb_*)",
|
|
1556
1616
|
"fctx.hint": "預設開啟:發布 gb_inspect_local_file / gb_grep / gb_glob / gb_replace(Rust 實現:批量讀取帶 token 預算、編碼探測)。它們是官方 read/grep/glob/edit 的補充——官方工具接檔案沙箱,仍是預設推薦;偵測到 dsh-ops 時本組自動讓位。",
|
|
1557
1617
|
},
|
|
@@ -1566,8 +1626,11 @@ window.__ModuleLoader__.load({
|
|
|
1566
1626
|
"switch.off": "停用",
|
|
1567
1627
|
"error": "寫入失敗",
|
|
1568
1628
|
"hint": "啟用後:所有工具(bash 指令與 workdir,以及 read/write/edit/read_image/glob/grep 與 present 的路徑參數)統一使用 MSYS 磁碟根 POSIX 路徑(/c/Users/...);bash 原生習慣——~ 家目錄、/tmp、/dev/null、/usr——在所有工具同樣有效(與 Git Bash 掛載表一致),路徑參數由宿主自動轉譯,模型無感。停用後恢復 dsh 原生行為(檔案工具使用 Windows 路徑)。bash 一律是 Git Bash,不受此開關影響。",
|
|
1629
|
+
"sec.inline": "行內工具",
|
|
1630
|
+
"sec.executor": "執行器",
|
|
1631
|
+
"sec.peer": "外掛聯動",
|
|
1569
1632
|
"sec.dialect": "路徑方言",
|
|
1570
|
-
"sec.terminal": "
|
|
1633
|
+
"sec.terminal": "終端機",
|
|
1571
1634
|
"mnts.label": "虛擬路徑掛載",
|
|
1572
1635
|
"mnts.hint": "bash 原生習慣——~ 家目錄、/tmp、/usr——按 Git Bash 掛載表在所有工具解析;關閉則僅 /c/ 磁碟根。",
|
|
1573
1636
|
"errs.label": "報錯路徑翻譯",
|
|
@@ -1624,8 +1687,8 @@ window.__ModuleLoader__.load({
|
|
|
1624
1687
|
"tools.updating": "更新中…",
|
|
1625
1688
|
"variant.label": "四個「·Git Bash」變體模式",
|
|
1626
1689
|
"variant.hint": "預設關閉:官方四個模式經行內工具補位直接獲得 Git Bash,模式列表保持官方原樣。開啟後註冊四個變體並停用官方模式的工具補位——兩者互斥。釘在變體 id 的舊會話在關閉升級後需重新選擇模式;變更對新會話生效。",
|
|
1627
|
-
"pwsh.label": "PowerShell 7 工具(
|
|
1628
|
-
"pwsh.hint": "
|
|
1690
|
+
"pwsh.label": "PowerShell 7 工具(pwsh7)",
|
|
1691
|
+
"pwsh.hint": "預設關閉:開啟後本外掛在工作階段裡提供真正的 pwsh7 工具,用系統安裝的 PowerShell 7 執行 Windows 原生操作(登錄檔/服務/WMI),僅完全權限工作階段可用。前提:機器上已安裝 PowerShell 7(https://aka.ms/powershell),沒裝則工具不會出現。宿主自帶的 pwsh 工具在本機實際執行 Git Bash(名字是假的),無論開關一律拒絕——命令一律走 bash 工具。",
|
|
1629
1692
|
"fctx.label": "FastCtx 檔案工具(gb_*)",
|
|
1630
1693
|
"fctx.hint": "預設開啟:發布 gb_inspect_local_file / gb_grep / gb_glob / gb_replace(Rust 實現:批量讀取帶 token 預算、編碼探測)。它們是官方 read/grep/glob/edit 的補充——官方工具接檔案沙箱,仍是預設推薦;偵測到 dsh-ops 時本組自動讓位。",
|
|
1631
1694
|
},
|
|
@@ -2068,15 +2131,17 @@ window.__ModuleLoader__.load({
|
|
|
2068
2131
|
E("button", { type: "button", className: "gb-segBtn" + (!subagents ? " gb-segActive" : ""), onClick: function () { if (subagents) writeField("subagentDialect", false); } }, t("switch.off")),
|
|
2069
2132
|
),
|
|
2070
2133
|
E("p", { className: "gb-hint" }, t("sub.hint")),
|
|
2071
|
-
E("div", { className: "gb-row" },
|
|
2072
|
-
E("span", { className: "gb-rowLabel" }, t("term.label") + ":"),
|
|
2073
|
-
E("span", { className: "gb-rowValue" }, winshell ? t("state.on") : t("state.off")),
|
|
2074
|
-
),
|
|
2075
|
-
E("div", { className: "gb-seg" },
|
|
2076
|
-
E("button", { type: "button", className: "gb-segBtn" + (winshell ? " gb-segActive" : ""), onClick: function () { if (!winshell) writeField("autoTerminalShell", true); } }, t("switch.on")),
|
|
2077
|
-
E("button", { type: "button", className: "gb-segBtn" + (!winshell ? " gb-segActive" : ""), onClick: function () { if (winshell) writeField("autoTerminalShell", false); } }, t("switch.off")),
|
|
2078
2134
|
),
|
|
2079
|
-
|
|
2135
|
+
);
|
|
2136
|
+
|
|
2137
|
+
/* ── executor section (v0.36.0 regroup) ───────────────────────────
|
|
2138
|
+
The binary layer: WHICH bash runs and the git line-ending policy
|
|
2139
|
+
the executor injects. Split out of the dialect section — users
|
|
2140
|
+
hunting "why is my diff all red" or pasting a bash path should
|
|
2141
|
+
not scroll through six translation switches to find it. */
|
|
2142
|
+
var executorSection = E("div", { className: "gb-section" },
|
|
2143
|
+
E("div", { className: "gb-sectionTitle" }, t("sec.executor")),
|
|
2144
|
+
E("div", { className: "gb-stack" },
|
|
2080
2145
|
E("div", { className: "gb-row" },
|
|
2081
2146
|
E("span", { className: "gb-rowLabel" }, t("eol.label") + ":"),
|
|
2082
2147
|
E("span", { className: "gb-rowValue" }, eolOn ? t("state.on") : t("state.off")),
|
|
@@ -2086,20 +2151,20 @@ window.__ModuleLoader__.load({
|
|
|
2086
2151
|
E("button", { type: "button", className: "gb-segBtn" + (!eolOn ? " gb-segActive" : ""), onClick: function () { if (eolOn) writeField("gitAutocrlf", false); } }, t("switch.off")),
|
|
2087
2152
|
),
|
|
2088
2153
|
E("p", { className: "gb-hint" }, t("eol.hint")),
|
|
2089
|
-
|
|
2090
|
-
|
|
2091
|
-
|
|
2092
|
-
|
|
2093
|
-
|
|
2094
|
-
|
|
2095
|
-
|
|
2096
|
-
|
|
2097
|
-
|
|
2098
|
-
|
|
2099
|
-
|
|
2100
|
-
|
|
2101
|
-
|
|
2102
|
-
|
|
2154
|
+
E("div", { className: "gb-row" },
|
|
2155
|
+
E("span", { className: "gb-rowLabel" }, t("bash.label") + ":"),
|
|
2156
|
+
),
|
|
2157
|
+
E("div", { className: "gb-seg" },
|
|
2158
|
+
E("input", { className: "gb-input", type: "text", spellCheck: false, placeholder: "C:/Program Files/Git/bin/bash.exe", value: bashDraft, onChange: function (e) { setBashDraft(e.target.value); setBashSaved(false); } }),
|
|
2159
|
+
E("button", {
|
|
2160
|
+
type: "button",
|
|
2161
|
+
className: "gb-saveBtn" + (bashSaved ? " gb-saved" : ""),
|
|
2162
|
+
onClick: function () {
|
|
2163
|
+
setBashSaved(false);
|
|
2164
|
+
writeField("bashPath", bashDraft.trim()).then(function (accepted) { setBashSaved(accepted === true); });
|
|
2165
|
+
},
|
|
2166
|
+
}, bashSaved ? t("bash.saved") : t("bash.save")),
|
|
2167
|
+
),
|
|
2103
2168
|
E("p", { className: "gb-hint" }, t("bash.hint")),
|
|
2104
2169
|
),
|
|
2105
2170
|
);
|
|
@@ -2107,6 +2172,15 @@ window.__ModuleLoader__.load({
|
|
|
2107
2172
|
var terminalSection = E("div", { className: "gb-section" },
|
|
2108
2173
|
E("div", { className: "gb-sectionTitle" }, t("sec.terminal")),
|
|
2109
2174
|
E("div", { className: "gb-stack" },
|
|
2175
|
+
E("div", { className: "gb-row" },
|
|
2176
|
+
E("span", { className: "gb-rowLabel" }, t("term.label") + ":"),
|
|
2177
|
+
E("span", { className: "gb-rowValue" }, winshell ? t("state.on") : t("state.off")),
|
|
2178
|
+
),
|
|
2179
|
+
E("div", { className: "gb-seg" },
|
|
2180
|
+
E("button", { type: "button", className: "gb-segBtn" + (winshell ? " gb-segActive" : ""), onClick: function () { if (!winshell) writeField("autoTerminalShell", true); } }, t("switch.on")),
|
|
2181
|
+
E("button", { type: "button", className: "gb-segBtn" + (!winshell ? " gb-segActive" : ""), onClick: function () { if (winshell) writeField("autoTerminalShell", false); } }, t("switch.off")),
|
|
2182
|
+
),
|
|
2183
|
+
E("p", { className: "gb-hint" }, t("term.hint")),
|
|
2110
2184
|
E("div", { className: "gb-row" },
|
|
2111
2185
|
E("span", { className: "gb-rowLabel" }, t("adopt.label") + ":"),
|
|
2112
2186
|
E("span", { className: "gb-rowValue" }, adopt ? t("state.on") : t("state.off")),
|
|
@@ -2143,6 +2217,7 @@ window.__ModuleLoader__.load({
|
|
|
2143
2217
|
);
|
|
2144
2218
|
|
|
2145
2219
|
var inlineSection = E("div", { className: "gb-section" },
|
|
2220
|
+
E("div", { className: "gb-sectionTitle" }, t("sec.inline")),
|
|
2146
2221
|
E("div", { className: "gb-stack" },
|
|
2147
2222
|
E("div", { className: "gb-row" },
|
|
2148
2223
|
E("span", { className: "gb-rowLabel" }, t("pwsh.label") + ":"),
|
|
@@ -2170,20 +2245,13 @@ window.__ModuleLoader__.load({
|
|
|
2170
2245
|
if (peer && typeof peer.getSnapshot === "function") peerSnap = peer.getSnapshot();
|
|
2171
2246
|
} catch (error_) { /* keep unavailable */ }
|
|
2172
2247
|
|
|
2173
|
-
|
|
2174
|
-
|
|
2175
|
-
|
|
2176
|
-
|
|
2177
|
-
|
|
2178
|
-
|
|
2179
|
-
|
|
2180
|
-
E("div", { className: "gb-seg" },
|
|
2181
|
-
E("button", { type: "button", className: "gb-segBtn" + (dedupe ? " gb-segActive" : ""), onClick: function () { if (!dedupe) writeField("suppressPeerCordis", true); } }, t("switch.on")),
|
|
2182
|
-
E("button", { type: "button", className: "gb-segBtn" + (!dedupe ? " gb-segActive" : ""), onClick: function () { if (dedupe) writeField("suppressPeerCordis", false); } }, t("switch.off")),
|
|
2183
|
-
),
|
|
2184
|
-
E("p", { className: "gb-hint" }, t("dedupe.hint")),
|
|
2185
|
-
),
|
|
2186
|
-
) : null;
|
|
2248
|
+
/* ── plugin integrations (v0.36.0 regroup) ────────────────────────
|
|
2249
|
+
Both peer rows now share ONE section: they are the same
|
|
2250
|
+
relationship (dsh-ptc-cordis-preset) seen from two seats. The
|
|
2251
|
+
section itself is assembled after the python computations
|
|
2252
|
+
below; the dedupe VALUE lives on OUR row (the peer card binds
|
|
2253
|
+
the same field through configForms) while the python VALUE
|
|
2254
|
+
lives on the PEER's row. */
|
|
2187
2255
|
|
|
2188
2256
|
/* Python row (v0.26.0): the SECOND seat of the PEER's switch. Unlike
|
|
2189
2257
|
the dedupe row above, the value does NOT live on our row — the
|
|
@@ -2223,21 +2291,32 @@ window.__ModuleLoader__.load({
|
|
|
2223
2291
|
}
|
|
2224
2292
|
}
|
|
2225
2293
|
|
|
2226
|
-
|
|
2227
|
-
|
|
2294
|
+
/* The merged integrations section: dedupe row + python row under one
|
|
2295
|
+
heading (v0.36.0). Exists only while the peer serves its row. */
|
|
2296
|
+
var peerSection = peerSnap.status === "ready" ? E("div", { className: "gb-section" },
|
|
2297
|
+
E("div", { className: "gb-sectionTitle" }, t("sec.peer")),
|
|
2228
2298
|
E("div", { className: "gb-stack" },
|
|
2229
2299
|
E("div", { className: "gb-row" },
|
|
2300
|
+
E("span", { className: "gb-rowLabel" }, t("dedupe.label") + ":"),
|
|
2301
|
+
E("span", { className: "gb-rowValue" }, dedupe ? t("state.on") : t("state.off")),
|
|
2302
|
+
),
|
|
2303
|
+
E("div", { className: "gb-seg" },
|
|
2304
|
+
E("button", { type: "button", className: "gb-segBtn" + (dedupe ? " gb-segActive" : ""), onClick: function () { if (!dedupe) writeField("suppressPeerCordis", true); } }, t("switch.on")),
|
|
2305
|
+
E("button", { type: "button", className: "gb-segBtn" + (!dedupe ? " gb-segActive" : ""), onClick: function () { if (dedupe) writeField("suppressPeerCordis", false); } }, t("switch.off")),
|
|
2306
|
+
),
|
|
2307
|
+
E("p", { className: "gb-hint" }, t("dedupe.hint")),
|
|
2308
|
+
pythonOffered ? E("div", { className: "gb-row" },
|
|
2230
2309
|
E("span", { className: "gb-rowLabel" }, t("python.label") + ":"),
|
|
2231
2310
|
E("span", { className: "gb-rowValue" }, pythonOn
|
|
2232
2311
|
? (pythonDegraded ? t("python.on") + " · " + t("python.degraded") : t("python.on"))
|
|
2233
2312
|
: t("python.off")),
|
|
2234
|
-
),
|
|
2235
|
-
winHost ?
|
|
2313
|
+
) : null,
|
|
2314
|
+
pythonOffered && !winHost ? E("div", { className: "gb-seg" },
|
|
2236
2315
|
E("button", { type: "button", className: "gb-segBtn" + (pythonOn ? " gb-segActive" : ""), onClick: function () { if (!pythonOn) writePython(true); } }, t("switch.on")),
|
|
2237
2316
|
E("button", { type: "button", className: "gb-segBtn" + (!pythonOn ? " gb-segActive" : ""), onClick: function () { if (pythonOn) writePython(false); } }, t("switch.off")),
|
|
2238
|
-
),
|
|
2239
|
-
E("p", { className: "gb-hint" }, t("python.hint")),
|
|
2240
|
-
winHost ? E("p", { className: "gb-error" }, t("python.blocked")) : null,
|
|
2317
|
+
) : null,
|
|
2318
|
+
pythonOffered ? E("p", { className: "gb-hint" }, t("python.hint")) : null,
|
|
2319
|
+
pythonOffered && winHost ? E("p", { className: "gb-error" }, t("python.blocked")) : null,
|
|
2241
2320
|
pythonDegraded ? E("p", { className: "gb-error" }, t("python.degraded")) : null,
|
|
2242
2321
|
),
|
|
2243
2322
|
) : null;
|
|
@@ -2436,13 +2515,13 @@ window.__ModuleLoader__.load({
|
|
|
2436
2515
|
);
|
|
2437
2516
|
|
|
2438
2517
|
var bodyContent = E("div", { className: "gb-body" },
|
|
2439
|
-
dialectSection,
|
|
2440
2518
|
modeSection,
|
|
2441
2519
|
inlineSection,
|
|
2520
|
+
dialectSection,
|
|
2521
|
+
executorSection,
|
|
2442
2522
|
terminalSection,
|
|
2443
2523
|
toolsSection,
|
|
2444
|
-
|
|
2445
|
-
pythonSection,
|
|
2524
|
+
peerSection,
|
|
2446
2525
|
error ? E("p", { className: "gb-error" }, error) : null,
|
|
2447
2526
|
);
|
|
2448
2527
|
|
package/src/fastctx-bridge.js
CHANGED
|
@@ -43,7 +43,7 @@ export const GB_PREFIX = 'gb_'
|
|
|
43
43
|
export const gbName = (raw) => GB_PREFIX + raw
|
|
44
44
|
|
|
45
45
|
// The HOST registry rejects any tool without an `output` contract (issue #18,
|
|
46
|
-
// root cause 2) — the frozen schema + text renderer the
|
|
46
|
+
// root cause 2) — the frozen schema + text renderer the pwsh7
|
|
47
47
|
// definition ships, reused so both families speak one tool-result contract.
|
|
48
48
|
import { TOOL_OUTPUT_SCHEMA, renderTextContent } from './inline-tools.js'
|
|
49
49
|
|
package/src/index.js
CHANGED
|
@@ -56,7 +56,7 @@ import { fileURLToPath } from 'node:url'
|
|
|
56
56
|
|
|
57
57
|
import { PRESET_META, minimalPluginsFor, pluginsFor } from './compositions.js'
|
|
58
58
|
import { loadSchemastery } from './schemastery.js'
|
|
59
|
-
import { GITBASH_MSYS_ADDENDUM, GITBASH_ROUTE_ADDENDUM, mountInlineTools, resolveHostPwsh7 } from './inline-tools.js'
|
|
59
|
+
import { GITBASH_MSYS_ADDENDUM, GITBASH_ROUTE_ADDENDUM, GITBASH_ROUTE_ADDENDUM_NO_PWSH, mountInlineTools, resolveHostPwsh7 } from './inline-tools.js'
|
|
60
60
|
import { mountFastctx } from './fastctx-bridge.js'
|
|
61
61
|
|
|
62
62
|
/**
|
|
@@ -503,12 +503,12 @@ export const Config = Schema === null ? undefined : Schema.object({
|
|
|
503
503
|
*/
|
|
504
504
|
variantPresets: live(Schema.boolean().default(false)),
|
|
505
505
|
/**
|
|
506
|
-
* Publish `
|
|
506
|
+
* Publish `pwsh7` — a REAL PowerShell 7 tool over ctx.subprocess —
|
|
507
507
|
* while the host `pwsh` tool is denied (its executor is Git Bash on this
|
|
508
508
|
* host). Default ON; requires pwsh 7 on the machine (never a bundled
|
|
509
509
|
* payload) and danger-full-access per session.
|
|
510
510
|
*/
|
|
511
|
-
pwshTool: live(Schema.boolean().default(
|
|
511
|
+
pwshTool: live(Schema.boolean().default(false)),
|
|
512
512
|
/**
|
|
513
513
|
* Publish the FastCtx file tools (`gb_*`) through the local MCP bridge.
|
|
514
514
|
* Default ON; Windows-only payload, stands down entirely when dsh-ops is
|
|
@@ -2091,11 +2091,16 @@ export async function apply(ctx, config = {}) {
|
|
|
2091
2091
|
// every agent (routing is dialect-independent), while the MSYS
|
|
2092
2092
|
// sentence only describes the world the dialect switch creates.
|
|
2093
2093
|
// Idempotent by marker: assemble may run more than once per agent.
|
|
2094
|
+
// The routing sentence follows the pwsh switch (v0.37.0): while the
|
|
2095
|
+
// pwsh7 tool is off (the default) the sentence must NOT name it —
|
|
2096
|
+
// a route to a tool the agent cannot see only teaches the model to
|
|
2097
|
+
// call a denied name.
|
|
2094
2098
|
if (assembly && typeof assembly === 'object' && Array.isArray(assembly.tools)) {
|
|
2099
|
+
const routeSentence = liveSettings.pwshTool() === true ? GITBASH_ROUTE_ADDENDUM : GITBASH_ROUTE_ADDENDUM_NO_PWSH
|
|
2095
2100
|
for (const tool of assembly.tools) {
|
|
2096
2101
|
if (tool && tool.name === 'bash' && typeof tool.description === 'string'
|
|
2097
2102
|
&& !tool.description.includes('Prefer this bash tool')) {
|
|
2098
|
-
tool.description += '\n' +
|
|
2103
|
+
tool.description += '\n' + routeSentence
|
|
2099
2104
|
+ (applies && dialect.posixPaths === true ? '\n' + GITBASH_MSYS_ADDENDUM : '')
|
|
2100
2105
|
}
|
|
2101
2106
|
}
|
|
@@ -2626,7 +2631,7 @@ export async function apply(ctx, config = {}) {
|
|
|
2626
2631
|
return subprocess.spawn(spec)
|
|
2627
2632
|
},
|
|
2628
2633
|
pwshPath: resolveHostPwsh7({ exists: existsSync }),
|
|
2629
|
-
pwshEnabled: () => liveSettings.pwshTool(),
|
|
2634
|
+
pwshEnabled: () => liveSettings.pwshTool() === true,
|
|
2630
2635
|
msysToWin: (p) => translateMsysPath(p, buildTranslateEnv(readConfiguredBashPath())),
|
|
2631
2636
|
echo: (text) => (liveSettings.dialect().posixPaths === true ? windowsToMsys(text) : text),
|
|
2632
2637
|
log: (m) => console.log(TAG + ' ' + m),
|
package/src/inline-tools.js
CHANGED
|
@@ -27,7 +27,7 @@
|
|
|
27
27
|
* executor is ctx.shell, which on this host IS Git Bash — a pwsh tool
|
|
28
28
|
* that runs bash is a lie to the model);
|
|
29
29
|
* 2. `ops_*` tools present (dsh-ops installed) -> our FastCtx bridge and
|
|
30
|
-
*
|
|
30
|
+
* pwsh7 stands down; the official bash activation still runs, the
|
|
31
31
|
* two command surfaces are complements, not duplicates;
|
|
32
32
|
* 3. `bash` already present (variant presets on, or a future official
|
|
33
33
|
* change) -> touch nothing, so the variantPresets switch and this path
|
|
@@ -93,14 +93,24 @@ export function inlineNeeds(names) {
|
|
|
93
93
|
|
|
94
94
|
/**
|
|
95
95
|
* The routing addendum appended to the `bash` tool's description through the
|
|
96
|
-
* system-prompt assemble waterfall.
|
|
97
|
-
*
|
|
96
|
+
* system-prompt assemble waterfall. TWO variants (v0.37.0, user decision):
|
|
97
|
+
* the pwsh tool is OFF by default, and a routing sentence that names a tool
|
|
98
|
+
* the agent cannot see only teaches the model to call a denied name. The ON
|
|
99
|
+
* variant names `pwsh` (the real PowerShell 7 tool that shadows the fake
|
|
100
|
+
* global one); the OFF variant states bash-only routing. Both hold regardless
|
|
101
|
+
* of the path dialect a delegate sees.
|
|
98
102
|
*/
|
|
99
103
|
export const GITBASH_ROUTE_ADDENDUM = [
|
|
100
|
-
'Prefer this bash tool for ALL commands; use
|
|
104
|
+
'Prefer this bash tool for ALL commands; use the pwsh7 tool ONLY when a Windows-native capability (cmdlets, registry, services, WMI) is truly required.',
|
|
101
105
|
'Fix failed bash commands in bash — never switch shells mid-task, never embed `pwsh -Command` inside a bash command (variable expansion and output encoding break there).',
|
|
102
106
|
].join('\n')
|
|
103
107
|
|
|
108
|
+
/** The bash-only routing variant, used while the pwsh switch is off (the default). */
|
|
109
|
+
export const GITBASH_ROUTE_ADDENDUM_NO_PWSH = [
|
|
110
|
+
'Prefer this bash tool for ALL commands — it is this host\'s shell.',
|
|
111
|
+
'Fix failed commands in bash; there is no PowerShell tool on this host.',
|
|
112
|
+
].join('\n')
|
|
113
|
+
|
|
104
114
|
/**
|
|
105
115
|
* The dialect addendum (MSYS facts) — appended ONLY while this plugin's path
|
|
106
116
|
* dialect is on for the assembling agent, because it describes the /c/ world
|
|
@@ -158,7 +168,7 @@ export function resolveHostPwsh7({ env = process.env, exists, platform = process
|
|
|
158
168
|
return ''
|
|
159
169
|
}
|
|
160
170
|
|
|
161
|
-
/** Arguments `
|
|
171
|
+
/** Arguments `pwsh7` accepts — strict: anything else is rejected. */
|
|
162
172
|
export const PWSH_ARGUMENTS = Object.freeze(['command', 'script_path', 'workdir', 'timeoutMs'])
|
|
163
173
|
|
|
164
174
|
const PWSH_DEFAULT_TIMEOUT_MS = 120_000
|
|
@@ -185,7 +195,7 @@ export function pwshArgv(pwsh, args, { msysToWin } = {}) {
|
|
|
185
195
|
}
|
|
186
196
|
|
|
187
197
|
/**
|
|
188
|
-
* Validate one
|
|
198
|
+
* Validate one pwsh7 call's arguments. Strict like ops_bash: an
|
|
189
199
|
* undeclared key is a hard error (the host bash/pwsh tools accept
|
|
190
200
|
* `run_in_background`; this tool does not, and a silent ignore would leave a
|
|
191
201
|
* server occupying the call until timeout). Pure.
|
|
@@ -282,10 +292,8 @@ export async function activateOfficialBash(agent, toolBashHref, createScopeFn, l
|
|
|
282
292
|
*/
|
|
283
293
|
export function mountInlineTools(ctx, deps) {
|
|
284
294
|
const { tools, agents, createScope, allowed, spawn, pwshPath, echo, log } = deps
|
|
285
|
-
/** agent -> { timer, scope, denyPwsh }; named `tracked` because `agents` above is the host service */
|
|
295
|
+
/** agent -> { timer, scope, denyPwsh, pwshScope }; named `tracked` because `agents` above is the host service */
|
|
286
296
|
const tracked = new Map()
|
|
287
|
-
let pwshPublished = false
|
|
288
|
-
let pwshDisposer = undefined
|
|
289
297
|
let toolBashHrefPromise
|
|
290
298
|
|
|
291
299
|
const faceNames = (agent) => {
|
|
@@ -297,27 +305,28 @@ export function mountInlineTools(ctx, deps) {
|
|
|
297
305
|
}
|
|
298
306
|
}
|
|
299
307
|
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
308
|
-
const publishPwsh = () => {
|
|
309
|
-
if (pwshPublished) return
|
|
308
|
+
/**
|
|
309
|
+
* Provide the additive `pwsh7` tool inside one agent-owned scope (v0.37.0).
|
|
310
|
+
* The name never collides with the host's fake global `pwsh`, so this is a
|
|
311
|
+
* pure ADDITION — it shadows nothing and requires no deny juggling. The
|
|
312
|
+
* scope keeps the registration revertible at agent disposal.
|
|
313
|
+
*/
|
|
314
|
+
const providePwsh = (agent, state) => {
|
|
315
|
+
if (state.pwshScope) return
|
|
310
316
|
if (typeof spawn !== 'function' || !pwshPath) return
|
|
311
|
-
if (
|
|
312
|
-
const registry = tools(ctx)
|
|
313
|
-
if (!registry || typeof registry.register !== 'function') return
|
|
317
|
+
if (!createScope) return
|
|
314
318
|
try {
|
|
315
|
-
const
|
|
316
|
-
|
|
317
|
-
|
|
318
|
-
|
|
319
|
+
const scope = createScope(agent.ctx)
|
|
320
|
+
const registry = scope.ctx?.tools
|
|
321
|
+
if (!registry || typeof registry.register !== 'function') {
|
|
322
|
+
void scope.dispose().catch(() => {})
|
|
323
|
+
return
|
|
324
|
+
}
|
|
325
|
+
registry.register(gitbashPwshDefinition({ pwsh: pwshPath, spawn, allowed, msysToWin: deps.msysToWin, echo }))
|
|
326
|
+
state.pwshScope = scope
|
|
327
|
+
log(`pwsh7 tool provided for this agent (real PowerShell 7 at ${pwshPath})`)
|
|
319
328
|
} catch (error) {
|
|
320
|
-
log(`
|
|
329
|
+
log(`pwsh7 tool registration failed for this agent: ${error?.message ?? error}`)
|
|
321
330
|
}
|
|
322
331
|
}
|
|
323
332
|
|
|
@@ -340,21 +349,37 @@ export function mountInlineTools(ctx, deps) {
|
|
|
340
349
|
let state = tracked.get(agent)
|
|
341
350
|
if (state?.timer) { clearTimeout(state.timer); state.timer = undefined }
|
|
342
351
|
if (!state) {
|
|
343
|
-
state = { timer: undefined, scope: undefined, denyPwsh: undefined }
|
|
352
|
+
state = { timer: undefined, scope: undefined, denyPwsh: undefined, pwshScope: undefined }
|
|
344
353
|
tracked.set(agent, state)
|
|
345
354
|
}
|
|
346
|
-
|
|
347
|
-
|
|
348
|
-
|
|
349
|
-
|
|
350
|
-
|
|
351
|
-
|
|
352
|
-
|
|
353
|
-
|
|
354
|
-
|
|
355
|
-
|
|
356
|
-
|
|
357
|
-
|
|
355
|
+
// The pwsh face has three facts (v0.37.0, user decision — the pwsh7 tool
|
|
356
|
+
// is OFF by default, and its switch lives ONLY on this plugin's row):
|
|
357
|
+
// dsh-ops present -> hands off entirely (their host-pwsh story stands;
|
|
358
|
+
// our pwsh7 and our deny would both be duplicates).
|
|
359
|
+
// the fake global `pwsh` (executor = ctx.shell = Git Bash) is DENIED
|
|
360
|
+
// per agent in EVERY case — the lying name is never
|
|
361
|
+
// callable, and `pwsh7` cannot be caught by it.
|
|
362
|
+
// switch ON -> the REAL PowerShell 7 tool is ADDED as `pwsh7` in
|
|
363
|
+
// an agent-owned scope (pure addition, no shadowing).
|
|
364
|
+
// The row switch is re-read per reconcile, so a flip lands at the next
|
|
365
|
+
// agent (or on the next event after a hot toggle).
|
|
366
|
+
if (needs.denyPwsh) {
|
|
367
|
+
if (needs.opsPresent) {
|
|
368
|
+
// hands off
|
|
369
|
+
} else {
|
|
370
|
+
if (!state.denyPwsh) {
|
|
371
|
+
// The deny MUST go through the AGENT's scoped context
|
|
372
|
+
// (`agent.ctx.tools`, the dsh-ops-proven shape): on the ROOT context
|
|
373
|
+
// the host throws "requires a scoped context" and the deny silently
|
|
374
|
+
// never exists (issue #18, root cause 3).
|
|
375
|
+
try {
|
|
376
|
+
const deny = agent.ctx?.tools?.restrict?.({ deny: ['pwsh'] })
|
|
377
|
+
if (typeof deny === 'function') state.denyPwsh = deny
|
|
378
|
+
} catch (error) {
|
|
379
|
+
log(`fake-pwsh deny failed: ${error?.message ?? error}`)
|
|
380
|
+
}
|
|
381
|
+
}
|
|
382
|
+
if (deps.pwshEnabled && deps.pwshEnabled() === true) providePwsh(agent, state)
|
|
358
383
|
}
|
|
359
384
|
}
|
|
360
385
|
if (needs.needsBash && !state.scope) {
|
|
@@ -371,13 +396,6 @@ export function mountInlineTools(ctx, deps) {
|
|
|
371
396
|
}
|
|
372
397
|
}).catch(() => { /* logged inside activateOfficialBash */ })
|
|
373
398
|
}
|
|
374
|
-
// The pwsh replacement follows the ops_ presence: dsh-ops already ships a
|
|
375
|
-
// PowerShell story through the HOST pwsh tool — which our own deny would
|
|
376
|
-
// otherwise silence — so ours fills that gap instead of duplicating tools.
|
|
377
|
-
// The row switch is re-read per reconcile too, so a flip lands at the
|
|
378
|
-
// next agent (or on the next event after a hot toggle).
|
|
379
|
-
if (needs.opsPresent || (deps.pwshEnabled && deps.pwshEnabled() !== true)) unpublishPwsh()
|
|
380
|
-
else publishPwsh()
|
|
381
399
|
}
|
|
382
400
|
|
|
383
401
|
const teardown = (agent) => {
|
|
@@ -386,6 +404,7 @@ export function mountInlineTools(ctx, deps) {
|
|
|
386
404
|
tracked.delete(agent)
|
|
387
405
|
if (state.timer) clearTimeout(state.timer)
|
|
388
406
|
if (state.denyPwsh) { try { state.denyPwsh() } catch { /* already lifted */ } }
|
|
407
|
+
if (state.pwshScope) { void state.pwshScope.dispose().catch(() => {}) }
|
|
389
408
|
if (state.scope) { void state.scope.dispose().catch(() => {}) }
|
|
390
409
|
}
|
|
391
410
|
|
|
@@ -400,14 +419,15 @@ export function mountInlineTools(ctx, deps) {
|
|
|
400
419
|
for (const agent of agents?.(ctx)?.list?.() ?? []) {
|
|
401
420
|
try { reconcile(agent) } catch { /* one broken agent never blocks the rest */ }
|
|
402
421
|
}
|
|
403
|
-
// CALL-LAYER GUARD (v0.35.2, second independent layer):
|
|
404
|
-
//
|
|
405
|
-
//
|
|
406
|
-
//
|
|
422
|
+
// CALL-LAYER GUARD (v0.35.2, second independent layer; v0.37.0 wording):
|
|
423
|
+
// a `pwsh` call ALWAYS reaches the fake global tool (executor = ctx.shell
|
|
424
|
+
// = Git Bash on this host) — our real tool is `pwsh7`, a different name —
|
|
425
|
+
// so the fake name is denied at dispatch unconditionally, with the
|
|
426
|
+
// replacement named.
|
|
407
427
|
ctx.on('tools/pre-execute', (exec, next) => {
|
|
408
428
|
try {
|
|
409
429
|
if (exec?.name === 'pwsh') {
|
|
410
|
-
return { kind: 'deny', reason: 'the host pwsh tool would run Git Bash on this host (its executor was replaced). Use the bash tool for commands
|
|
430
|
+
return { kind: 'deny', reason: 'the host pwsh tool would run Git Bash on this host (its executor was replaced). Use the bash tool for commands. If you need Windows-native work (registry, services, WMI), the real PowerShell 7 tool is pwsh7 — enable it on the dsh-gitbash-shell settings card if it is not present.' }
|
|
411
431
|
}
|
|
412
432
|
} catch { /* never block the waterfall */ }
|
|
413
433
|
return next()
|
|
@@ -420,7 +440,6 @@ export function mountInlineTools(ctx, deps) {
|
|
|
420
440
|
ctx.effect(() => () => {
|
|
421
441
|
for (const agent of [...tracked.keys()]) teardown(agent)
|
|
422
442
|
tracked.clear()
|
|
423
|
-
unpublishPwsh()
|
|
424
443
|
}, 'dsh-gitbash-shell: inline tool patching')
|
|
425
444
|
}
|
|
426
445
|
|
|
@@ -441,7 +460,13 @@ export function mountInlineTools(ctx, deps) {
|
|
|
441
460
|
*/
|
|
442
461
|
export function gitbashPwshDefinition({ pwsh, spawn, allowed, msysToWin, echo }) {
|
|
443
462
|
return {
|
|
444
|
-
|
|
463
|
+
// v0.37.0 (user decision): the tool is named `pwsh7` — NOT `pwsh` (that
|
|
464
|
+
// name belongs to the host's fake global tool, whose executor is
|
|
465
|
+
// ctx.shell = Git Bash on this host and stays denied) and NOT
|
|
466
|
+
// `gitbash_pwsh` (which read like a bash/pwsh hybrid). `pwsh7` is purely
|
|
467
|
+
// additive: it never shadows anything, and it exists only on hosts where
|
|
468
|
+
// a real PowerShell 7 is installed.
|
|
469
|
+
name: 'pwsh7',
|
|
445
470
|
description: gitbashPwshDescription(),
|
|
446
471
|
parameters: {
|
|
447
472
|
type: 'object',
|
|
@@ -462,7 +487,7 @@ export function gitbashPwshDefinition({ pwsh, spawn, allowed, msysToWin, echo })
|
|
|
462
487
|
const invalid = validatePwshArgs(args)
|
|
463
488
|
if (invalid) throw new Error(invalid)
|
|
464
489
|
if (!allowed(exec?.agent?.session)) {
|
|
465
|
-
throw new Error('
|
|
490
|
+
throw new Error('pwsh7 requires danger-full-access for this session; this channel has no file sandbox.')
|
|
466
491
|
}
|
|
467
492
|
const built = pwshArgv(pwsh, args, { msysToWin })
|
|
468
493
|
if (built.error) throw new Error(built.error)
|