@better-openclaw/core 1.0.26 → 1.0.31

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 (1122) hide show
  1. package/README.md +67 -7
  2. package/dist/addon-stack.cjs +41 -28
  3. package/dist/addon-stack.cjs.map +1 -1
  4. package/dist/addon-stack.d.cts +1 -1
  5. package/dist/addon-stack.d.cts.map +1 -1
  6. package/dist/addon-stack.d.mts +1 -1
  7. package/dist/addon-stack.d.mts.map +1 -1
  8. package/dist/addon-stack.mjs +40 -27
  9. package/dist/addon-stack.mjs.map +1 -1
  10. package/dist/addon-stack.test.cjs +14 -14
  11. package/dist/addon-stack.test.cjs.map +1 -1
  12. package/dist/addon-stack.test.mjs +13 -13
  13. package/dist/addon-stack.test.mjs.map +1 -1
  14. package/dist/bare-metal-partition.d.cts +1 -1
  15. package/dist/bare-metal-partition.d.mts +1 -1
  16. package/dist/bare-metal-partition.test.cjs +1 -1
  17. package/dist/bare-metal-partition.test.mjs +1 -1
  18. package/dist/callback-sink-CdMKYayY.d.mts +15 -0
  19. package/dist/callback-sink-CdMKYayY.d.mts.map +1 -0
  20. package/dist/callback-sink-iNThWRnQ.d.cts +15 -0
  21. package/dist/callback-sink-iNThWRnQ.d.cts.map +1 -0
  22. package/dist/claude-code-fw-CrbAlzTM.d.mts +7 -0
  23. package/dist/claude-code-fw-CrbAlzTM.d.mts.map +1 -0
  24. package/dist/claude-code-fw-dKYH2prH.d.cts +7 -0
  25. package/dist/claude-code-fw-dKYH2prH.d.cts.map +1 -0
  26. package/dist/codex-fw-Ct8q4pzo.d.mts +7 -0
  27. package/dist/codex-fw-Ct8q4pzo.d.mts.map +1 -0
  28. package/dist/codex-fw-l7Ku8ZI8.d.cts +7 -0
  29. package/dist/codex-fw-l7Ku8ZI8.d.cts.map +1 -0
  30. package/dist/compose-validation.test.cjs +1 -1
  31. package/dist/composer.cjs +89 -129
  32. package/dist/composer.cjs.map +1 -1
  33. package/dist/composer.d.cts +3 -3
  34. package/dist/composer.d.cts.map +1 -1
  35. package/dist/composer.d.mts +3 -3
  36. package/dist/composer.d.mts.map +1 -1
  37. package/dist/composer.mjs +88 -128
  38. package/dist/composer.mjs.map +1 -1
  39. package/dist/composer.snapshot.test.cjs +1 -1
  40. package/dist/composer.snapshot.test.mjs +1 -1
  41. package/dist/composer.test.cjs +53 -2
  42. package/dist/composer.test.cjs.map +1 -1
  43. package/dist/composer.test.mjs +52 -1
  44. package/dist/composer.test.mjs.map +1 -1
  45. package/dist/console-sink-BHQpRyCt.d.cts +13 -0
  46. package/dist/console-sink-BHQpRyCt.d.cts.map +1 -0
  47. package/dist/console-sink-bouG_M1K.d.mts +13 -0
  48. package/dist/console-sink-bouG_M1K.d.mts.map +1 -0
  49. package/dist/{coolify-BVGGcMrT.d.mts → coolify-D5E0z01M.d.mts} +2 -2
  50. package/dist/{coolify-BVGGcMrT.d.mts.map → coolify-D5E0z01M.d.mts.map} +1 -1
  51. package/dist/{coolify-vlb1G9V2.d.cts → coolify-DjHecHCr.d.cts} +2 -2
  52. package/dist/{coolify-vlb1G9V2.d.cts.map → coolify-DjHecHCr.d.cts.map} +1 -1
  53. package/dist/copaw-BQyjioz7.d.cts +7 -0
  54. package/dist/copaw-BQyjioz7.d.cts.map +1 -0
  55. package/dist/copaw-C_3N7eQu.d.mts +7 -0
  56. package/dist/copaw-C_3N7eQu.d.mts.map +1 -0
  57. package/dist/deployers/coolify.cjs +25 -0
  58. package/dist/deployers/coolify.cjs.map +1 -1
  59. package/dist/deployers/coolify.d.cts +1 -1
  60. package/dist/deployers/coolify.d.mts +1 -1
  61. package/dist/deployers/coolify.mjs +25 -0
  62. package/dist/deployers/coolify.mjs.map +1 -1
  63. package/dist/deployers/coolify.test.cjs +156 -0
  64. package/dist/deployers/coolify.test.cjs.map +1 -0
  65. package/dist/deployers/coolify.test.d.cts +1 -0
  66. package/dist/deployers/coolify.test.d.mts +1 -0
  67. package/dist/deployers/coolify.test.mjs +157 -0
  68. package/dist/deployers/coolify.test.mjs.map +1 -0
  69. package/dist/deployers/dokploy.cjs +25 -0
  70. package/dist/deployers/dokploy.cjs.map +1 -1
  71. package/dist/deployers/dokploy.d.cts +1 -1
  72. package/dist/deployers/dokploy.d.mts +1 -1
  73. package/dist/deployers/dokploy.mjs +25 -0
  74. package/dist/deployers/dokploy.mjs.map +1 -1
  75. package/dist/deployers/dokploy.test.cjs +108 -0
  76. package/dist/deployers/dokploy.test.cjs.map +1 -0
  77. package/dist/deployers/dokploy.test.d.cts +1 -0
  78. package/dist/deployers/dokploy.test.d.mts +1 -0
  79. package/dist/deployers/dokploy.test.mjs +109 -0
  80. package/dist/deployers/dokploy.test.mjs.map +1 -0
  81. package/dist/deployers/index.d.cts +3 -3
  82. package/dist/deployers/index.d.mts +3 -3
  83. package/dist/deployers/strip-host-ports.cjs +1 -1
  84. package/dist/deployers/strip-host-ports.test.cjs +1 -1
  85. package/dist/deployers/strip-host-ports.test.mjs +1 -1
  86. package/dist/deployers/types.d.cts +1 -1
  87. package/dist/deployers/types.d.mts +1 -1
  88. package/dist/{dokploy-8cbrxUun.d.cts → dokploy-BnVDjWCV.d.cts} +2 -2
  89. package/dist/{dokploy-8cbrxUun.d.cts.map → dokploy-BnVDjWCV.d.cts.map} +1 -1
  90. package/dist/{dokploy-BTflLhTM.d.mts → dokploy-BqLdCfyR.d.mts} +2 -2
  91. package/dist/{dokploy-BTflLhTM.d.mts.map → dokploy-BqLdCfyR.d.mts.map} +1 -1
  92. package/dist/frameworks/claude-code-fw.cjs +79 -0
  93. package/dist/frameworks/claude-code-fw.cjs.map +1 -0
  94. package/dist/frameworks/claude-code-fw.d.cts +2 -0
  95. package/dist/frameworks/claude-code-fw.d.mts +2 -0
  96. package/dist/frameworks/claude-code-fw.mjs +78 -0
  97. package/dist/frameworks/claude-code-fw.mjs.map +1 -0
  98. package/dist/frameworks/codex-fw.cjs +67 -0
  99. package/dist/frameworks/codex-fw.cjs.map +1 -0
  100. package/dist/frameworks/codex-fw.d.cts +2 -0
  101. package/dist/frameworks/codex-fw.d.mts +2 -0
  102. package/dist/frameworks/codex-fw.mjs +66 -0
  103. package/dist/frameworks/codex-fw.mjs.map +1 -0
  104. package/dist/frameworks/copaw.cjs +118 -0
  105. package/dist/frameworks/copaw.cjs.map +1 -0
  106. package/dist/frameworks/copaw.d.cts +2 -0
  107. package/dist/frameworks/copaw.d.mts +2 -0
  108. package/dist/frameworks/copaw.mjs +117 -0
  109. package/dist/frameworks/copaw.mjs.map +1 -0
  110. package/dist/frameworks/frameworks.test.cjs +94 -0
  111. package/dist/frameworks/frameworks.test.cjs.map +1 -0
  112. package/dist/frameworks/frameworks.test.d.cts +1 -0
  113. package/dist/frameworks/frameworks.test.d.mts +1 -0
  114. package/dist/frameworks/frameworks.test.mjs +94 -0
  115. package/dist/frameworks/frameworks.test.mjs.map +1 -0
  116. package/dist/frameworks/index.cjs +35 -0
  117. package/dist/frameworks/index.cjs.map +1 -0
  118. package/dist/frameworks/index.d.cts +11 -0
  119. package/dist/frameworks/index.d.mts +11 -0
  120. package/dist/frameworks/index.mjs +22 -0
  121. package/dist/frameworks/index.mjs.map +1 -0
  122. package/dist/frameworks/memu.cjs +118 -0
  123. package/dist/frameworks/memu.cjs.map +1 -0
  124. package/dist/frameworks/memu.d.cts +2 -0
  125. package/dist/frameworks/memu.d.mts +2 -0
  126. package/dist/frameworks/memu.mjs +117 -0
  127. package/dist/frameworks/memu.mjs.map +1 -0
  128. package/dist/frameworks/nanobot.cjs +126 -0
  129. package/dist/frameworks/nanobot.cjs.map +1 -0
  130. package/dist/frameworks/nanobot.d.cts +2 -0
  131. package/dist/frameworks/nanobot.d.mts +2 -0
  132. package/dist/frameworks/nanobot.mjs +125 -0
  133. package/dist/frameworks/nanobot.mjs.map +1 -0
  134. package/dist/frameworks/nanoclaw.cjs +99 -0
  135. package/dist/frameworks/nanoclaw.cjs.map +1 -0
  136. package/dist/frameworks/nanoclaw.d.cts +2 -0
  137. package/dist/frameworks/nanoclaw.d.mts +2 -0
  138. package/dist/frameworks/nanoclaw.mjs +98 -0
  139. package/dist/frameworks/nanoclaw.mjs.map +1 -0
  140. package/dist/frameworks/openclaw.cjs +253 -0
  141. package/dist/frameworks/openclaw.cjs.map +1 -0
  142. package/dist/frameworks/openclaw.d.cts +2 -0
  143. package/dist/frameworks/openclaw.d.mts +2 -0
  144. package/dist/frameworks/openclaw.mjs +251 -0
  145. package/dist/frameworks/openclaw.mjs.map +1 -0
  146. package/dist/frameworks/registry.cjs +31 -0
  147. package/dist/frameworks/registry.cjs.map +1 -0
  148. package/dist/frameworks/registry.d.cts +2 -0
  149. package/dist/frameworks/registry.d.mts +2 -0
  150. package/dist/frameworks/registry.mjs +26 -0
  151. package/dist/frameworks/registry.mjs.map +1 -0
  152. package/dist/frameworks/registry.test.cjs +110 -0
  153. package/dist/frameworks/registry.test.cjs.map +1 -0
  154. package/dist/frameworks/registry.test.d.cts +1 -0
  155. package/dist/frameworks/registry.test.d.mts +1 -0
  156. package/dist/frameworks/registry.test.mjs +111 -0
  157. package/dist/frameworks/registry.test.mjs.map +1 -0
  158. package/dist/frameworks/types.cjs +0 -0
  159. package/dist/frameworks/types.d.cts +2 -0
  160. package/dist/frameworks/types.d.mts +2 -0
  161. package/dist/frameworks/types.mjs +1 -0
  162. package/dist/frameworks/zeroclaw.cjs +123 -0
  163. package/dist/frameworks/zeroclaw.cjs.map +1 -0
  164. package/dist/frameworks/zeroclaw.d.cts +2 -0
  165. package/dist/frameworks/zeroclaw.d.mts +2 -0
  166. package/dist/frameworks/zeroclaw.mjs +122 -0
  167. package/dist/frameworks/zeroclaw.mjs.map +1 -0
  168. package/dist/generate.cjs +64 -13
  169. package/dist/generate.cjs.map +1 -1
  170. package/dist/generate.d.cts +5 -2
  171. package/dist/generate.d.cts.map +1 -1
  172. package/dist/generate.d.mts +5 -2
  173. package/dist/generate.d.mts.map +1 -1
  174. package/dist/generate.mjs +63 -12
  175. package/dist/generate.mjs.map +1 -1
  176. package/dist/generate.test.cjs +42 -6
  177. package/dist/generate.test.cjs.map +1 -1
  178. package/dist/generate.test.mjs +41 -5
  179. package/dist/generate.test.mjs.map +1 -1
  180. package/dist/generators/bare-metal-install.d.cts +1 -1
  181. package/dist/generators/bare-metal-install.d.mts +1 -1
  182. package/dist/generators/bare-metal-install.test.cjs +1 -1
  183. package/dist/generators/bare-metal-install.test.mjs +1 -1
  184. package/dist/generators/caddy.cjs +9 -3
  185. package/dist/generators/caddy.cjs.map +1 -1
  186. package/dist/generators/caddy.d.cts +1 -1
  187. package/dist/generators/caddy.d.mts +1 -1
  188. package/dist/generators/caddy.mjs +9 -3
  189. package/dist/generators/caddy.mjs.map +1 -1
  190. package/dist/generators/caddy.test.cjs +30 -2
  191. package/dist/generators/caddy.test.cjs.map +1 -1
  192. package/dist/generators/caddy.test.mjs +30 -2
  193. package/dist/generators/caddy.test.mjs.map +1 -1
  194. package/dist/generators/clone-repos.cjs.map +1 -1
  195. package/dist/generators/clone-repos.d.cts +1 -1
  196. package/dist/generators/clone-repos.d.mts +1 -1
  197. package/dist/generators/clone-repos.mjs.map +1 -1
  198. package/dist/generators/clone-repos.test.cjs +1 -1
  199. package/dist/generators/clone-repos.test.cjs.map +1 -1
  200. package/dist/generators/clone-repos.test.mjs +1 -1
  201. package/dist/generators/clone-repos.test.mjs.map +1 -1
  202. package/dist/generators/cloud-init.test.cjs +58 -0
  203. package/dist/generators/cloud-init.test.cjs.map +1 -0
  204. package/dist/generators/cloud-init.test.d.cts +1 -0
  205. package/dist/generators/cloud-init.test.d.mts +1 -0
  206. package/dist/generators/cloud-init.test.mjs +59 -0
  207. package/dist/generators/cloud-init.test.mjs.map +1 -0
  208. package/dist/generators/env.cjs +28 -103
  209. package/dist/generators/env.cjs.map +1 -1
  210. package/dist/generators/env.d.cts +4 -1
  211. package/dist/generators/env.d.cts.map +1 -1
  212. package/dist/generators/env.d.mts +4 -1
  213. package/dist/generators/env.d.mts.map +1 -1
  214. package/dist/generators/env.mjs +27 -102
  215. package/dist/generators/env.mjs.map +1 -1
  216. package/dist/generators/env.test.cjs +3 -3
  217. package/dist/generators/env.test.cjs.map +1 -1
  218. package/dist/generators/env.test.mjs +3 -3
  219. package/dist/generators/env.test.mjs.map +1 -1
  220. package/dist/generators/get-shit-done.d.cts +1 -1
  221. package/dist/generators/get-shit-done.d.mts +1 -1
  222. package/dist/generators/get-shit-done.test.cjs +48 -0
  223. package/dist/generators/get-shit-done.test.cjs.map +1 -0
  224. package/dist/generators/get-shit-done.test.d.cts +1 -0
  225. package/dist/generators/get-shit-done.test.d.mts +1 -0
  226. package/dist/generators/get-shit-done.test.mjs +49 -0
  227. package/dist/generators/get-shit-done.test.mjs.map +1 -0
  228. package/dist/generators/grafana.test.cjs +74 -0
  229. package/dist/generators/grafana.test.cjs.map +1 -0
  230. package/dist/generators/grafana.test.d.cts +1 -0
  231. package/dist/generators/grafana.test.d.mts +1 -0
  232. package/dist/generators/grafana.test.mjs +74 -0
  233. package/dist/generators/grafana.test.mjs.map +1 -0
  234. package/dist/generators/health-check.cjs +6 -6
  235. package/dist/generators/health-check.cjs.map +1 -1
  236. package/dist/generators/health-check.d.cts +1 -1
  237. package/dist/generators/health-check.d.mts +1 -1
  238. package/dist/generators/health-check.mjs +6 -6
  239. package/dist/generators/health-check.mjs.map +1 -1
  240. package/dist/generators/health-check.test.cjs +1 -1
  241. package/dist/generators/health-check.test.mjs +1 -1
  242. package/dist/generators/n8n-workflows.d.cts +1 -1
  243. package/dist/generators/n8n-workflows.d.mts +1 -1
  244. package/dist/generators/n8n-workflows.test.cjs +75 -0
  245. package/dist/generators/n8n-workflows.test.cjs.map +1 -0
  246. package/dist/generators/n8n-workflows.test.d.cts +1 -0
  247. package/dist/generators/n8n-workflows.test.d.mts +1 -0
  248. package/dist/generators/n8n-workflows.test.mjs +76 -0
  249. package/dist/generators/n8n-workflows.test.mjs.map +1 -0
  250. package/dist/generators/native-services.d.cts +1 -1
  251. package/dist/generators/native-services.d.mts +1 -1
  252. package/dist/generators/openclaw-install-script.test.cjs +35 -0
  253. package/dist/generators/openclaw-install-script.test.cjs.map +1 -0
  254. package/dist/generators/openclaw-install-script.test.d.cts +1 -0
  255. package/dist/generators/openclaw-install-script.test.d.mts +1 -0
  256. package/dist/generators/openclaw-install-script.test.mjs +36 -0
  257. package/dist/generators/openclaw-install-script.test.mjs.map +1 -0
  258. package/dist/generators/openclaw-json.cjs +60 -4
  259. package/dist/generators/openclaw-json.cjs.map +1 -1
  260. package/dist/generators/openclaw-json.d.cts +1 -5
  261. package/dist/generators/openclaw-json.d.cts.map +1 -1
  262. package/dist/generators/openclaw-json.d.mts +1 -5
  263. package/dist/generators/openclaw-json.d.mts.map +1 -1
  264. package/dist/generators/openclaw-json.mjs +60 -4
  265. package/dist/generators/openclaw-json.mjs.map +1 -1
  266. package/dist/generators/postgres-init.cjs +20 -0
  267. package/dist/generators/postgres-init.cjs.map +1 -1
  268. package/dist/generators/postgres-init.d.cts +1 -1
  269. package/dist/generators/postgres-init.d.cts.map +1 -1
  270. package/dist/generators/postgres-init.d.mts +1 -1
  271. package/dist/generators/postgres-init.d.mts.map +1 -1
  272. package/dist/generators/postgres-init.mjs +20 -0
  273. package/dist/generators/postgres-init.mjs.map +1 -1
  274. package/dist/generators/postgres-init.test.cjs +111 -0
  275. package/dist/generators/postgres-init.test.cjs.map +1 -0
  276. package/dist/generators/postgres-init.test.d.cts +1 -0
  277. package/dist/generators/postgres-init.test.d.mts +1 -0
  278. package/dist/generators/postgres-init.test.mjs +112 -0
  279. package/dist/generators/postgres-init.test.mjs.map +1 -0
  280. package/dist/generators/prometheus.d.cts +1 -1
  281. package/dist/generators/prometheus.d.mts +1 -1
  282. package/dist/generators/prometheus.test.cjs +99 -0
  283. package/dist/generators/prometheus.test.cjs.map +1 -0
  284. package/dist/generators/prometheus.test.d.cts +1 -0
  285. package/dist/generators/prometheus.test.d.mts +1 -0
  286. package/dist/generators/prometheus.test.mjs +99 -0
  287. package/dist/generators/prometheus.test.mjs.map +1 -0
  288. package/dist/generators/readme.cjs +50 -7
  289. package/dist/generators/readme.cjs.map +1 -1
  290. package/dist/generators/readme.d.cts +3 -1
  291. package/dist/generators/readme.d.cts.map +1 -1
  292. package/dist/generators/readme.d.mts +3 -1
  293. package/dist/generators/readme.d.mts.map +1 -1
  294. package/dist/generators/readme.mjs +50 -7
  295. package/dist/generators/readme.mjs.map +1 -1
  296. package/dist/generators/scripts.test.cjs +2 -2
  297. package/dist/generators/scripts.test.cjs.map +1 -1
  298. package/dist/generators/scripts.test.mjs +2 -2
  299. package/dist/generators/scripts.test.mjs.map +1 -1
  300. package/dist/generators/skills.cjs +1 -1
  301. package/dist/generators/skills.d.cts +1 -1
  302. package/dist/generators/skills.d.cts.map +1 -1
  303. package/dist/generators/skills.d.mts +1 -1
  304. package/dist/generators/skills.d.mts.map +1 -1
  305. package/dist/generators/skills.mjs +310 -0
  306. package/dist/generators/skills.mjs.map +1 -1
  307. package/dist/generators/stack-manifest.d.cts +1 -1
  308. package/dist/generators/stack-manifest.d.mts +1 -1
  309. package/dist/generators/stack-manifest.test.cjs +97 -0
  310. package/dist/generators/stack-manifest.test.cjs.map +1 -0
  311. package/dist/generators/stack-manifest.test.d.cts +1 -0
  312. package/dist/generators/stack-manifest.test.d.mts +1 -0
  313. package/dist/generators/stack-manifest.test.mjs +98 -0
  314. package/dist/generators/stack-manifest.test.mjs.map +1 -0
  315. package/dist/generators/traefik.d.cts +1 -1
  316. package/dist/generators/traefik.d.mts +1 -1
  317. package/dist/generators/traefik.test.cjs +12 -12
  318. package/dist/generators/traefik.test.cjs.map +1 -1
  319. package/dist/generators/traefik.test.mjs +12 -12
  320. package/dist/generators/traefik.test.mjs.map +1 -1
  321. package/dist/index.cjs +18 -2
  322. package/dist/index.d.cts +13 -7
  323. package/dist/index.d.mts +13 -7
  324. package/dist/index.mjs +9 -3
  325. package/dist/logger/__tests__/logger.test.cjs +308 -0
  326. package/dist/logger/__tests__/logger.test.cjs.map +1 -0
  327. package/dist/logger/__tests__/logger.test.d.cts +1 -0
  328. package/dist/logger/__tests__/logger.test.d.mts +1 -0
  329. package/dist/logger/__tests__/logger.test.mjs +308 -0
  330. package/dist/logger/__tests__/logger.test.mjs.map +1 -0
  331. package/dist/logger/index.cjs +8 -0
  332. package/dist/logger/index.d.cts +5 -0
  333. package/dist/logger/index.d.mts +5 -0
  334. package/dist/logger/index.mjs +4 -0
  335. package/dist/logger/logger.cjs +270 -0
  336. package/dist/logger/logger.cjs.map +1 -0
  337. package/dist/logger/logger.d.cts +2 -0
  338. package/dist/logger/logger.d.mts +2 -0
  339. package/dist/logger/logger.mjs +267 -0
  340. package/dist/logger/logger.mjs.map +1 -0
  341. package/dist/logger/sinks/callback-sink.cjs +18 -0
  342. package/dist/logger/sinks/callback-sink.cjs.map +1 -0
  343. package/dist/logger/sinks/callback-sink.d.cts +2 -0
  344. package/dist/logger/sinks/callback-sink.d.mts +2 -0
  345. package/dist/logger/sinks/callback-sink.mjs +17 -0
  346. package/dist/logger/sinks/callback-sink.mjs.map +1 -0
  347. package/dist/logger/sinks/console-sink.cjs +39 -0
  348. package/dist/logger/sinks/console-sink.cjs.map +1 -0
  349. package/dist/logger/sinks/console-sink.d.cts +2 -0
  350. package/dist/logger/sinks/console-sink.d.mts +2 -0
  351. package/dist/logger/sinks/console-sink.mjs +38 -0
  352. package/dist/logger/sinks/console-sink.mjs.map +1 -0
  353. package/dist/logger/sinks/file-sink.cjs +72 -0
  354. package/dist/logger/sinks/file-sink.cjs.map +1 -0
  355. package/dist/logger/sinks/file-sink.d.cts +36 -0
  356. package/dist/logger/sinks/file-sink.d.cts.map +1 -0
  357. package/dist/logger/sinks/file-sink.d.mts +36 -0
  358. package/dist/logger/sinks/file-sink.d.mts.map +1 -0
  359. package/dist/logger/sinks/file-sink.mjs +70 -0
  360. package/dist/logger/sinks/file-sink.mjs.map +1 -0
  361. package/dist/logger/types.cjs +0 -0
  362. package/dist/logger/types.d.cts +2 -0
  363. package/dist/logger/types.d.mts +2 -0
  364. package/dist/logger/types.mjs +1 -0
  365. package/dist/logger-CZ0Qnyiu.d.mts +66 -0
  366. package/dist/logger-CZ0Qnyiu.d.mts.map +1 -0
  367. package/dist/logger-DDfwai-A.d.cts +66 -0
  368. package/dist/logger-DDfwai-A.d.cts.map +1 -0
  369. package/dist/memu-BfRXtwmL.d.cts +7 -0
  370. package/dist/memu-BfRXtwmL.d.cts.map +1 -0
  371. package/dist/memu-C-fXbWr-.d.mts +7 -0
  372. package/dist/memu-C-fXbWr-.d.mts.map +1 -0
  373. package/dist/migrations.cjs +17 -9
  374. package/dist/migrations.cjs.map +1 -1
  375. package/dist/migrations.d.cts +1 -1
  376. package/dist/migrations.d.cts.map +1 -1
  377. package/dist/migrations.d.mts +1 -1
  378. package/dist/migrations.d.mts.map +1 -1
  379. package/dist/migrations.mjs +17 -9
  380. package/dist/migrations.mjs.map +1 -1
  381. package/dist/migrations.test.cjs +4 -4
  382. package/dist/migrations.test.mjs +4 -4
  383. package/dist/nanobot-2c0bS4lu.d.cts +7 -0
  384. package/dist/nanobot-2c0bS4lu.d.cts.map +1 -0
  385. package/dist/nanobot-BUO6pVQc.d.mts +7 -0
  386. package/dist/nanobot-BUO6pVQc.d.mts.map +1 -0
  387. package/dist/nanoclaw-CgHubEig.d.mts +7 -0
  388. package/dist/nanoclaw-CgHubEig.d.mts.map +1 -0
  389. package/dist/nanoclaw-Dvz0ef6J.d.cts +7 -0
  390. package/dist/nanoclaw-Dvz0ef6J.d.cts.map +1 -0
  391. package/dist/openclaw-D8lVecjC.d.mts +7 -0
  392. package/dist/openclaw-D8lVecjC.d.mts.map +1 -0
  393. package/dist/openclaw-DThj8i3N.d.cts +7 -0
  394. package/dist/openclaw-DThj8i3N.d.cts.map +1 -0
  395. package/dist/port-scanner.d.cts +1 -1
  396. package/dist/port-scanner.d.mts +1 -1
  397. package/dist/port-scanner.test.cjs +155 -0
  398. package/dist/port-scanner.test.cjs.map +1 -0
  399. package/dist/port-scanner.test.d.cts +1 -0
  400. package/dist/port-scanner.test.d.mts +1 -0
  401. package/dist/port-scanner.test.mjs +156 -0
  402. package/dist/port-scanner.test.mjs.map +1 -0
  403. package/dist/presets/presets.test.cjs +5 -5
  404. package/dist/presets/presets.test.cjs.map +1 -1
  405. package/dist/presets/presets.test.mjs +4 -4
  406. package/dist/presets/presets.test.mjs.map +1 -1
  407. package/dist/presets/registry.d.cts +1 -1
  408. package/dist/presets/registry.d.mts +1 -1
  409. package/dist/presets/registry.test.cjs +7 -7
  410. package/dist/presets/registry.test.cjs.map +1 -1
  411. package/dist/presets/registry.test.mjs +7 -7
  412. package/dist/presets/registry.test.mjs.map +1 -1
  413. package/dist/registry-DHX7vnVo.d.cts +16 -0
  414. package/dist/registry-DHX7vnVo.d.cts.map +1 -0
  415. package/dist/registry-DTAILnga.d.mts +16 -0
  416. package/dist/registry-DTAILnga.d.mts.map +1 -0
  417. package/dist/resolver.cjs +13 -3
  418. package/dist/resolver.cjs.map +1 -1
  419. package/dist/resolver.d.cts +1 -1
  420. package/dist/resolver.d.cts.map +1 -1
  421. package/dist/resolver.d.mts +1 -1
  422. package/dist/resolver.d.mts.map +1 -1
  423. package/dist/resolver.mjs +13 -3
  424. package/dist/resolver.mjs.map +1 -1
  425. package/dist/resolver.test.cjs +35 -3
  426. package/dist/resolver.test.cjs.map +1 -1
  427. package/dist/resolver.test.mjs +35 -3
  428. package/dist/resolver.test.mjs.map +1 -1
  429. package/dist/{schema-BQnZrcw8.d.cts → schema-BSl9wiFe.d.mts} +134 -2
  430. package/dist/schema-BSl9wiFe.d.mts.map +1 -0
  431. package/dist/{schema-SBpL0bdI.d.mts → schema-Bd9l2r7p.d.cts} +134 -2
  432. package/dist/schema-Bd9l2r7p.d.cts.map +1 -0
  433. package/dist/schema.cjs +28 -4
  434. package/dist/schema.cjs.map +1 -1
  435. package/dist/schema.d.cts +2 -2
  436. package/dist/schema.d.mts +2 -2
  437. package/dist/schema.mjs +27 -4
  438. package/dist/schema.mjs.map +1 -1
  439. package/dist/schema.test.cjs +3 -3
  440. package/dist/schema.test.cjs.map +1 -1
  441. package/dist/schema.test.mjs +3 -3
  442. package/dist/schema.test.mjs.map +1 -1
  443. package/dist/services/definitions/adguard-home.d.cts +1 -1
  444. package/dist/services/definitions/adguard-home.d.mts +1 -1
  445. package/dist/services/definitions/agent-browser.cjs +161 -0
  446. package/dist/services/definitions/agent-browser.cjs.map +1 -0
  447. package/dist/services/definitions/agent-browser.d.cts +7 -0
  448. package/dist/services/definitions/agent-browser.d.cts.map +1 -0
  449. package/dist/services/definitions/agent-browser.d.mts +7 -0
  450. package/dist/services/definitions/agent-browser.d.mts.map +1 -0
  451. package/dist/services/definitions/agent-browser.mjs +160 -0
  452. package/dist/services/definitions/agent-browser.mjs.map +1 -0
  453. package/dist/services/definitions/airbyte.d.cts +1 -1
  454. package/dist/services/definitions/airbyte.d.mts +1 -1
  455. package/dist/services/definitions/airflow.d.cts +1 -1
  456. package/dist/services/definitions/airflow.d.mts +1 -1
  457. package/dist/services/definitions/anything-llm.d.cts +1 -1
  458. package/dist/services/definitions/anything-llm.d.mts +1 -1
  459. package/dist/services/definitions/appflowy.d.cts +1 -1
  460. package/dist/services/definitions/appflowy.d.mts +1 -1
  461. package/dist/services/definitions/apptension-saas.cjs.map +1 -1
  462. package/dist/services/definitions/apptension-saas.d.cts +1 -1
  463. package/dist/services/definitions/apptension-saas.d.mts +1 -1
  464. package/dist/services/definitions/apptension-saas.mjs.map +1 -1
  465. package/dist/services/definitions/appwrite.d.cts +1 -1
  466. package/dist/services/definitions/appwrite.d.mts +1 -1
  467. package/dist/services/definitions/audiobookshelf.d.cts +1 -1
  468. package/dist/services/definitions/audiobookshelf.d.mts +1 -1
  469. package/dist/services/definitions/authelia.d.cts +1 -1
  470. package/dist/services/definitions/authelia.d.mts +1 -1
  471. package/dist/services/definitions/authentik.d.cts +1 -1
  472. package/dist/services/definitions/authentik.d.mts +1 -1
  473. package/dist/services/definitions/axolotl.d.cts +1 -1
  474. package/dist/services/definitions/axolotl.d.mts +1 -1
  475. package/dist/services/definitions/baserow.d.cts +1 -1
  476. package/dist/services/definitions/baserow.d.mts +1 -1
  477. package/dist/services/definitions/beszel.d.cts +1 -1
  478. package/dist/services/definitions/beszel.d.mts +1 -1
  479. package/dist/services/definitions/boxyhq-saas.d.cts +1 -1
  480. package/dist/services/definitions/boxyhq-saas.d.mts +1 -1
  481. package/dist/services/definitions/browserless.d.cts +1 -1
  482. package/dist/services/definitions/browserless.d.mts +1 -1
  483. package/dist/services/definitions/burnlink.d.cts +1 -1
  484. package/dist/services/definitions/burnlink.d.mts +1 -1
  485. package/dist/services/definitions/caddy.d.cts +1 -1
  486. package/dist/services/definitions/caddy.d.mts +1 -1
  487. package/dist/services/definitions/cal-com.d.cts +1 -1
  488. package/dist/services/definitions/cal-com.d.mts +1 -1
  489. package/dist/services/definitions/calibre-web.d.cts +1 -1
  490. package/dist/services/definitions/calibre-web.d.mts +1 -1
  491. package/dist/services/definitions/chatwoot-worker.d.cts +1 -1
  492. package/dist/services/definitions/chatwoot-worker.d.mts +1 -1
  493. package/dist/services/definitions/chatwoot.d.cts +1 -1
  494. package/dist/services/definitions/chatwoot.d.mts +1 -1
  495. package/dist/services/definitions/chromadb.cjs +4 -1
  496. package/dist/services/definitions/chromadb.cjs.map +1 -1
  497. package/dist/services/definitions/chromadb.d.cts +1 -1
  498. package/dist/services/definitions/chromadb.d.mts +1 -1
  499. package/dist/services/definitions/chromadb.mjs +4 -1
  500. package/dist/services/definitions/chromadb.mjs.map +1 -1
  501. package/dist/services/definitions/claude-code.cjs +1 -1
  502. package/dist/services/definitions/claude-code.cjs.map +1 -1
  503. package/dist/services/definitions/claude-code.d.cts +1 -1
  504. package/dist/services/definitions/claude-code.d.mts +1 -1
  505. package/dist/services/definitions/claude-code.mjs +1 -1
  506. package/dist/services/definitions/claude-code.mjs.map +1 -1
  507. package/dist/services/definitions/clawrouter.cjs +138 -0
  508. package/dist/services/definitions/clawrouter.cjs.map +1 -0
  509. package/dist/services/definitions/clawrouter.d.cts +7 -0
  510. package/dist/services/definitions/clawrouter.d.cts.map +1 -0
  511. package/dist/services/definitions/clawrouter.d.mts +7 -0
  512. package/dist/services/definitions/clawrouter.d.mts.map +1 -0
  513. package/dist/services/definitions/clawrouter.mjs +137 -0
  514. package/dist/services/definitions/clawrouter.mjs.map +1 -0
  515. package/dist/services/definitions/clickhouse.d.cts +1 -1
  516. package/dist/services/definitions/clickhouse.d.mts +1 -1
  517. package/dist/services/definitions/cloudflared.d.cts +1 -1
  518. package/dist/services/definitions/cloudflared.d.mts +1 -1
  519. package/dist/services/definitions/cmsaas-starter.d.cts +1 -1
  520. package/dist/services/definitions/cmsaas-starter.d.mts +1 -1
  521. package/dist/services/definitions/cockroachdb.d.cts +1 -1
  522. package/dist/services/definitions/cockroachdb.d.mts +1 -1
  523. package/dist/services/definitions/code-server.d.cts +1 -1
  524. package/dist/services/definitions/code-server.d.mts +1 -1
  525. package/dist/services/definitions/coder.d.cts +1 -1
  526. package/dist/services/definitions/coder.d.mts +1 -1
  527. package/dist/services/definitions/codex.cjs +1 -1
  528. package/dist/services/definitions/codex.cjs.map +1 -1
  529. package/dist/services/definitions/codex.d.cts +1 -1
  530. package/dist/services/definitions/codex.d.mts +1 -1
  531. package/dist/services/definitions/codex.mjs +1 -1
  532. package/dist/services/definitions/codex.mjs.map +1 -1
  533. package/dist/services/definitions/comfyui.d.cts +1 -1
  534. package/dist/services/definitions/comfyui.d.mts +1 -1
  535. package/dist/services/definitions/convex-dashboard.d.cts +1 -1
  536. package/dist/services/definitions/convex-dashboard.d.mts +1 -1
  537. package/dist/services/definitions/convex.cjs.map +1 -1
  538. package/dist/services/definitions/convex.d.cts +1 -1
  539. package/dist/services/definitions/convex.d.mts +1 -1
  540. package/dist/services/definitions/convex.mjs.map +1 -1
  541. package/dist/services/definitions/coolify.d.cts +1 -1
  542. package/dist/services/definitions/coolify.d.mts +1 -1
  543. package/dist/services/definitions/copaw.cjs +97 -0
  544. package/dist/services/definitions/copaw.cjs.map +1 -0
  545. package/dist/services/definitions/copaw.d.cts +7 -0
  546. package/dist/services/definitions/copaw.d.cts.map +1 -0
  547. package/dist/services/definitions/copaw.d.mts +7 -0
  548. package/dist/services/definitions/copaw.d.mts.map +1 -0
  549. package/dist/services/definitions/copaw.mjs +96 -0
  550. package/dist/services/definitions/copaw.mjs.map +1 -0
  551. package/dist/services/definitions/crowdsec.d.cts +1 -1
  552. package/dist/services/definitions/crowdsec.d.mts +1 -1
  553. package/dist/services/definitions/dagster.d.cts +1 -1
  554. package/dist/services/definitions/dagster.d.mts +1 -1
  555. package/dist/services/definitions/desktop-environment.cjs +2 -1
  556. package/dist/services/definitions/desktop-environment.cjs.map +1 -1
  557. package/dist/services/definitions/desktop-environment.d.cts +1 -1
  558. package/dist/services/definitions/desktop-environment.d.mts +1 -1
  559. package/dist/services/definitions/desktop-environment.mjs +2 -1
  560. package/dist/services/definitions/desktop-environment.mjs.map +1 -1
  561. package/dist/services/definitions/dify.d.cts +1 -1
  562. package/dist/services/definitions/dify.d.mts +1 -1
  563. package/dist/services/definitions/directus.d.cts +1 -1
  564. package/dist/services/definitions/directus.d.mts +1 -1
  565. package/dist/services/definitions/docsgpt.d.cts +1 -1
  566. package/dist/services/definitions/docsgpt.d.mts +1 -1
  567. package/dist/services/definitions/dokploy.d.cts +1 -1
  568. package/dist/services/definitions/dokploy.d.mts +1 -1
  569. package/dist/services/definitions/dozzle.d.cts +1 -1
  570. package/dist/services/definitions/dozzle.d.mts +1 -1
  571. package/dist/services/definitions/dragonfly.d.cts +1 -1
  572. package/dist/services/definitions/dragonfly.d.mts +1 -1
  573. package/dist/services/definitions/drone-ci.d.cts +1 -1
  574. package/dist/services/definitions/drone-ci.d.mts +1 -1
  575. package/dist/services/definitions/duplicati.d.cts +1 -1
  576. package/dist/services/definitions/duplicati.d.mts +1 -1
  577. package/dist/services/definitions/element-web.d.cts +1 -1
  578. package/dist/services/definitions/element-web.d.mts +1 -1
  579. package/dist/services/definitions/excalidraw.d.cts +1 -1
  580. package/dist/services/definitions/excalidraw.d.mts +1 -1
  581. package/dist/services/definitions/ffmpeg.d.cts +1 -1
  582. package/dist/services/definitions/ffmpeg.d.mts +1 -1
  583. package/dist/services/definitions/firecrawl-playwright.d.cts +1 -1
  584. package/dist/services/definitions/firecrawl-playwright.d.mts +1 -1
  585. package/dist/services/definitions/firecrawl.d.cts +1 -1
  586. package/dist/services/definitions/firecrawl.d.mts +1 -1
  587. package/dist/services/definitions/flagsmith.d.cts +1 -1
  588. package/dist/services/definitions/flagsmith.d.mts +1 -1
  589. package/dist/services/definitions/flowise.d.cts +1 -1
  590. package/dist/services/definitions/flowise.d.mts +1 -1
  591. package/dist/services/definitions/focalboard.d.cts +1 -1
  592. package/dist/services/definitions/focalboard.d.mts +1 -1
  593. package/dist/services/definitions/fonoster.d.cts +1 -1
  594. package/dist/services/definitions/fonoster.d.mts +1 -1
  595. package/dist/services/definitions/forgejo.d.cts +1 -1
  596. package/dist/services/definitions/forgejo.d.mts +1 -1
  597. package/dist/services/definitions/formbricks.d.cts +1 -1
  598. package/dist/services/definitions/formbricks.d.mts +1 -1
  599. package/dist/services/definitions/gemini-cli.d.cts +1 -1
  600. package/dist/services/definitions/gemini-cli.d.mts +1 -1
  601. package/dist/services/definitions/ghost.d.cts +1 -1
  602. package/dist/services/definitions/ghost.d.mts +1 -1
  603. package/dist/services/definitions/gitea.d.cts +1 -1
  604. package/dist/services/definitions/gitea.d.mts +1 -1
  605. package/dist/services/definitions/gotify.d.cts +1 -1
  606. package/dist/services/definitions/gotify.d.mts +1 -1
  607. package/dist/services/definitions/grafana.d.cts +1 -1
  608. package/dist/services/definitions/grafana.d.mts +1 -1
  609. package/dist/services/definitions/graylog.d.cts +1 -1
  610. package/dist/services/definitions/graylog.d.mts +1 -1
  611. package/dist/services/definitions/headscale.d.cts +1 -1
  612. package/dist/services/definitions/headscale.d.mts +1 -1
  613. package/dist/services/definitions/hedgedoc.d.cts +1 -1
  614. package/dist/services/definitions/hedgedoc.d.mts +1 -1
  615. package/dist/services/definitions/hexstrike.d.cts +1 -1
  616. package/dist/services/definitions/hexstrike.d.mts +1 -1
  617. package/dist/services/definitions/heyform.d.cts +1 -1
  618. package/dist/services/definitions/heyform.d.mts +1 -1
  619. package/dist/services/definitions/hindsight.cjs +4 -1
  620. package/dist/services/definitions/hindsight.cjs.map +1 -1
  621. package/dist/services/definitions/hindsight.d.cts +1 -1
  622. package/dist/services/definitions/hindsight.d.mts +1 -1
  623. package/dist/services/definitions/hindsight.mjs +4 -1
  624. package/dist/services/definitions/hindsight.mjs.map +1 -1
  625. package/dist/services/definitions/homeassistant.d.cts +1 -1
  626. package/dist/services/definitions/homeassistant.d.mts +1 -1
  627. package/dist/services/definitions/hoppscotch.d.cts +1 -1
  628. package/dist/services/definitions/hoppscotch.d.mts +1 -1
  629. package/dist/services/definitions/immich.d.cts +1 -1
  630. package/dist/services/definitions/immich.d.mts +1 -1
  631. package/dist/services/definitions/index.cjs +42 -6
  632. package/dist/services/definitions/index.cjs.map +1 -1
  633. package/dist/services/definitions/index.d.cts +16 -4
  634. package/dist/services/definitions/index.d.cts.map +1 -1
  635. package/dist/services/definitions/index.d.mts +16 -4
  636. package/dist/services/definitions/index.d.mts.map +1 -1
  637. package/dist/services/definitions/index.mjs +31 -7
  638. package/dist/services/definitions/index.mjs.map +1 -1
  639. package/dist/services/definitions/infisical.d.cts +1 -1
  640. package/dist/services/definitions/infisical.d.mts +1 -1
  641. package/dist/services/definitions/influxdb.d.cts +1 -1
  642. package/dist/services/definitions/influxdb.d.mts +1 -1
  643. package/dist/services/definitions/invoke-ai.d.cts +1 -1
  644. package/dist/services/definitions/invoke-ai.d.mts +1 -1
  645. package/dist/services/definitions/ixartz-saas.d.cts +1 -1
  646. package/dist/services/definitions/ixartz-saas.d.mts +1 -1
  647. package/dist/services/definitions/jaeger.d.cts +1 -1
  648. package/dist/services/definitions/jaeger.d.mts +1 -1
  649. package/dist/services/definitions/jan.d.cts +1 -1
  650. package/dist/services/definitions/jan.d.mts +1 -1
  651. package/dist/services/definitions/jellyfin.d.cts +1 -1
  652. package/dist/services/definitions/jellyfin.d.mts +1 -1
  653. package/dist/services/definitions/jenkins.d.cts +1 -1
  654. package/dist/services/definitions/jenkins.d.mts +1 -1
  655. package/dist/services/definitions/jitsi-meet.d.cts +1 -1
  656. package/dist/services/definitions/jitsi-meet.d.mts +1 -1
  657. package/dist/services/definitions/keycloak.d.cts +1 -1
  658. package/dist/services/definitions/keycloak.d.mts +1 -1
  659. package/dist/services/definitions/kimi.d.cts +1 -1
  660. package/dist/services/definitions/kimi.d.mts +1 -1
  661. package/dist/services/definitions/kong.d.cts +1 -1
  662. package/dist/services/definitions/kong.d.mts +1 -1
  663. package/dist/services/definitions/lago.d.cts +1 -1
  664. package/dist/services/definitions/lago.d.mts +1 -1
  665. package/dist/services/definitions/langflow.d.cts +1 -1
  666. package/dist/services/definitions/langflow.d.mts +1 -1
  667. package/dist/services/definitions/langfuse.d.cts +1 -1
  668. package/dist/services/definitions/langfuse.d.mts +1 -1
  669. package/dist/services/definitions/lasuite-meet-agents.d.cts +1 -1
  670. package/dist/services/definitions/lasuite-meet-agents.d.mts +1 -1
  671. package/dist/services/definitions/lasuite-meet-backend.d.cts +1 -1
  672. package/dist/services/definitions/lasuite-meet-backend.d.mts +1 -1
  673. package/dist/services/definitions/lasuite-meet-frontend.d.cts +1 -1
  674. package/dist/services/definitions/lasuite-meet-frontend.d.mts +1 -1
  675. package/dist/services/definitions/librechat.d.cts +1 -1
  676. package/dist/services/definitions/librechat.d.mts +1 -1
  677. package/dist/services/definitions/lightpanda.d.cts +1 -1
  678. package/dist/services/definitions/lightpanda.d.mts +1 -1
  679. package/dist/services/definitions/listmonk.d.cts +1 -1
  680. package/dist/services/definitions/listmonk.d.mts +1 -1
  681. package/dist/services/definitions/litellm.d.cts +1 -1
  682. package/dist/services/definitions/litellm.d.mts +1 -1
  683. package/dist/services/definitions/livekit.d.cts +1 -1
  684. package/dist/services/definitions/livekit.d.mts +1 -1
  685. package/dist/services/definitions/local-ai.d.cts +1 -1
  686. package/dist/services/definitions/local-ai.d.mts +1 -1
  687. package/dist/services/definitions/loki.d.cts +1 -1
  688. package/dist/services/definitions/loki.d.mts +1 -1
  689. package/dist/services/definitions/mariadb.d.cts +1 -1
  690. package/dist/services/definitions/mariadb.d.mts +1 -1
  691. package/dist/services/definitions/matomo.d.cts +1 -1
  692. package/dist/services/definitions/matomo.d.mts +1 -1
  693. package/dist/services/definitions/matrix-synapse.d.cts +1 -1
  694. package/dist/services/definitions/matrix-synapse.d.mts +1 -1
  695. package/dist/services/definitions/mattermost.d.cts +1 -1
  696. package/dist/services/definitions/mattermost.d.mts +1 -1
  697. package/dist/services/definitions/mautic.d.cts +1 -1
  698. package/dist/services/definitions/mautic.d.mts +1 -1
  699. package/dist/services/definitions/medusa.d.cts +1 -1
  700. package/dist/services/definitions/medusa.d.mts +1 -1
  701. package/dist/services/definitions/meilisearch.d.cts +1 -1
  702. package/dist/services/definitions/meilisearch.d.mts +1 -1
  703. package/dist/services/definitions/mem0.cjs +133 -0
  704. package/dist/services/definitions/mem0.cjs.map +1 -0
  705. package/dist/services/definitions/mem0.d.cts +7 -0
  706. package/dist/services/definitions/mem0.d.cts.map +1 -0
  707. package/dist/services/definitions/mem0.d.mts +7 -0
  708. package/dist/services/definitions/mem0.d.mts.map +1 -0
  709. package/dist/services/definitions/mem0.mjs +132 -0
  710. package/dist/services/definitions/mem0.mjs.map +1 -0
  711. package/dist/services/definitions/memu.cjs +96 -0
  712. package/dist/services/definitions/memu.cjs.map +1 -0
  713. package/dist/services/definitions/memu.d.cts +7 -0
  714. package/dist/services/definitions/memu.d.cts.map +1 -0
  715. package/dist/services/definitions/memu.d.mts +7 -0
  716. package/dist/services/definitions/memu.d.mts.map +1 -0
  717. package/dist/services/definitions/memu.mjs +95 -0
  718. package/dist/services/definitions/memu.mjs.map +1 -0
  719. package/dist/services/definitions/metabase.d.cts +1 -1
  720. package/dist/services/definitions/metabase.d.mts +1 -1
  721. package/dist/services/definitions/milvus.cjs +4 -1
  722. package/dist/services/definitions/milvus.cjs.map +1 -1
  723. package/dist/services/definitions/milvus.d.cts +1 -1
  724. package/dist/services/definitions/milvus.d.mts +1 -1
  725. package/dist/services/definitions/milvus.mjs +4 -1
  726. package/dist/services/definitions/milvus.mjs.map +1 -1
  727. package/dist/services/definitions/minio.d.cts +1 -1
  728. package/dist/services/definitions/minio.d.mts +1 -1
  729. package/dist/services/definitions/mission-control.d.cts +1 -1
  730. package/dist/services/definitions/mission-control.d.mts +1 -1
  731. package/dist/services/definitions/mixpost.d.cts +1 -1
  732. package/dist/services/definitions/mixpost.d.mts +1 -1
  733. package/dist/services/definitions/mosquitto.d.cts +1 -1
  734. package/dist/services/definitions/mosquitto.d.mts +1 -1
  735. package/dist/services/definitions/motion-canvas.d.cts +1 -1
  736. package/dist/services/definitions/motion-canvas.d.mts +1 -1
  737. package/dist/services/definitions/mysql.d.cts +1 -1
  738. package/dist/services/definitions/mysql.d.mts +1 -1
  739. package/dist/services/definitions/n8n.d.cts +1 -1
  740. package/dist/services/definitions/n8n.d.mts +1 -1
  741. package/dist/services/definitions/nanobot.cjs +86 -0
  742. package/dist/services/definitions/nanobot.cjs.map +1 -0
  743. package/dist/services/definitions/nanobot.d.cts +7 -0
  744. package/dist/services/definitions/nanobot.d.cts.map +1 -0
  745. package/dist/services/definitions/nanobot.d.mts +7 -0
  746. package/dist/services/definitions/nanobot.d.mts.map +1 -0
  747. package/dist/services/definitions/nanobot.mjs +85 -0
  748. package/dist/services/definitions/nanobot.mjs.map +1 -0
  749. package/dist/services/definitions/nanoclaw.cjs +79 -0
  750. package/dist/services/definitions/nanoclaw.cjs.map +1 -0
  751. package/dist/services/definitions/nanoclaw.d.cts +7 -0
  752. package/dist/services/definitions/nanoclaw.d.cts.map +1 -0
  753. package/dist/services/definitions/nanoclaw.d.mts +7 -0
  754. package/dist/services/definitions/nanoclaw.d.mts.map +1 -0
  755. package/dist/services/definitions/nanoclaw.mjs +78 -0
  756. package/dist/services/definitions/nanoclaw.mjs.map +1 -0
  757. package/dist/services/definitions/navidrome.d.cts +1 -1
  758. package/dist/services/definitions/navidrome.d.mts +1 -1
  759. package/dist/services/definitions/neo4j.d.cts +1 -1
  760. package/dist/services/definitions/neo4j.d.mts +1 -1
  761. package/dist/services/definitions/nextcloud.d.cts +1 -1
  762. package/dist/services/definitions/nextcloud.d.mts +1 -1
  763. package/dist/services/definitions/nginx-proxy-manager.d.cts +1 -1
  764. package/dist/services/definitions/nginx-proxy-manager.d.mts +1 -1
  765. package/dist/services/definitions/nocodb.d.cts +1 -1
  766. package/dist/services/definitions/nocodb.d.mts +1 -1
  767. package/dist/services/definitions/node-red.d.cts +1 -1
  768. package/dist/services/definitions/node-red.d.mts +1 -1
  769. package/dist/services/definitions/ntfy.d.cts +1 -1
  770. package/dist/services/definitions/ntfy.d.mts +1 -1
  771. package/dist/services/definitions/ollama.d.cts +1 -1
  772. package/dist/services/definitions/ollama.d.mts +1 -1
  773. package/dist/services/definitions/open-saas.d.cts +1 -1
  774. package/dist/services/definitions/open-saas.d.mts +1 -1
  775. package/dist/services/definitions/open-webui.d.cts +1 -1
  776. package/dist/services/definitions/open-webui.d.mts +1 -1
  777. package/dist/services/definitions/opencode.d.cts +1 -1
  778. package/dist/services/definitions/opencode.d.mts +1 -1
  779. package/dist/services/definitions/openhands.d.cts +1 -1
  780. package/dist/services/definitions/openhands.d.mts +1 -1
  781. package/dist/services/definitions/openpanel.d.cts +1 -1
  782. package/dist/services/definitions/openpanel.d.mts +1 -1
  783. package/dist/services/definitions/opensandbox.cjs +2 -1
  784. package/dist/services/definitions/opensandbox.cjs.map +1 -1
  785. package/dist/services/definitions/opensandbox.d.cts +1 -1
  786. package/dist/services/definitions/opensandbox.d.mts +1 -1
  787. package/dist/services/definitions/opensandbox.mjs +2 -1
  788. package/dist/services/definitions/opensandbox.mjs.map +1 -1
  789. package/dist/services/definitions/opensearch.d.cts +1 -1
  790. package/dist/services/definitions/opensearch.d.mts +1 -1
  791. package/dist/services/definitions/outline.d.cts +1 -1
  792. package/dist/services/definitions/outline.d.mts +1 -1
  793. package/dist/services/definitions/paperless-ngx.d.cts +1 -1
  794. package/dist/services/definitions/paperless-ngx.d.mts +1 -1
  795. package/dist/services/definitions/pentagi.d.cts +1 -1
  796. package/dist/services/definitions/pentagi.d.mts +1 -1
  797. package/dist/services/definitions/pentestagent.d.cts +1 -1
  798. package/dist/services/definitions/pentestagent.d.mts +1 -1
  799. package/dist/services/definitions/photoprism.d.cts +1 -1
  800. package/dist/services/definitions/photoprism.d.mts +1 -1
  801. package/dist/services/definitions/pihole.d.cts +1 -1
  802. package/dist/services/definitions/pihole.d.mts +1 -1
  803. package/dist/services/definitions/piper-tts.d.cts +1 -1
  804. package/dist/services/definitions/piper-tts.d.mts +1 -1
  805. package/dist/services/definitions/plane.d.cts +1 -1
  806. package/dist/services/definitions/plane.d.mts +1 -1
  807. package/dist/services/definitions/plausible.d.cts +1 -1
  808. package/dist/services/definitions/plausible.d.mts +1 -1
  809. package/dist/services/definitions/playwright-server.d.cts +1 -1
  810. package/dist/services/definitions/playwright-server.d.mts +1 -1
  811. package/dist/services/definitions/pocket-id.d.cts +1 -1
  812. package/dist/services/definitions/pocket-id.d.mts +1 -1
  813. package/dist/services/definitions/pocketbase.d.cts +1 -1
  814. package/dist/services/definitions/pocketbase.d.mts +1 -1
  815. package/dist/services/definitions/portainer.d.cts +1 -1
  816. package/dist/services/definitions/portainer.d.mts +1 -1
  817. package/dist/services/definitions/postgresql.d.cts +1 -1
  818. package/dist/services/definitions/postgresql.d.mts +1 -1
  819. package/dist/services/definitions/posthog.d.cts +1 -1
  820. package/dist/services/definitions/posthog.d.mts +1 -1
  821. package/dist/services/definitions/postiz.d.cts +1 -1
  822. package/dist/services/definitions/postiz.d.mts +1 -1
  823. package/dist/services/definitions/prometheus.d.cts +1 -1
  824. package/dist/services/definitions/prometheus.d.mts +1 -1
  825. package/dist/services/definitions/qdrant.d.cts +1 -1
  826. package/dist/services/definitions/qdrant.d.mts +1 -1
  827. package/dist/services/definitions/rabbitmq.d.cts +1 -1
  828. package/dist/services/definitions/rabbitmq.d.mts +1 -1
  829. package/dist/services/definitions/ragflow.d.cts +1 -1
  830. package/dist/services/definitions/ragflow.d.mts +1 -1
  831. package/dist/services/definitions/redis.d.cts +1 -1
  832. package/dist/services/definitions/redis.d.mts +1 -1
  833. package/dist/services/definitions/relaticle-horizon.cjs +48 -0
  834. package/dist/services/definitions/relaticle-horizon.cjs.map +1 -0
  835. package/dist/services/definitions/relaticle-horizon.d.cts +7 -0
  836. package/dist/services/definitions/relaticle-horizon.d.cts.map +1 -0
  837. package/dist/services/definitions/relaticle-horizon.d.mts +7 -0
  838. package/dist/services/definitions/relaticle-horizon.d.mts.map +1 -0
  839. package/dist/services/definitions/relaticle-horizon.mjs +48 -0
  840. package/dist/services/definitions/relaticle-horizon.mjs.map +1 -0
  841. package/dist/services/definitions/relaticle-scheduler.cjs +44 -0
  842. package/dist/services/definitions/relaticle-scheduler.cjs.map +1 -0
  843. package/dist/services/definitions/relaticle-scheduler.d.cts +7 -0
  844. package/dist/services/definitions/relaticle-scheduler.d.cts.map +1 -0
  845. package/dist/services/definitions/relaticle-scheduler.d.mts +7 -0
  846. package/dist/services/definitions/relaticle-scheduler.d.mts.map +1 -0
  847. package/dist/services/definitions/relaticle-scheduler.mjs +44 -0
  848. package/dist/services/definitions/relaticle-scheduler.mjs.map +1 -0
  849. package/dist/services/definitions/relaticle.cjs +151 -0
  850. package/dist/services/definitions/relaticle.cjs.map +1 -0
  851. package/dist/services/definitions/relaticle.d.cts +80 -0
  852. package/dist/services/definitions/relaticle.d.cts.map +1 -0
  853. package/dist/services/definitions/relaticle.d.mts +80 -0
  854. package/dist/services/definitions/relaticle.d.mts.map +1 -0
  855. package/dist/services/definitions/relaticle.mjs +149 -0
  856. package/dist/services/definitions/relaticle.mjs.map +1 -0
  857. package/dist/services/definitions/remotion.d.cts +1 -1
  858. package/dist/services/definitions/remotion.d.mts +1 -1
  859. package/dist/services/definitions/restic.d.cts +1 -1
  860. package/dist/services/definitions/restic.d.mts +1 -1
  861. package/dist/services/definitions/revolt.d.cts +1 -1
  862. package/dist/services/definitions/revolt.d.mts +1 -1
  863. package/dist/services/definitions/rocketchat.d.cts +1 -1
  864. package/dist/services/definitions/rocketchat.d.mts +1 -1
  865. package/dist/services/definitions/saleor.d.cts +1 -1
  866. package/dist/services/definitions/saleor.d.mts +1 -1
  867. package/dist/services/definitions/scrapling.d.cts +1 -1
  868. package/dist/services/definitions/scrapling.d.mts +1 -1
  869. package/dist/services/definitions/searxng.d.cts +1 -1
  870. package/dist/services/definitions/searxng.d.mts +1 -1
  871. package/dist/services/definitions/sentry.d.cts +1 -1
  872. package/dist/services/definitions/sentry.d.mts +1 -1
  873. package/dist/services/definitions/signoz.d.cts +1 -1
  874. package/dist/services/definitions/signoz.d.mts +1 -1
  875. package/dist/services/definitions/solidityguard.d.cts +1 -1
  876. package/dist/services/definitions/solidityguard.d.mts +1 -1
  877. package/dist/services/definitions/sonarqube.d.cts +1 -1
  878. package/dist/services/definitions/sonarqube.d.mts +1 -1
  879. package/dist/services/definitions/stable-diffusion.d.cts +1 -1
  880. package/dist/services/definitions/stable-diffusion.d.mts +1 -1
  881. package/dist/services/definitions/steel-browser.d.cts +1 -1
  882. package/dist/services/definitions/steel-browser.d.mts +1 -1
  883. package/dist/services/definitions/stirling-pdf.d.cts +1 -1
  884. package/dist/services/definitions/stirling-pdf.d.mts +1 -1
  885. package/dist/services/definitions/strapi.d.cts +1 -1
  886. package/dist/services/definitions/strapi.d.mts +1 -1
  887. package/dist/services/definitions/stream-gateway.d.cts +1 -1
  888. package/dist/services/definitions/stream-gateway.d.mts +1 -1
  889. package/dist/services/definitions/supabase.d.cts +1 -1
  890. package/dist/services/definitions/supabase.d.mts +1 -1
  891. package/dist/services/definitions/superset.d.cts +1 -1
  892. package/dist/services/definitions/superset.d.mts +1 -1
  893. package/dist/services/definitions/surrealdb.d.cts +1 -1
  894. package/dist/services/definitions/surrealdb.d.mts +1 -1
  895. package/dist/services/definitions/tabby-ml.d.cts +1 -1
  896. package/dist/services/definitions/tabby-ml.d.mts +1 -1
  897. package/dist/services/definitions/tailscale.d.cts +1 -1
  898. package/dist/services/definitions/tailscale.d.mts +1 -1
  899. package/dist/services/definitions/tempo.d.cts +1 -1
  900. package/dist/services/definitions/tempo.d.mts +1 -1
  901. package/dist/services/definitions/temporal.d.cts +1 -1
  902. package/dist/services/definitions/temporal.d.mts +1 -1
  903. package/dist/services/definitions/text-gen-webui.d.cts +1 -1
  904. package/dist/services/definitions/text-gen-webui.d.mts +1 -1
  905. package/dist/services/definitions/timescaledb.d.cts +1 -1
  906. package/dist/services/definitions/timescaledb.d.mts +1 -1
  907. package/dist/services/definitions/traefik.d.cts +1 -1
  908. package/dist/services/definitions/traefik.d.mts +1 -1
  909. package/dist/services/definitions/twenty-worker.cjs +73 -0
  910. package/dist/services/definitions/twenty-worker.cjs.map +1 -0
  911. package/dist/services/definitions/twenty-worker.d.cts +7 -0
  912. package/dist/services/definitions/twenty-worker.d.cts.map +1 -0
  913. package/dist/services/definitions/twenty-worker.d.mts +7 -0
  914. package/dist/services/definitions/twenty-worker.d.mts.map +1 -0
  915. package/dist/services/definitions/twenty-worker.mjs +72 -0
  916. package/dist/services/definitions/twenty-worker.mjs.map +1 -0
  917. package/dist/services/definitions/twenty.cjs +24 -2
  918. package/dist/services/definitions/twenty.cjs.map +1 -1
  919. package/dist/services/definitions/twenty.d.cts +1 -1
  920. package/dist/services/definitions/twenty.d.mts +1 -1
  921. package/dist/services/definitions/twenty.mjs +24 -2
  922. package/dist/services/definitions/twenty.mjs.map +1 -1
  923. package/dist/services/definitions/umami.d.cts +1 -1
  924. package/dist/services/definitions/umami.d.mts +1 -1
  925. package/dist/services/definitions/uptime-kuma.d.cts +1 -1
  926. package/dist/services/definitions/uptime-kuma.d.mts +1 -1
  927. package/dist/services/definitions/usesend.d.cts +1 -1
  928. package/dist/services/definitions/usesend.d.mts +1 -1
  929. package/dist/services/definitions/valkey.d.cts +1 -1
  930. package/dist/services/definitions/valkey.d.mts +1 -1
  931. package/dist/services/definitions/vault.d.cts +1 -1
  932. package/dist/services/definitions/vault.d.mts +1 -1
  933. package/dist/services/definitions/vaultwarden.d.cts +1 -1
  934. package/dist/services/definitions/vaultwarden.d.mts +1 -1
  935. package/dist/services/definitions/vector-log.d.cts +1 -1
  936. package/dist/services/definitions/vector-log.d.mts +1 -1
  937. package/dist/services/definitions/vikunja.d.cts +1 -1
  938. package/dist/services/definitions/vikunja.d.mts +1 -1
  939. package/dist/services/definitions/watchtower.d.cts +1 -1
  940. package/dist/services/definitions/watchtower.d.mts +1 -1
  941. package/dist/services/definitions/weaviate.cjs +4 -1
  942. package/dist/services/definitions/weaviate.cjs.map +1 -1
  943. package/dist/services/definitions/weaviate.d.cts +1 -1
  944. package/dist/services/definitions/weaviate.d.mts +1 -1
  945. package/dist/services/definitions/weaviate.mjs +4 -1
  946. package/dist/services/definitions/weaviate.mjs.map +1 -1
  947. package/dist/services/definitions/whisper.d.cts +1 -1
  948. package/dist/services/definitions/whisper.d.mts +1 -1
  949. package/dist/services/definitions/wireguard.d.cts +1 -1
  950. package/dist/services/definitions/wireguard.d.mts +1 -1
  951. package/dist/services/definitions/woodpecker-ci.d.cts +1 -1
  952. package/dist/services/definitions/woodpecker-ci.d.mts +1 -1
  953. package/dist/services/definitions/xyops.d.cts +1 -1
  954. package/dist/services/definitions/xyops.d.mts +1 -1
  955. package/dist/services/definitions/zeroclaw.cjs +103 -0
  956. package/dist/services/definitions/zeroclaw.cjs.map +1 -0
  957. package/dist/services/definitions/zeroclaw.d.cts +7 -0
  958. package/dist/services/definitions/zeroclaw.d.cts.map +1 -0
  959. package/dist/services/definitions/zeroclaw.d.mts +7 -0
  960. package/dist/services/definitions/zeroclaw.d.mts.map +1 -0
  961. package/dist/services/definitions/zeroclaw.mjs +102 -0
  962. package/dist/services/definitions/zeroclaw.mjs.map +1 -0
  963. package/dist/services/definitions/zulip.d.cts +1 -1
  964. package/dist/services/definitions/zulip.d.mts +1 -1
  965. package/dist/services/registry.d.cts +1 -1
  966. package/dist/services/registry.d.mts +1 -1
  967. package/dist/services/registry.test.cjs +8 -8
  968. package/dist/services/registry.test.cjs.map +1 -1
  969. package/dist/services/registry.test.mjs +8 -8
  970. package/dist/services/registry.test.mjs.map +1 -1
  971. package/dist/skills/registry.cjs +19 -0
  972. package/dist/skills/registry.cjs.map +1 -1
  973. package/dist/skills/registry.d.cts +1 -1
  974. package/dist/skills/registry.d.cts.map +1 -1
  975. package/dist/skills/registry.d.mts +1 -1
  976. package/dist/skills/registry.d.mts.map +1 -1
  977. package/dist/skills/registry.mjs +19 -0
  978. package/dist/skills/registry.mjs.map +1 -1
  979. package/dist/{skills-BSF7iNa4.cjs → skills-uPxJVmKk.cjs} +311 -1
  980. package/dist/skills-uPxJVmKk.cjs.map +1 -0
  981. package/dist/{test.CTcmp4Su-ClCHJ3FA.mjs → test.CTcmp4Su-BRa7-bTj.mjs} +2 -2
  982. package/dist/{test.CTcmp4Su-ClCHJ3FA.mjs.map → test.CTcmp4Su-BRa7-bTj.mjs.map} +1 -1
  983. package/dist/{test.CTcmp4Su-DlzTarwH.cjs → test.CTcmp4Su-BWSPM8ZQ.cjs} +19 -1
  984. package/dist/{test.CTcmp4Su-DlzTarwH.cjs.map → test.CTcmp4Su-BWSPM8ZQ.cjs.map} +1 -1
  985. package/dist/track-analytics.d.cts +1 -1
  986. package/dist/track-analytics.d.mts +1 -1
  987. package/dist/track-analytics.test.cjs +1 -1
  988. package/dist/track-analytics.test.mjs +1 -1
  989. package/dist/types-BREUfzzq.d.mts +77 -0
  990. package/dist/types-BREUfzzq.d.mts.map +1 -0
  991. package/dist/types-Bsn0XzSP.d.cts +95 -0
  992. package/dist/types-Bsn0XzSP.d.cts.map +1 -0
  993. package/dist/types-CyZ5mn6w.d.cts +77 -0
  994. package/dist/types-CyZ5mn6w.d.cts.map +1 -0
  995. package/dist/types-DIsPc-hb.d.cts +100 -0
  996. package/dist/types-DIsPc-hb.d.cts.map +1 -0
  997. package/dist/types-DbXajvYq.d.mts +100 -0
  998. package/dist/types-DbXajvYq.d.mts.map +1 -0
  999. package/dist/types-DwTKyCZ9.d.mts +95 -0
  1000. package/dist/types-DwTKyCZ9.d.mts.map +1 -0
  1001. package/dist/{types-CR83OJiq.d.cts → types-dyBnrHm9.d.cts} +5 -1
  1002. package/dist/types-dyBnrHm9.d.cts.map +1 -0
  1003. package/dist/{types-zYjGTuyn.d.mts → types-fRSnaZTX.d.mts} +5 -1
  1004. package/dist/types-fRSnaZTX.d.mts.map +1 -0
  1005. package/dist/types.cjs +7 -0
  1006. package/dist/types.cjs.map +1 -1
  1007. package/dist/types.d.cts +2 -93
  1008. package/dist/types.d.mts +2 -93
  1009. package/dist/types.mjs +7 -0
  1010. package/dist/types.mjs.map +1 -1
  1011. package/dist/validator.cjs +1 -1
  1012. package/dist/validator.d.cts +1 -1
  1013. package/dist/validator.d.mts +1 -1
  1014. package/dist/validator.test.cjs +1 -1
  1015. package/dist/validator.test.mjs +1 -1
  1016. package/dist/version-manager.d.cts +1 -1
  1017. package/dist/version-manager.d.mts +1 -1
  1018. package/dist/version-manager.test.cjs +3 -3
  1019. package/dist/version-manager.test.cjs.map +1 -1
  1020. package/dist/version-manager.test.mjs +3 -3
  1021. package/dist/version-manager.test.mjs.map +1 -1
  1022. package/dist/zeroclaw-B-0TuOfZ.d.mts +7 -0
  1023. package/dist/zeroclaw-B-0TuOfZ.d.mts.map +1 -0
  1024. package/dist/zeroclaw-BvKpDHKe.d.cts +7 -0
  1025. package/dist/zeroclaw-BvKpDHKe.d.cts.map +1 -0
  1026. package/package.json +6 -2
  1027. package/src/addon-stack.test.ts +19 -23
  1028. package/src/addon-stack.ts +67 -44
  1029. package/src/composer.test.ts +59 -0
  1030. package/src/composer.ts +135 -194
  1031. package/src/deployers/coolify.test.ts +180 -0
  1032. package/src/deployers/coolify.ts +38 -0
  1033. package/src/deployers/dokploy.test.ts +120 -0
  1034. package/src/deployers/dokploy.ts +38 -0
  1035. package/src/deployers/types.ts +2 -0
  1036. package/src/frameworks/claude-code-fw.ts +118 -0
  1037. package/src/frameworks/codex-fw.ts +102 -0
  1038. package/src/frameworks/copaw.ts +154 -0
  1039. package/src/frameworks/frameworks.test.ts +119 -0
  1040. package/src/frameworks/index.ts +46 -0
  1041. package/src/frameworks/memu.ts +149 -0
  1042. package/src/frameworks/nanobot.ts +156 -0
  1043. package/src/frameworks/nanoclaw.ts +126 -0
  1044. package/src/frameworks/openclaw.ts +325 -0
  1045. package/src/frameworks/registry.test.ts +131 -0
  1046. package/src/frameworks/registry.ts +28 -0
  1047. package/src/frameworks/types.ts +146 -0
  1048. package/src/frameworks/zeroclaw.ts +148 -0
  1049. package/src/generate.test.ts +55 -4
  1050. package/src/generate.ts +67 -14
  1051. package/src/generators/caddy.test.ts +41 -1
  1052. package/src/generators/caddy.ts +16 -2
  1053. package/src/generators/clone-repos.test.ts +1 -1
  1054. package/src/generators/clone-repos.ts +7 -2
  1055. package/src/generators/cloud-init.test.ts +70 -0
  1056. package/src/generators/env.test.ts +2 -2
  1057. package/src/generators/env.ts +30 -180
  1058. package/src/generators/get-shit-done.test.ts +54 -0
  1059. package/src/generators/grafana.test.ts +90 -0
  1060. package/src/generators/health-check.ts +4 -4
  1061. package/src/generators/n8n-workflows.test.ts +80 -0
  1062. package/src/generators/openclaw-install-script.test.ts +42 -0
  1063. package/src/generators/openclaw-json.ts +57 -5
  1064. package/src/generators/postgres-init.test.ts +116 -0
  1065. package/src/generators/postgres-init.ts +9 -0
  1066. package/src/generators/prometheus.test.ts +108 -0
  1067. package/src/generators/readme.ts +75 -9
  1068. package/src/generators/scripts.test.ts +1 -1
  1069. package/src/generators/skills.ts +316 -0
  1070. package/src/generators/stack-manifest.test.ts +104 -0
  1071. package/src/generators/traefik.test.ts +13 -13
  1072. package/src/index.ts +47 -7
  1073. package/src/logger/__tests__/logger.test.ts +388 -0
  1074. package/src/logger/index.ts +15 -0
  1075. package/src/logger/logger.ts +326 -0
  1076. package/src/logger/sinks/callback-sink.ts +13 -0
  1077. package/src/logger/sinks/console-sink.ts +51 -0
  1078. package/src/logger/sinks/file-sink.ts +121 -0
  1079. package/src/logger/types.ts +90 -0
  1080. package/src/migrations.ts +8 -1
  1081. package/src/port-scanner.test.ts +167 -0
  1082. package/src/presets/presets.test.ts +4 -4
  1083. package/src/presets/registry.test.ts +6 -6
  1084. package/src/resolver.test.ts +31 -3
  1085. package/src/resolver.ts +19 -3
  1086. package/src/schema.test.ts +2 -2
  1087. package/src/schema.ts +58 -17
  1088. package/src/services/definitions/agent-browser.ts +177 -0
  1089. package/src/services/definitions/apptension-saas.ts +2 -1
  1090. package/src/services/definitions/chromadb.ts +1 -1
  1091. package/src/services/definitions/claude-code.ts +1 -1
  1092. package/src/services/definitions/clawrouter.ts +141 -0
  1093. package/src/services/definitions/codex.ts +1 -1
  1094. package/src/services/definitions/convex.ts +1 -2
  1095. package/src/services/definitions/copaw.ts +101 -0
  1096. package/src/services/definitions/desktop-environment.ts +1 -0
  1097. package/src/services/definitions/hindsight.ts +3 -2
  1098. package/src/services/definitions/index.ts +53 -16
  1099. package/src/services/definitions/mem0.ts +132 -0
  1100. package/src/services/definitions/memu.ts +96 -0
  1101. package/src/services/definitions/milvus.ts +1 -1
  1102. package/src/services/definitions/nanobot.ts +89 -0
  1103. package/src/services/definitions/nanoclaw.ts +78 -0
  1104. package/src/services/definitions/opensandbox.ts +6 -15
  1105. package/src/services/definitions/relaticle-horizon.ts +48 -0
  1106. package/src/services/definitions/relaticle-scheduler.ts +42 -0
  1107. package/src/services/definitions/relaticle.ts +142 -0
  1108. package/src/services/definitions/twenty-worker.ts +70 -0
  1109. package/src/services/definitions/twenty.ts +16 -2
  1110. package/src/services/definitions/weaviate.ts +1 -1
  1111. package/src/services/definitions/zeroclaw.ts +102 -0
  1112. package/src/services/registry.test.ts +7 -7
  1113. package/src/skills/registry.ts +10 -0
  1114. package/src/types.ts +11 -1
  1115. package/src/version-manager.test.ts +2 -2
  1116. package/dist/schema-BQnZrcw8.d.cts.map +0 -1
  1117. package/dist/schema-SBpL0bdI.d.mts.map +0 -1
  1118. package/dist/skills-BSF7iNa4.cjs.map +0 -1
  1119. package/dist/types-CR83OJiq.d.cts.map +0 -1
  1120. package/dist/types-zYjGTuyn.d.mts.map +0 -1
  1121. package/dist/types.d.cts.map +0 -1
  1122. package/dist/types.d.mts.map +0 -1
