@better-openclaw/core 1.0.23 → 1.0.25

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 (335) hide show
  1. package/dist/addon-stack.cjs +673 -0
  2. package/dist/addon-stack.cjs.map +1 -0
  3. package/dist/addon-stack.d.cts +23 -0
  4. package/dist/addon-stack.d.cts.map +1 -0
  5. package/dist/addon-stack.d.mts +23 -0
  6. package/dist/addon-stack.d.mts.map +1 -0
  7. package/dist/addon-stack.mjs +671 -0
  8. package/dist/addon-stack.mjs.map +1 -0
  9. package/dist/addon-stack.test.cjs +349 -0
  10. package/dist/addon-stack.test.cjs.map +1 -0
  11. package/dist/addon-stack.test.d.cts +1 -0
  12. package/dist/addon-stack.test.d.mts +1 -0
  13. package/dist/addon-stack.test.mjs +349 -0
  14. package/dist/addon-stack.test.mjs.map +1 -0
  15. package/dist/bare-metal-partition.test.cjs +20 -21
  16. package/dist/bare-metal-partition.test.cjs.map +1 -1
  17. package/dist/bare-metal-partition.test.mjs +4 -5
  18. package/dist/bare-metal-partition.test.mjs.map +1 -1
  19. package/dist/composer.cjs +17 -1
  20. package/dist/composer.cjs.map +1 -1
  21. package/dist/composer.d.cts +24 -1
  22. package/dist/composer.d.cts.map +1 -1
  23. package/dist/composer.d.mts +24 -1
  24. package/dist/composer.d.mts.map +1 -1
  25. package/dist/composer.mjs +14 -2
  26. package/dist/composer.mjs.map +1 -1
  27. package/dist/composer.snapshot.test.cjs +20 -20
  28. package/dist/composer.snapshot.test.cjs.map +1 -1
  29. package/dist/composer.snapshot.test.mjs +2 -2
  30. package/dist/composer.test.cjs +53 -52
  31. package/dist/composer.test.cjs.map +1 -1
  32. package/dist/composer.test.mjs +4 -3
  33. package/dist/composer.test.mjs.map +1 -1
  34. package/dist/deployers/strip-host-ports.test.cjs +26 -26
  35. package/dist/deployers/strip-host-ports.test.cjs.map +1 -1
  36. package/dist/deployers/strip-host-ports.test.mjs +1 -1
  37. package/dist/generate.cjs +8 -4
  38. package/dist/generate.cjs.map +1 -1
  39. package/dist/generate.d.cts.map +1 -1
  40. package/dist/generate.d.mts.map +1 -1
  41. package/dist/generate.mjs +9 -5
  42. package/dist/generate.mjs.map +1 -1
  43. package/dist/generate.test.cjs +55 -55
  44. package/dist/generate.test.cjs.map +1 -1
  45. package/dist/generate.test.mjs +2 -2
  46. package/dist/generate.test.mjs.map +1 -1
  47. package/dist/generators/bare-metal-install.test.cjs +18 -18
  48. package/dist/generators/bare-metal-install.test.cjs.map +1 -1
  49. package/dist/generators/bare-metal-install.test.mjs +1 -1
  50. package/dist/generators/caddy.test.cjs +13 -13
  51. package/dist/generators/caddy.test.cjs.map +1 -1
  52. package/dist/generators/caddy.test.mjs +1 -1
  53. package/dist/generators/clone-repos.cjs +140 -0
  54. package/dist/generators/clone-repos.cjs.map +1 -0
  55. package/dist/generators/clone-repos.d.cts +11 -0
  56. package/dist/generators/clone-repos.d.cts.map +1 -0
  57. package/dist/generators/clone-repos.d.mts +11 -0
  58. package/dist/generators/clone-repos.d.mts.map +1 -0
  59. package/dist/generators/clone-repos.mjs +139 -0
  60. package/dist/generators/clone-repos.mjs.map +1 -0
  61. package/dist/generators/clone-repos.test.cjs +140 -0
  62. package/dist/generators/clone-repos.test.cjs.map +1 -0
  63. package/dist/generators/clone-repos.test.d.cts +1 -0
  64. package/dist/generators/clone-repos.test.d.mts +1 -0
  65. package/dist/generators/clone-repos.test.mjs +141 -0
  66. package/dist/generators/clone-repos.test.mjs.map +1 -0
  67. package/dist/generators/env.test.cjs +17 -17
  68. package/dist/generators/env.test.cjs.map +1 -1
  69. package/dist/generators/env.test.mjs +1 -1
  70. package/dist/generators/health-check.test.cjs +39 -39
  71. package/dist/generators/health-check.test.cjs.map +1 -1
  72. package/dist/generators/health-check.test.mjs +1 -1
  73. package/dist/generators/postgres-init.cjs +20 -0
  74. package/dist/generators/postgres-init.cjs.map +1 -1
  75. package/dist/generators/postgres-init.d.cts.map +1 -1
  76. package/dist/generators/postgres-init.d.mts.map +1 -1
  77. package/dist/generators/postgres-init.mjs +20 -0
  78. package/dist/generators/postgres-init.mjs.map +1 -1
  79. package/dist/generators/scripts.cjs +332 -3
  80. package/dist/generators/scripts.cjs.map +1 -1
  81. package/dist/generators/scripts.d.cts +3 -1
  82. package/dist/generators/scripts.d.cts.map +1 -1
  83. package/dist/generators/scripts.d.mts +3 -1
  84. package/dist/generators/scripts.d.mts.map +1 -1
  85. package/dist/generators/scripts.mjs +332 -3
  86. package/dist/generators/scripts.mjs.map +1 -1
  87. package/dist/generators/scripts.test.cjs +57 -23
  88. package/dist/generators/scripts.test.cjs.map +1 -1
  89. package/dist/generators/scripts.test.mjs +39 -5
  90. package/dist/generators/scripts.test.mjs.map +1 -1
  91. package/dist/generators/stack-manifest.cjs +1 -0
  92. package/dist/generators/stack-manifest.cjs.map +1 -1
  93. package/dist/generators/stack-manifest.d.cts +3 -2
  94. package/dist/generators/stack-manifest.d.cts.map +1 -1
  95. package/dist/generators/stack-manifest.d.mts +3 -2
  96. package/dist/generators/stack-manifest.d.mts.map +1 -1
  97. package/dist/generators/stack-manifest.mjs +1 -0
  98. package/dist/generators/stack-manifest.mjs.map +1 -1
  99. package/dist/generators/traefik.test.cjs +32 -32
  100. package/dist/generators/traefik.test.cjs.map +1 -1
  101. package/dist/generators/traefik.test.mjs +1 -1
  102. package/dist/index.cjs +28 -5
  103. package/dist/index.d.cts +7 -4
  104. package/dist/index.d.mts +7 -4
  105. package/dist/index.mjs +10 -7
  106. package/dist/migrations.test.cjs +16 -16
  107. package/dist/migrations.test.cjs.map +1 -1
  108. package/dist/migrations.test.mjs +1 -1
  109. package/dist/presets/registry.cjs.map +1 -1
  110. package/dist/presets/registry.d.cts.map +1 -1
  111. package/dist/presets/registry.d.mts.map +1 -1
  112. package/dist/presets/registry.mjs.map +1 -1
  113. package/dist/presets/registry.test.cjs +14 -14
  114. package/dist/presets/registry.test.cjs.map +1 -1
  115. package/dist/presets/registry.test.mjs +1 -1
  116. package/dist/resolver.cjs +8 -0
  117. package/dist/resolver.cjs.map +1 -1
  118. package/dist/resolver.mjs +9 -1
  119. package/dist/resolver.mjs.map +1 -1
  120. package/dist/resolver.test.cjs +125 -90
  121. package/dist/resolver.test.cjs.map +1 -1
  122. package/dist/resolver.test.mjs +47 -12
  123. package/dist/resolver.test.mjs.map +1 -1
  124. package/dist/{schema-B4c64P8N.d.cts → schema-CKBRu-Rt.d.cts} +355 -8
  125. package/dist/schema-CKBRu-Rt.d.cts.map +1 -0
  126. package/dist/{schema-CXNhYci1.d.mts → schema-Dn-_Jpb6.d.mts} +355 -8
  127. package/dist/schema-Dn-_Jpb6.d.mts.map +1 -0
  128. package/dist/schema.cjs +160 -5
  129. package/dist/schema.cjs.map +1 -1
  130. package/dist/schema.d.cts +2 -2
  131. package/dist/schema.d.mts +2 -2
  132. package/dist/schema.mjs +150 -6
  133. package/dist/schema.mjs.map +1 -1
  134. package/dist/schema.test.cjs +86 -86
  135. package/dist/schema.test.cjs.map +1 -1
  136. package/dist/schema.test.mjs +1 -1
  137. package/dist/services/definitions/apptension-saas.cjs +87 -0
  138. package/dist/services/definitions/apptension-saas.cjs.map +1 -0
  139. package/dist/services/definitions/apptension-saas.d.cts +7 -0
  140. package/dist/services/definitions/apptension-saas.d.cts.map +1 -0
  141. package/dist/services/definitions/apptension-saas.d.mts +7 -0
  142. package/dist/services/definitions/apptension-saas.d.mts.map +1 -0
  143. package/dist/services/definitions/apptension-saas.mjs +86 -0
  144. package/dist/services/definitions/apptension-saas.mjs.map +1 -0
  145. package/dist/services/definitions/boxyhq-saas.cjs +88 -0
  146. package/dist/services/definitions/boxyhq-saas.cjs.map +1 -0
  147. package/dist/services/definitions/boxyhq-saas.d.cts +7 -0
  148. package/dist/services/definitions/boxyhq-saas.d.cts.map +1 -0
  149. package/dist/services/definitions/boxyhq-saas.d.mts +7 -0
  150. package/dist/services/definitions/boxyhq-saas.d.mts.map +1 -0
  151. package/dist/services/definitions/boxyhq-saas.mjs +87 -0
  152. package/dist/services/definitions/boxyhq-saas.mjs.map +1 -0
  153. package/dist/services/definitions/browserless.cjs +4 -1
  154. package/dist/services/definitions/browserless.cjs.map +1 -1
  155. package/dist/services/definitions/browserless.mjs +4 -1
  156. package/dist/services/definitions/browserless.mjs.map +1 -1
  157. package/dist/services/definitions/cmsaas-starter.cjs +86 -0
  158. package/dist/services/definitions/cmsaas-starter.cjs.map +1 -0
  159. package/dist/services/definitions/cmsaas-starter.d.cts +7 -0
  160. package/dist/services/definitions/cmsaas-starter.d.cts.map +1 -0
  161. package/dist/services/definitions/cmsaas-starter.d.mts +7 -0
  162. package/dist/services/definitions/cmsaas-starter.d.mts.map +1 -0
  163. package/dist/services/definitions/cmsaas-starter.mjs +85 -0
  164. package/dist/services/definitions/cmsaas-starter.mjs.map +1 -0
  165. package/dist/services/definitions/convex.cjs +43 -1
  166. package/dist/services/definitions/convex.cjs.map +1 -1
  167. package/dist/services/definitions/convex.mjs +43 -1
  168. package/dist/services/definitions/convex.mjs.map +1 -1
  169. package/dist/services/definitions/grafana.cjs +11 -1
  170. package/dist/services/definitions/grafana.cjs.map +1 -1
  171. package/dist/services/definitions/grafana.mjs +11 -1
  172. package/dist/services/definitions/grafana.mjs.map +1 -1
  173. package/dist/services/definitions/index.cjs +51 -36
  174. package/dist/services/definitions/index.cjs.map +1 -1
  175. package/dist/services/definitions/index.d.cts +30 -25
  176. package/dist/services/definitions/index.d.cts.map +1 -1
  177. package/dist/services/definitions/index.d.mts +30 -25
  178. package/dist/services/definitions/index.d.mts.map +1 -1
  179. package/dist/services/definitions/index.mjs +47 -37
  180. package/dist/services/definitions/index.mjs.map +1 -1
  181. package/dist/services/definitions/ixartz-saas.cjs +88 -0
  182. package/dist/services/definitions/ixartz-saas.cjs.map +1 -0
  183. package/dist/services/definitions/ixartz-saas.d.cts +7 -0
  184. package/dist/services/definitions/ixartz-saas.d.cts.map +1 -0
  185. package/dist/services/definitions/ixartz-saas.d.mts +7 -0
  186. package/dist/services/definitions/ixartz-saas.d.mts.map +1 -0
  187. package/dist/services/definitions/ixartz-saas.mjs +87 -0
  188. package/dist/services/definitions/ixartz-saas.mjs.map +1 -0
  189. package/dist/services/definitions/meilisearch.cjs +11 -1
  190. package/dist/services/definitions/meilisearch.cjs.map +1 -1
  191. package/dist/services/definitions/meilisearch.mjs +11 -1
  192. package/dist/services/definitions/meilisearch.mjs.map +1 -1
  193. package/dist/services/definitions/minio.cjs +3 -1
  194. package/dist/services/definitions/minio.cjs.map +1 -1
  195. package/dist/services/definitions/minio.mjs +3 -1
  196. package/dist/services/definitions/minio.mjs.map +1 -1
  197. package/dist/services/definitions/mission-control.cjs +16 -2
  198. package/dist/services/definitions/mission-control.cjs.map +1 -1
  199. package/dist/services/definitions/mission-control.mjs +16 -2
  200. package/dist/services/definitions/mission-control.mjs.map +1 -1
  201. package/dist/services/definitions/n8n.cjs +11 -1
  202. package/dist/services/definitions/n8n.cjs.map +1 -1
  203. package/dist/services/definitions/n8n.mjs +11 -1
  204. package/dist/services/definitions/n8n.mjs.map +1 -1
  205. package/dist/services/definitions/ollama.cjs +3 -1
  206. package/dist/services/definitions/ollama.cjs.map +1 -1
  207. package/dist/services/definitions/ollama.mjs +3 -1
  208. package/dist/services/definitions/ollama.mjs.map +1 -1
  209. package/dist/services/definitions/open-saas.cjs +81 -0
  210. package/dist/services/definitions/open-saas.cjs.map +1 -0
  211. package/dist/services/definitions/open-saas.d.cts +7 -0
  212. package/dist/services/definitions/open-saas.d.cts.map +1 -0
  213. package/dist/services/definitions/open-saas.d.mts +7 -0
  214. package/dist/services/definitions/open-saas.d.mts.map +1 -0
  215. package/dist/services/definitions/open-saas.mjs +80 -0
  216. package/dist/services/definitions/open-saas.mjs.map +1 -0
  217. package/dist/services/definitions/qdrant.cjs +3 -1
  218. package/dist/services/definitions/qdrant.cjs.map +1 -1
  219. package/dist/services/definitions/qdrant.mjs +3 -1
  220. package/dist/services/definitions/qdrant.mjs.map +1 -1
  221. package/dist/services/definitions/searxng.cjs +8 -1
  222. package/dist/services/definitions/searxng.cjs.map +1 -1
  223. package/dist/services/definitions/searxng.mjs +8 -1
  224. package/dist/services/definitions/searxng.mjs.map +1 -1
  225. package/dist/services/definitions/uptime-kuma.cjs +8 -1
  226. package/dist/services/definitions/uptime-kuma.cjs.map +1 -1
  227. package/dist/services/definitions/uptime-kuma.mjs +8 -1
  228. package/dist/services/definitions/uptime-kuma.mjs.map +1 -1
  229. package/dist/services/registry.cjs +3 -0
  230. package/dist/services/registry.cjs.map +1 -1
  231. package/dist/services/registry.d.cts.map +1 -1
  232. package/dist/services/registry.d.mts.map +1 -1
  233. package/dist/services/registry.mjs +3 -0
  234. package/dist/services/registry.mjs.map +1 -1
  235. package/dist/services/registry.test.cjs +40 -33
  236. package/dist/services/registry.test.cjs.map +1 -1
  237. package/dist/services/registry.test.mjs +8 -1
  238. package/dist/services/registry.test.mjs.map +1 -1
  239. package/dist/{skill-manifest-BVUXU0__.mjs → skill-manifest-6XhrhWsG.mjs} +49 -1
  240. package/dist/{skill-manifest--IgY9REK.cjs.map → skill-manifest-6XhrhWsG.mjs.map} +1 -1
  241. package/dist/{skill-manifest--IgY9REK.cjs → skill-manifest-B8znSsym.cjs} +49 -1
  242. package/dist/{skill-manifest-BVUXU0__.mjs.map → skill-manifest-B8znSsym.cjs.map} +1 -1
  243. package/dist/skills/registry.cjs +3 -3
  244. package/dist/skills/registry.cjs.map +1 -1
  245. package/dist/skills/registry.mjs +3 -3
  246. package/dist/skills/registry.mjs.map +1 -1
  247. package/dist/skills/skill-manifest.cjs +1 -1
  248. package/dist/skills/skill-manifest.mjs +1 -1
  249. package/dist/{vi.2VT5v0um-DvC3SVNc.mjs → test.CTcmp4Su-ClCHJ3FA.mjs} +6793 -6403
  250. package/dist/test.CTcmp4Su-ClCHJ3FA.mjs.map +1 -0
  251. package/dist/{vi.2VT5v0um-CRqXre87.cjs → test.CTcmp4Su-DlzTarwH.cjs} +6793 -6403
  252. package/dist/test.CTcmp4Su-DlzTarwH.cjs.map +1 -0
  253. package/dist/track-analytics.cjs +50 -0
  254. package/dist/track-analytics.cjs.map +1 -0
  255. package/dist/track-analytics.d.cts +34 -0
  256. package/dist/track-analytics.d.cts.map +1 -0
  257. package/dist/track-analytics.d.mts +34 -0
  258. package/dist/track-analytics.d.mts.map +1 -0
  259. package/dist/track-analytics.mjs +48 -0
  260. package/dist/track-analytics.mjs.map +1 -0
  261. package/dist/track-analytics.test.cjs +91 -0
  262. package/dist/track-analytics.test.cjs.map +1 -0
  263. package/dist/track-analytics.test.d.cts +1 -0
  264. package/dist/track-analytics.test.d.mts +1 -0
  265. package/dist/track-analytics.test.mjs +92 -0
  266. package/dist/track-analytics.test.mjs.map +1 -0
  267. package/dist/types.cjs +7 -0
  268. package/dist/types.cjs.map +1 -1
  269. package/dist/types.d.cts +12 -2
  270. package/dist/types.d.cts.map +1 -1
  271. package/dist/types.d.mts +12 -2
  272. package/dist/types.d.mts.map +1 -1
  273. package/dist/types.mjs +7 -0
  274. package/dist/types.mjs.map +1 -1
  275. package/dist/validator.test.cjs +15 -15
  276. package/dist/validator.test.cjs.map +1 -1
  277. package/dist/validator.test.mjs +2 -2
  278. package/dist/version-manager.cjs +1 -1
  279. package/dist/version-manager.cjs.map +1 -1
  280. package/dist/version-manager.mjs +1 -1
  281. package/dist/version-manager.mjs.map +1 -1
  282. package/dist/version-manager.test.cjs +40 -38
  283. package/dist/version-manager.test.cjs.map +1 -1
  284. package/dist/version-manager.test.mjs +7 -5
  285. package/dist/version-manager.test.mjs.map +1 -1
  286. package/package.json +4 -4
  287. package/src/__snapshots__/composer.snapshot.test.ts.snap +160 -0
  288. package/src/addon-stack.test.ts +490 -0
  289. package/src/addon-stack.ts +998 -0
  290. package/src/bare-metal-partition.test.ts +4 -3
  291. package/src/composer.test.ts +4 -2
  292. package/src/composer.ts +24 -5
  293. package/src/generate.test.ts +2 -1
  294. package/src/generate.ts +10 -1
  295. package/src/generators/clone-repos.test.ts +154 -0
  296. package/src/generators/clone-repos.ts +159 -0
  297. package/src/generators/postgres-init.ts +17 -0
  298. package/src/generators/scripts.test.ts +52 -4
  299. package/src/generators/scripts.ts +351 -3
  300. package/src/generators/stack-manifest.ts +4 -2
  301. package/src/index.ts +28 -2
  302. package/src/presets/registry.ts +241 -329
  303. package/src/resolver.test.ts +53 -15
  304. package/src/resolver.ts +13 -1
  305. package/src/schema.ts +216 -4
  306. package/src/services/definitions/apptension-saas.ts +84 -0
  307. package/src/services/definitions/boxyhq-saas.ts +84 -0
  308. package/src/services/definitions/browserless.ts +3 -0
  309. package/src/services/definitions/cmsaas-starter.ts +84 -0
  310. package/src/services/definitions/convex.ts +31 -0
  311. package/src/services/definitions/grafana.ts +9 -0
  312. package/src/services/definitions/index.ts +90 -70
  313. package/src/services/definitions/ixartz-saas.ts +84 -0
  314. package/src/services/definitions/meilisearch.ts +9 -0
  315. package/src/services/definitions/minio.ts +2 -0
  316. package/src/services/definitions/mission-control.ts +19 -2
  317. package/src/services/definitions/n8n.ts +9 -0
  318. package/src/services/definitions/ollama.ts +2 -0
  319. package/src/services/definitions/open-saas.ts +79 -0
  320. package/src/services/definitions/qdrant.ts +2 -0
  321. package/src/services/definitions/searxng.ts +3 -0
  322. package/src/services/definitions/uptime-kuma.ts +3 -0
  323. package/src/services/registry.test.ts +8 -0
  324. package/src/services/registry.ts +7 -0
  325. package/src/skills/manifest.json +64 -0
  326. package/src/skills/registry.ts +3 -3
  327. package/src/track-analytics.test.ts +82 -0
  328. package/src/track-analytics.ts +76 -0
  329. package/src/types.ts +29 -0
  330. package/src/version-manager.test.ts +10 -5
  331. package/src/version-manager.ts +1 -1
  332. package/dist/schema-B4c64P8N.d.cts.map +0 -1
  333. package/dist/schema-CXNhYci1.d.mts.map +0 -1
  334. package/dist/vi.2VT5v0um-CRqXre87.cjs.map +0 -1
  335. package/dist/vi.2VT5v0um-DvC3SVNc.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"mission-control.mjs","names":[],"sources":["../../../src/services/definitions/mission-control.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const missionControlDefinition: ServiceDefinition = {\n\tid: \"mission-control\",\n\tname: \"Mission Control\",\n\tdescription:\n\t\t\"Real-time agent oversight dashboard for OpenClaw. Kanban task board, live activity feed, document browser, and message threads — powered by Convex.\",\n\tcategory: \"dev-tools\",\n\ticon: \"🛸\",\n\n\timage: \"ghcr.io/bidewio/mission-control\",\n\timageTag: \"latest\",\n\tports: [\n\t\t{\n\t\t\thost: 3660,\n\t\t\tcontainer: 3660,\n\t\t\tdescription: \"Mission Control Web UI\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"VITE_CONVEX_URL\",\n\t\t\tdefaultValue: \"http://127.0.0.1:3210\",\n\t\t\tsecret: false,\n\t\t\tdescription:\n\t\t\t\t\"Convex backend URL as seen from the browser (build-time, embedded in JS bundle)\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"CONVEX_SELF_HOSTED_URL\",\n\t\t\tdefaultValue: \"http://convex:3210\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Internal Docker URL for pushing Convex functions during build\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"CONVEX_SELF_HOSTED_ADMIN_KEY\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription:\n\t\t\t\t\"Admin key for the self-hosted Convex backend. Generate with: docker compose exec convex ./generate_admin_key.sh\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\tdependsOn: [\"convex\"],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [],\n\topenclawEnvVars: [],\n\n\tdocsUrl: \"https://github.com/bidewio/better-openclaw/tree/main/packages/mission-control\",\n\tselfHostedDocsUrl:\n\t\t\"https://github.com/bidewio/better-openclaw/tree/main/packages/mission-control\",\n\ttags: [\"openclaw\", \"dashboard\", \"monitoring\", \"agents\", \"analytics\", \"convex\"],\n\tmaturity: \"stable\",\n\n\trequires: [\"convex\"],\n\trecommends: [\"convex-dashboard\"],\n\tconflictsWith: [],\n\tmandatory: true,\n\tremovalWarning:\n\t\t\"Mission Control is the primary dashboard for monitoring your OpenClaw agents. Removing it will eliminate real-time agent oversight, task management, and activity tracking.\",\n\n\tminMemoryMB: 128,\n\tgpuRequired: false,\n};\n"],"mappings":";AAEA,MAAa,2BAA8C;CAC1D,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,EAAE;CACX,aAAa;EACZ;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aACC;GACD,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aACC;GACD,UAAU;GACV;EACD;CACD,WAAW,CAAC,SAAS;CACrB,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,EAAE;CACV,iBAAiB,EAAE;CAEnB,SAAS;CACT,mBACC;CACD,MAAM;EAAC;EAAY;EAAa;EAAc;EAAU;EAAa;EAAS;CAC9E,UAAU;CAEV,UAAU,CAAC,SAAS;CACpB,YAAY,CAAC,mBAAmB;CAChC,eAAe,EAAE;CACjB,WAAW;CACX,gBACC;CAED,aAAa;CACb,aAAa;CACb"}
