jishushell 0.4.24 → 0.5.15

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 (281) hide show
  1. package/INSTALL-NOTICE +11 -0
  2. package/apps/anythingllm-container.yaml +287 -0
  3. package/apps/browserless-chromium-container.yaml +90 -0
  4. package/apps/filebrowser-container.yaml +163 -0
  5. package/apps/hermes-container.yaml +36 -2
  6. package/apps/ollama-binary.yaml +91 -90
  7. package/apps/ollama-cpu-container.yaml +8 -1
  8. package/apps/ollama-with-hollama-binary.yaml +91 -90
  9. package/apps/openclaw-binary.yaml +38 -1
  10. package/apps/openclaw-container.yaml +45 -2
  11. package/apps/openclaw-with-ollama-container.yaml +11 -2
  12. package/apps/openclaw-with-searxng-container.yaml +26 -2
  13. package/apps/openwebui-container.yaml +45 -1
  14. package/apps/playwright-container.yaml +7 -1
  15. package/apps/searxng-container.yaml +58 -7
  16. package/apps/weknora-container.yaml +471 -0
  17. package/dist/cli/app.js +79 -9
  18. package/dist/cli/app.js.map +1 -1
  19. package/dist/cli/doctor.d.ts +12 -12
  20. package/dist/cli/doctor.js +242 -55
  21. package/dist/cli/doctor.js.map +1 -1
  22. package/dist/cli/llm.d.ts +4 -3
  23. package/dist/cli/llm.js +4 -3
  24. package/dist/cli/llm.js.map +1 -1
  25. package/dist/cli/panel.d.ts +6 -5
  26. package/dist/cli/panel.js +10 -9
  27. package/dist/cli/panel.js.map +1 -1
  28. package/dist/config.d.ts +19 -0
  29. package/dist/config.js +99 -1
  30. package/dist/config.js.map +1 -1
  31. package/dist/control.d.ts +7 -6
  32. package/dist/control.js +7 -6
  33. package/dist/control.js.map +1 -1
  34. package/dist/install.js +3 -3
  35. package/dist/install.js.map +1 -1
  36. package/dist/routes/agent-apps.d.ts +1 -1
  37. package/dist/routes/agent-apps.js +1 -1
  38. package/dist/routes/apps.js +44 -11
  39. package/dist/routes/apps.js.map +1 -1
  40. package/dist/routes/auth.js +5 -2
  41. package/dist/routes/auth.js.map +1 -1
  42. package/dist/routes/backup.js +64 -11
  43. package/dist/routes/backup.js.map +1 -1
  44. package/dist/routes/external-mounts.d.ts +17 -0
  45. package/dist/routes/external-mounts.js +73 -0
  46. package/dist/routes/external-mounts.js.map +1 -0
  47. package/dist/routes/file-mounts.d.ts +13 -0
  48. package/dist/routes/file-mounts.js +90 -0
  49. package/dist/routes/file-mounts.js.map +1 -0
  50. package/dist/routes/files-organize.d.ts +28 -0
  51. package/dist/routes/files-organize.js +167 -0
  52. package/dist/routes/files-organize.js.map +1 -0
  53. package/dist/routes/files.d.ts +31 -0
  54. package/dist/routes/files.js +321 -0
  55. package/dist/routes/files.js.map +1 -0
  56. package/dist/routes/instances.js +826 -17
  57. package/dist/routes/instances.js.map +1 -1
  58. package/dist/routes/internal.d.ts +2 -0
  59. package/dist/routes/internal.js +59 -0
  60. package/dist/routes/internal.js.map +1 -0
  61. package/dist/routes/llm.js +24 -35
  62. package/dist/routes/llm.js.map +1 -1
  63. package/dist/routes/setup.js +10 -10
  64. package/dist/routes/setup.js.map +1 -1
  65. package/dist/routes/system.js +1 -1
  66. package/dist/routes/system.js.map +1 -1
  67. package/dist/routes/webdav.d.ts +17 -0
  68. package/dist/routes/webdav.js +114 -0
  69. package/dist/routes/webdav.js.map +1 -0
  70. package/dist/server.d.ts +9 -0
  71. package/dist/server.js +751 -20
  72. package/dist/server.js.map +1 -1
  73. package/dist/services/agent-apps/catalog.js +4 -3
  74. package/dist/services/agent-apps/catalog.js.map +1 -1
  75. package/dist/services/agent-apps/index.d.ts +1 -1
  76. package/dist/services/agent-apps/index.js +1 -1
  77. package/dist/services/agent-apps/installers/adapter.d.ts +1 -1
  78. package/dist/services/agent-apps/installers/adapter.js +1 -1
  79. package/dist/services/agent-apps/installers/shell-script.d.ts +1 -1
  80. package/dist/services/agent-apps/installers/shell-script.js +3 -3
  81. package/dist/services/agent-apps/installers/shell-script.js.map +1 -1
  82. package/dist/services/agent-apps/types.d.ts +2 -2
  83. package/dist/services/agent-apps/types.js +1 -1
  84. package/dist/services/app/app-compiler.d.ts +1 -1
  85. package/dist/services/app/app-compiler.js +5 -5
  86. package/dist/services/app/app-compiler.js.map +1 -1
  87. package/dist/services/app/app-manager.d.ts +25 -1
  88. package/dist/services/app/app-manager.js +829 -150
  89. package/dist/services/app/app-manager.js.map +1 -1
  90. package/dist/services/app/custom-manager.js.map +1 -1
  91. package/dist/services/app/hermes-agent-manager.js +7 -4
  92. package/dist/services/app/hermes-agent-manager.js.map +1 -1
  93. package/dist/services/app/ollama-manager.js +1 -1
  94. package/dist/services/app/ollama-manager.js.map +1 -1
  95. package/dist/services/app/openclaw-manager.js +20 -3
  96. package/dist/services/app/openclaw-manager.js.map +1 -1
  97. package/dist/services/app/platform-transform.d.ts +32 -0
  98. package/dist/services/app/platform-transform.js +65 -0
  99. package/dist/services/app/platform-transform.js.map +1 -0
  100. package/dist/services/app/provide-resolver.d.ts +29 -0
  101. package/dist/services/app/provide-resolver.js +112 -0
  102. package/dist/services/app/provide-resolver.js.map +1 -0
  103. package/dist/services/app-passwords.d.ts +61 -0
  104. package/dist/services/app-passwords.js +173 -0
  105. package/dist/services/app-passwords.js.map +1 -0
  106. package/dist/services/backup-manager.d.ts +11 -0
  107. package/dist/services/backup-manager.js +177 -4
  108. package/dist/services/backup-manager.js.map +1 -1
  109. package/dist/services/capability-endpoint-validator.d.ts +41 -0
  110. package/dist/services/capability-endpoint-validator.js +104 -0
  111. package/dist/services/capability-endpoint-validator.js.map +1 -0
  112. package/dist/services/capability-health.d.ts +16 -0
  113. package/dist/services/capability-health.js +121 -0
  114. package/dist/services/capability-health.js.map +1 -0
  115. package/dist/services/capability-registry.d.ts +106 -0
  116. package/dist/services/capability-registry.js +313 -0
  117. package/dist/services/capability-registry.js.map +1 -0
  118. package/dist/services/connection-apply.d.ts +91 -0
  119. package/dist/services/connection-apply.js +475 -0
  120. package/dist/services/connection-apply.js.map +1 -0
  121. package/dist/services/connection-resolver.d.ts +65 -0
  122. package/dist/services/connection-resolver.js +281 -0
  123. package/dist/services/connection-resolver.js.map +1 -0
  124. package/dist/services/connection-transactor.d.ts +39 -0
  125. package/dist/services/connection-transactor.js +351 -0
  126. package/dist/services/connection-transactor.js.map +1 -0
  127. package/dist/services/external-mounts.d.ts +40 -0
  128. package/dist/services/external-mounts.js +187 -0
  129. package/dist/services/external-mounts.js.map +1 -0
  130. package/dist/services/files-manager.d.ts +252 -0
  131. package/dist/services/files-manager.js +1075 -0
  132. package/dist/services/files-manager.js.map +1 -0
  133. package/dist/services/files-mounts.d.ts +42 -0
  134. package/dist/services/files-mounts.js +207 -0
  135. package/dist/services/files-mounts.js.map +1 -0
  136. package/dist/services/instance-manager.d.ts +13 -0
  137. package/dist/services/instance-manager.js +138 -46
  138. package/dist/services/instance-manager.js.map +1 -1
  139. package/dist/services/llm-proxy/index.d.ts +16 -2
  140. package/dist/services/llm-proxy/index.js +48 -44
  141. package/dist/services/llm-proxy/index.js.map +1 -1
  142. package/dist/services/llm-proxy/probe.d.ts +6 -0
  143. package/dist/services/llm-proxy/probe.js +85 -0
  144. package/dist/services/llm-proxy/probe.js.map +1 -0
  145. package/dist/services/llm-proxy/ssrf.d.ts +1 -0
  146. package/dist/services/llm-proxy/ssrf.js +24 -9
  147. package/dist/services/llm-proxy/ssrf.js.map +1 -1
  148. package/dist/services/nomad-manager.d.ts +4 -0
  149. package/dist/services/nomad-manager.js +428 -35
  150. package/dist/services/nomad-manager.js.map +1 -1
  151. package/dist/services/organize/applier.d.ts +46 -0
  152. package/dist/services/organize/applier.js +218 -0
  153. package/dist/services/organize/applier.js.map +1 -0
  154. package/dist/services/organize/rules.d.ts +57 -0
  155. package/dist/services/organize/rules.js +286 -0
  156. package/dist/services/organize/rules.js.map +1 -0
  157. package/dist/services/organize/scanner.d.ts +50 -0
  158. package/dist/services/organize/scanner.js +366 -0
  159. package/dist/services/organize/scanner.js.map +1 -0
  160. package/dist/services/organize/store.d.ts +14 -0
  161. package/dist/services/organize/store.js +82 -0
  162. package/dist/services/organize/store.js.map +1 -0
  163. package/dist/services/panel-manager.js +20 -1
  164. package/dist/services/panel-manager.js.map +1 -1
  165. package/dist/services/process-manager.js +4 -3
  166. package/dist/services/process-manager.js.map +1 -1
  167. package/dist/services/runtime/adapters/hermes.d.ts +30 -1
  168. package/dist/services/runtime/adapters/hermes.js +219 -6
  169. package/dist/services/runtime/adapters/hermes.js.map +1 -1
  170. package/dist/services/runtime/adapters/openclaw-mcporter.d.ts +45 -0
  171. package/dist/services/runtime/adapters/openclaw-mcporter.js +108 -0
  172. package/dist/services/runtime/adapters/openclaw-mcporter.js.map +1 -0
  173. package/dist/services/runtime/adapters/openclaw-routes.d.ts +8 -2
  174. package/dist/services/runtime/adapters/openclaw-routes.js +68 -0
  175. package/dist/services/runtime/adapters/openclaw-routes.js.map +1 -1
  176. package/dist/services/runtime/adapters/openclaw.d.ts +177 -0
  177. package/dist/services/runtime/adapters/openclaw.js +1171 -11
  178. package/dist/services/runtime/adapters/openclaw.js.map +1 -1
  179. package/dist/services/runtime/instance.d.ts +1 -1
  180. package/dist/services/runtime/instance.js +1 -1
  181. package/dist/services/runtime/instance.js.map +1 -1
  182. package/dist/services/runtime/mcp-shims/anythingllm-shim.d.ts +46 -0
  183. package/dist/services/runtime/mcp-shims/anythingllm-shim.js +281 -0
  184. package/dist/services/runtime/mcp-shims/anythingllm-shim.js.map +1 -0
  185. package/dist/services/runtime/mcp-shims/drive-shim.d.ts +54 -0
  186. package/dist/services/runtime/mcp-shims/drive-shim.js +489 -0
  187. package/dist/services/runtime/mcp-shims/drive-shim.js.map +1 -0
  188. package/dist/services/runtime/mcp-shims/firewall.d.ts +26 -0
  189. package/dist/services/runtime/mcp-shims/firewall.js +129 -0
  190. package/dist/services/runtime/mcp-shims/firewall.js.map +1 -0
  191. package/dist/services/runtime/mcp-shims/searxng-shim.d.ts +27 -0
  192. package/dist/services/runtime/mcp-shims/searxng-shim.js +125 -0
  193. package/dist/services/runtime/mcp-shims/searxng-shim.js.map +1 -0
  194. package/dist/services/runtime/mcp-shims/write-mcp-entry.d.ts +83 -0
  195. package/dist/services/runtime/mcp-shims/write-mcp-entry.js +127 -0
  196. package/dist/services/runtime/mcp-shims/write-mcp-entry.js.map +1 -0
  197. package/dist/services/runtime/migrations.d.ts +8 -0
  198. package/dist/services/runtime/migrations.js +100 -0
  199. package/dist/services/runtime/migrations.js.map +1 -1
  200. package/dist/services/runtime/types.d.ts +46 -0
  201. package/dist/services/setup-manager.js +99 -24
  202. package/dist/services/setup-manager.js.map +1 -1
  203. package/dist/services/suggestions.d.ts +27 -0
  204. package/dist/services/suggestions.js +133 -0
  205. package/dist/services/suggestions.js.map +1 -0
  206. package/dist/services/task-registry.js +4 -2
  207. package/dist/services/task-registry.js.map +1 -1
  208. package/dist/services/telemetry/device-fingerprint.d.ts +1 -1
  209. package/dist/services/telemetry/device-fingerprint.js +1 -1
  210. package/dist/services/types-shim.d.ts +16 -0
  211. package/dist/services/types-shim.js +2 -0
  212. package/dist/services/types-shim.js.map +1 -0
  213. package/dist/services/webdav/server.d.ts +24 -0
  214. package/dist/services/webdav/server.js +420 -0
  215. package/dist/services/webdav/server.js.map +1 -0
  216. package/dist/services/webdav/xml-builder.d.ts +73 -0
  217. package/dist/services/webdav/xml-builder.js +156 -0
  218. package/dist/services/webdav/xml-builder.js.map +1 -0
  219. package/dist/services/workspace-builder.d.ts +29 -0
  220. package/dist/services/workspace-builder.js +188 -0
  221. package/dist/services/workspace-builder.js.map +1 -0
  222. package/dist/types.d.ts +231 -1
  223. package/dist/utils/instance-lock.d.ts +22 -0
  224. package/dist/utils/instance-lock.js +48 -0
  225. package/dist/utils/instance-lock.js.map +1 -0
  226. package/dist/utils/path-locks.d.ts +30 -0
  227. package/dist/utils/path-locks.js +63 -0
  228. package/dist/utils/path-locks.js.map +1 -0
  229. package/dist/utils/path-safety.d.ts +41 -0
  230. package/dist/utils/path-safety.js +119 -0
  231. package/dist/utils/path-safety.js.map +1 -0
  232. package/dist/utils/safe-json.js +55 -22
  233. package/dist/utils/safe-json.js.map +1 -1
  234. package/dist/utils/safe-write.d.ts +24 -0
  235. package/dist/utils/safe-write.js +82 -0
  236. package/dist/utils/safe-write.js.map +1 -0
  237. package/install/jishu-install.sh +323 -27
  238. package/install/jishu-uninstall.sh +353 -20
  239. package/package.json +18 -1
  240. package/public/assets/Dashboard-BdWPtroF.js +1 -0
  241. package/public/assets/{HermesChatPanel-mFSureyc.js → HermesChatPanel-B_2HlVBQ.js} +1 -1
  242. package/public/assets/HermesConfigForm-DVlhg3WV.js +4 -0
  243. package/public/assets/{InitPassword-CVA8wQA6.js → InitPassword-D7glTExX.js} +1 -1
  244. package/public/assets/InstanceDetail-CxSy2cpe.js +92 -0
  245. package/public/assets/{Login-BWsZH2mu.js → Login-Cfr5c2sv.js} +1 -1
  246. package/public/assets/NewInstance-BIYDmJis.js +1 -0
  247. package/public/assets/ProviderRecommendations-BuRnvRcI.js +1 -0
  248. package/public/assets/Settings-Cc-tYBil.js +1 -0
  249. package/public/assets/Setup-lGZEk5jq.js +1 -0
  250. package/public/assets/{WeixinLoginPanel-CnjR8xMu.js → WeixinLoginPanel-CoGqzxeV.js} +2 -2
  251. package/public/assets/index-87IJXG-w.css +1 -0
  252. package/public/assets/index-BZc5zH7u.js +19 -0
  253. package/public/assets/providers-DtNXh9JD.js +1 -0
  254. package/public/assets/registry-BWnkJgZ1.js +2 -0
  255. package/public/assets/{usePolling-Do5Erqm_.js → usePolling-CwwT9KrC.js} +1 -1
  256. package/public/assets/{vendor-i18n-ucpM0OR0.js → vendor-i18n-y9V7Sfuu.js} +1 -1
  257. package/public/assets/{vendor-react-Bk1hRGiY.js → vendor-react-BWrEVJVb.js} +6 -6
  258. package/public/index.html +4 -4
  259. package/scripts/check-app-spec.mjs +457 -0
  260. package/scripts/check-i18n.mjs +154 -0
  261. package/scripts/check-new-file-tests.mjs +230 -0
  262. package/scripts/check-quarantine-expiry.mjs +105 -0
  263. package/scripts/perf/README.md +49 -0
  264. package/scripts/perf/auth.js +99 -0
  265. package/scripts/perf/config.js +63 -0
  266. package/scripts/perf/instances.js +143 -0
  267. package/scripts/perf/proxy.js +96 -0
  268. package/scripts/run.sh +4 -4
  269. package/scripts/smoke/files-w1.sh +142 -0
  270. package/scripts/smoke-backend.mjs +122 -0
  271. package/scripts/smoke-post-publish.mjs +346 -0
  272. package/public/assets/Dashboard-B-JoOjBQ.js +0 -1
  273. package/public/assets/HermesConfigForm-DvR05LK1.js +0 -4
  274. package/public/assets/InstanceDetail-DcZW2QGO.js +0 -91
  275. package/public/assets/NewInstance-BCIrAd86.js +0 -1
  276. package/public/assets/Settings-xkDcduFz.js +0 -1
  277. package/public/assets/Setup-Cfuwj4gV.js +0 -1
  278. package/public/assets/index-CPhVFEsx.css +0 -1
  279. package/public/assets/index-DQsM6Joa.js +0 -19
  280. package/public/assets/providers-V-vwrExZ.js +0 -1
  281. package/public/assets/registry-B4UFJdpA.js +0 -2