@@ -0,0 +1,112 @@
1
+ import { a as describe, o as it, t as globalExpect } from "../test.CTcmp4Su-BRa7-bTj.mjs";
2
+ import { generatePostgresInit, getDbRequirements } from "./postgres-init.mjs";
3
+ //#region src/generators/postgres-init.test.ts
4
+ function makeResolved(serviceIds) {
5
+ return {
6
+ services: serviceIds.map((id) => ({
7
+ definition: {
8
+ id,
9
+ name: id.charAt(0).toUpperCase() + id.slice(1),
10
+ description: "",
11
+ icon: "",
12
+ category: "test",
13
+ image: `${id}:latest`,
14
+ ports: [],
15
+ volumes: [],
16
+ environment: [],
17
+ dependencies: [],
18
+ conflicts: [],
19
+ skills: [],
20
+ memoryMB: 256,
21
+ docsUrl: ""
22
+ },
23
+ addedBy: "user"
24
+ })),
25
+ addedDependencies: [],
26
+ estimatedMemoryMB: 512
27
+ };
28
+ }
29
+ describe("getDbRequirements", () => {
30
+ it("returns empty array when no services need a DB", () => {
31
+ globalExpect(getDbRequirements(makeResolved(["redis", "minio"]))).toEqual([]);
32
+ });
33
+ it("returns requirements for n8n", () => {
34
+ const reqs = getDbRequirements(makeResolved(["n8n", "redis"]));
35
+ globalExpect(reqs).toHaveLength(1);
36
+ globalExpect(reqs[0]).toEqual({
37
+ serviceId: "n8n",
38
+ serviceName: "N8n",
39
+ dbName: "n8n",
40
+ dbUser: "n8n",
41
+ passwordEnvVar: "N8N_DB_PASSWORD"
42
+ });
43
+ });
44
+ it("returns requirements for multiple services", () => {
45
+ const reqs = getDbRequirements(makeResolved([
46
+ "n8n",
47
+ "outline",
48
+ "postiz",
49
+ "redis"
50
+ ]));
51
+ globalExpect(reqs).toHaveLength(3);
52
+ const ids = reqs.map((r) => r.serviceId);
53
+ globalExpect(ids).toContain("n8n");
54
+ globalExpect(ids).toContain("outline");
55
+ globalExpect(ids).toContain("postiz");
56
+ });
57
+ });
58
+ describe("generatePostgresInit", () => {
59
+ it("returns null when PostgreSQL is not in the stack", () => {
60
+ globalExpect(generatePostgresInit(makeResolved(["n8n", "redis"]))).toBeNull();
61
+ });
62
+ it("returns null when PostgreSQL is present but no services need DBs", () => {
63
+ globalExpect(generatePostgresInit(makeResolved([
64
+ "postgresql",
65
+ "redis",
66
+ "minio"
67
+ ]))).toBeNull();
68
+ });
69
+ it("generates init script when PostgreSQL and DB-needing services are present", () => {
70
+ const script = generatePostgresInit(makeResolved(["postgresql", "n8n"]));
71
+ globalExpect(script).not.toBeNull();
72
+ globalExpect(script).toContain("#!/bin/bash");
73
+ globalExpect(script).toContain("create_db_and_user");
74
+ globalExpect(script).toContain("\"n8n\"");
75
+ globalExpect(script).toContain("N8N_DB_PASSWORD");
76
+ });
77
+ it("includes all services that need DBs", () => {
78
+ const script = generatePostgresInit(makeResolved([
79
+ "postgresql",
80
+ "n8n",
81
+ "outline",
82
+ "dify"
83
+ ]));
84
+ globalExpect(script).toContain("\"n8n\"");
85
+ globalExpect(script).toContain("\"outline\"");
86
+ globalExpect(script).toContain("\"dify\"");
87
+ });
88
+ it("uses environment variable substitution for passwords (not literals)", () => {
89
+ globalExpect(generatePostgresInit(makeResolved(["postgresql", "n8n"]))).toContain("${N8N_DB_PASSWORD:-$POSTGRES_PASSWORD}");
90
+ });
91
+ it("script uses psql with ON_ERROR_STOP", () => {
92
+ globalExpect(generatePostgresInit(makeResolved(["postgresql", "n8n"]))).toContain("ON_ERROR_STOP=1");
93
+ });
94
+ it("script creates user with IF NOT EXISTS check", () => {
95
+ const script = generatePostgresInit(makeResolved(["postgresql", "n8n"]));
96
+ globalExpect(script).toContain("IF NOT EXISTS");
97
+ globalExpect(script).toContain("CREATE ROLE");
98
+ });
99
+ it("includes service names in summary line", () => {
100
+ const script = generatePostgresInit(makeResolved([
101
+ "postgresql",
102
+ "n8n",
103
+ "outline"
104
+ ]));
105
+ globalExpect(script).toContain("N8n");
106
+ globalExpect(script).toContain("Outline");
107
+ });
108
+ });
109
+ //#endregion
110
+ export {};
111
+
112
+ //# sourceMappingURL=postgres-init.test.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"postgres-init.test.mjs","names":[],"sources":["../../src/generators/postgres-init.test.ts"],"sourcesContent":["import { describe, expect, it } from \"vitest\";\nimport type { ResolverOutput } from \"../types.js\";\nimport { generatePostgresInit, getDbRequirements } from \"./postgres-init.js\";\n\nfunction makeResolved(serviceIds: string[]): ResolverOutput {\n\treturn {\n\t\tservices: serviceIds.map((id) => ({\n\t\t\tdefinition: {\n\t\t\t\tid,\n\t\t\t\tname: id.charAt(0).toUpperCase() + id.slice(1),\n\t\t\t\tdescription: \"\",\n\t\t\t\ticon: \"\",\n\t\t\t\tcategory: \"test\",\n\t\t\t\timage: `${id}:latest`,\n\t\t\t\tports: [],\n\t\t\t\tvolumes: [],\n\t\t\t\tenvironment: [],\n\t\t\t\tdependencies: [],\n\t\t\t\tconflicts: [],\n\t\t\t\tskills: [],\n\t\t\t\tmemoryMB: 256,\n\t\t\t\tdocsUrl: \"\",\n\t\t\t},\n\t\t\taddedBy: \"user\" as const,\n\t\t})),\n\t\taddedDependencies: [],\n\t\testimatedMemoryMB: 512,\n\t} as unknown as ResolverOutput;\n}\n\ndescribe(\"getDbRequirements\", () => {\n\tit(\"returns empty array when no services need a DB\", () => {\n\t\tconst resolved = makeResolved([\"redis\", \"minio\"]);\n\t\texpect(getDbRequirements(resolved)).toEqual([]);\n\t});\n\n\tit(\"returns requirements for n8n\", () => {\n\t\tconst resolved = makeResolved([\"n8n\", \"redis\"]);\n\t\tconst reqs = getDbRequirements(resolved);\n\t\texpect(reqs).toHaveLength(1);\n\t\texpect(reqs[0]).toEqual({\n\t\t\tserviceId: \"n8n\",\n\t\t\tserviceName: \"N8n\",\n\t\t\tdbName: \"n8n\",\n\t\t\tdbUser: \"n8n\",\n\t\t\tpasswordEnvVar: \"N8N_DB_PASSWORD\",\n\t\t});\n\t});\n\n\tit(\"returns requirements for multiple services\", () => {\n\t\tconst resolved = makeResolved([\"n8n\", \"outline\", \"postiz\", \"redis\"]);\n\t\tconst reqs = getDbRequirements(resolved);\n\t\texpect(reqs).toHaveLength(3);\n\t\tconst ids = reqs.map((r) => r.serviceId);\n\t\texpect(ids).toContain(\"n8n\");\n\t\texpect(ids).toContain(\"outline\");\n\t\texpect(ids).toContain(\"postiz\");\n\t});\n});\n\ndescribe(\"generatePostgresInit\", () => {\n\tit(\"returns null when PostgreSQL is not in the stack\", () => {\n\t\tconst resolved = makeResolved([\"n8n\", \"redis\"]);\n\t\texpect(generatePostgresInit(resolved)).toBeNull();\n\t});\n\n\tit(\"returns null when PostgreSQL is present but no services need DBs\", () => {\n\t\tconst resolved = makeResolved([\"postgresql\", \"redis\", \"minio\"]);\n\t\texpect(generatePostgresInit(resolved)).toBeNull();\n\t});\n\n\tit(\"generates init script when PostgreSQL and DB-needing services are present\", () => {\n\t\tconst resolved = makeResolved([\"postgresql\", \"n8n\"]);\n\t\tconst script = generatePostgresInit(resolved);\n\t\texpect(script).not.toBeNull();\n\t\texpect(script).toContain(\"#!/bin/bash\");\n\t\texpect(script).toContain(\"create_db_and_user\");\n\t\texpect(script).toContain('\"n8n\"');\n\t\texpect(script).toContain(\"N8N_DB_PASSWORD\");\n\t});\n\n\tit(\"includes all services that need DBs\", () => {\n\t\tconst resolved = makeResolved([\"postgresql\", \"n8n\", \"outline\", \"dify\"]);\n\t\tconst script = generatePostgresInit(resolved)!;\n\t\texpect(script).toContain('\"n8n\"');\n\t\texpect(script).toContain('\"outline\"');\n\t\texpect(script).toContain('\"dify\"');\n\t});\n\n\tit(\"uses environment variable substitution for passwords (not literals)\", () => {\n\t\tconst resolved = makeResolved([\"postgresql\", \"n8n\"]);\n\t\tconst script = generatePostgresInit(resolved)!;\n\t\t// Passwords should be referenced as env vars, not hardcoded\n\t\texpect(script).toContain(\"${N8N_DB_PASSWORD:-$POSTGRES_PASSWORD}\");\n\t});\n\n\tit(\"script uses psql with ON_ERROR_STOP\", () => {\n\t\tconst resolved = makeResolved([\"postgresql\", \"n8n\"]);\n\t\tconst script = generatePostgresInit(resolved)!;\n\t\texpect(script).toContain(\"ON_ERROR_STOP=1\");\n\t});\n\n\tit(\"script creates user with IF NOT EXISTS check\", () => {\n\t\tconst resolved = makeResolved([\"postgresql\", \"n8n\"]);\n\t\tconst script = generatePostgresInit(resolved)!;\n\t\texpect(script).toContain(\"IF NOT EXISTS\");\n\t\texpect(script).toContain(\"CREATE ROLE\");\n\t});\n\n\tit(\"includes service names in summary line\", () => {\n\t\tconst resolved = makeResolved([\"postgresql\", \"n8n\", \"outline\"]);\n\t\tconst script = generatePostgresInit(resolved)!;\n\t\texpect(script).toContain(\"N8n\");\n\t\texpect(script).toContain(\"Outline\");\n\t});\n});\n"],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { ResolverOutput } from "../types.cjs";
1
+ import { B as ResolverOutput } from "../types-Bsn0XzSP.cjs";
2
2
 
