@xiaoso/dsh-tool-plus 0.1.7 → 0.1.8-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.
Files changed (96) hide show
  1. package/lib/{abort-Caqff3M6.mjs → abort-BtBy5Svf.mjs} +1 -1
  2. package/lib/{alibaba-coding-plan-DTupMiAi.mjs → alibaba-coding-plan-oxHCHJtG.mjs} +2 -2
  3. package/lib/{alibaba-token-plan-Dj3OZhEE.mjs → alibaba-token-plan-B0WzvYnB.mjs} +2 -2
  4. package/lib/{amazon-bedrock-DbFSYXfJ.mjs → amazon-bedrock-BvfYGhrD.mjs} +6 -6
  5. package/lib/{anthropic-CXfWlp-x.mjs → anthropic-C6-vdduI.mjs} +1 -1
  6. package/lib/{anthropic-CTJ3IQVa.mjs → anthropic-Id561lwb.mjs} +13 -13
  7. package/lib/{anthropic-wire-CKuhDwZ1.mjs → anthropic-wire-Cb8AQ1tS.mjs} +13 -13
  8. package/lib/{api-key-validation-CGCJFbFr.mjs → api-key-validation-BXJKlsJg.mjs} +1 -1
  9. package/lib/{azure-openai-responses-ChFbWaGj.mjs → azure-openai-responses-CGws_ijz.mjs} +8 -8
  10. package/lib/{browser-render-9o0Rknop.mjs → browser-render-i7uYOl4f.mjs} +2 -2
  11. package/lib/client.js +2205 -19
  12. package/lib/{cloudflare-ai-gateway-BupNXyKK.mjs → cloudflare-ai-gateway-BK6eadm9.mjs} +2 -2
  13. package/lib/{cloudflare-ai-gateway-EWo0VkP5.mjs → cloudflare-ai-gateway-B_kWnF30.mjs} +1 -1
  14. package/lib/{collapse-DOR8sOGf.mjs → collapse-DU3g7d3B.mjs} +1 -1
  15. package/lib/{coreweave-Ct8cF-da.mjs → coreweave-CkR_FlQi.mjs} +2 -2
  16. package/lib/{cursor-LKGjucn2.mjs → cursor-BXx_5h4a.mjs} +2 -2
  17. package/lib/{cursor-DJV_dcgB.mjs → cursor-BcHwv8qq.mjs} +10 -10
  18. package/lib/{cursor-B95LzVWV.mjs → cursor-BjWbJJLe.mjs} +1 -1
  19. package/lib/{cursor-proto-B8Wj8bv9.mjs → cursor-proto-DPXXYx8S.mjs} +1 -1
  20. package/lib/{devin-DSp0Rw_E.mjs → devin-BZBfzyIz.mjs} +6 -6
  21. package/lib/{devin-BMTdx_hx.mjs → devin-Ce3Wz8_E.mjs} +5 -5
  22. package/lib/{devin-proto-Br8fdyNl.mjs → devin-proto-B6HwDwHK.mjs} +1 -1
  23. package/lib/{error-CORgGg5a.mjs → error-DdCn4m1q.mjs} +3 -3
  24. package/lib/{event-stream-ulcDenZD.mjs → event-stream-ldcUvOA0.mjs} +1 -1
  25. package/lib/{github-copilot-Dstq1D3s.mjs → github-copilot-BT5dkIJl.mjs} +2 -2
  26. package/lib/{github-copilot-headers-DOh1gt_w.mjs → github-copilot-headers-BGL8JO5c.mjs} +2 -2
  27. package/lib/{gitlab-duo-DSCMrU0m.mjs → gitlab-duo-B0qSYCa3.mjs} +1 -1
  28. package/lib/{google-CtsKkOQK.mjs → google-6cRgRmh0.mjs} +3 -3
  29. package/lib/{google-antigravity-z-5KsEci.mjs → google-antigravity-D1llOVad.mjs} +3 -3
  30. package/lib/{google-auth-ieLBaneO.mjs → google-auth-DYhqX1rJ.mjs} +5 -5
  31. package/lib/{google-gemini-cli-CAIPSl7e.mjs → google-gemini-cli-ByQUuKp9.mjs} +7 -7
  32. package/lib/{google-gemini-cli-C6NE5mWz.mjs → google-gemini-cli-CjHy6mFG.mjs} +3 -3
  33. package/lib/{google-oauth-shared-DhMllAkt.mjs → google-oauth-shared-CSwCT0Yl.mjs} +1 -1
  34. package/lib/{google-shared-B0aNCYEH.mjs → google-shared-DYjJp0mQ.mjs} +5 -5
  35. package/lib/{google-vertex-Bbd1tYNc.mjs → google-vertex-CbOvlE5j.mjs} +4 -4
  36. package/lib/{idle-iterator-DlUkEfzW.mjs → idle-iterator-DTBaEIbM.mjs} +2 -2
  37. package/lib/index.mjs +1278 -184
  38. package/lib/{kilo-ChJL54wq.mjs → kilo-cVG1aNZM.mjs} +1 -1
  39. package/lib/{kimi-C2c_Zq8A.mjs → kimi-BFfnFDhu.mjs} +4 -4
  40. package/lib/{launch-DKDH71En.mjs → launch-Uq7920ng.mjs} +7 -7
  41. package/lib/{markit-CmRfm4E2.mjs → markit-BmsfOFVh.mjs} +18 -18
  42. package/lib/{muse-code-Di1VZmB1.mjs → muse-code-CtcevJab.mjs} +1 -1
  43. package/lib/{ollama-B8ic3sEp.mjs → ollama-B5hR1P1p.mjs} +8 -8
  44. package/lib/{openai-codex-DuJNC99x.mjs → openai-codex-CxkPyvyt.mjs} +2 -2
  45. package/lib/{openai-codex-responses-BL29nh9K.mjs → openai-codex-responses-BbM3Q7nJ.mjs} +9 -9
  46. package/lib/{openai-completions-BK2f2dBv.mjs → openai-completions-CffXVOCL.mjs} +13 -13
  47. package/lib/{openai-reasoning-fallback-BdB3RCbj.mjs → openai-reasoning-fallback-DFdD1ok5.mjs} +2 -2
  48. package/lib/{openai-responses-CGQPlIIy.mjs → openai-responses-DgqOvSn_.mjs} +9 -9
  49. package/lib/{perplexity-TBjz3VMB.mjs → perplexity-JFp3knZN.mjs} +2 -2
  50. package/lib/{protobuf-aab1UGVn.mjs → protobuf-BJHNU9-E.mjs} +1 -1
  51. package/lib/{proxy-5nWqRL1f.mjs → proxy-B51IWEMt.mjs} +2 -2
  52. package/lib/{scrapers-CtQrQ5kG.mjs → scrapers-DU4u4-Co.mjs} +7 -7
  53. package/lib/{src-BwW51vA5.mjs → src-DUUqyo9y.mjs} +42 -42
  54. package/lib/{stream-B_7qN-bA.mjs → stream-DHdFrAG4.mjs} +54 -54
  55. package/lib/{stream-markup-healing-DKT1lnkW.mjs → stream-markup-healing-DlJ9abTw.mjs} +2 -2
  56. package/lib/{thinking-CiLa2LFB.mjs → thinking-D6LJxkz_.mjs} +1 -1
  57. package/lib/types/client/locales.d.ts +1 -1
  58. package/lib/types/config/settings.d.ts +8 -0
  59. package/lib/types/tools/ast-grep/adapter/index.d.ts +23 -0
  60. package/lib/types/tools/edit/adapter/index.d.ts +3 -0
  61. package/lib/types/tools/glob/adapter/index.d.ts +2 -0
  62. package/lib/types/tools/grep/adapter/index.d.ts +4 -0
  63. package/lib/types/tools/read/adapter/index.d.ts +18 -0
  64. package/lib/types/tools/write/adapter/index.d.ts +2 -0
  65. package/lib/types/web/client/ToolCardShell.d.ts +111 -0
  66. package/lib/types/web/client/labels.d.ts +36 -0
  67. package/lib/types/web/client/registerToolCards.d.ts +35 -0
  68. package/lib/types/web/client/row-utils.d.ts +177 -0
  69. package/lib/types/web/client/rows/AstEditRow.d.ts +22 -0
  70. package/lib/types/web/client/rows/FileMutationRow.d.ts +23 -0
  71. package/lib/types/web/client/rows/ReadRow.d.ts +31 -0
  72. package/lib/types/web/client/rows/SearchRow.d.ts +21 -0
  73. package/lib/types/web/client/rows/TerminalRow.d.ts +24 -0
  74. package/lib/types/web/client/rows/WriteRow.d.ts +22 -0
  75. package/lib/types/web/client/rows/command-card-facts.d.ts +45 -0
  76. package/lib/types/web/client/rows/image-card.d.ts +60 -0
  77. package/lib/types/web/client/rows/read-card-facts.d.ts +33 -0
  78. package/lib/types/web/client/rows/search-card-facts.d.ts +37 -0
  79. package/lib/types/web/contract.d.ts +249 -0
  80. package/lib/types/web/host/ast-edit.d.ts +10 -0
  81. package/lib/types/web/host/bash.d.ts +30 -0
  82. package/lib/types/web/host/edit.d.ts +33 -0
  83. package/lib/types/web/host/read.d.ts +48 -0
  84. package/lib/types/web/host/search.d.ts +41 -0
  85. package/lib/types/web/host/write.d.ts +13 -0
  86. package/lib/{types-PVueGi9S.mjs → types-DT9vgZ3S.mjs} +1 -1
  87. package/lib/{utils-CUPhpw9A.mjs → utils-BMmwLB0f.mjs} +2 -2
  88. package/lib/{utils-ECAwvaPQ.mjs → utils-C-Lo_JC6.mjs} +41 -41
  89. package/lib/{utils-DeWqNWV8.mjs → utils-D31VFael.mjs} +1 -1
  90. package/lib/{vision-guard-_XwsL1DF.mjs → vision-guard-BlAAqGUC.mjs} +1 -1
  91. package/lib/{xai-oauth-CXhnz0gO.mjs → xai-oauth-QPyScm4X.mjs} +1 -1
  92. package/lib/{xiaomi-psoUItal.mjs → xiaomi-CLzjxHAi.mjs} +1 -1
  93. package/lib/{zai-ApJ8HBgT.mjs → zai-wDp0g7VC.mjs} +1 -1
  94. package/lib/{zip-Kd602XNe.mjs → zip-CNtIFfyV.mjs} +7 -7
  95. package/package.json +3 -1
  96. package/presets/package.json +1 -1