@@ -2,7 +2,7 @@ id: openclaw-with-searxng-container
2
2
  name: OpenClaw With SearXNG Container
3
3
  version: "1.0.0"
4
4
  jishushell:
5
- min_version: "0.4.24"
5
+ min_version: "0.4.30"
6
6
  agentType: openclaw
7
7
  description: "将 SearXNG 作为 sidecar 子 task 安装并运行,并注入 OpenClaw 搜索环境"
8
8
  singleInstance: false
@@ -46,7 +46,11 @@ tasks:
46
46
  args: ["gateway", "run", "--port", "18789", "--allow-unconfigured"]
47
47
  env:
48
48
  NODE_ENV: production
49
- SEARCH_API_BASE_URL: "http://127.0.0.1:8080/search"
49
+ # SEARCH_API_BASE_URL injected by Connection apply hook (search category, §13).
50
+ # Single-candidate fallback (`requires: search-searxng`) auto-binds the
51
+ # sidecar SearXNG below on first start, so meta-app UX stays "open the
52
+ # box and it works".
53
+ SEARCH_API_BASE_URL: "${requires.SEARCH_API_BASE_URL}"
50
54
  resources:
51
55
  cpu: "1000m"
52
56
  memory: "1024Mi"
@@ -65,8 +69,28 @@ tasks:
65
69
 