3
3
  //#region src/generators/prometheus.d.ts
4
4
  /**
@@ -1,4 +1,4 @@
1
- import { ResolverOutput } from "../types.mjs";
1
+ import { B as ResolverOutput } from "../types-DwTKyCZ9.mjs";
2
2
 
3
3
  //#region src/generators/prometheus.d.ts
4
4
  /**
@@ -0,0 +1,99 @@
1
+ require("../skills-uPxJVmKk.cjs");
2
+ const require_test_CTcmp4Su = require("../test.CTcmp4Su-BWSPM8ZQ.cjs");
3
+ const require_generators_prometheus = require("./prometheus.cjs");
4
+ const require_generate = require("../generate.cjs");
5
+ let yaml = require("yaml");
6
+ //#region src/generators/prometheus.test.ts
7
+ function makeResolved(serviceIds) {
8
+ return {
9
+ services: serviceIds.map((id) => ({
10
+ definition: {
11
+ id,
12
+ name: id.charAt(0).toUpperCase() + id.slice(1),
13
+ description: "",
14
+ icon: "📦",
15
+ category: "test",
16
+ image: `${id}:latest`,
17
+ ports: [],
18
+ volumes: [],
19
+ environment: [],
20
+ dependencies: [],
21
+ conflicts: [],
22
+ skills: [],
23
+ memoryMB: 256,
24
+ docsUrl: ""
25
+ },
26
+ addedBy: "user"
27
+ })),
28
+ addedDependencies: [],
29
+ estimatedMemoryMB: 512
30
+ };
31
+ }
32
+ require_test_CTcmp4Su.describe("generatePrometheusConfig", () => {
33
+ require_test_CTcmp4Su.it("always includes prometheus self-monitoring", () => {
34
+ const config = require_generators_prometheus.generatePrometheusConfig(makeResolved(["redis"]));
35
+ require_test_CTcmp4Su.globalExpect(config).toContain("job_name: \"prometheus\"");
36
+ require_test_CTcmp4Su.globalExpect(config).toContain("localhost:9090");
37
+ });
38
+ require_test_CTcmp4Su.it("includes scrape config for redis", () => {
39
+ const config = require_generators_prometheus.generatePrometheusConfig(makeResolved(["redis"]));
40
+ require_test_CTcmp4Su.globalExpect(config).toContain("job_name: \"redis\"");
41
+ require_test_CTcmp4Su.globalExpect(config).toContain("redis:9121");
42
+ });
43
+ require_test_CTcmp4Su.it("includes scrape config for postgresql", () => {
44
+ const config = require_generators_prometheus.generatePrometheusConfig(makeResolved(["postgresql"]));
45
+ require_test_CTcmp4Su.globalExpect(config).toContain("job_name: \"postgresql\"");
46
+ require_test_CTcmp4Su.globalExpect(config).toContain("postgresql:9187");
47
+ });
48
+ require_test_CTcmp4Su.it("includes scrape configs for multiple services", () => {
49
+ const config = require_generators_prometheus.generatePrometheusConfig(makeResolved([
50
+ "redis",
51
+ "n8n",
52
+ "minio"
53
+ ]));
54
+ require_test_CTcmp4Su.globalExpect(config).toContain("job_name: \"redis\"");
55
+ require_test_CTcmp4Su.globalExpect(config).toContain("job_name: \"n8n\"");
56
+ require_test_CTcmp4Su.globalExpect(config).toContain("job_name: \"minio\"");
57
+ });
58
+ require_test_CTcmp4Su.it("skips services without known metrics endpoints", () => {
59
+ require_test_CTcmp4Su.globalExpect(require_generators_prometheus.generatePrometheusConfig(makeResolved(["ffmpeg"]))).not.toContain("job_name: \"ffmpeg\"");
60
+ });
61
+ require_test_CTcmp4Su.it("does not duplicate prometheus job", () => {
62
+ require_test_CTcmp4Su.globalExpect(require_generators_prometheus.generatePrometheusConfig(makeResolved(["prometheus", "redis"])).match(/job_name: "prometheus"/g)).toHaveLength(1);
63
+ });
64
+ require_test_CTcmp4Su.it("always includes openclaw gateway metrics", () => {
65
+ const config = require_generators_prometheus.generatePrometheusConfig(makeResolved(["redis"]));
66
+ require_test_CTcmp4Su.globalExpect(config).toContain("job_name: \"openclaw-gateway\"");
67
+ require_test_CTcmp4Su.globalExpect(config).toContain("openclaw:18789");
68
+ });
69
+ require_test_CTcmp4Su.it("is valid YAML", () => {
70
+ const parsed = (0, yaml.parse)(require_generators_prometheus.generatePrometheusConfig(makeResolved(["redis", "postgresql"])));
71
+ require_test_CTcmp4Su.globalExpect(parsed).toBeDefined();
72
+ require_test_CTcmp4Su.globalExpect(parsed.global).toBeDefined();
73
+ require_test_CTcmp4Su.globalExpect(parsed.scrape_configs).toBeInstanceOf(Array);
74
+ });
75
+ require_test_CTcmp4Su.it("sets correct metrics paths per service", () => {
76
+ require_test_CTcmp4Su.globalExpect(require_generators_prometheus.generatePrometheusConfig(makeResolved(["minio"]))).toContain("/minio/v2/metrics/cluster");
77
+ });
78
+ });
79
+ require_test_CTcmp4Su.describe("prometheus via generate()", () => {
80
+ require_test_CTcmp4Su.it("generates prometheus config when monitoring is enabled", () => {
81
+ const result = require_generate.generate({
82
+ projectName: "prom-test",
83
+ services: ["redis"],
84
+ skillPacks: [],
85
+ proxy: "none",
86
+ gpu: false,
87
+ platform: "linux/amd64",
88
+ deployment: "local",
89
+ generateSecrets: true,
90
+ openclawVersion: "latest",
91
+ monitoring: true
92
+ });
93
+ require_test_CTcmp4Su.globalExpect(result.files).toHaveProperty("prometheus/prometheus.yml");
94
+ require_test_CTcmp4Su.globalExpect((0, yaml.parse)(result.files["prometheus/prometheus.yml"]).scrape_configs.length).toBeGreaterThan(0);
95
+ });
96
+ });
97
+ //#endregion
98
+
99
+ //# sourceMappingURL=prometheus.test.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prometheus.test.cjs","names":["describe","generatePrometheusConfig","generate"],"sources":["../../src/generators/prometheus.test.ts"],"sourcesContent":["import { describe, expect, it } from \"vitest\";\nimport { parse } from \"yaml\";\nimport { generate } from \"../generate.js\";\nimport type { ResolverOutput } from \"../types.js\";\nimport { generatePrometheusConfig } from \"./prometheus.js\";\n\nfunction makeResolved(serviceIds: string[]): ResolverOutput {\n\treturn {\n\t\tservices: serviceIds.map((id) => ({\n\t\t\tdefinition: {\n\t\t\t\tid,\n\t\t\t\tname: id.charAt(0).toUpperCase() + id.slice(1),\n\t\t\t\tdescription: \"\",\n\t\t\t\ticon: \"📦\",\n\t\t\t\tcategory: \"test\",\n\t\t\t\timage: `${id}:latest`,\n\t\t\t\tports: [],\n\t\t\t\tvolumes: [],\n\t\t\t\tenvironment: [],\n\t\t\t\tdependencies: [],\n\t\t\t\tconflicts: [],\n\t\t\t\tskills: [],\n\t\t\t\tmemoryMB: 256,\n\t\t\t\tdocsUrl: \"\",\n\t\t\t},\n\t\t\taddedBy: \"user\" as const,\n\t\t})),\n\t\taddedDependencies: [],\n\t\testimatedMemoryMB: 512,\n\t} as unknown as ResolverOutput;\n}\n\ndescribe(\"generatePrometheusConfig\", () => {\n\tit(\"always includes prometheus self-monitoring\", () => {\n\t\tconst config = generatePrometheusConfig(makeResolved([\"redis\"]));\n\t\texpect(config).toContain('job_name: \"prometheus\"');\n\t\texpect(config).toContain(\"localhost:9090\");\n\t});\n\n\tit(\"includes scrape config for redis\", () => {\n\t\tconst config = generatePrometheusConfig(makeResolved([\"redis\"]));\n\t\texpect(config).toContain('job_name: \"redis\"');\n\t\texpect(config).toContain(\"redis:9121\");\n\t});\n\n\tit(\"includes scrape config for postgresql\", () => {\n\t\tconst config = generatePrometheusConfig(makeResolved([\"postgresql\"]));\n\t\texpect(config).toContain('job_name: \"postgresql\"');\n\t\texpect(config).toContain(\"postgresql:9187\");\n\t});\n\n\tit(\"includes scrape configs for multiple services\", () => {\n\t\tconst config = generatePrometheusConfig(makeResolved([\"redis\", \"n8n\", \"minio\"]));\n\t\texpect(config).toContain('job_name: \"redis\"');\n\t\texpect(config).toContain('job_name: \"n8n\"');\n\t\texpect(config).toContain('job_name: \"minio\"');\n\t});\n\n\tit(\"skips services without known metrics endpoints\", () => {\n\t\tconst config = generatePrometheusConfig(makeResolved([\"ffmpeg\"]));\n\t\texpect(config).not.toContain('job_name: \"ffmpeg\"');\n\t});\n\n\tit(\"does not duplicate prometheus job\", () => {\n\t\tconst config = generatePrometheusConfig(makeResolved([\"prometheus\", \"redis\"]));\n\t\tconst matches = config.match(/job_name: \"prometheus\"/g);\n\t\texpect(matches).toHaveLength(1);\n\t});\n\n\tit(\"always includes openclaw gateway metrics\", () => {\n\t\tconst config = generatePrometheusConfig(makeResolved([\"redis\"]));\n\t\texpect(config).toContain('job_name: \"openclaw-gateway\"');\n\t\texpect(config).toContain(\"openclaw:18789\");\n\t});\n\n\tit(\"is valid YAML\", () => {\n\t\tconst config = generatePrometheusConfig(makeResolved([\"redis\", \"postgresql\"]));\n\t\tconst parsed = parse(config);\n\t\texpect(parsed).toBeDefined();\n\t\texpect(parsed.global).toBeDefined();\n\t\texpect(parsed.scrape_configs).toBeInstanceOf(Array);\n\t});\n\n\tit(\"sets correct metrics paths per service\", () => {\n\t\tconst config = generatePrometheusConfig(makeResolved([\"minio\"]));\n\t\texpect(config).toContain(\"/minio/v2/metrics/cluster\");\n\t});\n});\n\ndescribe(\"prometheus via generate()\", () => {\n\tit(\"generates prometheus config when monitoring is enabled\", () => {\n\t\tconst result = generate({\n\t\t\tprojectName: \"prom-test\",\n\t\t\tservices: [\"redis\"],\n\t\t\tskillPacks: [],\n\t\t\tproxy: \"none\",\n\t\t\tgpu: false,\n\t\t\tplatform: \"linux/amd64\",\n\t\t\tdeployment: \"local\",\n\t\t\tgenerateSecrets: true,\n\t\t\topenclawVersion: \"latest\",\n\t\t\tmonitoring: true,\n\t\t});\n\t\texpect(result.files).toHaveProperty(\"prometheus/prometheus.yml\");\n\t\tconst promConfig = parse(result.files[\"prometheus/prometheus.yml\"]!);\n\t\texpect(promConfig.scrape_configs.length).toBeGreaterThan(0);\n\t});\n});\n"],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export { };
@@ -0,0 +1 @@
1
+ export { };
@@ -0,0 +1,99 @@
1
+ import { a as describe, o as it, t as globalExpect } from "../test.CTcmp4Su-BRa7-bTj.mjs";
2
+ import { generatePrometheusConfig } from "./prometheus.mjs";
3
+ import { generate } from "../generate.mjs";
4
+ import { parse } from "yaml";
5
+ //#region src/generators/prometheus.test.ts
6
+ function makeResolved(serviceIds) {
7
+ return {
8
+ services: serviceIds.map((id) => ({
9
+ definition: {
10
+ id,
11
+ name: id.charAt(0).toUpperCase() + id.slice(1),
12
+ description: "",
13
+ icon: "📦",
14
+ category: "test",
15
+ image: `${id}:latest`,
16
+ ports: [],
17
+ volumes: [],
18
+ environment: [],
19
+ dependencies: [],
20
+ conflicts: [],
21
+ skills: [],
22
+ memoryMB: 256,
23
+ docsUrl: ""
24
+ },
25
+ addedBy: "user"
26
+ })),
27
+ addedDependencies: [],
28
+ estimatedMemoryMB: 512
29
+ };
30
+ }
31
+ describe("generatePrometheusConfig", () => {
32
+ it("always includes prometheus self-monitoring", () => {
33
+ const config = generatePrometheusConfig(makeResolved(["redis"]));
34
+ globalExpect(config).toContain("job_name: \"prometheus\"");
35
+ globalExpect(config).toContain("localhost:9090");
36
+ });
37
+ it("includes scrape config for redis", () => {
38
+ const config = generatePrometheusConfig(makeResolved(["redis"]));
39
+ globalExpect(config).toContain("job_name: \"redis\"");
40
+ globalExpect(config).toContain("redis:9121");
41
+ });
42
+ it("includes scrape config for postgresql", () => {
43
+ const config = generatePrometheusConfig(makeResolved(["postgresql"]));
44
+ globalExpect(config).toContain("job_name: \"postgresql\"");
45
+ globalExpect(config).toContain("postgresql:9187");
46
+ });
47
+ it("includes scrape configs for multiple services", () => {
48
+ const config = generatePrometheusConfig(makeResolved([
49
+ "redis",
50
+ "n8n",
51
+ "minio"
52
+ ]));
53
+ globalExpect(config).toContain("job_name: \"redis\"");
54
+ globalExpect(config).toContain("job_name: \"n8n\"");
55
+ globalExpect(config).toContain("job_name: \"minio\"");
56
+ });
57
+ it("skips services without known metrics endpoints", () => {
58
+ globalExpect(generatePrometheusConfig(makeResolved(["ffmpeg"]))).not.toContain("job_name: \"ffmpeg\"");
59
+ });
60
+ it("does not duplicate prometheus job", () => {
61
+ globalExpect(generatePrometheusConfig(makeResolved(["prometheus", "redis"])).match(/job_name: "prometheus"/g)).toHaveLength(1);
62
+ });
63
+ it("always includes openclaw gateway metrics", () => {
64
+ const config = generatePrometheusConfig(makeResolved(["redis"]));
65
+ globalExpect(config).toContain("job_name: \"openclaw-gateway\"");
66
+ globalExpect(config).toContain("openclaw:18789");
67
+ });
68
+ it("is valid YAML", () => {
69
+ const parsed = parse(generatePrometheusConfig(makeResolved(["redis", "postgresql"])));
70
+ globalExpect(parsed).toBeDefined();
71
+ globalExpect(parsed.global).toBeDefined();
72
+ globalExpect(parsed.scrape_configs).toBeInstanceOf(Array);
73
+ });
74
+ it("sets correct metrics paths per service", () => {
75
+ globalExpect(generatePrometheusConfig(makeResolved(["minio"]))).toContain("/minio/v2/metrics/cluster");
76
+ });
77
+ });
78
+ describe("prometheus via generate()", () => {
79
+ it("generates prometheus config when monitoring is enabled", () => {
80
+ const result = generate({
81
+ projectName: "prom-test",
82
+ services: ["redis"],
83
+ skillPacks: [],
84
+ proxy: "none",
85
+ gpu: false,
86
+ platform: "linux/amd64",
87
+ deployment: "local",
88
+ generateSecrets: true,
89
+ openclawVersion: "latest",
90
+ monitoring: true
91
+ });
92
+ globalExpect(result.files).toHaveProperty("prometheus/prometheus.yml");
93
+ globalExpect(parse(result.files["prometheus/prometheus.yml"]).scrape_configs.length).toBeGreaterThan(0);
94
+ });
95
+ });
96
+ //#endregion
97
+ export {};
98
+
99
+ //# sourceMappingURL=prometheus.test.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prometheus.test.mjs","names":[],"sources":["../../src/generators/prometheus.test.ts"],"sourcesContent":["import { describe, expect, it } from \"vitest\";\nimport { parse } from \"yaml\";\nimport { generate } from \"../generate.js\";\nimport type { ResolverOutput } from \"../types.js\";\nimport { generatePrometheusConfig } from \"./prometheus.js\";\n\nfunction makeResolved(serviceIds: string[]): ResolverOutput {\n\treturn {\n\t\tservices: serviceIds.map((id) => ({\n\t\t\tdefinition: {\n\t\t\t\tid,\n\t\t\t\tname: id.charAt(0).toUpperCase() + id.slice(1),\n\t\t\t\tdescription: \"\",\n\t\t\t\ticon: \"📦\",\n\t\t\t\tcategory: \"test\",\n\t\t\t\timage: `${id}:latest`,\n\t\t\t\tports: [],\n\t\t\t\tvolumes: [],\n\t\t\t\tenvironment: [],\n\t\t\t\tdependencies: [],\n\t\t\t\tconflicts: [],\n\t\t\t\tskills: [],\n\t\t\t\tmemoryMB: 256,\n\t\t\t\tdocsUrl: \"\",\n\t\t\t},\n\t\t\taddedBy: \"user\" as const,\n\t\t})),\n\t\taddedDependencies: [],\n\t\testimatedMemoryMB: 512,\n\t} as unknown as ResolverOutput;\n}\n\ndescribe(\"generatePrometheusConfig\", () => {\n\tit(\"always includes prometheus self-monitoring\", () => {\n\t\tconst config = generatePrometheusConfig(makeResolved([\"redis\"]));\n\t\texpect(config).toContain('job_name: \"prometheus\"');\n\t\texpect(config).toContain(\"localhost:9090\");\n\t});\n\n\tit(\"includes scrape config for redis\", () => {\n\t\tconst config = generatePrometheusConfig(makeResolved([\"redis\"]));\n\t\texpect(config).toContain('job_name: \"redis\"');\n\t\texpect(config).toContain(\"redis:9121\");\n\t});\n\n\tit(\"includes scrape config for postgresql\", () => {\n\t\tconst config = generatePrometheusConfig(makeResolved([\"postgresql\"]));\n\t\texpect(config).toContain('job_name: \"postgresql\"');\n\t\texpect(config).toContain(\"postgresql:9187\");\n\t});\n\n\tit(\"includes scrape configs for multiple services\", () => {\n\t\tconst config = generatePrometheusConfig(makeResolved([\"redis\", \"n8n\", \"minio\"]));\n\t\texpect(config).toContain('job_name: \"redis\"');\n\t\texpect(config).toContain('job_name: \"n8n\"');\n\t\texpect(config).toContain('job_name: \"minio\"');\n\t});\n\n\tit(\"skips services without known metrics endpoints\", () => {\n\t\tconst config = generatePrometheusConfig(makeResolved([\"ffmpeg\"]));\n\t\texpect(config).not.toContain('job_name: \"ffmpeg\"');\n\t});\n\n\tit(\"does not duplicate prometheus job\", () => {\n\t\tconst config = generatePrometheusConfig(makeResolved([\"prometheus\", \"redis\"]));\n\t\tconst matches = config.match(/job_name: \"prometheus\"/g);\n\t\texpect(matches).toHaveLength(1);\n\t});\n\n\tit(\"always includes openclaw gateway metrics\", () => {\n\t\tconst config = generatePrometheusConfig(makeResolved([\"redis\"]));\n\t\texpect(config).toContain('job_name: \"openclaw-gateway\"');\n\t\texpect(config).toContain(\"openclaw:18789\");\n\t});\n\n\tit(\"is valid YAML\", () => {\n\t\tconst config = generatePrometheusConfig(makeResolved([\"redis\", \"postgresql\"]));\n\t\tconst parsed = parse(config);\n\t\texpect(parsed).toBeDefined();\n\t\texpect(parsed.global).toBeDefined();\n\t\texpect(parsed.scrape_configs).toBeInstanceOf(Array);\n\t});\n\n\tit(\"sets correct metrics paths per service\", () => {\n\t\tconst config = generatePrometheusConfig(makeResolved([\"minio\"]));\n\t\texpect(config).toContain(\"/minio/v2/metrics/cluster\");\n\t});\n});\n\ndescribe(\"prometheus via generate()\", () => {\n\tit(\"generates prometheus config when monitoring is enabled\", () => {\n\t\tconst result = generate({\n\t\t\tprojectName: \"prom-test\",\n\t\t\tservices: [\"redis\"],\n\t\t\tskillPacks: [],\n\t\t\tproxy: \"none\",\n\t\t\tgpu: false,\n\t\t\tplatform: \"linux/amd64\",\n\t\t\tdeployment: \"local\",\n\t\t\tgenerateSecrets: true,\n\t\t\topenclawVersion: \"latest\",\n\t\t\tmonitoring: true,\n\t\t});\n\t\texpect(result.files).toHaveProperty(\"prometheus/prometheus.yml\");\n\t\tconst promConfig = parse(result.files[\"prometheus/prometheus.yml\"]!);\n\t\texpect(promConfig.scrape_configs.length).toBeGreaterThan(0);\n\t});\n});\n"],"mappings":";;;;;AAMA,SAAS,aAAa,YAAsC;AAC3D,QAAO;EACN,UAAU,WAAW,KAAK,QAAQ;GACjC,YAAY;IACX;IACA,MAAM,GAAG,OAAO,EAAE,CAAC,aAAa,GAAG,GAAG,MAAM,EAAE;IAC9C,aAAa;IACb,MAAM;IACN,UAAU;IACV,OAAO,GAAG,GAAG;IACb,OAAO,EAAE;IACT,SAAS,EAAE;IACX,aAAa,EAAE;IACf,cAAc,EAAE;IAChB,WAAW,EAAE;IACb,QAAQ,EAAE;IACV,UAAU;IACV,SAAS;IACT;GACD,SAAS;GACT,EAAE;EACH,mBAAmB,EAAE;EACrB,mBAAmB;EACnB;;AAGF,SAAS,kCAAkC;AAC1C,IAAG,oDAAoD;EACtD,MAAM,SAAS,yBAAyB,aAAa,CAAC,QAAQ,CAAC,CAAC;AAChE,eAAO,OAAO,CAAC,UAAU,2BAAyB;AAClD,eAAO,OAAO,CAAC,UAAU,iBAAiB;GACzC;AAEF,IAAG,0CAA0C;EAC5C,MAAM,SAAS,yBAAyB,aAAa,CAAC,QAAQ,CAAC,CAAC;AAChE,eAAO,OAAO,CAAC,UAAU,sBAAoB;AAC7C,eAAO,OAAO,CAAC,UAAU,aAAa;GACrC;AAEF,IAAG,+CAA+C;EACjD,MAAM,SAAS,yBAAyB,aAAa,CAAC,aAAa,CAAC,CAAC;AACrE,eAAO,OAAO,CAAC,UAAU,2BAAyB;AAClD,eAAO,OAAO,CAAC,UAAU,kBAAkB;GAC1C;AAEF,IAAG,uDAAuD;EACzD,MAAM,SAAS,yBAAyB,aAAa;GAAC;GAAS;GAAO;GAAQ,CAAC,CAAC;AAChF,eAAO,OAAO,CAAC,UAAU,sBAAoB;AAC7C,eAAO,OAAO,CAAC,UAAU,oBAAkB;AAC3C,eAAO,OAAO,CAAC,UAAU,sBAAoB;GAC5C;AAEF,IAAG,wDAAwD;AAE1D,eADe,yBAAyB,aAAa,CAAC,SAAS,CAAC,CAAC,CACnD,CAAC,IAAI,UAAU,uBAAqB;GACjD;AAEF,IAAG,2CAA2C;AAG7C,eAFe,yBAAyB,aAAa,CAAC,cAAc,QAAQ,CAAC,CAAC,CACvD,MAAM,0BAA0B,CACxC,CAAC,aAAa,EAAE;GAC9B;AAEF,IAAG,kDAAkD;EACpD,MAAM,SAAS,yBAAyB,aAAa,CAAC,QAAQ,CAAC,CAAC;AAChE,eAAO,OAAO,CAAC,UAAU,iCAA+B;AACxD,eAAO,OAAO,CAAC,UAAU,iBAAiB;GACzC;AAEF,IAAG,uBAAuB;EAEzB,MAAM,SAAS,MADA,yBAAyB,aAAa,CAAC,SAAS,aAAa,CAAC,CAAC,CAClD;AAC5B,eAAO,OAAO,CAAC,aAAa;AAC5B,eAAO,OAAO,OAAO,CAAC,aAAa;AACnC,eAAO,OAAO,eAAe,CAAC,eAAe,MAAM;GAClD;AAEF,IAAG,gDAAgD;AAElD,eADe,yBAAyB,aAAa,CAAC,QAAQ,CAAC,CAAC,CAClD,CAAC,UAAU,4BAA4B;GACpD;EACD;AAEF,SAAS,mCAAmC;AAC3C,IAAG,gEAAgE;EAClE,MAAM,SAAS,SAAS;GACvB,aAAa;GACb,UAAU,CAAC,QAAQ;GACnB,YAAY,EAAE;GACd,OAAO;GACP,KAAK;GACL,UAAU;GACV,YAAY;GACZ,iBAAiB;GACjB,iBAAiB;GACjB,YAAY;GACZ,CAAC;AACF,eAAO,OAAO,MAAM,CAAC,eAAe,4BAA4B;AAEhE,eADmB,MAAM,OAAO,MAAM,6BAA8B,CAClD,eAAe,OAAO,CAAC,gBAAgB,EAAE;GAC1D;EACD"}
@@ -1,4 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_frameworks_registry = require("../frameworks/registry.cjs");
3
+ require("../frameworks/index.cjs");
2
4
  //#region src/generators/readme.ts
3
5
  /**
4
6
  * Generates a comprehensive README.md for the OpenClaw project.
@@ -7,15 +9,17 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
7
9
  * service URLs, skill packs, and scripts documentation.
8
10
  */
