@better-openclaw/core 1.0.16 → 1.0.18

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 +174 -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 +172 -0
  40. package/dist/deployers/coolify.mjs.map +1 -0
  41. package/dist/deployers/dokploy.cjs +141 -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 +139 -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 +241 -0
  866. package/src/deployers/dokploy.ts +174 -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
@@ -1 +1 @@
1
- {"version":3,"file":"types.mjs","names":[],"sources":["../src/types.ts"],"sourcesContent":["import type { z } from \"zod\";\nimport type {\n\tAddedDependencySchema,\n\tAiProviderSchema,\n\tApiErrorSchema,\n\tComposeOptionsSchema,\n\tDeploymentTargetSchema,\n\tDeploymentTypeSchema,\n\tDeploySchema,\n\tEnvVariableSchema,\n\tErrorSchema,\n\tGenerationInputSchema,\n\tGsdRuntimeSchema,\n\tHealthCheckSchema,\n\tMaturitySchema,\n\tNativePlatformSchema,\n\tNativeRecipeSchema,\n\tOutputFormatSchema,\n\tPlatformSchema,\n\tPortMappingSchema,\n\tPresetSchema,\n\tProxyTypeSchema,\n\tResolvedServiceSchema,\n\tResolverOutputSchema,\n\tResourceLimitsSchema,\n\tRestartPolicySchema,\n\tServiceCategorySchema,\n\tServiceDefinitionSchema,\n\tSkillBindingSchema,\n\tSkillPackSchema,\n\tValidateRequestSchema,\n\tValidateResponseSchema,\n\tVolumeMappingSchema,\n\tWarningSchema,\n} from \"./schema.js\";\n\n// ─── Inferred Types ─────────────────────────────────────────────────────────\n\nexport type AiProvider = z.infer<typeof AiProviderSchema>;\nexport type GsdRuntime = z.infer<typeof GsdRuntimeSchema>;\nexport type ServiceCategory = z.infer<typeof ServiceCategorySchema>;\nexport type Maturity = z.infer<typeof MaturitySchema>;\nexport type Platform = z.infer<typeof PlatformSchema>;\nexport type RestartPolicy = z.infer<typeof RestartPolicySchema>;\nexport type ProxyType = z.infer<typeof ProxyTypeSchema>;\nexport type DeploymentTarget = z.infer<typeof DeploymentTargetSchema>;\nexport type DeploymentType = z.infer<typeof DeploymentTypeSchema>;\nexport type NativePlatform = z.infer<typeof NativePlatformSchema>;\nexport type NativeRecipe = z.infer<typeof NativeRecipeSchema>;\nexport type OutputFormat = z.infer<typeof OutputFormatSchema>;\n\nexport type PortMapping = z.infer<typeof PortMappingSchema>;\nexport type VolumeMapping = z.infer<typeof VolumeMappingSchema>;\nexport type EnvVariable = z.infer<typeof EnvVariableSchema>;\nexport type HealthCheck = z.infer<typeof HealthCheckSchema>;\nexport type ResourceLimits = z.infer<typeof ResourceLimitsSchema>;\nexport type Deploy = z.infer<typeof DeploySchema>;\nexport type SkillBinding = z.infer<typeof SkillBindingSchema>;\n\nexport type ServiceDefinition = z.infer<typeof ServiceDefinitionSchema>;\nexport type SkillPack = z.infer<typeof SkillPackSchema>;\nexport type Preset = z.infer<typeof PresetSchema>;\n\nexport type GenerationInput = z.infer<typeof GenerationInputSchema>;\nexport type ComposeOptions = z.infer<typeof ComposeOptionsSchema> & {\n\t/** Dynamic Traefik labels per service, computed by the Traefik generator. */\n\ttraefikLabels?: Map<string, Record<string, string>>;\n};\nexport type ResolvedService = z.infer<typeof ResolvedServiceSchema>;\nexport type AddedDependency = z.infer<typeof AddedDependencySchema>;\nexport type Warning = z.infer<typeof WarningSchema>;\nexport type ResolverError = z.infer<typeof ErrorSchema>;\nexport type ResolverOutput = z.infer<typeof ResolverOutputSchema>;\n\nexport type ValidateRequest = z.infer<typeof ValidateRequestSchema>;\nexport type ValidateResponse = z.infer<typeof ValidateResponseSchema>;\nexport type ApiError = z.infer<typeof ApiErrorSchema>;\n\n// ─── Additional Types ───────────────────────────────────────────────────────\n\nexport interface ResolverInput {\n\tservices: string[];\n\tskillPacks: string[];\n\taiProviders?: AiProvider[];\n\tgsdRuntimes?: GsdRuntime[];\n\tproxy?: ProxyType;\n\tgpu?: boolean;\n\tplatform?: Platform;\n\tmonitoring?: boolean;\n\tmemoryThresholds?: { info: number; warning: number; critical: number };\n}\n\nexport interface GeneratedFiles {\n\t[path: string]: string;\n}\n\nexport interface GenerationMetadata {\n\tserviceCount: number;\n\tskillCount: number;\n\testimatedMemoryMB: number;\n\tgeneratedAt: string;\n}\n\nexport interface GenerationResult {\n\tfiles: GeneratedFiles;\n\tmetadata: GenerationMetadata;\n}\n\nexport interface CategoryInfo {\n\tid: ServiceCategory;\n\tname: string;\n\ticon: string;\n}\n\nexport const SERVICE_CATEGORIES: CategoryInfo[] = [\n\t{ id: \"coding-agent\", name: \"AI Coding Agents\", icon: \"💻\" },\n\t{ id: \"ai-platform\", name: \"AI Platforms & Chat UIs\", icon: \"🧪\" },\n\t{ id: \"ai\", name: \"AI / Local Models\", icon: \"🤖\" },\n\t{ id: \"automation\", name: \"Automation & Workflows\", icon: \"🔄\" },\n\t{ id: \"vector-db\", name: \"Vector Databases\", icon: \"🧠\" },\n\t{ id: \"media\", name: \"Media & Video\", icon: \"🎬\" },\n\t{ id: \"social-media\", name: \"Social Media\", icon: \"📱\" },\n\t{ id: \"analytics\", name: \"Analytics\", icon: \"📊\" },\n\t{ id: \"knowledge\", name: \"Knowledge & Documents\", icon: \"📚\" },\n\t{ id: \"storage\", name: \"Object Storage\", icon: \"💾\" },\n\t{ id: \"database\", name: \"Databases & Caching\", icon: \"🗄️\" },\n\t{ id: \"dev-tools\", name: \"Developer Tools\", icon: \"🛠️\" },\n\t{ id: \"proxy\", name: \"Reverse Proxy\", icon: \"🌐\" },\n\t{ id: \"monitoring\", name: \"Monitoring\", icon: \"📡\" },\n\t{ id: \"browser\", name: \"Browser Automation\", icon: \"🌐\" },\n\t{ id: \"search\", name: \"Search\", icon: \"🔍\" },\n\t{ id: \"communication\", name: \"Notifications\", icon: \"🔔\" },\n\t{ id: \"desktop\", name: \"Desktop Environment\", icon: \"🖥️\" },\n\t{ id: \"streaming\", name: \"Streaming & Relay\", icon: \"📺\" },\n\t{ id: \"security\", name: \"Security & Pentesting\", icon: \"🛡️\" },\n];\n"],"mappings":";AAkHA,MAAa,qBAAqC;CACjD;EAAE,IAAI;EAAgB,MAAM;EAAoB,MAAM;EAAM;CAC5D;EAAE,IAAI;EAAe,MAAM;EAA2B,MAAM;EAAM;CAClE;EAAE,IAAI;EAAM,MAAM;EAAqB,MAAM;EAAM;CACnD;EAAE,IAAI;EAAc,MAAM;EAA0B,MAAM;EAAM;CAChE;EAAE,IAAI;EAAa,MAAM;EAAoB,MAAM;EAAM;CACzD;EAAE,IAAI;EAAS,MAAM;EAAiB,MAAM;EAAM;CAClD;EAAE,IAAI;EAAgB,MAAM;EAAgB,MAAM;EAAM;CACxD;EAAE,IAAI;EAAa,MAAM;EAAa,MAAM;EAAM;CAClD;EAAE,IAAI;EAAa,MAAM;EAAyB,MAAM;EAAM;CAC9D;EAAE,IAAI;EAAW,MAAM;EAAkB,MAAM;EAAM;CACrD;EAAE,IAAI;EAAY,MAAM;EAAuB,MAAM;EAAO;CAC5D;EAAE,IAAI;EAAa,MAAM;EAAmB,MAAM;EAAO;CACzD;EAAE,IAAI;EAAS,MAAM;EAAiB,MAAM;EAAM;CAClD;EAAE,IAAI;EAAc,MAAM;EAAc,MAAM;EAAM;CACpD;EAAE,IAAI;EAAW,MAAM;EAAsB,MAAM;EAAM;CACzD;EAAE,IAAI;EAAU,MAAM;EAAU,MAAM;EAAM;CAC5C;EAAE,IAAI;EAAiB,MAAM;EAAiB,MAAM;EAAM;CAC1D;EAAE,IAAI;EAAW,MAAM;EAAuB,MAAM;EAAO;CAC3D;EAAE,IAAI;EAAa,MAAM;EAAqB,MAAM;EAAM;CAC1D;EAAE,IAAI;EAAY,MAAM;EAAyB,MAAM;EAAO;CAC9D"}
1
+ {"version":3,"file":"types.mjs","names":[],"sources":["../src/types.ts"],"sourcesContent":["import type { z } from \"zod\";\nimport type {\n\tAddedDependencySchema,\n\tAiProviderSchema,\n\tApiErrorSchema,\n\tComposeOptionsSchema,\n\tDeploymentTargetSchema,\n\tDeploymentTypeSchema,\n\tDeploySchema,\n\tDeployTargetSchema,\n\tEnvVariableSchema,\n\tErrorSchema,\n\tGenerationInputSchema,\n\tGsdRuntimeSchema,\n\tHealthCheckSchema,\n\tMaturitySchema,\n\tNativePlatformSchema,\n\tNativeRecipeSchema,\n\tOpenclawImageVariantSchema,\n\tOpenclawInstallMethodSchema,\n\tOutputFormatSchema,\n\tPlatformSchema,\n\tPortMappingSchema,\n\tPresetSchema,\n\tProxyTypeSchema,\n\tResolvedServiceSchema,\n\tResolverOutputSchema,\n\tResourceLimitsSchema,\n\tRestartPolicySchema,\n\tServiceCategorySchema,\n\tServiceDefinitionSchema,\n\tSkillBindingSchema,\n\tSkillPackSchema,\n\tValidateRequestSchema,\n\tValidateResponseSchema,\n\tVolumeMappingSchema,\n\tWarningSchema,\n} from \"./schema.js\";\n\n// ─── Inferred Types ─────────────────────────────────────────────────────────\n\nexport type AiProvider = z.infer<typeof AiProviderSchema>;\nexport type GsdRuntime = z.infer<typeof GsdRuntimeSchema>;\nexport type ServiceCategory = z.infer<typeof ServiceCategorySchema>;\nexport type Maturity = z.infer<typeof MaturitySchema>;\nexport type Platform = z.infer<typeof PlatformSchema>;\nexport type RestartPolicy = z.infer<typeof RestartPolicySchema>;\nexport type ProxyType = z.infer<typeof ProxyTypeSchema>;\nexport type DeploymentTarget = z.infer<typeof DeploymentTargetSchema>;\nexport type DeploymentType = z.infer<typeof DeploymentTypeSchema>;\nexport type NativePlatform = z.infer<typeof NativePlatformSchema>;\nexport type NativeRecipe = z.infer<typeof NativeRecipeSchema>;\nexport type OutputFormat = z.infer<typeof OutputFormatSchema>;\nexport type OpenclawImageVariant = z.infer<typeof OpenclawImageVariantSchema>;\nexport type OpenclawInstallMethod = z.infer<typeof OpenclawInstallMethodSchema>;\nexport type DeployTarget = z.infer<typeof DeployTargetSchema>;\n\nexport type PortMapping = z.infer<typeof PortMappingSchema>;\nexport type VolumeMapping = z.infer<typeof VolumeMappingSchema>;\nexport type EnvVariable = z.infer<typeof EnvVariableSchema>;\nexport type HealthCheck = z.infer<typeof HealthCheckSchema>;\nexport type ResourceLimits = z.infer<typeof ResourceLimitsSchema>;\nexport type Deploy = z.infer<typeof DeploySchema>;\nexport type SkillBinding = z.infer<typeof SkillBindingSchema>;\n\nexport type ServiceDefinition = z.infer<typeof ServiceDefinitionSchema>;\nexport type SkillPack = z.infer<typeof SkillPackSchema>;\nexport type Preset = z.infer<typeof PresetSchema>;\n\nexport type GenerationInput = z.infer<typeof GenerationInputSchema>;\nexport type ComposeOptions = z.infer<typeof ComposeOptionsSchema> & {\n\t/** Dynamic Traefik labels per service, computed by the Traefik generator. */\n\ttraefikLabels?: Map<string, Record<string, string>>;\n};\nexport type ResolvedService = z.infer<typeof ResolvedServiceSchema>;\nexport type AddedDependency = z.infer<typeof AddedDependencySchema>;\nexport type Warning = z.infer<typeof WarningSchema>;\nexport type ResolverError = z.infer<typeof ErrorSchema>;\nexport type ResolverOutput = z.infer<typeof ResolverOutputSchema>;\n\nexport type ValidateRequest = z.infer<typeof ValidateRequestSchema>;\nexport type ValidateResponse = z.infer<typeof ValidateResponseSchema>;\nexport type ApiError = z.infer<typeof ApiErrorSchema>;\n\n// ─── Additional Types ───────────────────────────────────────────────────────\n\nexport interface ResolverInput {\n\tservices: string[];\n\tskillPacks: string[];\n\taiProviders?: AiProvider[];\n\tgsdRuntimes?: GsdRuntime[];\n\tproxy?: ProxyType;\n\tgpu?: boolean;\n\tplatform?: Platform;\n\tdeployment?: DeploymentType;\n\tdeploymentType?: DeploymentType;\n\tmonitoring?: boolean;\n\tmemoryThresholds?: { info: number; warning: number; critical: number };\n}\n\nexport interface GeneratedFiles {\n\t[path: string]: string;\n}\n\nexport interface GenerationMetadata {\n\tserviceCount: number;\n\tskillCount: number;\n\testimatedMemoryMB: number;\n\tgeneratedAt: string;\n}\n\nexport interface GenerationResult {\n\tfiles: GeneratedFiles;\n\tmetadata: GenerationMetadata;\n}\n\nexport interface CategoryInfo {\n\tid: ServiceCategory;\n\tname: string;\n\tdescription?: string;\n\tlabel?: string;\n\ticon: string;\n}\n\nexport const SERVICE_CATEGORIES: CategoryInfo[] = [\n\t{\n\t\tid: \"coding-agent\",\n\t\tname: \"AI Coding Agents\",\n\t\tdescription: \"AI Coding Agents\",\n\t\tlabel: \"AI Coding Agents\",\n\t\ticon: \"💻\",\n\t},\n\t{\n\t\tid: \"ai-platform\",\n\t\tname: \"AI Platforms & Chat UIs\",\n\t\tdescription: \"AI Platforms & Chat UIs\",\n\t\tlabel: \"AI Platforms & Chat UIs\",\n\t\ticon: \"🧪\",\n\t},\n\t{\n\t\tid: \"ai\",\n\t\tname: \"AI / Local Models\",\n\t\tdescription: \"AI / Local Models\",\n\t\tlabel: \"AI / Local Models\",\n\t\ticon: \"🤖\",\n\t},\n\t{\n\t\tid: \"automation\",\n\t\tname: \"Automation & Workflows\",\n\t\tdescription: \"Automation & Workflows\",\n\t\tlabel: \"Automation & Workflows\",\n\t\ticon: \"🔄\",\n\t},\n\t{\n\t\tid: \"vector-db\",\n\t\tname: \"Vector Databases\",\n\t\tdescription: \"Vector Databases\",\n\t\tlabel: \"Vector Databases\",\n\t\ticon: \"🧠\",\n\t},\n\t{\n\t\tid: \"media\",\n\t\tname: \"Media & Video\",\n\t\tdescription: \"Media & Video\",\n\t\tlabel: \"Media & Video\",\n\t\ticon: \"🎬\",\n\t},\n\t{\n\t\tid: \"social-media\",\n\t\tname: \"Social Media\",\n\t\tdescription: \"Social Media\",\n\t\tlabel: \"Social Media\",\n\t\ticon: \"📱\",\n\t},\n\t{ id: \"analytics\", name: \"Analytics\", description: \"Analytics\", label: \"Analytics\", icon: \"📊\" },\n\t{\n\t\tid: \"knowledge\",\n\t\tname: \"Knowledge & Documents\",\n\t\tdescription: \"Knowledge & Documents\",\n\t\tlabel: \"Knowledge & Documents\",\n\t\ticon: \"📚\",\n\t},\n\t{\n\t\tid: \"storage\",\n\t\tname: \"Object Storage\",\n\t\tdescription: \"Object Storage\",\n\t\tlabel: \"Object Storage\",\n\t\ticon: \"💾\",\n\t},\n\t{\n\t\tid: \"database\",\n\t\tname: \"Databases & Caching\",\n\t\tdescription: \"Databases & Caching\",\n\t\tlabel: \"Databases & Caching\",\n\t\ticon: \"🗄️\",\n\t},\n\t{\n\t\tid: \"dev-tools\",\n\t\tname: \"Developer Tools\",\n\t\tdescription: \"Developer Tools\",\n\t\tlabel: \"Developer Tools\",\n\t\ticon: \"🛠️\",\n\t},\n\t{\n\t\tid: \"proxy\",\n\t\tname: \"Reverse Proxy\",\n\t\tdescription: \"Reverse Proxy\",\n\t\tlabel: \"Reverse Proxy\",\n\t\ticon: \"🌐\",\n\t},\n\t{\n\t\tid: \"monitoring\",\n\t\tname: \"Monitoring\",\n\t\tdescription: \"Monitoring\",\n\t\tlabel: \"Monitoring\",\n\t\ticon: \"📡\",\n\t},\n\t{\n\t\tid: \"browser\",\n\t\tname: \"Browser Automation\",\n\t\tdescription: \"Browser Automation\",\n\t\tlabel: \"Browser Automation\",\n\t\ticon: \"🌐\",\n\t},\n\t{ id: \"search\", name: \"Search\", description: \"Search\", label: \"Search\", icon: \"🔍\" },\n\t{\n\t\tid: \"communication\",\n\t\tname: \"Notifications\",\n\t\tdescription: \"Notifications\",\n\t\tlabel: \"Notifications\",\n\t\ticon: \"🔔\",\n\t},\n\t{\n\t\tid: \"desktop\",\n\t\tname: \"Desktop Environment\",\n\t\tdescription: \"Desktop Environment\",\n\t\tlabel: \"Desktop Environment\",\n\t\ticon: \"🖥️\",\n\t},\n\t{\n\t\tid: \"streaming\",\n\t\tname: \"Streaming & Relay\",\n\t\tdescription: \"Streaming & Relay\",\n\t\tlabel: \"Streaming & Relay\",\n\t\ticon: \"📺\",\n\t},\n\t{\n\t\tid: \"security\",\n\t\tname: \"Security & Pentesting\",\n\t\tdescription: \"Security & Pentesting\",\n\t\tlabel: \"Security & Pentesting\",\n\t\ticon: \"🛡️\",\n\t},\n];\n"],"mappings":";AA4HA,MAAa,qBAAqC;CACjD;EACC,IAAI;EACJ,MAAM;EACN,aAAa;EACb,OAAO;EACP,MAAM;EACN;CACD;EACC,IAAI;EACJ,MAAM;EACN,aAAa;EACb,OAAO;EACP,MAAM;EACN;CACD;EACC,IAAI;EACJ,MAAM;EACN,aAAa;EACb,OAAO;EACP,MAAM;EACN;CACD;EACC,IAAI;EACJ,MAAM;EACN,aAAa;EACb,OAAO;EACP,MAAM;EACN;CACD;EACC,IAAI;EACJ,MAAM;EACN,aAAa;EACb,OAAO;EACP,MAAM;EACN;CACD;EACC,IAAI;EACJ,MAAM;EACN,aAAa;EACb,OAAO;EACP,MAAM;EACN;CACD;EACC,IAAI;EACJ,MAAM;EACN,aAAa;EACb,OAAO;EACP,MAAM;EACN;CACD;EAAE,IAAI;EAAa,MAAM;EAAa,aAAa;EAAa,OAAO;EAAa,MAAM;EAAM;CAChG;EACC,IAAI;EACJ,MAAM;EACN,aAAa;EACb,OAAO;EACP,MAAM;EACN;CACD;EACC,IAAI;EACJ,MAAM;EACN,aAAa;EACb,OAAO;EACP,MAAM;EACN;CACD;EACC,IAAI;EACJ,MAAM;EACN,aAAa;EACb,OAAO;EACP,MAAM;EACN;CACD;EACC,IAAI;EACJ,MAAM;EACN,aAAa;EACb,OAAO;EACP,MAAM;EACN;CACD;EACC,IAAI;EACJ,MAAM;EACN,aAAa;EACb,OAAO;EACP,MAAM;EACN;CACD;EACC,IAAI;EACJ,MAAM;EACN,aAAa;EACb,OAAO;EACP,MAAM;EACN;CACD;EACC,IAAI;EACJ,MAAM;EACN,aAAa;EACb,OAAO;EACP,MAAM;EACN;CACD;EAAE,IAAI;EAAU,MAAM;EAAU,aAAa;EAAU,OAAO;EAAU,MAAM;EAAM;CACpF;EACC,IAAI;EACJ,MAAM;EACN,aAAa;EACb,OAAO;EACP,MAAM;EACN;CACD;EACC,IAAI;EACJ,MAAM;EACN,aAAa;EACb,OAAO;EACP,MAAM;EACN;CACD;EACC,IAAI;EACJ,MAAM;EACN,aAAa;EACb,OAAO;EACP,MAAM;EACN;CACD;EACC,IAAI;EACJ,MAAM;EACN,aAAa;EACb,OAAO;EACP,MAAM;EACN;CACD"}
@@ -0,0 +1,124 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+ const require_chunk = require('./chunk-C0xms8kb.cjs');
3
+ let yaml = require("yaml");
4
+
5
+ //#region src/validator.ts
6
+ /**
7
+ * Validates a complete generated stack before writing files.
8
+ * Checks for port conflicts, volume uniqueness, env completeness,
9
+ * dependency ordering, YAML validity, and more.
10
+ */
11
+ function validate(resolved, composedYaml, options = {}) {
12
+ const errors = [];
13
+ const warnings = [];
14
+ checkPortConflicts(resolved, errors);
15
+ checkVolumeUniqueness(resolved, errors);
16
+ checkEnvCompleteness(resolved, errors, warnings, options.generateSecrets ?? true);
17
+ checkNetworkConsistency(resolved, warnings);
18
+ checkDependencyDAG(resolved, errors);
19
+ checkYamlValidity(composedYaml, errors);
20
+ if (options.domain) checkDomainFormat(options.domain, errors);
21
+ return {
22
+ valid: errors.length === 0,
23
+ errors,
24
+ warnings
25
+ };
26
+ }
27
+ function checkPortConflicts(resolved, errors) {
28
+ const hostPorts = /* @__PURE__ */ new Map();
29
+ for (const svc of resolved.services) for (const port of svc.definition.ports) {
30
+ if (!port.exposed) continue;
31
+ const existing = hostPorts.get(port.host);
32
+ if (existing) errors.push({
33
+ type: "port_conflict",
34
+ message: `Port ${port.host} is used by both "${existing}" and "${svc.definition.name}"`
35
+ });
36
+ else hostPorts.set(port.host, svc.definition.name);
37
+ }
38
+ }
39
+ function checkVolumeUniqueness(resolved, errors) {
40
+ const volumeNames = /* @__PURE__ */ new Map();
41
+ for (const svc of resolved.services) for (const vol of svc.definition.volumes) {
42
+ const existing = volumeNames.get(vol.name);
43
+ if (existing && existing !== svc.definition.id) errors.push({
44
+ type: "volume_conflict",
45
+ message: `Volume name "${vol.name}" is used by both "${existing}" and "${svc.definition.id}"`
46
+ });
47
+ else volumeNames.set(vol.name, svc.definition.id);
48
+ }
49
+ }
50
+ function checkEnvCompleteness(resolved, errors, warnings, generateSecrets) {
51
+ for (const svc of resolved.services) for (const envVar of svc.definition.environment) {
52
+ if (envVar.required && !envVar.defaultValue && !envVar.secret) errors.push({
53
+ type: "missing_env",
54
+ message: `Required environment variable "${envVar.key}" for "${svc.definition.name}" has no default value`
55
+ });
56
+ if (envVar.secret && !generateSecrets && !envVar.defaultValue) warnings.push({
57
+ type: "secret_needed",
58
+ message: `Secret "${envVar.key}" for "${svc.definition.name}" needs to be configured manually`
59
+ });
60
+ if (envVar.validation && envVar.defaultValue) try {
61
+ if (!new RegExp(envVar.validation).test(envVar.defaultValue)) warnings.push({
62
+ type: "env_validation",
63
+ message: `Environment variable "${envVar.key}" for "${svc.definition.name}" default value does not match validation pattern: ${envVar.validation}`
64
+ });
65
+ } catch {
66
+ warnings.push({
67
+ type: "env_validation",
68
+ message: `Environment variable "${envVar.key}" for "${svc.definition.name}" has invalid validation regex: ${envVar.validation}`
69
+ });
70
+ }
71
+ }
72
+ }
73
+ function checkNetworkConsistency(resolved, warnings) {
74
+ for (const svc of resolved.services) if (!svc.definition.networks.includes("openclaw-network")) warnings.push({
75
+ type: "network",
76
+ message: `Service "${svc.definition.name}" is not on openclaw-network — it may not be reachable from OpenClaw`
77
+ });
78
+ }
79
+ function checkDependencyDAG(resolved, errors) {
80
+ const ids = new Set(resolved.services.map((s) => s.definition.id));
81
+ const visited = /* @__PURE__ */ new Set();
82
+ const inStack = /* @__PURE__ */ new Set();
83
+ const adjList = /* @__PURE__ */ new Map();
84
+ for (const svc of resolved.services) {
85
+ const deps = [...svc.definition.requires, ...svc.definition.dependsOn].filter((d) => ids.has(d));
86
+ adjList.set(svc.definition.id, deps);
87
+ }
88
+ function hasCycle(node) {
89
+ if (inStack.has(node)) return true;
90
+ if (visited.has(node)) return false;
91
+ visited.add(node);
92
+ inStack.add(node);
93
+ for (const dep of adjList.get(node) ?? []) if (hasCycle(dep)) return true;
94
+ inStack.delete(node);
95
+ return false;
96
+ }
97
+ for (const id of ids) if (hasCycle(id)) {
98
+ errors.push({
99
+ type: "cycle",
100
+ message: `Circular dependency detected involving "${id}"`
101
+ });
102
+ break;
103
+ }
104
+ }
105
+ function checkYamlValidity(yaml$1, errors) {
106
+ try {
107
+ (0, yaml.parse)(yaml$1);
108
+ } catch (e) {
109
+ errors.push({
110
+ type: "yaml_invalid",
111
+ message: `Generated YAML is not valid: ${e instanceof Error ? e.message : String(e)}`
112
+ });
113
+ }
114
+ }
115
+ function checkDomainFormat(domain, errors) {
116
+ if (!/^(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\.)+[a-zA-Z]{2,}$/.test(domain)) errors.push({
117
+ type: "invalid_domain",
118
+ message: `"${domain}" is not a valid domain name`
119
+ });
120
+ }
121
+
122
+ //#endregion
123
+ exports.validate = validate;
124
+ //# sourceMappingURL=validator.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.cjs","names":["yaml"],"sources":["../src/validator.ts"],"sourcesContent":["import { parse } from \"yaml\";\nimport type { ResolverError, ResolverOutput, Warning } from \"./types.js\";\n\nexport interface ValidationResult {\n\tvalid: boolean;\n\terrors: ResolverError[];\n\twarnings: Warning[];\n}\n\n/**\n * Validates a complete generated stack before writing files.\n * Checks for port conflicts, volume uniqueness, env completeness,\n * dependency ordering, YAML validity, and more.\n */\nexport function validate(\n\tresolved: ResolverOutput,\n\tcomposedYaml: string,\n\toptions: { domain?: string; generateSecrets?: boolean } = {},\n): ValidationResult {\n\tconst errors: ResolverError[] = [];\n\tconst warnings: Warning[] = [];\n\n\tcheckPortConflicts(resolved, errors);\n\tcheckVolumeUniqueness(resolved, errors);\n\tcheckEnvCompleteness(resolved, errors, warnings, options.generateSecrets ?? true);\n\tcheckNetworkConsistency(resolved, warnings);\n\tcheckDependencyDAG(resolved, errors);\n\tcheckYamlValidity(composedYaml, errors);\n\n\tif (options.domain) {\n\t\tcheckDomainFormat(options.domain, errors);\n\t}\n\n\treturn {\n\t\tvalid: errors.length === 0,\n\t\terrors,\n\t\twarnings,\n\t};\n}\n\nfunction checkPortConflicts(resolved: ResolverOutput, errors: ResolverError[]): void {\n\tconst hostPorts = new Map<number, string>();\n\tfor (const svc of resolved.services) {\n\t\tfor (const port of svc.definition.ports) {\n\t\t\tif (!port.exposed) continue;\n\t\t\tconst existing = hostPorts.get(port.host);\n\t\t\tif (existing) {\n\t\t\t\terrors.push({\n\t\t\t\t\ttype: \"port_conflict\",\n\t\t\t\t\tmessage: `Port ${port.host} is used by both \"${existing}\" and \"${svc.definition.name}\"`,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\thostPorts.set(port.host, svc.definition.name);\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction checkVolumeUniqueness(resolved: ResolverOutput, errors: ResolverError[]): void {\n\tconst volumeNames = new Map<string, string>();\n\tfor (const svc of resolved.services) {\n\t\tfor (const vol of svc.definition.volumes) {\n\t\t\tconst existing = volumeNames.get(vol.name);\n\t\t\tif (existing && existing !== svc.definition.id) {\n\t\t\t\terrors.push({\n\t\t\t\t\ttype: \"volume_conflict\",\n\t\t\t\t\tmessage: `Volume name \"${vol.name}\" is used by both \"${existing}\" and \"${svc.definition.id}\"`,\n\t\t\t\t});\n\t\t\t} else {\n\t\t\t\tvolumeNames.set(vol.name, svc.definition.id);\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction checkEnvCompleteness(\n\tresolved: ResolverOutput,\n\terrors: ResolverError[],\n\twarnings: Warning[],\n\tgenerateSecrets: boolean,\n): void {\n\tfor (const svc of resolved.services) {\n\t\tfor (const envVar of svc.definition.environment) {\n\t\t\tif (envVar.required && !envVar.defaultValue && !envVar.secret) {\n\t\t\t\terrors.push({\n\t\t\t\t\ttype: \"missing_env\",\n\t\t\t\t\tmessage: `Required environment variable \"${envVar.key}\" for \"${svc.definition.name}\" has no default value`,\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (envVar.secret && !generateSecrets && !envVar.defaultValue) {\n\t\t\t\twarnings.push({\n\t\t\t\t\ttype: \"secret_needed\",\n\t\t\t\t\tmessage: `Secret \"${envVar.key}\" for \"${svc.definition.name}\" needs to be configured manually`,\n\t\t\t\t});\n\t\t\t}\n\t\t\tif (envVar.validation && envVar.defaultValue) {\n\t\t\t\ttry {\n\t\t\t\t\tconst regex = new RegExp(envVar.validation);\n\t\t\t\t\tif (!regex.test(envVar.defaultValue)) {\n\t\t\t\t\t\twarnings.push({\n\t\t\t\t\t\t\ttype: \"env_validation\",\n\t\t\t\t\t\t\tmessage: `Environment variable \"${envVar.key}\" for \"${svc.definition.name}\" default value does not match validation pattern: ${envVar.validation}`,\n\t\t\t\t\t\t});\n\t\t\t\t\t}\n\t\t\t\t} catch {\n\t\t\t\t\twarnings.push({\n\t\t\t\t\t\ttype: \"env_validation\",\n\t\t\t\t\t\tmessage: `Environment variable \"${envVar.key}\" for \"${svc.definition.name}\" has invalid validation regex: ${envVar.validation}`,\n\t\t\t\t\t});\n\t\t\t\t}\n\t\t\t}\n\t\t}\n\t}\n}\n\nfunction checkNetworkConsistency(resolved: ResolverOutput, warnings: Warning[]): void {\n\tfor (const svc of resolved.services) {\n\t\tif (!svc.definition.networks.includes(\"openclaw-network\")) {\n\t\t\twarnings.push({\n\t\t\t\ttype: \"network\",\n\t\t\t\tmessage: `Service \"${svc.definition.name}\" is not on openclaw-network — it may not be reachable from OpenClaw`,\n\t\t\t});\n\t\t}\n\t}\n}\n\nfunction checkDependencyDAG(resolved: ResolverOutput, errors: ResolverError[]): void {\n\tconst ids = new Set(resolved.services.map((s) => s.definition.id));\n\tconst visited = new Set<string>();\n\tconst inStack = new Set<string>();\n\n\tconst adjList = new Map<string, string[]>();\n\tfor (const svc of resolved.services) {\n\t\tconst deps = [...svc.definition.requires, ...svc.definition.dependsOn].filter((d) =>\n\t\t\tids.has(d),\n\t\t);\n\t\tadjList.set(svc.definition.id, deps);\n\t}\n\n\tfunction hasCycle(node: string): boolean {\n\t\tif (inStack.has(node)) return true;\n\t\tif (visited.has(node)) return false;\n\t\tvisited.add(node);\n\t\tinStack.add(node);\n\t\tfor (const dep of adjList.get(node) ?? []) {\n\t\t\tif (hasCycle(dep)) return true;\n\t\t}\n\t\tinStack.delete(node);\n\t\treturn false;\n\t}\n\n\tfor (const id of ids) {\n\t\tif (hasCycle(id)) {\n\t\t\terrors.push({\n\t\t\t\ttype: \"cycle\",\n\t\t\t\tmessage: `Circular dependency detected involving \"${id}\"`,\n\t\t\t});\n\t\t\tbreak;\n\t\t}\n\t}\n}\n\nfunction checkYamlValidity(yaml: string, errors: ResolverError[]): void {\n\ttry {\n\t\tparse(yaml);\n\t} catch (e) {\n\t\terrors.push({\n\t\t\ttype: \"yaml_invalid\",\n\t\t\tmessage: `Generated YAML is not valid: ${e instanceof Error ? e.message : String(e)}`,\n\t\t});\n\t}\n}\n\nfunction checkDomainFormat(domain: string, errors: ResolverError[]): void {\n\tconst domainRegex = /^(?:[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?\\.)+[a-zA-Z]{2,}$/;\n\tif (!domainRegex.test(domain)) {\n\t\terrors.push({\n\t\t\ttype: \"invalid_domain\",\n\t\t\tmessage: `\"${domain}\" is not a valid domain name`,\n\t\t});\n\t}\n}\n"],"mappings":"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"}
@@ -0,0 +1,20 @@
1
+ import { ResolverError, ResolverOutput, Warning } from "./types.cjs";
2
+
3
+ //#region src/validator.d.ts
4
+ interface ValidationResult {
5
+ valid: boolean;
6
+ errors: ResolverError[];
7
+ warnings: Warning[];
8
+ }
9
+ /**
10
+ * Validates a complete generated stack before writing files.
11
+ * Checks for port conflicts, volume uniqueness, env completeness,
12
+ * dependency ordering, YAML validity, and more.
13
+ */
14
+ declare function validate(resolved: ResolverOutput, composedYaml: string, options?: {
15
+ domain?: string;
16
+ generateSecrets?: boolean;
17
+ }): ValidationResult;
18
+ //#endregion
19
+ export { ValidationResult, validate };
20
+ //# sourceMappingURL=validator.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.d.cts","names":[],"sources":["../src/validator.ts"],"mappings":";;;UAGiB,gBAAA;EAChB,KAAA;EACA,MAAA,EAAQ,aAAA;EACR,QAAA,EAAU,OAAA;AAAA;;;;;;iBAQK,QAAA,CACf,QAAA,EAAU,cAAA,EACV,YAAA,UACA,OAAA;EAAW,MAAA;EAAiB,eAAA;AAAA,IAC1B,gBAAA"}
@@ -0,0 +1,64 @@
1
+ const require_vi_2VT5v0um = require('./vi.2VT5v0um-BmRMvymT.cjs');
2
+ const require_resolver = require('./resolver.cjs');
3
+ const require_composer = require('./composer.cjs');
4
+ const require_validator = require('./validator.cjs');
5
+
6
+ //#region src/validator.test.ts
7
+ const defaultComposeOptions = {
8
+ projectName: "test-project",
9
+ proxy: "none",
10
+ gpu: false,
11
+ platform: "linux/amd64",
12
+ deployment: "local",
13
+ openclawVersion: "latest"
14
+ };
15
+ require_vi_2VT5v0um.describe("validate", () => {
16
+ require_vi_2VT5v0um.it("validates a valid minimal stack", () => {
17
+ const resolved = require_resolver.resolve({
18
+ services: ["redis"],
19
+ skillPacks: []
20
+ });
21
+ const result = require_validator.validate(resolved, require_composer.compose(resolved, defaultComposeOptions));
22
+ require_vi_2VT5v0um.globalExpect(result.valid).toBe(true);
23
+ require_vi_2VT5v0um.globalExpect(result.errors).toHaveLength(0);
24
+ });
25
+ require_vi_2VT5v0um.it("detects invalid YAML", () => {
26
+ require_vi_2VT5v0um.globalExpect(require_validator.validate(require_resolver.resolve({
27
+ services: ["redis"],
28
+ skillPacks: []
29
+ }), "services:\n redis:\n image: redis\n bad_indent:\n- broken\n::: invalid").errors.filter((e) => e.type === "yaml_invalid").length).toBeGreaterThanOrEqual(1);
30
+ });
31
+ require_vi_2VT5v0um.it("detects invalid domain", () => {
32
+ const resolved = require_resolver.resolve({
33
+ services: ["redis"],
34
+ skillPacks: []
35
+ });
36
+ require_vi_2VT5v0um.globalExpect(require_validator.validate(resolved, require_composer.compose(resolved, defaultComposeOptions), { domain: "not-a-domain" }).errors.filter((e) => e.type === "invalid_domain").length).toBeGreaterThanOrEqual(1);
37
+ });
38
+ require_vi_2VT5v0um.it("accepts valid domain", () => {
39
+ const resolved = require_resolver.resolve({
40
+ services: ["redis"],
41
+ skillPacks: []
42
+ });
43
+ require_vi_2VT5v0um.globalExpect(require_validator.validate(resolved, require_composer.compose(resolved, defaultComposeOptions), { domain: "example.com" }).errors.filter((e) => e.type === "invalid_domain")).toHaveLength(0);
44
+ });
45
+ require_vi_2VT5v0um.it("validates full stack without errors", () => {
46
+ const resolved = require_resolver.resolve({
47
+ services: [
48
+ "redis",
49
+ "qdrant",
50
+ "n8n",
51
+ "minio",
52
+ "browserless",
53
+ "searxng"
54
+ ],
55
+ skillPacks: []
56
+ });
57
+ const result = require_validator.validate(resolved, require_composer.compose(resolved, defaultComposeOptions));
58
+ require_vi_2VT5v0um.globalExpect(result.valid).toBe(true);
59
+ require_vi_2VT5v0um.globalExpect(result.errors).toHaveLength(0);
60
+ });
61
+ });
62
+
63
+ //#endregion
64
+ //# sourceMappingURL=validator.test.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.test.cjs","names":["describe","resolve","validate","compose"],"sources":["../src/validator.test.ts"],"sourcesContent":["import { describe, expect, it } from \"vitest\";\nimport { compose } from \"./composer.js\";\nimport { resolve } from \"./resolver.js\";\nimport type { ComposeOptions } from \"./types.js\";\nimport { validate } from \"./validator.js\";\n\nconst defaultComposeOptions: ComposeOptions = {\n\tprojectName: \"test-project\",\n\tproxy: \"none\",\n\tgpu: false,\n\tplatform: \"linux/amd64\",\n\tdeployment: \"local\",\n\topenclawVersion: \"latest\",\n};\n\ndescribe(\"validate\", () => {\n\tit(\"validates a valid minimal stack\", () => {\n\t\tconst resolved = resolve({ services: [\"redis\"], skillPacks: [] });\n\t\tconst yaml = compose(resolved, defaultComposeOptions);\n\t\tconst result = validate(resolved, yaml);\n\n\t\texpect(result.valid).toBe(true);\n\t\texpect(result.errors).toHaveLength(0);\n\t});\n\n\tit(\"detects invalid YAML\", () => {\n\t\tconst resolved = resolve({ services: [\"redis\"], skillPacks: [] });\n\t\tconst brokenYaml =\n\t\t\t\"services:\\n redis:\\n image: redis\\n bad_indent:\\n- broken\\n::: invalid\";\n\n\t\tconst result = validate(resolved, brokenYaml);\n\n\t\tconst yamlErrors = result.errors.filter((e) => e.type === \"yaml_invalid\");\n\t\texpect(yamlErrors.length).toBeGreaterThanOrEqual(1);\n\t});\n\n\tit(\"detects invalid domain\", () => {\n\t\tconst resolved = resolve({ services: [\"redis\"], skillPacks: [] });\n\t\tconst yaml = compose(resolved, defaultComposeOptions);\n\t\tconst result = validate(resolved, yaml, { domain: \"not-a-domain\" });\n\n\t\tconst domainErrors = result.errors.filter((e) => e.type === \"invalid_domain\");\n\t\texpect(domainErrors.length).toBeGreaterThanOrEqual(1);\n\t});\n\n\tit(\"accepts valid domain\", () => {\n\t\tconst resolved = resolve({ services: [\"redis\"], skillPacks: [] });\n\t\tconst yaml = compose(resolved, defaultComposeOptions);\n\t\tconst result = validate(resolved, yaml, { domain: \"example.com\" });\n\n\t\tconst domainErrors = result.errors.filter((e) => e.type === \"invalid_domain\");\n\t\texpect(domainErrors).toHaveLength(0);\n\t});\n\n\tit(\"validates full stack without errors\", () => {\n\t\tconst resolved = resolve({\n\t\t\tservices: [\"redis\", \"qdrant\", \"n8n\", \"minio\", \"browserless\", \"searxng\"],\n\t\t\tskillPacks: [],\n\t\t});\n\t\tconst yaml = compose(resolved, defaultComposeOptions);\n\t\tconst result = validate(resolved, yaml);\n\n\t\texpect(result.valid).toBe(true);\n\t\texpect(result.errors).toHaveLength(0);\n\t});\n});\n"],"mappings":";;;;;;AAMA,MAAM,wBAAwC;CAC7C,aAAa;CACb,OAAO;CACP,KAAK;CACL,UAAU;CACV,YAAY;CACZ,iBAAiB;CACjB;AAEDA,6BAAS,kBAAkB;AAC1B,wBAAG,yCAAyC;EAC3C,MAAM,WAAWC,yBAAQ;GAAE,UAAU,CAAC,QAAQ;GAAE,YAAY,EAAE;GAAE,CAAC;EAEjE,MAAM,SAASC,2BAAS,UADXC,yBAAQ,UAAU,sBAAsB,CACd;AAEvC,mCAAO,OAAO,MAAM,CAAC,KAAK,KAAK;AAC/B,mCAAO,OAAO,OAAO,CAAC,aAAa,EAAE;GACpC;AAEF,wBAAG,8BAA8B;AAQhC,mCAHeD,2BAJED,yBAAQ;GAAE,UAAU,CAAC,QAAQ;GAAE,YAAY,EAAE;GAAE,CAAC,EAEhE,8EAE4C,CAEnB,OAAO,QAAQ,MAAM,EAAE,SAAS,eAAe,CACvD,OAAO,CAAC,uBAAuB,EAAE;GAClD;AAEF,wBAAG,gCAAgC;EAClC,MAAM,WAAWA,yBAAQ;GAAE,UAAU,CAAC,QAAQ;GAAE,YAAY,EAAE;GAAE,CAAC;AAKjE,mCAHeC,2BAAS,UADXC,yBAAQ,UAAU,sBAAsB,EACb,EAAE,QAAQ,gBAAgB,CAAC,CAEvC,OAAO,QAAQ,MAAM,EAAE,SAAS,iBAAiB,CACzD,OAAO,CAAC,uBAAuB,EAAE;GACpD;AAEF,wBAAG,8BAA8B;EAChC,MAAM,WAAWF,yBAAQ;GAAE,UAAU,CAAC,QAAQ;GAAE,YAAY,EAAE;GAAE,CAAC;AAKjE,mCAHeC,2BAAS,UADXC,yBAAQ,UAAU,sBAAsB,EACb,EAAE,QAAQ,eAAe,CAAC,CAEtC,OAAO,QAAQ,MAAM,EAAE,SAAS,iBAAiB,CACzD,CAAC,aAAa,EAAE;GACnC;AAEF,wBAAG,6CAA6C;EAC/C,MAAM,WAAWF,yBAAQ;GACxB,UAAU;IAAC;IAAS;IAAU;IAAO;IAAS;IAAe;IAAU;GACvE,YAAY,EAAE;GACd,CAAC;EAEF,MAAM,SAASC,2BAAS,UADXC,yBAAQ,UAAU,sBAAsB,CACd;AAEvC,mCAAO,OAAO,MAAM,CAAC,KAAK,KAAK;AAC/B,mCAAO,OAAO,OAAO,CAAC,aAAa,EAAE;GACpC;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 { resolve } from "./resolver.mjs";
3
3
  import { compose } from "./composer.mjs";
