@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":"skills.mjs","names":[],"sources":["../../src/generators/skills.ts"],"sourcesContent":["import Handlebars from \"handlebars\";\nimport type { ResolverOutput } from \"../types.js\";\n\n/**\n * Basic skill templates keyed by skillId.\n *\n * Templates use Handlebars `{{VAR}}` syntax. Variables are resolved from the\n * service's `openclawEnvVars` array at generation time.\n */\nconst skillTemplates: Record<string, string> = {\n\t\"redis-cache\": `---\nname: redis-cache\ndescription: \"Cache data and manage key-value state using Redis\"\nmetadata:\n openclaw:\n emoji: \"🔴\"\n---\n\n# Redis Cache\n\nUse Redis as a high-performance in-memory cache and key-value store.\n\n## Connection Details\n\n- **Host:** \\`{{REDIS_HOST}}\\`\n- **Port:** \\`{{REDIS_PORT}}\\`\n\n## Example Commands\n\n### Set a value\n\\`\\`\\`bash\nredis-cli -h {{REDIS_HOST}} -p {{REDIS_PORT}} -a $REDIS_PASSWORD SET mykey \"myvalue\"\n\\`\\`\\`\n\n### Get a value\n\\`\\`\\`bash\nredis-cli -h {{REDIS_HOST}} -p {{REDIS_PORT}} -a $REDIS_PASSWORD GET mykey\n\\`\\`\\`\n\n### List all keys\n\\`\\`\\`bash\nredis-cli -h {{REDIS_HOST}} -p {{REDIS_PORT}} -a $REDIS_PASSWORD KEYS \"*\"\n\\`\\`\\`\n\n## Usage Notes\n\n- Use Redis for caching frequently accessed data, session storage, and pub/sub messaging.\n- Data is persisted to disk via RDB snapshots in the mounted volume.\n- Password authentication is required.\n`,\n\n\t\"qdrant-memory\": `---\nname: qdrant-memory\ndescription: \"Store and retrieve vector embeddings for semantic search and RAG\"\nmetadata:\n openclaw:\n emoji: \"🧠\"\n---\n\n# Qdrant Memory\n\nUse Qdrant as a vector database for storing embeddings, enabling semantic search and retrieval-augmented generation (RAG).\n\n## Connection Details\n\n- **Host:** \\`{{QDRANT_HOST}}\\`\n- **Port:** \\`{{QDRANT_PORT}}\\` (REST API)\n\n## Example API Calls\n\n### Create a collection\n\\`\\`\\`bash\ncurl -X PUT \"http://{{QDRANT_HOST}}:{{QDRANT_PORT}}/collections/my_collection\" \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"vectors\": {\"size\": 384, \"distance\": \"Cosine\"}}'\n\\`\\`\\`\n\n### Upsert points\n\\`\\`\\`bash\ncurl -X PUT \"http://{{QDRANT_HOST}}:{{QDRANT_PORT}}/collections/my_collection/points\" \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"points\": [{\"id\": 1, \"vector\": [0.1, 0.2, ...], \"payload\": {\"text\": \"hello\"}}]}'\n\\`\\`\\`\n\n### Search similar vectors\n\\`\\`\\`bash\ncurl -X POST \"http://{{QDRANT_HOST}}:{{QDRANT_PORT}}/collections/my_collection/points/search\" \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"vector\": [0.1, 0.2, ...], \"limit\": 5}'\n\\`\\`\\`\n\n## Usage Notes\n\n- Use 384-dimensional vectors for MiniLM-based embeddings or 1536 for OpenAI ada-002.\n- Qdrant supports filtering, batch operations, and named vectors.\n`,\n\n\t\"n8n-trigger\": `---\nname: n8n-trigger\ndescription: \"Trigger and manage automation workflows using n8n\"\nmetadata:\n openclaw:\n emoji: \"🔄\"\n---\n\n# n8n Workflow Trigger\n\nUse n8n to create, trigger, and manage automation workflows via its REST API.\n\n## Connection Details\n\n- **Host:** \\`{{N8N_HOST}}\\`\n- **Port:** \\`{{N8N_PORT}}\\`\n- **Webhook URL:** \\`{{N8N_WEBHOOK_URL}}\\`\n\n## Example API Calls\n\n### Trigger a webhook workflow\n\\`\\`\\`bash\ncurl -X POST \"{{N8N_WEBHOOK_URL}}webhook/<your-webhook-id>\" \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"message\": \"Hello from OpenClaw\"}'\n\\`\\`\\`\n\n### List workflows\n\\`\\`\\`bash\ncurl -X GET \"http://{{N8N_HOST}}:{{N8N_PORT}}/api/v1/workflows\" \\\\\n -H \"Content-Type: application/json\"\n\\`\\`\\`\n\n### Activate a workflow\n\\`\\`\\`bash\ncurl -X PATCH \"http://{{N8N_HOST}}:{{N8N_PORT}}/api/v1/workflows/<id>\" \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"active\": true}'\n\\`\\`\\`\n\n## Usage Notes\n\n- Create workflows in the n8n UI at http://{{N8N_HOST}}:{{N8N_PORT}}.\n- Webhook nodes allow external triggers from OpenClaw.\n- n8n stores workflow state in PostgreSQL.\n`,\n\n\t\"ffmpeg-process\": `---\nname: ffmpeg-process\ndescription: \"Process media files using FFmpeg for transcoding, conversion, and manipulation\"\nmetadata:\n openclaw:\n emoji: \"🎬\"\n---\n\n# FFmpeg Media Processing\n\nUse FFmpeg for video/audio transcoding, format conversion, and media manipulation.\n\n## Shared Directory\n\n- **Media directory:** \\`{{FFMPEG_SHARED_DIR}}\\`\n\n## Example Commands\n\n### Convert video to MP4\n\\`\\`\\`bash\ndocker exec ffmpeg ffmpeg -i /data/input.avi -c:v libx264 -c:a aac /data/output.mp4\n\\`\\`\\`\n\n### Extract audio from video\n\\`\\`\\`bash\ndocker exec ffmpeg ffmpeg -i /data/video.mp4 -vn -acodec libmp3lame /data/audio.mp3\n\\`\\`\\`\n\n### Create thumbnail from video\n\\`\\`\\`bash\ndocker exec ffmpeg ffmpeg -i /data/video.mp4 -ss 00:00:05 -vframes 1 /data/thumb.jpg\n\\`\\`\\`\n\n### Resize video\n\\`\\`\\`bash\ndocker exec ffmpeg ffmpeg -i /data/input.mp4 -vf scale=1280:720 /data/output_720p.mp4\n\\`\\`\\`\n\n## Usage Notes\n\n- Place input files in the shared media directory.\n- FFmpeg runs as a sidecar container sharing a volume with OpenClaw.\n- Output files appear in the same shared directory.\n`,\n\n\t\"minio-storage\": `---\nname: minio-storage\ndescription: \"Store and retrieve files using S3-compatible object storage\"\nmetadata:\n openclaw:\n emoji: \"💾\"\n---\n\n# MinIO Object Storage\n\nUse MinIO as S3-compatible object storage for files, assets, and backups.\n\n## Connection Details\n\n- **Host:** \\`{{MINIO_HOST}}\\`\n- **API Port:** \\`{{MINIO_PORT}}\\`\n- **Access Key:** Uses \\`MINIO_ACCESS_KEY\\` env var\n- **Secret Key:** Uses \\`MINIO_SECRET_KEY\\` env var\n\n## Example API Calls\n\n### Create a bucket\n\\`\\`\\`bash\nmc alias set local http://{{MINIO_HOST}}:{{MINIO_PORT}} $MINIO_ACCESS_KEY $MINIO_SECRET_KEY\nmc mb local/my-bucket\n\\`\\`\\`\n\n### Upload a file\n\\`\\`\\`bash\nmc cp /path/to/file.txt local/my-bucket/file.txt\n\\`\\`\\`\n\n### Download a file\n\\`\\`\\`bash\nmc cp local/my-bucket/file.txt /path/to/local/file.txt\n\\`\\`\\`\n\n### List bucket contents\n\\`\\`\\`bash\nmc ls local/my-bucket/\n\\`\\`\\`\n\n## Usage Notes\n\n- MinIO is fully S3-compatible—use any S3 SDK or CLI.\n- Access the web console at http://{{MINIO_HOST}}:9001 for a visual file browser.\n- Create separate buckets for different data types (assets, backups, uploads).\n`,\n\n\t\"browserless-browse\": `---\nname: browserless-browse\ndescription: \"Automate browser interactions, scrape web pages, and generate PDFs\"\nmetadata:\n openclaw:\n emoji: \"🌐\"\n---\n\n# Browserless Browser Automation\n\nUse Browserless for headless Chrome browser automation, web scraping, screenshots, and PDF generation.\n\n## Connection Details\n\n- **Host:** \\`{{BROWSERLESS_HOST}}\\`\n- **Port:** \\`{{BROWSERLESS_PORT}}\\`\n- **Token:** Uses \\`BROWSERLESS_TOKEN\\` env var\n\n## Example API Calls\n\n### Take a screenshot\n\\`\\`\\`bash\ncurl -X POST \"http://{{BROWSERLESS_HOST}}:{{BROWSERLESS_PORT}}/screenshot?token=$BROWSERLESS_TOKEN\" \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"url\": \"https://example.com\", \"options\": {\"fullPage\": true}}' \\\\\n --output screenshot.png\n\\`\\`\\`\n\n### Generate a PDF\n\\`\\`\\`bash\ncurl -X POST \"http://{{BROWSERLESS_HOST}}:{{BROWSERLESS_PORT}}/pdf?token=$BROWSERLESS_TOKEN\" \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"url\": \"https://example.com\"}' \\\\\n --output page.pdf\n\\`\\`\\`\n\n### Scrape page content\n\\`\\`\\`bash\ncurl -X POST \"http://{{BROWSERLESS_HOST}}:{{BROWSERLESS_PORT}}/content?token=$BROWSERLESS_TOKEN\" \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"url\": \"https://example.com\"}'\n\\`\\`\\`\n\n## Usage Notes\n\n- Browserless manages a pool of Chrome instances (max concurrent sessions configured via env).\n- Token authentication is required for all API calls.\n- Supports Puppeteer and Playwright WebSocket connections.\n`,\n\n\t\"searxng-search\": `---\nname: searxng-search\ndescription: \"Search the web using a privacy-respecting metasearch engine\"\nmetadata:\n openclaw:\n emoji: \"🔍\"\n---\n\n# SearXNG Web Search\n\nUse SearXNG as a privacy-respecting metasearch engine to query the web.\n\n## Connection Details\n\n- **Host:** \\`{{SEARXNG_HOST}}\\`\n- **Port:** \\`{{SEARXNG_PORT}}\\`\n\n## Example API Calls\n\n### Search the web\n\\`\\`\\`bash\ncurl \"http://{{SEARXNG_HOST}}:{{SEARXNG_PORT}}/search?q=your+search+query&format=json\"\n\\`\\`\\`\n\n### Search with category filter\n\\`\\`\\`bash\ncurl \"http://{{SEARXNG_HOST}}:{{SEARXNG_PORT}}/search?q=openai&categories=it&format=json\"\n\\`\\`\\`\n\n### Search with language filter\n\\`\\`\\`bash\ncurl \"http://{{SEARXNG_HOST}}:{{SEARXNG_PORT}}/search?q=hello&language=en&format=json\"\n\\`\\`\\`\n\n## Usage Notes\n\n- Always use \\`format=json\\` for machine-readable results.\n- Available categories: general, images, videos, news, map, music, it, science, files.\n- SearXNG aggregates results from many search engines without tracking.\n`,\n\n\t\"whisper-transcribe\": `---\nname: whisper-transcribe\ndescription: \"Transcribe audio files to text using Faster Whisper\"\nmetadata:\n openclaw:\n emoji: \"🎙️\"\n---\n\n# Whisper Transcription\n\nUse the Faster Whisper server for speech-to-text transcription.\n\n## Connection Details\n\n- **Host:** \\`{{WHISPER_HOST}}\\`\n- **Port:** \\`{{WHISPER_PORT}}\\`\n\n## Example API Calls\n\n### Transcribe an audio file\n\\`\\`\\`bash\ncurl -X POST \"http://{{WHISPER_HOST}}:{{WHISPER_PORT}}/v1/audio/transcriptions\" \\\\\n -F \"file=@/path/to/audio.mp3\" \\\\\n -F \"model=base\"\n\\`\\`\\`\n\n### Transcribe with language hint\n\\`\\`\\`bash\ncurl -X POST \"http://{{WHISPER_HOST}}:{{WHISPER_PORT}}/v1/audio/transcriptions\" \\\\\n -F \"file=@/path/to/audio.wav\" \\\\\n -F \"model=base\" \\\\\n -F \"language=en\"\n\\`\\`\\`\n\n### Get available models\n\\`\\`\\`bash\ncurl \"http://{{WHISPER_HOST}}:{{WHISPER_PORT}}/v1/models\"\n\\`\\`\\`\n\n## Usage Notes\n\n- Supports MP3, WAV, FLAC, and other common audio formats.\n- Model sizes: tiny, base, small, medium, large (larger = more accurate but slower).\n- GPU acceleration significantly improves transcription speed.\n`,\n\n\t\"ollama-local-llm\": `---\nname: ollama-local-llm\ndescription: \"Run local language models for text generation, chat, and embeddings\"\nmetadata:\n openclaw:\n emoji: \"🦙\"\n---\n\n# Ollama Local LLM\n\nUse Ollama to run large language models locally for text generation, chat, and embeddings.\n\n## Connection Details\n\n- **Host:** \\`{{OLLAMA_HOST}}\\`\n- **Port:** \\`{{OLLAMA_PORT}}\\`\n\n## Example API Calls\n\n### Generate text\n\\`\\`\\`bash\ncurl -X POST \"http://{{OLLAMA_HOST}}:{{OLLAMA_PORT}}/api/generate\" \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"model\": \"llama3.2\", \"prompt\": \"Explain quantum computing in simple terms\"}'\n\\`\\`\\`\n\n### Chat completion\n\\`\\`\\`bash\ncurl -X POST \"http://{{OLLAMA_HOST}}:{{OLLAMA_PORT}}/api/chat\" \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"model\": \"llama3.2\", \"messages\": [{\"role\": \"user\", \"content\": \"Hello!\"}]}'\n\\`\\`\\`\n\n### Pull a model\n\\`\\`\\`bash\ncurl -X POST \"http://{{OLLAMA_HOST}}:{{OLLAMA_PORT}}/api/pull\" \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"name\": \"llama3.2\"}'\n\\`\\`\\`\n\n### Generate embeddings\n\\`\\`\\`bash\ncurl -X POST \"http://{{OLLAMA_HOST}}:{{OLLAMA_PORT}}/api/embeddings\" \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"model\": \"nomic-embed-text\", \"prompt\": \"Hello world\"}'\n\\`\\`\\`\n\n## Usage Notes\n\n- Pull models before first use (they are cached in the persistent volume).\n- Recommended models: llama3.2 (general), codellama (code), nomic-embed-text (embeddings).\n- GPU passthrough dramatically improves inference speed.\n- The Ollama API is OpenAI-compatible at /v1/ endpoints.\n`,\n\n\t\"remotion-render\": `---\nname: remotion-render\ndescription: \"Create and render videos programmatically using React\"\nmetadata:\n openclaw:\n emoji: \"🎥\"\n---\n\n# Remotion Video Rendering\n\nUse Remotion Studio to create and render videos programmatically with React.\n\n## Connection Details\n\n- **Host:** \\`{{REMOTION_HOST}}\\`\n- **Port:** \\`{{REMOTION_PORT}}\\`\n\n## Example Usage\n\n### Access the Studio UI\nOpen \\`http://{{REMOTION_HOST}}:{{REMOTION_PORT}}\\` in your browser to use the Remotion Studio visual editor.\n\n### Render a video via CLI\n\\`\\`\\`bash\ndocker exec remotion npx remotion render src/index.tsx MyComposition out/video.mp4\n\\`\\`\\`\n\n### Render with custom props\n\\`\\`\\`bash\ndocker exec remotion npx remotion render src/index.tsx MyComposition out/video.mp4 \\\\\n --props='{\"title\": \"Hello World\"}'\n\\`\\`\\`\n\n## Usage Notes\n\n- Define video compositions in React components.\n- Remotion supports MP4, WebM, and GIF output formats.\n- Use the Studio UI for previewing before rendering.\n- Combine with FFmpeg for post-processing.\n`,\n\n\t\"lightpanda-browse\": `---\nname: lightpanda-browse\ndescription: \"Browse the web using the ultra-fast LightPanda headless browser via CDP\"\nmetadata:\n openclaw:\n emoji: \"🐼\"\n---\n\n# LightPanda Browse\n\nLightPanda is an ultra-fast headless browser available via CDP WebSocket at \\`ws://{{LIGHTPANDA_HOST}}:{{LIGHTPANDA_PORT}}\\`.\n\n## Connect via Puppeteer\n\n\\`\\`\\`javascript\nconst browser = await puppeteer.connect({\n browserWSEndpoint: \"ws://{{LIGHTPANDA_HOST}}:{{LIGHTPANDA_PORT}}\"\n});\nconst page = await browser.newPage();\nawait page.goto('https://example.com');\nconst content = await page.evaluate(() => document.body.innerText);\n\\`\\`\\`\n\n## Key Advantages\n\n- 9x less memory than Chrome (ideal for parallel scraping)\n- 11x faster page loading\n- Instant startup\n- Full CDP compatibility with Puppeteer and Playwright\n`,\n\n\t\"steel-browse\": `---\nname: steel-browse\ndescription: \"Browse the web using Steel Browser API with session management and anti-detection\"\nmetadata:\n openclaw:\n emoji: \"🔥\"\n---\n\n# Steel Browser\n\nSteel provides a REST API at \\`http://{{STEEL_HOST}}:{{STEEL_PORT}}\\` for AI agent web automation.\n\n## Create a Session\n\n\\`\\`\\`bash\ncurl -X POST http://{{STEEL_HOST}}:{{STEEL_PORT}}/v1/sessions \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"blockAds\": true}'\n\\`\\`\\`\n\n## Scrape a Page\n\n\\`\\`\\`bash\ncurl -X POST http://{{STEEL_HOST}}:{{STEEL_PORT}}/v1/scrape \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"url\": \"https://example.com\", \"format\": \"markdown\"}'\n\\`\\`\\`\n\n## Features\n\n- Session management with persistent cookies\n- Anti-detection and stealth plugins\n- Proxy support and IP rotation\n- Auto CAPTCHA solving\n- Puppeteer/Playwright/Selenium compatible\n`,\n};\n\n/**\n * Generates SKILL.md files for each service that has skills defined.\n *\n * Returns a map of file paths (relative to project root) to file contents.\n * Handlebars is used to replace `{{VAR}}` placeholders with actual values\n * from each service's `openclawEnvVars`.\n */\nexport function generateSkillFiles(resolved: ResolverOutput): Record<string, string> {\n\tconst files: Record<string, string> = {};\n\n\tfor (const { definition } of resolved.services) {\n\t\tif (definition.skills.length === 0) continue;\n\n\t\t// Build a variable map from openclawEnvVars for Handlebars\n\t\tconst vars: Record<string, string> = {};\n\t\tfor (const envVar of definition.openclawEnvVars) {\n\t\t\t// Resolve ${REFERENCES} to the default value (just strip the ${} wrapper)\n\t\t\tconst val = envVar.defaultValue.startsWith(\"${\")\n\t\t\t\t? envVar.defaultValue.slice(2, -1)\n\t\t\t\t: envVar.defaultValue;\n\t\t\tvars[envVar.key] = val;\n\t\t}\n\n\t\tfor (const skill of definition.skills) {\n\t\t\tconst template = skillTemplates[skill.skillId];\n\t\t\tif (!template) {\n\t\t\t\t// Generate a generic skill file if no template exists\n\t\t\t\tconst generic = generateGenericSkill(\n\t\t\t\t\tskill.skillId,\n\t\t\t\t\tdefinition.name,\n\t\t\t\t\tdefinition.icon,\n\t\t\t\t\tdefinition.description,\n\t\t\t\t\tvars,\n\t\t\t\t);\n\t\t\t\tfiles[`openclaw/workspace/skills/${skill.skillId}/SKILL.md`] = generic;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst compiled = Handlebars.compile(template, { noEscape: true });\n\t\t\tconst rendered = compiled(vars);\n\t\t\tfiles[`openclaw/workspace/skills/${skill.skillId}/SKILL.md`] = rendered;\n\t\t}\n\t}\n\n\treturn files;\n}\n\n/**\n * Generate a generic SKILL.md for skills that don't have a dedicated template.\n */\nfunction generateGenericSkill(\n\tskillId: string,\n\tserviceName: string,\n\ticon: string,\n\tdescription: string,\n\tvars: Record<string, string>,\n): string {\n\tconst title = skillId\n\t\t.split(\"-\")\n\t\t.map((w) => w.charAt(0).toUpperCase() + w.slice(1))\n\t\t.join(\" \");\n\n\tconst envSection = Object.entries(vars)\n\t\t.map(([key, value]) => `- **${key}:** \\`${value}\\``)\n\t\t.join(\"\\n\");\n\n\treturn `---\nname: ${skillId}\ndescription: \"${description}\"\nmetadata:\n openclaw:\n emoji: \"${icon}\"\n---\n\n# ${title}\n\nInteract with ${serviceName} through this skill.\n\n## Connection Details\n\n${envSection || \"No specific connection variables configured.\"}\n\n## Usage Notes\n\n- This skill provides OpenClaw access to ${serviceName}.\n- Refer to the service documentation for available API endpoints.\n`;\n}\n"],"mappings":";;;;;;;;;AASA,MAAM,iBAAyC;CAC9C,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyCf,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8CjB,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+Cf,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6ClB,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiDjB,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkDtB,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyClB,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8CtB,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuDpB,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyCnB,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BrB,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoChB;;;;;;;;AASD,SAAgB,mBAAmB,UAAkD;CACpF,MAAM,QAAgC,EAAE;AAExC,MAAK,MAAM,EAAE,gBAAgB,SAAS,UAAU;AAC/C,MAAI,WAAW,OAAO,WAAW,EAAG;EAGpC,MAAM,OAA+B,EAAE;AACvC,OAAK,MAAM,UAAU,WAAW,iBAAiB;GAEhD,MAAM,MAAM,OAAO,aAAa,WAAW,KAAK,GAC7C,OAAO,aAAa,MAAM,GAAG,GAAG,GAChC,OAAO;AACV,QAAK,OAAO,OAAO;;AAGpB,OAAK,MAAM,SAAS,WAAW,QAAQ;GACtC,MAAM,WAAW,eAAe,MAAM;AACtC,OAAI,CAAC,UAAU;IAEd,MAAM,UAAU,qBACf,MAAM,SACN,WAAW,MACX,WAAW,MACX,WAAW,aACX,KACA;AACD,UAAM,6BAA6B,MAAM,QAAQ,cAAc;AAC/D;;GAID,MAAM,WADW,WAAW,QAAQ,UAAU,EAAE,UAAU,MAAM,CAAC,CACvC,KAAK;AAC/B,SAAM,6BAA6B,MAAM,QAAQ,cAAc;;;AAIjE,QAAO;;;;;AAMR,SAAS,qBACR,SACA,aACA,MACA,aACA,MACS;AAUT,QAAO;QACA,QAAQ;gBACA,YAAY;;;cAGd,KAAK;;;IAdJ,QACZ,MAAM,IAAI,CACV,KAAK,MAAM,EAAE,OAAO,EAAE,CAAC,aAAa,GAAG,EAAE,MAAM,EAAE,CAAC,CAClD,KAAK,IAAI,CAcF;;gBAEM,YAAY;;;;EAdR,OAAO,QAAQ,KAAK,CACrC,KAAK,CAAC,KAAK,WAAW,OAAO,IAAI,QAAQ,MAAM,IAAI,CACnD,KAAK,KAAK,IAgBG,+CAA+C;;;;2CAIpB,YAAY"}
1
+ {"version":3,"file":"skills.mjs","names":[],"sources":["../../src/generators/skills.ts"],"sourcesContent":["import Handlebars from \"handlebars\";\nimport type { ResolverOutput } from \"../types.js\";\n\n/**\n * Basic skill templates keyed by skillId.\n *\n * Templates use Handlebars `{{VAR}}` syntax. Variables are resolved from the\n * service's `openclawEnvVars` array at generation time.\n */\nconst skillTemplates: Record<string, string> = {\n\t\"redis-cache\": `---\nname: redis-cache\ndescription: \"Cache data and manage key-value state using Redis\"\nmetadata:\n openclaw:\n emoji: \"🔴\"\n---\n\n# Redis Cache\n\nUse Redis as a high-performance in-memory cache and key-value store.\n\n## Connection Details\n\n- **Host:** \\`{{REDIS_HOST}}\\`\n- **Port:** \\`{{REDIS_PORT}}\\`\n\n## Example Commands\n\n### Set a value\n\\`\\`\\`bash\nredis-cli -h {{REDIS_HOST}} -p {{REDIS_PORT}} -a $REDIS_PASSWORD SET mykey \"myvalue\"\n\\`\\`\\`\n\n### Get a value\n\\`\\`\\`bash\nredis-cli -h {{REDIS_HOST}} -p {{REDIS_PORT}} -a $REDIS_PASSWORD GET mykey\n\\`\\`\\`\n\n### List all keys\n\\`\\`\\`bash\nredis-cli -h {{REDIS_HOST}} -p {{REDIS_PORT}} -a $REDIS_PASSWORD KEYS \"*\"\n\\`\\`\\`\n\n## Usage Notes\n\n- Use Redis for caching frequently accessed data, session storage, and pub/sub messaging.\n- Data is persisted to disk via RDB snapshots in the mounted volume.\n- Password authentication is required.\n`,\n\n\t\"qdrant-memory\": `---\nname: qdrant-memory\ndescription: \"Store and retrieve vector embeddings for semantic search and RAG\"\nmetadata:\n openclaw:\n emoji: \"🧠\"\n---\n\n# Qdrant Memory\n\nUse Qdrant as a vector database for storing embeddings, enabling semantic search and retrieval-augmented generation (RAG).\n\n## Connection Details\n\n- **Host:** \\`{{QDRANT_HOST}}\\`\n- **Port:** \\`{{QDRANT_PORT}}\\` (REST API)\n\n## Example API Calls\n\n### Create a collection\n\\`\\`\\`bash\ncurl -X PUT \"http://{{QDRANT_HOST}}:{{QDRANT_PORT}}/collections/my_collection\" \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"vectors\": {\"size\": 384, \"distance\": \"Cosine\"}}'\n\\`\\`\\`\n\n### Upsert points\n\\`\\`\\`bash\ncurl -X PUT \"http://{{QDRANT_HOST}}:{{QDRANT_PORT}}/collections/my_collection/points\" \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"points\": [{\"id\": 1, \"vector\": [0.1, 0.2, ...], \"payload\": {\"text\": \"hello\"}}]}'\n\\`\\`\\`\n\n### Search similar vectors\n\\`\\`\\`bash\ncurl -X POST \"http://{{QDRANT_HOST}}:{{QDRANT_PORT}}/collections/my_collection/points/search\" \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"vector\": [0.1, 0.2, ...], \"limit\": 5}'\n\\`\\`\\`\n\n## Usage Notes\n\n- Use 384-dimensional vectors for MiniLM-based embeddings or 1536 for OpenAI ada-002.\n- Qdrant supports filtering, batch operations, and named vectors.\n`,\n\n\t\"n8n-trigger\": `---\nname: n8n-trigger\ndescription: \"Trigger and manage automation workflows using n8n\"\nmetadata:\n openclaw:\n emoji: \"🔄\"\n---\n\n# n8n Workflow Trigger\n\nUse n8n to create, trigger, and manage automation workflows via its REST API.\n\n## Connection Details\n\n- **Host:** \\`{{N8N_HOST}}\\`\n- **Port:** \\`{{N8N_PORT}}\\`\n- **Webhook URL:** \\`{{N8N_WEBHOOK_URL}}\\`\n\n## Example API Calls\n\n### Trigger a webhook workflow\n\\`\\`\\`bash\ncurl -X POST \"{{N8N_WEBHOOK_URL}}webhook/<your-webhook-id>\" \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"message\": \"Hello from OpenClaw\"}'\n\\`\\`\\`\n\n### List workflows\n\\`\\`\\`bash\ncurl -X GET \"http://{{N8N_HOST}}:{{N8N_PORT}}/api/v1/workflows\" \\\\\n -H \"Content-Type: application/json\"\n\\`\\`\\`\n\n### Activate a workflow\n\\`\\`\\`bash\ncurl -X PATCH \"http://{{N8N_HOST}}:{{N8N_PORT}}/api/v1/workflows/<id>\" \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"active\": true}'\n\\`\\`\\`\n\n## Usage Notes\n\n- Create workflows in the n8n UI at http://{{N8N_HOST}}:{{N8N_PORT}}.\n- Webhook nodes allow external triggers from OpenClaw.\n- n8n stores workflow state in PostgreSQL.\n`,\n\n\t\"ffmpeg-process\": `---\nname: ffmpeg-process\ndescription: \"Process media files using FFmpeg for transcoding, conversion, and manipulation\"\nmetadata:\n openclaw:\n emoji: \"🎬\"\n---\n\n# FFmpeg Media Processing\n\nUse FFmpeg for video/audio transcoding, format conversion, and media manipulation.\n\n## Shared Directory\n\n- **Media directory:** \\`{{FFMPEG_SHARED_DIR}}\\`\n\n## Example Commands\n\n### Convert video to MP4\n\\`\\`\\`bash\ndocker exec ffmpeg ffmpeg -i /data/input.avi -c:v libx264 -c:a aac /data/output.mp4\n\\`\\`\\`\n\n### Extract audio from video\n\\`\\`\\`bash\ndocker exec ffmpeg ffmpeg -i /data/video.mp4 -vn -acodec libmp3lame /data/audio.mp3\n\\`\\`\\`\n\n### Create thumbnail from video\n\\`\\`\\`bash\ndocker exec ffmpeg ffmpeg -i /data/video.mp4 -ss 00:00:05 -vframes 1 /data/thumb.jpg\n\\`\\`\\`\n\n### Resize video\n\\`\\`\\`bash\ndocker exec ffmpeg ffmpeg -i /data/input.mp4 -vf scale=1280:720 /data/output_720p.mp4\n\\`\\`\\`\n\n## Usage Notes\n\n- Place input files in the shared media directory.\n- FFmpeg runs as a sidecar container sharing a volume with OpenClaw.\n- Output files appear in the same shared directory.\n`,\n\n\t\"minio-storage\": `---\nname: minio-storage\ndescription: \"Store and retrieve files using S3-compatible object storage\"\nmetadata:\n openclaw:\n emoji: \"💾\"\n---\n\n# MinIO Object Storage\n\nUse MinIO as S3-compatible object storage for files, assets, and backups.\n\n## Connection Details\n\n- **Host:** \\`{{MINIO_HOST}}\\`\n- **API Port:** \\`{{MINIO_PORT}}\\`\n- **Access Key:** Uses \\`MINIO_ACCESS_KEY\\` env var\n- **Secret Key:** Uses \\`MINIO_SECRET_KEY\\` env var\n\n## Example API Calls\n\n### Create a bucket\n\\`\\`\\`bash\nmc alias set local http://{{MINIO_HOST}}:{{MINIO_PORT}} $MINIO_ACCESS_KEY $MINIO_SECRET_KEY\nmc mb local/my-bucket\n\\`\\`\\`\n\n### Upload a file\n\\`\\`\\`bash\nmc cp /path/to/file.txt local/my-bucket/file.txt\n\\`\\`\\`\n\n### Download a file\n\\`\\`\\`bash\nmc cp local/my-bucket/file.txt /path/to/local/file.txt\n\\`\\`\\`\n\n### List bucket contents\n\\`\\`\\`bash\nmc ls local/my-bucket/\n\\`\\`\\`\n\n## Usage Notes\n\n- MinIO is fully S3-compatible—use any S3 SDK or CLI.\n- Access the web console at http://{{MINIO_HOST}}:9001 for a visual file browser.\n- Create separate buckets for different data types (assets, backups, uploads).\n`,\n\n\t\"browserless-browse\": `---\nname: browserless-browse\ndescription: \"Automate browser interactions, scrape web pages, and generate PDFs\"\nmetadata:\n openclaw:\n emoji: \"🌐\"\n---\n\n# Browserless Browser Automation\n\nUse Browserless for headless Chrome browser automation, web scraping, screenshots, and PDF generation.\n\n## Connection Details\n\n- **Host:** \\`{{BROWSERLESS_HOST}}\\`\n- **Port:** \\`{{BROWSERLESS_PORT}}\\`\n- **Token:** Uses \\`BROWSERLESS_TOKEN\\` env var\n\n## Example API Calls\n\n### Take a screenshot\n\\`\\`\\`bash\ncurl -X POST \"http://{{BROWSERLESS_HOST}}:{{BROWSERLESS_PORT}}/screenshot?token=$BROWSERLESS_TOKEN\" \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"url\": \"https://example.com\", \"options\": {\"fullPage\": true}}' \\\\\n --output screenshot.png\n\\`\\`\\`\n\n### Generate a PDF\n\\`\\`\\`bash\ncurl -X POST \"http://{{BROWSERLESS_HOST}}:{{BROWSERLESS_PORT}}/pdf?token=$BROWSERLESS_TOKEN\" \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"url\": \"https://example.com\"}' \\\\\n --output page.pdf\n\\`\\`\\`\n\n### Scrape page content\n\\`\\`\\`bash\ncurl -X POST \"http://{{BROWSERLESS_HOST}}:{{BROWSERLESS_PORT}}/content?token=$BROWSERLESS_TOKEN\" \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"url\": \"https://example.com\"}'\n\\`\\`\\`\n\n## Usage Notes\n\n- Browserless manages a pool of Chrome instances (max concurrent sessions configured via env).\n- Token authentication is required for all API calls.\n- Supports Puppeteer and Playwright WebSocket connections.\n`,\n\n\t\"searxng-search\": `---\nname: searxng-search\ndescription: \"Search the web using a privacy-respecting metasearch engine\"\nmetadata:\n openclaw:\n emoji: \"🔍\"\n---\n\n# SearXNG Web Search\n\nUse SearXNG as a privacy-respecting metasearch engine to query the web.\n\n## Connection Details\n\n- **Host:** \\`{{SEARXNG_HOST}}\\`\n- **Port:** \\`{{SEARXNG_PORT}}\\`\n\n## Example API Calls\n\n### Search the web\n\\`\\`\\`bash\ncurl \"http://{{SEARXNG_HOST}}:{{SEARXNG_PORT}}/search?q=your+search+query&format=json\"\n\\`\\`\\`\n\n### Search with category filter\n\\`\\`\\`bash\ncurl \"http://{{SEARXNG_HOST}}:{{SEARXNG_PORT}}/search?q=openai&categories=it&format=json\"\n\\`\\`\\`\n\n### Search with language filter\n\\`\\`\\`bash\ncurl \"http://{{SEARXNG_HOST}}:{{SEARXNG_PORT}}/search?q=hello&language=en&format=json\"\n\\`\\`\\`\n\n## Usage Notes\n\n- Always use \\`format=json\\` for machine-readable results.\n- Available categories: general, images, videos, news, map, music, it, science, files.\n- SearXNG aggregates results from many search engines without tracking.\n`,\n\n\t\"whisper-transcribe\": `---\nname: whisper-transcribe\ndescription: \"Transcribe audio files to text using Faster Whisper\"\nmetadata:\n openclaw:\n emoji: \"🎙️\"\n---\n\n# Whisper Transcription\n\nUse the Faster Whisper server for speech-to-text transcription.\n\n## Connection Details\n\n- **Host:** \\`{{WHISPER_HOST}}\\`\n- **Port:** \\`{{WHISPER_PORT}}\\`\n\n## Example API Calls\n\n### Transcribe an audio file\n\\`\\`\\`bash\ncurl -X POST \"http://{{WHISPER_HOST}}:{{WHISPER_PORT}}/v1/audio/transcriptions\" \\\\\n -F \"file=@/path/to/audio.mp3\" \\\\\n -F \"model=base\"\n\\`\\`\\`\n\n### Transcribe with language hint\n\\`\\`\\`bash\ncurl -X POST \"http://{{WHISPER_HOST}}:{{WHISPER_PORT}}/v1/audio/transcriptions\" \\\\\n -F \"file=@/path/to/audio.wav\" \\\\\n -F \"model=base\" \\\\\n -F \"language=en\"\n\\`\\`\\`\n\n### Get available models\n\\`\\`\\`bash\ncurl \"http://{{WHISPER_HOST}}:{{WHISPER_PORT}}/v1/models\"\n\\`\\`\\`\n\n## Usage Notes\n\n- Supports MP3, WAV, FLAC, and other common audio formats.\n- Model sizes: tiny, base, small, medium, large (larger = more accurate but slower).\n- GPU acceleration significantly improves transcription speed.\n`,\n\n\t\"ollama-local-llm\": `---\nname: ollama-local-llm\ndescription: \"Run local language models for text generation, chat, and embeddings\"\nmetadata:\n openclaw:\n emoji: \"🦙\"\n---\n\n# Ollama Local LLM\n\nUse Ollama to run large language models locally for text generation, chat, and embeddings.\n\n## Connection Details\n\n- **Host:** \\`{{OLLAMA_HOST}}\\`\n- **Port:** \\`{{OLLAMA_PORT}}\\`\n\n## Example API Calls\n\n### Generate text\n\\`\\`\\`bash\ncurl -X POST \"http://{{OLLAMA_HOST}}:{{OLLAMA_PORT}}/api/generate\" \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"model\": \"llama3.2\", \"prompt\": \"Explain quantum computing in simple terms\"}'\n\\`\\`\\`\n\n### Chat completion\n\\`\\`\\`bash\ncurl -X POST \"http://{{OLLAMA_HOST}}:{{OLLAMA_PORT}}/api/chat\" \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"model\": \"llama3.2\", \"messages\": [{\"role\": \"user\", \"content\": \"Hello!\"}]}'\n\\`\\`\\`\n\n### Pull a model\n\\`\\`\\`bash\ncurl -X POST \"http://{{OLLAMA_HOST}}:{{OLLAMA_PORT}}/api/pull\" \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"name\": \"llama3.2\"}'\n\\`\\`\\`\n\n### Generate embeddings\n\\`\\`\\`bash\ncurl -X POST \"http://{{OLLAMA_HOST}}:{{OLLAMA_PORT}}/api/embeddings\" \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"model\": \"nomic-embed-text\", \"prompt\": \"Hello world\"}'\n\\`\\`\\`\n\n## Usage Notes\n\n- Pull models before first use (they are cached in the persistent volume).\n- Recommended models: llama3.2 (general), codellama (code), nomic-embed-text (embeddings).\n- GPU passthrough dramatically improves inference speed.\n- The Ollama API is OpenAI-compatible at /v1/ endpoints.\n`,\n\n\t\"remotion-render\": `---\nname: remotion-render\ndescription: \"Create and render videos programmatically using React\"\nmetadata:\n openclaw:\n emoji: \"🎥\"\n---\n\n# Remotion Video Rendering\n\nUse Remotion Studio to create and render videos programmatically with React.\n\n## Connection Details\n\n- **Host:** \\`{{REMOTION_HOST}}\\`\n- **Port:** \\`{{REMOTION_PORT}}\\`\n\n## Example Usage\n\n### Access the Studio UI\nOpen \\`http://{{REMOTION_HOST}}:{{REMOTION_PORT}}\\` in your browser to use the Remotion Studio visual editor.\n\n### Render a video via CLI\n\\`\\`\\`bash\ndocker exec remotion npx remotion render src/index.tsx MyComposition out/video.mp4\n\\`\\`\\`\n\n### Render with custom props\n\\`\\`\\`bash\ndocker exec remotion npx remotion render src/index.tsx MyComposition out/video.mp4 \\\\\n --props='{\"title\": \"Hello World\"}'\n\\`\\`\\`\n\n## Usage Notes\n\n- Define video compositions in React components.\n- Remotion supports MP4, WebM, and GIF output formats.\n- Use the Studio UI for previewing before rendering.\n- Combine with FFmpeg for post-processing.\n`,\n\n\t\"lightpanda-browse\": `---\nname: lightpanda-browse\ndescription: \"Browse the web using the ultra-fast LightPanda headless browser via CDP\"\nmetadata:\n openclaw:\n emoji: \"🐼\"\n---\n\n# LightPanda Browse\n\nLightPanda is an ultra-fast headless browser available via CDP WebSocket at \\`ws://{{LIGHTPANDA_HOST}}:{{LIGHTPANDA_PORT}}\\`.\n\n## Connect via Puppeteer\n\n\\`\\`\\`javascript\nconst browser = await puppeteer.connect({\n browserWSEndpoint: \"ws://{{LIGHTPANDA_HOST}}:{{LIGHTPANDA_PORT}}\"\n});\nconst page = await browser.newPage();\nawait page.goto('https://example.com');\nconst content = await page.evaluate(() => document.body.innerText);\n\\`\\`\\`\n\n## Key Advantages\n\n- 9x less memory than Chrome (ideal for parallel scraping)\n- 11x faster page loading\n- Instant startup\n- Full CDP compatibility with Puppeteer and Playwright\n`,\n\n\t\"steel-browse\": `---\nname: steel-browse\ndescription: \"Browse the web using Steel Browser API with session management and anti-detection\"\nmetadata:\n openclaw:\n emoji: \"🔥\"\n---\n\n# Steel Browser\n\nSteel provides a REST API at \\`http://{{STEEL_HOST}}:{{STEEL_PORT}}\\` for AI agent web automation.\n\n## Create a Session\n\n\\`\\`\\`bash\ncurl -X POST http://{{STEEL_HOST}}:{{STEEL_PORT}}/v1/sessions \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"blockAds\": true}'\n\\`\\`\\`\n\n## Scrape a Page\n\n\\`\\`\\`bash\ncurl -X POST http://{{STEEL_HOST}}:{{STEEL_PORT}}/v1/scrape \\\\\n -H \"Content-Type: application/json\" \\\\\n -d '{\"url\": \"https://example.com\", \"format\": \"markdown\"}'\n\\`\\`\\`\n\n## Features\n\n- Session management with persistent cookies\n- Anti-detection and stealth plugins\n- Proxy support and IP rotation\n- Auto CAPTCHA solving\n- Puppeteer/Playwright/Selenium compatible\n`,\n};\n\n/**\n * Generates SKILL.md files for each service that has skills defined.\n *\n * Returns a map of file paths (relative to project root) to file contents.\n * Handlebars is used to replace `{{VAR}}` placeholders with actual values\n * from each service's `openclawEnvVars`.\n */\nexport function generateSkillFiles(resolved: ResolverOutput): Record<string, string> {\n\tconst files: Record<string, string> = {};\n\n\tfor (const { definition } of resolved.services) {\n\t\tif (definition.skills.length === 0) continue;\n\n\t\t// Build a variable map from openclawEnvVars for Handlebars\n\t\tconst vars: Record<string, string> = {};\n\t\tfor (const envVar of definition.openclawEnvVars) {\n\t\t\t// Resolve ${REFERENCES} to the default value (just strip the ${} wrapper)\n\t\t\tconst val = envVar.defaultValue.startsWith(\"${\")\n\t\t\t\t? envVar.defaultValue.slice(2, -1)\n\t\t\t\t: envVar.defaultValue;\n\t\t\tvars[envVar.key] = val;\n\t\t}\n\n\t\tfor (const skill of definition.skills) {\n\t\t\tconst template = skillTemplates[skill.skillId];\n\t\t\tif (!template) {\n\t\t\t\t// Generate a generic skill file if no template exists\n\t\t\t\tconst generic = generateGenericSkill(\n\t\t\t\t\tskill.skillId,\n\t\t\t\t\tdefinition.name,\n\t\t\t\t\tdefinition.icon,\n\t\t\t\t\tdefinition.description,\n\t\t\t\t\tvars,\n\t\t\t\t);\n\t\t\t\tfiles[`openclaw/workspace/skills/${skill.skillId}/SKILL.md`] = generic;\n\t\t\t\tcontinue;\n\t\t\t}\n\n\t\t\tconst compiled = Handlebars.compile(template, { noEscape: true });\n\t\t\tconst rendered = compiled(vars);\n\t\t\tfiles[`openclaw/workspace/skills/${skill.skillId}/SKILL.md`] = rendered;\n\t\t}\n\t}\n\n\treturn files;\n}\n\n/**\n * Generate a generic SKILL.md for skills that don't have a dedicated template.\n */\nfunction generateGenericSkill(\n\tskillId: string,\n\tserviceName: string,\n\ticon: string,\n\tdescription: string,\n\tvars: Record<string, string>,\n): string {\n\tconst title = skillId\n\t\t.split(\"-\")\n\t\t.map((w) => w.charAt(0).toUpperCase() + w.slice(1))\n\t\t.join(\" \");\n\n\tconst envSection = Object.entries(vars)\n\t\t.map(([key, value]) => `- **${key}:** \\`${value}\\``)\n\t\t.join(\"\\n\");\n\n\treturn `---\nname: ${skillId}\ndescription: \"${description}\"\nmetadata:\n openclaw:\n emoji: \"${icon}\"\n---\n\n# ${title}\n\nInteract with ${serviceName} through this skill.\n\n## Connection Details\n\n${envSection || \"No specific connection variables configured.\"}\n\n## Usage Notes\n\n- This skill provides OpenClaw access to ${serviceName}.\n- Refer to the service documentation for available API endpoints.\n`;\n}\n"],"mappings":";;;;;;;;AASA,MAAM,iBAAyC;CAC9C,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyCf,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8CjB,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+Cf,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA6ClB,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAiDjB,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAkDtB,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyClB,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA8CtB,oBAAoB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAuDpB,mBAAmB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAyCnB,qBAAqB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CA+BrB,gBAAgB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAoChB;;;;;;;;AASD,SAAgB,mBAAmB,UAAkD;CACpF,MAAM,QAAgC,EAAE;AAExC,MAAK,MAAM,EAAE,gBAAgB,SAAS,UAAU;AAC/C,MAAI,WAAW,OAAO,WAAW,EAAG;EAGpC,MAAM,OAA+B,EAAE;AACvC,OAAK,MAAM,UAAU,WAAW,iBAAiB;GAEhD,MAAM,MAAM,OAAO,aAAa,WAAW,KAAK,GAC7C,OAAO,aAAa,MAAM,GAAG,GAAG,GAChC,OAAO;AACV,QAAK,OAAO,OAAO;;AAGpB,OAAK,MAAM,SAAS,WAAW,QAAQ;GACtC,MAAM,WAAW,eAAe,MAAM;AACtC,OAAI,CAAC,UAAU;IAEd,MAAM,UAAU,qBACf,MAAM,SACN,WAAW,MACX,WAAW,MACX,WAAW,aACX,KACA;AACD,UAAM,6BAA6B,MAAM,QAAQ,cAAc;AAC/D;;GAID,MAAM,WADW,WAAW,QAAQ,UAAU,EAAE,UAAU,MAAM,CAAC,CACvC,KAAK;AAC/B,SAAM,6BAA6B,MAAM,QAAQ,cAAc;;;AAIjE,QAAO;;;;;AAMR,SAAS,qBACR,SACA,aACA,MACA,aACA,MACS;AAUT,QAAO;QACA,QAAQ;gBACA,YAAY;;;cAGd,KAAK;;;IAdJ,QACZ,MAAM,IAAI,CACV,KAAK,MAAM,EAAE,OAAO,EAAE,CAAC,aAAa,GAAG,EAAE,MAAM,EAAE,CAAC,CAClD,KAAK,IAAI,CAcF;;gBAEM,YAAY;;;;EAdR,OAAO,QAAQ,KAAK,CACrC,KAAK,CAAC,KAAK,WAAW,OAAO,IAAI,QAAQ,MAAM,IAAI,CACnD,KAAK,KAAK,IAgBG,+CAA+C;;;;2CAIpB,YAAY"}
@@ -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/generators/stack-manifest.ts
4
3
  /**
5
4
  * Generate stack-manifest.json from resolved output and generation input.
@@ -64,7 +63,7 @@ function generateStackManifest(resolved, input) {
64
63
  };
65
64
  return { "stack-manifest.json": JSON.stringify(manifest, null, 2) };
66
65
  }
67
-
68
66
  //#endregion
69
67
  exports.generateStackManifest = generateStackManifest;
68
+
70
69
  //# sourceMappingURL=stack-manifest.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"stack-manifest.cjs","names":[],"sources":["../../src/generators/stack-manifest.ts"],"sourcesContent":["/**\n * Stack manifest generator — produces a JSON manifest describing the\n * chosen services, skills, and configuration for a generated stack.\n *\n * This manifest is consumed by Mission Control to render dynamic\n * services/skills pages for managing the deployed stack.\n */\n\nimport type { GenerationInput, ResolverOutput } from \"../types.js\";\n\nexport interface StackManifestService {\n\tid: string;\n\tname: string;\n\tcategory: string;\n\ticon: string;\n\timage: string;\n\timageTag: string;\n\tports: { container: number; host?: number; exposed: boolean; description: string }[];\n\tdocsUrl: string;\n\taddedBy: string;\n\tdependencyOf?: string;\n}\n\nexport interface StackManifestSkill {\n\tid: string;\n\tname: string;\n\tpath: string;\n\tserviceIds: string[];\n}\n\nexport interface StackManifest {\n\tformatVersion: string;\n\tgeneratedAt: string;\n\tprojectName: string;\n\tdeployment?: string;\n\tdeploymentType?: string;\n\tplatform?: string;\n\tproxy?: string;\n\tdomain?: string;\n\tservices: StackManifestService[];\n\tskills: StackManifestSkill[];\n\tmetadata: {\n\t\tserviceCount: number;\n\t\tskillCount: number;\n\t\testimatedMemoryMB: number;\n\t};\n}\n\n/**\n * Generate stack-manifest.json from resolved output and generation input.\n * Returns a single-file record: { \"stack-manifest.json\": string }.\n */\nexport function generateStackManifest(\n\tresolved: ResolverOutput,\n\tinput: GenerationInput,\n): Record<string, string> {\n\t// Build a lookup of dependency chains: serviceId → requiredBy\n\tconst depMap = new Map<string, string>();\n\tfor (const dep of resolved.addedDependencies) {\n\t\tconst depId = dep.serviceId ?? dep.service;\n\t\tif (dep.requiredBy) {\n\t\t\tdepMap.set(depId, dep.requiredBy);\n\t\t}\n\t}\n\n\tconst services: StackManifestService[] = resolved.services.map((svc) => {\n\t\tconst def = svc.definition;\n\t\treturn {\n\t\t\tid: def.id,\n\t\t\tname: def.name,\n\t\t\tcategory: def.category,\n\t\t\ticon: def.icon,\n\t\t\timage: def.image,\n\t\t\timageTag: def.imageTag,\n\t\t\tports: def.ports.map((p) => ({\n\t\t\t\tcontainer: p.container,\n\t\t\t\thost: p.host,\n\t\t\t\texposed: p.exposed,\n\t\t\t\tdescription: p.description,\n\t\t\t})),\n\t\t\tdocsUrl: def.docsUrl,\n\t\t\taddedBy: svc.addedBy,\n\t\t\t...(svc.addedBy !== \"user\" && depMap.has(def.id) ? { dependencyOf: depMap.get(def.id) } : {}),\n\t\t};\n\t});\n\n\t// Collect skills from service definitions (SkillBinding has skillId, not name)\n\tconst skills: StackManifestSkill[] = [];\n\tconst seenSkillIds = new Set<string>();\n\tfor (const svc of resolved.services) {\n\t\tfor (const skill of svc.definition.skills) {\n\t\t\tconst skillKey = `${svc.definition.id}-${skill.skillId}`;\n\t\t\tif (seenSkillIds.has(skillKey)) continue;\n\t\t\tseenSkillIds.add(skillKey);\n\t\t\tskills.push({\n\t\t\t\tid: skillKey,\n\t\t\t\tname: skill.skillId,\n\t\t\t\tpath: `openclaw/skills/${skill.skillId}.md`,\n\t\t\t\tserviceIds: [svc.definition.id],\n\t\t\t});\n\t\t}\n\t}\n\n\tconst skillCount = skills.length;\n\n\tconst manifest: StackManifest = {\n\t\tformatVersion: \"1\",\n\t\tgeneratedAt: new Date().toISOString(),\n\t\tprojectName: input.projectName,\n\t\tdeployment: input.deployment,\n\t\tdeploymentType: input.deploymentType,\n\t\tplatform: input.platform,\n\t\tproxy: input.proxy,\n\t\tdomain: input.domain,\n\t\tservices,\n\t\tskills,\n\t\tmetadata: {\n\t\t\tserviceCount: resolved.services.length,\n\t\t\tskillCount,\n\t\t\testimatedMemoryMB: resolved.estimatedMemoryMB,\n\t\t},\n\t};\n\n\treturn {\n\t\t\"stack-manifest.json\": JSON.stringify(manifest, null, 2),\n\t};\n}\n"],"mappings":";;;;;;;AAoDA,SAAgB,sBACf,UACA,OACyB;CAEzB,MAAM,yBAAS,IAAI,KAAqB;AACxC,MAAK,MAAM,OAAO,SAAS,mBAAmB;EAC7C,MAAM,QAAQ,IAAI,aAAa,IAAI;AACnC,MAAI,IAAI,WACP,QAAO,IAAI,OAAO,IAAI,WAAW;;CAInC,MAAM,WAAmC,SAAS,SAAS,KAAK,QAAQ;EACvE,MAAM,MAAM,IAAI;AAChB,SAAO;GACN,IAAI,IAAI;GACR,MAAM,IAAI;GACV,UAAU,IAAI;GACd,MAAM,IAAI;GACV,OAAO,IAAI;GACX,UAAU,IAAI;GACd,OAAO,IAAI,MAAM,KAAK,OAAO;IAC5B,WAAW,EAAE;IACb,MAAM,EAAE;IACR,SAAS,EAAE;IACX,aAAa,EAAE;IACf,EAAE;GACH,SAAS,IAAI;GACb,SAAS,IAAI;GACb,GAAI,IAAI,YAAY,UAAU,OAAO,IAAI,IAAI,GAAG,GAAG,EAAE,cAAc,OAAO,IAAI,IAAI,GAAG,EAAE,GAAG,EAAE;GAC5F;GACA;CAGF,MAAM,SAA+B,EAAE;CACvC,MAAM,+BAAe,IAAI,KAAa;AACtC,MAAK,MAAM,OAAO,SAAS,SAC1B,MAAK,MAAM,SAAS,IAAI,WAAW,QAAQ;EAC1C,MAAM,WAAW,GAAG,IAAI,WAAW,GAAG,GAAG,MAAM;AAC/C,MAAI,aAAa,IAAI,SAAS,CAAE;AAChC,eAAa,IAAI,SAAS;AAC1B,SAAO,KAAK;GACX,IAAI;GACJ,MAAM,MAAM;GACZ,MAAM,mBAAmB,MAAM,QAAQ;GACvC,YAAY,CAAC,IAAI,WAAW,GAAG;GAC/B,CAAC;;CAIJ,MAAM,aAAa,OAAO;CAE1B,MAAM,WAA0B;EAC/B,eAAe;EACf,8BAAa,IAAI,MAAM,EAAC,aAAa;EACrC,aAAa,MAAM;EACnB,YAAY,MAAM;EAClB,gBAAgB,MAAM;EACtB,UAAU,MAAM;EAChB,OAAO,MAAM;EACb,QAAQ,MAAM;EACd;EACA;EACA,UAAU;GACT,cAAc,SAAS,SAAS;GAChC;GACA,mBAAmB,SAAS;GAC5B;EACD;AAED,QAAO,EACN,uBAAuB,KAAK,UAAU,UAAU,MAAM,EAAE,EACxD"}