9
11
  function generateReadme(resolved, options) {
10
- const { projectName, domain, proxy, deploymentType, hasNativeServices, openclawInstallMethod } = options;
12
+ const { projectName, domain, proxy, deploymentType, hasNativeServices, openclawInstallMethod, primaryFramework } = options;
11
13
  const isDirectInstall = openclawInstallMethod === "direct";
14
+ const frameworkName = require_frameworks_registry.getFrameworkById(primaryFramework ?? "openclaw")?.name ?? "OpenClaw";
15
+ const isOpenClaw = (primaryFramework ?? "openclaw") === "openclaw";
12
16
  const sections = [];
13
17
  sections.push(`# ${projectName}
14
18
 
15
- > Self-hosted AI agent infrastructure powered by [OpenClaw](https://openclaw.dev).
19
+ > Self-hosted AI agent infrastructure powered by **${frameworkName}**${isOpenClaw ? " — [openclaw.dev](https://openclaw.dev)" : ""}.
16
20
 
17
- This project provides a fully configured Docker Compose stack with ${resolved.services.length} services, ready to deploy on any server.${isDirectInstall ? " OpenClaw itself runs directly on the host (not in Docker)." : ""}
18
- ${deploymentType === "bare-metal" && hasNativeServices ? "\n\n**Bare-metal (native + Docker):** Some services run natively on the host; the rest (including the OpenClaw gateway) run in Docker. Use the top-level `install.sh` or `install.ps1` to install/start native services first, then start the Docker stack." : ""}
21
+ This project provides a fully configured Docker Compose stack with ${resolved.services.length} services, ready to deploy on any server.${isDirectInstall ? ` ${frameworkName} itself runs directly on the host (not in Docker).` : ""}
22
+ ${deploymentType === "bare-metal" && hasNativeServices ? `\n\n**Bare-metal (native + Docker):** Some services run natively on the host; the rest (including the ${frameworkName} gateway) run in Docker. Use the top-level \`install.sh\` or \`install.ps1\` to install/start native services first, then start the Docker stack.` : ""}
19
23
 
20
24
  ---`);
21
25
  const serviceRows = resolved.services.map(({ definition }) => {
@@ -96,7 +100,7 @@ docker compose ps
96
100
  ### 5. View Logs
97
101
 
98
102
  \`\`\`bash
99
- docker compose logs -f openclaw-gateway
103
+ docker compose logs -f ${primaryFramework ?? "openclaw"}-gateway
100
104
  \`\`\`
101
105
  `}
