jishushell 0.6.5 → 0.7.3

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 (1207) hide show
  1. package/apps/anythingllm-container.yaml +16 -170
  2. package/apps/browserless-chromium-container.yaml +16 -10
  3. package/apps/filebrowser-container.yaml +15 -9
  4. package/apps/hermes-container.yaml +20 -5
  5. package/apps/immich-container-lite.yaml +337 -0
  6. package/apps/immich-container.yaml +371 -0
  7. package/apps/jishu-kb-container.yaml +50 -177
  8. package/apps/ollama-binary.yaml +33 -28
  9. package/apps/ollama-cpu-container.yaml +6 -0
  10. package/apps/ollama-with-hollama-binary.yaml +35 -28
  11. package/apps/openclaw-binary.yaml +35 -15
  12. package/apps/openclaw-container.yaml +29 -11
  13. package/apps/openclaw-with-ollama-container.yaml +9 -2
  14. package/apps/openclaw-with-searxng-container.yaml +38 -6
  15. package/apps/searxng-container.yaml +31 -6
  16. package/apps/weknora-container.yaml +26 -21
  17. package/dependencies/jishushell-panel-0.7.3.tgz +0 -0
  18. package/dist/cli/app.js +244 -213
  19. package/dist/cli/app.js.map +1 -1
  20. package/dist/cli/backup.js +15 -12
  21. package/dist/cli/backup.js.map +1 -1
  22. package/dist/cli/core.d.ts +4 -3
  23. package/dist/cli/core.js +392 -227
  24. package/dist/cli/core.js.map +1 -1
  25. package/dist/cli/doctor.d.ts +1 -1
  26. package/dist/cli/doctor.js +113 -10
  27. package/dist/cli/doctor.js.map +1 -1
  28. package/dist/cli/job.js +62 -14
  29. package/dist/cli/job.js.map +1 -1
  30. package/dist/cli/llm.js +80 -11
  31. package/dist/cli/llm.js.map +1 -1
  32. package/dist/cli/managed-list.d.ts +1 -3
  33. package/dist/cli/managed-list.js +18 -16
  34. package/dist/cli/managed-list.js.map +1 -1
  35. package/dist/cli/migrate.d.ts +2 -0
  36. package/dist/cli/migrate.js +160 -0
  37. package/dist/cli/migrate.js.map +1 -0
  38. package/dist/cli.js +1 -0
  39. package/dist/cli.js.map +1 -1
  40. package/dist/config.d.ts +32 -20
  41. package/dist/config.js +132 -51
  42. package/dist/config.js.map +1 -1
  43. package/dist/control.d.ts +6 -6
  44. package/dist/control.js +31 -23
  45. package/dist/control.js.map +1 -1
  46. package/dist/core.d.ts +5 -5
  47. package/dist/core.js +5 -5
  48. package/dist/core.js.map +1 -1
  49. package/dist/install.d.ts +2 -2
  50. package/dist/install.js +78 -37
  51. package/dist/install.js.map +1 -1
  52. package/dist/routes/admin.d.ts +2 -0
  53. package/dist/routes/admin.js +72 -0
  54. package/dist/routes/admin.js.map +1 -0
  55. package/dist/routes/apps.d.ts +1 -1
  56. package/dist/routes/apps.js +101 -193
  57. package/dist/routes/apps.js.map +1 -1
  58. package/dist/routes/auth.js +1 -1
  59. package/dist/routes/auth.js.map +1 -1
  60. package/dist/routes/backup.js +1 -1
  61. package/dist/routes/backup.js.map +1 -1
  62. package/dist/routes/docker.d.ts +2 -0
  63. package/dist/routes/docker.js +58 -0
  64. package/dist/routes/docker.js.map +1 -0
  65. package/dist/routes/external-mounts.d.ts +1 -1
  66. package/dist/routes/external-mounts.js +1 -1
  67. package/dist/routes/external-mounts.js.map +1 -1
  68. package/dist/routes/file-mounts.d.ts +4 -3
  69. package/dist/routes/file-mounts.js +49 -31
  70. package/dist/routes/file-mounts.js.map +1 -1
  71. package/dist/routes/files-organize.d.ts +2 -2
  72. package/dist/routes/files-organize.js +5 -5
  73. package/dist/routes/files-organize.js.map +1 -1
  74. package/dist/routes/files.d.ts +1 -1
  75. package/dist/routes/files.js +1 -1
  76. package/dist/routes/files.js.map +1 -1
  77. package/dist/routes/instances.d.ts +0 -8
  78. package/dist/routes/instances.js +202 -1560
  79. package/dist/routes/instances.js.map +1 -1
  80. package/dist/routes/integration-apps.d.ts +14 -0
  81. package/dist/routes/integration-apps.js +81 -0
  82. package/dist/routes/integration-apps.js.map +1 -0
  83. package/dist/routes/integrations.d.ts +9 -0
  84. package/dist/routes/integrations.js +12 -0
  85. package/dist/routes/integrations.js.map +1 -0
  86. package/dist/routes/llm-proxy.js +26 -3
  87. package/dist/routes/llm-proxy.js.map +1 -1
  88. package/dist/routes/setup.js +53 -38
  89. package/dist/routes/setup.js.map +1 -1
  90. package/dist/routes/system.js +108 -68
  91. package/dist/routes/system.js.map +1 -1
  92. package/dist/routes/webdav.d.ts +1 -1
  93. package/dist/routes/webdav.js +2 -2
  94. package/dist/routes/webdav.js.map +1 -1
  95. package/dist/server.d.ts +6 -0
  96. package/dist/server.js +368 -233
  97. package/dist/server.js.map +1 -1
  98. package/dist/services/app-common/app-compiler.js +186 -0
  99. package/dist/services/app-common/app-compiler.js.map +1 -0
  100. package/dist/services/app-common/app-shared.d.ts +15 -0
  101. package/dist/services/app-common/app-shared.js +64 -0
  102. package/dist/services/app-common/app-shared.js.map +1 -0
  103. package/dist/services/app-common/capability-service.d.ts +45 -0
  104. package/dist/services/app-common/capability-service.js +331 -0
  105. package/dist/services/app-common/capability-service.js.map +1 -0
  106. package/dist/services/app-common/catalog-service.d.ts +59 -0
  107. package/dist/services/app-common/catalog-service.js +318 -0
  108. package/dist/services/app-common/catalog-service.js.map +1 -0
  109. package/dist/services/app-common/create-pipeline.d.ts +26 -0
  110. package/dist/services/app-common/create-pipeline.js +298 -0
  111. package/dist/services/app-common/create-pipeline.js.map +1 -0
  112. package/dist/services/app-common/delete-service.d.ts +5 -0
  113. package/dist/services/app-common/delete-service.js +109 -0
  114. package/dist/services/app-common/delete-service.js.map +1 -0
  115. package/dist/services/app-common/execution-owner.d.ts +23 -0
  116. package/dist/services/app-common/execution-owner.js +124 -0
  117. package/dist/services/app-common/execution-owner.js.map +1 -0
  118. package/dist/services/app-common/execution-service.d.ts +23 -0
  119. package/dist/services/app-common/execution-service.js +105 -0
  120. package/dist/services/app-common/execution-service.js.map +1 -0
  121. package/dist/services/app-common/id-normalizer.d.ts +31 -0
  122. package/dist/services/app-common/id-normalizer.js +83 -0
  123. package/dist/services/app-common/id-normalizer.js.map +1 -0
  124. package/dist/services/app-common/install-store.d.ts +34 -0
  125. package/dist/services/app-common/install-store.js +261 -0
  126. package/dist/services/app-common/install-store.js.map +1 -0
  127. package/dist/services/app-common/instance-store.d.ts +78 -0
  128. package/dist/services/app-common/instance-store.js +498 -0
  129. package/dist/services/app-common/instance-store.js.map +1 -0
  130. package/dist/services/app-common/integration-refs.d.ts +17 -0
  131. package/dist/services/app-common/integration-refs.js +47 -0
  132. package/dist/services/app-common/integration-refs.js.map +1 -0
  133. package/dist/services/app-common/lifecycle-pipeline.d.ts +62 -0
  134. package/dist/services/app-common/lifecycle-pipeline.js +317 -0
  135. package/dist/services/app-common/lifecycle-pipeline.js.map +1 -0
  136. package/dist/services/app-common/lifecycle-scripts.d.ts +38 -0
  137. package/dist/services/app-common/lifecycle-scripts.js +935 -0
  138. package/dist/services/app-common/lifecycle-scripts.js.map +1 -0
  139. package/dist/services/app-common/lifecycle-service.d.ts +68 -0
  140. package/dist/services/app-common/lifecycle-service.js +475 -0
  141. package/dist/services/app-common/lifecycle-service.js.map +1 -0
  142. package/dist/services/app-common/ownership.d.ts +3 -0
  143. package/dist/services/app-common/ownership.js +11 -0
  144. package/dist/services/app-common/ownership.js.map +1 -0
  145. package/dist/services/app-common/paths.d.ts +29 -0
  146. package/dist/services/app-common/paths.js +34 -0
  147. package/dist/services/app-common/paths.js.map +1 -0
  148. package/dist/services/app-common/platform-transform.d.ts +32 -0
  149. package/dist/services/app-common/platform-transform.js +65 -0
  150. package/dist/services/app-common/platform-transform.js.map +1 -0
  151. package/dist/services/app-common/provide-resolver.d.ts +29 -0
  152. package/dist/services/app-common/provide-resolver.js +129 -0
  153. package/dist/services/app-common/provide-resolver.js.map +1 -0
  154. package/dist/services/app-common/remote-spec.d.ts +14 -0
  155. package/dist/services/app-common/remote-spec.js +58 -0
  156. package/dist/services/app-common/remote-spec.js.map +1 -0
  157. package/dist/services/app-common/runtime-builder.d.ts +1 -0
  158. package/dist/services/app-common/runtime-builder.js +2 -0
  159. package/dist/services/app-common/runtime-builder.js.map +1 -0
  160. package/dist/services/app-common/runtime-facts.d.ts +19 -0
  161. package/dist/services/app-common/runtime-facts.js +128 -0
  162. package/dist/services/app-common/runtime-facts.js.map +1 -0
  163. package/dist/services/app-common/service.d.ts +9 -0
  164. package/dist/services/app-common/service.js +10 -0
  165. package/dist/services/app-common/service.js.map +1 -0
  166. package/dist/services/app-common/spec-materializer.d.ts +8 -0
  167. package/dist/services/app-common/spec-materializer.js +295 -0
  168. package/dist/services/app-common/spec-materializer.js.map +1 -0
  169. package/dist/services/app-common/status-refresh.d.ts +33 -0
  170. package/dist/services/app-common/status-refresh.js +771 -0
  171. package/dist/services/app-common/status-refresh.js.map +1 -0
  172. package/dist/services/app-common/task-service.d.ts +29 -0
  173. package/dist/services/app-common/task-service.js +93 -0
  174. package/dist/services/app-common/task-service.js.map +1 -0
  175. package/dist/services/app-common/terminal-session-manager.js +157 -0
  176. package/dist/services/app-common/terminal-session-manager.js.map +1 -0
  177. package/dist/services/app-modules/browserless/routes.d.ts +9 -0
  178. package/dist/services/app-modules/browserless/routes.js +519 -0
  179. package/dist/services/app-modules/browserless/routes.js.map +1 -0
  180. package/dist/services/app-modules/routes.d.ts +2 -0
  181. package/dist/services/app-modules/routes.js +5 -0
  182. package/dist/services/app-modules/routes.js.map +1 -0
  183. package/dist/services/backup/backup-admin.d.ts +95 -0
  184. package/dist/services/backup/backup-admin.js +246 -0
  185. package/dist/services/backup/backup-admin.js.map +1 -0
  186. package/dist/services/backup/backup-manager.d.ts +264 -0
  187. package/dist/services/backup/backup-manager.js +2318 -0
  188. package/dist/services/backup/backup-manager.js.map +1 -0
  189. package/dist/services/backup/backup-verify.js +240 -0
  190. package/dist/services/backup/backup-verify.js.map +1 -0
  191. package/dist/services/capabilities/browser-policy.d.ts +14 -0
  192. package/dist/services/capabilities/browser-policy.js +141 -0
  193. package/dist/services/capabilities/browser-policy.js.map +1 -0
  194. package/dist/services/capabilities/contract.d.ts +49 -0
  195. package/dist/services/capabilities/contract.js +119 -0
  196. package/dist/services/capabilities/contract.js.map +1 -0
  197. package/dist/services/capabilities/endpoint-validator.d.ts +42 -0
  198. package/dist/services/capabilities/endpoint-validator.js +113 -0
  199. package/dist/services/capabilities/endpoint-validator.js.map +1 -0
  200. package/dist/services/capabilities/health.d.ts +16 -0
  201. package/dist/services/capabilities/health.js +121 -0
  202. package/dist/services/capabilities/health.js.map +1 -0
  203. package/dist/services/capabilities/registry.d.ts +56 -0
  204. package/dist/services/capabilities/registry.js +222 -0
  205. package/dist/services/capabilities/registry.js.map +1 -0
  206. package/dist/services/capabilities/sync.d.ts +7 -0
  207. package/dist/services/capabilities/sync.js +223 -0
  208. package/dist/services/capabilities/sync.js.map +1 -0
  209. package/dist/services/capability-proxy/html-rewriters/browserless.d.ts +1 -0
  210. package/dist/services/capability-proxy/html-rewriters/browserless.js +83 -0
  211. package/dist/services/capability-proxy/html-rewriters/browserless.js.map +1 -0
  212. package/dist/services/capability-proxy/html-rewriters/index.d.ts +12 -0
  213. package/dist/services/capability-proxy/html-rewriters/index.js +25 -0
  214. package/dist/services/capability-proxy/html-rewriters/index.js.map +1 -0
  215. package/dist/services/capability-proxy/html-rewriters/jishukb.d.ts +1 -0
  216. package/dist/services/capability-proxy/html-rewriters/jishukb.js +161 -0
  217. package/dist/services/capability-proxy/html-rewriters/jishukb.js.map +1 -0
  218. package/dist/services/capability-proxy/http.d.ts +7 -0
  219. package/dist/services/capability-proxy/http.js +555 -0
  220. package/dist/services/capability-proxy/http.js.map +1 -0
  221. package/dist/services/capability-proxy/terminal.d.ts +4 -0
  222. package/dist/services/capability-proxy/terminal.js +179 -0
  223. package/dist/services/capability-proxy/terminal.js.map +1 -0
  224. package/dist/services/connections/admin.d.ts +80 -0
  225. package/dist/services/connections/admin.js +337 -0
  226. package/dist/services/connections/admin.js.map +1 -0
  227. package/dist/services/connections/apply.d.ts +104 -0
  228. package/dist/services/connections/apply.js +415 -0
  229. package/dist/services/connections/apply.js.map +1 -0
  230. package/dist/services/connections/resolver.d.ts +82 -0
  231. package/dist/services/connections/resolver.js +289 -0
  232. package/dist/services/connections/resolver.js.map +1 -0
  233. package/dist/services/connections/transactor.d.ts +39 -0
  234. package/dist/services/connections/transactor.js +307 -0
  235. package/dist/services/connections/transactor.js.map +1 -0
  236. package/dist/services/files/bootstrap.d.ts +7 -0
  237. package/dist/services/files/bootstrap.js +16 -0
  238. package/dist/services/files/bootstrap.js.map +1 -0
  239. package/dist/services/files/external-mounts.js +187 -0
  240. package/dist/services/files/external-mounts.js.map +1 -0
  241. package/dist/services/files/files-manager.d.ts +265 -0
  242. package/dist/services/files/files-manager.js +1189 -0
  243. package/dist/services/files/files-manager.js.map +1 -0
  244. package/dist/services/files/files-mounts.d.ts +42 -0
  245. package/dist/services/files/files-mounts.js +207 -0
  246. package/dist/services/files/files-mounts.js.map +1 -0
  247. package/dist/services/files/organize/applier.js +218 -0
  248. package/dist/services/files/organize/applier.js.map +1 -0
  249. package/dist/services/files/organize/rules.js +286 -0
  250. package/dist/services/files/organize/rules.js.map +1 -0
  251. package/dist/services/files/organize/scanner.js +366 -0
  252. package/dist/services/files/organize/scanner.js.map +1 -0
  253. package/dist/services/files/organize/store.js +82 -0
  254. package/dist/services/files/organize/store.js.map +1 -0
  255. package/dist/services/files/photos/upload-page.d.ts +2 -0
  256. package/dist/services/files/photos/upload-page.js +248 -0
  257. package/dist/services/files/photos/upload-page.js.map +1 -0
  258. package/dist/services/files/photos/upload-store.d.ts +74 -0
  259. package/dist/services/files/photos/upload-store.js +432 -0
  260. package/dist/services/files/photos/upload-store.js.map +1 -0
  261. package/dist/services/files/webdav/server.d.ts +47 -0
  262. package/dist/services/files/webdav/server.js +329 -0
  263. package/dist/services/files/webdav/server.js.map +1 -0
  264. package/dist/services/files/webdav/xml-builder.js.map +1 -0
  265. package/dist/services/http/proxy-utils.d.ts +7 -0
  266. package/dist/services/http/proxy-utils.js +29 -0
  267. package/dist/services/http/proxy-utils.js.map +1 -0
  268. package/dist/services/http/request-utils.d.ts +3 -0
  269. package/dist/services/http/request-utils.js +23 -0
  270. package/dist/services/http/request-utils.js.map +1 -0
  271. package/dist/services/instances/admin.d.ts +23 -0
  272. package/dist/services/instances/admin.js +218 -0
  273. package/dist/services/instances/admin.js.map +1 -0
  274. package/dist/services/instances/clone.d.ts +26 -0
  275. package/dist/services/instances/clone.js +78 -0
  276. package/dist/services/instances/clone.js.map +1 -0
  277. package/dist/services/instances/config-admin.d.ts +17 -0
  278. package/dist/services/instances/config-admin.js +181 -0
  279. package/dist/services/instances/config-admin.js.map +1 -0
  280. package/dist/services/instances/manager.d.ts +232 -0
  281. package/dist/services/instances/manager.js +1342 -0
  282. package/dist/services/instances/manager.js.map +1 -0
  283. package/dist/services/instances/pairing.d.ts +17 -0
  284. package/dist/services/instances/pairing.js +53 -0
  285. package/dist/services/instances/pairing.js.map +1 -0
  286. package/dist/services/instances/passwords.js +173 -0
  287. package/dist/services/instances/passwords.js.map +1 -0
  288. package/dist/services/instances/status.d.ts +2 -0
  289. package/dist/services/instances/status.js +11 -0
  290. package/dist/services/instances/status.js.map +1 -0
  291. package/dist/services/instances/types.d.ts +21 -0
  292. package/dist/services/instances/types.js +2 -0
  293. package/dist/services/instances/types.js.map +1 -0
  294. package/dist/services/integrations/anythingllm/integration.d.ts +25 -0
  295. package/dist/services/integrations/anythingllm/integration.js +251 -0
  296. package/dist/services/integrations/anythingllm/integration.js.map +1 -0
  297. package/dist/services/integrations/catalog.d.ts +3 -0
  298. package/dist/services/integrations/catalog.js +73 -0
  299. package/dist/services/integrations/catalog.js.map +1 -0
  300. package/dist/services/integrations/custom/integration.d.ts +28 -0
  301. package/dist/services/integrations/custom/integration.js +179 -0
  302. package/dist/services/integrations/custom/integration.js.map +1 -0
  303. package/dist/services/integrations/hermes/integration.d.ts +194 -0
  304. package/dist/services/integrations/hermes/integration.js +1668 -0
  305. package/dist/services/integrations/hermes/integration.js.map +1 -0
  306. package/dist/services/integrations/immich/client.d.ts +93 -0
  307. package/dist/services/integrations/immich/client.js +458 -0
  308. package/dist/services/integrations/immich/client.js.map +1 -0
  309. package/dist/services/integrations/immich/config.d.ts +15 -0
  310. package/dist/services/integrations/immich/config.js +178 -0
  311. package/dist/services/integrations/immich/config.js.map +1 -0
  312. package/dist/services/integrations/immich/discovery.d.ts +9 -0
  313. package/dist/services/integrations/immich/discovery.js +101 -0
  314. package/dist/services/integrations/immich/discovery.js.map +1 -0
  315. package/dist/services/integrations/immich/gallery-renderer.d.ts +5 -0
  316. package/dist/services/integrations/immich/gallery-renderer.js +150 -0
  317. package/dist/services/integrations/immich/gallery-renderer.js.map +1 -0
  318. package/dist/services/integrations/immich/immich-shim.d.ts +11 -0
  319. package/dist/services/integrations/immich/immich-shim.js +439 -0
  320. package/dist/services/integrations/immich/immich-shim.js.map +1 -0
  321. package/dist/services/integrations/immich/integration.d.ts +18 -0
  322. package/dist/services/integrations/immich/integration.js +64 -0
  323. package/dist/services/integrations/immich/integration.js.map +1 -0
  324. package/dist/services/integrations/immich/photo-library.d.ts +4 -0
  325. package/dist/services/integrations/immich/photo-library.js +63 -0
  326. package/dist/services/integrations/immich/photo-library.js.map +1 -0
  327. package/dist/services/integrations/immich/review-executor.d.ts +3 -0
  328. package/dist/services/integrations/immich/review-executor.js +41 -0
  329. package/dist/services/integrations/immich/review-executor.js.map +1 -0
  330. package/dist/services/integrations/immich/review-session-service.d.ts +27 -0
  331. package/dist/services/integrations/immich/review-session-service.js +206 -0
  332. package/dist/services/integrations/immich/review-session-service.js.map +1 -0
  333. package/dist/services/integrations/immich/review-store.d.ts +47 -0
  334. package/dist/services/integrations/immich/review-store.js +347 -0
  335. package/dist/services/integrations/immich/review-store.js.map +1 -0
  336. package/dist/services/integrations/immich/routes.d.ts +7 -0
  337. package/dist/services/integrations/immich/routes.js +363 -0
  338. package/dist/services/integrations/immich/routes.js.map +1 -0
  339. package/dist/services/integrations/immich/types.d.ts +186 -0
  340. package/dist/services/integrations/immich/types.js +2 -0
  341. package/dist/services/integrations/immich/types.js.map +1 -0
  342. package/dist/services/integrations/index.d.ts +41 -0
  343. package/dist/services/integrations/index.js +60 -0
  344. package/dist/services/integrations/index.js.map +1 -0
  345. package/dist/services/integrations/installable/catalog.d.ts +33 -0
  346. package/dist/services/integrations/installable/catalog.js +88 -0
  347. package/dist/services/integrations/installable/catalog.js.map +1 -0
  348. package/dist/services/integrations/installable/index.d.ts +35 -0
  349. package/dist/services/integrations/installable/index.js +170 -0
  350. package/dist/services/integrations/installable/index.js.map +1 -0
  351. package/dist/services/integrations/installable/installers/integration-probes.d.ts +50 -0
  352. package/dist/services/integrations/installable/installers/integration-probes.js +231 -0
  353. package/dist/services/integrations/installable/installers/integration-probes.js.map +1 -0
  354. package/dist/services/integrations/installable/installers/integration.d.ts +30 -0
  355. package/dist/services/integrations/installable/installers/integration.js +283 -0
  356. package/dist/services/integrations/installable/installers/integration.js.map +1 -0
  357. package/dist/services/integrations/installable/installers/registry-probe.js.map +1 -0
  358. package/dist/services/integrations/installable/installers/shell-script.d.ts +46 -0
  359. package/dist/services/integrations/installable/installers/shell-script.js +487 -0
  360. package/dist/services/integrations/installable/installers/shell-script.js.map +1 -0
  361. package/dist/services/integrations/installable/types.d.ts +130 -0
  362. package/dist/services/integrations/installable/types.js +19 -0
  363. package/dist/services/integrations/installable/types.js.map +1 -0
  364. package/dist/services/integrations/jishukb/integration.d.ts +24 -0
  365. package/dist/services/integrations/jishukb/integration.js +300 -0
  366. package/dist/services/integrations/jishukb/integration.js.map +1 -0
  367. package/dist/services/integrations/openclaw/anythingllm-shim.d.ts +46 -0
  368. package/dist/services/integrations/openclaw/anythingllm-shim.js +281 -0
  369. package/dist/services/integrations/openclaw/anythingllm-shim.js.map +1 -0
  370. package/dist/services/integrations/openclaw/drive-shim.js +490 -0
  371. package/dist/services/integrations/openclaw/drive-shim.js.map +1 -0
  372. package/dist/services/integrations/openclaw/integration.d.ts +438 -0
  373. package/dist/services/integrations/openclaw/integration.js +4629 -0
  374. package/dist/services/integrations/openclaw/integration.js.map +1 -0
  375. package/dist/services/integrations/openclaw/jishukb-native-mcp.d.ts +58 -0
  376. package/dist/services/integrations/openclaw/jishukb-native-mcp.js +373 -0
  377. package/dist/services/integrations/openclaw/jishukb-native-mcp.js.map +1 -0
  378. package/dist/services/integrations/openclaw/jishukb-shim.d.ts +52 -0
  379. package/dist/services/integrations/openclaw/jishukb-shim.js +1357 -0
  380. package/dist/services/integrations/openclaw/jishukb-shim.js.map +1 -0
  381. package/dist/services/integrations/openclaw/mcporter-lite.js +276 -0
  382. package/dist/services/integrations/openclaw/mcporter-lite.js.map +1 -0
  383. package/dist/services/integrations/openclaw/mcporter.d.ts +59 -0
  384. package/dist/services/integrations/openclaw/mcporter.js +143 -0
  385. package/dist/services/integrations/openclaw/mcporter.js.map +1 -0
  386. package/dist/services/integrations/openclaw/native-mcp.d.ts +48 -0
  387. package/dist/services/integrations/openclaw/native-mcp.js +125 -0
  388. package/dist/services/integrations/openclaw/native-mcp.js.map +1 -0
  389. package/dist/services/integrations/openclaw/routes.d.ts +21 -0
  390. package/dist/services/integrations/openclaw/routes.js +1194 -0
  391. package/dist/services/integrations/openclaw/routes.js.map +1 -0
  392. package/dist/services/integrations/registry.d.ts +17 -0
  393. package/dist/services/integrations/registry.js +36 -0
  394. package/dist/services/integrations/registry.js.map +1 -0
  395. package/dist/services/integrations/routes.d.ts +2 -0
  396. package/dist/services/integrations/routes.js +9 -0
  397. package/dist/services/integrations/routes.js.map +1 -0
  398. package/dist/services/integrations/types.d.ts +457 -0
  399. package/dist/services/integrations/types.js +2 -0
  400. package/dist/services/integrations/types.js.map +1 -0
  401. package/dist/services/legacy-migrator/classifier.d.ts +44 -0
  402. package/dist/services/legacy-migrator/classifier.js +309 -0
  403. package/dist/services/legacy-migrator/classifier.js.map +1 -0
  404. package/dist/services/legacy-migrator/executor.d.ts +42 -0
  405. package/dist/services/legacy-migrator/executor.js +637 -0
  406. package/dist/services/legacy-migrator/executor.js.map +1 -0
  407. package/dist/services/legacy-migrator/index.d.ts +31 -0
  408. package/dist/services/legacy-migrator/index.js +34 -0
  409. package/dist/services/legacy-migrator/index.js.map +1 -0
  410. package/dist/services/legacy-migrator/planner.d.ts +8 -0
  411. package/dist/services/legacy-migrator/planner.js +154 -0
  412. package/dist/services/legacy-migrator/planner.js.map +1 -0
  413. package/dist/services/legacy-migrator/provider-settings.d.ts +6 -0
  414. package/dist/services/legacy-migrator/provider-settings.js +72 -0
  415. package/dist/services/legacy-migrator/provider-settings.js.map +1 -0
  416. package/dist/services/legacy-migrator/report.d.ts +9 -0
  417. package/dist/services/legacy-migrator/report.js +99 -0
  418. package/dist/services/legacy-migrator/report.js.map +1 -0
  419. package/dist/services/legacy-migrator/scanner.d.ts +13 -0
  420. package/dist/services/legacy-migrator/scanner.js +157 -0
  421. package/dist/services/legacy-migrator/scanner.js.map +1 -0
  422. package/dist/services/legacy-migrator/types.d.ts +97 -0
  423. package/dist/services/legacy-migrator/types.js +23 -0
  424. package/dist/services/legacy-migrator/types.js.map +1 -0
  425. package/dist/services/llm-proxy/instance-proxy.d.ts +17 -1
  426. package/dist/services/llm-proxy/instance-proxy.js +171 -44
  427. package/dist/services/llm-proxy/instance-proxy.js.map +1 -1
  428. package/dist/services/llm-proxy/probe.js +5 -14
  429. package/dist/services/llm-proxy/probe.js.map +1 -1
  430. package/dist/services/llm-proxy/providers.js +23 -31
  431. package/dist/services/llm-proxy/providers.js.map +1 -1
  432. package/dist/services/llm-proxy/ssrf.d.ts +11 -4
  433. package/dist/services/llm-proxy/ssrf.js +45 -7
  434. package/dist/services/llm-proxy/ssrf.js.map +1 -1
  435. package/dist/services/llm-proxy/validate-key.js +16 -37
  436. package/dist/services/llm-proxy/validate-key.js.map +1 -1
  437. package/dist/services/repair/runtime-repair.d.ts +22 -0
  438. package/dist/services/repair/runtime-repair.js +374 -0
  439. package/dist/services/repair/runtime-repair.js.map +1 -0
  440. package/dist/services/runtime/docker-network.d.ts +8 -0
  441. package/dist/services/runtime/docker-network.js +123 -0
  442. package/dist/services/runtime/docker-network.js.map +1 -0
  443. package/dist/services/runtime/driver-registry.d.ts +25 -0
  444. package/dist/services/runtime/driver-registry.js +22 -0
  445. package/dist/services/runtime/driver-registry.js.map +1 -0
  446. package/dist/services/runtime/drivers/nomad.d.ts +261 -0
  447. package/dist/services/runtime/drivers/nomad.js +3122 -0
  448. package/dist/services/runtime/drivers/nomad.js.map +1 -0
  449. package/dist/services/runtime/errors.d.ts +3 -3
  450. package/dist/services/runtime/errors.js +3 -3
  451. package/dist/services/runtime/instance.d.ts +14 -16
  452. package/dist/services/runtime/instance.js +93 -123
  453. package/dist/services/runtime/instance.js.map +1 -1
  454. package/dist/services/runtime/job-id.d.ts +1 -1
  455. package/dist/services/runtime/job-id.js +1 -1
  456. package/dist/services/runtime/mcp-shims/firewall.d.ts +2 -2
  457. package/dist/services/runtime/mcp-shims/firewall.js +2 -2
  458. package/dist/services/runtime/mcp-shims/searxng-shim.d.ts +3 -5
  459. package/dist/services/runtime/mcp-shims/searxng-shim.js +3 -5
  460. package/dist/services/runtime/mcp-shims/searxng-shim.js.map +1 -1
  461. package/dist/services/runtime/mcp-shims/write-mcp-entry.d.ts +20 -20
  462. package/dist/services/runtime/mcp-shims/write-mcp-entry.js +16 -16
  463. package/dist/services/runtime/mcp-shims/write-mcp-entry.js.map +1 -1
  464. package/dist/services/runtime/ownership-marker.d.ts +83 -0
  465. package/dist/services/runtime/ownership-marker.js +109 -0
  466. package/dist/services/runtime/ownership-marker.js.map +1 -0
  467. package/dist/services/runtime/service-manager.d.ts +2 -0
  468. package/dist/services/runtime/service-manager.js +18 -0
  469. package/dist/services/runtime/service-manager.js.map +1 -0
  470. package/dist/services/runtime/types.d.ts +23 -501
  471. package/dist/services/runtime/types.js +0 -12
  472. package/dist/services/runtime/types.js.map +1 -1
  473. package/dist/services/runtime/workload-compiler.d.ts +17 -0
  474. package/dist/services/runtime/workload-compiler.js +550 -0
  475. package/dist/services/runtime/workload-compiler.js.map +1 -0
  476. package/dist/services/runtime/workload-types.d.ts +11 -0
  477. package/dist/services/runtime/workload-types.js +2 -0
  478. package/dist/services/runtime/workload-types.js.map +1 -0
  479. package/dist/services/setup/core-manager.d.ts +50 -0
  480. package/dist/services/setup/core-manager.js +456 -0
  481. package/dist/services/setup/core-manager.js.map +1 -0
  482. package/dist/services/setup/plugin-installer.js +136 -0
  483. package/dist/services/setup/plugin-installer.js.map +1 -0
  484. package/dist/services/setup/setup-manager.d.ts +158 -0
  485. package/dist/services/setup/setup-manager.js +2724 -0
  486. package/dist/services/setup/setup-manager.js.map +1 -0
  487. package/dist/services/system/cli-command.d.ts +5 -0
  488. package/dist/services/system/cli-command.js +18 -0
  489. package/dist/services/system/cli-command.js.map +1 -0
  490. package/dist/services/system/macos-launchd.js +312 -0
  491. package/dist/services/system/macos-launchd.js.map +1 -0
  492. package/dist/services/system/repair-orchestrator.d.ts +71 -0
  493. package/dist/services/system/repair-orchestrator.js +412 -0
  494. package/dist/services/system/repair-orchestrator.js.map +1 -0
  495. package/dist/services/system/runtime-ownership.d.ts +36 -0
  496. package/dist/services/system/runtime-ownership.js +250 -0
  497. package/dist/services/system/runtime-ownership.js.map +1 -0
  498. package/dist/services/system/system-monitor.js +96 -0
  499. package/dist/services/system/system-monitor.js.map +1 -0
  500. package/dist/services/system/system-ollama-provider.d.ts +14 -0
  501. package/dist/services/system/system-ollama-provider.js +129 -0
  502. package/dist/services/system/system-ollama-provider.js.map +1 -0
  503. package/dist/services/system/system-reconciler.d.ts +59 -0
  504. package/dist/services/system/system-reconciler.js +763 -0
  505. package/dist/services/system/system-reconciler.js.map +1 -0
  506. package/dist/services/system/update-manager.d.ts +43 -0
  507. package/dist/services/system/update-manager.js +315 -0
  508. package/dist/services/system/update-manager.js.map +1 -0
  509. package/dist/services/system/upgrade-finalize.d.ts +80 -0
  510. package/dist/services/system/upgrade-finalize.js +507 -0
  511. package/dist/services/system/upgrade-finalize.js.map +1 -0
  512. package/dist/services/tasks/registry.d.ts +44 -0
  513. package/dist/services/tasks/registry.js +90 -0
  514. package/dist/services/tasks/registry.js.map +1 -0
  515. package/dist/services/telemetry/activation.d.ts +6 -2
  516. package/dist/services/telemetry/activation.js +6 -2
  517. package/dist/services/telemetry/activation.js.map +1 -1
  518. package/dist/services/telemetry/heartbeat.d.ts +6 -2
  519. package/dist/services/telemetry/heartbeat.js +6 -2
  520. package/dist/services/telemetry/heartbeat.js.map +1 -1
  521. package/dist/services/workspaces/builder.d.ts +29 -0
  522. package/dist/services/workspaces/builder.js +186 -0
  523. package/dist/services/workspaces/builder.js.map +1 -0
  524. package/dist/types.d.ts +350 -48
  525. package/dist/utils/instance-lock.d.ts +2 -2
  526. package/dist/utils/instance-lock.js +2 -2
  527. package/dist/utils/path-safety.js +1 -1
  528. package/dist/utils/service-user.d.ts +13 -0
  529. package/dist/utils/service-user.js +129 -0
  530. package/dist/utils/service-user.js.map +1 -0
  531. package/install/jishu-install.sh +107 -27
  532. package/install/jishu-uninstall.sh +8 -0
  533. package/install/post-install.sh +162 -185
  534. package/install/post-uninstall.sh +6 -0
  535. package/node_modules/@fastify/static/.github/workflows/ci.yml +1 -1
  536. package/node_modules/@fastify/static/.github/workflows/lock-threads.yml +19 -0
  537. package/node_modules/@fastify/static/LICENSE +1 -3
  538. package/node_modules/@fastify/static/example/server-benchmark.js +39 -0
  539. package/node_modules/@fastify/static/index.js +169 -23
  540. package/node_modules/@fastify/static/lib/dirList.js +20 -6
  541. package/node_modules/@fastify/static/package.json +10 -8
  542. package/node_modules/@fastify/static/test/dir-list.test.js +82 -0
  543. package/node_modules/@fastify/static/test/static.test.js +326 -4
  544. package/node_modules/@fastify/static/types/index.d.ts +0 -4
  545. package/node_modules/@fastify/static/types/index.test-d.ts +1 -1
  546. package/node_modules/brace-expansion/dist/commonjs/index.js +24 -14
  547. package/node_modules/brace-expansion/dist/commonjs/index.js.map +1 -1
  548. package/node_modules/brace-expansion/dist/esm/index.js +24 -14
  549. package/node_modules/brace-expansion/dist/esm/index.js.map +1 -1
  550. package/node_modules/brace-expansion/package.json +2 -2
  551. package/node_modules/content-disposition/README.md +21 -22
  552. package/node_modules/content-disposition/index.js +122 -44
  553. package/node_modules/content-disposition/package.json +16 -20
  554. package/node_modules/fast-uri/index.js +1 -1
  555. package/node_modules/fast-uri/package.json +1 -1
  556. package/node_modules/fast-uri/test/security.test.js +28 -0
  557. package/node_modules/fastify/SECURITY.md +1 -1
  558. package/node_modules/fastify/SPONSORS.md +6 -4
  559. package/node_modules/fastify/docs/Guides/Database.md +0 -28
  560. package/node_modules/fastify/docs/Guides/Ecosystem.md +13 -2
  561. package/node_modules/fastify/docs/Guides/Serverless.md +2 -2
  562. package/node_modules/fastify/docs/Guides/Write-Plugin.md +1 -1
  563. package/node_modules/fastify/docs/Reference/Encapsulation.md +27 -26
  564. package/node_modules/fastify/docs/Reference/Errors.md +10 -4
  565. package/node_modules/fastify/docs/Reference/HTTP2.md +10 -10
  566. package/node_modules/fastify/docs/Reference/Hooks.md +4 -4
  567. package/node_modules/fastify/docs/Reference/Index.md +14 -16
  568. package/node_modules/fastify/docs/Reference/LTS.md +12 -13
  569. package/node_modules/fastify/docs/Reference/Lifecycle.md +9 -8
  570. package/node_modules/fastify/docs/Reference/Logging.md +44 -39
  571. package/node_modules/fastify/docs/Reference/Middleware.md +21 -25
  572. package/node_modules/fastify/docs/Reference/Principles.md +2 -2
  573. package/node_modules/fastify/docs/Reference/Reply.md +6 -1
  574. package/node_modules/fastify/docs/Reference/Request.md +27 -16
  575. package/node_modules/fastify/docs/Reference/Routes.md +5 -2
  576. package/node_modules/fastify/docs/Reference/Server.md +31 -3
  577. package/node_modules/fastify/docs/Reference/Type-Providers.md +29 -5
  578. package/node_modules/fastify/docs/Reference/Validation-and-Serialization.md +15 -2
  579. package/node_modules/fastify/docs/Reference/Warnings.md +7 -6
  580. package/node_modules/fastify/eslint.config.js +7 -2
  581. package/node_modules/fastify/fastify.d.ts +8 -3
  582. package/node_modules/fastify/fastify.js +43 -14
  583. package/node_modules/fastify/lib/content-type-parser.js +13 -1
  584. package/node_modules/fastify/lib/decorate.js +11 -3
  585. package/node_modules/fastify/lib/error-handler.js +4 -3
  586. package/node_modules/fastify/lib/error-serializer.js +59 -59
  587. package/node_modules/fastify/lib/errors.js +16 -1
  588. package/node_modules/fastify/lib/four-oh-four.js +14 -9
  589. package/node_modules/fastify/lib/handle-request.js +11 -5
  590. package/node_modules/fastify/lib/plugin-override.js +2 -1
  591. package/node_modules/fastify/lib/plugin-utils.js +5 -5
  592. package/node_modules/fastify/lib/reply.js +63 -8
  593. package/node_modules/fastify/lib/request.js +14 -4
  594. package/node_modules/fastify/lib/route.js +20 -6
  595. package/node_modules/fastify/lib/schema-controller.js +1 -1
  596. package/node_modules/fastify/lib/schemas.js +37 -30
  597. package/node_modules/fastify/lib/symbols.js +3 -1
  598. package/node_modules/fastify/lib/validation.js +1 -13
  599. package/node_modules/fastify/lib/warnings.js +3 -3
  600. package/node_modules/fastify/package.json +13 -15
  601. package/node_modules/fastify/scripts/validate-ecosystem-links.js +1 -0
  602. package/node_modules/fastify/test/bundler/esbuild/package.json +1 -1
  603. package/node_modules/fastify/test/close-pipelining.test.js +1 -2
  604. package/node_modules/fastify/test/custom-http-server.test.js +38 -0
  605. package/node_modules/fastify/test/decorator-instance-properties.test.js +63 -0
  606. package/node_modules/fastify/test/diagnostics-channel/async-error-handler.test.js +74 -0
  607. package/node_modules/fastify/test/hooks.test.js +23 -0
  608. package/node_modules/fastify/test/http-methods/get.test.js +1 -1
  609. package/node_modules/fastify/test/http2/plain.test.js +135 -0
  610. package/node_modules/fastify/test/http2/secure-with-fallback.test.js +1 -1
  611. package/node_modules/fastify/test/https/https.test.js +1 -2
  612. package/node_modules/fastify/test/internals/errors.test.js +31 -1
  613. package/node_modules/fastify/test/internals/plugin.test.js +3 -1
  614. package/node_modules/fastify/test/internals/request.test.js +27 -3
  615. package/node_modules/fastify/test/internals/schema-controller-perf.test.js +33 -0
  616. package/node_modules/fastify/test/logger/logging.test.js +18 -1
  617. package/node_modules/fastify/test/logger/options.test.js +38 -1
  618. package/node_modules/fastify/test/reply-error.test.js +1 -1
  619. package/node_modules/fastify/test/reply-trailers.test.js +70 -0
  620. package/node_modules/fastify/test/request-media-type.test.js +105 -0
  621. package/node_modules/fastify/test/route-prefix.test.js +34 -0
  622. package/node_modules/fastify/test/router-options.test.js +222 -11
  623. package/node_modules/fastify/test/schema-serialization.test.js +108 -0
  624. package/node_modules/fastify/test/schema-validation.test.js +24 -0
  625. package/node_modules/fastify/test/scripts/validate-ecosystem-links.test.js +40 -57
  626. package/node_modules/fastify/test/throw.test.js +14 -0
  627. package/node_modules/fastify/test/trust-proxy.test.js +21 -0
  628. package/node_modules/fastify/test/types/content-type-parser.tst.ts +70 -0
  629. package/node_modules/fastify/test/types/decorate-request-reply.tst.ts +18 -0
  630. package/node_modules/fastify/test/types/dummy-plugin.mts +9 -0
  631. package/node_modules/fastify/test/types/errors.tst.ts +91 -0
  632. package/node_modules/fastify/test/types/fastify.tst.ts +351 -0
  633. package/node_modules/fastify/test/types/hooks.tst.ts +578 -0
  634. package/node_modules/fastify/test/types/instance.tst.ts +597 -0
  635. package/node_modules/fastify/test/types/logger.tst.ts +276 -0
  636. package/node_modules/fastify/test/types/plugin.tst.ts +96 -0
  637. package/node_modules/fastify/test/types/register.tst.ts +245 -0
  638. package/node_modules/fastify/test/types/reply.tst.ts +297 -0
  639. package/node_modules/fastify/test/types/request.tst.ts +199 -0
  640. package/node_modules/fastify/test/types/route.tst.ts +576 -0
  641. package/node_modules/fastify/test/types/schema.tst.ts +135 -0
  642. package/node_modules/fastify/test/types/serverFactory.tst.ts +37 -0
  643. package/node_modules/fastify/test/types/tsconfig.json +9 -0
  644. package/node_modules/fastify/test/types/type-provider.tst.ts +1219 -0
  645. package/node_modules/fastify/test/types/using.tst.ts +14 -0
  646. package/node_modules/fastify/types/errors.d.ts +3 -0
  647. package/node_modules/fastify/types/request.d.ts +23 -2
  648. package/node_modules/glob/README.md +39 -130
  649. package/node_modules/glob/dist/commonjs/glob.d.ts +8 -0
  650. package/node_modules/glob/dist/commonjs/glob.d.ts.map +1 -1
  651. package/node_modules/glob/dist/commonjs/glob.js +2 -1
  652. package/node_modules/glob/dist/commonjs/glob.js.map +1 -1
  653. package/node_modules/glob/dist/commonjs/index.min.js +4 -0
  654. package/node_modules/glob/dist/commonjs/index.min.js.map +7 -0
  655. package/node_modules/glob/dist/commonjs/pattern.d.ts +3 -0
  656. package/node_modules/glob/dist/commonjs/pattern.d.ts.map +1 -1
  657. package/node_modules/glob/dist/commonjs/pattern.js +4 -0
  658. package/node_modules/glob/dist/commonjs/pattern.js.map +1 -1
  659. package/node_modules/glob/dist/esm/glob.d.ts +8 -0
  660. package/node_modules/glob/dist/esm/glob.d.ts.map +1 -1
  661. package/node_modules/glob/dist/esm/glob.js +2 -1
  662. package/node_modules/glob/dist/esm/glob.js.map +1 -1
  663. package/node_modules/glob/dist/esm/index.min.js +4 -0
  664. package/node_modules/glob/dist/esm/index.min.js.map +7 -0
  665. package/node_modules/glob/dist/esm/pattern.d.ts +3 -0
  666. package/node_modules/glob/dist/esm/pattern.d.ts.map +1 -1
  667. package/node_modules/glob/dist/esm/pattern.js +4 -0
  668. package/node_modules/glob/dist/esm/pattern.js.map +1 -1
  669. package/node_modules/glob/package.json +38 -37
  670. package/node_modules/jishushell-panel/README.md +4 -4
  671. package/node_modules/jishushell-panel/output/dist/server.js +17 -6
  672. package/node_modules/jishushell-panel/output/dist/server.js.map +1 -1
  673. package/node_modules/jishushell-panel/output/public/assets/ApiKeyField-Ce5d1xna.js +1 -0
  674. package/node_modules/jishushell-panel/output/public/assets/Dashboard-BXame3yg.js +1 -0
  675. package/node_modules/jishushell-panel/output/public/assets/HermesChatPanel-BHZtPCJd.js +1 -0
  676. package/node_modules/jishushell-panel/output/public/assets/HermesConfigForm-CB3GbNX9.js +4 -0
  677. package/node_modules/jishushell-panel/output/public/assets/InitPassword-Boab9F6g.js +1 -0
  678. package/node_modules/jishushell-panel/output/public/assets/InstanceDetail-DrIWCqo-.js +14 -0
  679. package/node_modules/jishushell-panel/output/public/assets/Login-CzpOkNau.js +1 -0
  680. package/node_modules/jishushell-panel/output/public/assets/NewInstance-CANXyCcL.js +1 -0
  681. package/node_modules/jishushell-panel/output/public/assets/ProviderRecommendations-BABo9VOC.js +1 -0
  682. package/node_modules/jishushell-panel/output/public/assets/Settings-CKp5XxFh.js +1 -0
  683. package/node_modules/jishushell-panel/output/public/assets/Setup-C7xVDPow.js +1 -0
  684. package/node_modules/jishushell-panel/output/public/assets/WeixinLoginPanel-B765Xz4C.js +1 -0
  685. package/node_modules/jishushell-panel/output/public/assets/api-C70Gt678.js +4 -0
  686. package/node_modules/jishushell-panel/output/public/assets/index-Bs6DSbiR.js +23 -0
  687. package/node_modules/jishushell-panel/output/public/assets/index-DnnqTf7s.css +1 -0
  688. package/node_modules/jishushell-panel/output/public/assets/registry-sWIZsIEF.js +2 -0
  689. package/node_modules/jishushell-panel/output/public/assets/rolldown-runtime-QTnfLwEv.js +1 -0
  690. package/node_modules/jishushell-panel/output/public/assets/setup-task-q21GnI0E.js +1 -0
  691. package/node_modules/jishushell-panel/output/public/assets/usePolling-D4IDOQd_.js +1 -0
  692. package/node_modules/jishushell-panel/output/public/assets/vendor-i18n-Df8aUdv8.js +1 -0
  693. package/node_modules/jishushell-panel/output/public/assets/vendor-react-0L0rjmYG.js +8 -0
  694. package/node_modules/jishushell-panel/output/public/index.html +6 -4
  695. package/node_modules/jishushell-panel/package.json +2 -2
  696. package/node_modules/semver/classes/range.js +17 -4
  697. package/node_modules/semver/package.json +2 -2
  698. package/package.json +12 -64
  699. package/scripts/check-app-path-boundaries.mjs +121 -0
  700. package/scripts/check-app-spec.mjs +123 -29
  701. package/scripts/check-architecture-boundaries.mjs +178 -0
  702. package/scripts/check-colima-launchd.mjs +10 -8
  703. package/scripts/check-integration-isolation.ts +541 -0
  704. package/scripts/check-new-file-tests.mjs +11 -3
  705. package/scripts/check-open-core-boundaries.mjs +60 -10
  706. package/scripts/check-test-layering.sh +1 -1
  707. package/scripts/fixtures/instances/hermes-sample/instance.json +3 -2
  708. package/scripts/fixtures/instances/legacy-openclaw-sample/instance.json +1 -1
  709. package/scripts/local-web-upgrade-test.README +4 -3
  710. package/scripts/local-web-upgrade-test.example.env +2 -2
  711. package/scripts/local-web-upgrade-test.sh +14 -1
  712. package/scripts/pack-gui-and-send-pi.sh +43 -0
  713. package/scripts/perf/instances.js +1 -1
  714. package/scripts/prune-open-core-dist.mjs +89 -2
  715. package/scripts/smoke/hermes-bootstrap.sh +5 -5
  716. package/templates/hermes-entrypoint.sh +19 -29
  717. package/apps/openwebui-container.yaml +0 -97
  718. package/apps/playwright-container.yaml +0 -126
  719. package/dependencies/jishushell-panel-0.6.5.tgz +0 -0
  720. package/dist/crypto-shim.d.ts +0 -1
  721. package/dist/crypto-shim.js +0 -2
  722. package/dist/crypto-shim.js.map +0 -1
  723. package/dist/routes/agent-apps.d.ts +0 -14
  724. package/dist/routes/agent-apps.js +0 -77
  725. package/dist/routes/agent-apps.js.map +0 -1
  726. package/dist/routes/internal.d.ts +0 -2
  727. package/dist/routes/internal.js +0 -55
  728. package/dist/routes/internal.js.map +0 -1
  729. package/dist/routes/openclaw-routes.d.ts +0 -22
  730. package/dist/routes/openclaw-routes.js +0 -1020
  731. package/dist/routes/openclaw-routes.js.map +0 -1
  732. package/dist/routes/runtime.d.ts +0 -15
  733. package/dist/routes/runtime.js +0 -76
  734. package/dist/routes/runtime.js.map +0 -1
  735. package/dist/services/agent-apps/catalog.d.ts +0 -33
  736. package/dist/services/agent-apps/catalog.js +0 -88
  737. package/dist/services/agent-apps/catalog.js.map +0 -1
  738. package/dist/services/agent-apps/index.d.ts +0 -36
  739. package/dist/services/agent-apps/index.js +0 -171
  740. package/dist/services/agent-apps/index.js.map +0 -1
  741. package/dist/services/agent-apps/installers/adapter-probes.d.ts +0 -49
  742. package/dist/services/agent-apps/installers/adapter-probes.js +0 -230
  743. package/dist/services/agent-apps/installers/adapter-probes.js.map +0 -1
  744. package/dist/services/agent-apps/installers/adapter.d.ts +0 -30
  745. package/dist/services/agent-apps/installers/adapter.js +0 -171
  746. package/dist/services/agent-apps/installers/adapter.js.map +0 -1
  747. package/dist/services/agent-apps/installers/registry-probe.js.map +0 -1
  748. package/dist/services/agent-apps/installers/shell-script.d.ts +0 -47
  749. package/dist/services/agent-apps/installers/shell-script.js +0 -488
  750. package/dist/services/agent-apps/installers/shell-script.js.map +0 -1
  751. package/dist/services/agent-apps/types.d.ts +0 -128
  752. package/dist/services/agent-apps/types.js +0 -17
  753. package/dist/services/agent-apps/types.js.map +0 -1
  754. package/dist/services/app/app-compiler.js +0 -185
  755. package/dist/services/app/app-compiler.js.map +0 -1
  756. package/dist/services/app/app-manager.d.ts +0 -184
  757. package/dist/services/app/app-manager.js +0 -2933
  758. package/dist/services/app/app-manager.js.map +0 -1
  759. package/dist/services/app/custom-manager.d.ts +0 -27
  760. package/dist/services/app/custom-manager.js +0 -382
  761. package/dist/services/app/custom-manager.js.map +0 -1
  762. package/dist/services/app/hermes-agent-manager.d.ts +0 -20
  763. package/dist/services/app/hermes-agent-manager.js +0 -299
  764. package/dist/services/app/hermes-agent-manager.js.map +0 -1
  765. package/dist/services/app/id-normalizer.d.ts +0 -27
  766. package/dist/services/app/id-normalizer.js +0 -77
  767. package/dist/services/app/id-normalizer.js.map +0 -1
  768. package/dist/services/app/ollama-manager.d.ts +0 -18
  769. package/dist/services/app/ollama-manager.js +0 -224
  770. package/dist/services/app/ollama-manager.js.map +0 -1
  771. package/dist/services/app/openclaw-manager.d.ts +0 -63
  772. package/dist/services/app/openclaw-manager.js +0 -1215
  773. package/dist/services/app/openclaw-manager.js.map +0 -1
  774. package/dist/services/app/paths.d.ts +0 -27
  775. package/dist/services/app/paths.js +0 -40
  776. package/dist/services/app/paths.js.map +0 -1
  777. package/dist/services/app/platform-transform.d.ts +0 -32
  778. package/dist/services/app/platform-transform.js +0 -65
  779. package/dist/services/app/platform-transform.js.map +0 -1
  780. package/dist/services/app/provide-resolver.d.ts +0 -29
  781. package/dist/services/app/provide-resolver.js +0 -135
  782. package/dist/services/app/provide-resolver.js.map +0 -1
  783. package/dist/services/app/registry.d.ts +0 -17
  784. package/dist/services/app/registry.js +0 -31
  785. package/dist/services/app/registry.js.map +0 -1
  786. package/dist/services/app/remote-spec.d.ts +0 -14
  787. package/dist/services/app/remote-spec.js +0 -58
  788. package/dist/services/app/remote-spec.js.map +0 -1
  789. package/dist/services/app/terminal-session-manager.js +0 -157
  790. package/dist/services/app/terminal-session-manager.js.map +0 -1
  791. package/dist/services/app/types.d.ts +0 -74
  792. package/dist/services/app/types.js +0 -16
  793. package/dist/services/app/types.js.map +0 -1
  794. package/dist/services/app-config-admin.d.ts +0 -17
  795. package/dist/services/app-config-admin.js +0 -177
  796. package/dist/services/app-config-admin.js.map +0 -1
  797. package/dist/services/app-create-from-installed.d.ts +0 -23
  798. package/dist/services/app-create-from-installed.js +0 -75
  799. package/dist/services/app-create-from-installed.js.map +0 -1
  800. package/dist/services/app-passwords.js +0 -173
  801. package/dist/services/app-passwords.js.map +0 -1
  802. package/dist/services/backup-admin.d.ts +0 -101
  803. package/dist/services/backup-admin.js +0 -259
  804. package/dist/services/backup-admin.js.map +0 -1
  805. package/dist/services/backup-manager.d.ts +0 -264
  806. package/dist/services/backup-manager.js +0 -2263
  807. package/dist/services/backup-manager.js.map +0 -1
  808. package/dist/services/backup-verify.js +0 -240
  809. package/dist/services/backup-verify.js.map +0 -1
  810. package/dist/services/capability-endpoint-validator.d.ts +0 -41
  811. package/dist/services/capability-endpoint-validator.js +0 -114
  812. package/dist/services/capability-endpoint-validator.js.map +0 -1
  813. package/dist/services/capability-health.d.ts +0 -16
  814. package/dist/services/capability-health.js +0 -121
  815. package/dist/services/capability-health.js.map +0 -1
  816. package/dist/services/capability-registry.d.ts +0 -29
  817. package/dist/services/capability-registry.js +0 -176
  818. package/dist/services/capability-registry.js.map +0 -1
  819. package/dist/services/capability-sync.d.ts +0 -4
  820. package/dist/services/capability-sync.js +0 -220
  821. package/dist/services/capability-sync.js.map +0 -1
  822. package/dist/services/connection-admin.d.ts +0 -74
  823. package/dist/services/connection-admin.js +0 -287
  824. package/dist/services/connection-admin.js.map +0 -1
  825. package/dist/services/connection-apply.d.ts +0 -91
  826. package/dist/services/connection-apply.js +0 -471
  827. package/dist/services/connection-apply.js.map +0 -1
  828. package/dist/services/connection-resolver.d.ts +0 -65
  829. package/dist/services/connection-resolver.js +0 -281
  830. package/dist/services/connection-resolver.js.map +0 -1
  831. package/dist/services/connection-transactor.d.ts +0 -39
  832. package/dist/services/connection-transactor.js +0 -354
  833. package/dist/services/connection-transactor.js.map +0 -1
  834. package/dist/services/core-manager.d.ts +0 -50
  835. package/dist/services/core-manager.js +0 -411
  836. package/dist/services/core-manager.js.map +0 -1
  837. package/dist/services/external-mounts.js +0 -187
  838. package/dist/services/external-mounts.js.map +0 -1
  839. package/dist/services/files-manager.d.ts +0 -252
  840. package/dist/services/files-manager.js +0 -1156
  841. package/dist/services/files-manager.js.map +0 -1
  842. package/dist/services/files-mounts.d.ts +0 -42
  843. package/dist/services/files-mounts.js +0 -207
  844. package/dist/services/files-mounts.js.map +0 -1
  845. package/dist/services/instance-admin.d.ts +0 -26
  846. package/dist/services/instance-admin.js +0 -218
  847. package/dist/services/instance-admin.js.map +0 -1
  848. package/dist/services/instance-manager.d.ts +0 -192
  849. package/dist/services/instance-manager.js +0 -1289
  850. package/dist/services/instance-manager.js.map +0 -1
  851. package/dist/services/macos-launchd.js +0 -312
  852. package/dist/services/macos-launchd.js.map +0 -1
  853. package/dist/services/nomad-manager.d.ts +0 -307
  854. package/dist/services/nomad-manager.js +0 -3958
  855. package/dist/services/nomad-manager.js.map +0 -1
  856. package/dist/services/organize/applier.js +0 -218
  857. package/dist/services/organize/applier.js.map +0 -1
  858. package/dist/services/organize/rules.js +0 -286
  859. package/dist/services/organize/rules.js.map +0 -1
  860. package/dist/services/organize/scanner.js +0 -366
  861. package/dist/services/organize/scanner.js.map +0 -1
  862. package/dist/services/organize/store.js +0 -82
  863. package/dist/services/organize/store.js.map +0 -1
  864. package/dist/services/plugin-installer.js +0 -128
  865. package/dist/services/plugin-installer.js.map +0 -1
  866. package/dist/services/process-manager.d.ts +0 -25
  867. package/dist/services/process-manager.js +0 -568
  868. package/dist/services/process-manager.js.map +0 -1
  869. package/dist/services/runtime/adapters/custom.d.ts +0 -20
  870. package/dist/services/runtime/adapters/custom.js +0 -188
  871. package/dist/services/runtime/adapters/custom.js.map +0 -1
  872. package/dist/services/runtime/adapters/hermes.d.ts +0 -204
  873. package/dist/services/runtime/adapters/hermes.js +0 -1684
  874. package/dist/services/runtime/adapters/hermes.js.map +0 -1
  875. package/dist/services/runtime/adapters/openclaw-mcporter.d.ts +0 -45
  876. package/dist/services/runtime/adapters/openclaw-mcporter.js +0 -108
  877. package/dist/services/runtime/adapters/openclaw-mcporter.js.map +0 -1
  878. package/dist/services/runtime/adapters/openclaw.d.ts +0 -426
  879. package/dist/services/runtime/adapters/openclaw.js +0 -3975
  880. package/dist/services/runtime/adapters/openclaw.js.map +0 -1
  881. package/dist/services/runtime/index.d.ts +0 -34
  882. package/dist/services/runtime/index.js +0 -51
  883. package/dist/services/runtime/index.js.map +0 -1
  884. package/dist/services/runtime/mcp-shims/anythingllm-shim.d.ts +0 -46
  885. package/dist/services/runtime/mcp-shims/anythingllm-shim.js +0 -281
  886. package/dist/services/runtime/mcp-shims/anythingllm-shim.js.map +0 -1
  887. package/dist/services/runtime/mcp-shims/drive-shim.js +0 -490
  888. package/dist/services/runtime/mcp-shims/drive-shim.js.map +0 -1
  889. package/dist/services/runtime/mcp-shims/jishukb-shim.d.ts +0 -48
  890. package/dist/services/runtime/mcp-shims/jishukb-shim.js +0 -723
  891. package/dist/services/runtime/mcp-shims/jishukb-shim.js.map +0 -1
  892. package/dist/services/runtime/mcp-shims/mcporter-lite.js +0 -276
  893. package/dist/services/runtime/mcp-shims/mcporter-lite.js.map +0 -1
  894. package/dist/services/runtime/migrations.d.ts +0 -23
  895. package/dist/services/runtime/migrations.js +0 -125
  896. package/dist/services/runtime/migrations.js.map +0 -1
  897. package/dist/services/runtime/registry.d.ts +0 -13
  898. package/dist/services/runtime/registry.js +0 -32
  899. package/dist/services/runtime/registry.js.map +0 -1
  900. package/dist/services/runtime-identity.d.ts +0 -13
  901. package/dist/services/runtime-identity.js +0 -166
  902. package/dist/services/runtime-identity.js.map +0 -1
  903. package/dist/services/runtime-repair.d.ts +0 -52
  904. package/dist/services/runtime-repair.js +0 -352
  905. package/dist/services/runtime-repair.js.map +0 -1
  906. package/dist/services/setup-manager.d.ts +0 -158
  907. package/dist/services/setup-manager.js +0 -2740
  908. package/dist/services/setup-manager.js.map +0 -1
  909. package/dist/services/suggestions.d.ts +0 -27
  910. package/dist/services/suggestions.js +0 -133
  911. package/dist/services/suggestions.js.map +0 -1
  912. package/dist/services/system-monitor.js +0 -79
  913. package/dist/services/system-monitor.js.map +0 -1
  914. package/dist/services/system-ollama-provider.d.ts +0 -14
  915. package/dist/services/system-ollama-provider.js +0 -125
  916. package/dist/services/system-ollama-provider.js.map +0 -1
  917. package/dist/services/system-reconciler.d.ts +0 -72
  918. package/dist/services/system-reconciler.js +0 -600
  919. package/dist/services/system-reconciler.js.map +0 -1
  920. package/dist/services/task-registry.d.ts +0 -44
  921. package/dist/services/task-registry.js +0 -76
  922. package/dist/services/task-registry.js.map +0 -1
  923. package/dist/services/types-shim.d.ts +0 -16
  924. package/dist/services/types-shim.js +0 -2
  925. package/dist/services/types-shim.js.map +0 -1
  926. package/dist/services/update-manager.d.ts +0 -47
  927. package/dist/services/update-manager.js +0 -351
  928. package/dist/services/update-manager.js.map +0 -1
  929. package/dist/services/webdav/server.d.ts +0 -24
  930. package/dist/services/webdav/server.js +0 -420
  931. package/dist/services/webdav/server.js.map +0 -1
  932. package/dist/services/webdav/xml-builder.js.map +0 -1
  933. package/dist/services/workspace-builder.d.ts +0 -29
  934. package/dist/services/workspace-builder.js +0 -188
  935. package/dist/services/workspace-builder.js.map +0 -1
  936. package/node_modules/@fastify/static/.github/stale.yml +0 -21
  937. package/node_modules/@isaacs/cliui/LICENSE.md +0 -63
  938. package/node_modules/@isaacs/cliui/README.md +0 -151
  939. package/node_modules/@isaacs/cliui/dist/commonjs/ansi-regex/index.d.ts +0 -4
  940. package/node_modules/@isaacs/cliui/dist/commonjs/ansi-regex/index.d.ts.map +0 -1
  941. package/node_modules/@isaacs/cliui/dist/commonjs/ansi-regex/index.js +0 -16
  942. package/node_modules/@isaacs/cliui/dist/commonjs/ansi-regex/index.js.map +0 -1
  943. package/node_modules/@isaacs/cliui/dist/commonjs/ansi-styles/index.d.ts +0 -34
  944. package/node_modules/@isaacs/cliui/dist/commonjs/ansi-styles/index.d.ts.map +0 -1
  945. package/node_modules/@isaacs/cliui/dist/commonjs/ansi-styles/index.js +0 -170
  946. package/node_modules/@isaacs/cliui/dist/commonjs/ansi-styles/index.js.map +0 -1
  947. package/node_modules/@isaacs/cliui/dist/commonjs/eastasianwidth/index.d.ts +0 -6
  948. package/node_modules/@isaacs/cliui/dist/commonjs/eastasianwidth/index.d.ts.map +0 -1
  949. package/node_modules/@isaacs/cliui/dist/commonjs/eastasianwidth/index.js +0 -307
  950. package/node_modules/@isaacs/cliui/dist/commonjs/eastasianwidth/index.js.map +0 -1
  951. package/node_modules/@isaacs/cliui/dist/commonjs/emoji-regex/index.d.ts +0 -2
  952. package/node_modules/@isaacs/cliui/dist/commonjs/emoji-regex/index.d.ts.map +0 -1
  953. package/node_modules/@isaacs/cliui/dist/commonjs/emoji-regex/index.js +0 -7
  954. package/node_modules/@isaacs/cliui/dist/commonjs/emoji-regex/index.js.map +0 -1
  955. package/node_modules/@isaacs/cliui/dist/commonjs/index.d.ts +0 -41
  956. package/node_modules/@isaacs/cliui/dist/commonjs/index.d.ts.map +0 -1
  957. package/node_modules/@isaacs/cliui/dist/commonjs/index.js +0 -322
  958. package/node_modules/@isaacs/cliui/dist/commonjs/index.js.map +0 -1
  959. package/node_modules/@isaacs/cliui/dist/commonjs/index.min.js +0 -12
  960. package/node_modules/@isaacs/cliui/dist/commonjs/index.min.js.map +0 -7
  961. package/node_modules/@isaacs/cliui/dist/commonjs/package.json +0 -3
  962. package/node_modules/@isaacs/cliui/dist/commonjs/string-width/index.d.ts +0 -5
  963. package/node_modules/@isaacs/cliui/dist/commonjs/string-width/index.d.ts.map +0 -1
  964. package/node_modules/@isaacs/cliui/dist/commonjs/string-width/index.js +0 -49
  965. package/node_modules/@isaacs/cliui/dist/commonjs/string-width/index.js.map +0 -1
  966. package/node_modules/@isaacs/cliui/dist/commonjs/strip-ansi/index.d.ts +0 -2
  967. package/node_modules/@isaacs/cliui/dist/commonjs/strip-ansi/index.d.ts.map +0 -1
  968. package/node_modules/@isaacs/cliui/dist/commonjs/strip-ansi/index.js +0 -8
  969. package/node_modules/@isaacs/cliui/dist/commonjs/strip-ansi/index.js.map +0 -1
  970. package/node_modules/@isaacs/cliui/dist/commonjs/wrap-ansi/index.d.ts +0 -7
  971. package/node_modules/@isaacs/cliui/dist/commonjs/wrap-ansi/index.d.ts.map +0 -1
  972. package/node_modules/@isaacs/cliui/dist/commonjs/wrap-ansi/index.js +0 -176
  973. package/node_modules/@isaacs/cliui/dist/commonjs/wrap-ansi/index.js.map +0 -1
  974. package/node_modules/@isaacs/cliui/dist/esm/ansi-regex/index.d.ts +0 -4
  975. package/node_modules/@isaacs/cliui/dist/esm/ansi-regex/index.d.ts.map +0 -1
  976. package/node_modules/@isaacs/cliui/dist/esm/ansi-regex/index.js +0 -12
  977. package/node_modules/@isaacs/cliui/dist/esm/ansi-regex/index.js.map +0 -1
  978. package/node_modules/@isaacs/cliui/dist/esm/ansi-styles/index.d.ts +0 -34
  979. package/node_modules/@isaacs/cliui/dist/esm/ansi-styles/index.d.ts.map +0 -1
  980. package/node_modules/@isaacs/cliui/dist/esm/ansi-styles/index.js +0 -167
  981. package/node_modules/@isaacs/cliui/dist/esm/ansi-styles/index.js.map +0 -1
  982. package/node_modules/@isaacs/cliui/dist/esm/eastasianwidth/index.d.ts +0 -6
  983. package/node_modules/@isaacs/cliui/dist/esm/eastasianwidth/index.d.ts.map +0 -1
  984. package/node_modules/@isaacs/cliui/dist/esm/eastasianwidth/index.js +0 -299
  985. package/node_modules/@isaacs/cliui/dist/esm/eastasianwidth/index.js.map +0 -1
  986. package/node_modules/@isaacs/cliui/dist/esm/emoji-regex/index.d.ts +0 -2
  987. package/node_modules/@isaacs/cliui/dist/esm/emoji-regex/index.d.ts.map +0 -1
  988. package/node_modules/@isaacs/cliui/dist/esm/emoji-regex/index.js +0 -3
  989. package/node_modules/@isaacs/cliui/dist/esm/emoji-regex/index.js.map +0 -1
  990. package/node_modules/@isaacs/cliui/dist/esm/index.d.ts +0 -41
  991. package/node_modules/@isaacs/cliui/dist/esm/index.d.ts.map +0 -1
  992. package/node_modules/@isaacs/cliui/dist/esm/index.js +0 -317
  993. package/node_modules/@isaacs/cliui/dist/esm/index.js.map +0 -1
  994. package/node_modules/@isaacs/cliui/dist/esm/index.min.js +0 -12
  995. package/node_modules/@isaacs/cliui/dist/esm/index.min.js.map +0 -7
  996. package/node_modules/@isaacs/cliui/dist/esm/package.json +0 -3
  997. package/node_modules/@isaacs/cliui/dist/esm/string-width/index.d.ts +0 -5
  998. package/node_modules/@isaacs/cliui/dist/esm/string-width/index.d.ts.map +0 -1
  999. package/node_modules/@isaacs/cliui/dist/esm/string-width/index.js +0 -46
  1000. package/node_modules/@isaacs/cliui/dist/esm/string-width/index.js.map +0 -1
  1001. package/node_modules/@isaacs/cliui/dist/esm/strip-ansi/index.d.ts +0 -2
  1002. package/node_modules/@isaacs/cliui/dist/esm/strip-ansi/index.d.ts.map +0 -1
  1003. package/node_modules/@isaacs/cliui/dist/esm/strip-ansi/index.js +0 -4
  1004. package/node_modules/@isaacs/cliui/dist/esm/strip-ansi/index.js.map +0 -1
  1005. package/node_modules/@isaacs/cliui/dist/esm/wrap-ansi/index.d.ts +0 -7
  1006. package/node_modules/@isaacs/cliui/dist/esm/wrap-ansi/index.d.ts.map +0 -1
  1007. package/node_modules/@isaacs/cliui/dist/esm/wrap-ansi/index.js +0 -172
  1008. package/node_modules/@isaacs/cliui/dist/esm/wrap-ansi/index.js.map +0 -1
  1009. package/node_modules/@isaacs/cliui/package.json +0 -163
  1010. package/node_modules/content-disposition/HISTORY.md +0 -60
  1011. package/node_modules/cross-spawn/LICENSE +0 -21
  1012. package/node_modules/cross-spawn/README.md +0 -89
  1013. package/node_modules/cross-spawn/index.js +0 -39
  1014. package/node_modules/cross-spawn/lib/enoent.js +0 -59
  1015. package/node_modules/cross-spawn/lib/parse.js +0 -91
  1016. package/node_modules/cross-spawn/lib/util/escape.js +0 -47
  1017. package/node_modules/cross-spawn/lib/util/readShebang.js +0 -23
  1018. package/node_modules/cross-spawn/lib/util/resolveCommand.js +0 -52
  1019. package/node_modules/cross-spawn/package.json +0 -73
  1020. package/node_modules/fastify/test/types/content-type-parser.test-d.ts +0 -72
  1021. package/node_modules/fastify/test/types/decorate-request-reply.test-d.ts +0 -18
  1022. package/node_modules/fastify/test/types/dummy-plugin.ts +0 -9
  1023. package/node_modules/fastify/test/types/errors.test-d.ts +0 -90
  1024. package/node_modules/fastify/test/types/fastify.test-d.ts +0 -352
  1025. package/node_modules/fastify/test/types/hooks.test-d.ts +0 -550
  1026. package/node_modules/fastify/test/types/import.ts +0 -2
  1027. package/node_modules/fastify/test/types/instance.test-d.ts +0 -588
  1028. package/node_modules/fastify/test/types/logger.test-d.ts +0 -277
  1029. package/node_modules/fastify/test/types/plugin.test-d.ts +0 -97
  1030. package/node_modules/fastify/test/types/register.test-d.ts +0 -237
  1031. package/node_modules/fastify/test/types/reply.test-d.ts +0 -254
  1032. package/node_modules/fastify/test/types/request.test-d.ts +0 -188
  1033. package/node_modules/fastify/test/types/route.test-d.ts +0 -553
  1034. package/node_modules/fastify/test/types/schema.test-d.ts +0 -135
  1035. package/node_modules/fastify/test/types/serverFactory.test-d.ts +0 -37
  1036. package/node_modules/fastify/test/types/type-provider.test-d.ts +0 -1213
  1037. package/node_modules/fastify/test/types/using.test-d.ts +0 -17
  1038. package/node_modules/foreground-child/LICENSE +0 -15
  1039. package/node_modules/foreground-child/README.md +0 -128
  1040. package/node_modules/foreground-child/dist/commonjs/all-signals.d.ts +0 -2
  1041. package/node_modules/foreground-child/dist/commonjs/all-signals.d.ts.map +0 -1
  1042. package/node_modules/foreground-child/dist/commonjs/all-signals.js +0 -58
  1043. package/node_modules/foreground-child/dist/commonjs/all-signals.js.map +0 -1
  1044. package/node_modules/foreground-child/dist/commonjs/index.d.ts +0 -58
  1045. package/node_modules/foreground-child/dist/commonjs/index.d.ts.map +0 -1
  1046. package/node_modules/foreground-child/dist/commonjs/index.js +0 -123
  1047. package/node_modules/foreground-child/dist/commonjs/index.js.map +0 -1
  1048. package/node_modules/foreground-child/dist/commonjs/package.json +0 -3
  1049. package/node_modules/foreground-child/dist/commonjs/proxy-signals.d.ts +0 -6
  1050. package/node_modules/foreground-child/dist/commonjs/proxy-signals.d.ts.map +0 -1
  1051. package/node_modules/foreground-child/dist/commonjs/proxy-signals.js +0 -38
  1052. package/node_modules/foreground-child/dist/commonjs/proxy-signals.js.map +0 -1
  1053. package/node_modules/foreground-child/dist/commonjs/watchdog.d.ts +0 -10
  1054. package/node_modules/foreground-child/dist/commonjs/watchdog.d.ts.map +0 -1
  1055. package/node_modules/foreground-child/dist/commonjs/watchdog.js +0 -50
  1056. package/node_modules/foreground-child/dist/commonjs/watchdog.js.map +0 -1
  1057. package/node_modules/foreground-child/dist/esm/all-signals.d.ts +0 -2
  1058. package/node_modules/foreground-child/dist/esm/all-signals.d.ts.map +0 -1
  1059. package/node_modules/foreground-child/dist/esm/all-signals.js +0 -52
  1060. package/node_modules/foreground-child/dist/esm/all-signals.js.map +0 -1
  1061. package/node_modules/foreground-child/dist/esm/index.d.ts +0 -58
  1062. package/node_modules/foreground-child/dist/esm/index.d.ts.map +0 -1
  1063. package/node_modules/foreground-child/dist/esm/index.js +0 -115
  1064. package/node_modules/foreground-child/dist/esm/index.js.map +0 -1
  1065. package/node_modules/foreground-child/dist/esm/package.json +0 -3
  1066. package/node_modules/foreground-child/dist/esm/proxy-signals.d.ts +0 -6
  1067. package/node_modules/foreground-child/dist/esm/proxy-signals.d.ts.map +0 -1
  1068. package/node_modules/foreground-child/dist/esm/proxy-signals.js +0 -34
  1069. package/node_modules/foreground-child/dist/esm/proxy-signals.js.map +0 -1
  1070. package/node_modules/foreground-child/dist/esm/watchdog.d.ts +0 -10
  1071. package/node_modules/foreground-child/dist/esm/watchdog.d.ts.map +0 -1
  1072. package/node_modules/foreground-child/dist/esm/watchdog.js +0 -46
  1073. package/node_modules/foreground-child/dist/esm/watchdog.js.map +0 -1
  1074. package/node_modules/foreground-child/package.json +0 -106
  1075. package/node_modules/glob/dist/esm/bin.d.mts +0 -3
  1076. package/node_modules/glob/dist/esm/bin.d.mts.map +0 -1
  1077. package/node_modules/glob/dist/esm/bin.mjs +0 -346
  1078. package/node_modules/glob/dist/esm/bin.mjs.map +0 -1
  1079. package/node_modules/isexe/.npmignore +0 -2
  1080. package/node_modules/isexe/LICENSE +0 -15
  1081. package/node_modules/isexe/README.md +0 -51
  1082. package/node_modules/isexe/index.js +0 -57
  1083. package/node_modules/isexe/mode.js +0 -41
  1084. package/node_modules/isexe/package.json +0 -31
  1085. package/node_modules/isexe/test/basic.js +0 -221
  1086. package/node_modules/isexe/windows.js +0 -42
  1087. package/node_modules/jackspeak/LICENSE.md +0 -55
  1088. package/node_modules/jackspeak/README.md +0 -394
  1089. package/node_modules/jackspeak/dist/commonjs/index.d.ts +0 -323
  1090. package/node_modules/jackspeak/dist/commonjs/index.d.ts.map +0 -1
  1091. package/node_modules/jackspeak/dist/commonjs/index.js +0 -944
  1092. package/node_modules/jackspeak/dist/commonjs/index.js.map +0 -1
  1093. package/node_modules/jackspeak/dist/commonjs/index.min.js +0 -33
  1094. package/node_modules/jackspeak/dist/commonjs/index.min.js.map +0 -7
  1095. package/node_modules/jackspeak/dist/commonjs/package.json +0 -3
  1096. package/node_modules/jackspeak/dist/esm/index.d.ts +0 -323
  1097. package/node_modules/jackspeak/dist/esm/index.d.ts.map +0 -1
  1098. package/node_modules/jackspeak/dist/esm/index.js +0 -936
  1099. package/node_modules/jackspeak/dist/esm/index.js.map +0 -1
  1100. package/node_modules/jackspeak/dist/esm/index.min.js +0 -33
  1101. package/node_modules/jackspeak/dist/esm/index.min.js.map +0 -7
  1102. package/node_modules/jackspeak/dist/esm/package.json +0 -3
  1103. package/node_modules/jackspeak/package.json +0 -115
  1104. package/node_modules/jishushell-panel/output/public/assets/ApiKeyField-D1i7zWXR.js +0 -1
  1105. package/node_modules/jishushell-panel/output/public/assets/Dashboard-sWIvL43F.js +0 -1
  1106. package/node_modules/jishushell-panel/output/public/assets/HermesChatPanel-DQ8RyvQY.js +0 -1
  1107. package/node_modules/jishushell-panel/output/public/assets/HermesConfigForm-tIbPP1sB.js +0 -4
  1108. package/node_modules/jishushell-panel/output/public/assets/InitPassword-C3Slq3Dd.js +0 -1
  1109. package/node_modules/jishushell-panel/output/public/assets/InstanceDetail-7JqY9tq4.js +0 -92
  1110. package/node_modules/jishushell-panel/output/public/assets/Login-BXLDJlQN.js +0 -1
  1111. package/node_modules/jishushell-panel/output/public/assets/NewInstance-dLc5Xrpx.js +0 -1
  1112. package/node_modules/jishushell-panel/output/public/assets/ProviderRecommendations-DIAXxesl.js +0 -1
  1113. package/node_modules/jishushell-panel/output/public/assets/Settings-Bd5utbBh.js +0 -1
  1114. package/node_modules/jishushell-panel/output/public/assets/Setup-Yn9_20FL.js +0 -1
  1115. package/node_modules/jishushell-panel/output/public/assets/WeixinLoginPanel-C21doQTJ.js +0 -9
  1116. package/node_modules/jishushell-panel/output/public/assets/index-CCkaIEjn.js +0 -20
  1117. package/node_modules/jishushell-panel/output/public/assets/index-D7qxy-Vh.css +0 -1
  1118. package/node_modules/jishushell-panel/output/public/assets/registry-B2ZQZXWL.js +0 -2
  1119. package/node_modules/jishushell-panel/output/public/assets/usePolling-BFZm4do_.js +0 -1
  1120. package/node_modules/jishushell-panel/output/public/assets/vendor-i18n-DqPtOicc.js +0 -9
  1121. package/node_modules/jishushell-panel/output/public/assets/vendor-react-DW5juQin.js +0 -59
  1122. package/node_modules/package-json-from-dist/LICENSE.md +0 -63
  1123. package/node_modules/package-json-from-dist/README.md +0 -110
  1124. package/node_modules/package-json-from-dist/dist/commonjs/index.d.ts +0 -89
  1125. package/node_modules/package-json-from-dist/dist/commonjs/index.d.ts.map +0 -1
  1126. package/node_modules/package-json-from-dist/dist/commonjs/index.js +0 -134
  1127. package/node_modules/package-json-from-dist/dist/commonjs/index.js.map +0 -1
  1128. package/node_modules/package-json-from-dist/dist/commonjs/package.json +0 -3
  1129. package/node_modules/package-json-from-dist/dist/esm/index.d.ts +0 -89
  1130. package/node_modules/package-json-from-dist/dist/esm/index.d.ts.map +0 -1
  1131. package/node_modules/package-json-from-dist/dist/esm/index.js +0 -129
  1132. package/node_modules/package-json-from-dist/dist/esm/index.js.map +0 -1
  1133. package/node_modules/package-json-from-dist/dist/esm/package.json +0 -3
  1134. package/node_modules/package-json-from-dist/package.json +0 -68
  1135. package/node_modules/path-key/index.d.ts +0 -40
  1136. package/node_modules/path-key/index.js +0 -16
  1137. package/node_modules/path-key/license +0 -9
  1138. package/node_modules/path-key/package.json +0 -39
  1139. package/node_modules/path-key/readme.md +0 -61
  1140. package/node_modules/safe-buffer/LICENSE +0 -21
  1141. package/node_modules/safe-buffer/README.md +0 -584
  1142. package/node_modules/safe-buffer/index.d.ts +0 -187
  1143. package/node_modules/safe-buffer/index.js +0 -65
  1144. package/node_modules/safe-buffer/package.json +0 -51
  1145. package/node_modules/shebang-command/index.js +0 -19
  1146. package/node_modules/shebang-command/license +0 -9
  1147. package/node_modules/shebang-command/package.json +0 -34
  1148. package/node_modules/shebang-command/readme.md +0 -34
  1149. package/node_modules/shebang-regex/index.d.ts +0 -22
  1150. package/node_modules/shebang-regex/index.js +0 -2
  1151. package/node_modules/shebang-regex/license +0 -9
  1152. package/node_modules/shebang-regex/package.json +0 -35
  1153. package/node_modules/shebang-regex/readme.md +0 -33
  1154. package/node_modules/signal-exit/LICENSE.txt +0 -16
  1155. package/node_modules/signal-exit/README.md +0 -74
  1156. package/node_modules/signal-exit/dist/cjs/browser.d.ts +0 -12
  1157. package/node_modules/signal-exit/dist/cjs/browser.d.ts.map +0 -1
  1158. package/node_modules/signal-exit/dist/cjs/browser.js +0 -10
  1159. package/node_modules/signal-exit/dist/cjs/browser.js.map +0 -1
  1160. package/node_modules/signal-exit/dist/cjs/index.d.ts +0 -48
  1161. package/node_modules/signal-exit/dist/cjs/index.d.ts.map +0 -1
  1162. package/node_modules/signal-exit/dist/cjs/index.js +0 -279
  1163. package/node_modules/signal-exit/dist/cjs/index.js.map +0 -1
  1164. package/node_modules/signal-exit/dist/cjs/package.json +0 -3
  1165. package/node_modules/signal-exit/dist/cjs/signals.d.ts +0 -29
  1166. package/node_modules/signal-exit/dist/cjs/signals.d.ts.map +0 -1
  1167. package/node_modules/signal-exit/dist/cjs/signals.js +0 -42
  1168. package/node_modules/signal-exit/dist/cjs/signals.js.map +0 -1
  1169. package/node_modules/signal-exit/dist/mjs/browser.d.ts +0 -12
  1170. package/node_modules/signal-exit/dist/mjs/browser.d.ts.map +0 -1
  1171. package/node_modules/signal-exit/dist/mjs/browser.js +0 -4
  1172. package/node_modules/signal-exit/dist/mjs/browser.js.map +0 -1
  1173. package/node_modules/signal-exit/dist/mjs/index.d.ts +0 -48
  1174. package/node_modules/signal-exit/dist/mjs/index.d.ts.map +0 -1
  1175. package/node_modules/signal-exit/dist/mjs/index.js +0 -275
  1176. package/node_modules/signal-exit/dist/mjs/index.js.map +0 -1
  1177. package/node_modules/signal-exit/dist/mjs/package.json +0 -3
  1178. package/node_modules/signal-exit/dist/mjs/signals.d.ts +0 -29
  1179. package/node_modules/signal-exit/dist/mjs/signals.d.ts.map +0 -1
  1180. package/node_modules/signal-exit/dist/mjs/signals.js +0 -39
  1181. package/node_modules/signal-exit/dist/mjs/signals.js.map +0 -1
  1182. package/node_modules/signal-exit/package.json +0 -106
  1183. package/node_modules/which/CHANGELOG.md +0 -166
  1184. package/node_modules/which/LICENSE +0 -15
  1185. package/node_modules/which/README.md +0 -54
  1186. package/node_modules/which/bin/node-which +0 -52
  1187. package/node_modules/which/package.json +0 -43
  1188. package/node_modules/which/which.js +0 -125
  1189. package/scripts/check-adapter-isolation.ts +0 -293
  1190. /package/dist/services/{app → app-common}/app-compiler.d.ts +0 -0
  1191. /package/dist/services/{app → app-common}/terminal-session-manager.d.ts +0 -0
  1192. /package/dist/services/{backup-verify.d.ts → backup/backup-verify.d.ts} +0 -0
  1193. /package/dist/services/{external-mounts.d.ts → files/external-mounts.d.ts} +0 -0
  1194. /package/dist/services/{organize → files/organize}/applier.d.ts +0 -0
  1195. /package/dist/services/{organize → files/organize}/rules.d.ts +0 -0
  1196. /package/dist/services/{organize → files/organize}/scanner.d.ts +0 -0
  1197. /package/dist/services/{organize → files/organize}/store.d.ts +0 -0
  1198. /package/dist/services/{webdav → files/webdav}/xml-builder.d.ts +0 -0
  1199. /package/dist/services/{webdav → files/webdav}/xml-builder.js +0 -0
  1200. /package/dist/services/{app-passwords.d.ts → instances/passwords.d.ts} +0 -0
  1201. /package/dist/services/{agent-apps → integrations/installable}/installers/registry-probe.d.ts +0 -0
  1202. /package/dist/services/{agent-apps → integrations/installable}/installers/registry-probe.js +0 -0
  1203. /package/dist/services/{runtime/mcp-shims → integrations/openclaw}/drive-shim.d.ts +0 -0
  1204. /package/dist/services/{runtime/mcp-shims → integrations/openclaw}/mcporter-lite.d.ts +0 -0
  1205. /package/dist/services/{plugin-installer.d.ts → setup/plugin-installer.d.ts} +0 -0
  1206. /package/dist/services/{macos-launchd.d.ts → system/macos-launchd.d.ts} +0 -0
  1207. /package/dist/services/{system-monitor.d.ts → system/system-monitor.d.ts} +0 -0
