@better-openclaw/core 1.0.21 → 1.0.22

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 (958) hide show
  1. package/dist/bare-metal-partition.cjs +2 -3
  2. package/dist/bare-metal-partition.cjs.map +1 -1
  3. package/dist/bare-metal-partition.d.mts.map +1 -1
  4. package/dist/bare-metal-partition.mjs +1 -1
  5. package/dist/bare-metal-partition.test.cjs +4 -5
  6. package/dist/bare-metal-partition.test.cjs.map +1 -1
  7. package/dist/bare-metal-partition.test.mjs +3 -4
  8. package/dist/bare-metal-partition.test.mjs.map +1 -1
  9. package/dist/compose-validation.test.cjs +5 -6
  10. package/dist/compose-validation.test.cjs.map +1 -1
  11. package/dist/compose-validation.test.mjs +2 -3
  12. package/dist/compose-validation.test.mjs.map +1 -1
  13. package/dist/composer.cjs +4 -5
  14. package/dist/composer.cjs.map +1 -1
  15. package/dist/composer.d.mts.map +1 -1
  16. package/dist/composer.mjs +1 -2
  17. package/dist/composer.mjs.map +1 -1
  18. package/dist/composer.snapshot.test.cjs +4 -5
  19. package/dist/composer.snapshot.test.cjs.map +1 -1
  20. package/dist/composer.snapshot.test.mjs +3 -4
  21. package/dist/composer.snapshot.test.mjs.map +1 -1
  22. package/dist/composer.test.cjs +5 -6
  23. package/dist/composer.test.cjs.map +1 -1
  24. package/dist/composer.test.mjs +3 -4
  25. package/dist/composer.test.mjs.map +1 -1
  26. package/dist/coolify-BVGGcMrT.d.mts +18 -0
  27. package/dist/coolify-BVGGcMrT.d.mts.map +1 -0
  28. package/dist/coolify-vlb1G9V2.d.cts +18 -0
  29. package/dist/coolify-vlb1G9V2.d.cts.map +1 -0
  30. package/dist/deployers/coolify.cjs +3 -4
  31. package/dist/deployers/coolify.cjs.map +1 -1
  32. package/dist/deployers/coolify.d.cts +2 -18
  33. package/dist/deployers/coolify.d.mts +2 -18
  34. package/dist/deployers/coolify.mjs +1 -2
  35. package/dist/deployers/coolify.mjs.map +1 -1
  36. package/dist/deployers/dokploy.cjs +3 -4
  37. package/dist/deployers/dokploy.cjs.map +1 -1
  38. package/dist/deployers/dokploy.d.cts +2 -25
  39. package/dist/deployers/dokploy.d.mts +2 -25
  40. package/dist/deployers/dokploy.mjs +1 -2
  41. package/dist/deployers/dokploy.mjs.map +1 -1
  42. package/dist/deployers/index.cjs +4 -5
  43. package/dist/deployers/index.cjs.map +1 -1
  44. package/dist/deployers/index.d.cts +3 -3
  45. package/dist/deployers/index.d.mts +3 -3
  46. package/dist/deployers/index.mjs +1 -2
  47. package/dist/deployers/index.mjs.map +1 -1
  48. package/dist/deployers/strip-host-ports.cjs +3 -4
  49. package/dist/deployers/strip-host-ports.cjs.map +1 -1
  50. package/dist/deployers/strip-host-ports.mjs +1 -2
  51. package/dist/deployers/strip-host-ports.mjs.map +1 -1
  52. package/dist/deployers/strip-host-ports.test.cjs +3 -4
  53. package/dist/deployers/strip-host-ports.test.cjs.map +1 -1
  54. package/dist/deployers/strip-host-ports.test.mjs +3 -4
  55. package/dist/deployers/strip-host-ports.test.mjs.map +1 -1
  56. package/dist/deployers/types.d.cts +2 -243
  57. package/dist/deployers/types.d.mts +2 -243
  58. package/dist/deployers/types.mjs +1 -1
  59. package/dist/dokploy-8cbrxUun.d.cts +25 -0
  60. package/dist/dokploy-8cbrxUun.d.cts.map +1 -0
  61. package/dist/dokploy-BTflLhTM.d.mts +25 -0
  62. package/dist/dokploy-BTflLhTM.d.mts.map +1 -0
  63. package/dist/errors.cjs +2 -3
  64. package/dist/errors.cjs.map +1 -1
  65. package/dist/errors.mjs +1 -1
  66. package/dist/errors.mjs.map +1 -1
  67. package/dist/generate.cjs +27 -28
  68. package/dist/generate.cjs.map +1 -1
  69. package/dist/generate.d.mts.map +1 -1
  70. package/dist/generate.mjs +1 -2
  71. package/dist/generate.mjs.map +1 -1
  72. package/dist/generate.test.cjs +4 -5
  73. package/dist/generate.test.cjs.map +1 -1
  74. package/dist/generate.test.mjs +3 -4
  75. package/dist/generate.test.mjs.map +1 -1
  76. package/dist/generators/bare-metal-install.cjs +2 -3
  77. package/dist/generators/bare-metal-install.cjs.map +1 -1
  78. package/dist/generators/bare-metal-install.d.mts.map +1 -1
  79. package/dist/generators/bare-metal-install.mjs +1 -1
  80. package/dist/generators/bare-metal-install.test.cjs +3 -4
  81. package/dist/generators/bare-metal-install.test.cjs.map +1 -1
  82. package/dist/generators/bare-metal-install.test.mjs +3 -4
  83. package/dist/generators/bare-metal-install.test.mjs.map +1 -1
  84. package/dist/generators/caddy.cjs +2 -3
  85. package/dist/generators/caddy.cjs.map +1 -1
  86. package/dist/generators/caddy.d.mts.map +1 -1
  87. package/dist/generators/caddy.mjs +1 -1
  88. package/dist/generators/caddy.test.cjs +3 -4
  89. package/dist/generators/caddy.test.cjs.map +1 -1
  90. package/dist/generators/caddy.test.mjs +3 -4
  91. package/dist/generators/caddy.test.mjs.map +1 -1
  92. package/dist/generators/cloud-init.cjs +2 -3
  93. package/dist/generators/cloud-init.cjs.map +1 -1
  94. package/dist/generators/cloud-init.mjs +1 -1
  95. package/dist/generators/env.cjs +4 -5
  96. package/dist/generators/env.cjs.map +1 -1
  97. package/dist/generators/env.d.mts.map +1 -1
  98. package/dist/generators/env.mjs +1 -2
  99. package/dist/generators/env.mjs.map +1 -1
  100. package/dist/generators/env.test.cjs +3 -4
  101. package/dist/generators/env.test.cjs.map +1 -1
  102. package/dist/generators/env.test.mjs +3 -4
  103. package/dist/generators/env.test.mjs.map +1 -1
  104. package/dist/generators/get-shit-done.cjs +2 -3
  105. package/dist/generators/get-shit-done.cjs.map +1 -1
  106. package/dist/generators/get-shit-done.mjs +1 -1
  107. package/dist/generators/grafana.cjs +2 -3
  108. package/dist/generators/grafana.cjs.map +1 -1
  109. package/dist/generators/grafana.mjs +1 -1
  110. package/dist/generators/health-check.cjs +2 -3
  111. package/dist/generators/health-check.cjs.map +1 -1
  112. package/dist/generators/health-check.d.mts.map +1 -1
  113. package/dist/generators/health-check.mjs +1 -1
  114. package/dist/generators/health-check.test.cjs +3 -4
  115. package/dist/generators/health-check.test.cjs.map +1 -1
  116. package/dist/generators/health-check.test.mjs +3 -4
  117. package/dist/generators/health-check.test.mjs.map +1 -1
  118. package/dist/generators/n8n-workflows.cjs +2 -3
  119. package/dist/generators/n8n-workflows.cjs.map +1 -1
  120. package/dist/generators/n8n-workflows.d.mts.map +1 -1
  121. package/dist/generators/n8n-workflows.mjs +1 -1
  122. package/dist/generators/native-services.cjs +2 -3
  123. package/dist/generators/native-services.cjs.map +1 -1
  124. package/dist/generators/native-services.mjs +1 -1
  125. package/dist/generators/openclaw-install-script.cjs +2 -3
  126. package/dist/generators/openclaw-install-script.cjs.map +1 -1
  127. package/dist/generators/openclaw-install-script.mjs +1 -1
  128. package/dist/generators/openclaw-json.cjs +2 -3
  129. package/dist/generators/openclaw-json.cjs.map +1 -1
  130. package/dist/generators/openclaw-json.mjs +1 -1
  131. package/dist/generators/postgres-init.cjs +32 -3
  132. package/dist/generators/postgres-init.cjs.map +1 -1
  133. package/dist/generators/postgres-init.d.cts.map +1 -1
  134. package/dist/generators/postgres-init.d.mts.map +1 -1
  135. package/dist/generators/postgres-init.mjs +31 -1
  136. package/dist/generators/postgres-init.mjs.map +1 -1
  137. package/dist/generators/prometheus.cjs +2 -3
  138. package/dist/generators/prometheus.cjs.map +1 -1
  139. package/dist/generators/prometheus.d.mts.map +1 -1
  140. package/dist/generators/prometheus.mjs +1 -1
  141. package/dist/generators/readme.cjs +2 -3
  142. package/dist/generators/readme.cjs.map +1 -1
  143. package/dist/generators/readme.d.mts.map +1 -1
  144. package/dist/generators/readme.mjs +1 -1
  145. package/dist/generators/scripts.cjs +2 -3
  146. package/dist/generators/scripts.cjs.map +1 -1
  147. package/dist/generators/scripts.mjs +1 -1
  148. package/dist/generators/scripts.test.cjs +3 -4
  149. package/dist/generators/scripts.test.cjs.map +1 -1
  150. package/dist/generators/scripts.test.mjs +3 -4
  151. package/dist/generators/scripts.test.mjs.map +1 -1
  152. package/dist/generators/skills.cjs +3 -590
  153. package/dist/generators/skills.d.mts.map +1 -1
  154. package/dist/generators/skills.mjs +1 -2
  155. package/dist/generators/skills.mjs.map +1 -1
  156. package/dist/generators/stack-manifest.cjs +2 -3
  157. package/dist/generators/stack-manifest.cjs.map +1 -1
  158. package/dist/generators/stack-manifest.mjs +1 -1
  159. package/dist/generators/traefik.cjs +2 -3
  160. package/dist/generators/traefik.cjs.map +1 -1
  161. package/dist/generators/traefik.mjs +1 -1
  162. package/dist/generators/traefik.test.cjs +4 -5
  163. package/dist/generators/traefik.test.cjs.map +1 -1
  164. package/dist/generators/traefik.test.mjs +3 -4
  165. package/dist/generators/traefik.test.mjs.map +1 -1
  166. package/dist/index.cjs +35 -36
  167. package/dist/index.d.cts +4 -4
  168. package/dist/index.d.mts +4 -4
  169. package/dist/index.mjs +2 -3
  170. package/dist/{magic-string.es-D2agHT3I.cjs → magic-string.es-CJq41xdM.cjs} +2 -4
  171. package/dist/{magic-string.es-CfFonO_S.mjs.map → magic-string.es-CJq41xdM.cjs.map} +1 -1
  172. package/dist/{magic-string.es-CfFonO_S.mjs → magic-string.es-CoDyF8pj.mjs} +2 -3
  173. package/dist/{magic-string.es-D2agHT3I.cjs.map → magic-string.es-CoDyF8pj.mjs.map} +1 -1
  174. package/dist/migrations.cjs +5 -6
  175. package/dist/migrations.cjs.map +1 -1
  176. package/dist/migrations.mjs +4 -4
  177. package/dist/migrations.mjs.map +1 -1
  178. package/dist/migrations.test.cjs +6 -7
  179. package/dist/migrations.test.cjs.map +1 -1
  180. package/dist/migrations.test.mjs +7 -8
  181. package/dist/migrations.test.mjs.map +1 -1
  182. package/dist/port-scanner.cjs +2 -3
  183. package/dist/port-scanner.cjs.map +1 -1
  184. package/dist/port-scanner.d.mts.map +1 -1
  185. package/dist/port-scanner.mjs +1 -1
  186. package/dist/presets/presets.test.cjs +11 -8
  187. package/dist/presets/presets.test.cjs.map +1 -1
  188. package/dist/presets/presets.test.mjs +7 -4
  189. package/dist/presets/presets.test.mjs.map +1 -1
  190. package/dist/presets/registry.cjs +152 -3
  191. package/dist/presets/registry.cjs.map +1 -1
  192. package/dist/presets/registry.d.cts.map +1 -1
  193. package/dist/presets/registry.d.mts.map +1 -1
  194. package/dist/presets/registry.mjs +151 -1
  195. package/dist/presets/registry.mjs.map +1 -1
  196. package/dist/presets/registry.test.cjs +3 -4
  197. package/dist/presets/registry.test.cjs.map +1 -1
  198. package/dist/presets/registry.test.mjs +3 -4
  199. package/dist/presets/registry.test.mjs.map +1 -1
  200. package/dist/resolver.cjs +4 -5
  201. package/dist/resolver.cjs.map +1 -1
  202. package/dist/resolver.d.mts.map +1 -1
  203. package/dist/resolver.mjs +1 -2
  204. package/dist/resolver.mjs.map +1 -1
  205. package/dist/resolver.test.cjs +3 -4
  206. package/dist/resolver.test.cjs.map +1 -1
  207. package/dist/resolver.test.mjs +3 -4
  208. package/dist/resolver.test.mjs.map +1 -1
  209. package/dist/schema-C_hc7e4k.d.cts +898 -0
  210. package/dist/schema-C_hc7e4k.d.cts.map +1 -0
  211. package/dist/schema-CaesJaS2.d.mts +898 -0
  212. package/dist/schema-CaesJaS2.d.mts.map +1 -0
  213. package/dist/schema.cjs +15 -5
  214. package/dist/schema.cjs.map +1 -1
  215. package/dist/schema.d.cts +2 -854
  216. package/dist/schema.d.mts +2 -854
  217. package/dist/schema.mjs +13 -3
  218. package/dist/schema.mjs.map +1 -1
  219. package/dist/schema.test.cjs +3 -4
  220. package/dist/schema.test.cjs.map +1 -1
  221. package/dist/schema.test.mjs +3 -4
  222. package/dist/schema.test.mjs.map +1 -1
  223. package/dist/services/definitions/airbyte.cjs +76 -0
  224. package/dist/services/definitions/airbyte.cjs.map +1 -0
  225. package/dist/services/definitions/airbyte.d.cts +7 -0
  226. package/dist/services/definitions/airbyte.d.cts.map +1 -0
  227. package/dist/services/definitions/airbyte.d.mts +7 -0
  228. package/dist/services/definitions/airbyte.d.mts.map +1 -0
  229. package/dist/services/definitions/airbyte.mjs +75 -0
  230. package/dist/services/definitions/airbyte.mjs.map +1 -0
  231. package/dist/services/definitions/airflow.cjs +109 -0
  232. package/dist/services/definitions/airflow.cjs.map +1 -0
  233. package/dist/services/definitions/airflow.d.cts +7 -0
  234. package/dist/services/definitions/airflow.d.cts.map +1 -0
  235. package/dist/services/definitions/airflow.d.mts +7 -0
  236. package/dist/services/definitions/airflow.d.mts.map +1 -0
  237. package/dist/services/definitions/airflow.mjs +108 -0
  238. package/dist/services/definitions/airflow.mjs.map +1 -0
  239. package/dist/services/definitions/anything-llm.cjs +2 -3
  240. package/dist/services/definitions/anything-llm.cjs.map +1 -1
  241. package/dist/services/definitions/anything-llm.mjs +1 -1
  242. package/dist/services/definitions/appflowy.cjs +2 -3
  243. package/dist/services/definitions/appflowy.cjs.map +1 -1
  244. package/dist/services/definitions/appflowy.mjs +1 -1
  245. package/dist/services/definitions/appwrite.cjs +190 -0
  246. package/dist/services/definitions/appwrite.cjs.map +1 -0
  247. package/dist/services/definitions/appwrite.d.cts +7 -0
  248. package/dist/services/definitions/appwrite.d.cts.map +1 -0
  249. package/dist/services/definitions/appwrite.d.mts +7 -0
  250. package/dist/services/definitions/appwrite.d.mts.map +1 -0
  251. package/dist/services/definitions/appwrite.mjs +189 -0
  252. package/dist/services/definitions/appwrite.mjs.map +1 -0
  253. package/dist/services/definitions/authelia.cjs +145 -0
  254. package/dist/services/definitions/authelia.cjs.map +1 -0
  255. package/dist/services/definitions/authelia.d.cts +7 -0
  256. package/dist/services/definitions/authelia.d.cts.map +1 -0
  257. package/dist/services/definitions/authelia.d.mts +7 -0
  258. package/dist/services/definitions/authelia.d.mts.map +1 -0
  259. package/dist/services/definitions/authelia.mjs +144 -0
  260. package/dist/services/definitions/authelia.mjs.map +1 -0
  261. package/dist/services/definitions/authentik.cjs +2 -3
  262. package/dist/services/definitions/authentik.cjs.map +1 -1
  263. package/dist/services/definitions/authentik.mjs +1 -1
  264. package/dist/services/definitions/axolotl.cjs +67 -0
  265. package/dist/services/definitions/axolotl.cjs.map +1 -0
  266. package/dist/services/definitions/axolotl.d.cts +7 -0
  267. package/dist/services/definitions/axolotl.d.cts.map +1 -0
  268. package/dist/services/definitions/axolotl.d.mts +7 -0
  269. package/dist/services/definitions/axolotl.d.mts.map +1 -0
  270. package/dist/services/definitions/axolotl.mjs +66 -0
  271. package/dist/services/definitions/axolotl.mjs.map +1 -0
  272. package/dist/services/definitions/beszel.cjs +2 -3
  273. package/dist/services/definitions/beszel.cjs.map +1 -1
  274. package/dist/services/definitions/beszel.mjs +1 -1
  275. package/dist/services/definitions/browserless.cjs +2 -3
  276. package/dist/services/definitions/browserless.cjs.map +1 -1
  277. package/dist/services/definitions/browserless.mjs +1 -1
  278. package/dist/services/definitions/caddy.cjs +2 -3
  279. package/dist/services/definitions/caddy.cjs.map +1 -1
  280. package/dist/services/definitions/caddy.mjs +1 -1
  281. package/dist/services/definitions/cal-com.cjs +2 -3
  282. package/dist/services/definitions/cal-com.cjs.map +1 -1
  283. package/dist/services/definitions/cal-com.mjs +1 -1
  284. package/dist/services/definitions/chatwoot-worker.cjs +95 -0
  285. package/dist/services/definitions/chatwoot-worker.cjs.map +1 -0
  286. package/dist/services/definitions/chatwoot-worker.d.cts +7 -0
  287. package/dist/services/definitions/chatwoot-worker.d.cts.map +1 -0
  288. package/dist/services/definitions/chatwoot-worker.d.mts +7 -0
  289. package/dist/services/definitions/chatwoot-worker.d.mts.map +1 -0
  290. package/dist/services/definitions/chatwoot-worker.mjs +94 -0
  291. package/dist/services/definitions/chatwoot-worker.mjs.map +1 -0
  292. package/dist/services/definitions/chatwoot.cjs +112 -0
  293. package/dist/services/definitions/chatwoot.cjs.map +1 -0
  294. package/dist/services/definitions/chatwoot.d.cts +7 -0
  295. package/dist/services/definitions/chatwoot.d.cts.map +1 -0
  296. package/dist/services/definitions/chatwoot.d.mts +7 -0
  297. package/dist/services/definitions/chatwoot.d.mts.map +1 -0
  298. package/dist/services/definitions/chatwoot.mjs +111 -0
  299. package/dist/services/definitions/chatwoot.mjs.map +1 -0
  300. package/dist/services/definitions/chromadb.cjs +2 -3
  301. package/dist/services/definitions/chromadb.cjs.map +1 -1
  302. package/dist/services/definitions/chromadb.mjs +1 -1
  303. package/dist/services/definitions/claude-code.cjs +2 -3
  304. package/dist/services/definitions/claude-code.cjs.map +1 -1
  305. package/dist/services/definitions/claude-code.mjs +1 -1
  306. package/dist/services/definitions/code-server.cjs +2 -3
  307. package/dist/services/definitions/code-server.cjs.map +1 -1
  308. package/dist/services/definitions/code-server.mjs +1 -1
  309. package/dist/services/definitions/codex.cjs +2 -3
  310. package/dist/services/definitions/codex.cjs.map +1 -1
  311. package/dist/services/definitions/codex.mjs +1 -1
  312. package/dist/services/definitions/comfyui.cjs +2 -3
  313. package/dist/services/definitions/comfyui.cjs.map +1 -1
  314. package/dist/services/definitions/comfyui.mjs +1 -1
  315. package/dist/services/definitions/convex-dashboard.cjs +2 -3
  316. package/dist/services/definitions/convex-dashboard.cjs.map +1 -1
  317. package/dist/services/definitions/convex-dashboard.mjs +1 -1
  318. package/dist/services/definitions/convex.cjs +2 -3
  319. package/dist/services/definitions/convex.cjs.map +1 -1
  320. package/dist/services/definitions/convex.mjs +1 -1
  321. package/dist/services/definitions/coolify.cjs +2 -3
  322. package/dist/services/definitions/coolify.cjs.map +1 -1
  323. package/dist/services/definitions/coolify.mjs +1 -1
  324. package/dist/services/definitions/crowdsec.cjs +2 -3
  325. package/dist/services/definitions/crowdsec.cjs.map +1 -1
  326. package/dist/services/definitions/crowdsec.mjs +1 -1
  327. package/dist/services/definitions/dagster.cjs +83 -0
  328. package/dist/services/definitions/dagster.cjs.map +1 -0
  329. package/dist/services/definitions/dagster.d.cts +7 -0
  330. package/dist/services/definitions/dagster.d.cts.map +1 -0
  331. package/dist/services/definitions/dagster.d.mts +7 -0
  332. package/dist/services/definitions/dagster.d.mts.map +1 -0
  333. package/dist/services/definitions/dagster.mjs +82 -0
  334. package/dist/services/definitions/dagster.mjs.map +1 -0
  335. package/dist/services/definitions/desktop-environment.cjs +2 -3
  336. package/dist/services/definitions/desktop-environment.cjs.map +1 -1
  337. package/dist/services/definitions/desktop-environment.mjs +1 -1
  338. package/dist/services/definitions/dify.cjs +2 -3
  339. package/dist/services/definitions/dify.cjs.map +1 -1
  340. package/dist/services/definitions/dify.mjs +1 -1
  341. package/dist/services/definitions/directus.cjs +115 -0
  342. package/dist/services/definitions/directus.cjs.map +1 -0
  343. package/dist/services/definitions/directus.d.cts +7 -0
  344. package/dist/services/definitions/directus.d.cts.map +1 -0
  345. package/dist/services/definitions/directus.d.mts +7 -0
  346. package/dist/services/definitions/directus.d.mts.map +1 -0
  347. package/dist/services/definitions/directus.mjs +114 -0
  348. package/dist/services/definitions/directus.mjs.map +1 -0
  349. package/dist/services/definitions/docsgpt.cjs +2 -3
  350. package/dist/services/definitions/docsgpt.cjs.map +1 -1
  351. package/dist/services/definitions/docsgpt.mjs +1 -1
  352. package/dist/services/definitions/dokploy.cjs +2 -3
  353. package/dist/services/definitions/dokploy.cjs.map +1 -1
  354. package/dist/services/definitions/dokploy.mjs +1 -1
  355. package/dist/services/definitions/dozzle.cjs +2 -3
  356. package/dist/services/definitions/dozzle.cjs.map +1 -1
  357. package/dist/services/definitions/dozzle.mjs +1 -1
  358. package/dist/services/definitions/duplicati.cjs +76 -0
  359. package/dist/services/definitions/duplicati.cjs.map +1 -0
  360. package/dist/services/definitions/duplicati.d.cts +7 -0
  361. package/dist/services/definitions/duplicati.d.cts.map +1 -0
  362. package/dist/services/definitions/duplicati.d.mts +7 -0
  363. package/dist/services/definitions/duplicati.d.mts.map +1 -0
  364. package/dist/services/definitions/duplicati.mjs +75 -0
  365. package/dist/services/definitions/duplicati.mjs.map +1 -0
  366. package/dist/services/definitions/excalidraw.cjs +48 -0
  367. package/dist/services/definitions/excalidraw.cjs.map +1 -0
  368. package/dist/services/definitions/excalidraw.d.cts +7 -0
  369. package/dist/services/definitions/excalidraw.d.cts.map +1 -0
  370. package/dist/services/definitions/excalidraw.d.mts +7 -0
  371. package/dist/services/definitions/excalidraw.d.mts.map +1 -0
  372. package/dist/services/definitions/excalidraw.mjs +47 -0
  373. package/dist/services/definitions/excalidraw.mjs.map +1 -0
  374. package/dist/services/definitions/ffmpeg.cjs +2 -3
  375. package/dist/services/definitions/ffmpeg.cjs.map +1 -1
  376. package/dist/services/definitions/ffmpeg.mjs +1 -1
  377. package/dist/services/definitions/firecrawl-playwright.cjs +61 -0
  378. package/dist/services/definitions/firecrawl-playwright.cjs.map +1 -0
  379. package/dist/services/definitions/firecrawl-playwright.d.cts +7 -0
  380. package/dist/services/definitions/firecrawl-playwright.d.cts.map +1 -0
  381. package/dist/services/definitions/firecrawl-playwright.d.mts +7 -0
  382. package/dist/services/definitions/firecrawl-playwright.d.mts.map +1 -0
  383. package/dist/services/definitions/firecrawl-playwright.mjs +60 -0
  384. package/dist/services/definitions/firecrawl-playwright.mjs.map +1 -0
  385. package/dist/services/definitions/firecrawl.cjs +163 -0
  386. package/dist/services/definitions/firecrawl.cjs.map +1 -0
  387. package/dist/services/definitions/firecrawl.d.cts +7 -0
  388. package/dist/services/definitions/firecrawl.d.cts.map +1 -0
  389. package/dist/services/definitions/firecrawl.d.mts +7 -0
  390. package/dist/services/definitions/firecrawl.d.mts.map +1 -0
  391. package/dist/services/definitions/firecrawl.mjs +162 -0
  392. package/dist/services/definitions/firecrawl.mjs.map +1 -0
  393. package/dist/services/definitions/flagsmith.cjs +77 -0
  394. package/dist/services/definitions/flagsmith.cjs.map +1 -0
  395. package/dist/services/definitions/flagsmith.d.cts +7 -0
  396. package/dist/services/definitions/flagsmith.d.cts.map +1 -0
  397. package/dist/services/definitions/flagsmith.d.mts +7 -0
  398. package/dist/services/definitions/flagsmith.d.mts.map +1 -0
  399. package/dist/services/definitions/flagsmith.mjs +76 -0
  400. package/dist/services/definitions/flagsmith.mjs.map +1 -0
  401. package/dist/services/definitions/flowise.cjs +2 -3
  402. package/dist/services/definitions/flowise.cjs.map +1 -1
  403. package/dist/services/definitions/flowise.mjs +1 -1
  404. package/dist/services/definitions/fonoster.cjs +66 -0
  405. package/dist/services/definitions/fonoster.cjs.map +1 -0
  406. package/dist/services/definitions/fonoster.d.cts +7 -0
  407. package/dist/services/definitions/fonoster.d.cts.map +1 -0
  408. package/dist/services/definitions/fonoster.d.mts +7 -0
  409. package/dist/services/definitions/fonoster.d.mts.map +1 -0
  410. package/dist/services/definitions/fonoster.mjs +65 -0
  411. package/dist/services/definitions/fonoster.mjs.map +1 -0
  412. package/dist/services/definitions/formbricks.cjs +75 -0
  413. package/dist/services/definitions/formbricks.cjs.map +1 -0
  414. package/dist/services/definitions/formbricks.d.cts +7 -0
  415. package/dist/services/definitions/formbricks.d.cts.map +1 -0
  416. package/dist/services/definitions/formbricks.d.mts +7 -0
  417. package/dist/services/definitions/formbricks.d.mts.map +1 -0
  418. package/dist/services/definitions/formbricks.mjs +74 -0
  419. package/dist/services/definitions/formbricks.mjs.map +1 -0
  420. package/dist/services/definitions/gemini-cli.cjs +2 -3
  421. package/dist/services/definitions/gemini-cli.cjs.map +1 -1
  422. package/dist/services/definitions/gemini-cli.mjs +1 -1
  423. package/dist/services/definitions/ghost.cjs +2 -3
  424. package/dist/services/definitions/ghost.cjs.map +1 -1
  425. package/dist/services/definitions/ghost.mjs +1 -1
  426. package/dist/services/definitions/gitea.cjs +2 -3
  427. package/dist/services/definitions/gitea.cjs.map +1 -1
  428. package/dist/services/definitions/gitea.mjs +1 -1
  429. package/dist/services/definitions/gotify.cjs +2 -3
  430. package/dist/services/definitions/gotify.cjs.map +1 -1
  431. package/dist/services/definitions/gotify.mjs +1 -1
  432. package/dist/services/definitions/grafana.cjs +2 -3
  433. package/dist/services/definitions/grafana.cjs.map +1 -1
  434. package/dist/services/definitions/grafana.mjs +1 -1
  435. package/dist/services/definitions/headscale.cjs +2 -3
  436. package/dist/services/definitions/headscale.cjs.map +1 -1
  437. package/dist/services/definitions/headscale.mjs +1 -1
  438. package/dist/services/definitions/hedgedoc.cjs +82 -0
  439. package/dist/services/definitions/hedgedoc.cjs.map +1 -0
  440. package/dist/services/definitions/hedgedoc.d.cts +7 -0
  441. package/dist/services/definitions/hedgedoc.d.cts.map +1 -0
  442. package/dist/services/definitions/hedgedoc.d.mts +7 -0
  443. package/dist/services/definitions/hedgedoc.d.mts.map +1 -0
  444. package/dist/services/definitions/hedgedoc.mjs +81 -0
  445. package/dist/services/definitions/hedgedoc.mjs.map +1 -0
  446. package/dist/services/definitions/hexstrike.cjs +2 -3
  447. package/dist/services/definitions/hexstrike.cjs.map +1 -1
  448. package/dist/services/definitions/hexstrike.mjs +1 -1
  449. package/dist/services/definitions/heyform.cjs +64 -0
  450. package/dist/services/definitions/heyform.cjs.map +1 -0
  451. package/dist/services/definitions/heyform.d.cts +7 -0
  452. package/dist/services/definitions/heyform.d.cts.map +1 -0
  453. package/dist/services/definitions/heyform.d.mts +7 -0
  454. package/dist/services/definitions/heyform.d.mts.map +1 -0
  455. package/dist/services/definitions/heyform.mjs +63 -0
  456. package/dist/services/definitions/heyform.mjs.map +1 -0
  457. package/dist/services/definitions/homeassistant.cjs +2 -3
  458. package/dist/services/definitions/homeassistant.cjs.map +1 -1
  459. package/dist/services/definitions/homeassistant.mjs +1 -1
  460. package/dist/services/definitions/hoppscotch.cjs +76 -0
  461. package/dist/services/definitions/hoppscotch.cjs.map +1 -0
  462. package/dist/services/definitions/hoppscotch.d.cts +7 -0
  463. package/dist/services/definitions/hoppscotch.d.cts.map +1 -0
  464. package/dist/services/definitions/hoppscotch.d.mts +7 -0
  465. package/dist/services/definitions/hoppscotch.d.mts.map +1 -0
  466. package/dist/services/definitions/hoppscotch.mjs +75 -0
  467. package/dist/services/definitions/hoppscotch.mjs.map +1 -0
  468. package/dist/services/definitions/immich.cjs +2 -3
  469. package/dist/services/definitions/immich.cjs.map +1 -1
  470. package/dist/services/definitions/immich.mjs +1 -1
  471. package/dist/services/definitions/index.cjs +220 -98
  472. package/dist/services/definitions/index.cjs.map +1 -1
  473. package/dist/services/definitions/index.d.cts +42 -1
  474. package/dist/services/definitions/index.d.cts.map +1 -1
  475. package/dist/services/definitions/index.d.mts +42 -1
  476. package/dist/services/definitions/index.d.mts.map +1 -1
  477. package/dist/services/definitions/index.mjs +85 -4
  478. package/dist/services/definitions/index.mjs.map +1 -1
  479. package/dist/services/definitions/infisical.cjs +99 -0
  480. package/dist/services/definitions/infisical.cjs.map +1 -0
  481. package/dist/services/definitions/infisical.d.cts +7 -0
  482. package/dist/services/definitions/infisical.d.cts.map +1 -0
  483. package/dist/services/definitions/infisical.d.mts +7 -0
  484. package/dist/services/definitions/infisical.d.mts.map +1 -0
  485. package/dist/services/definitions/infisical.mjs +98 -0
  486. package/dist/services/definitions/infisical.mjs.map +1 -0
  487. package/dist/services/definitions/jellyfin.cjs +2 -3
  488. package/dist/services/definitions/jellyfin.cjs.map +1 -1
  489. package/dist/services/definitions/jellyfin.mjs +1 -1
  490. package/dist/services/definitions/jenkins.cjs +2 -3
  491. package/dist/services/definitions/jenkins.cjs.map +1 -1
  492. package/dist/services/definitions/jenkins.mjs +1 -1
  493. package/dist/services/definitions/keycloak.cjs +122 -0
  494. package/dist/services/definitions/keycloak.cjs.map +1 -0
  495. package/dist/services/definitions/keycloak.d.cts +7 -0
  496. package/dist/services/definitions/keycloak.d.cts.map +1 -0
  497. package/dist/services/definitions/keycloak.d.mts +7 -0
  498. package/dist/services/definitions/keycloak.d.mts.map +1 -0
  499. package/dist/services/definitions/keycloak.mjs +121 -0
  500. package/dist/services/definitions/keycloak.mjs.map +1 -0
  501. package/dist/services/definitions/kimi.cjs +2 -3
  502. package/dist/services/definitions/kimi.cjs.map +1 -1
  503. package/dist/services/definitions/kimi.mjs +1 -1
  504. package/dist/services/definitions/kong.cjs +121 -0
  505. package/dist/services/definitions/kong.cjs.map +1 -0
  506. package/dist/services/definitions/kong.d.cts +7 -0
  507. package/dist/services/definitions/kong.d.cts.map +1 -0
  508. package/dist/services/definitions/kong.d.mts +7 -0
  509. package/dist/services/definitions/kong.d.mts.map +1 -0
  510. package/dist/services/definitions/kong.mjs +120 -0
  511. package/dist/services/definitions/kong.mjs.map +1 -0
  512. package/dist/services/definitions/lago.cjs +95 -0
  513. package/dist/services/definitions/lago.cjs.map +1 -0
  514. package/dist/services/definitions/lago.d.cts +7 -0
  515. package/dist/services/definitions/lago.d.cts.map +1 -0
  516. package/dist/services/definitions/lago.d.mts +7 -0
  517. package/dist/services/definitions/lago.d.mts.map +1 -0
  518. package/dist/services/definitions/lago.mjs +94 -0
  519. package/dist/services/definitions/lago.mjs.map +1 -0
  520. package/dist/services/definitions/langflow.cjs +88 -0
  521. package/dist/services/definitions/langflow.cjs.map +1 -0
  522. package/dist/services/definitions/langflow.d.cts +7 -0
  523. package/dist/services/definitions/langflow.d.cts.map +1 -0
  524. package/dist/services/definitions/langflow.d.mts +7 -0
  525. package/dist/services/definitions/langflow.d.mts.map +1 -0
  526. package/dist/services/definitions/langflow.mjs +87 -0
  527. package/dist/services/definitions/langflow.mjs.map +1 -0
  528. package/dist/services/definitions/langfuse.cjs +79 -0
  529. package/dist/services/definitions/langfuse.cjs.map +1 -0
  530. package/dist/services/definitions/langfuse.d.cts +7 -0
  531. package/dist/services/definitions/langfuse.d.cts.map +1 -0
  532. package/dist/services/definitions/langfuse.d.mts +7 -0
  533. package/dist/services/definitions/langfuse.d.mts.map +1 -0
  534. package/dist/services/definitions/langfuse.mjs +78 -0
  535. package/dist/services/definitions/langfuse.mjs.map +1 -0
  536. package/dist/services/definitions/lasuite-meet-agents.cjs +2 -3
  537. package/dist/services/definitions/lasuite-meet-agents.cjs.map +1 -1
  538. package/dist/services/definitions/lasuite-meet-agents.mjs +1 -1
  539. package/dist/services/definitions/lasuite-meet-backend.cjs +2 -3
  540. package/dist/services/definitions/lasuite-meet-backend.cjs.map +1 -1
  541. package/dist/services/definitions/lasuite-meet-backend.mjs +1 -1
  542. package/dist/services/definitions/lasuite-meet-frontend.cjs +2 -3
  543. package/dist/services/definitions/lasuite-meet-frontend.cjs.map +1 -1
  544. package/dist/services/definitions/lasuite-meet-frontend.mjs +1 -1
  545. package/dist/services/definitions/librechat.cjs +2 -3
  546. package/dist/services/definitions/librechat.cjs.map +1 -1
  547. package/dist/services/definitions/librechat.mjs +1 -1
  548. package/dist/services/definitions/lightpanda.cjs +2 -3
  549. package/dist/services/definitions/lightpanda.cjs.map +1 -1
  550. package/dist/services/definitions/lightpanda.mjs +1 -1
  551. package/dist/services/definitions/listmonk.cjs +118 -0
  552. package/dist/services/definitions/listmonk.cjs.map +1 -0
  553. package/dist/services/definitions/listmonk.d.cts +7 -0
  554. package/dist/services/definitions/listmonk.d.cts.map +1 -0
  555. package/dist/services/definitions/listmonk.d.mts +7 -0
  556. package/dist/services/definitions/listmonk.d.mts.map +1 -0
  557. package/dist/services/definitions/listmonk.mjs +117 -0
  558. package/dist/services/definitions/listmonk.mjs.map +1 -0
  559. package/dist/services/definitions/litellm.cjs +2 -3
  560. package/dist/services/definitions/litellm.cjs.map +1 -1
  561. package/dist/services/definitions/litellm.mjs +1 -1
  562. package/dist/services/definitions/livekit.cjs +2 -3
  563. package/dist/services/definitions/livekit.cjs.map +1 -1
  564. package/dist/services/definitions/livekit.mjs +1 -1
  565. package/dist/services/definitions/loki.cjs +2 -3
  566. package/dist/services/definitions/loki.cjs.map +1 -1
  567. package/dist/services/definitions/loki.mjs +1 -1
  568. package/dist/services/definitions/mariadb.cjs +81 -0
  569. package/dist/services/definitions/mariadb.cjs.map +1 -0
  570. package/dist/services/definitions/mariadb.d.cts +7 -0
  571. package/dist/services/definitions/mariadb.d.cts.map +1 -0
  572. package/dist/services/definitions/mariadb.d.mts +7 -0
  573. package/dist/services/definitions/mariadb.d.mts.map +1 -0
  574. package/dist/services/definitions/mariadb.mjs +80 -0
  575. package/dist/services/definitions/mariadb.mjs.map +1 -0
  576. package/dist/services/definitions/matomo.cjs +2 -3
  577. package/dist/services/definitions/matomo.cjs.map +1 -1
  578. package/dist/services/definitions/matomo.mjs +1 -1
  579. package/dist/services/definitions/matrix-synapse.cjs +2 -3
  580. package/dist/services/definitions/matrix-synapse.cjs.map +1 -1
  581. package/dist/services/definitions/matrix-synapse.mjs +1 -1
  582. package/dist/services/definitions/mattermost.cjs +2 -3
  583. package/dist/services/definitions/mattermost.cjs.map +1 -1
  584. package/dist/services/definitions/mattermost.mjs +1 -1
  585. package/dist/services/definitions/mautic.cjs +83 -0
  586. package/dist/services/definitions/mautic.cjs.map +1 -0
  587. package/dist/services/definitions/mautic.d.cts +7 -0
  588. package/dist/services/definitions/mautic.d.cts.map +1 -0
  589. package/dist/services/definitions/mautic.d.mts +7 -0
  590. package/dist/services/definitions/mautic.d.mts.map +1 -0
  591. package/dist/services/definitions/mautic.mjs +82 -0
  592. package/dist/services/definitions/mautic.mjs.map +1 -0
  593. package/dist/services/definitions/medusa.cjs +83 -0
  594. package/dist/services/definitions/medusa.cjs.map +1 -0
  595. package/dist/services/definitions/medusa.d.cts +7 -0
  596. package/dist/services/definitions/medusa.d.cts.map +1 -0
  597. package/dist/services/definitions/medusa.d.mts +7 -0
  598. package/dist/services/definitions/medusa.d.mts.map +1 -0
  599. package/dist/services/definitions/medusa.mjs +82 -0
  600. package/dist/services/definitions/medusa.mjs.map +1 -0
  601. package/dist/services/definitions/meilisearch.cjs +2 -3
  602. package/dist/services/definitions/meilisearch.cjs.map +1 -1
  603. package/dist/services/definitions/meilisearch.mjs +1 -1
  604. package/dist/services/definitions/milvus.cjs +2 -3
  605. package/dist/services/definitions/milvus.cjs.map +1 -1
  606. package/dist/services/definitions/milvus.mjs +1 -1
  607. package/dist/services/definitions/minio.cjs +2 -3
  608. package/dist/services/definitions/minio.cjs.map +1 -1
  609. package/dist/services/definitions/minio.mjs +1 -1
  610. package/dist/services/definitions/mission-control.cjs +2 -3
  611. package/dist/services/definitions/mission-control.cjs.map +1 -1
  612. package/dist/services/definitions/mission-control.mjs +1 -1
  613. package/dist/services/definitions/mixpost.cjs +2 -3
  614. package/dist/services/definitions/mixpost.cjs.map +1 -1
  615. package/dist/services/definitions/mixpost.mjs +1 -1
  616. package/dist/services/definitions/motion-canvas.cjs +2 -3
  617. package/dist/services/definitions/motion-canvas.cjs.map +1 -1
  618. package/dist/services/definitions/motion-canvas.mjs +1 -1
  619. package/dist/services/definitions/mysql.cjs +81 -0
  620. package/dist/services/definitions/mysql.cjs.map +1 -0
  621. package/dist/services/definitions/mysql.d.cts +7 -0
  622. package/dist/services/definitions/mysql.d.cts.map +1 -0
  623. package/dist/services/definitions/mysql.d.mts +7 -0
  624. package/dist/services/definitions/mysql.d.mts.map +1 -0
  625. package/dist/services/definitions/mysql.mjs +80 -0
  626. package/dist/services/definitions/mysql.mjs.map +1 -0
  627. package/dist/services/definitions/n8n.cjs +2 -3
  628. package/dist/services/definitions/n8n.cjs.map +1 -1
  629. package/dist/services/definitions/n8n.mjs +1 -1
  630. package/dist/services/definitions/neo4j.cjs +2 -3
  631. package/dist/services/definitions/neo4j.cjs.map +1 -1
  632. package/dist/services/definitions/neo4j.mjs +1 -1
  633. package/dist/services/definitions/nextcloud.cjs +2 -3
  634. package/dist/services/definitions/nextcloud.cjs.map +1 -1
  635. package/dist/services/definitions/nextcloud.mjs +1 -1
  636. package/dist/services/definitions/nocodb.cjs +2 -3
  637. package/dist/services/definitions/nocodb.cjs.map +1 -1
  638. package/dist/services/definitions/nocodb.mjs +1 -1
  639. package/dist/services/definitions/ntfy.cjs +2 -3
  640. package/dist/services/definitions/ntfy.cjs.map +1 -1
  641. package/dist/services/definitions/ntfy.mjs +1 -1
  642. package/dist/services/definitions/ollama.cjs +2 -3
  643. package/dist/services/definitions/ollama.cjs.map +1 -1
  644. package/dist/services/definitions/ollama.mjs +1 -1
  645. package/dist/services/definitions/open-webui.cjs +2 -3
  646. package/dist/services/definitions/open-webui.cjs.map +1 -1
  647. package/dist/services/definitions/open-webui.mjs +1 -1
  648. package/dist/services/definitions/opencode.cjs +2 -3
  649. package/dist/services/definitions/opencode.cjs.map +1 -1
  650. package/dist/services/definitions/opencode.mjs +1 -1
  651. package/dist/services/definitions/openhands.cjs +58 -0
  652. package/dist/services/definitions/openhands.cjs.map +1 -0
  653. package/dist/services/definitions/openhands.d.cts +7 -0
  654. package/dist/services/definitions/openhands.d.cts.map +1 -0
  655. package/dist/services/definitions/openhands.d.mts +7 -0
  656. package/dist/services/definitions/openhands.d.mts.map +1 -0
  657. package/dist/services/definitions/openhands.mjs +57 -0
  658. package/dist/services/definitions/openhands.mjs.map +1 -0
  659. package/dist/services/definitions/openpanel.cjs +2 -3
  660. package/dist/services/definitions/openpanel.cjs.map +1 -1
  661. package/dist/services/definitions/openpanel.mjs +1 -1
  662. package/dist/services/definitions/opensearch.cjs +94 -0
  663. package/dist/services/definitions/opensearch.cjs.map +1 -0
  664. package/dist/services/definitions/opensearch.d.cts +7 -0
  665. package/dist/services/definitions/opensearch.d.cts.map +1 -0
  666. package/dist/services/definitions/opensearch.d.mts +7 -0
  667. package/dist/services/definitions/opensearch.d.mts.map +1 -0
  668. package/dist/services/definitions/opensearch.mjs +93 -0
  669. package/dist/services/definitions/opensearch.mjs.map +1 -0
  670. package/dist/services/definitions/outline.cjs +2 -3
  671. package/dist/services/definitions/outline.cjs.map +1 -1
  672. package/dist/services/definitions/outline.mjs +1 -1
  673. package/dist/services/definitions/paperless-ngx.cjs +2 -3
  674. package/dist/services/definitions/paperless-ngx.cjs.map +1 -1
  675. package/dist/services/definitions/paperless-ngx.mjs +1 -1
  676. package/dist/services/definitions/pentagi.cjs +2 -3
  677. package/dist/services/definitions/pentagi.cjs.map +1 -1
  678. package/dist/services/definitions/pentagi.mjs +1 -1
  679. package/dist/services/definitions/pentestagent.cjs +2 -3
  680. package/dist/services/definitions/pentestagent.cjs.map +1 -1
  681. package/dist/services/definitions/pentestagent.mjs +1 -1
  682. package/dist/services/definitions/playwright-server.cjs +2 -3
  683. package/dist/services/definitions/playwright-server.cjs.map +1 -1
  684. package/dist/services/definitions/playwright-server.mjs +1 -1
  685. package/dist/services/definitions/pocketbase.cjs +61 -0
  686. package/dist/services/definitions/pocketbase.cjs.map +1 -0
  687. package/dist/services/definitions/pocketbase.d.cts +7 -0
  688. package/dist/services/definitions/pocketbase.d.cts.map +1 -0
  689. package/dist/services/definitions/pocketbase.d.mts +7 -0
  690. package/dist/services/definitions/pocketbase.d.mts.map +1 -0
  691. package/dist/services/definitions/pocketbase.mjs +60 -0
  692. package/dist/services/definitions/pocketbase.mjs.map +1 -0
  693. package/dist/services/definitions/portainer.cjs +2 -3
  694. package/dist/services/definitions/portainer.cjs.map +1 -1
  695. package/dist/services/definitions/portainer.mjs +1 -1
  696. package/dist/services/definitions/postgresql.cjs +2 -3
  697. package/dist/services/definitions/postgresql.cjs.map +1 -1
  698. package/dist/services/definitions/postgresql.mjs +1 -1
  699. package/dist/services/definitions/postiz.cjs +2 -3
  700. package/dist/services/definitions/postiz.cjs.map +1 -1
  701. package/dist/services/definitions/postiz.mjs +1 -1
  702. package/dist/services/definitions/prometheus.cjs +2 -3
  703. package/dist/services/definitions/prometheus.cjs.map +1 -1
  704. package/dist/services/definitions/prometheus.mjs +1 -1
  705. package/dist/services/definitions/qdrant.cjs +2 -3
  706. package/dist/services/definitions/qdrant.cjs.map +1 -1
  707. package/dist/services/definitions/qdrant.mjs +1 -1
  708. package/dist/services/definitions/rabbitmq.cjs +80 -0
  709. package/dist/services/definitions/rabbitmq.cjs.map +1 -0
  710. package/dist/services/definitions/rabbitmq.d.cts +7 -0
  711. package/dist/services/definitions/rabbitmq.d.cts.map +1 -0
  712. package/dist/services/definitions/rabbitmq.d.mts +7 -0
  713. package/dist/services/definitions/rabbitmq.d.mts.map +1 -0
  714. package/dist/services/definitions/rabbitmq.mjs +79 -0
  715. package/dist/services/definitions/rabbitmq.mjs.map +1 -0
  716. package/dist/services/definitions/ragflow.cjs +192 -0
  717. package/dist/services/definitions/ragflow.cjs.map +1 -0
  718. package/dist/services/definitions/ragflow.d.cts +7 -0
  719. package/dist/services/definitions/ragflow.d.cts.map +1 -0
  720. package/dist/services/definitions/ragflow.d.mts +7 -0
  721. package/dist/services/definitions/ragflow.d.mts.map +1 -0
  722. package/dist/services/definitions/ragflow.mjs +191 -0
  723. package/dist/services/definitions/ragflow.mjs.map +1 -0
  724. package/dist/services/definitions/redis.cjs +2 -3
  725. package/dist/services/definitions/redis.cjs.map +1 -1
  726. package/dist/services/definitions/redis.mjs +1 -1
  727. package/dist/services/definitions/remotion.cjs +2 -3
  728. package/dist/services/definitions/remotion.cjs.map +1 -1
  729. package/dist/services/definitions/remotion.mjs +1 -1
  730. package/dist/services/definitions/restic.cjs +58 -0
  731. package/dist/services/definitions/restic.cjs.map +1 -0
  732. package/dist/services/definitions/restic.d.cts +7 -0
  733. package/dist/services/definitions/restic.d.cts.map +1 -0
  734. package/dist/services/definitions/restic.d.mts +7 -0
  735. package/dist/services/definitions/restic.d.mts.map +1 -0
  736. package/dist/services/definitions/restic.mjs +57 -0
  737. package/dist/services/definitions/restic.mjs.map +1 -0
  738. package/dist/services/definitions/rocketchat.cjs +2 -3
  739. package/dist/services/definitions/rocketchat.cjs.map +1 -1
  740. package/dist/services/definitions/rocketchat.mjs +1 -1
  741. package/dist/services/definitions/saleor.cjs +76 -0
  742. package/dist/services/definitions/saleor.cjs.map +1 -0
  743. package/dist/services/definitions/saleor.d.cts +7 -0
  744. package/dist/services/definitions/saleor.d.cts.map +1 -0
  745. package/dist/services/definitions/saleor.d.mts +7 -0
  746. package/dist/services/definitions/saleor.d.mts.map +1 -0
  747. package/dist/services/definitions/saleor.mjs +75 -0
  748. package/dist/services/definitions/saleor.mjs.map +1 -0
  749. package/dist/services/definitions/scrapling.cjs +2 -3
  750. package/dist/services/definitions/scrapling.cjs.map +1 -1
  751. package/dist/services/definitions/scrapling.mjs +1 -1
  752. package/dist/services/definitions/searxng.cjs +2 -3
  753. package/dist/services/definitions/searxng.cjs.map +1 -1
  754. package/dist/services/definitions/searxng.mjs +1 -1
  755. package/dist/services/definitions/signoz.cjs +2 -3
  756. package/dist/services/definitions/signoz.cjs.map +1 -1
  757. package/dist/services/definitions/signoz.mjs +1 -1
  758. package/dist/services/definitions/solidityguard.cjs +2 -3
  759. package/dist/services/definitions/solidityguard.cjs.map +1 -1
  760. package/dist/services/definitions/solidityguard.mjs +1 -1
  761. package/dist/services/definitions/stable-diffusion.cjs +2 -3
  762. package/dist/services/definitions/stable-diffusion.cjs.map +1 -1
  763. package/dist/services/definitions/stable-diffusion.mjs +1 -1
  764. package/dist/services/definitions/steel-browser.cjs +2 -3
  765. package/dist/services/definitions/steel-browser.cjs.map +1 -1
  766. package/dist/services/definitions/steel-browser.mjs +1 -1
  767. package/dist/services/definitions/stirling-pdf.cjs +74 -0
  768. package/dist/services/definitions/stirling-pdf.cjs.map +1 -0
  769. package/dist/services/definitions/stirling-pdf.d.cts +7 -0
  770. package/dist/services/definitions/stirling-pdf.d.cts.map +1 -0
  771. package/dist/services/definitions/stirling-pdf.d.mts +7 -0
  772. package/dist/services/definitions/stirling-pdf.d.mts.map +1 -0
  773. package/dist/services/definitions/stirling-pdf.mjs +73 -0
  774. package/dist/services/definitions/stirling-pdf.mjs.map +1 -0
  775. package/dist/services/definitions/strapi.cjs +124 -0
  776. package/dist/services/definitions/strapi.cjs.map +1 -0
  777. package/dist/services/definitions/strapi.d.cts +7 -0
  778. package/dist/services/definitions/strapi.d.cts.map +1 -0
  779. package/dist/services/definitions/strapi.d.mts +7 -0
  780. package/dist/services/definitions/strapi.d.mts.map +1 -0
  781. package/dist/services/definitions/strapi.mjs +123 -0
  782. package/dist/services/definitions/strapi.mjs.map +1 -0
  783. package/dist/services/definitions/stream-gateway.cjs +2 -3
  784. package/dist/services/definitions/stream-gateway.cjs.map +1 -1
  785. package/dist/services/definitions/stream-gateway.mjs +1 -1
  786. package/dist/services/definitions/supabase.cjs +2 -3
  787. package/dist/services/definitions/supabase.cjs.map +1 -1
  788. package/dist/services/definitions/supabase.mjs +1 -1
  789. package/dist/services/definitions/tailscale.cjs +2 -3
  790. package/dist/services/definitions/tailscale.cjs.map +1 -1
  791. package/dist/services/definitions/tailscale.mjs +1 -1
  792. package/dist/services/definitions/temporal.cjs +2 -3
  793. package/dist/services/definitions/temporal.cjs.map +1 -1
  794. package/dist/services/definitions/temporal.mjs +1 -1
  795. package/dist/services/definitions/traefik.cjs +2 -3
  796. package/dist/services/definitions/traefik.cjs.map +1 -1
  797. package/dist/services/definitions/traefik.mjs +1 -1
  798. package/dist/services/definitions/twenty.cjs +83 -0
  799. package/dist/services/definitions/twenty.cjs.map +1 -0
  800. package/dist/services/definitions/twenty.d.cts +7 -0
  801. package/dist/services/definitions/twenty.d.cts.map +1 -0
  802. package/dist/services/definitions/twenty.d.mts +7 -0
  803. package/dist/services/definitions/twenty.d.mts.map +1 -0
  804. package/dist/services/definitions/twenty.mjs +82 -0
  805. package/dist/services/definitions/twenty.mjs.map +1 -0
  806. package/dist/services/definitions/umami.cjs +2 -3
  807. package/dist/services/definitions/umami.cjs.map +1 -1
  808. package/dist/services/definitions/umami.mjs +1 -1
  809. package/dist/services/definitions/uptime-kuma.cjs +2 -3
  810. package/dist/services/definitions/uptime-kuma.cjs.map +1 -1
  811. package/dist/services/definitions/uptime-kuma.mjs +1 -1
  812. package/dist/services/definitions/usesend.cjs +2 -3
  813. package/dist/services/definitions/usesend.cjs.map +1 -1
  814. package/dist/services/definitions/usesend.mjs +1 -1
  815. package/dist/services/definitions/valkey.cjs +2 -3
  816. package/dist/services/definitions/valkey.cjs.map +1 -1
  817. package/dist/services/definitions/valkey.mjs +1 -1
  818. package/dist/services/definitions/vault.cjs +71 -0
  819. package/dist/services/definitions/vault.cjs.map +1 -0
  820. package/dist/services/definitions/vault.d.cts +7 -0
  821. package/dist/services/definitions/vault.d.cts.map +1 -0
  822. package/dist/services/definitions/vault.d.mts +7 -0
  823. package/dist/services/definitions/vault.d.mts.map +1 -0
  824. package/dist/services/definitions/vault.mjs +70 -0
  825. package/dist/services/definitions/vault.mjs.map +1 -0
  826. package/dist/services/definitions/vaultwarden.cjs +2 -3
  827. package/dist/services/definitions/vaultwarden.cjs.map +1 -1
  828. package/dist/services/definitions/vaultwarden.mjs +1 -1
  829. package/dist/services/definitions/watchtower.cjs +2 -3
  830. package/dist/services/definitions/watchtower.cjs.map +1 -1
  831. package/dist/services/definitions/watchtower.mjs +1 -1
  832. package/dist/services/definitions/weaviate.cjs +2 -3
  833. package/dist/services/definitions/weaviate.cjs.map +1 -1
  834. package/dist/services/definitions/weaviate.mjs +1 -1
  835. package/dist/services/definitions/whisper.cjs +2 -3
  836. package/dist/services/definitions/whisper.cjs.map +1 -1
  837. package/dist/services/definitions/whisper.mjs +1 -1
  838. package/dist/services/definitions/xyops.cjs +2 -3
  839. package/dist/services/definitions/xyops.cjs.map +1 -1
  840. package/dist/services/definitions/xyops.mjs +1 -1
  841. package/dist/services/registry.cjs +3 -4
  842. package/dist/services/registry.cjs.map +1 -1
  843. package/dist/services/registry.d.mts.map +1 -1
  844. package/dist/services/registry.mjs +1 -2
  845. package/dist/services/registry.mjs.map +1 -1
  846. package/dist/services/registry.test.cjs +3 -4
  847. package/dist/services/registry.test.cjs.map +1 -1
  848. package/dist/services/registry.test.mjs +3 -4
  849. package/dist/services/registry.test.mjs.map +1 -1
  850. package/dist/{manifest-4uLbISXV.cjs → skill-manifest--IgY9REK.cjs} +40 -10
  851. package/dist/skill-manifest--IgY9REK.cjs.map +1 -0
  852. package/dist/{manifest-B8UDsVlR.mjs → skill-manifest-BVUXU0__.mjs} +24 -5
  853. package/dist/skill-manifest-BVUXU0__.mjs.map +1 -0
  854. package/dist/skills/registry.cjs +262 -3
  855. package/dist/skills/registry.cjs.map +1 -1
  856. package/dist/skills/registry.d.cts.map +1 -1
  857. package/dist/skills/registry.d.mts.map +1 -1
  858. package/dist/skills/registry.mjs +261 -1
  859. package/dist/skills/registry.mjs.map +1 -1
  860. package/dist/skills/skill-manifest.cjs +5 -23
  861. package/dist/skills/skill-manifest.mjs +1 -19
  862. package/dist/skills-BlzpHmpH.cjs +620 -0
  863. package/dist/skills-BlzpHmpH.cjs.map +1 -0
  864. package/dist/types-CR83OJiq.d.cts +243 -0
  865. package/dist/types-CR83OJiq.d.cts.map +1 -0
  866. package/dist/types-zYjGTuyn.d.mts +243 -0
  867. package/dist/types-zYjGTuyn.d.mts.map +1 -0
  868. package/dist/types.cjs +79 -3
  869. package/dist/types.cjs.map +1 -1
  870. package/dist/types.d.cts +1 -1
  871. package/dist/types.d.mts +1 -1
  872. package/dist/types.mjs +78 -1
  873. package/dist/types.mjs.map +1 -1
  874. package/dist/validator.cjs +3 -4
  875. package/dist/validator.cjs.map +1 -1
  876. package/dist/validator.mjs +1 -2
  877. package/dist/validator.mjs.map +1 -1
  878. package/dist/validator.test.cjs +5 -6
  879. package/dist/validator.test.cjs.map +1 -1
  880. package/dist/validator.test.mjs +3 -4
  881. package/dist/validator.test.mjs.map +1 -1
  882. package/dist/version-manager.cjs +3 -4
  883. package/dist/version-manager.cjs.map +1 -1
  884. package/dist/version-manager.d.mts.map +1 -1
  885. package/dist/version-manager.mjs +1 -2
  886. package/dist/version-manager.mjs.map +1 -1
  887. package/dist/version-manager.test.cjs +5 -6
  888. package/dist/version-manager.test.cjs.map +1 -1
  889. package/dist/version-manager.test.mjs +3 -4
  890. package/dist/version-manager.test.mjs.map +1 -1
  891. package/dist/{vi.2VT5v0um-BmRMvymT.cjs → vi.2VT5v0um-CRqXre87.cjs} +82 -202
  892. package/dist/{vi.2VT5v0um-CFyDIn0m.mjs.map → vi.2VT5v0um-CRqXre87.cjs.map} +1 -1
  893. package/dist/{vi.2VT5v0um-CFyDIn0m.mjs → vi.2VT5v0um-DvC3SVNc.mjs} +67 -186
  894. package/dist/{vi.2VT5v0um-BmRMvymT.cjs.map → vi.2VT5v0um-DvC3SVNc.mjs.map} +1 -1
  895. package/package.json +3 -3
  896. package/src/generators/postgres-init.ts +6 -0
  897. package/src/presets/presets.test.ts +4 -0
  898. package/src/presets/registry.ts +88 -0
  899. package/src/schema.ts +11 -0
  900. package/src/services/definitions/airbyte.ts +75 -0
  901. package/src/services/definitions/airflow.ts +109 -0
  902. package/src/services/definitions/appwrite.ts +181 -0
  903. package/src/services/definitions/authelia.ts +145 -0
  904. package/src/services/definitions/axolotl.ts +65 -0
  905. package/src/services/definitions/chatwoot-worker.ts +93 -0
  906. package/src/services/definitions/chatwoot.ts +106 -0
  907. package/src/services/definitions/dagster.ts +82 -0
  908. package/src/services/definitions/directus.ts +115 -0
  909. package/src/services/definitions/duplicati.ts +77 -0
  910. package/src/services/definitions/excalidraw.ts +46 -0
  911. package/src/services/definitions/firecrawl-playwright.ts +62 -0
  912. package/src/services/definitions/firecrawl.ts +146 -0
  913. package/src/services/definitions/flagsmith.ts +76 -0
  914. package/src/services/definitions/fonoster.ts +67 -0
  915. package/src/services/definitions/formbricks.ts +75 -0
  916. package/src/services/definitions/hedgedoc.ts +81 -0
  917. package/src/services/definitions/heyform.ts +67 -0
  918. package/src/services/definitions/hoppscotch.ts +74 -0
  919. package/src/services/definitions/index.ts +124 -0
  920. package/src/services/definitions/infisical.ts +97 -0
  921. package/src/services/definitions/keycloak.ts +119 -0
  922. package/src/services/definitions/kong.ts +116 -0
  923. package/src/services/definitions/lago.ts +95 -0
  924. package/src/services/definitions/langflow.ts +82 -0
  925. package/src/services/definitions/langfuse.ts +76 -0
  926. package/src/services/definitions/listmonk.ts +118 -0
  927. package/src/services/definitions/mariadb.ts +82 -0
  928. package/src/services/definitions/mautic.ts +82 -0
  929. package/src/services/definitions/medusa.ts +82 -0
  930. package/src/services/definitions/mysql.ts +82 -0
  931. package/src/services/definitions/openhands.ts +60 -0
  932. package/src/services/definitions/opensearch.ts +95 -0
  933. package/src/services/definitions/pocketbase.ts +62 -0
  934. package/src/services/definitions/rabbitmq.ts +81 -0
  935. package/src/services/definitions/ragflow.ts +175 -0
  936. package/src/services/definitions/restic.ts +60 -0
  937. package/src/services/definitions/saleor.ts +75 -0
  938. package/src/services/definitions/stirling-pdf.ts +73 -0
  939. package/src/services/definitions/strapi.ts +124 -0
  940. package/src/services/definitions/twenty.ts +82 -0
  941. package/src/services/definitions/vault.ts +74 -0
  942. package/src/skills/manifest.json +8 -0
  943. package/src/skills/registry.ts +119 -0
  944. package/src/types.ts +91 -2
  945. package/dist/chunk-C0xms8kb.cjs +0 -34
  946. package/dist/deployers/coolify.d.cts.map +0 -1
  947. package/dist/deployers/coolify.d.mts.map +0 -1
  948. package/dist/deployers/dokploy.d.cts.map +0 -1
  949. package/dist/deployers/dokploy.d.mts.map +0 -1
  950. package/dist/deployers/types.d.cts.map +0 -1
  951. package/dist/deployers/types.d.mts.map +0 -1
  952. package/dist/generators/skills.cjs.map +0 -1
  953. package/dist/manifest-4uLbISXV.cjs.map +0 -1
  954. package/dist/manifest-B8UDsVlR.mjs.map +0 -1
  955. package/dist/schema.d.cts.map +0 -1
  956. package/dist/schema.d.mts.map +0 -1
  957. package/dist/skills/skill-manifest.cjs.map +0 -1
  958. package/dist/skills/skill-manifest.mjs.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"port-scanner.cjs","names":[],"sources":["../src/port-scanner.ts"],"sourcesContent":["import type { ServiceDefinition } from \"./types.js\";\n\n/**\n * Scans system for ports in use and suggests alternatives for conflicts\n */\nexport interface PortConflict {\n\tport: number;\n\tserviceId: string;\n\tdescription: string;\n\tsuggestedPort: number;\n}\n\n/**\n * Check if a port is available using a two-phase approach:\n * 1. TCP connect — detects if something is already listening\n * 2. Bind check — detects OS-reserved/excluded port ranges (e.g. Hyper-V on Windows)\n *\n * The connect-only approach misses Windows excluded port ranges because\n * ECONNREFUSED (nothing listening) looks the same as \"available\" even though\n * Docker's bind() will fail on those reserved ranges.\n */\nasync function isPortAvailable(port: number): Promise<boolean> {\n\ttry {\n\t\tconst net = await import(\"node:net\");\n\n\t\t// Phase 1: TCP connect check — is something actively listening?\n\t\tconst isListening = await new Promise<boolean>((resolve) => {\n\t\t\tconst socket = new net.Socket();\n\t\t\tlet resolved = false;\n\n\t\t\tconst cleanup = () => {\n\t\t\t\tif (!resolved) {\n\t\t\t\t\tresolved = true;\n\t\t\t\t\tsocket.removeAllListeners();\n\t\t\t\t\tsocket.destroy();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tsocket.once(\"connect\", () => {\n\t\t\t\tcleanup();\n\t\t\t\tresolve(true);\n\t\t\t});\n\n\t\t\tsocket.once(\"error\", () => {\n\t\t\t\tcleanup();\n\t\t\t\tresolve(false);\n\t\t\t});\n\n\t\t\tsocket.setTimeout(500);\n\t\t\tsocket.once(\"timeout\", () => {\n\t\t\t\tcleanup();\n\t\t\t\tresolve(false);\n\t\t\t});\n\n\t\t\tsocket.connect(port, \"127.0.0.1\");\n\t\t});\n\n\t\tif (isListening) return false; // Port is in use\n\n\t\t// Phase 2: Bind check — catches OS-reserved/excluded port ranges\n\t\t// On Windows, Hyper-V/WSL reserve dynamic port ranges that TCP connect\n\t\t// cannot detect. Attempting to bind reveals these reservations.\n\t\tconst canBind = await new Promise<boolean>((resolve) => {\n\t\t\tconst server = net.createServer();\n\n\t\t\tserver.once(\"error\", (_err: NodeJS.ErrnoException) => {\n\t\t\t\t// EACCES / EADDRINUSE / EPERM = port is reserved or in use\n\t\t\t\tresolve(false);\n\t\t\t});\n\n\t\t\tserver.listen(port, \"0.0.0.0\", () => {\n\t\t\t\t// Successfully bound — port is truly available\n\t\t\t\tserver.close(() => resolve(true));\n\t\t\t});\n\t\t});\n\n\t\treturn canBind;\n\t} catch (error) {\n\t\tconsole.warn(`Port scanner error for port ${port}:`, error);\n\t\treturn true; // Failsafe: assume available\n\t}\n}\n\n/**\n * Find next available port starting from a base port.\n * Also skips ports already claimed by other services in this generation.\n */\nasync function findNextAvailablePort(\n\tstartPort: number,\n\tclaimedPorts: Set<number>,\n\tmaxAttempts = 100,\n): Promise<number> {\n\tfor (let i = 0; i < maxAttempts; i++) {\n\t\tconst port = startPort + i;\n\t\tif (port > 65535) break;\n\t\tif (claimedPorts.has(port)) continue;\n\t\tif (await isPortAvailable(port)) {\n\t\t\treturn port;\n\t\t}\n\t}\n\t// Fallback: return a high random port\n\treturn 50000 + Math.floor(Math.random() * 10000);\n}\n\n/**\n * Scan for port conflicts and suggest alternatives.\n *\n * Detects two types of conflicts:\n * 1. Host conflicts — port is already in use or reserved by the OS\n * 2. Inter-service conflicts — multiple selected services claim the same host port\n */\nexport async function scanPortConflicts(\n\tservices: ServiceDefinition[],\n): Promise<Map<string, Map<number, number>>> {\n\tconst portReassignments = new Map<string, Map<number, number>>();\n\n\t// Track which host ports are already claimed by services in this stack.\n\t// First service to claim a port wins; subsequent services get reassigned.\n\tconst claimedPorts = new Map<number, string>(); // port → serviceId that claimed it\n\n\tfor (const service of services) {\n\t\tif (!service.ports || service.ports.length === 0) continue;\n\n\t\tconst serviceReassignments = new Map<number, number>();\n\n\t\tfor (const portDef of service.ports) {\n\t\t\tif (!portDef.exposed) continue;\n\n\t\t\tconst port = portDef.host;\n\n\t\t\t// Check inter-service conflict first\n\t\t\tconst claimedBy = claimedPorts.get(port);\n\t\t\tif (claimedBy && claimedBy !== service.id) {\n\t\t\t\t// Another service already claimed this port — must reassign\n\t\t\t\tconst newPort = await findNextAvailablePort(port + 1000, new Set(claimedPorts.keys()));\n\t\t\t\tserviceReassignments.set(port, newPort);\n\t\t\t\tclaimedPorts.set(newPort, service.id);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Check host availability (TCP connect + bind check)\n\t\t\tconst isAvailable = await isPortAvailable(port);\n\n\t\t\tif (!isAvailable) {\n\t\t\t\tconst newPort = await findNextAvailablePort(port + 1000, new Set(claimedPorts.keys()));\n\t\t\t\tserviceReassignments.set(port, newPort);\n\t\t\t\tclaimedPorts.set(newPort, service.id);\n\t\t\t} else {\n\t\t\t\t// Port is available and not claimed — claim it\n\t\t\t\tclaimedPorts.set(port, service.id);\n\t\t\t}\n\t\t}\n\n\t\tif (serviceReassignments.size > 0) {\n\t\t\tportReassignments.set(service.id, serviceReassignments);\n\t\t}\n\t}\n\n\treturn portReassignments;\n}\n\n/**\n * Get conflicts in a user-friendly format\n */\nexport function formatPortConflicts(\n\tservices: ServiceDefinition[],\n\treassignments: Map<string, Map<number, number>>,\n): PortConflict[] {\n\tconst conflicts: PortConflict[] = [];\n\n\tfor (const service of services) {\n\t\tconst serviceReassignments = reassignments.get(service.id);\n\t\tif (!serviceReassignments) continue;\n\n\t\tfor (const portDef of service.ports || []) {\n\t\t\tconst newPort = serviceReassignments.get(portDef.host);\n\t\t\tif (newPort) {\n\t\t\t\tconflicts.push({\n\t\t\t\t\tport: portDef.host,\n\t\t\t\t\tserviceId: service.id,\n\t\t\t\t\tdescription: portDef.description || `${service.name} port`,\n\t\t\t\t\tsuggestedPort: newPort,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\treturn conflicts;\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"port-scanner.cjs","names":[],"sources":["../src/port-scanner.ts"],"sourcesContent":["import type { ServiceDefinition } from \"./types.js\";\n\n/**\n * Scans system for ports in use and suggests alternatives for conflicts\n */\nexport interface PortConflict {\n\tport: number;\n\tserviceId: string;\n\tdescription: string;\n\tsuggestedPort: number;\n}\n\n/**\n * Check if a port is available using a two-phase approach:\n * 1. TCP connect — detects if something is already listening\n * 2. Bind check — detects OS-reserved/excluded port ranges (e.g. Hyper-V on Windows)\n *\n * The connect-only approach misses Windows excluded port ranges because\n * ECONNREFUSED (nothing listening) looks the same as \"available\" even though\n * Docker's bind() will fail on those reserved ranges.\n */\nasync function isPortAvailable(port: number): Promise<boolean> {\n\ttry {\n\t\tconst net = await import(\"node:net\");\n\n\t\t// Phase 1: TCP connect check — is something actively listening?\n\t\tconst isListening = await new Promise<boolean>((resolve) => {\n\t\t\tconst socket = new net.Socket();\n\t\t\tlet resolved = false;\n\n\t\t\tconst cleanup = () => {\n\t\t\t\tif (!resolved) {\n\t\t\t\t\tresolved = true;\n\t\t\t\t\tsocket.removeAllListeners();\n\t\t\t\t\tsocket.destroy();\n\t\t\t\t}\n\t\t\t};\n\n\t\t\tsocket.once(\"connect\", () => {\n\t\t\t\tcleanup();\n\t\t\t\tresolve(true);\n\t\t\t});\n\n\t\t\tsocket.once(\"error\", () => {\n\t\t\t\tcleanup();\n\t\t\t\tresolve(false);\n\t\t\t});\n\n\t\t\tsocket.setTimeout(500);\n\t\t\tsocket.once(\"timeout\", () => {\n\t\t\t\tcleanup();\n\t\t\t\tresolve(false);\n\t\t\t});\n\n\t\t\tsocket.connect(port, \"127.0.0.1\");\n\t\t});\n\n\t\tif (isListening) return false; // Port is in use\n\n\t\t// Phase 2: Bind check — catches OS-reserved/excluded port ranges\n\t\t// On Windows, Hyper-V/WSL reserve dynamic port ranges that TCP connect\n\t\t// cannot detect. Attempting to bind reveals these reservations.\n\t\tconst canBind = await new Promise<boolean>((resolve) => {\n\t\t\tconst server = net.createServer();\n\n\t\t\tserver.once(\"error\", (_err: NodeJS.ErrnoException) => {\n\t\t\t\t// EACCES / EADDRINUSE / EPERM = port is reserved or in use\n\t\t\t\tresolve(false);\n\t\t\t});\n\n\t\t\tserver.listen(port, \"0.0.0.0\", () => {\n\t\t\t\t// Successfully bound — port is truly available\n\t\t\t\tserver.close(() => resolve(true));\n\t\t\t});\n\t\t});\n\n\t\treturn canBind;\n\t} catch (error) {\n\t\tconsole.warn(`Port scanner error for port ${port}:`, error);\n\t\treturn true; // Failsafe: assume available\n\t}\n}\n\n/**\n * Find next available port starting from a base port.\n * Also skips ports already claimed by other services in this generation.\n */\nasync function findNextAvailablePort(\n\tstartPort: number,\n\tclaimedPorts: Set<number>,\n\tmaxAttempts = 100,\n): Promise<number> {\n\tfor (let i = 0; i < maxAttempts; i++) {\n\t\tconst port = startPort + i;\n\t\tif (port > 65535) break;\n\t\tif (claimedPorts.has(port)) continue;\n\t\tif (await isPortAvailable(port)) {\n\t\t\treturn port;\n\t\t}\n\t}\n\t// Fallback: return a high random port\n\treturn 50000 + Math.floor(Math.random() * 10000);\n}\n\n/**\n * Scan for port conflicts and suggest alternatives.\n *\n * Detects two types of conflicts:\n * 1. Host conflicts — port is already in use or reserved by the OS\n * 2. Inter-service conflicts — multiple selected services claim the same host port\n */\nexport async function scanPortConflicts(\n\tservices: ServiceDefinition[],\n): Promise<Map<string, Map<number, number>>> {\n\tconst portReassignments = new Map<string, Map<number, number>>();\n\n\t// Track which host ports are already claimed by services in this stack.\n\t// First service to claim a port wins; subsequent services get reassigned.\n\tconst claimedPorts = new Map<number, string>(); // port → serviceId that claimed it\n\n\tfor (const service of services) {\n\t\tif (!service.ports || service.ports.length === 0) continue;\n\n\t\tconst serviceReassignments = new Map<number, number>();\n\n\t\tfor (const portDef of service.ports) {\n\t\t\tif (!portDef.exposed) continue;\n\n\t\t\tconst port = portDef.host;\n\n\t\t\t// Check inter-service conflict first\n\t\t\tconst claimedBy = claimedPorts.get(port);\n\t\t\tif (claimedBy && claimedBy !== service.id) {\n\t\t\t\t// Another service already claimed this port — must reassign\n\t\t\t\tconst newPort = await findNextAvailablePort(port + 1000, new Set(claimedPorts.keys()));\n\t\t\t\tserviceReassignments.set(port, newPort);\n\t\t\t\tclaimedPorts.set(newPort, service.id);\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\t// Check host availability (TCP connect + bind check)\n\t\t\tconst isAvailable = await isPortAvailable(port);\n\n\t\t\tif (!isAvailable) {\n\t\t\t\tconst newPort = await findNextAvailablePort(port + 1000, new Set(claimedPorts.keys()));\n\t\t\t\tserviceReassignments.set(port, newPort);\n\t\t\t\tclaimedPorts.set(newPort, service.id);\n\t\t\t} else {\n\t\t\t\t// Port is available and not claimed — claim it\n\t\t\t\tclaimedPorts.set(port, service.id);\n\t\t\t}\n\t\t}\n\n\t\tif (serviceReassignments.size > 0) {\n\t\t\tportReassignments.set(service.id, serviceReassignments);\n\t\t}\n\t}\n\n\treturn portReassignments;\n}\n\n/**\n * Get conflicts in a user-friendly format\n */\nexport function formatPortConflicts(\n\tservices: ServiceDefinition[],\n\treassignments: Map<string, Map<number, number>>,\n): PortConflict[] {\n\tconst conflicts: PortConflict[] = [];\n\n\tfor (const service of services) {\n\t\tconst serviceReassignments = reassignments.get(service.id);\n\t\tif (!serviceReassignments) continue;\n\n\t\tfor (const portDef of service.ports || []) {\n\t\t\tconst newPort = serviceReassignments.get(portDef.host);\n\t\t\tif (newPort) {\n\t\t\t\tconflicts.push({\n\t\t\t\t\tport: portDef.host,\n\t\t\t\t\tserviceId: service.id,\n\t\t\t\t\tdescription: portDef.description || `${service.name} port`,\n\t\t\t\t\tsuggestedPort: newPort,\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n\n\treturn conflicts;\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"port-scanner.d.mts","names":[],"sources":["../src/port-scanner.ts"],"mappings":";;;;;AAKA;UAAiB,YAAA;EAChB,IAAA;EACA,SAAA;EACA,WAAA;EACA,aAAA;AAAA;;;;AAsGD;;;;iBAAsB,iBAAA,CACrB,QAAA,EAAU,iBAAA,KACR,OAAA,CAAQ,GAAA,SAAY,GAAA;;;;iBAmDP,mBAAA,CACf,QAAA,EAAU,iBAAA,IACV,aAAA,EAAe,GAAA,SAAY,GAAA,oBACzB,YAAA"}
1
+ {"version":3,"file":"port-scanner.d.mts","names":[],"sources":["../src/port-scanner.ts"],"mappings":";;;;;;UAKiB,YAAA;EAChB,IAAA;EACA,SAAA;EACA,WAAA;EACA,aAAA;AAAA;;;;;AAsGD;;;iBAAsB,iBAAA,CACrB,QAAA,EAAU,iBAAA,KACR,OAAA,CAAQ,GAAA,SAAY,GAAA;;;;iBAmDP,mBAAA,CACf,QAAA,EAAU,iBAAA,IACV,aAAA,EAAe,GAAA,SAAY,GAAA,oBACzB,YAAA"}
@@ -116,7 +116,7 @@ function formatPortConflicts(services, reassignments) {
116
116
  }
117
117
  return conflicts;
118
118
  }
