@better-openclaw/core 1.0.5 → 1.0.7

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 (414) hide show
  1. package/.github/workflows/publish-core.yml +32 -34
  2. package/dist/bare-metal-partition.d.mts +26 -0
  3. package/dist/bare-metal-partition.d.mts.map +1 -0
  4. package/dist/bare-metal-partition.mjs +48 -0
  5. package/dist/bare-metal-partition.mjs.map +1 -0
  6. package/dist/bare-metal-partition.test.d.mts +1 -0
  7. package/dist/bare-metal-partition.test.mjs +58 -0
  8. package/dist/bare-metal-partition.test.mjs.map +1 -0
  9. package/dist/composer.d.mts +21 -0
  10. package/dist/composer.d.mts.map +1 -0
  11. package/dist/composer.mjs +287 -0
  12. package/dist/composer.mjs.map +1 -0
  13. package/dist/composer.snapshot.test.d.mts +1 -0
  14. package/dist/composer.snapshot.test.mjs +92 -0
  15. package/dist/composer.snapshot.test.mjs.map +1 -0
  16. package/dist/composer.test.d.mts +1 -0
  17. package/dist/composer.test.mjs +166 -0
  18. package/dist/composer.test.mjs.map +1 -0
  19. package/dist/generate.d.mts +11 -0
  20. package/dist/generate.d.mts.map +1 -0
  21. package/dist/generate.mjs +169 -0
  22. package/dist/generate.mjs.map +1 -0
  23. package/dist/generate.test.d.mts +1 -0
  24. package/dist/generate.test.mjs +283 -0
  25. package/dist/generate.test.mjs.map +1 -0
  26. package/dist/generators/bare-metal-install.d.mts +17 -0
  27. package/dist/generators/bare-metal-install.d.mts.map +1 -0
  28. package/dist/generators/bare-metal-install.mjs +224 -0
  29. package/dist/generators/bare-metal-install.mjs.map +1 -0
  30. package/dist/generators/bare-metal-install.test.d.mts +1 -0
  31. package/dist/generators/bare-metal-install.test.mjs +48 -0
  32. package/dist/generators/bare-metal-install.test.mjs.map +1 -0
  33. package/dist/generators/caddy.d.mts +17 -0
  34. package/dist/generators/caddy.d.mts.map +1 -0
  35. package/dist/generators/caddy.mjs +77 -0
  36. package/dist/generators/caddy.mjs.map +1 -0
  37. package/dist/generators/env.d.mts +46 -0
  38. package/dist/generators/env.d.mts.map +1 -0
  39. package/dist/generators/env.mjs +250 -0
  40. package/dist/generators/env.mjs.map +1 -0
  41. package/dist/generators/grafana.d.mts +22 -0
  42. package/dist/generators/grafana.d.mts.map +1 -0
  43. package/dist/generators/grafana.mjs +293 -0
  44. package/dist/generators/grafana.mjs.map +1 -0
  45. package/dist/generators/n8n-workflows.d.mts +11 -0
  46. package/dist/generators/n8n-workflows.d.mts.map +1 -0
  47. package/dist/generators/n8n-workflows.mjs +75 -0
  48. package/dist/generators/n8n-workflows.mjs.map +1 -0
  49. package/dist/generators/native-services.d.mts +17 -0
  50. package/dist/generators/native-services.d.mts.map +1 -0
  51. package/dist/generators/native-services.mjs +78 -0
  52. package/dist/generators/native-services.mjs.map +1 -0
  53. package/dist/generators/postgres-init.d.mts +30 -0
  54. package/dist/generators/postgres-init.d.mts.map +1 -0
  55. package/dist/generators/postgres-init.mjs +151 -0
  56. package/dist/generators/postgres-init.mjs.map +1 -0
  57. package/dist/generators/prometheus.d.mts +14 -0
  58. package/dist/generators/prometheus.d.mts.map +1 -0
  59. package/dist/generators/prometheus.mjs +107 -0
  60. package/dist/generators/prometheus.mjs.map +1 -0
  61. package/dist/generators/readme.d.mts +25 -0
  62. package/dist/generators/readme.d.mts.map +1 -0
  63. package/dist/generators/readme.mjs +199 -0
  64. package/dist/generators/readme.mjs.map +1 -0
  65. package/dist/generators/scripts.d.mts +10 -0
  66. package/dist/generators/scripts.d.mts.map +1 -0
  67. package/dist/generators/scripts.mjs +351 -0
  68. package/dist/generators/scripts.mjs.map +1 -0
  69. package/dist/generators/skills.d.mts +14 -0
  70. package/dist/generators/skills.d.mts.map +1 -0
  71. package/dist/generators/skills.mjs +587 -0
  72. package/dist/generators/skills.mjs.map +1 -0
  73. package/dist/index.d.mts +21 -0
  74. package/dist/index.mjs +22 -0
  75. package/dist/magic-string.es-1uTtupLe.mjs +1014 -0
  76. package/dist/magic-string.es-1uTtupLe.mjs.map +1 -0
  77. package/dist/presets/registry.d.mts +9 -0
  78. package/dist/presets/registry.d.mts.map +1 -0
  79. package/dist/presets/registry.mjs +159 -0
  80. package/dist/presets/registry.mjs.map +1 -0
  81. package/dist/presets/registry.test.d.mts +1 -0
  82. package/dist/presets/registry.test.mjs +34 -0
  83. package/dist/presets/registry.test.mjs.map +1 -0
  84. package/dist/resolver.d.mts +21 -0
  85. package/dist/resolver.d.mts.map +1 -0
  86. package/dist/resolver.mjs +194 -0
  87. package/dist/resolver.mjs.map +1 -0
  88. package/dist/resolver.test.d.mts +1 -0
  89. package/dist/resolver.test.mjs +237 -0
  90. package/dist/resolver.test.mjs.map +1 -0
  91. package/dist/schema.d.mts +706 -0
  92. package/dist/schema.d.mts.map +1 -0
  93. package/dist/schema.mjs +260 -0
  94. package/dist/schema.mjs.map +1 -0
  95. package/dist/schema.test.d.mts +1 -0
  96. package/dist/schema.test.mjs +264 -0
  97. package/dist/schema.test.mjs.map +1 -0
  98. package/dist/services/definitions/anything-llm.d.mts +7 -0
  99. package/dist/services/definitions/anything-llm.d.mts.map +1 -0
  100. package/dist/services/definitions/anything-llm.mjs +44 -0
  101. package/dist/services/definitions/anything-llm.mjs.map +1 -0
  102. package/dist/services/definitions/appflowy.d.mts +7 -0
  103. package/dist/services/definitions/appflowy.d.mts.map +1 -0
  104. package/dist/services/definitions/appflowy.mjs +45 -0
  105. package/dist/services/definitions/appflowy.mjs.map +1 -0
  106. package/dist/services/definitions/beszel.d.mts +7 -0
  107. package/dist/services/definitions/beszel.d.mts.map +1 -0
  108. package/dist/services/definitions/beszel.mjs +45 -0
  109. package/dist/services/definitions/beszel.mjs.map +1 -0
  110. package/dist/services/definitions/browserless.d.mts +7 -0
  111. package/dist/services/definitions/browserless.d.mts.map +1 -0
  112. package/dist/services/definitions/browserless.mjs +85 -0
  113. package/dist/services/definitions/browserless.mjs.map +1 -0
  114. package/dist/services/definitions/caddy.d.mts +7 -0
  115. package/dist/services/definitions/caddy.d.mts.map +1 -0
  116. package/dist/services/definitions/caddy.mjs +52 -0
  117. package/dist/services/definitions/caddy.mjs.map +1 -0
  118. package/dist/services/definitions/chromadb.d.mts +7 -0
  119. package/dist/services/definitions/chromadb.d.mts.map +1 -0
  120. package/dist/services/definitions/chromadb.mjs +63 -0
  121. package/dist/services/definitions/chromadb.mjs.map +1 -0
  122. package/dist/services/definitions/claude-code.d.mts +7 -0
  123. package/dist/services/definitions/claude-code.d.mts.map +1 -0
  124. package/dist/services/definitions/claude-code.mjs +52 -0
  125. package/dist/services/definitions/claude-code.mjs.map +1 -0
  126. package/dist/services/definitions/code-server.d.mts +7 -0
  127. package/dist/services/definitions/code-server.d.mts.map +1 -0
  128. package/dist/services/definitions/code-server.mjs +66 -0
  129. package/dist/services/definitions/code-server.mjs.map +1 -0
  130. package/dist/services/definitions/codex.d.mts +7 -0
  131. package/dist/services/definitions/codex.d.mts.map +1 -0
  132. package/dist/services/definitions/codex.mjs +45 -0
  133. package/dist/services/definitions/codex.mjs.map +1 -0
  134. package/dist/services/definitions/convex-dashboard.d.mts +7 -0
  135. package/dist/services/definitions/convex-dashboard.d.mts.map +1 -0
  136. package/dist/services/definitions/convex-dashboard.mjs +46 -0
  137. package/dist/services/definitions/convex-dashboard.mjs.map +1 -0
  138. package/dist/services/definitions/convex.d.mts +7 -0
  139. package/dist/services/definitions/convex.d.mts.map +1 -0
  140. package/dist/services/definitions/convex.mjs +118 -0
  141. package/dist/services/definitions/convex.mjs.map +1 -0
  142. package/dist/services/definitions/coolify.d.mts +7 -0
  143. package/dist/services/definitions/coolify.d.mts.map +1 -0
  144. package/dist/services/definitions/coolify.mjs +49 -0
  145. package/dist/services/definitions/coolify.mjs.map +1 -0
  146. package/dist/services/definitions/dify.d.mts +7 -0
  147. package/dist/services/definitions/dify.d.mts.map +1 -0
  148. package/dist/services/definitions/dify.mjs +81 -0
  149. package/dist/services/definitions/dify.mjs.map +1 -0
  150. package/dist/services/definitions/docsgpt.d.mts +7 -0
  151. package/dist/services/definitions/docsgpt.d.mts.map +1 -0
  152. package/dist/services/definitions/docsgpt.mjs +45 -0
  153. package/dist/services/definitions/docsgpt.mjs.map +1 -0
  154. package/dist/services/definitions/dokploy.d.mts +7 -0
  155. package/dist/services/definitions/dokploy.d.mts.map +1 -0
  156. package/dist/services/definitions/dokploy.mjs +49 -0
  157. package/dist/services/definitions/dokploy.mjs.map +1 -0
  158. package/dist/services/definitions/dozzle.d.mts +7 -0
  159. package/dist/services/definitions/dozzle.d.mts.map +1 -0
  160. package/dist/services/definitions/dozzle.mjs +41 -0
  161. package/dist/services/definitions/dozzle.mjs.map +1 -0
  162. package/dist/services/definitions/ffmpeg.d.mts +7 -0
  163. package/dist/services/definitions/ffmpeg.d.mts.map +1 -0
  164. package/dist/services/definitions/ffmpeg.mjs +66 -0
  165. package/dist/services/definitions/ffmpeg.mjs.map +1 -0
  166. package/dist/services/definitions/flowise.d.mts +7 -0
  167. package/dist/services/definitions/flowise.d.mts.map +1 -0
  168. package/dist/services/definitions/flowise.mjs +45 -0
  169. package/dist/services/definitions/flowise.mjs.map +1 -0
  170. package/dist/services/definitions/gemini-cli.d.mts +7 -0
  171. package/dist/services/definitions/gemini-cli.d.mts.map +1 -0
  172. package/dist/services/definitions/gemini-cli.mjs +46 -0
  173. package/dist/services/definitions/gemini-cli.mjs.map +1 -0
  174. package/dist/services/definitions/gitea.d.mts +7 -0
  175. package/dist/services/definitions/gitea.d.mts.map +1 -0
  176. package/dist/services/definitions/gitea.mjs +49 -0
  177. package/dist/services/definitions/gitea.mjs.map +1 -0
  178. package/dist/services/definitions/gotify.d.mts +7 -0
  179. package/dist/services/definitions/gotify.d.mts.map +1 -0
  180. package/dist/services/definitions/gotify.mjs +62 -0
  181. package/dist/services/definitions/gotify.mjs.map +1 -0
  182. package/dist/services/definitions/grafana.d.mts +7 -0
  183. package/dist/services/definitions/grafana.d.mts.map +1 -0
  184. package/dist/services/definitions/grafana.mjs +63 -0
  185. package/dist/services/definitions/grafana.mjs.map +1 -0
  186. package/dist/services/definitions/index.d.mts +76 -0
  187. package/dist/services/definitions/index.d.mts.map +1 -0
  188. package/dist/services/definitions/index.mjs +146 -0
  189. package/dist/services/definitions/index.mjs.map +1 -0
  190. package/dist/services/definitions/kimi.d.mts +7 -0
  191. package/dist/services/definitions/kimi.d.mts.map +1 -0
  192. package/dist/services/definitions/kimi.mjs +46 -0
  193. package/dist/services/definitions/kimi.mjs.map +1 -0
  194. package/dist/services/definitions/lasuite-meet-agents.d.mts +7 -0
  195. package/dist/services/definitions/lasuite-meet-agents.d.mts.map +1 -0
  196. package/dist/services/definitions/lasuite-meet-agents.mjs +36 -0
  197. package/dist/services/definitions/lasuite-meet-agents.mjs.map +1 -0
  198. package/dist/services/definitions/lasuite-meet-backend.d.mts +7 -0
  199. package/dist/services/definitions/lasuite-meet-backend.d.mts.map +1 -0
  200. package/dist/services/definitions/lasuite-meet-backend.mjs +134 -0
  201. package/dist/services/definitions/lasuite-meet-backend.mjs.map +1 -0
  202. package/dist/services/definitions/lasuite-meet-frontend.d.mts +7 -0
  203. package/dist/services/definitions/lasuite-meet-frontend.d.mts.map +1 -0
  204. package/dist/services/definitions/lasuite-meet-frontend.mjs +48 -0
  205. package/dist/services/definitions/lasuite-meet-frontend.mjs.map +1 -0
  206. package/dist/services/definitions/librechat.d.mts +7 -0
  207. package/dist/services/definitions/librechat.d.mts.map +1 -0
  208. package/dist/services/definitions/librechat.mjs +50 -0
  209. package/dist/services/definitions/librechat.mjs.map +1 -0
  210. package/dist/services/definitions/lightpanda.d.mts +7 -0
  211. package/dist/services/definitions/lightpanda.d.mts.map +1 -0
  212. package/dist/services/definitions/lightpanda.mjs +59 -0
  213. package/dist/services/definitions/lightpanda.mjs.map +1 -0
  214. package/dist/services/definitions/litellm.d.mts +7 -0
  215. package/dist/services/definitions/litellm.d.mts.map +1 -0
  216. package/dist/services/definitions/litellm.mjs +47 -0
  217. package/dist/services/definitions/litellm.mjs.map +1 -0
  218. package/dist/services/definitions/livekit.d.mts +7 -0
  219. package/dist/services/definitions/livekit.d.mts.map +1 -0
  220. package/dist/services/definitions/livekit.mjs +56 -0
  221. package/dist/services/definitions/livekit.mjs.map +1 -0
  222. package/dist/services/definitions/matomo.d.mts +7 -0
  223. package/dist/services/definitions/matomo.d.mts.map +1 -0
  224. package/dist/services/definitions/matomo.mjs +80 -0
  225. package/dist/services/definitions/matomo.mjs.map +1 -0
  226. package/dist/services/definitions/matrix-synapse.d.mts +7 -0
  227. package/dist/services/definitions/matrix-synapse.d.mts.map +1 -0
  228. package/dist/services/definitions/matrix-synapse.mjs +88 -0
  229. package/dist/services/definitions/matrix-synapse.mjs.map +1 -0
  230. package/dist/services/definitions/mattermost.d.mts +7 -0
  231. package/dist/services/definitions/mattermost.d.mts.map +1 -0
  232. package/dist/services/definitions/mattermost.mjs +61 -0
  233. package/dist/services/definitions/mattermost.mjs.map +1 -0
  234. package/dist/services/definitions/meilisearch.d.mts +7 -0
  235. package/dist/services/definitions/meilisearch.d.mts.map +1 -0
  236. package/dist/services/definitions/meilisearch.mjs +78 -0
  237. package/dist/services/definitions/meilisearch.mjs.map +1 -0
  238. package/dist/services/definitions/minio.d.mts +7 -0
  239. package/dist/services/definitions/minio.d.mts.map +1 -0
  240. package/dist/services/definitions/minio.mjs +102 -0
  241. package/dist/services/definitions/minio.mjs.map +1 -0
  242. package/dist/services/definitions/mission-control.d.mts +7 -0
  243. package/dist/services/definitions/mission-control.d.mts.map +1 -0
  244. package/dist/services/definitions/mission-control.mjs +67 -0
  245. package/dist/services/definitions/mission-control.mjs.map +1 -0
  246. package/dist/services/definitions/mixpost.d.mts +7 -0
  247. package/dist/services/definitions/mixpost.d.mts.map +1 -0
  248. package/dist/services/definitions/mixpost.mjs +87 -0
  249. package/dist/services/definitions/mixpost.mjs.map +1 -0
  250. package/dist/services/definitions/motion-canvas.d.mts +7 -0
  251. package/dist/services/definitions/motion-canvas.d.mts.map +1 -0
  252. package/dist/services/definitions/motion-canvas.mjs +52 -0
  253. package/dist/services/definitions/motion-canvas.mjs.map +1 -0
  254. package/dist/services/definitions/n8n.d.mts +7 -0
  255. package/dist/services/definitions/n8n.d.mts.map +1 -0
  256. package/dist/services/definitions/n8n.mjs +154 -0
  257. package/dist/services/definitions/n8n.mjs.map +1 -0
  258. package/dist/services/definitions/nocodb.d.mts +7 -0
  259. package/dist/services/definitions/nocodb.d.mts.map +1 -0
  260. package/dist/services/definitions/nocodb.mjs +45 -0
  261. package/dist/services/definitions/nocodb.mjs.map +1 -0
  262. package/dist/services/definitions/ntfy.d.mts +7 -0
  263. package/dist/services/definitions/ntfy.d.mts.map +1 -0
  264. package/dist/services/definitions/ntfy.mjs +63 -0
  265. package/dist/services/definitions/ntfy.mjs.map +1 -0
  266. package/dist/services/definitions/ollama.d.mts +7 -0
  267. package/dist/services/definitions/ollama.d.mts.map +1 -0
  268. package/dist/services/definitions/ollama.mjs +66 -0
  269. package/dist/services/definitions/ollama.mjs.map +1 -0
  270. package/dist/services/definitions/open-webui.d.mts +7 -0
  271. package/dist/services/definitions/open-webui.d.mts.map +1 -0
  272. package/dist/services/definitions/open-webui.mjs +50 -0
  273. package/dist/services/definitions/open-webui.mjs.map +1 -0
  274. package/dist/services/definitions/opencode.d.mts +7 -0
  275. package/dist/services/definitions/opencode.d.mts.map +1 -0
  276. package/dist/services/definitions/opencode.mjs +50 -0
  277. package/dist/services/definitions/opencode.mjs.map +1 -0
  278. package/dist/services/definitions/openpanel.d.mts +7 -0
  279. package/dist/services/definitions/openpanel.d.mts.map +1 -0
  280. package/dist/services/definitions/openpanel.mjs +46 -0
  281. package/dist/services/definitions/openpanel.mjs.map +1 -0
  282. package/dist/services/definitions/outline.d.mts +7 -0
  283. package/dist/services/definitions/outline.d.mts.map +1 -0
  284. package/dist/services/definitions/outline.mjs +74 -0
  285. package/dist/services/definitions/outline.mjs.map +1 -0
  286. package/dist/services/definitions/paperless-ngx.d.mts +7 -0
  287. package/dist/services/definitions/paperless-ngx.d.mts.map +1 -0
  288. package/dist/services/definitions/paperless-ngx.mjs +93 -0
  289. package/dist/services/definitions/paperless-ngx.mjs.map +1 -0
  290. package/dist/services/definitions/playwright-server.d.mts +7 -0
  291. package/dist/services/definitions/playwright-server.d.mts.map +1 -0
  292. package/dist/services/definitions/playwright-server.mjs +42 -0
  293. package/dist/services/definitions/playwright-server.mjs.map +1 -0
  294. package/dist/services/definitions/portainer.d.mts +7 -0
  295. package/dist/services/definitions/portainer.d.mts.map +1 -0
  296. package/dist/services/definitions/portainer.mjs +49 -0
  297. package/dist/services/definitions/portainer.mjs.map +1 -0
  298. package/dist/services/definitions/postgresql.d.mts +7 -0
  299. package/dist/services/definitions/postgresql.d.mts.map +1 -0
  300. package/dist/services/definitions/postgresql.mjs +84 -0
  301. package/dist/services/definitions/postgresql.mjs.map +1 -0
  302. package/dist/services/definitions/postiz.d.mts +7 -0
  303. package/dist/services/definitions/postiz.d.mts.map +1 -0
  304. package/dist/services/definitions/postiz.mjs +83 -0
  305. package/dist/services/definitions/postiz.mjs.map +1 -0
  306. package/dist/services/definitions/prometheus.d.mts +7 -0
  307. package/dist/services/definitions/prometheus.d.mts.map +1 -0
  308. package/dist/services/definitions/prometheus.mjs +52 -0
  309. package/dist/services/definitions/prometheus.mjs.map +1 -0
  310. package/dist/services/definitions/qdrant.d.mts +7 -0
  311. package/dist/services/definitions/qdrant.d.mts.map +1 -0
  312. package/dist/services/definitions/qdrant.mjs +77 -0
  313. package/dist/services/definitions/qdrant.mjs.map +1 -0
  314. package/dist/services/definitions/redis.d.mts +7 -0
  315. package/dist/services/definitions/redis.d.mts.map +1 -0
  316. package/dist/services/definitions/redis.mjs +91 -0
  317. package/dist/services/definitions/redis.mjs.map +1 -0
  318. package/dist/services/definitions/remotion.d.mts +7 -0
  319. package/dist/services/definitions/remotion.d.mts.map +1 -0
  320. package/dist/services/definitions/remotion.mjs +55 -0
  321. package/dist/services/definitions/remotion.mjs.map +1 -0
  322. package/dist/services/definitions/rocketchat.d.mts +7 -0
  323. package/dist/services/definitions/rocketchat.d.mts.map +1 -0
  324. package/dist/services/definitions/rocketchat.mjs +57 -0
  325. package/dist/services/definitions/rocketchat.mjs.map +1 -0
  326. package/dist/services/definitions/searxng.d.mts +7 -0
  327. package/dist/services/definitions/searxng.d.mts.map +1 -0
  328. package/dist/services/definitions/searxng.mjs +65 -0
  329. package/dist/services/definitions/searxng.mjs.map +1 -0
  330. package/dist/services/definitions/stable-diffusion.d.mts +7 -0
  331. package/dist/services/definitions/stable-diffusion.d.mts.map +1 -0
  332. package/dist/services/definitions/stable-diffusion.mjs +48 -0
  333. package/dist/services/definitions/stable-diffusion.mjs.map +1 -0
  334. package/dist/services/definitions/steel-browser.d.mts +7 -0
  335. package/dist/services/definitions/steel-browser.d.mts.map +1 -0
  336. package/dist/services/definitions/steel-browser.mjs +77 -0
  337. package/dist/services/definitions/steel-browser.mjs.map +1 -0
  338. package/dist/services/definitions/tailscale.d.mts +7 -0
  339. package/dist/services/definitions/tailscale.d.mts.map +1 -0
  340. package/dist/services/definitions/tailscale.mjs +70 -0
  341. package/dist/services/definitions/tailscale.mjs.map +1 -0
  342. package/dist/services/definitions/temporal.d.mts +7 -0
  343. package/dist/services/definitions/temporal.d.mts.map +1 -0
  344. package/dist/services/definitions/temporal.mjs +100 -0
  345. package/dist/services/definitions/temporal.mjs.map +1 -0
  346. package/dist/services/definitions/traefik.d.mts +7 -0
  347. package/dist/services/definitions/traefik.d.mts.map +1 -0
  348. package/dist/services/definitions/traefik.mjs +58 -0
  349. package/dist/services/definitions/traefik.mjs.map +1 -0
  350. package/dist/services/definitions/umami.d.mts +7 -0
  351. package/dist/services/definitions/umami.d.mts.map +1 -0
  352. package/dist/services/definitions/umami.mjs +46 -0
  353. package/dist/services/definitions/umami.mjs.map +1 -0
  354. package/dist/services/definitions/uptime-kuma.d.mts +7 -0
  355. package/dist/services/definitions/uptime-kuma.d.mts.map +1 -0
  356. package/dist/services/definitions/uptime-kuma.mjs +51 -0
  357. package/dist/services/definitions/uptime-kuma.mjs.map +1 -0
  358. package/dist/services/definitions/usesend.d.mts +7 -0
  359. package/dist/services/definitions/usesend.d.mts.map +1 -0
  360. package/dist/services/definitions/usesend.mjs +99 -0
  361. package/dist/services/definitions/usesend.mjs.map +1 -0
  362. package/dist/services/definitions/valkey.d.mts +7 -0
  363. package/dist/services/definitions/valkey.d.mts.map +1 -0
  364. package/dist/services/definitions/valkey.mjs +61 -0
  365. package/dist/services/definitions/valkey.mjs.map +1 -0
  366. package/dist/services/definitions/watchtower.d.mts +7 -0
  367. package/dist/services/definitions/watchtower.d.mts.map +1 -0
  368. package/dist/services/definitions/watchtower.mjs +47 -0
  369. package/dist/services/definitions/watchtower.mjs.map +1 -0
  370. package/dist/services/definitions/weaviate.d.mts +7 -0
  371. package/dist/services/definitions/weaviate.d.mts.map +1 -0
  372. package/dist/services/definitions/weaviate.mjs +90 -0
  373. package/dist/services/definitions/weaviate.mjs.map +1 -0
  374. package/dist/services/definitions/whisper.d.mts +7 -0
  375. package/dist/services/definitions/whisper.d.mts.map +1 -0
  376. package/dist/services/definitions/whisper.mjs +62 -0
  377. package/dist/services/definitions/whisper.mjs.map +1 -0
  378. package/dist/services/registry.d.mts +16 -0
  379. package/dist/services/registry.d.mts.map +1 -0
  380. package/dist/services/registry.mjs +30 -0
  381. package/dist/services/registry.mjs.map +1 -0
  382. package/dist/services/registry.test.d.mts +1 -0
  383. package/dist/services/registry.test.mjs +64 -0
  384. package/dist/services/registry.test.mjs.map +1 -0
  385. package/dist/skills/registry.d.mts +11 -0
  386. package/dist/skills/registry.d.mts.map +1 -0
  387. package/dist/skills/registry.mjs +215 -0
  388. package/dist/skills/registry.mjs.map +1 -0
  389. package/dist/types.d.mts +64 -0
  390. package/dist/types.d.mts.map +1 -0
  391. package/dist/types.mjs +92 -0
  392. package/dist/types.mjs.map +1 -0
  393. package/dist/validator.d.mts +20 -0
  394. package/dist/validator.d.mts.map +1 -0
  395. package/dist/validator.mjs +111 -0
  396. package/dist/validator.mjs.map +1 -0
  397. package/dist/validator.test.d.mts +1 -0
  398. package/dist/validator.test.mjs +65 -0
  399. package/dist/validator.test.mjs.map +1 -0
  400. package/dist/version-manager.d.mts +14 -0
  401. package/dist/version-manager.d.mts.map +1 -0
  402. package/dist/version-manager.mjs +55 -0
  403. package/dist/version-manager.mjs.map +1 -0
  404. package/dist/vi.2VT5v0um-Qk6MgAnK.mjs +12916 -0
  405. package/dist/vi.2VT5v0um-Qk6MgAnK.mjs.map +1 -0
  406. package/package.json +17 -17
  407. package/src/schema.ts +2 -1
  408. package/src/services/definitions/convex-dashboard.ts +48 -0
  409. package/src/services/definitions/convex.ts +123 -0
  410. package/src/services/definitions/index.ts +12 -0
  411. package/src/services/definitions/mission-control.ts +71 -0
  412. package/src/services/definitions/tailscale.ts +2 -0
  413. package/src/services/definitions/usesend.ts +98 -0
  414. package/tsdown.config.ts +1 -0
