@better-openclaw/core 1.0.16 → 1.0.19

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 (970) hide show
  1. package/README.md +27 -0
  2. package/dist/bare-metal-partition.cjs +53 -0
  3. package/dist/bare-metal-partition.cjs.map +1 -0
  4. package/dist/bare-metal-partition.d.cts +26 -0
  5. package/dist/bare-metal-partition.d.cts.map +1 -0
  6. package/dist/bare-metal-partition.test.cjs +57 -0
  7. package/dist/bare-metal-partition.test.cjs.map +1 -0
  8. package/dist/bare-metal-partition.test.d.cts +1 -0
  9. package/dist/bare-metal-partition.test.mjs +1 -1
  10. package/dist/chunk-C0xms8kb.cjs +34 -0
  11. package/dist/compose-validation.test.cjs +67 -0
  12. package/dist/compose-validation.test.cjs.map +1 -0
  13. package/dist/compose-validation.test.d.cts +1 -0
  14. package/dist/compose-validation.test.d.mts +1 -0
  15. package/dist/compose-validation.test.mjs +66 -0
  16. package/dist/compose-validation.test.mjs.map +1 -0
  17. package/dist/composer.cjs +462 -0
  18. package/dist/composer.cjs.map +1 -0
  19. package/dist/composer.d.cts +21 -0
  20. package/dist/composer.d.cts.map +1 -0
  21. package/dist/composer.d.mts.map +1 -1
  22. package/dist/composer.mjs +187 -27
  23. package/dist/composer.mjs.map +1 -1
  24. package/dist/composer.snapshot.test.cjs +91 -0
  25. package/dist/composer.snapshot.test.cjs.map +1 -0
  26. package/dist/composer.snapshot.test.d.cts +1 -0
  27. package/dist/composer.snapshot.test.mjs +1 -1
  28. package/dist/composer.test.cjs +166 -0
  29. package/dist/composer.test.cjs.map +1 -0
  30. package/dist/composer.test.d.cts +1 -0
  31. package/dist/composer.test.mjs +2 -2
  32. package/dist/composer.test.mjs.map +1 -1
  33. package/dist/deployers/coolify.cjs +179 -0
  34. package/dist/deployers/coolify.cjs.map +1 -0
  35. package/dist/deployers/coolify.d.cts +25 -0
  36. package/dist/deployers/coolify.d.cts.map +1 -0
  37. package/dist/deployers/coolify.d.mts +25 -0
  38. package/dist/deployers/coolify.d.mts.map +1 -0
  39. package/dist/deployers/coolify.mjs +177 -0
  40. package/dist/deployers/coolify.mjs.map +1 -0
  41. package/dist/deployers/dokploy.cjs +145 -0
  42. package/dist/deployers/dokploy.cjs.map +1 -0
  43. package/dist/deployers/dokploy.d.cts +24 -0
  44. package/dist/deployers/dokploy.d.cts.map +1 -0
  45. package/dist/deployers/dokploy.d.mts +24 -0
  46. package/dist/deployers/dokploy.d.mts.map +1 -0
  47. package/dist/deployers/dokploy.mjs +143 -0
  48. package/dist/deployers/dokploy.mjs.map +1 -0
  49. package/dist/deployers/index.cjs +26 -0
  50. package/dist/deployers/index.cjs.map +1 -0
  51. package/dist/deployers/index.d.cts +14 -0
  52. package/dist/deployers/index.d.cts.map +1 -0
  53. package/dist/deployers/index.d.mts +14 -0
  54. package/dist/deployers/index.d.mts.map +1 -0
  55. package/dist/deployers/index.mjs +21 -0
  56. package/dist/deployers/index.mjs.map +1 -0
  57. package/dist/deployers/types.cjs +0 -0
  58. package/dist/deployers/types.d.cts +72 -0
  59. package/dist/deployers/types.d.cts.map +1 -0
  60. package/dist/deployers/types.d.mts +72 -0
  61. package/dist/deployers/types.d.mts.map +1 -0
  62. package/dist/deployers/types.mjs +1 -0
  63. package/dist/errors.cjs +27 -0
  64. package/dist/errors.cjs.map +1 -0
  65. package/dist/errors.d.cts +17 -0
  66. package/dist/errors.d.cts.map +1 -0
  67. package/dist/generate.cjs +225 -0
  68. package/dist/generate.cjs.map +1 -0
  69. package/dist/generate.d.cts +12 -0
  70. package/dist/generate.d.cts.map +1 -0
  71. package/dist/generate.d.mts.map +1 -1
  72. package/dist/generate.mjs +34 -5
  73. package/dist/generate.mjs.map +1 -1
  74. package/dist/generate.test.cjs +283 -0
  75. package/dist/generate.test.cjs.map +1 -0
  76. package/dist/generate.test.d.cts +1 -0
  77. package/dist/generate.test.mjs +1 -1
  78. package/dist/generators/bare-metal-install.cjs +226 -0
  79. package/dist/generators/bare-metal-install.cjs.map +1 -0
  80. package/dist/generators/bare-metal-install.d.cts +17 -0
  81. package/dist/generators/bare-metal-install.d.cts.map +1 -0
  82. package/dist/generators/bare-metal-install.test.cjs +47 -0
  83. package/dist/generators/bare-metal-install.test.cjs.map +1 -0
  84. package/dist/generators/bare-metal-install.test.d.cts +1 -0
  85. package/dist/generators/bare-metal-install.test.mjs +1 -1
  86. package/dist/generators/caddy.cjs +79 -0
  87. package/dist/generators/caddy.cjs.map +1 -0
  88. package/dist/generators/caddy.d.cts +17 -0
  89. package/dist/generators/caddy.d.cts.map +1 -0
  90. package/dist/generators/caddy.test.cjs +44 -0
  91. package/dist/generators/caddy.test.cjs.map +1 -0
  92. package/dist/generators/caddy.test.d.cts +1 -0
  93. package/dist/generators/caddy.test.mjs +1 -1
  94. package/dist/generators/cloud-init.cjs +132 -0
  95. package/dist/generators/cloud-init.cjs.map +1 -0
  96. package/dist/generators/cloud-init.d.cts +25 -0
  97. package/dist/generators/cloud-init.d.cts.map +1 -0
  98. package/dist/generators/cloud-init.d.mts +25 -0
  99. package/dist/generators/cloud-init.d.mts.map +1 -0
  100. package/dist/generators/cloud-init.mjs +130 -0
  101. package/dist/generators/cloud-init.mjs.map +1 -0
  102. package/dist/generators/env.cjs +325 -0
  103. package/dist/generators/env.cjs.map +1 -0
  104. package/dist/generators/env.d.cts +52 -0
  105. package/dist/generators/env.d.cts.map +1 -0
  106. package/dist/generators/env.d.mts +6 -0
  107. package/dist/generators/env.d.mts.map +1 -1
  108. package/dist/generators/env.mjs +58 -6
  109. package/dist/generators/env.mjs.map +1 -1
  110. package/dist/generators/env.test.cjs +59 -0
  111. package/dist/generators/env.test.cjs.map +1 -0
  112. package/dist/generators/env.test.d.cts +1 -0
  113. package/dist/generators/env.test.mjs +1 -1
  114. package/dist/generators/get-shit-done.cjs +40 -0
  115. package/dist/generators/get-shit-done.cjs.map +1 -0
  116. package/dist/generators/get-shit-done.d.cts +10 -0
  117. package/dist/generators/get-shit-done.d.cts.map +1 -0
  118. package/dist/generators/grafana.cjs +296 -0
  119. package/dist/generators/grafana.cjs.map +1 -0
  120. package/dist/generators/grafana.d.cts +22 -0
  121. package/dist/generators/grafana.d.cts.map +1 -0
  122. package/dist/generators/health-check.cjs +707 -0
  123. package/dist/generators/health-check.cjs.map +1 -0
  124. package/dist/generators/health-check.d.cts +18 -0
  125. package/dist/generators/health-check.d.cts.map +1 -0
  126. package/dist/generators/health-check.d.mts +2 -2
  127. package/dist/generators/health-check.d.mts.map +1 -1
  128. package/dist/generators/health-check.mjs.map +1 -1
  129. package/dist/generators/health-check.test.cjs +84 -0
  130. package/dist/generators/health-check.test.cjs.map +1 -0
  131. package/dist/generators/health-check.test.d.cts +1 -0
  132. package/dist/generators/health-check.test.mjs +1 -1
  133. package/dist/generators/n8n-workflows.cjs +77 -0
  134. package/dist/generators/n8n-workflows.cjs.map +1 -0
  135. package/dist/generators/n8n-workflows.d.cts +11 -0
  136. package/dist/generators/n8n-workflows.d.cts.map +1 -0
  137. package/dist/generators/native-services.cjs +80 -0
  138. package/dist/generators/native-services.cjs.map +1 -0
  139. package/dist/generators/native-services.d.cts +17 -0
  140. package/dist/generators/native-services.d.cts.map +1 -0
  141. package/dist/generators/openclaw-install-script.cjs +68 -0
  142. package/dist/generators/openclaw-install-script.cjs.map +1 -0
  143. package/dist/generators/openclaw-install-script.d.cts +12 -0
  144. package/dist/generators/openclaw-install-script.d.cts.map +1 -0
  145. package/dist/generators/openclaw-install-script.d.mts +12 -0
  146. package/dist/generators/openclaw-install-script.d.mts.map +1 -0
  147. package/dist/generators/openclaw-install-script.mjs +66 -0
  148. package/dist/generators/openclaw-install-script.mjs.map +1 -0
  149. package/dist/generators/openclaw-json.cjs +540 -0
  150. package/dist/generators/openclaw-json.cjs.map +1 -0
  151. package/dist/generators/openclaw-json.d.cts +16 -0
  152. package/dist/generators/openclaw-json.d.cts.map +1 -0
  153. package/dist/generators/openclaw-json.d.mts +8 -3
  154. package/dist/generators/openclaw-json.d.mts.map +1 -1
  155. package/dist/generators/openclaw-json.mjs +214 -86
  156. package/dist/generators/openclaw-json.mjs.map +1 -1
  157. package/dist/generators/postgres-init.cjs +189 -0
  158. package/dist/generators/postgres-init.cjs.map +1 -0
  159. package/dist/generators/postgres-init.d.cts +30 -0
  160. package/dist/generators/postgres-init.d.cts.map +1 -0
  161. package/dist/generators/postgres-init.d.mts.map +1 -1
  162. package/dist/generators/postgres-init.mjs +35 -0
  163. package/dist/generators/postgres-init.mjs.map +1 -1
  164. package/dist/generators/prometheus.cjs +109 -0
  165. package/dist/generators/prometheus.cjs.map +1 -0
  166. package/dist/generators/prometheus.d.cts +14 -0
  167. package/dist/generators/prometheus.d.cts.map +1 -0
  168. package/dist/generators/readme.cjs +286 -0
  169. package/dist/generators/readme.cjs.map +1 -0
  170. package/dist/generators/readme.d.cts +27 -0
  171. package/dist/generators/readme.d.cts.map +1 -0
  172. package/dist/generators/readme.d.mts +3 -1
  173. package/dist/generators/readme.d.mts.map +1 -1
  174. package/dist/generators/readme.mjs +88 -3
  175. package/dist/generators/readme.mjs.map +1 -1
  176. package/dist/generators/scripts.cjs +353 -0
  177. package/dist/generators/scripts.cjs.map +1 -0
  178. package/dist/generators/scripts.d.cts +10 -0
  179. package/dist/generators/scripts.d.cts.map +1 -0
  180. package/dist/generators/scripts.test.cjs +51 -0
  181. package/dist/generators/scripts.test.cjs.map +1 -0
  182. package/dist/generators/scripts.test.d.cts +1 -0
  183. package/dist/generators/scripts.test.mjs +1 -1
  184. package/dist/generators/skills.cjs +590 -0
  185. package/dist/generators/skills.cjs.map +1 -0
  186. package/dist/generators/skills.d.cts +14 -0
  187. package/dist/generators/skills.d.cts.map +1 -0
  188. package/dist/generators/stack-manifest.cjs +70 -0
  189. package/dist/generators/stack-manifest.cjs.map +1 -0
  190. package/dist/generators/stack-manifest.d.cts +51 -0
  191. package/dist/generators/stack-manifest.d.cts.map +1 -0
  192. package/dist/generators/stack-manifest.d.mts +51 -0
  193. package/dist/generators/stack-manifest.d.mts.map +1 -0
  194. package/dist/generators/stack-manifest.mjs +68 -0
  195. package/dist/generators/stack-manifest.mjs.map +1 -0
  196. package/dist/generators/traefik.cjs +88 -0
  197. package/dist/generators/traefik.cjs.map +1 -0
  198. package/dist/generators/traefik.d.cts +19 -0
  199. package/dist/generators/traefik.d.cts.map +1 -0
  200. package/dist/generators/traefik.test.cjs +68 -0
  201. package/dist/generators/traefik.test.cjs.map +1 -0
  202. package/dist/generators/traefik.test.d.cts +1 -0
  203. package/dist/generators/traefik.test.mjs +1 -1
  204. package/dist/index.cjs +118 -0
  205. package/dist/index.d.cts +31 -0
  206. package/dist/index.d.mts +9 -3
  207. package/dist/index.mjs +8 -3
  208. package/dist/magic-string.es-D2agHT3I.cjs +1015 -0
  209. package/dist/magic-string.es-D2agHT3I.cjs.map +1 -0
  210. package/dist/manifest-4uLbISXV.cjs +1190 -0
  211. package/dist/manifest-4uLbISXV.cjs.map +1 -0
  212. package/dist/migrations.cjs +37 -0
  213. package/dist/migrations.cjs.map +1 -0
  214. package/dist/migrations.d.cts +14 -0
  215. package/dist/migrations.d.cts.map +1 -0
  216. package/dist/migrations.test.cjs +41 -0
  217. package/dist/migrations.test.cjs.map +1 -0
  218. package/dist/migrations.test.d.cts +1 -0
  219. package/dist/migrations.test.mjs +1 -1
  220. package/dist/port-scanner.cjs +125 -0
  221. package/dist/port-scanner.cjs.map +1 -0
  222. package/dist/port-scanner.d.cts +27 -0
  223. package/dist/port-scanner.d.cts.map +1 -0
  224. package/dist/port-scanner.d.mts +27 -0
  225. package/dist/port-scanner.d.mts.map +1 -0
  226. package/dist/port-scanner.mjs +122 -0
  227. package/dist/port-scanner.mjs.map +1 -0
  228. package/dist/presets/presets.test.cjs +65 -0
  229. package/dist/presets/presets.test.cjs.map +1 -0
  230. package/dist/presets/presets.test.d.cts +1 -0
  231. package/dist/presets/presets.test.d.mts +1 -0
  232. package/dist/presets/presets.test.mjs +64 -0
  233. package/dist/presets/presets.test.mjs.map +1 -0
  234. package/dist/presets/registry.cjs +193 -0
  235. package/dist/presets/registry.cjs.map +1 -0
  236. package/dist/presets/registry.d.cts +9 -0
  237. package/dist/presets/registry.d.cts.map +1 -0
  238. package/dist/presets/registry.d.mts.map +1 -1
  239. package/dist/presets/registry.mjs +38 -8
  240. package/dist/presets/registry.mjs.map +1 -1
  241. package/dist/presets/registry.test.cjs +36 -0
  242. package/dist/presets/registry.test.cjs.map +1 -0
  243. package/dist/presets/registry.test.d.cts +1 -0
  244. package/dist/presets/registry.test.mjs +5 -2
  245. package/dist/presets/registry.test.mjs.map +1 -1
  246. package/dist/resolver.cjs +217 -0
  247. package/dist/resolver.cjs.map +1 -0
  248. package/dist/resolver.d.cts +26 -0
  249. package/dist/resolver.d.cts.map +1 -0
  250. package/dist/resolver.mjs +2 -0
  251. package/dist/resolver.mjs.map +1 -1
  252. package/dist/resolver.test.cjs +236 -0
  253. package/dist/resolver.test.cjs.map +1 -0
  254. package/dist/resolver.test.d.cts +1 -0
  255. package/dist/resolver.test.mjs +1 -1
  256. package/dist/schema.cjs +354 -0
  257. package/dist/schema.cjs.map +1 -0
  258. package/dist/schema.d.cts +854 -0
  259. package/dist/schema.d.cts.map +1 -0
  260. package/dist/schema.d.mts +56 -1
  261. package/dist/schema.d.mts.map +1 -1
  262. package/dist/schema.mjs +31 -4
  263. package/dist/schema.mjs.map +1 -1
  264. package/dist/schema.test.cjs +263 -0
  265. package/dist/schema.test.cjs.map +1 -0
  266. package/dist/schema.test.d.cts +1 -0
  267. package/dist/schema.test.mjs +1 -1
  268. package/dist/services/definitions/anything-llm.cjs +46 -0
  269. package/dist/services/definitions/anything-llm.cjs.map +1 -0
  270. package/dist/services/definitions/anything-llm.d.cts +7 -0
  271. package/dist/services/definitions/anything-llm.d.cts.map +1 -0
  272. package/dist/services/definitions/anything-llm.mjs +2 -2
  273. package/dist/services/definitions/anything-llm.mjs.map +1 -1
  274. package/dist/services/definitions/appflowy.cjs +47 -0
  275. package/dist/services/definitions/appflowy.cjs.map +1 -0
  276. package/dist/services/definitions/appflowy.d.cts +7 -0
  277. package/dist/services/definitions/appflowy.d.cts.map +1 -0
  278. package/dist/services/definitions/appflowy.mjs +1 -1
  279. package/dist/services/definitions/appflowy.mjs.map +1 -1
  280. package/dist/services/definitions/authentik.cjs +107 -0
  281. package/dist/services/definitions/authentik.cjs.map +1 -0
  282. package/dist/services/definitions/authentik.d.cts +7 -0
  283. package/dist/services/definitions/authentik.d.cts.map +1 -0
  284. package/dist/services/definitions/authentik.mjs +5 -5
  285. package/dist/services/definitions/authentik.mjs.map +1 -1
  286. package/dist/services/definitions/beszel.cjs +47 -0
  287. package/dist/services/definitions/beszel.cjs.map +1 -0
  288. package/dist/services/definitions/beszel.d.cts +7 -0
  289. package/dist/services/definitions/beszel.d.cts.map +1 -0
  290. package/dist/services/definitions/beszel.mjs +1 -1
  291. package/dist/services/definitions/beszel.mjs.map +1 -1
  292. package/dist/services/definitions/browserless.cjs +87 -0
  293. package/dist/services/definitions/browserless.cjs.map +1 -0
  294. package/dist/services/definitions/browserless.d.cts +7 -0
  295. package/dist/services/definitions/browserless.d.cts.map +1 -0
  296. package/dist/services/definitions/browserless.mjs +1 -1
  297. package/dist/services/definitions/browserless.mjs.map +1 -1
  298. package/dist/services/definitions/caddy.cjs +73 -0
  299. package/dist/services/definitions/caddy.cjs.map +1 -0
  300. package/dist/services/definitions/caddy.d.cts +7 -0
  301. package/dist/services/definitions/caddy.d.cts.map +1 -0
  302. package/dist/services/definitions/caddy.mjs +2 -2
  303. package/dist/services/definitions/caddy.mjs.map +1 -1
  304. package/dist/services/definitions/cal-com.cjs +90 -0
  305. package/dist/services/definitions/cal-com.cjs.map +1 -0
  306. package/dist/services/definitions/cal-com.d.cts +7 -0
  307. package/dist/services/definitions/cal-com.d.cts.map +1 -0
  308. package/dist/services/definitions/cal-com.mjs +2 -2
  309. package/dist/services/definitions/cal-com.mjs.map +1 -1
  310. package/dist/services/definitions/chromadb.cjs +65 -0
  311. package/dist/services/definitions/chromadb.cjs.map +1 -0
  312. package/dist/services/definitions/chromadb.d.cts +7 -0
  313. package/dist/services/definitions/chromadb.d.cts.map +1 -0
  314. package/dist/services/definitions/chromadb.mjs +3 -3
  315. package/dist/services/definitions/chromadb.mjs.map +1 -1
  316. package/dist/services/definitions/claude-code.cjs +54 -0
  317. package/dist/services/definitions/claude-code.cjs.map +1 -0
  318. package/dist/services/definitions/claude-code.d.cts +7 -0
  319. package/dist/services/definitions/claude-code.d.cts.map +1 -0
  320. package/dist/services/definitions/claude-code.mjs +1 -1
  321. package/dist/services/definitions/claude-code.mjs.map +1 -1
  322. package/dist/services/definitions/code-server.cjs +68 -0
  323. package/dist/services/definitions/code-server.cjs.map +1 -0
  324. package/dist/services/definitions/code-server.d.cts +7 -0
  325. package/dist/services/definitions/code-server.d.cts.map +1 -0
  326. package/dist/services/definitions/code-server.mjs +1 -1
  327. package/dist/services/definitions/code-server.mjs.map +1 -1
  328. package/dist/services/definitions/codex.cjs +47 -0
  329. package/dist/services/definitions/codex.cjs.map +1 -0
  330. package/dist/services/definitions/codex.d.cts +7 -0
  331. package/dist/services/definitions/codex.d.cts.map +1 -0
  332. package/dist/services/definitions/codex.mjs +1 -1
  333. package/dist/services/definitions/codex.mjs.map +1 -1
  334. package/dist/services/definitions/comfyui.cjs +85 -0
  335. package/dist/services/definitions/comfyui.cjs.map +1 -0
  336. package/dist/services/definitions/comfyui.d.cts +7 -0
  337. package/dist/services/definitions/comfyui.d.cts.map +1 -0
  338. package/dist/services/definitions/comfyui.mjs +1 -1
  339. package/dist/services/definitions/comfyui.mjs.map +1 -1
  340. package/dist/services/definitions/convex-dashboard.cjs +48 -0
  341. package/dist/services/definitions/convex-dashboard.cjs.map +1 -0
  342. package/dist/services/definitions/convex-dashboard.d.cts +7 -0
  343. package/dist/services/definitions/convex-dashboard.d.cts.map +1 -0
  344. package/dist/services/definitions/convex.cjs +120 -0
  345. package/dist/services/definitions/convex.cjs.map +1 -0
  346. package/dist/services/definitions/convex.d.cts +7 -0
  347. package/dist/services/definitions/convex.d.cts.map +1 -0
  348. package/dist/services/definitions/coolify.cjs +51 -0
  349. package/dist/services/definitions/coolify.cjs.map +1 -0
  350. package/dist/services/definitions/coolify.d.cts +7 -0
  351. package/dist/services/definitions/coolify.d.cts.map +1 -0
  352. package/dist/services/definitions/coolify.mjs +1 -1
  353. package/dist/services/definitions/coolify.mjs.map +1 -1
  354. package/dist/services/definitions/crowdsec.cjs +64 -0
  355. package/dist/services/definitions/crowdsec.cjs.map +1 -0
  356. package/dist/services/definitions/crowdsec.d.cts +7 -0
  357. package/dist/services/definitions/crowdsec.d.cts.map +1 -0
  358. package/dist/services/definitions/crowdsec.mjs +2 -2
  359. package/dist/services/definitions/crowdsec.mjs.map +1 -1
  360. package/dist/services/definitions/desktop-environment.cjs +155 -0
  361. package/dist/services/definitions/desktop-environment.cjs.map +1 -0
  362. package/dist/services/definitions/desktop-environment.d.cts +7 -0
  363. package/dist/services/definitions/desktop-environment.d.cts.map +1 -0
  364. package/dist/services/definitions/desktop-environment.mjs +1 -1
  365. package/dist/services/definitions/desktop-environment.mjs.map +1 -1
  366. package/dist/services/definitions/dify.cjs +83 -0
  367. package/dist/services/definitions/dify.cjs.map +1 -0
  368. package/dist/services/definitions/dify.d.cts +7 -0
  369. package/dist/services/definitions/dify.d.cts.map +1 -0
  370. package/dist/services/definitions/dify.mjs +1 -1
  371. package/dist/services/definitions/dify.mjs.map +1 -1
  372. package/dist/services/definitions/docsgpt.cjs +47 -0
  373. package/dist/services/definitions/docsgpt.cjs.map +1 -0
  374. package/dist/services/definitions/docsgpt.d.cts +7 -0
  375. package/dist/services/definitions/docsgpt.d.cts.map +1 -0
  376. package/dist/services/definitions/docsgpt.mjs +1 -1
  377. package/dist/services/definitions/docsgpt.mjs.map +1 -1
  378. package/dist/services/definitions/dokploy.cjs +51 -0
  379. package/dist/services/definitions/dokploy.cjs.map +1 -0
  380. package/dist/services/definitions/dokploy.d.cts +7 -0
  381. package/dist/services/definitions/dokploy.d.cts.map +1 -0
  382. package/dist/services/definitions/dokploy.mjs +2 -2
  383. package/dist/services/definitions/dokploy.mjs.map +1 -1
  384. package/dist/services/definitions/dozzle.cjs +43 -0
  385. package/dist/services/definitions/dozzle.cjs.map +1 -0
  386. package/dist/services/definitions/dozzle.d.cts +7 -0
  387. package/dist/services/definitions/dozzle.d.cts.map +1 -0
  388. package/dist/services/definitions/dozzle.mjs +1 -1
  389. package/dist/services/definitions/dozzle.mjs.map +1 -1
  390. package/dist/services/definitions/ffmpeg.cjs +68 -0
  391. package/dist/services/definitions/ffmpeg.cjs.map +1 -0
  392. package/dist/services/definitions/ffmpeg.d.cts +7 -0
  393. package/dist/services/definitions/ffmpeg.d.cts.map +1 -0
  394. package/dist/services/definitions/ffmpeg.mjs +2 -2
  395. package/dist/services/definitions/ffmpeg.mjs.map +1 -1
  396. package/dist/services/definitions/flowise.cjs +47 -0
  397. package/dist/services/definitions/flowise.cjs.map +1 -0
  398. package/dist/services/definitions/flowise.d.cts +7 -0
  399. package/dist/services/definitions/flowise.d.cts.map +1 -0
  400. package/dist/services/definitions/flowise.mjs +1 -1
  401. package/dist/services/definitions/flowise.mjs.map +1 -1
  402. package/dist/services/definitions/gemini-cli.cjs +54 -0
  403. package/dist/services/definitions/gemini-cli.cjs.map +1 -0
  404. package/dist/services/definitions/gemini-cli.d.cts +7 -0
  405. package/dist/services/definitions/gemini-cli.d.cts.map +1 -0
  406. package/dist/services/definitions/gemini-cli.mjs +7 -1
  407. package/dist/services/definitions/gemini-cli.mjs.map +1 -1
  408. package/dist/services/definitions/ghost.cjs +60 -0
  409. package/dist/services/definitions/ghost.cjs.map +1 -0
  410. package/dist/services/definitions/ghost.d.cts +7 -0
  411. package/dist/services/definitions/ghost.d.cts.map +1 -0
  412. package/dist/services/definitions/ghost.mjs +1 -1
  413. package/dist/services/definitions/ghost.mjs.map +1 -1
  414. package/dist/services/definitions/gitea.cjs +51 -0
  415. package/dist/services/definitions/gitea.cjs.map +1 -0
  416. package/dist/services/definitions/gitea.d.cts +7 -0
  417. package/dist/services/definitions/gitea.d.cts.map +1 -0
  418. package/dist/services/definitions/gitea.mjs +1 -1
  419. package/dist/services/definitions/gitea.mjs.map +1 -1
  420. package/dist/services/definitions/gotify.cjs +64 -0
  421. package/dist/services/definitions/gotify.cjs.map +1 -0
  422. package/dist/services/definitions/gotify.d.cts +7 -0
  423. package/dist/services/definitions/gotify.d.cts.map +1 -0
  424. package/dist/services/definitions/gotify.mjs +3 -3
  425. package/dist/services/definitions/gotify.mjs.map +1 -1
  426. package/dist/services/definitions/grafana.cjs +77 -0
  427. package/dist/services/definitions/grafana.cjs.map +1 -0
  428. package/dist/services/definitions/grafana.d.cts +7 -0
  429. package/dist/services/definitions/grafana.d.cts.map +1 -0
  430. package/dist/services/definitions/grafana.mjs +2 -2
  431. package/dist/services/definitions/grafana.mjs.map +1 -1
  432. package/dist/services/definitions/headscale.cjs +73 -0
  433. package/dist/services/definitions/headscale.cjs.map +1 -0
  434. package/dist/services/definitions/headscale.d.cts +7 -0
  435. package/dist/services/definitions/headscale.d.cts.map +1 -0
  436. package/dist/services/definitions/headscale.mjs +2 -2
  437. package/dist/services/definitions/headscale.mjs.map +1 -1
  438. package/dist/services/definitions/hexstrike.cjs +46 -0
  439. package/dist/services/definitions/hexstrike.cjs.map +1 -0
  440. package/dist/services/definitions/hexstrike.d.cts +7 -0
  441. package/dist/services/definitions/hexstrike.d.cts.map +1 -0
  442. package/dist/services/definitions/hexstrike.mjs +1 -1
  443. package/dist/services/definitions/hexstrike.mjs.map +1 -1
  444. package/dist/services/definitions/homeassistant.cjs +63 -0
  445. package/dist/services/definitions/homeassistant.cjs.map +1 -0
  446. package/dist/services/definitions/homeassistant.d.cts +7 -0
  447. package/dist/services/definitions/homeassistant.d.cts.map +1 -0
  448. package/dist/services/definitions/homeassistant.mjs +1 -1
  449. package/dist/services/definitions/homeassistant.mjs.map +1 -1
  450. package/dist/services/definitions/immich.cjs +94 -0
  451. package/dist/services/definitions/immich.cjs.map +1 -0
  452. package/dist/services/definitions/immich.d.cts +7 -0
  453. package/dist/services/definitions/immich.d.cts.map +1 -0
  454. package/dist/services/definitions/immich.mjs +6 -6
  455. package/dist/services/definitions/immich.mjs.map +1 -1
  456. package/dist/services/definitions/index.cjs +291 -0
  457. package/dist/services/definitions/index.cjs.map +1 -0
  458. package/dist/services/definitions/index.d.cts +101 -0
  459. package/dist/services/definitions/index.d.cts.map +1 -0
  460. package/dist/services/definitions/jellyfin.cjs +64 -0
  461. package/dist/services/definitions/jellyfin.cjs.map +1 -0
  462. package/dist/services/definitions/jellyfin.d.cts +7 -0
  463. package/dist/services/definitions/jellyfin.d.cts.map +1 -0
  464. package/dist/services/definitions/jellyfin.mjs +1 -1
  465. package/dist/services/definitions/jellyfin.mjs.map +1 -1
  466. package/dist/services/definitions/jenkins.cjs +64 -0
  467. package/dist/services/definitions/jenkins.cjs.map +1 -0
  468. package/dist/services/definitions/jenkins.d.cts +7 -0
  469. package/dist/services/definitions/jenkins.d.cts.map +1 -0
  470. package/dist/services/definitions/jenkins.mjs +1 -1
  471. package/dist/services/definitions/jenkins.mjs.map +1 -1
  472. package/dist/services/definitions/kimi.cjs +48 -0
  473. package/dist/services/definitions/kimi.cjs.map +1 -0
  474. package/dist/services/definitions/kimi.d.cts +7 -0
  475. package/dist/services/definitions/kimi.d.cts.map +1 -0
  476. package/dist/services/definitions/kimi.mjs +1 -1
  477. package/dist/services/definitions/kimi.mjs.map +1 -1
  478. package/dist/services/definitions/lasuite-meet-agents.cjs +38 -0
  479. package/dist/services/definitions/lasuite-meet-agents.cjs.map +1 -0
  480. package/dist/services/definitions/lasuite-meet-agents.d.cts +7 -0
  481. package/dist/services/definitions/lasuite-meet-agents.d.cts.map +1 -0
  482. package/dist/services/definitions/lasuite-meet-agents.mjs +1 -1
  483. package/dist/services/definitions/lasuite-meet-agents.mjs.map +1 -1
  484. package/dist/services/definitions/lasuite-meet-backend.cjs +136 -0
  485. package/dist/services/definitions/lasuite-meet-backend.cjs.map +1 -0
  486. package/dist/services/definitions/lasuite-meet-backend.d.cts +7 -0
  487. package/dist/services/definitions/lasuite-meet-backend.d.cts.map +1 -0
  488. package/dist/services/definitions/lasuite-meet-backend.mjs +3 -3
  489. package/dist/services/definitions/lasuite-meet-backend.mjs.map +1 -1
  490. package/dist/services/definitions/lasuite-meet-frontend.cjs +50 -0
  491. package/dist/services/definitions/lasuite-meet-frontend.cjs.map +1 -0
  492. package/dist/services/definitions/lasuite-meet-frontend.d.cts +7 -0
  493. package/dist/services/definitions/lasuite-meet-frontend.d.cts.map +1 -0
  494. package/dist/services/definitions/lasuite-meet-frontend.mjs +3 -3
  495. package/dist/services/definitions/lasuite-meet-frontend.mjs.map +1 -1
  496. package/dist/services/definitions/librechat.cjs +52 -0
  497. package/dist/services/definitions/librechat.cjs.map +1 -0
  498. package/dist/services/definitions/librechat.d.cts +7 -0
  499. package/dist/services/definitions/librechat.d.cts.map +1 -0
  500. package/dist/services/definitions/librechat.mjs +1 -1
  501. package/dist/services/definitions/librechat.mjs.map +1 -1
  502. package/dist/services/definitions/lightpanda.cjs +61 -0
  503. package/dist/services/definitions/lightpanda.cjs.map +1 -0
  504. package/dist/services/definitions/lightpanda.d.cts +7 -0
  505. package/dist/services/definitions/lightpanda.d.cts.map +1 -0
  506. package/dist/services/definitions/litellm.cjs +49 -0
  507. package/dist/services/definitions/litellm.cjs.map +1 -0
  508. package/dist/services/definitions/litellm.d.cts +7 -0
  509. package/dist/services/definitions/litellm.d.cts.map +1 -0
  510. package/dist/services/definitions/litellm.mjs +1 -1
  511. package/dist/services/definitions/litellm.mjs.map +1 -1
  512. package/dist/services/definitions/livekit.cjs +58 -0
  513. package/dist/services/definitions/livekit.cjs.map +1 -0
  514. package/dist/services/definitions/livekit.d.cts +7 -0
  515. package/dist/services/definitions/livekit.d.cts.map +1 -0
  516. package/dist/services/definitions/loki.cjs +53 -0
  517. package/dist/services/definitions/loki.cjs.map +1 -0
  518. package/dist/services/definitions/loki.d.cts +7 -0
  519. package/dist/services/definitions/loki.d.cts.map +1 -0
  520. package/dist/services/definitions/loki.mjs +1 -1
  521. package/dist/services/definitions/loki.mjs.map +1 -1
  522. package/dist/services/definitions/matomo.cjs +82 -0
  523. package/dist/services/definitions/matomo.cjs.map +1 -0
  524. package/dist/services/definitions/matomo.d.cts +7 -0
  525. package/dist/services/definitions/matomo.d.cts.map +1 -0
  526. package/dist/services/definitions/matomo.mjs +1 -1
  527. package/dist/services/definitions/matomo.mjs.map +1 -1
  528. package/dist/services/definitions/matrix-synapse.cjs +90 -0
  529. package/dist/services/definitions/matrix-synapse.cjs.map +1 -0
  530. package/dist/services/definitions/matrix-synapse.d.cts +7 -0
  531. package/dist/services/definitions/matrix-synapse.d.cts.map +1 -0
  532. package/dist/services/definitions/matrix-synapse.mjs +1 -1
  533. package/dist/services/definitions/matrix-synapse.mjs.map +1 -1
  534. package/dist/services/definitions/mattermost.cjs +63 -0
  535. package/dist/services/definitions/mattermost.cjs.map +1 -0
  536. package/dist/services/definitions/mattermost.d.cts +7 -0
  537. package/dist/services/definitions/mattermost.d.cts.map +1 -0
  538. package/dist/services/definitions/mattermost.mjs +1 -1
  539. package/dist/services/definitions/mattermost.mjs.map +1 -1
  540. package/dist/services/definitions/meilisearch.cjs +80 -0
  541. package/dist/services/definitions/meilisearch.cjs.map +1 -0
  542. package/dist/services/definitions/meilisearch.d.cts +7 -0
  543. package/dist/services/definitions/meilisearch.d.cts.map +1 -0
  544. package/dist/services/definitions/meilisearch.mjs +4 -4
  545. package/dist/services/definitions/meilisearch.mjs.map +1 -1
  546. package/dist/services/definitions/milvus.cjs +77 -0
  547. package/dist/services/definitions/milvus.cjs.map +1 -0
  548. package/dist/services/definitions/milvus.d.cts +7 -0
  549. package/dist/services/definitions/milvus.d.cts.map +1 -0
  550. package/dist/services/definitions/milvus.mjs +1 -1
  551. package/dist/services/definitions/milvus.mjs.map +1 -1
  552. package/dist/services/definitions/minio.cjs +104 -0
  553. package/dist/services/definitions/minio.cjs.map +1 -0
  554. package/dist/services/definitions/minio.d.cts +7 -0
  555. package/dist/services/definitions/minio.d.cts.map +1 -0
  556. package/dist/services/definitions/minio.mjs +1 -1
  557. package/dist/services/definitions/minio.mjs.map +1 -1
  558. package/dist/services/definitions/mission-control.cjs +69 -0
  559. package/dist/services/definitions/mission-control.cjs.map +1 -0
  560. package/dist/services/definitions/mission-control.d.cts +7 -0
  561. package/dist/services/definitions/mission-control.d.cts.map +1 -0
  562. package/dist/services/definitions/mixpost.cjs +89 -0
  563. package/dist/services/definitions/mixpost.cjs.map +1 -0
  564. package/dist/services/definitions/mixpost.d.cts +7 -0
  565. package/dist/services/definitions/mixpost.d.cts.map +1 -0
  566. package/dist/services/definitions/mixpost.mjs +1 -1
  567. package/dist/services/definitions/mixpost.mjs.map +1 -1
  568. package/dist/services/definitions/motion-canvas.cjs +54 -0
  569. package/dist/services/definitions/motion-canvas.cjs.map +1 -0
  570. package/dist/services/definitions/motion-canvas.d.cts +7 -0
  571. package/dist/services/definitions/motion-canvas.d.cts.map +1 -0
  572. package/dist/services/definitions/motion-canvas.mjs +1 -1
  573. package/dist/services/definitions/motion-canvas.mjs.map +1 -1
  574. package/dist/services/definitions/n8n.cjs +156 -0
  575. package/dist/services/definitions/n8n.cjs.map +1 -0
  576. package/dist/services/definitions/n8n.d.cts +7 -0
  577. package/dist/services/definitions/n8n.d.cts.map +1 -0
  578. package/dist/services/definitions/n8n.mjs +1 -1
  579. package/dist/services/definitions/n8n.mjs.map +1 -1
  580. package/dist/services/definitions/neo4j.cjs +93 -0
  581. package/dist/services/definitions/neo4j.cjs.map +1 -0
  582. package/dist/services/definitions/neo4j.d.cts +7 -0
  583. package/dist/services/definitions/neo4j.d.cts.map +1 -0
  584. package/dist/services/definitions/neo4j.mjs +1 -1
  585. package/dist/services/definitions/neo4j.mjs.map +1 -1
  586. package/dist/services/definitions/nextcloud.cjs +82 -0
  587. package/dist/services/definitions/nextcloud.cjs.map +1 -0
  588. package/dist/services/definitions/nextcloud.d.cts +7 -0
  589. package/dist/services/definitions/nextcloud.d.cts.map +1 -0
  590. package/dist/services/definitions/nextcloud.mjs +19 -19
  591. package/dist/services/definitions/nextcloud.mjs.map +1 -1
  592. package/dist/services/definitions/nocodb.cjs +47 -0
  593. package/dist/services/definitions/nocodb.cjs.map +1 -0
  594. package/dist/services/definitions/nocodb.d.cts +7 -0
  595. package/dist/services/definitions/nocodb.d.cts.map +1 -0
  596. package/dist/services/definitions/nocodb.mjs +1 -1
  597. package/dist/services/definitions/nocodb.mjs.map +1 -1
  598. package/dist/services/definitions/ntfy.cjs +65 -0
  599. package/dist/services/definitions/ntfy.cjs.map +1 -0
  600. package/dist/services/definitions/ntfy.d.cts +7 -0
  601. package/dist/services/definitions/ntfy.d.cts.map +1 -0
  602. package/dist/services/definitions/ntfy.mjs +2 -2
  603. package/dist/services/definitions/ntfy.mjs.map +1 -1
  604. package/dist/services/definitions/ollama.cjs +68 -0
  605. package/dist/services/definitions/ollama.cjs.map +1 -0
  606. package/dist/services/definitions/ollama.d.cts +7 -0
  607. package/dist/services/definitions/ollama.d.cts.map +1 -0
  608. package/dist/services/definitions/ollama.mjs +1 -1
  609. package/dist/services/definitions/ollama.mjs.map +1 -1
  610. package/dist/services/definitions/open-webui.cjs +52 -0
  611. package/dist/services/definitions/open-webui.cjs.map +1 -0
  612. package/dist/services/definitions/open-webui.d.cts +7 -0
  613. package/dist/services/definitions/open-webui.d.cts.map +1 -0
  614. package/dist/services/definitions/open-webui.mjs +1 -1
  615. package/dist/services/definitions/open-webui.mjs.map +1 -1
  616. package/dist/services/definitions/opencode.cjs +52 -0
  617. package/dist/services/definitions/opencode.cjs.map +1 -0
  618. package/dist/services/definitions/opencode.d.cts +7 -0
  619. package/dist/services/definitions/opencode.d.cts.map +1 -0
  620. package/dist/services/definitions/opencode.mjs +1 -1
  621. package/dist/services/definitions/opencode.mjs.map +1 -1
  622. package/dist/services/definitions/openpanel.cjs +48 -0
  623. package/dist/services/definitions/openpanel.cjs.map +1 -0
  624. package/dist/services/definitions/openpanel.d.cts +7 -0
  625. package/dist/services/definitions/openpanel.d.cts.map +1 -0
  626. package/dist/services/definitions/openpanel.mjs +3 -3
  627. package/dist/services/definitions/openpanel.mjs.map +1 -1
  628. package/dist/services/definitions/outline.cjs +76 -0
  629. package/dist/services/definitions/outline.cjs.map +1 -0
  630. package/dist/services/definitions/outline.d.cts +7 -0
  631. package/dist/services/definitions/outline.d.cts.map +1 -0
  632. package/dist/services/definitions/paperless-ngx.cjs +95 -0
  633. package/dist/services/definitions/paperless-ngx.cjs.map +1 -0
  634. package/dist/services/definitions/paperless-ngx.d.cts +7 -0
  635. package/dist/services/definitions/paperless-ngx.d.cts.map +1 -0
  636. package/dist/services/definitions/paperless-ngx.mjs +1 -1
  637. package/dist/services/definitions/paperless-ngx.mjs.map +1 -1
  638. package/dist/services/definitions/pentagi.cjs +46 -0
  639. package/dist/services/definitions/pentagi.cjs.map +1 -0
  640. package/dist/services/definitions/pentagi.d.cts +7 -0
  641. package/dist/services/definitions/pentagi.d.cts.map +1 -0
  642. package/dist/services/definitions/pentagi.mjs +2 -2
  643. package/dist/services/definitions/pentagi.mjs.map +1 -1
  644. package/dist/services/definitions/pentestagent.cjs +41 -0
  645. package/dist/services/definitions/pentestagent.cjs.map +1 -0
  646. package/dist/services/definitions/pentestagent.d.cts +7 -0
  647. package/dist/services/definitions/pentestagent.d.cts.map +1 -0
  648. package/dist/services/definitions/playwright-server.cjs +44 -0
  649. package/dist/services/definitions/playwright-server.cjs.map +1 -0
  650. package/dist/services/definitions/playwright-server.d.cts +7 -0
  651. package/dist/services/definitions/playwright-server.d.cts.map +1 -0
  652. package/dist/services/definitions/playwright-server.mjs +1 -1
  653. package/dist/services/definitions/playwright-server.mjs.map +1 -1
  654. package/dist/services/definitions/portainer.cjs +51 -0
  655. package/dist/services/definitions/portainer.cjs.map +1 -0
  656. package/dist/services/definitions/portainer.d.cts +7 -0
  657. package/dist/services/definitions/portainer.d.cts.map +1 -0
  658. package/dist/services/definitions/portainer.mjs +1 -1
  659. package/dist/services/definitions/portainer.mjs.map +1 -1
  660. package/dist/services/definitions/postgresql.cjs +86 -0
  661. package/dist/services/definitions/postgresql.cjs.map +1 -0
  662. package/dist/services/definitions/postgresql.d.cts +7 -0
  663. package/dist/services/definitions/postgresql.d.cts.map +1 -0
  664. package/dist/services/definitions/postgresql.mjs +1 -1
  665. package/dist/services/definitions/postgresql.mjs.map +1 -1
  666. package/dist/services/definitions/postiz.cjs +85 -0
  667. package/dist/services/definitions/postiz.cjs.map +1 -0
  668. package/dist/services/definitions/postiz.d.cts +7 -0
  669. package/dist/services/definitions/postiz.d.cts.map +1 -0
  670. package/dist/services/definitions/postiz.mjs +1 -1
  671. package/dist/services/definitions/postiz.mjs.map +1 -1
  672. package/dist/services/definitions/prometheus.cjs +54 -0
  673. package/dist/services/definitions/prometheus.cjs.map +1 -0
  674. package/dist/services/definitions/prometheus.d.cts +7 -0
  675. package/dist/services/definitions/prometheus.d.cts.map +1 -0
  676. package/dist/services/definitions/prometheus.mjs +1 -1
  677. package/dist/services/definitions/prometheus.mjs.map +1 -1
  678. package/dist/services/definitions/qdrant.cjs +79 -0
  679. package/dist/services/definitions/qdrant.cjs.map +1 -0
  680. package/dist/services/definitions/qdrant.d.cts +7 -0
  681. package/dist/services/definitions/qdrant.d.cts.map +1 -0
  682. package/dist/services/definitions/qdrant.mjs +1 -1
  683. package/dist/services/definitions/qdrant.mjs.map +1 -1
  684. package/dist/services/definitions/redis.cjs +93 -0
  685. package/dist/services/definitions/redis.cjs.map +1 -0
  686. package/dist/services/definitions/redis.d.cts +7 -0
  687. package/dist/services/definitions/redis.d.cts.map +1 -0
  688. package/dist/services/definitions/redis.mjs +1 -1
  689. package/dist/services/definitions/redis.mjs.map +1 -1
  690. package/dist/services/definitions/remotion.cjs +57 -0
  691. package/dist/services/definitions/remotion.cjs.map +1 -0
  692. package/dist/services/definitions/remotion.d.cts +7 -0
  693. package/dist/services/definitions/remotion.d.cts.map +1 -0
  694. package/dist/services/definitions/remotion.mjs +1 -1
  695. package/dist/services/definitions/remotion.mjs.map +1 -1
  696. package/dist/services/definitions/rocketchat.cjs +59 -0
  697. package/dist/services/definitions/rocketchat.cjs.map +1 -0
  698. package/dist/services/definitions/rocketchat.d.cts +7 -0
  699. package/dist/services/definitions/rocketchat.d.cts.map +1 -0
  700. package/dist/services/definitions/rocketchat.mjs +1 -1
  701. package/dist/services/definitions/rocketchat.mjs.map +1 -1
  702. package/dist/services/definitions/scrapling.cjs +46 -0
  703. package/dist/services/definitions/scrapling.cjs.map +1 -0
  704. package/dist/services/definitions/scrapling.d.cts +7 -0
  705. package/dist/services/definitions/scrapling.d.cts.map +1 -0
  706. package/dist/services/definitions/scrapling.mjs +2 -2
  707. package/dist/services/definitions/scrapling.mjs.map +1 -1
  708. package/dist/services/definitions/searxng.cjs +67 -0
  709. package/dist/services/definitions/searxng.cjs.map +1 -0
  710. package/dist/services/definitions/searxng.d.cts +7 -0
  711. package/dist/services/definitions/searxng.d.cts.map +1 -0
  712. package/dist/services/definitions/searxng.mjs +1 -1
  713. package/dist/services/definitions/searxng.mjs.map +1 -1
  714. package/dist/services/definitions/signoz.cjs +56 -0
  715. package/dist/services/definitions/signoz.cjs.map +1 -0
  716. package/dist/services/definitions/signoz.d.cts +7 -0
  717. package/dist/services/definitions/signoz.d.cts.map +1 -0
  718. package/dist/services/definitions/signoz.mjs +2 -2
  719. package/dist/services/definitions/signoz.mjs.map +1 -1
  720. package/dist/services/definitions/solidityguard.cjs +51 -0
  721. package/dist/services/definitions/solidityguard.cjs.map +1 -0
  722. package/dist/services/definitions/solidityguard.d.cts +7 -0
  723. package/dist/services/definitions/solidityguard.d.cts.map +1 -0
  724. package/dist/services/definitions/solidityguard.mjs +1 -1
  725. package/dist/services/definitions/solidityguard.mjs.map +1 -1
  726. package/dist/services/definitions/stable-diffusion.cjs +50 -0
  727. package/dist/services/definitions/stable-diffusion.cjs.map +1 -0
  728. package/dist/services/definitions/stable-diffusion.d.cts +7 -0
  729. package/dist/services/definitions/stable-diffusion.d.cts.map +1 -0
  730. package/dist/services/definitions/stable-diffusion.mjs +1 -1
  731. package/dist/services/definitions/stable-diffusion.mjs.map +1 -1
  732. package/dist/services/definitions/steel-browser.cjs +79 -0
  733. package/dist/services/definitions/steel-browser.cjs.map +1 -0
  734. package/dist/services/definitions/steel-browser.d.cts +7 -0
  735. package/dist/services/definitions/steel-browser.d.cts.map +1 -0
  736. package/dist/services/definitions/steel-browser.mjs +1 -1
  737. package/dist/services/definitions/steel-browser.mjs.map +1 -1
  738. package/dist/services/definitions/stream-gateway.cjs +135 -0
  739. package/dist/services/definitions/stream-gateway.cjs.map +1 -0
  740. package/dist/services/definitions/stream-gateway.d.cts +7 -0
  741. package/dist/services/definitions/stream-gateway.d.cts.map +1 -0
  742. package/dist/services/definitions/stream-gateway.mjs +2 -2
  743. package/dist/services/definitions/stream-gateway.mjs.map +1 -1
  744. package/dist/services/definitions/supabase.cjs +71 -0
  745. package/dist/services/definitions/supabase.cjs.map +1 -0
  746. package/dist/services/definitions/supabase.d.cts +7 -0
  747. package/dist/services/definitions/supabase.d.cts.map +1 -0
  748. package/dist/services/definitions/supabase.mjs +2 -2
  749. package/dist/services/definitions/supabase.mjs.map +1 -1
  750. package/dist/services/definitions/tailscale.cjs +72 -0
  751. package/dist/services/definitions/tailscale.cjs.map +1 -0
  752. package/dist/services/definitions/tailscale.d.cts +7 -0
  753. package/dist/services/definitions/tailscale.d.cts.map +1 -0
  754. package/dist/services/definitions/tailscale.mjs +1 -1
  755. package/dist/services/definitions/tailscale.mjs.map +1 -1
  756. package/dist/services/definitions/temporal.cjs +102 -0
  757. package/dist/services/definitions/temporal.cjs.map +1 -0
  758. package/dist/services/definitions/temporal.d.cts +7 -0
  759. package/dist/services/definitions/temporal.d.cts.map +1 -0
  760. package/dist/services/definitions/traefik.cjs +59 -0
  761. package/dist/services/definitions/traefik.cjs.map +1 -0
  762. package/dist/services/definitions/traefik.d.cts +7 -0
  763. package/dist/services/definitions/traefik.d.cts.map +1 -0
  764. package/dist/services/definitions/traefik.mjs +1 -1
  765. package/dist/services/definitions/traefik.mjs.map +1 -1
  766. package/dist/services/definitions/umami.cjs +48 -0
  767. package/dist/services/definitions/umami.cjs.map +1 -0
  768. package/dist/services/definitions/umami.d.cts +7 -0
  769. package/dist/services/definitions/umami.d.cts.map +1 -0
  770. package/dist/services/definitions/uptime-kuma.cjs +53 -0
  771. package/dist/services/definitions/uptime-kuma.cjs.map +1 -0
  772. package/dist/services/definitions/uptime-kuma.d.cts +7 -0
  773. package/dist/services/definitions/uptime-kuma.d.cts.map +1 -0
  774. package/dist/services/definitions/uptime-kuma.mjs +2 -2
  775. package/dist/services/definitions/uptime-kuma.mjs.map +1 -1
  776. package/dist/services/definitions/usesend.cjs +101 -0
  777. package/dist/services/definitions/usesend.cjs.map +1 -0
  778. package/dist/services/definitions/usesend.d.cts +7 -0
  779. package/dist/services/definitions/usesend.d.cts.map +1 -0
  780. package/dist/services/definitions/usesend.mjs +4 -4
  781. package/dist/services/definitions/usesend.mjs.map +1 -1
  782. package/dist/services/definitions/valkey.cjs +63 -0
  783. package/dist/services/definitions/valkey.cjs.map +1 -0
  784. package/dist/services/definitions/valkey.d.cts +7 -0
  785. package/dist/services/definitions/valkey.d.cts.map +1 -0
  786. package/dist/services/definitions/valkey.mjs +1 -1
  787. package/dist/services/definitions/valkey.mjs.map +1 -1
  788. package/dist/services/definitions/vaultwarden.cjs +65 -0
  789. package/dist/services/definitions/vaultwarden.cjs.map +1 -0
  790. package/dist/services/definitions/vaultwarden.d.cts +7 -0
  791. package/dist/services/definitions/vaultwarden.d.cts.map +1 -0
  792. package/dist/services/definitions/vaultwarden.mjs +2 -2
  793. package/dist/services/definitions/vaultwarden.mjs.map +1 -1
  794. package/dist/services/definitions/watchtower.cjs +49 -0
  795. package/dist/services/definitions/watchtower.cjs.map +1 -0
  796. package/dist/services/definitions/watchtower.d.cts +7 -0
  797. package/dist/services/definitions/watchtower.d.cts.map +1 -0
  798. package/dist/services/definitions/weaviate.cjs +92 -0
  799. package/dist/services/definitions/weaviate.cjs.map +1 -0
  800. package/dist/services/definitions/weaviate.d.cts +7 -0
  801. package/dist/services/definitions/weaviate.d.cts.map +1 -0
  802. package/dist/services/definitions/weaviate.mjs +2 -2
  803. package/dist/services/definitions/weaviate.mjs.map +1 -1
  804. package/dist/services/definitions/whisper.cjs +64 -0
  805. package/dist/services/definitions/whisper.cjs.map +1 -0
  806. package/dist/services/definitions/whisper.d.cts +7 -0
  807. package/dist/services/definitions/whisper.d.cts.map +1 -0
  808. package/dist/services/definitions/whisper.mjs +2 -2
  809. package/dist/services/definitions/whisper.mjs.map +1 -1
  810. package/dist/services/definitions/xyops.cjs +88 -0
  811. package/dist/services/definitions/xyops.cjs.map +1 -0
  812. package/dist/services/definitions/xyops.d.cts +7 -0
  813. package/dist/services/definitions/xyops.d.cts.map +1 -0
  814. package/dist/services/definitions/xyops.mjs +1 -1
  815. package/dist/services/definitions/xyops.mjs.map +1 -1
  816. package/dist/services/registry.cjs +35 -0
  817. package/dist/services/registry.cjs.map +1 -0
  818. package/dist/services/registry.d.cts +16 -0
  819. package/dist/services/registry.d.cts.map +1 -0
  820. package/dist/services/registry.test.cjs +63 -0
  821. package/dist/services/registry.test.cjs.map +1 -0
  822. package/dist/services/registry.test.d.cts +1 -0
  823. package/dist/services/registry.test.mjs +1 -1
  824. package/dist/skills/registry.cjs +712 -0
  825. package/dist/skills/registry.cjs.map +1 -0
  826. package/dist/skills/registry.d.cts +11 -0
  827. package/dist/skills/registry.d.cts.map +1 -0
  828. package/dist/skills/skill-manifest.cjs +23 -0
  829. package/dist/skills/skill-manifest.cjs.map +1 -0
  830. package/dist/skills/skill-manifest.d.cts +20 -0
  831. package/dist/skills/skill-manifest.d.cts.map +1 -0
  832. package/dist/types.cjs +149 -0
  833. package/dist/types.cjs.map +1 -0
  834. package/dist/types.d.cts +82 -0
  835. package/dist/types.d.cts.map +1 -0
  836. package/dist/types.d.mts +9 -2
  837. package/dist/types.d.mts.map +1 -1
  838. package/dist/types.mjs +40 -0
  839. package/dist/types.mjs.map +1 -1
  840. package/dist/validator.cjs +124 -0
  841. package/dist/validator.cjs.map +1 -0
  842. package/dist/validator.d.cts +20 -0
  843. package/dist/validator.d.cts.map +1 -0
  844. package/dist/validator.test.cjs +64 -0
  845. package/dist/validator.test.cjs.map +1 -0
  846. package/dist/validator.test.d.cts +1 -0
  847. package/dist/validator.test.mjs +1 -1
  848. package/dist/version-manager.cjs +65 -0
  849. package/dist/version-manager.cjs.map +1 -0
  850. package/dist/version-manager.d.cts +14 -0
  851. package/dist/version-manager.d.cts.map +1 -0
  852. package/dist/version-manager.test.cjs +101 -0
  853. package/dist/version-manager.test.cjs.map +1 -0
  854. package/dist/version-manager.test.d.cts +1 -0
  855. package/dist/version-manager.test.mjs +1 -1
  856. package/dist/vi.2VT5v0um-BmRMvymT.cjs +12934 -0
  857. package/dist/vi.2VT5v0um-BmRMvymT.cjs.map +1 -0
  858. package/dist/{vi.2VT5v0um-BgmKutxR.mjs → vi.2VT5v0um-CFyDIn0m.mjs} +5 -5
  859. package/dist/{vi.2VT5v0um-BgmKutxR.mjs.map → vi.2VT5v0um-CFyDIn0m.mjs.map} +1 -1
  860. package/package.json +24 -3
  861. package/src/__snapshots__/composer.snapshot.test.ts.snap +20 -20
  862. package/src/compose-validation.test.ts +102 -0
  863. package/src/composer.test.ts +1 -1
  864. package/src/composer.ts +331 -53
  865. package/src/deployers/coolify.ts +240 -0
  866. package/src/deployers/dokploy.ts +173 -0
  867. package/src/deployers/index.ts +36 -0
  868. package/src/deployers/types.ts +70 -0
  869. package/src/generate.ts +45 -1
  870. package/src/generators/cloud-init.ts +137 -0
  871. package/src/generators/env.ts +112 -6
  872. package/src/generators/health-check.ts +2 -2
  873. package/src/generators/openclaw-install-script.ts +77 -0
  874. package/src/generators/openclaw-json.ts +195 -58
  875. package/src/generators/postgres-init.ts +11 -0
  876. package/src/generators/readme.ts +103 -4
  877. package/src/generators/stack-manifest.ts +127 -0
  878. package/src/index.ts +30 -0
  879. package/src/port-scanner.ts +189 -0
  880. package/src/presets/presets.test.ts +73 -0
  881. package/src/presets/registry.test.ts +3 -0
  882. package/src/presets/registry.ts +30 -7
  883. package/src/resolver.ts +2 -0
  884. package/src/schema.ts +30 -1
  885. package/src/services/definitions/anything-llm.ts +2 -2
  886. package/src/services/definitions/appflowy.ts +1 -1
  887. package/src/services/definitions/authentik.ts +5 -5
  888. package/src/services/definitions/beszel.ts +1 -1
  889. package/src/services/definitions/browserless.ts +1 -1
  890. package/src/services/definitions/caddy.ts +2 -2
  891. package/src/services/definitions/cal-com.ts +2 -2
  892. package/src/services/definitions/chromadb.ts +3 -3
  893. package/src/services/definitions/claude-code.ts +1 -1
  894. package/src/services/definitions/code-server.ts +1 -1
  895. package/src/services/definitions/codex.ts +1 -1
  896. package/src/services/definitions/comfyui.ts +1 -1
  897. package/src/services/definitions/coolify.ts +1 -1
  898. package/src/services/definitions/crowdsec.ts +2 -2
  899. package/src/services/definitions/desktop-environment.ts +1 -1
  900. package/src/services/definitions/dify.ts +1 -1
  901. package/src/services/definitions/docsgpt.ts +1 -1
  902. package/src/services/definitions/dokploy.ts +2 -2
  903. package/src/services/definitions/dozzle.ts +1 -1
  904. package/src/services/definitions/ffmpeg.ts +2 -2
  905. package/src/services/definitions/flowise.ts +1 -1
  906. package/src/services/definitions/gemini-cli.ts +8 -1
  907. package/src/services/definitions/ghost.ts +1 -1
  908. package/src/services/definitions/gitea.ts +1 -1
  909. package/src/services/definitions/gotify.ts +3 -3
  910. package/src/services/definitions/grafana.ts +2 -2
  911. package/src/services/definitions/headscale.ts +68 -68
  912. package/src/services/definitions/hexstrike.ts +1 -1
  913. package/src/services/definitions/homeassistant.ts +1 -1
  914. package/src/services/definitions/immich.ts +6 -6
  915. package/src/services/definitions/jellyfin.ts +1 -1
  916. package/src/services/definitions/jenkins.ts +1 -1
  917. package/src/services/definitions/kimi.ts +1 -1
  918. package/src/services/definitions/lasuite-meet-agents.ts +1 -1
  919. package/src/services/definitions/lasuite-meet-backend.ts +3 -3
  920. package/src/services/definitions/lasuite-meet-frontend.ts +3 -3
  921. package/src/services/definitions/librechat.ts +1 -1
  922. package/src/services/definitions/litellm.ts +1 -1
  923. package/src/services/definitions/loki.ts +1 -1
  924. package/src/services/definitions/matomo.ts +1 -1
  925. package/src/services/definitions/matrix-synapse.ts +1 -1
  926. package/src/services/definitions/mattermost.ts +1 -1
  927. package/src/services/definitions/meilisearch.ts +4 -4
  928. package/src/services/definitions/milvus.ts +1 -1
  929. package/src/services/definitions/minio.ts +1 -1
  930. package/src/services/definitions/mixpost.ts +1 -1
  931. package/src/services/definitions/motion-canvas.ts +1 -1
  932. package/src/services/definitions/n8n.ts +1 -1
  933. package/src/services/definitions/neo4j.ts +1 -1
  934. package/src/services/definitions/nextcloud.ts +19 -19
  935. package/src/services/definitions/nocodb.ts +1 -1
  936. package/src/services/definitions/ntfy.ts +2 -2
  937. package/src/services/definitions/ollama.ts +1 -1
  938. package/src/services/definitions/open-webui.ts +1 -1
  939. package/src/services/definitions/opencode.ts +1 -1
  940. package/src/services/definitions/openpanel.ts +3 -3
  941. package/src/services/definitions/paperless-ngx.ts +1 -1
  942. package/src/services/definitions/pentagi.ts +2 -2
  943. package/src/services/definitions/playwright-server.ts +1 -1
  944. package/src/services/definitions/portainer.ts +1 -1
  945. package/src/services/definitions/postgresql.ts +1 -1
  946. package/src/services/definitions/postiz.ts +1 -1
  947. package/src/services/definitions/prometheus.ts +1 -1
  948. package/src/services/definitions/qdrant.ts +1 -1
  949. package/src/services/definitions/redis.ts +1 -1
  950. package/src/services/definitions/remotion.ts +1 -1
  951. package/src/services/definitions/rocketchat.ts +1 -1
  952. package/src/services/definitions/scrapling.ts +2 -2
  953. package/src/services/definitions/searxng.ts +1 -1
  954. package/src/services/definitions/signoz.ts +2 -2
  955. package/src/services/definitions/solidityguard.ts +1 -1
  956. package/src/services/definitions/stable-diffusion.ts +1 -1
  957. package/src/services/definitions/steel-browser.ts +1 -1
  958. package/src/services/definitions/stream-gateway.ts +2 -2
  959. package/src/services/definitions/supabase.ts +2 -2
  960. package/src/services/definitions/tailscale.ts +1 -1
  961. package/src/services/definitions/traefik.ts +1 -1
  962. package/src/services/definitions/uptime-kuma.ts +2 -2
  963. package/src/services/definitions/usesend.ts +4 -4
  964. package/src/services/definitions/valkey.ts +1 -1
  965. package/src/services/definitions/vaultwarden.ts +2 -2
  966. package/src/services/definitions/weaviate.ts +2 -2
  967. package/src/services/definitions/whisper.ts +2 -2
  968. package/src/services/definitions/xyops.ts +1 -1
  969. package/src/types.ts +138 -20
  970. package/tsdown.config.ts +2 -2