119
-
120
119
  //#endregion
121
120
  export { formatPortConflicts, scanPortConflicts };
121
+
122
122
  //# sourceMappingURL=port-scanner.mjs.map
@@ -1,10 +1,9 @@
1
- const require_chunk = require('../chunk-C0xms8kb.cjs');
2
- const require_resolver = require('../resolver.cjs');
3
- const require_generate = require('../generate.cjs');
4
- const require_presets_registry = require('./registry.cjs');
1
+ const require_skills = require("../skills-BlzpHmpH.cjs");
2
+ const require_resolver = require("../resolver.cjs");
3
+ const require_generate = require("../generate.cjs");
4
+ const require_presets_registry = require("./registry.cjs");
5
5
  let yaml = require("yaml");
6
- yaml = require_chunk.__toESM(yaml);
7
-
6
+ yaml = require_skills.__toESM(yaml);
8
7
  //#region src/presets/presets.test.ts
9
8
  const allPresets = require_presets_registry.getAllPresets();
10
9
  describe("preset smoke tests", () => {
@@ -38,7 +37,11 @@ describe("preset smoke tests", () => {
38
37
  deploymentType: "docker",
39
38
  generateSecrets: false,
40
39
  openclawVersion: "latest",
41
- monitoring: false
40
+ monitoring: false,
41
+ openclawImage: "official",
42
+ openclawInstallMethod: "docker",
43
+ deployTarget: "local",
44
+ hardened: false
42
45
  });
43
46
  expect(result.files["docker-compose.yml"]).toBeDefined();
44
47
  expect(result.files[".env.example"]).toBeDefined();
@@ -60,6 +63,6 @@ describe("preset smoke tests", () => {
60
63
  expect(result.isValid).toBe(true);
61
64
  });
62
65
  });