@@ -1,40 +1,40 @@
1
1
  import { installBunShim as __installBunShim } from "./bun-shim.mjs";
2
2
  __installBunShim();
3
3
  import { n as fs_promises_shim_exports } from "./fs-promises-shim-Bx0fpxuk.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-BwW51vA5.mjs";
5
- import { V as ProviderHttpError, a as isTransientStatus, f as OAuthError } from "./error-CORgGg5a.mjs";
6
- import "./utils-CUPhpw9A.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-DUUqyo9y.mjs";
5
+ import { V as ProviderHttpError, a as isTransientStatus, f as OAuthError } from "./error-DdCn4m1q.mjs";
6
+ import "./utils-BMmwLB0f.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-Kd602XNe.mjs";
10
- import { a as CODEX_BASE_URL, jt as quotaTierFor, n as getEnvApiKey } from "./stream-B_7qN-bA.mjs";
9
+ import { n as extractArchive } from "./zip-CNtIFfyV.mjs";
10
+ import { a as CODEX_BASE_URL, jt as quotaTierFor, n as getEnvApiKey } from "./stream-DHdFrAG4.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-DeWqNWV8.mjs";
13
- import "./cloudflare-ai-gateway-EWo0VkP5.mjs";
14
- import { u as COPILOT_GITHUB_HEADERS } from "./github-copilot-headers-DOh1gt_w.mjs";
15
- import "./vision-guard-_XwsL1DF.mjs";
16
- import "./event-stream-ulcDenZD.mjs";
17
- import { o as claudeCodeVersion } from "./anthropic-CXfWlp-x.mjs";
18
- import { n as parseMuseCodeCredential, r as requestMuseCodeKey } from "./muse-code-Di1VZmB1.mjs";
12
+ import { a as toNumber, i as toBoolean$1 } from "./utils-D31VFael.mjs";
13
+ import "./cloudflare-ai-gateway-B_kWnF30.mjs";
14
+ import { u as COPILOT_GITHUB_HEADERS } from "./github-copilot-headers-BGL8JO5c.mjs";
15
+ import "./vision-guard-BlAAqGUC.mjs";
16
+ import "./event-stream-ldcUvOA0.mjs";
17
+ import { o as claudeCodeVersion } from "./anthropic-C6-vdduI.mjs";
18
+ import { n as parseMuseCodeCredential, r as requestMuseCodeKey } from "./muse-code-CtcevJab.mjs";
19
19
  import { n as getAntigravityUserAgent, r as getGeminiCliHeaders } from "./gemini-headers-Co9cVvex.mjs";