102
106
  All services should show a healthy status within 1–2 minutes.
@@ -158,7 +162,46 @@ ${skillRows}
158
162
  Skills are located in \`openclaw/workspace/skills/\`. Each skill provides a \`SKILL.md\` with usage instructions.
159
163
  `);
160
164
  }
161
- if (isDirectInstall) sections.push(`## OpenClaw Setup
165
+ const memoryServiceIds = [
166
+ "mem0",
167
+ "memu",
168
+ "hindsight"
169
+ ];
170
+ const vectorDbIds = [
171
+ "qdrant",
172
+ "chromadb",
173
+ "weaviate",
174
+ "milvus"
175
+ ];
176
+ const memoryServices = resolved.services.filter(({ definition }) => memoryServiceIds.includes(definition.id));
177
+ const vectorDbs = resolved.services.filter(({ definition }) => vectorDbIds.includes(definition.id));
178
+ if (memoryServices.length > 0 || vectorDbs.length > 0) {
179
+ let memSection = `## AI Memory Integration
180
+
181
+ This stack includes integrated AI memory services. The ${frameworkName} agent framework is automatically configured to use them via \`openclaw/config/openclaw.json\`.
182
+ `;
183
+ if (memoryServices.length > 0) {
184
+ const memList = memoryServices.map(({ definition }) => `- ${definition.icon} **${definition.name}** — ${definition.description.split(".")[0]}`).join("\n");
185
+ memSection += `
186
+ ### Memory Services
187
+
188
+ ${memList}
189
+ `;
190
+ }
191
+ if (vectorDbs.length > 0) {
192
+ const vecList = vectorDbs.map(({ definition }) => `- ${definition.icon} **${definition.name}** — ${definition.description.split(".")[0]}`).join("\n");
193
+ memSection += `
194
+ ### Vector Databases
195
+
196
+ ${vecList}
197
+ `;
198
+ }
199
+ memSection += `
200
+ Skills for interacting with these services are in \`openclaw/workspace/skills/\`.
201
+ `;
202
+ sections.push(memSection);
203
+ }
204
+ if (isOpenClaw && isDirectInstall) sections.push(`## OpenClaw Setup
162
205
 
163
206
  OpenClaw is installed directly on the host (not in Docker). After running the install script:\n
164
207
  \`\`\`bash
@@ -189,7 +232,7 @@ openclaw channels add --channel discord --token <BOT_TOKEN>
189
232
 
190
233
  See [Channel Docs](https://docs.openclaw.ai/channels) for more providers.
191
234
  `);