63
-
64
66
  //#endregion
67
+
65
68
  //# sourceMappingURL=presets.test.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"presets.test.cjs","names":["getAllPresets","getPresetById","generate","resolve"],"sources":["../../src/presets/presets.test.ts"],"sourcesContent":["import * as yaml from \"yaml\";\nimport { generate } from \"../generate.js\";\nimport { getAllPresets, getPresetById } from \"../presets/registry.js\";\nimport { resolve } from \"../resolver.js\";\n\nconst allPresets = getAllPresets();\n\ndescribe(\"preset smoke tests\", () => {\n\tit(\"all presets are defined\", () => {\n\t\texpect(allPresets.length).toBeGreaterThanOrEqual(5);\n\t});\n\n\tit(\"all preset IDs are unique\", () => {\n\t\tconst ids = allPresets.map((p) => p.id);\n\t\tconst uniqueIds = new Set(ids);\n\t\texpect(uniqueIds.size).toBe(ids.length);\n\t});\n\n\tfor (const preset of allPresets) {\n\t\tit(`getPresetById returns correct preset for \"${preset.id}\"`, () => {\n\t\t\tconst found = getPresetById(preset.id);\n\t\t\texpect(found).toBeDefined();\n\t\t\texpect(found!.id).toBe(preset.id);\n\t\t\texpect(found!.name).toBe(preset.name);\n\t\t\texpect(found!.services).toEqual(preset.services);\n\t\t\texpect(found!.skillPacks).toEqual(preset.skillPacks);\n\t\t});\n\t}\n\n\tfor (const preset of allPresets) {\n\t\tit(`preset \"${preset.id}\" generates valid configuration`, () => {\n\t\t\tconst result = generate({\n\t\t\t\tprojectName: \"test-project\",\n\t\t\t\tservices: preset.services,\n\t\t\t\tskillPacks: preset.skillPacks,\n\t\t\t\taiProviders: [],\n\t\t\t\tgsdRuntimes: [],\n\t\t\t\tproxy: \"none\",\n\t\t\t\tgpu: false,\n\t\t\t\tplatform: \"linux/amd64\",\n\t\t\t\tdeployment: \"local\",\n\t\t\t\tdeploymentType: \"docker\",\n\t\t\t\tgenerateSecrets: false,\n\t\t\t\topenclawVersion: \"latest\",\n\t\t\t\tmonitoring: false,\n\t\t\t});\n\n\t\t\texpect(result.files[\"docker-compose.yml\"]).toBeDefined();\n\t\t\texpect(result.files[\".env.example\"]).toBeDefined();\n\t\t\texpect(result.metadata.serviceCount).toBeGreaterThan(0);\n\n\t\t\tconst composeContent = result.files[\"docker-compose.yml\"]!;\n\t\t\tconst parsed = yaml.parse(composeContent);\n\t\t\texpect(parsed).toBeDefined();\n\t\t\texpect(parsed.services).toBeDefined();\n\t\t});\n\t}\n\n\tfor (const preset of allPresets) {\n\t\tit(`preset \"${preset.id}\" resolves without errors`, () => {\n\t\t\tconst result = resolve({\n\t\t\t\tservices: preset.services,\n\t\t\t\tskillPacks: preset.skillPacks,\n\t\t\t\tproxy: \"none\",\n\t\t\t\tgpu: false,\n\t\t\t\tplatform: \"linux/amd64\",\n\t\t\t\tmonitoring: false,\n\t\t\t});\n\n\t\t\texpect(result.isValid).toBe(true);\n\t\t});\n\t}\n});\n"],"mappings":";;;;;;;;AAKA,MAAM,aAAaA,wCAAe;AAElC,SAAS,4BAA4B;AACpC,IAAG,iCAAiC;AACnC,SAAO,WAAW,OAAO,CAAC,uBAAuB,EAAE;GAClD;AAEF,IAAG,mCAAmC;EACrC,MAAM,MAAM,WAAW,KAAK,MAAM,EAAE,GAAG;EACvC,MAAM,YAAY,IAAI,IAAI,IAAI;AAC9B,SAAO,UAAU,KAAK,CAAC,KAAK,IAAI,OAAO;GACtC;AAEF,MAAK,MAAM,UAAU,WACpB,IAAG,6CAA6C,OAAO,GAAG,UAAU;EACnE,MAAM,QAAQC,uCAAc,OAAO,GAAG;AACtC,SAAO,MAAM,CAAC,aAAa;AAC3B,SAAO,MAAO,GAAG,CAAC,KAAK,OAAO,GAAG;AACjC,SAAO,MAAO,KAAK,CAAC,KAAK,OAAO,KAAK;AACrC,SAAO,MAAO,SAAS,CAAC,QAAQ,OAAO,SAAS;AAChD,SAAO,MAAO,WAAW,CAAC,QAAQ,OAAO,WAAW;GACnD;AAGH,MAAK,MAAM,UAAU,WACpB,IAAG,WAAW,OAAO,GAAG,wCAAwC;EAC/D,MAAM,SAASC,0BAAS;GACvB,aAAa;GACb,UAAU,OAAO;GACjB,YAAY,OAAO;GACnB,aAAa,EAAE;GACf,aAAa,EAAE;GACf,OAAO;GACP,KAAK;GACL,UAAU;GACV,YAAY;GACZ,gBAAgB;GAChB,iBAAiB;GACjB,iBAAiB;GACjB,YAAY;GACZ,CAAC;AAEF,SAAO,OAAO,MAAM,sBAAsB,CAAC,aAAa;AACxD,SAAO,OAAO,MAAM,gBAAgB,CAAC,aAAa;AAClD,SAAO,OAAO,SAAS,aAAa,CAAC,gBAAgB,EAAE;EAEvD,MAAM,iBAAiB,OAAO,MAAM;EACpC,MAAM,SAAS,KAAK,MAAM,eAAe;AACzC,SAAO,OAAO,CAAC,aAAa;AAC5B,SAAO,OAAO,SAAS,CAAC,aAAa;GACpC;AAGH,MAAK,MAAM,UAAU,WACpB,IAAG,WAAW,OAAO,GAAG,kCAAkC;EACzD,MAAM,SAASC,yBAAQ;GACtB,UAAU,OAAO;GACjB,YAAY,OAAO;GACnB,OAAO;GACP,KAAK;GACL,UAAU;GACV,YAAY;GACZ,CAAC;AAEF,SAAO,OAAO,QAAQ,CAAC,KAAK,KAAK;GAChC;EAEF"}