@@ -0,0 +1,293 @@
1
+ //#region src/generators/grafana.ts
2
+ /**
3
+ * Generates Grafana provisioning configuration files.
4
+ *
5
+ * Returns a map of file paths (relative to project root) to file contents.
6
+ * Includes datasource provisioning YAML for the Prometheus connection.
7
+ */
8
+ function generateGrafanaConfig() {
9
+ const files = {};
10
+ files["config/grafana/provisioning/datasources/prometheus.yml"] = `# ═══════════════════════════════════════════════════════════════════════════════
11
+ # Grafana Datasource Provisioning — Auto-generated by OpenClaw
12
+ # ═══════════════════════════════════════════════════════════════════════════════
13
+
14
+ apiVersion: 1
15
+
16
+ datasources:
17
+ # Prometheus — primary metrics datasource
18
+ - name: Prometheus
19
+ type: prometheus
20
+ access: proxy
21
+ url: http://prometheus:9090
22
+ isDefault: true
23
+ editable: true
24
+ jsonData:
25
+ httpMethod: POST
26
+ timeInterval: "15s"
27
+ exemplarTraceIdDestinations:
28
+ - name: traceID
29
+ datasourceUid: ""
30
+ version: 1
31
+ `;
32
+ files["config/grafana/provisioning/dashboards/default.yml"] = `# ═══════════════════════════════════════════════════════════════════════════════
33
+ # Grafana Dashboard Provisioning — Auto-generated by OpenClaw
34
+ # ═══════════════════════════════════════════════════════════════════════════════
35
+
36
+ apiVersion: 1
37
+
38
+ providers:
39
+ - name: "OpenClaw Dashboards"
40
+ orgId: 1
41
+ folder: "OpenClaw"
42
+ type: file
43
+ disableDeletion: false
44
+ editable: true
45
+ updateIntervalSeconds: 30
46
+ allowUiUpdates: true
47
+ options:
48
+ path: /var/lib/grafana/dashboards
49
+ foldersFromFilesStructure: false
50
+ `;
51
+ files["config/grafana/grafana.ini"] = `# ═══════════════════════════════════════════════════════════════════════════════
52
+ # Grafana Configuration — Auto-generated by OpenClaw
53
+ # ═══════════════════════════════════════════════════════════════════════════════
54
+
55
+ [server]
56
+ root_url = %(protocol)s://%(domain)s/
57
+
58
+ [security]
59
+ # Admin credentials are set via environment variables:
60
+ # GF_SECURITY_ADMIN_USER
61
+ # GF_SECURITY_ADMIN_PASSWORD
62
+
63
+ [auth.anonymous]
64
+ enabled = false
65
+
66
+ [dashboards]
67
+ default_home_dashboard_path = /var/lib/grafana/dashboards/home.json
68
+
69
+ [alerting]
70
+ enabled = true
71
+
72
+ [unified_alerting]
73
+ enabled = true
74
+
75
+ [log]
76
+ mode = console
77
+ level = info
78
+ `;
79
+ return files;
80
+ }
81
+ /**
82
+ * Generates a Grafana dashboard JSON for the OpenClaw stack overview.
83
+ *
84
+ * The dashboard includes:
85
+ * - Service Health (stat panel)
86
+ * - Memory Usage (gauge)
87
+ * - Request Rate (graph)
88
+ *
89
+ * Uses Prometheus as the datasource.
90
+ */
91
+ function generateGrafanaDashboard() {
92
+ return JSON.stringify({
93
+ annotations: { list: [] },
94
+ editable: true,
95
+ fiscalYearStartMonth: 0,
96
+ graphTooltip: 1,
97
+ links: [],
98
+ panels: [
99
+ {
100
+ id: 1,
101
+ title: "Service Health",
102
+ type: "stat",
103
+ gridPos: {
104
+ h: 8,
105
+ w: 8,
106
+ x: 0,
107
+ y: 0
108
+ },
109
+ datasource: {
110
+ type: "prometheus",
111
+ uid: "prometheus"
112
+ },
113
+ targets: [{
114
+ expr: "count(up{job=~\".+\"} == 1)",
115
+ legendFormat: "Healthy Services",
116
+ refId: "A"
117
+ }],
118
+ fieldConfig: {
119
+ defaults: {
120
+ thresholds: {
121
+ mode: "absolute",
122
+ steps: [
123
+ {
124
+ color: "red",
125
+ value: null
126
+ },
127
+ {
128
+ color: "yellow",
129
+ value: 1
130
+ },
131
+ {
132
+ color: "green",
133
+ value: 3
134
+ }
135
+ ]
136
+ },
137
+ color: { mode: "thresholds" },
138
+ mappings: []
139
+ },
140
+ overrides: []
141
+ },
142
+ options: {
143
+ reduceOptions: {
144
+ values: false,
145
+ calcs: ["lastNotNull"],
146
+ fields: ""
147
+ },
148
+ orientation: "auto",
149
+ textMode: "auto",
150
+ colorMode: "background",
151
+ graphMode: "none",
152
+ justifyMode: "auto"
153
+ }
154
+ },
155
+ {
156
+ id: 2,
157
+ title: "Memory Usage",
158
+ type: "gauge",
159
+ gridPos: {
160
+ h: 8,
161
+ w: 8,
162
+ x: 8,
163
+ y: 0
164
+ },
165
+ datasource: {
166
+ type: "prometheus",
167
+ uid: "prometheus"
168
+ },
169
+ targets: [{
170
+ expr: "sum(container_memory_usage_bytes) / sum(machine_memory_bytes) * 100",
171
+ legendFormat: "Memory %",
172
+ refId: "A"
173
+ }],
174
+ fieldConfig: {
175
+ defaults: {
176
+ thresholds: {
177
+ mode: "absolute",
178
+ steps: [
179
+ {
180
+ color: "green",
181
+ value: null
182
+ },
183
+ {
184
+ color: "yellow",
185
+ value: 60
186
+ },
187
+ {
188
+ color: "red",
189
+ value: 85
190
+ }
191
+ ]
192
+ },
193
+ color: { mode: "thresholds" },
194
+ min: 0,
195
+ max: 100,
196
+ unit: "percent",
197
+ mappings: []
198
+ },
199
+ overrides: []
200
+ },
201
+ options: {
202
+ reduceOptions: {
203
+ values: false,
204
+ calcs: ["lastNotNull"],
205
+ fields: ""
206
+ },
207
+ orientation: "auto",
208
+ showThresholdLabels: false,
209
+ showThresholdMarkers: true
210
+ }
211
+ },
212
+ {
213
+ id: 3,
214
+ title: "Request Rate",
215
+ type: "timeseries",
216
+ gridPos: {
217
+ h: 8,
218
+ w: 8,
219
+ x: 16,
220
+ y: 0
221
+ },
222
+ datasource: {
223
+ type: "prometheus",
224
+ uid: "prometheus"
225
+ },
226
+ targets: [{
227
+ expr: "sum(rate(http_requests_total{job=~\".+\"}[5m])) by (job)",
228
+ legendFormat: "{{job}}",
229
+ refId: "A"
230
+ }],
231
+ fieldConfig: {
232
+ defaults: {
233
+ color: { mode: "palette-classic" },
234
+ custom: {
235
+ axisBorderShow: false,
236
+ axisCenteredZero: false,
237
+ axisColorMode: "text",
238
+ axisLabel: "req/s",
239
+ drawStyle: "line",
240
+ fillOpacity: 10,
241
+ gradientMode: "none",
242
+ lineInterpolation: "smooth",
243
+ lineWidth: 2,
244
+ pointSize: 5,
245
+ showPoints: "auto",
246
+ spanNulls: false,
247
+ stacking: {
248
+ group: "A",
249
+ mode: "none"
250
+ }
251
+ },
252
+ mappings: [],
253
+ thresholds: {
254
+ mode: "absolute",
255
+ steps: [{
256
+ color: "green",
257
+ value: null
258
+ }]
259
+ },
260
+ unit: "reqps"
261
+ },
262
+ overrides: []
263
+ },
264
+ options: {
265
+ legend: {
266
+ calcs: [],
267
+ displayMode: "list",
268
+ placement: "bottom"
269
+ },
270
+ tooltip: {
271
+ mode: "multi",
272
+ sort: "desc"
273
+ }
274
+ }
275
+ }
276
+ ],
277
+ schemaVersion: 39,
278
+ tags: ["openclaw"],
279
+ templating: { list: [] },
280
+ time: {
281
+ from: "now-1h",
282
+ to: "now"
283
+ },
284
+ timepicker: {},
285
+ timezone: "browser",
286
+ title: "OpenClaw Stack Overview",
287
+ uid: "openclaw-stack-overview"
288
+ }, null, 2);
289
+ }
290
+
291
+ //#endregion
292
+ export { generateGrafanaConfig, generateGrafanaDashboard };
293
+ //# sourceMappingURL=grafana.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"grafana.mjs","names":[],"sources":["../../src/generators/grafana.ts"],"sourcesContent":["/**\n * Generates Grafana provisioning configuration files.\n *\n * Returns a map of file paths (relative to project root) to file contents.\n * Includes datasource provisioning YAML for the Prometheus connection.\n */\nexport function generateGrafanaConfig(): Record<string, string> {\n\tconst files: Record<string, string> = {};\n\n\t// ── Datasource Provisioning ─────────────────────────────────────────────\n\n\tfiles[\"config/grafana/provisioning/datasources/prometheus.yml\"] =\n\t\t`# ═══════════════════════════════════════════════════════════════════════════════\n# Grafana Datasource Provisioning — Auto-generated by OpenClaw\n# ═══════════════════════════════════════════════════════════════════════════════\n\napiVersion: 1\n\ndatasources:\n # Prometheus — primary metrics datasource\n - name: Prometheus\n type: prometheus\n access: proxy\n url: http://prometheus:9090\n isDefault: true\n editable: true\n jsonData:\n httpMethod: POST\n timeInterval: \"15s\"\n exemplarTraceIdDestinations:\n - name: traceID\n datasourceUid: \"\"\n version: 1\n`;\n\n\t// ── Dashboard Provisioning ───────────────────────────────────────────────\n\n\tfiles[\"config/grafana/provisioning/dashboards/default.yml\"] =\n\t\t`# ═══════════════════════════════════════════════════════════════════════════════\n# Grafana Dashboard Provisioning — Auto-generated by OpenClaw\n# ═══════════════════════════════════════════════════════════════════════════════\n\napiVersion: 1\n\nproviders:\n - name: \"OpenClaw Dashboards\"\n orgId: 1\n folder: \"OpenClaw\"\n type: file\n disableDeletion: false\n editable: true\n updateIntervalSeconds: 30\n allowUiUpdates: true\n options:\n path: /var/lib/grafana/dashboards\n foldersFromFilesStructure: false\n`;\n\n\t// ── Grafana Configuration (grafana.ini overrides) ────────────────────────\n\n\tfiles[\"config/grafana/grafana.ini\"] =\n\t\t`# ═══════════════════════════════════════════════════════════════════════════════\n# Grafana Configuration — Auto-generated by OpenClaw\n# ═══════════════════════════════════════════════════════════════════════════════\n\n[server]\nroot_url = %(protocol)s://%(domain)s/\n\n[security]\n# Admin credentials are set via environment variables:\n# GF_SECURITY_ADMIN_USER\n# GF_SECURITY_ADMIN_PASSWORD\n\n[auth.anonymous]\nenabled = false\n\n[dashboards]\ndefault_home_dashboard_path = /var/lib/grafana/dashboards/home.json\n\n[alerting]\nenabled = true\n\n[unified_alerting]\nenabled = true\n\n[log]\nmode = console\nlevel = info\n`;\n\n\treturn files;\n}\n\n/**\n * Generates a Grafana dashboard JSON for the OpenClaw stack overview.\n *\n * The dashboard includes:\n * - Service Health (stat panel)\n * - Memory Usage (gauge)\n * - Request Rate (graph)\n *\n * Uses Prometheus as the datasource.\n */\nexport function generateGrafanaDashboard(): string {\n\tconst dashboard = {\n\t\tannotations: { list: [] },\n\t\teditable: true,\n\t\tfiscalYearStartMonth: 0,\n\t\tgraphTooltip: 1,\n\t\tlinks: [],\n\t\tpanels: [\n\t\t\t{\n\t\t\t\t// ── Service Health (stat panel) ──\n\t\t\t\tid: 1,\n\t\t\t\ttitle: \"Service Health\",\n\t\t\t\ttype: \"stat\",\n\t\t\t\tgridPos: { h: 8, w: 8, x: 0, y: 0 },\n\t\t\t\tdatasource: { type: \"prometheus\", uid: \"prometheus\" },\n\t\t\t\ttargets: [\n\t\t\t\t\t{\n\t\t\t\t\t\texpr: 'count(up{job=~\".+\"} == 1)',\n\t\t\t\t\t\tlegendFormat: \"Healthy Services\",\n\t\t\t\t\t\trefId: \"A\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tfieldConfig: {\n\t\t\t\t\tdefaults: {\n\t\t\t\t\t\tthresholds: {\n\t\t\t\t\t\t\tmode: \"absolute\",\n\t\t\t\t\t\t\tsteps: [\n\t\t\t\t\t\t\t\t{ color: \"red\", value: null },\n\t\t\t\t\t\t\t\t{ color: \"yellow\", value: 1 },\n\t\t\t\t\t\t\t\t{ color: \"green\", value: 3 },\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t\tcolor: { mode: \"thresholds\" },\n\t\t\t\t\t\tmappings: [],\n\t\t\t\t\t},\n\t\t\t\t\toverrides: [],\n\t\t\t\t},\n\t\t\t\toptions: {\n\t\t\t\t\treduceOptions: {\n\t\t\t\t\t\tvalues: false,\n\t\t\t\t\t\tcalcs: [\"lastNotNull\"],\n\t\t\t\t\t\tfields: \"\",\n\t\t\t\t\t},\n\t\t\t\t\torientation: \"auto\",\n\t\t\t\t\ttextMode: \"auto\",\n\t\t\t\t\tcolorMode: \"background\",\n\t\t\t\t\tgraphMode: \"none\",\n\t\t\t\t\tjustifyMode: \"auto\",\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\t// ── Memory Usage (gauge) ──\n\t\t\t\tid: 2,\n\t\t\t\ttitle: \"Memory Usage\",\n\t\t\t\ttype: \"gauge\",\n\t\t\t\tgridPos: { h: 8, w: 8, x: 8, y: 0 },\n\t\t\t\tdatasource: { type: \"prometheus\", uid: \"prometheus\" },\n\t\t\t\ttargets: [\n\t\t\t\t\t{\n\t\t\t\t\t\texpr: \"sum(container_memory_usage_bytes) / sum(machine_memory_bytes) * 100\",\n\t\t\t\t\t\tlegendFormat: \"Memory %\",\n\t\t\t\t\t\trefId: \"A\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tfieldConfig: {\n\t\t\t\t\tdefaults: {\n\t\t\t\t\t\tthresholds: {\n\t\t\t\t\t\t\tmode: \"absolute\",\n\t\t\t\t\t\t\tsteps: [\n\t\t\t\t\t\t\t\t{ color: \"green\", value: null },\n\t\t\t\t\t\t\t\t{ color: \"yellow\", value: 60 },\n\t\t\t\t\t\t\t\t{ color: \"red\", value: 85 },\n\t\t\t\t\t\t\t],\n\t\t\t\t\t\t},\n\t\t\t\t\t\tcolor: { mode: \"thresholds\" },\n\t\t\t\t\t\tmin: 0,\n\t\t\t\t\t\tmax: 100,\n\t\t\t\t\t\tunit: \"percent\",\n\t\t\t\t\t\tmappings: [],\n\t\t\t\t\t},\n\t\t\t\t\toverrides: [],\n\t\t\t\t},\n\t\t\t\toptions: {\n\t\t\t\t\treduceOptions: {\n\t\t\t\t\t\tvalues: false,\n\t\t\t\t\t\tcalcs: [\"lastNotNull\"],\n\t\t\t\t\t\tfields: \"\",\n\t\t\t\t\t},\n\t\t\t\t\torientation: \"auto\",\n\t\t\t\t\tshowThresholdLabels: false,\n\t\t\t\t\tshowThresholdMarkers: true,\n\t\t\t\t},\n\t\t\t},\n\t\t\t{\n\t\t\t\t// ── Request Rate (graph / timeseries) ──\n\t\t\t\tid: 3,\n\t\t\t\ttitle: \"Request Rate\",\n\t\t\t\ttype: \"timeseries\",\n\t\t\t\tgridPos: { h: 8, w: 8, x: 16, y: 0 },\n\t\t\t\tdatasource: { type: \"prometheus\", uid: \"prometheus\" },\n\t\t\t\ttargets: [\n\t\t\t\t\t{\n\t\t\t\t\t\texpr: 'sum(rate(http_requests_total{job=~\".+\"}[5m])) by (job)',\n\t\t\t\t\t\tlegendFormat: \"{{job}}\",\n\t\t\t\t\t\trefId: \"A\",\n\t\t\t\t\t},\n\t\t\t\t],\n\t\t\t\tfieldConfig: {\n\t\t\t\t\tdefaults: {\n\t\t\t\t\t\tcolor: { mode: \"palette-classic\" },\n\t\t\t\t\t\tcustom: {\n\t\t\t\t\t\t\taxisBorderShow: false,\n\t\t\t\t\t\t\taxisCenteredZero: false,\n\t\t\t\t\t\t\taxisColorMode: \"text\",\n\t\t\t\t\t\t\taxisLabel: \"req/s\",\n\t\t\t\t\t\t\tdrawStyle: \"line\",\n\t\t\t\t\t\t\tfillOpacity: 10,\n\t\t\t\t\t\t\tgradientMode: \"none\",\n\t\t\t\t\t\t\tlineInterpolation: \"smooth\",\n\t\t\t\t\t\t\tlineWidth: 2,\n\t\t\t\t\t\t\tpointSize: 5,\n\t\t\t\t\t\t\tshowPoints: \"auto\",\n\t\t\t\t\t\t\tspanNulls: false,\n\t\t\t\t\t\t\tstacking: { group: \"A\", mode: \"none\" },\n\t\t\t\t\t\t},\n\t\t\t\t\t\tmappings: [],\n\t\t\t\t\t\tthresholds: {\n\t\t\t\t\t\t\tmode: \"absolute\",\n\t\t\t\t\t\t\tsteps: [{ color: \"green\", value: null }],\n\t\t\t\t\t\t},\n\t\t\t\t\t\tunit: \"reqps\",\n\t\t\t\t\t},\n\t\t\t\t\toverrides: [],\n\t\t\t\t},\n\t\t\t\toptions: {\n\t\t\t\t\tlegend: { calcs: [], displayMode: \"list\", placement: \"bottom\" },\n\t\t\t\t\ttooltip: { mode: \"multi\", sort: \"desc\" },\n\t\t\t\t},\n\t\t\t},\n\t\t],\n\t\tschemaVersion: 39,\n\t\ttags: [\"openclaw\"],\n\t\ttemplating: { list: [] },\n\t\ttime: { from: \"now-1h\", to: \"now\" },\n\t\ttimepicker: {},\n\t\ttimezone: \"browser\",\n\t\ttitle: \"OpenClaw Stack Overview\",\n\t\tuid: \"openclaw-stack-overview\",\n\t};\n\n\treturn JSON.stringify(dashboard, null, 2);\n}\n"],"mappings":";;;;;;;AAMA,SAAgB,wBAAgD;CAC/D,MAAM,QAAgC,EAAE;AAIxC,OAAM,4DACL;;;;;;;;;;;;;;;;;;;;;;AAyBD,OAAM,wDACL;;;;;;;;;;;;;;;;;;;AAsBD,OAAM,gCACL;;;;;;;;;;;;;;;;;;;;;;;;;;;;AA6BD,QAAO;;;;;;;;;;;;AAaR,SAAgB,2BAAmC;AAsJlD,QAAO,KAAK,UArJM;EACjB,aAAa,EAAE,MAAM,EAAE,EAAE;EACzB,UAAU;EACV,sBAAsB;EACtB,cAAc;EACd,OAAO,EAAE;EACT,QAAQ;GACP;IAEC,IAAI;IACJ,OAAO;IACP,MAAM;IACN,SAAS;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAG,GAAG;KAAG;IACnC,YAAY;KAAE,MAAM;KAAc,KAAK;KAAc;IACrD,SAAS,CACR;KACC,MAAM;KACN,cAAc;KACd,OAAO;KACP,CACD;IACD,aAAa;KACZ,UAAU;MACT,YAAY;OACX,MAAM;OACN,OAAO;QACN;SAAE,OAAO;SAAO,OAAO;SAAM;QAC7B;SAAE,OAAO;SAAU,OAAO;SAAG;QAC7B;SAAE,OAAO;SAAS,OAAO;SAAG;QAC5B;OACD;MACD,OAAO,EAAE,MAAM,cAAc;MAC7B,UAAU,EAAE;MACZ;KACD,WAAW,EAAE;KACb;IACD,SAAS;KACR,eAAe;MACd,QAAQ;MACR,OAAO,CAAC,cAAc;MACtB,QAAQ;MACR;KACD,aAAa;KACb,UAAU;KACV,WAAW;KACX,WAAW;KACX,aAAa;KACb;IACD;GACD;IAEC,IAAI;IACJ,OAAO;IACP,MAAM;IACN,SAAS;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAG,GAAG;KAAG;IACnC,YAAY;KAAE,MAAM;KAAc,KAAK;KAAc;IACrD,SAAS,CACR;KACC,MAAM;KACN,cAAc;KACd,OAAO;KACP,CACD;IACD,aAAa;KACZ,UAAU;MACT,YAAY;OACX,MAAM;OACN,OAAO;QACN;SAAE,OAAO;SAAS,OAAO;SAAM;QAC/B;SAAE,OAAO;SAAU,OAAO;SAAI;QAC9B;SAAE,OAAO;SAAO,OAAO;SAAI;QAC3B;OACD;MACD,OAAO,EAAE,MAAM,cAAc;MAC7B,KAAK;MACL,KAAK;MACL,MAAM;MACN,UAAU,EAAE;MACZ;KACD,WAAW,EAAE;KACb;IACD,SAAS;KACR,eAAe;MACd,QAAQ;MACR,OAAO,CAAC,cAAc;MACtB,QAAQ;MACR;KACD,aAAa;KACb,qBAAqB;KACrB,sBAAsB;KACtB;IACD;GACD;IAEC,IAAI;IACJ,OAAO;IACP,MAAM;IACN,SAAS;KAAE,GAAG;KAAG,GAAG;KAAG,GAAG;KAAI,GAAG;KAAG;IACpC,YAAY;KAAE,MAAM;KAAc,KAAK;KAAc;IACrD,SAAS,CACR;KACC,MAAM;KACN,cAAc;KACd,OAAO;KACP,CACD;IACD,aAAa;KACZ,UAAU;MACT,OAAO,EAAE,MAAM,mBAAmB;MAClC,QAAQ;OACP,gBAAgB;OAChB,kBAAkB;OAClB,eAAe;OACf,WAAW;OACX,WAAW;OACX,aAAa;OACb,cAAc;OACd,mBAAmB;OACnB,WAAW;OACX,WAAW;OACX,YAAY;OACZ,WAAW;OACX,UAAU;QAAE,OAAO;QAAK,MAAM;QAAQ;OACtC;MACD,UAAU,EAAE;MACZ,YAAY;OACX,MAAM;OACN,OAAO,CAAC;QAAE,OAAO;QAAS,OAAO;QAAM,CAAC;OACxC;MACD,MAAM;MACN;KACD,WAAW,EAAE;KACb;IACD,SAAS;KACR,QAAQ;MAAE,OAAO,EAAE;MAAE,aAAa;MAAQ,WAAW;MAAU;KAC/D,SAAS;MAAE,MAAM;MAAS,MAAM;MAAQ;KACxC;IACD;GACD;EACD,eAAe;EACf,MAAM,CAAC,WAAW;EAClB,YAAY,EAAE,MAAM,EAAE,EAAE;EACxB,MAAM;GAAE,MAAM;GAAU,IAAI;GAAO;EACnC,YAAY,EAAE;EACd,UAAU;EACV,OAAO;EACP,KAAK;EACL,EAEgC,MAAM,EAAE"}
@@ -0,0 +1,11 @@
1
+ import { ResolverOutput } from "../types.mjs";
2
+
3
+ //#region src/generators/n8n-workflows.d.ts
4
+ /**
5
+ * Generates n8n workflow template files.
6
+ * Returns a map of file paths to JSON content strings.
7
+ */
8
+ declare function generateN8nWorkflows(resolved: ResolverOutput): Record<string, string>;
9
+ //#endregion
10
+ export { generateN8nWorkflows };
11
+ //# sourceMappingURL=n8n-workflows.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"n8n-workflows.d.mts","names":[],"sources":["../../src/generators/n8n-workflows.ts"],"mappings":";;;;;AAMA;;iBAAgB,oBAAA,CAAqB,QAAA,EAAU,cAAA,GAAiB,MAAA"}
@@ -0,0 +1,75 @@
1
+ //#region src/generators/n8n-workflows.ts
2
+ /**
3
+ * Generates n8n workflow template files.
4
+ * Returns a map of file paths to JSON content strings.
5
+ */
6
+ function generateN8nWorkflows(resolved) {
7
+ const files = {};
8
+ if (!resolved.services.some((s) => s.definition.id === "n8n")) return files;
9
+ files["n8n/workflows/openclaw-webhook-handler.json"] = JSON.stringify(createWebhookHandlerWorkflow(resolved), null, 2);
10
+ return files;
11
+ }
12
+ function createWebhookHandlerWorkflow(resolved) {
13
+ return {
14
+ name: "OpenClaw Webhook Handler",
15
+ nodes: [
16
+ {
17
+ parameters: {
18
+ httpMethod: "POST",
19
+ path: "openclaw-webhook",
20
+ responseMode: "responseNode",
21
+ options: {}
22
+ },
23
+ id: "webhook-trigger",
24
+ name: "Webhook",
25
+ type: "n8n-nodes-base.webhook",
26
+ typeVersion: 2,
27
+ position: [250, 300]
28
+ },
29
+ {
30
+ parameters: { jsCode: `// Process OpenClaw webhook payload
31
+ const payload = \$input.all()[0].json;
32
+
33
+ // Available services in this stack:
34
+ // ${resolved.services.map((s) => s.definition.name).join(", ")}\n
35
+ return [{ json: { received: true, timestamp: new Date().toISOString(), payload } }];` },
36
+ id: "process-payload",
37
+ name: "Process Payload",
38
+ type: "n8n-nodes-base.code",
39
+ typeVersion: 2,
40
+ position: [470, 300]
41
+ },
42
+ {
43
+ parameters: {
44
+ respondWith: "json",
45
+ responseBody: "={{ JSON.stringify($json) }}",
46
+ options: {}
47
+ },
48
+ id: "respond",
49
+ name: "Respond to Webhook",
50
+ type: "n8n-nodes-base.respondToWebhook",
51
+ typeVersion: 1,
52
+ position: [690, 300]
53
+ }
54
+ ],
55
+ connections: {
56
+ Webhook: { main: [[{
57
+ node: "Process Payload",
58
+ type: "main",
59
+ index: 0
60
+ }]] },
61
+ "Process Payload": { main: [[{
62
+ node: "Respond to Webhook",
63
+ type: "main",
64
+ index: 0
65
+ }]] }
66
+ },
67
+ active: false,
68
+ settings: { executionOrder: "v1" },
69
+ tags: [{ name: "openclaw" }]
70
+ };
71
+ }
72
+
73
+ //#endregion
74
+ export { generateN8nWorkflows };
75
+ //# sourceMappingURL=n8n-workflows.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"n8n-workflows.mjs","names":[],"sources":["../../src/generators/n8n-workflows.ts"],"sourcesContent":["import type { ResolverOutput } from \"../types.js\";\n\n/**\n * Generates n8n workflow template files.\n * Returns a map of file paths to JSON content strings.\n */\nexport function generateN8nWorkflows(resolved: ResolverOutput): Record<string, string> {\n\tconst files: Record<string, string> = {};\n\n\t// Only generate if n8n is in the stack\n\tconst hasN8n = resolved.services.some((s) => s.definition.id === \"n8n\");\n\tif (!hasN8n) return files;\n\n\tfiles[\"n8n/workflows/openclaw-webhook-handler.json\"] = JSON.stringify(\n\t\tcreateWebhookHandlerWorkflow(resolved),\n\t\tnull,\n\t\t2,\n\t);\n\n\treturn files;\n}\n\nfunction createWebhookHandlerWorkflow(resolved: ResolverOutput) {\n\t// Create a basic n8n workflow JSON that:\n\t// 1. Has a Webhook trigger node listening on /openclaw-webhook\n\t// 2. Has a Function node that processes the payload\n\t// 3. Outputs to a Respond to Webhook node\n\tconst serviceNames = resolved.services.map((s) => s.definition.name).join(\", \");\n\n\treturn {\n\t\tname: \"OpenClaw Webhook Handler\",\n\t\tnodes: [\n\t\t\t{\n\t\t\t\tparameters: {\n\t\t\t\t\thttpMethod: \"POST\",\n\t\t\t\t\tpath: \"openclaw-webhook\",\n\t\t\t\t\tresponseMode: \"responseNode\",\n\t\t\t\t\toptions: {},\n\t\t\t\t},\n\t\t\t\tid: \"webhook-trigger\",\n\t\t\t\tname: \"Webhook\",\n\t\t\t\ttype: \"n8n-nodes-base.webhook\",\n\t\t\t\ttypeVersion: 2,\n\t\t\t\tposition: [250, 300],\n\t\t\t},\n\t\t\t{\n\t\t\t\tparameters: {\n\t\t\t\t\tjsCode:\n\t\t\t\t\t\t\"// Process OpenClaw webhook payload\\n\" +\n\t\t\t\t\t\t\"const payload = $input.all()[0].json;\\n\" +\n\t\t\t\t\t\t\"\\n\" +\n\t\t\t\t\t\t\"// Available services in this stack:\\n\" +\n\t\t\t\t\t\t`// ${serviceNames}\\n` +\n\t\t\t\t\t\t\"\\n\" +\n\t\t\t\t\t\t\"return [{ json: { received: true, timestamp: new Date().toISOString(), payload } }];\",\n\t\t\t\t},\n\t\t\t\tid: \"process-payload\",\n\t\t\t\tname: \"Process Payload\",\n\t\t\t\ttype: \"n8n-nodes-base.code\",\n\t\t\t\ttypeVersion: 2,\n\t\t\t\tposition: [470, 300],\n\t\t\t},\n\t\t\t{\n\t\t\t\tparameters: {\n\t\t\t\t\trespondWith: \"json\",\n\t\t\t\t\tresponseBody: \"={{ JSON.stringify($json) }}\",\n\t\t\t\t\toptions: {},\n\t\t\t\t},\n\t\t\t\tid: \"respond\",\n\t\t\t\tname: \"Respond to Webhook\",\n\t\t\t\ttype: \"n8n-nodes-base.respondToWebhook\",\n\t\t\t\ttypeVersion: 1,\n\t\t\t\tposition: [690, 300],\n\t\t\t},\n\t\t],\n\t\tconnections: {\n\t\t\tWebhook: {\n\t\t\t\tmain: [[{ node: \"Process Payload\", type: \"main\", index: 0 }]],\n\t\t\t},\n\t\t\t\"Process Payload\": {\n\t\t\t\tmain: [[{ node: \"Respond to Webhook\", type: \"main\", index: 0 }]],\n\t\t\t},\n\t\t},\n\t\tactive: false,\n\t\tsettings: { executionOrder: \"v1\" },\n\t\ttags: [{ name: \"openclaw\" }],\n\t};\n}\n"],"mappings":";;;;;AAMA,SAAgB,qBAAqB,UAAkD;CACtF,MAAM,QAAgC,EAAE;AAIxC,KAAI,CADW,SAAS,SAAS,MAAM,MAAM,EAAE,WAAW,OAAO,MAAM,CAC1D,QAAO;AAEpB,OAAM,iDAAiD,KAAK,UAC3D,6BAA6B,SAAS,EACtC,MACA,EACA;AAED,QAAO;;AAGR,SAAS,6BAA6B,UAA0B;AAO/D,QAAO;EACN,MAAM;EACN,OAAO;GACN;IACC,YAAY;KACX,YAAY;KACZ,MAAM;KACN,cAAc;KACd,SAAS,EAAE;KACX;IACD,IAAI;IACJ,MAAM;IACN,MAAM;IACN,aAAa;IACb,UAAU,CAAC,KAAK,IAAI;IACpB;GACD;IACC,YAAY,EACX,QACC;;;;KArBgB,SAAS,SAAS,KAAK,MAAM,EAAE,WAAW,KAAK,CAAC,KAAK,KAAK,CAyBvD;uFAGpB;IACD,IAAI;IACJ,MAAM;IACN,MAAM;IACN,aAAa;IACb,UAAU,CAAC,KAAK,IAAI;IACpB;GACD;IACC,YAAY;KACX,aAAa;KACb,cAAc;KACd,SAAS,EAAE;KACX;IACD,IAAI;IACJ,MAAM;IACN,MAAM;IACN,aAAa;IACb,UAAU,CAAC,KAAK,IAAI;IACpB;GACD;EACD,aAAa;GACZ,SAAS,EACR,MAAM,CAAC,CAAC;IAAE,MAAM;IAAmB,MAAM;IAAQ,OAAO;IAAG,CAAC,CAAC,EAC7D;GACD,mBAAmB,EAClB,MAAM,CAAC,CAAC;IAAE,MAAM;IAAsB,MAAM;IAAQ,OAAO;IAAG,CAAC,CAAC,EAChE;GACD;EACD,QAAQ;EACR,UAAU,EAAE,gBAAgB,MAAM;EAClC,MAAM,CAAC,EAAE,MAAM,YAAY,CAAC;EAC5B"}
@@ -0,0 +1,17 @@
1
+ import { NativePlatform, ResolvedService } from "../types.mjs";
2
+
3
+ //#region src/generators/native-services.d.ts
4
+ interface NativeServicesGeneratorOptions {
5
+ nativeServices: ResolvedService[];
6
+ platform: NativePlatform;
7
+ projectName: string;
8
+ }
9
+ /**
10
+ * Generates native install/run scripts for services that have a native recipe.
11
+ * Returns e.g. native/install-linux.sh (or native/install.ps1 for Windows).
12
+ * Scripts source .env and run install steps then start commands in dependency order.
13
+ */
14
+ declare function generateNativeInstallScripts(options: NativeServicesGeneratorOptions): Record<string, string>;
15
+ //#endregion
16
+ export { NativeServicesGeneratorOptions, generateNativeInstallScripts };
17
+ //# sourceMappingURL=native-services.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-services.d.mts","names":[],"sources":["../../src/generators/native-services.ts"],"mappings":";;;UAEiB,8BAAA;EAChB,cAAA,EAAgB,eAAA;EAChB,QAAA,EAAU,cAAA;EACV,WAAA;AAAA;;;;;;iBAQe,4BAAA,CACf,OAAA,EAAS,8BAAA,GACP,MAAA"}
@@ -0,0 +1,78 @@
1
+ //#region src/generators/native-services.ts
2
+ /**
3
+ * Generates native install/run scripts for services that have a native recipe.
4
+ * Returns e.g. native/install-linux.sh (or native/install.ps1 for Windows).
5
+ * Scripts source .env and run install steps then start commands in dependency order.
6
+ */
7
+ function generateNativeInstallScripts(options) {
8
+ const { nativeServices, platform } = options;
9
+ const files = {};
10
+ if (platform === "linux") files["native/install-linux.sh"] = buildLinuxNativeScript(nativeServices);
11
+ else if (platform === "windows") files["native/install-windows.ps1"] = buildWindowsNativeScript(nativeServices);
12
+ else files["native/install-macos.sh"] = buildLinuxNativeScript(nativeServices);
13
+ return files;
14
+ }
15
+ function buildLinuxNativeScript(nativeServices) {
16
+ const lines = [
17
+ "#!/usr/bin/env bash",
18
+ "set -euo pipefail",
19
+ "# OpenClaw native services — install and start (Linux). Run from project root. Source .env first.",
20
+ "",
21
+ "SCRIPT_DIR=\"$(cd \"$(dirname \"${BASH_SOURCE[0]}\")\" && pwd)\"",
22
+ "PROJECT_DIR=\"$(dirname \"$SCRIPT_DIR\")\"",
23
+ "cd \"$PROJECT_DIR\"",
24
+ "",
25
+ "if [ -f .env ]; then set -a; source .env; set +a; fi",
26
+ ""
27
+ ];
28
+ for (const { definition: def } of nativeServices) {
29
+ const recipe = def.nativeRecipes?.find((r) => r.platform === "linux");
30
+ if (!recipe) continue;
31
+ lines.push(`# ─── ${def.icon} ${def.name} ─────────────────────────────────────────`);
32
+ lines.push("");
33
+ if (recipe.configPath && recipe.configTemplate) {
34
+ const delim = `ENDOF_${def.id.toUpperCase().replace(/-/g, "_")}_CONF`;
35
+ lines.push(`# Write config for ${def.id}`);
36
+ lines.push(`sudo mkdir -p "$(dirname "${recipe.configPath}")" 2>/dev/null || true`);
37
+ lines.push(`sudo tee "${recipe.configPath}" > /dev/null << ${delim}`);
38
+ lines.push(recipe.configTemplate.trim());
39
+ lines.push(delim);
40
+ lines.push("");
41
+ }
42
+ for (const step of recipe.installSteps) {
43
+ lines.push(`# Install: ${def.id}`);
44
+ lines.push(step);
45
+ lines.push("");
46
+ }
47
+ lines.push(`# Start: ${def.id}`);
48
+ lines.push(recipe.startCommand);
49
+ lines.push("");
50
+ }
51
+ lines.push("echo 'Native services started.'");
52
+ return lines.join("\n");
53
+ }
54
+ function buildWindowsNativeScript(nativeServices) {
55
+ const lines = [
56
+ "# OpenClaw native services — install and start (Windows). Run from project root.",
57
+ "$ErrorActionPreference = 'Stop'",
58
+ "$ProjectDir = (Get-Item $PSScriptRoot).Parent.FullName",
59
+ "Set-Location $ProjectDir",
60
+ "",
61
+ "if (Test-Path .env) { Get-Content .env | ForEach-Object { if ($_ -match '^([^#=]+)=(.*)$') { [System.Environment]::SetEnvironmentVariable($matches[1].Trim(), $matches[2].Trim(), 'Process') } } }",
62
+ ""
63
+ ];
64
+ for (const { definition: def } of nativeServices) {
65
+ const recipe = def.nativeRecipes?.find((r) => r.platform === "windows");
66
+ if (!recipe) continue;
67
+ lines.push(`# ${def.name}`);
68
+ for (const step of recipe.installSteps) lines.push(`Invoke-Expression "${step.replace(/"/g, "`\"")}"`);
69
+ lines.push(recipe.startCommand);
70
+ lines.push("");
71
+ }
72
+ lines.push("Write-Host 'Native services started.'");
73
+ return lines.join("\n");
74
+ }
75
+
76
+ //#endregion
77
+ export { generateNativeInstallScripts };
78
+ //# sourceMappingURL=native-services.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"native-services.mjs","names":[],"sources":["../../src/generators/native-services.ts"],"sourcesContent":["import type { NativePlatform, ResolvedService } from \"../types.js\";\n\nexport interface NativeServicesGeneratorOptions {\n\tnativeServices: ResolvedService[];\n\tplatform: NativePlatform;\n\tprojectName: string;\n}\n\n/**\n * Generates native install/run scripts for services that have a native recipe.\n * Returns e.g. native/install-linux.sh (or native/install.ps1 for Windows).\n * Scripts source .env and run install steps then start commands in dependency order.\n */\nexport function generateNativeInstallScripts(\n\toptions: NativeServicesGeneratorOptions,\n): Record<string, string> {\n\tconst { nativeServices, platform } = options;\n\tconst files: Record<string, string> = {};\n\n\tif (platform === \"linux\") {\n\t\tfiles[\"native/install-linux.sh\"] = buildLinuxNativeScript(nativeServices);\n\t} else if (platform === \"windows\") {\n\t\tfiles[\"native/install-windows.ps1\"] = buildWindowsNativeScript(nativeServices);\n\t} else {\n\t\t// macos: use bash script similar to linux\n\t\tfiles[\"native/install-macos.sh\"] = buildLinuxNativeScript(nativeServices);\n\t}\n\n\treturn files;\n}\n\nfunction buildLinuxNativeScript(nativeServices: ResolvedService[]): string {\n\tconst lines: string[] = [\n\t\t\"#!/usr/bin/env bash\",\n\t\t\"set -euo pipefail\",\n\t\t\"# OpenClaw native services — install and start (Linux). Run from project root. Source .env first.\",\n\t\t\"\",\n\t\t'SCRIPT_DIR=\"$(cd \"$(dirname \"${BASH_SOURCE[0]}\")\" && pwd)\"',\n\t\t'PROJECT_DIR=\"$(dirname \"$SCRIPT_DIR\")\"',\n\t\t'cd \"$PROJECT_DIR\"',\n\t\t\"\",\n\t\t\"if [ -f .env ]; then set -a; source .env; set +a; fi\",\n\t\t\"\",\n\t];\n\n\tfor (const { definition: def } of nativeServices) {\n\t\tconst recipe = def.nativeRecipes?.find((r) => r.platform === \"linux\");\n\t\tif (!recipe) continue;\n\n\t\tlines.push(`# ─── ${def.icon} ${def.name} ─────────────────────────────────────────`);\n\t\tlines.push(\"\");\n\n\t\tif (recipe.configPath && recipe.configTemplate) {\n\t\t\tconst delim = `ENDOF_${def.id.toUpperCase().replace(/-/g, \"_\")}_CONF`;\n\t\t\tlines.push(`# Write config for ${def.id}`);\n\t\t\tlines.push(`sudo mkdir -p \"$(dirname \"${recipe.configPath}\")\" 2>/dev/null || true`);\n\t\t\tlines.push(`sudo tee \"${recipe.configPath}\" > /dev/null << ${delim}`);\n\t\t\tlines.push(recipe.configTemplate.trim());\n\t\t\tlines.push(delim);\n\t\t\tlines.push(\"\");\n\t\t}\n\n\t\tfor (const step of recipe.installSteps) {\n\t\t\tlines.push(`# Install: ${def.id}`);\n\t\t\tlines.push(step);\n\t\t\tlines.push(\"\");\n\t\t}\n\n\t\tlines.push(`# Start: ${def.id}`);\n\t\tlines.push(recipe.startCommand);\n\t\tlines.push(\"\");\n\t}\n\n\tlines.push(\"echo 'Native services started.'\");\n\treturn lines.join(\"\\n\");\n}\n\nfunction buildWindowsNativeScript(nativeServices: ResolvedService[]): string {\n\tconst lines: string[] = [\n\t\t\"# OpenClaw native services — install and start (Windows). Run from project root.\",\n\t\t\"$ErrorActionPreference = 'Stop'\",\n\t\t\"$ProjectDir = (Get-Item $PSScriptRoot).Parent.FullName\",\n\t\t\"Set-Location $ProjectDir\",\n\t\t\"\",\n\t\t\"if (Test-Path .env) { Get-Content .env | ForEach-Object { if ($_ -match '^([^#=]+)=(.*)$') { [System.Environment]::SetEnvironmentVariable($matches[1].Trim(), $matches[2].Trim(), 'Process') } } }\",\n\t\t\"\",\n\t];\n\n\tfor (const { definition: def } of nativeServices) {\n\t\tconst recipe = def.nativeRecipes?.find((r) => r.platform === \"windows\");\n\t\tif (!recipe) continue;\n\n\t\tlines.push(`# ${def.name}`);\n\t\tfor (const step of recipe.installSteps) {\n\t\t\tlines.push(`Invoke-Expression \"${step.replace(/\"/g, '`\"')}\"`);\n\t\t}\n\t\tlines.push(recipe.startCommand);\n\t\tlines.push(\"\");\n\t}\n\n\tlines.push(\"Write-Host 'Native services started.'\");\n\treturn lines.join(\"\\n\");\n}\n"],"mappings":";;;;;;AAaA,SAAgB,6BACf,SACyB;CACzB,MAAM,EAAE,gBAAgB,aAAa;CACrC,MAAM,QAAgC,EAAE;AAExC,KAAI,aAAa,QAChB,OAAM,6BAA6B,uBAAuB,eAAe;UAC/D,aAAa,UACvB,OAAM,gCAAgC,yBAAyB,eAAe;KAG9E,OAAM,6BAA6B,uBAAuB,eAAe;AAG1E,QAAO;;AAGR,SAAS,uBAAuB,gBAA2C;CAC1E,MAAM,QAAkB;EACvB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAED,MAAK,MAAM,EAAE,YAAY,SAAS,gBAAgB;EACjD,MAAM,SAAS,IAAI,eAAe,MAAM,MAAM,EAAE,aAAa,QAAQ;AACrE,MAAI,CAAC,OAAQ;AAEb,QAAM,KAAK,SAAS,IAAI,KAAK,GAAG,IAAI,KAAK,4CAA4C;AACrF,QAAM,KAAK,GAAG;AAEd,MAAI,OAAO,cAAc,OAAO,gBAAgB;GAC/C,MAAM,QAAQ,SAAS,IAAI,GAAG,aAAa,CAAC,QAAQ,MAAM,IAAI,CAAC;AAC/D,SAAM,KAAK,sBAAsB,IAAI,KAAK;AAC1C,SAAM,KAAK,6BAA6B,OAAO,WAAW,yBAAyB;AACnF,SAAM,KAAK,aAAa,OAAO,WAAW,mBAAmB,QAAQ;AACrE,SAAM,KAAK,OAAO,eAAe,MAAM,CAAC;AACxC,SAAM,KAAK,MAAM;AACjB,SAAM,KAAK,GAAG;;AAGf,OAAK,MAAM,QAAQ,OAAO,cAAc;AACvC,SAAM,KAAK,cAAc,IAAI,KAAK;AAClC,SAAM,KAAK,KAAK;AAChB,SAAM,KAAK,GAAG;;AAGf,QAAM,KAAK,YAAY,IAAI,KAAK;AAChC,QAAM,KAAK,OAAO,aAAa;AAC/B,QAAM,KAAK,GAAG;;AAGf,OAAM,KAAK,kCAAkC;AAC7C,QAAO,MAAM,KAAK,KAAK;;AAGxB,SAAS,yBAAyB,gBAA2C;CAC5E,MAAM,QAAkB;EACvB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAED,MAAK,MAAM,EAAE,YAAY,SAAS,gBAAgB;EACjD,MAAM,SAAS,IAAI,eAAe,MAAM,MAAM,EAAE,aAAa,UAAU;AACvE,MAAI,CAAC,OAAQ;AAEb,QAAM,KAAK,KAAK,IAAI,OAAO;AAC3B,OAAK,MAAM,QAAQ,OAAO,aACzB,OAAM,KAAK,sBAAsB,KAAK,QAAQ,MAAM,MAAK,CAAC,GAAG;AAE9D,QAAM,KAAK,OAAO,aAAa;AAC/B,QAAM,KAAK,GAAG;;AAGf,OAAM,KAAK,wCAAwC;AACnD,QAAO,MAAM,KAAK,KAAK"}
@@ -0,0 +1,30 @@
1
+ import { ResolverOutput } from "../types.mjs";
2
+
3
+ //#region src/generators/postgres-init.d.ts
4
+ /**
5
+ * Database requirement descriptor for a service.
6
+ */
7
+ interface DbRequirement {
8
+ serviceId: string;
9
+ serviceName: string;
10
+ dbName: string;
11
+ dbUser: string;
12
+ passwordEnvVar: string;
13
+ }
14
+ /**
15
+ * Get the list of database requirements for all resolved services.
16
+ * Exported so other generators (env, composer) can access the same data.
17
+ */
18
+ declare function getDbRequirements(resolved: ResolverOutput): DbRequirement[];
19
+ /**
20
+ * Generates a PostgreSQL initialization script that creates databases and users
21
+ * for all companion services that need their own DB.
22
+ *
23
+ * Returns null if PostgreSQL is not in the resolved stack or no services need extra DBs.
24
+ * The script is designed to be mounted at /docker-entrypoint-initdb.d/init-databases.sh
25
+ * and runs automatically during PostgreSQL's first initialization.
26
+ */
27
+ declare function generatePostgresInit(resolved: ResolverOutput): string | null;
28
+ //#endregion
29
+ export { generatePostgresInit, getDbRequirements };
30
+ //# sourceMappingURL=postgres-init.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres-init.d.mts","names":[],"sources":["../../src/generators/postgres-init.ts"],"mappings":";;;;;AAAkD;UAKxC,aAAA;EACT,SAAA;EACA,WAAA;EACA,MAAA;EACA,MAAA;EACA,cAAA;AAAA;;;;AAiCD;iBAAgB,iBAAA,CAAkB,QAAA,EAAU,cAAA,GAAiB,aAAA;;;;;;;;AAuB7D;iBAAgB,oBAAA,CAAqB,QAAA,EAAU,cAAA"}