package/dist/server.js CHANGED
@@ -2,40 +2,53 @@ import Fastify from "fastify";
2
2
  import multipart from "@fastify/multipart";
3
3
  import { request as httpRequest } from "http";
4
4
  import { request as httpsRequest } from "https";
5
- import { ensureDirs, ensureCoreConfig, getCoreConfig, migrateCatalogSchemaIfNeeded, migrateHermesShimOutIfNeeded, migrateOpenclawImageTagIfNeeded, removeFlatOpenclawImageIfNeeded, getInternalMcpToken, } from "./config.js";
5
+ import { ensureDirs, ensureCoreConfig, getCoreConfig, migrateIntegrationRuntimeSchemaIfNeeded, migrateHermesShimOutIfNeeded, removeFlatOpenclawImageIfNeeded, getInternalMcpToken, } from "./config.js";
6
6
  import { timingSafeEqual } from "node:crypto";
7
- import { runStartupMigrations } from "./services/runtime/index.js";
7
+ import { listRegisteredIntegrations, normalizeIntegrationCoreConfigOnStartup } from "./services/integrations/index.js";
8
8
  import { verifyToken } from "./auth.js";
9
9
  import { authRoutes } from "./routes/auth.js";
10
+ import { adminRoutes } from "./routes/admin.js";
10
11
  import { instanceRoutes } from "./routes/instances.js";