1
+ {"version":3,"file":"stack-manifest.cjs","names":[],"sources":["../../src/generators/stack-manifest.ts"],"sourcesContent":["/**\n * Stack manifest generator — produces a JSON manifest describing the\n * chosen services, skills, and configuration for a generated stack.\n *\n * This manifest is consumed by Mission Control to render dynamic\n * services/skills pages for managing the deployed stack.\n */\n\nimport type { GenerationInput, ResolverOutput } from \"../types.js\";\n\nexport interface StackManifestService {\n\tid: string;\n\tname: string;\n\tcategory: string;\n\ticon: string;\n\timage: string;\n\timageTag: string;\n\tports: { container: number; host?: number; exposed: boolean; description: string }[];\n\tdocsUrl: string;\n\taddedBy: string;\n\tdependencyOf?: string;\n}\n\nexport interface StackManifestSkill {\n\tid: string;\n\tname: string;\n\tpath: string;\n\tserviceIds: string[];\n}\n\nexport interface StackManifest {\n\tformatVersion: string;\n\tgeneratedAt: string;\n\tprojectName: string;\n\tdeployment?: string;\n\tdeploymentType?: string;\n\tplatform?: string;\n\tproxy?: string;\n\tdomain?: string;\n\tservices: StackManifestService[];\n\tskills: StackManifestSkill[];\n\tmetadata: {\n\t\tserviceCount: number;\n\t\tskillCount: number;\n\t\testimatedMemoryMB: number;\n\t};\n}\n\n/**\n * Generate stack-manifest.json from resolved output and generation input.\n * Returns a single-file record: { \"stack-manifest.json\": string }.\n */\nexport function generateStackManifest(\n\tresolved: ResolverOutput,\n\tinput: GenerationInput,\n): Record<string, string> {\n\t// Build a lookup of dependency chains: serviceId → requiredBy\n\tconst depMap = new Map<string, string>();\n\tfor (const dep of resolved.addedDependencies) {\n\t\tconst depId = dep.serviceId ?? dep.service;\n\t\tif (dep.requiredBy) {\n\t\t\tdepMap.set(depId, dep.requiredBy);\n\t\t}\n\t}\n\n\tconst services: StackManifestService[] = resolved.services.map((svc) => {\n\t\tconst def = svc.definition;\n\t\treturn {\n\t\t\tid: def.id,\n\t\t\tname: def.name,\n\t\t\tcategory: def.category,\n\t\t\ticon: def.icon,\n\t\t\timage: def.image,\n\t\t\timageTag: def.imageTag,\n\t\t\tports: def.ports.map((p) => ({\n\t\t\t\tcontainer: p.container,\n\t\t\t\thost: p.host,\n\t\t\t\texposed: p.exposed,\n\t\t\t\tdescription: p.description,\n\t\t\t})),\n\t\t\tdocsUrl: def.docsUrl,\n\t\t\taddedBy: svc.addedBy,\n\t\t\t...(svc.addedBy !== \"user\" && depMap.has(def.id) ? { dependencyOf: depMap.get(def.id) } : {}),\n\t\t};\n\t});\n\n\t// Collect skills from service definitions (SkillBinding has skillId, not name)\n\tconst skills: StackManifestSkill[] = [];\n\tconst seenSkillIds = new Set<string>();\n\tfor (const svc of resolved.services) {\n\t\tfor (const skill of svc.definition.skills) {\n\t\t\tconst skillKey = `${svc.definition.id}-${skill.skillId}`;\n\t\t\tif (seenSkillIds.has(skillKey)) continue;\n\t\t\tseenSkillIds.add(skillKey);\n\t\t\tskills.push({\n\t\t\t\tid: skillKey,\n\t\t\t\tname: skill.skillId,\n\t\t\t\tpath: `openclaw/skills/${skill.skillId}.md`,\n\t\t\t\tserviceIds: [svc.definition.id],\n\t\t\t});\n\t\t}\n\t}\n\n\tconst skillCount = skills.length;\n\n\tconst manifest: StackManifest = {\n\t\tformatVersion: \"1\",\n\t\tgeneratedAt: new Date().toISOString(),\n\t\tprojectName: input.projectName,\n\t\tdeployment: input.deployment,\n\t\tdeploymentType: input.deploymentType,\n\t\tplatform: input.platform,\n\t\tproxy: input.proxy,\n\t\tdomain: input.domain,\n\t\tservices,\n\t\tskills,\n\t\tmetadata: {\n\t\t\tserviceCount: resolved.services.length,\n\t\t\tskillCount,\n\t\t\testimatedMemoryMB: resolved.estimatedMemoryMB,\n\t\t},\n\t};\n\n\treturn {\n\t\t\"stack-manifest.json\": JSON.stringify(manifest, null, 2),\n\t};\n}\n"],"mappings":";;;;;;AAoDA,SAAgB,sBACf,UACA,OACyB;CAEzB,MAAM,yBAAS,IAAI,KAAqB;AACxC,MAAK,MAAM,OAAO,SAAS,mBAAmB;EAC7C,MAAM,QAAQ,IAAI,aAAa,IAAI;AACnC,MAAI,IAAI,WACP,QAAO,IAAI,OAAO,IAAI,WAAW;;CAInC,MAAM,WAAmC,SAAS,SAAS,KAAK,QAAQ;EACvE,MAAM,MAAM,IAAI;AAChB,SAAO;GACN,IAAI,IAAI;GACR,MAAM,IAAI;GACV,UAAU,IAAI;GACd,MAAM,IAAI;GACV,OAAO,IAAI;GACX,UAAU,IAAI;GACd,OAAO,IAAI,MAAM,KAAK,OAAO;IAC5B,WAAW,EAAE;IACb,MAAM,EAAE;IACR,SAAS,EAAE;IACX,aAAa,EAAE;IACf,EAAE;GACH,SAAS,IAAI;GACb,SAAS,IAAI;GACb,GAAI,IAAI,YAAY,UAAU,OAAO,IAAI,IAAI,GAAG,GAAG,EAAE,cAAc,OAAO,IAAI,IAAI,GAAG,EAAE,GAAG,EAAE;GAC5F;GACA;CAGF,MAAM,SAA+B,EAAE;CACvC,MAAM,+BAAe,IAAI,KAAa;AACtC,MAAK,MAAM,OAAO,SAAS,SAC1B,MAAK,MAAM,SAAS,IAAI,WAAW,QAAQ;EAC1C,MAAM,WAAW,GAAG,IAAI,WAAW,GAAG,GAAG,MAAM;AAC/C,MAAI,aAAa,IAAI,SAAS,CAAE;AAChC,eAAa,IAAI,SAAS;AAC1B,SAAO,KAAK;GACX,IAAI;GACJ,MAAM,MAAM;GACZ,MAAM,mBAAmB,MAAM,QAAQ;GACvC,YAAY,CAAC,IAAI,WAAW,GAAG;GAC/B,CAAC;;CAIJ,MAAM,aAAa,OAAO;CAE1B,MAAM,WAA0B;EAC/B,eAAe;EACf,8BAAa,IAAI,MAAM,EAAC,aAAa;EACrC,aAAa,MAAM;EACnB,YAAY,MAAM;EAClB,gBAAgB,MAAM;EACtB,UAAU,MAAM;EAChB,OAAO,MAAM;EACb,QAAQ,MAAM;EACd;EACA;EACA,UAAU;GACT,cAAc,SAAS,SAAS;GAChC;GACA,mBAAmB,SAAS;GAC5B;EACD;AAED,QAAO,EACN,uBAAuB,KAAK,UAAU,UAAU,MAAM,EAAE,EACxD"}
@@ -62,7 +62,7 @@ function generateStackManifest(resolved, input) {
62
62
  };
