dsh-plugin-wukong-cli 0.22.0 → 0.22.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/CHANGELOG.md CHANGED
@@ -6,6 +6,24 @@
6
6
 
7
7
  格式基于 [Keep a Changelog](https://keepachangelog.com/),版本遵循 [Semantic Versioning](https://semver.org/)。
8
8
 
9
+ ## [0.22.1] - 2026-10
10
+
11
+ ### 新增 · Added
12
+ - **`npm run build:dev`:不压缩、不混淆的开发版构建**:写出与正式构建相同的文件、相同的位置(软链着本仓库的 profile 重启即可使用),代码可读、堆栈里有真实函数名,用来调试混淆后读不出的报错。每个开发版产物首行是 `DEV BUILD` 注释;`npm run verify`、`build-lib.mjs --check` 与两个包新增的 `prepublishOnly` 钩子见到它都会失败并提示先跑 `npm run build`,所以它不会被误提交或误发布。
13
+ **`npm run build:dev`: a readable, non-minified, non-obfuscated build**: it writes the same files to the same places as the official build (a profile linked to this repo just needs a restart), with readable code and real function names in stack traces, for debugging what the obfuscated build makes unreadable. Every dev artifact starts with a `DEV BUILD` comment; `npm run verify`, `build-lib.mjs --check` and the new `prepublishOnly` hook of both packages fail on it and say to run `npm run build` first, so it cannot be committed or published by accident.
14
+ - **README「开发」章节补上「连接本地开发版 / 切回已发布版」**:怎么用 `--spec link:` 把 profile 连到工作副本、改完怎么重建生效、怎么确认连的是哪一份、怎么切回 npm 版,以及隔离 `DSH_HOME`、混淆产物难读堆栈、`npm install` 清掉 `link:dev` 软链这几个坑;PUBLISHING 补上两个包的发布前钩子说明。
15
+ **The README's Development chapter gains "Connecting to the local dev build / switching back to the published one"**: how to point a profile at the working copy with `--spec link:`, how to rebuild for an edit to take effect, how to tell which one a profile is on, how to switch back to the npm build, and the traps — an isolated `DSH_HOME`, unreadable stack traces from the obfuscated build, and `npm install` removing the `link:dev` symlinks; PUBLISHING documents the pre-publish hook of both packages.
16
+
17
+ ### 变更 · Changed
18
+ - **成功提示改成绿色,失败仍是红色**:顶部的提示条原来不论成败都是红色错误样式,「已保存增强模型」「已复制 …的配置」「已复制 N 台服务器」这类成功消息看起来像出错了。现在提示条带语气:成功用成功色(绿),失败保持红色,`名称未更改` 这类说明用琥珀色;成功与说明的 `role` 是 `status`,失败仍是 `alert`,读屏软件不会把成功当成警报念出来。所有原有调用默认仍是失败,只有明确成功的几处改了。
19
+ **A success notice is now green; a failure stays red**: the bar at the top used the red error style whatever happened, so a success such as "Saved the enhancement model", "Copied the config for …" or "Copied N servers" looked like an error. The bar now carries a tone: green for a success, red for a failure, amber for a plain note such as "Name unchanged"; a success or a note has `role="status"` while a failure keeps `role="alert"`, so a screen reader does not announce a success as an alarm. Every existing call still defaults to a failure; only the ones that clearly succeed changed.
20
+ - **提示词增强的 Provider / 模型改成下拉选择,不再手填**:两个输入框换成两个下拉,选项来自宿主模型选择器用的同一份目录(`sessionController.modelCatalog()`,经新增的 `GET /api/wukong/models` 读出,按提供商分组),所以固定下来的一定是真实存在的模型。选了 Provider 会自动带出它的模型,并预选部署默认模型(若属于它);选项显示名称,id 放在悬浮提示里,仅两项重名时才附上 id。之前存下的路由如果已不在目录里(提供商被移除、换了账号),仍显示为「xxx(不在可用列表中)」,可以看见、替换或清除。宿主没有该服务、读取失败或目录为空时,退回原来的手填输入框并给出刷新按钮,功能不受影响。目录逐项校验,畸形或重复的条目会被丢弃,没有可选模型的提供商不出现。
21
+ **The Prompt-enhancement Provider / Model fields are now dropdowns instead of free text**: the two inputs became two selects fed by the same catalog the host's model picker uses (`sessionController.modelCatalog()`, read through the new `GET /api/wukong/models`, grouped by provider), so a pinned route is always a model that exists. Choosing a provider fills in its model, preselecting the deployment default when it belongs to that provider; options show the name with the id in the tooltip, appending the id only when two entries share a name. A route stored earlier that the catalog no longer lists (a provider removed, a different account) still shows as "xxx (not in the available list)", so it can be seen, replaced or cleared. When the host has no such service, the read fails or the catalog is empty, the original free-text fields come back with a refresh button, so nothing stops working. The catalog is validated entry by entry: malformed or duplicate entries are dropped and a provider with no model to pick does not appear.
22
+
23
+ ### 修复 · Fixed
24
+ - **「今天」统计的测试在整点后的第一分钟会误报失败**(仅测试,不影响发布产物):它把「1 分钟前」的步骤断言落在当前这一小时里,整点后第一分钟会跨进上一小时甚至上一天。改为用当前整点,并核对了几个边界时刻。
25
+ **The test for the "today" usage view failed during the first minute after each hour** (test only; the published artifacts are unaffected): it asserted a step from "a minute ago" into the current hour, which crosses into the previous hour — or day — right after a boundary. It now uses the top of the current hour, checked at several boundary times.
26
+
9
27
  ## [0.22.0] - 2026-10
10
28
 
11
29
  ### 新增 · Added
package/README.en.md CHANGED
@@ -12,7 +12,7 @@
12
12
  |--|--|--|--|--|
13
13
  | Light theme | Prompts | Skills | MCP | Wallpaper |
14
14
 
15
- ![version](https://img.shields.io/badge/version-0.22.0-00ff9c)
15
+ ![version](https://img.shields.io/badge/version-0.22.1-00ff9c)
16
16
  ![license](https://img.shields.io/badge/license-MIT-blue)
17
17
  ![platform](https://img.shields.io/badge/platform-web%20%2B%20desktop-00ff9c)
18
18
  ![runtime](https://img.shields.io/badge/runtime-DSH%200.2.0--rc.2-8957e5)
@@ -171,6 +171,7 @@ The panel talks to the Host only through the plugin's own **same-origin HTTP rou
171
171
  |---|---|
172
172
  | `GET` / `POST /api/wukong/state` | read / write the state document (all panel CRUD goes here): `GET` answers `{ok, revision, state}`; `POST` takes `{state, ifRevision}` and normalizes the document on every accepted write, incrementing `revision` |
173
173
  | `GET /api/wukong/skills` | the skill + managed-command catalog the panel needs: `{ok, revision, skills, commands}`, so the browser no longer reconstructs it from the whole state document |
174
+ | `GET /api/wukong/models` | the models a Prompt-enhancement route can be pinned to: the same catalog the host's model picker uses (`sessionController.modelCatalog()`), grouped by provider; answers 503 when the host has no such service, and the panel falls back to typing them in |
174
175
  | `POST /api/wukong/mcp/test` | one-shot MCP connect test |
175
176
  | `GET /api/wukong/market` · `POST /api/wukong/market/install` | marketplace: search the aggregated catalogs (`kind=mcp\|skill` plus `q`) — official MCP Registry, DSH MCP Market, ClawHub, SkillsMP and the bundled set — and install one explicit item id; an MCP server that needs env vars is installed disabled and the answer lists `needsEnv` |
176
177
  | `POST /api/wukong/skills/zip` | upload a zip skill bundle and extract it into `$DSH_HOME/skills` |
@@ -338,10 +339,13 @@ npm run link:dev # symlink the installed harness @deepseek-ai/* into
338
339
  node scripts/build-lib.mjs # or: npm run build — rebuild the shipped artifacts
339
340
  ```
340
341
 
341
- Outputs, all inside the plugin package `dsh-plugin-wukong`:
342
+ Build outputs (the first two inside the plugin package `dsh-plugin-wukong`, the third in the installer package):
342
343
 
343
344
  - `packages/wukong/lib/index.js` + `lib/invariant.js` (ESM; every `@deepseek-ai/*` and `node:*` import stays external so the profile's own copies resolve)
344
345
  - `packages/wukong/client/client.js` — the browser panel as a harness module-loader bundle: `window.__ModuleLoader__.load({ id, factory })`, with `react` / `react/jsx-runtime` left external for the loader's module table
346
+ - `dist/cli.cjs` — the published installer, built from the readable `cli.cjs` at the repo root (the package's `bin` and `postinstall` point at it)
347
+
348
+ Everything published is minified and obfuscated, **not readable code**; the readable sources live only in the repository (`packages/wukong/src/` and the root `cli.cjs`) and the published packages do not carry them. The build is deterministic (the obfuscator's random seed is fixed), so `npm run verify` can check that the committed artifacts match the sources.
345
349
 
346
350
  Self-check before publishing:
347
351
 
@@ -367,6 +371,59 @@ Keep four places in sync on version bumps:
367
371
  4. `CHANGELOG.md`
368
372
 
369
373
  Then rebuild the panel bundle so the version badge updates.
374
+ ### Connecting to the local dev build / switching back to the published one
375
+
376
+ While developing, point one of DSH's profiles at the working copy in this repo so a rebuild is all it takes to see a change, and switch back when you want the release. Both directions use the same installer; only `--spec` differs.
377
+
378
+ **Switch to the local dev build** (from the repo root; `--profile` picks the profile, comma-separate several):
379
+
380
+ ```bash
381
+ node cli.cjs --profile web --spec link:$PWD/packages/wukong
382
+ ```
383
+
384
+ It replaces `node_modules/dsh-plugin-wukong` in the profile with a symlink to `packages/wukong`, and the dependency record becomes `link:…`. Then restart `dsh web` (or DSH.app for the desktop client).
385
+
386
+ **Make an edit take effect**: the symlink points at the built output (`lib/`, `client/`), not at `src/`, so rebuild after every change, then restart or reload the page:
387
+
388
+ ```bash
389
+ npm run build
390
+ ```
391
+
392
+ **Debug with the dev build**: the output of `npm run build` is minified and obfuscated, so stack traces carry no function names. While debugging, run:
393
+
394
+ ```bash
395
+ npm run build:dev
396
+ ```
397
+
398
+ It writes **the same files to the same places** (so a profile that links to the working copy just needs a restart), but neither minified nor obfuscated: the code reads like the source and stack traces show real function names. The first line of every dev artifact is a `DEV BUILD` comment. **Do not commit or publish it**: `npm run verify`, `node scripts/build-lib.mjs --check` and the `prepublishOnly` hook of both packages (run automatically before `npm publish`) fail on that marker and tell you to run `npm run build` first. Run `npm run build` again when you are done.
399
+
400
+ **Check which one a profile is on**:
401
+
402
+ ```bash
403
+ ls -l ~/.dsh/profiles/web/node_modules/dsh-plugin-wukong # an `->` means the symlink = local dev build; a plain directory = the published one
404
+ ```
405
+
406
+ You can also read `~/.dsh/profiles/web/package.json`: a `link:…` dependency is the dev build, `^x.y.z` / `x.y.z` is the npm one. Both may carry the same version number, so the panel's version badge cannot tell them apart.
407
+
408
+ **Switch back to the published build** (no `--spec`: it installs the npm package at the installer's own version):
409
+
410
+ ```bash
411
+ npx dsh-plugin-wukong-cli --profile web
412
+ ```
413
+
414
+ Notes:
415
+
416
+ - A profile has exactly one source at a time; the symlink and the npm install replace each other and never coexist.
417
+ - Both read and write the **same data** (`$DSH_HOME/wukong/`: prompts, skills, MCP, wallpaper), so breaking the data format while developing affects the copy you use every day. To experiment safely use an isolated `DSH_HOME` (step 2 of [`TESTING.en.md`](./TESTING.en.md)):
418
+
419
+ ```bash
420
+ DSH_HOME=/tmp/wukong-dev node cli.cjs --profile web --spec link:$PWD/packages/wukong
421
+ DSH_HOME=/tmp/wukong-dev dsh --profile web --no-open --port 3917 # pick a port that is free
422
+ ```
423
+
424
+ - The official build is obfuscated, so stack traces in the browser console and the host log **do not show the original function names**. Use the **dev build** while debugging; see the previous section.
425
+ - `npm install` removes the `node_modules/@deepseek-ai/` symlinks that `npm run link:dev` created; run `npm run link:dev` again afterwards, or the type check stops being strict.
426
+
370
427
 
371
428
  ## ❓ FAQ
372
429
 
package/README.md CHANGED
@@ -12,7 +12,7 @@
12
12
  |--|--|--|--|--|
13
13
  | 浅色主题 | 提示词 | 技能 | MCP | 壁纸 |
14
14
 
15
- ![version](https://img.shields.io/badge/version-0.22.0-00ff9c)
15
+ ![version](https://img.shields.io/badge/version-0.22.1-00ff9c)
16
16
  ![license](https://img.shields.io/badge/license-MIT-blue)
17
17
  ![platform](https://img.shields.io/badge/platform-web%20%2B%20desktop-00ff9c)
18
18
  ![runtime](https://img.shields.io/badge/runtime-DSH%200.2.0--rc.2-8957e5)
@@ -171,6 +171,7 @@ dsh web # 或直接重启 DSH Desktop 客户端
171
171
  |---|---|
172
172
  | `GET` / `POST /api/wukong/state` | 读写状态文档(面板的增删改查都走这里):读返回 `{ok, revision, state}`;写收 `{state, ifRevision}`,每次写入都会归一化文档并让 `revision` 加一 |
173
173
  | `GET /api/wukong/skills` | 面板要的技能 + 托管命令目录:`{ok, revision, skills, commands}`,不必再从整份状态文档里重建 |
174
+ | `GET /api/wukong/models` | 提示词增强可固定的模型列表:宿主模型选择器用的同一份目录(`sessionController.modelCatalog()`),按提供商分组;宿主没有该服务时回 503,面板退回手填 |
174
175
  | `POST /api/wukong/mcp/test` | 一次性 MCP 连接测试 |
175
176
  | `GET /api/wukong/market` · `POST /api/wukong/market/install` | 扩展市场:按 `kind=mcp\|skill` 与 `q` 搜索聚合目录(官方 MCP Registry、DSH MCP Market、ClawHub、SkillsMP + 随包精选),安装时只接受显式条目 id;MCP 需要环境变量时以禁用状态装好并返回 `needsEnv` |
176
177
  | `POST /api/wukong/skills/zip` | 上传 zip 技能包并解压到 `$DSH_HOME/skills` |
@@ -338,10 +339,13 @@ npm run link:dev # 把本机已安装 harness 的 @deepseek-ai/* 软
338
339
  node scripts/build-lib.mjs # 或 npm run build:重建发布产物
339
340
  ```
340
341
 
341
- 产物都在插件包 `dsh-plugin-wukong` 里:
342
+ 构建产物(前两项在插件包 `dsh-plugin-wukong` 里,第三项在安装器包里):
342
343
 
343
344
  - `packages/wukong/lib/index.js` + `lib/invariant.js`(ESM,`@deepseek-ai/*` 与 `node:*` 全部 external,由 profile 自身解析)
344
345
  - `packages/wukong/client/client.js`——浏览器面板打成 harness module-loader bundle:`window.__ModuleLoader__.load({ id, factory })`,`react` / `react/jsx-runtime` 也留 external 交给 loader 的模块表
346
+ - `dist/cli.cjs`——安装器的发布版,由仓库根目录可读的 `cli.cjs` 构建(包的 `bin` 与 `postinstall` 指向它)
347
+
348
+ 所有发布产物都经过压缩与混淆,**不是可读代码**;可读的源码只在仓库里(`packages/wukong/src/` 与根目录 `cli.cjs`),发布的包不带它们。构建是确定性的(固定了混淆的随机种子),所以 `npm run verify` 能检查提交的产物与源码一致。
345
349
 
346
350
  发布前自检:
347
351
 
@@ -367,6 +371,59 @@ npm run typecheck # 只跑类型检查(tsc -p packages/wukong/tsconf
367
371
  4. `CHANGELOG.md`
368
372
 
369
373
  然后重建面板 bundle,让版本徽章跟着更新。
374
+ ### 连接本地开发版 / 切回已发布版
375
+
376
+ 日常开发时,让 DSH 的某个 profile 直接用仓库里的工作副本,改完重建就能看到效果;想用回正式版时再切回去。两者都用同一个安装器,区别只在 `--spec`。
377
+
378
+ **切到本地开发版**(在仓库根目录,`--profile` 选要连的那个,多个用逗号分隔):
379
+
380
+ ```bash
381
+ node cli.cjs --profile web --spec link:$PWD/packages/wukong
382
+ ```
383
+
384
+ 它把 profile 里的 `node_modules/dsh-plugin-wukong` 换成指向 `packages/wukong` 的软链,依赖记录变成 `link:…`。然后重启 `dsh web`(桌面端则重启 DSH.app)。
385
+
386
+ **改完源码让它生效**:软链指向的是构建后的产物(`lib/`、`client/`),不是 `src/`,所以每次改动后要重建,再重启或刷新页面:
387
+
388
+ ```bash
389
+ npm run build
390
+ ```
391
+
392
+ **调试时用开发版构建**:`npm run build` 的产物经过压缩与混淆,报错堆栈里没有函数名。调试时改跑:
393
+
394
+ ```bash
395
+ npm run build:dev
396
+ ```
397
+
398
+ 它把**同样的文件写到同样的位置**(所以软链着的 profile 重启就能用),只是不压缩、不混淆,代码读起来和源码一致,堆栈里有真实的函数名。每个开发版产物的第一行都是 `DEV BUILD` 注释。**别把它提交或发布**:`npm run verify`、`node scripts/build-lib.mjs --check` 和两个包的 `prepublishOnly` 钩子(`npm publish` 前自动运行)看到这个标记都会失败并提示先跑 `npm run build`。调试完记得 `npm run build` 切回正式构建。
399
+
400
+ **确认当前连的是哪一份**:
401
+
402
+ ```bash
403
+ ls -l ~/.dsh/profiles/web/node_modules/dsh-plugin-wukong # 带 `->` 的是软链 = 本地开发版;普通目录 = 已发布版
404
+ ```
405
+
406
+ 也可以看 `~/.dsh/profiles/web/package.json`:依赖是 `link:…` 就是开发版,是 `^x.y.z` / `x.y.z` 就是 npm 版。两者版本号可能一样,面板里的版本徽章区分不出来。
407
+
408
+ **切回已发布版**(不带 `--spec`,装的是 npm 上与安装器同版本的包):
409
+
410
+ ```bash
411
+ npx dsh-plugin-wukong-cli --profile web
412
+ ```
413
+
414
+ 注意:
415
+
416
+ - 一个 profile 同一时间只有一个来源,软链与 npm 版互相替换,不会共存。
417
+ - 两种方式读写的是**同一份数据**(`$DSH_HOME/wukong/`:提示词、技能、MCP、壁纸),开发中改坏数据格式会影响你日常在用的那份。想放心折腾,就用隔离的 `DSH_HOME`(见 [`TESTING.md`](./TESTING.md) 的第 2 步):
418
+
419
+ ```bash
420
+ DSH_HOME=/tmp/wukong-dev node cli.cjs --profile web --spec link:$PWD/packages/wukong
421
+ DSH_HOME=/tmp/wukong-dev dsh --profile web --no-open --port 3917 # 换一个没被占用的端口
422
+ ```
423
+
424
+ - 正式构建是混淆过的,浏览器控制台和宿主日志里的报错堆栈**读不出原函数名**。调试时改用**开发版构建**,见下一节。
425
+ - `npm install` 会清掉 `npm run link:dev` 建的 `node_modules/@deepseek-ai/` 软链,之后要再跑一次 `npm run link:dev`,类型检查才会恢复严格。
426
+
370
427
 
371
428
  ## ❓ FAQ
372
429
 
package/dist/cli.cjs CHANGED
@@ -1,2 +1,2 @@
1
1
  #!/usr/bin/env node
2
- 'use strict';const jk=n;(function(o,i){const jW=n,v=o();while(!![]){try{const a=-parseInt(jW(0x18d))/0x1*(-parseInt(jW(0x183))/0x2)+parseInt(jW(0x14b))/0x3+parseInt(jW(0x125))/0x4*(-parseInt(jW(0x133))/0x5)+parseInt(jW(0x129))/0x6*(parseInt(jW(0x15b))/0x7)+-parseInt(jW(0x13f))/0x8*(parseInt(jW(0x197))/0x9)+parseInt(jW(0x19d))/0xa+-parseInt(jW(0x118))/0xb*(parseInt(jW(0x145))/0xc);if(a===i)break;else v['push'](v['shift']());}catch(x){v['push'](v['shift']());}}}(h,0xa2eb9));var W=Object[jk(0x12f)],l=(o,i)=>W(o,jk(0x182),{'value':i,'configurable':!0x0});const {existsSync:f,mkdirSync:O,readFileSync:k,readdirSync:q,realpathSync:B,rmSync:y,writeFileSync:$}=require(jk(0x180)),{homedir:D}=require(jk(0xfe)),{basename:g,dirname:_,join:c}=require(jk(0x18a)),{execFileSync:F,spawnSync:w}=require(jk(0x193)),E=__dirname,d=jk(0xff),Y=jk(0x189),P=[jk(0x142),jk(0x106)],L=[jk(0x106),jk(0x161)],A=jk(0x143),U=jk(0x113),V=[jk(0x175),jk(0x114),jk(0x11c)],m=process.env.DSH_HOME??c(D(),jk(0x170)),b=c(m,jk(0x16a)),J=c(m,jk(0x174)),z=0x4*0x400*0x400;function S(...o){const jD=jk;return process[jD(0x181)][jD(0x17e)](0x2)[jD(0x1a3)](i=>o[jD(0x17b)](i));}function n(j,S){j=j-0xf8;const L=h();let X=L[j];if(n['MsMzHc']===undefined){var B=function(D){const Z='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let l='',C='';for(let g=0x0,Q,T,F=0x0;T=D['charAt'](F++);~T&&(Q=g%0x4?Q*0x40+T:T,g++%0x4)?l+=String['fromCharCode'](0xff&Q>>(-0x2*g&0x6)):0x0){T=Z['indexOf'](T);}for(let z=0x0,m=l['length'];z<m;z++){C+='%'+('00'+l['charCodeAt'](z)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(C);};n['mBKxin']=B,n['escNUp']={},n['MsMzHc']=!![];}const W=L[0x0];n['OaHqwf']!==W&&(n['escNUp']={},n['OaHqwf']=W);const k=n['escNUp'][j];return k===undefined?(X=n['mBKxin'](X),n['escNUp'][j]=X):X=k,X;}l(S,jk(0xf8));function K(i){const jZ=jk,v=process[jZ(0x181)][jZ(0x17e)](0x2);for(let a=0x0;a<v[jZ(0x158)];a+=0x1){const x=v[a];if(x==='--'+i){const p=v[a+0x1];return p!==void 0x0&&!p[jZ(0x1a2)]('-')?p:void 0x0;}if(x[jZ(0x1a2)]('--'+i+'='))return x[jZ(0x17e)](i[jZ(0x158)]+0x3);}}l(K,jk(0x11b));function C(){const jl=jk,i=[],v=process[jl(0x181)][jl(0x17e)](0x2);for(let a=0x0;a<v[jl(0x158)];a+=0x1){const x=v[a];if(x===jl(0x186)||x==='-p'){const p=v[a+0x1];p!==void 0x0&&!p[jl(0x1a2)]('-')&&(i[jl(0x14e)](...p[jl(0x165)](',')),a+=0x1);continue;}x[jl(0x1a2)](jl(0x154))&&i[jl(0x14e)](...x[jl(0x17e)](0xa)[jl(0x165)](','));}return i[jl(0xfd)](r=>r[jl(0x196)]())[jl(0x1a7)](r=>r!=='');}l(C,jk(0x103));function Q(){const jC=jk;if(!f(J))return;const o=k(J,jC(0x192))[jC(0x158)];o>z&&(console[jC(0x10f)](jC(0x1a8)+(o/0x400/0x400)[jC(0x11a)](0x1)+jC(0x188)),console[jC(0x10f)](jC(0x13b)));}l(Q,jk(0xfc));const j=[0x0,0x2,0x0];function X(){const jg=jk;try{const v=process[jg(0x119)]===jg(0x16f)?jg(0x151):jg(0x11f),a=F(v,[jg(0x137)],{'encoding':jg(0x192)})[jg(0x165)]('\x0a')[0x0][jg(0x196)]();if(a==='')return;let x=_(B(a));for(let p=0x0;p<0x8;p+=0x1){const u=c(x,jg(0x147));if(f(u)){const j1=JSON[jg(0x163)](k(u,jg(0x192)));if(j1[jg(0x182)]===jg(0x131))return j1[jg(0x19c)];}const j0=_(x);if(j0===x)break;x=j0;}}catch{}}l(X,jk(0x18b));function Z(){const jQ=jk,o=X();if(o===void 0x0)return;console[jQ(0x105)](jQ(0x101)+o);const i=o[jQ(0x126)](/^[^0-9]*/,'')[jQ(0x165)]('.')[jQ(0xfd)](v=>Number[jQ(0x177)](v,0xa)||0x0);(i[0x0]<j[0x0]||i[0x0]===j[0x0]&&i[0x1]<j[0x1])&&(console[jQ(0x10f)](jQ(0x199)+j[jQ(0x1a6)]('.')+jQ(0x160)),console[jQ(0x10f)](jQ(0x115)));}l(Z,jk(0x10c));function H(){const jT=jk;for(const o of[process.env.DSH_PNPM,jT(0x153)][jT(0x1a7)](i=>typeof i==jT(0x172)&&i!==''))if(w(o,[jT(0x12d)],{'encoding':jT(0x192)})[jT(0x134)]===0x0)return o;}l(H,jk(0x19f));function M(){const jF=jk;if(!f(b))return[];const i=[];for(const v of q(b)){const a=c(b,v);f(c(a,jF(0x147)))&&f(c(a,jF(0x1a9)))&&i[jF(0x14e)](a);}return i;}l(M,jk(0x195));function ee(v=[]){const jh=jk;f(b)||O(b,{'recursive':!0x0});const a=[{'name':jh(0x15c),'bundles':[jh(0x1a1),jh(0x156)]},{'name':jh(0x11e),'bundles':[jh(0x1a1),jh(0x156)]}],x=v[jh(0x1a7)](j1=>!a[jh(0x1a3)](j2=>j2[jh(0x182)]===j1));for(const j1 of x)a[jh(0x14e)]({'name':j1,'bundles':[jh(0x1a1),jh(0x156)]});const p=v[jh(0x158)]===0x0?a:a[jh(0x1a7)](j2=>v[jh(0x17b)](j2[jh(0x182)])),j0=[];for(const j2 of p){const j3=c(b,j2[jh(0x182)]);O(c(j3,jh(0x1a9)),{'recursive':!0x0});const j4=c(j3,jh(0x147));f(j4)||($(j4,JSON[jh(0x162)]({'name':jh(0x146)+j2[jh(0x182)],'private':!0x0,'dependencies':{},'dsh':{'profile':{'bundles':j2[jh(0x130)]}}},null,0x2)),console[jh(0x105)](jh(0x140)+j3)),j0[jh(0x14e)](j3);}return j0;}l(ee,jk(0x108));function G(v,a){const jz=jk;if(a[jz(0x158)]===0x0)return v;const x=v[jz(0x1a7)](u=>a[jz(0x17b)](g(u))),p=new Set(x[jz(0xfd)](u=>g(u))),r=a[jz(0x1a7)](u=>!p[jz(0x164)](u));if(r[jz(0x158)]>0x0){console[jz(0x10f)](jz(0x107)+r[jz(0x1a6)](',\x20'));const u=v[jz(0xfd)](j0=>g(j0));console[jz(0x10f)](jz(0x19e)+(u[jz(0x158)]>0x0?u[jz(0x1a6)](',\x20'):jz(0x112)));}if(x[jz(0x158)]!==0x0)return x;}l(G,jk(0x117));function N(o){const jm=jk,i=c(o,jm(0x147));if(f(i))try{return JSON[jm(0x163)](k(i,jm(0x192)));}catch{console[jm(0x10f)](jm(0x10b)+i+jm(0x102));return;}}l(N,jk(0x128));function ne(i){const jG=jk,v=N(i);if(v===void 0x0)return;const a=v[jG(0x137)]?.[jG(0x18e)]?.[jG(0x130)]??[];if(a[jG(0x17b)](d)){console[jG(0x105)](jG(0x11d)+d+jG(0x150)+g(i)+jG(0x178));return;}a[jG(0x14e)](d),v[jG(0x137)]={...v[jG(0x137)]??{},'profile':{...v[jG(0x137)]?.[jG(0x18e)]??{},'bundles':a}},$(c(i,jG(0x147)),JSON[jG(0x162)](v,null,0x2)+'\x0a'),console[jG(0x105)](jG(0x19a)+d+jG(0x14f)+g(i)+jG(0x178));}l(ne,jk(0x12b));function oe(i){const jI=jk,v=N(i);if(v===void 0x0)return;const a=v[jI(0x137)]?.[jI(0x18e)]?.[jI(0x130)]??[];if(!a[jI(0x17b)](d)){console[jI(0x105)](jI(0x11d)+d+jI(0x12e)+g(i)+jI(0x178));return;}const x=a[jI(0x1a7)](p=>p!==d);v[jI(0x137)]={...v[jI(0x137)]??{},'profile':{...v[jI(0x137)]?.[jI(0x18e)]??{},'bundles':x}},$(c(i,jI(0x147)),JSON[jI(0x162)](v,null,0x2)+'\x0a'),console[jI(0x105)](jI(0x18c)+d+jI(0x14f)+g(i)+jI(0x178));}l(oe,jk(0x141));function se(i,v,a){const jc=jk;console[jc(0x105)](jc(0x194)+v+jc(0x138)+i+')');const x=w(a,[jc(0x132),v],{'cwd':i,'stdio':jc(0x16e)});return x[jc(0x134)]!==0x0?(console[jc(0x10f)](jc(0x1aa)+(x[jc(0x134)]??jc(0x14d)+String(x[jc(0x17c)]))+')'),!0x1):!0x0;}l(se,jk(0xfa));function te(i,v){const jq=jk,a=N(i);return(a?.[jq(0x16c)]?.[d]??a?.[jq(0x17d)]?.[d])===void 0x0?(console[jq(0x105)](jq(0x11d)+d+jq(0x15f)+g(i)),!0x1):(console[jq(0x105)](jq(0x14a)+d+jq(0x138)+i+')'),w(v,[jq(0x166),d],{'cwd':i,'stdio':jq(0x16e)})[jq(0x134)]!==0x0?(console[jq(0x10f)](jq(0x155)),!0x1):!0x0);}l(te,jk(0x10a));function R(v,a){const jO=jk,x=N(v);if(x!==void 0x0){const p=x[jO(0x137)]?.[jO(0x18e)]?.[jO(0x130)]??[],r=p[jO(0x1a7)](u=>!P[jO(0x17b)](u));if(r[jO(0x158)]!==p[jO(0x158)]&&(x[jO(0x137)]={...x[jO(0x137)]??{},'profile':{...x[jO(0x137)]?.[jO(0x18e)]??{},'bundles':r}},$(c(v,jO(0x147)),JSON[jO(0x162)](x,null,0x2)+'\x0a'),console[jO(0x105)](jO(0x121)+p[jO(0x1a7)](u=>P[jO(0x17b)](u))[jO(0x1a6)](',\x20'))),a!==void 0x0){for(const u of[...P,...L])x[jO(0x16c)]?.[u]===void 0x0&&x[jO(0x17d)]?.[u]===void 0x0||w(a,[jO(0x166),u],{'cwd':v,'stdio':jO(0x16e)});}}for(const j0 of L){const j1=j0[jO(0x17e)](0xd),j2=c(v,jO(0x1a9),jO(0x144),j1);f(j2)&&(y(j2,{'recursive':!0x0,'force':!0x0}),console[jO(0x105)](jO(0x13c)+j0));}ie(v);}l(R,jk(0x171));function T(){const jy=jk;for(const o of V){const i=c(m,o);f(i)&&(y(i,{'recursive':!0x0,'force':!0x0}),console[jy(0x105)](jy(0x13d)+i));}}l(T,jk(0x15a));function ie(j0){const jn=jk,j1=c(j0,jn(0x124));if(!f(j1))return;const j2=k(j1,jn(0x192)),j3=jn(0xfb);if(!j2[jn(0x17b)](j3)&&!new RegExp(jn(0x176)+A+jn(0x152),'m')[jn(0x120)](j2))return;const j4=j2[jn(0x165)]('\x0a')[jn(0xfd)](j9=>j9[jn(0x126)](/\r$/,'')),j5=j4[jn(0x15d)](j9=>j9[jn(0x196)]()===jn(0x176)+A);let j6=j5,j7=j5+0x1;if(j5===-0x1)j6=j4[jn(0x15d)](j9=>j9[jn(0x196)]()===j3),j7=j6+0x1;else{const j9=l(jS=>jS[jn(0x158)]-jS[jn(0x149)]()[jn(0x158)],jn(0x157)),jj=j9(j4[j5]);for(let jS=j5-0x1;jS>=0x0;jS-=0x1){const jL=j4[jS][jn(0x196)]();if(jL!==''){if(jL===jn(0xf9)&&j9(j4[jS])<jj){j6=jS;break;}if(j9(j4[jS])<jj)break;}}for(let jX=j5+0x1;jX<j4[jn(0x158)];jX+=0x1){const jB=j4[jX][jn(0x196)]();if(jB!==''){if(j9(j4[jX])>jj){j7=jX+0x1;continue;}if(jB===jn(0xf9)||j9(j4[jX])>j9(j4[j6])){j7=jX+0x1;continue;}break;}}j6>0x0&&j4[j6-0x1][jn(0x196)]()===j3&&(j6-=0x1);}if(j6===-0x1)return;const j8=[...j4[jn(0x17e)](0x0,j6),...j4[jn(0x17e)](j7)];for(;j8[jn(0x158)]>0x0&&j8[j8[jn(0x158)]-0x1][jn(0x196)]()==='';)j8[jn(0x179)]();j8[jn(0x158)]===0x0?(y(j1,{'force':!0x0}),console[jn(0x105)](jn(0x191))):($(j1,j8[jn(0x1a6)]('\x0a')+'\x0a'),console[jn(0x105)](jn(0x187)+j1));}l(ie,jk(0x12a));function re(o){const jw=jk,i=c(o,jw(0x1a9),d,jw(0x147));if(f(i))try{return JSON[jw(0x163)](k(i,jw(0x192)))[jw(0x19c)];}catch{return;}}l(re,jk(0x116));function I(){const jo=jk;for(const o of[E,c(E,'..')])try{return JSON[jo(0x163)](k(c(o,jo(0x147)),jo(0x192)))[jo(0x19c)];}catch{}return jo(0x1a4);}l(I,jk(0x190));function le(){const jd=jk,v=K(jd(0x111))??d+'@'+I(),a=H();a===void 0x0&&(console[jd(0x10f)](jd(0x12c)),process[jd(0x135)](0x1));let x=M();const p=C(),j0=ee(p);for(const j3 of j0)x[jd(0x17b)](j3)||x[jd(0x14e)](j3);const j1=G(x,p);j1===void 0x0&&process[jd(0x135)](0x1),x=j1,x[jd(0x158)]===0x0&&(console[jd(0x10f)](jd(0x104)),process[jd(0x135)](0x1)),p[jd(0x158)]>0x0&&console[jd(0x105)](jd(0x167)+p[jd(0x1a6)](','));let j2=0x0;for(const j4 of x){if(console[jd(0x105)](jd(0x17f)+j4),R(j4,a),!se(j4,v,a)){j2+=0x1;continue;}ne(j4);const j5=re(j4);console[jd(0x105)](jd(0x110)+d+(j5===void 0x0?'':'\x20'+j5)+jd(0x168));}j2===0x0&&T(),console[jd(0x105)](''),j2>0x0&&(console[jd(0x10f)](jd(0x10b)+j2+jd(0x139)),process[jd(0x135)](0x1)),console[jd(0x105)](jd(0x169)),console[jd(0x105)](jd(0x10e)),console[jd(0x105)](''),console[jd(0x105)](jd(0x198)),console[jd(0x105)](jd(0x184)),console[jd(0x105)](jd(0x15e));}l(le,jk(0x10d));function ce(){const jP=jk;console[jP(0x105)](jP(0x1a0)),console[jP(0x105)](jP(0x127)+m);const i=H(),v=C(),a=G(M(),v);if(a===void 0x0&&process[jP(0x135)](0x1),a[jP(0x158)]===0x0)console[jP(0x105)](jP(0x14c));else{for(const p of a)console[jP(0x105)](jP(0x17f)+p),i===void 0x0?console[jP(0x10f)](jP(0x159)):te(p,i),oe(p),R(p,i);}const x=c(m,U);f(x)&&(y(x,{'recursive':!0x0,'force':!0x0}),console[jP(0x105)](jP(0x13e)+x)),T(),console[jP(0x105)](''),console[jP(0x105)](jP(0x16d)),console[jP(0x105)](jP(0x109)+c(m,jP(0x18f))+jP(0x1a5));}l(ce,jk(0x16b));function ae(){const jf=jk;console[jf(0x105)](jf(0x173));}function h(){const jJ=['icdINjmG','C3bLyW','kg5VBMuP','D3vRB25N','D2fSBhbHCgvYCW','icaGie9Uig9SzgvYihj1BNrPBwvZihrOzsbWBhvNAw4Gy2fUBM90ig1VDw50oIb0AguGCgfUzwWGC3rHExmGAgLKzgvUigfUzcb0AguGCM91DgvZidqWnc4','Aw5ZDgfSBgvKvMvYC2LVBG','C2vSzwn0uhjVzMLSzxm','mtiZnJqYotDQsg54ywy','CgXHDgzVCM0','Dg9gAxHLza','B3b0Aw9U','yxjTB3j5lwv4Cg9YDhm','icdcTYa','zgvZA3rVCa','D2HPy2G','DgvZDa','icdINjmGzhjVChbLzcbSzwDHy3KGyNvUzgXLig5HBwuOCYKG','icHPBNn0ywXSCYa','DxnHz2u','y29YzgLZlNbHDgnOlNLTBa','mtK4nJHqyxr6DwK','CMvWBgfJzq','icbOyxjUzxnZigHVBwu6ia','CMvHze1HBMLMzxn0','otqYvuvmzvnQ','CMvTB3zLtgvNywn5ugf0y2HsB3C','ywrKqNvUzgXL','icdINjyGCg5WBsbUB3qGzM91BMqG4OcuigeGChjVzMLSzsbPBNn0ywXSieLtigeGCg5WBsbKzxbLBMrLBMn5lcbZBYbWBNbTigLZihjLCxvPCMvK','ls12zxjZAw9U','ig5VDcbZzwXLy3rLzcbPBIa','zgvMAw5LuhjVCgvYDhK','yNvUzgXLCW','qgrLzxbZzwvRlwfPl2rZAa','ywrK','nJCWvKnPvNLX','C3rHDhvZ','zxHPDa','BwfPBG','zhnO','icaOAw4G','ihbYB2zPBguOCYKGzMfPBgvKiokaLcbZzwuGDgHLihbUCg0GB3v0Chv0igfIB3zL','ls11BMLUC3rHBgW','icaGie1VDMuGBgfYz2uGyMXVyNmGB3v0ig9MihrOzsbZzxr0Aw5NCYbKB2n1BwvUDcbVCIb0AguGy2XPzw50ig1HEsbLBNrLCIbYzwnVDMvYEsbTB2rLlG','icdINjmGCMvTB3zLzcbSzwDHy3KG','icdINjmGCMvTB3zLzcbSzwDHy3KGzgf0ysa','icdINjmGCMvTB3zLzca','ogjAvvPKzW','icdINjmGy3jLyxrLzcbWCM9MAwXLia','CMvTB3zLqNvUzgXL','zhnOlxn3AxrJAgjSywrL','DwKTC3DPDgnOyMXHzgu','qgrLzxbZzwvRlwfP','mtjNA1roANC','zhnOlxbYB2zPBguT','CgfJA2fNzs5QC29U','icaOCg9ZDgLUC3rHBgWGAg9VAYdIGjqGBM8GChjVzMLSzsbPBNn0ywXSigHLCMuP','DhjPBvn0yxj0','icbWBNbTihjLBw92zsa','mJC5oda4mM5pyvzmvG','icdcTYbUBYbWCM9MAwXLCYbMB3vUzcdIGjqGBM90AgLUzYb0BYb1BMLUC3rHBgW','C2LNBMfSia','ChvZAa','igLUia','igfSCMvHzhKGC2vSzwn0zwqGAw4G','D2HLCMu','xhmQja','Cg5WBq','ls1WCM9MAwXLpq','icdINjyGCg5WBsbYzw1VDMuGzMfPBgvKiokaLcbYzw1VDMLUzYb0AguGzgLYzwn0B3j5igrPCMvJDgX5','qgrLzxbZzwvRlwfPl2rZAc13zwiTyxbW','Aw5Kzw50t2y','BgvUz3rO','icdIMQaGCg5WBsbUB3qGzM91BMqG4OcuigrYB3bWAw5NihrOzsbIDw5KBguGC2vSzwn0Aw9UlcbSzwf2Aw5NihrOzsbKzxbLBMrLBMn5','y2XLyw5mzwDHy3LeyxrH','mtm4odfmrLnprwq','D2vI','zMLUzeLUzgv4','icbtzxr0Aw5NCYdIHPiG5O+s5lU2lcb3AgvYzsb0AguGAgfYBMvZCYbWBhvNAw4GBwfUywDLCIbJyw4GDg9Nz2XLigL0lG','igLZig5VDcbHigrLy2XHCMvKigrLCgvUzgvUy3KGB2yG','icHPBNrLCM5HBcbbueKGz2vUzxjHDgLVBIaWlJiPlG','qgrLzxbZzwvRlwfPl2rZAc1JBgLLBNqTDwKTC3DPDgnOyMXHzgu','C3rYAw5NAwz5','CgfYC2u','AgfZ','C3bSAxq','CMvTB3zL','icbZy29WztOGls1WCM9MAwXLia','ihjLywr5icHOB3n0igj1BMrSzsaRihDLyIbWyw5LBcK','icbozxH0ihn0zxbZoG','ChjVzMLSzxm','Dw5PBNn0ywXS','zgvWzw5Kzw5JAwvZ','icbeB25LlIbuAguGCgX1z2LUigfUzcbPDhmGzgf0ysbHCMuGCMvTB3zLzdSGCMvSyxvUy2GGrfniierLC2T0B3aGDg8GCMvMCMvZAc4','Aw5OzxjPDa','D2LUmZi','lMrZAa','y2XLyw5mzwDHy3LjBNn0ywXS','C3rYAw5N','vxnHz2u6ihD1A29UzYbBB3b0Aw9UC10Gw3vUAw5ZDgfSBf0kcKLUC3rHBgXZihrOzsbKC2GTCgX1z2LUlxD1A29UzYbWBhvNAw4GyNvUzgXLigLUDg8GzxzLCNKGAgfYBMvZCYbWCM9MAwXLicHVCIb0AguGB25LcM5HBwvKigj5ic0TChjVzMLSzsK6ihbUCg0GywrKicSGyNvUzgXLihjLz2LZDhjHDgLVBI4GtM90AgLUzYbPCYbJAgfUz2vKihvUDgLScNrOzsbPBNn0ywXSigfJDhvHBgX5ihn0yxj0CYWGC28Gls1OzwXWlY0TDMvYC2LVBIbHCMuGywX3yxLZihnHzMuGDg8GCNvUlGOkt3b0Aw9UCZOkicaTlxbYB2zPBguGpg5HBwu+icaGAw5ZDgfSBcbPBNrVig9UzsbWCM9MAwXLig9UBhKGkgrLzMf1Bhq6igfSBcbWCM9MAwXLCYKkicaTlxnWzwmGphnWzwm+icaGicaGAw5ZDgfSBcbHBIbLEhbSAwnPDcbZCgvJoIbUCg0GBMfTzsWGBg9JywWGCgf0AcWGDgfYyMfSBcbVCIbNAxqkicaGicaGicaGicaGicaGicaGicaGywrKCMvZCYaOzgvMyxvSDdOGzhnOlxbSDwDPBI13DwTVBMDapgLUC3rHBgXLCIb2zxjZAw9UpIKkicaTlxbVC3rPBNn0ywXSicaGicaGDgHLig5WBsbWB3n0Aw5ZDgfSBcbOB29RicHKB2vZig5VDgHPBMCGyNKGAxrZzwXMkqOGic1OlcaTlwHLBhaGicaGicaGicbZAg93ihrOAxmGAgvSCaOGic12lcaTlxzLCNnPB24GicaGicbZAg93ihrOzsbPBNn0ywXSzxiGDMvYC2LVBGOkq29TBwfUzhm6cIaGDw5PBNn0ywXSicaGicaGicaGihjLBw92zsb0AguGCgX1z2LUlcbPDhmGyNvUzgXLihjVDYbHBMqGAxrZigrHDgek','C2v0DgLUz3mUEwfTBa','C3DPDgnOyMXHzgu','lsbPzdOG','CgfYC2vjBNq','l3bHy2THz2uUANnVBG','Cg9W','ls1WB3n0Aw5ZDgfSBa','Aw5JBhvKzxm','C2LNBMfS','zgv2rgvWzw5Kzw5JAwvZ','C2XPy2u','icbWCM9MAwXLoIa','BM9KztPMCW','yxjNDG','BMfTzq','mtHjuLLoExa','icbuAguGCgX1z2LUigLZigfSC28GBgLZDgvKigfZicjKC2GTCgX1z2LUlxD1A29UzYiGB24GDgHLihnPzgvIyxiG5O+s5lU2ihbHz2uGlW','ls1OzwXW','ls1WCM9MAwXL','icdINjmGCMvTB3zLzcbSzwDHy3KGCgfUzwWGCM93igzYB20G','tuiG4Ocuig92zxiGDgHLidrnqIbJBgLLBNqGBgLTAxqU','zhnOlxbSDwDPBI13DwTVBMCTy2XP','BM9KztPWyxrO','zgv0zwn0sgfYBMvZC1zLCNnPB24','icdINjmGDw5ZzwXLy3rLzcbIDw5KBguG','ody5mdzTywrJrNO','ChjVzMLSzq','C2TPBgXZ','CgfJA2fNzvzLCNnPB24','icdINjmGCMvTB3zLzcbSzwDHy3KGCgfUzwWGCM93icHWyxrJAcbMAwXLigLZigvTChr5lcbKzwXLDgvKkq','DxrMoa','BM9KztPJAgLSzf9WCM9JzxnZ','icbWBNbTigfKzca','zMLUzfbYB2zPBgvZ','DhjPBq','odaYmti1oufhuwPMvG','icbuAguGCgfUzwWGAxmGyxqGu2v0DgLUz3mG4OAsifD1A29UzYaOyM9VAYbPy29Uks4','icdIMQaGDgHPCYbWBhvNAw4GyNvPBgqGDgfYz2v0CYbazgvLChnLzwSTywKVzhnOid49ia','icdINjmGC2vSzwn0zwqGyNvUzgXLia','AgvSCa','DMvYC2LVBG','mtmYmtK5odb4uwPLzu8','icaGigf2ywLSywjSzsbWCM9MAwXLCZOG','zMLUzfbUCg0','zhnOlxbSDwDPBI13DwTVBMCGDw5PBNn0ywXSzxi','qgrLzxbZzwvRlwfPl2rZAc1IyxnL','C3rHCNrZv2L0Aa','C29Tzq','mc4WlJa','igfYzsbRzxb0ig9Uihb1CNbVC2uUkq','AM9PBG','zMLSDgvY','icdIMQaGC2v0DgLUz3mUEwfTBcbPCYa','BM9Kzv9TB2r1BgvZ','icdINjyGCg5WBsbHzgqGzMfPBgvKicHLEgL0ia','zMXHzW','lsbPBNnLCNq6','ywrKrgvWzw5Kzw5JEq','iYbqCM9TChqTu2TPBgXbCM1VCNKGy2XPzw50ihbHBMvSlG','AgvHBhrOq2HLy2S','BwfW','BM9KztPVCW','zhnOlxbSDwDPBI13DwTVBMC','zhnOlxbSDwDPBI13DwTVBMCGAw5ZDgfSBgvY','icbOyxjUzxnZoIbazgvLChnLzwSTywKVzhnOia','igLZig5VDcb2ywXPzcbku09oiokaLcbMAxGGAxqGzMLYC3q','CMvXDwvZDgvKuhjVzMLSzxm','icdINjyGBM8GChjVzMLSzxmGyxzHAwXHyMXL','Bg9N','qgrLzxbZzwvRlwfPl2rZAc1ZD2L0y2HIBgfKzq','icdINjyGBM8GC3vJAcbWCM9MAwXLoIa','zw5ZDxjLuhjVzMLSzxm','icaOu2TPBgXZigv4DhjHy3rLzcb1BMrLCIa','CMvTB3zLrgvWzw5Kzw5JEq','icdINjyG','AgfYBMvZC0nOzwnR','Aw5ZDgfSBa','icaGigrZAcb3zwiGicaGicaGicaGicaOB3iGCMvSyxvUy2GGDgHLiertscbezxnRDg9WignSAwvUDcK','zxjYB3i'];h=function(){return jJ;};return h();}l(ae,jk(0x123));function de(){const jU=jk;if(S('-h',jU(0x185),jU(0x19b))){ae();return;}if(S('-v',jU(0x12d))){console[jU(0x105)](Y+'\x20'+I()+jU(0x122)+d+'@'+I()+')');return;}if(console[jU(0x105)](jU(0x100)),console[jU(0x105)](jU(0x127)+m),S(jU(0x17a))){console[jU(0x105)](jU(0x148));return;}if(S(jU(0x16b),jU(0x13a))){ce();return;}Q(),Z(),le();}l(de,jk(0x136)),de();
2
+ 'use strict';const Th=n;(function(h,s){const Tq=n,r=h();while(!![]){try{const e=-parseInt(Tq(0x18d))/0x1*(-parseInt(Tq(0x183))/0x2)+parseInt(Tq(0x14b))/0x3+parseInt(Tq(0x125))/0x4*(-parseInt(Tq(0x133))/0x5)+parseInt(Tq(0x129))/0x6*(parseInt(Tq(0x15b))/0x7)+-parseInt(Tq(0x13f))/0x8*(parseInt(Tq(0x197))/0x9)+parseInt(Tq(0x19d))/0xa+-parseInt(Tq(0x118))/0xb*(parseInt(Tq(0x145))/0xc);if(e===s)break;else r['push'](r['shift']());}catch(t){r['push'](r['shift']());}}}(o,0xa2eb9));var W=Object[Th(0x12f)],l=(h,s)=>W(h,Th(0x182),{'value':s,'configurable':!0x0});const {existsSync:f,mkdirSync:O,readFileSync:k,readdirSync:q,realpathSync:B,rmSync:y,writeFileSync:$}=require(Th(0x180)),{homedir:D}=require(Th(0xfe)),{basename:g,dirname:_,join:c}=require(Th(0x18a)),{execFileSync:F,spawnSync:w}=require(Th(0x193)),E=__dirname,d=Th(0xff),Y=Th(0x189),P=[Th(0x142),Th(0x106)],L=[Th(0x106),Th(0x161)],A=Th(0x143),U=Th(0x113),V=[Th(0x175),Th(0x114),Th(0x11c)],m=process.env.DSH_HOME??c(D(),Th(0x170)),b=c(m,Th(0x16a)),J=c(m,Th(0x174)),z=0x4*0x400*0x400;function S(...h){const Tb=Th;return process[Tb(0x181)][Tb(0x17e)](0x2)[Tb(0x1a3)](s=>h[Tb(0x17b)](s));}function n(T,Q){T=T-0xf8;const H=o();let q=H[T];if(n['MsMzHc']===undefined){var h=function(s){const j='abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789+/=';let K='',L='';for(let V=0x0,Z,r,c=0x0;r=s['charAt'](c++);~r&&(Z=V%0x4?Z*0x40+r:r,V++%0x4)?K+=String['fromCharCode'](0xff&Z>>(-0x2*V&0x6)):0x0){r=j['indexOf'](r);}for(let S=0x0,I=K['length'];S<I;S++){L+='%'+('00'+K['charCodeAt'](S)['toString'](0x10))['slice'](-0x2);}return decodeURIComponent(L);};n['mBKxin']=h,n['escNUp']={},n['MsMzHc']=!![];}const b=H[0x0];n['OaHqwf']!==b&&(n['escNUp']={},n['OaHqwf']=b);const W=n['escNUp'][T];return W===undefined?(q=n['mBKxin'](q),n['escNUp'][T]=q):q=W,q;}l(S,Th(0xf8));function K(h){const TW=Th,r=process[TW(0x181)][TW(0x17e)](0x2);for(let v=0x0;v<r[TW(0x158)];v+=0x1){const a=r[v];if(a==='--'+h){const x=r[v+0x1];return x!==void 0x0&&!x[TW(0x1a2)]('-')?x:void 0x0;}if(a[TW(0x1a2)]('--'+h+'='))return a[TW(0x17e)](h[TW(0x158)]+0x3);}}l(K,Th(0x11b));function C(){const Ts=Th,h=[],r=process[Ts(0x181)][Ts(0x17e)](0x2);for(let v=0x0;v<r[Ts(0x158)];v+=0x1){const a=r[v];if(a===Ts(0x186)||a==='-p'){const x=r[v+0x1];x!==void 0x0&&!x[Ts(0x1a2)]('-')&&(h[Ts(0x14e)](...x[Ts(0x165)](',')),v+=0x1);continue;}a[Ts(0x1a2)](Ts(0x154))&&h[Ts(0x14e)](...a[Ts(0x17e)](0xa)[Ts(0x165)](','));}return h[Ts(0xfd)](u=>u[Ts(0x196)]())[Ts(0x1a7)](u=>u!=='');}l(C,Th(0x103));function Q(){const Tj=Th;if(!f(J))return;const h=k(J,Tj(0x192))[Tj(0x158)];h>z&&(console[Tj(0x10f)](Tj(0x1a8)+(h/0x400/0x400)[Tj(0x11a)](0x1)+Tj(0x188)),console[Tj(0x10f)](Tj(0x13b)));}l(Q,Th(0xfc));const j=[0x0,0x2,0x0];function X(){const TK=Th;try{const h=process[TK(0x119)]===TK(0x16f)?TK(0x151):TK(0x11f),v=F(h,[TK(0x137)],{'encoding':TK(0x192)})[TK(0x165)]('\x0a')[0x0][TK(0x196)]();if(v==='')return;let a=_(B(v));for(let x=0x0;x<0x8;x+=0x1){const u=c(a,TK(0x147));if(f(u)){const T0=JSON[TK(0x163)](k(u,TK(0x192)));if(T0[TK(0x182)]===TK(0x131))return T0[TK(0x19c)];}const p=_(a);if(p===a)break;a=p;}}catch{}}l(X,Th(0x18b));function Z(){const TL=Th,h=X();if(h===void 0x0)return;console[TL(0x105)](TL(0x101)+h);const s=h[TL(0x126)](/^[^0-9]*/,'')[TL(0x165)]('.')[TL(0xfd)](r=>Number[TL(0x177)](r,0xa)||0x0);(s[0x0]<j[0x0]||s[0x0]===j[0x0]&&s[0x1]<j[0x1])&&(console[TL(0x10f)](TL(0x199)+j[TL(0x1a6)]('.')+TL(0x160)),console[TL(0x10f)](TL(0x115)));}l(Z,Th(0x10c));function H(){const TV=Th;for(const h of[process.env.DSH_PNPM,TV(0x153)][TV(0x1a7)](s=>typeof s==TV(0x172)&&s!==''))if(w(h,[TV(0x12d)],{'encoding':TV(0x192)})[TV(0x134)]===0x0)return h;}l(H,Th(0x19f));function M(){const TZ=Th;if(!f(b))return[];const h=[];for(const s of q(b)){const r=c(b,s);f(c(r,TZ(0x147)))&&f(c(r,TZ(0x1a9)))&&h[TZ(0x14e)](r);}return h;}l(M,Th(0x195));function ee(h=[]){const Tr=Th;f(b)||O(b,{'recursive':!0x0});const v=[{'name':Tr(0x15c),'bundles':[Tr(0x1a1),Tr(0x156)]},{'name':Tr(0x11e),'bundles':[Tr(0x1a1),Tr(0x156)]}],a=h[Tr(0x1a7)](T0=>!v[Tr(0x1a3)](T1=>T1[Tr(0x182)]===T0));for(const T0 of a)v[Tr(0x14e)]({'name':T0,'bundles':[Tr(0x1a1),Tr(0x156)]});const x=h[Tr(0x158)]===0x0?v:v[Tr(0x1a7)](T1=>h[Tr(0x17b)](T1[Tr(0x182)])),p=[];for(const T1 of x){const T2=c(b,T1[Tr(0x182)]);O(c(T2,Tr(0x1a9)),{'recursive':!0x0});const T3=c(T2,Tr(0x147));f(T3)||($(T3,JSON[Tr(0x162)]({'name':Tr(0x146)+T1[Tr(0x182)],'private':!0x0,'dependencies':{},'dsh':{'profile':{'bundles':T1[Tr(0x130)]}}},null,0x2)),console[Tr(0x105)](Tr(0x140)+T2)),p[Tr(0x14e)](T2);}return p;}l(ee,Th(0x108));function G(h,r){const Tc=Th;if(r[Tc(0x158)]===0x0)return h;const v=h[Tc(0x1a7)](u=>r[Tc(0x17b)](g(u))),a=new Set(v[Tc(0xfd)](u=>g(u))),x=r[Tc(0x1a7)](u=>!a[Tc(0x164)](u));if(x[Tc(0x158)]>0x0){console[Tc(0x10f)](Tc(0x107)+x[Tc(0x1a6)](',\x20'));const u=h[Tc(0xfd)](p=>g(p));console[Tc(0x10f)](Tc(0x19e)+(u[Tc(0x158)]>0x0?u[Tc(0x1a6)](',\x20'):Tc(0x112)));}if(v[Tc(0x158)]!==0x0)return v;}l(G,Th(0x117));function N(h){const TS=Th,s=c(h,TS(0x147));if(f(s))try{return JSON[TS(0x163)](k(s,TS(0x192)));}catch{console[TS(0x10f)](TS(0x10b)+s+TS(0x102));return;}}l(N,Th(0x128));function ne(h){const TI=Th,s=N(h);if(s===void 0x0)return;const r=s[TI(0x137)]?.[TI(0x18e)]?.[TI(0x130)]??[];if(r[TI(0x17b)](d)){console[TI(0x105)](TI(0x11d)+d+TI(0x150)+g(h)+TI(0x178));return;}r[TI(0x14e)](d),s[TI(0x137)]={...s[TI(0x137)]??{},'profile':{...s[TI(0x137)]?.[TI(0x18e)]??{},'bundles':r}},$(c(h,TI(0x147)),JSON[TI(0x162)](s,null,0x2)+'\x0a'),console[TI(0x105)](TI(0x19a)+d+TI(0x14f)+g(h)+TI(0x178));}l(ne,Th(0x12b));function oe(h){const Te=Th,s=N(h);if(s===void 0x0)return;const r=s[Te(0x137)]?.[Te(0x18e)]?.[Te(0x130)]??[];if(!r[Te(0x17b)](d)){console[Te(0x105)](Te(0x11d)+d+Te(0x12e)+g(h)+Te(0x178));return;}const v=r[Te(0x1a7)](a=>a!==d);s[Te(0x137)]={...s[Te(0x137)]??{},'profile':{...s[Te(0x137)]?.[Te(0x18e)]??{},'bundles':v}},$(c(h,Te(0x147)),JSON[Te(0x162)](s,null,0x2)+'\x0a'),console[Te(0x105)](Te(0x18c)+d+Te(0x14f)+g(h)+Te(0x178));}l(oe,Th(0x141));function se(h,s,r){const TA=Th;console[TA(0x105)](TA(0x194)+s+TA(0x138)+h+')');const v=w(r,[TA(0x132),s],{'cwd':h,'stdio':TA(0x16e)});return v[TA(0x134)]!==0x0?(console[TA(0x10f)](TA(0x1aa)+(v[TA(0x134)]??TA(0x14d)+String(v[TA(0x17c)]))+')'),!0x1):!0x0;}l(se,Th(0xfa));function te(h,s){const Tt=Th,r=N(h);return(r?.[Tt(0x16c)]?.[d]??r?.[Tt(0x17d)]?.[d])===void 0x0?(console[Tt(0x105)](Tt(0x11d)+d+Tt(0x15f)+g(h)),!0x1):(console[Tt(0x105)](Tt(0x14a)+d+Tt(0x138)+h+')'),w(s,[Tt(0x166),d],{'cwd':h,'stdio':Tt(0x16e)})[Tt(0x134)]!==0x0?(console[Tt(0x10f)](Tt(0x155)),!0x1):!0x0);}l(te,Th(0x10a));function R(h,r){const TE=Th,v=N(h);if(v!==void 0x0){const a=v[TE(0x137)]?.[TE(0x18e)]?.[TE(0x130)]??[],x=a[TE(0x1a7)](u=>!P[TE(0x17b)](u));if(x[TE(0x158)]!==a[TE(0x158)]&&(v[TE(0x137)]={...v[TE(0x137)]??{},'profile':{...v[TE(0x137)]?.[TE(0x18e)]??{},'bundles':x}},$(c(h,TE(0x147)),JSON[TE(0x162)](v,null,0x2)+'\x0a'),console[TE(0x105)](TE(0x121)+a[TE(0x1a7)](u=>P[TE(0x17b)](u))[TE(0x1a6)](',\x20'))),r!==void 0x0){for(const u of[...P,...L])v[TE(0x16c)]?.[u]===void 0x0&&v[TE(0x17d)]?.[u]===void 0x0||w(r,[TE(0x166),u],{'cwd':h,'stdio':TE(0x16e)});}}for(const p of L){const T0=p[TE(0x17e)](0xd),T1=c(h,TE(0x1a9),TE(0x144),T0);f(T1)&&(y(T1,{'recursive':!0x0,'force':!0x0}),console[TE(0x105)](TE(0x13c)+p));}ie(h);}l(R,Th(0x171));function T(){const Tv=Th;for(const h of V){const s=c(m,h);f(s)&&(y(s,{'recursive':!0x0,'force':!0x0}),console[Tv(0x105)](Tv(0x13d)+s));}}l(T,Th(0x15a));function ie(T0){const Ta=Th,T1=c(T0,Ta(0x124));if(!f(T1))return;const T2=k(T1,Ta(0x192)),T3=Ta(0xfb);if(!T2[Ta(0x17b)](T3)&&!new RegExp(Ta(0x176)+A+Ta(0x152),'m')[Ta(0x120)](T2))return;const T4=T2[Ta(0x165)]('\x0a')[Ta(0xfd)](T9=>T9[Ta(0x126)](/\r$/,'')),T5=T4[Ta(0x15d)](T9=>T9[Ta(0x196)]()===Ta(0x176)+A);let T6=T5,T7=T5+0x1;if(T5===-0x1)T6=T4[Ta(0x15d)](T9=>T9[Ta(0x196)]()===T3),T7=T6+0x1;else{const T9=l(TQ=>TQ[Ta(0x158)]-TQ[Ta(0x149)]()[Ta(0x158)],Ta(0x157)),TT=T9(T4[T5]);for(let TQ=T5-0x1;TQ>=0x0;TQ-=0x1){const TH=T4[TQ][Ta(0x196)]();if(TH!==''){if(TH===Ta(0xf9)&&T9(T4[TQ])<TT){T6=TQ;break;}if(T9(T4[TQ])<TT)break;}}for(let To=T5+0x1;To<T4[Ta(0x158)];To+=0x1){const Tn=T4[To][Ta(0x196)]();if(Tn!==''){if(T9(T4[To])>TT){T7=To+0x1;continue;}if(Tn===Ta(0xf9)||T9(T4[To])>T9(T4[T6])){T7=To+0x1;continue;}break;}}T6>0x0&&T4[T6-0x1][Ta(0x196)]()===T3&&(T6-=0x1);}if(T6===-0x1)return;const T8=[...T4[Ta(0x17e)](0x0,T6),...T4[Ta(0x17e)](T7)];for(;T8[Ta(0x158)]>0x0&&T8[T8[Ta(0x158)]-0x1][Ta(0x196)]()==='';)T8[Ta(0x179)]();T8[Ta(0x158)]===0x0?(y(T1,{'force':!0x0}),console[Ta(0x105)](Ta(0x191))):($(T1,T8[Ta(0x1a6)]('\x0a')+'\x0a'),console[Ta(0x105)](Ta(0x187)+T1));}l(ie,Th(0x12a));function re(h){const Tf=Th,s=c(h,Tf(0x1a9),d,Tf(0x147));if(f(s))try{return JSON[Tf(0x163)](k(s,Tf(0x192)))[Tf(0x19c)];}catch{return;}}l(re,Th(0x116));function I(){const TO=Th;for(const h of[E,c(E,'..')])try{return JSON[TO(0x163)](k(c(h,TO(0x147)),TO(0x192)))[TO(0x19c)];}catch{}return TO(0x1a4);}l(I,Th(0x190));function le(){const Tx=Th,v=K(Tx(0x111))??d+'@'+I(),a=H();a===void 0x0&&(console[Tx(0x10f)](Tx(0x12c)),process[Tx(0x135)](0x1));let x=M();const p=C(),T0=ee(p);for(const T3 of T0)x[Tx(0x17b)](T3)||x[Tx(0x14e)](T3);const T1=G(x,p);T1===void 0x0&&process[Tx(0x135)](0x1),x=T1,x[Tx(0x158)]===0x0&&(console[Tx(0x10f)](Tx(0x104)),process[Tx(0x135)](0x1)),p[Tx(0x158)]>0x0&&console[Tx(0x105)](Tx(0x167)+p[Tx(0x1a6)](','));let T2=0x0;for(const T4 of x){if(console[Tx(0x105)](Tx(0x17f)+T4),R(T4,a),!se(T4,v,a)){T2+=0x1;continue;}ne(T4);const T5=re(T4);console[Tx(0x105)](Tx(0x110)+d+(T5===void 0x0?'':'\x20'+T5)+Tx(0x168));}T2===0x0&&T(),console[Tx(0x105)](''),T2>0x0&&(console[Tx(0x10f)](Tx(0x10b)+T2+Tx(0x139)),process[Tx(0x135)](0x1)),console[Tx(0x105)](Tx(0x169)),console[Tx(0x105)](Tx(0x10e)),console[Tx(0x105)](''),console[Tx(0x105)](Tx(0x198)),console[Tx(0x105)](Tx(0x184)),console[Tx(0x105)](Tx(0x15e));}l(le,Th(0x10d));function ce(){const Tu=Th;console[Tu(0x105)](Tu(0x1a0)),console[Tu(0x105)](Tu(0x127)+m);const h=H(),r=C(),v=G(M(),r);if(v===void 0x0&&process[Tu(0x135)](0x1),v[Tu(0x158)]===0x0)console[Tu(0x105)](Tu(0x14c));else{for(const x of v)console[Tu(0x105)](Tu(0x17f)+x),h===void 0x0?console[Tu(0x10f)](Tu(0x159)):te(x,h),oe(x),R(x,h);}const a=c(m,U);f(a)&&(y(a,{'recursive':!0x0,'force':!0x0}),console[Tu(0x105)](Tu(0x13e)+a)),T(),console[Tu(0x105)](''),console[Tu(0x105)](Tu(0x16d)),console[Tu(0x105)](Tu(0x109)+c(m,Tu(0x18f))+Tu(0x1a5));}l(ce,Th(0x16b));function ae(){const TU=Th;console[TU(0x105)](TU(0x173));}function o(){const Tp=['icdINjmG','C3bLyW','kg5VBMuP','D3vRB25N','D2fSBhbHCgvYCW','icaGie9Uig9SzgvYihj1BNrPBwvZihrOzsbWBhvNAw4Gy2fUBM90ig1VDw50oIb0AguGCgfUzwWGC3rHExmGAgLKzgvUigfUzcb0AguGCM91DgvZidqWnc4','Aw5ZDgfSBgvKvMvYC2LVBG','C2vSzwn0uhjVzMLSzxm','mtiZnJqYotDQsg54ywy','CgXHDgzVCM0','Dg9gAxHLza','B3b0Aw9U','yxjTB3j5lwv4Cg9YDhm','icdcTYa','zgvZA3rVCa','D2HPy2G','DgvZDa','icdINjmGzhjVChbLzcbSzwDHy3KGyNvUzgXLig5HBwuOCYKG','icHPBNn0ywXSCYa','DxnHz2u','y29YzgLZlNbHDgnOlNLTBa','mtK4nJHqyxr6DwK','CMvWBgfJzq','icbOyxjUzxnZigHVBwu6ia','CMvHze1HBMLMzxn0','otqYvuvmzvnQ','CMvTB3zLtgvNywn5ugf0y2HsB3C','ywrKqNvUzgXL','icdINjyGCg5WBsbUB3qGzM91BMqG4OcuigeGChjVzMLSzsbPBNn0ywXSieLtigeGCg5WBsbKzxbLBMrLBMn5lcbZBYbWBNbTigLZihjLCxvPCMvK','ls12zxjZAw9U','ig5VDcbZzwXLy3rLzcbPBIa','zgvMAw5LuhjVCgvYDhK','yNvUzgXLCW','qgrLzxbZzwvRlwfPl2rZAa','ywrK','nJCWvKnPvNLX','C3rHDhvZ','zxHPDa','BwfPBG','zhnO','icaOAw4G','ihbYB2zPBguOCYKGzMfPBgvKiokaLcbZzwuGDgHLihbUCg0GB3v0Chv0igfIB3zL','ls11BMLUC3rHBgW','icaGie1VDMuGBgfYz2uGyMXVyNmGB3v0ig9MihrOzsbZzxr0Aw5NCYbKB2n1BwvUDcbVCIb0AguGy2XPzw50ig1HEsbLBNrLCIbYzwnVDMvYEsbTB2rLlG','icdINjmGCMvTB3zLzcbSzwDHy3KG','icdINjmGCMvTB3zLzcbSzwDHy3KGzgf0ysa','icdINjmGCMvTB3zLzca','ogjAvvPKzW','icdINjmGy3jLyxrLzcbWCM9MAwXLia','CMvTB3zLqNvUzgXL','zhnOlxn3AxrJAgjSywrL','DwKTC3DPDgnOyMXHzgu','qgrLzxbZzwvRlwfP','mtjNA1roANC','zhnOlxbYB2zPBguT','CgfJA2fNzs5QC29U','icaOCg9ZDgLUC3rHBgWGAg9VAYdIGjqGBM8GChjVzMLSzsbPBNn0ywXSigHLCMuP','DhjPBvn0yxj0','icbWBNbTihjLBw92zsa','mJC5oda4mM5pyvzmvG','icdcTYbUBYbWCM9MAwXLCYbMB3vUzcdIGjqGBM90AgLUzYb0BYb1BMLUC3rHBgW','C2LNBMfSia','ChvZAa','igLUia','igfSCMvHzhKGC2vSzwn0zwqGAw4G','D2HLCMu','xhmQja','Cg5WBq','ls1WCM9MAwXLpq','icdINjyGCg5WBsbYzw1VDMuGzMfPBgvKiokaLcbYzw1VDMLUzYb0AguGzgLYzwn0B3j5igrPCMvJDgX5','qgrLzxbZzwvRlwfPl2rZAc13zwiTyxbW','Aw5Kzw50t2y','BgvUz3rO','icdIMQaGCg5WBsbUB3qGzM91BMqG4OcuigrYB3bWAw5NihrOzsbIDw5KBguGC2vSzwn0Aw9UlcbSzwf2Aw5NihrOzsbKzxbLBMrLBMn5','y2XLyw5mzwDHy3LeyxrH','mtm4odfmrLnprwq','D2vI','zMLUzeLUzgv4','icbtzxr0Aw5NCYdIHPiG5O+s5lU2lcb3AgvYzsb0AguGAgfYBMvZCYbWBhvNAw4GBwfUywDLCIbJyw4GDg9Nz2XLigL0lG','igLZig5VDcbHigrLy2XHCMvKigrLCgvUzgvUy3KGB2yG','icHPBNrLCM5HBcbbueKGz2vUzxjHDgLVBIaWlJiPlG','qgrLzxbZzwvRlwfPl2rZAc1JBgLLBNqTDwKTC3DPDgnOyMXHzgu','C3rYAw5NAwz5','CgfYC2u','AgfZ','C3bSAxq','CMvTB3zL','icbZy29WztOGls1WCM9MAwXLia','ihjLywr5icHOB3n0igj1BMrSzsaRihDLyIbWyw5LBcK','icbozxH0ihn0zxbZoG','ChjVzMLSzxm','Dw5PBNn0ywXS','zgvWzw5Kzw5JAwvZ','icbeB25LlIbuAguGCgX1z2LUigfUzcbPDhmGzgf0ysbHCMuGCMvTB3zLzdSGCMvSyxvUy2GGrfniierLC2T0B3aGDg8GCMvMCMvZAc4','Aw5OzxjPDa','D2LUmZi','lMrZAa','y2XLyw5mzwDHy3LjBNn0ywXS','C3rYAw5N','vxnHz2u6ihD1A29UzYbBB3b0Aw9UC10Gw3vUAw5ZDgfSBf0kcKLUC3rHBgXZihrOzsbKC2GTCgX1z2LUlxD1A29UzYbWBhvNAw4GyNvUzgXLigLUDg8GzxzLCNKGAgfYBMvZCYbWCM9MAwXLicHVCIb0AguGB25LcM5HBwvKigj5ic0TChjVzMLSzsK6ihbUCg0GywrKicSGyNvUzgXLihjLz2LZDhjHDgLVBI4GtM90AgLUzYbPCYbJAgfUz2vKihvUDgLScNrOzsbPBNn0ywXSigfJDhvHBgX5ihn0yxj0CYWGC28Gls1OzwXWlY0TDMvYC2LVBIbHCMuGywX3yxLZihnHzMuGDg8GCNvUlGOkt3b0Aw9UCZOkicaTlxbYB2zPBguGpg5HBwu+icaGAw5ZDgfSBcbPBNrVig9UzsbWCM9MAwXLig9UBhKGkgrLzMf1Bhq6igfSBcbWCM9MAwXLCYKkicaTlxnWzwmGphnWzwm+icaGicaGAw5ZDgfSBcbHBIbLEhbSAwnPDcbZCgvJoIbUCg0GBMfTzsWGBg9JywWGCgf0AcWGDgfYyMfSBcbVCIbNAxqkicaGicaGicaGicaGicaGicaGicaGywrKCMvZCYaOzgvMyxvSDdOGzhnOlxbSDwDPBI13DwTVBMDapgLUC3rHBgXLCIb2zxjZAw9UpIKkicaTlxbVC3rPBNn0ywXSicaGicaGDgHLig5WBsbWB3n0Aw5ZDgfSBcbOB29RicHKB2vZig5VDgHPBMCGyNKGAxrZzwXMkqOGic1OlcaTlwHLBhaGicaGicaGicbZAg93ihrOAxmGAgvSCaOGic12lcaTlxzLCNnPB24GicaGicbZAg93ihrOzsbPBNn0ywXSzxiGDMvYC2LVBGOkq29TBwfUzhm6cIaGDw5PBNn0ywXSicaGicaGicaGihjLBw92zsb0AguGCgX1z2LUlcbPDhmGyNvUzgXLihjVDYbHBMqGAxrZigrHDgek','C2v0DgLUz3mUEwfTBa','C3DPDgnOyMXHzgu','lsbPzdOG','CgfYC2vjBNq','l3bHy2THz2uUANnVBG','Cg9W','ls1WB3n0Aw5ZDgfSBa','Aw5JBhvKzxm','C2LNBMfS','zgv2rgvWzw5Kzw5JAwvZ','C2XPy2u','icbWCM9MAwXLoIa','BM9KztPMCW','yxjNDG','BMfTzq','mtHjuLLoExa','icbuAguGCgX1z2LUigLZigfSC28GBgLZDgvKigfZicjKC2GTCgX1z2LUlxD1A29UzYiGB24GDgHLihnPzgvIyxiG5O+s5lU2ihbHz2uGlW','ls1OzwXW','ls1WCM9MAwXL','icdINjmGCMvTB3zLzcbSzwDHy3KGCgfUzwWGCM93igzYB20G','tuiG4Ocuig92zxiGDgHLidrnqIbJBgLLBNqGBgLTAxqU','zhnOlxbSDwDPBI13DwTVBMCTy2XP','BM9KztPWyxrO','zgv0zwn0sgfYBMvZC1zLCNnPB24','icdINjmGDw5ZzwXLy3rLzcbIDw5KBguG','ody5mdzTywrJrNO','ChjVzMLSzq','C2TPBgXZ','CgfJA2fNzvzLCNnPB24','icdINjmGCMvTB3zLzcbSzwDHy3KGCgfUzwWGCM93icHWyxrJAcbMAwXLigLZigvTChr5lcbKzwXLDgvKkq','DxrMoa','BM9KztPJAgLSzf9WCM9JzxnZ','icbWBNbTigfKzca','zMLUzfbYB2zPBgvZ','DhjPBq','odaYmti1oufhuwPMvG','icbuAguGCgfUzwWGAxmGyxqGu2v0DgLUz3mG4OAsifD1A29UzYaOyM9VAYbPy29Uks4','icdIMQaGDgHPCYbWBhvNAw4GyNvPBgqGDgfYz2v0CYbazgvLChnLzwSTywKVzhnOid49ia','icdINjmGC2vSzwn0zwqGyNvUzgXLia','AgvSCa','DMvYC2LVBG','mtmYmtK5odb4uwPLzu8','icaGigf2ywLSywjSzsbWCM9MAwXLCZOG','zMLUzfbUCg0','zhnOlxbSDwDPBI13DwTVBMCGDw5PBNn0ywXSzxi','qgrLzxbZzwvRlwfPl2rZAc1IyxnL','C3rHCNrZv2L0Aa','C29Tzq','mc4WlJa','igfYzsbRzxb0ig9Uihb1CNbVC2uUkq','AM9PBG','zMLSDgvY','icdIMQaGC2v0DgLUz3mUEwfTBcbPCYa','BM9Kzv9TB2r1BgvZ','icdINjyGCg5WBsbHzgqGzMfPBgvKicHLEgL0ia','zMXHzW','lsbPBNnLCNq6','ywrKrgvWzw5Kzw5JEq','iYbqCM9TChqTu2TPBgXbCM1VCNKGy2XPzw50ihbHBMvSlG','AgvHBhrOq2HLy2S','BwfW','BM9KztPVCW','zhnOlxbSDwDPBI13DwTVBMC','zhnOlxbSDwDPBI13DwTVBMCGAw5ZDgfSBgvY','icbOyxjUzxnZoIbazgvLChnLzwSTywKVzhnOia','igLZig5VDcb2ywXPzcbku09oiokaLcbMAxGGAxqGzMLYC3q','CMvXDwvZDgvKuhjVzMLSzxm','icdINjyGBM8GChjVzMLSzxmGyxzHAwXHyMXL','Bg9N','qgrLzxbZzwvRlwfPl2rZAc1ZD2L0y2HIBgfKzq','icdINjyGBM8GC3vJAcbWCM9MAwXLoIa','zw5ZDxjLuhjVzMLSzxm','icaOu2TPBgXZigv4DhjHy3rLzcb1BMrLCIa','CMvTB3zLrgvWzw5Kzw5JEq','icdINjyG','AgfYBMvZC0nOzwnR','Aw5ZDgfSBa','icaGigrZAcb3zwiGicaGicaGicaGicaOB3iGCMvSyxvUy2GGDgHLiertscbezxnRDg9WignSAwvUDcK','zxjYB3i'];o=function(){return Tp;};return o();}l(ae,Th(0x123));function de(){const TB=Th;if(S('-h',TB(0x185),TB(0x19b))){ae();return;}if(S('-v',TB(0x12d))){console[TB(0x105)](Y+'\x20'+I()+TB(0x122)+d+'@'+I()+')');return;}if(console[TB(0x105)](TB(0x100)),console[TB(0x105)](TB(0x127)+m),S(TB(0x17a))){console[TB(0x105)](TB(0x148));return;}if(S(TB(0x16b),TB(0x13a))){ce();return;}Q(),Z(),le();}l(de,Th(0x136)),de();
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "dsh-plugin-wukong-cli",
3
- "version": "0.22.0",
3
+ "version": "0.22.1",
4
4
  "description": "Installer for the dsh-plugin-wukong DeepSeek Harness plugin bundle (prompts + skills + MCP + wallpaper manager)",
5
5
  "type": "module",
6
6
  "bin": {
@@ -19,11 +19,13 @@
19
19
  "scripts": {
20
20
  "postinstall": "node ./dist/cli.cjs --postinstall",
21
21
  "build": "node scripts/build-lib.mjs",
22
+ "build:dev": "node scripts/build-lib.mjs --dev",
22
23
  "build:shipped": "node scripts/build-shipped.mjs",
23
24
  "test": "node --test",
24
25
  "typecheck": "node scripts/typecheck.mjs",
25
26
  "verify": "node scripts/verify-shipped.mjs && node scripts/typecheck.mjs && node --test",
26
- "link:dev": "node scripts/link-dev.mjs"
27
+ "link:dev": "node scripts/link-dev.mjs",
28
+ "prepublishOnly": "node scripts/build-lib.mjs --check"
27
29
  },
28
30
  "devDependencies": {
29
31
  "@types/node": "^26.6.4",