66
70
  provides:
67
71
  - capability: "openclaw-dashboard"
72
+ task: "gateway"
68
73
  port: 18789
74
+ protocol: "http"
69
75
  description: "OpenClaw Dashboard"
76
+ - capability: "llm-agent"
77
+ task: "gateway"
78
+ port: 18789
79
+ protocol: "http"
80
+ path: "/v1"
81
+ description: "OpenAI-compatible agent endpoint backed by OpenClaw"
82
+ auth:
83
+ kind: "bearer"
84
+ tokenSource: "instance.config.gateway.auth.token"
85
+
86
+ requires:
87
+ - capability: "search-searxng"
88
+ inject_as: "SEARCH_API_BASE_URL"
89
+ required: false
90
+ - capability: "files"
91
+ inject_as: "FILES_BROWSER_URL"
92
+ required: false
93
+ cardinality: "one"
70
94
 
71
95
  lifecycle:
72
96
  install:
@@ -2,7 +2,7 @@ id: openwebui-container
2
2
  name: Open WebUI
3
3
  version: "1.0.0"
4
4
  jishushell:
5
- min_version: "0.4.24"
5
+ min_version: "0.4.30"
6
6
  description: "使用 Open WebUI 提供自托管的大模型 Web 界面,容器模式由 Nomad 管理生命周期"
