@xiaoso/dsh-tool-plus 0.1.2-beta.0 → 0.1.2-rc.1
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 +12 -1
- package/README.md +12 -1
- package/lib/client.js +8 -11
- package/lib/index.mjs +31 -55
- package/lib/{scrapers-B3AO6nqq.mjs → scrapers-C0RpKnkf.mjs} +1 -1
- package/lib/{utils-DvRrWOyM.mjs → utils-DavJ8_XP.mjs} +1 -1
- package/package.json +38 -39
- package/presets/package.json +2 -2
package/README.en.md
CHANGED
|
@@ -41,6 +41,17 @@ Install **both** the plugin and the presets:
|
|
|
41
41
|
dsh plugin --profile web add @xiaoso/dsh-tool-plus
|
|
42
42
|
```
|
|
43
43
|
|
|
44
|
+
### Choosing a version
|
|
45
|
+
|
|
46
|
+
The plugin version maps one-to-one to the dsh version — pick the install command that matches your dsh:
|
|
47
|
+
|
|
48
|
+
| Plugin version (dist-tag) | Matching dsh version | Install command |
|
|
49
|
+
| --- | --- | --- |
|
|
50
|
+
| 0.1.2-rc.1 (`next`) | dsh v0.1.2-rc.1 (`next`) | `dsh plugin --profile web add @xiaoso/dsh-tool-plus@next` |
|
|
51
|
+
| 0.1.2 (`latest`) | dsh v0.1.1-rc.2 | `dsh plugin --profile web add @xiaoso/dsh-tool-plus` |
|
|
52
|
+
|
|
53
|
+
The plugin's `next` version number stays in lockstep with dsh's `next` (currently both 0.1.2-rc.1); installing without a tag gets the `latest` stable release.
|
|
54
|
+
|
|
44
55
|
### Install from GitHub
|
|
45
56
|
|
|
46
57
|
Track the latest development build:
|
|
@@ -110,7 +121,7 @@ Works out of the box, no configuration needed. Common tweaks: background thresho
|
|
|
110
121
|
- **dsh CLI**: installed globally, `npm i -g @deepseek-ai/dsh`
|
|
111
122
|
- **Node.js** ≥ 22.19 or ≥ 24
|
|
112
123
|
- **Git Bash** (recommended): serves as the bash execution environment on Windows
|
|
113
|
-
-
|
|
124
|
+
- Version mapping: `next` (0.1.2-rc.1) targets dsh v0.1.2-rc.1; `latest` (0.1.2) targets dsh v0.1.1-rc.2 (pre-release; interfaces may change — see “Choosing a version” under Installation)
|
|
114
125
|
|
|
115
126
|
## Notes
|
|
116
127
|
|
package/README.md
CHANGED
|
@@ -41,6 +41,17 @@ DeepSeek Harness 基础工具增强:持久 bash、结构化 read、多模式 e
|
|
|
41
41
|
dsh plugin --profile web add @xiaoso/dsh-tool-plus
|
|
42
42
|
```
|
|
43
43
|
|
|
44
|
+
### 版本选择
|
|
45
|
+
|
|
46
|
+
插件版本与 dsh 版本一一对应,按你的 dsh 版本选择安装:
|
|
47
|
+
|
|
48
|
+
| 插件版本(dist-tag) | 对应 dsh 版本 | 安装命令 |
|
|
49
|
+
| --- | --- | --- |
|
|
50
|
+
| 0.1.2-rc.1(`next`) | dsh v0.1.2-rc.1(`next`) | `dsh plugin --profile web add @xiaoso/dsh-tool-plus@next` |
|
|
51
|
+
| 0.1.2(`latest`) | dsh v0.1.1-rc.2 | `dsh plugin --profile web add @xiaoso/dsh-tool-plus` |
|
|
52
|
+
|
|
53
|
+
插件与 dsh 的 `next` 版本号保持一致(当前均为 0.1.2-rc.1);不带 tag 安装的是 `latest` 稳定版。
|
|
54
|
+
|
|
44
55
|
### 从 GitHub 安装
|
|
45
56
|
|
|
46
57
|
跟踪最新开发版:
|
|
@@ -106,7 +117,7 @@ npx @xiaoso/dsh-tool-plus-presets
|
|
|
106
117
|
- **dsh CLI**:需全局安装,`npm i -g @deepseek-ai/dsh`
|
|
107
118
|
- **Node.js** ≥ 22.19 或 ≥ 24
|
|
108
119
|
- **Git Bash**(推荐):Windows 上作为 bash 执行环境
|
|
109
|
-
-
|
|
120
|
+
- 版本对应:`next`(0.1.2-rc.1)适用于 dsh v0.1.2-rc.1;`latest`(0.1.2)适用于 dsh v0.1.1-rc.2(pre-release,接口可能变动,详见安装章节「版本选择」)
|
|
110
121
|
|
|
111
122
|
## 注意事项
|
|
112
123
|
|
package/lib/client.js
CHANGED
|
@@ -2077,7 +2077,6 @@ window.__ModuleLoader__.load({
|
|
|
2077
2077
|
switch (reason) {
|
|
2078
2078
|
case "snapshot-unavailable": return "rmSafeReasonSnapshotUnavailable";
|
|
2079
2079
|
case "cli-missing": return "rmSafeReasonCliMissing";
|
|
2080
|
-
case "script-write-failed": return "rmSafeReasonScriptWriteFailed";
|
|
2081
2080
|
case "snapshot-write-failed": return "rmSafeReasonSnapshotWriteFailed";
|
|
2082
2081
|
case "runtime-not-effective": return "rmSafeReasonRuntimeNotEffective";
|
|
2083
2082
|
}
|
|
@@ -2714,11 +2713,11 @@ window.__ModuleLoader__.load({
|
|
|
2714
2713
|
editFuzzyThreshold: "模糊匹配阈值",
|
|
2715
2714
|
editFuzzyThresholdHint: "相似度阈值,低于该值不视为命中。",
|
|
2716
2715
|
editEnforceSeenLines: "已见行守卫",
|
|
2717
|
-
editEnforceSeenLinesHint: "
|
|
2716
|
+
editEnforceSeenLinesHint: "禁止修改此前读取或搜索从未完整展示过的行。",
|
|
2718
2717
|
grepContextBefore: "匹配前上下文行数",
|
|
2719
|
-
grepContextBeforeHint: "
|
|
2718
|
+
grepContextBeforeHint: "每个匹配结果上方连带显示几行,方便对照命中处的前后文。",
|
|
2720
2719
|
grepContextAfter: "匹配后上下文行数",
|
|
2721
|
-
grepContextAfterHint: "
|
|
2720
|
+
grepContextAfterHint: "每个匹配结果下方连带显示几行,方便对照命中处的前后文。",
|
|
2722
2721
|
grepCaseDefault: "大小写敏感(默认)",
|
|
2723
2722
|
grepCaseDefaultHint: "开启(默认)时按大小写严格匹配;关闭后忽略大小写。调用时显式传 case 参数会覆盖此默认。",
|
|
2724
2723
|
grepGitignoreDefault: "跳过被忽略的文件(默认)",
|
|
@@ -2771,12 +2770,11 @@ window.__ModuleLoader__.load({
|
|
|
2771
2770
|
rmSafeStatusFailed: "安全 rm 注入失败:{reason},rm 将永久删除",
|
|
2772
2771
|
rmSafeReasonSnapshotUnavailable: "快照不可用",
|
|
2773
2772
|
rmSafeReasonCliMissing: "trash-cli 产物缺失",
|
|
2774
|
-
rmSafeReasonScriptWriteFailed: "脚本写入失败",
|
|
2775
2773
|
rmSafeReasonSnapshotWriteFailed: "快照不可写",
|
|
2776
2774
|
rmSafeReasonRuntimeNotEffective: "运行时未生效",
|
|
2777
2775
|
useShellCommandWrapper: "用 bash -c 包裹命令",
|
|
2778
2776
|
useShellCommandWrapperHint: "把每条命令用 bash -c 包裹,以获得完整的 bash 环境。",
|
|
2779
|
-
outputTruncateStrategy: "
|
|
2777
|
+
outputTruncateStrategy: "截断单位",
|
|
2780
2778
|
outputTruncateStrategyHint: "后台任务完成消息达到阈值时的截断单位:按字节或按行。切换后下方显示对应单位的配置。",
|
|
2781
2779
|
outputTruncateTriggerBytes: "字节触发阈值",
|
|
2782
2780
|
outputTruncateTriggerBytesHint: "完成文本超过该字节数才截断(按字节策略时生效)。",
|
|
@@ -2905,11 +2903,11 @@ window.__ModuleLoader__.load({
|
|
|
2905
2903
|
editFuzzyThreshold: "Fuzzy threshold",
|
|
2906
2904
|
editFuzzyThresholdHint: "Similarity threshold below which a match is not accepted.",
|
|
2907
2905
|
editEnforceSeenLines: "Seen-line guard",
|
|
2908
|
-
editEnforceSeenLinesHint: "Reject edits
|
|
2906
|
+
editEnforceSeenLinesHint: "Reject edits on lines a previous read or search never displayed in full.",
|
|
2909
2907
|
grepContextBefore: "Context lines before match",
|
|
2910
|
-
grepContextBeforeHint: "
|
|
2908
|
+
grepContextBeforeHint: "Lines shown above each match so you can see the context around a hit.",
|
|
2911
2909
|
grepContextAfter: "Context lines after match",
|
|
2912
|
-
grepContextAfterHint: "
|
|
2910
|
+
grepContextAfterHint: "Lines shown below each match so you can see the context around a hit.",
|
|
2913
2911
|
grepCaseDefault: "Case-sensitive (default)",
|
|
2914
2912
|
grepCaseDefaultHint: "When on (default), matches strictly by case; when off, case is ignored. An explicit case argument on the call overrides this default.",
|
|
2915
2913
|
grepGitignoreDefault: "Skip ignored files (default)",
|
|
@@ -2962,12 +2960,11 @@ window.__ModuleLoader__.load({
|
|
|
2962
2960
|
rmSafeStatusFailed: "Safe rm injection failed: {reason}, rm deletes permanently",
|
|
2963
2961
|
rmSafeReasonSnapshotUnavailable: "snapshot unavailable",
|
|
2964
2962
|
rmSafeReasonCliMissing: "trash-cli binary missing",
|
|
2965
|
-
rmSafeReasonScriptWriteFailed: "script write failed",
|
|
2966
2963
|
rmSafeReasonSnapshotWriteFailed: "snapshot not writable",
|
|
2967
2964
|
rmSafeReasonRuntimeNotEffective: "not effective at runtime",
|
|
2968
2965
|
useShellCommandWrapper: "Wrap commands in bash -c",
|
|
2969
2966
|
useShellCommandWrapperHint: "Wrap every command in bash -c for a full bash environment.",
|
|
2970
|
-
outputTruncateStrategy: "Truncate
|
|
2967
|
+
outputTruncateStrategy: "Truncate unit",
|
|
2971
2968
|
outputTruncateStrategyHint: "Unit used when a background completion message crosses its threshold: bytes or lines. Switching shows the matching unit's settings below.",
|
|
2972
2969
|
outputTruncateTriggerBytes: "Byte trigger threshold",
|
|
2973
2970
|
outputTruncateTriggerBytesHint: "Truncate only when the completion text exceeds this many bytes (byte strategy).",
|
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-DwpE70Pv.mjs";
|
|
5
5
|
import { $ as peekFile, A as formatAge, C as error, F as $envpos, I as $flag, M as formatCount, P as $env, Q as isProbablyBinary, S as debug, T as warn, U as getAutoQaDbPath, V as VERSION, X as getRemoteDir, Y as getPuppeteerDir, b as isEnotdir, c as combineSignals, d as $which, j as formatBytes$1, k as installBunShim, l as exec, p as readImageMetadata, q as getInstallId, tt as untilAborted, u as render, v as hasFsCode, y as isEnoent } from "./src-D_e1qMwi.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-DavJ8_XP.mjs";
|
|
7
7
|
import { t as sanitizeText } from "./sanitize-text-CfcXzw5X.mjs";
|
|
8
8
|
import { n as isRecord$2 } from "./type-guards-B9VVjRDK.mjs";
|
|
9
9
|
import { n as ToolError, r as throwIfAborted, t as ToolAbortError } from "./tool-errors-DoyxivAR.mjs";
|
|
@@ -25,7 +25,6 @@ import { fileURLToPath } from "node:url";
|
|
|
25
25
|
import { scheduler } from "node:timers/promises";
|
|
26
26
|
import { randomBytes } from "node:crypto";
|
|
27
27
|
import z from "@deepseek-ai/schemastery";
|
|
28
|
-
import { installSettingsSection, settingsNamespace } from "@deepseek-ai/dsh-settings";
|
|
29
28
|
import { type } from "@oh-my-pi/omptype";
|
|
30
29
|
import { DatabaseSync } from "node:sqlite";
|
|
31
30
|
//#region src/tools/bash/shell-tokenize.ts
|
|
@@ -811,20 +810,21 @@ function cleanupSnapshots() {
|
|
|
811
810
|
/**
|
|
812
811
|
* rmSafe: rm 重定义脚本的生成与快照注入。
|
|
813
812
|
*
|
|
814
|
-
*
|
|
815
|
-
*
|
|
813
|
+
* 生成 bash 函数定义(rm → `node <trash-cli.mjs> "$@"`),直接内联进
|
|
814
|
+
* 快照文件(会话 shell 创建时 source 一次):
|
|
816
815
|
* - POSIX:追加到用户环境快照末尾(幂等,带标记行);
|
|
817
816
|
* - Windows:getOrCreateSnapshot 生成"仅注入"快照文件后同样追加。
|
|
818
817
|
*
|
|
818
|
+
* 内联而非独立脚本文件:快照随进程重建(重启后重新生成),node/trash-cli
|
|
819
|
+
* 路径在进程内是常量,不存在"路径漂移";独立脚本文件反而引入跨进程共享
|
|
820
|
+
* 缓存(不同安装路径的实例、测试进程互相覆盖,测试进程的 import.meta.url
|
|
821
|
+
* 指向 src 会把共享缓存重写成不存在的路径)。
|
|
822
|
+
*
|
|
819
823
|
* rmSafe 关闭时调用方不注入,快照保持原样,系统 rm 生效。
|
|
820
824
|
* @module @xiaoso/dsh-tool-plus/bash/rm-safe
|
|
821
825
|
*/
|
|
822
826
|
/** 注入标记行:injectRmSafe 以此判断是否已注入(幂等)。 */
|
|
823
827
|
const RM_SAFE_MARKER = "# dsh-tool-plus rmSafe";
|
|
824
|
-
/** rm-safe 脚本缓存目录(tmpdir 下,跨会话复用)。 */
|
|
825
|
-
function rmSafeScriptDir() {
|
|
826
|
-
return path.join(os.tmpdir(), "dsh-bash-plus");
|
|
827
|
-
}
|
|
828
828
|
/** trash-cli 构建产物路径(lib/trash-cli.mjs,与主 bundle 同目录)。 */
|
|
829
829
|
function rmSafeCliPath() {
|
|
830
830
|
return fileURLToPath(new URL("./trash-cli.mjs", import.meta.url));
|
|
@@ -849,28 +849,10 @@ function rmSafeScript(nodePath, cliPath) {
|
|
|
849
849
|
].join("\n");
|
|
850
850
|
}
|
|
851
851
|
/**
|
|
852
|
-
*
|
|
853
|
-
* 返回脚本路径;目录/写入失败时返回 null(不抛异常,调用方降级并告警)。
|
|
854
|
-
*/
|
|
855
|
-
function ensureRmSafeScript(dir, nodePath, cliPath) {
|
|
856
|
-
const target = path.join(dir, "rm-safe.sh");
|
|
857
|
-
const content = rmSafeScript(nodePath, cliPath);
|
|
858
|
-
try {
|
|
859
|
-
if (fs.readFileSync(target, "utf8") === content) return target;
|
|
860
|
-
} catch {}
|
|
861
|
-
try {
|
|
862
|
-
fs.mkdirSync(dir, { recursive: true });
|
|
863
|
-
fs.writeFileSync(target, content, { mode: 384 });
|
|
864
|
-
return target;
|
|
865
|
-
} catch {
|
|
866
|
-
return null;
|
|
867
|
-
}
|
|
868
|
-
}
|
|
869
|
-
/**
|
|
870
|
-
* 向快照文件追加 `source <rm-safe.sh>`(幂等:已有标记则跳过)。
|
|
852
|
+
* 向快照文件内联追加 rm 重定义(幂等:已有标记则跳过)。
|
|
871
853
|
* 返回是否注入成功;快照文件不可读/不可写时返回 false(不抛异常)。
|
|
872
854
|
*/
|
|
873
|
-
function injectRmSafe(snapshotPath,
|
|
855
|
+
function injectRmSafe(snapshotPath, nodePath, cliPath) {
|
|
874
856
|
let content;
|
|
875
857
|
try {
|
|
876
858
|
content = fs.readFileSync(snapshotPath, "utf8");
|
|
@@ -879,7 +861,7 @@ function injectRmSafe(snapshotPath, scriptPath) {
|
|
|
879
861
|
}
|
|
880
862
|
if (content.includes("# dsh-tool-plus rmSafe")) return true;
|
|
881
863
|
try {
|
|
882
|
-
fs.appendFileSync(snapshotPath, `\n${
|
|
864
|
+
fs.appendFileSync(snapshotPath, `\n${rmSafeScript(nodePath, cliPath)}`);
|
|
883
865
|
return true;
|
|
884
866
|
} catch {
|
|
885
867
|
return false;
|
|
@@ -2426,13 +2408,9 @@ async function executeBash(command, options) {
|
|
|
2426
2408
|
let snapshotPath = bashShell && options?.snapshotEnabled !== false ? await getOrCreateSnapshot(shell, shellEnv) : null;
|
|
2427
2409
|
let rmSafeInjectionFailed = false;
|
|
2428
2410
|
if (snapshotPath !== null && options?.rmSafe === true) {
|
|
2429
|
-
|
|
2430
|
-
if (scriptPath === null || !injectRmSafe(snapshotPath, scriptPath)) {
|
|
2411
|
+
if (!injectRmSafe(snapshotPath, process.execPath, rmSafeCliPath())) {
|
|
2431
2412
|
rmSafeInjectionFailed = true;
|
|
2432
|
-
runtimeLogger().warn("rmSafe: injection failed, rm will delete permanently", {
|
|
2433
|
-
scriptPath: scriptPath ?? null,
|
|
2434
|
-
snapshotPath
|
|
2435
|
-
});
|
|
2413
|
+
runtimeLogger().warn("rmSafe: injection failed, rm will delete permanently", { snapshotPath });
|
|
2436
2414
|
}
|
|
2437
2415
|
}
|
|
2438
2416
|
const injectionFailedMarker = rmSafeInjectionFailed ? { rmSafeInjectionFailed: true } : {};
|
|
@@ -4007,7 +3985,7 @@ TOOL_PLUS_FIELDS.map((field) => field.name);
|
|
|
4007
3985
|
//#endregion
|
|
4008
3986
|
//#region src/config/settings.ts
|
|
4009
3987
|
/** Settings namespace of this plugin, served to the web Plugins page. */
|
|
4010
|
-
const BASH_PLUS_SETTINGS_NS =
|
|
3988
|
+
const BASH_PLUS_SETTINGS_NS = "tool-plus";
|
|
4011
3989
|
/** OMP-parity defaults for the completion-message truncation policy. */
|
|
4012
3990
|
const DEFAULT_OUTPUT_TRUNCATE = {
|
|
4013
3991
|
strategy: "bytes",
|
|
@@ -4223,15 +4201,17 @@ function resolveConfig(config) {
|
|
|
4223
4201
|
*/
|
|
4224
4202
|
function installBashPlusSettings(ctx, entry, onSource) {
|
|
4225
4203
|
let currentSource;
|
|
4226
|
-
|
|
4227
|
-
|
|
4228
|
-
|
|
4229
|
-
|
|
4230
|
-
|
|
4231
|
-
|
|
4232
|
-
|
|
4233
|
-
|
|
4234
|
-
|
|
4204
|
+
ctx.inject(["settings"], (settingsCtx) => {
|
|
4205
|
+
settingsCtx.settings.installSection(ctx, BASH_PLUS_SETTINGS_NS, Config, entry, {
|
|
4206
|
+
setSource: (current) => {
|
|
4207
|
+
currentSource = current;
|
|
4208
|
+
onSource(() => resolveConfig(current()));
|
|
4209
|
+
},
|
|
4210
|
+
onChange: () => {
|
|
4211
|
+
const source = currentSource;
|
|
4212
|
+
if (source) onSource(() => resolveConfig(source()));
|
|
4213
|
+
}
|
|
4214
|
+
});
|
|
4235
4215
|
});
|
|
4236
4216
|
}
|
|
4237
4217
|
//#endregion
|
|
@@ -4458,12 +4438,7 @@ async function queryRmSafeStatus(deps) {
|
|
|
4458
4438
|
status: "failed",
|
|
4459
4439
|
reason: "cli-missing"
|
|
4460
4440
|
};
|
|
4461
|
-
|
|
4462
|
-
if (scriptPath === null) return {
|
|
4463
|
-
status: "failed",
|
|
4464
|
-
reason: "script-write-failed"
|
|
4465
|
-
};
|
|
4466
|
-
if (!deps.inject(snapshotPath, scriptPath)) return {
|
|
4441
|
+
if (!deps.inject(snapshotPath, deps.nodePath(), deps.cliPath())) return {
|
|
4467
4442
|
status: "failed",
|
|
4468
4443
|
reason: "snapshot-write-failed"
|
|
4469
4444
|
};
|
|
@@ -4533,8 +4508,9 @@ function installBrowserProbeRpc(ctx, deps) {
|
|
|
4533
4508
|
value: await queryRmSafeStatus({
|
|
4534
4509
|
getOrCreateSnapshot: () => getOrCreateSnapshot(shell, env),
|
|
4535
4510
|
cliExists: () => fs.existsSync(rmSafeCliPath()),
|
|
4536
|
-
|
|
4537
|
-
|
|
4511
|
+
nodePath: () => process.execPath,
|
|
4512
|
+
cliPath: () => rmSafeCliPath(),
|
|
4513
|
+
inject: (snapshotPath, nodePath, cliPath) => injectRmSafe(snapshotPath, nodePath, cliPath),
|
|
4538
4514
|
probe: (snapshotPath) => probeRmSafeRuntime(shell, snapshotPath)
|
|
4539
4515
|
})
|
|
4540
4516
|
};
|
|
@@ -4558,7 +4534,7 @@ function installBrowserProbeRpc(ctx, deps) {
|
|
|
4558
4534
|
}
|
|
4559
4535
|
};
|
|
4560
4536
|
};
|
|
4561
|
-
disposer = connectionCtx.connection.rpc.handle(TOOL_PLUS_RPC_CHANNEL, handler
|
|
4537
|
+
disposer = connectionCtx.connection.rpc.handle(TOOL_PLUS_RPC_CHANNEL, handler);
|
|
4562
4538
|
} catch {
|
|
4563
4539
|
disposer = void 0;
|
|
4564
4540
|
}
|
|
@@ -14881,7 +14857,7 @@ let specialHandlersPromise;
|
|
|
14881
14857
|
* requires a special handler, so we keep them out of the cold-startup graph.
|
|
14882
14858
|
*/
|
|
14883
14859
|
function loadSpecialHandlers() {
|
|
14884
|
-
specialHandlersPromise ??= import("./scrapers-
|
|
14860
|
+
specialHandlersPromise ??= import("./scrapers-C0RpKnkf.mjs").then((m) => m.specialHandlers);
|
|
14885
14861
|
return specialHandlersPromise;
|
|
14886
14862
|
}
|
|
14887
14863
|
/**
|
|
@@ -3,7 +3,7 @@ __installBunShim();
|
|
|
3
3
|
import { n as fs_promises_shim_exports } from "./fs-promises-shim-Bx0fpxuk.mjs";
|
|
4
4
|
import { B as USER_AGENT, G as getDocsRsCacheDir, N as formatNumber, P as $env, T as warn, c as combineSignals, j as formatBytes, l as exec, s as Snowflake, x as parseFrontmatter, y as isEnoent } from "./src-D_e1qMwi.mjs";
|
|
5
5
|
import { V as tryParseJson } from "./utils-fnV2zzp3.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-DavJ8_XP.mjs";
|
|
7
7
|
import { n as isRecord } from "./type-guards-B9VVjRDK.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-BUO0JXO-.mjs";
|
|
@@ -7202,7 +7202,7 @@ const settings = {
|
|
|
7202
7202
|
};
|
|
7203
7203
|
//#endregion
|
|
7204
7204
|
//#region package.json
|
|
7205
|
-
var version = "0.1.2-
|
|
7205
|
+
var version = "0.1.2-rc.1";
|
|
7206
7206
|
/** `.tmp` files older than this are treated as orphaned writes and swept. */
|
|
7207
7207
|
const TMP_ORPHAN_MAX_AGE_MS = 3e5;
|
|
7208
7208
|
function markitConversionCacheKey(bytes, extension) {
|
package/package.json
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xiaoso/dsh-tool-plus",
|
|
3
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.2-
|
|
4
|
+
"version": "0.1.2-rc.1",
|
|
5
5
|
"license": "MIT",
|
|
6
6
|
"keywords": [
|
|
7
7
|
"deepseek-harness",
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"type": "module",
|
|
31
31
|
"publishConfig": {
|
|
32
32
|
"access": "public",
|
|
33
|
-
"tag": "
|
|
33
|
+
"tag": "next"
|
|
34
34
|
},
|
|
35
35
|
"engines": {
|
|
36
36
|
"node": "^22.19.0 || >=24.0.0"
|
|
@@ -64,7 +64,6 @@
|
|
|
64
64
|
},
|
|
65
65
|
"client": {
|
|
66
66
|
"inject": [
|
|
67
|
-
"@deepseek-ai/dsh-client-runtime",
|
|
68
67
|
"@deepseek-ai/dsh-client-locale",
|
|
69
68
|
"@deepseek-ai/dsh-client-ui-settings"
|
|
70
69
|
],
|
|
@@ -80,26 +79,26 @@
|
|
|
80
79
|
"postinstall": "node scripts/patch-pi-natives.mjs"
|
|
81
80
|
},
|
|
82
81
|
"peerDependencies": {
|
|
83
|
-
"@deepseek-ai/cordis": "
|
|
84
|
-
"@deepseek-ai/dsh-agent": "
|
|
85
|
-
"@deepseek-ai/dsh-attachment": "
|
|
86
|
-
"@deepseek-ai/dsh-client-connection": "
|
|
87
|
-
"@deepseek-ai/dsh-fs": "
|
|
88
|
-
"@deepseek-ai/dsh-jobs": "
|
|
89
|
-
"@deepseek-ai/dsh-llm": "
|
|
90
|
-
"@deepseek-ai/dsh-sandbox": "
|
|
91
|
-
"@deepseek-ai/dsh-session": "
|
|
92
|
-
"@deepseek-ai/dsh-settings": "
|
|
93
|
-
"@deepseek-ai/dsh-shell": "
|
|
94
|
-
"@deepseek-ai/dsh-shell-env": "
|
|
95
|
-
"@deepseek-ai/dsh-system-prompt": "
|
|
96
|
-
"@deepseek-ai/dsh-tools": "
|
|
82
|
+
"@deepseek-ai/cordis": "4.0.2",
|
|
83
|
+
"@deepseek-ai/dsh-agent": "0.1.2-rc.1",
|
|
84
|
+
"@deepseek-ai/dsh-attachment": "0.1.2-rc.1",
|
|
85
|
+
"@deepseek-ai/dsh-client-connection": "0.1.2-rc.1",
|
|
86
|
+
"@deepseek-ai/dsh-fs": "0.1.2-rc.1",
|
|
87
|
+
"@deepseek-ai/dsh-jobs": "0.1.2-rc.1",
|
|
88
|
+
"@deepseek-ai/dsh-llm": "0.1.2-rc.1",
|
|
89
|
+
"@deepseek-ai/dsh-sandbox": "0.1.2-rc.1",
|
|
90
|
+
"@deepseek-ai/dsh-session": "0.1.2-rc.1",
|
|
91
|
+
"@deepseek-ai/dsh-settings": "0.1.2-rc.1",
|
|
92
|
+
"@deepseek-ai/dsh-shell": "0.1.2-rc.1",
|
|
93
|
+
"@deepseek-ai/dsh-shell-env": "0.1.2-rc.1",
|
|
94
|
+
"@deepseek-ai/dsh-system-prompt": "0.1.2-rc.1",
|
|
95
|
+
"@deepseek-ai/dsh-tools": "0.1.2-rc.1"
|
|
97
96
|
},
|
|
98
97
|
"optionalPeerDependencies": {
|
|
99
98
|
"sharp": ">=0.33"
|
|
100
99
|
},
|
|
101
100
|
"dependencies": {
|
|
102
|
-
"@deepseek-ai/schemastery": "
|
|
101
|
+
"@deepseek-ai/schemastery": "3.18.2",
|
|
103
102
|
"@oh-my-pi/omptype": "17.3.5",
|
|
104
103
|
"@oh-my-pi/pi-agent-core": "17.3.5",
|
|
105
104
|
"@oh-my-pi/pi-ai": "17.3.5",
|
|
@@ -113,27 +112,27 @@
|
|
|
113
112
|
"yaml": "^2.9.0"
|
|
114
113
|
},
|
|
115
114
|
"devDependencies": {
|
|
116
|
-
"@deepseek-ai/cordis": "
|
|
117
|
-
"@deepseek-ai/dsh-agent": "
|
|
118
|
-
"@deepseek-ai/dsh-client-connection": "
|
|
119
|
-
"@deepseek-ai/dsh-client-locale": "
|
|
120
|
-
"@deepseek-ai/dsh-client-
|
|
121
|
-
"@deepseek-ai/dsh-client-ui-
|
|
122
|
-
"@deepseek-ai/dsh-client-ui-settings": "
|
|
123
|
-
"@deepseek-ai/dsh-client-ui-settings-plugins": "0.1.
|
|
124
|
-
"@deepseek-ai/dsh-client-ui-slots": "
|
|
125
|
-
"@deepseek-ai/dsh-fs-local": "0.1.
|
|
126
|
-
"@deepseek-ai/dsh-jobs": "
|
|
127
|
-
"@deepseek-ai/dsh-jobs-local": "
|
|
128
|
-
"@deepseek-ai/dsh-llm": "
|
|
129
|
-
"@deepseek-ai/dsh-session": "
|
|
130
|
-
"@deepseek-ai/dsh-settings": "
|
|
131
|
-
"@deepseek-ai/dsh-shell": "
|
|
132
|
-
"@deepseek-ai/dsh-shell-env": "
|
|
133
|
-
"@deepseek-ai/dsh-system-prompt": "
|
|
134
|
-
"@deepseek-ai/dsh-tool-jobs": "
|
|
135
|
-
"@deepseek-ai/dsh-tool-str-replace-editor": "0.1.
|
|
136
|
-
"@deepseek-ai/dsh-tools": "
|
|
115
|
+
"@deepseek-ai/cordis": "4.0.2",
|
|
116
|
+
"@deepseek-ai/dsh-agent": "0.1.2-rc.1",
|
|
117
|
+
"@deepseek-ai/dsh-client-connection": "0.1.2-rc.1",
|
|
118
|
+
"@deepseek-ai/dsh-client-locale": "0.1.2-rc.1",
|
|
119
|
+
"@deepseek-ai/dsh-client-ui-primitives": "0.1.2-rc.1",
|
|
120
|
+
"@deepseek-ai/dsh-client-ui-renderer": "0.1.2-rc.1",
|
|
121
|
+
"@deepseek-ai/dsh-client-ui-settings": "0.1.2-rc.1",
|
|
122
|
+
"@deepseek-ai/dsh-client-ui-settings-plugins": "0.1.2-rc.1",
|
|
123
|
+
"@deepseek-ai/dsh-client-ui-slots": "0.1.2-rc.1",
|
|
124
|
+
"@deepseek-ai/dsh-fs-local": "0.1.2-rc.1",
|
|
125
|
+
"@deepseek-ai/dsh-jobs": "0.1.2-rc.1",
|
|
126
|
+
"@deepseek-ai/dsh-jobs-local": "0.1.2-rc.1",
|
|
127
|
+
"@deepseek-ai/dsh-llm": "0.1.2-rc.1",
|
|
128
|
+
"@deepseek-ai/dsh-session": "0.1.2-rc.1",
|
|
129
|
+
"@deepseek-ai/dsh-settings": "0.1.2-rc.1",
|
|
130
|
+
"@deepseek-ai/dsh-shell": "0.1.2-rc.1",
|
|
131
|
+
"@deepseek-ai/dsh-shell-env": "0.1.2-rc.1",
|
|
132
|
+
"@deepseek-ai/dsh-system-prompt": "0.1.2-rc.1",
|
|
133
|
+
"@deepseek-ai/dsh-tool-jobs": "0.1.2-rc.1",
|
|
134
|
+
"@deepseek-ai/dsh-tool-str-replace-editor": "0.1.2-rc.1",
|
|
135
|
+
"@deepseek-ai/dsh-tools": "0.1.2-rc.1",
|
|
137
136
|
"@types/node": "^22.19.0",
|
|
138
137
|
"@types/react": "^19.0.0",
|
|
139
138
|
"@types/react-dom": "^19.0.0",
|
package/presets/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@xiaoso/dsh-tool-plus-presets",
|
|
3
|
-
"version": "0.1.2-
|
|
3
|
+
"version": "0.1.2-rc.1",
|
|
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": [
|
|
@@ -25,7 +25,7 @@
|
|
|
25
25
|
"type": "module",
|
|
26
26
|
"publishConfig": {
|
|
27
27
|
"access": "public",
|
|
28
|
-
"tag": "
|
|
28
|
+
"tag": "next"
|
|
29
29
|
},
|
|
30
30
|
"bin": {
|
|
31
31
|
"dsh-tool-plus-presets": "./install-presets.mjs"
|