1
+ {"version":3,"file":"presets.test.cjs","names":["getAllPresets","getPresetById","generate","resolve"],"sources":["../../src/presets/presets.test.ts"],"sourcesContent":["import * as yaml from \"yaml\";\nimport { generate } from \"../generate.js\";\nimport { getAllPresets, getPresetById } from \"../presets/registry.js\";\nimport { resolve } from \"../resolver.js\";\n\nconst allPresets = getAllPresets();\n\ndescribe(\"preset smoke tests\", () => {\n\tit(\"all presets are defined\", () => {\n\t\texpect(allPresets.length).toBeGreaterThanOrEqual(5);\n\t});\n\n\tit(\"all preset IDs are unique\", () => {\n\t\tconst ids = allPresets.map((p) => p.id);\n\t\tconst uniqueIds = new Set(ids);\n\t\texpect(uniqueIds.size).toBe(ids.length);\n\t});\n\n\tfor (const preset of allPresets) {\n\t\tit(`getPresetById returns correct preset for \"${preset.id}\"`, () => {\n\t\t\tconst found = getPresetById(preset.id);\n\t\t\texpect(found).toBeDefined();\n\t\t\texpect(found!.id).toBe(preset.id);\n\t\t\texpect(found!.name).toBe(preset.name);\n\t\t\texpect(found!.services).toEqual(preset.services);\n\t\t\texpect(found!.skillPacks).toEqual(preset.skillPacks);\n\t\t});\n\t}\n\n\tfor (const preset of allPresets) {\n\t\tit(`preset \"${preset.id}\" generates valid configuration`, () => {\n\t\t\tconst result = generate({\n\t\t\t\tprojectName: \"test-project\",\n\t\t\t\tservices: preset.services,\n\t\t\t\tskillPacks: preset.skillPacks,\n\t\t\t\taiProviders: [],\n\t\t\t\tgsdRuntimes: [],\n\t\t\t\tproxy: \"none\",\n\t\t\t\tgpu: false,\n\t\t\t\tplatform: \"linux/amd64\",\n\t\t\t\tdeployment: \"local\",\n\t\t\t\tdeploymentType: \"docker\",\n\t\t\t\tgenerateSecrets: false,\n\t\t\t\topenclawVersion: \"latest\",\n\t\t\t\tmonitoring: false,\n\t\t\t\topenclawImage: \"official\",\n\t\t\t\topenclawInstallMethod: \"docker\",\n\t\t\t\tdeployTarget: \"local\",\n\t\t\t\thardened: false,\n\t\t\t});\n\n\t\t\texpect(result.files[\"docker-compose.yml\"]).toBeDefined();\n\t\t\texpect(result.files[\".env.example\"]).toBeDefined();\n\t\t\texpect(result.metadata.serviceCount).toBeGreaterThan(0);\n\n\t\t\tconst composeContent = result.files[\"docker-compose.yml\"]!;\n\t\t\tconst parsed = yaml.parse(composeContent);\n\t\t\texpect(parsed).toBeDefined();\n\t\t\texpect(parsed.services).toBeDefined();\n\t\t});\n\t}\n\n\tfor (const preset of allPresets) {\n\t\tit(`preset \"${preset.id}\" resolves without errors`, () => {\n\t\t\tconst result = resolve({\n\t\t\t\tservices: preset.services,\n\t\t\t\tskillPacks: preset.skillPacks,\n\t\t\t\tproxy: \"none\",\n\t\t\t\tgpu: false,\n\t\t\t\tplatform: \"linux/amd64\",\n\t\t\t\tmonitoring: false,\n\t\t\t});\n\n\t\t\texpect(result.isValid).toBe(true);\n\t\t});\n\t}\n});\n"],"mappings":";;;;;;;AAKA,MAAM,aAAaA,yBAAAA,eAAe;AAElC,SAAS,4BAA4B;AACpC,IAAG,iCAAiC;AACnC,SAAO,WAAW,OAAO,CAAC,uBAAuB,EAAE;GAClD;AAEF,IAAG,mCAAmC;EACrC,MAAM,MAAM,WAAW,KAAK,MAAM,EAAE,GAAG;EACvC,MAAM,YAAY,IAAI,IAAI,IAAI;AAC9B,SAAO,UAAU,KAAK,CAAC,KAAK,IAAI,OAAO;GACtC;AAEF,MAAK,MAAM,UAAU,WACpB,IAAG,6CAA6C,OAAO,GAAG,UAAU;EACnE,MAAM,QAAQC,yBAAAA,cAAc,OAAO,GAAG;AACtC,SAAO,MAAM,CAAC,aAAa;AAC3B,SAAO,MAAO,GAAG,CAAC,KAAK,OAAO,GAAG;AACjC,SAAO,MAAO,KAAK,CAAC,KAAK,OAAO,KAAK;AACrC,SAAO,MAAO,SAAS,CAAC,QAAQ,OAAO,SAAS;AAChD,SAAO,MAAO,WAAW,CAAC,QAAQ,OAAO,WAAW;GACnD;AAGH,MAAK,MAAM,UAAU,WACpB,IAAG,WAAW,OAAO,GAAG,wCAAwC;EAC/D,MAAM,SAASC,iBAAAA,SAAS;GACvB,aAAa;GACb,UAAU,OAAO;GACjB,YAAY,OAAO;GACnB,aAAa,EAAE;GACf,aAAa,EAAE;GACf,OAAO;GACP,KAAK;GACL,UAAU;GACV,YAAY;GACZ,gBAAgB;GAChB,iBAAiB;GACjB,iBAAiB;GACjB,YAAY;GACZ,eAAe;GACf,uBAAuB;GACvB,cAAc;GACd,UAAU;GACV,CAAC;AAEF,SAAO,OAAO,MAAM,sBAAsB,CAAC,aAAa;AACxD,SAAO,OAAO,MAAM,gBAAgB,CAAC,aAAa;AAClD,SAAO,OAAO,SAAS,aAAa,CAAC,gBAAgB,EAAE;EAEvD,MAAM,iBAAiB,OAAO,MAAM;EACpC,MAAM,SAAS,KAAK,MAAM,eAAe;AACzC,SAAO,OAAO,CAAC,aAAa;AAC5B,SAAO,OAAO,SAAS,CAAC,aAAa;GACpC;AAGH,MAAK,MAAM,UAAU,WACpB,IAAG,WAAW,OAAO,GAAG,kCAAkC;EACzD,MAAM,SAASC,iBAAAA,QAAQ;GACtB,UAAU,OAAO;GACjB,YAAY,OAAO;GACnB,OAAO;GACP,KAAK;GACL,UAAU;GACV,YAAY;GACZ,CAAC;AAEF,SAAO,OAAO,QAAQ,CAAC,KAAK,KAAK;GAChC;EAEF"}
@@ -2,7 +2,6 @@ import { resolve } from "../resolver.mjs";
2
2
  import { generate } from "../generate.mjs";