package/README.md CHANGED
@@ -61,6 +61,33 @@ export const myCoolService: ServiceDefinition = {
61
61
 
62
62
  Skills are markdown instructions or code bundles mapped to specific tools. They are defined in `skills/manifest.json`. During generation, if a `SkillPack` is explicitly selected or implicitly included via an auto-installing service, the Core locates the corresponding files and mounts them into the generated stack's Volume pathways.
63
63
 
64
+ ## PaaS Deployers
65
+
66
+ The core includes deployer clients for pushing generated stacks directly to self-hosted PaaS platforms:
67
+
68
+ | Provider | Module | Auth |
69
+ |-------------|------------------------|-------------------------|
70
+ | **Dokploy** | `deployers/dokploy.ts` | `x-api-key` header |
71
+ | **Coolify** | `deployers/coolify.ts` | `Authorization: Bearer` |
72
+
73
+ All deployers implement the `PaasDeployer` interface (defined in `deployers/types.ts`). To add a new provider, implement the interface and register it in `deployers/index.ts`.
74
+
75
+ ```typescript
76
+ import { getDeployer, getAvailableDeployers } from "@better-openclaw/core";
77
+
78
+ // List available providers
79
+ const providers = getAvailableDeployers(); // ["dokploy", "coolify"]
80
+
81
+ // Deploy a stack
82
+ const deployer = getDeployer("dokploy");
83
+ const result = await deployer.deploy({
84
+ target: { instanceUrl: "https://dokploy.example.com", apiKey: "..." },
85
+ projectName: "my-stack",
86
+ composeYaml: "...",
87
+ envContent: "...",
88
+ });
89
+ ```
90
+
64
91
  ## Development
65
92
 
66
93
  ```bash
@@ -0,0 +1,53 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+
3
+ //#region src/bare-metal-partition.ts
4
+ /**
5
+ * Maps Platform (e.g. linux/amd64) to NativePlatform (linux, windows, macos).
6
+ */
7
+ function platformToNativePlatform(platform) {
8
+ if (platform.startsWith("linux/")) return "linux";
9
+ if (platform.startsWith("windows/")) return "windows";
10
+ if (platform.startsWith("macos/")) return "macos";
11
+ console.warn(`Unknown platform prefix in "${platform}", defaulting to linux`);
12
+ return "linux";
13
+ }
14
+ /**
15
+ * Partitions resolved services into native (run on host via scripts) vs Docker-only.
16
+ * Gateway and CLI are never native; services with nativeSupported and a matching
17
+ * nativeRecipe for the platform go to native, rest to Docker.
18
+ */
19
+ function partitionBareMetal(resolved, platform) {
20
+ const nativePlatform = platformToNativePlatform(platform);
21
+ const nativeServices = [];
22
+ const dockerOnlyServices = [];
23
+ const nativeIds = /* @__PURE__ */ new Set();
24
+ for (const entry of resolved.services) {
25
+ const def = entry.definition;
26
+ if (def.nativeSupported === true && def.nativeRecipes?.length && def.nativeRecipes.some((r) => r.platform === nativePlatform)) {
27
+ nativeServices.push(entry);
28
+ nativeIds.add(def.id);
29
+ } else dockerOnlyServices.push(entry);
30
+ }
31
+ return {
32
+ nativeServices,
33
+ dockerOnlyServices,
34
+ nativeIds
35
+ };
36
+ }
37
+ /**
38
+ * Returns a new ResolverOutput containing only the given service list (same order).
39
+ * Used to build compose for Docker-only subset when bare-metal has native services.
40
+ */
41
+ function resolvedWithOnlyServices(resolved, services) {
42
+ const idSet = new Set(services.map((s) => s.definition.id));
43
+ return {
44
+ ...resolved,
45
+ services: resolved.services.filter((s) => idSet.has(s.definition.id))
46
+ };
47
+ }
48
+
49
+ //#endregion
50
+ exports.partitionBareMetal = partitionBareMetal;
51
+ exports.platformToNativePlatform = platformToNativePlatform;
52
+ exports.resolvedWithOnlyServices = resolvedWithOnlyServices;
53
+ //# sourceMappingURL=bare-metal-partition.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bare-metal-partition.cjs","names":[],"sources":["../src/bare-metal-partition.ts"],"sourcesContent":["import type { NativePlatform, Platform, ResolvedService, ResolverOutput } from \"./types.js\";\n\n/**\n * Maps Platform (e.g. linux/amd64) to NativePlatform (linux, windows, macos).\n */\nexport function platformToNativePlatform(platform: Platform): NativePlatform {\n\tif (platform.startsWith(\"linux/\")) return \"linux\";\n\tif (platform.startsWith(\"windows/\")) return \"windows\";\n\tif (platform.startsWith(\"macos/\")) return \"macos\";\n\tconsole.warn(`Unknown platform prefix in \"${platform}\", defaulting to linux`);\n\treturn \"linux\";\n}\n\nexport interface BareMetalPartitionResult {\n\tnativeServices: ResolvedService[];\n\tdockerOnlyServices: ResolvedService[];\n\tnativeIds: Set<string>;\n}\n\n/**\n * Partitions resolved services into native (run on host via scripts) vs Docker-only.\n * Gateway and CLI are never native; services with nativeSupported and a matching\n * nativeRecipe for the platform go to native, rest to Docker.\n */\nexport function partitionBareMetal(\n\tresolved: ResolverOutput,\n\tplatform: Platform,\n): BareMetalPartitionResult {\n\tconst nativePlatform = platformToNativePlatform(platform);\n\tconst nativeServices: ResolvedService[] = [];\n\tconst dockerOnlyServices: ResolvedService[] = [];\n\tconst nativeIds = new Set<string>();\n\n\tfor (const entry of resolved.services) {\n\t\tconst def = entry.definition;\n\t\tconst hasNativeRecipe =\n\t\t\tdef.nativeSupported === true &&\n\t\t\tdef.nativeRecipes?.length &&\n\t\t\tdef.nativeRecipes.some((r) => r.platform === nativePlatform);\n\n\t\tif (hasNativeRecipe) {\n\t\t\tnativeServices.push(entry);\n\t\t\tnativeIds.add(def.id);\n\t\t} else {\n\t\t\tdockerOnlyServices.push(entry);\n\t\t}\n\t}\n\n\treturn { nativeServices, dockerOnlyServices, nativeIds };\n}\n\n/**\n * Returns a new ResolverOutput containing only the given service list (same order).\n * Used to build compose for Docker-only subset when bare-metal has native services.\n */\nexport function resolvedWithOnlyServices(\n\tresolved: ResolverOutput,\n\tservices: ResolvedService[],\n): ResolverOutput {\n\tconst idSet = new Set(services.map((s) => s.definition.id));\n\treturn {\n\t\t...resolved,\n\t\tservices: resolved.services.filter((s) => idSet.has(s.definition.id)),\n\t};\n}\n"],"mappings":";;;;;;AAKA,SAAgB,yBAAyB,UAAoC;AAC5E,KAAI,SAAS,WAAW,SAAS,CAAE,QAAO;AAC1C,KAAI,SAAS,WAAW,WAAW,CAAE,QAAO;AAC5C,KAAI,SAAS,WAAW,SAAS,CAAE,QAAO;AAC1C,SAAQ,KAAK,+BAA+B,SAAS,wBAAwB;AAC7E,QAAO;;;;;;;AAcR,SAAgB,mBACf,UACA,UAC2B;CAC3B,MAAM,iBAAiB,yBAAyB,SAAS;CACzD,MAAM,iBAAoC,EAAE;CAC5C,MAAM,qBAAwC,EAAE;CAChD,MAAM,4BAAY,IAAI,KAAa;AAEnC,MAAK,MAAM,SAAS,SAAS,UAAU;EACtC,MAAM,MAAM,MAAM;AAMlB,MAJC,IAAI,oBAAoB,QACxB,IAAI,eAAe,UACnB,IAAI,cAAc,MAAM,MAAM,EAAE,aAAa,eAAe,EAExC;AACpB,kBAAe,KAAK,MAAM;AAC1B,aAAU,IAAI,IAAI,GAAG;QAErB,oBAAmB,KAAK,MAAM;;AAIhC,QAAO;EAAE;EAAgB;EAAoB;EAAW;;;;;;AAOzD,SAAgB,yBACf,UACA,UACiB;CACjB,MAAM,QAAQ,IAAI,IAAI,SAAS,KAAK,MAAM,EAAE,WAAW,GAAG,CAAC;AAC3D,QAAO;EACN,GAAG;EACH,UAAU,SAAS,SAAS,QAAQ,MAAM,MAAM,IAAI,EAAE,WAAW,GAAG,CAAC;EACrE"}
@@ -0,0 +1,26 @@
1
+ import { NativePlatform, Platform, ResolvedService, ResolverOutput } from "./types.cjs";
2
+
3
+ //#region src/bare-metal-partition.d.ts
4
+ /**
5
+ * Maps Platform (e.g. linux/amd64) to NativePlatform (linux, windows, macos).
6
+ */
7
+ declare function platformToNativePlatform(platform: Platform): NativePlatform;
8
+ interface BareMetalPartitionResult {
9
+ nativeServices: ResolvedService[];
10
+ dockerOnlyServices: ResolvedService[];
11
+ nativeIds: Set<string>;
12
+ }
13
+ /**
14
+ * Partitions resolved services into native (run on host via scripts) vs Docker-only.
15
+ * Gateway and CLI are never native; services with nativeSupported and a matching
16
+ * nativeRecipe for the platform go to native, rest to Docker.
17
+ */
18
+ declare function partitionBareMetal(resolved: ResolverOutput, platform: Platform): BareMetalPartitionResult;
19
+ /**
20
+ * Returns a new ResolverOutput containing only the given service list (same order).
21
+ * Used to build compose for Docker-only subset when bare-metal has native services.
22
+ */
23
+ declare function resolvedWithOnlyServices(resolved: ResolverOutput, services: ResolvedService[]): ResolverOutput;
24
+ //#endregion
25
+ export { BareMetalPartitionResult, partitionBareMetal, platformToNativePlatform, resolvedWithOnlyServices };
26
+ //# sourceMappingURL=bare-metal-partition.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bare-metal-partition.d.cts","names":[],"sources":["../src/bare-metal-partition.ts"],"mappings":";;;;;AAKA;iBAAgB,wBAAA,CAAyB,QAAA,EAAU,QAAA,GAAW,cAAA;AAAA,UAQ7C,wBAAA;EAChB,cAAA,EAAgB,eAAA;EAChB,kBAAA,EAAoB,eAAA;EACpB,SAAA,EAAW,GAAA;AAAA;;;AAHZ;;;iBAWgB,kBAAA,CACf,QAAA,EAAU,cAAA,EACV,QAAA,EAAU,QAAA,GACR,wBAAA;;;;;iBA4Ba,wBAAA,CACf,QAAA,EAAU,cAAA,EACV,QAAA,EAAU,eAAA,KACR,cAAA"}
@@ -0,0 +1,57 @@
1
+ const require_vi_2VT5v0um = require('./vi.2VT5v0um-BmRMvymT.cjs');
2
+ const require_bare_metal_partition = require('./bare-metal-partition.cjs');
3
+ const require_resolver = require('./resolver.cjs');
4
+
5
+ //#region src/bare-metal-partition.test.ts
6
+ require_vi_2VT5v0um.describe("bare-metal partition", () => {
7
+ require_vi_2VT5v0um.it("platformToNativePlatform maps platform to native", () => {
8
+ require_vi_2VT5v0um.globalExpect(require_bare_metal_partition.platformToNativePlatform("linux/amd64")).toBe("linux");
9
+ require_vi_2VT5v0um.globalExpect(require_bare_metal_partition.platformToNativePlatform("linux/arm64")).toBe("linux");
10
+ require_vi_2VT5v0um.globalExpect(require_bare_metal_partition.platformToNativePlatform("windows/amd64")).toBe("windows");
11
+ require_vi_2VT5v0um.globalExpect(require_bare_metal_partition.platformToNativePlatform("macos/arm64")).toBe("macos");
12
+ });
13
+ require_vi_2VT5v0um.it("partitions redis as native on Linux when redis has native recipe", () => {
14
+ const result = require_bare_metal_partition.partitionBareMetal(require_resolver.resolve({
15
+ services: ["redis"],
16
+ skillPacks: [],
17
+ proxy: "none",
18
+ gpu: false,
19
+ platform: "linux/amd64",
20
+ monitoring: false
21
+ }), "linux/amd64");
22
+ require_vi_2VT5v0um.globalExpect(result.nativeIds.has("redis")).toBe(true);
23
+ require_vi_2VT5v0um.globalExpect(result.nativeServices.length).toBe(1);
24
+ require_vi_2VT5v0um.globalExpect(result.nativeServices[0].definition.id).toBe("redis");
25
+ require_vi_2VT5v0um.globalExpect(result.dockerOnlyServices.length).toBe(0);
26
+ });
27
+ require_vi_2VT5v0um.it("partitions n8n as Docker-only (no native recipe)", () => {
28
+ const result = require_bare_metal_partition.partitionBareMetal(require_resolver.resolve({
29
+ services: ["n8n"],
30
+ skillPacks: [],
31
+ proxy: "none",
32
+ gpu: false,
33
+ platform: "linux/amd64",
34
+ monitoring: false
35
+ }), "linux/amd64");
36
+ require_vi_2VT5v0um.globalExpect(result.nativeIds.has("n8n")).toBe(false);
37
+ require_vi_2VT5v0um.globalExpect(result.nativeServices.length).toBe(0);
38
+ require_vi_2VT5v0um.globalExpect(result.dockerOnlyServices.length).toBeGreaterThanOrEqual(1);
39
+ require_vi_2VT5v0um.globalExpect(result.dockerOnlyServices.some((s) => s.definition.id === "n8n")).toBe(true);
40
+ });
41
+ require_vi_2VT5v0um.it("resolvedWithOnlyServices filters to given service list", () => {
42
+ const resolved = require_resolver.resolve({
43
+ services: ["redis", "n8n"],
44
+ skillPacks: [],
45
+ proxy: "none",
46
+ gpu: false,
47
+ platform: "linux/amd64",
48
+ monitoring: false
49
+ });
50
+ const filtered = require_bare_metal_partition.resolvedWithOnlyServices(resolved, require_bare_metal_partition.partitionBareMetal(resolved, "linux/amd64").dockerOnlyServices);
51
+ require_vi_2VT5v0um.globalExpect(filtered.services.every((s) => s.definition.id !== "redis")).toBe(true);
52
+ require_vi_2VT5v0um.globalExpect(filtered.services.some((s) => s.definition.id === "n8n")).toBe(true);
53
+ });
54
+ });
55
+
56
+ //#endregion
57
+ //# sourceMappingURL=bare-metal-partition.test.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"bare-metal-partition.test.cjs","names":["describe","platformToNativePlatform","partitionBareMetal","resolve","resolvedWithOnlyServices"],"sources":["../src/bare-metal-partition.test.ts"],"sourcesContent":["import { describe, expect, it } from \"vitest\";\nimport {\n\tpartitionBareMetal,\n\tplatformToNativePlatform,\n\tresolvedWithOnlyServices,\n} from \"./bare-metal-partition.js\";\nimport { resolve } from \"./resolver.js\";\n\ndescribe(\"bare-metal partition\", () => {\n\tit(\"platformToNativePlatform maps platform to native\", () => {\n\t\texpect(platformToNativePlatform(\"linux/amd64\")).toBe(\"linux\");\n\t\texpect(platformToNativePlatform(\"linux/arm64\")).toBe(\"linux\");\n\t\texpect(platformToNativePlatform(\"windows/amd64\")).toBe(\"windows\");\n\t\texpect(platformToNativePlatform(\"macos/arm64\")).toBe(\"macos\");\n\t});\n\n\tit(\"partitions redis as native on Linux when redis has native recipe\", () => {\n\t\tconst resolved = resolve({\n\t\t\tservices: [\"redis\"],\n\t\t\tskillPacks: [],\n\t\t\tproxy: \"none\",\n\t\t\tgpu: false,\n\t\t\tplatform: \"linux/amd64\",\n\t\t\tmonitoring: false,\n\t\t});\n\t\tconst result = partitionBareMetal(resolved, \"linux/amd64\");\n\t\texpect(result.nativeIds.has(\"redis\")).toBe(true);\n\t\texpect(result.nativeServices.length).toBe(1);\n\t\texpect(result.nativeServices[0].definition.id).toBe(\"redis\");\n\t\texpect(result.dockerOnlyServices.length).toBe(0);\n\t});\n\n\tit(\"partitions n8n as Docker-only (no native recipe)\", () => {\n\t\tconst resolved = resolve({\n\t\t\tservices: [\"n8n\"],\n\t\t\tskillPacks: [],\n\t\t\tproxy: \"none\",\n\t\t\tgpu: false,\n\t\t\tplatform: \"linux/amd64\",\n\t\t\tmonitoring: false,\n\t\t});\n\t\tconst result = partitionBareMetal(resolved, \"linux/amd64\");\n\t\texpect(result.nativeIds.has(\"n8n\")).toBe(false);\n\t\texpect(result.nativeServices.length).toBe(0);\n\t\texpect(result.dockerOnlyServices.length).toBeGreaterThanOrEqual(1);\n\t\texpect(result.dockerOnlyServices.some((s) => s.definition.id === \"n8n\")).toBe(true);\n\t});\n\n\tit(\"resolvedWithOnlyServices filters to given service list\", () => {\n\t\tconst resolved = resolve({\n\t\t\tservices: [\"redis\", \"n8n\"],\n\t\t\tskillPacks: [],\n\t\t\tproxy: \"none\",\n\t\t\tgpu: false,\n\t\t\tplatform: \"linux/amd64\",\n\t\t\tmonitoring: false,\n\t\t});\n\t\tconst partition = partitionBareMetal(resolved, \"linux/amd64\");\n\t\tconst filtered = resolvedWithOnlyServices(resolved, partition.dockerOnlyServices);\n\t\texpect(filtered.services.every((s) => s.definition.id !== \"redis\")).toBe(true);\n\t\texpect(filtered.services.some((s) => s.definition.id === \"n8n\")).toBe(true);\n\t});\n});\n"],"mappings":";;;;;AAQAA,6BAAS,8BAA8B;AACtC,wBAAG,0DAA0D;AAC5D,mCAAOC,sDAAyB,cAAc,CAAC,CAAC,KAAK,QAAQ;AAC7D,mCAAOA,sDAAyB,cAAc,CAAC,CAAC,KAAK,QAAQ;AAC7D,mCAAOA,sDAAyB,gBAAgB,CAAC,CAAC,KAAK,UAAU;AACjE,mCAAOA,sDAAyB,cAAc,CAAC,CAAC,KAAK,QAAQ;GAC5D;AAEF,wBAAG,0EAA0E;EAS5E,MAAM,SAASC,gDAREC,yBAAQ;GACxB,UAAU,CAAC,QAAQ;GACnB,YAAY,EAAE;GACd,OAAO;GACP,KAAK;GACL,UAAU;GACV,YAAY;GACZ,CAAC,EAC0C,cAAc;AAC1D,mCAAO,OAAO,UAAU,IAAI,QAAQ,CAAC,CAAC,KAAK,KAAK;AAChD,mCAAO,OAAO,eAAe,OAAO,CAAC,KAAK,EAAE;AAC5C,mCAAO,OAAO,eAAe,GAAG,WAAW,GAAG,CAAC,KAAK,QAAQ;AAC5D,mCAAO,OAAO,mBAAmB,OAAO,CAAC,KAAK,EAAE;GAC/C;AAEF,wBAAG,0DAA0D;EAS5D,MAAM,SAASD,gDAREC,yBAAQ;GACxB,UAAU,CAAC,MAAM;GACjB,YAAY,EAAE;GACd,OAAO;GACP,KAAK;GACL,UAAU;GACV,YAAY;GACZ,CAAC,EAC0C,cAAc;AAC1D,mCAAO,OAAO,UAAU,IAAI,MAAM,CAAC,CAAC,KAAK,MAAM;AAC/C,mCAAO,OAAO,eAAe,OAAO,CAAC,KAAK,EAAE;AAC5C,mCAAO,OAAO,mBAAmB,OAAO,CAAC,uBAAuB,EAAE;AAClE,mCAAO,OAAO,mBAAmB,MAAM,MAAM,EAAE,WAAW,OAAO,MAAM,CAAC,CAAC,KAAK,KAAK;GAClF;AAEF,wBAAG,gEAAgE;EAClE,MAAM,WAAWA,yBAAQ;GACxB,UAAU,CAAC,SAAS,MAAM;GAC1B,YAAY,EAAE;GACd,OAAO;GACP,KAAK;GACL,UAAU;GACV,YAAY;GACZ,CAAC;EAEF,MAAM,WAAWC,sDAAyB,UADxBF,gDAAmB,UAAU,cAAc,CACC,mBAAmB;AACjF,mCAAO,SAAS,SAAS,OAAO,MAAM,EAAE,WAAW,OAAO,QAAQ,CAAC,CAAC,KAAK,KAAK;AAC9E,mCAAO,SAAS,SAAS,MAAM,MAAM,EAAE,WAAW,OAAO,MAAM,CAAC,CAAC,KAAK,KAAK;GAC1E;EACD"}
@@ -0,0 +1 @@
1
+ export { };
@@ -1,4 +1,4 @@
1
- import { n as describe, r as it, t as globalExpect } from "./vi.2VT5v0um-BgmKutxR.mjs";
1
+ import { n as describe, r as it, t as globalExpect } from "./vi.2VT5v0um-CFyDIn0m.mjs";
2
2
  import { partitionBareMetal, platformToNativePlatform, resolvedWithOnlyServices } from "./bare-metal-partition.mjs";