192
- else sections.push(`## Onboarding & Channel Setup
235
+ else if (isOpenClaw) sections.push(`## Onboarding & Channel Setup
193
236
 
194
237
  After starting the stack, complete the gateway onboarding:
195
238
 
@@ -1 +1 @@
1
- {"version":3,"file":"readme.cjs","names":[],"sources":["../../src/generators/readme.ts"],"sourcesContent":["import type { ResolverOutput } from \"../types.js\";\n\n/**\n * Options for README generation.\n */\nexport interface ReadmeOptions {\n\tprojectName: string;\n\tdomain?: string;\n\tproxy?: string;\n\t/** When \"bare-metal\", the stack uses native + Docker hybrid. */\n\tdeploymentType?: \"docker\" | \"bare-metal\" | \"local\";\n\t/** True when some services run natively on the host (bare-metal only). */\n\thasNativeServices?: boolean;\n\t/** How OpenClaw itself is installed: docker (container) or direct (host). */\n\topenclawInstallMethod?: \"docker\" | \"direct\";\n}\n\n/**\n * Generates a comprehensive README.md for the OpenClaw project.\n *\n * Includes: project description, service table, quick start instructions,\n * service URLs, skill packs, and scripts documentation.\n */\nexport function generateReadme(resolved: ResolverOutput, options: ReadmeOptions): string {\n\tconst { projectName, domain, proxy, deploymentType, hasNativeServices, openclawInstallMethod } =\n\t\toptions;\n\tconst isDirectInstall = openclawInstallMethod === \"direct\";\n\tconst sections: string[] = [];\n\n\t// ── Title & Description ─────────────────────────────────────────────────\n\n\tsections.push(`# ${projectName}\n\n> Self-hosted AI agent infrastructure powered by [OpenClaw](https://openclaw.dev).\n\nThis project provides a fully configured Docker Compose stack with ${resolved.services.length} services, ready to deploy on any server.${isDirectInstall ? \" OpenClaw itself runs directly on the host (not in Docker).\" : \"\"}\n${deploymentType === \"bare-metal\" && hasNativeServices ? \"\\n\\n**Bare-metal (native + Docker):** Some services run natively on the host; the rest (including the OpenClaw gateway) run in Docker. Use the top-level `install.sh` or `install.ps1` to install/start native services first, then start the Docker stack.\" : \"\"}\n\n---`);\n\n\t// ── Service Table ────────────────────────────────────────────────────────\n\n\tconst serviceRows = resolved.services\n\t\t.map(({ definition }) => {\n\t\t\tconst mainPort = definition.ports.find((p) => p.exposed);\n\t\t\tconst url = mainPort\n\t\t\t\t? domain\n\t\t\t\t\t? `https://${definition.id}.${domain}`\n\t\t\t\t\t: `http://localhost:${mainPort.host}`\n\t\t\t\t: \"N/A (internal)\";\n\t\t\treturn `| ${definition.icon} | **${definition.name}** | ${url} | ${definition.description} |`;\n\t\t})\n\t\t.join(\"\\n\");\n\n\tsections.push(`## Services\n\n| | Service | URL | Description |\n|---|---------|-----|-------------|\n${serviceRows}\n`);\n\n\t// ── Quick Start ──────────────────────────────────────────────────────────\n\n\tsections.push(`## Quick Start\n\n### Prerequisites\n\n- [Docker](https://docs.docker.com/get-docker/) (v24+)\n- [Docker Compose](https://docs.docker.com/compose/install/) (v2+)\n- At least ${Math.ceil(resolved.estimatedMemoryMB / 1024)}GB of RAM available\n${isDirectInstall ? \"- Node.js 22+ (installed automatically by the OpenClaw installer)\" : \"\"}\n\n### 1. Extract the ZIP\n\n\\`\\`\\`bash\nunzip ${projectName}.zip\ncd ${projectName}\n\\`\\`\\`\n\n### 2. Configure Environment\n\n\\`\\`\\`bash\ncp .env.example .env\n\\`\\`\\`\n\nEdit \\`.env\\` and update any values as needed. Secret values have been pre-generated — review and change them for production use.\n${\n\tisDirectInstall\n\t\t? `\n### 3. Install OpenClaw on the Host\n\n\\`\\`\\`bash\nchmod +x scripts/install-openclaw.sh\n./scripts/install-openclaw.sh\n\\`\\`\\`\n\nThis downloads and runs the official installer, which sets up Node.js 22+ and OpenClaw globally.\n\n### 4. Start Companion Services\n\n\\`\\`\\`bash\ndocker compose up -d\n\\`\\`\\`\n\n### 5. Run Onboarding\n\n\\`\\`\\`bash\nopenclaw onboard\n\\`\\`\\`\n`\n\t\t: `\n### 3. Start Services\n\n\\`\\`\\`bash\ndocker compose up -d\n\\`\\`\\`\n\nOr use the provided start script:\n\n\\`\\`\\`bash\nchmod +x scripts/*.sh\n./scripts/start.sh\n\\`\\`\\`\n\n### 4. Check Status\n\n\\`\\`\\`bash\ndocker compose ps\n\\`\\`\\`\n\n### 5. View Logs\n\n\\`\\`\\`bash\ndocker compose logs -f openclaw-gateway\n\\`\\`\\`\n`\n}\nAll services should show a healthy status within 1–2 minutes.\n`);\n\n\t// ── Docker Compose Profiles ──────────────────────────────────────────────\n\n\tsections.push(`## Using Docker Compose Profiles\n\nYour stack may include profile-based compose files for optional service groups. Only the base services start by default — use profiles to activate additional groups:\n\n\\`\\`\\`bash\n# Start base services only\ndocker compose up -d\n\n# Start base + AI services (Ollama, Open WebUI, etc.)\ndocker compose -f docker-compose.yml -f docker-compose.ai.yml --profile ai up -d\n\n# Start base + monitoring (Grafana, Prometheus, Uptime Kuma)\ndocker compose -f docker-compose.yml -f docker-compose.monitoring.yml --profile monitoring up -d\n\n# Start base + AI + dev tools\ndocker compose -f docker-compose.yml -f docker-compose.ai.yml -f docker-compose.tools.yml --profile ai --profile tools up -d\n\\`\\`\\`\n\nAvailable profile files (if generated):\n| File | Profile | Services |\n|------|---------|----------|\n| \\`docker-compose.ai.yml\\` | \\`ai\\` | AI models, chat UIs, LLM platforms |\n| \\`docker-compose.media.yml\\` | \\`media\\` | FFmpeg, Remotion, Motion Canvas |\n| \\`docker-compose.monitoring.yml\\` | \\`monitoring\\` | Grafana, Prometheus, Uptime Kuma, analytics |\n| \\`docker-compose.tools.yml\\` | \\`tools\\` | Gitea, code-server, Portainer, coding agents |\n| \\`docker-compose.social.yml\\` | \\`social\\` | Postiz, Mixpost |\n| \\`docker-compose.knowledge.yml\\` | \\`knowledge\\` | Outline, Paperless-ngx, NocoDB |\n| \\`docker-compose.communication.yml\\` | \\`communication\\` | Matrix, Rocket.Chat, Mattermost |\n`);\n\n\t// ── Service URLs & Ports ─────────────────────────────────────────────────\n\n\tconst portRows = resolved.services\n\t\t.filter(({ definition }) => definition.ports.length > 0)\n\t\t.map(({ definition }) => {\n\t\t\tconst ports = definition.ports\n\t\t\t\t.map((p) => `\\`${p.host}\\` → \\`${p.container}\\` (${p.description})`)\n\t\t\t\t.join(\", \");\n\t\t\treturn `| ${definition.icon} ${definition.name} | ${ports} |`;\n\t\t})\n\t\t.join(\"\\n\");\n\n\tif (portRows) {\n\t\tsections.push(`## Ports\n\n| Service | Ports |\n|---------|-------|\n${portRows}\n`);\n\t}\n\n\t// ── Skill Packs ─────────────────────────────────────────────────────────\n\n\tconst allSkills = resolved.services.flatMap(({ definition }) =>\n\t\tdefinition.skills.map((s) => ({\n\t\t\tskillId: s.skillId,\n\t\t\tserviceName: definition.name,\n\t\t\tserviceIcon: definition.icon,\n\t\t})),\n\t);\n\n\tif (allSkills.length > 0) {\n\t\tconst skillRows = allSkills\n\t\t\t.map((s) => `| \\`${s.skillId}\\` | ${s.serviceIcon} ${s.serviceName} |`)\n\t\t\t.join(\"\\n\");\n\n\t\tsections.push(`## Skills\n\nThe following OpenClaw skills are automatically installed:\n\n| Skill | Service |\n|-------|---------|\n${skillRows}\n\nSkills are located in \\`openclaw/workspace/skills/\\`. Each skill provides a \\`SKILL.md\\` with usage instructions.\n`);\n\t}\n\n\t// ── Onboarding & Channels ──────────────────────────────────────────────\n\t// Based on openclaw_docker-setup.sh post-deploy instructions\n\n\tif (isDirectInstall) {\n\t\tsections.push(`## OpenClaw Setup\n\nOpenClaw is installed directly on the host (not in Docker). After running the install script:\\n\n\\`\\`\\`bash\n# Run onboarding to configure the gateway\nopenclaw onboard\n\n# Launch the dashboard\nopenclaw dashboard\n\\`\\`\\`\n\nWhen prompted during onboarding:\n- **Gateway bind:** \\`lan\\`\n- **Gateway auth:** \\`token\\`\n- **Gateway token:** (use the value from \\`.env\\` → \\`OPENCLAW_GATEWAY_TOKEN\\`)\n\n### Connect Messaging Channels (optional)\n\n\\`\\`\\`bash\n# WhatsApp (scan QR code)\nopenclaw channels login\n\n# Telegram\nopenclaw channels add --channel telegram --token <BOT_TOKEN>\n\n# Discord\nopenclaw channels add --channel discord --token <BOT_TOKEN>\n\\`\\`\\`\n\nSee [Channel Docs](https://docs.openclaw.ai/channels) for more providers.\n`);\n\t} else {\n\t\tsections.push(`## Onboarding & Channel Setup\n\nAfter starting the stack, complete the gateway onboarding:\n\n\\`\\`\\`bash\n# Interactive onboarding (sets up gateway auth and config)\ndocker compose run --rm openclaw-cli onboard --no-install-daemon\n\\`\\`\\`\n\nWhen prompted:\n- **Gateway bind:** \\`lan\\`\n- **Gateway auth:** \\`token\\`\n- **Gateway token:** (use the value from \\`.env\\` → \\`OPENCLAW_GATEWAY_TOKEN\\`)\n- **Tailscale exposure:** Off\n- **Install Gateway daemon:** No\n\n### Connect Messaging Channels (optional)\n\n\\`\\`\\`bash\n# WhatsApp (scan QR code)\ndocker compose run --rm openclaw-cli channels login\n\n# Telegram\ndocker compose run --rm openclaw-cli channels add --channel telegram --token <BOT_TOKEN>\n\n# Discord\ndocker compose run --rm openclaw-cli channels add --channel discord --token <BOT_TOKEN>\n\\`\\`\\`\n\nSee [Channel Docs](https://docs.openclaw.ai/channels) for more providers.\n`);\n\t}\n\n\t// ── Proxy Configuration ─────────────────────────────────────────────────\n\n\tif (proxy && proxy !== \"none\") {\n\t\tconst proxyName = proxy === \"caddy\" ? \"Caddy\" : \"Traefik\";\n\t\tsections.push(`## Reverse Proxy\n\nThis stack uses **${proxyName}** as a reverse proxy.${domain ? ` All services are available under \\`${domain}\\`.` : \"\"}\n\n${proxy === \"caddy\" ? \"The Caddyfile is located at `config/Caddyfile`.\" : \"Traefik configuration is handled via Docker labels.\"}\n`);\n\t}\n\n\t// ── Scripts ──────────────────────────────────────────────────────────────\n\n\tsections.push(`## Management Scripts\n\n\\`\\`\\`bash\nchmod +x scripts/*.sh # Make scripts executable (first time only)\n\\`\\`\\`\n\n| Script | Description |\n|--------|-------------|\n| \\`./scripts/start.sh\\` | Validates .env, auto-generates gateway token, creates dirs, starts all services with health checks |\n| \\`./scripts/stop.sh\\` | Gracefully stops all services |\n| \\`./scripts/update.sh\\` | Pulls latest Docker images and restarts services |\n| \\`./scripts/backup.sh\\` | Backs up all named Docker volumes to timestamped archives |\n| \\`./scripts/status.sh\\` | Shows current service status, resource usage, and disk |\n`);\n\n\t// ── Data & Volumes ──────────────────────────────────────────────────────\n\n\tconst volumeRows = resolved.services.flatMap(({ definition }) =>\n\t\tdefinition.volumes.map((v) => ({\n\t\t\tname: v.name,\n\t\t\tpath: v.containerPath,\n\t\t\tdescription: v.description,\n\t\t\tserviceName: definition.name,\n\t\t})),\n\t);\n\n\tif (volumeRows.length > 0) {\n\t\tconst rows = volumeRows\n\t\t\t.map((v) => `| \\`${v.name}\\` | ${v.serviceName} | ${v.description} |`)\n\t\t\t.join(\"\\n\");\n\n\t\tsections.push(`## Volumes\n\n| Volume | Service | Description |\n|--------|---------|-------------|\n${rows}\n\n> **Tip:** Use \\`scripts/backup.sh\\` to back up all volumes before updates.\n`);\n\t}\n\n\t// ── Estimated Resources ─────────────────────────────────────────────────\n\n\tsections.push(`## Resource Estimates\n\n- **Services:** ${resolved.services.length}\n- **Estimated RAM:** ~${(resolved.estimatedMemoryMB / 1024).toFixed(1)}GB\n- **Recommended minimum:** ${Math.ceil(resolved.estimatedMemoryMB / 1024) + 2}GB RAM\n`);\n\n\t// ── Warnings ─────────────────────────────────────────────────────────────\n\n\tif (resolved.warnings.length > 0) {\n\t\tconst warningList = resolved.warnings.map((w) => `- ⚠️ ${w.message}`).join(\"\\n\");\n\n\t\tsections.push(`## Warnings\n\n${warningList}\n`);\n\t}\n\n\t// ── Footer ──────────────────────────────────────────────────────────────\n\n\tsections.push(`---\n\nGenerated by [better-openclaw](https://better-openclaw.dev) • ${new Date().toISOString().split(\"T\")[0]}\nDeploy without managing servers: [Clawexa Cloud](https://clawexa.net)\n`);\n\n\treturn sections.join(\"\\n\");\n}\n"],"mappings":"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"}
1
+ {"version":3,"file":"readme.cjs","names":["getFrameworkById"],"sources":["../../src/generators/readme.ts"],"sourcesContent":["import { getFrameworkById } from \"../frameworks/index.js\";\nimport type { ResolverOutput } from \"../types.js\";\n\n/**\n * Options for README generation.\n */\nexport interface ReadmeOptions {\n\tprojectName: string;\n\tdomain?: string;\n\tproxy?: string;\n\t/** When \"bare-metal\", the stack uses native + Docker hybrid. */\n\tdeploymentType?: \"docker\" | \"bare-metal\" | \"local\";\n\t/** True when some services run natively on the host (bare-metal only). */\n\thasNativeServices?: boolean;\n\t/** How OpenClaw itself is installed: docker (container) or direct (host). */\n\topenclawInstallMethod?: \"docker\" | \"direct\";\n\t/** Primary agent framework (defaults to \"openclaw\"). */\n\tprimaryFramework?: string;\n}\n\n/**\n * Generates a comprehensive README.md for the OpenClaw project.\n *\n * Includes: project description, service table, quick start instructions,\n * service URLs, skill packs, and scripts documentation.\n */\nexport function generateReadme(resolved: ResolverOutput, options: ReadmeOptions): string {\n\tconst {\n\t\tprojectName,\n\t\tdomain,\n\t\tproxy,\n\t\tdeploymentType,\n\t\thasNativeServices,\n\t\topenclawInstallMethod,\n\t\tprimaryFramework,\n\t} = options;\n\tconst isDirectInstall = openclawInstallMethod === \"direct\";\n\tconst framework = getFrameworkById(primaryFramework ?? \"openclaw\");\n\tconst frameworkName = framework?.name ?? \"OpenClaw\";\n\tconst isOpenClaw = (primaryFramework ?? \"openclaw\") === \"openclaw\";\n\tconst sections: string[] = [];\n\n\t// ── Title & Description ─────────────────────────────────────────────────\n\n\tsections.push(`# ${projectName}\n\n> Self-hosted AI agent infrastructure powered by **${frameworkName}**${isOpenClaw ? \" — [openclaw.dev](https://openclaw.dev)\" : \"\"}.\n\nThis project provides a fully configured Docker Compose stack with ${resolved.services.length} services, ready to deploy on any server.${isDirectInstall ? ` ${frameworkName} itself runs directly on the host (not in Docker).` : \"\"}\n${deploymentType === \"bare-metal\" && hasNativeServices ? `\\n\\n**Bare-metal (native + Docker):** Some services run natively on the host; the rest (including the ${frameworkName} gateway) run in Docker. Use the top-level \\`install.sh\\` or \\`install.ps1\\` to install/start native services first, then start the Docker stack.` : \"\"}\n\n---`);\n\n\t// ── Service Table ────────────────────────────────────────────────────────\n\n\tconst serviceRows = resolved.services\n\t\t.map(({ definition }) => {\n\t\t\tconst mainPort = definition.ports.find((p) => p.exposed);\n\t\t\tconst url = mainPort\n\t\t\t\t? domain\n\t\t\t\t\t? `https://${definition.id}.${domain}`\n\t\t\t\t\t: `http://localhost:${mainPort.host}`\n\t\t\t\t: \"N/A (internal)\";\n\t\t\treturn `| ${definition.icon} | **${definition.name}** | ${url} | ${definition.description} |`;\n\t\t})\n\t\t.join(\"\\n\");\n\n\tsections.push(`## Services\n\n| | Service | URL | Description |\n|---|---------|-----|-------------|\n${serviceRows}\n`);\n\n\t// ── Quick Start ──────────────────────────────────────────────────────────\n\n\tsections.push(`## Quick Start\n\n### Prerequisites\n\n- [Docker](https://docs.docker.com/get-docker/) (v24+)\n- [Docker Compose](https://docs.docker.com/compose/install/) (v2+)\n- At least ${Math.ceil(resolved.estimatedMemoryMB / 1024)}GB of RAM available\n${isDirectInstall ? \"- Node.js 22+ (installed automatically by the OpenClaw installer)\" : \"\"}\n\n### 1. Extract the ZIP\n\n\\`\\`\\`bash\nunzip ${projectName}.zip\ncd ${projectName}\n\\`\\`\\`\n\n### 2. Configure Environment\n\n\\`\\`\\`bash\ncp .env.example .env\n\\`\\`\\`\n\nEdit \\`.env\\` and update any values as needed. Secret values have been pre-generated — review and change them for production use.\n${\n\tisDirectInstall\n\t\t? `\n### 3. Install OpenClaw on the Host\n\n\\`\\`\\`bash\nchmod +x scripts/install-openclaw.sh\n./scripts/install-openclaw.sh\n\\`\\`\\`\n\nThis downloads and runs the official installer, which sets up Node.js 22+ and OpenClaw globally.\n\n### 4. Start Companion Services\n\n\\`\\`\\`bash\ndocker compose up -d\n\\`\\`\\`\n\n### 5. Run Onboarding\n\n\\`\\`\\`bash\nopenclaw onboard\n\\`\\`\\`\n`\n\t\t: `\n### 3. Start Services\n\n\\`\\`\\`bash\ndocker compose up -d\n\\`\\`\\`\n\nOr use the provided start script:\n\n\\`\\`\\`bash\nchmod +x scripts/*.sh\n./scripts/start.sh\n\\`\\`\\`\n\n### 4. Check Status\n\n\\`\\`\\`bash\ndocker compose ps\n\\`\\`\\`\n\n### 5. View Logs\n\n\\`\\`\\`bash\ndocker compose logs -f ${primaryFramework ?? \"openclaw\"}-gateway\n\\`\\`\\`\n`\n}\nAll services should show a healthy status within 1–2 minutes.\n`);\n\n\t// ── Docker Compose Profiles ──────────────────────────────────────────────\n\n\tsections.push(`## Using Docker Compose Profiles\n\nYour stack may include profile-based compose files for optional service groups. Only the base services start by default — use profiles to activate additional groups:\n\n\\`\\`\\`bash\n# Start base services only\ndocker compose up -d\n\n# Start base + AI services (Ollama, Open WebUI, etc.)\ndocker compose -f docker-compose.yml -f docker-compose.ai.yml --profile ai up -d\n\n# Start base + monitoring (Grafana, Prometheus, Uptime Kuma)\ndocker compose -f docker-compose.yml -f docker-compose.monitoring.yml --profile monitoring up -d\n\n# Start base + AI + dev tools\ndocker compose -f docker-compose.yml -f docker-compose.ai.yml -f docker-compose.tools.yml --profile ai --profile tools up -d\n\\`\\`\\`\n\nAvailable profile files (if generated):\n| File | Profile | Services |\n|------|---------|----------|\n| \\`docker-compose.ai.yml\\` | \\`ai\\` | AI models, chat UIs, LLM platforms |\n| \\`docker-compose.media.yml\\` | \\`media\\` | FFmpeg, Remotion, Motion Canvas |\n| \\`docker-compose.monitoring.yml\\` | \\`monitoring\\` | Grafana, Prometheus, Uptime Kuma, analytics |\n| \\`docker-compose.tools.yml\\` | \\`tools\\` | Gitea, code-server, Portainer, coding agents |\n| \\`docker-compose.social.yml\\` | \\`social\\` | Postiz, Mixpost |\n| \\`docker-compose.knowledge.yml\\` | \\`knowledge\\` | Outline, Paperless-ngx, NocoDB |\n| \\`docker-compose.communication.yml\\` | \\`communication\\` | Matrix, Rocket.Chat, Mattermost |\n`);\n\n\t// ── Service URLs & Ports ─────────────────────────────────────────────────\n\n\tconst portRows = resolved.services\n\t\t.filter(({ definition }) => definition.ports.length > 0)\n\t\t.map(({ definition }) => {\n\t\t\tconst ports = definition.ports\n\t\t\t\t.map((p) => `\\`${p.host}\\` → \\`${p.container}\\` (${p.description})`)\n\t\t\t\t.join(\", \");\n\t\t\treturn `| ${definition.icon} ${definition.name} | ${ports} |`;\n\t\t})\n\t\t.join(\"\\n\");\n\n\tif (portRows) {\n\t\tsections.push(`## Ports\n\n| Service | Ports |\n|---------|-------|\n${portRows}\n`);\n\t}\n\n\t// ── Skill Packs ─────────────────────────────────────────────────────────\n\n\tconst allSkills = resolved.services.flatMap(({ definition }) =>\n\t\tdefinition.skills.map((s) => ({\n\t\t\tskillId: s.skillId,\n\t\t\tserviceName: definition.name,\n\t\t\tserviceIcon: definition.icon,\n\t\t})),\n\t);\n\n\tif (allSkills.length > 0) {\n\t\tconst skillRows = allSkills\n\t\t\t.map((s) => `| \\`${s.skillId}\\` | ${s.serviceIcon} ${s.serviceName} |`)\n\t\t\t.join(\"\\n\");\n\n\t\tsections.push(`## Skills\n\nThe following OpenClaw skills are automatically installed:\n\n| Skill | Service |\n|-------|---------|\n${skillRows}\n\nSkills are located in \\`openclaw/workspace/skills/\\`. Each skill provides a \\`SKILL.md\\` with usage instructions.\n`);\n\t}\n\n\t// ── AI Memory Integration ──────────────────────────────────────────────\n\n\tconst memoryServiceIds = [\"mem0\", \"memu\", \"hindsight\"];\n\tconst vectorDbIds = [\"qdrant\", \"chromadb\", \"weaviate\", \"milvus\"];\n\n\tconst memoryServices = resolved.services.filter(({ definition }) =>\n\t\tmemoryServiceIds.includes(definition.id),\n\t);\n\tconst vectorDbs = resolved.services.filter(({ definition }) =>\n\t\tvectorDbIds.includes(definition.id),\n\t);\n\n\tif (memoryServices.length > 0 || vectorDbs.length > 0) {\n\t\tlet memSection = `## AI Memory Integration\n\nThis stack includes integrated AI memory services. The ${frameworkName} agent framework is automatically configured to use them via \\`openclaw/config/openclaw.json\\`.\n`;\n\n\t\tif (memoryServices.length > 0) {\n\t\t\tconst memList = memoryServices\n\t\t\t\t.map(\n\t\t\t\t\t({ definition }) =>\n\t\t\t\t\t\t`- ${definition.icon} **${definition.name}** — ${definition.description.split(\".\")[0]}`,\n\t\t\t\t)\n\t\t\t\t.join(\"\\n\");\n\t\t\tmemSection += `\n### Memory Services\n\n${memList}\n`;\n\t\t}\n\n\t\tif (vectorDbs.length > 0) {\n\t\t\tconst vecList = vectorDbs\n\t\t\t\t.map(\n\t\t\t\t\t({ definition }) =>\n\t\t\t\t\t\t`- ${definition.icon} **${definition.name}** — ${definition.description.split(\".\")[0]}`,\n\t\t\t\t)\n\t\t\t\t.join(\"\\n\");\n\t\t\tmemSection += `\n### Vector Databases\n\n${vecList}\n`;\n\t\t}\n\n\t\tmemSection += `\nSkills for interacting with these services are in \\`openclaw/workspace/skills/\\`.\n`;\n\n\t\tsections.push(memSection);\n\t}\n\n\t// ── Onboarding & Channels ──────────────────────────────────────────────\n\t// Only show OpenClaw-specific onboarding instructions for OpenClaw stacks\n\n\tif (isOpenClaw && isDirectInstall) {\n\t\tsections.push(`## OpenClaw Setup\n\nOpenClaw is installed directly on the host (not in Docker). After running the install script:\\n\n\\`\\`\\`bash\n# Run onboarding to configure the gateway\nopenclaw onboard\n\n# Launch the dashboard\nopenclaw dashboard\n\\`\\`\\`\n\nWhen prompted during onboarding:\n- **Gateway bind:** \\`lan\\`\n- **Gateway auth:** \\`token\\`\n- **Gateway token:** (use the value from \\`.env\\` → \\`OPENCLAW_GATEWAY_TOKEN\\`)\n\n### Connect Messaging Channels (optional)\n\n\\`\\`\\`bash\n# WhatsApp (scan QR code)\nopenclaw channels login\n\n# Telegram\nopenclaw channels add --channel telegram --token <BOT_TOKEN>\n\n# Discord\nopenclaw channels add --channel discord --token <BOT_TOKEN>\n\\`\\`\\`\n\nSee [Channel Docs](https://docs.openclaw.ai/channels) for more providers.\n`);\n\t} else if (isOpenClaw) {\n\t\tsections.push(`## Onboarding & Channel Setup\n\nAfter starting the stack, complete the gateway onboarding:\n\n\\`\\`\\`bash\n# Interactive onboarding (sets up gateway auth and config)\ndocker compose run --rm openclaw-cli onboard --no-install-daemon\n\\`\\`\\`\n\nWhen prompted:\n- **Gateway bind:** \\`lan\\`\n- **Gateway auth:** \\`token\\`\n- **Gateway token:** (use the value from \\`.env\\` → \\`OPENCLAW_GATEWAY_TOKEN\\`)\n- **Tailscale exposure:** Off\n- **Install Gateway daemon:** No\n\n### Connect Messaging Channels (optional)\n\n\\`\\`\\`bash\n# WhatsApp (scan QR code)\ndocker compose run --rm openclaw-cli channels login\n\n# Telegram\ndocker compose run --rm openclaw-cli channels add --channel telegram --token <BOT_TOKEN>\n\n# Discord\ndocker compose run --rm openclaw-cli channels add --channel discord --token <BOT_TOKEN>\n\\`\\`\\`\n\nSee [Channel Docs](https://docs.openclaw.ai/channels) for more providers.\n`);\n\t}\n\n\t// ── Proxy Configuration ─────────────────────────────────────────────────\n\n\tif (proxy && proxy !== \"none\") {\n\t\tconst proxyName = proxy === \"caddy\" ? \"Caddy\" : \"Traefik\";\n\t\tsections.push(`## Reverse Proxy\n\nThis stack uses **${proxyName}** as a reverse proxy.${domain ? ` All services are available under \\`${domain}\\`.` : \"\"}\n\n${proxy === \"caddy\" ? \"The Caddyfile is located at `config/Caddyfile`.\" : \"Traefik configuration is handled via Docker labels.\"}\n`);\n\t}\n\n\t// ── Scripts ──────────────────────────────────────────────────────────────\n\n\tsections.push(`## Management Scripts\n\n\\`\\`\\`bash\nchmod +x scripts/*.sh # Make scripts executable (first time only)\n\\`\\`\\`\n\n| Script | Description |\n|--------|-------------|\n| \\`./scripts/start.sh\\` | Validates .env, auto-generates gateway token, creates dirs, starts all services with health checks |\n| \\`./scripts/stop.sh\\` | Gracefully stops all services |\n| \\`./scripts/update.sh\\` | Pulls latest Docker images and restarts services |\n| \\`./scripts/backup.sh\\` | Backs up all named Docker volumes to timestamped archives |\n| \\`./scripts/status.sh\\` | Shows current service status, resource usage, and disk |\n`);\n\n\t// ── Data & Volumes ──────────────────────────────────────────────────────\n\n\tconst volumeRows = resolved.services.flatMap(({ definition }) =>\n\t\tdefinition.volumes.map((v) => ({\n\t\t\tname: v.name,\n\t\t\tpath: v.containerPath,\n\t\t\tdescription: v.description,\n\t\t\tserviceName: definition.name,\n\t\t})),\n\t);\n\n\tif (volumeRows.length > 0) {\n\t\tconst rows = volumeRows\n\t\t\t.map((v) => `| \\`${v.name}\\` | ${v.serviceName} | ${v.description} |`)\n\t\t\t.join(\"\\n\");\n\n\t\tsections.push(`## Volumes\n\n| Volume | Service | Description |\n|--------|---------|-------------|\n${rows}\n\n> **Tip:** Use \\`scripts/backup.sh\\` to back up all volumes before updates.\n`);\n\t}\n\n\t// ── Estimated Resources ─────────────────────────────────────────────────\n\n\tsections.push(`## Resource Estimates\n\n- **Services:** ${resolved.services.length}\n- **Estimated RAM:** ~${(resolved.estimatedMemoryMB / 1024).toFixed(1)}GB\n- **Recommended minimum:** ${Math.ceil(resolved.estimatedMemoryMB / 1024) + 2}GB RAM\n`);\n\n\t// ── Warnings ─────────────────────────────────────────────────────────────\n\n\tif (resolved.warnings.length > 0) {\n\t\tconst warningList = resolved.warnings.map((w) => `- ⚠️ ${w.message}`).join(\"\\n\");\n\n\t\tsections.push(`## Warnings\n\n${warningList}\n`);\n\t}\n\n\t// ── Footer ──────────────────────────────────────────────────────────────\n\n\tsections.push(`---\n\nGenerated by [better-openclaw](https://better-openclaw.dev) • ${new Date().toISOString().split(\"T\")[0]}\nDeploy without managing servers: [Clawexa Cloud](https://clawexa.net)\n`);\n\n\treturn sections.join(\"\\n\");\n}\n"],"mappings":";;;;;;;;;;AA0BA,SAAgB,eAAe,UAA0B,SAAgC;CACxF,MAAM,EACL,aACA,QACA,OACA,gBACA,mBACA,uBACA,qBACG;CACJ,MAAM,kBAAkB,0BAA0B;CAElD,MAAM,gBADYA,4BAAAA,iBAAiB,oBAAoB,WAAW,EACjC,QAAQ;CACzC,MAAM,cAAc,oBAAoB,gBAAgB;CACxD,MAAM,WAAqB,EAAE;AAI7B,UAAS,KAAK,KAAK,YAAY;;qDAEqB,cAAc,IAAI,aAAa,4CAA4C,GAAG;;qEAE9D,SAAS,SAAS,OAAO,2CAA2C,kBAAkB,IAAI,cAAc,sDAAsD,GAAG;EACpO,mBAAmB,gBAAgB,oBAAoB,yGAAyG,cAAc,qJAAqJ,GAAG;;KAEnU;CAIJ,MAAM,cAAc,SAAS,SAC3B,KAAK,EAAE,iBAAiB;EACxB,MAAM,WAAW,WAAW,MAAM,MAAM,MAAM,EAAE,QAAQ;EACxD,MAAM,MAAM,WACT,SACC,WAAW,WAAW,GAAG,GAAG,WAC5B,oBAAoB,SAAS,SAC9B;AACH,SAAO,KAAK,WAAW,KAAK,OAAO,WAAW,KAAK,OAAO,IAAI,KAAK,WAAW,YAAY;GACzF,CACD,KAAK,KAAK;AAEZ,UAAS,KAAK;;;;EAIb,YAAY;EACZ;AAID,UAAS,KAAK;;;;;;aAMF,KAAK,KAAK,SAAS,oBAAoB,KAAK,CAAC;EACxD,kBAAkB,sEAAsE,GAAG;;;;;QAKrF,YAAY;KACf,YAAY;;;;;;;;;;EAWhB,kBACG;;;;;;;;;;;;;;;;;;;;;IAsBA;;;;;;;;;;;;;;;;;;;;;;;yBAuBqB,oBAAoB,WAAW;;EAGvD;;EAEC;AAID,UAAS,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA4Bb;CAID,MAAM,WAAW,SAAS,SACxB,QAAQ,EAAE,iBAAiB,WAAW,MAAM,SAAS,EAAE,CACvD,KAAK,EAAE,iBAAiB;EACxB,MAAM,QAAQ,WAAW,MACvB,KAAK,MAAM,KAAK,EAAE,KAAK,SAAS,EAAE,UAAU,MAAM,EAAE,YAAY,GAAG,CACnE,KAAK,KAAK;AACZ,SAAO,KAAK,WAAW,KAAK,GAAG,WAAW,KAAK,KAAK,MAAM;GACzD,CACD,KAAK,KAAK;AAEZ,KAAI,SACH,UAAS,KAAK;;;;EAId,SAAS;EACT;CAKD,MAAM,YAAY,SAAS,SAAS,SAAS,EAAE,iBAC9C,WAAW,OAAO,KAAK,OAAO;EAC7B,SAAS,EAAE;EACX,aAAa,WAAW;EACxB,aAAa,WAAW;EACxB,EAAE,CACH;AAED,KAAI,UAAU,SAAS,GAAG;EACzB,MAAM,YAAY,UAChB,KAAK,MAAM,OAAO,EAAE,QAAQ,OAAO,EAAE,YAAY,GAAG,EAAE,YAAY,IAAI,CACtE,KAAK,KAAK;AAEZ,WAAS,KAAK;;;;;;EAMd,UAAU;;;EAGV;;CAKD,MAAM,mBAAmB;EAAC;EAAQ;EAAQ;EAAY;CACtD,MAAM,cAAc;EAAC;EAAU;EAAY;EAAY;EAAS;CAEhE,MAAM,iBAAiB,SAAS,SAAS,QAAQ,EAAE,iBAClD,iBAAiB,SAAS,WAAW,GAAG,CACxC;CACD,MAAM,YAAY,SAAS,SAAS,QAAQ,EAAE,iBAC7C,YAAY,SAAS,WAAW,GAAG,CACnC;AAED,KAAI,eAAe,SAAS,KAAK,UAAU,SAAS,GAAG;EACtD,IAAI,aAAa;;yDAEsC,cAAc;;AAGrE,MAAI,eAAe,SAAS,GAAG;GAC9B,MAAM,UAAU,eACd,KACC,EAAE,iBACF,KAAK,WAAW,KAAK,KAAK,WAAW,KAAK,OAAO,WAAW,YAAY,MAAM,IAAI,CAAC,KACpF,CACA,KAAK,KAAK;AACZ,iBAAc;;;EAGf,QAAQ;;;AAIR,MAAI,UAAU,SAAS,GAAG;GACzB,MAAM,UAAU,UACd,KACC,EAAE,iBACF,KAAK,WAAW,KAAK,KAAK,WAAW,KAAK,OAAO,WAAW,YAAY,MAAM,IAAI,CAAC,KACpF,CACA,KAAK,KAAK;AACZ,iBAAc;;;EAGf,QAAQ;;;AAIR,gBAAc;;;AAId,WAAS,KAAK,WAAW;;AAM1B,KAAI,cAAc,gBACjB,UAAS,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8Bd;UACU,WACV,UAAS,KAAK;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EA8Bd;AAKD,KAAI,SAAS,UAAU,QAAQ;EAC9B,MAAM,YAAY,UAAU,UAAU,UAAU;AAChD,WAAS,KAAK;;oBAEI,UAAU,wBAAwB,SAAS,uCAAuC,OAAO,OAAO,GAAG;;EAErH,UAAU,UAAU,oDAAoD,sDAAsD;EAC9H;;AAKD,UAAS,KAAK;;;;;;;;;;;;;EAab;CAID,MAAM,aAAa,SAAS,SAAS,SAAS,EAAE,iBAC/C,WAAW,QAAQ,KAAK,OAAO;EAC9B,MAAM,EAAE;EACR,MAAM,EAAE;EACR,aAAa,EAAE;EACf,aAAa,WAAW;EACxB,EAAE,CACH;AAED,KAAI,WAAW,SAAS,GAAG;EAC1B,MAAM,OAAO,WACX,KAAK,MAAM,OAAO,EAAE,KAAK,OAAO,EAAE,YAAY,KAAK,EAAE,YAAY,IAAI,CACrE,KAAK,KAAK;AAEZ,WAAS,KAAK;;;;EAId,KAAK;;;EAGL;;AAKD,UAAS,KAAK;;kBAEG,SAAS,SAAS,OAAO;yBAClB,SAAS,oBAAoB,MAAM,QAAQ,EAAE,CAAC;6BAC1C,KAAK,KAAK,SAAS,oBAAoB,KAAK,GAAG,EAAE;EAC5E;AAID,KAAI,SAAS,SAAS,SAAS,GAAG;EACjC,MAAM,cAAc,SAAS,SAAS,KAAK,MAAM,QAAQ,EAAE,UAAU,CAAC,KAAK,KAAK;AAEhF,WAAS,KAAK;;EAEd,YAAY;EACZ;;AAKD,UAAS,KAAK;;iFAEiD,IAAI,MAAM,EAAC,aAAa,CAAC,MAAM,IAAI,CAAC,GAAG;;EAErG;AAED,QAAO,SAAS,KAAK,KAAK"}
@@ -1,4 +1,4 @@
1
- import { ResolverOutput } from "../types.cjs";
1
+ import { B as ResolverOutput } from "../types-Bsn0XzSP.cjs";
2
2
 
3
3
  //#region src/generators/readme.d.ts
4
4
  /**
@@ -14,6 +14,8 @@ interface ReadmeOptions {
14
14
  hasNativeServices?: boolean;
15
15
  /** How OpenClaw itself is installed: docker (container) or direct (host). */
16
16
  openclawInstallMethod?: "docker" | "direct";
17
+ /** Primary agent framework (defaults to "openclaw"). */
18
+ primaryFramework?: string;
17
19
  }
