@kira905/dsh-butler-panel 0.9.5 → 0.9.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +3 -3
- package/lib/butler-root.mjs +5 -1
- package/lib/client.js +21 -5
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
> npm i @kira905/dsh-butler-panel
|
|
18
18
|
> # 或者装进某个 profile 后重启 dsh,侧边栏底部会多一个「大管家」入口
|
|
19
19
|
> ```
|
|
20
|
-
>
|
|
20
|
+
> 装完**先设一个变量**告诉它你的大管家在哪(见下一节)——不设也能起来,但大部分卡片会显示「不可探测」。
|
|
21
21
|
|
|
22
22
|
> ### 它不附带什么(先看清楚,省得装完失望)
|
|
23
23
|
>
|
|
@@ -61,10 +61,10 @@ npm i -g @kira905/dsh-butler-engine
|
|
|
61
61
|
$env:DSH_WORKSPACE = '<你的工作区>'
|
|
62
62
|
```
|
|
63
63
|
|
|
64
|
-
|
|
64
|
+
**接不上会怎样**:面板不会崩。缺的那几段退化成「不可探测」,并在控制台留一行**告诉你怎么补**:
|
|
65
65
|
|
|
66
66
|
```
|
|
67
|
-
[butler-panel] 缺 store.mjs:装 npm i -g @kira905/dsh-butler-engine@^0.5.0,或设 BUTLER_ROOT
|
|
67
|
+
[butler-panel] 缺 store.mjs:装 npm i -g @kira905/dsh-butler-engine@^0.5.0,或设 BUTLER_ROOT=<你的大管家工具目录>,或设 DSH_WORKSPACE=<你的 DSH 工作区(tools/ 与 docs/ 所在那层)>
|
|
68
68
|
```
|
|
69
69
|
|
|
70
70
|
(那行里的版本号是读**装在盘上的包**得来的,不是写死的;包完全没装时就不带版本号。)
|
package/lib/butler-root.mjs
CHANGED
|
@@ -173,7 +173,11 @@ export function butlerLibHit(name) {
|
|
|
173
173
|
export function guidanceFor(name) {
|
|
174
174
|
const v = engineVersion()
|
|
175
175
|
const install = v ? `npm i -g ${ENGINE_PKG}@^${v}` : `npm i -g ${ENGINE_PKG}`
|
|
176
|
-
|
|
176
|
+
// 出路按 README 变量表的**顺位**给全:① 装可安装的包 ② 显式 BUTLER_ROOT ③ DSH_WORKSPACE(工作区根,
|
|
177
|
+
// 解析 `<工作区>/tools/dsh-butler/lib` 的第一顺位)。0.9.6 补 ③:原来只给前两条,用户把
|
|
178
|
+
// DSH_WORKSPACE 指错时,这条日志对着他"工作区"这件事一个字都没提。
|
|
179
|
+
return `缺 ${name}:装 ${install},或设 BUTLER_ROOT=<你的大管家工具目录>,`
|
|
180
|
+
+ `或设 DSH_WORKSPACE=<你的 DSH 工作区(tools/ 与 docs/ 所在那层)>`
|
|
177
181
|
}
|
|
178
182
|
|
|
179
183
|
function unavailableStub(name) {
|
package/lib/client.js
CHANGED
|
@@ -1209,11 +1209,27 @@ function makePanelUI(cfg) {
|
|
|
1209
1209
|
zone.appendChild(groupTitle("🛑 模块开关(熔断 · L2)"));
|
|
1210
1210
|
const rows = mm.modules ?? [];
|
|
1211
1211
|
if (!rows.length) {
|
|
1212
|
-
|
|
1213
|
-
|
|
1214
|
-
|
|
1215
|
-
|
|
1216
|
-
|
|
1212
|
+
// 【0.9.6 · 2026-11-09】归因必须**拆两句**:`Cannot find module …` ≠ `GET /modules 返回 404`。
|
|
1213
|
+
// 前者 = **工作区 / 大管家目录指错**(DSH_WORKSPACE 或 BUTLER_ROOT 没指到那棵树),
|
|
1214
|
+
// 后者才是"面板刚部署但 dsh 还没重启"。0.9.5 及以前把两种混成一句"面板刚部署还没重启"⇒
|
|
1215
|
+
// 接口其实回了 200、只是 body 里是 Cannot find module,照那句话去重启 = 白折腾一轮。
|
|
1216
|
+
// 兜底同理:只给"装 engine 包 + 设 BUTLER_ROOT"漏掉了 README 变量表里第一顺位的 DSH_WORKSPACE。
|
|
1217
|
+
const errText = String(mm.error ?? mm.reason ?? "未知");
|
|
1218
|
+
const is404 = /\b404\b/.test(errText) && !/Cannot find module/i.test(errText);
|
|
1219
|
+
// 实际去找的那个路径(Node 的 ERR_MODULE_NOT_FOUND 消息自带)—— 有就并排显示,没有就退成库文件名
|
|
1220
|
+
const missPath = (errText.match(/Cannot find module\s*['"]([^'"]+)['"]/i) ?? [])[1] ?? null;
|
|
1221
|
+
const lines = [["状态", "读取失败:" + errText]];
|
|
1222
|
+
if (is404) {
|
|
1223
|
+
lines.push(["常见原因", "面板刚部署但 dsh 还没重启(GET /modules 返回 404)→ 重启后本卡自动恢复"]);
|
|
1224
|
+
} else {
|
|
1225
|
+
lines.push(["常见原因", "找不到 " + (missPath ?? "大管家共享库(autonomy-modules.mjs)") + ":多为工作区或大管家目录指错"]);
|
|
1226
|
+
lines.push(["工作区", "DSH_WORKSPACE=<你的 DSH 工作区(tools/ 与 docs/ 所在那层)>"
|
|
1227
|
+
+ (missPath ? ",当前按此解析到 " + missPath : "")]);
|
|
1228
|
+
lines.push(["或", "BUTLER_ROOT=<大管家工具目录(即 <工作区>/tools/dsh-butler 那层)>"]);
|
|
1229
|
+
lines.push(["生效", "改完需重启 DSH 才生效"]);
|
|
1230
|
+
}
|
|
1231
|
+
lines.push(["兜底", "关/开也可用 CLI:node <大管家目录>/butler-autonomy-cli.mjs module list"]);
|
|
1232
|
+
zone.appendChild(healthCard("🛑 模块开关", "不可用", "h-gray", lines));
|
|
1217
1233
|
return zone;
|
|
1218
1234
|
}
|
|
1219
1235
|
const off = rows.filter((x) => x.enabled !== true);
|