3
3
  import { resolve } from "./resolver.mjs";
4
4
 
@@ -0,0 +1,34 @@
1
+ //#region \0rolldown/runtime.js
2
+ var __create = Object.create;
3
+ var __defProp = Object.defineProperty;
4
+ var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
5
+ var __getOwnPropNames = Object.getOwnPropertyNames;
6
+ var __getProtoOf = Object.getPrototypeOf;
7
+ var __hasOwnProp = Object.prototype.hasOwnProperty;
8
+ var __copyProps = (to, from, except, desc) => {
9
+ if (from && typeof from === "object" || typeof from === "function") {
10
+ for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
11
+ key = keys[i];
12
+ if (!__hasOwnProp.call(to, key) && key !== except) {
13
+ __defProp(to, key, {
14
+ get: ((k) => from[k]).bind(null, key),
15
+ enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
16
+ });
17
+ }
18
+ }
19
+ }
20
+ return to;
21
+ };
22
+ var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
23
+ value: mod,
24
+ enumerable: true
25
+ }) : target, mod));
26
+
27
+ //#endregion
28
+
29
+ Object.defineProperty(exports, '__toESM', {
30
+ enumerable: true,
31
+ get: function () {
32
+ return __toESM;
33
+ }
34
+ });
@@ -0,0 +1,67 @@
1
+ const require_chunk = require('./chunk-C0xms8kb.cjs');
2
+ const require_generate = require('./generate.cjs');
3
+ const require_presets_registry = require('./presets/registry.cjs');
4
+ let yaml = require("yaml");
5
+ yaml = require_chunk.__toESM(yaml);
6
+
7
+ //#region src/compose-validation.test.ts
8
+ const allPresets = require_presets_registry.getAllPresets();
9
+ describe("docker compose config integration tests", () => {
10
+ for (const preset of allPresets) describe(`preset "${preset.id}"`, () => {
11
+ const composeContent = require_generate.generate({
12
+ projectName: "test-project",
13
+ services: preset.services,
14
+ skillPacks: preset.skillPacks,
15
+ aiProviders: [],
16
+ gsdRuntimes: [],
17
+ proxy: "none",
18
+ gpu: false,
19
+ platform: "linux/amd64",
20
+ deployment: "local",
21
+ deploymentType: "docker",
22
+ generateSecrets: false,
23
+ openclawVersion: "latest",
24
+ monitoring: false
25
+ }).files["docker-compose.yml"];
26
+ const parsed = yaml.parse(composeContent);
27
+ it("parses as valid YAML", () => {
28
+ expect(parsed).toBeDefined();
29
+ expect(typeof parsed).toBe("object");
30
+ });
31
+ it("every service has an image field", () => {
32
+ expect(parsed.services).toBeDefined();
33
+ for (const [name, service] of Object.entries(parsed.services)) expect(service.image, `service "${name}" is missing an image field`).toBeDefined();
34
+ });
35
+ it("every service has restart or uses default", () => {
36
+ for (const [name, service] of Object.entries(parsed.services)) {
37
+ const svc = service;
38
+ if (svc.restart !== void 0) expect([
39
+ "always",
40
+ "unless-stopped",
41
+ "on-failure",
42
+ "no"
43
+ ].includes(svc.restart), `service "${name}" has invalid restart policy: ${svc.restart}`).toBe(true);
44
+ }
45
+ });
46
+ it("has networks defined", () => {
47
+ expect(parsed.networks).toBeDefined();
48
+ expect(typeof parsed.networks).toBe("object");
49
+ });
50
+ it("named volumes referenced by services are declared in top-level volumes", () => {
51
+ const topLevelVolumes = parsed.volumes ? new Set(Object.keys(parsed.volumes)) : /* @__PURE__ */ new Set();
52
+ for (const [serviceName, service] of Object.entries(parsed.services)) {
53
+ const volumes = service.volumes;
54
+ if (!volumes) continue;
55
+ for (const vol of volumes) {
56
+ const volStr = typeof vol === "string" ? vol : vol?.source;
57
+ if (typeof volStr !== "string") continue;
58
+ const source = volStr.split(":")[0];
59
+ if (source.length > 0 && !source.startsWith(".") && !source.startsWith("/") && !source.startsWith("~") && !source.includes("\\") && !source.startsWith("$") && !source.includes("${")) expect(topLevelVolumes.has(source), `service "${serviceName}" references named volume "${source}" which is not declared in top-level volumes`).toBe(true);
60
+ }
61
+ }
62
+ });
63
+ });
64
+ });
65
+
66
+ //#endregion
67
+ //# sourceMappingURL=compose-validation.test.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compose-validation.test.cjs","names":["getAllPresets","generate"],"sources":["../src/compose-validation.test.ts"],"sourcesContent":["import * as yaml from \"yaml\";\nimport { generate } from \"./generate.js\";\nimport { getAllPresets } from \"./presets/registry.js\";\n\nconst allPresets = getAllPresets();\n\ndescribe(\"docker compose config integration tests\", () => {\n\tfor (const preset of allPresets) {\n\t\tdescribe(`preset \"${preset.id}\"`, () => {\n\t\t\tconst result = generate({\n\t\t\t\tprojectName: \"test-project\",\n\t\t\t\tservices: preset.services,\n\t\t\t\tskillPacks: preset.skillPacks,\n\t\t\t\taiProviders: [],\n\t\t\t\tgsdRuntimes: [],\n\t\t\t\tproxy: \"none\",\n\t\t\t\tgpu: false,\n\t\t\t\tplatform: \"linux/amd64\",\n\t\t\t\tdeployment: \"local\",\n\t\t\t\tdeploymentType: \"docker\",\n\t\t\t\tgenerateSecrets: false,\n\t\t\t\topenclawVersion: \"latest\",\n\t\t\t\tmonitoring: false,\n\t\t\t});\n\n\t\t\tconst composeContent = result.files[\"docker-compose.yml\"]!;\n\t\t\tconst parsed = yaml.parse(composeContent);\n\n\t\t\tit(\"parses as valid YAML\", () => {\n\t\t\t\texpect(parsed).toBeDefined();\n\t\t\t\texpect(typeof parsed).toBe(\"object\");\n\t\t\t});\n\n\t\t\tit(\"every service has an image field\", () => {\n\t\t\t\texpect(parsed.services).toBeDefined();\n\t\t\t\tfor (const [name, service] of Object.entries(parsed.services)) {\n\t\t\t\t\texpect(\n\t\t\t\t\t\t(service as Record<string, unknown>).image,\n\t\t\t\t\t\t`service \"${name}\" is missing an image field`,\n\t\t\t\t\t).toBeDefined();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tit(\"every service has restart or uses default\", () => {\n\t\t\t\tfor (const [name, service] of Object.entries(parsed.services)) {\n\t\t\t\t\tconst svc = service as Record<string, unknown>;\n\t\t\t\t\t// A service should either have an explicit restart policy\n\t\t\t\t\t// or rely on the default (which means the field can be absent).\n\t\t\t\t\t// We just verify that if restart is set, it is a valid value.\n\t\t\t\t\tif (svc.restart !== undefined) {\n\t\t\t\t\t\texpect(\n\t\t\t\t\t\t\t[\"always\", \"unless-stopped\", \"on-failure\", \"no\"].includes(svc.restart as string),\n\t\t\t\t\t\t\t`service \"${name}\" has invalid restart policy: ${svc.restart}`,\n\t\t\t\t\t\t).toBe(true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tit(\"has networks defined\", () => {\n\t\t\t\texpect(parsed.networks).toBeDefined();\n\t\t\t\texpect(typeof parsed.networks).toBe(\"object\");\n\t\t\t});\n\n\t\t\tit(\"named volumes referenced by services are declared in top-level volumes\", () => {\n\t\t\t\tconst topLevelVolumes = parsed.volumes\n\t\t\t\t\t? new Set(Object.keys(parsed.volumes))\n\t\t\t\t\t: new Set<string>();\n\n\t\t\t\tfor (const [serviceName, service] of Object.entries(parsed.services)) {\n\t\t\t\t\tconst svc = service as Record<string, unknown>;\n\t\t\t\t\tconst volumes = svc.volumes as string[] | undefined;\n\t\t\t\t\tif (!volumes) continue;\n\n\t\t\t\t\tfor (const vol of volumes) {\n\t\t\t\t\t\tconst volStr = typeof vol === \"string\" ? vol : (vol as { source?: string })?.source;\n\t\t\t\t\t\tif (typeof volStr !== \"string\") continue;\n\n\t\t\t\t\t\t// Named volumes follow the pattern \"name:path\" (no leading . or /)\n\t\t\t\t\t\t// Bind mounts start with . or / or use an absolute path\n\t\t\t\t\t\tconst parts = volStr.split(\":\");\n\t\t\t\t\t\tconst source = parts[0]!;\n\t\t\t\t\t\tconst isNamedVolume =\n\t\t\t\t\t\t\tsource.length > 0 &&\n\t\t\t\t\t\t\t!source.startsWith(\".\") &&\n\t\t\t\t\t\t\t!source.startsWith(\"/\") &&\n\t\t\t\t\t\t\t!source.startsWith(\"~\") &&\n\t\t\t\t\t\t\t!source.includes(\"\\\\\") &&\n\t\t\t\t\t\t\t!source.startsWith(\"$\") &&\n\t\t\t\t\t\t\t!source.includes(\"${\");\n\n\t\t\t\t\t\tif (isNamedVolume) {\n\t\t\t\t\t\t\texpect(\n\t\t\t\t\t\t\t\ttopLevelVolumes.has(source),\n\t\t\t\t\t\t\t\t`service \"${serviceName}\" references named volume \"${source}\" which is not declared in top-level volumes`,\n\t\t\t\t\t\t\t).toBe(true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n});\n"],"mappings":";;;;;;;AAIA,MAAM,aAAaA,wCAAe;AAElC,SAAS,iDAAiD;AACzD,MAAK,MAAM,UAAU,WACpB,UAAS,WAAW,OAAO,GAAG,UAAU;EAiBvC,MAAM,iBAhBSC,0BAAS;GACvB,aAAa;GACb,UAAU,OAAO;GACjB,YAAY,OAAO;GACnB,aAAa,EAAE;GACf,aAAa,EAAE;GACf,OAAO;GACP,KAAK;GACL,UAAU;GACV,YAAY;GACZ,gBAAgB;GAChB,iBAAiB;GACjB,iBAAiB;GACjB,YAAY;GACZ,CAAC,CAE4B,MAAM;EACpC,MAAM,SAAS,KAAK,MAAM,eAAe;AAEzC,KAAG,8BAA8B;AAChC,UAAO,OAAO,CAAC,aAAa;AAC5B,UAAO,OAAO,OAAO,CAAC,KAAK,SAAS;IACnC;AAEF,KAAG,0CAA0C;AAC5C,UAAO,OAAO,SAAS,CAAC,aAAa;AACrC,QAAK,MAAM,CAAC,MAAM,YAAY,OAAO,QAAQ,OAAO,SAAS,CAC5D,QACE,QAAoC,OACrC,YAAY,KAAK,6BACjB,CAAC,aAAa;IAEf;AAEF,KAAG,mDAAmD;AACrD,QAAK,MAAM,CAAC,MAAM,YAAY,OAAO,QAAQ,OAAO,SAAS,EAAE;IAC9D,MAAM,MAAM;AAIZ,QAAI,IAAI,YAAY,OACnB,QACC;KAAC;KAAU;KAAkB;KAAc;KAAK,CAAC,SAAS,IAAI,QAAkB,EAChF,YAAY,KAAK,gCAAgC,IAAI,UACrD,CAAC,KAAK,KAAK;;IAGb;AAEF,KAAG,8BAA8B;AAChC,UAAO,OAAO,SAAS,CAAC,aAAa;AACrC,UAAO,OAAO,OAAO,SAAS,CAAC,KAAK,SAAS;IAC5C;AAEF,KAAG,gFAAgF;GAClF,MAAM,kBAAkB,OAAO,UAC5B,IAAI,IAAI,OAAO,KAAK,OAAO,QAAQ,CAAC,mBACpC,IAAI,KAAa;AAEpB,QAAK,MAAM,CAAC,aAAa,YAAY,OAAO,QAAQ,OAAO,SAAS,EAAE;IAErE,MAAM,UADM,QACQ;AACpB,QAAI,CAAC,QAAS;AAEd,SAAK,MAAM,OAAO,SAAS;KAC1B,MAAM,SAAS,OAAO,QAAQ,WAAW,MAAO,KAA6B;AAC7E,SAAI,OAAO,WAAW,SAAU;KAKhC,MAAM,SADQ,OAAO,MAAM,IAAI,CACV;AAUrB,SARC,OAAO,SAAS,KAChB,CAAC,OAAO,WAAW,IAAI,IACvB,CAAC,OAAO,WAAW,IAAI,IACvB,CAAC,OAAO,WAAW,IAAI,IACvB,CAAC,OAAO,SAAS,KAAK,IACtB,CAAC,OAAO,WAAW,IAAI,IACvB,CAAC,OAAO,SAAS,KAAK,CAGtB,QACC,gBAAgB,IAAI,OAAO,EAC3B,YAAY,YAAY,6BAA6B,OAAO,8CAC5D,CAAC,KAAK,KAAK;;;IAId;GACD;EAEF"}
@@ -0,0 +1 @@
1
+ export { };
@@ -0,0 +1 @@
1
+ export { };
@@ -0,0 +1,66 @@
1
+ import { generate } from "./generate.mjs";
2
+ import { getAllPresets } from "./presets/registry.mjs";
3
+ import * as yaml from "yaml";
4
+
5
+ //#region src/compose-validation.test.ts
6
+ const allPresets = getAllPresets();
7
+ describe("docker compose config integration tests", () => {
8
+ for (const preset of allPresets) describe(`preset "${preset.id}"`, () => {
9
+ const composeContent = generate({
10
+ projectName: "test-project",
11
+ services: preset.services,
12
+ skillPacks: preset.skillPacks,
13
+ aiProviders: [],
14
+ gsdRuntimes: [],
15
+ proxy: "none",
16
+ gpu: false,
17
+ platform: "linux/amd64",
18
+ deployment: "local",
19
+ deploymentType: "docker",
20
+ generateSecrets: false,
21
+ openclawVersion: "latest",
22
+ monitoring: false
23
+ }).files["docker-compose.yml"];
24
+ const parsed = yaml.parse(composeContent);
25
+ it("parses as valid YAML", () => {
26
+ expect(parsed).toBeDefined();
27
+ expect(typeof parsed).toBe("object");
28
+ });
29
+ it("every service has an image field", () => {
30
+ expect(parsed.services).toBeDefined();
31
+ for (const [name, service] of Object.entries(parsed.services)) expect(service.image, `service "${name}" is missing an image field`).toBeDefined();
32
+ });
33
+ it("every service has restart or uses default", () => {
34
+ for (const [name, service] of Object.entries(parsed.services)) {
35
+ const svc = service;
36
+ if (svc.restart !== void 0) expect([
37
+ "always",
38
+ "unless-stopped",
39
+ "on-failure",
40
+ "no"
41
+ ].includes(svc.restart), `service "${name}" has invalid restart policy: ${svc.restart}`).toBe(true);
42
+ }
43
+ });
44
+ it("has networks defined", () => {
45
+ expect(parsed.networks).toBeDefined();
46
+ expect(typeof parsed.networks).toBe("object");
47
+ });
48
+ it("named volumes referenced by services are declared in top-level volumes", () => {
49
+ const topLevelVolumes = parsed.volumes ? new Set(Object.keys(parsed.volumes)) : /* @__PURE__ */ new Set();
50
+ for (const [serviceName, service] of Object.entries(parsed.services)) {
51
+ const volumes = service.volumes;
52
+ if (!volumes) continue;
53
+ for (const vol of volumes) {
54
+ const volStr = typeof vol === "string" ? vol : vol?.source;
55
+ if (typeof volStr !== "string") continue;
56
+ const source = volStr.split(":")[0];
57
+ if (source.length > 0 && !source.startsWith(".") && !source.startsWith("/") && !source.startsWith("~") && !source.includes("\\") && !source.startsWith("$") && !source.includes("${")) expect(topLevelVolumes.has(source), `service "${serviceName}" references named volume "${source}" which is not declared in top-level volumes`).toBe(true);
58
+ }
59
+ }
60
+ });
61
+ });
62
+ });
63
+
64
+ //#endregion
65
+ export { };
66
+ //# sourceMappingURL=compose-validation.test.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"compose-validation.test.mjs","names":[],"sources":["../src/compose-validation.test.ts"],"sourcesContent":["import * as yaml from \"yaml\";\nimport { generate } from \"./generate.js\";\nimport { getAllPresets } from \"./presets/registry.js\";\n\nconst allPresets = getAllPresets();\n\ndescribe(\"docker compose config integration tests\", () => {\n\tfor (const preset of allPresets) {\n\t\tdescribe(`preset \"${preset.id}\"`, () => {\n\t\t\tconst result = generate({\n\t\t\t\tprojectName: \"test-project\",\n\t\t\t\tservices: preset.services,\n\t\t\t\tskillPacks: preset.skillPacks,\n\t\t\t\taiProviders: [],\n\t\t\t\tgsdRuntimes: [],\n\t\t\t\tproxy: \"none\",\n\t\t\t\tgpu: false,\n\t\t\t\tplatform: \"linux/amd64\",\n\t\t\t\tdeployment: \"local\",\n\t\t\t\tdeploymentType: \"docker\",\n\t\t\t\tgenerateSecrets: false,\n\t\t\t\topenclawVersion: \"latest\",\n\t\t\t\tmonitoring: false,\n\t\t\t});\n\n\t\t\tconst composeContent = result.files[\"docker-compose.yml\"]!;\n\t\t\tconst parsed = yaml.parse(composeContent);\n\n\t\t\tit(\"parses as valid YAML\", () => {\n\t\t\t\texpect(parsed).toBeDefined();\n\t\t\t\texpect(typeof parsed).toBe(\"object\");\n\t\t\t});\n\n\t\t\tit(\"every service has an image field\", () => {\n\t\t\t\texpect(parsed.services).toBeDefined();\n\t\t\t\tfor (const [name, service] of Object.entries(parsed.services)) {\n\t\t\t\t\texpect(\n\t\t\t\t\t\t(service as Record<string, unknown>).image,\n\t\t\t\t\t\t`service \"${name}\" is missing an image field`,\n\t\t\t\t\t).toBeDefined();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tit(\"every service has restart or uses default\", () => {\n\t\t\t\tfor (const [name, service] of Object.entries(parsed.services)) {\n\t\t\t\t\tconst svc = service as Record<string, unknown>;\n\t\t\t\t\t// A service should either have an explicit restart policy\n\t\t\t\t\t// or rely on the default (which means the field can be absent).\n\t\t\t\t\t// We just verify that if restart is set, it is a valid value.\n\t\t\t\t\tif (svc.restart !== undefined) {\n\t\t\t\t\t\texpect(\n\t\t\t\t\t\t\t[\"always\", \"unless-stopped\", \"on-failure\", \"no\"].includes(svc.restart as string),\n\t\t\t\t\t\t\t`service \"${name}\" has invalid restart policy: ${svc.restart}`,\n\t\t\t\t\t\t).toBe(true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tit(\"has networks defined\", () => {\n\t\t\t\texpect(parsed.networks).toBeDefined();\n\t\t\t\texpect(typeof parsed.networks).toBe(\"object\");\n\t\t\t});\n\n\t\t\tit(\"named volumes referenced by services are declared in top-level volumes\", () => {\n\t\t\t\tconst topLevelVolumes = parsed.volumes\n\t\t\t\t\t? new Set(Object.keys(parsed.volumes))\n\t\t\t\t\t: new Set<string>();\n\n\t\t\t\tfor (const [serviceName, service] of Object.entries(parsed.services)) {\n\t\t\t\t\tconst svc = service as Record<string, unknown>;\n\t\t\t\t\tconst volumes = svc.volumes as string[] | undefined;\n\t\t\t\t\tif (!volumes) continue;\n\n\t\t\t\t\tfor (const vol of volumes) {\n\t\t\t\t\t\tconst volStr = typeof vol === \"string\" ? vol : (vol as { source?: string })?.source;\n\t\t\t\t\t\tif (typeof volStr !== \"string\") continue;\n\n\t\t\t\t\t\t// Named volumes follow the pattern \"name:path\" (no leading . or /)\n\t\t\t\t\t\t// Bind mounts start with . or / or use an absolute path\n\t\t\t\t\t\tconst parts = volStr.split(\":\");\n\t\t\t\t\t\tconst source = parts[0]!;\n\t\t\t\t\t\tconst isNamedVolume =\n\t\t\t\t\t\t\tsource.length > 0 &&\n\t\t\t\t\t\t\t!source.startsWith(\".\") &&\n\t\t\t\t\t\t\t!source.startsWith(\"/\") &&\n\t\t\t\t\t\t\t!source.startsWith(\"~\") &&\n\t\t\t\t\t\t\t!source.includes(\"\\\\\") &&\n\t\t\t\t\t\t\t!source.startsWith(\"$\") &&\n\t\t\t\t\t\t\t!source.includes(\"${\");\n\n\t\t\t\t\t\tif (isNamedVolume) {\n\t\t\t\t\t\t\texpect(\n\t\t\t\t\t\t\t\ttopLevelVolumes.has(source),\n\t\t\t\t\t\t\t\t`service \"${serviceName}\" references named volume \"${source}\" which is not declared in top-level volumes`,\n\t\t\t\t\t\t\t).toBe(true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n});\n"],"mappings":";;;;;AAIA,MAAM,aAAa,eAAe;AAElC,SAAS,iDAAiD;AACzD,MAAK,MAAM,UAAU,WACpB,UAAS,WAAW,OAAO,GAAG,UAAU;EAiBvC,MAAM,iBAhBS,SAAS;GACvB,aAAa;GACb,UAAU,OAAO;GACjB,YAAY,OAAO;GACnB,aAAa,EAAE;GACf,aAAa,EAAE;GACf,OAAO;GACP,KAAK;GACL,UAAU;GACV,YAAY;GACZ,gBAAgB;GAChB,iBAAiB;GACjB,iBAAiB;GACjB,YAAY;GACZ,CAAC,CAE4B,MAAM;EACpC,MAAM,SAAS,KAAK,MAAM,eAAe;AAEzC,KAAG,8BAA8B;AAChC,UAAO,OAAO,CAAC,aAAa;AAC5B,UAAO,OAAO,OAAO,CAAC,KAAK,SAAS;IACnC;AAEF,KAAG,0CAA0C;AAC5C,UAAO,OAAO,SAAS,CAAC,aAAa;AACrC,QAAK,MAAM,CAAC,MAAM,YAAY,OAAO,QAAQ,OAAO,SAAS,CAC5D,QACE,QAAoC,OACrC,YAAY,KAAK,6BACjB,CAAC,aAAa;IAEf;AAEF,KAAG,mDAAmD;AACrD,QAAK,MAAM,CAAC,MAAM,YAAY,OAAO,QAAQ,OAAO,SAAS,EAAE;IAC9D,MAAM,MAAM;AAIZ,QAAI,IAAI,YAAY,OACnB,QACC;KAAC;KAAU;KAAkB;KAAc;KAAK,CAAC,SAAS,IAAI,QAAkB,EAChF,YAAY,KAAK,gCAAgC,IAAI,UACrD,CAAC,KAAK,KAAK;;IAGb;AAEF,KAAG,8BAA8B;AAChC,UAAO,OAAO,SAAS,CAAC,aAAa;AACrC,UAAO,OAAO,OAAO,SAAS,CAAC,KAAK,SAAS;IAC5C;AAEF,KAAG,gFAAgF;GAClF,MAAM,kBAAkB,OAAO,UAC5B,IAAI,IAAI,OAAO,KAAK,OAAO,QAAQ,CAAC,mBACpC,IAAI,KAAa;AAEpB,QAAK,MAAM,CAAC,aAAa,YAAY,OAAO,QAAQ,OAAO,SAAS,EAAE;IAErE,MAAM,UADM,QACQ;AACpB,QAAI,CAAC,QAAS;AAEd,SAAK,MAAM,OAAO,SAAS;KAC1B,MAAM,SAAS,OAAO,QAAQ,WAAW,MAAO,KAA6B;AAC7E,SAAI,OAAO,WAAW,SAAU;KAKhC,MAAM,SADQ,OAAO,MAAM,IAAI,CACV;AAUrB,SARC,OAAO,SAAS,KAChB,CAAC,OAAO,WAAW,IAAI,IACvB,CAAC,OAAO,WAAW,IAAI,IACvB,CAAC,OAAO,WAAW,IAAI,IACvB,CAAC,OAAO,SAAS,KAAK,IACtB,CAAC,OAAO,WAAW,IAAI,IACvB,CAAC,OAAO,SAAS,KAAK,CAGtB,QACC,gBAAgB,IAAI,OAAO,EAC3B,YAAY,YAAY,6BAA6B,OAAO,8CAC5D,CAAC,KAAK,KAAK;;;IAId;GACD;EAEF"}