ygl-trees 0.77.0 → 0.77.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
@@ -1,5 +1,9 @@
1
1
  # Changelog
2
2
 
3
+ ## 0.77.1(2026-10-17)DEP0190 hotfix
4
+ - 所有 shell:true 消除(resolvePm 的 where/version 检查改用无 shell 调用)
5
+ - plugin install/remove 零弃用警告
6
+
3
7
  ## 0.77.0(2026-10-17)plugin 安全加固 + DEP0190 消除
4
8
  - **P0 修复**:plugin install 坏路径不再被记录——存在性校验 + package.json name 校验(a2a 7aa5c871)
5
9
  - **P0 修复**:StartupError 时 plugin 命令走 degraded mode——坏插件不再砖死 home,plugin remove 自愈可用
@@ -3164,13 +3164,14 @@ function resolvePm(pm) {
3164
3164
  try {
3165
3165
  const where = (0, node_child_process.execFileSync)("where", [pm], {
3166
3166
  stdio: "pipe",
3167
- shell: true
3167
+ shell: false
3168
3168
  }).toString().split(/\r?\n/).filter(Boolean);
3169
3169
  for (const candidate of where) try {
3170
- (0, node_child_process.execFileSync)([q2(candidate), "--version"].join(" "), {
3171
- stdio: "pipe",
3172
- shell: true
3173
- });
3170
+ (0, node_child_process.execFileSync)("cmd", [
3171
+ "/c",
3172
+ candidate,
3173
+ "--version"
3174
+ ], { stdio: "pipe" });
3174
3175
  cachedPm = candidate;
3175
3176
  return candidate;
3176
3177
  } catch {}
@@ -3317,7 +3318,7 @@ function loadUserPlugins(home) {
3317
3318
  issues
3318
3319
  };
3319
3320
  }
3320
- var PROFILE_PKG, cachedPm, q2;
3321
+ var PROFILE_PKG, cachedPm;
3321
3322
  var init_plugins = require_rolldown_runtime.__esmMin((() => {
3322
3323
  PROFILE_PKG = () => ({
3323
3324
  name: "ygl-user-plugins",
@@ -3325,7 +3326,6 @@ var init_plugins = require_rolldown_runtime.__esmMin((() => {
3325
3326
  version: "0.0.0",
3326
3327
  description: "ygl-trees user plugin profile (spec R14 L3)"
3327
3328
  });
3328
- q2 = (s) => `"${String(s).replace(/["&|<>^]/g, "")}"`;
3329
3329
  }));
3330
3330
  //#endregion
3331
3331
  //#region apps/cli/src/startup-diagnostics.ts
@@ -182,10 +182,10 @@ function resolvePm(pm) {
182
182
  return cachedPm || pm;
183
183
  cachedPm = null;
184
184
  try {
185
- const where = (0, node_child_process_1.execFileSync)("where", [pm], { stdio: "pipe", shell: true }).toString().split(/\r?\n/).filter(Boolean);
185
+ const where = (0, node_child_process_1.execFileSync)("where", [pm], { stdio: "pipe", shell: false }).toString().split(/\r?\n/).filter(Boolean);
186
186
  for (const candidate of where) {
187
187
  try {
188
- (0, node_child_process_1.execFileSync)([q2(candidate), "--version"].join(" "), { stdio: "pipe", shell: true });
188
+ (0, node_child_process_1.execFileSync)("cmd", ["/c", candidate, "--version"], { stdio: "pipe" });
189
189
  cachedPm = candidate;
190
190
  return candidate;
191
191
  }
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "ygl-trees",
3
- "version": "0.77.0",
3
+ "version": "0.77.1",
4
4
  "description": "猿光 · 科技树 — database-centric CLI for research → production → knowledge reuse, built for AI agents.",
5
5
  "type": "commonjs",
6
6
  "main": "dist/apps/cli/index.js",
@@ -26,9 +26,9 @@
26
26
  "reflect-metadata": "^0.2.2",
27
27
  "typeorm": "^1.1.2",
28
28
  "@deepseek-ai/cordis": "~4.0.5-alpha.2",
29
- "@deepseek-ai/schemastery": "~3.18.5-alpha.2",
30
29
  "@deepseek-ai/cordis-plugin-timer": "~1.1.7-alpha.2",
31
- "@deepseek-ai/cosmokit": "~1.8.6-alpha.2"
30
+ "@deepseek-ai/cosmokit": "~1.8.6-alpha.2",
31
+ "@deepseek-ai/schemastery": "~3.18.5-alpha.2"
32
32
  },
33
33
  "devDependencies": {
34
34
  "@types/node": "^20.0.0",