18
20
  /**
19
21
  * Generates a comprehensive README.md for the OpenClaw project.
@@ -1 +1 @@
1
- {"version":3,"file":"readme.d.cts","names":[],"sources":["../../src/generators/readme.ts"],"mappings":";;;;;AAKA;UAAiB,aAAA;EAChB,WAAA;EACA,MAAA;EACA,KAAA;EADA;EAGA,cAAA;EAAA;EAEA,iBAAA;EAEA;EAAA,qBAAA;AAAA;AASD;;;;;;AAAA,iBAAgB,cAAA,CAAe,QAAA,EAAU,cAAA,EAAgB,OAAA,EAAS,aAAA"}
1
+ {"version":3,"file":"readme.d.cts","names":[],"sources":["../../src/generators/readme.ts"],"mappings":";;;;;AAMA;UAAiB,aAAA;EAChB,WAAA;EACA,MAAA;EACA,KAAA;EADA;EAGA,cAAA;EAAA;EAEA,iBAAA;EAEA;EAAA,qBAAA;EAEgB;EAAhB,gBAAA;AAAA;;;;;;;iBASe,cAAA,CAAe,QAAA,EAAU,cAAA,EAAgB,OAAA,EAAS,aAAA"}
@@ -1,4 +1,4 @@
1
- import { ResolverOutput } from "../types.mjs";
1
+ import { B as ResolverOutput } from "../types-DwTKyCZ9.mjs";
2
2
 
3
3
  //#region src/generators/readme.d.ts
4
4
  /**
@@ -14,6 +14,8 @@ interface ReadmeOptions {
14
14
  hasNativeServices?: boolean;
15
15
  /** How OpenClaw itself is installed: docker (container) or direct (host). */