12
+ import { dockerRoutes } from "./routes/docker.js";
11
13
  import { systemRoutes } from "./routes/system.js";
12
14
  import { setupRoutes } from "./routes/setup.js";
13
- import { runtimeCatalogRoutes } from "./routes/runtime.js";
15
+ import { integrationsRoutes } from "./routes/integrations.js";
14
16
  import { appRoutes } from "./routes/apps.js";
15
- import { agentAppRoutes } from "./routes/agent-apps.js";
17
+ import { integrationAppRoutes } from "./routes/integration-apps.js";
16
18
  import { llmRoutes } from "./routes/llm.js";
17
19
  import { filesRoutes } from "./routes/files.js";
18
- import { internalRoutes } from "./routes/internal.js";
19
20
  import { organizeRoutes } from "./routes/files-organize.js";
20
21
  import { fileMountsRoutes } from "./routes/file-mounts.js";
21
22
  import { registerProxyRoutes } from "./routes/llm-proxy.js";
22
23
  import { webdavRoutes } from "./routes/webdav.js";
23
24
  import { externalMountsRoutes } from "./routes/external-mounts.js";
24
- import { FilesManager } from "./services/files-manager.js";
25
- import * as appManager from "./services/app/app-manager.js";
26
- import * as capabilityRegistry from "./services/capability-registry.js";
27
- import { getConnectHostForPort, getStoredConfig as getNativeStoredConfig, } from "./services/instance-manager.js";
25
+ import { FilesManager } from "./services/files/files-manager.js";
26
+ import { ensureDefaultFilesLayout } from "./services/files/bootstrap.js";
27
+ import { registerAppModuleRoutes } from "./services/app-modules/routes.js";
28
+ import { registerIntegrationOwnedRoutes } from "./services/integrations/routes.js";
29
+ import * as appService from "./services/app-common/service.js";
30
+ import * as appLifecycle from "./services/app-common/lifecycle-service.js";
31
+ import * as capabilityRegistry from "./services/capabilities/registry.js";
32
+ import { getConnectHostForPort } from "./services/instances/manager.js";
28
33
  import backupRoutes from "./routes/backup.js";