63
63
  return { "stack-manifest.json": JSON.stringify(manifest, null, 2) };
64
64
  }
65
-
66
65
  //#endregion
67
66
  export { generateStackManifest };
67
+
68
68
  //# sourceMappingURL=stack-manifest.mjs.map
@@ -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/generators/traefik.ts
4
3
  /**
5
4
  * Generates Traefik configuration: a static config YAML file and per-service
@@ -82,7 +81,7 @@ log:
82
81
  level: INFO
83
82
  `;
84
83
  }
85
-
86
84
  //#endregion
87
85
  exports.generateTraefikConfig = generateTraefikConfig;
86
+
88
87
  //# sourceMappingURL=traefik.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"traefik.cjs","names":[],"sources":["../../src/generators/traefik.ts"],"sourcesContent":["import type { ResolverOutput } from \"../types.js\";\n\nexport interface TraefikGeneratorOutput {\n\tstaticConfig: string;\n\tserviceLabels: Map<string, Record<string, string>>;\n}\n\n/**\n * Generates Traefik configuration: a static config YAML file and per-service\n * Docker labels for automatic service discovery and reverse proxy routing.\n *\n * @param resolved - The resolved service configuration\n * @param domain - The main domain for routing (e.g. \"example.com\")\n * @returns Static config content and a map of serviceId → Docker labels\n */\nexport function generateTraefikConfig(\n\tresolved: ResolverOutput,\n\tdomain: string,\n): TraefikGeneratorOutput {\n\tconst staticConfig = generateStaticConfig(domain);\n\tconst serviceLabels = new Map<string, Record<string, string>>();\n\n\t// Per-service labels for exposed ports\n\tfor (const { definition } of resolved.services) {\n\t\tif (definition.id === \"traefik\" || definition.id === \"caddy\") continue;\n\n\t\tconst exposedPorts = definition.ports.filter((p) => p.exposed);\n\t\tif (exposedPorts.length === 0) continue;\n\n\t\tconst primaryPort = exposedPorts[0]!;\n\t\tconst routerName = definition.id.replace(/-/g, \"\");\n\n\t\tconst labels: Record<string, string> = {\n\t\t\t\"traefik.enable\": \"true\",\n\t\t\t// HTTPS router\n\t\t\t[`traefik.http.routers.${routerName}.rule`]: `Host(\\`${definition.id}.${domain}\\`)`,\n\t\t\t[`traefik.http.routers.${routerName}.entrypoints`]: \"websecure\",\n\t\t\t[`traefik.http.routers.${routerName}.tls.certresolver`]: \"letsencrypt\",\n\t\t\t[`traefik.http.services.${routerName}.loadbalancer.server.port`]: String(\n\t\t\t\tprimaryPort.container,\n\t\t\t),\n\t\t\t// HTTP → HTTPS redirect\n\t\t\t[`traefik.http.routers.${routerName}-http.rule`]: `Host(\\`${definition.id}.${domain}\\`)`,\n\t\t\t[`traefik.http.routers.${routerName}-http.entrypoints`]: \"web\",\n\t\t\t[`traefik.http.routers.${routerName}-http.middlewares`]: \"redirect-to-https\",\n\t\t};\n\n\t\tserviceLabels.set(definition.id, labels);\n\t}\n\n\t// Gateway gets the root domain\n\tserviceLabels.set(\"openclaw-gateway\", {\n\t\t\"traefik.enable\": \"true\",\n\t\t\"traefik.http.routers.gateway.rule\": `Host(\\`${domain}\\`)`,\n\t\t\"traefik.http.routers.gateway.entrypoints\": \"websecure\",\n\t\t\"traefik.http.routers.gateway.tls.certresolver\": \"letsencrypt\",\n\t\t\"traefik.http.services.gateway.loadbalancer.server.port\": \"18789\",\n\t\t\"traefik.http.routers.gateway-http.rule\": `Host(\\`${domain}\\`)`,\n\t\t\"traefik.http.routers.gateway-http.entrypoints\": \"web\",\n\t\t\"traefik.http.routers.gateway-http.middlewares\": \"redirect-to-https\",\n\t});\n\n\t// Global redirect middleware on the Traefik service itself\n\tserviceLabels.set(\"traefik\", {\n\t\t\"traefik.enable\": \"true\",\n\t\t\"traefik.http.middlewares.redirect-to-https.redirectscheme.scheme\": \"https\",\n\t\t\"traefik.http.middlewares.redirect-to-https.redirectscheme.permanent\": \"true\",\n\t});\n\n\treturn { staticConfig, serviceLabels };\n}\n\nfunction generateStaticConfig(domain: string): string {\n\treturn `# Traefik Static Configuration — Auto-generated by OpenClaw\n# Domain: ${domain}\n\napi:\n dashboard: true\n insecure: true\n\nentryPoints:\n web:\n address: \":80\"\n websecure:\n address: \":443\"\n\nproviders:\n docker:\n endpoint: \"unix:///var/run/docker.sock\"\n exposedByDefault: false\n network: openclaw-network\n\ncertificatesResolvers:\n letsencrypt:\n acme:\n email: admin@${domain}\n storage: /letsencrypt/acme.json\n httpChallenge:\n entryPoint: web\n\nlog:\n level: INFO\n`;\n}\n"],"mappings":";;;;;;;;;;;AAeA,SAAgB,sBACf,UACA,QACyB;CACzB,MAAM,eAAe,qBAAqB,OAAO;CACjD,MAAM,gCAAgB,IAAI,KAAqC;AAG/D,MAAK,MAAM,EAAE,gBAAgB,SAAS,UAAU;AAC/C,MAAI,WAAW,OAAO,aAAa,WAAW,OAAO,QAAS;EAE9D,MAAM,eAAe,WAAW,MAAM,QAAQ,MAAM,EAAE,QAAQ;AAC9D,MAAI,aAAa,WAAW,EAAG;EAE/B,MAAM,cAAc,aAAa;EACjC,MAAM,aAAa,WAAW,GAAG,QAAQ,MAAM,GAAG;EAElD,MAAM,SAAiC;GACtC,kBAAkB;IAEjB,wBAAwB,WAAW,SAAS,UAAU,WAAW,GAAG,GAAG,OAAO;IAC9E,wBAAwB,WAAW,gBAAgB;IACnD,wBAAwB,WAAW,qBAAqB;IACxD,yBAAyB,WAAW,6BAA6B,OACjE,YAAY,UACZ;IAEA,wBAAwB,WAAW,cAAc,UAAU,WAAW,GAAG,GAAG,OAAO;IACnF,wBAAwB,WAAW,qBAAqB;IACxD,wBAAwB,WAAW,qBAAqB;GACzD;AAED,gBAAc,IAAI,WAAW,IAAI,OAAO;;AAIzC,eAAc,IAAI,oBAAoB;EACrC,kBAAkB;EAClB,qCAAqC,UAAU,OAAO;EACtD,4CAA4C;EAC5C,iDAAiD;EACjD,0DAA0D;EAC1D,0CAA0C,UAAU,OAAO;EAC3D,iDAAiD;EACjD,iDAAiD;EACjD,CAAC;AAGF,eAAc,IAAI,WAAW;EAC5B,kBAAkB;EAClB,oEAAoE;EACpE,uEAAuE;EACvE,CAAC;AAEF,QAAO;EAAE;EAAc;EAAe;;AAGvC,SAAS,qBAAqB,QAAwB;AACrD,QAAO;YACI,OAAO;;;;;;;;;;;;;;;;;;;;;qBAqBE,OAAO"}
1
+ {"version":3,"file":"traefik.cjs","names":[],"sources":["../../src/generators/traefik.ts"],"sourcesContent":["import type { ResolverOutput } from \"../types.js\";\n\nexport interface TraefikGeneratorOutput {\n\tstaticConfig: string;\n\tserviceLabels: Map<string, Record<string, string>>;\n}\n\n/**\n * Generates Traefik configuration: a static config YAML file and per-service\n * Docker labels for automatic service discovery and reverse proxy routing.\n *\n * @param resolved - The resolved service configuration\n * @param domain - The main domain for routing (e.g. \"example.com\")\n * @returns Static config content and a map of serviceId → Docker labels\n */\nexport function generateTraefikConfig(\n\tresolved: ResolverOutput,\n\tdomain: string,\n): TraefikGeneratorOutput {\n\tconst staticConfig = generateStaticConfig(domain);\n\tconst serviceLabels = new Map<string, Record<string, string>>();\n\n\t// Per-service labels for exposed ports\n\tfor (const { definition } of resolved.services) {\n\t\tif (definition.id === \"traefik\" || definition.id === \"caddy\") continue;\n\n\t\tconst exposedPorts = definition.ports.filter((p) => p.exposed);\n\t\tif (exposedPorts.length === 0) continue;\n\n\t\tconst primaryPort = exposedPorts[0]!;\n\t\tconst routerName = definition.id.replace(/-/g, \"\");\n\n\t\tconst labels: Record<string, string> = {\n\t\t\t\"traefik.enable\": \"true\",\n\t\t\t// HTTPS router\n\t\t\t[`traefik.http.routers.${routerName}.rule`]: `Host(\\`${definition.id}.${domain}\\`)`,\n\t\t\t[`traefik.http.routers.${routerName}.entrypoints`]: \"websecure\",\n\t\t\t[`traefik.http.routers.${routerName}.tls.certresolver`]: \"letsencrypt\",\n\t\t\t[`traefik.http.services.${routerName}.loadbalancer.server.port`]: String(\n\t\t\t\tprimaryPort.container,\n\t\t\t),\n\t\t\t// HTTP → HTTPS redirect\n\t\t\t[`traefik.http.routers.${routerName}-http.rule`]: `Host(\\`${definition.id}.${domain}\\`)`,\n\t\t\t[`traefik.http.routers.${routerName}-http.entrypoints`]: \"web\",\n\t\t\t[`traefik.http.routers.${routerName}-http.middlewares`]: \"redirect-to-https\",\n\t\t};\n\n\t\tserviceLabels.set(definition.id, labels);\n\t}\n\n\t// Gateway gets the root domain\n\tserviceLabels.set(\"openclaw-gateway\", {\n\t\t\"traefik.enable\": \"true\",\n\t\t\"traefik.http.routers.gateway.rule\": `Host(\\`${domain}\\`)`,\n\t\t\"traefik.http.routers.gateway.entrypoints\": \"websecure\",\n\t\t\"traefik.http.routers.gateway.tls.certresolver\": \"letsencrypt\",\n\t\t\"traefik.http.services.gateway.loadbalancer.server.port\": \"18789\",\n\t\t\"traefik.http.routers.gateway-http.rule\": `Host(\\`${domain}\\`)`,\n\t\t\"traefik.http.routers.gateway-http.entrypoints\": \"web\",\n\t\t\"traefik.http.routers.gateway-http.middlewares\": \"redirect-to-https\",\n\t});\n\n\t// Global redirect middleware on the Traefik service itself\n\tserviceLabels.set(\"traefik\", {\n\t\t\"traefik.enable\": \"true\",\n\t\t\"traefik.http.middlewares.redirect-to-https.redirectscheme.scheme\": \"https\",\n\t\t\"traefik.http.middlewares.redirect-to-https.redirectscheme.permanent\": \"true\",\n\t});\n\n\treturn { staticConfig, serviceLabels };\n}\n\nfunction generateStaticConfig(domain: string): string {\n\treturn `# Traefik Static Configuration — Auto-generated by OpenClaw\n# Domain: ${domain}\n\napi:\n dashboard: true\n insecure: true\n\nentryPoints:\n web:\n address: \":80\"\n websecure:\n address: \":443\"\n\nproviders:\n docker:\n endpoint: \"unix:///var/run/docker.sock\"\n exposedByDefault: false\n network: openclaw-network\n\ncertificatesResolvers:\n letsencrypt:\n acme:\n email: admin@${domain}\n storage: /letsencrypt/acme.json\n httpChallenge:\n entryPoint: web\n\nlog:\n level: INFO\n`;\n}\n"],"mappings":";;;;;;;;;;AAeA,SAAgB,sBACf,UACA,QACyB;CACzB,MAAM,eAAe,qBAAqB,OAAO;CACjD,MAAM,gCAAgB,IAAI,KAAqC;AAG/D,MAAK,MAAM,EAAE,gBAAgB,SAAS,UAAU;AAC/C,MAAI,WAAW,OAAO,aAAa,WAAW,OAAO,QAAS;EAE9D,MAAM,eAAe,WAAW,MAAM,QAAQ,MAAM,EAAE,QAAQ;AAC9D,MAAI,aAAa,WAAW,EAAG;EAE/B,MAAM,cAAc,aAAa;EACjC,MAAM,aAAa,WAAW,GAAG,QAAQ,MAAM,GAAG;EAElD,MAAM,SAAiC;GACtC,kBAAkB;IAEjB,wBAAwB,WAAW,SAAS,UAAU,WAAW,GAAG,GAAG,OAAO;IAC9E,wBAAwB,WAAW,gBAAgB;IACnD,wBAAwB,WAAW,qBAAqB;IACxD,yBAAyB,WAAW,6BAA6B,OACjE,YAAY,UACZ;IAEA,wBAAwB,WAAW,cAAc,UAAU,WAAW,GAAG,GAAG,OAAO;IACnF,wBAAwB,WAAW,qBAAqB;IACxD,wBAAwB,WAAW,qBAAqB;GACzD;AAED,gBAAc,IAAI,WAAW,IAAI,OAAO;;AAIzC,eAAc,IAAI,oBAAoB;EACrC,kBAAkB;EAClB,qCAAqC,UAAU,OAAO;EACtD,4CAA4C;EAC5C,iDAAiD;EACjD,0DAA0D;EAC1D,0CAA0C,UAAU,OAAO;EAC3D,iDAAiD;EACjD,iDAAiD;EACjD,CAAC;AAGF,eAAc,IAAI,WAAW;EAC5B,kBAAkB;EAClB,oEAAoE;EACpE,uEAAuE;EACvE,CAAC;AAEF,QAAO;EAAE;EAAc;EAAe;;AAGvC,SAAS,qBAAqB,QAAwB;AACrD,QAAO;YACI,OAAO;;;;;;;;;;;;;;;;;;;;;qBAqBE,OAAO"}
@@ -80,7 +80,7 @@ log:
80
80
  level: INFO
81
81
  `;
82
82
  }
83
-
84
83
  //#endregion
85
84
  export { generateTraefikConfig };
85
+
86
86
  //# sourceMappingURL=traefik.mjs.map
@@ -1,7 +1,6 @@
1
- const require_vi_2VT5v0um = require('../vi.2VT5v0um-BmRMvymT.cjs');
2
- const require_resolver = require('../resolver.cjs');
3
- const require_generators_traefik = require('./traefik.cjs');
4
-
1
+ const require_vi_2VT5v0um = require("../vi.2VT5v0um-CRqXre87.cjs");
2
+ const require_resolver = require("../resolver.cjs");
3
+ const require_generators_traefik = require("./traefik.cjs");
5
4
  //#region src/generators/traefik.test.ts
6
5
  function resolveWith(services) {
7
6
  return require_resolver.resolve({
@@ -63,6 +62,6 @@ require_vi_2VT5v0um.describe("generateTraefikConfig", () => {
63
62
  require_vi_2VT5v0um.globalExpect(labels["traefik.http.routers.openwebui.rule"]).toBe("Host(`open-webui.example.com`)");
64
63
  });
65
64
  });
66
-
67
65
  //#endregion
66
+
68
67
  //# sourceMappingURL=traefik.test.cjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"traefik.test.cjs","names":["resolve","describe","generateTraefikConfig"],"sources":["../../src/generators/traefik.test.ts"],"sourcesContent":["import { describe, expect, it } from \"vitest\";\nimport { resolve } from \"../resolver.js\";\nimport type { ResolverOutput } from \"../types.js\";\nimport { generateTraefikConfig } from \"./traefik.js\";\n\nfunction resolveWith(services: string[]): ResolverOutput {\n\treturn resolve({ services, skillPacks: [], proxy: \"traefik\", gpu: false });\n}\n\ndescribe(\"generateTraefikConfig\", () => {\n\tconst domain = \"example.com\";\n\n\tit(\"generates static config with domain email and entrypoints\", () => {\n\t\tconst resolved = resolveWith([\"redis\"]);\n\t\tconst { staticConfig } = generateTraefikConfig(resolved, domain);\n\n\t\texpect(staticConfig).toContain(\"admin@example.com\");\n\t\texpect(staticConfig).toContain('address: \":80\"');\n\t\texpect(staticConfig).toContain('address: \":443\"');\n\t\texpect(staticConfig).toContain(\"exposedByDefault: false\");\n\t\texpect(staticConfig).toContain(\"openclaw-network\");\n\t});\n\n\tit(\"generates labels for services with exposed ports\", () => {\n\t\tconst resolved = resolveWith([\"redis\"]);\n\t\tconst { serviceLabels } = generateTraefikConfig(resolved, domain);\n\n\t\tconst redisLabels = serviceLabels.get(\"redis\");\n\t\texpect(redisLabels).toBeDefined();\n\t\texpect(redisLabels![\"traefik.enable\"]).toBe(\"true\");\n\t\texpect(redisLabels![\"traefik.http.routers.redis.rule\"]).toBe(\"Host(`redis.example.com`)\");\n\t\texpect(redisLabels![\"traefik.http.routers.redis.entrypoints\"]).toBe(\"websecure\");\n\t\texpect(redisLabels![\"traefik.http.routers.redis.tls.certresolver\"]).toBe(\"letsencrypt\");\n\t\texpect(redisLabels![\"traefik.http.services.redis.loadbalancer.server.port\"]).toBe(\"6379\");\n\t});\n\n\tit(\"generates HTTP to HTTPS redirect labels\", () => {\n\t\tconst resolved = resolveWith([\"redis\"]);\n\t\tconst { serviceLabels } = generateTraefikConfig(resolved, domain);\n\n\t\tconst redisLabels = serviceLabels.get(\"redis\")!;\n\t\texpect(redisLabels[\"traefik.http.routers.redis-http.entrypoints\"]).toBe(\"web\");\n\t\texpect(redisLabels[\"traefik.http.routers.redis-http.middlewares\"]).toBe(\"redirect-to-https\");\n\t});\n\n\tit(\"assigns root domain to gateway\", () => {\n\t\tconst resolved = resolveWith([\"redis\"]);\n\t\tconst { serviceLabels } = generateTraefikConfig(resolved, domain);\n\n\t\tconst gwLabels = serviceLabels.get(\"openclaw-gateway\");\n\t\texpect(gwLabels).toBeDefined();\n\t\texpect(gwLabels![\"traefik.http.routers.gateway.rule\"]).toBe(\"Host(`example.com`)\");\n\t\texpect(gwLabels![\"traefik.http.services.gateway.loadbalancer.server.port\"]).toBe(\"18789\");\n\t});\n\n\tit(\"adds global redirect middleware on traefik service\", () => {\n\t\tconst resolved = resolveWith([\"redis\"]);\n\t\tconst { serviceLabels } = generateTraefikConfig(resolved, domain);\n\n\t\tconst traefikLabels = serviceLabels.get(\"traefik\");\n\t\texpect(traefikLabels).toBeDefined();\n\t\texpect(traefikLabels![\"traefik.http.middlewares.redirect-to-https.redirectscheme.scheme\"]).toBe(\n\t\t\t\"https\",\n\t\t);\n\t\texpect(\n\t\t\ttraefikLabels![\"traefik.http.middlewares.redirect-to-https.redirectscheme.permanent\"],\n\t\t).toBe(\"true\");\n\t});\n\n\tit(\"skips proxy services and services without exposed ports\", () => {\n\t\tconst resolved = resolveWith([\"redis\", \"ffmpeg\"]);\n\t\tconst { serviceLabels } = generateTraefikConfig(resolved, domain);\n\n\t\t// ffmpeg has no exposed ports\n\t\texpect(serviceLabels.has(\"ffmpeg\")).toBe(false);\n\t\t// traefik itself is handled separately (not as a regular service)\n\t\texpect(serviceLabels.get(\"traefik\")![\"traefik.http.routers.traefik.rule\"]).toBeUndefined();\n\t});\n\n\tit(\"sanitizes service names with hyphens in router names\", () => {\n\t\tconst resolved = resolveWith([\"open-webui\"]);\n\t\tconst { serviceLabels } = generateTraefikConfig(resolved, domain);\n\n\t\tconst labels = serviceLabels.get(\"open-webui\");\n\t\texpect(labels).toBeDefined();\n\t\t// Router name has hyphens removed\n\t\texpect(labels![\"traefik.http.routers.openwebui.rule\"]).toBe(\"Host(`open-webui.example.com`)\");\n\t});\n});\n"],"mappings":";;;;;AAKA,SAAS,YAAY,UAAoC;AACxD,QAAOA,yBAAQ;EAAE;EAAU,YAAY,EAAE;EAAE,OAAO;EAAW,KAAK;EAAO,CAAC;;AAG3EC,6BAAS,+BAA+B;CACvC,MAAM,SAAS;AAEf,wBAAG,mEAAmE;EAErE,MAAM,EAAE,iBAAiBC,iDADR,YAAY,CAAC,QAAQ,CAAC,EACkB,OAAO;AAEhE,mCAAO,aAAa,CAAC,UAAU,oBAAoB;AACnD,mCAAO,aAAa,CAAC,UAAU,mBAAiB;AAChD,mCAAO,aAAa,CAAC,UAAU,oBAAkB;AACjD,mCAAO,aAAa,CAAC,UAAU,0BAA0B;AACzD,mCAAO,aAAa,CAAC,UAAU,mBAAmB;GACjD;AAEF,wBAAG,0DAA0D;EAE5D,MAAM,EAAE,kBAAkBA,iDADT,YAAY,CAAC,QAAQ,CAAC,EACmB,OAAO;EAEjE,MAAM,cAAc,cAAc,IAAI,QAAQ;AAC9C,mCAAO,YAAY,CAAC,aAAa;AACjC,mCAAO,YAAa,kBAAkB,CAAC,KAAK,OAAO;AACnD,mCAAO,YAAa,mCAAmC,CAAC,KAAK,4BAA4B;AACzF,mCAAO,YAAa,0CAA0C,CAAC,KAAK,YAAY;AAChF,mCAAO,YAAa,+CAA+C,CAAC,KAAK,cAAc;AACvF,mCAAO,YAAa,wDAAwD,CAAC,KAAK,OAAO;GACxF;AAEF,wBAAG,iDAAiD;EAEnD,MAAM,EAAE,kBAAkBA,iDADT,YAAY,CAAC,QAAQ,CAAC,EACmB,OAAO;EAEjE,MAAM,cAAc,cAAc,IAAI,QAAQ;AAC9C,mCAAO,YAAY,+CAA+C,CAAC,KAAK,MAAM;AAC9E,mCAAO,YAAY,+CAA+C,CAAC,KAAK,oBAAoB;GAC3F;AAEF,wBAAG,wCAAwC;EAE1C,MAAM,EAAE,kBAAkBA,iDADT,YAAY,CAAC,QAAQ,CAAC,EACmB,OAAO;EAEjE,MAAM,WAAW,cAAc,IAAI,mBAAmB;AACtD,mCAAO,SAAS,CAAC,aAAa;AAC9B,mCAAO,SAAU,qCAAqC,CAAC,KAAK,sBAAsB;AAClF,mCAAO,SAAU,0DAA0D,CAAC,KAAK,QAAQ;GACxF;AAEF,wBAAG,4DAA4D;EAE9D,MAAM,EAAE,kBAAkBA,iDADT,YAAY,CAAC,QAAQ,CAAC,EACmB,OAAO;EAEjE,MAAM,gBAAgB,cAAc,IAAI,UAAU;AAClD,mCAAO,cAAc,CAAC,aAAa;AACnC,mCAAO,cAAe,oEAAoE,CAAC,KAC1F,QACA;AACD,mCACC,cAAe,uEACf,CAAC,KAAK,OAAO;GACb;AAEF,wBAAG,iEAAiE;EAEnE,MAAM,EAAE,kBAAkBA,iDADT,YAAY,CAAC,SAAS,SAAS,CAAC,EACS,OAAO;AAGjE,mCAAO,cAAc,IAAI,SAAS,CAAC,CAAC,KAAK,MAAM;AAE/C,mCAAO,cAAc,IAAI,UAAU,CAAE,qCAAqC,CAAC,eAAe;GACzF;AAEF,wBAAG,8DAA8D;EAEhE,MAAM,EAAE,kBAAkBA,iDADT,YAAY,CAAC,aAAa,CAAC,EACc,OAAO;EAEjE,MAAM,SAAS,cAAc,IAAI,aAAa;AAC9C,mCAAO,OAAO,CAAC,aAAa;AAE5B,mCAAO,OAAQ,uCAAuC,CAAC,KAAK,iCAAiC;GAC5F;EACD"}
1
+ {"version":3,"file":"traefik.test.cjs","names":["resolve","describe","generateTraefikConfig"],"sources":["../../src/generators/traefik.test.ts"],"sourcesContent":["import { describe, expect, it } from \"vitest\";\nimport { resolve } from \"../resolver.js\";\nimport type { ResolverOutput } from \"../types.js\";\nimport { generateTraefikConfig } from \"./traefik.js\";\n\nfunction resolveWith(services: string[]): ResolverOutput {\n\treturn resolve({ services, skillPacks: [], proxy: \"traefik\", gpu: false });\n}\n\ndescribe(\"generateTraefikConfig\", () => {\n\tconst domain = \"example.com\";\n\n\tit(\"generates static config with domain email and entrypoints\", () => {\n\t\tconst resolved = resolveWith([\"redis\"]);\n\t\tconst { staticConfig } = generateTraefikConfig(resolved, domain);\n\n\t\texpect(staticConfig).toContain(\"admin@example.com\");\n\t\texpect(staticConfig).toContain('address: \":80\"');\n\t\texpect(staticConfig).toContain('address: \":443\"');\n\t\texpect(staticConfig).toContain(\"exposedByDefault: false\");\n\t\texpect(staticConfig).toContain(\"openclaw-network\");\n\t});\n\n\tit(\"generates labels for services with exposed ports\", () => {\n\t\tconst resolved = resolveWith([\"redis\"]);\n\t\tconst { serviceLabels } = generateTraefikConfig(resolved, domain);\n\n\t\tconst redisLabels = serviceLabels.get(\"redis\");\n\t\texpect(redisLabels).toBeDefined();\n\t\texpect(redisLabels![\"traefik.enable\"]).toBe(\"true\");\n\t\texpect(redisLabels![\"traefik.http.routers.redis.rule\"]).toBe(\"Host(`redis.example.com`)\");\n\t\texpect(redisLabels![\"traefik.http.routers.redis.entrypoints\"]).toBe(\"websecure\");\n\t\texpect(redisLabels![\"traefik.http.routers.redis.tls.certresolver\"]).toBe(\"letsencrypt\");\n\t\texpect(redisLabels![\"traefik.http.services.redis.loadbalancer.server.port\"]).toBe(\"6379\");\n\t});\n\n\tit(\"generates HTTP to HTTPS redirect labels\", () => {\n\t\tconst resolved = resolveWith([\"redis\"]);\n\t\tconst { serviceLabels } = generateTraefikConfig(resolved, domain);\n\n\t\tconst redisLabels = serviceLabels.get(\"redis\")!;\n\t\texpect(redisLabels[\"traefik.http.routers.redis-http.entrypoints\"]).toBe(\"web\");\n\t\texpect(redisLabels[\"traefik.http.routers.redis-http.middlewares\"]).toBe(\"redirect-to-https\");\n\t});\n\n\tit(\"assigns root domain to gateway\", () => {\n\t\tconst resolved = resolveWith([\"redis\"]);\n\t\tconst { serviceLabels } = generateTraefikConfig(resolved, domain);\n\n\t\tconst gwLabels = serviceLabels.get(\"openclaw-gateway\");\n\t\texpect(gwLabels).toBeDefined();\n\t\texpect(gwLabels![\"traefik.http.routers.gateway.rule\"]).toBe(\"Host(`example.com`)\");\n\t\texpect(gwLabels![\"traefik.http.services.gateway.loadbalancer.server.port\"]).toBe(\"18789\");\n\t});\n\n\tit(\"adds global redirect middleware on traefik service\", () => {\n\t\tconst resolved = resolveWith([\"redis\"]);\n\t\tconst { serviceLabels } = generateTraefikConfig(resolved, domain);\n\n\t\tconst traefikLabels = serviceLabels.get(\"traefik\");\n\t\texpect(traefikLabels).toBeDefined();\n\t\texpect(traefikLabels![\"traefik.http.middlewares.redirect-to-https.redirectscheme.scheme\"]).toBe(\n\t\t\t\"https\",\n\t\t);\n\t\texpect(\n\t\t\ttraefikLabels![\"traefik.http.middlewares.redirect-to-https.redirectscheme.permanent\"],\n\t\t).toBe(\"true\");\n\t});\n\n\tit(\"skips proxy services and services without exposed ports\", () => {\n\t\tconst resolved = resolveWith([\"redis\", \"ffmpeg\"]);\n\t\tconst { serviceLabels } = generateTraefikConfig(resolved, domain);\n\n\t\t// ffmpeg has no exposed ports\n\t\texpect(serviceLabels.has(\"ffmpeg\")).toBe(false);\n\t\t// traefik itself is handled separately (not as a regular service)\n\t\texpect(serviceLabels.get(\"traefik\")![\"traefik.http.routers.traefik.rule\"]).toBeUndefined();\n\t});\n\n\tit(\"sanitizes service names with hyphens in router names\", () => {\n\t\tconst resolved = resolveWith([\"open-webui\"]);\n\t\tconst { serviceLabels } = generateTraefikConfig(resolved, domain);\n\n\t\tconst labels = serviceLabels.get(\"open-webui\");\n\t\texpect(labels).toBeDefined();\n\t\t// Router name has hyphens removed\n\t\texpect(labels![\"traefik.http.routers.openwebui.rule\"]).toBe(\"Host(`open-webui.example.com`)\");\n\t});\n});\n"],"mappings":";;;;AAKA,SAAS,YAAY,UAAoC;AACxD,QAAOA,iBAAAA,QAAQ;EAAE;EAAU,YAAY,EAAE;EAAE,OAAO;EAAW,KAAK;EAAO,CAAC;;AAG3EC,oBAAAA,SAAS,+BAA+B;CACvC,MAAM,SAAS;AAEf,qBAAA,GAAG,mEAAmE;EAErE,MAAM,EAAE,iBAAiBC,2BAAAA,sBADR,YAAY,CAAC,QAAQ,CAAC,EACkB,OAAO;AAEhE,sBAAA,aAAO,aAAa,CAAC,UAAU,oBAAoB;AACnD,sBAAA,aAAO,aAAa,CAAC,UAAU,mBAAiB;AAChD,sBAAA,aAAO,aAAa,CAAC,UAAU,oBAAkB;AACjD,sBAAA,aAAO,aAAa,CAAC,UAAU,0BAA0B;AACzD,sBAAA,aAAO,aAAa,CAAC,UAAU,mBAAmB;GACjD;AAEF,qBAAA,GAAG,0DAA0D;EAE5D,MAAM,EAAE,kBAAkBA,2BAAAA,sBADT,YAAY,CAAC,QAAQ,CAAC,EACmB,OAAO;EAEjE,MAAM,cAAc,cAAc,IAAI,QAAQ;AAC9C,sBAAA,aAAO,YAAY,CAAC,aAAa;AACjC,sBAAA,aAAO,YAAa,kBAAkB,CAAC,KAAK,OAAO;AACnD,sBAAA,aAAO,YAAa,mCAAmC,CAAC,KAAK,4BAA4B;AACzF,sBAAA,aAAO,YAAa,0CAA0C,CAAC,KAAK,YAAY;AAChF,sBAAA,aAAO,YAAa,+CAA+C,CAAC,KAAK,cAAc;AACvF,sBAAA,aAAO,YAAa,wDAAwD,CAAC,KAAK,OAAO;GACxF;AAEF,qBAAA,GAAG,iDAAiD;EAEnD,MAAM,EAAE,kBAAkBA,2BAAAA,sBADT,YAAY,CAAC,QAAQ,CAAC,EACmB,OAAO;EAEjE,MAAM,cAAc,cAAc,IAAI,QAAQ;AAC9C,sBAAA,aAAO,YAAY,+CAA+C,CAAC,KAAK,MAAM;AAC9E,sBAAA,aAAO,YAAY,+CAA+C,CAAC,KAAK,oBAAoB;GAC3F;AAEF,qBAAA,GAAG,wCAAwC;EAE1C,MAAM,EAAE,kBAAkBA,2BAAAA,sBADT,YAAY,CAAC,QAAQ,CAAC,EACmB,OAAO;EAEjE,MAAM,WAAW,cAAc,IAAI,mBAAmB;AACtD,sBAAA,aAAO,SAAS,CAAC,aAAa;AAC9B,sBAAA,aAAO,SAAU,qCAAqC,CAAC,KAAK,sBAAsB;AAClF,sBAAA,aAAO,SAAU,0DAA0D,CAAC,KAAK,QAAQ;GACxF;AAEF,qBAAA,GAAG,4DAA4D;EAE9D,MAAM,EAAE,kBAAkBA,2BAAAA,sBADT,YAAY,CAAC,QAAQ,CAAC,EACmB,OAAO;EAEjE,MAAM,gBAAgB,cAAc,IAAI,UAAU;AAClD,sBAAA,aAAO,cAAc,CAAC,aAAa;AACnC,sBAAA,aAAO,cAAe,oEAAoE,CAAC,KAC1F,QACA;AACD,sBAAA,aACC,cAAe,uEACf,CAAC,KAAK,OAAO;GACb;AAEF,qBAAA,GAAG,iEAAiE;EAEnE,MAAM,EAAE,kBAAkBA,2BAAAA,sBADT,YAAY,CAAC,SAAS,SAAS,CAAC,EACS,OAAO;AAGjE,sBAAA,aAAO,cAAc,IAAI,SAAS,CAAC,CAAC,KAAK,MAAM;AAE/C,sBAAA,aAAO,cAAc,IAAI,UAAU,CAAE,qCAAqC,CAAC,eAAe;GACzF;AAEF,qBAAA,GAAG,8DAA8D;EAEhE,MAAM,EAAE,kBAAkBA,2BAAAA,sBADT,YAAY,CAAC,aAAa,CAAC,EACc,OAAO;EAEjE,MAAM,SAAS,cAAc,IAAI,aAAa;AAC9C,sBAAA,aAAO,OAAO,CAAC,aAAa;AAE5B,sBAAA,aAAO,OAAQ,uCAAuC,CAAC,KAAK,iCAAiC;GAC5F;EACD"}
@@ -1,7 +1,6 @@
1
- import { n as describe, r as it, t as globalExpect } from "../vi.2VT5v0um-CFyDIn0m.mjs";
1
+ import { n as describe, r as it, t as globalExpect } from "../vi.2VT5v0um-DvC3SVNc.mjs";
2
2
  import { resolve } from "../resolver.mjs";
3
3
  import { generateTraefikConfig } from "./traefik.mjs";
4
-
5
4
  //#region src/generators/traefik.test.ts
6
5
  function resolveWith(services) {
7
6
  return resolve({
@@ -63,7 +62,7 @@ describe("generateTraefikConfig", () => {
63
62
  globalExpect(labels["traefik.http.routers.openwebui.rule"]).toBe("Host(`open-webui.example.com`)");
64
63
  });
65
64
  });
66
-
67
65
  //#endregion
68
- export { };
66
+ export {};
67
+
69
68
  //# sourceMappingURL=traefik.test.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"traefik.test.mjs","names":[],"sources":["../../src/generators/traefik.test.ts"],"sourcesContent":["import { describe, expect, it } from \"vitest\";\nimport { resolve } from \"../resolver.js\";\nimport type { ResolverOutput } from \"../types.js\";\nimport { generateTraefikConfig } from \"./traefik.js\";\n\nfunction resolveWith(services: string[]): ResolverOutput {\n\treturn resolve({ services, skillPacks: [], proxy: \"traefik\", gpu: false });\n}\n\ndescribe(\"generateTraefikConfig\", () => {\n\tconst domain = \"example.com\";\n\n\tit(\"generates static config with domain email and entrypoints\", () => {\n\t\tconst resolved = resolveWith([\"redis\"]);\n\t\tconst { staticConfig } = generateTraefikConfig(resolved, domain);\n\n\t\texpect(staticConfig).toContain(\"admin@example.com\");\n\t\texpect(staticConfig).toContain('address: \":80\"');\n\t\texpect(staticConfig).toContain('address: \":443\"');\n\t\texpect(staticConfig).toContain(\"exposedByDefault: false\");\n\t\texpect(staticConfig).toContain(\"openclaw-network\");\n\t});\n\n\tit(\"generates labels for services with exposed ports\", () => {\n\t\tconst resolved = resolveWith([\"redis\"]);\n\t\tconst { serviceLabels } = generateTraefikConfig(resolved, domain);\n\n\t\tconst redisLabels = serviceLabels.get(\"redis\");\n\t\texpect(redisLabels).toBeDefined();\n\t\texpect(redisLabels![\"traefik.enable\"]).toBe(\"true\");\n\t\texpect(redisLabels![\"traefik.http.routers.redis.rule\"]).toBe(\"Host(`redis.example.com`)\");\n\t\texpect(redisLabels![\"traefik.http.routers.redis.entrypoints\"]).toBe(\"websecure\");\n\t\texpect(redisLabels![\"traefik.http.routers.redis.tls.certresolver\"]).toBe(\"letsencrypt\");\n\t\texpect(redisLabels![\"traefik.http.services.redis.loadbalancer.server.port\"]).toBe(\"6379\");\n\t});\n\n\tit(\"generates HTTP to HTTPS redirect labels\", () => {\n\t\tconst resolved = resolveWith([\"redis\"]);\n\t\tconst { serviceLabels } = generateTraefikConfig(resolved, domain);\n\n\t\tconst redisLabels = serviceLabels.get(\"redis\")!;\n\t\texpect(redisLabels[\"traefik.http.routers.redis-http.entrypoints\"]).toBe(\"web\");\n\t\texpect(redisLabels[\"traefik.http.routers.redis-http.middlewares\"]).toBe(\"redirect-to-https\");\n\t});\n\n\tit(\"assigns root domain to gateway\", () => {\n\t\tconst resolved = resolveWith([\"redis\"]);\n\t\tconst { serviceLabels } = generateTraefikConfig(resolved, domain);\n\n\t\tconst gwLabels = serviceLabels.get(\"openclaw-gateway\");\n\t\texpect(gwLabels).toBeDefined();\n\t\texpect(gwLabels![\"traefik.http.routers.gateway.rule\"]).toBe(\"Host(`example.com`)\");\n\t\texpect(gwLabels![\"traefik.http.services.gateway.loadbalancer.server.port\"]).toBe(\"18789\");\n\t});\n\n\tit(\"adds global redirect middleware on traefik service\", () => {\n\t\tconst resolved = resolveWith([\"redis\"]);\n\t\tconst { serviceLabels } = generateTraefikConfig(resolved, domain);\n\n\t\tconst traefikLabels = serviceLabels.get(\"traefik\");\n\t\texpect(traefikLabels).toBeDefined();\n\t\texpect(traefikLabels![\"traefik.http.middlewares.redirect-to-https.redirectscheme.scheme\"]).toBe(\n\t\t\t\"https\",\n\t\t);\n\t\texpect(\n\t\t\ttraefikLabels![\"traefik.http.middlewares.redirect-to-https.redirectscheme.permanent\"],\n\t\t).toBe(\"true\");\n\t});\n\n\tit(\"skips proxy services and services without exposed ports\", () => {\n\t\tconst resolved = resolveWith([\"redis\", \"ffmpeg\"]);\n\t\tconst { serviceLabels } = generateTraefikConfig(resolved, domain);\n\n\t\t// ffmpeg has no exposed ports\n\t\texpect(serviceLabels.has(\"ffmpeg\")).toBe(false);\n\t\t// traefik itself is handled separately (not as a regular service)\n\t\texpect(serviceLabels.get(\"traefik\")![\"traefik.http.routers.traefik.rule\"]).toBeUndefined();\n\t});\n\n\tit(\"sanitizes service names with hyphens in router names\", () => {\n\t\tconst resolved = resolveWith([\"open-webui\"]);\n\t\tconst { serviceLabels } = generateTraefikConfig(resolved, domain);\n\n\t\tconst labels = serviceLabels.get(\"open-webui\");\n\t\texpect(labels).toBeDefined();\n\t\t// Router name has hyphens removed\n\t\texpect(labels![\"traefik.http.routers.openwebui.rule\"]).toBe(\"Host(`open-webui.example.com`)\");\n\t});\n});\n"],"mappings":";;;;;AAKA,SAAS,YAAY,UAAoC;AACxD,QAAO,QAAQ;EAAE;EAAU,YAAY,EAAE;EAAE,OAAO;EAAW,KAAK;EAAO,CAAC;;AAG3E,SAAS,+BAA+B;CACvC,MAAM,SAAS;AAEf,IAAG,mEAAmE;EAErE,MAAM,EAAE,iBAAiB,sBADR,YAAY,CAAC,QAAQ,CAAC,EACkB,OAAO;AAEhE,eAAO,aAAa,CAAC,UAAU,oBAAoB;AACnD,eAAO,aAAa,CAAC,UAAU,mBAAiB;AAChD,eAAO,aAAa,CAAC,UAAU,oBAAkB;AACjD,eAAO,aAAa,CAAC,UAAU,0BAA0B;AACzD,eAAO,aAAa,CAAC,UAAU,mBAAmB;GACjD;AAEF,IAAG,0DAA0D;EAE5D,MAAM,EAAE,kBAAkB,sBADT,YAAY,CAAC,QAAQ,CAAC,EACmB,OAAO;EAEjE,MAAM,cAAc,cAAc,IAAI,QAAQ;AAC9C,eAAO,YAAY,CAAC,aAAa;AACjC,eAAO,YAAa,kBAAkB,CAAC,KAAK,OAAO;AACnD,eAAO,YAAa,mCAAmC,CAAC,KAAK,4BAA4B;AACzF,eAAO,YAAa,0CAA0C,CAAC,KAAK,YAAY;AAChF,eAAO,YAAa,+CAA+C,CAAC,KAAK,cAAc;AACvF,eAAO,YAAa,wDAAwD,CAAC,KAAK,OAAO;GACxF;AAEF,IAAG,iDAAiD;EAEnD,MAAM,EAAE,kBAAkB,sBADT,YAAY,CAAC,QAAQ,CAAC,EACmB,OAAO;EAEjE,MAAM,cAAc,cAAc,IAAI,QAAQ;AAC9C,eAAO,YAAY,+CAA+C,CAAC,KAAK,MAAM;AAC9E,eAAO,YAAY,+CAA+C,CAAC,KAAK,oBAAoB;GAC3F;AAEF,IAAG,wCAAwC;EAE1C,MAAM,EAAE,kBAAkB,sBADT,YAAY,CAAC,QAAQ,CAAC,EACmB,OAAO;EAEjE,MAAM,WAAW,cAAc,IAAI,mBAAmB;AACtD,eAAO,SAAS,CAAC,aAAa;AAC9B,eAAO,SAAU,qCAAqC,CAAC,KAAK,sBAAsB;AAClF,eAAO,SAAU,0DAA0D,CAAC,KAAK,QAAQ;GACxF;AAEF,IAAG,4DAA4D;EAE9D,MAAM,EAAE,kBAAkB,sBADT,YAAY,CAAC,QAAQ,CAAC,EACmB,OAAO;EAEjE,MAAM,gBAAgB,cAAc,IAAI,UAAU;AAClD,eAAO,cAAc,CAAC,aAAa;AACnC,eAAO,cAAe,oEAAoE,CAAC,KAC1F,QACA;AACD,eACC,cAAe,uEACf,CAAC,KAAK,OAAO;GACb;AAEF,IAAG,iEAAiE;EAEnE,MAAM,EAAE,kBAAkB,sBADT,YAAY,CAAC,SAAS,SAAS,CAAC,EACS,OAAO;AAGjE,eAAO,cAAc,IAAI,SAAS,CAAC,CAAC,KAAK,MAAM;AAE/C,eAAO,cAAc,IAAI,UAAU,CAAE,qCAAqC,CAAC,eAAe;GACzF;AAEF,IAAG,8DAA8D;EAEhE,MAAM,EAAE,kBAAkB,sBADT,YAAY,CAAC,aAAa,CAAC,EACc,OAAO;EAEjE,MAAM,SAAS,cAAc,IAAI,aAAa;AAC9C,eAAO,OAAO,CAAC,aAAa;AAE5B,eAAO,OAAQ,uCAAuC,CAAC,KAAK,iCAAiC;GAC5F;EACD"}
1
+ {"version":3,"file":"traefik.test.mjs","names":[],"sources":["../../src/generators/traefik.test.ts"],"sourcesContent":["import { describe, expect, it } from \"vitest\";\nimport { resolve } from \"../resolver.js\";\nimport type { ResolverOutput } from \"../types.js\";\nimport { generateTraefikConfig } from \"./traefik.js\";\n\nfunction resolveWith(services: string[]): ResolverOutput {\n\treturn resolve({ services, skillPacks: [], proxy: \"traefik\", gpu: false });\n}\n\ndescribe(\"generateTraefikConfig\", () => {\n\tconst domain = \"example.com\";\n\n\tit(\"generates static config with domain email and entrypoints\", () => {\n\t\tconst resolved = resolveWith([\"redis\"]);\n\t\tconst { staticConfig } = generateTraefikConfig(resolved, domain);\n\n\t\texpect(staticConfig).toContain(\"admin@example.com\");\n\t\texpect(staticConfig).toContain('address: \":80\"');\n\t\texpect(staticConfig).toContain('address: \":443\"');\n\t\texpect(staticConfig).toContain(\"exposedByDefault: false\");\n\t\texpect(staticConfig).toContain(\"openclaw-network\");\n\t});\n\n\tit(\"generates labels for services with exposed ports\", () => {\n\t\tconst resolved = resolveWith([\"redis\"]);\n\t\tconst { serviceLabels } = generateTraefikConfig(resolved, domain);\n\n\t\tconst redisLabels = serviceLabels.get(\"redis\");\n\t\texpect(redisLabels).toBeDefined();\n\t\texpect(redisLabels![\"traefik.enable\"]).toBe(\"true\");\n\t\texpect(redisLabels![\"traefik.http.routers.redis.rule\"]).toBe(\"Host(`redis.example.com`)\");\n\t\texpect(redisLabels![\"traefik.http.routers.redis.entrypoints\"]).toBe(\"websecure\");\n\t\texpect(redisLabels![\"traefik.http.routers.redis.tls.certresolver\"]).toBe(\"letsencrypt\");\n\t\texpect(redisLabels![\"traefik.http.services.redis.loadbalancer.server.port\"]).toBe(\"6379\");\n\t});\n\n\tit(\"generates HTTP to HTTPS redirect labels\", () => {\n\t\tconst resolved = resolveWith([\"redis\"]);\n\t\tconst { serviceLabels } = generateTraefikConfig(resolved, domain);\n\n\t\tconst redisLabels = serviceLabels.get(\"redis\")!;\n\t\texpect(redisLabels[\"traefik.http.routers.redis-http.entrypoints\"]).toBe(\"web\");\n\t\texpect(redisLabels[\"traefik.http.routers.redis-http.middlewares\"]).toBe(\"redirect-to-https\");\n\t});\n\n\tit(\"assigns root domain to gateway\", () => {\n\t\tconst resolved = resolveWith([\"redis\"]);\n\t\tconst { serviceLabels } = generateTraefikConfig(resolved, domain);\n\n\t\tconst gwLabels = serviceLabels.get(\"openclaw-gateway\");\n\t\texpect(gwLabels).toBeDefined();\n\t\texpect(gwLabels![\"traefik.http.routers.gateway.rule\"]).toBe(\"Host(`example.com`)\");\n\t\texpect(gwLabels![\"traefik.http.services.gateway.loadbalancer.server.port\"]).toBe(\"18789\");\n\t});\n\n\tit(\"adds global redirect middleware on traefik service\", () => {\n\t\tconst resolved = resolveWith([\"redis\"]);\n\t\tconst { serviceLabels } = generateTraefikConfig(resolved, domain);\n\n\t\tconst traefikLabels = serviceLabels.get(\"traefik\");\n\t\texpect(traefikLabels).toBeDefined();\n\t\texpect(traefikLabels![\"traefik.http.middlewares.redirect-to-https.redirectscheme.scheme\"]).toBe(\n\t\t\t\"https\",\n\t\t);\n\t\texpect(\n\t\t\ttraefikLabels![\"traefik.http.middlewares.redirect-to-https.redirectscheme.permanent\"],\n\t\t).toBe(\"true\");\n\t});\n\n\tit(\"skips proxy services and services without exposed ports\", () => {\n\t\tconst resolved = resolveWith([\"redis\", \"ffmpeg\"]);\n\t\tconst { serviceLabels } = generateTraefikConfig(resolved, domain);\n\n\t\t// ffmpeg has no exposed ports\n\t\texpect(serviceLabels.has(\"ffmpeg\")).toBe(false);\n\t\t// traefik itself is handled separately (not as a regular service)\n\t\texpect(serviceLabels.get(\"traefik\")![\"traefik.http.routers.traefik.rule\"]).toBeUndefined();\n\t});\n\n\tit(\"sanitizes service names with hyphens in router names\", () => {\n\t\tconst resolved = resolveWith([\"open-webui\"]);\n\t\tconst { serviceLabels } = generateTraefikConfig(resolved, domain);\n\n\t\tconst labels = serviceLabels.get(\"open-webui\");\n\t\texpect(labels).toBeDefined();\n\t\t// Router name has hyphens removed\n\t\texpect(labels![\"traefik.http.routers.openwebui.rule\"]).toBe(\"Host(`open-webui.example.com`)\");\n\t});\n});\n"],"mappings":";;;;AAKA,SAAS,YAAY,UAAoC;AACxD,QAAO,QAAQ;EAAE;EAAU,YAAY,EAAE;EAAE,OAAO;EAAW,KAAK;EAAO,CAAC;;AAG3E,SAAS,+BAA+B;CACvC,MAAM,SAAS;AAEf,IAAG,mEAAmE;EAErE,MAAM,EAAE,iBAAiB,sBADR,YAAY,CAAC,QAAQ,CAAC,EACkB,OAAO;AAEhE,eAAO,aAAa,CAAC,UAAU,oBAAoB;AACnD,eAAO,aAAa,CAAC,UAAU,mBAAiB;AAChD,eAAO,aAAa,CAAC,UAAU,oBAAkB;AACjD,eAAO,aAAa,CAAC,UAAU,0BAA0B;AACzD,eAAO,aAAa,CAAC,UAAU,mBAAmB;GACjD;AAEF,IAAG,0DAA0D;EAE5D,MAAM,EAAE,kBAAkB,sBADT,YAAY,CAAC,QAAQ,CAAC,EACmB,OAAO;EAEjE,MAAM,cAAc,cAAc,IAAI,QAAQ;AAC9C,eAAO,YAAY,CAAC,aAAa;AACjC,eAAO,YAAa,kBAAkB,CAAC,KAAK,OAAO;AACnD,eAAO,YAAa,mCAAmC,CAAC,KAAK,4BAA4B;AACzF,eAAO,YAAa,0CAA0C,CAAC,KAAK,YAAY;AAChF,eAAO,YAAa,+CAA+C,CAAC,KAAK,cAAc;AACvF,eAAO,YAAa,wDAAwD,CAAC,KAAK,OAAO;GACxF;AAEF,IAAG,iDAAiD;EAEnD,MAAM,EAAE,kBAAkB,sBADT,YAAY,CAAC,QAAQ,CAAC,EACmB,OAAO;EAEjE,MAAM,cAAc,cAAc,IAAI,QAAQ;AAC9C,eAAO,YAAY,+CAA+C,CAAC,KAAK,MAAM;AAC9E,eAAO,YAAY,+CAA+C,CAAC,KAAK,oBAAoB;GAC3F;AAEF,IAAG,wCAAwC;EAE1C,MAAM,EAAE,kBAAkB,sBADT,YAAY,CAAC,QAAQ,CAAC,EACmB,OAAO;EAEjE,MAAM,WAAW,cAAc,IAAI,mBAAmB;AACtD,eAAO,SAAS,CAAC,aAAa;AAC9B,eAAO,SAAU,qCAAqC,CAAC,KAAK,sBAAsB;AAClF,eAAO,SAAU,0DAA0D,CAAC,KAAK,QAAQ;GACxF;AAEF,IAAG,4DAA4D;EAE9D,MAAM,EAAE,kBAAkB,sBADT,YAAY,CAAC,QAAQ,CAAC,EACmB,OAAO;EAEjE,MAAM,gBAAgB,cAAc,IAAI,UAAU;AAClD,eAAO,cAAc,CAAC,aAAa;AACnC,eAAO,cAAe,oEAAoE,CAAC,KAC1F,QACA;AACD,eACC,cAAe,uEACf,CAAC,KAAK,OAAO;GACb;AAEF,IAAG,iEAAiE;EAEnE,MAAM,EAAE,kBAAkB,sBADT,YAAY,CAAC,SAAS,SAAS,CAAC,EACS,OAAO;AAGjE,eAAO,cAAc,IAAI,SAAS,CAAC,CAAC,KAAK,MAAM;AAE/C,eAAO,cAAc,IAAI,UAAU,CAAE,qCAAqC,CAAC,eAAe;GACzF;AAEF,IAAG,8DAA8D;EAEhE,MAAM,EAAE,kBAAkB,sBADT,YAAY,CAAC,aAAa,CAAC,EACc,OAAO;EAEjE,MAAM,SAAS,cAAc,IAAI,aAAa;AAC9C,eAAO,OAAO,CAAC,aAAa;AAE5B,eAAO,OAAQ,uCAAuC,CAAC,KAAK,iCAAiC;GAC5F;EACD"}
package/dist/index.cjs CHANGED
@@ -1,34 +1,33 @@
1
- Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
2
- const require_bare_metal_partition = require('./bare-metal-partition.cjs');
3
- const require_services_registry = require('./services/registry.cjs');
4
- const require_skills_registry = require('./skills/registry.cjs');
5
- const require_resolver = require('./resolver.cjs');
6
- const require_generators_postgres_init = require('./generators/postgres-init.cjs');
7
- const require_composer = require('./composer.cjs');
8
- const require_errors = require('./errors.cjs');
9
- const require_generators_caddy = require('./generators/caddy.cjs');
10
- const require_generators_env = require('./generators/env.cjs');
11
- const require_generators_grafana = require('./generators/grafana.cjs');
12
- const require_generators_health_check = require('./generators/health-check.cjs');
13
- const require_generators_n8n_workflows = require('./generators/n8n-workflows.cjs');
14
- const require_generators_prometheus = require('./generators/prometheus.cjs');
15
- const require_generators_readme = require('./generators/readme.cjs');
16
- const require_generators_scripts = require('./generators/scripts.cjs');
17
- const require_generators_skills = require('./generators/skills.cjs');
18
- const require_generators_stack_manifest = require('./generators/stack-manifest.cjs');
19
- const require_migrations = require('./migrations.cjs');
20
- const require_validator = require('./validator.cjs');
21
- const require_generate = require('./generate.cjs');
22
- const require_presets_registry = require('./presets/registry.cjs');
23
- const require_deployers_coolify = require('./deployers/coolify.cjs');
24
- const require_deployers_dokploy = require('./deployers/dokploy.cjs');
25
- const require_deployers_index = require('./deployers/index.cjs');
26
- const require_port_scanner = require('./port-scanner.cjs');
27
- const require_schema = require('./schema.cjs');
28
- const require_skills_skill_manifest = require('./skills/skill-manifest.cjs');
29
- const require_types = require('./types.cjs');
30
- const require_version_manager = require('./version-manager.cjs');
31
-
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_skills = require("./skills-BlzpHmpH.cjs");
3
+ const require_bare_metal_partition = require("./bare-metal-partition.cjs");
4
+ const require_services_registry = require("./services/registry.cjs");
5
+ const require_skills_registry = require("./skills/registry.cjs");
6
+ const require_resolver = require("./resolver.cjs");
7
+ const require_generators_postgres_init = require("./generators/postgres-init.cjs");
8
+ const require_composer = require("./composer.cjs");
9
+ const require_errors = require("./errors.cjs");
10
+ const require_generators_caddy = require("./generators/caddy.cjs");
11
+ const require_generators_env = require("./generators/env.cjs");
12
+ const require_generators_grafana = require("./generators/grafana.cjs");
13
+ const require_generators_health_check = require("./generators/health-check.cjs");
14
+ const require_generators_n8n_workflows = require("./generators/n8n-workflows.cjs");
15
+ const require_generators_prometheus = require("./generators/prometheus.cjs");
16
+ const require_generators_readme = require("./generators/readme.cjs");
17
+ const require_generators_scripts = require("./generators/scripts.cjs");
18
+ const require_generators_stack_manifest = require("./generators/stack-manifest.cjs");
19
+ const require_migrations = require("./migrations.cjs");
20
+ const require_validator = require("./validator.cjs");
21
+ const require_generate = require("./generate.cjs");
22
+ const require_presets_registry = require("./presets/registry.cjs");
23
+ const require_deployers_coolify = require("./deployers/coolify.cjs");
24
+ const require_deployers_dokploy = require("./deployers/dokploy.cjs");
25
+ const require_deployers_index = require("./deployers/index.cjs");
26
+ const require_port_scanner = require("./port-scanner.cjs");
27
+ const require_schema = require("./schema.cjs");
28
+ const require_skill_manifest = require("./skill-manifest--IgY9REK.cjs");
29
+ const require_types = require("./types.cjs");
30
+ const require_version_manager = require("./version-manager.cjs");
32
31
  exports.AddedDependencySchema = require_schema.AddedDependencySchema;
33
32
  exports.ApiErrorSchema = require_schema.ApiErrorSchema;
34
33
  exports.CURRENT_CONFIG_VERSION = require_migrations.CURRENT_CONFIG_VERSION;
@@ -85,9 +84,9 @@ exports.generatePrometheusConfig = require_generators_prometheus.generatePrometh
85
84
  exports.generateReadme = require_generators_readme.generateReadme;
86
85
  exports.generateScripts = require_generators_scripts.generateScripts;
87
86
  exports.generateServicesDoc = require_generate.generateServicesDoc;
88
- exports.generateSkillFiles = require_generators_skills.generateSkillFiles;
87
+ exports.generateSkillFiles = require_skills.generateSkillFiles;
89
88
  exports.generateStackManifest = require_generators_stack_manifest.generateStackManifest;
90
- exports.getAllManifestSkills = require_skills_skill_manifest.getAllManifestSkills;
89
+ exports.getAllManifestSkills = require_skill_manifest.getAllManifestSkills;
91
90
  exports.getAllPresets = require_presets_registry.getAllPresets;
92
91
  exports.getAllServices = require_services_registry.getAllServices;
93
92
  exports.getAllSkillPacks = require_skills_registry.getAllSkillPacks;
@@ -97,8 +96,8 @@ exports.getDbRequirements = require_generators_postgres_init.getDbRequirements;
97
96
  exports.getDeployer = require_deployers_index.getDeployer;
98
97
  exports.getImageReference = require_version_manager.getImageReference;
99
98
  exports.getImageTag = require_version_manager.getImageTag;
100
- exports.getManifestSkillById = require_skills_skill_manifest.getManifestSkillById;
101
- exports.getManifestSkillCount = require_skills_skill_manifest.getManifestSkillCount;
99
+ exports.getManifestSkillById = require_skill_manifest.getManifestSkillById;
100
+ exports.getManifestSkillCount = require_skill_manifest.getManifestSkillCount;
102
101
  exports.getPresetById = require_presets_registry.getPresetById;
103
102
  exports.getServiceById = require_services_registry.getServiceById;
104
103
  exports.getServicesByCategory = require_services_registry.getServicesByCategory;
@@ -115,4 +114,4 @@ exports.resolvedWithOnlyServices = require_bare_metal_partition.resolvedWithOnly
115
114
  exports.scanPortConflicts = require_port_scanner.scanPortConflicts;
116
115
  exports.serviceRegistry = require_services_registry.serviceRegistry;
117
116
  exports.skillPackRegistry = require_skills_registry.skillPackRegistry;
118
- exports.validate = require_validator.validate;
117
+ exports.validate = require_validator.validate;
package/dist/index.d.cts CHANGED
@@ -1,10 +1,10 @@
1
- import { AddedDependencySchema, ApiErrorSchema, ComposeOptionsSchema, DeploySchema, DeployTargetSchema, DeploymentTargetSchema, DeploymentTypeSchema, EnvVariableSchema, ErrorSchema, GenerationInputSchema, HealthCheckSchema, MaturitySchema, NativePlatformSchema, NativeRecipeSchema, OpenclawImageVariantSchema, OpenclawInstallMethodSchema, OutputFormatSchema, PlatformSchema, PortMappingSchema, PresetSchema, ProxyTypeSchema, ResolvedServiceSchema, ResolverOutputSchema, ResourceLimitsSchema, RestartPolicySchema, ServiceCategorySchema, ServiceDefinitionSchema, SkillBindingSchema, SkillPackSchema, ValidateRequestSchema, ValidateResponseSchema, VolumeMappingSchema, WarningSchema } from "./schema.cjs";
1
+ import { A as ServiceDefinitionSchema, C as PresetSchema, D as ResourceLimitsSchema, E as ResolverOutputSchema, F as VolumeMappingSchema, I as WarningSchema, M as SkillPackSchema, N as ValidateRequestSchema, O as RestartPolicySchema, P as ValidateResponseSchema, S as PortMappingSchema, T as ResolvedServiceSchema, _ as NativeRecipeSchema, b as OutputFormatSchema, c as DeploymentTargetSchema, d as ErrorSchema, f as GenerationInputSchema, g as NativePlatformSchema, h as MaturitySchema, i as ComposeOptionsSchema, j as SkillBindingSchema, k as ServiceCategorySchema, l as DeploymentTypeSchema, m as HealthCheckSchema, o as DeploySchema, r as ApiErrorSchema, s as DeployTargetSchema, t as AddedDependencySchema, u as EnvVariableSchema, v as OpenclawImageVariantSchema, w as ProxyTypeSchema, x as PlatformSchema, y as OpenclawInstallMethodSchema } from "./schema-C_hc7e4k.cjs";
2
2
  import { AddedDependency, AiProvider, ApiError, CategoryInfo, ComposeOptions, Deploy, DeployTarget, DeploymentTarget, DeploymentType, EnvVariable, GeneratedFiles, GenerationInput, GenerationMetadata, GenerationResult, GsdRuntime, HealthCheck, Maturity, NativePlatform, NativeRecipe, OpenclawImageVariant, OpenclawInstallMethod, OutputFormat, Platform, PortMapping, Preset, ProxyType, ResolvedService, ResolverError, ResolverInput, ResolverOutput, ResourceLimits, RestartPolicy, SERVICE_CATEGORIES, ServiceCategory, ServiceDefinition, SkillBinding, SkillPack, ValidateRequest, ValidateResponse, VolumeMapping, Warning } from "./types.cjs";
3
3
  import { partitionBareMetal, platformToNativePlatform, resolvedWithOnlyServices } from "./bare-metal-partition.cjs";
4
4
  import { ComposeResult, compose, composeMultiFile } from "./composer.cjs";
5
- import { DeployInput, DeployResult, DeployStep, DeployTarget as DeployTarget$1, PaasDeployer, PaasServer } from "./deployers/types.cjs";
6
- import { CoolifyDeployer } from "./deployers/coolify.cjs";
7
- import { DokployDeployer } from "./deployers/dokploy.cjs";
5
+ import { d as PaasDeployer, f as PaasServer, i as DeployTarget$1, n as DeployResult, r as DeployStep, t as DeployInput } from "./types-CR83OJiq.cjs";
6
+ import { t as CoolifyDeployer } from "./coolify-vlb1G9V2.cjs";
7
+ import { t as DokployDeployer } from "./dokploy-8cbrxUun.cjs";
8
8
  import { deployerRegistry, getAvailableDeployers, getDeployer } from "./deployers/index.cjs";
9
9
  import { StackConfigError, ValidationError } from "./errors.cjs";
10
10
  import { generate, generateServicesDoc } from "./generate.cjs";
package/dist/index.d.mts CHANGED
@@ -1,10 +1,10 @@
1
- import { AddedDependencySchema, ApiErrorSchema, ComposeOptionsSchema, DeploySchema, DeployTargetSchema, DeploymentTargetSchema, DeploymentTypeSchema, EnvVariableSchema, ErrorSchema, GenerationInputSchema, HealthCheckSchema, MaturitySchema, NativePlatformSchema, NativeRecipeSchema, OpenclawImageVariantSchema, OpenclawInstallMethodSchema, OutputFormatSchema, PlatformSchema, PortMappingSchema, PresetSchema, ProxyTypeSchema, ResolvedServiceSchema, ResolverOutputSchema, ResourceLimitsSchema, RestartPolicySchema, ServiceCategorySchema, ServiceDefinitionSchema, SkillBindingSchema, SkillPackSchema, ValidateRequestSchema, ValidateResponseSchema, VolumeMappingSchema, WarningSchema } from "./schema.mjs";
1
+ import { A as ServiceDefinitionSchema, C as PresetSchema, D as ResourceLimitsSchema, E as ResolverOutputSchema, F as VolumeMappingSchema, I as WarningSchema, M as SkillPackSchema, N as ValidateRequestSchema, O as RestartPolicySchema, P as ValidateResponseSchema, S as PortMappingSchema, T as ResolvedServiceSchema, _ as NativeRecipeSchema, b as OutputFormatSchema, c as DeploymentTargetSchema, d as ErrorSchema, f as GenerationInputSchema, g as NativePlatformSchema, h as MaturitySchema, i as ComposeOptionsSchema, j as SkillBindingSchema, k as ServiceCategorySchema, l as DeploymentTypeSchema, m as HealthCheckSchema, o as DeploySchema, r as ApiErrorSchema, s as DeployTargetSchema, t as AddedDependencySchema, u as EnvVariableSchema, v as OpenclawImageVariantSchema, w as ProxyTypeSchema, x as PlatformSchema, y as OpenclawInstallMethodSchema } from "./schema-CaesJaS2.mjs";
2
2
  import { AddedDependency, AiProvider, ApiError, CategoryInfo, ComposeOptions, Deploy, DeployTarget, DeploymentTarget, DeploymentType, EnvVariable, GeneratedFiles, GenerationInput, GenerationMetadata, GenerationResult, GsdRuntime, HealthCheck, Maturity, NativePlatform, NativeRecipe, OpenclawImageVariant, OpenclawInstallMethod, OutputFormat, Platform, PortMapping, Preset, ProxyType, ResolvedService, ResolverError, ResolverInput, ResolverOutput, ResourceLimits, RestartPolicy, SERVICE_CATEGORIES, ServiceCategory, ServiceDefinition, SkillBinding, SkillPack, ValidateRequest, ValidateResponse, VolumeMapping, Warning } from "./types.mjs";
3
3
  import { partitionBareMetal, platformToNativePlatform, resolvedWithOnlyServices } from "./bare-metal-partition.mjs";
4
4
  import { ComposeResult, compose, composeMultiFile } from "./composer.mjs";
5
- import { DeployInput, DeployResult, DeployStep, DeployTarget as DeployTarget$1, PaasDeployer, PaasServer } from "./deployers/types.mjs";
6
- import { CoolifyDeployer } from "./deployers/coolify.mjs";
7
- import { DokployDeployer } from "./deployers/dokploy.mjs";
5
+ import { d as PaasDeployer, f as PaasServer, i as DeployTarget$1, n as DeployResult, r as DeployStep, t as DeployInput } from "./types-zYjGTuyn.mjs";
6
+ import { t as CoolifyDeployer } from "./coolify-BVGGcMrT.mjs";
7
+ import { t as DokployDeployer } from "./dokploy-BTflLhTM.mjs";
8
8
  import { deployerRegistry, getAvailableDeployers, getDeployer } from "./deployers/index.mjs";
9
9
  import { StackConfigError, ValidationError } from "./errors.mjs";
10
10
  import { generate, generateServicesDoc } from "./generate.mjs";
package/dist/index.mjs CHANGED
@@ -24,8 +24,7 @@ import { DokployDeployer } from "./deployers/dokploy.mjs";
24
24
  import { deployerRegistry, getAvailableDeployers, getDeployer } from "./deployers/index.mjs";
25
25
  import { formatPortConflicts, scanPortConflicts } from "./port-scanner.mjs";
26
26
  import { AddedDependencySchema, ApiErrorSchema, ComposeOptionsSchema, DeploySchema, DeployTargetSchema, DeploymentTargetSchema, DeploymentTypeSchema, EnvVariableSchema, ErrorSchema, GenerationInputSchema, HealthCheckSchema, MaturitySchema, NativePlatformSchema, NativeRecipeSchema, OpenclawImageVariantSchema, OpenclawInstallMethodSchema, OutputFormatSchema, PlatformSchema, PortMappingSchema, PresetSchema, ProxyTypeSchema, ResolvedServiceSchema, ResolverOutputSchema, ResourceLimitsSchema, RestartPolicySchema, ServiceCategorySchema, ServiceDefinitionSchema, SkillBindingSchema, SkillPackSchema, ValidateRequestSchema, ValidateResponseSchema, VolumeMappingSchema, WarningSchema } from "./schema.mjs";
27
- import { getAllManifestSkills, getManifestSkillById, getManifestSkillCount } from "./skills/skill-manifest.mjs";
27
+ import { n as getManifestSkillById, r as getManifestSkillCount, t as getAllManifestSkills } from "./skill-manifest-BVUXU0__.mjs";
28
28
  import { SERVICE_CATEGORIES } from "./types.mjs";
29
29
  import { checkCompatibility, getImageReference, getImageTag, pinImageTags } from "./version-manager.mjs";
30
-
31
- export { AddedDependencySchema, ApiErrorSchema, CURRENT_CONFIG_VERSION, ComposeOptionsSchema, CoolifyDeployer, DeploySchema, DeployTargetSchema, DeploymentTargetSchema, DeploymentTypeSchema, DokployDeployer, EnvVariableSchema, ErrorSchema, GenerationInputSchema, HealthCheckSchema, MaturitySchema, NativePlatformSchema, NativeRecipeSchema, OpenclawImageVariantSchema, OpenclawInstallMethodSchema, OutputFormatSchema, PlatformSchema, PortMappingSchema, PresetSchema, ProxyTypeSchema, ResolvedServiceSchema, ResolverOutputSchema, ResourceLimitsSchema, RestartPolicySchema, SERVICE_CATEGORIES, ServiceCategorySchema, ServiceDefinitionSchema, SkillBindingSchema, SkillPackSchema, StackConfigError, ValidateRequestSchema, ValidateResponseSchema, ValidationError, VolumeMappingSchema, WarningSchema, checkCompatibility, compose, composeMultiFile, deployerRegistry, formatPortConflicts, generate, generateCaddyfile, generateEnvFiles, generateGrafanaConfig, generateGrafanaDashboard, generateHealthCheck, generateN8nWorkflows, generatePostgresInit, generatePrometheusConfig, generateReadme, generateScripts, generateServicesDoc, generateSkillFiles, generateStackManifest, getAllManifestSkills, getAllPresets, getAllServices, getAllSkillPacks, getAvailableDeployers, getCompatibleSkillPacks, getDbRequirements, getDeployer, getImageReference, getImageTag, getManifestSkillById, getManifestSkillCount, getPresetById, getServiceById, getServicesByCategory, getSkillPackById, getStructuredEnvVars, migrateConfig, needsMigration, partitionBareMetal, pinImageTags, platformToNativePlatform, presetRegistry, resolve, resolvedWithOnlyServices, scanPortConflicts, serviceRegistry, skillPackRegistry, validate };
30
+ export { AddedDependencySchema, ApiErrorSchema, CURRENT_CONFIG_VERSION, ComposeOptionsSchema, CoolifyDeployer, DeploySchema, DeployTargetSchema, DeploymentTargetSchema, DeploymentTypeSchema, DokployDeployer, EnvVariableSchema, ErrorSchema, GenerationInputSchema, HealthCheckSchema, MaturitySchema, NativePlatformSchema, NativeRecipeSchema, OpenclawImageVariantSchema, OpenclawInstallMethodSchema, OutputFormatSchema, PlatformSchema, PortMappingSchema, PresetSchema, ProxyTypeSchema, ResolvedServiceSchema, ResolverOutputSchema, ResourceLimitsSchema, RestartPolicySchema, SERVICE_CATEGORIES, ServiceCategorySchema, ServiceDefinitionSchema, SkillBindingSchema, SkillPackSchema, StackConfigError, ValidateRequestSchema, ValidateResponseSchema, ValidationError, VolumeMappingSchema, WarningSchema, checkCompatibility, compose, composeMultiFile, deployerRegistry, formatPortConflicts, generate, generateCaddyfile, generateEnvFiles, generateGrafanaConfig, generateGrafanaDashboard, generateHealthCheck, generateN8nWorkflows, generatePostgresInit, generatePrometheusConfig, generateReadme, generateScripts, generateServicesDoc, generateSkillFiles, generateStackManifest, getAllManifestSkills, getAllPresets, getAllServices, getAllSkillPacks, getAvailableDeployers, getCompatibleSkillPacks, getDbRequirements, getDeployer, getImageReference, getImageTag, getManifestSkillById, getManifestSkillCount, getPresetById, getServiceById, getServicesByCategory, getSkillPackById, getStructuredEnvVars, migrateConfig, needsMigration, partitionBareMetal, pinImageTags, platformToNativePlatform, presetRegistry, resolve, resolvedWithOnlyServices, scanPortConflicts, serviceRegistry, skillPackRegistry, validate };
@@ -1,4 +1,3 @@
1
-
2
1
  //#region node_modules/.pnpm/@jridgewell+sourcemap-codec@1.5.5/node_modules/@jridgewell/sourcemap-codec/dist/sourcemap-codec.mjs
3
2
  var comma = ",".charCodeAt(0);
4
3
  var semicolon = ";".charCodeAt(0);
@@ -73,7 +72,6 @@ function encode(decoded) {
73
72
  }
74
73
  return writer.flush();
75
74
  }
76
-
77
75
  //#endregion
78
76
  //#region node_modules/.pnpm/magic-string@0.30.21/node_modules/magic-string/dist/magic-string.es.mjs
79
77
  var BitSet = class BitSet {
@@ -1009,7 +1007,7 @@ var MagicString = class MagicString {
1009
1007
  return this._replaceRegexp(searchValue, replacement);
1010
1008
  }
1011
1009
  };
1012
-
1013
1010
  //#endregion
1014
1011
  exports.default = MagicString;
1015
- //# sourceMappingURL=magic-string.es-D2agHT3I.cjs.map
1012
+
1013
+ //# sourceMappingURL=magic-string.es-CJq41xdM.cjs.map