16
16
  openclawInstallMethod?: "docker" | "direct";
17
+ /** Primary agent framework (defaults to "openclaw"). */
18
+ primaryFramework?: string;
17
19
  }
18
20
  /**
19
21
  * Generates a comprehensive README.md for the OpenClaw project.
@@ -1 +1 @@
1
- {"version":3,"file":"readme.d.mts","names":[],"sources":["../../src/generators/readme.ts"],"mappings":";;;;;;UAKiB,aAAA;EAChB,WAAA;EACA,MAAA;EACA,KAAA;EAFA;EAIA,cAAA;EAFA;EAIA,iBAAA;EAAA;EAEA,qBAAA;AAAA;;AASD;;;;;iBAAgB,cAAA,CAAe,QAAA,EAAU,cAAA,EAAgB,OAAA,EAAS,aAAA"}
1
+ {"version":3,"file":"readme.d.mts","names":[],"sources":["../../src/generators/readme.ts"],"mappings":";;;;;;UAMiB,aAAA;EAChB,WAAA;EACA,MAAA;EACA,KAAA;EAFA;EAIA,cAAA;EAFA;EAIA,iBAAA;EAAA;EAEA,qBAAA;EAEA;EAAA,gBAAA;AAAA;AASD;;;;;;AAAA,iBAAgB,cAAA,CAAe,QAAA,EAAU,cAAA,EAAgB,OAAA,EAAS,aAAA"}