@xiaoso/dsh-tool-plus 0.1.8-beta.4 → 0.1.8
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/README.en.md +4 -7
- package/README.md +123 -126
- package/lib/client.js +22 -11
- package/lib/index.mjs +12 -12
- package/lib/{scrapers-BWgeG8qC.mjs → scrapers-D1uU6YiZ.mjs} +1 -1
- package/lib/types/client/ToolPlusSection.d.ts +3 -2
- package/lib/types/client/locales.d.ts +1 -1
- package/lib/types/config/fields.d.ts +1 -1
- package/lib/{utils-CdKv-8uE.mjs → utils-CdLvJy_P.mjs} +1 -1
- package/package.json +151 -151
- package/presets/package.json +1 -1
package/README.en.md
CHANGED
|
@@ -38,16 +38,13 @@ Install **both** the plugin and the presets:
|
|
|
38
38
|
### Install from npm (recommended)
|
|
39
39
|
|
|
40
40
|
```sh
|
|
41
|
-
dsh plugin --profile web add @xiaoso/dsh-tool-plus
|
|
41
|
+
dsh plugin --profile web add --allow-build=@xiaoso/dsh-tool-plus @xiaoso/dsh-tool-plus
|
|
42
42
|
```
|
|
43
43
|
|
|
44
|
-
|
|
44
|
+
`--allow-build` lets this package's install script run; it requires pnpm ≥ 10.4, and on pnpm 11+ omitting it fails the install with `ERR_PNPM_IGNORED_BUILDS`. If your pnpm is too old for the flag, allow the script first and re-run:
|
|
45
45
|
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
```sh
|
|
49
|
-
dsh plugin --profile web add github:xiaoso456/dsh-tool-plus
|
|
50
|
-
```
|
|
46
|
+
- Append to `~/.dsh/profiles/web/pnpm-workspace.yaml`: `allowBuilds:` and ` '@xiaoso/dsh-tool-plus': true`
|
|
47
|
+
- Or run `cd ~/.dsh/profiles/web && pnpm approve-builds --all` (pnpm ≥ 10.32)
|
|
51
48
|
|
|
52
49
|
### Local development
|
|
53
50
|
|
package/README.md
CHANGED
|
@@ -1,126 +1,123 @@
|
|
|
1
|
-
# dsh-tool-plus — DeepSeek Harness 基础工具增强
|
|
2
|
-
|
|
3
|
-
简体中文 | [English](./README.en.md)
|
|
4
|
-
|
|
5
|
-
[](https://www.npmjs.com/package/@xiaoso/dsh-tool-plus)
|
|
6
|
-
[](LICENSE)
|
|
7
|
-
[](https://nodejs.org)
|
|
8
|
-
[]()
|
|
9
|
-
|
|
10
|
-
DeepSeek Harness 基础工具增强:持久 bash、结构化 read、多模式 edit、原子 write、全文搜索、图像直读,一个插件全覆盖。基于 [Oh My Pi](https://github.com/can1357/oh-my-pi) 内核移植,安装后自动接管官方 bash / pwsh / 文件 / 搜索工具,另有可选的 `ast_grep` / `ast_edit` 结构化搜索与重写。
|
|
11
|
-
|
|
12
|
-
## 功能特性
|
|
13
|
-
|
|
14
|
-
- **bash**:持久 shell,`cd`、`export` 跨调用保持状态;冗长日志(git/npm/cargo…)自动压缩;超长输出只保留头尾,完整内容落盘可回读;长命令自动转后台;可选拦截 `cat`、`grep`、`find`、`sed -i`,引导改用专用工具
|
|
15
|
-
- **安全删除**:`rm` 默认把文件移入系统回收站而非永久删除,误删可恢复;需要真删时用 `command rm`
|
|
16
|
-
- **read**:按行区间精准读取(支持 `:N-M`、`:raw`、多区间);大代码文件默认返回结构摘要,细节按需展开;zip/tar 归档、SQLite、notebook、PDF 直接读;PNG / JPEG / WebP / GIF 图片直读,超大图自动缩放;可抓取网页内容(含网页内图片);SPA 站点(内容由 JS 动态渲染,如 excalidraw.com)自动改用本机浏览器渲染后抓取
|
|
17
|
-
- **write**:原子写入,返回修改 diff;支持补丁式写入,可直接写 zip/tar 归档成员与 SQLite 数据
|
|
18
|
-
- **edit**:replace 默认,另支持 patch / hashline / apply-patch 三种补丁格式;多段编辑、唯一性校验、空白差异模糊匹配
|
|
19
|
-
- **grep / glob**:全文搜索与文件名匹配;mtime 排序、上下文行、忽略规则可配置
|
|
20
|
-
- **ast_grep / ast_edit**(可选):基于语法树的结构化代码搜索与重写,可在设置中开启
|
|
21
|
-
- **agent 预设**:标准增强版 / PTC(Code Mode)两套配套模板,一条命令安装(见安装章节)
|
|
22
|
-
|
|
23
|
-
设置面板(Bash 工具页):
|
|
24
|
-
|
|
25
|
-

|
|
26
|
-
|
|
27
|
-
## 推荐环境与配置
|
|
28
|
-
|
|
29
|
-
- **完全权限模式**:建议在 `danger-full-access` 下使用本插件,可避免沙箱模式下文件写入被误拦。
|
|
30
|
-
|
|
31
|
-
## 安装
|
|
32
|
-
|
|
33
|
-
插件与预设**都要安装**:
|
|
34
|
-
|
|
35
|
-
- **工具插件**:提供全套工具,自动接管官方 bash / pwsh / 文件 / 搜索工具;
|
|
36
|
-
- **agent 预设**:官方预设里没有这些工具的配置,直接用默认配置会缺能力——标准版 / PTC 两套模板就是来补齐这块的。
|
|
37
|
-
|
|
38
|
-
### 从 npm 安装(推荐)
|
|
39
|
-
|
|
40
|
-
```sh
|
|
41
|
-
dsh plugin --profile web add @xiaoso/dsh-tool-plus
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
pnpm
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
## License
|
|
125
|
-
|
|
126
|
-
[MIT](LICENSE),第三方组件许可见 [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md)。
|
|
1
|
+
# dsh-tool-plus — DeepSeek Harness 基础工具增强
|
|
2
|
+
|
|
3
|
+
简体中文 | [English](./README.en.md)
|
|
4
|
+
|
|
5
|
+
[](https://www.npmjs.com/package/@xiaoso/dsh-tool-plus)
|
|
6
|
+
[](LICENSE)
|
|
7
|
+
[](https://nodejs.org)
|
|
8
|
+
[]()
|
|
9
|
+
|
|
10
|
+
DeepSeek Harness 基础工具增强:持久 bash、结构化 read、多模式 edit、原子 write、全文搜索、图像直读,一个插件全覆盖。基于 [Oh My Pi](https://github.com/can1357/oh-my-pi) 内核移植,安装后自动接管官方 bash / pwsh / 文件 / 搜索工具,另有可选的 `ast_grep` / `ast_edit` 结构化搜索与重写。
|
|
11
|
+
|
|
12
|
+
## 功能特性
|
|
13
|
+
|
|
14
|
+
- **bash**:持久 shell,`cd`、`export` 跨调用保持状态;冗长日志(git/npm/cargo…)自动压缩;超长输出只保留头尾,完整内容落盘可回读;长命令自动转后台;可选拦截 `cat`、`grep`、`find`、`sed -i`,引导改用专用工具
|
|
15
|
+
- **安全删除**:`rm` 默认把文件移入系统回收站而非永久删除,误删可恢复;需要真删时用 `command rm`
|
|
16
|
+
- **read**:按行区间精准读取(支持 `:N-M`、`:raw`、多区间);大代码文件默认返回结构摘要,细节按需展开;zip/tar 归档、SQLite、notebook、PDF 直接读;PNG / JPEG / WebP / GIF 图片直读,超大图自动缩放;可抓取网页内容(含网页内图片);SPA 站点(内容由 JS 动态渲染,如 excalidraw.com)自动改用本机浏览器渲染后抓取
|
|
17
|
+
- **write**:原子写入,返回修改 diff;支持补丁式写入,可直接写 zip/tar 归档成员与 SQLite 数据
|
|
18
|
+
- **edit**:replace 默认,另支持 patch / hashline / apply-patch 三种补丁格式;多段编辑、唯一性校验、空白差异模糊匹配
|
|
19
|
+
- **grep / glob**:全文搜索与文件名匹配;mtime 排序、上下文行、忽略规则可配置
|
|
20
|
+
- **ast_grep / ast_edit**(可选):基于语法树的结构化代码搜索与重写,可在设置中开启
|
|
21
|
+
- **agent 预设**:标准增强版 / PTC(Code Mode)两套配套模板,一条命令安装(见安装章节)
|
|
22
|
+
|
|
23
|
+
设置面板(Bash 工具页):
|
|
24
|
+
|
|
25
|
+

|
|
26
|
+
|
|
27
|
+
## 推荐环境与配置
|
|
28
|
+
|
|
29
|
+
- **完全权限模式**:建议在 `danger-full-access` 下使用本插件,可避免沙箱模式下文件写入被误拦。
|
|
30
|
+
|
|
31
|
+
## 安装
|
|
32
|
+
|
|
33
|
+
插件与预设**都要安装**:
|
|
34
|
+
|
|
35
|
+
- **工具插件**:提供全套工具,自动接管官方 bash / pwsh / 文件 / 搜索工具;
|
|
36
|
+
- **agent 预设**:官方预设里没有这些工具的配置,直接用默认配置会缺能力——标准版 / PTC 两套模板就是来补齐这块的。
|
|
37
|
+
|
|
38
|
+
### 从 npm 安装(推荐)
|
|
39
|
+
|
|
40
|
+
```sh
|
|
41
|
+
dsh plugin --profile web add --allow-build=@xiaoso/dsh-tool-plus @xiaoso/dsh-tool-plus
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
`--allow-build` 放行本包的安装脚本,需要 pnpm ≥ 10.4;pnpm 11 起不加会直接报 `ERR_PNPM_IGNORED_BUILDS` 装不上。用不了该参数(pnpm 版本过低)时,先任选一种放行方式,再重跑安装命令:
|
|
45
|
+
|
|
46
|
+
- 往 `~/.dsh/profiles/web/pnpm-workspace.yaml` 追加两行:`allowBuilds:` 与 ` '@xiaoso/dsh-tool-plus': true`
|
|
47
|
+
- 或执行 `cd ~/.dsh/profiles/web && pnpm approve-builds --all`(需 pnpm ≥ 10.32)
|
|
48
|
+
|
|
49
|
+
### 本地开发
|
|
50
|
+
|
|
51
|
+
```sh
|
|
52
|
+
dsh plugin --profile web add link:<本仓库路径>
|
|
53
|
+
```
|
|
54
|
+
|
|
55
|
+
### 预设安装
|
|
56
|
+
|
|
57
|
+
**方法一 · 使用 npx 脚本安装**
|
|
58
|
+
|
|
59
|
+
```sh
|
|
60
|
+
npx @xiaoso/dsh-tool-plus-presets
|
|
61
|
+
```
|
|
62
|
+
|
|
63
|
+
**方法二 · 使用大模型配置预设**(不依赖上面的包)——把下面这段发给一个能改你电脑上文件的 AI 会话:
|
|
64
|
+
|
|
65
|
+
```text
|
|
66
|
+
请为我安装 DeepSeek Harness 的两个增强 agent 预设。
|
|
67
|
+
|
|
68
|
+
1. 找到全局 dsh 包内的官方预设目录 config/agent-presets/,其中有 standard 与 code 两套模板,
|
|
69
|
+
各含 preset.yml 和 agent.cordis.yml。(Windows 在 npm 全局 node_modules\@deepseek-ai\dsh\ 下;
|
|
70
|
+
macOS/Linux 先跑 npm root -g 定位;找不到就全盘搜索已安装的 @deepseek-ai/dsh 包。)
|
|
71
|
+
2. 在 ~/.dsh/.agent-presets/ 下新建 tool-plus-standard 与 tool-plus-ptc 两个目录。
|
|
72
|
+
|
|
73
|
+
3. tool-plus-standard:把官方 standard 的两个文件复制过来,然后修改:
|
|
74
|
+
- preset.yml 整个替换为:
|
|
75
|
+
name: Tool Plus 标准增强版
|
|
76
|
+
description: 标准模式全部能力,文件/Shell 工具集替换为 @xiaoso/dsh-tool-plus,pwsh 默认禁用
|
|
77
|
+
order: 2
|
|
78
|
+
- agent.cordis.yml:
|
|
79
|
+
a. 把 id: tool-bash 的条目改为
|
|
80
|
+
- id: tool-plus
|
|
81
|
+
name: '@xiaoso/dsh-tool-plus'
|
|
82
|
+
disabled: true
|
|
83
|
+
b. 把 id: tool-pwsh 条目的平台条件禁用改成固定一行 disabled: true
|
|
84
|
+
c. 整块删除 id: tool-fs 和 id: tool-fs-search 两个条目(后者还带 sampleOverCapGlobResults 配置)
|
|
85
|
+
|
|
86
|
+
4. tool-plus-ptc:把官方 code 的两个文件复制过来,做第 3 步完全相同的三处修改,
|
|
87
|
+
但 preset.yml 替换为:
|
|
88
|
+
name: Tool Plus PTC 增强版
|
|
89
|
+
description: PTC(Code Mode) 全部能力,文件/Shell 工具集替换为 @xiaoso/dsh-tool-plus,pwsh 默认禁用
|
|
90
|
+
order: 3
|
|
91
|
+
|
|
92
|
+
5. 完成后列出这两个目录的文件树,并提醒我重启运行中的 dsh 让预设生效。
|
|
93
|
+
```
|
|
94
|
+
|
|
95
|
+
两法效果相同:文件落到 `~/.dsh/.agent-presets/`,重启 dsh 后在会话里选用预设即生效。
|
|
96
|
+
|
|
97
|
+
## 配置
|
|
98
|
+
|
|
99
|
+
开箱即用,无需配置。需要微调时常用项有:后台阈值(`autoBackgroundMs`)、超时(`defaultTimeoutMs` / `maxTimeoutMs`)、输出截断窗口、编辑默认模式(`editMode`,默认 `replace`)、结构化摘要开关(`readSummarizeEnabled`)。抓取相关:可切换网页转 Markdown 的后端(`fetchReader`,含浏览器 JS 渲染——SPA 页面),设置面板里可一键「探测浏览器」查看本机可用的 Chrome/Edge。
|
|
100
|
+
|
|
101
|
+
## 环境要求
|
|
102
|
+
|
|
103
|
+
- **dsh CLI**:需全局安装,`npm i -g @deepseek-ai/dsh`
|
|
104
|
+
- **Node.js** ≥ 22.19 或 ≥ 24
|
|
105
|
+
- **Git Bash**(推荐):Windows 上作为 bash 执行环境
|
|
106
|
+
- 适用于 DeepSeek Harness `dsh` v0.1.5-rc.1(pre-release,接口可能变动)
|
|
107
|
+
|
|
108
|
+
## 注意事项
|
|
109
|
+
|
|
110
|
+
- 不提供单独的 `pwsh` 工具:shell 场景由功能更全的持久 `bash` 统一承担
|
|
111
|
+
|
|
112
|
+
## 构建
|
|
113
|
+
|
|
114
|
+
```sh
|
|
115
|
+
pnpm install
|
|
116
|
+
pnpm build # tsc 声明 + tsdown 打包 + 资产复制
|
|
117
|
+
pnpm typecheck
|
|
118
|
+
pnpm test # 含真实 bash 用例,Windows 需 Git Bash,缺失自动 skip
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
## License
|
|
122
|
+
|
|
123
|
+
[MIT](LICENSE),第三方组件许可见 [THIRD_PARTY_NOTICES.md](THIRD_PARTY_NOTICES.md)。
|
package/lib/client.js
CHANGED
|
@@ -12,6 +12,7 @@ window.__ModuleLoader__.load({
|
|
|
12
12
|
//#region src/config/fields.ts
|
|
13
13
|
/** Field group ids -> locale key of the group heading. */
|
|
14
14
|
const TOOL_PLUS_GROUP_LABELS = {
|
|
15
|
+
cards: "groupCards",
|
|
15
16
|
timing: "groupTiming",
|
|
16
17
|
output: "groupOutput",
|
|
17
18
|
truncation: "groupTruncation",
|
|
@@ -32,6 +33,15 @@ window.__ModuleLoader__.load({
|
|
|
32
33
|
* single source; settings.ts reads from here.
|
|
33
34
|
*/
|
|
34
35
|
const TOOL_PLUS_FIELDS = [
|
|
36
|
+
{
|
|
37
|
+
name: "webCards",
|
|
38
|
+
kind: "boolean",
|
|
39
|
+
default: true,
|
|
40
|
+
labelKey: "webCards",
|
|
41
|
+
hintKey: "webCardsHint",
|
|
42
|
+
group: "cards",
|
|
43
|
+
tool: "web"
|
|
44
|
+
},
|
|
35
45
|
{
|
|
36
46
|
name: "enableRunInBackground",
|
|
37
47
|
kind: "boolean",
|
|
@@ -95,15 +105,6 @@ window.__ModuleLoader__.load({
|
|
|
95
105
|
group: "behavior",
|
|
96
106
|
tool: "bash"
|
|
97
107
|
},
|
|
98
|
-
{
|
|
99
|
-
name: "webCards",
|
|
100
|
-
kind: "boolean",
|
|
101
|
-
default: true,
|
|
102
|
-
labelKey: "webCards",
|
|
103
|
-
hintKey: "webCardsHint",
|
|
104
|
-
group: "behavior",
|
|
105
|
-
tool: "bash"
|
|
106
|
-
},
|
|
107
108
|
{
|
|
108
109
|
name: "autoBackgroundMs",
|
|
109
110
|
kind: "number",
|
|
@@ -740,6 +741,11 @@ window.__ModuleLoader__.load({
|
|
|
740
741
|
];
|
|
741
742
|
/** Tool tabs in nav order; empty `fields` = no configurable settings. */
|
|
742
743
|
const TOOL_PLUS_TABS = [
|
|
744
|
+
{
|
|
745
|
+
id: "web",
|
|
746
|
+
labelKey: "tabWeb",
|
|
747
|
+
fields: TOOL_PLUS_FIELDS.filter((f) => f.tool === "web").map((f) => f.name)
|
|
748
|
+
},
|
|
743
749
|
{
|
|
744
750
|
id: "bash",
|
|
745
751
|
labelKey: "tabBash",
|
|
@@ -2105,8 +2111,9 @@ window.__ModuleLoader__.load({
|
|
|
2105
2111
|
/**
|
|
2106
2112
|
* Tool Plus settings section — the plugin's own page in the Settings panel,
|
|
2107
2113
|
* registered into the `settings.section` slot (nav id `tool-plus`). The page
|
|
2108
|
-
* renders one tab per tool (Bash / Read / Write & Edit / Grep /
|
|
2109
|
-
* Ast
|
|
2114
|
+
* renders one tab per tool (Bash / Read / Write & Edit / Grep / Glob /
|
|
2115
|
+
* Ast Grep / Ast Edit) plus a leading `Web 卡片` tab for the plugin-wide
|
|
2116
|
+
* browser-card switch; switching a tab shows that tool's configurable
|
|
2110
2117
|
* fields, while tools without global settings show a placeholder. Only the
|
|
2111
2118
|
* active tool's panel is rendered; the shared staged form over the
|
|
2112
2119
|
* `tool-plus` namespace lives at the page level, so drafts survive switching
|
|
@@ -2637,6 +2644,7 @@ window.__ModuleLoader__.load({
|
|
|
2637
2644
|
nav: "Tool Plus",
|
|
2638
2645
|
pageTitle: "Tool Plus 工具配置",
|
|
2639
2646
|
pageDescription: "按工具切换,调整每个工具的全局配置;保存后对新调用生效。",
|
|
2647
|
+
tabWeb: "Web 卡片",
|
|
2640
2648
|
tabBash: "Bash",
|
|
2641
2649
|
tabRead: "Read",
|
|
2642
2650
|
tabWriteEdit: "Write & Edit",
|
|
@@ -2645,6 +2653,7 @@ window.__ModuleLoader__.load({
|
|
|
2645
2653
|
tabAstGrep: "Ast Grep",
|
|
2646
2654
|
tabAstEdit: "Ast Edit",
|
|
2647
2655
|
tabReadImage: "Read Image",
|
|
2656
|
+
groupCards: "卡片",
|
|
2648
2657
|
groupTiming: "超时与后台",
|
|
2649
2658
|
groupOutput: "输出",
|
|
2650
2659
|
groupTruncation: "完成消息截断",
|
|
@@ -2829,6 +2838,7 @@ window.__ModuleLoader__.load({
|
|
|
2829
2838
|
nav: "Tool Plus",
|
|
2830
2839
|
pageTitle: "Tool Plus tool configuration",
|
|
2831
2840
|
pageDescription: "Switch by tool to adjust its global settings; values apply …",
|
|
2841
|
+
tabWeb: "Web cards",
|
|
2832
2842
|
tabBash: "Bash",
|
|
2833
2843
|
tabRead: "Read",
|
|
2834
2844
|
tabWriteEdit: "Write & Edit",
|
|
@@ -2837,6 +2847,7 @@ window.__ModuleLoader__.load({
|
|
|
2837
2847
|
tabAstGrep: "Ast Grep",
|
|
2838
2848
|
tabAstEdit: "Ast Edit",
|
|
2839
2849
|
tabReadImage: "Read Image",
|
|
2850
|
+
groupCards: "Cards",
|
|
2840
2851
|
groupTiming: "Timeouts & backgrounding",
|
|
2841
2852
|
groupOutput: "Output",
|
|
2842
2853
|
groupTruncation: "Completion truncation",
|
package/lib/index.mjs
CHANGED
|
@@ -3,7 +3,7 @@ __installBunShim();
|
|
|
3
3
|
import { n as fs_promises_shim_exports, t as exists } from "./fs-promises-shim-Bx0fpxuk.mjs";
|
|
4
4
|
import { i as setRuntimeLogger, n as systemChromiumCandidatesForTest, r as runtimeLogger } from "./launch-Uq7920ng.mjs";
|
|
5
5
|
import { $ as isEnoent, A as formatCount, C as warn, D as installBunShim, F as $flag, N as $env, O as formatAge, P as $envpos, Q as hasFsCode, U as getAutoQaDbPath, V as VERSION, X as getRemoteDir, Y as getPuppeteerDir, at as findOnPath, b as debug, c as combineSignals, d as $which, et as isEnotdir, it as untilAborted, k as formatBytes$1, l as exec, m as readImageMetadata, nt as peekFile, q as getInstallId, tt as isProbablyBinary, u as render, x as error } from "./src-DUUqyo9y.mjs";
|
|
6
|
-
import { C as truncateToWidth$1, S as replaceTabs, _ as formatCodeFrameLine, a as fetchBinary, b as LRUCache, c as getParallelExtractContent, d as convertFileWithMarkit, f as Settings, g as capParseErrors, h as OMP_DEFAULTS, i as convertWithMarkit, l as ensureTool, m as settings, o as extractWithParallel, p as isSettingsInitialized, s as findParallelApiKey, u as CONVERTIBLE_EXTENSIONS, v as formatParseErrors, x as padding, y as shortenPath } from "./utils-
|
|
6
|
+
import { C as truncateToWidth$1, S as replaceTabs, _ as formatCodeFrameLine, a as fetchBinary, b as LRUCache, c as getParallelExtractContent, d as convertFileWithMarkit, f as Settings, g as capParseErrors, h as OMP_DEFAULTS, i as convertWithMarkit, l as ensureTool, m as settings, o as extractWithParallel, p as isSettingsInitialized, s as findParallelApiKey, u as CONVERTIBLE_EXTENSIONS, v as formatParseErrors, x as padding, y as shortenPath } from "./utils-CdLvJy_P.mjs";
|
|
7
7
|
import { t as sanitizeText } from "./sanitize-text-BCf5KmCf.mjs";
|
|
8
8
|
import { n as isRecord$5 } from "./type-guards-CttAANEx.mjs";
|
|
9
9
|
import { n as ToolError, r as throwIfAborted, t as ToolAbortError } from "./tool-errors-DoyxivAR.mjs";
|
|
@@ -4173,6 +4173,15 @@ function renderBashResult(value) {
|
|
|
4173
4173
|
* single source; settings.ts reads from here.
|
|
4174
4174
|
*/
|
|
4175
4175
|
const TOOL_PLUS_FIELDS = [
|
|
4176
|
+
{
|
|
4177
|
+
name: "webCards",
|
|
4178
|
+
kind: "boolean",
|
|
4179
|
+
default: true,
|
|
4180
|
+
labelKey: "webCards",
|
|
4181
|
+
hintKey: "webCardsHint",
|
|
4182
|
+
group: "cards",
|
|
4183
|
+
tool: "web"
|
|
4184
|
+
},
|
|
4176
4185
|
{
|
|
4177
4186
|
name: "enableRunInBackground",
|
|
4178
4187
|
kind: "boolean",
|
|
@@ -4236,15 +4245,6 @@ const TOOL_PLUS_FIELDS = [
|
|
|
4236
4245
|
group: "behavior",
|
|
4237
4246
|
tool: "bash"
|
|
4238
4247
|
},
|
|
4239
|
-
{
|
|
4240
|
-
name: "webCards",
|
|
4241
|
-
kind: "boolean",
|
|
4242
|
-
default: true,
|
|
4243
|
-
labelKey: "webCards",
|
|
4244
|
-
hintKey: "webCardsHint",
|
|
4245
|
-
group: "behavior",
|
|
4246
|
-
tool: "bash"
|
|
4247
|
-
},
|
|
4248
4248
|
{
|
|
4249
4249
|
name: "autoBackgroundMs",
|
|
4250
4250
|
kind: "number",
|
|
@@ -4879,7 +4879,7 @@ const TOOL_PLUS_FIELDS = [
|
|
|
4879
4879
|
tool: "astEdit"
|
|
4880
4880
|
}
|
|
4881
4881
|
];
|
|
4882
|
-
TOOL_PLUS_FIELDS.filter((f) => f.tool === "bash").map((f) => f.name), TOOL_PLUS_FIELDS.filter((f) => f.tool === "read").map((f) => f.name), TOOL_PLUS_FIELDS.filter((f) => f.tool === "writeEdit").map((f) => f.name), TOOL_PLUS_FIELDS.filter((f) => f.tool === "grep").map((f) => f.name), TOOL_PLUS_FIELDS.filter((f) => f.tool === "glob").map((f) => f.name), TOOL_PLUS_FIELDS.filter((f) => f.tool === "astGrep").map((f) => f.name), TOOL_PLUS_FIELDS.filter((f) => f.tool === "astEdit").map((f) => f.name);
|
|
4882
|
+
TOOL_PLUS_FIELDS.filter((f) => f.tool === "web").map((f) => f.name), TOOL_PLUS_FIELDS.filter((f) => f.tool === "bash").map((f) => f.name), TOOL_PLUS_FIELDS.filter((f) => f.tool === "read").map((f) => f.name), TOOL_PLUS_FIELDS.filter((f) => f.tool === "writeEdit").map((f) => f.name), TOOL_PLUS_FIELDS.filter((f) => f.tool === "grep").map((f) => f.name), TOOL_PLUS_FIELDS.filter((f) => f.tool === "glob").map((f) => f.name), TOOL_PLUS_FIELDS.filter((f) => f.tool === "astGrep").map((f) => f.name), TOOL_PLUS_FIELDS.filter((f) => f.tool === "astEdit").map((f) => f.name);
|
|
4883
4883
|
/** Look up one field definition by its schema key. */
|
|
4884
4884
|
function toolPlusField(name) {
|
|
4885
4885
|
return TOOL_PLUS_FIELDS.find((field) => field.name === name);
|
|
@@ -10317,7 +10317,7 @@ let specialHandlersPromise;
|
|
|
10317
10317
|
* requires a special handler, so we keep them out of the cold-startup graph.
|
|
10318
10318
|
*/
|
|
10319
10319
|
function loadSpecialHandlers() {
|
|
10320
|
-
specialHandlersPromise ??= import("./scrapers-
|
|
10320
|
+
specialHandlersPromise ??= import("./scrapers-D1uU6YiZ.mjs").then((m) => m.specialHandlers);
|
|
10321
10321
|
return specialHandlersPromise;
|
|
10322
10322
|
}
|
|
10323
10323
|
/**
|
|
@@ -3,7 +3,7 @@ __installBunShim();
|
|
|
3
3
|
import { n as fs_promises_shim_exports } from "./fs-promises-shim-Bx0fpxuk.mjs";
|
|
4
4
|
import { $ as isEnoent, B as USER_AGENT, C as warn, G as getDocsRsCacheDir, N as $env, c as combineSignals, j as formatNumber, k as formatBytes, l as exec, s as Snowflake, y as parseFrontmatter } from "./src-DUUqyo9y.mjs";
|
|
5
5
|
import { W as tryParseJson } from "./utils-BMmwLB0f.mjs";
|
|
6
|
-
import { a as fetchBinary, c as getParallelExtractContent, i as convertWithMarkit, l as ensureTool, m as settings, n as asRecord, o as extractWithParallel, r as asString, s as findParallelApiKey, t as asNumber } from "./utils-
|
|
6
|
+
import { a as fetchBinary, c as getParallelExtractContent, i as convertWithMarkit, l as ensureTool, m as settings, n as asRecord, o as extractWithParallel, r as asString, s as findParallelApiKey, t as asNumber } from "./utils-CdLvJy_P.mjs";
|
|
7
7
|
import { n as isRecord } from "./type-guards-CttAANEx.mjs";
|
|
8
8
|
import { r as throwIfAborted, t as ToolAbortError } from "./tool-errors-DoyxivAR.mjs";
|
|
9
9
|
import { c as getLocalizedText, d as looksLikeHtml, i as decodeHtmlEntities, l as htmlToBasicMarkdown, o as formatIsoDate, r as buildResult, s as formatMediaDuration, u as loadPage } from "./types-DT9vgZ3S.mjs";
|
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
/**
|
|
2
2
|
* Tool Plus settings section — the plugin's own page in the Settings panel,
|
|
3
3
|
* registered into the `settings.section` slot (nav id `tool-plus`). The page
|
|
4
|
-
* renders one tab per tool (Bash / Read / Write & Edit / Grep /
|
|
5
|
-
* Ast
|
|
4
|
+
* renders one tab per tool (Bash / Read / Write & Edit / Grep / Glob /
|
|
5
|
+
* Ast Grep / Ast Edit) plus a leading `Web 卡片` tab for the plugin-wide
|
|
6
|
+
* browser-card switch; switching a tab shows that tool's configurable
|
|
6
7
|
* fields, while tools without global settings show a placeholder. Only the
|
|
7
8
|
* active tool's panel is rendered; the shared staged form over the
|
|
8
9
|
* `tool-plus` namespace lives at the page level, so drafts survive switching
|
|
@@ -5,7 +5,7 @@
|
|
|
5
5
|
* a compile error (the official registration enforces bilingual balance).
|
|
6
6
|
* @module @xiaoso/dsh-tool-plus/client
|
|
7
7
|
*/
|
|
8
|
-
export type BashPlusLocaleKey = 'title' | 'description' | 'nav' | 'pageTitle' | 'pageDescription' | 'tabBash' | 'tabRead' | 'tabWriteEdit' | 'tabGrep' | 'tabGlob' | 'tabAstGrep' | 'tabAstEdit' | 'tabReadImage' | 'groupTiming' | 'groupOutput' | 'groupTruncation' | 'groupBehavior' | 'groupReading' | 'groupSummary' | 'groupImages' | 'groupEditMode' | 'groupGuard' | 'groupGrep' | 'groupSearchDefaults' | 'groupFetch' | 'groupAst' | 'noConfigTitle' | 'noConfigHint' | 'readSummarizeEnabled' | 'readSummarizeEnabledHint' | 'readSummarizeProse' | 'readSummarizeProseHint' | 'readSummarizeMinBodyLines' | 'readSummarizeMinBodyLinesHint' | 'readSummarizeMinCommentLines' | 'readSummarizeMinCommentLinesHint' | 'readSummarizeMinTotalLines' | 'readSummarizeMinTotalLinesHint' | 'readSummarizeUnfoldUntil' | 'readSummarizeUnfoldUntilHint' | 'readSummarizeUnfoldLimit' | 'readSummarizeUnfoldLimitHint' | 'editBlockAutoGenerated' | 'editBlockAutoGeneratedHint' | 'readDefaultLimit' | 'readDefaultLimitHint' | 'readLineNumbers' | 'readLineNumbersHint' | 'readRenderMarkdown' | 'readRenderMarkdownHint' | 'readConcurrentSafe' | 'readConcurrentSafeHint' | 'editMode' | 'editModeHint' | 'editFuzzyMatch' | 'editFuzzyMatchHint' | 'editFuzzyThreshold' | 'editFuzzyThresholdHint' | 'editEnforceSeenLines' | 'editEnforceSeenLinesHint' | 'grepContextBefore' | 'grepContextBeforeHint' | 'grepContextAfter' | 'grepContextAfterHint' | 'grepCaseDefault' | 'grepCaseDefaultHint' | 'grepGitignoreDefault' | 'grepGitignoreDefaultHint' | 'globGitignoreDefault' | 'globGitignoreDefaultHint' | 'globHiddenDefault' | 'globHiddenDefaultHint' | 'astGrepEnabled' | 'astGrepEnabledHint' | 'astEditEnabled' | 'astEditEnabledHint' | 'optReplace' | 'optPatch' | 'optHashline' | 'optApplyPatch' | 'fetchEnabled' | 'fetchEnabledHint' | 'fetchMaxTimeoutSeconds' | 'fetchMaxTimeoutSecondsHint' | 'fetchReader' | 'fetchReaderHint' | 'browserReaderEnabled' | 'browserReaderEnabledHint' | 'browserProbe' | 'browserProbeHint' | 'browserProbeRunning' | 'browserProbeNone' | 'browserProbeFailed' | 'browserProbeUnavailable' | 'optReaderAuto' | 'optReaderNative' | 'optReaderTrafilatura' | 'optReaderLynx' | 'optReaderParallel' | 'optReaderJina' | 'optReaderBrowser' | 'imagesAutoResize' | 'imagesAutoResizeHint' | 'imagesBlockImages' | 'imagesBlockImagesHint' | 'imagesExcludeWebp' | 'imagesExcludeWebpHint' | 'imagesInputMaxBytes' | 'imagesInputMaxBytesHint' | 'imagesResizeMaxSide' | 'imagesResizeMaxSideHint' | 'imagesResizeMaxBytes' | 'imagesResizeMaxBytesHint' | 'imagesResizeMinSide' | 'imagesResizeMinSideHint' | 'imagesResizeJpegQuality' | 'imagesResizeJpegQualityHint' | 'autoBackgroundMs' | 'autoBackgroundMsHint' | 'defaultTimeoutMs' | 'defaultTimeoutMsHint' | 'maxTimeoutMs' | 'maxTimeoutMsHint' | 'maxBackgroundJobs' | 'maxBackgroundJobsHint' | 'outputMaxBytes' | 'outputMaxBytesHint' | 'outputSinkTailBytes' | 'outputSinkTailBytesHint' | 'outputSinkHeadBytes' | 'outputSinkHeadBytesHint' | 'minimizerEnabled' | 'minimizerEnabledHint' | 'enableRunInBackground' | 'enableRunInBackgroundHint' | 'interceptorEnabled' | 'interceptorEnabledHint' | 'nonInteractiveEnv' | 'nonInteractiveEnvHint' | 'snapshotEnabled' | 'snapshotEnabledHint' | 'rmSafe' | 'rmSafeHint' | 'rmSafeStatusInjected' | 'rmSafeStatusInjectedUnverified' | 'rmSafeStatusFailed' | 'rmSafeReasonSnapshotUnavailable' | 'rmSafeReasonCliMissing' | 'rmSafeReasonSnapshotWriteFailed' | 'rmSafeReasonRuntimeNotEffective' | 'useShellCommandWrapper' | 'useShellCommandWrapperHint' | 'webCards' | 'webCardsHint' | 'outputTruncateStrategy' | 'outputTruncateStrategyHint' | 'outputTruncateTriggerBytes' | 'outputTruncateTriggerBytesHint' | 'outputTruncateTriggerLines' | 'outputTruncateTriggerLinesHint' | 'outputTruncateByteMode' | 'outputTruncateByteModeHint' | 'outputTruncateByteHeadBytes' | 'outputTruncateByteHeadBytesHint' | 'outputTruncateByteTailBytes' | 'outputTruncateByteTailBytesHint' | 'outputTruncateLineMode' | 'outputTruncateLineModeHint' | 'outputTruncateLineHeadLines' | 'outputTruncateLineHeadLinesHint' | 'outputTruncateLineTailLines' | 'outputTruncateLineTailLinesHint' | 'optBytes' | 'optLines' | 'optHead' | 'optTail' | 'optMiddle' | 'overridden' | 'reset' | 'readOnly' | 'expand' | 'collapse' | 'save' | 'saving' | 'discard' | 'unsaved' | 'saveFailed' | 'invalidNumber' | 'appliesTo';
|
|
8
|
+
export type BashPlusLocaleKey = 'title' | 'description' | 'nav' | 'pageTitle' | 'pageDescription' | 'tabWeb' | 'tabBash' | 'tabRead' | 'tabWriteEdit' | 'tabGrep' | 'tabGlob' | 'tabAstGrep' | 'tabAstEdit' | 'tabReadImage' | 'groupCards' | 'groupTiming' | 'groupOutput' | 'groupTruncation' | 'groupBehavior' | 'groupReading' | 'groupSummary' | 'groupImages' | 'groupEditMode' | 'groupGuard' | 'groupGrep' | 'groupSearchDefaults' | 'groupFetch' | 'groupAst' | 'noConfigTitle' | 'noConfigHint' | 'readSummarizeEnabled' | 'readSummarizeEnabledHint' | 'readSummarizeProse' | 'readSummarizeProseHint' | 'readSummarizeMinBodyLines' | 'readSummarizeMinBodyLinesHint' | 'readSummarizeMinCommentLines' | 'readSummarizeMinCommentLinesHint' | 'readSummarizeMinTotalLines' | 'readSummarizeMinTotalLinesHint' | 'readSummarizeUnfoldUntil' | 'readSummarizeUnfoldUntilHint' | 'readSummarizeUnfoldLimit' | 'readSummarizeUnfoldLimitHint' | 'editBlockAutoGenerated' | 'editBlockAutoGeneratedHint' | 'readDefaultLimit' | 'readDefaultLimitHint' | 'readLineNumbers' | 'readLineNumbersHint' | 'readRenderMarkdown' | 'readRenderMarkdownHint' | 'readConcurrentSafe' | 'readConcurrentSafeHint' | 'editMode' | 'editModeHint' | 'editFuzzyMatch' | 'editFuzzyMatchHint' | 'editFuzzyThreshold' | 'editFuzzyThresholdHint' | 'editEnforceSeenLines' | 'editEnforceSeenLinesHint' | 'grepContextBefore' | 'grepContextBeforeHint' | 'grepContextAfter' | 'grepContextAfterHint' | 'grepCaseDefault' | 'grepCaseDefaultHint' | 'grepGitignoreDefault' | 'grepGitignoreDefaultHint' | 'globGitignoreDefault' | 'globGitignoreDefaultHint' | 'globHiddenDefault' | 'globHiddenDefaultHint' | 'astGrepEnabled' | 'astGrepEnabledHint' | 'astEditEnabled' | 'astEditEnabledHint' | 'optReplace' | 'optPatch' | 'optHashline' | 'optApplyPatch' | 'fetchEnabled' | 'fetchEnabledHint' | 'fetchMaxTimeoutSeconds' | 'fetchMaxTimeoutSecondsHint' | 'fetchReader' | 'fetchReaderHint' | 'browserReaderEnabled' | 'browserReaderEnabledHint' | 'browserProbe' | 'browserProbeHint' | 'browserProbeRunning' | 'browserProbeNone' | 'browserProbeFailed' | 'browserProbeUnavailable' | 'optReaderAuto' | 'optReaderNative' | 'optReaderTrafilatura' | 'optReaderLynx' | 'optReaderParallel' | 'optReaderJina' | 'optReaderBrowser' | 'imagesAutoResize' | 'imagesAutoResizeHint' | 'imagesBlockImages' | 'imagesBlockImagesHint' | 'imagesExcludeWebp' | 'imagesExcludeWebpHint' | 'imagesInputMaxBytes' | 'imagesInputMaxBytesHint' | 'imagesResizeMaxSide' | 'imagesResizeMaxSideHint' | 'imagesResizeMaxBytes' | 'imagesResizeMaxBytesHint' | 'imagesResizeMinSide' | 'imagesResizeMinSideHint' | 'imagesResizeJpegQuality' | 'imagesResizeJpegQualityHint' | 'autoBackgroundMs' | 'autoBackgroundMsHint' | 'defaultTimeoutMs' | 'defaultTimeoutMsHint' | 'maxTimeoutMs' | 'maxTimeoutMsHint' | 'maxBackgroundJobs' | 'maxBackgroundJobsHint' | 'outputMaxBytes' | 'outputMaxBytesHint' | 'outputSinkTailBytes' | 'outputSinkTailBytesHint' | 'outputSinkHeadBytes' | 'outputSinkHeadBytesHint' | 'minimizerEnabled' | 'minimizerEnabledHint' | 'enableRunInBackground' | 'enableRunInBackgroundHint' | 'interceptorEnabled' | 'interceptorEnabledHint' | 'nonInteractiveEnv' | 'nonInteractiveEnvHint' | 'snapshotEnabled' | 'snapshotEnabledHint' | 'rmSafe' | 'rmSafeHint' | 'rmSafeStatusInjected' | 'rmSafeStatusInjectedUnverified' | 'rmSafeStatusFailed' | 'rmSafeReasonSnapshotUnavailable' | 'rmSafeReasonCliMissing' | 'rmSafeReasonSnapshotWriteFailed' | 'rmSafeReasonRuntimeNotEffective' | 'useShellCommandWrapper' | 'useShellCommandWrapperHint' | 'webCards' | 'webCardsHint' | 'outputTruncateStrategy' | 'outputTruncateStrategyHint' | 'outputTruncateTriggerBytes' | 'outputTruncateTriggerBytesHint' | 'outputTruncateTriggerLines' | 'outputTruncateTriggerLinesHint' | 'outputTruncateByteMode' | 'outputTruncateByteModeHint' | 'outputTruncateByteHeadBytes' | 'outputTruncateByteHeadBytesHint' | 'outputTruncateByteTailBytes' | 'outputTruncateByteTailBytesHint' | 'outputTruncateLineMode' | 'outputTruncateLineModeHint' | 'outputTruncateLineHeadLines' | 'outputTruncateLineHeadLinesHint' | 'outputTruncateLineTailLines' | 'outputTruncateLineTailLinesHint' | 'optBytes' | 'optLines' | 'optHead' | 'optTail' | 'optMiddle' | 'overridden' | 'reset' | 'readOnly' | 'expand' | 'collapse' | 'save' | 'saving' | 'discard' | 'unsaved' | 'saveFailed' | 'invalidNumber' | 'appliesTo';
|
|
9
9
|
/** Simplified Chinese copy. */
|
|
10
10
|
export declare const zh: Record<BashPlusLocaleKey, string>;
|
|
11
11
|
/** English copy. */
|
|
@@ -66,7 +66,7 @@ export interface ToolPlusTab {
|
|
|
66
66
|
fields: readonly string[];
|
|
67
67
|
}
|
|
68
68
|
/** Identifiers of every tool tab. */
|
|
69
|
-
export type ToolPlusToolId = 'bash' | 'read' | 'writeEdit' | 'grep' | 'glob' | 'astGrep' | 'astEdit';
|
|
69
|
+
export type ToolPlusToolId = 'web' | 'bash' | 'read' | 'writeEdit' | 'grep' | 'glob' | 'astGrep' | 'astEdit';
|
|
70
70
|
/** Field group ids -> locale key of the group heading. */
|
|
71
71
|
export declare const TOOL_PLUS_GROUP_LABELS: Record<string, BashPlusLocaleKey>;
|
|
72
72
|
/**
|
|
@@ -6267,7 +6267,7 @@ const settings = {
|
|
|
6267
6267
|
};
|
|
6268
6268
|
//#endregion
|
|
6269
6269
|
//#region package.json
|
|
6270
|
-
var version = "0.1.8
|
|
6270
|
+
var version = "0.1.8";
|
|
6271
6271
|
/** `.tmp` files older than this are treated as orphaned writes and swept. */
|
|
6272
6272
|
const TMP_ORPHAN_MAX_AGE_MS = 3e5;
|
|
6273
6273
|
function markitConversionCacheKey(bytes, extension) {
|
package/package.json
CHANGED
|
@@ -1,151 +1,151 @@
|
|
|
1
|
-
{
|
|
2
|
-
"name": "@xiaoso/dsh-tool-plus",
|
|
3
|
-
"description": "Oh My Pi bash runtime ported as a deepseek-harness tool plugin: persistent shell session, output minimizer, managed background jobs, command interception",
|
|
4
|
-
"version": "0.1.8
|
|
5
|
-
"license": "MIT",
|
|
6
|
-
"keywords": [
|
|
7
|
-
"deepseek-harness",
|
|
8
|
-
"dsh",
|
|
9
|
-
"dsh-plugin",
|
|
10
|
-
"cli",
|
|
11
|
-
"coding-agent",
|
|
12
|
-
"agent-tools",
|
|
13
|
-
"bash",
|
|
14
|
-
"persistent-shell",
|
|
15
|
-
"file-tools",
|
|
16
|
-
"code-search",
|
|
17
|
-
"code-editing",
|
|
18
|
-
"ast-grep",
|
|
19
|
-
"tool-enhancement",
|
|
20
|
-
"oh-my-pi"
|
|
21
|
-
],
|
|
22
|
-
"repository": {
|
|
23
|
-
"type": "git",
|
|
24
|
-
"url": "git+https://github.com/xiaoso456/dsh-tool-plus.git"
|
|
25
|
-
},
|
|
26
|
-
"homepage": "https://github.com/xiaoso456/dsh-tool-plus#readme",
|
|
27
|
-
"bugs": {
|
|
28
|
-
"url": "https://github.com/xiaoso456/dsh-tool-plus/issues"
|
|
29
|
-
},
|
|
30
|
-
"type": "module",
|
|
31
|
-
"publishConfig": {
|
|
32
|
-
"access": "public",
|
|
33
|
-
"tag": "latest"
|
|
34
|
-
},
|
|
35
|
-
"engines": {
|
|
36
|
-
"node": "^22.19.0 || >=24.0.0"
|
|
37
|
-
},
|
|
38
|
-
"main": "lib/index.mjs",
|
|
39
|
-
"types": "lib/types/index.d.ts",
|
|
40
|
-
"exports": {
|
|
41
|
-
".": {
|
|
42
|
-
"types": "./lib/types/index.d.ts",
|
|
43
|
-
"default": "./lib/index.mjs"
|
|
44
|
-
},
|
|
45
|
-
"./client": {
|
|
46
|
-
"types": "./lib/types/client/index.d.ts",
|
|
47
|
-
"default": "./lib/client.js"
|
|
48
|
-
},
|
|
49
|
-
"./package.json": "./package.json"
|
|
50
|
-
},
|
|
51
|
-
"files": [
|
|
52
|
-
"lib",
|
|
53
|
-
"presets",
|
|
54
|
-
"scripts/patch-pi-natives.mjs",
|
|
55
|
-
"src/bash-runtime/shell-snapshot-fn-env.sh",
|
|
56
|
-
"cordis.patch.yml",
|
|
57
|
-
"README.md",
|
|
58
|
-
"LICENSE",
|
|
59
|
-
"THIRD_PARTY_NOTICES.md"
|
|
60
|
-
],
|
|
61
|
-
"dsh": {
|
|
62
|
-
"bundle": {
|
|
63
|
-
"patch": "./cordis.patch.yml"
|
|
64
|
-
},
|
|
65
|
-
"client": {
|
|
66
|
-
"inject": [
|
|
67
|
-
"@deepseek-ai/dsh-client-locale",
|
|
68
|
-
"@deepseek-ai/dsh-client-ui-settings"
|
|
69
|
-
],
|
|
70
|
-
"platform": "web"
|
|
71
|
-
}
|
|
72
|
-
},
|
|
73
|
-
"scripts": {
|
|
74
|
-
"build": "tsdown -c tsdown.config.ts && tsc -p tsconfig.json && node scripts/copy-assets.mjs",
|
|
75
|
-
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
76
|
-
"test": "vitest run --config vitest.config.ts",
|
|
77
|
-
"presets:install": "node presets/install-presets.mjs",
|
|
78
|
-
"presets:install:force": "node presets/install-presets.mjs --force",
|
|
79
|
-
"postinstall": "node scripts/patch-pi-natives.mjs"
|
|
80
|
-
},
|
|
81
|
-
"peerDependencies": {
|
|
82
|
-
"@deepseek-ai/cordis": "4.0.2",
|
|
83
|
-
"@deepseek-ai/dsh-agent": "0.1.5-rc.1",
|
|
84
|
-
"@deepseek-ai/dsh-attachment": "0.1.5-rc.1",
|
|
85
|
-
"@deepseek-ai/dsh-client-connection": "0.1.5-rc.1",
|
|
86
|
-
"@deepseek-ai/dsh-fs": "0.1.5-rc.1",
|
|
87
|
-
"@deepseek-ai/dsh-jobs": "0.1.5-rc.1",
|
|
88
|
-
"@deepseek-ai/dsh-llm": "0.1.5-rc.1",
|
|
89
|
-
"@deepseek-ai/dsh-sandbox": "0.1.5-rc.1",
|
|
90
|
-
"@deepseek-ai/dsh-session": "0.1.5-rc.1",
|
|
91
|
-
"@deepseek-ai/dsh-settings": "0.1.5-rc.1",
|
|
92
|
-
"@deepseek-ai/dsh-shell": "0.1.5-rc.1",
|
|
93
|
-
"@deepseek-ai/dsh-shell-env": "0.1.5-rc.1",
|
|
94
|
-
"@deepseek-ai/dsh-system-prompt": "0.1.5-rc.1",
|
|
95
|
-
"@deepseek-ai/dsh-tools": "0.1.5-rc.1"
|
|
96
|
-
},
|
|
97
|
-
"optionalPeerDependencies": {
|
|
98
|
-
"sharp": ">=0.33"
|
|
99
|
-
},
|
|
100
|
-
"dependencies": {
|
|
101
|
-
"@deepseek-ai/dsh-brand": "0.1.5-rc.1",
|
|
102
|
-
"@deepseek-ai/dsh-invariants": "0.1.5-rc.1",
|
|
103
|
-
"@deepseek-ai/schemastery": "3.18.2",
|
|
104
|
-
"@oh-my-pi/omptype": "18.1.17",
|
|
105
|
-
"@oh-my-pi/pi-agent-core": "18.1.17",
|
|
106
|
-
"@oh-my-pi/pi-ai": "18.1.17",
|
|
107
|
-
"@oh-my-pi/pi-catalog": "18.1.17",
|
|
108
|
-
"@oh-my-pi/pi-natives": "18.1.17",
|
|
109
|
-
"@oh-my-pi/pi-tui": "18.1.17",
|
|
110
|
-
"@oh-my-pi/pi-utils": "18.1.17",
|
|
111
|
-
"json5": "^2.2.3",
|
|
112
|
-
"puppeteer-core": "^25.3.0",
|
|
113
|
-
"trash": "^10.1.1",
|
|
114
|
-
"yaml": "^2.9.0"
|
|
115
|
-
},
|
|
116
|
-
"devDependencies": {
|
|
117
|
-
"@deepseek-ai/cordis": "4.0.2",
|
|
118
|
-
"@deepseek-ai/dsh-agent": "0.1.5-rc.1",
|
|
119
|
-
"@deepseek-ai/dsh-client-connection": "0.1.5-rc.1",
|
|
120
|
-
"@deepseek-ai/dsh-client-locale": "0.1.5-rc.1",
|
|
121
|
-
"@deepseek-ai/dsh-client-ui-chat": "0.1.5-rc.1",
|
|
122
|
-
"@deepseek-ai/dsh-client-ui-primitives": "0.1.5-rc.1",
|
|
123
|
-
"@deepseek-ai/dsh-client-ui-renderer": "0.1.5-rc.1",
|
|
124
|
-
"@deepseek-ai/dsh-client-ui-settings": "0.1.5-rc.1",
|
|
125
|
-
"@deepseek-ai/dsh-client-ui-settings-plugins": "0.1.5-rc.1",
|
|
126
|
-
"@deepseek-ai/dsh-client-ui-slots": "0.1.5-rc.1",
|
|
127
|
-
"@deepseek-ai/dsh-client-ui-tool": "0.1.5-rc.1",
|
|
128
|
-
"@deepseek-ai/dsh-fs-local": "0.1.5-rc.1",
|
|
129
|
-
"@deepseek-ai/dsh-jobs": "0.1.5-rc.1",
|
|
130
|
-
"@deepseek-ai/dsh-jobs-local": "0.1.5-rc.1",
|
|
131
|
-
"@deepseek-ai/dsh-llm": "0.1.5-rc.1",
|
|
132
|
-
"@deepseek-ai/dsh-session": "0.1.5-rc.1",
|
|
133
|
-
"@deepseek-ai/dsh-settings": "0.1.5-rc.1",
|
|
134
|
-
"@deepseek-ai/dsh-shell": "0.1.5-rc.1",
|
|
135
|
-
"@deepseek-ai/dsh-shell-env": "0.1.5-rc.1",
|
|
136
|
-
"@deepseek-ai/dsh-system-prompt": "0.1.5-rc.1",
|
|
137
|
-
"@deepseek-ai/dsh-tool-jobs": "0.1.5-rc.1",
|
|
138
|
-
"@deepseek-ai/dsh-tool-str-replace-editor": "0.1.5-rc.1",
|
|
139
|
-
"@deepseek-ai/dsh-tools": "0.1.5-rc.1",
|
|
140
|
-
"@types/node": "^22.19.0",
|
|
141
|
-
"@types/react": "^19.0.0",
|
|
142
|
-
"@types/react-dom": "^19.0.0",
|
|
143
|
-
"react": "^19.0.0",
|
|
144
|
-
"react-dom": "^19.0.0",
|
|
145
|
-
"sharp": "^0.35.4",
|
|
146
|
-
"tsdown": "^0.22.2",
|
|
147
|
-
"tsx": "^4.22.4",
|
|
148
|
-
"typescript": "^6.0.3",
|
|
149
|
-
"vitest": "^4.1.8"
|
|
150
|
-
}
|
|
151
|
-
}
|
|
1
|
+
{
|
|
2
|
+
"name": "@xiaoso/dsh-tool-plus",
|
|
3
|
+
"description": "Oh My Pi bash runtime ported as a deepseek-harness tool plugin: persistent shell session, output minimizer, managed background jobs, command interception",
|
|
4
|
+
"version": "0.1.8",
|
|
5
|
+
"license": "MIT",
|
|
6
|
+
"keywords": [
|
|
7
|
+
"deepseek-harness",
|
|
8
|
+
"dsh",
|
|
9
|
+
"dsh-plugin",
|
|
10
|
+
"cli",
|
|
11
|
+
"coding-agent",
|
|
12
|
+
"agent-tools",
|
|
13
|
+
"bash",
|
|
14
|
+
"persistent-shell",
|
|
15
|
+
"file-tools",
|
|
16
|
+
"code-search",
|
|
17
|
+
"code-editing",
|
|
18
|
+
"ast-grep",
|
|
19
|
+
"tool-enhancement",
|
|
20
|
+
"oh-my-pi"
|
|
21
|
+
],
|
|
22
|
+
"repository": {
|
|
23
|
+
"type": "git",
|
|
24
|
+
"url": "git+https://github.com/xiaoso456/dsh-tool-plus.git"
|
|
25
|
+
},
|
|
26
|
+
"homepage": "https://github.com/xiaoso456/dsh-tool-plus#readme",
|
|
27
|
+
"bugs": {
|
|
28
|
+
"url": "https://github.com/xiaoso456/dsh-tool-plus/issues"
|
|
29
|
+
},
|
|
30
|
+
"type": "module",
|
|
31
|
+
"publishConfig": {
|
|
32
|
+
"access": "public",
|
|
33
|
+
"tag": "latest"
|
|
34
|
+
},
|
|
35
|
+
"engines": {
|
|
36
|
+
"node": "^22.19.0 || >=24.0.0"
|
|
37
|
+
},
|
|
38
|
+
"main": "lib/index.mjs",
|
|
39
|
+
"types": "lib/types/index.d.ts",
|
|
40
|
+
"exports": {
|
|
41
|
+
".": {
|
|
42
|
+
"types": "./lib/types/index.d.ts",
|
|
43
|
+
"default": "./lib/index.mjs"
|
|
44
|
+
},
|
|
45
|
+
"./client": {
|
|
46
|
+
"types": "./lib/types/client/index.d.ts",
|
|
47
|
+
"default": "./lib/client.js"
|
|
48
|
+
},
|
|
49
|
+
"./package.json": "./package.json"
|
|
50
|
+
},
|
|
51
|
+
"files": [
|
|
52
|
+
"lib",
|
|
53
|
+
"presets",
|
|
54
|
+
"scripts/patch-pi-natives.mjs",
|
|
55
|
+
"src/bash-runtime/shell-snapshot-fn-env.sh",
|
|
56
|
+
"cordis.patch.yml",
|
|
57
|
+
"README.md",
|
|
58
|
+
"LICENSE",
|
|
59
|
+
"THIRD_PARTY_NOTICES.md"
|
|
60
|
+
],
|
|
61
|
+
"dsh": {
|
|
62
|
+
"bundle": {
|
|
63
|
+
"patch": "./cordis.patch.yml"
|
|
64
|
+
},
|
|
65
|
+
"client": {
|
|
66
|
+
"inject": [
|
|
67
|
+
"@deepseek-ai/dsh-client-locale",
|
|
68
|
+
"@deepseek-ai/dsh-client-ui-settings"
|
|
69
|
+
],
|
|
70
|
+
"platform": "web"
|
|
71
|
+
}
|
|
72
|
+
},
|
|
73
|
+
"scripts": {
|
|
74
|
+
"build": "tsdown -c tsdown.config.ts && tsc -p tsconfig.json && node scripts/copy-assets.mjs",
|
|
75
|
+
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
76
|
+
"test": "vitest run --config vitest.config.ts",
|
|
77
|
+
"presets:install": "node presets/install-presets.mjs",
|
|
78
|
+
"presets:install:force": "node presets/install-presets.mjs --force",
|
|
79
|
+
"postinstall": "node scripts/patch-pi-natives.mjs"
|
|
80
|
+
},
|
|
81
|
+
"peerDependencies": {
|
|
82
|
+
"@deepseek-ai/cordis": "4.0.2",
|
|
83
|
+
"@deepseek-ai/dsh-agent": "0.1.5-rc.1",
|
|
84
|
+
"@deepseek-ai/dsh-attachment": "0.1.5-rc.1",
|
|
85
|
+
"@deepseek-ai/dsh-client-connection": "0.1.5-rc.1",
|
|
86
|
+
"@deepseek-ai/dsh-fs": "0.1.5-rc.1",
|
|
87
|
+
"@deepseek-ai/dsh-jobs": "0.1.5-rc.1",
|
|
88
|
+
"@deepseek-ai/dsh-llm": "0.1.5-rc.1",
|
|
89
|
+
"@deepseek-ai/dsh-sandbox": "0.1.5-rc.1",
|
|
90
|
+
"@deepseek-ai/dsh-session": "0.1.5-rc.1",
|
|
91
|
+
"@deepseek-ai/dsh-settings": "0.1.5-rc.1",
|
|
92
|
+
"@deepseek-ai/dsh-shell": "0.1.5-rc.1",
|
|
93
|
+
"@deepseek-ai/dsh-shell-env": "0.1.5-rc.1",
|
|
94
|
+
"@deepseek-ai/dsh-system-prompt": "0.1.5-rc.1",
|
|
95
|
+
"@deepseek-ai/dsh-tools": "0.1.5-rc.1"
|
|
96
|
+
},
|
|
97
|
+
"optionalPeerDependencies": {
|
|
98
|
+
"sharp": ">=0.33"
|
|
99
|
+
},
|
|
100
|
+
"dependencies": {
|
|
101
|
+
"@deepseek-ai/dsh-brand": "0.1.5-rc.1",
|
|
102
|
+
"@deepseek-ai/dsh-invariants": "0.1.5-rc.1",
|
|
103
|
+
"@deepseek-ai/schemastery": "3.18.2",
|
|
104
|
+
"@oh-my-pi/omptype": "18.1.17",
|
|
105
|
+
"@oh-my-pi/pi-agent-core": "18.1.17",
|
|
106
|
+
"@oh-my-pi/pi-ai": "18.1.17",
|
|
107
|
+
"@oh-my-pi/pi-catalog": "18.1.17",
|
|
108
|
+
"@oh-my-pi/pi-natives": "18.1.17",
|
|
109
|
+
"@oh-my-pi/pi-tui": "18.1.17",
|
|
110
|
+
"@oh-my-pi/pi-utils": "18.1.17",
|
|
111
|
+
"json5": "^2.2.3",
|
|
112
|
+
"puppeteer-core": "^25.3.0",
|
|
113
|
+
"trash": "^10.1.1",
|
|
114
|
+
"yaml": "^2.9.0"
|
|
115
|
+
},
|
|
116
|
+
"devDependencies": {
|
|
117
|
+
"@deepseek-ai/cordis": "4.0.2",
|
|
118
|
+
"@deepseek-ai/dsh-agent": "0.1.5-rc.1",
|
|
119
|
+
"@deepseek-ai/dsh-client-connection": "0.1.5-rc.1",
|
|
120
|
+
"@deepseek-ai/dsh-client-locale": "0.1.5-rc.1",
|
|
121
|
+
"@deepseek-ai/dsh-client-ui-chat": "0.1.5-rc.1",
|
|
122
|
+
"@deepseek-ai/dsh-client-ui-primitives": "0.1.5-rc.1",
|
|
123
|
+
"@deepseek-ai/dsh-client-ui-renderer": "0.1.5-rc.1",
|
|
124
|
+
"@deepseek-ai/dsh-client-ui-settings": "0.1.5-rc.1",
|
|
125
|
+
"@deepseek-ai/dsh-client-ui-settings-plugins": "0.1.5-rc.1",
|
|
126
|
+
"@deepseek-ai/dsh-client-ui-slots": "0.1.5-rc.1",
|
|
127
|
+
"@deepseek-ai/dsh-client-ui-tool": "0.1.5-rc.1",
|
|
128
|
+
"@deepseek-ai/dsh-fs-local": "0.1.5-rc.1",
|
|
129
|
+
"@deepseek-ai/dsh-jobs": "0.1.5-rc.1",
|
|
130
|
+
"@deepseek-ai/dsh-jobs-local": "0.1.5-rc.1",
|
|
131
|
+
"@deepseek-ai/dsh-llm": "0.1.5-rc.1",
|
|
132
|
+
"@deepseek-ai/dsh-session": "0.1.5-rc.1",
|
|
133
|
+
"@deepseek-ai/dsh-settings": "0.1.5-rc.1",
|
|
134
|
+
"@deepseek-ai/dsh-shell": "0.1.5-rc.1",
|
|
135
|
+
"@deepseek-ai/dsh-shell-env": "0.1.5-rc.1",
|
|
136
|
+
"@deepseek-ai/dsh-system-prompt": "0.1.5-rc.1",
|
|
137
|
+
"@deepseek-ai/dsh-tool-jobs": "0.1.5-rc.1",
|
|
138
|
+
"@deepseek-ai/dsh-tool-str-replace-editor": "0.1.5-rc.1",
|
|
139
|
+
"@deepseek-ai/dsh-tools": "0.1.5-rc.1",
|
|
140
|
+
"@types/node": "^22.19.0",
|
|
141
|
+
"@types/react": "^19.0.0",
|
|
142
|
+
"@types/react-dom": "^19.0.0",
|
|
143
|
+
"react": "^19.0.0",
|
|
144
|
+
"react-dom": "^19.0.0",
|
|
145
|
+
"sharp": "^0.35.4",
|
|
146
|
+
"tsdown": "^0.22.2",
|
|
147
|
+
"tsx": "^4.22.4",
|
|
148
|
+
"typescript": "^6.0.3",
|
|
149
|
+
"vitest": "^4.1.8"
|
|
150
|
+
}
|
|
151
|
+
}
|
package/presets/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xiaoso/dsh-tool-plus-presets",
|
|
3
|
-
"version": "0.1.8
|
|
3
|
+
"version": "0.1.8",
|
|
4
4
|
"description": "Agent-preset installer for dsh-tool-plus: installs the standard / PTC enhanced preset templates into a DeepSeek Harness home.",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"keywords": [
|