20
20
  import { n as clinePassClientHeaders, t as CLINEPASS_API_BASE_URL } from "./cline-pass-Bwg3esu9.mjs";
21
21
  import { i as normalizeDevinSessionToken, n as devinCliMetadata } from "./devin-ExGIghmx.mjs";
22
- import { t as getKimiCommonHeaders } from "./kimi-C2c_Zq8A.mjs";
23
- import { n as extractCursorAccessTokenUserId } from "./cursor-B95LzVWV.mjs";
24
- import { o as toBinary, t as create } from "./protobuf-aab1UGVn.mjs";
25
- import { b as TeamsTier, g as GetUserStatusResponseSchema, h as GetUserStatusRequestSchema, t as decodeDevinUnaryMessage, v as MetadataSchema } from "./devin-proto-Br8fdyNl.mjs";
26
- import { i as getXAICliBillingHeaders, n as extractXAIAccessTokenSubject, r as fetchXAIOAuthIdentity, t as buildXAICliBillingUrl } from "./xai-oauth-CXhnz0gO.mjs";
27
- import "./openai-codex-responses-BL29nh9K.mjs";
28
- import "./anthropic-CTJ3IQVa.mjs";
29
- import "./azure-openai-responses-ChFbWaGj.mjs";
30
- import "./ollama-B8ic3sEp.mjs";
31
- import "./openai-completions-BK2f2dBv.mjs";
32
- import "./openai-responses-CGQPlIIy.mjs";
33
- import { t as MAX_BYTES } from "./types-PVueGi9S.mjs";
22
+ import { t as getKimiCommonHeaders } from "./kimi-BFfnFDhu.mjs";
23
+ import { n as extractCursorAccessTokenUserId } from "./cursor-BjWbJJLe.mjs";
24
+ import { o as toBinary, t as create } from "./protobuf-BJHNU9-E.mjs";
25
+ import { b as TeamsTier, g as GetUserStatusResponseSchema, h as GetUserStatusRequestSchema, t as decodeDevinUnaryMessage, v as MetadataSchema } from "./devin-proto-B6HwDwHK.mjs";
26
+ import { i as getXAICliBillingHeaders, n as extractXAIAccessTokenSubject, r as fetchXAIOAuthIdentity, t as buildXAICliBillingUrl } from "./xai-oauth-QPyScm4X.mjs";
27
+ import "./openai-codex-responses-BbM3Q7nJ.mjs";
28
+ import "./anthropic-Id561lwb.mjs";
29
+ import "./azure-openai-responses-CGws_ijz.mjs";
30
+ import "./ollama-B5hR1P1p.mjs";
31
+ import "./openai-completions-CffXVOCL.mjs";
32
+ import "./openai-responses-DgqOvSn_.mjs";
33
+ import { t as MAX_BYTES } from "./types-DT9vgZ3S.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";
37
- import * as path from "node:path";
37
+ import * as path$1 from "node:path";
38
38
  import * as os from "node:os";