29
34
  import * as llmProxy from "./services/llm-proxy/index.js";
30
- import * as nomadManager from "./services/nomad-manager.js";
31
- import * as instanceManager from "./services/app/app-manager.js";
32
- import * as setupManager from "./services/setup-manager.js";
33
- import { startTmpCleanupScheduler, initAutoBackup } from "./services/backup-manager.js";
34
- import { checkUpdate, getUpdateStatus, scheduleRestart } from "./services/update-manager.js";
35
- import { inspectSystemDrift, reconcileSystem } from "./services/system-reconciler.js";
35
+ import * as nomadDriver from "./services/runtime/drivers/nomad.js";
36
+ import * as setupManager from "./services/setup/setup-manager.js";
37
+ import { shutdownTaskRegistry } from "./services/tasks/registry.js";
38
+ import { startTmpCleanupScheduler, stopTmpCleanupScheduler, initAutoBackup, shutdownAutoBackup, } from "./services/backup/backup-manager.js";
39
+ import { checkUpdate, getUpdateStatus } from "./services/system/update-manager.js";
40
+ import { inspectSystemDrift } from "./services/system/system-reconciler.js";
36
41
  import { PROXY_IDENTITY_HEADERS } from "./constants.js";
37
- import { supportsGatewayWebsocket } from "./services/runtime/instance.js";
38
- const PUBLIC_PATHS = new Set(["/api/auth/status", "/api/auth/init", "/api/auth/login", "/api/setup/status", "/api/apps/validate-sudo-password"]);
42
+ const PUBLIC_PATHS = new Set([
43
+ "/api/auth/status",
44
+ "/api/auth/init",
45
+ "/api/auth/login",
46
+ "/api/setup/status",
47
+ // Public by product decision: this only validates a one-shot sudo password
48
+ // before install/upgrade flows. The actual privileged operation must still
49
+ // receive the password in its own request or run through a sudo CLI command.
50
+ "/api/apps/validate-sudo-password",
51
+ ]);
39
52
  /** Slug charset for /apps/:slug — same as instance ids. */