7
7
  singleInstance: false
8
8
 
@@ -11,6 +11,11 @@ tasks:
11
11
  role: service
12
12
  runtime: container
13
13
  image: "ghcr.io/open-webui/open-webui:main"
14
+ # Run as the panel user's uid:gid (typically pi=1000:1000). Bind-mount
15
+ # source `~/.jishushell/apps/${app_id}/data` is owned by the panel user,
16
+ # so the container can read/write it directly — no chown, no
17
+ # CAP_DAC_OVERRIDE, no DB readonly errors. Mirrors hermes / openclaw.
18
+ user: "host"
14
19
  env:
15
20
  HOME: "/app/backend/data"
16
21
  PORT: "8080"
@@ -19,6 +24,32 @@ tasks:
19
24
  HF_HOME: "/app/backend/data/.cache/huggingface"
20
25
  TRANSFORMERS_CACHE: "/app/backend/data/.cache/huggingface/transformers"
21
26
  SENTENCE_TRANSFORMERS_HOME: "/app/backend/data/.cache/sentence-transformers"
27
+ # OpenWebUI's start.sh writes a generated WEBUI_SECRET_KEY to a key
28
+ # file. The default path is `.webui_secret_key` in the image's
29
+ # /app/backend WORKDIR, which is owned by root and unwritable when
30
+ # running as uid 1000. Redirect to the bind-mounted (and writable)
31
+ # data dir so the key persists across restarts and survives image
32
+ # upgrades.
33
+ WEBUI_SECRET_KEY_FILE: "/app/backend/data/.webui_secret_key"
34
+ # Open WebUI marks OPENAI_API_BASE_URL / OPENAI_API_KEY as PersistentConfig:
35
+ # without this flag, the first start writes them to the internal DB and
36
+ # subsequent restarts ignore env, defeating Connections "Save & Restart"
37
+ # rebinds. Disabling persistent config means the Admin UI's manual
38
+ # OpenAI config doesn't survive restarts — that's the trade-off
39
+ # JishuShell takes to own LLM configuration via Connections (§13.3.2.1).
40
+ ENABLE_PERSISTENT_CONFIG: "False"
41
+ # JishuShell ships Open WebUI as a chat front-end only — RAG /
42
+ # reranker / Whisper STT all need ML model downloads from
43
+ # HuggingFace at first boot (~500 MB – 1.5 GB). On slow outbound
44
+ # networks (Raspberry Pi behind throttled NAT) this blocks
45
+ # health checks for hours. Bypassing them keeps the boot path
46
+ # to "FastAPI up in <30s". Users who want RAG/STT can flip these
47
+ # back from Admin UI and accept the one-time download.
48
+ BYPASS_EMBEDDING_AND_RETRIEVAL: "True"
49
+ RAG_EMBEDDING_MODEL: ""
50
+ RAG_RERANKING_MODEL: ""
51
+ WHISPER_MODEL: ""
52
+ AUDIO_STT_ENGINE: ""
22
53
  resources:
