jishushell 0.6.5 → 0.6.18

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