1
+ {"version":3,"file":"mission-control.mjs","names":[],"sources":["../../../src/services/definitions/mission-control.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const missionControlDefinition: ServiceDefinition = {\n\tid: \"mission-control\",\n\tname: \"Mission Control\",\n\tdescription:\n\t\t\"Real-time agent oversight dashboard for OpenClaw. Kanban task board, live activity feed, document browser, and message threads — powered by Convex.\",\n\tcategory: \"dev-tools\",\n\ticon: \"🛸\",\n\n\t// Pre-built image available at ghcr.io/bidewio/mission-control:latest\n\t// but gitSource is preferred so users always get the latest source\n\tgitSource: {\n\t\trepoUrl: \"https://github.com/bidewio/better-openclaw-mission-control.git\",\n\t\tbranch: \"main\",\n\t\tpostCloneCommands: [],\n\t},\n\tbuildContext: {\n\t\tdockerfile: \"Dockerfile\",\n\t\tcontext: \".\",\n\t},\n\n\tports: [\n\t\t{\n\t\t\thost: 3660,\n\t\t\tcontainer: 3660,\n\t\t\tdescription: \"Mission Control Web UI\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"VITE_CONVEX_URL\",\n\t\t\tdefaultValue: \"http://127.0.0.1:3210\",\n\t\t\tsecret: false,\n\t\t\tdescription:\n\t\t\t\t\"Convex backend URL as seen from the browser (build-time, embedded in JS bundle)\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"CONVEX_SELF_HOSTED_URL\",\n\t\t\tdefaultValue: \"http://convex:3210\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Internal Docker URL for pushing Convex functions during build\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"CONVEX_SELF_HOSTED_ADMIN_KEY\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription:\n\t\t\t\t\"Admin key for the self-hosted Convex backend. Generate with: docker compose exec convex ./generate_admin_key.sh\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\thealthcheck: {\n\t\ttest: \"wget -q --spider http://localhost:3660/ || exit 1\",\n\t\tinterval: \"10s\",\n\t\ttimeout: \"5s\",\n\t\tretries: 3,\n\t\tstartPeriod: \"15s\",\n\t},\n\tdependsOn: [\"convex\"],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [],\n\topenclawEnvVars: [],\n\n\tdocsUrl: \"https://github.com/bidewio/better-openclaw/tree/main/packages/mission-control\",\n\tselfHostedDocsUrl:\n\t\t\"https://github.com/bidewio/better-openclaw/tree/main/packages/mission-control\",\n\ttags: [\"openclaw\", \"dashboard\", \"monitoring\", \"agents\", \"analytics\", \"convex\"],\n\tmaturity: \"stable\",\n\n\trequires: [\"convex\"],\n\trecommends: [\"convex-dashboard\"],\n\tconflictsWith: [],\n\tmandatory: true,\n\tremovalWarning:\n\t\t\"Mission Control is the primary dashboard for monitoring your OpenClaw agents. Removing it will eliminate real-time agent oversight, task management, and activity tracking.\",\n\n\tminMemoryMB: 128,\n\tgpuRequired: false,\n};\n"],"mappings":";AAEA,MAAa,2BAA8C;CAC1D,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAIN,WAAW;EACV,SAAS;EACT,QAAQ;EACR,mBAAmB,EAAE;EACrB;CACD,cAAc;EACb,YAAY;EACZ,SAAS;EACT;CAED,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,EAAE;CACX,aAAa;EACZ;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aACC;GACD,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aACC;GACD,UAAU;GACV;EACD;CACD,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,CAAC,SAAS;CACrB,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,EAAE;CACV,iBAAiB,EAAE;CAEnB,SAAS;CACT,mBACC;CACD,MAAM;EAAC;EAAY;EAAa;EAAc;EAAU;EAAa;EAAS;CAC9E,UAAU;CAEV,UAAU,CAAC,SAAS;CACpB,YAAY,CAAC,mBAAmB;CAChC,eAAe,EAAE;CACjB,WAAW;CACX,gBACC;CAED,aAAa;CACb,aAAa;CACb"}
@@ -147,7 +147,17 @@ const n8nDefinition = {
147
147
  recommends: ["redis"],
148
148
  conflictsWith: [],
149
149
  minMemoryMB: 512,
150
- gpuRequired: false
150
+ gpuRequired: false,
151
+ capDropCompatible: true,
152
+ proxyPath: "/n8n",
153
+ envQuirks: [{
154
+ key: "DB_POSTGRESDB_PASSWORD",
155
+ issue: "must_sync",
156
+ fix: {
157
+ type: "sync_with",
158
+ syncKey: "N8N_DB_PASSWORD"
159
+ }
160
+ }]
151
161
  };