23
54
  cpu: "1000m"
24
55
  memory: "1024Mi"
@@ -41,10 +72,23 @@ tasks:
41
72
 
42
73
  provides:
43
74
  - capability: "openwebui-web"
75
+ task: "openwebui"
76
+ port: 3000
77
+ protocol: "http"
78
+ description: "Open WebUI Web 界面(legacy capability,请改用 web-openwebui)"
79
+ - capability: "web-openwebui"
80
+ task: "openwebui"
44
81
  port: 3000
45
82
  protocol: "http"
46
83
  description: "Open WebUI Web 界面"
47
84
 
85
+ requires:
86
+ - capability: "llm"
87
+ inject_as: "OPENAI_API_BASE_URL"
88
+ apply: "openai-env"
89
+ cardinality: "one"
90
+ required: false
91
+
48
92
  lifecycle:
49
93
  install:
50
94
  - downloadImage: "ghcr.io/open-webui/open-webui:main"
@@ -2,7 +2,7 @@ id: playwright-container
2
2
  name: Playwright
3
3
  version: "1.0.0"
4
4
  jishushell:
5
- min_version: "0.4.24"
5
+ min_version: "0.4.30"
6
6
  description: "在容器中启动 Playwright UI,通过浏览器查看和管理测试运行"
7
7
  singleInstance: false