3
3
  import { getAllPresets, getPresetById } from "./registry.mjs";
4
4
  import * as yaml from "yaml";
5
-
6
5
  //#region src/presets/presets.test.ts
7
6
  const allPresets = getAllPresets();
8
7
  describe("preset smoke tests", () => {
@@ -36,7 +35,11 @@ describe("preset smoke tests", () => {
36
35
  deploymentType: "docker",
37
36
  generateSecrets: false,
38
37
  openclawVersion: "latest",
39
- monitoring: false
38
+ monitoring: false,
39
+ openclawImage: "official",
40
+ openclawInstallMethod: "docker",
41
+ deployTarget: "local",
42
+ hardened: false
40
43
  });
41
44
  expect(result.files["docker-compose.yml"]).toBeDefined();
42
45
  expect(result.files[".env.example"]).toBeDefined();
@@ -58,7 +61,7 @@ describe("preset smoke tests", () => {
58
61
  expect(result.isValid).toBe(true);
59
62
  });
60
63
  });
61
-
62
64
  //#endregion
63
- export { };
65
+ export {};
66
+
64
67
  //# sourceMappingURL=presets.test.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"presets.test.mjs","names":[],"sources":["../../src/presets/presets.test.ts"],"sourcesContent":["import * as yaml from \"yaml\";\nimport { generate } from \"../generate.js\";\nimport { getAllPresets, getPresetById } from \"../presets/registry.js\";\nimport { resolve } from \"../resolver.js\";\n\nconst allPresets = getAllPresets();\n\ndescribe(\"preset smoke tests\", () => {\n\tit(\"all presets are defined\", () => {\n\t\texpect(allPresets.length).toBeGreaterThanOrEqual(5);\n\t});\n\n\tit(\"all preset IDs are unique\", () => {\n\t\tconst ids = allPresets.map((p) => p.id);\n\t\tconst uniqueIds = new Set(ids);\n\t\texpect(uniqueIds.size).toBe(ids.length);\n\t});\n\n\tfor (const preset of allPresets) {\n\t\tit(`getPresetById returns correct preset for \"${preset.id}\"`, () => {\n\t\t\tconst found = getPresetById(preset.id);\n\t\t\texpect(found).toBeDefined();\n\t\t\texpect(found!.id).toBe(preset.id);\n\t\t\texpect(found!.name).toBe(preset.name);\n\t\t\texpect(found!.services).toEqual(preset.services);\n\t\t\texpect(found!.skillPacks).toEqual(preset.skillPacks);\n\t\t});\n\t}\n\n\tfor (const preset of allPresets) {\n\t\tit(`preset \"${preset.id}\" generates valid configuration`, () => {\n\t\t\tconst result = generate({\n\t\t\t\tprojectName: \"test-project\",\n\t\t\t\tservices: preset.services,\n\t\t\t\tskillPacks: preset.skillPacks,\n\t\t\t\taiProviders: [],\n\t\t\t\tgsdRuntimes: [],\n\t\t\t\tproxy: \"none\",\n\t\t\t\tgpu: false,\n\t\t\t\tplatform: \"linux/amd64\",\n\t\t\t\tdeployment: \"local\",\n\t\t\t\tdeploymentType: \"docker\",\n\t\t\t\tgenerateSecrets: false,\n\t\t\t\topenclawVersion: \"latest\",\n\t\t\t\tmonitoring: false,\n\t\t\t});\n\n\t\t\texpect(result.files[\"docker-compose.yml\"]).toBeDefined();\n\t\t\texpect(result.files[\".env.example\"]).toBeDefined();\n\t\t\texpect(result.metadata.serviceCount).toBeGreaterThan(0);\n\n\t\t\tconst composeContent = result.files[\"docker-compose.yml\"]!;\n\t\t\tconst parsed = yaml.parse(composeContent);\n\t\t\texpect(parsed).toBeDefined();\n\t\t\texpect(parsed.services).toBeDefined();\n\t\t});\n\t}\n\n\tfor (const preset of allPresets) {\n\t\tit(`preset \"${preset.id}\" resolves without errors`, () => {\n\t\t\tconst result = resolve({\n\t\t\t\tservices: preset.services,\n\t\t\t\tskillPacks: preset.skillPacks,\n\t\t\t\tproxy: \"none\",\n\t\t\t\tgpu: false,\n\t\t\t\tplatform: \"linux/amd64\",\n\t\t\t\tmonitoring: false,\n\t\t\t});\n\n\t\t\texpect(result.isValid).toBe(true);\n\t\t});\n\t}\n});\n"],"mappings":";;;;;;AAKA,MAAM,aAAa,eAAe;AAElC,SAAS,4BAA4B;AACpC,IAAG,iCAAiC;AACnC,SAAO,WAAW,OAAO,CAAC,uBAAuB,EAAE;GAClD;AAEF,IAAG,mCAAmC;EACrC,MAAM,MAAM,WAAW,KAAK,MAAM,EAAE,GAAG;EACvC,MAAM,YAAY,IAAI,IAAI,IAAI;AAC9B,SAAO,UAAU,KAAK,CAAC,KAAK,IAAI,OAAO;GACtC;AAEF,MAAK,MAAM,UAAU,WACpB,IAAG,6CAA6C,OAAO,GAAG,UAAU;EACnE,MAAM,QAAQ,cAAc,OAAO,GAAG;AACtC,SAAO,MAAM,CAAC,aAAa;AAC3B,SAAO,MAAO,GAAG,CAAC,KAAK,OAAO,GAAG;AACjC,SAAO,MAAO,KAAK,CAAC,KAAK,OAAO,KAAK;AACrC,SAAO,MAAO,SAAS,CAAC,QAAQ,OAAO,SAAS;AAChD,SAAO,MAAO,WAAW,CAAC,QAAQ,OAAO,WAAW;GACnD;AAGH,MAAK,MAAM,UAAU,WACpB,IAAG,WAAW,OAAO,GAAG,wCAAwC;EAC/D,MAAM,SAAS,SAAS;GACvB,aAAa;GACb,UAAU,OAAO;GACjB,YAAY,OAAO;GACnB,aAAa,EAAE;GACf,aAAa,EAAE;GACf,OAAO;GACP,KAAK;GACL,UAAU;GACV,YAAY;GACZ,gBAAgB;GAChB,iBAAiB;GACjB,iBAAiB;GACjB,YAAY;GACZ,CAAC;AAEF,SAAO,OAAO,MAAM,sBAAsB,CAAC,aAAa;AACxD,SAAO,OAAO,MAAM,gBAAgB,CAAC,aAAa;AAClD,SAAO,OAAO,SAAS,aAAa,CAAC,gBAAgB,EAAE;EAEvD,MAAM,iBAAiB,OAAO,MAAM;EACpC,MAAM,SAAS,KAAK,MAAM,eAAe;AACzC,SAAO,OAAO,CAAC,aAAa;AAC5B,SAAO,OAAO,SAAS,CAAC,aAAa;GACpC;AAGH,MAAK,MAAM,UAAU,WACpB,IAAG,WAAW,OAAO,GAAG,kCAAkC;EACzD,MAAM,SAAS,QAAQ;GACtB,UAAU,OAAO;GACjB,YAAY,OAAO;GACnB,OAAO;GACP,KAAK;GACL,UAAU;GACV,YAAY;GACZ,CAAC;AAEF,SAAO,OAAO,QAAQ,CAAC,KAAK,KAAK;GAChC;EAEF"}
1
+ {"version":3,"file":"presets.test.mjs","names":[],"sources":["../../src/presets/presets.test.ts"],"sourcesContent":["import * as yaml from \"yaml\";\nimport { generate } from \"../generate.js\";\nimport { getAllPresets, getPresetById } from \"../presets/registry.js\";\nimport { resolve } from \"../resolver.js\";\n\nconst allPresets = getAllPresets();\n\ndescribe(\"preset smoke tests\", () => {\n\tit(\"all presets are defined\", () => {\n\t\texpect(allPresets.length).toBeGreaterThanOrEqual(5);\n\t});\n\n\tit(\"all preset IDs are unique\", () => {\n\t\tconst ids = allPresets.map((p) => p.id);\n\t\tconst uniqueIds = new Set(ids);\n\t\texpect(uniqueIds.size).toBe(ids.length);\n\t});\n\n\tfor (const preset of allPresets) {\n\t\tit(`getPresetById returns correct preset for \"${preset.id}\"`, () => {\n\t\t\tconst found = getPresetById(preset.id);\n\t\t\texpect(found).toBeDefined();\n\t\t\texpect(found!.id).toBe(preset.id);\n\t\t\texpect(found!.name).toBe(preset.name);\n\t\t\texpect(found!.services).toEqual(preset.services);\n\t\t\texpect(found!.skillPacks).toEqual(preset.skillPacks);\n\t\t});\n\t}\n\n\tfor (const preset of allPresets) {\n\t\tit(`preset \"${preset.id}\" generates valid configuration`, () => {\n\t\t\tconst result = generate({\n\t\t\t\tprojectName: \"test-project\",\n\t\t\t\tservices: preset.services,\n\t\t\t\tskillPacks: preset.skillPacks,\n\t\t\t\taiProviders: [],\n\t\t\t\tgsdRuntimes: [],\n\t\t\t\tproxy: \"none\",\n\t\t\t\tgpu: false,\n\t\t\t\tplatform: \"linux/amd64\",\n\t\t\t\tdeployment: \"local\",\n\t\t\t\tdeploymentType: \"docker\",\n\t\t\t\tgenerateSecrets: false,\n\t\t\t\topenclawVersion: \"latest\",\n\t\t\t\tmonitoring: false,\n\t\t\t\topenclawImage: \"official\",\n\t\t\t\topenclawInstallMethod: \"docker\",\n\t\t\t\tdeployTarget: \"local\",\n\t\t\t\thardened: false,\n\t\t\t});\n\n\t\t\texpect(result.files[\"docker-compose.yml\"]).toBeDefined();\n\t\t\texpect(result.files[\".env.example\"]).toBeDefined();\n\t\t\texpect(result.metadata.serviceCount).toBeGreaterThan(0);\n\n\t\t\tconst composeContent = result.files[\"docker-compose.yml\"]!;\n\t\t\tconst parsed = yaml.parse(composeContent);\n\t\t\texpect(parsed).toBeDefined();\n\t\t\texpect(parsed.services).toBeDefined();\n\t\t});\n\t}\n\n\tfor (const preset of allPresets) {\n\t\tit(`preset \"${preset.id}\" resolves without errors`, () => {\n\t\t\tconst result = resolve({\n\t\t\t\tservices: preset.services,\n\t\t\t\tskillPacks: preset.skillPacks,\n\t\t\t\tproxy: \"none\",\n\t\t\t\tgpu: false,\n\t\t\t\tplatform: \"linux/amd64\",\n\t\t\t\tmonitoring: false,\n\t\t\t});\n\n\t\t\texpect(result.isValid).toBe(true);\n\t\t});\n\t}\n});\n"],"mappings":";;;;;AAKA,MAAM,aAAa,eAAe;AAElC,SAAS,4BAA4B;AACpC,IAAG,iCAAiC;AACnC,SAAO,WAAW,OAAO,CAAC,uBAAuB,EAAE;GAClD;AAEF,IAAG,mCAAmC;EACrC,MAAM,MAAM,WAAW,KAAK,MAAM,EAAE,GAAG;EACvC,MAAM,YAAY,IAAI,IAAI,IAAI;AAC9B,SAAO,UAAU,KAAK,CAAC,KAAK,IAAI,OAAO;GACtC;AAEF,MAAK,MAAM,UAAU,WACpB,IAAG,6CAA6C,OAAO,GAAG,UAAU;EACnE,MAAM,QAAQ,cAAc,OAAO,GAAG;AACtC,SAAO,MAAM,CAAC,aAAa;AAC3B,SAAO,MAAO,GAAG,CAAC,KAAK,OAAO,GAAG;AACjC,SAAO,MAAO,KAAK,CAAC,KAAK,OAAO,KAAK;AACrC,SAAO,MAAO,SAAS,CAAC,QAAQ,OAAO,SAAS;AAChD,SAAO,MAAO,WAAW,CAAC,QAAQ,OAAO,WAAW;GACnD;AAGH,MAAK,MAAM,UAAU,WACpB,IAAG,WAAW,OAAO,GAAG,wCAAwC;EAC/D,MAAM,SAAS,SAAS;GACvB,aAAa;GACb,UAAU,OAAO;GACjB,YAAY,OAAO;GACnB,aAAa,EAAE;GACf,aAAa,EAAE;GACf,OAAO;GACP,KAAK;GACL,UAAU;GACV,YAAY;GACZ,gBAAgB;GAChB,iBAAiB;GACjB,iBAAiB;GACjB,YAAY;GACZ,eAAe;GACf,uBAAuB;GACvB,cAAc;GACd,UAAU;GACV,CAAC;AAEF,SAAO,OAAO,MAAM,sBAAsB,CAAC,aAAa;AACxD,SAAO,OAAO,MAAM,gBAAgB,CAAC,aAAa;AAClD,SAAO,OAAO,SAAS,aAAa,CAAC,gBAAgB,EAAE;EAEvD,MAAM,iBAAiB,OAAO,MAAM;EACpC,MAAM,SAAS,KAAK,MAAM,eAAe;AACzC,SAAO,OAAO,CAAC,aAAa;AAC5B,SAAO,OAAO,SAAS,CAAC,aAAa;GACpC;AAGH,MAAK,MAAM,UAAU,WACpB,IAAG,WAAW,OAAO,GAAG,kCAAkC;EACzD,MAAM,SAAS,QAAQ;GACtB,UAAU,OAAO;GACjB,YAAY,OAAO;GACnB,OAAO;GACP,KAAK;GACL,UAAU;GACV,YAAY;GACZ,CAAC;AAEF,SAAO,OAAO,QAAQ,CAAC,KAAK,KAAK;GAChC;EAEF"}
@@ -1,5 +1,4 @@
1
- Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
-
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
3
2
  //#region src/presets/registry.ts
