@xiaoso/dsh-tool-plus 0.1.10-beta.1 → 0.1.10-beta.3
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/lib/{abort-BtBy5Svf.mjs → abort-DZ54CaKU.mjs} +1 -1
- package/lib/{alibaba-coding-plan-oxHCHJtG.mjs → alibaba-coding-plan-DODpkcqi.mjs} +2 -2
- package/lib/{alibaba-token-plan-B0WzvYnB.mjs → alibaba-token-plan-C6lpKCda.mjs} +2 -2
- package/lib/{amazon-bedrock-BvfYGhrD.mjs → amazon-bedrock-Dx0rr9dY.mjs} +6 -6
- package/lib/{anthropic-Id561lwb.mjs → anthropic-ClCw0PV_.mjs} +14 -14
- package/lib/{anthropic-C6-vdduI.mjs → anthropic-Dv_GGX6g.mjs} +2 -2
- package/lib/{anthropic-wire-Cb8AQ1tS.mjs → anthropic-wire-lbGAFzYb.mjs} +5 -5
- package/lib/{api-key-validation-BXJKlsJg.mjs → api-key-validation-MnMf_ihX.mjs} +1 -1
- package/lib/{azure-openai-responses-CGws_ijz.mjs → azure-openai-responses-WE_bgFWp.mjs} +9 -9
- package/lib/{browser-render-i7uYOl4f.mjs → browser-render-BZXt548F.mjs} +2 -2
- package/lib/client.js +131 -751
- package/lib/{cline-pass-Bwg3esu9.mjs → cline-pass-BT9CBEOj.mjs} +1 -1
- package/lib/{cloudflare-ai-gateway-B_kWnF30.mjs → cloudflare-ai-gateway-CrMa97Ap.mjs} +1 -1
- package/lib/{cloudflare-ai-gateway-BK6eadm9.mjs → cloudflare-ai-gateway-DReN6ohJ.mjs} +2 -2
- package/lib/{collapse-DU3g7d3B.mjs → collapse-CkMNRNr7.mjs} +1 -1
- package/lib/{coreweave-CkR_FlQi.mjs → coreweave-C68UgRQO.mjs} +2 -2
- package/lib/{cursor-BXx_5h4a.mjs → cursor-C6jaIJDg.mjs} +2 -2
- package/lib/{cursor-BcHwv8qq.mjs → cursor-D-XZYDf_.mjs} +9 -9
- package/lib/{cursor-BjWbJJLe.mjs → cursor-_gHHq-Dq.mjs} +2 -2
- package/lib/{cursor-proto-DPXXYx8S.mjs → cursor-proto-Cr_WEMuv.mjs} +1 -1
- package/lib/{devin-Ce3Wz8_E.mjs → devin-QpfTSl9H.mjs} +5 -5
- package/lib/{devin-proto-B6HwDwHK.mjs → devin-proto-DYhp4Ty6.mjs} +1 -1
- package/lib/{devin-BZBfzyIz.mjs → devin-u0ljw5P6.mjs} +6 -6
- package/lib/{error-DdCn4m1q.mjs → error-O63pC8zg.mjs} +1 -1
- package/lib/{event-stream-ldcUvOA0.mjs → event-stream-BKEtb45Y.mjs} +1 -1
- package/lib/{fs-promises-shim-Bx0fpxuk.mjs → fs-promises-shim-B2YFWkcd.mjs} +1 -0
- package/lib/{github-copilot-BT5dkIJl.mjs → github-copilot-BMEcw8N1.mjs} +2 -2
- package/lib/{github-copilot-headers-BGL8JO5c.mjs → github-copilot-headers-DnjGEbko.mjs} +2 -2
- package/lib/{gitlab-duo-B0qSYCa3.mjs → gitlab-duo-DnHqJjFY.mjs} +1 -1
- package/lib/{google-antigravity-D1llOVad.mjs → google-antigravity-B1mSckrK.mjs} +3 -3
- package/lib/{google-auth-DYhqX1rJ.mjs → google-auth-qAN-6DMW.mjs} +3 -3
- package/lib/{google-gemini-cli-ByQUuKp9.mjs → google-gemini-cli-B2Aw1S5w.mjs} +7 -7
- package/lib/{google-gemini-cli-CjHy6mFG.mjs → google-gemini-cli-DJwThCCn.mjs} +3 -3
- package/lib/{google-6cRgRmh0.mjs → google-lTxuq28n.mjs} +3 -3
- package/lib/{google-oauth-shared-CSwCT0Yl.mjs → google-oauth-shared-BctLpVUN.mjs} +1 -1
- package/lib/{google-shared-DYjJp0mQ.mjs → google-shared-Y01j9xOr.mjs} +5 -5
- package/lib/{google-vertex-CbOvlE5j.mjs → google-vertex-DcM-FRC5.mjs} +4 -4
- package/lib/{idle-iterator-DTBaEIbM.mjs → idle-iterator-D0ZXEcUq.mjs} +2 -2
- package/lib/index.mjs +120 -16
- package/lib/{kilo-cVG1aNZM.mjs → kilo-BEgEwMJQ.mjs} +1 -1
- package/lib/{kimi-BFfnFDhu.mjs → kimi-T9NldEIJ.mjs} +2 -2
- package/lib/{launch-Uq7920ng.mjs → launch-BIWNyrBB.mjs} +1 -1
- package/lib/{markit-BmsfOFVh.mjs → markit-Dvp2JPdT.mjs} +4 -4
- package/lib/{muse-code-CtcevJab.mjs → muse-code-CNvqqAp6.mjs} +2 -2
- package/lib/{ollama-B5hR1P1p.mjs → ollama-6R0oXZks.mjs} +9 -9
- package/lib/{openai-codex-CxkPyvyt.mjs → openai-codex-D5-CyTxa.mjs} +2 -2
- package/lib/{openai-codex-responses-BbM3Q7nJ.mjs → openai-codex-responses-C8bnBWOe.mjs} +11 -11
- package/lib/{openai-completions-CffXVOCL.mjs → openai-completions-DNr3mUsn.mjs} +15 -15
- package/lib/{openai-reasoning-fallback-DFdD1ok5.mjs → openai-reasoning-fallback-Ju-5pSR8.mjs} +2 -2
- package/lib/{openai-responses-DgqOvSn_.mjs → openai-responses-CjpafAEr.mjs} +10 -10
- package/lib/{perplexity-JFp3knZN.mjs → perplexity-A2PEoGaC.mjs} +2 -2
- package/lib/{protobuf-BJHNU9-E.mjs → protobuf-BMgDYu_U.mjs} +1 -1
- package/lib/{proxy-B51IWEMt.mjs → proxy-DxvCQOCA.mjs} +2 -2
- package/lib/{request-debug-NQN0BjHH.mjs → request-debug-BwPOqN_j.mjs} +1 -1
- package/lib/{scrapers-DODCPcZW.mjs → scrapers-C6EY0T00.mjs} +5 -5
- package/lib/{src-DUUqyo9y.mjs → src-AELUUb5U.mjs} +1 -1
- package/lib/{stream-DHdFrAG4.mjs → stream-AVOoe5Hj.mjs} +46 -46
- package/lib/{stream-markup-healing-DlJ9abTw.mjs → stream-markup-healing-CN3RsqG9.mjs} +2 -2
- package/lib/{thinking-D6LJxkz_.mjs → thinking-ngMwf_1Y.mjs} +1 -1
- package/lib/{turndown-DrX1M4WG.mjs → turndown-D6fof1OX.mjs} +1 -1
- package/lib/types/client/index.d.ts +18 -14
- package/lib/types/host/win32-console.d.ts +54 -0
- package/lib/{types-DT9vgZ3S.mjs → types-BLrLohwK.mjs} +2 -2
- package/lib/{utils-D80w8vry.mjs → utils-BZWfyz9e.mjs} +28 -28
- package/lib/{utils-D31VFael.mjs → utils-I4I8azHN.mjs} +1 -1
- package/lib/{utils-BMmwLB0f.mjs → utils-cZX3f_Ls.mjs} +2 -2
- package/lib/{vision-guard-BlAAqGUC.mjs → vision-guard-BCpXWUj3.mjs} +1 -1
- package/lib/{xai-oauth-QPyScm4X.mjs → xai-oauth-CbeldUSV.mjs} +2 -2
- package/lib/{xiaomi-CLzjxHAi.mjs → xiaomi-Dl3VSs04.mjs} +1 -1
- package/lib/{zai-wDp0g7VC.mjs → zai-FyjGSypr.mjs} +1 -1
- package/lib/{zip-CNtIFfyV.mjs → zip-DRrycScC.mjs} +1 -1
- package/package.json +169 -166
- package/lib/types/client/BashPlusCard.d.ts +0 -53
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { installBunShim as __installBunShim } from "./bun-shim.mjs";
|
|
2
2
|
__installBunShim();
|
|
3
|
-
import { c as combineSignals } from "./src-
|
|
3
|
+
import { c as combineSignals } from "./src-AELUUb5U.mjs";
|
|
4
4
|
import { t as ToolAbortError } from "./tool-errors-DoyxivAR.mjs";
|
|
5
5
|
import { scheduler } from "node:timers/promises";
|
|
6
6
|
//#region src/tools/omp/web/scrapers/types.ts
|
|
@@ -176,7 +176,7 @@ function getTurndown() {
|
|
|
176
176
|
return turndownPromise;
|
|
177
177
|
}
|
|
178
178
|
async function initTurndown() {
|
|
179
|
-
const { createTurndown } = await import("./turndown-
|
|
179
|
+
const { createTurndown } = await import("./turndown-D6fof1OX.mjs").then((n) => n.r);
|
|
180
180
|
return createTurndown();
|
|
181
181
|
}
|
|
182
182
|
/**
|
|
@@ -1,36 +1,36 @@
|
|
|
1
1
|
import { installBunShim as __installBunShim } from "./bun-shim.mjs";
|
|
2
2
|
__installBunShim();
|
|
3
|
-
import { n as fs_promises_shim_exports } from "./fs-promises-shim-
|
|
4
|
-
import { $ as isEnoent, B as USER_AGENT, C as warn, F as $flag, K as getDocumentConversionCacheDir, L as isBunTestRuntime, N as $env, R as isTerminalHeadless, W as getDebugLogPath, Z as getToolsDir, b as debug, c as combineSignals, d as $which, f as register, it as untilAborted, l as exec, q as getInstallId, r as TempDir, x as error, z as isWsl } from "./src-
|
|
5
|
-
import { V as ProviderHttpError, a as isTransientStatus, f as OAuthError } from "./error-
|
|
6
|
-
import "./utils-
|
|
3
|
+
import { n as fs_promises_shim_exports } from "./fs-promises-shim-B2YFWkcd.mjs";
|
|
4
|
+
import { $ as isEnoent, B as USER_AGENT, C as warn, F as $flag, K as getDocumentConversionCacheDir, L as isBunTestRuntime, N as $env, R as isTerminalHeadless, W as getDebugLogPath, Z as getToolsDir, b as debug, c as combineSignals, d as $which, f as register, it as untilAborted, l as exec, q as getInstallId, r as TempDir, x as error, z as isWsl } from "./src-AELUUb5U.mjs";
|
|
5
|
+
import { V as ProviderHttpError, a as isTransientStatus, f as OAuthError } from "./error-O63pC8zg.mjs";
|
|
6
|
+
import "./utils-cZX3f_Ls.mjs";
|
|
7
7
|
import { n as isRecord } from "./type-guards-CttAANEx.mjs";
|
|
8
8
|
import { t as ToolAbortError } from "./tool-errors-DoyxivAR.mjs";
|
|
9
|
-
import { n as extractArchive } from "./zip-
|
|
10
|
-
import { a as CODEX_BASE_URL, jt as quotaTierFor, n as getEnvApiKey } from "./stream-
|
|
9
|
+
import { n as extractArchive } from "./zip-DRrycScC.mjs";
|
|
10
|
+
import { a as CODEX_BASE_URL, jt as quotaTierFor, n as getEnvApiKey } from "./stream-AVOoe5Hj.mjs";
|
|
11
11
|
import { n as ALIBABA_TOKEN_PLAN_CN_BASE_URL, r as parseAlibabaTokenPlanCredential } from "./alibaba-token-plan-CHGyWOfX.mjs";
|
|
12
|
-
import { a as toNumber, i as toBoolean$1 } from "./utils-
|
|
13
|
-
import "./cloudflare-ai-gateway-
|
|
14
|
-
import { u as COPILOT_GITHUB_HEADERS } from "./github-copilot-headers-
|
|
15
|
-
import "./vision-guard-
|
|
16
|
-
import "./event-stream-
|
|
17
|
-
import { o as claudeCodeVersion } from "./anthropic-
|
|
18
|
-
import { n as parseMuseCodeCredential, r as requestMuseCodeKey } from "./muse-code-
|
|
12
|
+
import { a as toNumber, i as toBoolean$1 } from "./utils-I4I8azHN.mjs";
|
|
13
|
+
import "./cloudflare-ai-gateway-CrMa97Ap.mjs";
|
|
14
|
+
import { u as COPILOT_GITHUB_HEADERS } from "./github-copilot-headers-DnjGEbko.mjs";
|
|
15
|
+
import "./vision-guard-BCpXWUj3.mjs";
|
|
16
|
+
import "./event-stream-BKEtb45Y.mjs";
|
|
17
|
+
import { o as claudeCodeVersion } from "./anthropic-Dv_GGX6g.mjs";
|
|
18
|
+
import { n as parseMuseCodeCredential, r as requestMuseCodeKey } from "./muse-code-CNvqqAp6.mjs";
|
|
19
19
|
import { n as getAntigravityUserAgent, r as getGeminiCliHeaders } from "./gemini-headers-Co9cVvex.mjs";
|
|
20
|
-
import { n as clinePassClientHeaders, t as CLINEPASS_API_BASE_URL } from "./cline-pass-
|
|
20
|
+
import { n as clinePassClientHeaders, t as CLINEPASS_API_BASE_URL } from "./cline-pass-BT9CBEOj.mjs";
|
|
21
21
|
import { i as normalizeDevinSessionToken, n as devinCliMetadata } from "./devin-ExGIghmx.mjs";
|
|
22
|
-
import { t as getKimiCommonHeaders } from "./kimi-
|
|
23
|
-
import { n as extractCursorAccessTokenUserId } from "./cursor-
|
|
24
|
-
import { o as toBinary, t as create } from "./protobuf-
|
|
25
|
-
import { b as TeamsTier, g as GetUserStatusResponseSchema, h as GetUserStatusRequestSchema, t as decodeDevinUnaryMessage, v as MetadataSchema } from "./devin-proto-
|
|
26
|
-
import { i as getXAICliBillingHeaders, n as extractXAIAccessTokenSubject, r as fetchXAIOAuthIdentity, t as buildXAICliBillingUrl } from "./xai-oauth-
|
|
27
|
-
import "./openai-codex-responses-
|
|
28
|
-
import "./anthropic-
|
|
29
|
-
import "./azure-openai-responses-
|
|
30
|
-
import "./ollama-
|
|
31
|
-
import "./openai-completions-
|
|
32
|
-
import "./openai-responses-
|
|
33
|
-
import { t as MAX_BYTES } from "./types-
|
|
22
|
+
import { t as getKimiCommonHeaders } from "./kimi-T9NldEIJ.mjs";
|
|
23
|
+
import { n as extractCursorAccessTokenUserId } from "./cursor-_gHHq-Dq.mjs";
|
|
24
|
+
import { o as toBinary, t as create } from "./protobuf-BMgDYu_U.mjs";
|
|
25
|
+
import { b as TeamsTier, g as GetUserStatusResponseSchema, h as GetUserStatusRequestSchema, t as decodeDevinUnaryMessage, v as MetadataSchema } from "./devin-proto-DYhp4Ty6.mjs";
|
|
26
|
+
import { i as getXAICliBillingHeaders, n as extractXAIAccessTokenSubject, r as fetchXAIOAuthIdentity, t as buildXAICliBillingUrl } from "./xai-oauth-CbeldUSV.mjs";
|
|
27
|
+
import "./openai-codex-responses-C8bnBWOe.mjs";
|
|
28
|
+
import "./anthropic-ClCw0PV_.mjs";
|
|
29
|
+
import "./azure-openai-responses-WE_bgFWp.mjs";
|
|
30
|
+
import "./ollama-6R0oXZks.mjs";
|
|
31
|
+
import "./openai-completions-DNr3mUsn.mjs";
|
|
32
|
+
import "./openai-responses-CjpafAEr.mjs";
|
|
33
|
+
import { t as MAX_BYTES } from "./types-BLrLohwK.mjs";
|
|
34
34
|
import * as fs from "node:fs";
|
|
35
35
|
import { existsSync, unlinkSync } from "node:fs";
|
|
36
36
|
import { Ellipsis, Ellipsis as Ellipsis$1, extractSegments, matchesKey, sliceWithWidth, truncateToWidth } from "@oh-my-pi/pi-natives";
|
|
@@ -6267,7 +6267,7 @@ const settings = {
|
|
|
6267
6267
|
};
|
|
6268
6268
|
//#endregion
|
|
6269
6269
|
//#region package.json
|
|
6270
|
-
var version = "0.1.10";
|
|
6270
|
+
var version = "0.1.10-beta.2";
|
|
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) {
|
|
@@ -6401,7 +6401,7 @@ const CONVERTIBLE_EXTENSIONS = /* @__PURE__ */ new Set([
|
|
|
6401
6401
|
".epub"
|
|
6402
6402
|
]);
|
|
6403
6403
|
let markit = async () => {
|
|
6404
|
-
const promise = import("./markit-
|
|
6404
|
+
const promise = import("./markit-Dvp2JPdT.mjs").then(({ Markit }) => {
|
|
6405
6405
|
const instance = new Markit();
|
|
6406
6406
|
markit = () => instance;
|
|
6407
6407
|
return instance;
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { installBunShim as __installBunShim } from "./bun-shim.mjs";
|
|
2
2
|
__installBunShim();
|
|
3
|
-
import { n as wrapFetchForExtraCa } from "./src-
|
|
3
|
+
import { n as wrapFetchForExtraCa } from "./src-AELUUb5U.mjs";
|
|
4
4
|
//#region node_modules/.pnpm/@oh-my-pi+pi-catalog@18.1.17/node_modules/@oh-my-pi/pi-catalog/src/utils.ts
|
|
5
5
|
/**
|
|
6
6
|
* Fetch implementation for catalog discovery probes: the caller's override
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { installBunShim as __installBunShim } from "./bun-shim.mjs";
|
|
2
2
|
__installBunShim();
|
|
3
|
-
import { F as $flag, N as $env, _ as parseStreamingJson, b as debug, g as parseJsonWithRepair } from "./src-
|
|
4
|
-
import { r as ValidationError } from "./error-
|
|
3
|
+
import { F as $flag, N as $env, _ as parseStreamingJson, b as debug, g as parseJsonWithRepair } from "./src-AELUUb5U.mjs";
|
|
4
|
+
import { r as ValidationError } from "./error-O63pC8zg.mjs";
|
|
5
5
|
import { n as classifyModel } from "./taxonomy-DSIM99rS.mjs";
|
|
6
6
|
import { i as getBundledProviders, r as getBundledModels } from "./models-DnXMYGcJ.mjs";
|
|
7
7
|
import { t as buildModelReferenceIndex } from "./reference-CtvM4zLU.mjs";
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { installBunShim as __installBunShim } from "./bun-shim.mjs";
|
|
2
2
|
__installBunShim();
|
|
3
|
-
import "./src-
|
|
3
|
+
import "./src-AELUUb5U.mjs";
|
|
4
4
|
import "./effort-BdtQMN-_.mjs";
|
|
5
5
|
//#region node_modules/.pnpm/@oh-my-pi+pi-ai@18.1.17/node_modules/@oh-my-pi/pi-ai/src/types.ts
|
|
6
6
|
/**
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import { installBunShim as __installBunShim } from "./bun-shim.mjs";
|
|
2
2
|
__installBunShim();
|
|
3
|
-
import { r as __exportAll } from "./fs-promises-shim-
|
|
4
|
-
import { f as OAuthError } from "./error-
|
|
3
|
+
import { r as __exportAll } from "./fs-promises-shim-B2YFWkcd.mjs";
|
|
4
|
+
import { f as OAuthError } from "./error-O63pC8zg.mjs";
|
|
5
5
|
//#region node_modules/.pnpm/@oh-my-pi+pi-ai@18.1.17/node_modules/@oh-my-pi/pi-ai/src/registry/oauth/xai-oauth.ts
|
|
6
6
|
/**
|
|
7
7
|
* xAI OAuth endpoint discovery, identity, and billing helpers.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { installBunShim as __installBunShim } from "./bun-shim.mjs";
|
|
2
2
|
__installBunShim();
|
|
3
|
-
import { f as OAuthError, g as OnPromptRequiredError, m as LoginCancelledError, p as ApiKeyRequiredError } from "./error-
|
|
3
|
+
import { f as OAuthError, g as OnPromptRequiredError, m as LoginCancelledError, p as ApiKeyRequiredError } from "./error-O63pC8zg.mjs";
|
|
4
4
|
//#region node_modules/.pnpm/@oh-my-pi+pi-ai@18.1.17/node_modules/@oh-my-pi/pi-ai/src/registry/oauth/xiaomi.ts
|
|
5
5
|
/**
|
|
6
6
|
* Xiaomi MiMo login flow.
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { installBunShim as __installBunShim } from "./bun-shim.mjs";
|
|
2
2
|
__installBunShim();
|
|
3
|
-
import { V as ProviderHttpError, f as OAuthError } from "./error-
|
|
3
|
+
import { V as ProviderHttpError, f as OAuthError } from "./error-O63pC8zg.mjs";
|
|
4
4
|
//#region node_modules/.pnpm/@oh-my-pi+pi-ai@18.1.17/node_modules/@oh-my-pi/pi-ai/src/registry/oauth/zai.ts
|
|
5
5
|
/**
|
|
6
6
|
* Z.ai / GLM OAuth flow (GLM Coding Plan · Sign in)
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
import { installBunShim as __installBunShim } from "./bun-shim.mjs";
|
|
2
2
|
__installBunShim();
|
|
3
|
-
import { k as formatBytes } from "./src-
|
|
3
|
+
import { k as formatBytes } from "./src-AELUUb5U.mjs";
|
|
4
4
|
import { n as ToolError } from "./tool-errors-DoyxivAR.mjs";
|
|
5
5
|
import * as path$1 from "node:path";
|
|
6
6
|
import * as zlib from "node:zlib";
|
package/package.json
CHANGED
|
@@ -1,166 +1,169 @@
|
|
|
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.10-beta.
|
|
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
|
-
"./cordis.patch.yml": "./cordis.patch.yml",
|
|
50
|
-
"./presets/*.patch.yml": "./presets/*.patch.yml",
|
|
51
|
-
"./package.json": "./package.json"
|
|
52
|
-
},
|
|
53
|
-
"files": [
|
|
54
|
-
"lib",
|
|
55
|
-
"cordis.patch.yml",
|
|
56
|
-
"presets/tool-plus-standard.patch.yml",
|
|
57
|
-
"presets/tool-plus-ptc.patch.yml",
|
|
58
|
-
"scripts/patch-pi-natives.mjs",
|
|
59
|
-
"src/bash-runtime/shell-snapshot-fn-env.sh",
|
|
60
|
-
"README.md",
|
|
61
|
-
"LICENSE",
|
|
62
|
-
"THIRD_PARTY_NOTICES.md"
|
|
63
|
-
],
|
|
64
|
-
"dsh": {
|
|
65
|
-
"manifestVersion": 1,
|
|
66
|
-
"bundle": {
|
|
67
|
-
"patch": [
|
|
68
|
-
"./cordis.patch.yml",
|
|
69
|
-
"./presets/tool-plus-standard.patch.yml",
|
|
70
|
-
"./presets/tool-plus-ptc.patch.yml"
|
|
71
|
-
]
|
|
72
|
-
},
|
|
73
|
-
"client": {
|
|
74
|
-
"inject": [
|
|
75
|
-
"@deepseek-ai/dsh-client-locale",
|
|
76
|
-
"@deepseek-ai/dsh-client-ui-settings"
|
|
77
|
-
],
|
|
78
|
-
"platform": "web"
|
|
79
|
-
}
|
|
80
|
-
},
|
|
81
|
-
"scripts": {
|
|
82
|
-
"build": "tsdown -c tsdown.config.ts && tsc -p tsconfig.json && node scripts/copy-assets.mjs",
|
|
83
|
-
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
84
|
-
"test": "vitest run --config vitest.config.ts",
|
|
85
|
-
"presets:build": "node scripts/build-preset-patches.mjs",
|
|
86
|
-
"presets:check": "node scripts/build-preset-patches.mjs --check",
|
|
87
|
-
"postinstall": "node scripts/patch-pi-natives.mjs"
|
|
88
|
-
},
|
|
89
|
-
"peerDependencies": {
|
|
90
|
-
"@deepseek-ai/cordis": "~4.0.4",
|
|
91
|
-
"@deepseek-ai/dsh-agent": "0.1.7-rc.2",
|
|
92
|
-
"@deepseek-ai/dsh-agent-preset": "0.1.7-rc.2",
|
|
93
|
-
"@deepseek-ai/dsh-agent-preset-registry": "0.1.7-rc.2",
|
|
94
|
-
"@deepseek-ai/dsh-attachment": "0.1.7-rc.2",
|
|
95
|
-
"@deepseek-ai/dsh-client-connection": "0.1.7-rc.2",
|
|
96
|
-
"@deepseek-ai/dsh-fs": "0.1.7-rc.2",
|
|
97
|
-
"@deepseek-ai/dsh-jobs": "0.1.7-rc.2",
|
|
98
|
-
"@deepseek-ai/dsh-llm": "0.1.7-rc.2",
|
|
99
|
-
"@deepseek-ai/dsh-sandbox": "0.1.7-rc.2",
|
|
100
|
-
"@deepseek-ai/dsh-session": "0.1.7-rc.2",
|
|
101
|
-
"@deepseek-ai/dsh-settings": "0.1.7-rc.2",
|
|
102
|
-
"@deepseek-ai/dsh-shell": "0.1.7-rc.2",
|
|
103
|
-
"@deepseek-ai/dsh-shell-env": "0.1.7-rc.2",
|
|
104
|
-
"@deepseek-ai/dsh-system-prompt": "0.1.7-rc.2",
|
|
105
|
-
"@deepseek-ai/dsh-tools": "0.1.7-rc.2"
|
|
106
|
-
},
|
|
107
|
-
"optionalPeerDependencies": {
|
|
108
|
-
"sharp": ">=0.33"
|
|
109
|
-
},
|
|
110
|
-
"dependencies": {
|
|
111
|
-
"@deepseek-ai/dsh-brand": "0.1.7-rc.2",
|
|
112
|
-
"@deepseek-ai/dsh-invariants": "0.1.7-rc.2",
|
|
113
|
-
"@deepseek-ai/schemastery": "~3.18.4",
|
|
114
|
-
"@oh-my-pi/omptype": "18.1.17",
|
|
115
|
-
"@oh-my-pi/pi-agent-core": "18.1.17",
|
|
116
|
-
"@oh-my-pi/pi-ai": "18.1.17",
|
|
117
|
-
"@oh-my-pi/pi-catalog": "18.1.17",
|
|
118
|
-
"@oh-my-pi/pi-natives": "18.1.17",
|
|
119
|
-
"@oh-my-pi/pi-tui": "18.1.17",
|
|
120
|
-
"@oh-my-pi/pi-utils": "18.1.17",
|
|
121
|
-
"json5": "^2.2.3",
|
|
122
|
-
"puppeteer-core": "^25.3.0",
|
|
123
|
-
"trash": "10.1.1",
|
|
124
|
-
"yaml": "^2.9.0"
|
|
125
|
-
},
|
|
126
|
-
"devDependencies": {
|
|
127
|
-
"@deepseek-ai/cordis": "~4.0.4",
|
|
128
|
-
"@deepseek-ai/dsh-agent": "0.1.7-rc.2",
|
|
129
|
-
"@deepseek-ai/dsh-api-remotes": "0.1.7-rc.2",
|
|
130
|
-
"@deepseek-ai/dsh-api-session-controller": "0.1.7-rc.2",
|
|
131
|
-
"@deepseek-ai/dsh-client-connection": "0.1.7-rc.2",
|
|
132
|
-
"@deepseek-ai/dsh-client-
|
|
133
|
-
"@deepseek-ai/dsh-client-
|
|
134
|
-
"@deepseek-ai/dsh-
|
|
135
|
-
"@deepseek-ai/dsh-client-
|
|
136
|
-
"@deepseek-ai/dsh-client-ui-
|
|
137
|
-
"@deepseek-ai/dsh-client-ui-
|
|
138
|
-
"@deepseek-ai/dsh-client-ui-
|
|
139
|
-
"@deepseek-ai/dsh-client-ui-settings": "0.1.7-rc.2",
|
|
140
|
-
"@deepseek-ai/dsh-client-ui-
|
|
141
|
-
"@deepseek-ai/dsh-client-ui-
|
|
142
|
-
"@deepseek-ai/dsh-
|
|
143
|
-
"@deepseek-ai/dsh-
|
|
144
|
-
"@deepseek-ai/dsh-jobs": "0.1.7-rc.2",
|
|
145
|
-
"@deepseek-ai/dsh-
|
|
146
|
-
"@deepseek-ai/dsh-
|
|
147
|
-
"@deepseek-ai/dsh-
|
|
148
|
-
"@deepseek-ai/dsh-
|
|
149
|
-
"@deepseek-ai/dsh-shell": "0.1.7-rc.2",
|
|
150
|
-
"@deepseek-ai/dsh-
|
|
151
|
-
"@deepseek-ai/dsh-
|
|
152
|
-
"@deepseek-ai/dsh-tool-jobs": "0.1.7-rc.2",
|
|
153
|
-
"@deepseek-ai/dsh-tool-str-replace-editor": "0.1.7-rc.2",
|
|
154
|
-
"@deepseek-ai/dsh-tools": "0.1.7-rc.2",
|
|
155
|
-
"@types/node": "^22.19.0",
|
|
156
|
-
"@types/react": "^19.0.0",
|
|
157
|
-
"@types/react-dom": "^19.0.0",
|
|
158
|
-
"react": "^19.0.0",
|
|
159
|
-
"react-dom": "^19.0.0",
|
|
160
|
-
"sharp": "^0.35.4",
|
|
161
|
-
"tsdown": "^0.22.2",
|
|
162
|
-
"tsx": "^4.22.4",
|
|
163
|
-
"typescript": "^6.0.3",
|
|
164
|
-
"vitest": "^4.1.8"
|
|
165
|
-
}
|
|
166
|
-
|
|
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.10-beta.3",
|
|
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
|
+
"./cordis.patch.yml": "./cordis.patch.yml",
|
|
50
|
+
"./presets/*.patch.yml": "./presets/*.patch.yml",
|
|
51
|
+
"./package.json": "./package.json"
|
|
52
|
+
},
|
|
53
|
+
"files": [
|
|
54
|
+
"lib",
|
|
55
|
+
"cordis.patch.yml",
|
|
56
|
+
"presets/tool-plus-standard.patch.yml",
|
|
57
|
+
"presets/tool-plus-ptc.patch.yml",
|
|
58
|
+
"scripts/patch-pi-natives.mjs",
|
|
59
|
+
"src/bash-runtime/shell-snapshot-fn-env.sh",
|
|
60
|
+
"README.md",
|
|
61
|
+
"LICENSE",
|
|
62
|
+
"THIRD_PARTY_NOTICES.md"
|
|
63
|
+
],
|
|
64
|
+
"dsh": {
|
|
65
|
+
"manifestVersion": 1,
|
|
66
|
+
"bundle": {
|
|
67
|
+
"patch": [
|
|
68
|
+
"./cordis.patch.yml",
|
|
69
|
+
"./presets/tool-plus-standard.patch.yml",
|
|
70
|
+
"./presets/tool-plus-ptc.patch.yml"
|
|
71
|
+
]
|
|
72
|
+
},
|
|
73
|
+
"client": {
|
|
74
|
+
"inject": [
|
|
75
|
+
"@deepseek-ai/dsh-client-locale",
|
|
76
|
+
"@deepseek-ai/dsh-client-ui-settings"
|
|
77
|
+
],
|
|
78
|
+
"platform": "web"
|
|
79
|
+
}
|
|
80
|
+
},
|
|
81
|
+
"scripts": {
|
|
82
|
+
"build": "tsdown -c tsdown.config.ts && tsc -p tsconfig.json && node scripts/copy-assets.mjs",
|
|
83
|
+
"typecheck": "tsc -p tsconfig.json --noEmit",
|
|
84
|
+
"test": "vitest run --config vitest.config.ts",
|
|
85
|
+
"presets:build": "node scripts/build-preset-patches.mjs",
|
|
86
|
+
"presets:check": "node scripts/build-preset-patches.mjs --check",
|
|
87
|
+
"postinstall": "node scripts/patch-pi-natives.mjs"
|
|
88
|
+
},
|
|
89
|
+
"peerDependencies": {
|
|
90
|
+
"@deepseek-ai/cordis": "~4.0.4",
|
|
91
|
+
"@deepseek-ai/dsh-agent": "0.1.7-rc.2",
|
|
92
|
+
"@deepseek-ai/dsh-agent-preset": "0.1.7-rc.2",
|
|
93
|
+
"@deepseek-ai/dsh-agent-preset-registry": "0.1.7-rc.2",
|
|
94
|
+
"@deepseek-ai/dsh-attachment": "0.1.7-rc.2",
|
|
95
|
+
"@deepseek-ai/dsh-client-connection": "0.1.7-rc.2",
|
|
96
|
+
"@deepseek-ai/dsh-fs": "0.1.7-rc.2",
|
|
97
|
+
"@deepseek-ai/dsh-jobs": "0.1.7-rc.2",
|
|
98
|
+
"@deepseek-ai/dsh-llm": "0.1.7-rc.2",
|
|
99
|
+
"@deepseek-ai/dsh-sandbox": "0.1.7-rc.2",
|
|
100
|
+
"@deepseek-ai/dsh-session": "0.1.7-rc.2",
|
|
101
|
+
"@deepseek-ai/dsh-settings": "0.1.7-rc.2",
|
|
102
|
+
"@deepseek-ai/dsh-shell": "0.1.7-rc.2",
|
|
103
|
+
"@deepseek-ai/dsh-shell-env": "0.1.7-rc.2",
|
|
104
|
+
"@deepseek-ai/dsh-system-prompt": "0.1.7-rc.2",
|
|
105
|
+
"@deepseek-ai/dsh-tools": "0.1.7-rc.2"
|
|
106
|
+
},
|
|
107
|
+
"optionalPeerDependencies": {
|
|
108
|
+
"sharp": ">=0.33"
|
|
109
|
+
},
|
|
110
|
+
"dependencies": {
|
|
111
|
+
"@deepseek-ai/dsh-brand": "0.1.7-rc.2",
|
|
112
|
+
"@deepseek-ai/dsh-invariants": "0.1.7-rc.2",
|
|
113
|
+
"@deepseek-ai/schemastery": "~3.18.4",
|
|
114
|
+
"@oh-my-pi/omptype": "18.1.17",
|
|
115
|
+
"@oh-my-pi/pi-agent-core": "18.1.17",
|
|
116
|
+
"@oh-my-pi/pi-ai": "18.1.17",
|
|
117
|
+
"@oh-my-pi/pi-catalog": "18.1.17",
|
|
118
|
+
"@oh-my-pi/pi-natives": "18.1.17",
|
|
119
|
+
"@oh-my-pi/pi-tui": "18.1.17",
|
|
120
|
+
"@oh-my-pi/pi-utils": "18.1.17",
|
|
121
|
+
"json5": "^2.2.3",
|
|
122
|
+
"puppeteer-core": "^25.3.0",
|
|
123
|
+
"trash": "10.1.1",
|
|
124
|
+
"yaml": "^2.9.0"
|
|
125
|
+
},
|
|
126
|
+
"devDependencies": {
|
|
127
|
+
"@deepseek-ai/cordis": "~4.0.4",
|
|
128
|
+
"@deepseek-ai/dsh-agent": "0.1.7-rc.2",
|
|
129
|
+
"@deepseek-ai/dsh-api-remotes": "0.1.7-rc.2",
|
|
130
|
+
"@deepseek-ai/dsh-api-session-controller": "0.1.7-rc.2",
|
|
131
|
+
"@deepseek-ai/dsh-client-connection": "0.1.7-rc.2",
|
|
132
|
+
"@deepseek-ai/dsh-client-locale": "0.1.7-rc.2",
|
|
133
|
+
"@deepseek-ai/dsh-client-store": "0.1.7-rc.2",
|
|
134
|
+
"@deepseek-ai/dsh-client-ui-chat": "0.1.7-rc.2",
|
|
135
|
+
"@deepseek-ai/dsh-client-ui-conversation": "0.1.7-rc.2",
|
|
136
|
+
"@deepseek-ai/dsh-client-ui-primitives": "0.1.7-rc.2",
|
|
137
|
+
"@deepseek-ai/dsh-client-ui-renderer": "0.1.7-rc.2",
|
|
138
|
+
"@deepseek-ai/dsh-client-ui-settings": "0.1.7-rc.2",
|
|
139
|
+
"@deepseek-ai/dsh-client-ui-settings-plugins": "0.1.7-rc.2",
|
|
140
|
+
"@deepseek-ai/dsh-client-ui-slots": "0.1.7-rc.2",
|
|
141
|
+
"@deepseek-ai/dsh-client-ui-tool": "0.1.7-rc.2",
|
|
142
|
+
"@deepseek-ai/dsh-fs-local": "0.1.7-rc.2",
|
|
143
|
+
"@deepseek-ai/dsh-jobs": "0.1.7-rc.2",
|
|
144
|
+
"@deepseek-ai/dsh-jobs-local": "0.1.7-rc.2",
|
|
145
|
+
"@deepseek-ai/dsh-llm": "0.1.7-rc.2",
|
|
146
|
+
"@deepseek-ai/dsh-session": "0.1.7-rc.2",
|
|
147
|
+
"@deepseek-ai/dsh-settings": "0.1.7-rc.2",
|
|
148
|
+
"@deepseek-ai/dsh-shell": "0.1.7-rc.2",
|
|
149
|
+
"@deepseek-ai/dsh-shell-env": "0.1.7-rc.2",
|
|
150
|
+
"@deepseek-ai/dsh-system-prompt": "0.1.7-rc.2",
|
|
151
|
+
"@deepseek-ai/dsh-token-meter": "0.1.7-rc.2",
|
|
152
|
+
"@deepseek-ai/dsh-tool-jobs": "0.1.7-rc.2",
|
|
153
|
+
"@deepseek-ai/dsh-tool-str-replace-editor": "0.1.7-rc.2",
|
|
154
|
+
"@deepseek-ai/dsh-tools": "0.1.7-rc.2",
|
|
155
|
+
"@types/node": "^22.19.0",
|
|
156
|
+
"@types/react": "^19.0.0",
|
|
157
|
+
"@types/react-dom": "^19.0.0",
|
|
158
|
+
"react": "^19.0.0",
|
|
159
|
+
"react-dom": "^19.0.0",
|
|
160
|
+
"sharp": "^0.35.4",
|
|
161
|
+
"tsdown": "^0.22.2",
|
|
162
|
+
"tsx": "^4.22.4",
|
|
163
|
+
"typescript": "^6.0.3",
|
|
164
|
+
"vitest": "^4.1.8"
|
|
165
|
+
},
|
|
166
|
+
"optionalDependencies": {
|
|
167
|
+
"koffi": "^3.3.1"
|
|
168
|
+
}
|
|
169
|
+
}
|
|
@@ -1,53 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* The tool-plus settings card — a collapsible disclosure card in the Plugins
|
|
3
|
-
* settings tab styled against the app's `--dsw-alias-*` design tokens and the
|
|
4
|
-
* official card interaction (header button with unsaved badge + rotating
|
|
5
|
-
* chevron, smooth expand/collapse respecting reduced-motion, staged edits that
|
|
6
|
-
* survive collapsing, one Save write, nothing rendered while the namespace is
|
|
7
|
-
* unavailable). Copy is fully localized through the slot-injected `t` seat
|
|
8
|
-
* (`locale: 'tool-plus'`), which re-renders on a locale switch.
|
|
9
|
-
*
|
|
10
|
-
* The card edits the FLAT settings surface (OMP `bash*`-style scalar keys) —
|
|
11
|
-
* the client form only writes scalar fields — grouped as timeouts,
|
|
12
|
-
* backgrounding, output, completion truncation (subdivided into byte and line
|
|
13
|
-
* settings), and behavior. Field definitions, defaults, and copy keys come
|
|
14
|
-
* from the single-source field table (`src/config/fields.ts`), shared with
|
|
15
|
-
* the Tool Plus settings section.
|
|
16
|
-
* @module @xiaoso/dsh-tool-plus/client
|
|
17
|
-
*/
|
|
18
|
-
import { type ReactNode } from 'react';
|
|
19
|
-
import type { PropsLocale, PropsRuntime } from '@deepseek-ai/dsh-client-ui-slots';
|
|
20
|
-
import type { ConfigForm } from '@deepseek-ai/dsh-client-ui-settings/client';
|
|
21
|
-
import type { OutputRetentionMode, OutputTruncateStrategy } from '../config/settings.ts';
|
|
22
|
-
/** The flat, scalar-editable fields this card edits (mirrors the settings schema). */
|
|
23
|
-
export interface BashPlusSettings {
|
|
24
|
-
enableRunInBackground?: boolean;
|
|
25
|
-
autoBackgroundMs?: number;
|
|
26
|
-
defaultTimeoutMs?: number;
|
|
27
|
-
maxTimeoutMs?: number;
|
|
28
|
-
outputMaxBytes?: number;
|
|
29
|
-
outputSinkTailBytes?: number;
|
|
30
|
-
outputSinkHeadBytes?: number;
|
|
31
|
-
minimizerEnabled?: boolean;
|
|
32
|
-
interceptorEnabled?: boolean;
|
|
33
|
-
nonInteractiveEnv?: boolean;
|
|
34
|
-
snapshotEnabled?: boolean;
|
|
35
|
-
useShellCommandWrapper?: boolean;
|
|
36
|
-
maxBackgroundJobs?: number;
|
|
37
|
-
outputTruncateStrategy?: OutputTruncateStrategy;
|
|
38
|
-
outputTruncateTriggerBytes?: number;
|
|
39
|
-
outputTruncateTriggerLines?: number;
|
|
40
|
-
outputTruncateByteMode?: OutputRetentionMode;
|
|
41
|
-
outputTruncateByteHeadBytes?: number;
|
|
42
|
-
outputTruncateByteTailBytes?: number;
|
|
43
|
-
outputTruncateLineMode?: OutputRetentionMode;
|
|
44
|
-
outputTruncateLineHeadLines?: number;
|
|
45
|
-
outputTruncateLineTailLines?: number;
|
|
46
|
-
}
|
|
47
|
-
/** Business face the slot registration injects: the `tool-plus` entry's shared configuration form. */
|
|
48
|
-
export interface BashPlusCardFace {
|
|
49
|
-
form: ConfigForm<BashPlusSettings>;
|
|
50
|
-
}
|
|
51
|
-
/** Props the renderer binds: the Plugins page runtime seat, the `t` locale seat, and the form face. */
|
|
52
|
-
export type BashPlusCardProps = PropsRuntime<'settings.plugins.tab'> & PropsLocale<'tool-plus'> & BashPlusCardFace;
|
|
53
|
-
export declare function BashPlusCard(props: BashPlusCardProps): ReactNode;
|