8
8
 
@@ -52,9 +52,15 @@ tasks:
52
52
 
53
53
  provides:
54
54
  - capability: "playwright-ui"
55
+ task: "playwright-ui"
55
56
  port: 14567
56
57
  protocol: "http"
57
58
  description: "Playwright UI Web 界面"
59
+ # browser-playwright (CDP endpoint) is TODO — needs a sidecar task that runs
60
+ # `npx playwright launch-server --browser chromium --hostname 0.0.0.0`,
61
+ # captures the token-bearing ws URL into a file/env, and registers it as a
62
+ # capability with protocol=ws. Until the sidecar lands, OpenClaw / Hermes
63
+ # browser slots cannot bind to this app via the Connections UI.
58
64
 
59
65
  lifecycle:
60
66
  install:
@@ -2,9 +2,9 @@ id: searxng-container
2
2
  name: SearXNG
3
3
  version: "1.0.0"
4
4
  jishushell:
5
- min_version: "0.4.24"
6
- description: "隐私优先的元搜索引擎,Docker 容器模式由 Nomad 管理生命周期"
7
- singleInstance: false
5
+ min_version: "0.4.30"
6
+ description: "隐私优先的元搜索引擎"
7
+ singleInstance: true
8
8
 
9
9
  tasks:
10
10
  - name: searxng
