@better-openclaw/core 1.0.4 → 1.0.6

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 (474) hide show
  1. package/.github/workflows/publish-core.yml +32 -33
  2. package/dist/anything-llm-DIIPhz6K.mjs +44 -0
  3. package/dist/anything-llm-DIIPhz6K.mjs.map +1 -0
  4. package/dist/appflowy-DdoE-dKg.mjs +45 -0
  5. package/dist/appflowy-DdoE-dKg.mjs.map +1 -0
  6. package/dist/bare-metal-install-DpYZDoGq.mjs +224 -0
  7. package/dist/bare-metal-install-DpYZDoGq.mjs.map +1 -0
  8. package/dist/bare-metal-partition-CYlOxf9B.mjs +48 -0
  9. package/dist/bare-metal-partition-CYlOxf9B.mjs.map +1 -0
  10. package/dist/bare-metal-partition.d.mts +27 -0
  11. package/dist/bare-metal-partition.d.mts.map +1 -0
  12. package/dist/bare-metal-partition.mjs +3 -0
  13. package/dist/bare-metal-partition.test.d.mts +1 -0
  14. package/dist/bare-metal-partition.test.mjs +58 -0
  15. package/dist/bare-metal-partition.test.mjs.map +1 -0
  16. package/dist/beszel-DHAG1zl0.mjs +45 -0
  17. package/dist/beszel-DHAG1zl0.mjs.map +1 -0
  18. package/dist/browserless-gUuvGmMD.mjs +85 -0
  19. package/dist/browserless-gUuvGmMD.mjs.map +1 -0
  20. package/dist/caddy-BJDrqnmw.mjs +77 -0
  21. package/dist/caddy-BJDrqnmw.mjs.map +1 -0
  22. package/dist/caddy-_NIdWKrf.mjs +52 -0
  23. package/dist/caddy-_NIdWKrf.mjs.map +1 -0
  24. package/dist/chromadb-g4rIsfAl.mjs +63 -0
  25. package/dist/chromadb-g4rIsfAl.mjs.map +1 -0
  26. package/dist/claude-code-DPRA1fy_.mjs +52 -0
  27. package/dist/claude-code-DPRA1fy_.mjs.map +1 -0
  28. package/dist/code-server-BdZZxxm5.mjs +66 -0
  29. package/dist/code-server-BdZZxxm5.mjs.map +1 -0
  30. package/dist/codex-DFVzfrfX.mjs +45 -0
  31. package/dist/codex-DFVzfrfX.mjs.map +1 -0
  32. package/dist/composer-CSM5YycB.mjs +287 -0
  33. package/dist/composer-CSM5YycB.mjs.map +1 -0
  34. package/dist/composer.d.mts +22 -0
  35. package/dist/composer.d.mts.map +1 -0
  36. package/dist/composer.mjs +3 -0
  37. package/dist/composer.snapshot.test.d.mts +1 -0
  38. package/dist/composer.snapshot.test.mjs +92 -0
  39. package/dist/composer.snapshot.test.mjs.map +1 -0
  40. package/dist/composer.test.d.mts +1 -0
  41. package/dist/composer.test.mjs +166 -0
  42. package/dist/composer.test.mjs.map +1 -0
  43. package/dist/coolify-Z5_zDgM3.mjs +49 -0
  44. package/dist/coolify-Z5_zDgM3.mjs.map +1 -0
  45. package/dist/definitions-BXpb1kzs.mjs +138 -0
  46. package/dist/definitions-BXpb1kzs.mjs.map +1 -0
  47. package/dist/dify-jDc9U6Ku.mjs +81 -0
  48. package/dist/dify-jDc9U6Ku.mjs.map +1 -0
  49. package/dist/docsgpt-BXM1c2JC.mjs +45 -0
  50. package/dist/docsgpt-BXM1c2JC.mjs.map +1 -0
  51. package/dist/dokploy-Ci8_fb0_.mjs +49 -0
  52. package/dist/dokploy-Ci8_fb0_.mjs.map +1 -0
  53. package/dist/dozzle-fAt2sLRL.mjs +41 -0
  54. package/dist/dozzle-fAt2sLRL.mjs.map +1 -0
  55. package/dist/env-D2h46lHT.mjs +250 -0
  56. package/dist/env-D2h46lHT.mjs.map +1 -0
  57. package/dist/ffmpeg-BCtnA8m_.mjs +66 -0
  58. package/dist/ffmpeg-BCtnA8m_.mjs.map +1 -0
  59. package/dist/flowise-CJTTBa7J.mjs +45 -0
  60. package/dist/flowise-CJTTBa7J.mjs.map +1 -0
  61. package/dist/gemini-cli-Bfwv6hYe.mjs +46 -0
  62. package/dist/gemini-cli-Bfwv6hYe.mjs.map +1 -0
  63. package/dist/generate.d.mts +13 -0
  64. package/dist/generate.d.mts.map +1 -0
  65. package/dist/generate.mjs +169 -0
  66. package/dist/generate.mjs.map +1 -0
  67. package/dist/generate.test.d.mts +1 -0
  68. package/dist/generate.test.mjs +283 -0
  69. package/dist/generate.test.mjs.map +1 -0
  70. package/dist/generators/bare-metal-install.d.mts +19 -0
  71. package/dist/generators/bare-metal-install.d.mts.map +1 -0
  72. package/dist/generators/bare-metal-install.mjs +3 -0
  73. package/dist/generators/bare-metal-install.test.d.mts +1 -0
  74. package/dist/generators/bare-metal-install.test.mjs +48 -0
  75. package/dist/generators/bare-metal-install.test.mjs.map +1 -0
  76. package/dist/generators/caddy.d.mts +19 -0
  77. package/dist/generators/caddy.d.mts.map +1 -0
  78. package/dist/generators/caddy.mjs +3 -0
  79. package/dist/generators/env.d.mts +47 -0
  80. package/dist/generators/env.d.mts.map +1 -0
  81. package/dist/generators/env.mjs +3 -0
  82. package/dist/generators/grafana.d.mts +22 -0
  83. package/dist/generators/grafana.d.mts.map +1 -0
  84. package/dist/generators/grafana.mjs +3 -0
  85. package/dist/generators/n8n-workflows.d.mts +13 -0
  86. package/dist/generators/n8n-workflows.d.mts.map +1 -0
  87. package/dist/generators/n8n-workflows.mjs +3 -0
  88. package/dist/generators/native-services.d.mts +18 -0
  89. package/dist/generators/native-services.d.mts.map +1 -0
  90. package/dist/generators/native-services.mjs +3 -0
  91. package/dist/generators/postgres-init.d.mts +31 -0
  92. package/dist/generators/postgres-init.d.mts.map +1 -0
  93. package/dist/generators/postgres-init.mjs +3 -0
  94. package/dist/generators/prometheus.d.mts +16 -0
  95. package/dist/generators/prometheus.d.mts.map +1 -0
  96. package/dist/generators/prometheus.mjs +3 -0
  97. package/dist/generators/readme.d.mts +26 -0
  98. package/dist/generators/readme.d.mts.map +1 -0
  99. package/dist/generators/readme.mjs +3 -0
  100. package/dist/generators/scripts.d.mts +10 -0
  101. package/dist/generators/scripts.d.mts.map +1 -0
  102. package/dist/generators/scripts.mjs +3 -0
  103. package/dist/generators/skills.d.mts +16 -0
  104. package/dist/generators/skills.d.mts.map +1 -0
  105. package/dist/generators/skills.mjs +3 -0
  106. package/dist/gitea-BGkqa-sD.mjs +49 -0
  107. package/dist/gitea-BGkqa-sD.mjs.map +1 -0
  108. package/dist/gotify-D7p8oNM3.mjs +62 -0
  109. package/dist/gotify-D7p8oNM3.mjs.map +1 -0
  110. package/dist/grafana-BlnWc6js.mjs +63 -0
  111. package/dist/grafana-BlnWc6js.mjs.map +1 -0
  112. package/dist/grafana-D3kIm8RX.mjs +293 -0
  113. package/dist/grafana-D3kIm8RX.mjs.map +1 -0
  114. package/dist/index.d.mts +21 -0
  115. package/dist/index.mjs +22 -0
  116. package/dist/kimi-BFu1v1sU.mjs +46 -0
  117. package/dist/kimi-BFu1v1sU.mjs.map +1 -0
  118. package/dist/lasuite-meet-agents-nlPhMEaN.mjs +36 -0
  119. package/dist/lasuite-meet-agents-nlPhMEaN.mjs.map +1 -0
  120. package/dist/lasuite-meet-backend-9H7rZ8Pc.mjs +134 -0
  121. package/dist/lasuite-meet-backend-9H7rZ8Pc.mjs.map +1 -0
  122. package/dist/lasuite-meet-frontend-B4xNbnBa.mjs +48 -0
  123. package/dist/lasuite-meet-frontend-B4xNbnBa.mjs.map +1 -0
  124. package/dist/librechat-CoPIHXKK.mjs +50 -0
  125. package/dist/librechat-CoPIHXKK.mjs.map +1 -0
  126. package/dist/lightpanda-QchAPgNX.mjs +59 -0
  127. package/dist/lightpanda-QchAPgNX.mjs.map +1 -0
  128. package/dist/litellm-Dgl6iTry.mjs +47 -0
  129. package/dist/litellm-Dgl6iTry.mjs.map +1 -0
  130. package/dist/livekit-C13SxlVB.mjs +56 -0
  131. package/dist/livekit-C13SxlVB.mjs.map +1 -0
  132. package/dist/magic-string.es-Dew0Rnsa.mjs +1014 -0
  133. package/dist/magic-string.es-Dew0Rnsa.mjs.map +1 -0
  134. package/dist/matomo-CiOoggYl.mjs +80 -0
  135. package/dist/matomo-CiOoggYl.mjs.map +1 -0
  136. package/dist/matrix-synapse-CP20A7NN.mjs +88 -0
  137. package/dist/matrix-synapse-CP20A7NN.mjs.map +1 -0
  138. package/dist/mattermost-CeFVuhIr.mjs +61 -0
  139. package/dist/mattermost-CeFVuhIr.mjs.map +1 -0
  140. package/dist/meilisearch-CLiQiTdN.mjs +78 -0
  141. package/dist/meilisearch-CLiQiTdN.mjs.map +1 -0
  142. package/dist/minio-_QuguAeo.mjs +102 -0
  143. package/dist/minio-_QuguAeo.mjs.map +1 -0
  144. package/dist/mixpost-eSFPM9XK.mjs +87 -0
  145. package/dist/mixpost-eSFPM9XK.mjs.map +1 -0
  146. package/dist/motion-canvas-Bk1ruvuX.mjs +52 -0
  147. package/dist/motion-canvas-Bk1ruvuX.mjs.map +1 -0
  148. package/dist/n8n-W5qeU34C.mjs +154 -0
  149. package/dist/n8n-W5qeU34C.mjs.map +1 -0
  150. package/dist/n8n-workflows-BPmKVx8z.mjs +75 -0
  151. package/dist/n8n-workflows-BPmKVx8z.mjs.map +1 -0
  152. package/dist/native-services-CwOCM-Xz.mjs +78 -0
  153. package/dist/native-services-CwOCM-Xz.mjs.map +1 -0
  154. package/dist/nocodb-DQNbSYh_.mjs +45 -0
  155. package/dist/nocodb-DQNbSYh_.mjs.map +1 -0
  156. package/dist/ntfy-B8_cZAx2.mjs +63 -0
  157. package/dist/ntfy-B8_cZAx2.mjs.map +1 -0
  158. package/dist/ollama-BiKAypcO.mjs +66 -0
  159. package/dist/ollama-BiKAypcO.mjs.map +1 -0
  160. package/dist/open-webui-DZOG4_xL.mjs +50 -0
  161. package/dist/open-webui-DZOG4_xL.mjs.map +1 -0
  162. package/dist/opencode-Dvfh5KvA.mjs +50 -0
  163. package/dist/opencode-Dvfh5KvA.mjs.map +1 -0
  164. package/dist/openpanel-BuWHhDze.mjs +46 -0
  165. package/dist/openpanel-BuWHhDze.mjs.map +1 -0
  166. package/dist/outline-Dy-YzdYS.mjs +74 -0
  167. package/dist/outline-Dy-YzdYS.mjs.map +1 -0
  168. package/dist/paperless-ngx-DVtWWpKg.mjs +93 -0
  169. package/dist/paperless-ngx-DVtWWpKg.mjs.map +1 -0
  170. package/dist/playwright-server-Boiz8--G.mjs +42 -0
  171. package/dist/playwright-server-Boiz8--G.mjs.map +1 -0
  172. package/dist/portainer-D9MU96UI.mjs +49 -0
  173. package/dist/portainer-D9MU96UI.mjs.map +1 -0
  174. package/dist/postgres-init-BiM-xZtq.mjs +151 -0
  175. package/dist/postgres-init-BiM-xZtq.mjs.map +1 -0
  176. package/dist/postgresql-s65Z9RqR.mjs +84 -0
  177. package/dist/postgresql-s65Z9RqR.mjs.map +1 -0
  178. package/dist/postiz-U6EK23EY.mjs +83 -0
  179. package/dist/postiz-U6EK23EY.mjs.map +1 -0
  180. package/dist/presets/registry.d.mts +10 -0
  181. package/dist/presets/registry.d.mts.map +1 -0
  182. package/dist/presets/registry.mjs +159 -0
  183. package/dist/presets/registry.mjs.map +1 -0
  184. package/dist/presets/registry.test.d.mts +1 -0
  185. package/dist/presets/registry.test.mjs +34 -0
  186. package/dist/presets/registry.test.mjs.map +1 -0
  187. package/dist/prometheus-WOlk-a1G.mjs +107 -0
  188. package/dist/prometheus-WOlk-a1G.mjs.map +1 -0
  189. package/dist/prometheus-x901F67p.mjs +52 -0
  190. package/dist/prometheus-x901F67p.mjs.map +1 -0
  191. package/dist/qdrant-DZW9uW4e.mjs +77 -0
  192. package/dist/qdrant-DZW9uW4e.mjs.map +1 -0
  193. package/dist/readme-C7M3QE9a.mjs +199 -0
  194. package/dist/readme-C7M3QE9a.mjs.map +1 -0
  195. package/dist/redis-DPMOf237.mjs +91 -0
  196. package/dist/redis-DPMOf237.mjs.map +1 -0
  197. package/dist/registry-CqLarEm5.mjs +30 -0
  198. package/dist/registry-CqLarEm5.mjs.map +1 -0
  199. package/dist/registry-DLX9Q4VQ.mjs +215 -0
  200. package/dist/registry-DLX9Q4VQ.mjs.map +1 -0
  201. package/dist/remotion-COkr0wpr.mjs +55 -0
  202. package/dist/remotion-COkr0wpr.mjs.map +1 -0
  203. package/dist/resolver-Dl5clk-d.mjs +194 -0
  204. package/dist/resolver-Dl5clk-d.mjs.map +1 -0
  205. package/dist/resolver.d.mts +23 -0
  206. package/dist/resolver.d.mts.map +1 -0
  207. package/dist/resolver.mjs +3 -0
  208. package/dist/resolver.test.d.mts +1 -0
  209. package/dist/resolver.test.mjs +237 -0
  210. package/dist/resolver.test.mjs.map +1 -0
  211. package/dist/rocketchat-BebQT1MZ.mjs +57 -0
  212. package/dist/rocketchat-BebQT1MZ.mjs.map +1 -0
  213. package/dist/schema-PSUY6yJU.d.mts +700 -0
  214. package/dist/schema-PSUY6yJU.d.mts.map +1 -0
  215. package/dist/schema.d.mts +2 -0
  216. package/dist/schema.mjs +258 -0
  217. package/dist/schema.mjs.map +1 -0
  218. package/dist/schema.test.d.mts +1 -0
  219. package/dist/schema.test.mjs +264 -0
  220. package/dist/schema.test.mjs.map +1 -0
  221. package/dist/scripts-DsljWbP4.mjs +351 -0
  222. package/dist/scripts-DsljWbP4.mjs.map +1 -0
  223. package/dist/searxng-tJpBkchC.mjs +65 -0
  224. package/dist/searxng-tJpBkchC.mjs.map +1 -0
  225. package/dist/services/definitions/anything-llm.d.mts +8 -0
  226. package/dist/services/definitions/anything-llm.d.mts.map +1 -0
  227. package/dist/services/definitions/anything-llm.mjs +3 -0
  228. package/dist/services/definitions/appflowy.d.mts +8 -0
  229. package/dist/services/definitions/appflowy.d.mts.map +1 -0
  230. package/dist/services/definitions/appflowy.mjs +3 -0
  231. package/dist/services/definitions/beszel.d.mts +8 -0
  232. package/dist/services/definitions/beszel.d.mts.map +1 -0
  233. package/dist/services/definitions/beszel.mjs +3 -0
  234. package/dist/services/definitions/browserless.d.mts +8 -0
  235. package/dist/services/definitions/browserless.d.mts.map +1 -0
  236. package/dist/services/definitions/browserless.mjs +3 -0
  237. package/dist/services/definitions/caddy.d.mts +8 -0
  238. package/dist/services/definitions/caddy.d.mts.map +1 -0
  239. package/dist/services/definitions/caddy.mjs +3 -0
  240. package/dist/services/definitions/chromadb.d.mts +8 -0
  241. package/dist/services/definitions/chromadb.d.mts.map +1 -0
  242. package/dist/services/definitions/chromadb.mjs +3 -0
  243. package/dist/services/definitions/claude-code.d.mts +8 -0
  244. package/dist/services/definitions/claude-code.d.mts.map +1 -0
  245. package/dist/services/definitions/claude-code.mjs +3 -0
  246. package/dist/services/definitions/code-server.d.mts +8 -0
  247. package/dist/services/definitions/code-server.d.mts.map +1 -0
  248. package/dist/services/definitions/code-server.mjs +3 -0
  249. package/dist/services/definitions/codex.d.mts +8 -0
  250. package/dist/services/definitions/codex.d.mts.map +1 -0
  251. package/dist/services/definitions/codex.mjs +3 -0
  252. package/dist/services/definitions/coolify.d.mts +8 -0
  253. package/dist/services/definitions/coolify.d.mts.map +1 -0
  254. package/dist/services/definitions/coolify.mjs +3 -0
  255. package/dist/services/definitions/dify.d.mts +8 -0
  256. package/dist/services/definitions/dify.d.mts.map +1 -0
  257. package/dist/services/definitions/dify.mjs +3 -0
  258. package/dist/services/definitions/docsgpt.d.mts +8 -0
  259. package/dist/services/definitions/docsgpt.d.mts.map +1 -0
  260. package/dist/services/definitions/docsgpt.mjs +3 -0
  261. package/dist/services/definitions/dokploy.d.mts +8 -0
  262. package/dist/services/definitions/dokploy.d.mts.map +1 -0
  263. package/dist/services/definitions/dokploy.mjs +3 -0
  264. package/dist/services/definitions/dozzle.d.mts +8 -0
  265. package/dist/services/definitions/dozzle.d.mts.map +1 -0
  266. package/dist/services/definitions/dozzle.mjs +3 -0
  267. package/dist/services/definitions/ffmpeg.d.mts +8 -0
  268. package/dist/services/definitions/ffmpeg.d.mts.map +1 -0
  269. package/dist/services/definitions/ffmpeg.mjs +3 -0
  270. package/dist/services/definitions/flowise.d.mts +8 -0
  271. package/dist/services/definitions/flowise.d.mts.map +1 -0
  272. package/dist/services/definitions/flowise.mjs +3 -0
  273. package/dist/services/definitions/gemini-cli.d.mts +8 -0
  274. package/dist/services/definitions/gemini-cli.d.mts.map +1 -0
  275. package/dist/services/definitions/gemini-cli.mjs +3 -0
  276. package/dist/services/definitions/gitea.d.mts +8 -0
  277. package/dist/services/definitions/gitea.d.mts.map +1 -0
  278. package/dist/services/definitions/gitea.mjs +3 -0
  279. package/dist/services/definitions/gotify.d.mts +8 -0
  280. package/dist/services/definitions/gotify.d.mts.map +1 -0
  281. package/dist/services/definitions/gotify.mjs +3 -0
  282. package/dist/services/definitions/grafana.d.mts +8 -0
  283. package/dist/services/definitions/grafana.d.mts.map +1 -0
  284. package/dist/services/definitions/grafana.mjs +3 -0
  285. package/dist/services/definitions/index.d.mts +73 -0
  286. package/dist/services/definitions/index.d.mts.map +1 -0
  287. package/dist/services/definitions/index.mjs +68 -0
  288. package/dist/services/definitions/kimi.d.mts +8 -0
  289. package/dist/services/definitions/kimi.d.mts.map +1 -0
  290. package/dist/services/definitions/kimi.mjs +3 -0
  291. package/dist/services/definitions/lasuite-meet-agents.d.mts +8 -0
  292. package/dist/services/definitions/lasuite-meet-agents.d.mts.map +1 -0
  293. package/dist/services/definitions/lasuite-meet-agents.mjs +3 -0
  294. package/dist/services/definitions/lasuite-meet-backend.d.mts +8 -0
  295. package/dist/services/definitions/lasuite-meet-backend.d.mts.map +1 -0
  296. package/dist/services/definitions/lasuite-meet-backend.mjs +3 -0
  297. package/dist/services/definitions/lasuite-meet-frontend.d.mts +8 -0
  298. package/dist/services/definitions/lasuite-meet-frontend.d.mts.map +1 -0
  299. package/dist/services/definitions/lasuite-meet-frontend.mjs +3 -0
  300. package/dist/services/definitions/librechat.d.mts +8 -0
  301. package/dist/services/definitions/librechat.d.mts.map +1 -0
  302. package/dist/services/definitions/librechat.mjs +3 -0
  303. package/dist/services/definitions/lightpanda.d.mts +8 -0
  304. package/dist/services/definitions/lightpanda.d.mts.map +1 -0
  305. package/dist/services/definitions/lightpanda.mjs +3 -0
  306. package/dist/services/definitions/litellm.d.mts +8 -0
  307. package/dist/services/definitions/litellm.d.mts.map +1 -0
  308. package/dist/services/definitions/litellm.mjs +3 -0
  309. package/dist/services/definitions/livekit.d.mts +8 -0
  310. package/dist/services/definitions/livekit.d.mts.map +1 -0
  311. package/dist/services/definitions/livekit.mjs +3 -0
  312. package/dist/services/definitions/matomo.d.mts +8 -0
  313. package/dist/services/definitions/matomo.d.mts.map +1 -0
  314. package/dist/services/definitions/matomo.mjs +3 -0
  315. package/dist/services/definitions/matrix-synapse.d.mts +8 -0
  316. package/dist/services/definitions/matrix-synapse.d.mts.map +1 -0
  317. package/dist/services/definitions/matrix-synapse.mjs +3 -0
  318. package/dist/services/definitions/mattermost.d.mts +8 -0
  319. package/dist/services/definitions/mattermost.d.mts.map +1 -0
  320. package/dist/services/definitions/mattermost.mjs +3 -0
  321. package/dist/services/definitions/meilisearch.d.mts +8 -0
  322. package/dist/services/definitions/meilisearch.d.mts.map +1 -0
  323. package/dist/services/definitions/meilisearch.mjs +3 -0
  324. package/dist/services/definitions/minio.d.mts +8 -0
  325. package/dist/services/definitions/minio.d.mts.map +1 -0
  326. package/dist/services/definitions/minio.mjs +3 -0
  327. package/dist/services/definitions/mixpost.d.mts +8 -0
  328. package/dist/services/definitions/mixpost.d.mts.map +1 -0
  329. package/dist/services/definitions/mixpost.mjs +3 -0
  330. package/dist/services/definitions/motion-canvas.d.mts +8 -0
  331. package/dist/services/definitions/motion-canvas.d.mts.map +1 -0
  332. package/dist/services/definitions/motion-canvas.mjs +3 -0
  333. package/dist/services/definitions/n8n.d.mts +8 -0
  334. package/dist/services/definitions/n8n.d.mts.map +1 -0
  335. package/dist/services/definitions/n8n.mjs +3 -0
  336. package/dist/services/definitions/nocodb.d.mts +8 -0
  337. package/dist/services/definitions/nocodb.d.mts.map +1 -0
  338. package/dist/services/definitions/nocodb.mjs +3 -0
  339. package/dist/services/definitions/ntfy.d.mts +8 -0
  340. package/dist/services/definitions/ntfy.d.mts.map +1 -0
  341. package/dist/services/definitions/ntfy.mjs +3 -0
  342. package/dist/services/definitions/ollama.d.mts +8 -0
  343. package/dist/services/definitions/ollama.d.mts.map +1 -0
  344. package/dist/services/definitions/ollama.mjs +3 -0
  345. package/dist/services/definitions/open-webui.d.mts +8 -0
  346. package/dist/services/definitions/open-webui.d.mts.map +1 -0
  347. package/dist/services/definitions/open-webui.mjs +3 -0
  348. package/dist/services/definitions/opencode.d.mts +8 -0
  349. package/dist/services/definitions/opencode.d.mts.map +1 -0
  350. package/dist/services/definitions/opencode.mjs +3 -0
  351. package/dist/services/definitions/openpanel.d.mts +8 -0
  352. package/dist/services/definitions/openpanel.d.mts.map +1 -0
  353. package/dist/services/definitions/openpanel.mjs +3 -0
  354. package/dist/services/definitions/outline.d.mts +8 -0
  355. package/dist/services/definitions/outline.d.mts.map +1 -0
  356. package/dist/services/definitions/outline.mjs +3 -0
  357. package/dist/services/definitions/paperless-ngx.d.mts +8 -0
  358. package/dist/services/definitions/paperless-ngx.d.mts.map +1 -0
  359. package/dist/services/definitions/paperless-ngx.mjs +3 -0
  360. package/dist/services/definitions/playwright-server.d.mts +8 -0
  361. package/dist/services/definitions/playwright-server.d.mts.map +1 -0
  362. package/dist/services/definitions/playwright-server.mjs +3 -0
  363. package/dist/services/definitions/portainer.d.mts +8 -0
  364. package/dist/services/definitions/portainer.d.mts.map +1 -0
  365. package/dist/services/definitions/portainer.mjs +3 -0
  366. package/dist/services/definitions/postgresql.d.mts +8 -0
  367. package/dist/services/definitions/postgresql.d.mts.map +1 -0
  368. package/dist/services/definitions/postgresql.mjs +3 -0
  369. package/dist/services/definitions/postiz.d.mts +8 -0
  370. package/dist/services/definitions/postiz.d.mts.map +1 -0
  371. package/dist/services/definitions/postiz.mjs +3 -0
  372. package/dist/services/definitions/prometheus.d.mts +8 -0
  373. package/dist/services/definitions/prometheus.d.mts.map +1 -0
  374. package/dist/services/definitions/prometheus.mjs +3 -0
  375. package/dist/services/definitions/qdrant.d.mts +8 -0
  376. package/dist/services/definitions/qdrant.d.mts.map +1 -0
  377. package/dist/services/definitions/qdrant.mjs +3 -0
  378. package/dist/services/definitions/redis.d.mts +8 -0
  379. package/dist/services/definitions/redis.d.mts.map +1 -0
  380. package/dist/services/definitions/redis.mjs +3 -0
  381. package/dist/services/definitions/remotion.d.mts +8 -0
  382. package/dist/services/definitions/remotion.d.mts.map +1 -0
  383. package/dist/services/definitions/remotion.mjs +3 -0
  384. package/dist/services/definitions/rocketchat.d.mts +8 -0
  385. package/dist/services/definitions/rocketchat.d.mts.map +1 -0
  386. package/dist/services/definitions/rocketchat.mjs +3 -0
  387. package/dist/services/definitions/searxng.d.mts +8 -0
  388. package/dist/services/definitions/searxng.d.mts.map +1 -0
  389. package/dist/services/definitions/searxng.mjs +3 -0
  390. package/dist/services/definitions/stable-diffusion.d.mts +8 -0
  391. package/dist/services/definitions/stable-diffusion.d.mts.map +1 -0
  392. package/dist/services/definitions/stable-diffusion.mjs +3 -0
  393. package/dist/services/definitions/steel-browser.d.mts +8 -0
  394. package/dist/services/definitions/steel-browser.d.mts.map +1 -0
  395. package/dist/services/definitions/steel-browser.mjs +3 -0
  396. package/dist/services/definitions/tailscale.d.mts +8 -0
  397. package/dist/services/definitions/tailscale.d.mts.map +1 -0
  398. package/dist/services/definitions/tailscale.mjs +3 -0
  399. package/dist/services/definitions/temporal.d.mts +8 -0
  400. package/dist/services/definitions/temporal.d.mts.map +1 -0
  401. package/dist/services/definitions/temporal.mjs +3 -0
  402. package/dist/services/definitions/traefik.d.mts +8 -0
  403. package/dist/services/definitions/traefik.d.mts.map +1 -0
  404. package/dist/services/definitions/traefik.mjs +3 -0
  405. package/dist/services/definitions/umami.d.mts +8 -0
  406. package/dist/services/definitions/umami.d.mts.map +1 -0
  407. package/dist/services/definitions/umami.mjs +3 -0
  408. package/dist/services/definitions/uptime-kuma.d.mts +8 -0
  409. package/dist/services/definitions/uptime-kuma.d.mts.map +1 -0
  410. package/dist/services/definitions/uptime-kuma.mjs +3 -0
  411. package/dist/services/definitions/valkey.d.mts +8 -0
  412. package/dist/services/definitions/valkey.d.mts.map +1 -0
  413. package/dist/services/definitions/valkey.mjs +3 -0
  414. package/dist/services/definitions/watchtower.d.mts +8 -0
  415. package/dist/services/definitions/watchtower.d.mts.map +1 -0
  416. package/dist/services/definitions/watchtower.mjs +3 -0
  417. package/dist/services/definitions/weaviate.d.mts +8 -0
  418. package/dist/services/definitions/weaviate.d.mts.map +1 -0
  419. package/dist/services/definitions/weaviate.mjs +3 -0
  420. package/dist/services/definitions/whisper.d.mts +8 -0
  421. package/dist/services/definitions/whisper.d.mts.map +1 -0
  422. package/dist/services/definitions/whisper.mjs +3 -0
  423. package/dist/services/registry.d.mts +17 -0
  424. package/dist/services/registry.d.mts.map +1 -0
  425. package/dist/services/registry.mjs +3 -0
  426. package/dist/services/registry.test.d.mts +1 -0
  427. package/dist/services/registry.test.mjs +64 -0
  428. package/dist/services/registry.test.mjs.map +1 -0
  429. package/dist/skills/registry.d.mts +12 -0
  430. package/dist/skills/registry.d.mts.map +1 -0
  431. package/dist/skills/registry.mjs +3 -0
  432. package/dist/skills-DWG72Y3X.mjs +587 -0
  433. package/dist/skills-DWG72Y3X.mjs.map +1 -0
  434. package/dist/stable-diffusion-BulAzkyT.mjs +48 -0
  435. package/dist/stable-diffusion-BulAzkyT.mjs.map +1 -0
  436. package/dist/steel-browser-Cc0bYBjM.mjs +77 -0
  437. package/dist/steel-browser-Cc0bYBjM.mjs.map +1 -0
  438. package/dist/tailscale-CrM4EZlF.mjs +69 -0
  439. package/dist/tailscale-CrM4EZlF.mjs.map +1 -0
  440. package/dist/temporal-49gA0msh.mjs +100 -0
  441. package/dist/temporal-49gA0msh.mjs.map +1 -0
  442. package/dist/traefik-Da-c1f55.mjs +58 -0
  443. package/dist/traefik-Da-c1f55.mjs.map +1 -0
  444. package/dist/types.d.mts +64 -0
  445. package/dist/types.d.mts.map +1 -0
  446. package/dist/types.mjs +92 -0
  447. package/dist/types.mjs.map +1 -0
  448. package/dist/umami-csBSsHqO.mjs +46 -0
  449. package/dist/umami-csBSsHqO.mjs.map +1 -0
  450. package/dist/uptime-kuma-D0NvVuXD.mjs +51 -0
  451. package/dist/uptime-kuma-D0NvVuXD.mjs.map +1 -0
  452. package/dist/validator-2FspYNva.mjs +111 -0
  453. package/dist/validator-2FspYNva.mjs.map +1 -0
  454. package/dist/validator.d.mts +21 -0
  455. package/dist/validator.d.mts.map +1 -0
  456. package/dist/validator.mjs +3 -0
  457. package/dist/validator.test.d.mts +1 -0
  458. package/dist/validator.test.mjs +65 -0
  459. package/dist/validator.test.mjs.map +1 -0
  460. package/dist/valkey-BCZqGJ0L.mjs +61 -0
  461. package/dist/valkey-BCZqGJ0L.mjs.map +1 -0
  462. package/dist/version-manager.d.mts +15 -0
  463. package/dist/version-manager.d.mts.map +1 -0
  464. package/dist/version-manager.mjs +55 -0
  465. package/dist/version-manager.mjs.map +1 -0
  466. package/dist/vi.2VT5v0um-Cs3Z_fCB.mjs +12916 -0
  467. package/dist/vi.2VT5v0um-Cs3Z_fCB.mjs.map +1 -0
  468. package/dist/watchtower-BWuvFGpA.mjs +47 -0
  469. package/dist/watchtower-BWuvFGpA.mjs.map +1 -0
  470. package/dist/weaviate-DttY1Hn7.mjs +90 -0
  471. package/dist/weaviate-DttY1Hn7.mjs.map +1 -0
  472. package/dist/whisper-CLu7-Vd8.mjs +62 -0
  473. package/dist/whisper-CLu7-Vd8.mjs.map +1 -0
  474. package/package.json +27 -26
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.mts","names":[],"sources":["../../src/services/registry.ts"],"sourcesContent":[],"mappings":";;;;;cAgBa,iBAAiB,oBAAoB;;AAArC,iBAGG,cAAA,CAHkC,EAAA,EAAA,MAAA,CAAA,EAGN,iBAHH,GAAA,SAAA;AAGzC;AAKgB,iBAAA,qBAAA,CAAgC,QAAA,EAAA,eAAkB,CAAA,EAAA,iBAAiB,EAAA;AAKnF;AAKgB,iBALA,cAAA,CAAA,CAK+B,EALb,iBAK8B,EAAA;;iBAAhD,gBAAA,eAA+B"}
@@ -0,0 +1,3 @@
1
+ import { a as serviceRegistry, i as getServicesByTag, n as getServiceById, r as getServicesByCategory, t as getAllServices } from "../registry-CqLarEm5.mjs";
2
+
3
+ export { getAllServices, getServiceById, getServicesByCategory, getServicesByTag, serviceRegistry };
@@ -0,0 +1 @@
1
+ export { };
@@ -0,0 +1,64 @@
1
+ import { n as describe, r as it, t as globalExpect } from "../vi.2VT5v0um-Cs3Z_fCB.mjs";
2
+ import { i as getServicesByTag, n as getServiceById, r as getServicesByCategory, t as getAllServices } from "../registry-CqLarEm5.mjs";
3
+
4
+ //#region src/services/registry.test.ts
5
+ describe("service registry", () => {
6
+ it("has at least 60 services registered", () => {
7
+ globalExpect(getAllServices().length).toBeGreaterThanOrEqual(60);
8
+ });
9
+ it("finds redis by ID", () => {
10
+ const redis = getServiceById("redis");
11
+ globalExpect(redis).toBeDefined();
12
+ globalExpect(redis.id).toBe("redis");
13
+ globalExpect(redis.name).toBe("Redis");
14
+ });
15
+ it("returns undefined for unknown ID", () => {
16
+ globalExpect(getServiceById("nonexistent")).toBeUndefined();
17
+ });
18
+ it("finds tailscale and it is mandatory", () => {
19
+ const tailscale = getServiceById("tailscale");
20
+ globalExpect(tailscale).toBeDefined();
21
+ globalExpect(tailscale.id).toBe("tailscale");
22
+ globalExpect(tailscale.mandatory).toBe(true);
23
+ });
24
+ it("finds coolify, dokploy, livekit, and La Suite Meet services by ID", () => {
25
+ globalExpect(getServiceById("coolify")).toBeDefined();
26
+ globalExpect(getServiceById("dokploy")).toBeDefined();
27
+ globalExpect(getServiceById("livekit")).toBeDefined();
28
+ globalExpect(getServiceById("lasuite-meet-backend")).toBeDefined();
29
+ globalExpect(getServiceById("lasuite-meet-frontend")).toBeDefined();
30
+ globalExpect(getServiceById("lasuite-meet-agents")).toBeDefined();
31
+ });
32
+ it("filters by category", () => {
33
+ const databases = getServicesByCategory("database");
34
+ globalExpect(databases.map((s) => s.id)).toContain("redis");
35
+ globalExpect(databases.length).toBeGreaterThanOrEqual(1);
36
+ });
37
+ it("filters by tag", () => {
38
+ const cacheServices = getServicesByTag("cache");
39
+ globalExpect(cacheServices.map((s) => s.id)).toContain("redis");
40
+ globalExpect(cacheServices.length).toBeGreaterThanOrEqual(1);
41
+ });
42
+ it("all service IDs are unique", () => {
43
+ const ids = getAllServices().map((s) => s.id);
44
+ globalExpect(new Set(ids).size).toBe(ids.length);
45
+ });
46
+ it("no two services have the same exposed host port", () => {
47
+ const services = getAllServices();
48
+ const portMap = /* @__PURE__ */ new Map();
49
+ for (const svc of services) for (const port of svc.ports) {
50
+ if (!port.exposed) continue;
51
+ const existing = portMap.get(port.host) ?? [];
52
+ existing.push(svc.id);
53
+ portMap.set(port.host, existing);
54
+ }
55
+ const conflicts = [];
56
+ for (const [port, serviceIds] of portMap) if (serviceIds.length > 1) conflicts.push(`Port ${port} shared by: ${serviceIds.join(", ")}`);
57
+ if (conflicts.length > 0) console.warn(`[informational] ${conflicts.length} port overlap(s) detected:\n ${conflicts.join("\n ")}`);
58
+ globalExpect(portMap.size).toBeGreaterThan(0);
59
+ });
60
+ });
61
+
62
+ //#endregion
63
+ export { };
64
+ //# sourceMappingURL=registry.test.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.test.mjs","names":[],"sources":["../../src/services/registry.test.ts"],"sourcesContent":["import { describe, expect, it } from \"vitest\";\nimport {\n\tgetAllServices,\n\tgetServiceById,\n\tgetServicesByCategory,\n\tgetServicesByTag,\n} from \"../services/registry.js\";\n\ndescribe(\"service registry\", () => {\n\tit(\"has at least 60 services registered\", () => {\n\t\tconst services = getAllServices();\n\t\texpect(services.length).toBeGreaterThanOrEqual(60);\n\t});\n\n\tit(\"finds redis by ID\", () => {\n\t\tconst redis = getServiceById(\"redis\");\n\t\texpect(redis).toBeDefined();\n\t\texpect(redis!.id).toBe(\"redis\");\n\t\texpect(redis!.name).toBe(\"Redis\");\n\t});\n\n\tit(\"returns undefined for unknown ID\", () => {\n\t\tconst result = getServiceById(\"nonexistent\");\n\t\texpect(result).toBeUndefined();\n\t});\n\n\tit(\"finds tailscale and it is mandatory\", () => {\n\t\tconst tailscale = getServiceById(\"tailscale\");\n\t\texpect(tailscale).toBeDefined();\n\t\texpect(tailscale!.id).toBe(\"tailscale\");\n\t\texpect(tailscale!.mandatory).toBe(true);\n\t});\n\n\tit(\"finds coolify, dokploy, livekit, and La Suite Meet services by ID\", () => {\n\t\texpect(getServiceById(\"coolify\")).toBeDefined();\n\t\texpect(getServiceById(\"dokploy\")).toBeDefined();\n\t\texpect(getServiceById(\"livekit\")).toBeDefined();\n\t\texpect(getServiceById(\"lasuite-meet-backend\")).toBeDefined();\n\t\texpect(getServiceById(\"lasuite-meet-frontend\")).toBeDefined();\n\t\texpect(getServiceById(\"lasuite-meet-agents\")).toBeDefined();\n\t});\n\n\tit(\"filters by category\", () => {\n\t\tconst databases = getServicesByCategory(\"database\");\n\t\tconst ids = databases.map((s) => s.id);\n\t\texpect(ids).toContain(\"redis\");\n\t\texpect(databases.length).toBeGreaterThanOrEqual(1);\n\t});\n\n\tit(\"filters by tag\", () => {\n\t\tconst cacheServices = getServicesByTag(\"cache\");\n\t\tconst ids = cacheServices.map((s) => s.id);\n\t\texpect(ids).toContain(\"redis\");\n\t\texpect(cacheServices.length).toBeGreaterThanOrEqual(1);\n\t});\n\n\tit(\"all service IDs are unique\", () => {\n\t\tconst services = getAllServices();\n\t\tconst ids = services.map((s) => s.id);\n\t\tconst uniqueIds = new Set(ids);\n\t\texpect(uniqueIds.size).toBe(ids.length);\n\t});\n\n\tit(\"no two services have the same exposed host port\", () => {\n\t\tconst services = getAllServices();\n\t\tconst portMap = new Map<number, string[]>();\n\n\t\tfor (const svc of services) {\n\t\t\tfor (const port of svc.ports) {\n\t\t\t\tif (!port.exposed) continue;\n\t\t\t\tconst existing = portMap.get(port.host) ?? [];\n\t\t\t\texisting.push(svc.id);\n\t\t\t\tportMap.set(port.host, existing);\n\t\t\t}\n\t\t}\n\n\t\t// Informational: log any shared ports but don't hard-fail,\n\t\t// since users may not enable all services simultaneously.\n\t\tconst conflicts: string[] = [];\n\t\tfor (const [port, serviceIds] of portMap) {\n\t\t\tif (serviceIds.length > 1) {\n\t\t\t\tconflicts.push(`Port ${port} shared by: ${serviceIds.join(\", \")}`);\n\t\t\t}\n\t\t}\n\n\t\t// This is informational — warn if there are conflicts but still pass.\n\t\t// If you want to enforce unique ports, change the next line to:\n\t\t// expect(conflicts).toHaveLength(0);\n\t\tif (conflicts.length > 0) {\n\t\t\tconsole.warn(\n\t\t\t\t`[informational] ${conflicts.length} port overlap(s) detected:\\n ${conflicts.join(\"\\n \")}`,\n\t\t\t);\n\t\t}\n\n\t\t// At minimum, verify we checked something\n\t\texpect(portMap.size).toBeGreaterThan(0);\n\t});\n});\n"],"mappings":";;;;AAQA,SAAS,0BAA0B;AAClC,IAAG,6CAA6C;AAE/C,eADiB,gBAAgB,CACjB,OAAO,CAAC,uBAAuB,GAAG;GACjD;AAEF,IAAG,2BAA2B;EAC7B,MAAM,QAAQ,eAAe,QAAQ;AACrC,eAAO,MAAM,CAAC,aAAa;AAC3B,eAAO,MAAO,GAAG,CAAC,KAAK,QAAQ;AAC/B,eAAO,MAAO,KAAK,CAAC,KAAK,QAAQ;GAChC;AAEF,IAAG,0CAA0C;AAE5C,eADe,eAAe,cAAc,CAC9B,CAAC,eAAe;GAC7B;AAEF,IAAG,6CAA6C;EAC/C,MAAM,YAAY,eAAe,YAAY;AAC7C,eAAO,UAAU,CAAC,aAAa;AAC/B,eAAO,UAAW,GAAG,CAAC,KAAK,YAAY;AACvC,eAAO,UAAW,UAAU,CAAC,KAAK,KAAK;GACtC;AAEF,IAAG,2EAA2E;AAC7E,eAAO,eAAe,UAAU,CAAC,CAAC,aAAa;AAC/C,eAAO,eAAe,UAAU,CAAC,CAAC,aAAa;AAC/C,eAAO,eAAe,UAAU,CAAC,CAAC,aAAa;AAC/C,eAAO,eAAe,uBAAuB,CAAC,CAAC,aAAa;AAC5D,eAAO,eAAe,wBAAwB,CAAC,CAAC,aAAa;AAC7D,eAAO,eAAe,sBAAsB,CAAC,CAAC,aAAa;GAC1D;AAEF,IAAG,6BAA6B;EAC/B,MAAM,YAAY,sBAAsB,WAAW;AAEnD,eADY,UAAU,KAAK,MAAM,EAAE,GAAG,CAC3B,CAAC,UAAU,QAAQ;AAC9B,eAAO,UAAU,OAAO,CAAC,uBAAuB,EAAE;GACjD;AAEF,IAAG,wBAAwB;EAC1B,MAAM,gBAAgB,iBAAiB,QAAQ;AAE/C,eADY,cAAc,KAAK,MAAM,EAAE,GAAG,CAC/B,CAAC,UAAU,QAAQ;AAC9B,eAAO,cAAc,OAAO,CAAC,uBAAuB,EAAE;GACrD;AAEF,IAAG,oCAAoC;EAEtC,MAAM,MADW,gBAAgB,CACZ,KAAK,MAAM,EAAE,GAAG;AAErC,eADkB,IAAI,IAAI,IAAI,CACb,KAAK,CAAC,KAAK,IAAI,OAAO;GACtC;AAEF,IAAG,yDAAyD;EAC3D,MAAM,WAAW,gBAAgB;EACjC,MAAM,0BAAU,IAAI,KAAuB;AAE3C,OAAK,MAAM,OAAO,SACjB,MAAK,MAAM,QAAQ,IAAI,OAAO;AAC7B,OAAI,CAAC,KAAK,QAAS;GACnB,MAAM,WAAW,QAAQ,IAAI,KAAK,KAAK,IAAI,EAAE;AAC7C,YAAS,KAAK,IAAI,GAAG;AACrB,WAAQ,IAAI,KAAK,MAAM,SAAS;;EAMlC,MAAM,YAAsB,EAAE;AAC9B,OAAK,MAAM,CAAC,MAAM,eAAe,QAChC,KAAI,WAAW,SAAS,EACvB,WAAU,KAAK,QAAQ,KAAK,cAAc,WAAW,KAAK,KAAK,GAAG;AAOpE,MAAI,UAAU,SAAS,EACtB,SAAQ,KACP,mBAAmB,UAAU,OAAO,gCAAgC,UAAU,KAAK,OAAO,GAC1F;AAIF,eAAO,QAAQ,KAAK,CAAC,gBAAgB,EAAE;GACtC;EACD"}
@@ -0,0 +1,12 @@
1
+ import "../schema-PSUY6yJU.mjs";
2
+ import { SkillPack } from "../types.mjs";
3
+
4
+ //#region src/skills/registry.d.ts
5
+ declare const skillPackRegistry: ReadonlyMap<string, SkillPack>;
6
+ declare function getSkillPackById(id: string): SkillPack | undefined;
7
+ declare function getAllSkillPacks(): SkillPack[];
8
+ /** Get skill packs whose required services are all present in the given service list */
9
+ declare function getCompatibleSkillPacks(availableServiceIds: string[]): SkillPack[];
10
+ //#endregion
11
+ export { getAllSkillPacks, getCompatibleSkillPacks, getSkillPackById, skillPackRegistry };
12
+ //# sourceMappingURL=registry.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"registry.d.mts","names":[],"sources":["../../src/skills/registry.ts"],"sourcesContent":[],"mappings":";;;;cA8Ga,mBAAmB,oBAAoB;iBAEpC,gBAAA,cAA8B;iBAI9B,gBAAA,CAAA,GAAoB;AANpC;AAEgB,iBASA,uBAAA,CATuC,mBAAA,EAAA,MAAA,EAAA,CAAA,EASiB,SATjB,EAAA"}
@@ -0,0 +1,3 @@
1
+ import { i as skillPackRegistry, n as getCompatibleSkillPacks, r as getSkillPackById, t as getAllSkillPacks } from "../registry-DLX9Q4VQ.mjs";
2
+
3
+ export { getAllSkillPacks, getCompatibleSkillPacks, getSkillPackById, skillPackRegistry };
@@ -0,0 +1,587 @@
1
+ import Handlebars from "handlebars";
2
+
3
+ //#region src/generators/skills.ts
4
+ /**
5
+ * Basic skill templates keyed by skillId.
6
+ *
7
+ * Templates use Handlebars `{{VAR}}` syntax. Variables are resolved from the
8
+ * service's `openclawEnvVars` array at generation time.
9
+ */
10
+ const skillTemplates = {
11
+ "redis-cache": `---
12
+ name: redis-cache
13
+ description: "Cache data and manage key-value state using Redis"
14
+ metadata:
15
+ openclaw:
16
+ emoji: "🔴"
17
+ ---
18
+
19
+ # Redis Cache
20
+
21
+ Use Redis as a high-performance in-memory cache and key-value store.
22
+
23
+ ## Connection Details
24
+
25
+ - **Host:** \`{{REDIS_HOST}}\`
26
+ - **Port:** \`{{REDIS_PORT}}\`
27
+
28
+ ## Example Commands
29
+
30
+ ### Set a value
31
+ \`\`\`bash
32
+ redis-cli -h {{REDIS_HOST}} -p {{REDIS_PORT}} -a $REDIS_PASSWORD SET mykey "myvalue"
33
+ \`\`\`
34
+
35
+ ### Get a value
36
+ \`\`\`bash
37
+ redis-cli -h {{REDIS_HOST}} -p {{REDIS_PORT}} -a $REDIS_PASSWORD GET mykey
38
+ \`\`\`
39
+
40
+ ### List all keys
41
+ \`\`\`bash
42
+ redis-cli -h {{REDIS_HOST}} -p {{REDIS_PORT}} -a $REDIS_PASSWORD KEYS "*"
43
+ \`\`\`
44
+
45
+ ## Usage Notes
46
+
47
+ - Use Redis for caching frequently accessed data, session storage, and pub/sub messaging.
48
+ - Data is persisted to disk via RDB snapshots in the mounted volume.
49
+ - Password authentication is required.
50
+ `,
51
+ "qdrant-memory": `---
52
+ name: qdrant-memory
53
+ description: "Store and retrieve vector embeddings for semantic search and RAG"
54
+ metadata:
55
+ openclaw:
56
+ emoji: "🧠"
57
+ ---
58
+
59
+ # Qdrant Memory
60
+
61
+ Use Qdrant as a vector database for storing embeddings, enabling semantic search and retrieval-augmented generation (RAG).
62
+
63
+ ## Connection Details
64
+
65
+ - **Host:** \`{{QDRANT_HOST}}\`
66
+ - **Port:** \`{{QDRANT_PORT}}\` (REST API)
67
+
68
+ ## Example API Calls
69
+
70
+ ### Create a collection
71
+ \`\`\`bash
72
+ curl -X PUT "http://{{QDRANT_HOST}}:{{QDRANT_PORT}}/collections/my_collection" \\
73
+ -H "Content-Type: application/json" \\
74
+ -d '{"vectors": {"size": 384, "distance": "Cosine"}}'
75
+ \`\`\`
76
+
77
+ ### Upsert points
78
+ \`\`\`bash
79
+ curl -X PUT "http://{{QDRANT_HOST}}:{{QDRANT_PORT}}/collections/my_collection/points" \\
80
+ -H "Content-Type: application/json" \\
81
+ -d '{"points": [{"id": 1, "vector": [0.1, 0.2, ...], "payload": {"text": "hello"}}]}'
82
+ \`\`\`
83
+
84
+ ### Search similar vectors
85
+ \`\`\`bash
86
+ curl -X POST "http://{{QDRANT_HOST}}:{{QDRANT_PORT}}/collections/my_collection/points/search" \\
87
+ -H "Content-Type: application/json" \\
88
+ -d '{"vector": [0.1, 0.2, ...], "limit": 5}'
89
+ \`\`\`
90
+
91
+ ## Usage Notes
92
+
93
+ - Use 384-dimensional vectors for MiniLM-based embeddings or 1536 for OpenAI ada-002.
94
+ - Qdrant supports filtering, batch operations, and named vectors.
95
+ `,
96
+ "n8n-trigger": `---
97
+ name: n8n-trigger
98
+ description: "Trigger and manage automation workflows using n8n"
99
+ metadata:
100
+ openclaw:
101
+ emoji: "🔄"
102
+ ---
103
+
104
+ # n8n Workflow Trigger
105
+
106
+ Use n8n to create, trigger, and manage automation workflows via its REST API.
107
+
108
+ ## Connection Details
109
+
110
+ - **Host:** \`{{N8N_HOST}}\`
111
+ - **Port:** \`{{N8N_PORT}}\`
112
+ - **Webhook URL:** \`{{N8N_WEBHOOK_URL}}\`
113
+
114
+ ## Example API Calls
115
+
116
+ ### Trigger a webhook workflow
117
+ \`\`\`bash
118
+ curl -X POST "{{N8N_WEBHOOK_URL}}webhook/<your-webhook-id>" \\
119
+ -H "Content-Type: application/json" \\
120
+ -d '{"message": "Hello from OpenClaw"}'
121
+ \`\`\`
122
+
123
+ ### List workflows
124
+ \`\`\`bash
125
+ curl -X GET "http://{{N8N_HOST}}:{{N8N_PORT}}/api/v1/workflows" \\
126
+ -H "Content-Type: application/json"
127
+ \`\`\`
128
+
129
+ ### Activate a workflow
130
+ \`\`\`bash
131
+ curl -X PATCH "http://{{N8N_HOST}}:{{N8N_PORT}}/api/v1/workflows/<id>" \\
132
+ -H "Content-Type: application/json" \\
133
+ -d '{"active": true}'
134
+ \`\`\`
135
+
136
+ ## Usage Notes
137
+
138
+ - Create workflows in the n8n UI at http://{{N8N_HOST}}:{{N8N_PORT}}.
139
+ - Webhook nodes allow external triggers from OpenClaw.
140
+ - n8n stores workflow state in PostgreSQL.
141
+ `,
142
+ "ffmpeg-process": `---
143
+ name: ffmpeg-process
144
+ description: "Process media files using FFmpeg for transcoding, conversion, and manipulation"
145
+ metadata:
146
+ openclaw:
147
+ emoji: "🎬"
148
+ ---
149
+
150
+ # FFmpeg Media Processing
151
+
152
+ Use FFmpeg for video/audio transcoding, format conversion, and media manipulation.
153
+
154
+ ## Shared Directory
155
+
156
+ - **Media directory:** \`{{FFMPEG_SHARED_DIR}}\`
157
+
158
+ ## Example Commands
159
+
160
+ ### Convert video to MP4
161
+ \`\`\`bash
162
+ docker exec ffmpeg ffmpeg -i /data/input.avi -c:v libx264 -c:a aac /data/output.mp4
163
+ \`\`\`
164
+
165
+ ### Extract audio from video
166
+ \`\`\`bash
167
+ docker exec ffmpeg ffmpeg -i /data/video.mp4 -vn -acodec libmp3lame /data/audio.mp3
168
+ \`\`\`
169
+
170
+ ### Create thumbnail from video
171
+ \`\`\`bash
172
+ docker exec ffmpeg ffmpeg -i /data/video.mp4 -ss 00:00:05 -vframes 1 /data/thumb.jpg
173
+ \`\`\`
174
+
175
+ ### Resize video
176
+ \`\`\`bash
177
+ docker exec ffmpeg ffmpeg -i /data/input.mp4 -vf scale=1280:720 /data/output_720p.mp4
178
+ \`\`\`
179
+
180
+ ## Usage Notes
181
+
182
+ - Place input files in the shared media directory.
183
+ - FFmpeg runs as a sidecar container sharing a volume with OpenClaw.
184
+ - Output files appear in the same shared directory.
185
+ `,
186
+ "minio-storage": `---
187
+ name: minio-storage
188
+ description: "Store and retrieve files using S3-compatible object storage"
189
+ metadata:
190
+ openclaw:
191
+ emoji: "💾"
192
+ ---
193
+
194
+ # MinIO Object Storage
195
+
196
+ Use MinIO as S3-compatible object storage for files, assets, and backups.
197
+
198
+ ## Connection Details
199
+
200
+ - **Host:** \`{{MINIO_HOST}}\`
201
+ - **API Port:** \`{{MINIO_PORT}}\`
202
+ - **Access Key:** Uses \`MINIO_ACCESS_KEY\` env var
203
+ - **Secret Key:** Uses \`MINIO_SECRET_KEY\` env var
204
+
205
+ ## Example API Calls
206
+
207
+ ### Create a bucket
208
+ \`\`\`bash
209
+ mc alias set local http://{{MINIO_HOST}}:{{MINIO_PORT}} $MINIO_ACCESS_KEY $MINIO_SECRET_KEY
210
+ mc mb local/my-bucket
211
+ \`\`\`
212
+
213
+ ### Upload a file
214
+ \`\`\`bash
215
+ mc cp /path/to/file.txt local/my-bucket/file.txt
216
+ \`\`\`
217
+
218
+ ### Download a file
219
+ \`\`\`bash
220
+ mc cp local/my-bucket/file.txt /path/to/local/file.txt
221
+ \`\`\`
222
+
223
+ ### List bucket contents
224
+ \`\`\`bash
225
+ mc ls local/my-bucket/
226
+ \`\`\`
227
+
228
+ ## Usage Notes
229
+
230
+ - MinIO is fully S3-compatible—use any S3 SDK or CLI.
231
+ - Access the web console at http://{{MINIO_HOST}}:9001 for a visual file browser.
232
+ - Create separate buckets for different data types (assets, backups, uploads).
233
+ `,
234
+ "browserless-browse": `---
235
+ name: browserless-browse
236
+ description: "Automate browser interactions, scrape web pages, and generate PDFs"
237
+ metadata:
238
+ openclaw:
239
+ emoji: "🌐"
240
+ ---
241
+
242
+ # Browserless Browser Automation
243
+
244
+ Use Browserless for headless Chrome browser automation, web scraping, screenshots, and PDF generation.
245
+
246
+ ## Connection Details
247
+
248
+ - **Host:** \`{{BROWSERLESS_HOST}}\`
249
+ - **Port:** \`{{BROWSERLESS_PORT}}\`
250
+ - **Token:** Uses \`BROWSERLESS_TOKEN\` env var
251
+
252
+ ## Example API Calls
253
+
254
+ ### Take a screenshot
255
+ \`\`\`bash
256
+ curl -X POST "http://{{BROWSERLESS_HOST}}:{{BROWSERLESS_PORT}}/screenshot?token=$BROWSERLESS_TOKEN" \\
257
+ -H "Content-Type: application/json" \\
258
+ -d '{"url": "https://example.com", "options": {"fullPage": true}}' \\
259
+ --output screenshot.png
260
+ \`\`\`
261
+
262
+ ### Generate a PDF
263
+ \`\`\`bash
264
+ curl -X POST "http://{{BROWSERLESS_HOST}}:{{BROWSERLESS_PORT}}/pdf?token=$BROWSERLESS_TOKEN" \\
265
+ -H "Content-Type: application/json" \\
266
+ -d '{"url": "https://example.com"}' \\
267
+ --output page.pdf
268
+ \`\`\`
269
+
270
+ ### Scrape page content
271
+ \`\`\`bash
272
+ curl -X POST "http://{{BROWSERLESS_HOST}}:{{BROWSERLESS_PORT}}/content?token=$BROWSERLESS_TOKEN" \\
273
+ -H "Content-Type: application/json" \\
274
+ -d '{"url": "https://example.com"}'
275
+ \`\`\`
276
+
277
+ ## Usage Notes
278
+
279
+ - Browserless manages a pool of Chrome instances (max concurrent sessions configured via env).
280
+ - Token authentication is required for all API calls.
281
+ - Supports Puppeteer and Playwright WebSocket connections.
282
+ `,
283
+ "searxng-search": `---
284
+ name: searxng-search
285
+ description: "Search the web using a privacy-respecting metasearch engine"
286
+ metadata:
287
+ openclaw:
288
+ emoji: "🔍"
289
+ ---
290
+
291
+ # SearXNG Web Search
292
+
293
+ Use SearXNG as a privacy-respecting metasearch engine to query the web.
294
+
295
+ ## Connection Details
296
+
297
+ - **Host:** \`{{SEARXNG_HOST}}\`
298
+ - **Port:** \`{{SEARXNG_PORT}}\`
299
+
300
+ ## Example API Calls
301
+
302
+ ### Search the web
303
+ \`\`\`bash
304
+ curl "http://{{SEARXNG_HOST}}:{{SEARXNG_PORT}}/search?q=your+search+query&format=json"
305
+ \`\`\`
306
+
307
+ ### Search with category filter
308
+ \`\`\`bash
309
+ curl "http://{{SEARXNG_HOST}}:{{SEARXNG_PORT}}/search?q=openai&categories=it&format=json"
310
+ \`\`\`
311
+
312
+ ### Search with language filter
313
+ \`\`\`bash
314
+ curl "http://{{SEARXNG_HOST}}:{{SEARXNG_PORT}}/search?q=hello&language=en&format=json"
315
+ \`\`\`
316
+
317
+ ## Usage Notes
318
+
319
+ - Always use \`format=json\` for machine-readable results.
320
+ - Available categories: general, images, videos, news, map, music, it, science, files.
321
+ - SearXNG aggregates results from many search engines without tracking.
322
+ `,
323
+ "whisper-transcribe": `---
324
+ name: whisper-transcribe
325
+ description: "Transcribe audio files to text using Faster Whisper"
326
+ metadata:
327
+ openclaw:
328
+ emoji: "🎙️"
329
+ ---
330
+
331
+ # Whisper Transcription
332
+
333
+ Use the Faster Whisper server for speech-to-text transcription.
334
+
335
+ ## Connection Details
336
+
337
+ - **Host:** \`{{WHISPER_HOST}}\`
338
+ - **Port:** \`{{WHISPER_PORT}}\`
339
+
340
+ ## Example API Calls
341
+
342
+ ### Transcribe an audio file
343
+ \`\`\`bash
344
+ curl -X POST "http://{{WHISPER_HOST}}:{{WHISPER_PORT}}/v1/audio/transcriptions" \\
345
+ -F "file=@/path/to/audio.mp3" \\
346
+ -F "model=base"
347
+ \`\`\`
348
+
349
+ ### Transcribe with language hint
350
+ \`\`\`bash
351
+ curl -X POST "http://{{WHISPER_HOST}}:{{WHISPER_PORT}}/v1/audio/transcriptions" \\
352
+ -F "file=@/path/to/audio.wav" \\
353
+ -F "model=base" \\
354
+ -F "language=en"
355
+ \`\`\`
356
+
357
+ ### Get available models
358
+ \`\`\`bash
359
+ curl "http://{{WHISPER_HOST}}:{{WHISPER_PORT}}/v1/models"
360
+ \`\`\`
361
+
362
+ ## Usage Notes
363
+
364
+ - Supports MP3, WAV, FLAC, and other common audio formats.
365
+ - Model sizes: tiny, base, small, medium, large (larger = more accurate but slower).
366
+ - GPU acceleration significantly improves transcription speed.
367
+ `,
368
+ "ollama-local-llm": `---
369
+ name: ollama-local-llm
370
+ description: "Run local language models for text generation, chat, and embeddings"
371
+ metadata:
372
+ openclaw:
373
+ emoji: "🦙"
374
+ ---
375
+
376
+ # Ollama Local LLM
377
+
378
+ Use Ollama to run large language models locally for text generation, chat, and embeddings.
379
+
380
+ ## Connection Details
381
+
382
+ - **Host:** \`{{OLLAMA_HOST}}\`
383
+ - **Port:** \`{{OLLAMA_PORT}}\`
384
+
385
+ ## Example API Calls
386
+
387
+ ### Generate text
388
+ \`\`\`bash
389
+ curl -X POST "http://{{OLLAMA_HOST}}:{{OLLAMA_PORT}}/api/generate" \\
390
+ -H "Content-Type: application/json" \\
391
+ -d '{"model": "llama3.2", "prompt": "Explain quantum computing in simple terms"}'
392
+ \`\`\`
393
+
394
+ ### Chat completion
395
+ \`\`\`bash
396
+ curl -X POST "http://{{OLLAMA_HOST}}:{{OLLAMA_PORT}}/api/chat" \\
397
+ -H "Content-Type: application/json" \\
398
+ -d '{"model": "llama3.2", "messages": [{"role": "user", "content": "Hello!"}]}'
399
+ \`\`\`
400
+
401
+ ### Pull a model
402
+ \`\`\`bash
403
+ curl -X POST "http://{{OLLAMA_HOST}}:{{OLLAMA_PORT}}/api/pull" \\
404
+ -H "Content-Type: application/json" \\
405
+ -d '{"name": "llama3.2"}'
406
+ \`\`\`
407
+
408
+ ### Generate embeddings
409
+ \`\`\`bash
410
+ curl -X POST "http://{{OLLAMA_HOST}}:{{OLLAMA_PORT}}/api/embeddings" \\
411
+ -H "Content-Type: application/json" \\
412
+ -d '{"model": "nomic-embed-text", "prompt": "Hello world"}'
413
+ \`\`\`
414
+
415
+ ## Usage Notes
416
+
417
+ - Pull models before first use (they are cached in the persistent volume).
418
+ - Recommended models: llama3.2 (general), codellama (code), nomic-embed-text (embeddings).
419
+ - GPU passthrough dramatically improves inference speed.
420
+ - The Ollama API is OpenAI-compatible at /v1/ endpoints.
421
+ `,
422
+ "remotion-render": `---
423
+ name: remotion-render
424
+ description: "Create and render videos programmatically using React"
425
+ metadata:
426
+ openclaw:
427
+ emoji: "🎥"
428
+ ---
429
+
430
+ # Remotion Video Rendering
431
+
432
+ Use Remotion Studio to create and render videos programmatically with React.
433
+
434
+ ## Connection Details
435
+
436
+ - **Host:** \`{{REMOTION_HOST}}\`
437
+ - **Port:** \`{{REMOTION_PORT}}\`
438
+
439
+ ## Example Usage
440
+
441
+ ### Access the Studio UI
442
+ Open \`http://{{REMOTION_HOST}}:{{REMOTION_PORT}}\` in your browser to use the Remotion Studio visual editor.
443
+
444
+ ### Render a video via CLI
445
+ \`\`\`bash
446
+ docker exec remotion npx remotion render src/index.tsx MyComposition out/video.mp4
447
+ \`\`\`
448
+
449
+ ### Render with custom props
450
+ \`\`\`bash
451
+ docker exec remotion npx remotion render src/index.tsx MyComposition out/video.mp4 \\
452
+ --props='{"title": "Hello World"}'
453
+ \`\`\`
454
+
455
+ ## Usage Notes
456
+
457
+ - Define video compositions in React components.
458
+ - Remotion supports MP4, WebM, and GIF output formats.
459
+ - Use the Studio UI for previewing before rendering.
460
+ - Combine with FFmpeg for post-processing.
461
+ `,
462
+ "lightpanda-browse": `---
463
+ name: lightpanda-browse
464
+ description: "Browse the web using the ultra-fast LightPanda headless browser via CDP"
465
+ metadata:
466
+ openclaw:
467
+ emoji: "🐼"
468
+ ---
469
+
470
+ # LightPanda Browse
471
+
472
+ LightPanda is an ultra-fast headless browser available via CDP WebSocket at \`ws://{{LIGHTPANDA_HOST}}:{{LIGHTPANDA_PORT}}\`.
473
+
474
+ ## Connect via Puppeteer
475
+
476
+ \`\`\`javascript
477
+ const browser = await puppeteer.connect({
478
+ browserWSEndpoint: "ws://{{LIGHTPANDA_HOST}}:{{LIGHTPANDA_PORT}}"
479
+ });
480
+ const page = await browser.newPage();
481
+ await page.goto('https://example.com');
482
+ const content = await page.evaluate(() => document.body.innerText);
483
+ \`\`\`
484
+
485
+ ## Key Advantages
486
+
487
+ - 9x less memory than Chrome (ideal for parallel scraping)
488
+ - 11x faster page loading
489
+ - Instant startup
490
+ - Full CDP compatibility with Puppeteer and Playwright
491
+ `,
492
+ "steel-browse": `---
493
+ name: steel-browse
494
+ description: "Browse the web using Steel Browser API with session management and anti-detection"
495
+ metadata:
496
+ openclaw:
497
+ emoji: "🔥"
498
+ ---
499
+
500
+ # Steel Browser
501
+
502
+ Steel provides a REST API at \`http://{{STEEL_HOST}}:{{STEEL_PORT}}\` for AI agent web automation.
503
+
504
+ ## Create a Session
505
+
506
+ \`\`\`bash
507
+ curl -X POST http://{{STEEL_HOST}}:{{STEEL_PORT}}/v1/sessions \\
508
+ -H "Content-Type: application/json" \\
509
+ -d '{"blockAds": true}'
510
+ \`\`\`
511
+
512
+ ## Scrape a Page
513
+
514
+ \`\`\`bash
515
+ curl -X POST http://{{STEEL_HOST}}:{{STEEL_PORT}}/v1/scrape \\
516
+ -H "Content-Type: application/json" \\
517
+ -d '{"url": "https://example.com", "format": "markdown"}'
518
+ \`\`\`
519
+
520
+ ## Features
521
+
522
+ - Session management with persistent cookies
523
+ - Anti-detection and stealth plugins
524
+ - Proxy support and IP rotation
525
+ - Auto CAPTCHA solving
526
+ - Puppeteer/Playwright/Selenium compatible
527
+ `
528
+ };
529
+ /**
530
+ * Generates SKILL.md files for each service that has skills defined.
531
+ *
532
+ * Returns a map of file paths (relative to project root) to file contents.
533
+ * Handlebars is used to replace `{{VAR}}` placeholders with actual values
534
+ * from each service's `openclawEnvVars`.
535
+ */
536
+ function generateSkillFiles(resolved) {
537
+ const files = {};
538
+ for (const { definition } of resolved.services) {
539
+ if (definition.skills.length === 0) continue;
540
+ const vars = {};
541
+ for (const envVar of definition.openclawEnvVars) {
542
+ const val = envVar.defaultValue.startsWith("${") ? envVar.defaultValue.slice(2, -1) : envVar.defaultValue;
543
+ vars[envVar.key] = val;
544
+ }
545
+ for (const skill of definition.skills) {
546
+ const template = skillTemplates[skill.skillId];
547
+ if (!template) {
548
+ const generic = generateGenericSkill(skill.skillId, definition.name, definition.icon, definition.description, vars);
549
+ files[`openclaw/workspace/skills/${skill.skillId}/SKILL.md`] = generic;
550
+ continue;
551
+ }
552
+ const rendered = Handlebars.compile(template, { noEscape: true })(vars);
553
+ files[`openclaw/workspace/skills/${skill.skillId}/SKILL.md`] = rendered;
554
+ }
555
+ }
556
+ return files;
557
+ }
558
+ /**
559
+ * Generate a generic SKILL.md for skills that don't have a dedicated template.
560
+ */
561
+ function generateGenericSkill(skillId, serviceName, icon, description, vars) {
562
+ return `---
563
+ name: ${skillId}
564
+ description: "${description}"
565
+ metadata:
566
+ openclaw:
567
+ emoji: "${icon}"
568
+ ---
569
+
570
+ # ${skillId.split("-").map((w) => w.charAt(0).toUpperCase() + w.slice(1)).join(" ")}
571
+
572
+ Interact with ${serviceName} through this skill.
573
+
574
+ ## Connection Details
575
+
576
+ ${Object.entries(vars).map(([key, value]) => `- **${key}:** \`${value}\``).join("\n") || "No specific connection variables configured."}
577
+
578
+ ## Usage Notes
579
+
580
+ - This skill provides OpenClaw access to ${serviceName}.
581
+ - Refer to the service documentation for available API endpoints.
582
+ `;
583
+ }
584
+
585
+ //#endregion
586
+ export { generateSkillFiles as t };
587
+ //# sourceMappingURL=skills-DWG72Y3X.mjs.map