39
39
  import { scheduler } from "node:timers/promises";
40
40
  import "node:crypto";
@@ -362,7 +362,7 @@ function hasLinuxDesktopSession(platform = process.platform, env = Bun.env, file
362
362
  if (platform !== "linux") return false;
363
363
  if (env.DBUS_SESSION_BUS_ADDRESS) return true;
364
364
  const runtimeDir = env.XDG_RUNTIME_DIR;
365
- return Boolean(runtimeDir && fileExists(path.join(runtimeDir, "bus")));
365
+ return Boolean(runtimeDir && fileExists(path$1.join(runtimeDir, "bus")));
366
366
  }
367
367
  /**
368
368
  * Whether `sendNotification` should also dispatch a D-Bus toast for this
@@ -6085,7 +6085,7 @@ function shortenPath(filePath, homeDir) {
6085
6085
  const home = homeDir ?? os.homedir();
6086
6086
  if (home && filePath.startsWith(home)) {
6087
6087
  const suffix = filePath.slice(home.length);
6088
- if (suffix === "" || suffix.startsWith(path.posix.sep) || suffix.startsWith(path.win32.sep)) return `~${suffix.replaceAll(path.win32.sep, path.posix.sep)}`;
6088
+ if (suffix === "" || suffix.startsWith(path$1.posix.sep) || suffix.startsWith(path$1.win32.sep)) return `~${suffix.replaceAll(path$1.win32.sep, path$1.posix.sep)}`;
6089
6089
  }
6090
6090
  return filePath;
6091
6091
  }
@@ -6267,7 +6267,7 @@ const settings = {
6267
6267
  };
6268
6268
  //#endregion
6269
6269
  //#region package.json
6270
- var version = "0.1.7";
6270
+ var version = "0.1.8-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) {
@@ -6275,7 +6275,7 @@ function markitConversionCacheKey(bytes, extension) {
6275
6275
  return `v1-${version.replace(/[^a-z0-9]+/gi, "_")}-${safeExtension}-${new Bun.CryptoHasher("sha256").update(bytes).digest("hex")}`;
6276
6276
  }
6277
6277
  function cacheEntryPath(key) {
6278
- return path.join(getDocumentConversionCacheDir(), `${key}.json`);
6278
+ return path$1.join(getDocumentConversionCacheDir(), `${key}.json`);
6279
6279
  }
6280
6280
  function errorMessage(error) {
6281
6281
  return error instanceof Error ? error.message : String(error);
@@ -6327,7 +6327,7 @@ async function pruneMarkitConversionCache(cacheDir) {
6327
6327
  const entries = [];
6328
6328
  let totalBytes = 0;
6329
6329
  for (const name of names) {
6330
- const entryPath = path.join(cacheDir, name);
6330
+ const entryPath = path$1.join(cacheDir, name);
6331
6331
  let stat;
6332
6332
  try {
6333
6333
  stat = await fs_promises_shim_exports.stat(entryPath);
@@ -6362,8 +6362,8 @@ async function pruneMarkitConversionCache(cacheDir) {
6362
6362
  }
6363
6363
  async function writeMarkitConversionCache(key, content) {
6364
6364
  const cacheDir = getDocumentConversionCacheDir();
6365
- const target = path.join(cacheDir, `${key}.json`);
6366
- const tempPath = path.join(cacheDir, `${key}.${process.pid}.${Date.now()}.${crypto.randomUUID()}.tmp`);
6365
+ const target = path$1.join(cacheDir, `${key}.json`);
6366
+ const tempPath = path$1.join(cacheDir, `${key}.${process.pid}.${Date.now()}.${crypto.randomUUID()}.tmp`);
6367
6367
  const payload = JSON.stringify({
6368
6368
  version: 1,
6369
6369
  content
@@ -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-CmRfm4E2.mjs").then(({ Markit }) => {
6404
+ const promise = import("./markit-BmsfOFVh.mjs").then(({ Markit }) => {
6405
6405
  const instance = new Markit();
6406
6406
  markit = () => instance;
6407
6407
  return instance;
@@ -6508,8 +6508,8 @@ async function convertFileWithMarkit(filePath, signal, options) {
6508
6508
  }
6509
6509
  const streamInfo = {
6510
6510
  localPath: filePath,
6511
- extension: path.extname(filePath).toLowerCase(),
6512
- filename: path.basename(filePath)
6511
+ extension: path$1.extname(filePath).toLowerCase(),
6512
+ filename: path$1.basename(filePath)
6513
6513
  };
6514
6514
  return runCachedBufferConversion(bytes, streamInfo, signal, true);
6515
6515
  }
@@ -6612,7 +6612,7 @@ function getToolPath(tool) {
6612
6612
  if (pythonConfig) return $which(pythonConfig.binaryName);
6613
6613
  const config = TOOLS[tool];
6614
6614
  if (!config) return null;
6615
- const localPath = path.join(TOOLS_DIR, config.binaryName + (os.platform() === "win32" ? ".exe" : ""));
6615
+ const localPath = path$1.join(TOOLS_DIR, config.binaryName + (os.platform() === "win32" ? ".exe" : ""));
6616
6616
  if (fs.existsSync(localPath)) return localPath;
6617
6617
  return $which(config.binaryName);
6618
6618
  }
@@ -6655,13 +6655,13 @@ async function downloadTool(tool, signal) {
6655
6655
  await fs.promises.mkdir(TOOLS_DIR, { recursive: true });
6656
6656
  const downloadUrl = `https://github.com/${config.repo}/releases/download/${config.tagPrefix}${version}/${assetName}`;
6657
6657
  const binaryExt = plat === "win32" ? ".exe" : "";
6658
- const binaryPath = path.join(TOOLS_DIR, config.binaryName + binaryExt);
6658
+ const binaryPath = path$1.join(TOOLS_DIR, config.binaryName + binaryExt);
6659
6659
  if (config.isDirectBinary) {
6660
6660
  await downloadFile(downloadUrl, binaryPath, signal);
6661
6661
  if (plat !== "win32") await fs.promises.chmod(binaryPath, 493);
6662
6662
  return binaryPath;
6663
6663
  }
6664
- const archivePath = path.join(TOOLS_DIR, assetName);
6664
+ const archivePath = path$1.join(TOOLS_DIR, assetName);
6665
6665
  await downloadFile(downloadUrl, archivePath, signal);
6666
6666
  const tmp = await TempDir.create("@omp-tools-extract-");
6667
6667
  try {
@@ -6672,10 +6672,10 @@ async function downloadTool(tool, signal) {
6672
6672
  throw new Error(`Failed to extract ${assetName}: ${err instanceof Error ? err.message : String(err)}`);
6673
6673
  }
6674
6674
  let extractedBinary;
6675
- if (tool === "sg") extractedBinary = path.join(tmp.path(), config.binaryName + binaryExt);
6675
+ if (tool === "sg") extractedBinary = path$1.join(tmp.path(), config.binaryName + binaryExt);
6676
6676
  else {
6677
- const extractedDir = path.join(tmp.path(), assetName.replace(/\.(tar\.gz|zip)$/, ""));
6678
- extractedBinary = path.join(extractedDir, config.binaryName + binaryExt);
6677
+ const extractedDir = path$1.join(tmp.path(), assetName.replace(/\.(tar\.gz|zip)$/, ""));
6678
+ extractedBinary = path$1.join(extractedDir, config.binaryName + binaryExt);
6679
6679
  }
6680
6680
  if (fs.existsSync(extractedBinary)) await fs.promises.rename(extractedBinary, binaryPath);
6681
6681
  else throw new Error(`Binary not found in archive: ${extractedBinary}`);
@@ -1,6 +1,6 @@
1
1
  import { installBunShim as __installBunShim } from "./bun-shim.mjs";
2
2
  __installBunShim();
3
- import { n as wrapFetchForExtraCa } from "./src-BwW51vA5.mjs";
3
+ import { n as wrapFetchForExtraCa } from "./src-DUUqyo9y.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,6 +1,6 @@
1
1
  import { installBunShim as __installBunShim } from "./bun-shim.mjs";
2
2
  __installBunShim();
3
- import "./src-BwW51vA5.mjs";
3
+ import "./src-DUUqyo9y.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
3
  import { r as __exportAll } from "./fs-promises-shim-Bx0fpxuk.mjs";
4
- import { f as OAuthError } from "./error-CORgGg5a.mjs";
4
+ import { f as OAuthError } from "./error-DdCn4m1q.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-CORgGg5a.mjs";
3
+ import { f as OAuthError, g as OnPromptRequiredError, m as LoginCancelledError, p as ApiKeyRequiredError } from "./error-DdCn4m1q.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-CORgGg5a.mjs";
3
+ import { V as ProviderHttpError, f as OAuthError } from "./error-DdCn4m1q.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,8 +1,8 @@
1
1
  import { installBunShim as __installBunShim } from "./bun-shim.mjs";
2
2
  __installBunShim();
3
- import { k as formatBytes } from "./src-BwW51vA5.mjs";
3
+ import { k as formatBytes } from "./src-DUUqyo9y.mjs";
4
4
  import { n as ToolError } from "./tool-errors-DoyxivAR.mjs";
5
- import * as path from "node:path";
5
+ import * as path$1 from "node:path";
6
6
  import * as zlib from "node:zlib";
7
7
  //#region src/tools/omp/utils/zip.ts
8
8
  const ENCODER = new TextEncoder();
@@ -581,7 +581,7 @@ function indexOfAscii(bytes, value, start) {
581
581
  }
582
582
  function normalizeOldGnuName(value, field) {
583
583
  const portable = value.replace(/\\/g, "/");
584
- if (path.posix.isAbsolute(portable)) throw new ToolError(`Invalid old-GNU ${field}`);
584
+ if (path$1.posix.isAbsolute(portable)) throw new ToolError(`Invalid old-GNU ${field}`);
585
585
  const normalized = normalizeArchiveEntryPath(portable);
586
586
  if (!normalized) throw new ToolError(`Invalid old-GNU ${field}`);
587
587
  assertTarPathString(normalized, field);
@@ -750,7 +750,7 @@ function readTarEntries(rawBytes) {
750
750
  const kind = typeFlag === "1" ? "hard link" : "symlink";
751
751
  const portableLinkName = linkName.replace(/\\/g, "/");
752
752
  assertTarPathString(portableLinkName, "link target");
753
- const targetPath = typeFlag === "1" ? normalizeArchiveEntryPath(portableLinkName) : path.posix.isAbsolute(portableLinkName) ? void 0 : normalizeArchiveLookupPath(path.posix.join(path.posix.dirname(normalizedPath), portableLinkName));
753
+ const targetPath = typeFlag === "1" ? normalizeArchiveEntryPath(portableLinkName) : path$1.posix.isAbsolute(portableLinkName) ? void 0 : normalizeArchiveLookupPath(path$1.posix.join(path$1.posix.dirname(normalizedPath), portableLinkName));
754
754
  const entry = {
755
755
  path: normalizedPath,
756
756
  isDirectory: false,
@@ -1130,13 +1130,13 @@ async function writeArchive(destPath, format, entries) {
1130
1130
  * are rejected. Returns the number of files written.
1131
1131
  */