40
53
  const SLUG_RE = /^[a-z0-9][a-z0-9-]{0,62}$/;
41
54
  /** Regex for top-level app WebSocket upgrades (AI-FS v1 W2.5 PR-8). */
@@ -119,6 +132,79 @@ export function buildCapabilityWebSocketHeaders(headers, upstreamOrigin) {
119
132
  }
120
133
  return upstreamHeaders;
121
134
  }
135
+ export function buildAppProxyHttpHeaders(input) {
136
+ const forwardHeaders = {};
137
+ for (const [key, value] of Object.entries(input.headers)) {
138
+ if (value === undefined)
139
+ continue;
140
+ const lower = key.toLowerCase();
141
+ if (lower === "host")
142
+ continue;
143
+ if (lower === "cookie") {
144
+ const stripped = stripPanelSessionCookie(value);
145
+ if (stripped)
146
+ forwardHeaders[key] = stripped;
147
+ continue;
148
+ }
149
+ if (lower === "authorization")
150
+ continue;
151
+ forwardHeaders[key] = value;
152
+ }
153
+ forwardHeaders.host = input.upstreamHostHeader;
154
+ if (input.headers.host)
155
+ forwardHeaders["x-forwarded-host"] = String(input.headers.host);
156
+ forwardHeaders["x-forwarded-proto"] = input.protocol;
157
+ if (input.clientIp) {
158
+ const existingForwardedFor = forwardHeaders["x-forwarded-for"];
159
+ const existingForwardedForText = Array.isArray(existingForwardedFor)
160
+ ? existingForwardedFor.join(", ")
161
+ : existingForwardedFor;
162
+ forwardHeaders["x-forwarded-for"] = existingForwardedForText
163
+ ? `${existingForwardedForText}, ${input.clientIp}`
164
+ : input.clientIp;
165
+ forwardHeaders["x-real-ip"] = input.clientIp;
166
+ }
167
+ return forwardHeaders;
168
+ }
169
+ function matchIntegrationPublicProxy(path, options = {}) {
170
+ for (const integration of listRegisteredIntegrations()) {
171
+ const descriptor = integration.publicProxy;
172
+ if (!descriptor)
173
+ continue;
174
+ if (options.authBypass === true && descriptor.authBypass !== true)
175
+ continue;
176
+ if (options.websocket === true && descriptor.websocket !== true)
177
+ continue;
178
+ descriptor.basePathPattern.lastIndex = 0;
179
+ const matched = descriptor.basePathPattern.exec(path);
180
+ if (!matched)
181
+ continue;
182
+ return {
183
+ integration,
184
+ match: {
185
+ instanceId: matched[1] ?? "",
186
+ suffix: matched[2] ?? "",
187
+ },
188
+ };
189
+ }
190
+ return null;
191
+ }
192
+ function buildPublicProxyWebSocketHeaders(headers, descriptorHeaders) {
193
+ const upstreamHeaders = {};
194
+ for (const [key, value] of Object.entries(headers)) {
195
+ if (value === undefined)
196
+ continue;
197
+ const lower = key.toLowerCase();
198
+ if (lower === "host" ||
199
+ lower === "cookie" ||
200
+ lower === "authorization" ||
201
+ PROXY_IDENTITY_HEADERS.has(lower)) {
202
+ continue;
203
+ }
204
+ upstreamHeaders[key] = value;
205
+ }
206
+ return { ...upstreamHeaders, ...descriptorHeaders };
207
+ }
122
208
  function forwardWebSocketRejection(socket, res) {
123
209
  const statusCode = res.statusCode || 502;
124
210
  const statusMessage = res.statusMessage || "Bad Gateway";
@@ -140,10 +226,56 @@ export function selectRefererWebSocketCapability(capabilities, refererCapability
140
226
  ?? matches.find((capability) => capability.capability === refererCapability)
141
227
  ?? null;
142
228
  }
229
+ async function convergeInstanceDesiredStateOnBoot() {
230
+ for (const inst of appService.listInstances()) {
231
+ const instanceId = typeof inst?.id === "string" ? inst.id : "";
232
+ if (!instanceId)
233
+ continue;
234
+ const desiredState = inst.desiredState;
235
+ if (desiredState !== "running" && desiredState !== "stopped") {
236
+ console.warn(`[startup] Skipping ${instanceId}: invalid desiredState '${String(desiredState)}'`);
237
+ continue;
238
+ }
239
+ try {
240
+ const status = await appService.getInstanceInstallRecordStatus(instanceId);
241
+ const actualStatus = String(status?.status ?? "unknown");
242
+ if (desiredState === "running") {
243
+ if (actualStatus === "running" || actualStatus === "pending" || actualStatus === "installing") {
244
+ continue;
245
+ }
246
+ if (actualStatus === "unknown") {
247
+ console.warn(`[startup] Skipping start convergence for ${instanceId}: runtime status unknown`);
248
+ continue;
249
+ }
250
+ console.log(`[startup] Starting ${instanceId} from Core desiredState=running (actual=${actualStatus})...`);
251
+ const result = await appLifecycle.startInstance(instanceId);
252
+ if (!result.ok) {
253
+ console.warn(`[startup] Start convergence failed for ${instanceId}: ${result.error ?? "unknown error"}`);
254
+ }
255
+ continue;
256
+ }
257
+ if (actualStatus === "running" || actualStatus === "pending") {
258
+ console.log(`[startup] Stopping ${instanceId} from Core desiredState=stopped (actual=${actualStatus})...`);
259
+ const result = await appLifecycle.stopInstance(instanceId);
260
+ if (!result.ok) {
261
+ console.warn(`[startup] Stop convergence failed for ${instanceId}: ${result.error ?? "unknown error"}`);
262
+ }
263
+ }
264
+ }
265
+ catch (error) {
266
+ console.warn(`[startup] Desired-state convergence skipped for ${instanceId}: ${error?.message ?? error}`);
267
+ }
268
+ }
269
+ }
143
270
  export async function createServer(options = {}) {
144
271
  const port = options.port ?? 8091;
145
272
  const host = options.host || "0.0.0.0";
273
+ let startupTimer = null;
274
+ let delayedSystemDriftTimer = null;
275
+ let backgroundUpdateInitial = null;
276
+ let backgroundUpdateInterval = null;
146
277
  ensureDirs();
278
+ ensureDefaultFilesLayout();
147
279
  startTmpCleanupScheduler();
148
280
  initAutoBackup().catch((e) => console.error("[auto-backup] Init error:", e.message));
149
281
  llmProxy.rebuildTokenMap();
@@ -152,6 +284,19 @@ export async function createServer(options = {}) {
152
284
  logger: true,
153
285
  bodyLimit: 1048576,
154
286
  });
287
+ app.addHook("onClose", async () => {
288
+ if (startupTimer)
289
+ clearTimeout(startupTimer);
290
+ if (delayedSystemDriftTimer)
291
+ clearTimeout(delayedSystemDriftTimer);
292
+ if (backgroundUpdateInitial)
293
+ clearTimeout(backgroundUpdateInitial);
294
+ if (backgroundUpdateInterval)
295
+ clearInterval(backgroundUpdateInterval);
296
+ shutdownTaskRegistry();
297
+ stopTmpCleanupScheduler();
298
+ shutdownAutoBackup();
299
+ });
155
300
  // Allow empty JSON body for POST requests
156
301
  app.addContentTypeParser("application/json", { parseAs: "string" }, (_req, body, done) => {
157
302
  if (!body || body.length === 0) {
@@ -182,7 +327,7 @@ export async function createServer(options = {}) {
182
327
  // any agent container starts and tries to read it via env injection.
183
328
  // Lazy-init would only fire on the first request that carries an
184
329
  // X-Jishushell-Internal-Token header, which is too late for the
185
- // adapter onBeforeStart that mounts the value into the container.
330
+ // integration onBeforeStart hook that mounts the value into the container.
186
331
  try {
187
332
  getInternalMcpToken();
188
333
  }
@@ -190,7 +335,7 @@ export async function createServer(options = {}) {
190
335
  console.warn(`[server] internal MCP token init skipped: ${e?.message ?? e}`);
191
336
  }
192
337
  // ── Auth middleware for /apps/* (AI-FS v1 W2.5 PR-8) ──────────────────
193
- // Top-level reverse proxy for installed apps. Added in AI-FS v1 W2.5 PR-8.
338
+ // Top-level reverse proxy for instance UI capabilities.
194
339
  // Pairs with `/api/instances/:id/provides/:cap/*` which is instance-scoped.
195
340
  // This hook is scoped to /apps/* only so it does not double-fire with the
196
341
  // existing /api/* hook below.
@@ -215,41 +360,32 @@ export async function createServer(options = {}) {
215
360
  const path = request.url.split("?")[0];
216
361
  if (!path.startsWith("/api/") || PUBLIC_PATHS.has(path))
217
362
  return;
218
- // Allow gateway proxy without panel auth (gateway has its own auth),
219
- // but verify the instance actually exists to prevent probing.
220
- if (/^\/api\/instances\/[^/]+\/gateway(\/|$)/.test(path)) {
221
- const id = path.match(/^\/api\/instances\/([^/]+)\/gateway/)?.[1];
222
- if (!id || !instanceManager.getInstance(id)) {
363
+ // Allow integration-owned public proxies without panel auth when the
364
+ // integration declares its own upstream auth, but verify the instance
365
+ // actually exists to prevent probing.
366
+ const publicProxy = matchIntegrationPublicProxy(path, { authBypass: true });
367
+ if (publicProxy) {
368
+ const id = publicProxy.match.instanceId;
369
+ if (!id || !appService.getInstance(id)) {
223
370
  return reply.status(404).send({ detail: "Instance not found" });
224
371
  }
225
372
  return;
226
373
  }
227
- // Internal token path — used by:
228
- // (a) MCP shims spawned inside agent containers
229
- // (need BOTH X-Jishushell-Internal-Token + X-Jishushell-Instance)
230
- // (b) Panel app lifecycle scripts (post_start, etc.) calling back into
231
- // /api/internal/* on the same host
232
- // (need ONLY X-Jishushell-Internal-Token; no instance binding —
233
- // apps aren't instances)
234
- // Combined with the standard JWT path below; we never require both.
374
+ // Internal token path — used by MCP/runtime shims spawned inside managed
375
+ // instances. These callers must present BOTH
376
+ // X-Jishushell-Internal-Token + X-Jishushell-Instance so Core can bind
377
+ // the request to a canonical instance. Combined with the standard JWT
378
+ // path below; we never require both.
235
379
  const internalToken = request.headers["x-jishushell-internal-token"];
236
380
  if (typeof internalToken === "string" && internalToken.length >= 32) {
237
381
  const expected = getInternalMcpToken();
238
382
  if (internalToken.length === expected.length &&
239
383
  timingSafeEqual(Buffer.from(internalToken), Buffer.from(expected))) {
240
384
  const instanceId = request.headers["x-jishushell-instance"];
241
- if (typeof instanceId === "string" && instanceManager.getInstance(instanceId)) {
385
+ if (typeof instanceId === "string" && appService.getInstance(instanceId)) {
242
386
  request.internalCallerInstance = instanceId;
243
387
  return;
244
388
  }
245
- // Path (b): app-lifecycle / internal-only routes. Allowed without
246
- // an instance header. The route is responsible for asserting the
247
- // (request as any).internalCallerScope === "panel" tag before
248
- // returning sensitive data.
249
- if (path.startsWith("/api/internal/")) {
250
- request.internalCallerScope = "panel";
251
- return;
252
- }
253
389
  }
254
390
  return reply.status(401).send({ detail: "Unauthorized" });
255
391
  }
@@ -287,15 +423,18 @@ export async function createServer(options = {}) {
287
423
  registerProxyRoutes(app);
288
424
  // Register routes
289
425
  await app.register(authRoutes);
426
+ await app.register(adminRoutes);
427
+ await app.register(dockerRoutes);
290
428
  await app.register(instanceRoutes);
291
429
  await app.register(systemRoutes);
292
430
  await app.register(setupRoutes);
293
- await app.register(runtimeCatalogRoutes);
431
+ await app.register(integrationsRoutes);
294
432
  await app.register(appRoutes);
295
- await app.register(agentAppRoutes);
433
+ await app.register(integrationAppRoutes);
434
+ registerAppModuleRoutes(app);
435
+ await registerIntegrationOwnedRoutes(app);
296
436
  await app.register(llmRoutes);
297
437
  await app.register(backupRoutes);
298
- await app.register(internalRoutes);
299
438
  // Single FilesManager instance shared across /api/files, /webdav, and
300
439
  // /api/files/external-mounts so a mutation on the mount list (PUT
301
440
  // /external-mounts) is visible to every layer immediately.
@@ -322,7 +461,7 @@ export async function createServer(options = {}) {
322
461
  await webdavRoutes(scope, { filesManager: sharedFilesManager });
323
462
  });
324
463
  // ── Top-level /apps/:slug/* reverse proxy (AI-FS v1 W2.5 PR-8) ───────────
325
- // Reverse-proxies HTTP requests for installed apps to their capability
464
+ // Reverse-proxies HTTP requests for instance UI capabilities to their
326
465
  // upstream. Auth is handled by the onRequest hook above. The /apps/:slug
327
466
  // prefix is NOT stripped — apps like Filebrowser are configured with
328
467
  // --baseURL=/apps/filebrowser and expect the full path.
@@ -344,27 +483,20 @@ export async function createServer(options = {}) {
344
483
  // Pass the full original path unchanged (including /apps/<slug> prefix).
345
484
  const rawUrl = req.raw.url ?? "/";
346
485
  const targetPath = rawUrl;
347
- const hostHeader = `${instanceManager.urlHost(upstreamHost)}:${upstreamPort}`;
348
- // Build forwarded headers: strip cookie and authorization to avoid
349
- // leaking panel session credentials to third-party apps.
350
- const forwardHeaders = {};
351
- for (const [key, value] of Object.entries(req.headers)) {
352
- if (value === undefined)
353
- continue;
354
- const lower = key.toLowerCase();
355
- if (lower === "host")
356
- continue;
357
- if (lower === "cookie") {
358
- const stripped = stripPanelSessionCookie(value);
359
- if (stripped)
360
- forwardHeaders[key] = stripped;
361
- continue;
362
- }
363
- if (lower === "authorization")
364
- continue;
365
- forwardHeaders[key] = value;
366
- }
367
- forwardHeaders["host"] = hostHeader;
486
+ const hostHeader = `${appService.urlHost(upstreamHost)}:${upstreamPort}`;
487
+ const clientIp = typeof req.ip === "string" && req.ip
488
+ ? req.ip
489
+ : typeof req.raw?.socket?.remoteAddress === "string"
490
+ ? req.raw.socket.remoteAddress
491
+ : "";
492
+ // Strip panel credentials, but preserve proxy identity for apps whose
493
+ // security middleware expects standard reverse-proxy headers.
494
+ const forwardHeaders = buildAppProxyHttpHeaders({
495
+ headers: req.headers,
496
+ upstreamHostHeader: hostHeader,
497
+ protocol: req.protocol,
498
+ clientIp,
499
+ });
368
500
  // Hijack before writing to reply.raw so Fastify does not attempt its own
369
501
  // lifecycle send after the handler returns.
370
502
  reply.hijack();
@@ -413,62 +545,79 @@ export async function createServer(options = {}) {
413
545
  app.all("/apps/:slug/*", appsProxyHandler);
414
546
  // Auto-start Nomad-managed instances on startup
415
547
  app.addHook("onReady", async () => {
416
- setTimeout(async () => {
548
+ startupTimer = setTimeout(async () => {
549
+ startupTimer = null;
417
550
  try {
551
+ if (process.env.JISHUSHELL_SKIP_STARTUP_MAINTENANCE === "1") {
552
+ console.log("[startup] Maintenance tasks skipped by JISHUSHELL_SKIP_STARTUP_MAINTENANCE");
553
+ return;
554
+ }
418
555
  ensureCoreConfig();
419
556
  removeFlatOpenclawImageIfNeeded();
420
557
  // One-shot: drop runtime_catalog.hermes.shimPath and delete the
421
558
  // orphaned ~/.jishushell/runtimes/hermes/ dir. The Hermes shim is
422
- // now baked into the image (PR3c) and the adapter verifies the
559
+ // now baked into the image (PR3c) and the integration verifies the
423
560
  // official image RepoDigest before launch, so the host shim is dead weight.
424
561
  migrateHermesShimOutIfNeeded();
425
- // Stamp the runtime_catalog schema version so core.json carries a
426
- // provenance marker. Warns (but doesn't crash) on detected core
427
- // downgrade where the stored version exceeds what we support.
428
- migrateCatalogSchemaIfNeeded();
429
- // One-shot: if core.json still stores a mutable image tag (:latest
430
- // or :slim) from an older release, rewrite it to the pinned
431
- // :${version} form so Nomad stops re-pulling on each restart.
432
- migrateOpenclawImageTagIfNeeded();
433
- // Same one-shot for per-adapter migrations (Hermes rewrites
434
- // runtime_catalog.hermes.defaultImage from `:latest` to the pinned
435
- // :${LABEL org.opencontainers.image.version} form). Runs every
436
- // registered adapter's migrateStartup() hook so server.ts never
437
- // imports a specific adapter (check-adapter-isolation §32.2.1).
438
- runStartupMigrations();
562
+ // Stamp the historical runtime_catalog schema version so core.json
563
+ // carries a provenance marker. Warns (but doesn't crash) on detected
564
+ // core downgrade where the stored version exceeds what we support.
565
+ migrateIntegrationRuntimeSchemaIfNeeded();
566
+ // Step 13: startup no longer runs implicit instance-schema
567
+ // migrations. The dedicated `jishushell migrate legacy` command
568
+ // owns all legacy normalisation; reconcile / doctor only touch
569
+ // system/runtime state.
570
+ // Let Integrations normalize only their Core-owned global config. For
571
+ // example, OpenClaw pins runtime_catalog.openclaw.defaultImage and
572
+ // Hermes pins runtime_catalog.hermes.defaultImage. This hook
573
+ // must never migrate instance directories, facts, config, or jobs.
574
+ if (process.env.JISHUSHELL_SKIP_STARTUP_MIGRATIONS === "1") {
575
+ console.log("[startup] Integration Core config normalization skipped by JISHUSHELL_SKIP_STARTUP_MIGRATIONS");
576
+ }
577
+ else {
578
+ normalizeIntegrationCoreConfigOnStartup();
579
+ }
439
580
  getUpdateStatus();
440
- // Reconcile system-level components (systemd units, Docker images,
441
- // Nomad config) against the currently installed code. Non-blocking:
442
- // failures are logged but do not prevent server startup.
443
- try {
444
- const reconcileResult = await reconcileSystem();
445
- const updated = reconcileResult.items.filter(i => i.status === "updated");
446
- const errors = reconcileResult.items.filter(i => i.status === "error");
447
- const needsSudo = reconcileResult.items.filter(i => i.requiresSudo && i.status !== "ok" && i.status !== "updated");
448
- if (updated.length > 0) {
449
- console.log(`[startup] Reconciled ${updated.length} system component(s): ${updated.map(i => i.component).join(", ")}`);
450
- }
451
- if (errors.length > 0) {
452
- console.warn(`[startup] Reconciliation errors: ${errors.map(i => `${i.component}: ${i.message}`).join("; ")}`);
453
- }
454
- if (needsSudo.length > 0) {
455
- console.warn(`[startup] ${needsSudo.length} item(s) need sudo to fix. Run: ${reconcileResult.command}`);
456
- }
457
- else if (reconcileResult.reloadRequired) {
458
- console.warn(`[startup] System files changed and services should be reloaded. Run: ${reconcileResult.command}`);
459
- scheduleRestart(2000);
581
+ // Inspect system-level drift (systemd units, Docker images, Nomad
582
+ // config) against the currently installed code. Startup is an
583
+ // observation point only: applying host-level fixes, sudo, reload, or
584
+ // service restarts must happen through explicit Panel/CLI reconcile
585
+ // actions after user confirmation.
586
+ if (process.env.JISHUSHELL_SKIP_STARTUP_RECONCILE === "1") {
587
+ console.log("[startup] System drift inspection skipped by JISHUSHELL_SKIP_STARTUP_RECONCILE");
588
+ }
589
+ else {
590
+ try {
591
+ const reconcileResult = await inspectSystemDrift();
592
+ const updated = reconcileResult.items.filter(i => i.status === "updated");
593
+ const errors = reconcileResult.items.filter(i => i.status === "error");
594
+ const needsSudo = reconcileResult.items.filter(i => i.requiresSudo && i.status !== "ok" && i.status !== "updated");
595
+ if (updated.length > 0) {
596
+ console.warn(`[startup] Unexpected system drift inspection update(s): ${updated.map(i => i.component).join(", ")}`);
597
+ }
598
+ if (errors.length > 0) {
599
+ console.warn(`[startup] System drift inspection errors: ${errors.map(i => `${i.component}: ${i.message}`).join("; ")}`);
600
+ }
601
+ if (needsSudo.length > 0) {
602
+ console.warn(`[startup] ${needsSudo.length} item(s) need sudo to fix. Run: ${reconcileResult.command}`);
603
+ }
604
+ else if (reconcileResult.reloadRequired) {
605
+ console.warn(`[startup] System files changed and services should be reloaded. Run: ${reconcileResult.command}`);
606
+ }
607
+ if (errors.length > 0 || reconcileResult.reloadRequired) {
608
+ delayedSystemDriftTimer = setTimeout(() => {
609
+ delayedSystemDriftTimer = null;
610
+ inspectSystemDrift().catch((e) => {
611
+ console.warn(`[startup] Delayed system reconciliation check skipped: ${e.message}`);
612
+ });
613
+ }, 15_000);
614
+ delayedSystemDriftTimer.unref();
615
+ }
460
616
  }
461
- if (errors.length > 0 || reconcileResult.reloadRequired) {
462
- setTimeout(() => {
463
- inspectSystemDrift().catch((e) => {
464
- console.warn(`[startup] Delayed system reconciliation check skipped: ${e.message}`);
465
- });
466
- }, 15_000).unref();
617
+ catch (e) {
618
+ console.warn(`[startup] System drift inspection skipped: ${e.message}`);
467
619
  }
468
620
  }
469
- catch (e) {
470
- console.warn(`[startup] System reconciliation skipped: ${e.message}`);
471
- }
472
621
  const config = getCoreConfig();
473
622
  if (config.service_manager === "nomad") {
474
623
  const nomadResult = await setupManager.startNomad();
@@ -477,51 +626,30 @@ export async function createServer(options = {}) {
477
626
  }
478
627
  else {
479
628
  console.log(`[startup] Nomad: ${nomadResult.message}`);
480
- }
481
- // Auto-start stopped instances that were running before jishushell was restarted.
482
- // Running instances are left alone — no forced restart to avoid unnecessary disruption.
483
- try {
484
- for (const inst of instanceManager.listInstances()) {
485
- if (!inst.id)
486
- continue;
487
- const status = await nomadManager.getStatus(inst.id);
488
- if (status.status === "running") {
489
- continue;
490
- }
491
- else if (status.status === "pending" || status.status === "stopped") {
492
- const shouldStart = await nomadManager.shouldAutoStart(inst.id);
493
- if (shouldStart) {
494
- console.log(`[startup] Auto-starting Nomad instance ${inst.id} (was running before restart)...`);
495
- await nomadManager.startInstance(inst.id);
496
- }
497
- }
629
+ try {
630
+ await convergeInstanceDesiredStateOnBoot();
631
+ console.log("[startup] Desired-state convergence completed.");
632
+ }
633
+ catch (e) {
634
+ console.error("[startup] Desired-state convergence failed:", e);
498
635
  }
499
- console.log("[startup] Nomad instances started/restarted.");
500
- }
501
- catch (e) {
502
- console.error("[startup] Nomad restart failed:", e);
503
636
  }
504
- // Second migration attempt: the first call above runs before Nomad
505
- // auto-starts instances, so for 0.4.2-beta2 upgrades the image is
506
- // not yet locally present then. After auto-start (which may have
507
- // triggered the one-time pull), retry the pin so core.json moves
508
- // from :latest :${version} within the same startup cycle.
509
- try {
510
- migrateOpenclawImageTagIfNeeded();
637
+ // Retry Core config normalization after workload convergence because
638
+ // a newly available local image may now provide a pinnable version.
639
+ // This still must not mutate any instance-owned state.
640
+ if (process.env.JISHUSHELL_SKIP_STARTUP_MIGRATIONS === "1") {
641
+ console.log("[startup] Integration Core config normalization skipped by JISHUSHELL_SKIP_STARTUP_MIGRATIONS");
511
642
  }
512
- catch (e) {
513
- console.warn("[startup] openclaw image tag migration skipped:", e);
643
+ else {
644
+ normalizeIntegrationCoreConfigOnStartup();
514
645
  }
515
- // Second adapter-migration sweep — after Nomad auto-start the
516
- // runtime images may finally be locally present so `:latest` →
517
- // pinned digest tag rewrite can now succeed.
518
- runStartupMigrations();
519
646
  }
520
- // Rebuild capability registry from app instances. For instances whose
521
- // underlying job is currently not running, entries stay visible in the
522
- // Connections UI as greyed candidates (§5.4 of the design).
647
+ // Authoritative boot-time capability-registry rebuild. This
648
+ // populates reverse-proxy and connection routes immediately after
649
+ // Core restart. After boot, registry updates are event-driven through
650
+ // lifecycle/API status observations and uninstall cleanup.
523
651
  try {
524
- await appManager.refreshCapabilityRegistry({ force: true });
652
+ await appService.refreshCapabilityRegistry({ force: true });
525
653
  }
526
654
  catch (e) {
527
655
  console.error("[startup] Capability registry rebuild failed:", e);
@@ -533,12 +661,15 @@ export async function createServer(options = {}) {
533
661
  }, 0);
534
662
  });
535
663
  await app.listen({ port, host });
664
+ const address = app.server.address();
665
+ const actualPort = typeof address === "object" && address !== null
666
+ ? address.port
667
+ : port;
536
668
  // Track active WebSocket proxy sockets for graceful shutdown
537
669
  const activeWsSockets = new Set();
538
670
  // Handle WebSocket upgrades directly on the HTTP server, bypassing Fastify's
539
671
  // request lifecycle. Fastify's internal headersTimeout (73s) kills hijacked
540
672
  // sockets, so we intercept upgrades before Fastify sees them.
541
- const GATEWAY_WS_RE = /^\/api\/instances\/([a-z0-9][a-z0-9-]{0,62})\/gateway(?:\/(.*))?$/;
542
673
  const CAPABILITY_WS_RE = /^\/api\/instances\/([a-z0-9][a-z0-9-]{0,62})\/provides\/([^/?]+)(?:\/(.*))?$/;
543
674
  // Match Referer pointing at a capability proxy page (used to resolve
544
675
  // root-level WS upgrades initiated by embedded pages like Browserless debugger
@@ -547,12 +678,12 @@ export async function createServer(options = {}) {
547
678
  app.server.on("upgrade", async (req, socket, head) => {
548
679
  const url = req.url || "";
549
680
  const path = url.split("?")[0];
550
- const gatewayMatch = path.match(GATEWAY_WS_RE);
681
+ const publicProxyMatch = matchIntegrationPublicProxy(path, { websocket: true });
551
682
  const capabilityMatch = path.match(CAPABILITY_WS_RE);
552
683
  // ── /apps/:slug/* WebSocket upgrade (AI-FS v1 W2.5 PR-8) ──────────────
553
- // Proxy WS upgrades for top-level installed apps. Same auth gate as HTTP.
684
+ // Proxy WS upgrades for top-level instance UI capabilities. Same auth gate as HTTP.
554
685
  const appSlugWsMatch = path.match(APP_SLUG_WS_RE);
555
- if (appSlugWsMatch && !gatewayMatch && !capabilityMatch) {
686
+ if (appSlugWsMatch && !publicProxyMatch && !capabilityMatch) {
556
687
  const slug = appSlugWsMatch[1];
557
688
  // Auth gate: same JWT cookie/bearer check as the HTTP handler above.
558
689
  if (!hasValidPanelUpgradeToken(req)) {
@@ -567,7 +698,7 @@ export async function createServer(options = {}) {
567
698
  return;
568
699
  }
569
700
  const { host: upstreamHost, port: upstreamPort } = upstream;
570
- const hostHeader = `${instanceManager.urlHost(upstreamHost)}:${upstreamPort}`;
701
+ const hostHeader = `${appService.urlHost(upstreamHost)}:${upstreamPort}`;
571
702
  const upstreamOrigin = `http://${hostHeader}`;
572
703
  const qs = url.includes("?") ? url.slice(url.indexOf("?")) : "";
573
704
  const targetPath = `${path}${qs}`;
@@ -677,7 +808,7 @@ export async function createServer(options = {}) {
677
808
  // resolve the target instance via the Referer header pointing at the
678
809
  // capability proxy page that served the embedded UI.
679
810
  let refererCapabilityMatch = null;
680
- if (!gatewayMatch && !capabilityMatch) {
811
+ if (!publicProxyMatch && !capabilityMatch) {
681
812
  const referer = req.headers.referer || "";
682
813
  try {
683
814
  const refUrl = new URL(referer, "http://localhost");
@@ -688,8 +819,8 @@ export async function createServer(options = {}) {
688
819
  }
689
820
  catch { /* ignore malformed referer */ }
690
821
  }
691
- if (!gatewayMatch && !capabilityMatch && !refererCapabilityMatch) {
692
- // Not a gateway WebSocket — let it drop (Fastify doesn't handle WS natively)
822
+ if (!publicProxyMatch && !capabilityMatch && !refererCapabilityMatch) {
823
+ // Not a handled WebSocket — let it drop (Fastify doesn't handle WS natively)
693
824
  socket.destroy();
694
825
  return;
695
826
  }
@@ -729,17 +860,17 @@ export async function createServer(options = {}) {
729
860
  // instance that serves the request path (e.g. path "/" with http protocol).
730
861
  if (refererCapabilityMatch) {
731
862
  const id = refererCapabilityMatch.instanceId;
732
- const appData = instanceManager.getApp(id);
863
+ const appData = appService.getInstanceInstallRecord(id);
733
864
  if (!appData) {
734
865
  socket.destroy();
735
866
  return;
736
867
  }
737
- const capabilities = instanceManager.getProvidedCapabilitiesForApp(id);
868
+ const capabilities = appService.getProvidedCapabilitiesForApp(id);
738
869
  // Find a capability whose path prefix matches the WS request path.
739
870
  // Prefer capabilities with path "/" (root API) that aren't the debugger UI itself.
740
871
  const wsPath = path || "/";
741
872
  const capability = selectRefererWebSocketCapability(capabilities, refererCapabilityMatch.capability, wsPath);
742
- if (!capability || typeof capability.port !== "number" || capability.port < 1) {
873
+ if (!capability) {
743
874
  try {
744
875
  socket.write("HTTP/1.1 404 Not Found\r\nConnection: close\r\n\r\n");
745
876
  }
@@ -754,9 +885,24 @@ export async function createServer(options = {}) {
754
885
  // port (e.g. 18789) when the static port is taken at start-time. The
755
886
  // HTTP capability proxy already does this; the WS proxy must mirror it
756
887
  // or every WS upgrade for reallocated apps lands on a dead host port.
757
- const runtimePort = instanceManager.resolveRuntimeCapabilityPort(id, capability.capability) ?? capability.port;
758
- const targetHost = await instanceManager.getHostForAppPort(id, runtimePort);
759
- const hostHeader = `${instanceManager.urlHost(targetHost)}:${runtimePort}`;
888
+ let runtimePort = null;
889
+ try {
890
+ runtimePort = appService.resolveRuntimeCapabilityPort(id, capability.capability);
891
+ }
892
+ catch (error) {
893
+ if (!appService.isCanonicalRuntimePortRequiredError(error))
894
+ throw error;
895
+ socket.write("HTTP/1.1 409 Conflict\r\nConnection: close\r\n\r\n");
896
+ socket.destroy();
897
+ return;
898
+ }
899
+ if (typeof runtimePort !== "number" || runtimePort < 1) {
900
+ socket.write("HTTP/1.1 409 Conflict\r\nConnection: close\r\n\r\n");
901
+ socket.destroy();
902
+ return;
903
+ }
904
+ const targetHost = await appService.getHostForAppPort(id, runtimePort);
905
+ const hostHeader = `${appService.urlHost(targetHost)}:${runtimePort}`;
760
906
  const upstreamOrigin = `${protocol === "https" || protocol === "wss" ? "https" : "http"}://${hostHeader}`;
761
907
  const qs = url.includes("?") ? url.slice(url.indexOf("?")) : "";
762
908
  const targetPath = `${joinCapabilityUpstreamPath(capability.path, path.replace(/^\/+/, ""))}${qs}`;
@@ -862,12 +1008,12 @@ export async function createServer(options = {}) {
862
1008
  if (capabilityMatch) {
863
1009
  const id = capabilityMatch[1];
864
1010
  const capabilityName = decodeURIComponent(capabilityMatch[2] || "");
865
- const appData = instanceManager.getApp(id);
1011
+ const appData = appService.getInstanceInstallRecord(id);
866
1012
  if (!appData) {
867
1013
  socket.destroy();
868
1014
  return;
869
1015
  }
870
- const capability = instanceManager.getProvidedCapabilitiesForApp(id).find((entry) => entry.capability === capabilityName);
1016
+ const capability = appService.getProvidedCapabilitiesForApp(id).find((entry) => entry.capability === capabilityName);
871
1017
  if (!capability || capability.visibility === "internal") {
872
1018
  try {
873
1019
  socket.write("HTTP/1.1 404 Not Found\r\nConnection: close\r\n\r\n");
@@ -876,19 +1022,26 @@ export async function createServer(options = {}) {
876
1022
  socket.destroy();
877
1023
  return;
878
1024
  }
879
- if (typeof capability.port !== "number" || capability.port < 1) {
880
- try {
881
- socket.write("HTTP/1.1 500 Internal Server Error\r\nConnection: close\r\n\r\n");
882
- }
883
- catch { }
1025
+ const protocol = String(capability.protocol || "http").toLowerCase();
1026
+ const upstreamRequest = protocol === "https" || protocol === "wss" ? httpsRequest : httpRequest;
1027
+ let runtimePort = null;
1028
+ try {
1029
+ runtimePort = appService.resolveRuntimeCapabilityPort(id, capabilityName);
1030
+ }
1031
+ catch (error) {
1032
+ if (!appService.isCanonicalRuntimePortRequiredError(error))
1033
+ throw error;
1034
+ socket.write("HTTP/1.1 409 Conflict\r\nConnection: close\r\n\r\n");
884
1035
  socket.destroy();
885
1036
  return;
886
1037
  }
887
- const protocol = String(capability.protocol || "http").toLowerCase();
888
- const upstreamRequest = protocol === "https" || protocol === "wss" ? httpsRequest : httpRequest;
889
- const runtimePort = instanceManager.resolveRuntimeCapabilityPort(id, capabilityName) ?? capability.port;
890
- const targetHost = await instanceManager.getHostForAppPort(id, runtimePort);
891
- const hostHeader = `${instanceManager.urlHost(targetHost)}:${runtimePort}`;
1038
+ if (typeof runtimePort !== "number" || runtimePort < 1) {
1039
+ socket.write("HTTP/1.1 409 Conflict\r\nConnection: close\r\n\r\n");
1040
+ socket.destroy();
1041
+ return;
1042
+ }
1043
+ const targetHost = await appService.getHostForAppPort(id, runtimePort);
1044
+ const hostHeader = `${appService.urlHost(targetHost)}:${runtimePort}`;
892
1045
  const upstreamOrigin = `${protocol === "https" || protocol === "wss" ? "https" : "http"}://${hostHeader}`;
893
1046
  const suffix = capabilityMatch[3] || "";
894
1047
  const qs = url.includes("?") ? url.slice(url.indexOf("?")) : "";
@@ -994,67 +1147,47 @@ export async function createServer(options = {}) {
994
1147
  proxyReq.end();
995
1148
  return;
996
1149
  }
997
- const match = gatewayMatch;
998
- const id = match[1];
999
- const inst = instanceManager.getInstance(id);
1150
+ const publicProxy = publicProxyMatch;
1151
+ const id = publicProxy.match.instanceId;
1152
+ const inst = appService.getInstance(id);
1000
1153
  if (!inst) {
1001
1154
  socket.destroy();
1002
1155
  return;
1003
1156
  }
1004
- if (!(await supportsGatewayWebsocket(id, inst))) {
1005
- try {
1006
- socket.write("HTTP/1.1 501 Not Implemented\r\nConnection: close\r\n\r\n");
1157
+ const qs = url.includes("?") ? url.slice(url.indexOf("?")) : "";
1158
+ const descriptor = publicProxy.integration.publicProxy;
1159
+ let target;
1160
+ try {
1161
+ target = await descriptor.resolveTarget({ match: publicProxy.match, query: qs });
1162
+ }
1163
+ catch (error) {
1164
+ if (appService.isCanonicalRuntimePortRequiredError(error)) {
1165
+ socket.write("HTTP/1.1 409 Conflict\r\nConnection: close\r\n\r\n");
1166
+ socket.destroy();
1167
+ return;
1007
1168
  }
1008
- catch { }
1009
- socket.destroy();
1010
- return;
1169
+ throw error;
1011
1170
  }
1012
- const gwPort = instanceManager.getGatewayPort(id);
1013
- const gwHost = await instanceManager.getGatewayHost(id);
1014
1171
  // Bracket IPv6 literals for Host-header use. Node's http.request accepts
1015
1172
  // a bare `::1` in `hostname`, but the `host` header field is a URL-style
1016
1173
  // `<host>:<port>` where v6 must be bracketed.
1017
- const hostHeader = `${instanceManager.urlHost(gwHost)}:${gwPort}`;
1018
- const suffix = match[2] || "";
1019
- const qs = url.includes("?") ? url.slice(url.indexOf("?")) : "";
1020
- const targetPath = `/${suffix}${qs}`;
1021
- const upstreamHeaders = {};
1022
- for (const [key, value] of Object.entries(req.headers)) {
1023
- if (value === undefined)
1024
- continue;
1025
- const lower = key.toLowerCase();
1026
- if (lower === "host" ||
1027
- PROXY_IDENTITY_HEADERS.has(lower) ||
1028
- // Strip panel auth credentials — do not leak to downstream OpenClaw gateway
1029
- lower === "cookie" ||
1030
- lower === "authorization")
1031
- continue;
1032
- upstreamHeaders[key] = value;
1033
- }
1034
- try {
1035
- const cfg = getNativeStoredConfig(id);
1036
- const token = cfg?.gateway?.auth?.token;
1037
- if (typeof token === "string" && token.trim()) {
1038
- upstreamHeaders["authorization"] = `Bearer ${token.trim()}`;
1039
- }
1040
- }
1041
- catch {
1042
- // Best effort: if the config is unavailable, OpenClaw will reject the
1043
- // upgrade with its normal auth error.
1044
- }
1045
- // Forward the browser's Origin unchanged. The panel auto-adds it to
1046
- // `gateway.controlUi.allowedOrigins` via ensureControlUiAllowedOrigin
1047
- // + restart; rewriting to the upstream host (as cli 94163bc did)
1048
- // breaks that allowlist match.
1174
+ const hostHeader = `${appService.urlHost(target.host)}:${target.port}`;
1175
+ const targetPath = target.path;
1176
+ const descriptorHeaders = descriptor.buildHeaders?.({
1177
+ match: publicProxy.match,
1178
+ incomingHeaders: req.headers,
1179
+ }) ?? {};
1180
+ const upstreamHeaders = buildPublicProxyWebSocketHeaders(req.headers, descriptorHeaders);
1181
+ const upstreamRequest = target.protocol === "https" ? httpsRequest : httpRequest;
1049
1182
  // Prevent any HTTP-level timeouts from killing this long-lived connection
1050
1183
  socket.setTimeout?.(0);
1051
1184
  socket.setNoDelay?.(true);
1052
1185
  socket.setKeepAlive?.(true, 30000);
1053
1186
  let proxyReq;
1054
1187
  try {
1055
- proxyReq = httpRequest({
1056
- hostname: gwHost,
1057
- port: gwPort,
1188
+ proxyReq = upstreamRequest({
1189
+ hostname: target.host,
1190
+ port: target.port,
1058
1191
  path: targetPath,
1059
1192
  method: "GET",
1060
1193
  timeout: 10000, // 10s timeout for upstream upgrade handshake
@@ -1096,7 +1229,7 @@ export async function createServer(options = {}) {
1096
1229
  if (proxyHead.length > 0)
1097
1230
  socket.write(proxyHead);
1098
1231
  // Bidirectional pipe: forward all WebSocket frames without interception.
1099
- // OpenClaw manages its own upgrades inside the container.
1232
+ // The upstream integration manages its own WebSocket protocol.
1100
1233
  proxySocket.pipe(socket);
1101
1234
  socket.pipe(proxySocket);
1102
1235
  proxySocket.resume();
@@ -1149,23 +1282,25 @@ export async function createServer(options = {}) {
1149
1282
  });
1150
1283
  proxyReq.end();
1151
1284
  });
1152
- llmProxy.setCorePort(port);
1153
- setupManager.setServerPort(port);
1154
- nomadManager.setCorePort(port);
1155
- console.log(`JishuShell listening on http://${host}:${port}`);
1285
+ llmProxy.setCorePort(actualPort);
1286
+ setupManager.setServerPort(actualPort);
1287
+ nomadDriver.setCorePort(actualPort);
1288
+ console.log(`JishuShell listening on http://${host}:${actualPort}`);
1156
1289
  // Background update check — runs the update probe (which probes the npm registry
1157
1290
  // for new versions) so headless deployments can detect available updates.
1158
1291
  // Safe by design: checkUpdate swallows all errors and has a 30s in-memory cache.
1159
1292
  const bgUpdateCheck = () => { checkUpdate().catch(() => { }); };
1160
- const bgInitial = setTimeout(bgUpdateCheck, 30_000);
1161
- const bgInterval = setInterval(bgUpdateCheck, 4 * 60 * 60 * 1000);
1162
- bgInitial.unref();
1163
- bgInterval.unref();
1293
+ backgroundUpdateInitial = setTimeout(bgUpdateCheck, 30_000);
1294
+ backgroundUpdateInterval = setInterval(bgUpdateCheck, 4 * 60 * 60 * 1000);
1295
+ backgroundUpdateInitial.unref();
1296
+ backgroundUpdateInterval.unref();
1164
1297
  // Graceful shutdown — let in-flight requests finish before exiting
1165
1298
  const shutdown = async () => {
1166
1299
  console.log("[server] Shutting down gracefully...");
1167
- clearTimeout(bgInitial);
1168
- clearInterval(bgInterval);
1300
+ if (backgroundUpdateInitial)
1301
+ clearTimeout(backgroundUpdateInitial);
1302
+ if (backgroundUpdateInterval)
1303
+ clearInterval(backgroundUpdateInterval);
1169
1304
  llmProxy.flushUsage();
1170
1305
  // Destroy all active WebSocket proxy connections
1171
1306
  for (const s of activeWsSockets) {