jishushell 0.4.17 → 0.4.24-beta.2

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 (241) hide show
  1. package/Dockerfile.hermes-slim +193 -0
  2. package/apps/hermes-container.yaml +35 -0
  3. package/apps/ollama-binary.yaml +164 -0
  4. package/apps/ollama-cpu-container.yaml +37 -0
  5. package/apps/ollama-with-hollama-binary.yaml +159 -0
  6. package/apps/openclaw-binary.yaml +69 -0
  7. package/apps/openclaw-container.yaml +37 -0
  8. package/apps/openclaw-with-ollama-container.yaml +42 -0
  9. package/apps/openclaw-with-searxng-container.yaml +136 -0
  10. package/apps/openwebui-container.yaml +53 -0
  11. package/apps/playwright-container.yaml +120 -0
  12. package/apps/searxng-container.yaml +115 -0
  13. package/dist/auth.d.ts +1 -0
  14. package/dist/auth.js +15 -14
  15. package/dist/auth.js.map +1 -1
  16. package/dist/cli/app.d.ts +1 -0
  17. package/dist/cli/app.js +770 -52
  18. package/dist/cli/app.js.map +1 -1
  19. package/dist/cli/backup.d.ts +3 -0
  20. package/dist/cli/backup.js +434 -0
  21. package/dist/cli/backup.js.map +1 -0
  22. package/dist/cli/doctor.d.ts +1 -0
  23. package/dist/cli/doctor.js +61 -35
  24. package/dist/cli/doctor.js.map +1 -1
  25. package/dist/cli/job.d.ts +1 -0
  26. package/dist/cli/job.js +37 -99
  27. package/dist/cli/job.js.map +1 -1
  28. package/dist/cli/llm.d.ts +1 -0
  29. package/dist/cli/llm.js +20 -14
  30. package/dist/cli/llm.js.map +1 -1
  31. package/dist/cli/managed-list.d.ts +30 -0
  32. package/dist/cli/managed-list.js +129 -0
  33. package/dist/cli/managed-list.js.map +1 -0
  34. package/dist/cli/panel.d.ts +4 -3
  35. package/dist/cli/panel.js +94 -24
  36. package/dist/cli/panel.js.map +1 -1
  37. package/dist/cli/version.d.ts +1 -0
  38. package/dist/cli/version.js +12 -0
  39. package/dist/cli/version.js.map +1 -0
  40. package/dist/cli.js +47 -516
  41. package/dist/cli.js.map +1 -1
  42. package/dist/config.d.ts +68 -0
  43. package/dist/config.js +266 -12
  44. package/dist/config.js.map +1 -1
  45. package/dist/control.d.ts +10 -6
  46. package/dist/control.js +87 -6
  47. package/dist/control.js.map +1 -1
  48. package/dist/install.d.ts +16 -0
  49. package/dist/install.js +75 -26
  50. package/dist/install.js.map +1 -1
  51. package/dist/routes/agent-apps.d.ts +15 -0
  52. package/dist/routes/agent-apps.js +78 -0
  53. package/dist/routes/agent-apps.js.map +1 -0
  54. package/dist/routes/apps.js +186 -7
  55. package/dist/routes/apps.js.map +1 -1
  56. package/dist/routes/backup.js +3 -3
  57. package/dist/routes/backup.js.map +1 -1
  58. package/dist/routes/instances.d.ts +6 -0
  59. package/dist/routes/instances.js +862 -879
  60. package/dist/routes/instances.js.map +1 -1
  61. package/dist/routes/llm.js +9 -8
  62. package/dist/routes/llm.js.map +1 -1
  63. package/dist/routes/runtime.d.ts +15 -0
  64. package/dist/routes/runtime.js +69 -0
  65. package/dist/routes/runtime.js.map +1 -0
  66. package/dist/routes/setup.js +103 -8
  67. package/dist/routes/setup.js.map +1 -1
  68. package/dist/routes/system.js +25 -3
  69. package/dist/routes/system.js.map +1 -1
  70. package/dist/server.js +71 -7
  71. package/dist/server.js.map +1 -1
  72. package/dist/services/agent-apps/catalog.d.ts +30 -0
  73. package/dist/services/agent-apps/catalog.js +60 -0
  74. package/dist/services/agent-apps/catalog.js.map +1 -0
  75. package/dist/services/agent-apps/index.d.ts +36 -0
  76. package/dist/services/agent-apps/index.js +171 -0
  77. package/dist/services/agent-apps/index.js.map +1 -0
  78. package/dist/services/agent-apps/installers/adapter-probes.d.ts +49 -0
  79. package/dist/services/agent-apps/installers/adapter-probes.js +223 -0
  80. package/dist/services/agent-apps/installers/adapter-probes.js.map +1 -0
  81. package/dist/services/agent-apps/installers/adapter.d.ts +30 -0
  82. package/dist/services/agent-apps/installers/adapter.js +171 -0
  83. package/dist/services/agent-apps/installers/adapter.js.map +1 -0
  84. package/dist/services/agent-apps/installers/registry-probe.d.ts +38 -0
  85. package/dist/services/agent-apps/installers/registry-probe.js +183 -0
  86. package/dist/services/agent-apps/installers/registry-probe.js.map +1 -0
  87. package/dist/services/agent-apps/installers/shell-script.d.ts +47 -0
  88. package/dist/services/agent-apps/installers/shell-script.js +471 -0
  89. package/dist/services/agent-apps/installers/shell-script.js.map +1 -0
  90. package/dist/services/agent-apps/types.d.ts +125 -0
  91. package/dist/services/agent-apps/types.js +17 -0
  92. package/dist/services/agent-apps/types.js.map +1 -0
  93. package/dist/services/{app-compiler.d.ts → app/app-compiler.d.ts} +3 -3
  94. package/dist/services/{app-compiler.js → app/app-compiler.js} +10 -7
  95. package/dist/services/app/app-compiler.js.map +1 -0
  96. package/dist/services/app/app-manager.d.ts +142 -0
  97. package/dist/services/app/app-manager.js +2148 -0
  98. package/dist/services/app/app-manager.js.map +1 -0
  99. package/dist/services/app/custom-manager.d.ts +27 -0
  100. package/dist/services/app/custom-manager.js +285 -0
  101. package/dist/services/app/custom-manager.js.map +1 -0
  102. package/dist/services/app/hermes-agent-manager.d.ts +20 -0
  103. package/dist/services/app/hermes-agent-manager.js +289 -0
  104. package/dist/services/app/hermes-agent-manager.js.map +1 -0
  105. package/dist/services/app/id-normalizer.d.ts +27 -0
  106. package/dist/services/app/id-normalizer.js +77 -0
  107. package/dist/services/app/id-normalizer.js.map +1 -0
  108. package/dist/services/app/ollama-manager.d.ts +18 -0
  109. package/dist/services/app/ollama-manager.js +207 -0
  110. package/dist/services/app/ollama-manager.js.map +1 -0
  111. package/dist/services/app/openclaw-manager.d.ts +63 -0
  112. package/dist/services/app/openclaw-manager.js +1178 -0
  113. package/dist/services/app/openclaw-manager.js.map +1 -0
  114. package/dist/services/app/paths.d.ts +47 -0
  115. package/dist/services/app/paths.js +68 -0
  116. package/dist/services/app/paths.js.map +1 -0
  117. package/dist/services/app/registry.d.ts +17 -0
  118. package/dist/services/app/registry.js +31 -0
  119. package/dist/services/app/registry.js.map +1 -0
  120. package/dist/services/app/remote-spec.d.ts +14 -0
  121. package/dist/services/app/remote-spec.js +58 -0
  122. package/dist/services/app/remote-spec.js.map +1 -0
  123. package/dist/services/app/terminal-session-manager.d.ts +27 -0
  124. package/dist/services/app/terminal-session-manager.js +157 -0
  125. package/dist/services/app/terminal-session-manager.js.map +1 -0
  126. package/dist/services/app/types.d.ts +72 -0
  127. package/dist/services/app/types.js +16 -0
  128. package/dist/services/app/types.js.map +1 -0
  129. package/dist/services/backup-manager.js +60 -22
  130. package/dist/services/backup-manager.js.map +1 -1
  131. package/dist/services/instance-manager.d.ts +82 -39
  132. package/dist/services/instance-manager.js +575 -1142
  133. package/dist/services/instance-manager.js.map +1 -1
  134. package/dist/services/llm-proxy/circuit-breaker.js +10 -2
  135. package/dist/services/llm-proxy/circuit-breaker.js.map +1 -1
  136. package/dist/services/llm-proxy/index.d.ts +14 -1
  137. package/dist/services/llm-proxy/index.js +51 -6
  138. package/dist/services/llm-proxy/index.js.map +1 -1
  139. package/dist/services/nomad-manager.d.ts +260 -3
  140. package/dist/services/nomad-manager.js +2866 -449
  141. package/dist/services/nomad-manager.js.map +1 -1
  142. package/dist/services/panel-manager.d.ts +10 -0
  143. package/dist/services/panel-manager.js +97 -0
  144. package/dist/services/panel-manager.js.map +1 -1
  145. package/dist/services/plugin-installer.js +28 -2
  146. package/dist/services/plugin-installer.js.map +1 -1
  147. package/dist/services/process-manager.js +22 -0
  148. package/dist/services/process-manager.js.map +1 -1
  149. package/dist/services/runtime/adapters/custom.d.ts +20 -0
  150. package/dist/services/runtime/adapters/custom.js +90 -0
  151. package/dist/services/runtime/adapters/custom.js.map +1 -0
  152. package/dist/services/runtime/adapters/hermes.d.ts +174 -0
  153. package/dist/services/runtime/adapters/hermes.js +1316 -0
  154. package/dist/services/runtime/adapters/hermes.js.map +1 -0
  155. package/dist/services/runtime/adapters/openclaw-routes.d.ts +17 -0
  156. package/dist/services/runtime/adapters/openclaw-routes.js +946 -0
  157. package/dist/services/runtime/adapters/openclaw-routes.js.map +1 -0
  158. package/dist/services/runtime/adapters/openclaw.d.ts +188 -0
  159. package/dist/services/runtime/adapters/openclaw.js +2195 -0
  160. package/dist/services/runtime/adapters/openclaw.js.map +1 -0
  161. package/dist/services/runtime/errors.d.ts +28 -0
  162. package/dist/services/runtime/errors.js +31 -0
  163. package/dist/services/runtime/errors.js.map +1 -0
  164. package/dist/services/runtime/index.d.ts +34 -0
  165. package/dist/services/runtime/index.js +51 -0
  166. package/dist/services/runtime/index.js.map +1 -0
  167. package/dist/services/runtime/instance.d.ts +24 -0
  168. package/dist/services/runtime/instance.js +143 -0
  169. package/dist/services/runtime/instance.js.map +1 -0
  170. package/dist/services/runtime/migrations.d.ts +15 -0
  171. package/dist/services/runtime/migrations.js +25 -0
  172. package/dist/services/runtime/migrations.js.map +1 -0
  173. package/dist/services/runtime/registry.d.ts +13 -0
  174. package/dist/services/runtime/registry.js +32 -0
  175. package/dist/services/runtime/registry.js.map +1 -0
  176. package/dist/services/runtime/types.d.ts +545 -0
  177. package/dist/services/runtime/types.js +14 -0
  178. package/dist/services/runtime/types.js.map +1 -0
  179. package/dist/services/setup-manager.d.ts +70 -29
  180. package/dist/services/setup-manager.js +278 -597
  181. package/dist/services/setup-manager.js.map +1 -1
  182. package/dist/services/task-registry.d.ts +44 -0
  183. package/dist/services/task-registry.js +74 -0
  184. package/dist/services/task-registry.js.map +1 -0
  185. package/dist/services/telemetry/heartbeat.d.ts +6 -6
  186. package/dist/services/telemetry/heartbeat.js +29 -30
  187. package/dist/services/telemetry/heartbeat.js.map +1 -1
  188. package/dist/types.d.ts +164 -2
  189. package/dist/utils/docker-host.d.ts +15 -0
  190. package/dist/utils/docker-host.js +64 -0
  191. package/dist/utils/docker-host.js.map +1 -0
  192. package/install/jishu-install.sh +25 -2
  193. package/package.json +14 -4
  194. package/public/assets/Dashboard-rh9qpYRR.js +1 -0
  195. package/public/assets/HermesChatPanel-D6JI6lLY.js +1 -0
  196. package/public/assets/HermesConfigForm-DcbSemaj.js +4 -0
  197. package/public/assets/InitPassword-CFTKsED4.js +1 -0
  198. package/public/assets/InstanceDetail-BhNIKA6Z.js +91 -0
  199. package/public/assets/{Login-D1Bt-Lyk.js → Login-KB9qrtM0.js} +1 -1
  200. package/public/assets/NewInstance-CxkO8Hlq.js +1 -0
  201. package/public/assets/Settings-BVWJvOkU.js +1 -0
  202. package/public/assets/Setup-X-lzuaUT.js +1 -0
  203. package/public/assets/WeixinLoginPanel-gca0QTic.js +9 -0
  204. package/public/assets/index-C8B0cFJM.js +19 -0
  205. package/public/assets/index-CPhVFEsx.css +1 -0
  206. package/public/assets/input-paste-CrNVAyOy.js +1 -0
  207. package/public/assets/registry-fVUSujib.js +2 -0
  208. package/public/assets/{usePolling-CK0DfI4h.js → usePolling-Do5Erqm_.js} +1 -1
  209. package/public/assets/vendor-i18n-ucpM0OR0.js +9 -0
  210. package/public/assets/{vendor-react-B1-3Yrt-.js → vendor-react-Bk1hRGiY.js} +1 -1
  211. package/public/favicon.png +0 -0
  212. package/public/index.html +9 -4
  213. package/public/logos/hermes.png +0 -0
  214. package/public/logos/ollama.png +0 -0
  215. package/public/logos/openclaw.svg +60 -0
  216. package/scripts/build-hermes-image.sh +21 -0
  217. package/scripts/build-local.sh +54 -0
  218. package/scripts/check-adapter-isolation.ts +293 -0
  219. package/scripts/fixtures/instances/hermes-sample/instance.json +37 -0
  220. package/scripts/fixtures/instances/legacy-openclaw-sample/instance.json +7 -0
  221. package/scripts/smoke/hermes-bootstrap.sh +195 -0
  222. package/templates/hermes-entrypoint.sh +154 -0
  223. package/dist/cli/openclaw.d.ts +0 -12
  224. package/dist/cli/openclaw.js +0 -156
  225. package/dist/cli/openclaw.js.map +0 -1
  226. package/dist/services/app-compiler.js.map +0 -1
  227. package/dist/services/app-manager.d.ts +0 -17
  228. package/dist/services/app-manager.js +0 -168
  229. package/dist/services/app-manager.js.map +0 -1
  230. package/dist/services/job-manager.d.ts +0 -22
  231. package/dist/services/job-manager.js +0 -102
  232. package/dist/services/job-manager.js.map +0 -1
  233. package/public/assets/Dashboard-CQsp1Mr9.js +0 -1
  234. package/public/assets/InitPassword-BEC8SE4A.js +0 -1
  235. package/public/assets/InstanceDetail-B5wTgNEg.js +0 -17
  236. package/public/assets/NewInstance-GQzm3K9D.js +0 -1
  237. package/public/assets/Settings-ByjGlqhP.js +0 -1
  238. package/public/assets/Setup-cMF21Y-8.js +0 -1
  239. package/public/assets/index-B6qQP4mH.css +0 -1
  240. package/public/assets/index-BuTQtuNy.js +0 -16
  241. package/public/assets/vendor-i18n-CfW0RvgE.js +0 -9
package/dist/install.js CHANGED
@@ -18,8 +18,9 @@ import { existsSync, readFileSync, appendFileSync } from "fs";
18
18
  import { join } from "path";
19
19
  import { networkInterfaces, homedir } from "os";
20
20
  import readline from "readline";
21
- import { getPanelConfig, savePanelConfig, DEFAULT_OPENCLAW_DOCKER_IMAGE } from "./config.js";
21
+ import { getPanelConfig, savePanelConfig } from "./config.js";
22
22
  import * as setup from "./services/setup-manager.js";
23
+ import { listRegisteredAdapters } from "./services/runtime/index.js";
23
24
  // ── ANSI colours (stripped when not a TTY) ───────────────────────────────────
24
25
  const isTTY = process.stdout.isTTY ?? false;
25
26
  const c = {
@@ -48,7 +49,9 @@ export function parseInstallArgs(args) {
48
49
  noService: false,
49
50
  skipDocker: false,
50
51
  skipNomad: false,
52
+ skipAgents: false,
51
53
  skipOpenclaw: false,
54
+ includeOptional: false,
52
55
  force: false,
53
56
  dryRun: false,
54
57
  };
@@ -67,9 +70,16 @@ export function parseInstallArgs(args) {
67
70
  case "--skip-nomad":
68
71
  opts.skipNomad = true;
69
72
  break;
73
+ case "--skip-agents":
74
+ opts.skipAgents = true;
75
+ break;
70
76
  case "--skip-openclaw":
77
+ opts.skipAgents = true;
71
78
  opts.skipOpenclaw = true;
72
79
  break;
80
+ case "--include-optional":
81
+ opts.includeOptional = true;
82
+ break;
73
83
  case "--force":
74
84
  case "-f":
75
85
  opts.force = true;
@@ -164,8 +174,8 @@ function printBanner(port) {
164
174
  log(` ${c.dim(`port: ${port}`)}`);
165
175
  log("");
166
176
  }
167
- function buildPlan(opts) {
168
- const status = setup.getSetupStatus();
177
+ async function buildPlan(opts) {
178
+ const status = await setup.getSetupStatus();
169
179
  return [
170
180
  {
171
181
  label: "Docker",
@@ -177,11 +187,16 @@ function buildPlan(opts) {
177
187
  installed: status.nomad.installed,
178
188
  skip: opts.skipNomad,
179
189
  },
180
- {
181
- label: "OpenClaw",
182
- installed: status.openclaw.installed,
183
- skip: opts.skipOpenclaw,
184
- },
190
+ ...listRegisteredAdapters().map((adapter) => {
191
+ const s = status.runtimes?.[adapter.agentType];
192
+ const optional = adapter.required !== true;
193
+ const skipForOptional = optional && !opts.includeOptional;
194
+ return {
195
+ label: `${adapter.agentType} runtime${optional ? " (optional)" : ""}`,
196
+ installed: !!s?.installed,
197
+ skip: opts.skipAgents || skipForOptional,
198
+ };
199
+ }),
185
200
  {
186
201
  label: "Systemd services",
187
202
  installed: isSystemdInstalled(),
@@ -378,7 +393,7 @@ export async function runInstall(opts) {
378
393
  ok(`Node.js ${process.version}`);
379
394
  }
380
395
  // ── Show plan ───────────────────────────────────────────────────
381
- const plan = buildPlan(opts);
396
+ const plan = await buildPlan(opts);
382
397
  printPlan(plan);
383
398
  const go = await confirm("Proceed with installation?", opts);
384
399
  if (!go) {
@@ -418,6 +433,7 @@ export async function runInstall(opts) {
418
433
  note(result.error);
419
434
  errors.push("Docker");
420
435
  warning("Skipping Docker-dependent steps.");
436
+ opts.skipAgents = true;
421
437
  opts.skipOpenclaw = true;
422
438
  }
423
439
  }
@@ -459,27 +475,60 @@ export async function runInstall(opts) {
459
475
  }
460
476
  }
461
477
  }
462
- // ── OpenClaw Docker Image ──────────────────────────────────────
463
- if (!opts.skipOpenclaw) {
464
- step("Building OpenClaw Docker image…");
465
- if (opts.dryRun) {
466
- note(c.dim(`[dry-run] would build Docker image: docker build -f Dockerfile.openclaw-slim -t ${DEFAULT_OPENCLAW_DOCKER_IMAGE}`));
467
- }
468
- else {
478
+ // ── Agent runtimes (docker images / shims) ─────────────────────
479
+ // Iterate over every registered adapter; each one owns its own install
480
+ // recipe via `buildRuntimeImage` (preferred) or `installRuntime`. This
481
+ // keeps the CLI zero-modification when a new agent is added.
482
+ //
483
+ // Optional runtimes (those with `required !== true`, e.g. Hermes) skip
484
+ // by default so first-run installs don't pull multi-GB images users
485
+ // haven't asked for. Opt in with `--include-optional` or install later
486
+ // from the panel Setup wizard (POST /api/setup/install/<agentType>).
487
+ if (!opts.skipAgents) {
488
+ const skippedOptional = [];
489
+ for (const adapter of listRegisteredAdapters()) {
490
+ const runner = adapter.buildRuntimeImage
491
+ ? adapter.buildRuntimeImage.bind(adapter)
492
+ : adapter.installRuntime
493
+ ? adapter.installRuntime.bind(adapter)
494
+ : null;
495
+ if (!runner)
496
+ continue;
497
+ const optional = adapter.required !== true;
498
+ const label = `${adapter.agentType} runtime${optional ? " (optional)" : ""}`;
499
+ if (optional && !opts.includeOptional) {
500
+ skippedOptional.push(adapter.agentType);
501
+ continue;
502
+ }
503
+ step(`Preparing ${label}…`);
504
+ if (opts.dryRun) {
505
+ note(c.dim(`[dry-run] would prepare ${label} (docker image / shim)`));
506
+ continue;
507
+ }
469
508
  note("This may take a few minutes on first run.");
470
- const imgResult = await setup.buildSlimOpenclawImage();
471
- if (imgResult.taskId)
472
- await streamTask(imgResult.taskId);
473
- if (imgResult.ok) {
474
- ok(imgResult.message);
509
+ try {
510
+ const imgResult = (await runner());
511
+ if (imgResult.taskId)
512
+ await streamTask(imgResult.taskId);
513
+ if (imgResult.ok) {
514
+ ok(imgResult.message);
515
+ }
516
+ else {
517
+ fail(imgResult.message);
518
+ if (imgResult.error)
519
+ note(imgResult.error);
520
+ errors.push(label);
521
+ }
475
522
  }
476
- else {
477
- fail(imgResult.message);
478
- if (imgResult.error)
479
- note(imgResult.error);
480
- errors.push("OpenClaw Docker Image");
523
+ catch (e) {
524
+ fail(`${label} failed: ${e?.message || e}`);
525
+ errors.push(label);
481
526
  }
482
527
  }
528
+ if (skippedOptional.length > 0) {
529
+ note(c.dim(`Optional runtime(s) skipped: ${skippedOptional.join(", ")}. ` +
530
+ `Install later from the Setup wizard or rerun with --include-optional.`));
531
+ }
483
532
  }
484
533
  // ── Nomad ACL bootstrap ─────────────────────────────────────────
485
534
  // (internal, best-effort)
@@ -1 +1 @@
1
- {"version":3,"file":"install.js","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"install.js","sourceRoot":"","sources":["../src/install.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * REST routes for the "安装应用" page.
3
+ *
4
+ * `GET /api/agent-apps` — catalog + live install status
5
+ * `GET /api/agent-apps/:id` — single entry
6
+ * `POST /api/agent-apps/:id/install` — kick off install/update, returns taskId
7
+ *
8
+ * Task progress streams through the existing `GET /api/setup/tasks/:id`
9
+ * endpoint since we share one task registry across setup-manager and
10
+ * agent-apps. Back-compat alias `/api/setup/install/runtime/:agentType`
11
+ * still lives in `routes/setup.ts` and is wired to the same install
12
+ * dispatcher.
13
+ */
14
+ import type { FastifyInstance } from "fastify";
15
+ export declare function agentAppRoutes(app: FastifyInstance): Promise<void>;
@@ -0,0 +1,78 @@
1
+ /**
2
+ * REST routes for the "安装应用" page.
3
+ *
4
+ * `GET /api/agent-apps` — catalog + live install status
5
+ * `GET /api/agent-apps/:id` — single entry
6
+ * `POST /api/agent-apps/:id/install` — kick off install/update, returns taskId
7
+ *
8
+ * Task progress streams through the existing `GET /api/setup/tasks/:id`
9
+ * endpoint since we share one task registry across setup-manager and
10
+ * agent-apps. Back-compat alias `/api/setup/install/runtime/:agentType`
11
+ * still lives in `routes/setup.ts` and is wired to the same install
12
+ * dispatcher.
13
+ */
14
+ import { checkAllAgentAppUpdates, getAgentApp, getAgentAppUpdatesLastCheckedAt, listAgentApps, startAgentAppInstall, startAgentAppUninstall, } from "../services/agent-apps/index.js";
15
+ const ID_RE = /^[a-z0-9][a-z0-9-]{0,62}$/;
16
+ export async function agentAppRoutes(app) {
17
+ app.get("/api/agent-apps", async () => {
18
+ const apps = await listAgentApps();
19
+ return { apps, lastCheckedAt: getAgentAppUpdatesLastCheckedAt() };
20
+ });
21
+ app.post("/api/agent-apps/check-updates", async () => {
22
+ // Slow path by design — this call holds the HTTP connection while the
23
+ // docker manifest probes complete (can be 30–60 s on edge devices with
24
+ // slow international bandwidth). Frontend disables the button until
25
+ // the response lands.
26
+ return await checkAllAgentAppUpdates();
27
+ });
28
+ app.get("/api/agent-apps/:id", async (request, reply) => {
29
+ const { id } = request.params;
30
+ if (!ID_RE.test(id)) {
31
+ return reply.status(400).send({ detail: "Invalid agent-app id format" });
32
+ }
33
+ const entry = await getAgentApp(id);
34
+ if (!entry) {
35
+ return reply.status(404).send({ detail: "Agent app not found" });
36
+ }
37
+ return entry;
38
+ });
39
+ app.post("/api/agent-apps/:id/install", async (request, reply) => {
40
+ const { id } = request.params;
41
+ if (!ID_RE.test(id)) {
42
+ return reply.status(400).send({ detail: "Invalid agent-app id format" });
43
+ }
44
+ const result = await startAgentAppInstall(id, request.body || {});
45
+ if (!result.ok) {
46
+ // `manualCommand` is still a 4xx (can't start), but the body
47
+ // carries an actionable command for the UI to surface in a
48
+ // modal instead of a toast error.
49
+ return reply.status(400).send({
50
+ detail: result.error || "Install failed",
51
+ manualCommand: result.manualCommand,
52
+ manualReason: result.manualReason,
53
+ });
54
+ }
55
+ return {
56
+ ok: true,
57
+ taskId: result.taskId,
58
+ reused: result.reused === true,
59
+ message: result.message,
60
+ };
61
+ });
62
+ app.post("/api/agent-apps/:id/uninstall", async (request, reply) => {
63
+ const { id } = request.params;
64
+ if (!ID_RE.test(id)) {
65
+ return reply.status(400).send({ detail: "Invalid agent-app id format" });
66
+ }
67
+ const result = await startAgentAppUninstall(id);
68
+ if (!result.ok) {
69
+ return reply.status(400).send({
70
+ detail: result.error || "Uninstall failed",
71
+ manualCommand: result.manualCommand,
72
+ manualReason: result.manualReason,
73
+ });
74
+ }
75
+ return { ok: true, taskId: result.taskId };
76
+ });
77
+ }
78
+ //# sourceMappingURL=agent-apps.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"agent-apps.js","sourceRoot":"","sources":["../../src/routes/agent-apps.ts"],"names":[],"mappings":"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"}
@@ -1,18 +1,134 @@
1
- import * as appManager from "../services/app-manager.js";
2
- import * as instanceManager from "../services/instance-manager.js";
1
+ import * as appManager from "../services/app/app-manager.js";
2
+ import { createTask, emitTask, getRunningTasks } from "../services/task-registry.js";
3
+ import { loadRemoteAppSpecYaml } from "../services/app/remote-spec.js";
4
+ import { stringify } from "yaml";
5
+ import { parse } from "yaml";
3
6
  const APP_ID_RE = /^[a-z0-9][a-z0-9-]{0,62}$/;
7
+ function statusCodeForTaskStartError(message) {
8
+ if (!message)
9
+ return 400;
10
+ if (/not found/i.test(message))
11
+ return 404;
12
+ if (/正在执行|still installing|already running|请等待完成后再试/i.test(message))
13
+ return 409;
14
+ return 400;
15
+ }
16
+ function toTaskStartPayload(result) {
17
+ return {
18
+ ok: true,
19
+ taskId: result.taskId,
20
+ ...(result.reused ? { reused: true } : {}),
21
+ };
22
+ }
23
+ function rewriteInstalledAppYaml(yamlText, sourceId, targetId) {
24
+ return yamlText
25
+ .split(`~/.jishushell/apps/${sourceId}`).join(`~/.jishushell/apps/${targetId}`)
26
+ .split(`$HOME/.jishushell/apps/${sourceId}`).join(`$HOME/.jishushell/apps/${targetId}`)
27
+ .split(`${process.env.HOME ?? ""}/.jishushell/apps/${sourceId}`).join(`${process.env.HOME ?? ""}/.jishushell/apps/${targetId}`);
28
+ }
29
+ function parseSpecId(specYaml) {
30
+ try {
31
+ const parsed = parse(specYaml);
32
+ const specId = typeof parsed?.id === "string" ? parsed.id.trim() : "";
33
+ if (!specId || !APP_ID_RE.test(specId)) {
34
+ throw new Error("App spec is missing a valid id field");
35
+ }
36
+ return specId;
37
+ }
38
+ catch (e) {
39
+ throw new Error(`Invalid app spec YAML: ${e.message}`);
40
+ }
41
+ }
4
42
  /** REST routes for App lifecycle management (/api/apps/*) */
5
43
  export async function appRoutes(app) {
44
+ app.post("/api/apps/validate-sudo-password", async (request, reply) => {
45
+ const body = (request.body ?? {});
46
+ const sudoPassword = typeof body.sudoPassword === "string" ? body.sudoPassword : "";
47
+ if (!sudoPassword) {
48
+ return reply.status(400).send({ detail: "请输入 sudo 密码" });
49
+ }
50
+ try {
51
+ await appManager.validateSudoPassword(sudoPassword);
52
+ return reply.send({ ok: true });
53
+ }
54
+ catch (e) {
55
+ return reply.status(400).send({ detail: e?.message || "sudo 密码验证失败" });
56
+ }
57
+ });
58
+ app.get("/api/apps/builtin-specs", async (_request, reply) => {
59
+ return reply.send(appManager.listBuiltinAppSpecs());
60
+ });
6
61
  app.get("/api/apps", async (_request, reply) => {
7
62
  const apps = await appManager.listApps();
8
63
  return reply.send(apps.map((a) => ({
9
- id: a.spec.id,
64
+ id: a.manifest.id,
10
65
  name: a.spec.name,
66
+ description: a.spec.description,
67
+ spec_id: a.spec.id,
11
68
  version: a.spec.version,
12
69
  installed_at: a.manifest.installed_at,
70
+ install_mode: a.manifest.install_mode,
13
71
  task_count: a.spec.tasks.length,
72
+ status: a.install_state,
73
+ ...(a.current_task ? {
74
+ currentTaskId: a.current_task.id,
75
+ currentTaskKind: a.current_task.kind,
76
+ currentTaskStatus: a.current_task.status,
77
+ } : {}),
14
78
  })));
15
79
  });
80
+ app.post("/api/apps/install-task", async (request, reply) => {
81
+ const body = (request.body ?? {});
82
+ let specYaml = typeof body.yaml === "string" ? body.yaml.trim() : "";
83
+ if (!specYaml && typeof body.url === "string" && body.url.trim()) {
84
+ try {
85
+ specYaml = (await loadRemoteAppSpecYaml(body.url.trim())).trim();
86
+ }
87
+ catch (e) {
88
+ return reply.status(400).send({ detail: e.message });
89
+ }
90
+ }
91
+ if (!specYaml) {
92
+ return reply.status(400).send({ detail: "Either body.yaml or body.url is required" });
93
+ }
94
+ let expectedSpecId = "";
95
+ try {
96
+ expectedSpecId = parseSpecId(specYaml);
97
+ }
98
+ catch (e) {
99
+ return reply.status(400).send({ detail: e.message });
100
+ }
101
+ const running = getRunningTasks(`app-install-${expectedSpecId}`);
102
+ if (running.length > 0) {
103
+ return reply.status(202).send({ ok: true, taskId: running[0].id, reused: true, expectedSpecId });
104
+ }
105
+ const task = createTask(`app-install-${expectedSpecId}`);
106
+ emitTask(task, { type: "progress", message: `开始安装应用 ${expectedSpecId}...`, progress: 0 });
107
+ void (async () => {
108
+ try {
109
+ const result = await appManager.installApp(specYaml, body.requestedAppId, {
110
+ task,
111
+ ...(typeof body.sudoPassword === "string" && body.sudoPassword
112
+ ? { exec: { sudoPassword: body.sudoPassword } }
113
+ : {}),
114
+ });
115
+ task.status = "done";
116
+ emitTask(task, {
117
+ type: "done",
118
+ message: `应用 ${result.manifest.id} 安装完成`,
119
+ progress: 100,
120
+ });
121
+ }
122
+ catch (e) {
123
+ task.status = "error";
124
+ emitTask(task, {
125
+ type: "error",
126
+ message: e.message || `应用 ${expectedSpecId} 安装失败`,
127
+ });
128
+ }
129
+ })();
130
+ return reply.status(202).send({ ok: true, taskId: task.id, expectedSpecId });
131
+ });
16
132
  app.post("/api/apps/install", async (request, reply) => {
17
133
  const body = request.body;
18
134
  if (!body || typeof body !== "string") {
@@ -21,7 +137,7 @@ export async function appRoutes(app) {
21
137
  try {
22
138
  const result = await appManager.installApp(body);
23
139
  return reply.status(201).send({
24
- id: result.spec.id,
140
+ id: result.manifest.id,
25
141
  name: result.spec.name,
26
142
  version: result.spec.version,
27
143
  installed_at: result.manifest.installed_at,
@@ -53,6 +169,54 @@ export async function appRoutes(app) {
53
169
  await appManager.uninstallApp(id);
54
170
  return reply.status(204).send();
55
171
  });
172
+ app.post("/api/apps/:id/uninstall-task", async (request, reply) => {
173
+ const { id } = request.params;
174
+ if (!APP_ID_RE.test(id)) {
175
+ return reply.status(400).send({ detail: "Invalid app id format" });
176
+ }
177
+ const body = (request.body ?? {});
178
+ const result = appManager.uninstallAppTask(id, typeof body.sudoPassword === "string" && body.sudoPassword
179
+ ? { sudoPassword: body.sudoPassword }
180
+ : undefined);
181
+ if (!result.ok) {
182
+ return reply.status(statusCodeForTaskStartError(result.error)).send({ detail: result.error });
183
+ }
184
+ return reply.status(202).send(toTaskStartPayload(result));
185
+ });
186
+ app.post("/api/apps/:id/start-task", async (request, reply) => {
187
+ const { id } = request.params;
188
+ if (!APP_ID_RE.test(id)) {
189
+ return reply.status(400).send({ detail: "Invalid app id format" });
190
+ }
191
+ const result = appManager.startAppTask(id);
192
+ if (!result.ok) {
193
+ return reply.status(statusCodeForTaskStartError(result.error)).send({ detail: result.error });
194
+ }
195
+ return reply.status(202).send(toTaskStartPayload(result));
196
+ });
197
+ app.post("/api/apps/:id/stop-task", async (request, reply) => {
198
+ const { id } = request.params;
199
+ if (!APP_ID_RE.test(id)) {
200
+ return reply.status(400).send({ detail: "Invalid app id format" });
201
+ }
202
+ const body = (request.body ?? {});
203
+ const result = appManager.stopAppTask(id, body.purge === true);
204
+ if (!result.ok) {
205
+ return reply.status(statusCodeForTaskStartError(result.error)).send({ detail: result.error });
206
+ }
207
+ return reply.status(202).send(toTaskStartPayload(result));
208
+ });
209
+ app.post("/api/apps/:id/restart-task", async (request, reply) => {
210
+ const { id } = request.params;
211
+ if (!APP_ID_RE.test(id)) {
212
+ return reply.status(400).send({ detail: "Invalid app id format" });
213
+ }
214
+ const result = appManager.restartAppTask(id);
215
+ if (!result.ok) {
216
+ return reply.status(statusCodeForTaskStartError(result.error)).send({ detail: result.error });
217
+ }
218
+ return reply.status(202).send(toTaskStartPayload(result));
219
+ });
56
220
  app.post("/api/apps/:id/create-instance", async (request, reply) => {
57
221
  const { id: appId } = request.params;
58
222
  if (!APP_ID_RE.test(appId)) {
@@ -71,6 +235,9 @@ export async function appRoutes(app) {
71
235
  if (!appData) {
72
236
  return reply.status(404).send({ detail: "App not found" });
73
237
  }
238
+ if (appData.install_state === "installing") {
239
+ return reply.status(409).send({ detail: "App is still installing" });
240
+ }
74
241
  let resolvedEnv = {};
75
242
  try {
76
243
  resolvedEnv = appManager.resolveRequires(appData.spec);
@@ -81,15 +248,27 @@ export async function appRoutes(app) {
81
248
  const specWithEnv = resolvedEnv && Object.keys(resolvedEnv).length > 0
82
249
  ? {
83
250
  ...appData.spec,
251
+ app_id: appData.manifest.id,
84
252
  tasks: appData.spec.tasks.map((t) => t.role === "service" ? { ...t, env: { ...t.env, ...resolvedEnv } } : t),
85
253
  }
86
- : appData.spec;
254
+ : { ...appData.spec, app_id: appData.manifest.id };
87
255
  try {
88
- await instanceManager.createInstance(body.id, body.name, body.description || "", undefined, undefined, specWithEnv);
256
+ const rawYaml = rewriteInstalledAppYaml(stringify({
257
+ ...specWithEnv,
258
+ ...(body.name ? { name: body.name } : {}),
259
+ ...(body.description !== undefined ? { description: body.description } : {}),
260
+ }), appData.manifest.id, body.id);
261
+ await appManager.installApp(rawYaml, body.id, {
262
+ bootstrap: {
263
+ name: body.name,
264
+ description: body.description || "",
265
+ },
266
+ });
267
+ appManager.updateInstance(body.id, body.name, body.description || "");
89
268
  return reply.status(201).send({ id: body.id, app_id: appId });
90
269
  }
91
270
  catch (e) {
92
- if (e.message?.includes("already exists")) {
271
+ if (e?.code === 409 || e?.message?.includes("already exists")) {
93
272
  return reply.status(409).send({ detail: e.message });
94
273
  }
95
274
  throw e;
@@ -1 +1 @@
1
- {"version":3,"file":"apps.js","sourceRoot":"","sources":["../../src/routes/apps.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"apps.js","sourceRoot":"","sources":["../../src/routes/apps.ts"],"names":[],"mappings":"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"}