1132
1132
  async function extractArchive(source, destDir) {
1133
- const extractRoot = path.resolve(destDir);
1133
+ const extractRoot = path$1.resolve(destDir);
1134
1134
  const entries = await readArchiveEntries(source);
1135
1135
  let count = 0;
1136
1136
  for (const [name, content] of entries) {
1137
1137
  if (name.endsWith("/")) continue;
1138
- const outputPath = path.resolve(extractRoot, name);
1139
- if (!outputPath.startsWith(extractRoot + path.sep)) throw new ToolError(`Archive entry escapes extraction dir: ${name}`);
1138
+ const outputPath = path$1.resolve(extractRoot, name);
1139
+ if (!outputPath.startsWith(extractRoot + path$1.sep)) throw new ToolError(`Archive entry escapes extraction dir: ${name}`);
1140
1140
  await Bun.write(outputPath, content);
1141
1141
  count++;
1142
1142
  }
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.7",
4
+ "version": "0.1.8-beta.3",
5
5
  "license": "MIT",
6
6
  "keywords": [
7
7
  "deepseek-harness",
@@ -118,11 +118,13 @@
118
118
  "@deepseek-ai/dsh-agent": "0.1.5-rc.1",
119
119
  "@deepseek-ai/dsh-client-connection": "0.1.5-rc.1",
120
120
  "@deepseek-ai/dsh-client-locale": "0.1.5-rc.1",
121
+ "@deepseek-ai/dsh-client-ui-chat": "0.1.5-rc.1",
121
122
  "@deepseek-ai/dsh-client-ui-primitives": "0.1.5-rc.1",
122
123
  "@deepseek-ai/dsh-client-ui-renderer": "0.1.5-rc.1",
123
124
  "@deepseek-ai/dsh-client-ui-settings": "0.1.5-rc.1",
124
125
  "@deepseek-ai/dsh-client-ui-settings-plugins": "0.1.5-rc.1",
125
126
  "@deepseek-ai/dsh-client-ui-slots": "0.1.5-rc.1",
127
+ "@deepseek-ai/dsh-client-ui-tool": "0.1.5-rc.1",
126
128
  "@deepseek-ai/dsh-fs-local": "0.1.5-rc.1",
127
129
  "@deepseek-ai/dsh-jobs": "0.1.5-rc.1",
128
130
  "@deepseek-ai/dsh-jobs-local": "0.1.5-rc.1",
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@xiaoso/dsh-tool-plus-presets",
3
- "version": "0.1.7",
3
+ "version": "0.1.8-beta.3",
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": [