152
162
  //#endregion
153
163
  exports.n8nDefinition = n8nDefinition;
@@ -1 +1 @@
1
- {"version":3,"file":"n8n.cjs","names":[],"sources":["../../../src/services/definitions/n8n.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const n8nDefinition: ServiceDefinition = {\n\tid: \"n8n\",\n\tname: \"n8n\",\n\tdescription:\n\t\t\"Workflow automation platform for connecting services, building integrations, and automating tasks with a visual node-based editor.\",\n\tcategory: \"automation\",\n\ticon: \"🔄\",\n\n\timage: \"docker.n8n.io/n8nio/n8n\",\n\timageTag: \"1.123.21\",\n\tports: [\n\t\t{\n\t\t\thost: 5678,\n\t\t\tcontainer: 5678,\n\t\t\tdescription: \"n8n web interface and API\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"n8n-data\",\n\t\t\tcontainerPath: \"/home/node/.n8n\",\n\t\t\tdescription: \"Persistent n8n data and workflows\",\n\t\t},\n\t],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"N8N_BASIC_AUTH_ACTIVE\",\n\t\t\tdefaultValue: \"true\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Enable basic authentication for n8n\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"N8N_BASIC_AUTH_USER\",\n\t\t\tdefaultValue: \"admin\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Basic auth username for n8n\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"N8N_BASIC_AUTH_PASSWORD\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Basic auth password for n8n\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"DB_TYPE\",\n\t\t\tdefaultValue: \"postgresdb\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Database type for n8n persistence\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"DB_POSTGRESDB_HOST\",\n\t\t\tdefaultValue: \"postgresql\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"PostgreSQL hostname\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"DB_POSTGRESDB_PORT\",\n\t\t\tdefaultValue: \"5432\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"PostgreSQL port\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"DB_POSTGRESDB_DATABASE\",\n\t\t\tdefaultValue: \"n8n\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"PostgreSQL database name for n8n\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"DB_POSTGRESDB_USER\",\n\t\t\tdefaultValue: \"n8n\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"PostgreSQL user for n8n\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"DB_POSTGRESDB_PASSWORD\",\n\t\t\tdefaultValue: \"${N8N_DB_PASSWORD}\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"PostgreSQL password for n8n (references Postgres password)\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"N8N_PORT\",\n\t\t\tdefaultValue: \"5678\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Port n8n listens on\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"WEBHOOK_URL\",\n\t\t\tdefaultValue: \"http://n8n:5678/\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Base URL for n8n webhooks\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\thealthcheck: {\n\t\ttest: \"wget -q --spider http://localhost:5678/healthz || exit 1\",\n\t\tinterval: \"30s\",\n\t\ttimeout: \"10s\",\n\t\tretries: 3,\n\t\tstartPeriod: \"30s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [{ skillId: \"n8n-trigger\", autoInstall: true }],\n\topenclawEnvVars: [\n\t\t{\n\t\t\tkey: \"N8N_HOST\",\n\t\t\tdefaultValue: \"n8n\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"n8n hostname for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"N8N_PORT\",\n\t\t\tdefaultValue: \"5678\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"n8n port for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"N8N_WEBHOOK_URL\",\n\t\t\tdefaultValue: \"http://n8n:5678/\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"n8n webhook URL for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\n\tdocsUrl: \"https://docs.n8n.io/\",\n\ttags: [\"workflow\", \"automation\", \"webhook\", \"integration\"],\n\tmaturity: \"stable\",\n\n\trequires: [\"postgresql\"],\n\trecommends: [\"redis\"],\n\tconflictsWith: [],\n\n\tminMemoryMB: 512,\n\tgpuRequired: false,\n};\n"],"mappings":";;AAEA,MAAa,gBAAmC;CAC/C,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,aAAa;EACZ;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;CACD,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,CAAC;EAAE,SAAS;EAAe,aAAa;EAAM,CAAC;CACvD,iBAAiB;EAChB;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;CAED,SAAS;CACT,MAAM;EAAC;EAAY;EAAc;EAAW;EAAc;CAC1D,UAAU;CAEV,UAAU,CAAC,aAAa;CACxB,YAAY,CAAC,QAAQ;CACrB,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb"}
1
+ {"version":3,"file":"n8n.cjs","names":[],"sources":["../../../src/services/definitions/n8n.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const n8nDefinition: ServiceDefinition = {\n\tid: \"n8n\",\n\tname: \"n8n\",\n\tdescription:\n\t\t\"Workflow automation platform for connecting services, building integrations, and automating tasks with a visual node-based editor.\",\n\tcategory: \"automation\",\n\ticon: \"🔄\",\n\n\timage: \"docker.n8n.io/n8nio/n8n\",\n\timageTag: \"1.123.21\",\n\tports: [\n\t\t{\n\t\t\thost: 5678,\n\t\t\tcontainer: 5678,\n\t\t\tdescription: \"n8n web interface and API\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"n8n-data\",\n\t\t\tcontainerPath: \"/home/node/.n8n\",\n\t\t\tdescription: \"Persistent n8n data and workflows\",\n\t\t},\n\t],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"N8N_BASIC_AUTH_ACTIVE\",\n\t\t\tdefaultValue: \"true\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Enable basic authentication for n8n\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"N8N_BASIC_AUTH_USER\",\n\t\t\tdefaultValue: \"admin\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Basic auth username for n8n\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"N8N_BASIC_AUTH_PASSWORD\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Basic auth password for n8n\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"DB_TYPE\",\n\t\t\tdefaultValue: \"postgresdb\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Database type for n8n persistence\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"DB_POSTGRESDB_HOST\",\n\t\t\tdefaultValue: \"postgresql\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"PostgreSQL hostname\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"DB_POSTGRESDB_PORT\",\n\t\t\tdefaultValue: \"5432\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"PostgreSQL port\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"DB_POSTGRESDB_DATABASE\",\n\t\t\tdefaultValue: \"n8n\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"PostgreSQL database name for n8n\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"DB_POSTGRESDB_USER\",\n\t\t\tdefaultValue: \"n8n\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"PostgreSQL user for n8n\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"DB_POSTGRESDB_PASSWORD\",\n\t\t\tdefaultValue: \"${N8N_DB_PASSWORD}\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"PostgreSQL password for n8n (references Postgres password)\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"N8N_PORT\",\n\t\t\tdefaultValue: \"5678\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Port n8n listens on\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"WEBHOOK_URL\",\n\t\t\tdefaultValue: \"http://n8n:5678/\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Base URL for n8n webhooks\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\thealthcheck: {\n\t\ttest: \"wget -q --spider http://localhost:5678/healthz || exit 1\",\n\t\tinterval: \"30s\",\n\t\ttimeout: \"10s\",\n\t\tretries: 3,\n\t\tstartPeriod: \"30s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [{ skillId: \"n8n-trigger\", autoInstall: true }],\n\topenclawEnvVars: [\n\t\t{\n\t\t\tkey: \"N8N_HOST\",\n\t\t\tdefaultValue: \"n8n\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"n8n hostname for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"N8N_PORT\",\n\t\t\tdefaultValue: \"5678\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"n8n port for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"N8N_WEBHOOK_URL\",\n\t\t\tdefaultValue: \"http://n8n:5678/\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"n8n webhook URL for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\n\tdocsUrl: \"https://docs.n8n.io/\",\n\ttags: [\"workflow\", \"automation\", \"webhook\", \"integration\"],\n\tmaturity: \"stable\",\n\n\trequires: [\"postgresql\"],\n\trecommends: [\"redis\"],\n\tconflictsWith: [],\n\n\tminMemoryMB: 512,\n\tgpuRequired: false,\n\tcapDropCompatible: true,\n\tproxyPath: \"/n8n\",\n\tenvQuirks: [\n\t\t{\n\t\t\tkey: \"DB_POSTGRESDB_PASSWORD\",\n\t\t\tissue: \"must_sync\" as const,\n\t\t\tfix: { type: \"sync_with\" as const, syncKey: \"N8N_DB_PASSWORD\" },\n\t\t},\n\t],\n};\n"],"mappings":";;AAEA,MAAa,gBAAmC;CAC/C,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,aAAa;EACZ;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;CACD,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,CAAC;EAAE,SAAS;EAAe,aAAa;EAAM,CAAC;CACvD,iBAAiB;EAChB;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;CAED,SAAS;CACT,MAAM;EAAC;EAAY;EAAc;EAAW;EAAc;CAC1D,UAAU;CAEV,UAAU,CAAC,aAAa;CACxB,YAAY,CAAC,QAAQ;CACrB,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb,mBAAmB;CACnB,WAAW;CACX,WAAW,CACV;EACC,KAAK;EACL,OAAO;EACP,KAAK;GAAE,MAAM;GAAsB,SAAS;GAAmB;EAC/D,CACD;CACD"}
@@ -146,7 +146,17 @@ const n8nDefinition = {
146
146
  recommends: ["redis"],
147
147
  conflictsWith: [],
148
148
  minMemoryMB: 512,
149
- gpuRequired: false
149
+ gpuRequired: false,
150
+ capDropCompatible: true,
151
+ proxyPath: "/n8n",
152
+ envQuirks: [{
153
+ key: "DB_POSTGRESDB_PASSWORD",
154
+ issue: "must_sync",
155
+ fix: {
156
+ type: "sync_with",
157
+ syncKey: "N8N_DB_PASSWORD"
158
+ }
159
+ }]
150
160
  };
151
161
  //#endregion
152
162
  export { n8nDefinition };
