jishushell 0.4.10 → 0.4.17

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 (100) hide show
  1. package/INSTALL-NOTICE +10 -12
  2. package/dist/cli/app.d.ts +3 -0
  3. package/dist/cli/app.js +156 -0
  4. package/dist/cli/app.js.map +1 -0
  5. package/dist/{doctor.d.ts → cli/doctor.d.ts} +6 -1
  6. package/dist/{doctor.js → cli/doctor.js} +343 -14
  7. package/dist/cli/doctor.js.map +1 -0
  8. package/dist/cli/helpers.d.ts +4 -0
  9. package/dist/cli/helpers.js +32 -0
  10. package/dist/cli/helpers.js.map +1 -0
  11. package/dist/cli/job.d.ts +3 -0
  12. package/dist/cli/job.js +260 -0
  13. package/dist/cli/job.js.map +1 -0
  14. package/dist/cli/llm.d.ts +24 -0
  15. package/dist/cli/llm.js +593 -0
  16. package/dist/cli/llm.js.map +1 -0
  17. package/dist/cli/openclaw.d.ts +12 -0
  18. package/dist/cli/openclaw.js +156 -0
  19. package/dist/cli/openclaw.js.map +1 -0
  20. package/dist/cli/panel.d.ts +25 -0
  21. package/dist/cli/panel.js +734 -0
  22. package/dist/cli/panel.js.map +1 -0
  23. package/dist/cli.js +67 -326
  24. package/dist/cli.js.map +1 -1
  25. package/dist/config.d.ts +1 -0
  26. package/dist/config.js +11 -4
  27. package/dist/config.js.map +1 -1
  28. package/dist/control.d.ts +13 -41
  29. package/dist/control.js +12 -1355
  30. package/dist/control.js.map +1 -1
  31. package/dist/routes/apps.d.ts +3 -0
  32. package/dist/routes/apps.js +99 -0
  33. package/dist/routes/apps.js.map +1 -0
  34. package/dist/routes/instances.js +12 -6
  35. package/dist/routes/instances.js.map +1 -1
  36. package/dist/routes/llm.d.ts +15 -0
  37. package/dist/routes/llm.js +246 -0
  38. package/dist/routes/llm.js.map +1 -0
  39. package/dist/routes/setup.js +29 -2
  40. package/dist/routes/setup.js.map +1 -1
  41. package/dist/routes/system.js +31 -6
  42. package/dist/routes/system.js.map +1 -1
  43. package/dist/server.js +40 -4
  44. package/dist/server.js.map +1 -1
  45. package/dist/services/app-compiler.d.ts +15 -0
  46. package/dist/services/app-compiler.js +169 -0
  47. package/dist/services/app-compiler.js.map +1 -0
  48. package/dist/services/app-manager.d.ts +17 -0
  49. package/dist/services/app-manager.js +168 -0
  50. package/dist/services/app-manager.js.map +1 -0
  51. package/dist/services/instance-manager.d.ts +51 -3
  52. package/dist/services/instance-manager.js +233 -30
  53. package/dist/services/instance-manager.js.map +1 -1
  54. package/dist/services/job-manager.d.ts +22 -0
  55. package/dist/services/job-manager.js +102 -0
  56. package/dist/services/job-manager.js.map +1 -0
  57. package/dist/services/llm-proxy/adapters.js +5 -1
  58. package/dist/services/llm-proxy/adapters.js.map +1 -1
  59. package/dist/services/llm-proxy/index.d.ts +30 -0
  60. package/dist/services/llm-proxy/index.js +71 -1
  61. package/dist/services/llm-proxy/index.js.map +1 -1
  62. package/dist/services/llm-proxy/ssrf.js +1 -1
  63. package/dist/services/llm-proxy/ssrf.js.map +1 -1
  64. package/dist/services/nomad-manager.js +192 -29
  65. package/dist/services/nomad-manager.js.map +1 -1
  66. package/dist/services/panel-manager.d.ts +40 -0
  67. package/dist/services/panel-manager.js +346 -0
  68. package/dist/services/panel-manager.js.map +1 -0
  69. package/dist/services/process-manager.js +20 -7
  70. package/dist/services/process-manager.js.map +1 -1
  71. package/dist/services/setup-manager.js +316 -31
  72. package/dist/services/setup-manager.js.map +1 -1
  73. package/dist/services/update-manager.d.ts +47 -0
  74. package/dist/services/update-manager.js +305 -0
  75. package/dist/services/update-manager.js.map +1 -0
  76. package/dist/types.d.ts +62 -0
  77. package/install/jishu-install.sh +279 -37
  78. package/install/post-install.sh +64 -5
  79. package/package.json +6 -2
  80. package/public/assets/Dashboard-CQsp1Mr9.js +1 -0
  81. package/public/assets/InitPassword-BEC8SE4A.js +1 -0
  82. package/public/assets/InstanceDetail-B5wTgNEg.js +17 -0
  83. package/public/assets/{Login-CUoEZOWR.js → Login-D1Bt-Lyk.js} +1 -1
  84. package/public/assets/NewInstance-GQzm3K9D.js +1 -0
  85. package/public/assets/Settings-ByjGlqhP.js +1 -0
  86. package/public/assets/Setup-cMF21Y-8.js +1 -0
  87. package/public/assets/index-B6qQP4mH.css +1 -0
  88. package/public/assets/index-BuTQtuNy.js +16 -0
  89. package/public/assets/{providers-lBSOjUWy.js → providers-V-vwrExZ.js} +1 -1
  90. package/public/index.html +2 -2
  91. package/dist/doctor.js.map +0 -1
  92. package/install/jishu-install-china.sh +0 -3092
  93. package/public/assets/Dashboard-DhsrzJ4F.js +0 -1
  94. package/public/assets/InitPassword-BjubiVdd.js +0 -1
  95. package/public/assets/InstanceDetail-DMcywsof.js +0 -17
  96. package/public/assets/NewInstance-Bk0G4EiJ.js +0 -1
  97. package/public/assets/Settings-D5tHL_h5.js +0 -1
  98. package/public/assets/Setup-4t6E3Rut.js +0 -1
  99. package/public/assets/index-BJ47MWpF.css +0 -1
  100. package/public/assets/index-DbX85irc.js +0 -16
@@ -0,0 +1 @@
1
+ {"version":3,"file":"panel.js","sourceRoot":"","sources":["../../src/cli/panel.ts"],"names":[],"mappings":"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"}
package/dist/cli.js CHANGED
@@ -16,12 +16,11 @@ if (process.platform === "darwin") {
16
16
  if (existsSync(sock))
17
17
  process.env.DOCKER_HOST = `unix://${sock}`;
18
18
  }
19
- import { createServer } from "./server.js";
20
- import { runInstall, parseInstallArgs } from "./install.js";
21
- import { startPanel, stopPanel, stopWithJobs, restartPanel, runDoctor, runOnboard, showStatus, resetAll, checkUpdate, runUpdate } from "./control.js";
22
- const JISHUSHELL_HOME = process.env.JISHUSHELL_HOME || join(homedir(), ".jishushell");
23
- const NOMAD_BIN = join(JISHUSHELL_HOME, "bin", "nomad");
24
- const PANEL_PORT = 8090;
19
+ const [subcommand, ...rest] = process.argv.slice(2);
20
+ function cliError(err) {
21
+ console.error(err.message || err);
22
+ process.exit(1);
23
+ }
25
24
  function openBrowser(url) {
26
25
  const platform = process.platform;
27
26
  const cmd = platform === "darwin" ? `open "${url}"`
@@ -29,8 +28,7 @@ function openBrowser(url) {
29
28
  : `xdg-open "${url}"`;
30
29
  exec(cmd, () => { });
31
30
  }
32
- const [subcommand, ...rest] = process.argv.slice(2);
33
- // ── HTTP thin-client helpers for backup commands ───────────────────────────
31
+ // ── HTTP thin-client helpers (used by backup/restore/export/import commands) ──
34
32
  async function apiCall(path, opts = {}) {
35
33
  const port = process.env.JISHUSHELL_PORT || "8090";
36
34
  const url = `http://127.0.0.1:${port}/api${path}`;
@@ -56,212 +54,35 @@ async function waitForJob(jobId) {
56
54
  await new Promise(r => setTimeout(r, 1500));
57
55
  }
58
56
  }
59
- // ── Helper to parse --port from remaining args ─────────────────────────────
60
- function parsePort(args) {
61
- for (let i = 0; i < args.length; i++) {
62
- if (args[i] === "--port" && args[i + 1]) {
63
- const p = parseInt(args[i + 1], 10);
64
- if (!isNaN(p) && p > 0 && p < 65536)
65
- return p;
66
- }
67
- }
68
- return undefined;
69
- }
70
- // ── install subcommand ─────────────────────────────────────────────────────
71
- if (subcommand === "install") {
72
- const opts = parseInstallArgs(rest);
73
- runInstall(opts).catch((err) => {
74
- console.error("Installation failed:", err);
75
- process.exit(1);
76
- });
77
- // runInstall is async and calls process.exit() itself
78
- // ── start ──────────────────────────────────────────────────────────────────
79
- }
80
- else if (subcommand === "start") {
81
- startPanel(parsePort(rest)).then(() => process.exit(0)).catch((err) => {
82
- console.error("start failed:", err.message);
83
- process.exit(1);
84
- });
85
- // ── stop ───────────────────────────────────────────────────────────────────
86
- }
87
- else if (subcommand === "stop") {
88
- // --jobs: also stop (but not purge) all Nomad jobs before stopping the panel
89
- const withJobs = rest.includes("--jobs") || rest.includes("-j");
90
- const stopFn = withJobs ? stopWithJobs : stopPanel;
91
- stopFn().then(() => process.exit(0)).catch((err) => {
92
- console.error("stop failed:", err.message);
93
- process.exit(1);
94
- });
95
- // ── restart ────────────────────────────────────────────────────────────────
96
- }
97
- else if (subcommand === "restart") {
98
- restartPanel(parsePort(rest)).then(() => process.exit(0)).catch((err) => {
99
- console.error("restart failed:", err.message);
100
- process.exit(1);
101
- });
102
- // ── status ─────────────────────────────────────────────────────────────────
103
- }
104
- else if (subcommand === "status") {
105
- showStatus().then(() => process.exit(0)).catch((err) => {
106
- console.error("status failed:", err.message);
107
- process.exit(1);
108
- });
109
- // ── doctor ─────────────────────────────────────────────────────────────────
57
+ // ── Subcommand dispatch ────────────────────────────────────────────────────
58
+ if (["install", "uninstall", "start", "stop", "restart", "status", "serve", "onboard", "reset", "update-check", "update", "config"].includes(subcommand)) {
59
+ const { run } = await import("./cli/panel.js");
60
+ run([subcommand, ...rest]).catch(cliError);
110
61
  }
111
62
  else if (subcommand === "doctor") {
112
- const fix = rest.includes("--fix") || rest.includes("-f");
113
- runDoctor({ fix }).then((ok) => process.exit(ok ? 0 : 1)).catch((err) => {
114
- console.error("doctor failed:", err.message);
115
- process.exit(1);
116
- });
117
- // ── onboard ────────────────────────────────────────────────────────────────
118
- }
119
- else if (subcommand === "onboard") {
120
- const force = rest.includes("--force") || rest.includes("-f");
121
- runOnboard({ force }).then(() => process.exit(0)).catch((err) => {
122
- console.error("onboard failed:", err.message);
123
- process.exit(1);
124
- });
125
- // ── reset ──────────────────────────────────────────────────────────────────
126
- }
127
- else if (subcommand === "reset") {
128
- const yes = rest.includes("--yes") || rest.includes("-y");
129
- resetAll({ yes }).then(() => process.exit(0)).catch((err) => {
130
- console.error("reset failed:", err.message);
131
- process.exit(1);
132
- });
133
- // ── update-check ───────────────────────────────────────────────────────────
134
- }
135
- else if (subcommand === "update-check") {
136
- checkUpdate().then((info) => {
137
- console.log(JSON.stringify(info));
138
- process.exit(info.hasUpdate ? 0 : 1);
139
- }).catch((err) => {
140
- console.error("update-check failed:", err.message);
141
- process.exit(2);
142
- });
143
- // ── update-run ─────────────────────────────────────────────────────────────
63
+ const { run } = await import("./cli/doctor.js");
64
+ run(rest).catch(cliError);
144
65
  }
145
- else if (subcommand === "update") {
146
- runUpdate().then(() => process.exit(0)).catch((err) => {
147
- console.error("update-run failed:", err.message);
148
- process.exit(1);
149
- });
150
- // ── pairing: approve / list DM pairing requests inside running containers ──
66
+ else if (subcommand === "openclaw") {
67
+ const { run } = await import("./cli/openclaw.js");
68
+ run(rest).catch(cliError);
151
69
  }
152
70
  else if (subcommand === "pairing") {
153
- const action = rest[0];
154
- // Parse --instance <id> flag
155
- let instanceId;
156
- const instIdx = rest.indexOf("--instance");
157
- if (instIdx !== -1 && rest[instIdx + 1])
158
- instanceId = rest[instIdx + 1];
159
- if (action === "list") {
160
- const { runPairingList } = await import("./control.js");
161
- runPairingList({ instanceId }).then((ok) => process.exit(ok ? 0 : 1)).catch((err) => {
162
- console.error("pairing list failed:", err.message);
163
- process.exit(1);
164
- });
165
- }
166
- else if (action === "approve") {
167
- // args after "approve": [channel, code] or [code] (single-arg form)
168
- const actionArgs = rest.slice(1).filter((a) => !a.startsWith("--") && a !== instanceId);
169
- let channel;
170
- let code;
171
- if (actionArgs.length >= 2) {
172
- [channel, code] = actionArgs;
173
- }
174
- else if (actionArgs.length === 1) {
175
- channel = "feishu";
176
- code = actionArgs[0];
177
- }
178
- else {
179
- console.error("Usage: jishushell pairing approve <channel> <code> [--instance <id>]");
180
- process.exit(1);
181
- }
182
- const notify = rest.includes("--notify");
183
- const { runPairingApprove } = await import("./control.js");
184
- runPairingApprove({ instanceId, channel, code, notify }).then((ok) => process.exit(ok ? 0 : 1)).catch((err) => {
185
- console.error("pairing approve failed:", err.message);
186
- process.exit(1);
187
- });
188
- }
189
- else {
190
- console.log(`
191
- Usage: jishushell pairing <command> [options]
192
-
193
- Commands:
194
- list 列出等待审批的配对请求
195
- approve <channel> <code> 审批配对码(例: feishu LVU7PNYK)
196
- approve <code> 默认 channel=feishu 简写形式
197
-
198
- Options:
199
- --instance <id> 指定实例 ID(只有一个实例时可省略)
200
- --notify 审批后通知申请方
201
-
202
- Examples:
203
- jishushell pairing list
204
- jishushell pairing approve feishu LVU7PNYK
205
- jishushell pairing approve LVU7PNYK
206
- jishushell pairing approve feishu LVU7PNYK --instance my-instance
207
- `);
208
- process.exit(1);
209
- }
210
- // ── serve: foreground server (used by systemd/launchd ExecStart) ──────────
71
+ // Backward-compat alias: jishushell pairing ... → jishushell openclaw pairing ...
72
+ const { run } = await import("./cli/openclaw.js");
73
+ run(["pairing", ...rest]).catch(cliError);
211
74
  }
212
- else if (subcommand === "serve") {
213
- const args = rest;
214
- let port = PANEL_PORT;
215
- let host = "0.0.0.0";
216
- for (let i = 0; i < args.length; i++) {
217
- if (args[i] === "--port" && args[i + 1]) {
218
- const parsed = parseInt(args[i + 1], 10);
219
- if (isNaN(parsed) || parsed < 1 || parsed > 65535) {
220
- console.error(`Invalid port: ${args[i + 1]}. Must be 1-65535.`);
221
- process.exit(1);
222
- }
223
- port = parsed;
224
- i++;
225
- }
226
- else if (args[i] === "--host" && args[i + 1]) {
227
- host = args[i + 1];
228
- i++;
229
- }
230
- }
231
- createServer({ port, host }).catch((err) => {
232
- console.error("serve failed:", err.message);
233
- process.exit(1);
234
- });
235
- // ── uninstall ─────────────────────────────────────────────────────────────
75
+ else if (subcommand === "job") {
76
+ const { run } = await import("./cli/job.js");
77
+ run(rest).catch(cliError);
236
78
  }
237
- else if (subcommand === "uninstall") {
238
- const yes = rest.includes("--yes") || rest.includes("-y");
239
- const { spawnSync } = await import("child_process");
240
- const uninstallSh = join(JISHUSHELL_HOME, "install", "post-uninstall.sh");
241
- if (!existsSync(uninstallSh)) {
242
- console.error(`Uninstall script not found: ${uninstallSh}`);
243
- console.error("Please run: sudo bash ~/.jishushell/install/jishu-uninstall.sh --data --yes");
244
- process.exit(1);
245
- }
246
- if (!yes) {
247
- const { createInterface } = await import("readline");
248
- const rl = createInterface({ input: process.stdin, output: process.stdout });
249
- await new Promise((resolve) => {
250
- rl.question("This will stop all services, remove auto-start and delete ~/.jishushell. Continue? [y/N] ", (ans) => {
251
- rl.close();
252
- if (ans.toLowerCase() !== "y") {
253
- console.log("Cancelled.");
254
- process.exit(0);
255
- }
256
- resolve();
257
- });
258
- });
259
- }
260
- // Step 1: stop services and remove ~/.jishushell via the backed-up script
261
- const cleanResult = spawnSync("bash", [uninstallSh], { stdio: "inherit" });
262
- // Step 2: remove the npm global package (now ~/.jishushell is already gone)
263
- const npmResult = spawnSync("npm", ["uninstall", "-g", "jishushell"], { stdio: "inherit" });
264
- process.exit((cleanResult.status ?? 0) || (npmResult.status ?? 0));
79
+ else if (subcommand === "app") {
80
+ const { run } = await import("./cli/app.js");
81
+ run(rest).catch(cliError);
82
+ }
83
+ else if (subcommand === "llm") {
84
+ const { run } = await import("./cli/llm.js");
85
+ run(rest).catch(cliError);
265
86
  // ── backup ─────────────────────────────────────────────────────────────────
266
87
  }
267
88
  else if (subcommand === "backup") {
@@ -305,8 +126,6 @@ else if (subcommand === "backup") {
305
126
  include_sessions: withSessions,
306
127
  only_config: onlyConfig,
307
128
  scope: stateOnly ? "state" : "home",
308
- // Only send include_workspace when the user explicitly opted out;
309
- // otherwise let the backend default (include=true unless only_config).
310
129
  ...(noWorkspace ? { include_workspace: false } : {}),
311
130
  },
312
131
  });
@@ -331,12 +150,10 @@ else if (subcommand === "backup") {
331
150
  // ── restore ────────────────────────────────────────────────────────────────
332
151
  }
333
152
  else if (subcommand === "restore") {
334
- // Handle restore --new (create new instance from backup, no existing instance ID required)
335
153
  if (rest.includes("--new")) {
336
154
  const fromIdx = rest.indexOf("--from");
337
155
  const idxNewId = rest.indexOf("--id");
338
156
  if (fromIdx !== -1) {
339
- // restore --new --from <src-id> --latest|--pick [--id <new-id>]
340
157
  const sourceId = rest[fromIdx + 1];
341
158
  if (!sourceId) {
342
159
  console.error("Usage: jishushell restore --new --from <src-id> --latest|--pick [--id <new-id>]");
@@ -377,10 +194,7 @@ else if (subcommand === "restore") {
377
194
  const newId = idxNewId !== -1 ? rest[idxNewId + 1] : `${sourceId}-copy`;
378
195
  console.log(`Creating new instance ${newId} from ${sourceId}/${backupFile}...`);
379
196
  try {
380
- const result = await apiCall("/instances/create-from-backup", {
381
- method: "POST",
382
- body: { source_id: sourceId, backup_file: backupFile, new_id: newId, new_name: newId },
383
- });
197
+ const result = await apiCall("/instances/create-from-backup", { method: "POST", body: { source_id: sourceId, backup_file: backupFile, new_id: newId, new_name: newId } });
384
198
  if (result.ok) {
385
199
  console.log(`Instance created: ${result.instance_id}`);
386
200
  if (result.warnings?.length)
@@ -388,8 +202,6 @@ else if (subcommand === "restore") {
388
202
  }
389
203
  else {
390
204
  console.error(`Create from backup failed: ${result.detail || "unknown error"}`);
391
- if (result.warnings?.length)
392
- result.warnings.forEach((w) => console.log(` Warning: ${w}`));
393
205
  process.exit(1);
394
206
  }
395
207
  }
@@ -399,13 +211,11 @@ else if (subcommand === "restore") {
399
211
  }
400
212
  }
401
213
  else {
402
- // restore --new <file> [--id <new-id>]
403
- const file = rest.find((a) => !a.startsWith("--") && a !== "restore");
214
+ const file = rest.find((a) => !a.startsWith("--"));
404
215
  if (!file) {
405
216
  console.error("Usage: jishushell restore --new <file> [--id <new-id>]");
406
217
  process.exit(1);
407
218
  }
408
- console.log("Note: restore --new from local file requires import flow.");
409
219
  console.log(`Use: jishushell import ${file}`);
410
220
  }
411
221
  process.exit(0);
@@ -464,9 +274,8 @@ else if (subcommand === "restore") {
464
274
  const r = job.result || {};
465
275
  if (r.ok) {
466
276
  console.log(`\nRestore complete.`);
467
- if (r.api_key_status === "lost") {
468
- console.log("Warning: archive was built on a different platform/arch; verify API Key configuration still matches this host.");
469
- }
277
+ if (r.api_key_status === "lost")
278
+ console.log("Warning: API Key may need re-verification on this host.");
470
279
  if (r.warnings?.length)
471
280
  r.warnings.forEach((w) => console.log(` Warning: ${w}`));
472
281
  }
@@ -493,10 +302,7 @@ else if (subcommand === "export") {
493
302
  const withSessions = rest.includes("--with-sessions");
494
303
  try {
495
304
  console.log(`Exporting ${id}...`);
496
- const result = await apiCall(`/instances/${id}/export`, {
497
- method: "POST",
498
- body: { include_sessions: withSessions },
499
- });
305
+ const result = await apiCall(`/instances/${id}/export`, { method: "POST", body: { include_sessions: withSessions } });
500
306
  if (result.job_id) {
501
307
  const job = await waitForJob(result.job_id);
502
308
  const r = job.result || {};
@@ -551,30 +357,21 @@ else if (subcommand === "import") {
551
357
  console.log(` Name: ${preview.manifest?.name || "unknown"}`);
552
358
  console.log(` Type: ${preview.manifest?.type || "unknown"}`);
553
359
  console.log(` Size: ${((preview.estimated_size || 0) / 1024 / 1024).toFixed(1)}MB`);
554
- if (preview.warnings?.length) {
360
+ if (preview.warnings?.length)
555
361
  for (const w of preview.warnings)
556
362
  console.log(` Warning: ${w}`);
557
- }
558
363
  const instanceId = customId || preview.manifest?.name?.toLowerCase().replace(/[^a-z0-9]+/g, "-").replace(/^-|-$/g, "").slice(0, 63) || `import-${Date.now()}`;
559
364
  const instanceName = customName || preview.manifest?.name || instanceId;
560
365
  console.log(`Creating instance ${instanceId}...`);
561
- const result = await apiCall("/instances/import", {
562
- method: "POST",
563
- body: { temp_id, id: instanceId, name: instanceName },
564
- });
366
+ const result = await apiCall("/instances/import", { method: "POST", body: { temp_id, id: instanceId, name: instanceName } });
565
367
  if (result.ok) {
566
368
  console.log(`Instance created: ${result.instance_id}`);
567
- if (result.warnings?.length) {
369
+ if (result.warnings?.length)
568
370
  for (const w of result.warnings)
569
371
  console.log(` Warning: ${w}`);
570
- }
571
372
  }
572
373
  else {
573
374
  console.error(`Import failed: ${result.detail || "unknown error"}`);
574
- if (result.warnings?.length) {
575
- for (const w of result.warnings)
576
- console.log(` Warning: ${w}`);
577
- }
578
375
  process.exit(1);
579
376
  }
580
377
  }
@@ -596,18 +393,7 @@ else if (subcommand === "clone") {
596
393
  const noMemory = rest.includes("--no-memory");
597
394
  try {
598
395
  console.log(`Cloning ${src} to ${newId}...`);
599
- const result = await apiCall("/instances", {
600
- method: "POST",
601
- body: {
602
- id: newId,
603
- name: newId,
604
- clone_from: src,
605
- clone_options: {
606
- include_sessions: withSessions,
607
- include_memory: !noMemory,
608
- },
609
- },
610
- });
396
+ const result = await apiCall("/instances", { method: "POST", body: { id: newId, name: newId, clone_from: src, clone_options: { include_sessions: withSessions, include_memory: !noMemory } } });
611
397
  console.log(`Clone created: ${result.id || newId}`);
612
398
  }
613
399
  catch (e) {
@@ -624,26 +410,20 @@ else if (subcommand === "backups") {
624
410
  try {
625
411
  if (id) {
626
412
  const backups = await apiCall(`/instances/${id}/backups`);
627
- if (!backups.length) {
413
+ if (!backups.length)
628
414
  console.log("No backups.");
629
- }
630
- else {
631
- backups.forEach((b, i) => {
632
- console.log(` ${i + 1}. [${b.type}] ${new Date(b.created_at).toLocaleString()} ${(b.size / 1024 / 1024).toFixed(1)}MB ${b.filename}`);
633
- });
634
- }
415
+ else
416
+ backups.forEach((b, i) => console.log(` ${i + 1}. [${b.type}] ${new Date(b.created_at).toLocaleString()} ${(b.size / 1024 / 1024).toFixed(1)}MB ${b.filename}`));
635
417
  }
636
418
  else {
637
419
  const orphans = await apiCall("/backups/orphaned");
638
420
  if (orphans.length) {
639
421
  console.log("Orphaned backups:");
640
- for (const o of orphans) {
422
+ for (const o of orphans)
641
423
  console.log(` ${o.instance_id}: ${o.backups?.length || 0} files`);
642
- }
643
424
  }
644
- else {
425
+ else
645
426
  console.log("No orphaned backups.");
646
- }
647
427
  }
648
428
  }
649
429
  catch (e) {
@@ -660,9 +440,8 @@ else if (subcommand === "backups") {
660
440
  }
661
441
  const force = rest.includes("--force");
662
442
  console.log(`Found ${orphans.length} orphaned backup(s):`);
663
- for (const o of orphans) {
443
+ for (const o of orphans)
664
444
  console.log(` ${o.instance_id}: ${o.backups?.length || 0} files`);
665
- }
666
445
  if (!force) {
667
446
  const readline = await import("readline");
668
447
  const rl = readline.createInterface({ input: process.stdin, output: process.stdout });
@@ -674,9 +453,8 @@ else if (subcommand === "backups") {
674
453
  }
675
454
  }
676
455
  for (const o of orphans) {
677
- for (const b of o.backups || []) {
456
+ for (const b of o.backups || [])
678
457
  await apiCall(`/backups/orphaned/${encodeURIComponent(o.instance_id)}/${encodeURIComponent(b.filename)}`, { method: "DELETE" });
679
- }
680
458
  console.log(` Cleaned: ${o.instance_id}`);
681
459
  }
682
460
  console.log("Done.");
@@ -725,79 +503,42 @@ else if (subcommand === "auto-backup") {
725
503
  process.exit(1);
726
504
  }
727
505
  process.exit(0);
728
- // ── help ───────────────────────────────────────────────────────────────────
729
506
  }
730
507
  else if (!subcommand || subcommand === "help" || subcommand === "--help" || subcommand === "-h") {
508
+ const [{ brief: panelBrief }, { brief: doctorBrief }, { brief: openclawBrief }, { brief: jobBrief }, { brief: appBrief }, { brief: llmBrief },] = await Promise.all([
509
+ import("./cli/panel.js"),
510
+ import("./cli/doctor.js"),
511
+ import("./cli/openclaw.js"),
512
+ import("./cli/job.js"),
513
+ import("./cli/app.js"),
514
+ import("./cli/llm.js"),
515
+ ]);
731
516
  console.log(`
732
517
  JishuShell — OpenClaw 实例管理面板
733
518
 
734
519
  Usage:
735
- jishushell 前台启动面板服务器
520
+ jishushell serve [--port N] 前台启动面板服务器(默认端口 8090)
736
521
  jishushell <command> [options]
737
522
 
738
523
  Commands:
739
- status 显示各模块运行状态(面板、Docker、Nomad 及所有 Job)
740
- serve [--port N] [--host H] 前台启动面板服务器(供 systemd/launchd 使用)
741
- start [--port N] 在后台启动面板
742
- stop [--jobs] 停止面板;加 --jobs 同时停止所有 Nomad Job
743
- restart [--port N] 重启面板
744
- doctor 检查所有组件健康状态
745
- doctor --fix 检查并尝试自动修复问题
746
- onboard [--force] 首次引导:设置管理员密码
747
- reset [--yes] 重置配置与所有 Nomad Job(保留实例数据目录)
748
- uninstall [--yes] 停止服务、删除 ~/.jishushell 并卸载 npm 包
749
- update-check 检查是否有新版本(0=有新版本,1=已是最新)
750
- update 安装最新版本并重启面板
751
- install [options] 安装依赖并配置 JishuShell
752
- llm list 列出已配置的 LLM provider
753
- llm add <name> <url> <key> 新增 LLM provider
754
- llm update <name> <url> <key> 更新 LLM provider
755
- llm delete <name> 删除 LLM provider
756
- llm set-default <name> 设置默认 LLM provider
757
- llm help LLM 子命令帮助
758
- job list 列出所有实例及运行状态
759
- job status <id> 查看实例详细状态
760
- job start/stop/restart <id> 启停实例
761
- job logs <id> 查看实例日志
762
- job exec <id> -- <cmd> 在容器内执行命令
763
- pairing list 列出等待审批的 DM 配对请求
764
- pairing approve <ch> <code> 审批飞书/Lark 配对码(在容器内执行)
765
- backup <id> [--with-sessions] [--only-config] 备份实例(加 --verify 校验完整性)
766
- backup verify <id> <filename> 校验备份文件完整性
767
- restore <id> <--latest|--pick|file> 从备份文件还原实例
768
- restore --new --from <src-id> --latest|--pick [--id <new-id>] 从备份创建新实例
769
- export <id> [--with-sessions] 导出实例为可迁移归档包
770
- import <file> [--id <id>] [--name <name>] 导入归档包为新实例
771
- clone <src-id> <new-id> [--with-sessions] [--no-memory] 克隆实例
772
- backups list [id] 列出备份(不指定 id 则列孤立备份)
773
- backups clean [--force] 清理孤立备份文件
524
+ ${panelBrief()}
525
+ ${doctorBrief()}
526
+ ${openclawBrief()}
527
+ ${jobBrief()}
528
+ ${appBrief()}
529
+ ${llmBrief()}
530
+ backup <id> [--with-sessions] 备份实例
531
+ restore <id> <--latest|--pick|file> 还原实例
532
+ export <id> 导出实例为归档包
533
+ import <file> [--id <id>] 导入归档包为新实例
534
+ clone <src-id> <new-id> 克隆实例
535
+ backups list [id] 列出备份文件
774
536
  auto-backup <id> enable|disable|status 管理定时自动备份
775
- help 显示此帮助信息
776
-
777
- Server options:
778
- --port <port> 监听端口(默认 8090 或 panel.json 中的值)
779
- --host <host> 监听地址(默认 0.0.0.0)
780
-
781
- Install options:
782
- --port <port> 面板端口(默认 8090)
783
- --yes, -y 跳过所有交互提示(非交互模式)
784
- --no-service 跳过 systemd/launchd 注册
785
- --skip-docker 跳过 Docker 安装
786
- --skip-nomad 跳过 Nomad 安装
787
- --skip-openclaw 跳过 OpenClaw 安装
788
- --force, -f 即使已配置也强制重新安装
789
- --dry-run, -n 预演,不实际执行任何变更
537
+ help 显示此帮助
790
538
 
791
- Examples:
792
- jishushell status # 查看当前所有组件状态
793
- jishushell start # 后台启动面板
794
- jishushell stop --jobs # 停止面板及所有实例 Job
795
- jishushell restart # 重启面板
796
- jishushell doctor --fix # 检查并自动修复
797
- jishushell reset --yes # 非交互式重置(CI 场景)
539
+ 运行 'jishushell <command> help' 查看详细用法。
798
540
  `);
799
541
  process.exit(0);
800
- // ── unknown command ────────────────────────────────────────────────────────
801
542
  }
802
543
  else {
803
544
  console.error(`Unknown command: ${subcommand}\nRun 'jishushell help' for usage.`);