4
3
  const presets = [
5
4
  {
@@ -171,6 +170,156 @@ const presets = [
171
170
  ],
172
171
  skillPacks: [],
173
172
  estimatedMemoryMB: 2048
173
+ },
174
+ {
175
+ id: "backend-platform",
176
+ name: "Backend Platform",
177
+ description: "BaaS stack with Appwrite, MariaDB, Redis, RabbitMQ for auth, storage, and async workflows",
178
+ services: [
179
+ "appwrite",
180
+ "mariadb",
181
+ "redis",
182
+ "rabbitmq",
183
+ "caddy"
184
+ ],
185
+ skillPacks: ["appwrite-platform"],
186
+ estimatedMemoryMB: 3072
187
+ },
188
+ {
189
+ id: "rag-platform",
190
+ name: "RAG Platform",
191
+ description: "RAGFlow with MySQL, Redis, MinIO, OpenSearch for knowledge ingestion and grounded AI assistants",
192
+ services: [
193
+ "ragflow",
194
+ "mysql",
195
+ "redis",
196
+ "minio",
197
+ "opensearch",
198
+ "caddy"
199
+ ],
200
+ skillPacks: ["ragflow-platform"],
201
+ estimatedMemoryMB: 6144
202
+ },
203
+ {
204
+ id: "zero-trust",
205
+ name: "Zero-Trust Security",
206
+ description: "SSO, secrets management, and access control with Authelia, Keycloak, and Infisical",
207
+ services: [
208
+ "authelia",
209
+ "keycloak",
210
+ "infisical",
211
+ "postgresql",
212
+ "redis",
213
+ "caddy"
214
+ ],
215
+ skillPacks: ["authelia-security"],
216
+ estimatedMemoryMB: 3584
217
+ },
218
+ {
219
+ id: "content-platform",
220
+ name: "Content Platform",
221
+ description: "CMS and newsletter stack with Directus, Strapi, Listmonk, and Stirling PDF",
222
+ services: [
223
+ "directus",
224
+ "strapi",
225
+ "listmonk",
226
+ "postgresql",
227
+ "redis",
228
+ "stirling-pdf",
229
+ "caddy"
230
+ ],
231
+ skillPacks: ["cms-stack"],
232
+ estimatedMemoryMB: 3584
233
+ },
234
+ {
235
+ id: "ai-orchestrator",
236
+ name: "AI Orchestrator",
237
+ description: "Langflow and Firecrawl for building and deploying AI workflows",
238
+ services: [
239
+ "langflow",
240
+ "firecrawl",
241
+ "postgresql",
242
+ "redis",
243
+ "caddy"
244
+ ],
245
+ skillPacks: ["ai-agent-orchestra"],
246
+ estimatedMemoryMB: 3072
247
+ },
248
+ {
249
+ id: "support-desk",
250
+ name: "Support Desk",
251
+ description: "AI-powered customer support with live chat, LLM observability, and ticket management",
252
+ services: [
253
+ "chatwoot",
254
+ "chatwoot-worker",
255
+ "langfuse",
256
+ "redis",
257
+ "postgresql",
258
+ "caddy"
259
+ ],
260
+ skillPacks: ["customer-support"],
261
+ estimatedMemoryMB: 3072
262
+ },
263
+ {
264
+ id: "sales-machine",
265
+ name: "Sales Machine",
266
+ description: "CRM-driven sales pipeline with email marketing, newsletters, and workflow automation",
267
+ services: [
268
+ "twenty",
269
+ "mautic",
270
+ "listmonk",
271
+ "n8n",
272
+ "postgresql",
273
+ "mysql",
274
+ "redis",
275
+ "caddy"
276
+ ],
277
+ skillPacks: ["sales-pipeline"],
278
+ estimatedMemoryMB: 4096
279
+ },
280
+ {
281
+ id: "data-warehouse",
282
+ name: "Data Warehouse",
283
+ description: "End-to-end data pipeline with DAG orchestration, 300+ connectors, and monitoring",
284
+ services: [
285
+ "airflow",
286
+ "airbyte",
287
+ "postgresql",
288
+ "grafana",
289
+ "prometheus",
290
+ "redis",
291
+ "caddy"
292
+ ],
293
+ skillPacks: ["data-pipeline"],
294
+ estimatedMemoryMB: 4096
295
+ },
296
+ {
297
+ id: "voice-center",
298
+ name: "Voice Center",
299
+ description: "AI voice agent stack with programmable telephony, transcription, and real-time comms",
300
+ services: [
301
+ "fonoster",
302
+ "livekit",
303
+ "whisper",
304
+ "redis",
305
+ "caddy"
306
+ ],
307
+ skillPacks: ["voice-agent"],
308
+ estimatedMemoryMB: 3072
309
+ },
310
+ {
311
+ id: "shopfront",
312
+ name: "Shopfront",
313
+ description: "AI-managed headless e-commerce with product management and object storage",
314
+ services: [
315
+ "medusa",
316
+ "minio",
317
+ "postgresql",
318
+ "redis",
319
+ "caddy"
320
+ ],
321
+ skillPacks: ["ecommerce-ops"],
322
+ estimatedMemoryMB: 2560
174
323
  }
175
324
  ];
176
325
  const presetMap = /* @__PURE__ */ new Map();