@@ -1 +1 @@
1
- {"version":3,"file":"n8n.mjs","names":[],"sources":["../../../src/services/definitions/n8n.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const n8nDefinition: ServiceDefinition = {\n\tid: \"n8n\",\n\tname: \"n8n\",\n\tdescription:\n\t\t\"Workflow automation platform for connecting services, building integrations, and automating tasks with a visual node-based editor.\",\n\tcategory: \"automation\",\n\ticon: \"🔄\",\n\n\timage: \"docker.n8n.io/n8nio/n8n\",\n\timageTag: \"1.123.21\",\n\tports: [\n\t\t{\n\t\t\thost: 5678,\n\t\t\tcontainer: 5678,\n\t\t\tdescription: \"n8n web interface and API\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"n8n-data\",\n\t\t\tcontainerPath: \"/home/node/.n8n\",\n\t\t\tdescription: \"Persistent n8n data and workflows\",\n\t\t},\n\t],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"N8N_BASIC_AUTH_ACTIVE\",\n\t\t\tdefaultValue: \"true\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Enable basic authentication for n8n\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"N8N_BASIC_AUTH_USER\",\n\t\t\tdefaultValue: \"admin\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Basic auth username for n8n\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"N8N_BASIC_AUTH_PASSWORD\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Basic auth password for n8n\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"DB_TYPE\",\n\t\t\tdefaultValue: \"postgresdb\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Database type for n8n persistence\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"DB_POSTGRESDB_HOST\",\n\t\t\tdefaultValue: \"postgresql\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"PostgreSQL hostname\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"DB_POSTGRESDB_PORT\",\n\t\t\tdefaultValue: \"5432\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"PostgreSQL port\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"DB_POSTGRESDB_DATABASE\",\n\t\t\tdefaultValue: \"n8n\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"PostgreSQL database name for n8n\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"DB_POSTGRESDB_USER\",\n\t\t\tdefaultValue: \"n8n\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"PostgreSQL user for n8n\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"DB_POSTGRESDB_PASSWORD\",\n\t\t\tdefaultValue: \"${N8N_DB_PASSWORD}\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"PostgreSQL password for n8n (references Postgres password)\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"N8N_PORT\",\n\t\t\tdefaultValue: \"5678\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Port n8n listens on\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"WEBHOOK_URL\",\n\t\t\tdefaultValue: \"http://n8n:5678/\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Base URL for n8n webhooks\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\thealthcheck: {\n\t\ttest: \"wget -q --spider http://localhost:5678/healthz || exit 1\",\n\t\tinterval: \"30s\",\n\t\ttimeout: \"10s\",\n\t\tretries: 3,\n\t\tstartPeriod: \"30s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [{ skillId: \"n8n-trigger\", autoInstall: true }],\n\topenclawEnvVars: [\n\t\t{\n\t\t\tkey: \"N8N_HOST\",\n\t\t\tdefaultValue: \"n8n\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"n8n hostname for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"N8N_PORT\",\n\t\t\tdefaultValue: \"5678\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"n8n port for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"N8N_WEBHOOK_URL\",\n\t\t\tdefaultValue: \"http://n8n:5678/\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"n8n webhook URL for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\n\tdocsUrl: \"https://docs.n8n.io/\",\n\ttags: [\"workflow\", \"automation\", \"webhook\", \"integration\"],\n\tmaturity: \"stable\",\n\n\trequires: [\"postgresql\"],\n\trecommends: [\"redis\"],\n\tconflictsWith: [],\n\n\tminMemoryMB: 512,\n\tgpuRequired: false,\n};\n"],"mappings":";AAEA,MAAa,gBAAmC;CAC/C,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,aAAa;EACZ;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;CACD,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,CAAC;EAAE,SAAS;EAAe,aAAa;EAAM,CAAC;CACvD,iBAAiB;EAChB;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;CAED,SAAS;CACT,MAAM;EAAC;EAAY;EAAc;EAAW;EAAc;CAC1D,UAAU;CAEV,UAAU,CAAC,aAAa;CACxB,YAAY,CAAC,QAAQ;CACrB,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb"}
1
+ {"version":3,"file":"n8n.mjs","names":[],"sources":["../../../src/services/definitions/n8n.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const n8nDefinition: ServiceDefinition = {\n\tid: \"n8n\",\n\tname: \"n8n\",\n\tdescription:\n\t\t\"Workflow automation platform for connecting services, building integrations, and automating tasks with a visual node-based editor.\",\n\tcategory: \"automation\",\n\ticon: \"🔄\",\n\n\timage: \"docker.n8n.io/n8nio/n8n\",\n\timageTag: \"1.123.21\",\n\tports: [\n\t\t{\n\t\t\thost: 5678,\n\t\t\tcontainer: 5678,\n\t\t\tdescription: \"n8n web interface and API\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"n8n-data\",\n\t\t\tcontainerPath: \"/home/node/.n8n\",\n\t\t\tdescription: \"Persistent n8n data and workflows\",\n\t\t},\n\t],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"N8N_BASIC_AUTH_ACTIVE\",\n\t\t\tdefaultValue: \"true\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Enable basic authentication for n8n\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"N8N_BASIC_AUTH_USER\",\n\t\t\tdefaultValue: \"admin\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Basic auth username for n8n\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"N8N_BASIC_AUTH_PASSWORD\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Basic auth password for n8n\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"DB_TYPE\",\n\t\t\tdefaultValue: \"postgresdb\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Database type for n8n persistence\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"DB_POSTGRESDB_HOST\",\n\t\t\tdefaultValue: \"postgresql\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"PostgreSQL hostname\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"DB_POSTGRESDB_PORT\",\n\t\t\tdefaultValue: \"5432\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"PostgreSQL port\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"DB_POSTGRESDB_DATABASE\",\n\t\t\tdefaultValue: \"n8n\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"PostgreSQL database name for n8n\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"DB_POSTGRESDB_USER\",\n\t\t\tdefaultValue: \"n8n\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"PostgreSQL user for n8n\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"DB_POSTGRESDB_PASSWORD\",\n\t\t\tdefaultValue: \"${N8N_DB_PASSWORD}\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"PostgreSQL password for n8n (references Postgres password)\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"N8N_PORT\",\n\t\t\tdefaultValue: \"5678\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Port n8n listens on\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"WEBHOOK_URL\",\n\t\t\tdefaultValue: \"http://n8n:5678/\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Base URL for n8n webhooks\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\thealthcheck: {\n\t\ttest: \"wget -q --spider http://localhost:5678/healthz || exit 1\",\n\t\tinterval: \"30s\",\n\t\ttimeout: \"10s\",\n\t\tretries: 3,\n\t\tstartPeriod: \"30s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [{ skillId: \"n8n-trigger\", autoInstall: true }],\n\topenclawEnvVars: [\n\t\t{\n\t\t\tkey: \"N8N_HOST\",\n\t\t\tdefaultValue: \"n8n\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"n8n hostname for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"N8N_PORT\",\n\t\t\tdefaultValue: \"5678\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"n8n port for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"N8N_WEBHOOK_URL\",\n\t\t\tdefaultValue: \"http://n8n:5678/\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"n8n webhook URL for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\n\tdocsUrl: \"https://docs.n8n.io/\",\n\ttags: [\"workflow\", \"automation\", \"webhook\", \"integration\"],\n\tmaturity: \"stable\",\n\n\trequires: [\"postgresql\"],\n\trecommends: [\"redis\"],\n\tconflictsWith: [],\n\n\tminMemoryMB: 512,\n\tgpuRequired: false,\n\tcapDropCompatible: true,\n\tproxyPath: \"/n8n\",\n\tenvQuirks: [\n\t\t{\n\t\t\tkey: \"DB_POSTGRESDB_PASSWORD\",\n\t\t\tissue: \"must_sync\" as const,\n\t\t\tfix: { type: \"sync_with\" as const, syncKey: \"N8N_DB_PASSWORD\" },\n\t\t},\n\t],\n};\n"],"mappings":";AAEA,MAAa,gBAAmC;CAC/C,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,aAAa;EACZ;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;CACD,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,CAAC;EAAE,SAAS;EAAe,aAAa;EAAM,CAAC;CACvD,iBAAiB;EAChB;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;CAED,SAAS;CACT,MAAM;EAAC;EAAY;EAAc;EAAW;EAAc;CAC1D,UAAU;CAEV,UAAU,CAAC,aAAa;CACxB,YAAY,CAAC,QAAQ;CACrB,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb,mBAAmB;CACnB,WAAW;CACX,WAAW,CACV;EACC,KAAK;EACL,OAAO;EACP,KAAK;GAAE,MAAM;GAAsB,SAAS;GAAmB;EAC/D,CACD;CACD"}
@@ -59,7 +59,9 @@ const ollamaDefinition = {
59
59
  recommends: [],
60
60
  conflictsWith: [],
61
61
  minMemoryMB: 2048,
62
- gpuRequired: false
62
+ gpuRequired: false,
63
+ capDropCompatible: false,
64
+ proxyPath: "/ollama"
63
65
  };
64
66
  //#endregion
65
67
  exports.ollamaDefinition = ollamaDefinition;
@@ -1 +1 @@
1
- {"version":3,"file":"ollama.cjs","names":[],"sources":["../../../src/services/definitions/ollama.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const ollamaDefinition: ServiceDefinition = {\n\tid: \"ollama\",\n\tname: \"Ollama\",\n\tdescription:\n\t\t\"Run large language models locally with an easy-to-use API. Supports a wide range of open-source models like Llama, Mistral, and more.\",\n\tcategory: \"ai\",\n\ticon: \"🦙\",\n\n\timage: \"ollama/ollama\",\n\timageTag: \"0.17.0\",\n\tports: [\n\t\t{\n\t\t\thost: 11434,\n\t\t\tcontainer: 11434,\n\t\t\tdescription: \"Ollama REST API\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"ollama-data\",\n\t\t\tcontainerPath: \"/root/.ollama\",\n\t\t\tdescription: \"Persistent Ollama model storage and configuration\",\n\t\t},\n\t],\n\tenvironment: [],\n\thealthcheck: {\n\t\ttest: \"curl -f http://localhost:11434/ || exit 1\",\n\t\tinterval: \"30s\",\n\t\ttimeout: \"10s\",\n\t\tretries: 3,\n\t\tstartPeriod: \"30s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [{ skillId: \"ollama-local-llm\", autoInstall: true }],\n\topenclawEnvVars: [\n\t\t{\n\t\t\tkey: \"OLLAMA_HOST\",\n\t\t\tdefaultValue: \"ollama\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Ollama hostname for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"OLLAMA_PORT\",\n\t\t\tdefaultValue: \"11434\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Ollama API port for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\n\tdocsUrl: \"https://github.com/ollama/ollama\",\n\ttags: [\"llm\", \"local-ai\", \"inference\", \"language-model\"],\n\tmaturity: \"stable\",\n\n\trequires: [],\n\trecommends: [],\n\tconflictsWith: [],\n\n\tminMemoryMB: 2048,\n\tgpuRequired: false,\n};\n"],"mappings":";;AAEA,MAAa,mBAAsC;CAClD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,aAAa,EAAE;CACf,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,CAAC;EAAE,SAAS;EAAoB,aAAa;EAAM,CAAC;CAC5D,iBAAiB,CAChB;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,EACD;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,CACD;CAED,SAAS;CACT,MAAM;EAAC;EAAO;EAAY;EAAa;EAAiB;CACxD,UAAU;CAEV,UAAU,EAAE;CACZ,YAAY,EAAE;CACd,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb"}
1
+ {"version":3,"file":"ollama.cjs","names":[],"sources":["../../../src/services/definitions/ollama.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const ollamaDefinition: ServiceDefinition = {\n\tid: \"ollama\",\n\tname: \"Ollama\",\n\tdescription:\n\t\t\"Run large language models locally with an easy-to-use API. Supports a wide range of open-source models like Llama, Mistral, and more.\",\n\tcategory: \"ai\",\n\ticon: \"🦙\",\n\n\timage: \"ollama/ollama\",\n\timageTag: \"0.17.0\",\n\tports: [\n\t\t{\n\t\t\thost: 11434,\n\t\t\tcontainer: 11434,\n\t\t\tdescription: \"Ollama REST API\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"ollama-data\",\n\t\t\tcontainerPath: \"/root/.ollama\",\n\t\t\tdescription: \"Persistent Ollama model storage and configuration\",\n\t\t},\n\t],\n\tenvironment: [],\n\thealthcheck: {\n\t\ttest: \"curl -f http://localhost:11434/ || exit 1\",\n\t\tinterval: \"30s\",\n\t\ttimeout: \"10s\",\n\t\tretries: 3,\n\t\tstartPeriod: \"30s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [{ skillId: \"ollama-local-llm\", autoInstall: true }],\n\topenclawEnvVars: [\n\t\t{\n\t\t\tkey: \"OLLAMA_HOST\",\n\t\t\tdefaultValue: \"ollama\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Ollama hostname for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"OLLAMA_PORT\",\n\t\t\tdefaultValue: \"11434\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Ollama API port for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\n\tdocsUrl: \"https://github.com/ollama/ollama\",\n\ttags: [\"llm\", \"local-ai\", \"inference\", \"language-model\"],\n\tmaturity: \"stable\",\n\n\trequires: [],\n\trecommends: [],\n\tconflictsWith: [],\n\n\tminMemoryMB: 2048,\n\tgpuRequired: false,\n\tcapDropCompatible: false,\n\tproxyPath: \"/ollama\",\n};\n"],"mappings":";;AAEA,MAAa,mBAAsC;CAClD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,aAAa,EAAE;CACf,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,CAAC;EAAE,SAAS;EAAoB,aAAa;EAAM,CAAC;CAC5D,iBAAiB,CAChB;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,EACD;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,CACD;CAED,SAAS;CACT,MAAM;EAAC;EAAO;EAAY;EAAa;EAAiB;CACxD,UAAU;CAEV,UAAU,EAAE;CACZ,YAAY,EAAE;CACd,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb,mBAAmB;CACnB,WAAW;CACX"}
@@ -58,7 +58,9 @@ const ollamaDefinition = {
58
58
  recommends: [],
59
59
  conflictsWith: [],
60
60
  minMemoryMB: 2048,
61
- gpuRequired: false
61
+ gpuRequired: false,
62
+ capDropCompatible: false,
63
+ proxyPath: "/ollama"
62
64
  };
63
65
  //#endregion
64
66
  export { ollamaDefinition };
@@ -1 +1 @@
1
- {"version":3,"file":"ollama.mjs","names":[],"sources":["../../../src/services/definitions/ollama.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const ollamaDefinition: ServiceDefinition = {\n\tid: \"ollama\",\n\tname: \"Ollama\",\n\tdescription:\n\t\t\"Run large language models locally with an easy-to-use API. Supports a wide range of open-source models like Llama, Mistral, and more.\",\n\tcategory: \"ai\",\n\ticon: \"🦙\",\n\n\timage: \"ollama/ollama\",\n\timageTag: \"0.17.0\",\n\tports: [\n\t\t{\n\t\t\thost: 11434,\n\t\t\tcontainer: 11434,\n\t\t\tdescription: \"Ollama REST API\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"ollama-data\",\n\t\t\tcontainerPath: \"/root/.ollama\",\n\t\t\tdescription: \"Persistent Ollama model storage and configuration\",\n\t\t},\n\t],\n\tenvironment: [],\n\thealthcheck: {\n\t\ttest: \"curl -f http://localhost:11434/ || exit 1\",\n\t\tinterval: \"30s\",\n\t\ttimeout: \"10s\",\n\t\tretries: 3,\n\t\tstartPeriod: \"30s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [{ skillId: \"ollama-local-llm\", autoInstall: true }],\n\topenclawEnvVars: [\n\t\t{\n\t\t\tkey: \"OLLAMA_HOST\",\n\t\t\tdefaultValue: \"ollama\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Ollama hostname for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"OLLAMA_PORT\",\n\t\t\tdefaultValue: \"11434\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Ollama API port for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\n\tdocsUrl: \"https://github.com/ollama/ollama\",\n\ttags: [\"llm\", \"local-ai\", \"inference\", \"language-model\"],\n\tmaturity: \"stable\",\n\n\trequires: [],\n\trecommends: [],\n\tconflictsWith: [],\n\n\tminMemoryMB: 2048,\n\tgpuRequired: false,\n};\n"],"mappings":";AAEA,MAAa,mBAAsC;CAClD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,aAAa,EAAE;CACf,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,CAAC;EAAE,SAAS;EAAoB,aAAa;EAAM,CAAC;CAC5D,iBAAiB,CAChB;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,EACD;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,CACD;CAED,SAAS;CACT,MAAM;EAAC;EAAO;EAAY;EAAa;EAAiB;CACxD,UAAU;CAEV,UAAU,EAAE;CACZ,YAAY,EAAE;CACd,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb"}
1
+ {"version":3,"file":"ollama.mjs","names":[],"sources":["../../../src/services/definitions/ollama.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const ollamaDefinition: ServiceDefinition = {\n\tid: \"ollama\",\n\tname: \"Ollama\",\n\tdescription:\n\t\t\"Run large language models locally with an easy-to-use API. Supports a wide range of open-source models like Llama, Mistral, and more.\",\n\tcategory: \"ai\",\n\ticon: \"🦙\",\n\n\timage: \"ollama/ollama\",\n\timageTag: \"0.17.0\",\n\tports: [\n\t\t{\n\t\t\thost: 11434,\n\t\t\tcontainer: 11434,\n\t\t\tdescription: \"Ollama REST API\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"ollama-data\",\n\t\t\tcontainerPath: \"/root/.ollama\",\n\t\t\tdescription: \"Persistent Ollama model storage and configuration\",\n\t\t},\n\t],\n\tenvironment: [],\n\thealthcheck: {\n\t\ttest: \"curl -f http://localhost:11434/ || exit 1\",\n\t\tinterval: \"30s\",\n\t\ttimeout: \"10s\",\n\t\tretries: 3,\n\t\tstartPeriod: \"30s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [{ skillId: \"ollama-local-llm\", autoInstall: true }],\n\topenclawEnvVars: [\n\t\t{\n\t\t\tkey: \"OLLAMA_HOST\",\n\t\t\tdefaultValue: \"ollama\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Ollama hostname for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"OLLAMA_PORT\",\n\t\t\tdefaultValue: \"11434\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Ollama API port for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\n\tdocsUrl: \"https://github.com/ollama/ollama\",\n\ttags: [\"llm\", \"local-ai\", \"inference\", \"language-model\"],\n\tmaturity: \"stable\",\n\n\trequires: [],\n\trecommends: [],\n\tconflictsWith: [],\n\n\tminMemoryMB: 2048,\n\tgpuRequired: false,\n\tcapDropCompatible: false,\n\tproxyPath: \"/ollama\",\n};\n"],"mappings":";AAEA,MAAa,mBAAsC;CAClD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,aAAa,EAAE;CACf,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,CAAC;EAAE,SAAS;EAAoB,aAAa;EAAM,CAAC;CAC5D,iBAAiB,CAChB;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,EACD;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,CACD;CAED,SAAS;CACT,MAAM;EAAC;EAAO;EAAY;EAAa;EAAiB;CACxD,UAAU;CAEV,UAAU,EAAE;CACZ,YAAY,EAAE;CACd,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb,mBAAmB;CACnB,WAAW;CACX"}
@@ -0,0 +1,81 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ //#region src/services/definitions/open-saas.ts
3
+ const openSaasDefinition = {
4
+ id: "open-saas",
5
+ name: "Open SaaS",
6
+ description: "Full-stack React + Node.js SaaS starter built on the Wasp framework with auth, payments (Stripe/Lemon Squeezy), email, analytics, and admin dashboard.",
7
+ category: "saas-boilerplate",
8
+ icon: "🚀",
9
+ gitSource: {
10
+ repoUrl: "https://github.com/wasp-lang/open-saas.git",
11
+ branch: "main",
12
+ subdirectory: "template",
13
+ postCloneCommands: []
14
+ },
15
+ buildContext: {
16
+ dockerfile: "Dockerfile",
17
+ context: "."
18
+ },
19
+ ports: [{
20
+ host: 3100,
21
+ container: 3e3,
22
+ description: "Open SaaS web application",
23
+ exposed: true
24
+ }],
25
+ volumes: [],
26
+ environment: [
27
+ {
28
+ key: "DATABASE_URL",
29
+ defaultValue: "postgresql://opensaas:${OPENSAAS_DB_PASSWORD}@postgresql:5432/opensaas",
30
+ secret: false,
31
+ description: "PostgreSQL connection string",
32
+ required: true
33
+ },
34
+ {
35
+ key: "OPENSAAS_DB_PASSWORD",
36
+ defaultValue: "",
37
+ secret: true,
38
+ description: "Database password for Open SaaS",
39
+ required: true
40
+ },
41
+ {
42
+ key: "JWT_SECRET",
43
+ defaultValue: "",
44
+ secret: true,
45
+ description: "JWT signing secret",
46
+ required: true
47
+ }
48
+ ],
49
+ healthcheck: {
50
+ test: "wget -q --spider http://localhost:3000/ || exit 1",
51
+ interval: "30s",
52
+ timeout: "10s",
53
+ retries: 3,
54
+ startPeriod: "60s"
55
+ },
56
+ dependsOn: ["postgresql"],
57
+ restartPolicy: "unless-stopped",
58
+ networks: ["openclaw-network"],
59
+ skills: [],
60
+ openclawEnvVars: [],
61
+ docsUrl: "https://opensaas.sh/docs",
62
+ tags: [
63
+ "saas",
64
+ "boilerplate",
65
+ "react",
66
+ "nodejs",
67
+ "wasp",
68
+ "stripe",
69
+ "auth"
70
+ ],
71
+ maturity: "beta",
72
+ requires: ["postgresql"],
73
+ recommends: ["redis"],
74
+ conflictsWith: [],
75
+ minMemoryMB: 512,
76
+ gpuRequired: false
77
+ };
78
+ //#endregion
79
+ exports.openSaasDefinition = openSaasDefinition;
80
+
81
+ //# sourceMappingURL=open-saas.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"open-saas.cjs","names":[],"sources":["../../../src/services/definitions/open-saas.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const openSaasDefinition: ServiceDefinition = {\n\tid: \"open-saas\",\n\tname: \"Open SaaS\",\n\tdescription:\n\t\t\"Full-stack React + Node.js SaaS starter built on the Wasp framework with auth, payments (Stripe/Lemon Squeezy), email, analytics, and admin dashboard.\",\n\tcategory: \"saas-boilerplate\",\n\ticon: \"🚀\",\n\n\t// Git-based service — built from source\n\tgitSource: {\n\t\trepoUrl: \"https://github.com/wasp-lang/open-saas.git\",\n\t\tbranch: \"main\",\n\t\tsubdirectory: \"template\",\n\t\tpostCloneCommands: [],\n\t},\n\tbuildContext: {\n\t\tdockerfile: \"Dockerfile\",\n\t\tcontext: \".\",\n\t},\n\n\tports: [\n\t\t{\n\t\t\thost: 3100,\n\t\t\tcontainer: 3000,\n\t\t\tdescription: \"Open SaaS web application\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"DATABASE_URL\",\n\t\t\tdefaultValue: \"postgresql://opensaas:${OPENSAAS_DB_PASSWORD}@postgresql:5432/opensaas\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"PostgreSQL connection string\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"OPENSAAS_DB_PASSWORD\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Database password for Open SaaS\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"JWT_SECRET\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"JWT signing secret\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\thealthcheck: {\n\t\ttest: \"wget -q --spider http://localhost:3000/ || exit 1\",\n\t\tinterval: \"30s\",\n\t\ttimeout: \"10s\",\n\t\tretries: 3,\n\t\tstartPeriod: \"60s\",\n\t},\n\tdependsOn: [\"postgresql\"],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [],\n\topenclawEnvVars: [],\n\n\tdocsUrl: \"https://opensaas.sh/docs\",\n\ttags: [\"saas\", \"boilerplate\", \"react\", \"nodejs\", \"wasp\", \"stripe\", \"auth\"],\n\tmaturity: \"beta\",\n\n\trequires: [\"postgresql\"],\n\trecommends: [\"redis\"],\n\tconflictsWith: [],\n\n\tminMemoryMB: 512,\n\tgpuRequired: false,\n};\n"],"mappings":";;AAEA,MAAa,qBAAwC;CACpD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAGN,WAAW;EACV,SAAS;EACT,QAAQ;EACR,cAAc;EACd,mBAAmB,EAAE;EACrB;CACD,cAAc;EACb,YAAY;EACZ,SAAS;EACT;CAED,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,EAAE;CACX,aAAa;EACZ;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;CACD,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,CAAC,aAAa;CACzB,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,EAAE;CACV,iBAAiB,EAAE;CAEnB,SAAS;CACT,MAAM;EAAC;EAAQ;EAAe;EAAS;EAAU;EAAQ;EAAU;EAAO;CAC1E,UAAU;CAEV,UAAU,CAAC,aAAa;CACxB,YAAY,CAAC,QAAQ;CACrB,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb"}
@@ -0,0 +1,7 @@
1
+ import { ServiceDefinition } from "../../types.cjs";
2
+
3
+ //#region src/services/definitions/open-saas.d.ts
4
+ declare const openSaasDefinition: ServiceDefinition;
5
+ //#endregion
6
+ export { openSaasDefinition };
7
+ //# sourceMappingURL=open-saas.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"open-saas.d.cts","names":[],"sources":["../../../src/services/definitions/open-saas.ts"],"mappings":";;;cAEa,kBAAA,EAAoB,iBAAA"}
@@ -0,0 +1,7 @@
1
+ import { ServiceDefinition } from "../../types.mjs";
2
+
3
+ //#region src/services/definitions/open-saas.d.ts
4
+ declare const openSaasDefinition: ServiceDefinition;
5
+ //#endregion
6
+ export { openSaasDefinition };
7
+ //# sourceMappingURL=open-saas.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"open-saas.d.mts","names":[],"sources":["../../../src/services/definitions/open-saas.ts"],"mappings":";;;cAEa,kBAAA,EAAoB,iBAAA"}
@@ -0,0 +1,80 @@
1
+ //#region src/services/definitions/open-saas.ts
2
+ const openSaasDefinition = {
3
+ id: "open-saas",
4
+ name: "Open SaaS",
5
+ description: "Full-stack React + Node.js SaaS starter built on the Wasp framework with auth, payments (Stripe/Lemon Squeezy), email, analytics, and admin dashboard.",
6
+ category: "saas-boilerplate",
7
+ icon: "🚀",
8
+ gitSource: {
9
+ repoUrl: "https://github.com/wasp-lang/open-saas.git",
10
+ branch: "main",
11
+ subdirectory: "template",
12
+ postCloneCommands: []
13
+ },
14
+ buildContext: {
15
+ dockerfile: "Dockerfile",
16
+ context: "."
17
+ },
18
+ ports: [{
19
+ host: 3100,
20
+ container: 3e3,
21
+ description: "Open SaaS web application",
22
+ exposed: true
23
+ }],
24
+ volumes: [],
25
+ environment: [
26
+ {
27
+ key: "DATABASE_URL",
28
+ defaultValue: "postgresql://opensaas:${OPENSAAS_DB_PASSWORD}@postgresql:5432/opensaas",
29
+ secret: false,
30
+ description: "PostgreSQL connection string",
31
+ required: true
32
+ },
33
+ {
34
+ key: "OPENSAAS_DB_PASSWORD",
35
+ defaultValue: "",
36
+ secret: true,
37
+ description: "Database password for Open SaaS",
38
+ required: true
39
+ },
40
+ {
41
+ key: "JWT_SECRET",
42
+ defaultValue: "",
43
+ secret: true,
44
+ description: "JWT signing secret",
45
+ required: true
46
+ }
47
+ ],
48
+ healthcheck: {
49
+ test: "wget -q --spider http://localhost:3000/ || exit 1",
50
+ interval: "30s",
51
+ timeout: "10s",
52
+ retries: 3,
53
+ startPeriod: "60s"
54
+ },
55
+ dependsOn: ["postgresql"],
56
+ restartPolicy: "unless-stopped",
57
+ networks: ["openclaw-network"],
58
+ skills: [],
59
+ openclawEnvVars: [],
60
+ docsUrl: "https://opensaas.sh/docs",
61
+ tags: [
62
+ "saas",
63
+ "boilerplate",
64
+ "react",
65
+ "nodejs",
66
+ "wasp",
67
+ "stripe",
68
+ "auth"
69
+ ],
70
+ maturity: "beta",
71
+ requires: ["postgresql"],
72
+ recommends: ["redis"],
73
+ conflictsWith: [],
74
+ minMemoryMB: 512,
75
+ gpuRequired: false
76
+ };
77
+ //#endregion
78
+ export { openSaasDefinition };
79
+
80
+ //# sourceMappingURL=open-saas.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"open-saas.mjs","names":[],"sources":["../../../src/services/definitions/open-saas.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const openSaasDefinition: ServiceDefinition = {\n\tid: \"open-saas\",\n\tname: \"Open SaaS\",\n\tdescription:\n\t\t\"Full-stack React + Node.js SaaS starter built on the Wasp framework with auth, payments (Stripe/Lemon Squeezy), email, analytics, and admin dashboard.\",\n\tcategory: \"saas-boilerplate\",\n\ticon: \"🚀\",\n\n\t// Git-based service — built from source\n\tgitSource: {\n\t\trepoUrl: \"https://github.com/wasp-lang/open-saas.git\",\n\t\tbranch: \"main\",\n\t\tsubdirectory: \"template\",\n\t\tpostCloneCommands: [],\n\t},\n\tbuildContext: {\n\t\tdockerfile: \"Dockerfile\",\n\t\tcontext: \".\",\n\t},\n\n\tports: [\n\t\t{\n\t\t\thost: 3100,\n\t\t\tcontainer: 3000,\n\t\t\tdescription: \"Open SaaS web application\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"DATABASE_URL\",\n\t\t\tdefaultValue: \"postgresql://opensaas:${OPENSAAS_DB_PASSWORD}@postgresql:5432/opensaas\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"PostgreSQL connection string\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"OPENSAAS_DB_PASSWORD\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Database password for Open SaaS\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"JWT_SECRET\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"JWT signing secret\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\thealthcheck: {\n\t\ttest: \"wget -q --spider http://localhost:3000/ || exit 1\",\n\t\tinterval: \"30s\",\n\t\ttimeout: \"10s\",\n\t\tretries: 3,\n\t\tstartPeriod: \"60s\",\n\t},\n\tdependsOn: [\"postgresql\"],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [],\n\topenclawEnvVars: [],\n\n\tdocsUrl: \"https://opensaas.sh/docs\",\n\ttags: [\"saas\", \"boilerplate\", \"react\", \"nodejs\", \"wasp\", \"stripe\", \"auth\"],\n\tmaturity: \"beta\",\n\n\trequires: [\"postgresql\"],\n\trecommends: [\"redis\"],\n\tconflictsWith: [],\n\n\tminMemoryMB: 512,\n\tgpuRequired: false,\n};\n"],"mappings":";AAEA,MAAa,qBAAwC;CACpD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAGN,WAAW;EACV,SAAS;EACT,QAAQ;EACR,cAAc;EACd,mBAAmB,EAAE;EACrB;CACD,cAAc;EACb,YAAY;EACZ,SAAS;EACT;CAED,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,EAAE;CACX,aAAa;EACZ;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;CACD,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,CAAC,aAAa;CACzB,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,EAAE;CACV,iBAAiB,EAAE;CAEnB,SAAS;CACT,MAAM;EAAC;EAAQ;EAAe;EAAS;EAAU;EAAQ;EAAU;EAAO;CAC1E,UAAU;CAEV,UAAU,CAAC,aAAa;CACxB,YAAY,CAAC,QAAQ;CACrB,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb"}
@@ -70,7 +70,9 @@ const qdrantDefinition = {
70
70
  recommends: ["redis"],
71
71
  conflictsWith: [],
72
72
  minMemoryMB: 512,
73
- gpuRequired: false
73
+ gpuRequired: false,
74
+ capDropCompatible: true,
75
+ proxyPath: "/qdrant"
74
76
  };