@@ -20,7 +20,8 @@ tasks:
20
20
  memory: "512Mi"
21
21
  ports:
22
22
  - name: http
23
- port: 8080
23
+ port: 18080
24
+ container_port: 8080
24
25
  visibility: external
25
26
  volumes:
26
27
  - source: "~/.jishushell/apps/${app_id}/settings/settings.yml"
@@ -40,12 +41,62 @@ tasks:
40
41
 
41
42
  provides:
42
43
  - capability: "web-ui"
43
- port: 8080
44
+ task: "searxng"
45
+ port: 18080
46
+ protocol: "http"
47
+ description: "SearXNG Web UI(legacy capability,请改用 web-searxng)"
48
+ - capability: "web-searxng"
49
+ task: "searxng"
50
+ port: 18080
51
+ protocol: "http"
44
52
  description: "SearXNG Web UI"
45
- - capability: "search-api"
46
- port: 8080
53
+ - capability: "search-searxng"
54
+ task: "searxng"
55
+ port: 18080
47
56
  path: "/search"
57
+ protocol: "http"
48
58
  description: "SearXNG 搜索 API,支持 JSON 格式 (/search?q=xxx&format=json)"
59
+ # PR 8 / docs §17 — canonical MCP surface that LLM-binding adapters
60
+ # (Hermes, future MCP-capable runtimes) expose via the in-tree MCP
61
+ # firewall. Description is deliberately minimal so MiniMax-class
62
+ # models don't get prompt-injected by upstream wording into adding
63
+ # dates / translating queries / auto-filling time_range filters.
64
+ # Mirrors OpenClaw's built-in searxng plugin description verbatim.
65
+ tool_schema:
66
+ name: "searxng_web_search"
67
+ description: "Search the web using a self-hosted SearXNG instance. Returns titles, URLs, and snippets."
68
+ parameters:
69
+ type: object
70
+ properties:
71
+ query:
72
+ type: string
73
+ description: "Search query string."
74
+ count:
75
+ type: number
76
+ description: "Number of results to return (1-10)."
77
+ minimum: 1
78
+ maximum: 10
79
+ categories:
80
+ type: string
81
+ description: "Optional comma-separated categories such as general, news, or science."
82
+ language:
83
+ type: string
84
+ description: "Optional language code such as en, de, or fr."
85
+ required:
86
+ - query
87
+ upstream:
88
+ command: npx
89
+ args:
90
+ - "-y"
91
+ - "mcp-searxng"
92
+ env_template:
93
+ # ${SEARCH_API_BASE_URL_ORIGIN} = parsed URL with /search stripped.
94
+ # The URL stays at the registry-resolved host:port at PUT
95
+ # /connections time; on host IP changes, the framework re-renders
96
+ # this env on next instance start (PR 9 phaseRefreshConnections),
97
+ # so users only need to restart the consuming agent — no re-bind.
98
+ SEARXNG_URL: "${SEARCH_API_BASE_URL_ORIGIN}"
99
+ wrap_outputs: true
49
100
 
50
101
  lifecycle:
51
102
  install: