jishushell 0.6.18 → 0.7.3

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (343) hide show
  1. package/apps/anythingllm-container.yaml +1 -0
  2. package/apps/browserless-chromium-container.yaml +1 -0
  3. package/apps/filebrowser-container.yaml +1 -0
  4. package/apps/hermes-container.yaml +1 -7
  5. package/apps/immich-container-lite.yaml +337 -0
  6. package/apps/immich-container.yaml +371 -0
  7. package/apps/jishu-kb-container.yaml +26 -21
  8. package/apps/ollama-binary.yaml +1 -0
  9. package/apps/ollama-cpu-container.yaml +1 -0
  10. package/apps/ollama-with-hollama-binary.yaml +2 -0
  11. package/apps/openclaw-binary.yaml +4 -8
  12. package/apps/openclaw-container.yaml +1 -7
  13. package/apps/openclaw-with-ollama-container.yaml +1 -0
  14. package/apps/openclaw-with-searxng-container.yaml +20 -0
  15. package/apps/searxng-container.yaml +20 -0
  16. package/apps/weknora-container.yaml +5 -0
  17. package/dependencies/jishushell-panel-0.7.3.tgz +0 -0
  18. package/dist/cli/core.js +1 -1
  19. package/dist/cli/core.js.map +1 -1
  20. package/dist/cli/doctor.js +96 -0
  21. package/dist/cli/doctor.js.map +1 -1
  22. package/dist/config.d.ts +9 -1
  23. package/dist/config.js +72 -2
  24. package/dist/config.js.map +1 -1
  25. package/dist/install.js +60 -19
  26. package/dist/install.js.map +1 -1
  27. package/dist/routes/admin.d.ts +2 -0
  28. package/dist/routes/admin.js +72 -0
  29. package/dist/routes/admin.js.map +1 -0
  30. package/dist/routes/docker.d.ts +2 -0
  31. package/dist/routes/docker.js +58 -0
  32. package/dist/routes/docker.js.map +1 -0
  33. package/dist/routes/file-mounts.js +5 -8
  34. package/dist/routes/file-mounts.js.map +1 -1
  35. package/dist/routes/instances.d.ts +0 -14
  36. package/dist/routes/instances.js +44 -1184
  37. package/dist/routes/instances.js.map +1 -1
  38. package/dist/server.d.ts +6 -0
  39. package/dist/server.js +53 -20
  40. package/dist/server.js.map +1 -1
  41. package/dist/services/app-common/catalog-service.js +15 -5
  42. package/dist/services/app-common/catalog-service.js.map +1 -1
  43. package/dist/services/app-common/delete-service.js +5 -0
  44. package/dist/services/app-common/delete-service.js.map +1 -1
  45. package/dist/services/app-common/instance-store.js +3 -0
  46. package/dist/services/app-common/instance-store.js.map +1 -1
  47. package/dist/services/app-common/lifecycle-service.js +12 -4
  48. package/dist/services/app-common/lifecycle-service.js.map +1 -1
  49. package/dist/services/app-common/ownership.d.ts +3 -0
  50. package/dist/services/app-common/ownership.js +11 -0
  51. package/dist/services/app-common/ownership.js.map +1 -0
  52. package/dist/services/app-common/runtime-facts.js +2 -0
  53. package/dist/services/app-common/runtime-facts.js.map +1 -1
  54. package/dist/services/app-common/spec-materializer.d.ts +0 -1
  55. package/dist/services/app-common/spec-materializer.js +21 -87
  56. package/dist/services/app-common/spec-materializer.js.map +1 -1
  57. package/dist/services/app-common/status-refresh.js +25 -13
  58. package/dist/services/app-common/status-refresh.js.map +1 -1
  59. package/dist/services/app-modules/browserless/routes.js +5 -3
  60. package/dist/services/app-modules/browserless/routes.js.map +1 -1
  61. package/dist/services/capabilities/contract.d.ts +1 -2
  62. package/dist/services/capabilities/contract.js +0 -10
  63. package/dist/services/capabilities/contract.js.map +1 -1
  64. package/dist/services/capabilities/endpoint-validator.js +0 -1
  65. package/dist/services/capabilities/endpoint-validator.js.map +1 -1
  66. package/dist/services/capabilities/health.js +1 -1
  67. package/dist/services/capabilities/health.js.map +1 -1
  68. package/dist/services/capability-proxy/http.d.ts +7 -0
  69. package/dist/services/capability-proxy/http.js +555 -0
  70. package/dist/services/capability-proxy/http.js.map +1 -0
  71. package/dist/services/capability-proxy/terminal.d.ts +4 -0
  72. package/dist/services/capability-proxy/terminal.js +179 -0
  73. package/dist/services/capability-proxy/terminal.js.map +1 -0
  74. package/dist/services/connections/admin.js +19 -9
  75. package/dist/services/connections/admin.js.map +1 -1
  76. package/dist/services/connections/apply.d.ts +3 -9
  77. package/dist/services/connections/apply.js +0 -29
  78. package/dist/services/connections/apply.js.map +1 -1
  79. package/dist/services/connections/transactor.js +2 -2
  80. package/dist/services/connections/transactor.js.map +1 -1
  81. package/dist/services/files/bootstrap.d.ts +7 -0
  82. package/dist/services/files/bootstrap.js +16 -0
  83. package/dist/services/files/bootstrap.js.map +1 -0
  84. package/dist/services/files/photos/upload-page.d.ts +2 -0
  85. package/dist/services/files/photos/upload-page.js +248 -0
  86. package/dist/services/files/photos/upload-page.js.map +1 -0
  87. package/dist/services/files/photos/upload-store.d.ts +74 -0
  88. package/dist/services/files/photos/upload-store.js +432 -0
  89. package/dist/services/files/photos/upload-store.js.map +1 -0
  90. package/dist/services/http/proxy-utils.d.ts +7 -0
  91. package/dist/services/http/proxy-utils.js +29 -0
  92. package/dist/services/http/proxy-utils.js.map +1 -0
  93. package/dist/services/http/request-utils.d.ts +3 -0
  94. package/dist/services/http/request-utils.js +23 -0
  95. package/dist/services/http/request-utils.js.map +1 -0
  96. package/dist/services/instances/manager.d.ts +6 -5
  97. package/dist/services/instances/manager.js +45 -51
  98. package/dist/services/instances/manager.js.map +1 -1
  99. package/dist/services/instances/pairing.d.ts +17 -0
  100. package/dist/services/instances/pairing.js +53 -0
  101. package/dist/services/instances/pairing.js.map +1 -0
  102. package/dist/services/instances/status.d.ts +2 -0
  103. package/dist/services/instances/status.js +11 -0
  104. package/dist/services/instances/status.js.map +1 -0
  105. package/dist/services/integrations/hermes/integration.d.ts +1 -1
  106. package/dist/services/integrations/hermes/integration.js +7 -8
  107. package/dist/services/integrations/hermes/integration.js.map +1 -1
  108. package/dist/services/integrations/immich/client.d.ts +93 -0
  109. package/dist/services/integrations/immich/client.js +458 -0
  110. package/dist/services/integrations/immich/client.js.map +1 -0
  111. package/dist/services/integrations/immich/config.d.ts +15 -0
  112. package/dist/services/integrations/immich/config.js +178 -0
  113. package/dist/services/integrations/immich/config.js.map +1 -0
  114. package/dist/services/integrations/immich/discovery.d.ts +9 -0
  115. package/dist/services/integrations/immich/discovery.js +101 -0
  116. package/dist/services/integrations/immich/discovery.js.map +1 -0
  117. package/dist/services/integrations/immich/gallery-renderer.d.ts +5 -0
  118. package/dist/services/integrations/immich/gallery-renderer.js +150 -0
  119. package/dist/services/integrations/immich/gallery-renderer.js.map +1 -0
  120. package/dist/services/integrations/immich/immich-shim.d.ts +11 -0
  121. package/dist/services/integrations/immich/immich-shim.js +439 -0
  122. package/dist/services/integrations/immich/immich-shim.js.map +1 -0
  123. package/dist/services/integrations/immich/integration.d.ts +18 -0
  124. package/dist/services/integrations/immich/integration.js +64 -0
  125. package/dist/services/integrations/immich/integration.js.map +1 -0
  126. package/dist/services/integrations/immich/photo-library.d.ts +4 -0
  127. package/dist/services/integrations/immich/photo-library.js +63 -0
  128. package/dist/services/integrations/immich/photo-library.js.map +1 -0
  129. package/dist/services/integrations/immich/review-executor.d.ts +3 -0
  130. package/dist/services/integrations/immich/review-executor.js +41 -0
  131. package/dist/services/integrations/immich/review-executor.js.map +1 -0
  132. package/dist/services/integrations/immich/review-session-service.d.ts +27 -0
  133. package/dist/services/integrations/immich/review-session-service.js +206 -0
  134. package/dist/services/integrations/immich/review-session-service.js.map +1 -0
  135. package/dist/services/integrations/immich/review-store.d.ts +47 -0
  136. package/dist/services/integrations/immich/review-store.js +347 -0
  137. package/dist/services/integrations/immich/review-store.js.map +1 -0
  138. package/dist/services/integrations/immich/routes.d.ts +7 -0
  139. package/dist/services/integrations/immich/routes.js +363 -0
  140. package/dist/services/integrations/immich/routes.js.map +1 -0
  141. package/dist/services/integrations/immich/types.d.ts +186 -0
  142. package/dist/services/integrations/immich/types.js +2 -0
  143. package/dist/services/integrations/immich/types.js.map +1 -0
  144. package/dist/services/integrations/index.d.ts +1 -0
  145. package/dist/services/integrations/index.js +1 -0
  146. package/dist/services/integrations/index.js.map +1 -1
  147. package/dist/services/integrations/installable/installers/integration.js +113 -7
  148. package/dist/services/integrations/installable/installers/integration.js.map +1 -1
  149. package/dist/services/integrations/jishukb/integration.d.ts +3 -1
  150. package/dist/services/integrations/jishukb/integration.js +121 -10
  151. package/dist/services/integrations/jishukb/integration.js.map +1 -1
  152. package/dist/services/integrations/openclaw/integration.d.ts +21 -7
  153. package/dist/services/integrations/openclaw/integration.js +385 -158
  154. package/dist/services/integrations/openclaw/integration.js.map +1 -1
  155. package/dist/services/integrations/openclaw/jishukb-native-mcp.d.ts +58 -0
  156. package/dist/services/integrations/openclaw/jishukb-native-mcp.js +373 -0
  157. package/dist/services/integrations/openclaw/jishukb-native-mcp.js.map +1 -0
  158. package/dist/services/integrations/openclaw/jishukb-shim.d.ts +8 -4
  159. package/dist/services/integrations/openclaw/jishukb-shim.js +624 -17
  160. package/dist/services/integrations/openclaw/jishukb-shim.js.map +1 -1
  161. package/dist/services/integrations/openclaw/mcporter.d.ts +13 -0
  162. package/dist/services/integrations/openclaw/mcporter.js +31 -0
  163. package/dist/services/integrations/openclaw/mcporter.js.map +1 -1
  164. package/dist/services/integrations/openclaw/native-mcp.d.ts +48 -0
  165. package/dist/services/integrations/openclaw/native-mcp.js +125 -0
  166. package/dist/services/integrations/openclaw/native-mcp.js.map +1 -0
  167. package/dist/services/integrations/openclaw/routes.js +4 -1
  168. package/dist/services/integrations/openclaw/routes.js.map +1 -1
  169. package/dist/services/integrations/types.d.ts +5 -17
  170. package/dist/services/repair/runtime-repair.js +68 -1
  171. package/dist/services/repair/runtime-repair.js.map +1 -1
  172. package/dist/services/runtime/docker-network.d.ts +8 -0
  173. package/dist/services/runtime/docker-network.js +123 -0
  174. package/dist/services/runtime/docker-network.js.map +1 -0
  175. package/dist/services/runtime/driver-registry.d.ts +4 -0
  176. package/dist/services/runtime/driver-registry.js.map +1 -1
  177. package/dist/services/runtime/drivers/nomad.d.ts +1 -0
  178. package/dist/services/runtime/drivers/nomad.js +35 -5
  179. package/dist/services/runtime/drivers/nomad.js.map +1 -1
  180. package/dist/services/runtime/service-manager.d.ts +2 -0
  181. package/dist/services/runtime/service-manager.js +18 -0
  182. package/dist/services/runtime/service-manager.js.map +1 -0
  183. package/dist/services/runtime/types.d.ts +1 -0
  184. package/dist/services/runtime/workload-compiler.js +29 -4
  185. package/dist/services/runtime/workload-compiler.js.map +1 -1
  186. package/dist/services/setup/setup-manager.js +29 -73
  187. package/dist/services/setup/setup-manager.js.map +1 -1
  188. package/dist/services/system/runtime-ownership.d.ts +36 -0
  189. package/dist/services/system/runtime-ownership.js +250 -0
  190. package/dist/services/system/runtime-ownership.js.map +1 -0
  191. package/dist/services/system/system-reconciler.js +53 -0
  192. package/dist/services/system/system-reconciler.js.map +1 -1
  193. package/dist/types.d.ts +19 -3
  194. package/dist/utils/path-safety.js +1 -1
  195. package/dist/utils/service-user.d.ts +13 -0
  196. package/dist/utils/service-user.js +129 -0
  197. package/dist/utils/service-user.js.map +1 -0
  198. package/install/jishu-install.sh +0 -1
  199. package/node_modules/brace-expansion/dist/commonjs/index.js +24 -14
  200. package/node_modules/brace-expansion/dist/commonjs/index.js.map +1 -1
  201. package/node_modules/brace-expansion/dist/esm/index.js +24 -14
  202. package/node_modules/brace-expansion/dist/esm/index.js.map +1 -1
  203. package/node_modules/brace-expansion/package.json +2 -2
  204. package/node_modules/fast-uri/index.js +1 -1
  205. package/node_modules/fast-uri/package.json +1 -1
  206. package/node_modules/fast-uri/test/security.test.js +28 -0
  207. package/node_modules/fastify/SECURITY.md +1 -1
  208. package/node_modules/fastify/SPONSORS.md +6 -4
  209. package/node_modules/fastify/docs/Guides/Database.md +0 -28
  210. package/node_modules/fastify/docs/Guides/Ecosystem.md +13 -2
  211. package/node_modules/fastify/docs/Guides/Serverless.md +2 -2
  212. package/node_modules/fastify/docs/Guides/Write-Plugin.md +1 -1
  213. package/node_modules/fastify/docs/Reference/Encapsulation.md +27 -26
  214. package/node_modules/fastify/docs/Reference/Errors.md +10 -4
  215. package/node_modules/fastify/docs/Reference/HTTP2.md +10 -10
  216. package/node_modules/fastify/docs/Reference/Hooks.md +4 -4
  217. package/node_modules/fastify/docs/Reference/Index.md +14 -16
  218. package/node_modules/fastify/docs/Reference/LTS.md +12 -13
  219. package/node_modules/fastify/docs/Reference/Lifecycle.md +9 -8
  220. package/node_modules/fastify/docs/Reference/Logging.md +44 -39
  221. package/node_modules/fastify/docs/Reference/Middleware.md +21 -25
  222. package/node_modules/fastify/docs/Reference/Principles.md +2 -2
  223. package/node_modules/fastify/docs/Reference/Reply.md +6 -1
  224. package/node_modules/fastify/docs/Reference/Request.md +27 -16
  225. package/node_modules/fastify/docs/Reference/Routes.md +5 -2
  226. package/node_modules/fastify/docs/Reference/Server.md +31 -3
  227. package/node_modules/fastify/docs/Reference/Type-Providers.md +29 -5
  228. package/node_modules/fastify/docs/Reference/Validation-and-Serialization.md +15 -2
  229. package/node_modules/fastify/docs/Reference/Warnings.md +7 -6
  230. package/node_modules/fastify/eslint.config.js +7 -2
  231. package/node_modules/fastify/fastify.d.ts +8 -3
  232. package/node_modules/fastify/fastify.js +43 -14
  233. package/node_modules/fastify/lib/content-type-parser.js +13 -1
  234. package/node_modules/fastify/lib/decorate.js +11 -3
  235. package/node_modules/fastify/lib/error-handler.js +4 -3
  236. package/node_modules/fastify/lib/error-serializer.js +59 -59
  237. package/node_modules/fastify/lib/errors.js +16 -1
  238. package/node_modules/fastify/lib/four-oh-four.js +14 -9
  239. package/node_modules/fastify/lib/handle-request.js +11 -5
  240. package/node_modules/fastify/lib/plugin-override.js +2 -1
  241. package/node_modules/fastify/lib/plugin-utils.js +5 -5
  242. package/node_modules/fastify/lib/reply.js +63 -8
  243. package/node_modules/fastify/lib/request.js +14 -4
  244. package/node_modules/fastify/lib/route.js +20 -6
  245. package/node_modules/fastify/lib/schema-controller.js +1 -1
  246. package/node_modules/fastify/lib/schemas.js +37 -30
  247. package/node_modules/fastify/lib/symbols.js +3 -1
  248. package/node_modules/fastify/lib/validation.js +1 -13
  249. package/node_modules/fastify/lib/warnings.js +3 -3
  250. package/node_modules/fastify/package.json +13 -15
  251. package/node_modules/fastify/scripts/validate-ecosystem-links.js +1 -0
  252. package/node_modules/fastify/test/bundler/esbuild/package.json +1 -1
  253. package/node_modules/fastify/test/close-pipelining.test.js +1 -2
  254. package/node_modules/fastify/test/custom-http-server.test.js +38 -0
  255. package/node_modules/fastify/test/decorator-instance-properties.test.js +63 -0
  256. package/node_modules/fastify/test/diagnostics-channel/async-error-handler.test.js +74 -0
  257. package/node_modules/fastify/test/hooks.test.js +23 -0
  258. package/node_modules/fastify/test/http-methods/get.test.js +1 -1
  259. package/node_modules/fastify/test/http2/plain.test.js +135 -0
  260. package/node_modules/fastify/test/http2/secure-with-fallback.test.js +1 -1
  261. package/node_modules/fastify/test/https/https.test.js +1 -2
  262. package/node_modules/fastify/test/internals/errors.test.js +31 -1
  263. package/node_modules/fastify/test/internals/plugin.test.js +3 -1
  264. package/node_modules/fastify/test/internals/request.test.js +27 -3
  265. package/node_modules/fastify/test/internals/schema-controller-perf.test.js +33 -0
  266. package/node_modules/fastify/test/logger/logging.test.js +18 -1
  267. package/node_modules/fastify/test/logger/options.test.js +38 -1
  268. package/node_modules/fastify/test/reply-error.test.js +1 -1
  269. package/node_modules/fastify/test/reply-trailers.test.js +70 -0
  270. package/node_modules/fastify/test/request-media-type.test.js +105 -0
  271. package/node_modules/fastify/test/route-prefix.test.js +34 -0
  272. package/node_modules/fastify/test/router-options.test.js +222 -11
  273. package/node_modules/fastify/test/schema-serialization.test.js +108 -0
  274. package/node_modules/fastify/test/schema-validation.test.js +24 -0
  275. package/node_modules/fastify/test/scripts/validate-ecosystem-links.test.js +40 -57
  276. package/node_modules/fastify/test/throw.test.js +14 -0
  277. package/node_modules/fastify/test/trust-proxy.test.js +21 -0
  278. package/node_modules/fastify/test/types/content-type-parser.tst.ts +70 -0
  279. package/node_modules/fastify/test/types/{decorate-request-reply.test-d.ts → decorate-request-reply.tst.ts} +4 -4
  280. package/node_modules/fastify/test/types/{dummy-plugin.ts → dummy-plugin.mts} +1 -1
  281. package/node_modules/fastify/test/types/errors.tst.ts +91 -0
  282. package/node_modules/fastify/test/types/fastify.tst.ts +351 -0
  283. package/node_modules/fastify/test/types/hooks.tst.ts +578 -0
  284. package/node_modules/fastify/test/types/instance.tst.ts +597 -0
  285. package/node_modules/fastify/test/types/{logger.test-d.ts → logger.tst.ts} +61 -62
  286. package/node_modules/fastify/test/types/plugin.tst.ts +96 -0
  287. package/node_modules/fastify/test/types/register.tst.ts +245 -0
  288. package/node_modules/fastify/test/types/reply.tst.ts +297 -0
  289. package/node_modules/fastify/test/types/request.tst.ts +199 -0
  290. package/node_modules/fastify/test/types/route.tst.ts +576 -0
  291. package/node_modules/fastify/test/types/{schema.test-d.ts → schema.tst.ts} +22 -22
  292. package/node_modules/fastify/test/types/{serverFactory.test-d.ts → serverFactory.tst.ts} +4 -4
  293. package/node_modules/fastify/test/types/tsconfig.json +9 -0
  294. package/node_modules/fastify/test/types/{type-provider.test-d.ts → type-provider.tst.ts} +256 -250
  295. package/node_modules/fastify/test/types/using.tst.ts +14 -0
  296. package/node_modules/fastify/types/errors.d.ts +3 -0
  297. package/node_modules/fastify/types/request.d.ts +23 -2
  298. package/node_modules/jishushell-panel/output/public/assets/{ApiKeyField-NKcbHjNz.js → ApiKeyField-Ce5d1xna.js} +1 -1
  299. package/node_modules/jishushell-panel/output/public/assets/{Dashboard-Da1fL38t.js → Dashboard-BXame3yg.js} +1 -1
  300. package/node_modules/jishushell-panel/output/public/assets/{HermesChatPanel-DZvmYsoh.js → HermesChatPanel-BHZtPCJd.js} +1 -1
  301. package/node_modules/jishushell-panel/output/public/assets/{HermesConfigForm-BLUWlKwm.js → HermesConfigForm-CB3GbNX9.js} +1 -1
  302. package/node_modules/jishushell-panel/output/public/assets/{InitPassword-BAKsshzk.js → InitPassword-Boab9F6g.js} +1 -1
  303. package/node_modules/jishushell-panel/output/public/assets/InstanceDetail-DrIWCqo-.js +14 -0
  304. package/node_modules/jishushell-panel/output/public/assets/{Login-DHeOmwI8.js → Login-CzpOkNau.js} +1 -1
  305. package/node_modules/jishushell-panel/output/public/assets/NewInstance-CANXyCcL.js +1 -0
  306. package/node_modules/jishushell-panel/output/public/assets/{ProviderRecommendations-H0ByEYF0.js → ProviderRecommendations-BABo9VOC.js} +1 -1
  307. package/node_modules/jishushell-panel/output/public/assets/Settings-CKp5XxFh.js +1 -0
  308. package/node_modules/jishushell-panel/output/public/assets/Setup-C7xVDPow.js +1 -0
  309. package/node_modules/jishushell-panel/output/public/assets/{WeixinLoginPanel-D-T6BxkQ.js → WeixinLoginPanel-B765Xz4C.js} +1 -1
  310. package/node_modules/jishushell-panel/output/public/assets/{index-ERt6_ngA.js → index-Bs6DSbiR.js} +6 -6
  311. package/node_modules/jishushell-panel/output/public/assets/{registry-DF93EzIb.js → registry-sWIZsIEF.js} +2 -2
  312. package/node_modules/jishushell-panel/output/public/assets/{usePolling-DeoThIQn.js → usePolling-D4IDOQd_.js} +1 -1
  313. package/node_modules/jishushell-panel/output/public/assets/vendor-i18n-Df8aUdv8.js +1 -0
  314. package/node_modules/jishushell-panel/output/public/assets/{vendor-react-Cc84NArf.js → vendor-react-0L0rjmYG.js} +3 -3
  315. package/node_modules/jishushell-panel/output/public/index.html +3 -3
  316. package/node_modules/jishushell-panel/package.json +1 -1
  317. package/node_modules/semver/classes/range.js +6 -2
  318. package/node_modules/semver/package.json +1 -1
  319. package/package.json +4 -4
  320. package/scripts/check-app-spec.mjs +4 -12
  321. package/scripts/check-architecture-boundaries.mjs +178 -0
  322. package/scripts/pack-gui-and-send-pi.sh +5 -3
  323. package/dependencies/jishushell-panel-0.6.18.tgz +0 -0
  324. package/dist/services/connections/suggestions.d.ts +0 -27
  325. package/dist/services/connections/suggestions.js +0 -124
  326. package/dist/services/connections/suggestions.js.map +0 -1
  327. package/node_modules/fastify/test/types/content-type-parser.test-d.ts +0 -72
  328. package/node_modules/fastify/test/types/errors.test-d.ts +0 -90
  329. package/node_modules/fastify/test/types/fastify.test-d.ts +0 -352
  330. package/node_modules/fastify/test/types/hooks.test-d.ts +0 -550
  331. package/node_modules/fastify/test/types/import.ts +0 -2
  332. package/node_modules/fastify/test/types/instance.test-d.ts +0 -588
  333. package/node_modules/fastify/test/types/plugin.test-d.ts +0 -97
  334. package/node_modules/fastify/test/types/register.test-d.ts +0 -237
  335. package/node_modules/fastify/test/types/reply.test-d.ts +0 -254
  336. package/node_modules/fastify/test/types/request.test-d.ts +0 -188
  337. package/node_modules/fastify/test/types/route.test-d.ts +0 -553
  338. package/node_modules/fastify/test/types/using.test-d.ts +0 -17
  339. package/node_modules/jishushell-panel/output/public/assets/InstanceDetail-Dgyc_TX5.js +0 -14
  340. package/node_modules/jishushell-panel/output/public/assets/NewInstance-CIy0cYtp.js +0 -1
  341. package/node_modules/jishushell-panel/output/public/assets/Settings-DAT-UMfP.js +0 -1
  342. package/node_modules/jishushell-panel/output/public/assets/Setup-g3uckFYR.js +0 -1
  343. package/node_modules/jishushell-panel/output/public/assets/vendor-i18n-CS8DFbkQ.js +0 -1
@@ -0,0 +1,371 @@
1
+ id: immich-container
2
+ name: Immich
3
+ version: "1.0.2"
4
+ jishushell:
5
+ min_version: "0.5.15"
6
+ description: "Self-hosted photo and video backup/gallery."
7
+ singleInstance: true
8
+
9
+ # Converted from https://github.com/immich-app/immich/releases/latest/download/docker-compose.yml
10
+ # and https://github.com/immich-app/immich/releases/latest/download/example.env.
11
+ # Compose features that are intentionally normalized here:
12
+ # - env_file/.env values are inlined as explicit env keys because AppSpec has no env_file field.
13
+ # - compose service DNS is preserved through an app-scoped Docker bridge network.
14
+ # - the top-level named volume model-cache is represented as an app-scoped bind mount.
15
+ # - image HEALTHCHECK and command healthcheck entries are not reused by AppSpec.
16
+ # - database shm_size is not expressible as a first-class AppSpec field today.
17
+
18
+ network:
19
+ mode: docker-bridge
20
+ name: "jishushell-${instance.id}"
21
+
22
+ tasks:
23
+ - name: database
24
+ role: sidecar
25
+ runtime: container
26
+ image: "ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:bcf63357191b76a916ae5eb93464d65c07511da41e3bf7a8416db519b40b1c23"
27
+ user: "0:0"
28
+ cap_add: ["CHOWN", "FOWNER", "DAC_OVERRIDE", "SETUID", "SETGID", "SETPCAP"]
29
+ env:
30
+ POSTGRES_PASSWORD: "postgres"
31
+ POSTGRES_USER: "postgres"
32
+ POSTGRES_DB: "immich"
33
+ POSTGRES_INITDB_ARGS: "--data-checksums"
34
+ resources:
35
+ cpu: "700m"
36
+ memory: "1024Mi"
37
+ ports:
38
+ - name: pg
39
+ port: 5432
40
+ visibility: internal
41
+ volumes:
42
+ - source: "~/.jishushell/apps/${instance.id}/postgres"
43
+ target: "/var/lib/postgresql/data"
44
+
45
+ - name: redis
46
+ role: sidecar
47
+ runtime: container
48
+ image: "docker.io/valkey/valkey:9@sha256:3b55fbaa0cd93cf0d9d961f405e4dfcc70efe325e2d84da207a0a8e6d8fde4f9"
49
+ user: "0:0"
50
+ cap_add: ["CHOWN", "SETUID", "SETGID"]
51
+ resources:
52
+ cpu: "100m"
53
+ memory: "128Mi"
54
+ ports:
55
+ - name: redis
56
+ port: 6379
57
+ visibility: internal
58
+
59
+ - name: immich-machine-learning
60
+ role: sidecar
61
+ runtime: container
62
+ image: "ghcr.io/immich-app/immich-machine-learning:v2"
63
+ user: "0:0"
64
+ cap_add: ["CHOWN", "FOWNER", "DAC_OVERRIDE", "SETUID", "SETGID", "SETPCAP", "NET_BIND_SERVICE"]
65
+ env:
66
+ UPLOAD_LOCATION: "./library"
67
+ DB_DATA_LOCATION: "./postgres"
68
+ TZ: "Asia/Shanghai"
69
+ IMMICH_VERSION: "v2"
70
+ DB_PASSWORD: "postgres"
71
+ DB_USERNAME: "postgres"
72
+ DB_DATABASE_NAME: "immich"
73
+ resources:
74
+ cpu: "1000m"
75
+ memory: "1536Mi"
76
+ ports:
77
+ - name: ml-http
78
+ port: 3003
79
+ visibility: internal
80
+ volumes:
81
+ - source: "~/.jishushell/apps/${instance.id}/model-cache"
82
+ target: "/cache"
83
+
84
+ - name: immich-server
85
+ role: service
86
+ runtime: container
87
+ image: "ghcr.io/immich-app/immich-server:v2"
88
+ user: "0:0"
89
+ cap_add: ["CHOWN", "FOWNER", "DAC_OVERRIDE", "SETUID", "SETGID", "SETPCAP", "NET_BIND_SERVICE"]
90
+ env:
91
+ UPLOAD_LOCATION: "./library"
92
+ DB_DATA_LOCATION: "./postgres"
93
+ TZ: "Asia/Shanghai"
94
+ IMMICH_VERSION: "v2"
95
+ DB_PASSWORD: "postgres"
96
+ DB_USERNAME: "postgres"
97
+ DB_DATABASE_NAME: "immich"
98
+ resources:
99
+ cpu: "1200m"
100
+ memory: "1536Mi"
101
+ ports:
102
+ - name: http
103
+ port: 2283
104
+ container_port: 2283
105
+ visibility: external
106
+ volumes:
107
+ - source: "~/.jishushell/apps/${instance.id}/library"
108
+ target: "/data"
109
+ - source: "~/.jishushell/files/photos/library"
110
+ target: "/external/photos"
111
+ readonly: true
112
+ - source: "/etc/localtime"
113
+ target: "/etc/localtime"
114
+ readonly: true
115
+ health:
116
+ http:
117
+ path: /api/server/ping
118
+ port: 2283
119
+ interval: "15s"
120
+ timeout: "5s"
121
+ retries: 8
122
+ start_period: "120s"
123
+
124
+ provides:
125
+ - capability: "ui-immich"
126
+ kind: ui
127
+ interface: web-ui
128
+ task: "immich-server"
129
+ port: 2283
130
+ endpoint:
131
+ portName: http
132
+ path: "/"
133
+ protocol: "http"
134
+ visibility: "external"
135
+ embedded: "direct"
136
+ description: "Immich Web UI"
137
+
138
+ lifecycle:
139
+ install:
140
+ - downloadImage: "docker.io/valkey/valkey:9@sha256:3b55fbaa0cd93cf0d9d961f405e4dfcc70efe325e2d84da207a0a8e6d8fde4f9"
141
+ - downloadImage: "ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:bcf63357191b76a916ae5eb93464d65c07511da41e3bf7a8416db519b40b1c23"
142
+ - downloadImage: "ghcr.io/immich-app/immich-server:v2"
143
+ timeout_ms: 1800000
144
+ idle_timeout_ms: 1800000
145
+ - downloadImage: "ghcr.io/immich-app/immich-machine-learning:v2"
146
+ timeout_ms: 1800000
147
+ idle_timeout_ms: 1800000
148
+ - mkdir: "~/.jishushell/apps/${instance.id}/library"
149
+ - mkdir: "~/.jishushell/apps/${instance.id}/postgres"
150
+ - mkdir: "~/.jishushell/apps/${instance.id}/model-cache"
151
+
152
+ post_start:
153
+ - run: |
154
+ set -eu
155
+
156
+ STATE_DIR="$HOME/.jishushell/apps/${instance.id}"
157
+ ENV_FILE="$STATE_DIR/.env"
158
+ mkdir -p "$STATE_DIR"
159
+ touch "$ENV_FILE"
160
+ chmod 600 "$ENV_FILE"
161
+
162
+ read_env() {
163
+ awk -F= -v key="$1" '$1 == key { value = substr($0, length(key) + 2) } END { if (value != "") print value }' "$ENV_FILE" 2>/dev/null || true
164
+ }
165
+
166
+ upsert_env() {
167
+ key="$1"
168
+ value="$2"
169
+ tmp="${ENV_FILE}.tmp"
170
+ awk -v key="$key" -v value="$value" '
171
+ BEGIN { updated = 0 }
172
+ index($0, key "=") == 1 { print key "=" value; updated = 1; next }
173
+ { print }
174
+ END { if (!updated) print key "=" value }
175
+ ' "$ENV_FILE" > "$tmp"
176
+ chmod 600 "$tmp"
177
+ mv "$tmp" "$ENV_FILE"
178
+ }
179
+
180
+ sync_openclaw() {
181
+ if [ -n "${JISHUSHELL_CORE_URL:-}" ] && [ -n "${JISHUSHELL_INTERNAL_TOKEN:-}" ]; then
182
+ curl -fsS -X POST \
183
+ -H "X-Jishushell-Internal-Token: $JISHUSHELL_INTERNAL_TOKEN" \
184
+ -H "X-Jishushell-Instance: ${instance.id}" \
185
+ "$JISHUSHELL_CORE_URL/api/integrations/immich/internal/sync-openclaw" >/dev/null || true
186
+ fi
187
+ }
188
+
189
+ IMMICH_API_KEY="$(read_env IMMICH_API_KEY)"
190
+ if [ -n "$IMMICH_API_KEY" ]; then
191
+ sync_openclaw
192
+ exit 0
193
+ fi
194
+
195
+ IMMICH_ADMIN_EMAIL="$(read_env IMMICH_ADMIN_EMAIL)"
196
+ if [ -z "$IMMICH_ADMIN_EMAIL" ]; then
197
+ IMMICH_ADMIN_EMAIL="admin@jishushell.local"
198
+ upsert_env IMMICH_ADMIN_EMAIL "$IMMICH_ADMIN_EMAIL"
199
+ fi
200
+
201
+ IMMICH_ADMIN_PASSWORD="$(read_env IMMICH_ADMIN_PASSWORD)"
202
+ if [ -z "$IMMICH_ADMIN_PASSWORD" ]; then
203
+ IMMICH_ADMIN_PASSWORD="JishuShell@2026"
204
+ upsert_env IMMICH_ADMIN_PASSWORD "$IMMICH_ADMIN_PASSWORD"
205
+ fi
206
+
207
+ find_immich_container() {
208
+ docker ps \
209
+ --format '{{.ID}}\t{{.Names}}\t{{.Label "com.hashicorp.nomad.job_name"}}\t{{.Label "com.hashicorp.nomad.task_name"}}' \
210
+ | awk -F '\t' -v instance="${instance.id}" '
211
+ $4 == "immich-server" && ($3 == instance || $3 == "jishushell-" instance) {
212
+ print $1;
213
+ found = 1;
214
+ exit;
215
+ }
216
+ $4 == "immich-server" && index($2, instance) > 0 { label_fallback = $1 }
217
+ $2 == "immich-server" || index($2, "immich-server-") == 1 { name_fallback = $1 }
218
+ END {
219
+ if (!found) {
220
+ if (label_fallback) print label_fallback;
221
+ else if (name_fallback) print name_fallback;
222
+ }
223
+ }
224
+ '
225
+ }
226
+
227
+ CONTAINER_ID=""
228
+ for attempt in $(seq 1 120); do
229
+ CONTAINER_ID="$(find_immich_container | head -n 1)"
230
+ if [ -n "$CONTAINER_ID" ]; then
231
+ break
232
+ fi
233
+ sleep 2
234
+ done
235
+ if [ -z "$CONTAINER_ID" ]; then
236
+ echo "immich-server container is not running" >&2
237
+ exit 1
238
+ fi
239
+
240
+ IMMICH_API_KEY="$(docker exec -i \
241
+ -e IMMICH_BOOTSTRAP_EMAIL="$IMMICH_ADMIN_EMAIL" \
242
+ -e IMMICH_BOOTSTRAP_PASSWORD="$IMMICH_ADMIN_PASSWORD" \
243
+ "$CONTAINER_ID" node - <<'NODE'
244
+ const baseUrl = "http://127.0.0.1:2283/api";
245
+ const email = process.env.IMMICH_BOOTSTRAP_EMAIL;
246
+ const password = process.env.IMMICH_BOOTSTRAP_PASSWORD;
247
+
248
+ const sleep = (ms) => new Promise((resolve) => setTimeout(resolve, ms));
249
+
250
+ function fatal(message) {
251
+ const error = new Error(message);
252
+ error.fatal = true;
253
+ throw error;
254
+ }
255
+
256
+ async function request(path, options = {}) {
257
+ const response = await fetch(`${baseUrl}${path}`, {
258
+ ...options,
259
+ headers: {
260
+ accept: "application/json",
261
+ "content-type": "application/json",
262
+ ...(options.headers ?? {}),
263
+ },
264
+ });
265
+ const text = await response.text();
266
+ let body = null;
267
+ if (text) {
268
+ try {
269
+ body = JSON.parse(text);
270
+ } catch {
271
+ body = null;
272
+ }
273
+ }
274
+ return { response, body, text };
275
+ }
276
+
277
+ async function login() {
278
+ const result = await request("/auth/login", {
279
+ method: "POST",
280
+ body: JSON.stringify({ email, password }),
281
+ });
282
+ if (result.response.ok && result.body?.accessToken) {
283
+ return result.body.accessToken;
284
+ }
285
+ return null;
286
+ }
287
+
288
+ async function bootstrap() {
289
+ let lastError = "Immich API is not ready";
290
+ for (let attempt = 0; attempt < 150; attempt += 1) {
291
+ try {
292
+ const ping = await request("/server/ping", { method: "GET" });
293
+ if (!ping.response.ok) {
294
+ lastError = `ping failed: HTTP ${ping.response.status} ${ping.text}`;
295
+ await sleep(2000);
296
+ continue;
297
+ }
298
+
299
+ let accessToken = await login();
300
+ if (!accessToken) {
301
+ const signUp = await request("/auth/admin-sign-up", {
302
+ method: "POST",
303
+ body: JSON.stringify({ email, password, name: "JishuShell" }),
304
+ });
305
+ if (signUp.response.status === 400 || signUp.response.status === 409) {
306
+ fatal("Immich is already initialized and the stored JishuShell admin credentials did not work; set IMMICH_ADMIN_EMAIL/IMMICH_ADMIN_PASSWORD or IMMICH_API_KEY in the instance .env file");
307
+ }
308
+ if (!signUp.response.ok) {
309
+ lastError = `admin sign-up failed: HTTP ${signUp.response.status} ${signUp.text}`;
310
+ await sleep(2000);
311
+ continue;
312
+ }
313
+ accessToken = await login();
314
+ }
315
+
316
+ if (!accessToken) {
317
+ throw new Error("unable to log in with the stored Immich admin credentials");
318
+ }
319
+
320
+ const apiKey = await request("/api-keys", {
321
+ method: "POST",
322
+ headers: { Authorization: `Bearer ${accessToken}` },
323
+ body: JSON.stringify({ name: "JishuShell", permissions: ["all"] }),
324
+ });
325
+ if (!apiKey.response.ok) {
326
+ throw new Error(`API key creation failed: HTTP ${apiKey.response.status} ${apiKey.text}`);
327
+ }
328
+ if (!apiKey.body?.secret) {
329
+ throw new Error("API key creation response did not include a secret");
330
+ }
331
+ console.log(apiKey.body.secret);
332
+ return;
333
+ } catch (error) {
334
+ if (error?.fatal) {
335
+ throw error;
336
+ }
337
+ lastError = error instanceof Error ? error.message : String(error);
338
+ await sleep(2000);
339
+ }
340
+ }
341
+ throw new Error(lastError);
342
+ }
343
+
344
+ bootstrap().catch((error) => {
345
+ console.error(error instanceof Error ? error.message : String(error));
346
+ process.exit(1);
347
+ });
348
+ NODE
349
+ )"
350
+
351
+ if [ -z "$IMMICH_API_KEY" ]; then
352
+ echo "Immich API key generation returned an empty secret" >&2
353
+ exit 1
354
+ fi
355
+ upsert_env IMMICH_API_KEY "$IMMICH_API_KEY"
356
+ sync_openclaw
357
+ timeout_ms: 420000
358
+
359
+ uninstall:
360
+ - run: >-
361
+ rm -rf
362
+ "$HOME/.jishushell/apps/${instance.id}/.env"
363
+ "$HOME/.jishushell/apps/${instance.id}/library"
364
+ "$HOME/.jishushell/apps/${instance.id}/postgres"
365
+ "$HOME/.jishushell/apps/${instance.id}/model-cache"
366
+ sudo: true
367
+ timeout_ms: 1800000
368
+ - deleteImage: "ghcr.io/immich-app/immich-machine-learning:v2"
369
+ - deleteImage: "ghcr.io/immich-app/immich-server:v2"
370
+ - deleteImage: "ghcr.io/immich-app/postgres:14-vectorchord0.4.3-pgvectors0.2.0@sha256:bcf63357191b76a916ae5eb93464d65c07511da41e3bf7a8416db519b40b1c23"
371
+ - deleteImage: "docker.io/valkey/valkey:9@sha256:3b55fbaa0cd93cf0d9d961f405e4dfcc70efe325e2d84da207a0a8e6d8fde4f9"
@@ -1,30 +1,35 @@
1
1
  id: jishu-kb-container
2
2
  name: JishuShell KB
3
- version: "0.1.1"
3
+ version: "0.1.2"
4
4
  jishushell:
5
- min_version: "0.5.15"
5
+ min_version: "0.6.19"
6
6
  description: "JishuShell-KB: BM25 + 向量 + cross-encoder rerank 的本地知识库(单镜像)。提供 /api/kb/* 原生检索 API + OpenAI 兼容 /v1 透传 + Web UI。"
7
7
  singleInstance: true
8
8
  integrations:
9
9
  - kind: jishukb
10
10
 
11
11
  # 拓扑(单容器,无 sidecar)
12
- # jishu-kb (container :8088) ── host :18095 ── 用户浏览器 / shim / agent
12
+ # jishu-kb (container :8088) ── host :18095 ── 用户浏览器 / JishuShell / OpenClaw
13
+ # ├─ /mcp (OpenClaw native remote MCP)
13
14
  # └─ /data (SQLite + 向量索引 + 上传文档 + ONNX rerank 模型)
14
15
  #
15
16
  # 端到端调用链(OpenClaw agent):
16
- # 用户 → OpenClaw(自带 LLM)→ 决定调 kb_search → mcporter call kb.kb_search
17
- # → jishukb-shim → POST http://host.docker.internal:18095/api/kb/default/search
18
- # → 返回 ranked chunks + scores → OpenClaw 自带 LLM 拼答案 + 引用
17
+ # 用户 → OpenClaw(自带 LLM)→ native mcp.servers.kb
18
+ # → POST http://<kb-host>:18095/mcp
19
+ # → JishuKB 在同一个运行中服务内执行 kb__* 工具
20
+ # → 返回 ranked chunks / 文档 / jobs / 配置摘要 → OpenClaw 自带 LLM 拼答案 + 引用
19
21
  #
20
22
  # 关键设计:
21
- # - v1 不带 auth(LAN-trust 模型,同 AnythingLLM / WeKnora / SearXNG)。
22
- # JISHU_KB_AUTH_TOKEN 留空即可。
23
+ # - remote MCP 是 opt-in 且需要 bearer token。JishuShell jishukb
24
+ # integration 会在 start/restart 前生成 instance 私有 secret.env,
25
+ # 通过 Nomad env template 注入 JISHU_KB_AUTH_TOKEN,同时设置
26
+ # JISHU_KB_MCP_HTTP=1,然后把 mcpAuthToken 写入 provider-credentials,
27
+ # 供 OpenClaw 连接使用。
23
28
  # - JishuKB 不再由 Core 注入 default LLM key。generation provider
24
29
  # 由用户在 JishuKB 自己的 UI 中手动配置;Core 不把真实 upstream key
25
30
  # 写进 /api/admin/provider。
26
31
  # - Core 仍保留知识库默认 default KB 创建、provider-credentials 写入、
27
- # knowledge capability 暴露等集成能力。
32
+ # knowledge/web capability 暴露等集成能力。
28
33
  # - Ollama URL 通过 `requires: llm-ollama` 注入到 JISHU_KB_OLLAMA_URL,
29
34
  # 供 embedding/rerank 模型按需调用;未绑定时为空字符串,jishu-kb
30
35
  # fallback 到自身 config.go 默认值。
@@ -36,16 +41,14 @@ tasks:
36
41
  - name: jishukb
37
42
  role: service
38
43
  runtime: container
39
- # 镜像 GHCR public,多架构(amd64/arm64)。Pin 0.1.1 避免 :latest 漂移。
40
- image: "ghcr.io/x-aijishu/jishu-kb:0.1.1"
44
+ # 镜像 GHCR public,多架构(amd64/arm64)。Pin 0.1.2 避免 :latest 漂移。
45
+ image: "ghcr.io/x-aijishu/jishu-kb:0.1.2"
41
46
  user: "host"
42
47
  env:
43
48
  # 监听端口(container 内)。
44
49
  JISHU_KB_PORT: "8088"
45
50
  # 数据持久化目录。镜像默认即 /data,显式声明便于看 spec 一目了然。
46
51
  JISHU_KB_DATA: "/data"
47
- # v1 ships without auth — see manifest top notes + plan.md §5.
48
- JISHU_KB_AUTH_TOKEN: ""
49
52
  # The panel now embeds KB through the capability proxy. That keeps
50
53
  # absolute `/api/...` calls on the KB origin and lets the proxy
51
54
  # bootstrap hydrate server-stored conversations into a new browser
@@ -53,15 +56,16 @@ tasks:
53
56
  # embedding permissive for users who open :18095 manually.
54
57
  #
55
58
  # Wildcard is intentional here: panel origin can vary by LAN IP / host
56
- # name, while JishuShell-KB v1 already runs without auth in the same
57
- # LAN-trust model as AnythingLLM / WeKnora.
59
+ # name. API and remote MCP writes are protected by the generated bearer
60
+ # token; the static shell remains loadable so users can enter auth when
61
+ # opening :18095 manually.
58
62
  JISHU_KB_FRAME_ANCESTORS: "*"
59
63
  # Ollama URL: injected by `requires: llm-ollama` 下方的 capability slot。
60
64
  # `${requires.X}` materialization 当前不支持 `:-default` 兜底语法;
61
65
  # 未绑定时这里就是空字符串。jishu-kb 在 internal/config/config.go
62
66
  # 中自带默认值 http://localhost:11434,不影响启动。
63
67
  JISHU_KB_OLLAMA_URL: "${requires.JISHU_KB_OLLAMA_URL}"
64
- # rerank 默认开;topK 默认 6(与 shim 默认值保持一致)。
68
+ # rerank 默认开;topK 默认 6(与 OpenClaw KB guidance 保持一致)。
65
69
  JISHU_KB_RERANK: "1"
66
70
  JISHU_KB_TOPK: "6"
67
71
  TZ: "Asia/Shanghai"
@@ -73,6 +77,7 @@ tasks:
73
77
  cpu: "1000m"
74
78
  memory: "1024Mi"
75
79
  ports:
80
+ # Core 会先把这个值当作宿主端口 seed 尝试;最终 hostPort 以 instance.json 为准。
76
81
  - name: http
77
82
  port: 18095
78
83
  container_port: 8088
@@ -108,9 +113,9 @@ requires:
108
113
  cardinality: "one"
109
114
 
110
115
  provides:
111
- # 知识库 capability — agent `requires: knowledge` panel 把
112
- # KNOWLEDGE_BASE_URL 注入为 http://<host>:18095(裸根,shim 自己拼
113
- # /api/kb/<id>/search)。命名遵循 <category>-<slug>。
116
+ # 知识库 capability — OpenClaw 绑定此 provider 后,JishuShell 通过
117
+ # provider-credentials + /api/service/capabilities 发现 remote MCP,并写入
118
+ # openclaw.json -> mcp.servers.kb。命名遵循 <category>-<slug>。
114
119
  - capability: "knowledge-jishukb"
115
120
  id: "jishukb"
116
121
  kind: "knowledge"
@@ -122,7 +127,7 @@ provides:
122
127
  path: "/"
123
128
  protocol: "http"
124
129
  visibility: "external"
125
- description: "JishuShell-KB native KB API (/api/kb/*) kb_search returns ranked chunks + scores"
130
+ description: "JishuShell-KB native KB API and remote MCP (/mcp) for OpenClaw kb__* tools"
126
131
 
127
132
  # Web UI capability。走 embedded: "proxy":panel 通过 capability proxy
128
133
  # 同源托管 KB 页面,代理 bootstrap 会把绝对 `/api/...`、SSE、WS 等请求
@@ -149,4 +154,4 @@ lifecycle:
149
154
  - mkdir: "~/.jishushell/apps/${instance.id}/data"
150
155
 
151
156
  uninstall:
152
- - deleteImage: "ghcr.io/x-aijishu/jishu-kb:0.1.1"
157
+ - deleteImage: "ghcr.io/x-aijishu/jishu-kb:0.1.2"
@@ -18,6 +18,7 @@ tasks:
18
18
  cpu: "2000m"
19
19
  memory: "4096Mi"
20
20
  ports:
21
+ # Core 会先把这个值当作宿主端口 seed 尝试;最终 hostPort 以 instance.json 为准。
21
22
  - name: gateway
22
23
  port: 11434
23
24
  visibility: external
@@ -20,6 +20,7 @@ tasks:
20
20
  cpu: "2000m"
21
21
  memory: "4096Mi"
22
22
  ports:
23
+ # Core 会先把这个值当作宿主端口 seed 尝试;最终 hostPort 以 instance.json 为准。
23
24
  - name: gateway
24
25
  port: 11434
25
26
  health:
@@ -18,6 +18,7 @@ tasks:
18
18
  cpu: "2000m"
19
19
  memory: "4096Mi"
20
20
  ports:
21
+ # Core 会先把这个值当作宿主端口 seed 尝试;最终 hostPort 以 instance.json 为准。
21
22
  - name: gateway
22
23
  port: 11434
23
24
  visibility: external
@@ -38,6 +39,7 @@ tasks:
38
39
  cpu: "500m"
39
40
  memory: "512Mi"
40
41
  ports:
42
+ # Core 会先把这个值当作宿主端口 seed 尝试;最终 hostPort 以 instance.json 为准。
41
43
  - name: webui
42
44
  port: 4173
43
45
  visibility: external
@@ -13,7 +13,9 @@ tasks:
13
13
  role: service
14
14
  runtime: process
15
15
  command: ~/.jishushell/apps/${instance.id}/bin/openclaw
16
- args: ["gateway", "run", "--port", "18789", "--allow-unconfigured"]
16
+ # process runtime 直接监听宿主机端口,所以启动参数必须使用 Core 最终分配的
17
+ # hostPort,不能写死下面的 AppSpec seed。
18
+ args: ["gateway", "run", "--port", "${runtime.ports.gateway.http.hostPort}", "--allow-unconfigured"]
17
19
  env:
18
20
  NODE_ENV: production
19
21
  resources:
@@ -21,6 +23,7 @@ tasks:
21
23
  memory: "2024Mi"
22
24
  ports:
23
25
  - name: http
26
+ # Core 会先把这个值当作宿主端口 seed 尝试;最终 hostPort 以 instance.json 为准。
24
27
  port: 18789
25
28
  visibility: external
26
29
  health:
@@ -75,13 +78,6 @@ requires:
75
78
  inject_as: "BROWSER_CDP_URL"
76
79
  required: false
77
80
  cardinality: "one"
78
- - capability: "mcp"
79
- slot: "mcp"
80
- kind: "mcp"
81
- interface: "mcp-http"
82
- inject_as: "MCP_SERVERS"
83
- required: false
84
- cardinality: "many"
85
81
  - capability: "files"
86
82
  slot: "files"
87
83
  kind: "files"
@@ -21,6 +21,7 @@ tasks:
21
21
  cpu: "1000m"
22
22
  memory: "1536Mi"
23
23
  ports:
24
+ # Core 会先把这个值当作宿主端口 seed 尝试;最终 hostPort 以 instance.json 为准。
24
25
  - name: http
25
26
  port: 18789
26
27
  visibility: external
@@ -82,13 +83,6 @@ requires:
82
83
  inject_as: "BROWSER_CDP_URL"
83
84
  required: false
84
85
  cardinality: "one"
85
- - capability: "mcp"
86
- slot: "mcp"
87
- kind: "mcp"
88
- interface: "mcp-http"
89
- inject_as: "MCP_SERVERS"
90
- required: false
91
- cardinality: "many"
92
86
  - capability: "files"
93
87
  slot: "files"
94
88
  kind: "files"
@@ -25,6 +25,7 @@ tasks:
25
25
  cpu: "1000m"
26
26
  memory: "1024Mi"
27
27
  ports:
28
+ # Core 会先把这个值当作宿主端口 seed 尝试;最终 hostPort 以 instance.json 为准。
28
29
  - name: http
29
30
  port: 18789
30
31
  visibility: external
@@ -56,6 +56,7 @@ tasks:
56
56
  cpu: "1000m"
57
57
  memory: "1024Mi"
58
58
  ports:
59
+ # Core 会先把这个值当作宿主端口 seed 尝试;最终 hostPort 以 instance.json 为准。
59
60
  - name: http
60
61
  port: 18789
61
62
  visibility: external
@@ -139,6 +140,25 @@ lifecycle:
139
140
  formats:
140
141
  - html
141
142
  - json
143
+ engines:
144
+ # The upstream default general engines (google, duckduckgo,
145
+ # startpage...) are unreachable from a mainland-China network,
146
+ # so the aggregated result is empty out of the box. Enable
147
+ # China-reachable engines here so search works without the
148
+ # manual "enable engines in preferences" workaround, and so the
149
+ # agent path (which sends no engine cookie) also returns hits.
150
+ # bing/baidu are reliable; quark/360search are best-effort and
151
+ # simply drop out on timeout without breaking aggregation.
152
+ - name: bing
153
+ disabled: false
154
+ - name: baidu
155
+ disabled: false
156
+ - name: quark
157
+ disabled: false
158
+ timeout: 5.0
159
+ - name: 360search
160
+ disabled: false
161
+ timeout: 5.0
142
162
  '''
143
163
  ).lstrip(),
144
164
  encoding="utf-8",
@@ -19,6 +19,7 @@ tasks:
19
19
  cpu: "500m"
20
20
  memory: "256Mi"
21
21
  ports:
22
+ # Core 会先把这个值当作宿主端口 seed 尝试;最终 hostPort 以 instance.json 为准。
22
23
  - name: http
23
24
  port: 18080
24
25
  container_port: 8080
@@ -138,6 +139,25 @@ lifecycle:
138
139
  formats:
139
140
  - html
140
141
  - json
142
+ engines:
143
+ # The upstream default general engines (google, duckduckgo,
144
+ # startpage...) are unreachable from a mainland-China network,
145
+ # so the aggregated result is empty out of the box. Enable
146
+ # China-reachable engines here so search works without the
147
+ # manual "enable engines in preferences" workaround, and so the
148
+ # agent path (which sends no engine cookie) also returns hits.
149
+ # bing/baidu are reliable; quark/360search are best-effort and
150
+ # simply drop out on timeout without breaking aggregation.
151
+ - name: bing
152
+ disabled: false
153
+ - name: baidu
154
+ disabled: false
155
+ - name: quark
156
+ disabled: false
157
+ timeout: 5.0
158
+ - name: 360search
159
+ disabled: false
160
+ timeout: 5.0
141
161
  '''
142
162
  ).lstrip(),
143
163
  encoding="utf-8",