4
4
  import { validate } from "./validator.mjs";
@@ -0,0 +1,65 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
+ const require_services_registry = require('./services/registry.cjs');
3
+
4
+ //#region src/version-manager.ts
5
+ /** Get the pinned image tag for a service */
6
+ function getImageTag(serviceId) {
7
+ return require_services_registry.getServiceById(serviceId)?.imageTag;
8
+ }
9
+ /** Get the full image reference (image:tag) for a service */
10
+ function getImageReference(serviceId) {
11
+ const svc = require_services_registry.getServiceById(serviceId);
12
+ if (!svc) return void 0;
13
+ return `${svc.image}:${svc.imageTag}`;
14
+ }
15
+ /** Pin all service image tags to the registry-defined versions (returns a copy) */
16
+ function pinImageTags(resolved) {
17
+ return {
18
+ ...resolved,
19
+ services: resolved.services.map((s) => {
20
+ const pinnedTag = require_services_registry.getServiceById(s.definition.id)?.imageTag ?? s.definition.imageTag;
21
+ return {
22
+ ...s,
23
+ definition: {
24
+ ...s.definition,
25
+ imageTag: pinnedTag
26
+ }
27
+ };
28
+ })
29
+ };
30
+ }
31
+ /** Check for known compatibility issues between services */
32
+ function checkCompatibility(services) {
33
+ const warnings = [];
34
+ const ids = new Set(services.map((s) => s.id));
35
+ if (ids.has("redis") && ids.has("valkey")) warnings.push({
36
+ type: "compatibility",
37
+ message: "Redis and Valkey cannot coexist. Choose one."
38
+ });
39
+ if (ids.has("caddy") && ids.has("traefik")) warnings.push({
40
+ type: "compatibility",
41
+ message: "Caddy and Traefik cannot coexist. Choose one reverse proxy."
42
+ });
43
+ const vectorDbs = [
44
+ "qdrant",
45
+ "chromadb",
46
+ "weaviate"
47
+ ].filter((id) => ids.has(id));
48
+ if (vectorDbs.length > 1) warnings.push({
49
+ type: "compatibility",
50
+ message: `Multiple vector databases selected (${vectorDbs.join(", ")}). Consider using just one to reduce resource usage.`
51
+ });
52
+ const gpuServices = services.filter((s) => s.gpuRequired);
53
+ if (gpuServices.length > 0) warnings.push({
54
+ type: "compatibility",
55
+ message: `Services requiring GPU: ${gpuServices.map((s) => s.name).join(", ")}. Ensure NVIDIA Container Toolkit is installed.`
56
+ });
57
+ return warnings;
58
+ }
59
+
60
+ //#endregion
61
+ exports.checkCompatibility = checkCompatibility;
62
+ exports.getImageReference = getImageReference;
63
+ exports.getImageTag = getImageTag;
64
+ exports.pinImageTags = pinImageTags;
65
+ //# sourceMappingURL=version-manager.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version-manager.cjs","names":["getServiceById"],"sources":["../src/version-manager.ts"],"sourcesContent":["import { getServiceById } from \"./services/registry.js\";\nimport type { ResolverOutput, ServiceDefinition, Warning } from \"./types.js\";\n\n/** Get the pinned image tag for a service */\nexport function getImageTag(serviceId: string): string | undefined {\n\tconst svc = getServiceById(serviceId);\n\treturn svc?.imageTag;\n}\n\n/** Get the full image reference (image:tag) for a service */\nexport function getImageReference(serviceId: string): string | undefined {\n\tconst svc = getServiceById(serviceId);\n\tif (!svc) return undefined;\n\treturn `${svc.image}:${svc.imageTag}`;\n}\n\n/** Pin all service image tags to the registry-defined versions (returns a copy) */\nexport function pinImageTags(resolved: ResolverOutput): ResolverOutput {\n\treturn {\n\t\t...resolved,\n\t\tservices: resolved.services.map((s) => {\n\t\t\tconst registryDef = getServiceById(s.definition.id);\n\t\t\tconst pinnedTag = registryDef?.imageTag ?? s.definition.imageTag;\n\t\t\treturn {\n\t\t\t\t...s,\n\t\t\t\tdefinition: {\n\t\t\t\t\t...s.definition,\n\t\t\t\t\timageTag: pinnedTag,\n\t\t\t\t},\n\t\t\t};\n\t\t}),\n\t};\n}\n\n/** Check for known compatibility issues between services */\nexport function checkCompatibility(services: ServiceDefinition[]): Warning[] {\n\tconst warnings: Warning[] = [];\n\tconst ids = new Set(services.map((s) => s.id));\n\n\t// Redis + Valkey conflict (should already be caught by resolver, but double-check)\n\tif (ids.has(\"redis\") && ids.has(\"valkey\")) {\n\t\twarnings.push({\n\t\t\ttype: \"compatibility\",\n\t\t\tmessage: \"Redis and Valkey cannot coexist. Choose one.\",\n\t\t});\n\t}\n\t// Caddy + Traefik conflict\n\tif (ids.has(\"caddy\") && ids.has(\"traefik\")) {\n\t\twarnings.push({\n\t\t\ttype: \"compatibility\",\n\t\t\tmessage: \"Caddy and Traefik cannot coexist. Choose one reverse proxy.\",\n\t\t});\n\t}\n\t// Multiple vector DBs warning\n\tconst vectorDbs = [\"qdrant\", \"chromadb\", \"weaviate\"].filter((id) => ids.has(id));\n\tif (vectorDbs.length > 1) {\n\t\twarnings.push({\n\t\t\ttype: \"compatibility\",\n\t\t\tmessage: `Multiple vector databases selected (${vectorDbs.join(\", \")}). Consider using just one to reduce resource usage.`,\n\t\t});\n\t}\n\t// GPU services without GPU\n\tconst gpuServices = services.filter((s) => s.gpuRequired);\n\tif (gpuServices.length > 0) {\n\t\twarnings.push({\n\t\t\ttype: \"compatibility\",\n\t\t\tmessage: `Services requiring GPU: ${gpuServices.map((s) => s.name).join(\", \")}. Ensure NVIDIA Container Toolkit is installed.`,\n\t\t});\n\t}\n\n\treturn warnings;\n}\n"],"mappings":";;;;;AAIA,SAAgB,YAAY,WAAuC;AAElE,QADYA,yCAAe,UAAU,EACzB;;;AAIb,SAAgB,kBAAkB,WAAuC;CACxE,MAAM,MAAMA,yCAAe,UAAU;AACrC,KAAI,CAAC,IAAK,QAAO;AACjB,QAAO,GAAG,IAAI,MAAM,GAAG,IAAI;;;AAI5B,SAAgB,aAAa,UAA0C;AACtE,QAAO;EACN,GAAG;EACH,UAAU,SAAS,SAAS,KAAK,MAAM;GAEtC,MAAM,YADcA,yCAAe,EAAE,WAAW,GAAG,EACpB,YAAY,EAAE,WAAW;AACxD,UAAO;IACN,GAAG;IACH,YAAY;KACX,GAAG,EAAE;KACL,UAAU;KACV;IACD;IACA;EACF;;;AAIF,SAAgB,mBAAmB,UAA0C;CAC5E,MAAM,WAAsB,EAAE;CAC9B,MAAM,MAAM,IAAI,IAAI,SAAS,KAAK,MAAM,EAAE,GAAG,CAAC;AAG9C,KAAI,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,SAAS,CACxC,UAAS,KAAK;EACb,MAAM;EACN,SAAS;EACT,CAAC;AAGH,KAAI,IAAI,IAAI,QAAQ,IAAI,IAAI,IAAI,UAAU,CACzC,UAAS,KAAK;EACb,MAAM;EACN,SAAS;EACT,CAAC;CAGH,MAAM,YAAY;EAAC;EAAU;EAAY;EAAW,CAAC,QAAQ,OAAO,IAAI,IAAI,GAAG,CAAC;AAChF,KAAI,UAAU,SAAS,EACtB,UAAS,KAAK;EACb,MAAM;EACN,SAAS,uCAAuC,UAAU,KAAK,KAAK,CAAC;EACrE,CAAC;CAGH,MAAM,cAAc,SAAS,QAAQ,MAAM,EAAE,YAAY;AACzD,KAAI,YAAY,SAAS,EACxB,UAAS,KAAK;EACb,MAAM;EACN,SAAS,2BAA2B,YAAY,KAAK,MAAM,EAAE,KAAK,CAAC,KAAK,KAAK,CAAC;EAC9E,CAAC;AAGH,QAAO"}
@@ -0,0 +1,14 @@
1
+ import { ResolverOutput, ServiceDefinition, Warning } from "./types.cjs";
2
+
3
+ //#region src/version-manager.d.ts
4
+ /** Get the pinned image tag for a service */
5
+ declare function getImageTag(serviceId: string): string | undefined;
6
+ /** Get the full image reference (image:tag) for a service */
7
+ declare function getImageReference(serviceId: string): string | undefined;
8
+ /** Pin all service image tags to the registry-defined versions (returns a copy) */
9
+ declare function pinImageTags(resolved: ResolverOutput): ResolverOutput;
10
+ /** Check for known compatibility issues between services */
11
+ declare function checkCompatibility(services: ServiceDefinition[]): Warning[];
12
+ //#endregion
13
+ export { checkCompatibility, getImageReference, getImageTag, pinImageTags };
14
+ //# sourceMappingURL=version-manager.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version-manager.d.cts","names":[],"sources":["../src/version-manager.ts"],"mappings":";;;;iBAIgB,WAAA,CAAY,SAAA;AAA5B;AAAA,iBAMgB,iBAAA,CAAkB,SAAA;;iBAOlB,YAAA,CAAa,QAAA,EAAU,cAAA,GAAiB,cAAA;;iBAkBxC,kBAAA,CAAmB,QAAA,EAAU,iBAAA,KAAsB,OAAA"}
@@ -0,0 +1,101 @@
1
+ const require_vi_2VT5v0um = require('./vi.2VT5v0um-BmRMvymT.cjs');
2
+ const require_services_registry = require('./services/registry.cjs');
3
+ const require_resolver = require('./resolver.cjs');
4
+ const require_version_manager = require('./version-manager.cjs');
5
+
6
+ //#region src/version-manager.test.ts
7
+ require_vi_2VT5v0um.describe("getImageTag", () => {
8
+ require_vi_2VT5v0um.it("returns the tag for a known service", () => {
9
+ const tag = require_version_manager.getImageTag("redis");
10
+ require_vi_2VT5v0um.globalExpect(tag).toBeDefined();
11
+ require_vi_2VT5v0um.globalExpect(typeof tag).toBe("string");
12
+ });
13
+ require_vi_2VT5v0um.it("returns undefined for an unknown service", () => {
14
+ require_vi_2VT5v0um.globalExpect(require_version_manager.getImageTag("nonexistent-service-xyz")).toBeUndefined();
15
+ });
16
+ });
17
+ require_vi_2VT5v0um.describe("getImageReference", () => {
18
+ require_vi_2VT5v0um.it("returns image:tag for a known service", () => {
19
+ const ref = require_version_manager.getImageReference("redis");
20
+ require_vi_2VT5v0um.globalExpect(ref).toBeDefined();
21
+ require_vi_2VT5v0um.globalExpect(ref).toContain(":");
22
+ require_vi_2VT5v0um.globalExpect(ref).toMatch(/^.+:.+$/);
23
+ });
24
+ require_vi_2VT5v0um.it("returns undefined for an unknown service", () => {
25
+ require_vi_2VT5v0um.globalExpect(require_version_manager.getImageReference("nonexistent-service-xyz")).toBeUndefined();
26
+ });
27
+ });
28
+ require_vi_2VT5v0um.describe("pinImageTags", () => {
29
+ require_vi_2VT5v0um.it("pins image tags from the registry for all services", () => {
30
+ const resolved = require_resolver.resolve({
31
+ services: ["redis", "postgresql"],
32
+ skillPacks: [],
33
+ proxy: "none",
34
+ gpu: false,
35
+ platform: "linux/amd64"
36
+ });
37
+ const pinned = require_version_manager.pinImageTags(resolved);
38
+ require_vi_2VT5v0um.globalExpect(pinned.services).toHaveLength(resolved.services.length);
39
+ for (const svc of pinned.services) {
40
+ require_vi_2VT5v0um.globalExpect(svc.definition.imageTag).toBeDefined();
41
+ require_vi_2VT5v0um.globalExpect(typeof svc.definition.imageTag).toBe("string");
42
+ require_vi_2VT5v0um.globalExpect(svc.definition.imageTag.length).toBeGreaterThan(0);
43
+ }
44
+ });
45
+ require_vi_2VT5v0um.it("does not mutate the original resolved output", () => {
46
+ const resolved = require_resolver.resolve({
47
+ services: ["redis"],
48
+ skillPacks: [],
49
+ proxy: "none",
50
+ gpu: false,
51
+ platform: "linux/amd64"
52
+ });
53
+ const originalTag = resolved.services[0]?.definition.imageTag;
54
+ require_version_manager.pinImageTags(resolved);
55
+ require_vi_2VT5v0um.globalExpect(resolved.services[0]?.definition.imageTag).toBe(originalTag);
56
+ });
57
+ require_vi_2VT5v0um.it("preserves non-tag properties", () => {
58
+ const resolved = require_resolver.resolve({
59
+ services: ["redis"],
60
+ skillPacks: [],
61
+ proxy: "none",
62
+ gpu: false,
63
+ platform: "linux/amd64"
64
+ });
65
+ const pinned = require_version_manager.pinImageTags(resolved);
66
+ require_vi_2VT5v0um.globalExpect(pinned.services[0]?.definition.id).toBe("redis");
67
+ require_vi_2VT5v0um.globalExpect(pinned.services[0]?.definition.name).toBe("Redis");
68
+ require_vi_2VT5v0um.globalExpect(pinned.estimatedMemoryMB).toBe(resolved.estimatedMemoryMB);
69
+ });
70
+ });
71
+ require_vi_2VT5v0um.describe("checkCompatibility", () => {
72
+ require_vi_2VT5v0um.it("warns when Redis and Valkey are both selected", () => {
73
+ const all = require_services_registry.getAllServices();
74
+ const redis = all.find((s) => s.id === "redis");
75
+ const valkey = all.find((s) => s.id === "valkey");
76
+ if (redis && valkey) require_vi_2VT5v0um.globalExpect(require_version_manager.checkCompatibility([redis, valkey]).some((w) => w.message.includes("Redis") && w.message.includes("Valkey"))).toBe(true);
77
+ });
78
+ require_vi_2VT5v0um.it("warns when Caddy and Traefik are both selected", () => {
79
+ const all = require_services_registry.getAllServices();
80
+ const caddy = all.find((s) => s.id === "caddy");
81
+ const traefik = all.find((s) => s.id === "traefik");
82
+ if (caddy && traefik) require_vi_2VT5v0um.globalExpect(require_version_manager.checkCompatibility([caddy, traefik]).some((w) => w.message.includes("Caddy") && w.message.includes("Traefik"))).toBe(true);
83
+ });
84
+ require_vi_2VT5v0um.it("warns about multiple vector databases", () => {
85
+ const all = require_services_registry.getAllServices();
86
+ const qdrant = all.find((s) => s.id === "qdrant");
87
+ const chromadb = all.find((s) => s.id === "chromadb");
88
+ if (qdrant && chromadb) require_vi_2VT5v0um.globalExpect(require_version_manager.checkCompatibility([qdrant, chromadb]).some((w) => w.message.includes("vector database"))).toBe(true);
89
+ });
90
+ require_vi_2VT5v0um.it("warns about GPU services", () => {
91
+ const gpuService = require_services_registry.getAllServices().find((s) => s.gpuRequired);
92
+ if (gpuService) require_vi_2VT5v0um.globalExpect(require_version_manager.checkCompatibility([gpuService]).some((w) => w.message.includes("GPU"))).toBe(true);
93
+ });
94
+ require_vi_2VT5v0um.it("returns no warnings for a single non-conflicting service", () => {
95
+ const redis = require_services_registry.getServiceById("redis");
96
+ if (redis) require_vi_2VT5v0um.globalExpect(require_version_manager.checkCompatibility([redis]).filter((w) => w.type === "compatibility" && !w.message.includes("GPU"))).toHaveLength(0);
97
+ });
98
+ });
99
+
100
+ //#endregion
101
+ //# sourceMappingURL=version-manager.test.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version-manager.test.cjs","names":["describe","getImageTag","getImageReference","resolve","pinImageTags","getAllServices","checkCompatibility","getServiceById"],"sources":["../src/version-manager.test.ts"],"sourcesContent":["import { describe, expect, it } from \"vitest\";\nimport { resolve } from \"./resolver.js\";\nimport { getAllServices, getServiceById } from \"./services/registry.js\";\nimport {\n\tcheckCompatibility,\n\tgetImageReference,\n\tgetImageTag,\n\tpinImageTags,\n} from \"./version-manager.js\";\n\ndescribe(\"getImageTag\", () => {\n\tit(\"returns the tag for a known service\", () => {\n\t\tconst tag = getImageTag(\"redis\");\n\t\texpect(tag).toBeDefined();\n\t\texpect(typeof tag).toBe(\"string\");\n\t});\n\n\tit(\"returns undefined for an unknown service\", () => {\n\t\texpect(getImageTag(\"nonexistent-service-xyz\")).toBeUndefined();\n\t});\n});\n\ndescribe(\"getImageReference\", () => {\n\tit(\"returns image:tag for a known service\", () => {\n\t\tconst ref = getImageReference(\"redis\");\n\t\texpect(ref).toBeDefined();\n\t\texpect(ref).toContain(\":\");\n\t\texpect(ref).toMatch(/^.+:.+$/);\n\t});\n\n\tit(\"returns undefined for an unknown service\", () => {\n\t\texpect(getImageReference(\"nonexistent-service-xyz\")).toBeUndefined();\n\t});\n});\n\ndescribe(\"pinImageTags\", () => {\n\tit(\"pins image tags from the registry for all services\", () => {\n\t\tconst resolved = resolve({\n\t\t\tservices: [\"redis\", \"postgresql\"],\n\t\t\tskillPacks: [],\n\t\t\tproxy: \"none\",\n\t\t\tgpu: false,\n\t\t\tplatform: \"linux/amd64\",\n\t\t});\n\n\t\tconst pinned = pinImageTags(resolved);\n\n\t\texpect(pinned.services).toHaveLength(resolved.services.length);\n\n\t\tfor (const svc of pinned.services) {\n\t\t\texpect(svc.definition.imageTag).toBeDefined();\n\t\t\texpect(typeof svc.definition.imageTag).toBe(\"string\");\n\t\t\texpect(svc.definition.imageTag.length).toBeGreaterThan(0);\n\t\t}\n\t});\n\n\tit(\"does not mutate the original resolved output\", () => {\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});\n\n\t\tconst originalTag = resolved.services[0]?.definition.imageTag;\n\t\tpinImageTags(resolved);\n\n\t\texpect(resolved.services[0]?.definition.imageTag).toBe(originalTag);\n\t});\n\n\tit(\"preserves non-tag properties\", () => {\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});\n\n\t\tconst pinned = pinImageTags(resolved);\n\t\texpect(pinned.services[0]?.definition.id).toBe(\"redis\");\n\t\texpect(pinned.services[0]?.definition.name).toBe(\"Redis\");\n\t\texpect(pinned.estimatedMemoryMB).toBe(resolved.estimatedMemoryMB);\n\t});\n});\n\ndescribe(\"checkCompatibility\", () => {\n\tit(\"warns when Redis and Valkey are both selected\", () => {\n\t\tconst all = getAllServices();\n\t\tconst redis = all.find((s) => s.id === \"redis\");\n\t\tconst valkey = all.find((s) => s.id === \"valkey\");\n\n\t\tif (redis && valkey) {\n\t\t\tconst warnings = checkCompatibility([redis, valkey]);\n\t\t\texpect(\n\t\t\t\twarnings.some((w) => w.message.includes(\"Redis\") && w.message.includes(\"Valkey\")),\n\t\t\t).toBe(true);\n\t\t}\n\t});\n\n\tit(\"warns when Caddy and Traefik are both selected\", () => {\n\t\tconst all = getAllServices();\n\t\tconst caddy = all.find((s) => s.id === \"caddy\");\n\t\tconst traefik = all.find((s) => s.id === \"traefik\");\n\n\t\tif (caddy && traefik) {\n\t\t\tconst warnings = checkCompatibility([caddy, traefik]);\n\t\t\texpect(\n\t\t\t\twarnings.some((w) => w.message.includes(\"Caddy\") && w.message.includes(\"Traefik\")),\n\t\t\t).toBe(true);\n\t\t}\n\t});\n\n\tit(\"warns about multiple vector databases\", () => {\n\t\tconst all = getAllServices();\n\t\tconst qdrant = all.find((s) => s.id === \"qdrant\");\n\t\tconst chromadb = all.find((s) => s.id === \"chromadb\");\n\n\t\tif (qdrant && chromadb) {\n\t\t\tconst warnings = checkCompatibility([qdrant, chromadb]);\n\t\t\texpect(warnings.some((w) => w.message.includes(\"vector database\"))).toBe(true);\n\t\t}\n\t});\n\n\tit(\"warns about GPU services\", () => {\n\t\tconst all = getAllServices();\n\t\tconst gpuService = all.find((s) => s.gpuRequired);\n\n\t\tif (gpuService) {\n\t\t\tconst warnings = checkCompatibility([gpuService]);\n\t\t\texpect(warnings.some((w) => w.message.includes(\"GPU\"))).toBe(true);\n\t\t}\n\t});\n\n\tit(\"returns no warnings for a single non-conflicting service\", () => {\n\t\tconst redis = getServiceById(\"redis\");\n\t\tif (redis) {\n\t\t\tconst warnings = checkCompatibility([redis]);\n\t\t\texpect(\n\t\t\t\twarnings.filter((w) => w.type === \"compatibility\" && !w.message.includes(\"GPU\")),\n\t\t\t).toHaveLength(0);\n\t\t}\n\t});\n});\n"],"mappings":"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"}
@@ -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 { getAllServices, getServiceById } from "./services/registry.mjs";
3
3
  import { resolve } from "./resolver.mjs";
4
4
  import { checkCompatibility, getImageReference, getImageTag, pinImageTags } from "./version-manager.mjs";