@@ -185,9 +334,9 @@ function getPresetById(id) {
185
334
  function getAllPresets() {
186
335
  return [...presets];
187
336
  }
188
-
189
337
  //#endregion
190
338
  exports.getAllPresets = getAllPresets;
191
339
  exports.getPresetById = getPresetById;
192
340
  exports.presetRegistry = presetRegistry;
341
+
193
342
  //# sourceMappingURL=registry.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry.cjs","names":[],"sources":["../../src/presets/registry.ts"],"sourcesContent":["import type { Preset } from \"../types.js\";\n\nconst presets: Preset[] = [\n\t{\n\t\tid: \"minimal\",\n\t\tname: \"Minimal\",\n\t\tdescription: \"OpenClaw + Redis for caching and session management\",\n\t\tservices: [\"redis\", \"caddy\"],\n\t\tskillPacks: [],\n\t\testimatedMemoryMB: 1024,\n\t},\n\t{\n\t\tid: \"creator\",\n\t\tname: \"Creator\",\n\t\tdescription: \"Full media creation stack with FFmpeg, Remotion, and MinIO storage\",\n\t\tservices: [\"ffmpeg\", \"remotion\", \"minio\", \"redis\", \"caddy\"],\n\t\tskillPacks: [\"video-creator\"],\n\t\testimatedMemoryMB: 2048,\n\t},\n\t{\n\t\tid: \"researcher\",\n\t\tname: \"Researcher\",\n\t\tdescription: \"Research agent with vector search, web scraping, and meta search\",\n\t\tservices: [\"qdrant\", \"searxng\", \"browserless\", \"redis\", \"caddy\", \"postgresql\"],\n\t\tskillPacks: [\"research-agent\"],\n\t\testimatedMemoryMB: 2560,\n\t},\n\t{\n\t\tid: \"devops\",\n\t\tname: \"DevOps\",\n\t\tdescription: \"Full monitoring and automation stack with n8n, Grafana, and Uptime Kuma\",\n\t\tservices: [\"n8n\", \"postgresql\", \"redis\", \"uptime-kuma\", \"grafana\", \"prometheus\", \"caddy\"],\n\t\tskillPacks: [\"dev-ops\"],\n\t\testimatedMemoryMB: 3072,\n\t},\n\t{\n\t\tid: \"full\",\n\t\tname: \"Full Stack\",\n\t\tdescription: \"Everything enabled — all services and skill packs\",\n\t\tservices: [\n\t\t\t\"redis\",\n\t\t\t\"postgresql\",\n\t\t\t\"qdrant\",\n\t\t\t\"n8n\",\n\t\t\t\"ffmpeg\",\n\t\t\t\"remotion\",\n\t\t\t\"minio\",\n\t\t\t\"caddy\",\n\t\t\t\"browserless\",\n\t\t\t\"searxng\",\n\t\t\t\"meilisearch\",\n\t\t\t\"uptime-kuma\",\n\t\t\t\"grafana\",\n\t\t\t\"prometheus\",\n\t\t\t\"ollama\",\n\t\t\t\"whisper\",\n\t\t\t\"gotify\",\n\t\t],\n\t\tskillPacks: [\n\t\t\t\"video-creator\",\n\t\t\t\"research-agent\",\n\t\t\t\"social-media\",\n\t\t\t\"dev-ops\",\n\t\t\t\"knowledge-base\",\n\t\t\t\"local-ai\",\n\t\t],\n\t\testimatedMemoryMB: 8192,\n\t},\n\t{\n\t\tid: \"content-creator\",\n\t\tname: \"Content Creator\",\n\t\tdescription: \"Social media scheduling with Postiz, media processing, and analytics\",\n\t\tservices: [\"postiz\", \"ffmpeg\", \"minio\", \"redis\", \"postgresql\", \"umami\", \"caddy\"],\n\t\tskillPacks: [\"content-creator\"],\n\t\testimatedMemoryMB: 2048,\n\t},\n\t{\n\t\tid: \"ai-playground\",\n\t\tname: \"AI Playground\",\n\t\tdescription: \"Local AI stack with Ollama, Open WebUI, LiteLLM gateway, and document chat\",\n\t\tservices: [\"ollama\", \"open-webui\", \"litellm\", \"anything-llm\", \"redis\", \"caddy\"],\n\t\tskillPacks: [\"ai-playground\"],\n\t\testimatedMemoryMB: 4096,\n\t},\n\t{\n\t\tid: \"ai-powerhouse\",\n\t\tname: \"AI Powerhouse\",\n\t\tdescription: \"Local AI stack with Ollama, Open WebUI, LiteLLM gateway, and document chat\",\n\t\tservices: [\n\t\t\t\"ollama\",\n\t\t\t\"redis\",\n\t\t\t\"qdrant\",\n\t\t\t\"minio\",\n\t\t\t\"litellm\",\n\t\t\t\"anything-llm\",\n\t\t\t\"n8n\",\n\t\t\t\"postgresql\",\n\t\t\t\"caddy\",\n\t\t\t\"open-webui\",\n\t\t\t\"searxng\",\n\t\t],\n\t\tskillPacks: [\"ai-playground\"],\n\t\testimatedMemoryMB: 4096,\n\t},\n\t{\n\t\tid: \"coding-team\",\n\t\tname: \"Coding Team\",\n\t\tdescription: \"AI development environment with coding agents, Git, and browser IDE\",\n\t\tservices: [\"claude-code\", \"opencode\", \"gitea\", \"code-server\", \"redis\", \"caddy\"],\n\t\tskillPacks: [\"coding-team\"],\n\t\testimatedMemoryMB: 2560,\n\t},\n\t{\n\t\tid: \"lasuite-meet\",\n\t\tname: \"La Suite Meet\",\n\t\tdescription: \"Open-source video conferencing from La Suite numérique (Django + LiveKit)\",\n\t\tservices: [\n\t\t\t\"postgresql\",\n\t\t\t\"redis\",\n\t\t\t\"livekit\",\n\t\t\t\"lasuite-meet-backend\",\n\t\t\t\"lasuite-meet-frontend\",\n\t\t\t\"lasuite-meet-agents\",\n\t\t\t\"whisper\",\n\t\t\t\"ollama\",\n\t\t\t\"caddy\",\n\t\t],\n\t\tskillPacks: [],\n\t\testimatedMemoryMB: 2048,\n\t},\n];\n\nconst presetMap = new Map<string, Preset>();\nfor (const preset of presets) {\n\tif (presetMap.has(preset.id)) {\n\t\tthrow new Error(`Duplicate preset ID: \"${preset.id}\"`);\n\t}\n\tpresetMap.set(preset.id, preset);\n}\n\nexport const presetRegistry: ReadonlyMap<string, Preset> = presetMap;\n\nexport function getPresetById(id: string): Preset | undefined {\n\treturn presetMap.get(id);\n}\n\nexport function getAllPresets(): Preset[] {\n\treturn [...presets];\n}\n"],"mappings":";;;AAEA,MAAM,UAAoB;CACzB;EACC,IAAI;EACJ,MAAM;EACN,aAAa;EACb,UAAU,CAAC,SAAS,QAAQ;EAC5B,YAAY,EAAE;EACd,mBAAmB;EACnB;CACD;EACC,IAAI;EACJ,MAAM;EACN,aAAa;EACb,UAAU;GAAC;GAAU;GAAY;GAAS;GAAS;GAAQ;EAC3D,YAAY,CAAC,gBAAgB;EAC7B,mBAAmB;EACnB;CACD;EACC,IAAI;EACJ,MAAM;EACN,aAAa;EACb,UAAU;GAAC;GAAU;GAAW;GAAe;GAAS;GAAS;GAAa;EAC9E,YAAY,CAAC,iBAAiB;EAC9B,mBAAmB;EACnB;CACD;EACC,IAAI;EACJ,MAAM;EACN,aAAa;EACb,UAAU;GAAC;GAAO;GAAc;GAAS;GAAe;GAAW;GAAc;GAAQ;EACzF,YAAY,CAAC,UAAU;EACvB,mBAAmB;EACnB;CACD;EACC,IAAI;EACJ,MAAM;EACN,aAAa;EACb,UAAU;GACT;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD,YAAY;GACX;GACA;GACA;GACA;GACA;GACA;GACA;EACD,mBAAmB;EACnB;CACD;EACC,IAAI;EACJ,MAAM;EACN,aAAa;EACb,UAAU;GAAC;GAAU;GAAU;GAAS;GAAS;GAAc;GAAS;GAAQ;EAChF,YAAY,CAAC,kBAAkB;EAC/B,mBAAmB;EACnB;CACD;EACC,IAAI;EACJ,MAAM;EACN,aAAa;EACb,UAAU;GAAC;GAAU;GAAc;GAAW;GAAgB;GAAS;GAAQ;EAC/E,YAAY,CAAC,gBAAgB;EAC7B,mBAAmB;EACnB;CACD;EACC,IAAI;EACJ,MAAM;EACN,aAAa;EACb,UAAU;GACT;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD,YAAY,CAAC,gBAAgB;EAC7B,mBAAmB;EACnB;CACD;EACC,IAAI;EACJ,MAAM;EACN,aAAa;EACb,UAAU;GAAC;GAAe;GAAY;GAAS;GAAe;GAAS;GAAQ;EAC/E,YAAY,CAAC,cAAc;EAC3B,mBAAmB;EACnB;CACD;EACC,IAAI;EACJ,MAAM;EACN,aAAa;EACb,UAAU;GACT;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD,YAAY,EAAE;EACd,mBAAmB;EACnB;CACD;AAED,MAAM,4BAAY,IAAI,KAAqB;AAC3C,KAAK,MAAM,UAAU,SAAS;AAC7B,KAAI,UAAU,IAAI,OAAO,GAAG,CAC3B,OAAM,IAAI,MAAM,yBAAyB,OAAO,GAAG,GAAG;AAEvD,WAAU,IAAI,OAAO,IAAI,OAAO;;AAGjC,MAAa,iBAA8C;AAE3D,SAAgB,cAAc,IAAgC;AAC7D,QAAO,UAAU,IAAI,GAAG;;AAGzB,SAAgB,gBAA0B;AACzC,QAAO,CAAC,GAAG,QAAQ"}
1
+ {"version":3,"file":"registry.cjs","names":[],"sources":["../../src/presets/registry.ts"],"sourcesContent":["import type { Preset } from \"../types.js\";\n\nconst presets: Preset[] = [\n\t{\n\t\tid: \"minimal\",\n\t\tname: \"Minimal\",\n\t\tdescription: \"OpenClaw + Redis for caching and session management\",\n\t\tservices: [\"redis\", \"caddy\"],\n\t\tskillPacks: [],\n\t\testimatedMemoryMB: 1024,\n\t},\n\t{\n\t\tid: \"creator\",\n\t\tname: \"Creator\",\n\t\tdescription: \"Full media creation stack with FFmpeg, Remotion, and MinIO storage\",\n\t\tservices: [\"ffmpeg\", \"remotion\", \"minio\", \"redis\", \"caddy\"],\n\t\tskillPacks: [\"video-creator\"],\n\t\testimatedMemoryMB: 2048,\n\t},\n\t{\n\t\tid: \"researcher\",\n\t\tname: \"Researcher\",\n\t\tdescription: \"Research agent with vector search, web scraping, and meta search\",\n\t\tservices: [\"qdrant\", \"searxng\", \"browserless\", \"redis\", \"caddy\", \"postgresql\"],\n\t\tskillPacks: [\"research-agent\"],\n\t\testimatedMemoryMB: 2560,\n\t},\n\t{\n\t\tid: \"devops\",\n\t\tname: \"DevOps\",\n\t\tdescription: \"Full monitoring and automation stack with n8n, Grafana, and Uptime Kuma\",\n\t\tservices: [\"n8n\", \"postgresql\", \"redis\", \"uptime-kuma\", \"grafana\", \"prometheus\", \"caddy\"],\n\t\tskillPacks: [\"dev-ops\"],\n\t\testimatedMemoryMB: 3072,\n\t},\n\t{\n\t\tid: \"full\",\n\t\tname: \"Full Stack\",\n\t\tdescription: \"Everything enabled — all services and skill packs\",\n\t\tservices: [\n\t\t\t\"redis\",\n\t\t\t\"postgresql\",\n\t\t\t\"qdrant\",\n\t\t\t\"n8n\",\n\t\t\t\"ffmpeg\",\n\t\t\t\"remotion\",\n\t\t\t\"minio\",\n\t\t\t\"caddy\",\n\t\t\t\"browserless\",\n\t\t\t\"searxng\",\n\t\t\t\"meilisearch\",\n\t\t\t\"uptime-kuma\",\n\t\t\t\"grafana\",\n\t\t\t\"prometheus\",\n\t\t\t\"ollama\",\n\t\t\t\"whisper\",\n\t\t\t\"gotify\",\n\t\t],\n\t\tskillPacks: [\n\t\t\t\"video-creator\",\n\t\t\t\"research-agent\",\n\t\t\t\"social-media\",\n\t\t\t\"dev-ops\",\n\t\t\t\"knowledge-base\",\n\t\t\t\"local-ai\",\n\t\t],\n\t\testimatedMemoryMB: 8192,\n\t},\n\t{\n\t\tid: \"content-creator\",\n\t\tname: \"Content Creator\",\n\t\tdescription: \"Social media scheduling with Postiz, media processing, and analytics\",\n\t\tservices: [\"postiz\", \"ffmpeg\", \"minio\", \"redis\", \"postgresql\", \"umami\", \"caddy\"],\n\t\tskillPacks: [\"content-creator\"],\n\t\testimatedMemoryMB: 2048,\n\t},\n\t{\n\t\tid: \"ai-playground\",\n\t\tname: \"AI Playground\",\n\t\tdescription: \"Local AI stack with Ollama, Open WebUI, LiteLLM gateway, and document chat\",\n\t\tservices: [\"ollama\", \"open-webui\", \"litellm\", \"anything-llm\", \"redis\", \"caddy\"],\n\t\tskillPacks: [\"ai-playground\"],\n\t\testimatedMemoryMB: 4096,\n\t},\n\t{\n\t\tid: \"ai-powerhouse\",\n\t\tname: \"AI Powerhouse\",\n\t\tdescription: \"Local AI stack with Ollama, Open WebUI, LiteLLM gateway, and document chat\",\n\t\tservices: [\n\t\t\t\"ollama\",\n\t\t\t\"redis\",\n\t\t\t\"qdrant\",\n\t\t\t\"minio\",\n\t\t\t\"litellm\",\n\t\t\t\"anything-llm\",\n\t\t\t\"n8n\",\n\t\t\t\"postgresql\",\n\t\t\t\"caddy\",\n\t\t\t\"open-webui\",\n\t\t\t\"searxng\",\n\t\t],\n\t\tskillPacks: [\"ai-playground\"],\n\t\testimatedMemoryMB: 4096,\n\t},\n\t{\n\t\tid: \"coding-team\",\n\t\tname: \"Coding Team\",\n\t\tdescription: \"AI development environment with coding agents, Git, and browser IDE\",\n\t\tservices: [\"claude-code\", \"opencode\", \"gitea\", \"code-server\", \"redis\", \"caddy\"],\n\t\tskillPacks: [\"coding-team\"],\n\t\testimatedMemoryMB: 2560,\n\t},\n\t{\n\t\tid: \"lasuite-meet\",\n\t\tname: \"La Suite Meet\",\n\t\tdescription: \"Open-source video conferencing from La Suite numérique (Django + LiveKit)\",\n\t\tservices: [\n\t\t\t\"postgresql\",\n\t\t\t\"redis\",\n\t\t\t\"livekit\",\n\t\t\t\"lasuite-meet-backend\",\n\t\t\t\"lasuite-meet-frontend\",\n\t\t\t\"lasuite-meet-agents\",\n\t\t\t\"whisper\",\n\t\t\t\"ollama\",\n\t\t\t\"caddy\",\n\t\t],\n\t\tskillPacks: [],\n\t\testimatedMemoryMB: 2048,\n\t},\n\t// ── New service presets ─────────────────────────────────────────────────\n\t{\n\t\tid: \"backend-platform\",\n\t\tname: \"Backend Platform\",\n\t\tdescription:\n\t\t\t\"BaaS stack with Appwrite, MariaDB, Redis, RabbitMQ for auth, storage, and async workflows\",\n\t\tservices: [\"appwrite\", \"mariadb\", \"redis\", \"rabbitmq\", \"caddy\"],\n\t\tskillPacks: [\"appwrite-platform\"],\n\t\testimatedMemoryMB: 3072,\n\t},\n\t{\n\t\tid: \"rag-platform\",\n\t\tname: \"RAG Platform\",\n\t\tdescription:\n\t\t\t\"RAGFlow with MySQL, Redis, MinIO, OpenSearch for knowledge ingestion and grounded AI assistants\",\n\t\tservices: [\"ragflow\", \"mysql\", \"redis\", \"minio\", \"opensearch\", \"caddy\"],\n\t\tskillPacks: [\"ragflow-platform\"],\n\t\testimatedMemoryMB: 6144,\n\t},\n\t{\n\t\tid: \"zero-trust\",\n\t\tname: \"Zero-Trust Security\",\n\t\tdescription:\n\t\t\t\"SSO, secrets management, and access control with Authelia, Keycloak, and Infisical\",\n\t\tservices: [\"authelia\", \"keycloak\", \"infisical\", \"postgresql\", \"redis\", \"caddy\"],\n\t\tskillPacks: [\"authelia-security\"],\n\t\testimatedMemoryMB: 3584,\n\t},\n\t{\n\t\tid: \"content-platform\",\n\t\tname: \"Content Platform\",\n\t\tdescription: \"CMS and newsletter stack with Directus, Strapi, Listmonk, and Stirling PDF\",\n\t\tservices: [\"directus\", \"strapi\", \"listmonk\", \"postgresql\", \"redis\", \"stirling-pdf\", \"caddy\"],\n\t\tskillPacks: [\"cms-stack\"],\n\t\testimatedMemoryMB: 3584,\n\t},\n\t{\n\t\tid: \"ai-orchestrator\",\n\t\tname: \"AI Orchestrator\",\n\t\tdescription: \"Langflow and Firecrawl for building and deploying AI workflows\",\n\t\tservices: [\"langflow\", \"firecrawl\", \"postgresql\", \"redis\", \"caddy\"],\n\t\tskillPacks: [\"ai-agent-orchestra\"],\n\t\testimatedMemoryMB: 3072,\n\t},\n\t// ── New Presets (from feature analysis) ───────────────────────────────────\n\t{\n\t\tid: \"support-desk\",\n\t\tname: \"Support Desk\",\n\t\tdescription:\n\t\t\t\"AI-powered customer support with live chat, LLM observability, and ticket management\",\n\t\tservices: [\"chatwoot\", \"chatwoot-worker\", \"langfuse\", \"redis\", \"postgresql\", \"caddy\"],\n\t\tskillPacks: [\"customer-support\"],\n\t\testimatedMemoryMB: 3072,\n\t},\n\t{\n\t\tid: \"sales-machine\",\n\t\tname: \"Sales Machine\",\n\t\tdescription:\n\t\t\t\"CRM-driven sales pipeline with email marketing, newsletters, and workflow automation\",\n\t\tservices: [\"twenty\", \"mautic\", \"listmonk\", \"n8n\", \"postgresql\", \"mysql\", \"redis\", \"caddy\"],\n\t\tskillPacks: [\"sales-pipeline\"],\n\t\testimatedMemoryMB: 4096,\n\t},\n\t{\n\t\tid: \"data-warehouse\",\n\t\tname: \"Data Warehouse\",\n\t\tdescription: \"End-to-end data pipeline with DAG orchestration, 300+ connectors, and monitoring\",\n\t\tservices: [\"airflow\", \"airbyte\", \"postgresql\", \"grafana\", \"prometheus\", \"redis\", \"caddy\"],\n\t\tskillPacks: [\"data-pipeline\"],\n\t\testimatedMemoryMB: 4096,\n\t},\n\t{\n\t\tid: \"voice-center\",\n\t\tname: \"Voice Center\",\n\t\tdescription:\n\t\t\t\"AI voice agent stack with programmable telephony, transcription, and real-time comms\",\n\t\tservices: [\"fonoster\", \"livekit\", \"whisper\", \"redis\", \"caddy\"],\n\t\tskillPacks: [\"voice-agent\"],\n\t\testimatedMemoryMB: 3072,\n\t},\n\t{\n\t\tid: \"shopfront\",\n\t\tname: \"Shopfront\",\n\t\tdescription: \"AI-managed headless e-commerce with product management and object storage\",\n\t\tservices: [\"medusa\", \"minio\", \"postgresql\", \"redis\", \"caddy\"],\n\t\tskillPacks: [\"ecommerce-ops\"],\n\t\testimatedMemoryMB: 2560,\n\t},\n];\n\nconst presetMap = new Map<string, Preset>();\nfor (const preset of presets) {\n\tif (presetMap.has(preset.id)) {\n\t\tthrow new Error(`Duplicate preset ID: \"${preset.id}\"`);\n\t}\n\tpresetMap.set(preset.id, preset);\n}\n\nexport const presetRegistry: ReadonlyMap<string, Preset> = presetMap;\n\nexport function getPresetById(id: string): Preset | undefined {\n\treturn presetMap.get(id);\n}\n\nexport function getAllPresets(): Preset[] {\n\treturn [...presets];\n}\n"],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.cts","names":[],"sources":["../../src/presets/registry.ts"],"mappings":";;;cA4Ia,cAAA,EAAgB,WAAA,SAAoB,MAAA;AAAA,iBAEjC,aAAA,CAAc,EAAA,WAAa,MAAA;AAAA,iBAI3B,aAAA,CAAA,GAAiB,MAAA"}
1
+ {"version":3,"file":"registry.d.cts","names":[],"sources":["../../src/presets/registry.ts"],"mappings":";;;cAoOa,cAAA,EAAgB,WAAA,SAAoB,MAAA;AAAA,iBAEjC,aAAA,CAAc,EAAA,WAAa,MAAA;AAAA,iBAI3B,aAAA,CAAA,GAAiB,MAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"registry.d.mts","names":[],"sources":["../../src/presets/registry.ts"],"mappings":";;;cA4Ia,cAAA,EAAgB,WAAA,SAAoB,MAAA;AAAA,iBAEjC,aAAA,CAAc,EAAA,WAAa,MAAA;AAAA,iBAI3B,aAAA,CAAA,GAAiB,MAAA"}
1
+ {"version":3,"file":"registry.d.mts","names":[],"sources":["../../src/presets/registry.ts"],"mappings":";;;cAoOa,cAAA,EAAgB,WAAA,SAAoB,MAAA;AAAA,iBAEjC,aAAA,CAAc,EAAA,WAAa,MAAA;AAAA,iBAI3B,aAAA,CAAA,GAAiB,MAAA"}
@@ -169,6 +169,156 @@ const presets = [
169
169
  ],
170
170
  skillPacks: [],
171
171
  estimatedMemoryMB: 2048
172
+ },
173
+ {
174
+ id: "backend-platform",
175
+ name: "Backend Platform",
176
+ description: "BaaS stack with Appwrite, MariaDB, Redis, RabbitMQ for auth, storage, and async workflows",
177
+ services: [
178
+ "appwrite",
179
+ "mariadb",
180
+ "redis",
181
+ "rabbitmq",
182
+ "caddy"
183
+ ],
184
+ skillPacks: ["appwrite-platform"],
185
+ estimatedMemoryMB: 3072
186
+ },
187
+ {
188
+ id: "rag-platform",
189
+ name: "RAG Platform",
190
+ description: "RAGFlow with MySQL, Redis, MinIO, OpenSearch for knowledge ingestion and grounded AI assistants",
191
+ services: [
192
+ "ragflow",
193
+ "mysql",
194
+ "redis",
195
+ "minio",
196
+ "opensearch",
197
+ "caddy"
198
+ ],
199
+ skillPacks: ["ragflow-platform"],
200
+ estimatedMemoryMB: 6144
201
+ },
202
+ {
203
+ id: "zero-trust",
204
+ name: "Zero-Trust Security",
205
+ description: "SSO, secrets management, and access control with Authelia, Keycloak, and Infisical",
206
+ services: [
207
+ "authelia",
208
+ "keycloak",
209
+ "infisical",
210
+ "postgresql",
211
+ "redis",
212
+ "caddy"
213
+ ],
214
+ skillPacks: ["authelia-security"],
215
+ estimatedMemoryMB: 3584
216
+ },
217
+ {
218
+ id: "content-platform",
219
+ name: "Content Platform",
220
+ description: "CMS and newsletter stack with Directus, Strapi, Listmonk, and Stirling PDF",
221
+ services: [
222
+ "directus",
223
+ "strapi",
224
+ "listmonk",
225
+ "postgresql",
226
+ "redis",
227
+ "stirling-pdf",
228
+ "caddy"
229
+ ],
230
+ skillPacks: ["cms-stack"],
231
+ estimatedMemoryMB: 3584
232
+ },
233
+ {
234
+ id: "ai-orchestrator",
235
+ name: "AI Orchestrator",
236
+ description: "Langflow and Firecrawl for building and deploying AI workflows",
237
+ services: [
238
+ "langflow",
239
+ "firecrawl",
240
+ "postgresql",
241
+ "redis",
242
+ "caddy"
243
+ ],
244
+ skillPacks: ["ai-agent-orchestra"],
245
+ estimatedMemoryMB: 3072
246
+ },
247
+ {
248
+ id: "support-desk",
249
+ name: "Support Desk",
250
+ description: "AI-powered customer support with live chat, LLM observability, and ticket management",
251
+ services: [
252
+ "chatwoot",
253
+ "chatwoot-worker",
254
+ "langfuse",
255
+ "redis",
256
+ "postgresql",
257
+ "caddy"
258
+ ],
259
+ skillPacks: ["customer-support"],
260
+ estimatedMemoryMB: 3072
261
+ },
262
+ {
263
+ id: "sales-machine",
264
+ name: "Sales Machine",
265
+ description: "CRM-driven sales pipeline with email marketing, newsletters, and workflow automation",
266
+ services: [
267
+ "twenty",
268
+ "mautic",
269
+ "listmonk",
270
+ "n8n",
271
+ "postgresql",
272
+ "mysql",
273
+ "redis",
274
+ "caddy"
275
+ ],
276
+ skillPacks: ["sales-pipeline"],
277
+ estimatedMemoryMB: 4096
278
+ },
279
+ {
280
+ id: "data-warehouse",
281
+ name: "Data Warehouse",
282
+ description: "End-to-end data pipeline with DAG orchestration, 300+ connectors, and monitoring",
283
+ services: [
284
+ "airflow",
285
+ "airbyte",
286
+ "postgresql",
287
+ "grafana",
288
+ "prometheus",
289
+ "redis",
290
+ "caddy"
291
+ ],
292
+ skillPacks: ["data-pipeline"],
293
+ estimatedMemoryMB: 4096
294
+ },
295
+ {
296
+ id: "voice-center",
297
+ name: "Voice Center",
298
+ description: "AI voice agent stack with programmable telephony, transcription, and real-time comms",
299
+ services: [
300
+ "fonoster",
301
+ "livekit",
302
+ "whisper",
303
+ "redis",
304
+ "caddy"
305
+ ],
306
+ skillPacks: ["voice-agent"],
307
+ estimatedMemoryMB: 3072
308
+ },
309
+ {
310
+ id: "shopfront",
311
+ name: "Shopfront",
312
+ description: "AI-managed headless e-commerce with product management and object storage",
313
+ services: [
314
+ "medusa",
315
+ "minio",
316
+ "postgresql",
317
+ "redis",
318
+ "caddy"
319
+ ],
320
+ skillPacks: ["ecommerce-ops"],
321
+ estimatedMemoryMB: 2560
172
322
  }
173
323
  ];
174
324
  const presetMap = /* @__PURE__ */ new Map();
@@ -183,7 +333,7 @@ function getPresetById(id) {
183
333
  function getAllPresets() {
184
334
  return [...presets];
185
335
  }
186
-
187
336
  //#endregion
188
337
  export { getAllPresets, getPresetById, presetRegistry };
338
+
189
339
  //# sourceMappingURL=registry.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry.mjs","names":[],"sources":["../../src/presets/registry.ts"],"sourcesContent":["import type { Preset } from \"../types.js\";\n\nconst presets: Preset[] = [\n\t{\n\t\tid: \"minimal\",\n\t\tname: \"Minimal\",\n\t\tdescription: \"OpenClaw + Redis for caching and session management\",\n\t\tservices: [\"redis\", \"caddy\"],\n\t\tskillPacks: [],\n\t\testimatedMemoryMB: 1024,\n\t},\n\t{\n\t\tid: \"creator\",\n\t\tname: \"Creator\",\n\t\tdescription: \"Full media creation stack with FFmpeg, Remotion, and MinIO storage\",\n\t\tservices: [\"ffmpeg\", \"remotion\", \"minio\", \"redis\", \"caddy\"],\n\t\tskillPacks: [\"video-creator\"],\n\t\testimatedMemoryMB: 2048,\n\t},\n\t{\n\t\tid: \"researcher\",\n\t\tname: \"Researcher\",\n\t\tdescription: \"Research agent with vector search, web scraping, and meta search\",\n\t\tservices: [\"qdrant\", \"searxng\", \"browserless\", \"redis\", \"caddy\", \"postgresql\"],\n\t\tskillPacks: [\"research-agent\"],\n\t\testimatedMemoryMB: 2560,\n\t},\n\t{\n\t\tid: \"devops\",\n\t\tname: \"DevOps\",\n\t\tdescription: \"Full monitoring and automation stack with n8n, Grafana, and Uptime Kuma\",\n\t\tservices: [\"n8n\", \"postgresql\", \"redis\", \"uptime-kuma\", \"grafana\", \"prometheus\", \"caddy\"],\n\t\tskillPacks: [\"dev-ops\"],\n\t\testimatedMemoryMB: 3072,\n\t},\n\t{\n\t\tid: \"full\",\n\t\tname: \"Full Stack\",\n\t\tdescription: \"Everything enabled — all services and skill packs\",\n\t\tservices: [\n\t\t\t\"redis\",\n\t\t\t\"postgresql\",\n\t\t\t\"qdrant\",\n\t\t\t\"n8n\",\n\t\t\t\"ffmpeg\",\n\t\t\t\"remotion\",\n\t\t\t\"minio\",\n\t\t\t\"caddy\",\n\t\t\t\"browserless\",\n\t\t\t\"searxng\",\n\t\t\t\"meilisearch\",\n\t\t\t\"uptime-kuma\",\n\t\t\t\"grafana\",\n\t\t\t\"prometheus\",\n\t\t\t\"ollama\",\n\t\t\t\"whisper\",\n\t\t\t\"gotify\",\n\t\t],\n\t\tskillPacks: [\n\t\t\t\"video-creator\",\n\t\t\t\"research-agent\",\n\t\t\t\"social-media\",\n\t\t\t\"dev-ops\",\n\t\t\t\"knowledge-base\",\n\t\t\t\"local-ai\",\n\t\t],\n\t\testimatedMemoryMB: 8192,\n\t},\n\t{\n\t\tid: \"content-creator\",\n\t\tname: \"Content Creator\",\n\t\tdescription: \"Social media scheduling with Postiz, media processing, and analytics\",\n\t\tservices: [\"postiz\", \"ffmpeg\", \"minio\", \"redis\", \"postgresql\", \"umami\", \"caddy\"],\n\t\tskillPacks: [\"content-creator\"],\n\t\testimatedMemoryMB: 2048,\n\t},\n\t{\n\t\tid: \"ai-playground\",\n\t\tname: \"AI Playground\",\n\t\tdescription: \"Local AI stack with Ollama, Open WebUI, LiteLLM gateway, and document chat\",\n\t\tservices: [\"ollama\", \"open-webui\", \"litellm\", \"anything-llm\", \"redis\", \"caddy\"],\n\t\tskillPacks: [\"ai-playground\"],\n\t\testimatedMemoryMB: 4096,\n\t},\n\t{\n\t\tid: \"ai-powerhouse\",\n\t\tname: \"AI Powerhouse\",\n\t\tdescription: \"Local AI stack with Ollama, Open WebUI, LiteLLM gateway, and document chat\",\n\t\tservices: [\n\t\t\t\"ollama\",\n\t\t\t\"redis\",\n\t\t\t\"qdrant\",\n\t\t\t\"minio\",\n\t\t\t\"litellm\",\n\t\t\t\"anything-llm\",\n\t\t\t\"n8n\",\n\t\t\t\"postgresql\",\n\t\t\t\"caddy\",\n\t\t\t\"open-webui\",\n\t\t\t\"searxng\",\n\t\t],\n\t\tskillPacks: [\"ai-playground\"],\n\t\testimatedMemoryMB: 4096,\n\t},\n\t{\n\t\tid: \"coding-team\",\n\t\tname: \"Coding Team\",\n\t\tdescription: \"AI development environment with coding agents, Git, and browser IDE\",\n\t\tservices: [\"claude-code\", \"opencode\", \"gitea\", \"code-server\", \"redis\", \"caddy\"],\n\t\tskillPacks: [\"coding-team\"],\n\t\testimatedMemoryMB: 2560,\n\t},\n\t{\n\t\tid: \"lasuite-meet\",\n\t\tname: \"La Suite Meet\",\n\t\tdescription: \"Open-source video conferencing from La Suite numérique (Django + LiveKit)\",\n\t\tservices: [\n\t\t\t\"postgresql\",\n\t\t\t\"redis\",\n\t\t\t\"livekit\",\n\t\t\t\"lasuite-meet-backend\",\n\t\t\t\"lasuite-meet-frontend\",\n\t\t\t\"lasuite-meet-agents\",\n\t\t\t\"whisper\",\n\t\t\t\"ollama\",\n\t\t\t\"caddy\",\n\t\t],\n\t\tskillPacks: [],\n\t\testimatedMemoryMB: 2048,\n\t},\n];\n\nconst presetMap = new Map<string, Preset>();\nfor (const preset of presets) {\n\tif (presetMap.has(preset.id)) {\n\t\tthrow new Error(`Duplicate preset ID: \"${preset.id}\"`);\n\t}\n\tpresetMap.set(preset.id, preset);\n}\n\nexport const presetRegistry: ReadonlyMap<string, Preset> = presetMap;\n\nexport function getPresetById(id: string): Preset | undefined {\n\treturn presetMap.get(id);\n}\n\nexport function getAllPresets(): Preset[] {\n\treturn [...presets];\n}\n"],"mappings":";AAEA,MAAM,UAAoB;CACzB;EACC,IAAI;EACJ,MAAM;EACN,aAAa;EACb,UAAU,CAAC,SAAS,QAAQ;EAC5B,YAAY,EAAE;EACd,mBAAmB;EACnB;CACD;EACC,IAAI;EACJ,MAAM;EACN,aAAa;EACb,UAAU;GAAC;GAAU;GAAY;GAAS;GAAS;GAAQ;EAC3D,YAAY,CAAC,gBAAgB;EAC7B,mBAAmB;EACnB;CACD;EACC,IAAI;EACJ,MAAM;EACN,aAAa;EACb,UAAU;GAAC;GAAU;GAAW;GAAe;GAAS;GAAS;GAAa;EAC9E,YAAY,CAAC,iBAAiB;EAC9B,mBAAmB;EACnB;CACD;EACC,IAAI;EACJ,MAAM;EACN,aAAa;EACb,UAAU;GAAC;GAAO;GAAc;GAAS;GAAe;GAAW;GAAc;GAAQ;EACzF,YAAY,CAAC,UAAU;EACvB,mBAAmB;EACnB;CACD;EACC,IAAI;EACJ,MAAM;EACN,aAAa;EACb,UAAU;GACT;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD,YAAY;GACX;GACA;GACA;GACA;GACA;GACA;GACA;EACD,mBAAmB;EACnB;CACD;EACC,IAAI;EACJ,MAAM;EACN,aAAa;EACb,UAAU;GAAC;GAAU;GAAU;GAAS;GAAS;GAAc;GAAS;GAAQ;EAChF,YAAY,CAAC,kBAAkB;EAC/B,mBAAmB;EACnB;CACD;EACC,IAAI;EACJ,MAAM;EACN,aAAa;EACb,UAAU;GAAC;GAAU;GAAc;GAAW;GAAgB;GAAS;GAAQ;EAC/E,YAAY,CAAC,gBAAgB;EAC7B,mBAAmB;EACnB;CACD;EACC,IAAI;EACJ,MAAM;EACN,aAAa;EACb,UAAU;GACT;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD,YAAY,CAAC,gBAAgB;EAC7B,mBAAmB;EACnB;CACD;EACC,IAAI;EACJ,MAAM;EACN,aAAa;EACb,UAAU;GAAC;GAAe;GAAY;GAAS;GAAe;GAAS;GAAQ;EAC/E,YAAY,CAAC,cAAc;EAC3B,mBAAmB;EACnB;CACD;EACC,IAAI;EACJ,MAAM;EACN,aAAa;EACb,UAAU;GACT;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD,YAAY,EAAE;EACd,mBAAmB;EACnB;CACD;AAED,MAAM,4BAAY,IAAI,KAAqB;AAC3C,KAAK,MAAM,UAAU,SAAS;AAC7B,KAAI,UAAU,IAAI,OAAO,GAAG,CAC3B,OAAM,IAAI,MAAM,yBAAyB,OAAO,GAAG,GAAG;AAEvD,WAAU,IAAI,OAAO,IAAI,OAAO;;AAGjC,MAAa,iBAA8C;AAE3D,SAAgB,cAAc,IAAgC;AAC7D,QAAO,UAAU,IAAI,GAAG;;AAGzB,SAAgB,gBAA0B;AACzC,QAAO,CAAC,GAAG,QAAQ"}
1
+ {"version":3,"file":"registry.mjs","names":[],"sources":["../../src/presets/registry.ts"],"sourcesContent":["import type { Preset } from \"../types.js\";\n\nconst presets: Preset[] = [\n\t{\n\t\tid: \"minimal\",\n\t\tname: \"Minimal\",\n\t\tdescription: \"OpenClaw + Redis for caching and session management\",\n\t\tservices: [\"redis\", \"caddy\"],\n\t\tskillPacks: [],\n\t\testimatedMemoryMB: 1024,\n\t},\n\t{\n\t\tid: \"creator\",\n\t\tname: \"Creator\",\n\t\tdescription: \"Full media creation stack with FFmpeg, Remotion, and MinIO storage\",\n\t\tservices: [\"ffmpeg\", \"remotion\", \"minio\", \"redis\", \"caddy\"],\n\t\tskillPacks: [\"video-creator\"],\n\t\testimatedMemoryMB: 2048,\n\t},\n\t{\n\t\tid: \"researcher\",\n\t\tname: \"Researcher\",\n\t\tdescription: \"Research agent with vector search, web scraping, and meta search\",\n\t\tservices: [\"qdrant\", \"searxng\", \"browserless\", \"redis\", \"caddy\", \"postgresql\"],\n\t\tskillPacks: [\"research-agent\"],\n\t\testimatedMemoryMB: 2560,\n\t},\n\t{\n\t\tid: \"devops\",\n\t\tname: \"DevOps\",\n\t\tdescription: \"Full monitoring and automation stack with n8n, Grafana, and Uptime Kuma\",\n\t\tservices: [\"n8n\", \"postgresql\", \"redis\", \"uptime-kuma\", \"grafana\", \"prometheus\", \"caddy\"],\n\t\tskillPacks: [\"dev-ops\"],\n\t\testimatedMemoryMB: 3072,\n\t},\n\t{\n\t\tid: \"full\",\n\t\tname: \"Full Stack\",\n\t\tdescription: \"Everything enabled — all services and skill packs\",\n\t\tservices: [\n\t\t\t\"redis\",\n\t\t\t\"postgresql\",\n\t\t\t\"qdrant\",\n\t\t\t\"n8n\",\n\t\t\t\"ffmpeg\",\n\t\t\t\"remotion\",\n\t\t\t\"minio\",\n\t\t\t\"caddy\",\n\t\t\t\"browserless\",\n\t\t\t\"searxng\",\n\t\t\t\"meilisearch\",\n\t\t\t\"uptime-kuma\",\n\t\t\t\"grafana\",\n\t\t\t\"prometheus\",\n\t\t\t\"ollama\",\n\t\t\t\"whisper\",\n\t\t\t\"gotify\",\n\t\t],\n\t\tskillPacks: [\n\t\t\t\"video-creator\",\n\t\t\t\"research-agent\",\n\t\t\t\"social-media\",\n\t\t\t\"dev-ops\",\n\t\t\t\"knowledge-base\",\n\t\t\t\"local-ai\",\n\t\t],\n\t\testimatedMemoryMB: 8192,\n\t},\n\t{\n\t\tid: \"content-creator\",\n\t\tname: \"Content Creator\",\n\t\tdescription: \"Social media scheduling with Postiz, media processing, and analytics\",\n\t\tservices: [\"postiz\", \"ffmpeg\", \"minio\", \"redis\", \"postgresql\", \"umami\", \"caddy\"],\n\t\tskillPacks: [\"content-creator\"],\n\t\testimatedMemoryMB: 2048,\n\t},\n\t{\n\t\tid: \"ai-playground\",\n\t\tname: \"AI Playground\",\n\t\tdescription: \"Local AI stack with Ollama, Open WebUI, LiteLLM gateway, and document chat\",\n\t\tservices: [\"ollama\", \"open-webui\", \"litellm\", \"anything-llm\", \"redis\", \"caddy\"],\n\t\tskillPacks: [\"ai-playground\"],\n\t\testimatedMemoryMB: 4096,\n\t},\n\t{\n\t\tid: \"ai-powerhouse\",\n\t\tname: \"AI Powerhouse\",\n\t\tdescription: \"Local AI stack with Ollama, Open WebUI, LiteLLM gateway, and document chat\",\n\t\tservices: [\n\t\t\t\"ollama\",\n\t\t\t\"redis\",\n\t\t\t\"qdrant\",\n\t\t\t\"minio\",\n\t\t\t\"litellm\",\n\t\t\t\"anything-llm\",\n\t\t\t\"n8n\",\n\t\t\t\"postgresql\",\n\t\t\t\"caddy\",\n\t\t\t\"open-webui\",\n\t\t\t\"searxng\",\n\t\t],\n\t\tskillPacks: [\"ai-playground\"],\n\t\testimatedMemoryMB: 4096,\n\t},\n\t{\n\t\tid: \"coding-team\",\n\t\tname: \"Coding Team\",\n\t\tdescription: \"AI development environment with coding agents, Git, and browser IDE\",\n\t\tservices: [\"claude-code\", \"opencode\", \"gitea\", \"code-server\", \"redis\", \"caddy\"],\n\t\tskillPacks: [\"coding-team\"],\n\t\testimatedMemoryMB: 2560,\n\t},\n\t{\n\t\tid: \"lasuite-meet\",\n\t\tname: \"La Suite Meet\",\n\t\tdescription: \"Open-source video conferencing from La Suite numérique (Django + LiveKit)\",\n\t\tservices: [\n\t\t\t\"postgresql\",\n\t\t\t\"redis\",\n\t\t\t\"livekit\",\n\t\t\t\"lasuite-meet-backend\",\n\t\t\t\"lasuite-meet-frontend\",\n\t\t\t\"lasuite-meet-agents\",\n\t\t\t\"whisper\",\n\t\t\t\"ollama\",\n\t\t\t\"caddy\",\n\t\t],\n\t\tskillPacks: [],\n\t\testimatedMemoryMB: 2048,\n\t},\n\t// ── New service presets ─────────────────────────────────────────────────\n\t{\n\t\tid: \"backend-platform\",\n\t\tname: \"Backend Platform\",\n\t\tdescription:\n\t\t\t\"BaaS stack with Appwrite, MariaDB, Redis, RabbitMQ for auth, storage, and async workflows\",\n\t\tservices: [\"appwrite\", \"mariadb\", \"redis\", \"rabbitmq\", \"caddy\"],\n\t\tskillPacks: [\"appwrite-platform\"],\n\t\testimatedMemoryMB: 3072,\n\t},\n\t{\n\t\tid: \"rag-platform\",\n\t\tname: \"RAG Platform\",\n\t\tdescription:\n\t\t\t\"RAGFlow with MySQL, Redis, MinIO, OpenSearch for knowledge ingestion and grounded AI assistants\",\n\t\tservices: [\"ragflow\", \"mysql\", \"redis\", \"minio\", \"opensearch\", \"caddy\"],\n\t\tskillPacks: [\"ragflow-platform\"],\n\t\testimatedMemoryMB: 6144,\n\t},\n\t{\n\t\tid: \"zero-trust\",\n\t\tname: \"Zero-Trust Security\",\n\t\tdescription:\n\t\t\t\"SSO, secrets management, and access control with Authelia, Keycloak, and Infisical\",\n\t\tservices: [\"authelia\", \"keycloak\", \"infisical\", \"postgresql\", \"redis\", \"caddy\"],\n\t\tskillPacks: [\"authelia-security\"],\n\t\testimatedMemoryMB: 3584,\n\t},\n\t{\n\t\tid: \"content-platform\",\n\t\tname: \"Content Platform\",\n\t\tdescription: \"CMS and newsletter stack with Directus, Strapi, Listmonk, and Stirling PDF\",\n\t\tservices: [\"directus\", \"strapi\", \"listmonk\", \"postgresql\", \"redis\", \"stirling-pdf\", \"caddy\"],\n\t\tskillPacks: [\"cms-stack\"],\n\t\testimatedMemoryMB: 3584,\n\t},\n\t{\n\t\tid: \"ai-orchestrator\",\n\t\tname: \"AI Orchestrator\",\n\t\tdescription: \"Langflow and Firecrawl for building and deploying AI workflows\",\n\t\tservices: [\"langflow\", \"firecrawl\", \"postgresql\", \"redis\", \"caddy\"],\n\t\tskillPacks: [\"ai-agent-orchestra\"],\n\t\testimatedMemoryMB: 3072,\n\t},\n\t// ── New Presets (from feature analysis) ───────────────────────────────────\n\t{\n\t\tid: \"support-desk\",\n\t\tname: \"Support Desk\",\n\t\tdescription:\n\t\t\t\"AI-powered customer support with live chat, LLM observability, and ticket management\",\n\t\tservices: [\"chatwoot\", \"chatwoot-worker\", \"langfuse\", \"redis\", \"postgresql\", \"caddy\"],\n\t\tskillPacks: [\"customer-support\"],\n\t\testimatedMemoryMB: 3072,\n\t},\n\t{\n\t\tid: \"sales-machine\",\n\t\tname: \"Sales Machine\",\n\t\tdescription:\n\t\t\t\"CRM-driven sales pipeline with email marketing, newsletters, and workflow automation\",\n\t\tservices: [\"twenty\", \"mautic\", \"listmonk\", \"n8n\", \"postgresql\", \"mysql\", \"redis\", \"caddy\"],\n\t\tskillPacks: [\"sales-pipeline\"],\n\t\testimatedMemoryMB: 4096,\n\t},\n\t{\n\t\tid: \"data-warehouse\",\n\t\tname: \"Data Warehouse\",\n\t\tdescription: \"End-to-end data pipeline with DAG orchestration, 300+ connectors, and monitoring\",\n\t\tservices: [\"airflow\", \"airbyte\", \"postgresql\", \"grafana\", \"prometheus\", \"redis\", \"caddy\"],\n\t\tskillPacks: [\"data-pipeline\"],\n\t\testimatedMemoryMB: 4096,\n\t},\n\t{\n\t\tid: \"voice-center\",\n\t\tname: \"Voice Center\",\n\t\tdescription:\n\t\t\t\"AI voice agent stack with programmable telephony, transcription, and real-time comms\",\n\t\tservices: [\"fonoster\", \"livekit\", \"whisper\", \"redis\", \"caddy\"],\n\t\tskillPacks: [\"voice-agent\"],\n\t\testimatedMemoryMB: 3072,\n\t},\n\t{\n\t\tid: \"shopfront\",\n\t\tname: \"Shopfront\",\n\t\tdescription: \"AI-managed headless e-commerce with product management and object storage\",\n\t\tservices: [\"medusa\", \"minio\", \"postgresql\", \"redis\", \"caddy\"],\n\t\tskillPacks: [\"ecommerce-ops\"],\n\t\testimatedMemoryMB: 2560,\n\t},\n];\n\nconst presetMap = new Map<string, Preset>();\nfor (const preset of presets) {\n\tif (presetMap.has(preset.id)) {\n\t\tthrow new Error(`Duplicate preset ID: \"${preset.id}\"`);\n\t}\n\tpresetMap.set(preset.id, preset);\n}\n\nexport const presetRegistry: ReadonlyMap<string, Preset> = presetMap;\n\nexport function getPresetById(id: string): Preset | undefined {\n\treturn presetMap.get(id);\n}\n\nexport function getAllPresets(): Preset[] {\n\treturn [...presets];\n}\n"],"mappings":";AAEA,MAAM,UAAoB;CACzB;EACC,IAAI;EACJ,MAAM;EACN,aAAa;EACb,UAAU,CAAC,SAAS,QAAQ;EAC5B,YAAY,EAAE;EACd,mBAAmB;EACnB;CACD;EACC,IAAI;EACJ,MAAM;EACN,aAAa;EACb,UAAU;GAAC;GAAU;GAAY;GAAS;GAAS;GAAQ;EAC3D,YAAY,CAAC,gBAAgB;EAC7B,mBAAmB;EACnB;CACD;EACC,IAAI;EACJ,MAAM;EACN,aAAa;EACb,UAAU;GAAC;GAAU;GAAW;GAAe;GAAS;GAAS;GAAa;EAC9E,YAAY,CAAC,iBAAiB;EAC9B,mBAAmB;EACnB;CACD;EACC,IAAI;EACJ,MAAM;EACN,aAAa;EACb,UAAU;GAAC;GAAO;GAAc;GAAS;GAAe;GAAW;GAAc;GAAQ;EACzF,YAAY,CAAC,UAAU;EACvB,mBAAmB;EACnB;CACD;EACC,IAAI;EACJ,MAAM;EACN,aAAa;EACb,UAAU;GACT;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD,YAAY;GACX;GACA;GACA;GACA;GACA;GACA;GACA;EACD,mBAAmB;EACnB;CACD;EACC,IAAI;EACJ,MAAM;EACN,aAAa;EACb,UAAU;GAAC;GAAU;GAAU;GAAS;GAAS;GAAc;GAAS;GAAQ;EAChF,YAAY,CAAC,kBAAkB;EAC/B,mBAAmB;EACnB;CACD;EACC,IAAI;EACJ,MAAM;EACN,aAAa;EACb,UAAU;GAAC;GAAU;GAAc;GAAW;GAAgB;GAAS;GAAQ;EAC/E,YAAY,CAAC,gBAAgB;EAC7B,mBAAmB;EACnB;CACD;EACC,IAAI;EACJ,MAAM;EACN,aAAa;EACb,UAAU;GACT;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD,YAAY,CAAC,gBAAgB;EAC7B,mBAAmB;EACnB;CACD;EACC,IAAI;EACJ,MAAM;EACN,aAAa;EACb,UAAU;GAAC;GAAe;GAAY;GAAS;GAAe;GAAS;GAAQ;EAC/E,YAAY,CAAC,cAAc;EAC3B,mBAAmB;EACnB;CACD;EACC,IAAI;EACJ,MAAM;EACN,aAAa;EACb,UAAU;GACT;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;EACD,YAAY,EAAE;EACd,mBAAmB;EACnB;CAED;EACC,IAAI;EACJ,MAAM;EACN,aACC;EACD,UAAU;GAAC;GAAY;GAAW;GAAS;GAAY;GAAQ;EAC/D,YAAY,CAAC,oBAAoB;EACjC,mBAAmB;EACnB;CACD;EACC,IAAI;EACJ,MAAM;EACN,aACC;EACD,UAAU;GAAC;GAAW;GAAS;GAAS;GAAS;GAAc;GAAQ;EACvE,YAAY,CAAC,mBAAmB;EAChC,mBAAmB;EACnB;CACD;EACC,IAAI;EACJ,MAAM;EACN,aACC;EACD,UAAU;GAAC;GAAY;GAAY;GAAa;GAAc;GAAS;GAAQ;EAC/E,YAAY,CAAC,oBAAoB;EACjC,mBAAmB;EACnB;CACD;EACC,IAAI;EACJ,MAAM;EACN,aAAa;EACb,UAAU;GAAC;GAAY;GAAU;GAAY;GAAc;GAAS;GAAgB;GAAQ;EAC5F,YAAY,CAAC,YAAY;EACzB,mBAAmB;EACnB;CACD;EACC,IAAI;EACJ,MAAM;EACN,aAAa;EACb,UAAU;GAAC;GAAY;GAAa;GAAc;GAAS;GAAQ;EACnE,YAAY,CAAC,qBAAqB;EAClC,mBAAmB;EACnB;CAED;EACC,IAAI;EACJ,MAAM;EACN,aACC;EACD,UAAU;GAAC;GAAY;GAAmB;GAAY;GAAS;GAAc;GAAQ;EACrF,YAAY,CAAC,mBAAmB;EAChC,mBAAmB;EACnB;CACD;EACC,IAAI;EACJ,MAAM;EACN,aACC;EACD,UAAU;GAAC;GAAU;GAAU;GAAY;GAAO;GAAc;GAAS;GAAS;GAAQ;EAC1F,YAAY,CAAC,iBAAiB;EAC9B,mBAAmB;EACnB;CACD;EACC,IAAI;EACJ,MAAM;EACN,aAAa;EACb,UAAU;GAAC;GAAW;GAAW;GAAc;GAAW;GAAc;GAAS;GAAQ;EACzF,YAAY,CAAC,gBAAgB;EAC7B,mBAAmB;EACnB;CACD;EACC,IAAI;EACJ,MAAM;EACN,aACC;EACD,UAAU;GAAC;GAAY;GAAW;GAAW;GAAS;GAAQ;EAC9D,YAAY,CAAC,cAAc;EAC3B,mBAAmB;EACnB;CACD;EACC,IAAI;EACJ,MAAM;EACN,aAAa;EACb,UAAU;GAAC;GAAU;GAAS;GAAc;GAAS;GAAQ;EAC7D,YAAY,CAAC,gBAAgB;EAC7B,mBAAmB;EACnB;CACD;AAED,MAAM,4BAAY,IAAI,KAAqB;AAC3C,KAAK,MAAM,UAAU,SAAS;AAC7B,KAAI,UAAU,IAAI,OAAO,GAAG,CAC3B,OAAM,IAAI,MAAM,yBAAyB,OAAO,GAAG,GAAG;AAEvD,WAAU,IAAI,OAAO,IAAI,OAAO;;AAGjC,MAAa,iBAA8C;AAE3D,SAAgB,cAAc,IAAgC;AAC7D,QAAO,UAAU,IAAI,GAAG;;AAGzB,SAAgB,gBAA0B;AACzC,QAAO,CAAC,GAAG,QAAQ"}
@@ -1,6 +1,5 @@
1
- const require_vi_2VT5v0um = require('../vi.2VT5v0um-BmRMvymT.cjs');
2
- const require_presets_registry = require('./registry.cjs');
3
-
1
+ const require_vi_2VT5v0um = require("../vi.2VT5v0um-CRqXre87.cjs");
2
+ const require_presets_registry = require("./registry.cjs");
4
3
  //#region src/presets/registry.test.ts
5
4
  require_vi_2VT5v0um.describe("preset registry", () => {
6
5
  require_vi_2VT5v0um.it("getPresetById returns undefined for unknown id", () => {
@@ -31,6 +30,6 @@ require_vi_2VT5v0um.describe("preset registry", () => {
31
30
  require_vi_2VT5v0um.globalExpect(lasuite.name).toBe("La Suite Meet");
32
31
  });
33
32
  });
34
-
35
33
  //#endregion
34
+
36
35
  //# sourceMappingURL=registry.test.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"registry.test.cjs","names":["describe","getPresetById","getAllPresets"],"sources":["../../src/presets/registry.test.ts"],"sourcesContent":["import { describe, expect, it } from \"vitest\";\nimport { getAllPresets, getPresetById } from \"./registry.js\";\n\ndescribe(\"preset registry\", () => {\n\tit(\"getPresetById returns undefined for unknown id\", () => {\n\t\texpect(getPresetById(\"unknown\")).toBeUndefined();\n\t});\n\n\tit(\"getPresetById returns La Suite Meet preset with correct services\", () => {\n\t\tconst preset = getPresetById(\"lasuite-meet\");\n\t\texpect(preset).toBeDefined();\n\t\texpect(preset!.id).toBe(\"lasuite-meet\");\n\t\texpect(preset!.name).toBe(\"La Suite Meet\");\n\t\texpect(preset!.services).toEqual([\n\t\t\t\"postgresql\",\n\t\t\t\"redis\",\n\t\t\t\"livekit\",\n\t\t\t\"lasuite-meet-backend\",\n\t\t\t\"lasuite-meet-frontend\",\n\t\t\t\"lasuite-meet-agents\",\n\t\t\t\"whisper\",\n\t\t\t\"ollama\",\n\t\t\t\"caddy\",\n\t\t]);\n\t\texpect(preset!.skillPacks).toEqual([]);\n\t\texpect(preset!.estimatedMemoryMB).toBe(2048);\n\t});\n\n\tit(\"getAllPresets includes La Suite Meet\", () => {\n\t\tconst all = getAllPresets();\n\t\tconst lasuite = all.find((p) => p.id === \"lasuite-meet\");\n\t\texpect(lasuite).toBeDefined();\n\t\texpect(lasuite!.name).toBe(\"La Suite Meet\");\n\t});\n});\n"],"mappings":";;;;AAGAA,6BAAS,yBAAyB;AACjC,wBAAG,wDAAwD;AAC1D,mCAAOC,uCAAc,UAAU,CAAC,CAAC,eAAe;GAC/C;AAEF,wBAAG,0EAA0E;EAC5E,MAAM,SAASA,uCAAc,eAAe;AAC5C,mCAAO,OAAO,CAAC,aAAa;AAC5B,mCAAO,OAAQ,GAAG,CAAC,KAAK,eAAe;AACvC,mCAAO,OAAQ,KAAK,CAAC,KAAK,gBAAgB;AAC1C,mCAAO,OAAQ,SAAS,CAAC,QAAQ;GAChC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA,CAAC;AACF,mCAAO,OAAQ,WAAW,CAAC,QAAQ,EAAE,CAAC;AACtC,mCAAO,OAAQ,kBAAkB,CAAC,KAAK,KAAK;GAC3C;AAEF,wBAAG,8CAA8C;EAEhD,MAAM,UADMC,wCAAe,CACP,MAAM,MAAM,EAAE,OAAO,eAAe;AACxD,mCAAO,QAAQ,CAAC,aAAa;AAC7B,mCAAO,QAAS,KAAK,CAAC,KAAK,gBAAgB;GAC1C;EACD"}
1
+ {"version":3,"file":"registry.test.cjs","names":["describe","getPresetById","getAllPresets"],"sources":["../../src/presets/registry.test.ts"],"sourcesContent":["import { describe, expect, it } from \"vitest\";\nimport { getAllPresets, getPresetById } from \"./registry.js\";\n\ndescribe(\"preset registry\", () => {\n\tit(\"getPresetById returns undefined for unknown id\", () => {\n\t\texpect(getPresetById(\"unknown\")).toBeUndefined();\n\t});\n\n\tit(\"getPresetById returns La Suite Meet preset with correct services\", () => {\n\t\tconst preset = getPresetById(\"lasuite-meet\");\n\t\texpect(preset).toBeDefined();\n\t\texpect(preset!.id).toBe(\"lasuite-meet\");\n\t\texpect(preset!.name).toBe(\"La Suite Meet\");\n\t\texpect(preset!.services).toEqual([\n\t\t\t\"postgresql\",\n\t\t\t\"redis\",\n\t\t\t\"livekit\",\n\t\t\t\"lasuite-meet-backend\",\n\t\t\t\"lasuite-meet-frontend\",\n\t\t\t\"lasuite-meet-agents\",\n\t\t\t\"whisper\",\n\t\t\t\"ollama\",\n\t\t\t\"caddy\",\n\t\t]);\n\t\texpect(preset!.skillPacks).toEqual([]);\n\t\texpect(preset!.estimatedMemoryMB).toBe(2048);\n\t});\n\n\tit(\"getAllPresets includes La Suite Meet\", () => {\n\t\tconst all = getAllPresets();\n\t\tconst lasuite = all.find((p) => p.id === \"lasuite-meet\");\n\t\texpect(lasuite).toBeDefined();\n\t\texpect(lasuite!.name).toBe(\"La Suite Meet\");\n\t});\n});\n"],"mappings":";;;AAGAA,oBAAAA,SAAS,yBAAyB;AACjC,qBAAA,GAAG,wDAAwD;AAC1D,sBAAA,aAAOC,yBAAAA,cAAc,UAAU,CAAC,CAAC,eAAe;GAC/C;AAEF,qBAAA,GAAG,0EAA0E;EAC5E,MAAM,SAASA,yBAAAA,cAAc,eAAe;AAC5C,sBAAA,aAAO,OAAO,CAAC,aAAa;AAC5B,sBAAA,aAAO,OAAQ,GAAG,CAAC,KAAK,eAAe;AACvC,sBAAA,aAAO,OAAQ,KAAK,CAAC,KAAK,gBAAgB;AAC1C,sBAAA,aAAO,OAAQ,SAAS,CAAC,QAAQ;GAChC;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA;GACA,CAAC;AACF,sBAAA,aAAO,OAAQ,WAAW,CAAC,QAAQ,EAAE,CAAC;AACtC,sBAAA,aAAO,OAAQ,kBAAkB,CAAC,KAAK,KAAK;GAC3C;AAEF,qBAAA,GAAG,8CAA8C;EAEhD,MAAM,UADMC,yBAAAA,eAAe,CACP,MAAM,MAAM,EAAE,OAAO,eAAe;AACxD,sBAAA,aAAO,QAAQ,CAAC,aAAa;AAC7B,sBAAA,aAAO,QAAS,KAAK,CAAC,KAAK,gBAAgB;GAC1C;EACD"}