75
77
  //#endregion
76
78
  exports.qdrantDefinition = qdrantDefinition;
@@ -1 +1 @@
1
- {"version":3,"file":"qdrant.cjs","names":[],"sources":["../../../src/services/definitions/qdrant.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const qdrantDefinition: ServiceDefinition = {\n\tid: \"qdrant\",\n\tname: \"Qdrant Vector DB\",\n\tdescription:\n\t\t\"High-performance vector similarity search engine for building RAG pipelines, semantic search, and AI-powered recommendation systems.\",\n\tcategory: \"vector-db\",\n\ticon: \"🧠\",\n\n\timage: \"qdrant/qdrant\",\n\timageTag: \"v1.12.1\",\n\tports: [\n\t\t{\n\t\t\thost: 6333,\n\t\t\tcontainer: 6333,\n\t\t\tdescription: \"Qdrant REST API\",\n\t\t\texposed: true,\n\t\t},\n\t\t{\n\t\t\thost: 6334,\n\t\t\tcontainer: 6334,\n\t\t\tdescription: \"Qdrant gRPC API\",\n\t\t\texposed: false,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"qdrant-data\",\n\t\t\tcontainerPath: \"/qdrant/storage\",\n\t\t\tdescription: \"Persistent Qdrant vector storage\",\n\t\t},\n\t],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"QDRANT__SERVICE__GRPC_PORT\",\n\t\t\tdefaultValue: \"6334\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"gRPC port for Qdrant service\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\thealthcheck: {\n\t\ttest: \"bash -c 'echo > /dev/tcp/localhost/6333' || exit 1\",\n\t\tinterval: \"30s\",\n\t\ttimeout: \"10s\",\n\t\tretries: 3,\n\t\tstartPeriod: \"10s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [{ skillId: \"qdrant-memory\", autoInstall: true }],\n\topenclawEnvVars: [\n\t\t{\n\t\t\tkey: \"QDRANT_HOST\",\n\t\t\tdefaultValue: \"qdrant\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Qdrant hostname for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"QDRANT_PORT\",\n\t\t\tdefaultValue: \"6333\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Qdrant REST API port for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\n\tdocsUrl: \"https://qdrant.tech/documentation/\",\n\ttags: [\"vector\", \"rag\", \"embeddings\", \"semantic-search\"],\n\tmaturity: \"stable\",\n\n\trequires: [],\n\trecommends: [\"redis\"],\n\tconflictsWith: [],\n\n\tminMemoryMB: 512,\n\tgpuRequired: false,\n};\n"],"mappings":";;AAEA,MAAa,mBAAsC;CAClD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,EACD;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,aAAa,CACZ;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,CACD;CACD,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,CAAC;EAAE,SAAS;EAAiB,aAAa;EAAM,CAAC;CACzD,iBAAiB,CAChB;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,EACD;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,CACD;CAED,SAAS;CACT,MAAM;EAAC;EAAU;EAAO;EAAc;EAAkB;CACxD,UAAU;CAEV,UAAU,EAAE;CACZ,YAAY,CAAC,QAAQ;CACrB,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb"}
1
+ {"version":3,"file":"qdrant.cjs","names":[],"sources":["../../../src/services/definitions/qdrant.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const qdrantDefinition: ServiceDefinition = {\n\tid: \"qdrant\",\n\tname: \"Qdrant Vector DB\",\n\tdescription:\n\t\t\"High-performance vector similarity search engine for building RAG pipelines, semantic search, and AI-powered recommendation systems.\",\n\tcategory: \"vector-db\",\n\ticon: \"🧠\",\n\n\timage: \"qdrant/qdrant\",\n\timageTag: \"v1.12.1\",\n\tports: [\n\t\t{\n\t\t\thost: 6333,\n\t\t\tcontainer: 6333,\n\t\t\tdescription: \"Qdrant REST API\",\n\t\t\texposed: true,\n\t\t},\n\t\t{\n\t\t\thost: 6334,\n\t\t\tcontainer: 6334,\n\t\t\tdescription: \"Qdrant gRPC API\",\n\t\t\texposed: false,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"qdrant-data\",\n\t\t\tcontainerPath: \"/qdrant/storage\",\n\t\t\tdescription: \"Persistent Qdrant vector storage\",\n\t\t},\n\t],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"QDRANT__SERVICE__GRPC_PORT\",\n\t\t\tdefaultValue: \"6334\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"gRPC port for Qdrant service\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\thealthcheck: {\n\t\ttest: \"bash -c 'echo > /dev/tcp/localhost/6333' || exit 1\",\n\t\tinterval: \"30s\",\n\t\ttimeout: \"10s\",\n\t\tretries: 3,\n\t\tstartPeriod: \"10s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [{ skillId: \"qdrant-memory\", autoInstall: true }],\n\topenclawEnvVars: [\n\t\t{\n\t\t\tkey: \"QDRANT_HOST\",\n\t\t\tdefaultValue: \"qdrant\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Qdrant hostname for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"QDRANT_PORT\",\n\t\t\tdefaultValue: \"6333\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Qdrant REST API port for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\n\tdocsUrl: \"https://qdrant.tech/documentation/\",\n\ttags: [\"vector\", \"rag\", \"embeddings\", \"semantic-search\"],\n\tmaturity: \"stable\",\n\n\trequires: [],\n\trecommends: [\"redis\"],\n\tconflictsWith: [],\n\n\tminMemoryMB: 512,\n\tgpuRequired: false,\n\tcapDropCompatible: true,\n\tproxyPath: \"/qdrant\",\n};\n"],"mappings":";;AAEA,MAAa,mBAAsC;CAClD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,EACD;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,aAAa,CACZ;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,CACD;CACD,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,CAAC;EAAE,SAAS;EAAiB,aAAa;EAAM,CAAC;CACzD,iBAAiB,CAChB;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,EACD;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,CACD;CAED,SAAS;CACT,MAAM;EAAC;EAAU;EAAO;EAAc;EAAkB;CACxD,UAAU;CAEV,UAAU,EAAE;CACZ,YAAY,CAAC,QAAQ;CACrB,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb,mBAAmB;CACnB,WAAW;CACX"}
@@ -69,7 +69,9 @@ const qdrantDefinition = {
69
69
  recommends: ["redis"],
70
70
  conflictsWith: [],
71
71
  minMemoryMB: 512,
72
- gpuRequired: false
72
+ gpuRequired: false,
73
+ capDropCompatible: true,
74
+ proxyPath: "/qdrant"
73
75
  };
74
76
  //#endregion
75
77
  export { qdrantDefinition };
@@ -1 +1 @@
1
- {"version":3,"file":"qdrant.mjs","names":[],"sources":["../../../src/services/definitions/qdrant.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const qdrantDefinition: ServiceDefinition = {\n\tid: \"qdrant\",\n\tname: \"Qdrant Vector DB\",\n\tdescription:\n\t\t\"High-performance vector similarity search engine for building RAG pipelines, semantic search, and AI-powered recommendation systems.\",\n\tcategory: \"vector-db\",\n\ticon: \"🧠\",\n\n\timage: \"qdrant/qdrant\",\n\timageTag: \"v1.12.1\",\n\tports: [\n\t\t{\n\t\t\thost: 6333,\n\t\t\tcontainer: 6333,\n\t\t\tdescription: \"Qdrant REST API\",\n\t\t\texposed: true,\n\t\t},\n\t\t{\n\t\t\thost: 6334,\n\t\t\tcontainer: 6334,\n\t\t\tdescription: \"Qdrant gRPC API\",\n\t\t\texposed: false,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"qdrant-data\",\n\t\t\tcontainerPath: \"/qdrant/storage\",\n\t\t\tdescription: \"Persistent Qdrant vector storage\",\n\t\t},\n\t],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"QDRANT__SERVICE__GRPC_PORT\",\n\t\t\tdefaultValue: \"6334\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"gRPC port for Qdrant service\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\thealthcheck: {\n\t\ttest: \"bash -c 'echo > /dev/tcp/localhost/6333' || exit 1\",\n\t\tinterval: \"30s\",\n\t\ttimeout: \"10s\",\n\t\tretries: 3,\n\t\tstartPeriod: \"10s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [{ skillId: \"qdrant-memory\", autoInstall: true }],\n\topenclawEnvVars: [\n\t\t{\n\t\t\tkey: \"QDRANT_HOST\",\n\t\t\tdefaultValue: \"qdrant\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Qdrant hostname for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"QDRANT_PORT\",\n\t\t\tdefaultValue: \"6333\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Qdrant REST API port for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\n\tdocsUrl: \"https://qdrant.tech/documentation/\",\n\ttags: [\"vector\", \"rag\", \"embeddings\", \"semantic-search\"],\n\tmaturity: \"stable\",\n\n\trequires: [],\n\trecommends: [\"redis\"],\n\tconflictsWith: [],\n\n\tminMemoryMB: 512,\n\tgpuRequired: false,\n};\n"],"mappings":";AAEA,MAAa,mBAAsC;CAClD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,EACD;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,aAAa,CACZ;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,CACD;CACD,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,CAAC;EAAE,SAAS;EAAiB,aAAa;EAAM,CAAC;CACzD,iBAAiB,CAChB;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,EACD;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,CACD;CAED,SAAS;CACT,MAAM;EAAC;EAAU;EAAO;EAAc;EAAkB;CACxD,UAAU;CAEV,UAAU,EAAE;CACZ,YAAY,CAAC,QAAQ;CACrB,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb"}
1
+ {"version":3,"file":"qdrant.mjs","names":[],"sources":["../../../src/services/definitions/qdrant.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const qdrantDefinition: ServiceDefinition = {\n\tid: \"qdrant\",\n\tname: \"Qdrant Vector DB\",\n\tdescription:\n\t\t\"High-performance vector similarity search engine for building RAG pipelines, semantic search, and AI-powered recommendation systems.\",\n\tcategory: \"vector-db\",\n\ticon: \"🧠\",\n\n\timage: \"qdrant/qdrant\",\n\timageTag: \"v1.12.1\",\n\tports: [\n\t\t{\n\t\t\thost: 6333,\n\t\t\tcontainer: 6333,\n\t\t\tdescription: \"Qdrant REST API\",\n\t\t\texposed: true,\n\t\t},\n\t\t{\n\t\t\thost: 6334,\n\t\t\tcontainer: 6334,\n\t\t\tdescription: \"Qdrant gRPC API\",\n\t\t\texposed: false,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"qdrant-data\",\n\t\t\tcontainerPath: \"/qdrant/storage\",\n\t\t\tdescription: \"Persistent Qdrant vector storage\",\n\t\t},\n\t],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"QDRANT__SERVICE__GRPC_PORT\",\n\t\t\tdefaultValue: \"6334\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"gRPC port for Qdrant service\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\thealthcheck: {\n\t\ttest: \"bash -c 'echo > /dev/tcp/localhost/6333' || exit 1\",\n\t\tinterval: \"30s\",\n\t\ttimeout: \"10s\",\n\t\tretries: 3,\n\t\tstartPeriod: \"10s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [{ skillId: \"qdrant-memory\", autoInstall: true }],\n\topenclawEnvVars: [\n\t\t{\n\t\t\tkey: \"QDRANT_HOST\",\n\t\t\tdefaultValue: \"qdrant\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Qdrant hostname for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"QDRANT_PORT\",\n\t\t\tdefaultValue: \"6333\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Qdrant REST API port for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\n\tdocsUrl: \"https://qdrant.tech/documentation/\",\n\ttags: [\"vector\", \"rag\", \"embeddings\", \"semantic-search\"],\n\tmaturity: \"stable\",\n\n\trequires: [],\n\trecommends: [\"redis\"],\n\tconflictsWith: [],\n\n\tminMemoryMB: 512,\n\tgpuRequired: false,\n\tcapDropCompatible: true,\n\tproxyPath: \"/qdrant\",\n};\n"],"mappings":";AAEA,MAAa,mBAAsC;CAClD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,EACD;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,aAAa,CACZ;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,CACD;CACD,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,CAAC;EAAE,SAAS;EAAiB,aAAa;EAAM,CAAC;CACzD,iBAAiB,CAChB;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,EACD;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,CACD;CAED,SAAS;CACT,MAAM;EAAC;EAAU;EAAO;EAAc;EAAkB;CACxD,UAAU;CAEV,UAAU,EAAE;CACZ,YAAY,CAAC,QAAQ;CACrB,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb,mBAAmB;CACnB,WAAW;CACX"}
@@ -58,7 +58,14 @@ const searxngDefinition = {
58
58
  recommends: ["redis"],
59
59
  conflictsWith: [],
60
60
  minMemoryMB: 256,
61
- gpuRequired: false
61
+ gpuRequired: false,
62
+ capDropCompatible: false,
63
+ proxyPath: "/searxng",
64
+ firstBootCapabilities: [
65
+ "CHOWN",
66
+ "SETGID",
67
+ "SETUID"
68
+ ]
62
69
  };
63
70
  //#endregion
64
71
  exports.searxngDefinition = searxngDefinition;
@@ -1 +1 @@
1
- {"version":3,"file":"searxng.cjs","names":[],"sources":["../../../src/services/definitions/searxng.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const searxngDefinition: ServiceDefinition = {\n\tid: \"searxng\",\n\tname: \"SearXNG\",\n\tdescription:\n\t\t\"Privacy-respecting, self-hosted metasearch engine that aggregates results from multiple search engines without tracking.\",\n\tcategory: \"search\",\n\ticon: \"🔍\",\n\n\timage: \"searxng/searxng\",\n\timageTag: \"2026.2.23-4964d664f\",\n\tports: [\n\t\t{\n\t\t\thost: 8080,\n\t\t\tcontainer: 8080,\n\t\t\tdescription: \"SearXNG web interface and API\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"searxng-data\",\n\t\t\tcontainerPath: \"/etc/searxng\",\n\t\t\tdescription: \"SearXNG configuration and settings\",\n\t\t},\n\t],\n\tenvironment: [],\n\thealthcheck: {\n\t\ttest: \"wget -q --spider http://localhost:8080/ || exit 1\",\n\t\tinterval: \"30s\",\n\t\ttimeout: \"10s\",\n\t\tretries: 3,\n\t\tstartPeriod: \"15s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [{ skillId: \"searxng-search\", autoInstall: true }],\n\topenclawEnvVars: [\n\t\t{\n\t\t\tkey: \"SEARXNG_HOST\",\n\t\t\tdefaultValue: \"searxng\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"SearXNG hostname for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"SEARXNG_PORT\",\n\t\t\tdefaultValue: \"8080\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"SearXNG port for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\n\tdocsUrl: \"https://docs.searxng.org/\",\n\ttags: [\"search\", \"meta-search\", \"privacy\"],\n\tmaturity: \"stable\",\n\n\trequires: [],\n\trecommends: [\"redis\"],\n\tconflictsWith: [],\n\n\tminMemoryMB: 256,\n\tgpuRequired: false,\n};\n"],"mappings":";;AAEA,MAAa,oBAAuC;CACnD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,aAAa,EAAE;CACf,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,CAAC;EAAE,SAAS;EAAkB,aAAa;EAAM,CAAC;CAC1D,iBAAiB,CAChB;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,EACD;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,CACD;CAED,SAAS;CACT,MAAM;EAAC;EAAU;EAAe;EAAU;CAC1C,UAAU;CAEV,UAAU,EAAE;CACZ,YAAY,CAAC,QAAQ;CACrB,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb"}
1
+ {"version":3,"file":"searxng.cjs","names":[],"sources":["../../../src/services/definitions/searxng.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const searxngDefinition: ServiceDefinition = {\n\tid: \"searxng\",\n\tname: \"SearXNG\",\n\tdescription:\n\t\t\"Privacy-respecting, self-hosted metasearch engine that aggregates results from multiple search engines without tracking.\",\n\tcategory: \"search\",\n\ticon: \"🔍\",\n\n\timage: \"searxng/searxng\",\n\timageTag: \"2026.2.23-4964d664f\",\n\tports: [\n\t\t{\n\t\t\thost: 8080,\n\t\t\tcontainer: 8080,\n\t\t\tdescription: \"SearXNG web interface and API\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"searxng-data\",\n\t\t\tcontainerPath: \"/etc/searxng\",\n\t\t\tdescription: \"SearXNG configuration and settings\",\n\t\t},\n\t],\n\tenvironment: [],\n\thealthcheck: {\n\t\ttest: \"wget -q --spider http://localhost:8080/ || exit 1\",\n\t\tinterval: \"30s\",\n\t\ttimeout: \"10s\",\n\t\tretries: 3,\n\t\tstartPeriod: \"15s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [{ skillId: \"searxng-search\", autoInstall: true }],\n\topenclawEnvVars: [\n\t\t{\n\t\t\tkey: \"SEARXNG_HOST\",\n\t\t\tdefaultValue: \"searxng\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"SearXNG hostname for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"SEARXNG_PORT\",\n\t\t\tdefaultValue: \"8080\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"SearXNG port for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\n\tdocsUrl: \"https://docs.searxng.org/\",\n\ttags: [\"search\", \"meta-search\", \"privacy\"],\n\tmaturity: \"stable\",\n\n\trequires: [],\n\trecommends: [\"redis\"],\n\tconflictsWith: [],\n\n\tminMemoryMB: 256,\n\tgpuRequired: false,\n\tcapDropCompatible: false,\n\tproxyPath: \"/searxng\",\n\tfirstBootCapabilities: [\"CHOWN\", \"SETGID\", \"SETUID\"],\n};\n"],"mappings":";;AAEA,MAAa,oBAAuC;CACnD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,aAAa,EAAE;CACf,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,CAAC;EAAE,SAAS;EAAkB,aAAa;EAAM,CAAC;CAC1D,iBAAiB,CAChB;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,EACD;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,CACD;CAED,SAAS;CACT,MAAM;EAAC;EAAU;EAAe;EAAU;CAC1C,UAAU;CAEV,UAAU,EAAE;CACZ,YAAY,CAAC,QAAQ;CACrB,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb,mBAAmB;CACnB,WAAW;CACX,uBAAuB;EAAC;EAAS;EAAU;EAAS;CACpD"}
@@ -57,7 +57,14 @@ const searxngDefinition = {
57
57
  recommends: ["redis"],
58
58
  conflictsWith: [],
59
59
  minMemoryMB: 256,
60
- gpuRequired: false
60
+ gpuRequired: false,
61
+ capDropCompatible: false,
62
+ proxyPath: "/searxng",
63
+ firstBootCapabilities: [
64
+ "CHOWN",
65
+ "SETGID",
66
+ "SETUID"
67
+ ]
61
68
  };
62
69
  //#endregion
63
70
  export { searxngDefinition };
@@ -1 +1 @@
1
- {"version":3,"file":"searxng.mjs","names":[],"sources":["../../../src/services/definitions/searxng.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const searxngDefinition: ServiceDefinition = {\n\tid: \"searxng\",\n\tname: \"SearXNG\",\n\tdescription:\n\t\t\"Privacy-respecting, self-hosted metasearch engine that aggregates results from multiple search engines without tracking.\",\n\tcategory: \"search\",\n\ticon: \"🔍\",\n\n\timage: \"searxng/searxng\",\n\timageTag: \"2026.2.23-4964d664f\",\n\tports: [\n\t\t{\n\t\t\thost: 8080,\n\t\t\tcontainer: 8080,\n\t\t\tdescription: \"SearXNG web interface and API\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"searxng-data\",\n\t\t\tcontainerPath: \"/etc/searxng\",\n\t\t\tdescription: \"SearXNG configuration and settings\",\n\t\t},\n\t],\n\tenvironment: [],\n\thealthcheck: {\n\t\ttest: \"wget -q --spider http://localhost:8080/ || exit 1\",\n\t\tinterval: \"30s\",\n\t\ttimeout: \"10s\",\n\t\tretries: 3,\n\t\tstartPeriod: \"15s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [{ skillId: \"searxng-search\", autoInstall: true }],\n\topenclawEnvVars: [\n\t\t{\n\t\t\tkey: \"SEARXNG_HOST\",\n\t\t\tdefaultValue: \"searxng\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"SearXNG hostname for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"SEARXNG_PORT\",\n\t\t\tdefaultValue: \"8080\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"SearXNG port for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\n\tdocsUrl: \"https://docs.searxng.org/\",\n\ttags: [\"search\", \"meta-search\", \"privacy\"],\n\tmaturity: \"stable\",\n\n\trequires: [],\n\trecommends: [\"redis\"],\n\tconflictsWith: [],\n\n\tminMemoryMB: 256,\n\tgpuRequired: false,\n};\n"],"mappings":";AAEA,MAAa,oBAAuC;CACnD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,aAAa,EAAE;CACf,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,CAAC;EAAE,SAAS;EAAkB,aAAa;EAAM,CAAC;CAC1D,iBAAiB,CAChB;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,EACD;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,CACD;CAED,SAAS;CACT,MAAM;EAAC;EAAU;EAAe;EAAU;CAC1C,UAAU;CAEV,UAAU,EAAE;CACZ,YAAY,CAAC,QAAQ;CACrB,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb"}
1
+ {"version":3,"file":"searxng.mjs","names":[],"sources":["../../../src/services/definitions/searxng.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const searxngDefinition: ServiceDefinition = {\n\tid: \"searxng\",\n\tname: \"SearXNG\",\n\tdescription:\n\t\t\"Privacy-respecting, self-hosted metasearch engine that aggregates results from multiple search engines without tracking.\",\n\tcategory: \"search\",\n\ticon: \"🔍\",\n\n\timage: \"searxng/searxng\",\n\timageTag: \"2026.2.23-4964d664f\",\n\tports: [\n\t\t{\n\t\t\thost: 8080,\n\t\t\tcontainer: 8080,\n\t\t\tdescription: \"SearXNG web interface and API\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"searxng-data\",\n\t\t\tcontainerPath: \"/etc/searxng\",\n\t\t\tdescription: \"SearXNG configuration and settings\",\n\t\t},\n\t],\n\tenvironment: [],\n\thealthcheck: {\n\t\ttest: \"wget -q --spider http://localhost:8080/ || exit 1\",\n\t\tinterval: \"30s\",\n\t\ttimeout: \"10s\",\n\t\tretries: 3,\n\t\tstartPeriod: \"15s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [{ skillId: \"searxng-search\", autoInstall: true }],\n\topenclawEnvVars: [\n\t\t{\n\t\t\tkey: \"SEARXNG_HOST\",\n\t\t\tdefaultValue: \"searxng\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"SearXNG hostname for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"SEARXNG_PORT\",\n\t\t\tdefaultValue: \"8080\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"SearXNG port for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\n\tdocsUrl: \"https://docs.searxng.org/\",\n\ttags: [\"search\", \"meta-search\", \"privacy\"],\n\tmaturity: \"stable\",\n\n\trequires: [],\n\trecommends: [\"redis\"],\n\tconflictsWith: [],\n\n\tminMemoryMB: 256,\n\tgpuRequired: false,\n\tcapDropCompatible: false,\n\tproxyPath: \"/searxng\",\n\tfirstBootCapabilities: [\"CHOWN\", \"SETGID\", \"SETUID\"],\n};\n"],"mappings":";AAEA,MAAa,oBAAuC;CACnD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,aAAa,EAAE;CACf,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,CAAC;EAAE,SAAS;EAAkB,aAAa;EAAM,CAAC;CAC1D,iBAAiB,CAChB;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,EACD;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,CACD;CAED,SAAS;CACT,MAAM;EAAC;EAAU;EAAe;EAAU;CAC1C,UAAU;CAEV,UAAU,EAAE;CACZ,YAAY,CAAC,QAAQ;CACrB,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb,mBAAmB;CACnB,WAAW;CACX,uBAAuB;EAAC;EAAS;EAAU;EAAS;CACpD"}
@@ -44,7 +44,14 @@ const uptimeKumaDefinition = {
44
44
  recommends: [],
45
45
  conflictsWith: [],
46
46
  minMemoryMB: 256,
47
- gpuRequired: false
47
+ gpuRequired: false,
48
+ capDropCompatible: false,
49
+ proxyPath: "/uptime-kuma",
50
+ firstBootCapabilities: [
51
+ "CHOWN",
52
+ "SETGID",
53
+ "SETUID"
54
+ ]
48
55
  };
49
56
  //#endregion
50
57
  exports.uptimeKumaDefinition = uptimeKumaDefinition;
@@ -1 +1 @@
1
- {"version":3,"file":"uptime-kuma.cjs","names":[],"sources":["../../../src/services/definitions/uptime-kuma.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const uptimeKumaDefinition: ServiceDefinition = {\n\tid: \"uptime-kuma\",\n\tname: \"Uptime Kuma\",\n\tdescription:\n\t\t\"Self-hosted monitoring tool for tracking uptime of websites, APIs, and services with a sleek dashboard and multi-notification support.\",\n\tcategory: \"monitoring\",\n\ticon: \"📡\",\n\n\timage: \"louislam/uptime-kuma\",\n\timageTag: \"2\",\n\tports: [\n\t\t{\n\t\t\thost: 3001,\n\t\t\tcontainer: 3001,\n\t\t\tdescription: \"Uptime Kuma web interface\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"uptime-kuma-data\",\n\t\t\tcontainerPath: \"/app/data\",\n\t\t\tdescription: \"Persistent Uptime Kuma data and configuration\",\n\t\t},\n\t],\n\tenvironment: [],\n\thealthcheck: {\n\t\ttest: \"curl -sf http://localhost:3001 || exit 1\",\n\t\tinterval: \"30s\",\n\t\ttimeout: \"10s\",\n\t\tretries: 3,\n\t\tstartPeriod: \"15s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [],\n\topenclawEnvVars: [],\n\n\tdocsUrl: \"https://github.com/louislam/uptime-kuma/wiki\",\n\ttags: [\"uptime\", \"monitoring\", \"status-page\", \"alerts\"],\n\tmaturity: \"stable\",\n\n\trequires: [],\n\trecommends: [],\n\tconflictsWith: [],\n\n\tminMemoryMB: 256,\n\tgpuRequired: false,\n};\n"],"mappings":";;AAEA,MAAa,uBAA0C;CACtD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,aAAa,EAAE;CACf,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,EAAE;CACV,iBAAiB,EAAE;CAEnB,SAAS;CACT,MAAM;EAAC;EAAU;EAAc;EAAe;EAAS;CACvD,UAAU;CAEV,UAAU,EAAE;CACZ,YAAY,EAAE;CACd,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb"}
1
+ {"version":3,"file":"uptime-kuma.cjs","names":[],"sources":["../../../src/services/definitions/uptime-kuma.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const uptimeKumaDefinition: ServiceDefinition = {\n\tid: \"uptime-kuma\",\n\tname: \"Uptime Kuma\",\n\tdescription:\n\t\t\"Self-hosted monitoring tool for tracking uptime of websites, APIs, and services with a sleek dashboard and multi-notification support.\",\n\tcategory: \"monitoring\",\n\ticon: \"📡\",\n\n\timage: \"louislam/uptime-kuma\",\n\timageTag: \"2\",\n\tports: [\n\t\t{\n\t\t\thost: 3001,\n\t\t\tcontainer: 3001,\n\t\t\tdescription: \"Uptime Kuma web interface\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"uptime-kuma-data\",\n\t\t\tcontainerPath: \"/app/data\",\n\t\t\tdescription: \"Persistent Uptime Kuma data and configuration\",\n\t\t},\n\t],\n\tenvironment: [],\n\thealthcheck: {\n\t\ttest: \"curl -sf http://localhost:3001 || exit 1\",\n\t\tinterval: \"30s\",\n\t\ttimeout: \"10s\",\n\t\tretries: 3,\n\t\tstartPeriod: \"15s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [],\n\topenclawEnvVars: [],\n\n\tdocsUrl: \"https://github.com/louislam/uptime-kuma/wiki\",\n\ttags: [\"uptime\", \"monitoring\", \"status-page\", \"alerts\"],\n\tmaturity: \"stable\",\n\n\trequires: [],\n\trecommends: [],\n\tconflictsWith: [],\n\n\tminMemoryMB: 256,\n\tgpuRequired: false,\n\tcapDropCompatible: false,\n\tproxyPath: \"/uptime-kuma\",\n\tfirstBootCapabilities: [\"CHOWN\", \"SETGID\", \"SETUID\"],\n};\n"],"mappings":";;AAEA,MAAa,uBAA0C;CACtD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,aAAa,EAAE;CACf,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,EAAE;CACV,iBAAiB,EAAE;CAEnB,SAAS;CACT,MAAM;EAAC;EAAU;EAAc;EAAe;EAAS;CACvD,UAAU;CAEV,UAAU,EAAE;CACZ,YAAY,EAAE;CACd,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb,mBAAmB;CACnB,WAAW;CACX,uBAAuB;EAAC;EAAS;EAAU;EAAS;CACpD"}
@@ -43,7 +43,14 @@ const uptimeKumaDefinition = {
43
43
  recommends: [],
44
44
  conflictsWith: [],
45
45
  minMemoryMB: 256,
46
- gpuRequired: false
46
+ gpuRequired: false,
47
+ capDropCompatible: false,
48
+ proxyPath: "/uptime-kuma",
49
+ firstBootCapabilities: [
50
+ "CHOWN",
51
+ "SETGID",
52
+ "SETUID"
53
+ ]
47
54
  };
48
55
  //#endregion
49
56
  export { uptimeKumaDefinition };
@@ -1 +1 @@
1
- {"version":3,"file":"uptime-kuma.mjs","names":[],"sources":["../../../src/services/definitions/uptime-kuma.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const uptimeKumaDefinition: ServiceDefinition = {\n\tid: \"uptime-kuma\",\n\tname: \"Uptime Kuma\",\n\tdescription:\n\t\t\"Self-hosted monitoring tool for tracking uptime of websites, APIs, and services with a sleek dashboard and multi-notification support.\",\n\tcategory: \"monitoring\",\n\ticon: \"📡\",\n\n\timage: \"louislam/uptime-kuma\",\n\timageTag: \"2\",\n\tports: [\n\t\t{\n\t\t\thost: 3001,\n\t\t\tcontainer: 3001,\n\t\t\tdescription: \"Uptime Kuma web interface\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"uptime-kuma-data\",\n\t\t\tcontainerPath: \"/app/data\",\n\t\t\tdescription: \"Persistent Uptime Kuma data and configuration\",\n\t\t},\n\t],\n\tenvironment: [],\n\thealthcheck: {\n\t\ttest: \"curl -sf http://localhost:3001 || exit 1\",\n\t\tinterval: \"30s\",\n\t\ttimeout: \"10s\",\n\t\tretries: 3,\n\t\tstartPeriod: \"15s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [],\n\topenclawEnvVars: [],\n\n\tdocsUrl: \"https://github.com/louislam/uptime-kuma/wiki\",\n\ttags: [\"uptime\", \"monitoring\", \"status-page\", \"alerts\"],\n\tmaturity: \"stable\",\n\n\trequires: [],\n\trecommends: [],\n\tconflictsWith: [],\n\n\tminMemoryMB: 256,\n\tgpuRequired: false,\n};\n"],"mappings":";AAEA,MAAa,uBAA0C;CACtD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,aAAa,EAAE;CACf,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,EAAE;CACV,iBAAiB,EAAE;CAEnB,SAAS;CACT,MAAM;EAAC;EAAU;EAAc;EAAe;EAAS;CACvD,UAAU;CAEV,UAAU,EAAE;CACZ,YAAY,EAAE;CACd,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb"}
1
+ {"version":3,"file":"uptime-kuma.mjs","names":[],"sources":["../../../src/services/definitions/uptime-kuma.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const uptimeKumaDefinition: ServiceDefinition = {\n\tid: \"uptime-kuma\",\n\tname: \"Uptime Kuma\",\n\tdescription:\n\t\t\"Self-hosted monitoring tool for tracking uptime of websites, APIs, and services with a sleek dashboard and multi-notification support.\",\n\tcategory: \"monitoring\",\n\ticon: \"📡\",\n\n\timage: \"louislam/uptime-kuma\",\n\timageTag: \"2\",\n\tports: [\n\t\t{\n\t\t\thost: 3001,\n\t\t\tcontainer: 3001,\n\t\t\tdescription: \"Uptime Kuma web interface\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"uptime-kuma-data\",\n\t\t\tcontainerPath: \"/app/data\",\n\t\t\tdescription: \"Persistent Uptime Kuma data and configuration\",\n\t\t},\n\t],\n\tenvironment: [],\n\thealthcheck: {\n\t\ttest: \"curl -sf http://localhost:3001 || exit 1\",\n\t\tinterval: \"30s\",\n\t\ttimeout: \"10s\",\n\t\tretries: 3,\n\t\tstartPeriod: \"15s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [],\n\topenclawEnvVars: [],\n\n\tdocsUrl: \"https://github.com/louislam/uptime-kuma/wiki\",\n\ttags: [\"uptime\", \"monitoring\", \"status-page\", \"alerts\"],\n\tmaturity: \"stable\",\n\n\trequires: [],\n\trecommends: [],\n\tconflictsWith: [],\n\n\tminMemoryMB: 256,\n\tgpuRequired: false,\n\tcapDropCompatible: false,\n\tproxyPath: \"/uptime-kuma\",\n\tfirstBootCapabilities: [\"CHOWN\", \"SETGID\", \"SETUID\"],\n};\n"],"mappings":";AAEA,MAAa,uBAA0C;CACtD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,aAAa,EAAE;CACf,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,EAAE;CACV,iBAAiB,EAAE;CAEnB,SAAS;CACT,MAAM;EAAC;EAAU;EAAc;EAAe;EAAS;CACvD,UAAU;CAEV,UAAU,EAAE;CACZ,YAAY,EAAE;CACd,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb,mBAAmB;CACnB,WAAW;CACX,uBAAuB;EAAC;EAAS;EAAU;EAAS;CACpD"}
@@ -4,6 +4,9 @@ const require_services_definitions_index = require("./definitions/index.cjs");
4
4
  const registryMap = /* @__PURE__ */ new Map();
5
5
  for (const def of require_services_definitions_index.allServiceDefinitions) {
6
6
  if (registryMap.has(def.id)) throw new Error(`Duplicate service definition ID: "${def.id}". Each service must have a unique ID.`);
7
+ const hasImage = def.image && def.imageTag;
8
+ const hasGitSource = def.gitSource && def.buildContext;
9
+ if (!hasImage && !hasGitSource) throw new Error(`Service "${def.id}" must specify either image+imageTag or gitSource+buildContext.`);
7
10
  registryMap.set(def.id, def);
8
11
  }
9
12
  /** Readonly map of all registered services indexed by ID */
@@ -1 +1 @@
1
- {"version":3,"file":"registry.cjs","names":["allServiceDefinitions"],"sources":["../../src/services/registry.ts"],"sourcesContent":["import type { ServiceCategory, ServiceDefinition } from \"../types.js\";\nimport { allServiceDefinitions } from \"./definitions/index.js\";\n\n// Build the registry map and validate no duplicates\nconst registryMap = new Map<string, ServiceDefinition>();\n\nfor (const def of allServiceDefinitions) {\n\tif (registryMap.has(def.id)) {\n\t\tthrow new Error(\n\t\t\t`Duplicate service definition ID: \"${def.id}\". Each service must have a unique ID.`,\n\t\t);\n\t}\n\tregistryMap.set(def.id, def);\n}\n\n/** Readonly map of all registered services indexed by ID */\nexport const serviceRegistry: ReadonlyMap<string, ServiceDefinition> = registryMap;\n\n/** Look up a service by its unique ID */\nexport function getServiceById(id: string): ServiceDefinition | undefined {\n\treturn registryMap.get(id);\n}\n\n/** Get all services in a given category */\nexport function getServicesByCategory(category: ServiceCategory): ServiceDefinition[] {\n\treturn allServiceDefinitions.filter((s) => s.category === category);\n}\n\n/** Get all registered services */\nexport function getAllServices(): ServiceDefinition[] {\n\treturn [...allServiceDefinitions];\n}\n\n/** Get services matching a specific tag */\nexport function getServicesByTag(tag: string): ServiceDefinition[] {\n\treturn allServiceDefinitions.filter((s) => s.tags.includes(tag));\n}\n"],"mappings":";;;AAIA,MAAM,8BAAc,IAAI,KAAgC;AAExD,KAAK,MAAM,OAAOA,mCAAAA,uBAAuB;AACxC,KAAI,YAAY,IAAI,IAAI,GAAG,CAC1B,OAAM,IAAI,MACT,qCAAqC,IAAI,GAAG,wCAC5C;AAEF,aAAY,IAAI,IAAI,IAAI,IAAI;;;AAI7B,MAAa,kBAA0D;;AAGvE,SAAgB,eAAe,IAA2C;AACzE,QAAO,YAAY,IAAI,GAAG;;;AAI3B,SAAgB,sBAAsB,UAAgD;AACrF,QAAOA,mCAAAA,sBAAsB,QAAQ,MAAM,EAAE,aAAa,SAAS;;;AAIpE,SAAgB,iBAAsC;AACrD,QAAO,CAAC,GAAGA,mCAAAA,sBAAsB;;;AAIlC,SAAgB,iBAAiB,KAAkC;AAClE,QAAOA,mCAAAA,sBAAsB,QAAQ,MAAM,EAAE,KAAK,SAAS,IAAI,CAAC"}
1
+ {"version":3,"file":"registry.cjs","names":["allServiceDefinitions"],"sources":["../../src/services/registry.ts"],"sourcesContent":["import type { ServiceCategory, ServiceDefinition } from \"../types.js\";\nimport { allServiceDefinitions } from \"./definitions/index.js\";\n\n// Build the registry map and validate no duplicates\nconst registryMap = new Map<string, ServiceDefinition>();\n\nfor (const def of allServiceDefinitions) {\n\tif (registryMap.has(def.id)) {\n\t\tthrow new Error(\n\t\t\t`Duplicate service definition ID: \"${def.id}\". Each service must have a unique ID.`,\n\t\t);\n\t}\n\tconst hasImage = def.image && def.imageTag;\n\tconst hasGitSource = def.gitSource && def.buildContext;\n\tif (!hasImage && !hasGitSource) {\n\t\tthrow new Error(\n\t\t\t`Service \"${def.id}\" must specify either image+imageTag or gitSource+buildContext.`,\n\t\t);\n\t}\n\tregistryMap.set(def.id, def);\n}\n\n/** Readonly map of all registered services indexed by ID */\nexport const serviceRegistry: ReadonlyMap<string, ServiceDefinition> = registryMap;\n\n/** Look up a service by its unique ID */\nexport function getServiceById(id: string): ServiceDefinition | undefined {\n\treturn registryMap.get(id);\n}\n\n/** Get all services in a given category */\nexport function getServicesByCategory(category: ServiceCategory): ServiceDefinition[] {\n\treturn allServiceDefinitions.filter((s) => s.category === category);\n}\n\n/** Get all registered services */\nexport function getAllServices(): ServiceDefinition[] {\n\treturn [...allServiceDefinitions];\n}\n\n/** Get services matching a specific tag */\nexport function getServicesByTag(tag: string): ServiceDefinition[] {\n\treturn allServiceDefinitions.filter((s) => s.tags.includes(tag));\n}\n"],"mappings":";;;AAIA,MAAM,8BAAc,IAAI,KAAgC;AAExD,KAAK,MAAM,OAAOA,mCAAAA,uBAAuB;AACxC,KAAI,YAAY,IAAI,IAAI,GAAG,CAC1B,OAAM,IAAI,MACT,qCAAqC,IAAI,GAAG,wCAC5C;CAEF,MAAM,WAAW,IAAI,SAAS,IAAI;CAClC,MAAM,eAAe,IAAI,aAAa,IAAI;AAC1C,KAAI,CAAC,YAAY,CAAC,aACjB,OAAM,IAAI,MACT,YAAY,IAAI,GAAG,iEACnB;AAEF,aAAY,IAAI,IAAI,IAAI,IAAI;;;AAI7B,MAAa,kBAA0D;;AAGvE,SAAgB,eAAe,IAA2C;AACzE,QAAO,YAAY,IAAI,GAAG;;;AAI3B,SAAgB,sBAAsB,UAAgD;AACrF,QAAOA,mCAAAA,sBAAsB,QAAQ,MAAM,EAAE,aAAa,SAAS;;;AAIpE,SAAgB,iBAAsC;AACrD,QAAO,CAAC,GAAGA,mCAAAA,sBAAsB;;;AAIlC,SAAgB,iBAAiB,KAAkC;AAClE,QAAOA,mCAAAA,sBAAsB,QAAQ,MAAM,EAAE,KAAK,SAAS,IAAI,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.cts","names":[],"sources":["../../src/services/registry.ts"],"mappings":";;;;cAgBa,eAAA,EAAiB,WAAA,SAAoB,iBAAA;AAAlD;AAAA,iBAGgB,cAAA,CAAe,EAAA,WAAa,iBAAA;;iBAK5B,qBAAA,CAAsB,QAAA,EAAU,eAAA,GAAkB,iBAAA;;iBAKlD,cAAA,CAAA,GAAkB,iBAAA;;iBAKlB,gBAAA,CAAiB,GAAA,WAAc,iBAAA"}
1
+ {"version":3,"file":"registry.d.cts","names":[],"sources":["../../src/services/registry.ts"],"mappings":";;;;cAuBa,eAAA,EAAiB,WAAA,SAAoB,iBAAA;AAAlD;AAAA,iBAGgB,cAAA,CAAe,EAAA,WAAa,iBAAA;;iBAK5B,qBAAA,CAAsB,QAAA,EAAU,eAAA,GAAkB,iBAAA;;iBAKlD,cAAA,CAAA,GAAkB,iBAAA;;iBAKlB,gBAAA,CAAiB,GAAA,WAAc,iBAAA"}