@better-openclaw/core 1.0.23 → 1.0.25

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 (335) hide show
  1. package/dist/addon-stack.cjs +673 -0
  2. package/dist/addon-stack.cjs.map +1 -0
  3. package/dist/addon-stack.d.cts +23 -0
  4. package/dist/addon-stack.d.cts.map +1 -0
  5. package/dist/addon-stack.d.mts +23 -0
  6. package/dist/addon-stack.d.mts.map +1 -0
  7. package/dist/addon-stack.mjs +671 -0
  8. package/dist/addon-stack.mjs.map +1 -0
  9. package/dist/addon-stack.test.cjs +349 -0
  10. package/dist/addon-stack.test.cjs.map +1 -0
  11. package/dist/addon-stack.test.d.cts +1 -0
  12. package/dist/addon-stack.test.d.mts +1 -0
  13. package/dist/addon-stack.test.mjs +349 -0
  14. package/dist/addon-stack.test.mjs.map +1 -0
  15. package/dist/bare-metal-partition.test.cjs +20 -21
  16. package/dist/bare-metal-partition.test.cjs.map +1 -1
  17. package/dist/bare-metal-partition.test.mjs +4 -5
  18. package/dist/bare-metal-partition.test.mjs.map +1 -1
  19. package/dist/composer.cjs +17 -1
  20. package/dist/composer.cjs.map +1 -1
  21. package/dist/composer.d.cts +24 -1
  22. package/dist/composer.d.cts.map +1 -1
  23. package/dist/composer.d.mts +24 -1
  24. package/dist/composer.d.mts.map +1 -1
  25. package/dist/composer.mjs +14 -2
  26. package/dist/composer.mjs.map +1 -1
  27. package/dist/composer.snapshot.test.cjs +20 -20
  28. package/dist/composer.snapshot.test.cjs.map +1 -1
  29. package/dist/composer.snapshot.test.mjs +2 -2
  30. package/dist/composer.test.cjs +53 -52
  31. package/dist/composer.test.cjs.map +1 -1
  32. package/dist/composer.test.mjs +4 -3
  33. package/dist/composer.test.mjs.map +1 -1
  34. package/dist/deployers/strip-host-ports.test.cjs +26 -26
  35. package/dist/deployers/strip-host-ports.test.cjs.map +1 -1
  36. package/dist/deployers/strip-host-ports.test.mjs +1 -1
  37. package/dist/generate.cjs +8 -4
  38. package/dist/generate.cjs.map +1 -1
  39. package/dist/generate.d.cts.map +1 -1
  40. package/dist/generate.d.mts.map +1 -1
  41. package/dist/generate.mjs +9 -5
  42. package/dist/generate.mjs.map +1 -1
  43. package/dist/generate.test.cjs +55 -55
  44. package/dist/generate.test.cjs.map +1 -1
  45. package/dist/generate.test.mjs +2 -2
  46. package/dist/generate.test.mjs.map +1 -1
  47. package/dist/generators/bare-metal-install.test.cjs +18 -18
  48. package/dist/generators/bare-metal-install.test.cjs.map +1 -1
  49. package/dist/generators/bare-metal-install.test.mjs +1 -1
  50. package/dist/generators/caddy.test.cjs +13 -13
  51. package/dist/generators/caddy.test.cjs.map +1 -1
  52. package/dist/generators/caddy.test.mjs +1 -1
  53. package/dist/generators/clone-repos.cjs +140 -0
  54. package/dist/generators/clone-repos.cjs.map +1 -0
  55. package/dist/generators/clone-repos.d.cts +11 -0
  56. package/dist/generators/clone-repos.d.cts.map +1 -0
  57. package/dist/generators/clone-repos.d.mts +11 -0
  58. package/dist/generators/clone-repos.d.mts.map +1 -0
  59. package/dist/generators/clone-repos.mjs +139 -0
  60. package/dist/generators/clone-repos.mjs.map +1 -0
  61. package/dist/generators/clone-repos.test.cjs +140 -0
  62. package/dist/generators/clone-repos.test.cjs.map +1 -0
  63. package/dist/generators/clone-repos.test.d.cts +1 -0
  64. package/dist/generators/clone-repos.test.d.mts +1 -0
  65. package/dist/generators/clone-repos.test.mjs +141 -0
  66. package/dist/generators/clone-repos.test.mjs.map +1 -0
  67. package/dist/generators/env.test.cjs +17 -17
  68. package/dist/generators/env.test.cjs.map +1 -1
  69. package/dist/generators/env.test.mjs +1 -1
  70. package/dist/generators/health-check.test.cjs +39 -39
  71. package/dist/generators/health-check.test.cjs.map +1 -1
  72. package/dist/generators/health-check.test.mjs +1 -1
  73. package/dist/generators/postgres-init.cjs +20 -0
  74. package/dist/generators/postgres-init.cjs.map +1 -1
  75. package/dist/generators/postgres-init.d.cts.map +1 -1
  76. package/dist/generators/postgres-init.d.mts.map +1 -1
  77. package/dist/generators/postgres-init.mjs +20 -0
  78. package/dist/generators/postgres-init.mjs.map +1 -1
  79. package/dist/generators/scripts.cjs +332 -3
  80. package/dist/generators/scripts.cjs.map +1 -1
  81. package/dist/generators/scripts.d.cts +3 -1
  82. package/dist/generators/scripts.d.cts.map +1 -1
  83. package/dist/generators/scripts.d.mts +3 -1
  84. package/dist/generators/scripts.d.mts.map +1 -1
  85. package/dist/generators/scripts.mjs +332 -3
  86. package/dist/generators/scripts.mjs.map +1 -1
  87. package/dist/generators/scripts.test.cjs +57 -23
  88. package/dist/generators/scripts.test.cjs.map +1 -1
  89. package/dist/generators/scripts.test.mjs +39 -5
  90. package/dist/generators/scripts.test.mjs.map +1 -1
  91. package/dist/generators/stack-manifest.cjs +1 -0
  92. package/dist/generators/stack-manifest.cjs.map +1 -1
  93. package/dist/generators/stack-manifest.d.cts +3 -2
  94. package/dist/generators/stack-manifest.d.cts.map +1 -1
  95. package/dist/generators/stack-manifest.d.mts +3 -2
  96. package/dist/generators/stack-manifest.d.mts.map +1 -1
  97. package/dist/generators/stack-manifest.mjs +1 -0
  98. package/dist/generators/stack-manifest.mjs.map +1 -1
  99. package/dist/generators/traefik.test.cjs +32 -32
  100. package/dist/generators/traefik.test.cjs.map +1 -1
  101. package/dist/generators/traefik.test.mjs +1 -1
  102. package/dist/index.cjs +28 -5
  103. package/dist/index.d.cts +7 -4
  104. package/dist/index.d.mts +7 -4
  105. package/dist/index.mjs +10 -7
  106. package/dist/migrations.test.cjs +16 -16
  107. package/dist/migrations.test.cjs.map +1 -1
  108. package/dist/migrations.test.mjs +1 -1
  109. package/dist/presets/registry.cjs.map +1 -1
  110. package/dist/presets/registry.d.cts.map +1 -1
  111. package/dist/presets/registry.d.mts.map +1 -1
  112. package/dist/presets/registry.mjs.map +1 -1
  113. package/dist/presets/registry.test.cjs +14 -14
  114. package/dist/presets/registry.test.cjs.map +1 -1
  115. package/dist/presets/registry.test.mjs +1 -1
  116. package/dist/resolver.cjs +8 -0
  117. package/dist/resolver.cjs.map +1 -1
  118. package/dist/resolver.mjs +9 -1
  119. package/dist/resolver.mjs.map +1 -1
  120. package/dist/resolver.test.cjs +125 -90
  121. package/dist/resolver.test.cjs.map +1 -1
  122. package/dist/resolver.test.mjs +47 -12
  123. package/dist/resolver.test.mjs.map +1 -1
  124. package/dist/{schema-B4c64P8N.d.cts → schema-CKBRu-Rt.d.cts} +355 -8
  125. package/dist/schema-CKBRu-Rt.d.cts.map +1 -0
  126. package/dist/{schema-CXNhYci1.d.mts → schema-Dn-_Jpb6.d.mts} +355 -8
  127. package/dist/schema-Dn-_Jpb6.d.mts.map +1 -0
  128. package/dist/schema.cjs +160 -5
  129. package/dist/schema.cjs.map +1 -1
  130. package/dist/schema.d.cts +2 -2
  131. package/dist/schema.d.mts +2 -2
  132. package/dist/schema.mjs +150 -6
  133. package/dist/schema.mjs.map +1 -1
  134. package/dist/schema.test.cjs +86 -86
  135. package/dist/schema.test.cjs.map +1 -1
  136. package/dist/schema.test.mjs +1 -1
  137. package/dist/services/definitions/apptension-saas.cjs +87 -0
  138. package/dist/services/definitions/apptension-saas.cjs.map +1 -0
  139. package/dist/services/definitions/apptension-saas.d.cts +7 -0
  140. package/dist/services/definitions/apptension-saas.d.cts.map +1 -0
  141. package/dist/services/definitions/apptension-saas.d.mts +7 -0
  142. package/dist/services/definitions/apptension-saas.d.mts.map +1 -0
  143. package/dist/services/definitions/apptension-saas.mjs +86 -0
  144. package/dist/services/definitions/apptension-saas.mjs.map +1 -0
  145. package/dist/services/definitions/boxyhq-saas.cjs +88 -0
  146. package/dist/services/definitions/boxyhq-saas.cjs.map +1 -0
  147. package/dist/services/definitions/boxyhq-saas.d.cts +7 -0
  148. package/dist/services/definitions/boxyhq-saas.d.cts.map +1 -0
  149. package/dist/services/definitions/boxyhq-saas.d.mts +7 -0
  150. package/dist/services/definitions/boxyhq-saas.d.mts.map +1 -0
  151. package/dist/services/definitions/boxyhq-saas.mjs +87 -0
  152. package/dist/services/definitions/boxyhq-saas.mjs.map +1 -0
  153. package/dist/services/definitions/browserless.cjs +4 -1
  154. package/dist/services/definitions/browserless.cjs.map +1 -1
  155. package/dist/services/definitions/browserless.mjs +4 -1
  156. package/dist/services/definitions/browserless.mjs.map +1 -1
  157. package/dist/services/definitions/cmsaas-starter.cjs +86 -0
  158. package/dist/services/definitions/cmsaas-starter.cjs.map +1 -0
  159. package/dist/services/definitions/cmsaas-starter.d.cts +7 -0
  160. package/dist/services/definitions/cmsaas-starter.d.cts.map +1 -0
  161. package/dist/services/definitions/cmsaas-starter.d.mts +7 -0
  162. package/dist/services/definitions/cmsaas-starter.d.mts.map +1 -0
  163. package/dist/services/definitions/cmsaas-starter.mjs +85 -0
  164. package/dist/services/definitions/cmsaas-starter.mjs.map +1 -0
  165. package/dist/services/definitions/convex.cjs +43 -1
  166. package/dist/services/definitions/convex.cjs.map +1 -1
  167. package/dist/services/definitions/convex.mjs +43 -1
  168. package/dist/services/definitions/convex.mjs.map +1 -1
  169. package/dist/services/definitions/grafana.cjs +11 -1
  170. package/dist/services/definitions/grafana.cjs.map +1 -1
  171. package/dist/services/definitions/grafana.mjs +11 -1
  172. package/dist/services/definitions/grafana.mjs.map +1 -1
  173. package/dist/services/definitions/index.cjs +51 -36
  174. package/dist/services/definitions/index.cjs.map +1 -1
  175. package/dist/services/definitions/index.d.cts +30 -25
  176. package/dist/services/definitions/index.d.cts.map +1 -1
  177. package/dist/services/definitions/index.d.mts +30 -25
  178. package/dist/services/definitions/index.d.mts.map +1 -1
  179. package/dist/services/definitions/index.mjs +47 -37
  180. package/dist/services/definitions/index.mjs.map +1 -1
  181. package/dist/services/definitions/ixartz-saas.cjs +88 -0
  182. package/dist/services/definitions/ixartz-saas.cjs.map +1 -0
  183. package/dist/services/definitions/ixartz-saas.d.cts +7 -0
  184. package/dist/services/definitions/ixartz-saas.d.cts.map +1 -0
  185. package/dist/services/definitions/ixartz-saas.d.mts +7 -0
  186. package/dist/services/definitions/ixartz-saas.d.mts.map +1 -0
  187. package/dist/services/definitions/ixartz-saas.mjs +87 -0
  188. package/dist/services/definitions/ixartz-saas.mjs.map +1 -0
  189. package/dist/services/definitions/meilisearch.cjs +11 -1
  190. package/dist/services/definitions/meilisearch.cjs.map +1 -1
  191. package/dist/services/definitions/meilisearch.mjs +11 -1
  192. package/dist/services/definitions/meilisearch.mjs.map +1 -1
  193. package/dist/services/definitions/minio.cjs +3 -1
  194. package/dist/services/definitions/minio.cjs.map +1 -1
  195. package/dist/services/definitions/minio.mjs +3 -1
  196. package/dist/services/definitions/minio.mjs.map +1 -1
  197. package/dist/services/definitions/mission-control.cjs +16 -2
  198. package/dist/services/definitions/mission-control.cjs.map +1 -1
  199. package/dist/services/definitions/mission-control.mjs +16 -2
  200. package/dist/services/definitions/mission-control.mjs.map +1 -1
  201. package/dist/services/definitions/n8n.cjs +11 -1
  202. package/dist/services/definitions/n8n.cjs.map +1 -1
  203. package/dist/services/definitions/n8n.mjs +11 -1
  204. package/dist/services/definitions/n8n.mjs.map +1 -1
  205. package/dist/services/definitions/ollama.cjs +3 -1
  206. package/dist/services/definitions/ollama.cjs.map +1 -1
  207. package/dist/services/definitions/ollama.mjs +3 -1
  208. package/dist/services/definitions/ollama.mjs.map +1 -1
  209. package/dist/services/definitions/open-saas.cjs +81 -0
  210. package/dist/services/definitions/open-saas.cjs.map +1 -0
  211. package/dist/services/definitions/open-saas.d.cts +7 -0
  212. package/dist/services/definitions/open-saas.d.cts.map +1 -0
  213. package/dist/services/definitions/open-saas.d.mts +7 -0
  214. package/dist/services/definitions/open-saas.d.mts.map +1 -0
  215. package/dist/services/definitions/open-saas.mjs +80 -0
  216. package/dist/services/definitions/open-saas.mjs.map +1 -0
  217. package/dist/services/definitions/qdrant.cjs +3 -1
  218. package/dist/services/definitions/qdrant.cjs.map +1 -1
  219. package/dist/services/definitions/qdrant.mjs +3 -1
  220. package/dist/services/definitions/qdrant.mjs.map +1 -1
  221. package/dist/services/definitions/searxng.cjs +8 -1
  222. package/dist/services/definitions/searxng.cjs.map +1 -1
  223. package/dist/services/definitions/searxng.mjs +8 -1
  224. package/dist/services/definitions/searxng.mjs.map +1 -1
  225. package/dist/services/definitions/uptime-kuma.cjs +8 -1
  226. package/dist/services/definitions/uptime-kuma.cjs.map +1 -1
  227. package/dist/services/definitions/uptime-kuma.mjs +8 -1
  228. package/dist/services/definitions/uptime-kuma.mjs.map +1 -1
  229. package/dist/services/registry.cjs +3 -0
  230. package/dist/services/registry.cjs.map +1 -1
  231. package/dist/services/registry.d.cts.map +1 -1
  232. package/dist/services/registry.d.mts.map +1 -1
  233. package/dist/services/registry.mjs +3 -0
  234. package/dist/services/registry.mjs.map +1 -1
  235. package/dist/services/registry.test.cjs +40 -33
  236. package/dist/services/registry.test.cjs.map +1 -1
  237. package/dist/services/registry.test.mjs +8 -1
  238. package/dist/services/registry.test.mjs.map +1 -1
  239. package/dist/{skill-manifest-BVUXU0__.mjs → skill-manifest-6XhrhWsG.mjs} +49 -1
  240. package/dist/{skill-manifest--IgY9REK.cjs.map → skill-manifest-6XhrhWsG.mjs.map} +1 -1
  241. package/dist/{skill-manifest--IgY9REK.cjs → skill-manifest-B8znSsym.cjs} +49 -1
  242. package/dist/{skill-manifest-BVUXU0__.mjs.map → skill-manifest-B8znSsym.cjs.map} +1 -1
  243. package/dist/skills/registry.cjs +3 -3
  244. package/dist/skills/registry.cjs.map +1 -1
  245. package/dist/skills/registry.mjs +3 -3
  246. package/dist/skills/registry.mjs.map +1 -1
  247. package/dist/skills/skill-manifest.cjs +1 -1
  248. package/dist/skills/skill-manifest.mjs +1 -1
  249. package/dist/{vi.2VT5v0um-DvC3SVNc.mjs → test.CTcmp4Su-ClCHJ3FA.mjs} +6793 -6403
  250. package/dist/test.CTcmp4Su-ClCHJ3FA.mjs.map +1 -0
  251. package/dist/{vi.2VT5v0um-CRqXre87.cjs → test.CTcmp4Su-DlzTarwH.cjs} +6793 -6403
  252. package/dist/test.CTcmp4Su-DlzTarwH.cjs.map +1 -0
  253. package/dist/track-analytics.cjs +50 -0
  254. package/dist/track-analytics.cjs.map +1 -0
  255. package/dist/track-analytics.d.cts +34 -0
  256. package/dist/track-analytics.d.cts.map +1 -0
  257. package/dist/track-analytics.d.mts +34 -0
  258. package/dist/track-analytics.d.mts.map +1 -0
  259. package/dist/track-analytics.mjs +48 -0
  260. package/dist/track-analytics.mjs.map +1 -0
  261. package/dist/track-analytics.test.cjs +91 -0
  262. package/dist/track-analytics.test.cjs.map +1 -0
  263. package/dist/track-analytics.test.d.cts +1 -0
  264. package/dist/track-analytics.test.d.mts +1 -0
  265. package/dist/track-analytics.test.mjs +92 -0
  266. package/dist/track-analytics.test.mjs.map +1 -0
  267. package/dist/types.cjs +7 -0
  268. package/dist/types.cjs.map +1 -1
  269. package/dist/types.d.cts +12 -2
  270. package/dist/types.d.cts.map +1 -1
  271. package/dist/types.d.mts +12 -2
  272. package/dist/types.d.mts.map +1 -1
  273. package/dist/types.mjs +7 -0
  274. package/dist/types.mjs.map +1 -1
  275. package/dist/validator.test.cjs +15 -15
  276. package/dist/validator.test.cjs.map +1 -1
  277. package/dist/validator.test.mjs +2 -2
  278. package/dist/version-manager.cjs +1 -1
  279. package/dist/version-manager.cjs.map +1 -1
  280. package/dist/version-manager.mjs +1 -1
  281. package/dist/version-manager.mjs.map +1 -1
  282. package/dist/version-manager.test.cjs +40 -38
  283. package/dist/version-manager.test.cjs.map +1 -1
  284. package/dist/version-manager.test.mjs +7 -5
  285. package/dist/version-manager.test.mjs.map +1 -1
  286. package/package.json +4 -4
  287. package/src/__snapshots__/composer.snapshot.test.ts.snap +160 -0
  288. package/src/addon-stack.test.ts +490 -0
  289. package/src/addon-stack.ts +998 -0
  290. package/src/bare-metal-partition.test.ts +4 -3
  291. package/src/composer.test.ts +4 -2
  292. package/src/composer.ts +24 -5
  293. package/src/generate.test.ts +2 -1
  294. package/src/generate.ts +10 -1
  295. package/src/generators/clone-repos.test.ts +154 -0
  296. package/src/generators/clone-repos.ts +159 -0
  297. package/src/generators/postgres-init.ts +17 -0
  298. package/src/generators/scripts.test.ts +52 -4
  299. package/src/generators/scripts.ts +351 -3
  300. package/src/generators/stack-manifest.ts +4 -2
  301. package/src/index.ts +28 -2
  302. package/src/presets/registry.ts +241 -329
  303. package/src/resolver.test.ts +53 -15
  304. package/src/resolver.ts +13 -1
  305. package/src/schema.ts +216 -4
  306. package/src/services/definitions/apptension-saas.ts +84 -0
  307. package/src/services/definitions/boxyhq-saas.ts +84 -0
  308. package/src/services/definitions/browserless.ts +3 -0
  309. package/src/services/definitions/cmsaas-starter.ts +84 -0
  310. package/src/services/definitions/convex.ts +31 -0
  311. package/src/services/definitions/grafana.ts +9 -0
  312. package/src/services/definitions/index.ts +90 -70
  313. package/src/services/definitions/ixartz-saas.ts +84 -0
  314. package/src/services/definitions/meilisearch.ts +9 -0
  315. package/src/services/definitions/minio.ts +2 -0
  316. package/src/services/definitions/mission-control.ts +19 -2
  317. package/src/services/definitions/n8n.ts +9 -0
  318. package/src/services/definitions/ollama.ts +2 -0
  319. package/src/services/definitions/open-saas.ts +79 -0
  320. package/src/services/definitions/qdrant.ts +2 -0
  321. package/src/services/definitions/searxng.ts +3 -0
  322. package/src/services/definitions/uptime-kuma.ts +3 -0
  323. package/src/services/registry.test.ts +8 -0
  324. package/src/services/registry.ts +7 -0
  325. package/src/skills/manifest.json +64 -0
  326. package/src/skills/registry.ts +3 -3
  327. package/src/track-analytics.test.ts +82 -0
  328. package/src/track-analytics.ts +76 -0
  329. package/src/types.ts +29 -0
  330. package/src/version-manager.test.ts +10 -5
  331. package/src/version-manager.ts +1 -1
  332. package/dist/schema-B4c64P8N.d.cts.map +0 -1
  333. package/dist/schema-CXNhYci1.d.mts.map +0 -1
  334. package/dist/vi.2VT5v0um-CRqXre87.cjs.map +0 -1
  335. package/dist/vi.2VT5v0um-DvC3SVNc.mjs.map +0 -1
@@ -0,0 +1,88 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ //#region src/services/definitions/boxyhq-saas.ts
3
+ const boxyhqSaasDefinition = {
4
+ id: "boxyhq-saas",
5
+ name: "BoxyHQ Enterprise SaaS Starter",
6
+ description: "Enterprise-grade Next.js SaaS starter kit with SSO (SAML/OIDC), directory sync, audit logs, team management, Prisma ORM, Stripe billing, and PostgreSQL.",
7
+ category: "saas-boilerplate",
8
+ icon: "🚀",
9
+ gitSource: {
10
+ repoUrl: "https://github.com/boxyhq/saas-starter-kit.git",
11
+ branch: "main",
12
+ postCloneCommands: ["cp .env.example .env"]
13
+ },
14
+ buildContext: {
15
+ dockerfile: "Dockerfile",
16
+ context: "."
17
+ },
18
+ ports: [{
19
+ host: 3102,
20
+ container: 3e3,
21
+ description: "BoxyHQ SaaS web application",
22
+ exposed: true
23
+ }],
24
+ volumes: [],
25
+ environment: [
26
+ {
27
+ key: "BOXYHQ_SAAS_DB_PASSWORD",
28
+ defaultValue: "",
29
+ secret: true,
30
+ description: "Database password for BoxyHQ SaaS",
31
+ required: true
32
+ },
33
+ {
34
+ key: "DATABASE_URL",
35
+ defaultValue: "postgresql://boxyhqsaas:${BOXYHQ_SAAS_DB_PASSWORD}@postgresql:5432/boxyhqsaas",
36
+ secret: false,
37
+ description: "PostgreSQL connection string",
38
+ required: true
39
+ },
40
+ {
41
+ key: "NEXTAUTH_SECRET",
42
+ defaultValue: "",
43
+ secret: true,
44
+ description: "NextAuth.js session encryption secret",
45
+ required: true
46
+ },
47
+ {
48
+ key: "NEXTAUTH_URL",
49
+ defaultValue: "http://localhost:3102",
50
+ secret: false,
51
+ description: "NextAuth.js callback URL",
52
+ required: true
53
+ }
54
+ ],
55
+ healthcheck: {
56
+ test: "wget -q --spider http://localhost:3000/ || exit 1",
57
+ interval: "30s",
58
+ timeout: "10s",
59
+ retries: 3,
60
+ startPeriod: "60s"
61
+ },
62
+ dependsOn: ["postgresql"],
63
+ restartPolicy: "unless-stopped",
64
+ networks: ["openclaw-network"],
65
+ skills: [],
66
+ openclawEnvVars: [],
67
+ docsUrl: "https://github.com/boxyhq/saas-starter-kit#readme",
68
+ tags: [
69
+ "saas",
70
+ "boilerplate",
71
+ "nextjs",
72
+ "enterprise",
73
+ "sso",
74
+ "saml",
75
+ "stripe",
76
+ "prisma"
77
+ ],
78
+ maturity: "beta",
79
+ requires: ["postgresql"],
80
+ recommends: [],
81
+ conflictsWith: [],
82
+ minMemoryMB: 512,
83
+ gpuRequired: false
84
+ };
85
+ //#endregion
86
+ exports.boxyhqSaasDefinition = boxyhqSaasDefinition;
87
+
88
+ //# sourceMappingURL=boxyhq-saas.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boxyhq-saas.cjs","names":[],"sources":["../../../src/services/definitions/boxyhq-saas.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const boxyhqSaasDefinition: ServiceDefinition = {\n\tid: \"boxyhq-saas\",\n\tname: \"BoxyHQ Enterprise SaaS Starter\",\n\tdescription:\n\t\t\"Enterprise-grade Next.js SaaS starter kit with SSO (SAML/OIDC), directory sync, audit logs, team management, Prisma ORM, Stripe billing, and PostgreSQL.\",\n\tcategory: \"saas-boilerplate\",\n\ticon: \"🚀\",\n\n\tgitSource: {\n\t\trepoUrl: \"https://github.com/boxyhq/saas-starter-kit.git\",\n\t\tbranch: \"main\",\n\t\tpostCloneCommands: [\"cp .env.example .env\"],\n\t},\n\tbuildContext: {\n\t\tdockerfile: \"Dockerfile\",\n\t\tcontext: \".\",\n\t},\n\n\tports: [\n\t\t{\n\t\t\thost: 3102,\n\t\t\tcontainer: 3000,\n\t\t\tdescription: \"BoxyHQ SaaS web application\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"BOXYHQ_SAAS_DB_PASSWORD\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Database password for BoxyHQ SaaS\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"DATABASE_URL\",\n\t\t\tdefaultValue: \"postgresql://boxyhqsaas:${BOXYHQ_SAAS_DB_PASSWORD}@postgresql:5432/boxyhqsaas\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"PostgreSQL connection string\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"NEXTAUTH_SECRET\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"NextAuth.js session encryption secret\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"NEXTAUTH_URL\",\n\t\t\tdefaultValue: \"http://localhost:3102\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"NextAuth.js callback URL\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\thealthcheck: {\n\t\ttest: \"wget -q --spider http://localhost:3000/ || exit 1\",\n\t\tinterval: \"30s\",\n\t\ttimeout: \"10s\",\n\t\tretries: 3,\n\t\tstartPeriod: \"60s\",\n\t},\n\tdependsOn: [\"postgresql\"],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [],\n\topenclawEnvVars: [],\n\n\tdocsUrl: \"https://github.com/boxyhq/saas-starter-kit#readme\",\n\ttags: [\"saas\", \"boilerplate\", \"nextjs\", \"enterprise\", \"sso\", \"saml\", \"stripe\", \"prisma\"],\n\tmaturity: \"beta\",\n\n\trequires: [\"postgresql\"],\n\trecommends: [],\n\tconflictsWith: [],\n\n\tminMemoryMB: 512,\n\tgpuRequired: false,\n};\n"],"mappings":";;AAEA,MAAa,uBAA0C;CACtD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,WAAW;EACV,SAAS;EACT,QAAQ;EACR,mBAAmB,CAAC,uBAAuB;EAC3C;CACD,cAAc;EACb,YAAY;EACZ,SAAS;EACT;CAED,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,EAAE;CACX,aAAa;EACZ;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;CACD,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,CAAC,aAAa;CACzB,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,EAAE;CACV,iBAAiB,EAAE;CAEnB,SAAS;CACT,MAAM;EAAC;EAAQ;EAAe;EAAU;EAAc;EAAO;EAAQ;EAAU;EAAS;CACxF,UAAU;CAEV,UAAU,CAAC,aAAa;CACxB,YAAY,EAAE;CACd,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb"}
@@ -0,0 +1,7 @@
1
+ import { ServiceDefinition } from "../../types.cjs";
2
+
3
+ //#region src/services/definitions/boxyhq-saas.d.ts
4
+ declare const boxyhqSaasDefinition: ServiceDefinition;
5
+ //#endregion
6
+ export { boxyhqSaasDefinition };
7
+ //# sourceMappingURL=boxyhq-saas.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boxyhq-saas.d.cts","names":[],"sources":["../../../src/services/definitions/boxyhq-saas.ts"],"mappings":";;;cAEa,oBAAA,EAAsB,iBAAA"}
@@ -0,0 +1,7 @@
1
+ import { ServiceDefinition } from "../../types.mjs";
2
+
3
+ //#region src/services/definitions/boxyhq-saas.d.ts
4
+ declare const boxyhqSaasDefinition: ServiceDefinition;
5
+ //#endregion
6
+ export { boxyhqSaasDefinition };
7
+ //# sourceMappingURL=boxyhq-saas.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boxyhq-saas.d.mts","names":[],"sources":["../../../src/services/definitions/boxyhq-saas.ts"],"mappings":";;;cAEa,oBAAA,EAAsB,iBAAA"}
@@ -0,0 +1,87 @@
1
+ //#region src/services/definitions/boxyhq-saas.ts
2
+ const boxyhqSaasDefinition = {
3
+ id: "boxyhq-saas",
4
+ name: "BoxyHQ Enterprise SaaS Starter",
5
+ description: "Enterprise-grade Next.js SaaS starter kit with SSO (SAML/OIDC), directory sync, audit logs, team management, Prisma ORM, Stripe billing, and PostgreSQL.",
6
+ category: "saas-boilerplate",
7
+ icon: "🚀",
8
+ gitSource: {
9
+ repoUrl: "https://github.com/boxyhq/saas-starter-kit.git",
10
+ branch: "main",
11
+ postCloneCommands: ["cp .env.example .env"]
12
+ },
13
+ buildContext: {
14
+ dockerfile: "Dockerfile",
15
+ context: "."
16
+ },
17
+ ports: [{
18
+ host: 3102,
19
+ container: 3e3,
20
+ description: "BoxyHQ SaaS web application",
21
+ exposed: true
22
+ }],
23
+ volumes: [],
24
+ environment: [
25
+ {
26
+ key: "BOXYHQ_SAAS_DB_PASSWORD",
27
+ defaultValue: "",
28
+ secret: true,
29
+ description: "Database password for BoxyHQ SaaS",
30
+ required: true
31
+ },
32
+ {
33
+ key: "DATABASE_URL",
34
+ defaultValue: "postgresql://boxyhqsaas:${BOXYHQ_SAAS_DB_PASSWORD}@postgresql:5432/boxyhqsaas",
35
+ secret: false,
36
+ description: "PostgreSQL connection string",
37
+ required: true
38
+ },
39
+ {
40
+ key: "NEXTAUTH_SECRET",
41
+ defaultValue: "",
42
+ secret: true,
43
+ description: "NextAuth.js session encryption secret",
44
+ required: true
45
+ },
46
+ {
47
+ key: "NEXTAUTH_URL",
48
+ defaultValue: "http://localhost:3102",
49
+ secret: false,
50
+ description: "NextAuth.js callback URL",
51
+ required: true
52
+ }
53
+ ],
54
+ healthcheck: {
55
+ test: "wget -q --spider http://localhost:3000/ || exit 1",
56
+ interval: "30s",
57
+ timeout: "10s",
58
+ retries: 3,
59
+ startPeriod: "60s"
60
+ },
61
+ dependsOn: ["postgresql"],
62
+ restartPolicy: "unless-stopped",
63
+ networks: ["openclaw-network"],
64
+ skills: [],
65
+ openclawEnvVars: [],
66
+ docsUrl: "https://github.com/boxyhq/saas-starter-kit#readme",
67
+ tags: [
68
+ "saas",
69
+ "boilerplate",
70
+ "nextjs",
71
+ "enterprise",
72
+ "sso",
73
+ "saml",
74
+ "stripe",
75
+ "prisma"
76
+ ],
77
+ maturity: "beta",
78
+ requires: ["postgresql"],
79
+ recommends: [],
80
+ conflictsWith: [],
81
+ minMemoryMB: 512,
82
+ gpuRequired: false
83
+ };
84
+ //#endregion
85
+ export { boxyhqSaasDefinition };
86
+
87
+ //# sourceMappingURL=boxyhq-saas.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"boxyhq-saas.mjs","names":[],"sources":["../../../src/services/definitions/boxyhq-saas.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const boxyhqSaasDefinition: ServiceDefinition = {\n\tid: \"boxyhq-saas\",\n\tname: \"BoxyHQ Enterprise SaaS Starter\",\n\tdescription:\n\t\t\"Enterprise-grade Next.js SaaS starter kit with SSO (SAML/OIDC), directory sync, audit logs, team management, Prisma ORM, Stripe billing, and PostgreSQL.\",\n\tcategory: \"saas-boilerplate\",\n\ticon: \"🚀\",\n\n\tgitSource: {\n\t\trepoUrl: \"https://github.com/boxyhq/saas-starter-kit.git\",\n\t\tbranch: \"main\",\n\t\tpostCloneCommands: [\"cp .env.example .env\"],\n\t},\n\tbuildContext: {\n\t\tdockerfile: \"Dockerfile\",\n\t\tcontext: \".\",\n\t},\n\n\tports: [\n\t\t{\n\t\t\thost: 3102,\n\t\t\tcontainer: 3000,\n\t\t\tdescription: \"BoxyHQ SaaS web application\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"BOXYHQ_SAAS_DB_PASSWORD\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Database password for BoxyHQ SaaS\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"DATABASE_URL\",\n\t\t\tdefaultValue: \"postgresql://boxyhqsaas:${BOXYHQ_SAAS_DB_PASSWORD}@postgresql:5432/boxyhqsaas\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"PostgreSQL connection string\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"NEXTAUTH_SECRET\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"NextAuth.js session encryption secret\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"NEXTAUTH_URL\",\n\t\t\tdefaultValue: \"http://localhost:3102\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"NextAuth.js callback URL\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\thealthcheck: {\n\t\ttest: \"wget -q --spider http://localhost:3000/ || exit 1\",\n\t\tinterval: \"30s\",\n\t\ttimeout: \"10s\",\n\t\tretries: 3,\n\t\tstartPeriod: \"60s\",\n\t},\n\tdependsOn: [\"postgresql\"],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [],\n\topenclawEnvVars: [],\n\n\tdocsUrl: \"https://github.com/boxyhq/saas-starter-kit#readme\",\n\ttags: [\"saas\", \"boilerplate\", \"nextjs\", \"enterprise\", \"sso\", \"saml\", \"stripe\", \"prisma\"],\n\tmaturity: \"beta\",\n\n\trequires: [\"postgresql\"],\n\trecommends: [],\n\tconflictsWith: [],\n\n\tminMemoryMB: 512,\n\tgpuRequired: false,\n};\n"],"mappings":";AAEA,MAAa,uBAA0C;CACtD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,WAAW;EACV,SAAS;EACT,QAAQ;EACR,mBAAmB,CAAC,uBAAuB;EAC3C;CACD,cAAc;EACb,YAAY;EACZ,SAAS;EACT;CAED,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,EAAE;CACX,aAAa;EACZ;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;CACD,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,CAAC,aAAa;CACzB,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,EAAE;CACV,iBAAiB,EAAE;CAEnB,SAAS;CACT,MAAM;EAAC;EAAQ;EAAe;EAAU;EAAc;EAAO;EAAQ;EAAU;EAAS;CACxF,UAAU;CAEV,UAAU,CAAC,aAAa;CACxB,YAAY,EAAE;CACd,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb"}
@@ -78,7 +78,10 @@ const browserlessDefinition = {
78
78
  recommends: [],
79
79
  conflictsWith: [],
80
80
  minMemoryMB: 512,
81
- gpuRequired: false
81
+ gpuRequired: false,
82
+ capDropCompatible: false,
83
+ proxyPath: "/browserless",
84
+ firstBootCapabilities: ["SYS_ADMIN"]
82
85
  };
83
86
  //#endregion
84
87
  exports.browserlessDefinition = browserlessDefinition;
@@ -1 +1 @@
1
- {"version":3,"file":"browserless.cjs","names":[],"sources":["../../../src/services/definitions/browserless.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const browserlessDefinition: ServiceDefinition = {\n\tid: \"browserless\",\n\tname: \"Browserless\",\n\tdescription:\n\t\t\"Headless Chrome browser-as-a-service for web scraping, PDF generation, screenshots, and browser automation at scale.\",\n\tcategory: \"browser\",\n\ticon: \"🌐\",\n\n\timage: \"browserless/chrome\",\n\timageTag: \"latest\",\n\tports: [\n\t\t{\n\t\t\thost: 3010,\n\t\t\tcontainer: 3000,\n\t\t\tdescription: \"Browserless HTTP and WebSocket API\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"TOKEN\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Authentication token for Browserless API access\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"MAX_CONCURRENT_SESSIONS\",\n\t\t\tdefaultValue: \"5\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Maximum number of concurrent browser sessions\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\thealthcheck: {\n\t\ttest: \"curl -sf http://localhost:3000/?token=$TOKEN || exit 1\",\n\t\tinterval: \"30s\",\n\t\ttimeout: \"10s\",\n\t\tretries: 3,\n\t\tstartPeriod: \"15s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [{ skillId: \"browserless-browse\", autoInstall: true }],\n\topenclawEnvVars: [\n\t\t{\n\t\t\tkey: \"BROWSERLESS_HOST\",\n\t\t\tdefaultValue: \"browserless\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Browserless hostname for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"BROWSERLESS_PORT\",\n\t\t\tdefaultValue: \"3000\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Browserless port for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"BROWSERLESS_TOKEN\",\n\t\t\tdefaultValue: \"${TOKEN}\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Browserless API token for OpenClaw (references service token)\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\n\tdocsUrl: \"https://www.browserless.io/docs/\",\n\ttags: [\"browser\", \"scraping\", \"pdf\", \"screenshots\", \"automation\"],\n\tmaturity: \"stable\",\n\n\trequires: [],\n\trecommends: [],\n\tconflictsWith: [],\n\n\tminMemoryMB: 512,\n\tgpuRequired: false,\n};\n"],"mappings":";;AAEA,MAAa,wBAA2C;CACvD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,EAAE;CACX,aAAa,CACZ;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,EACD;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,CACD;CACD,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,CAAC;EAAE,SAAS;EAAsB,aAAa;EAAM,CAAC;CAC9D,iBAAiB;EAChB;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;CAED,SAAS;CACT,MAAM;EAAC;EAAW;EAAY;EAAO;EAAe;EAAa;CACjE,UAAU;CAEV,UAAU,EAAE;CACZ,YAAY,EAAE;CACd,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb"}
1
+ {"version":3,"file":"browserless.cjs","names":[],"sources":["../../../src/services/definitions/browserless.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const browserlessDefinition: ServiceDefinition = {\n\tid: \"browserless\",\n\tname: \"Browserless\",\n\tdescription:\n\t\t\"Headless Chrome browser-as-a-service for web scraping, PDF generation, screenshots, and browser automation at scale.\",\n\tcategory: \"browser\",\n\ticon: \"🌐\",\n\n\timage: \"browserless/chrome\",\n\timageTag: \"latest\",\n\tports: [\n\t\t{\n\t\t\thost: 3010,\n\t\t\tcontainer: 3000,\n\t\t\tdescription: \"Browserless HTTP and WebSocket API\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"TOKEN\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Authentication token for Browserless API access\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"MAX_CONCURRENT_SESSIONS\",\n\t\t\tdefaultValue: \"5\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Maximum number of concurrent browser sessions\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\thealthcheck: {\n\t\ttest: \"curl -sf http://localhost:3000/?token=$TOKEN || exit 1\",\n\t\tinterval: \"30s\",\n\t\ttimeout: \"10s\",\n\t\tretries: 3,\n\t\tstartPeriod: \"15s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [{ skillId: \"browserless-browse\", autoInstall: true }],\n\topenclawEnvVars: [\n\t\t{\n\t\t\tkey: \"BROWSERLESS_HOST\",\n\t\t\tdefaultValue: \"browserless\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Browserless hostname for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"BROWSERLESS_PORT\",\n\t\t\tdefaultValue: \"3000\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Browserless port for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"BROWSERLESS_TOKEN\",\n\t\t\tdefaultValue: \"${TOKEN}\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Browserless API token for OpenClaw (references service token)\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\n\tdocsUrl: \"https://www.browserless.io/docs/\",\n\ttags: [\"browser\", \"scraping\", \"pdf\", \"screenshots\", \"automation\"],\n\tmaturity: \"stable\",\n\n\trequires: [],\n\trecommends: [],\n\tconflictsWith: [],\n\n\tminMemoryMB: 512,\n\tgpuRequired: false,\n\tcapDropCompatible: false,\n\tproxyPath: \"/browserless\",\n\tfirstBootCapabilities: [\"SYS_ADMIN\"],\n};\n"],"mappings":";;AAEA,MAAa,wBAA2C;CACvD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,EAAE;CACX,aAAa,CACZ;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,EACD;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,CACD;CACD,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,CAAC;EAAE,SAAS;EAAsB,aAAa;EAAM,CAAC;CAC9D,iBAAiB;EAChB;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;CAED,SAAS;CACT,MAAM;EAAC;EAAW;EAAY;EAAO;EAAe;EAAa;CACjE,UAAU;CAEV,UAAU,EAAE;CACZ,YAAY,EAAE;CACd,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb,mBAAmB;CACnB,WAAW;CACX,uBAAuB,CAAC,YAAY;CACpC"}
@@ -77,7 +77,10 @@ const browserlessDefinition = {
77
77
  recommends: [],
78
78
  conflictsWith: [],
79
79
  minMemoryMB: 512,
80
- gpuRequired: false
80
+ gpuRequired: false,
81
+ capDropCompatible: false,
82
+ proxyPath: "/browserless",
83
+ firstBootCapabilities: ["SYS_ADMIN"]
81
84
  };
82
85
  //#endregion
83
86
  export { browserlessDefinition };
@@ -1 +1 @@
1
- {"version":3,"file":"browserless.mjs","names":[],"sources":["../../../src/services/definitions/browserless.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const browserlessDefinition: ServiceDefinition = {\n\tid: \"browserless\",\n\tname: \"Browserless\",\n\tdescription:\n\t\t\"Headless Chrome browser-as-a-service for web scraping, PDF generation, screenshots, and browser automation at scale.\",\n\tcategory: \"browser\",\n\ticon: \"🌐\",\n\n\timage: \"browserless/chrome\",\n\timageTag: \"latest\",\n\tports: [\n\t\t{\n\t\t\thost: 3010,\n\t\t\tcontainer: 3000,\n\t\t\tdescription: \"Browserless HTTP and WebSocket API\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"TOKEN\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Authentication token for Browserless API access\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"MAX_CONCURRENT_SESSIONS\",\n\t\t\tdefaultValue: \"5\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Maximum number of concurrent browser sessions\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\thealthcheck: {\n\t\ttest: \"curl -sf http://localhost:3000/?token=$TOKEN || exit 1\",\n\t\tinterval: \"30s\",\n\t\ttimeout: \"10s\",\n\t\tretries: 3,\n\t\tstartPeriod: \"15s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [{ skillId: \"browserless-browse\", autoInstall: true }],\n\topenclawEnvVars: [\n\t\t{\n\t\t\tkey: \"BROWSERLESS_HOST\",\n\t\t\tdefaultValue: \"browserless\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Browserless hostname for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"BROWSERLESS_PORT\",\n\t\t\tdefaultValue: \"3000\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Browserless port for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"BROWSERLESS_TOKEN\",\n\t\t\tdefaultValue: \"${TOKEN}\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Browserless API token for OpenClaw (references service token)\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\n\tdocsUrl: \"https://www.browserless.io/docs/\",\n\ttags: [\"browser\", \"scraping\", \"pdf\", \"screenshots\", \"automation\"],\n\tmaturity: \"stable\",\n\n\trequires: [],\n\trecommends: [],\n\tconflictsWith: [],\n\n\tminMemoryMB: 512,\n\tgpuRequired: false,\n};\n"],"mappings":";AAEA,MAAa,wBAA2C;CACvD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,EAAE;CACX,aAAa,CACZ;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,EACD;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,CACD;CACD,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,CAAC;EAAE,SAAS;EAAsB,aAAa;EAAM,CAAC;CAC9D,iBAAiB;EAChB;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;CAED,SAAS;CACT,MAAM;EAAC;EAAW;EAAY;EAAO;EAAe;EAAa;CACjE,UAAU;CAEV,UAAU,EAAE;CACZ,YAAY,EAAE;CACd,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb"}
1
+ {"version":3,"file":"browserless.mjs","names":[],"sources":["../../../src/services/definitions/browserless.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const browserlessDefinition: ServiceDefinition = {\n\tid: \"browserless\",\n\tname: \"Browserless\",\n\tdescription:\n\t\t\"Headless Chrome browser-as-a-service for web scraping, PDF generation, screenshots, and browser automation at scale.\",\n\tcategory: \"browser\",\n\ticon: \"🌐\",\n\n\timage: \"browserless/chrome\",\n\timageTag: \"latest\",\n\tports: [\n\t\t{\n\t\t\thost: 3010,\n\t\t\tcontainer: 3000,\n\t\t\tdescription: \"Browserless HTTP and WebSocket API\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"TOKEN\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Authentication token for Browserless API access\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"MAX_CONCURRENT_SESSIONS\",\n\t\t\tdefaultValue: \"5\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Maximum number of concurrent browser sessions\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\thealthcheck: {\n\t\ttest: \"curl -sf http://localhost:3000/?token=$TOKEN || exit 1\",\n\t\tinterval: \"30s\",\n\t\ttimeout: \"10s\",\n\t\tretries: 3,\n\t\tstartPeriod: \"15s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [{ skillId: \"browserless-browse\", autoInstall: true }],\n\topenclawEnvVars: [\n\t\t{\n\t\t\tkey: \"BROWSERLESS_HOST\",\n\t\t\tdefaultValue: \"browserless\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Browserless hostname for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"BROWSERLESS_PORT\",\n\t\t\tdefaultValue: \"3000\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Browserless port for OpenClaw\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"BROWSERLESS_TOKEN\",\n\t\t\tdefaultValue: \"${TOKEN}\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Browserless API token for OpenClaw (references service token)\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\n\tdocsUrl: \"https://www.browserless.io/docs/\",\n\ttags: [\"browser\", \"scraping\", \"pdf\", \"screenshots\", \"automation\"],\n\tmaturity: \"stable\",\n\n\trequires: [],\n\trecommends: [],\n\tconflictsWith: [],\n\n\tminMemoryMB: 512,\n\tgpuRequired: false,\n\tcapDropCompatible: false,\n\tproxyPath: \"/browserless\",\n\tfirstBootCapabilities: [\"SYS_ADMIN\"],\n};\n"],"mappings":";AAEA,MAAa,wBAA2C;CACvD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,EAAE;CACX,aAAa,CACZ;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,EACD;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,CACD;CACD,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,CAAC;EAAE,SAAS;EAAsB,aAAa;EAAM,CAAC;CAC9D,iBAAiB;EAChB;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;CAED,SAAS;CACT,MAAM;EAAC;EAAW;EAAY;EAAO;EAAe;EAAa;CACjE,UAAU;CAEV,UAAU,EAAE;CACZ,YAAY,EAAE;CACd,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb,mBAAmB;CACnB,WAAW;CACX,uBAAuB,CAAC,YAAY;CACpC"}
@@ -0,0 +1,86 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ //#region src/services/definitions/cmsaas-starter.ts
3
+ const cmsaasStarterDefinition = {
4
+ id: "cmsaas-starter",
5
+ name: "CMSaasStarter",
6
+ description: "SvelteKit SaaS starter with Supabase backend, Stripe payments, user management, blog engine, SEO optimization, and edge deployment support.",
7
+ category: "saas-boilerplate",
8
+ icon: "🚀",
9
+ gitSource: {
10
+ repoUrl: "https://github.com/CriticalMoments/CMSaasStarter.git",
11
+ branch: "main",
12
+ postCloneCommands: []
13
+ },
14
+ buildContext: {
15
+ dockerfile: "Dockerfile",
16
+ context: "."
17
+ },
18
+ ports: [{
19
+ host: 3104,
20
+ container: 3e3,
21
+ description: "CMSaasStarter web application",
22
+ exposed: true
23
+ }],
24
+ volumes: [],
25
+ environment: [
26
+ {
27
+ key: "PUBLIC_SUPABASE_URL",
28
+ defaultValue: "",
29
+ secret: false,
30
+ description: "Supabase project URL",
31
+ required: true
32
+ },
33
+ {
34
+ key: "PUBLIC_SUPABASE_ANON_KEY",
35
+ defaultValue: "",
36
+ secret: false,
37
+ description: "Supabase anonymous/public key",
38
+ required: true
39
+ },
40
+ {
41
+ key: "PRIVATE_SUPABASE_SERVICE_ROLE",
42
+ defaultValue: "",
43
+ secret: true,
44
+ description: "Supabase service role key (server-side only)",
45
+ required: true
46
+ },
47
+ {
48
+ key: "PRIVATE_STRIPE_API_KEY",
49
+ defaultValue: "",
50
+ secret: true,
51
+ description: "Stripe secret API key",
52
+ required: true
53
+ }
54
+ ],
55
+ healthcheck: {
56
+ test: "wget -q --spider http://localhost:3000/ || exit 1",
57
+ interval: "30s",
58
+ timeout: "10s",
59
+ retries: 3,
60
+ startPeriod: "60s"
61
+ },
62
+ dependsOn: [],
63
+ restartPolicy: "unless-stopped",
64
+ networks: ["openclaw-network"],
65
+ skills: [],
66
+ openclawEnvVars: [],
67
+ docsUrl: "https://github.com/CriticalMoments/CMSaasStarter#readme",
68
+ tags: [
69
+ "saas",
70
+ "boilerplate",
71
+ "sveltekit",
72
+ "supabase",
73
+ "stripe",
74
+ "seo"
75
+ ],
76
+ maturity: "beta",
77
+ requires: [],
78
+ recommends: ["postgresql"],
79
+ conflictsWith: [],
80
+ minMemoryMB: 256,
81
+ gpuRequired: false
82
+ };
83
+ //#endregion
84
+ exports.cmsaasStarterDefinition = cmsaasStarterDefinition;
85
+
86
+ //# sourceMappingURL=cmsaas-starter.cjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cmsaas-starter.cjs","names":[],"sources":["../../../src/services/definitions/cmsaas-starter.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const cmsaasStarterDefinition: ServiceDefinition = {\n\tid: \"cmsaas-starter\",\n\tname: \"CMSaasStarter\",\n\tdescription:\n\t\t\"SvelteKit SaaS starter with Supabase backend, Stripe payments, user management, blog engine, SEO optimization, and edge deployment support.\",\n\tcategory: \"saas-boilerplate\",\n\ticon: \"🚀\",\n\n\tgitSource: {\n\t\trepoUrl: \"https://github.com/CriticalMoments/CMSaasStarter.git\",\n\t\tbranch: \"main\",\n\t\tpostCloneCommands: [],\n\t},\n\tbuildContext: {\n\t\tdockerfile: \"Dockerfile\",\n\t\tcontext: \".\",\n\t},\n\n\tports: [\n\t\t{\n\t\t\thost: 3104,\n\t\t\tcontainer: 3000,\n\t\t\tdescription: \"CMSaasStarter web application\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"PUBLIC_SUPABASE_URL\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Supabase project URL\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"PUBLIC_SUPABASE_ANON_KEY\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Supabase anonymous/public key\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"PRIVATE_SUPABASE_SERVICE_ROLE\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Supabase service role key (server-side only)\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"PRIVATE_STRIPE_API_KEY\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Stripe secret API key\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\thealthcheck: {\n\t\ttest: \"wget -q --spider http://localhost:3000/ || exit 1\",\n\t\tinterval: \"30s\",\n\t\ttimeout: \"10s\",\n\t\tretries: 3,\n\t\tstartPeriod: \"60s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [],\n\topenclawEnvVars: [],\n\n\tdocsUrl: \"https://github.com/CriticalMoments/CMSaasStarter#readme\",\n\ttags: [\"saas\", \"boilerplate\", \"sveltekit\", \"supabase\", \"stripe\", \"seo\"],\n\tmaturity: \"beta\",\n\n\trequires: [],\n\trecommends: [\"postgresql\"],\n\tconflictsWith: [],\n\n\tminMemoryMB: 256,\n\tgpuRequired: false,\n};\n"],"mappings":";;AAEA,MAAa,0BAA6C;CACzD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,WAAW;EACV,SAAS;EACT,QAAQ;EACR,mBAAmB,EAAE;EACrB;CACD,cAAc;EACb,YAAY;EACZ,SAAS;EACT;CAED,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,EAAE;CACX,aAAa;EACZ;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;CACD,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,EAAE;CACV,iBAAiB,EAAE;CAEnB,SAAS;CACT,MAAM;EAAC;EAAQ;EAAe;EAAa;EAAY;EAAU;EAAM;CACvE,UAAU;CAEV,UAAU,EAAE;CACZ,YAAY,CAAC,aAAa;CAC1B,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb"}
@@ -0,0 +1,7 @@
1
+ import { ServiceDefinition } from "../../types.cjs";
2
+
3
+ //#region src/services/definitions/cmsaas-starter.d.ts
4
+ declare const cmsaasStarterDefinition: ServiceDefinition;
5
+ //#endregion
6
+ export { cmsaasStarterDefinition };
7
+ //# sourceMappingURL=cmsaas-starter.d.cts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cmsaas-starter.d.cts","names":[],"sources":["../../../src/services/definitions/cmsaas-starter.ts"],"mappings":";;;cAEa,uBAAA,EAAyB,iBAAA"}
@@ -0,0 +1,7 @@
1
+ import { ServiceDefinition } from "../../types.mjs";
2
+
3
+ //#region src/services/definitions/cmsaas-starter.d.ts
4
+ declare const cmsaasStarterDefinition: ServiceDefinition;
5
+ //#endregion
6
+ export { cmsaasStarterDefinition };
7
+ //# sourceMappingURL=cmsaas-starter.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cmsaas-starter.d.mts","names":[],"sources":["../../../src/services/definitions/cmsaas-starter.ts"],"mappings":";;;cAEa,uBAAA,EAAyB,iBAAA"}
@@ -0,0 +1,85 @@
1
+ //#region src/services/definitions/cmsaas-starter.ts
2
+ const cmsaasStarterDefinition = {
3
+ id: "cmsaas-starter",
4
+ name: "CMSaasStarter",
5
+ description: "SvelteKit SaaS starter with Supabase backend, Stripe payments, user management, blog engine, SEO optimization, and edge deployment support.",
6
+ category: "saas-boilerplate",
7
+ icon: "🚀",
8
+ gitSource: {
9
+ repoUrl: "https://github.com/CriticalMoments/CMSaasStarter.git",
10
+ branch: "main",
11
+ postCloneCommands: []
12
+ },
13
+ buildContext: {
14
+ dockerfile: "Dockerfile",
15
+ context: "."
16
+ },
17
+ ports: [{
18
+ host: 3104,
19
+ container: 3e3,
20
+ description: "CMSaasStarter web application",
21
+ exposed: true
22
+ }],
23
+ volumes: [],
24
+ environment: [
25
+ {
26
+ key: "PUBLIC_SUPABASE_URL",
27
+ defaultValue: "",
28
+ secret: false,
29
+ description: "Supabase project URL",
30
+ required: true
31
+ },
32
+ {
33
+ key: "PUBLIC_SUPABASE_ANON_KEY",
34
+ defaultValue: "",
35
+ secret: false,
36
+ description: "Supabase anonymous/public key",
37
+ required: true
38
+ },
39
+ {
40
+ key: "PRIVATE_SUPABASE_SERVICE_ROLE",
41
+ defaultValue: "",
42
+ secret: true,
43
+ description: "Supabase service role key (server-side only)",
44
+ required: true
45
+ },
46
+ {
47
+ key: "PRIVATE_STRIPE_API_KEY",
48
+ defaultValue: "",
49
+ secret: true,
50
+ description: "Stripe secret API key",
51
+ required: true
52
+ }
53
+ ],
54
+ healthcheck: {
55
+ test: "wget -q --spider http://localhost:3000/ || exit 1",
56
+ interval: "30s",
57
+ timeout: "10s",
58
+ retries: 3,
59
+ startPeriod: "60s"
60
+ },
61
+ dependsOn: [],
62
+ restartPolicy: "unless-stopped",
63
+ networks: ["openclaw-network"],
64
+ skills: [],
65
+ openclawEnvVars: [],
66
+ docsUrl: "https://github.com/CriticalMoments/CMSaasStarter#readme",
67
+ tags: [
68
+ "saas",
69
+ "boilerplate",
70
+ "sveltekit",
71
+ "supabase",
72
+ "stripe",
73
+ "seo"
74
+ ],
75
+ maturity: "beta",
76
+ requires: [],
77
+ recommends: ["postgresql"],
78
+ conflictsWith: [],
79
+ minMemoryMB: 256,
80
+ gpuRequired: false
81
+ };
82
+ //#endregion
83
+ export { cmsaasStarterDefinition };
84
+
85
+ //# sourceMappingURL=cmsaas-starter.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cmsaas-starter.mjs","names":[],"sources":["../../../src/services/definitions/cmsaas-starter.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const cmsaasStarterDefinition: ServiceDefinition = {\n\tid: \"cmsaas-starter\",\n\tname: \"CMSaasStarter\",\n\tdescription:\n\t\t\"SvelteKit SaaS starter with Supabase backend, Stripe payments, user management, blog engine, SEO optimization, and edge deployment support.\",\n\tcategory: \"saas-boilerplate\",\n\ticon: \"🚀\",\n\n\tgitSource: {\n\t\trepoUrl: \"https://github.com/CriticalMoments/CMSaasStarter.git\",\n\t\tbranch: \"main\",\n\t\tpostCloneCommands: [],\n\t},\n\tbuildContext: {\n\t\tdockerfile: \"Dockerfile\",\n\t\tcontext: \".\",\n\t},\n\n\tports: [\n\t\t{\n\t\t\thost: 3104,\n\t\t\tcontainer: 3000,\n\t\t\tdescription: \"CMSaasStarter web application\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"PUBLIC_SUPABASE_URL\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Supabase project URL\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"PUBLIC_SUPABASE_ANON_KEY\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Supabase anonymous/public key\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"PRIVATE_SUPABASE_SERVICE_ROLE\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Supabase service role key (server-side only)\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"PRIVATE_STRIPE_API_KEY\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Stripe secret API key\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\thealthcheck: {\n\t\ttest: \"wget -q --spider http://localhost:3000/ || exit 1\",\n\t\tinterval: \"30s\",\n\t\ttimeout: \"10s\",\n\t\tretries: 3,\n\t\tstartPeriod: \"60s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [],\n\topenclawEnvVars: [],\n\n\tdocsUrl: \"https://github.com/CriticalMoments/CMSaasStarter#readme\",\n\ttags: [\"saas\", \"boilerplate\", \"sveltekit\", \"supabase\", \"stripe\", \"seo\"],\n\tmaturity: \"beta\",\n\n\trequires: [],\n\trecommends: [\"postgresql\"],\n\tconflictsWith: [],\n\n\tminMemoryMB: 256,\n\tgpuRequired: false,\n};\n"],"mappings":";AAEA,MAAa,0BAA6C;CACzD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,WAAW;EACV,SAAS;EACT,QAAQ;EACR,mBAAmB,EAAE;EACrB;CACD,cAAc;EACb,YAAY;EACZ,SAAS;EACT;CAED,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,EAAE;CACX,aAAa;EACZ;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;CACD,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,EAAE;CACV,iBAAiB,EAAE;CAEnB,SAAS;CACT,MAAM;EAAC;EAAQ;EAAe;EAAa;EAAY;EAAU;EAAM;CACvE,UAAU;CAEV,UAAU,EAAE;CACZ,YAAY,CAAC,aAAa;CAC1B,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb"}
@@ -80,6 +80,13 @@ const convexDefinition = {
80
80
  secret: true,
81
81
  description: "Admin key for CLI access. Generate with: docker compose exec convex ./generate_admin_key.sh",
82
82
  required: false
83
+ },
84
+ {
85
+ key: "CONVEX_INSTANCE_SECRET",
86
+ defaultValue: "${INSTANCE_SECRET}",
87
+ secret: true,
88
+ description: "Convex instance secret used by Mission Control (synced with INSTANCE_SECRET)",
89
+ required: false
83
90
  }
84
91
  ],
85
92
  healthcheck: {
@@ -111,7 +118,42 @@ const convexDefinition = {
111
118
  mandatory: true,
112
119
  removalWarning: "Convex is the backend for Mission Control. Without it, Mission Control will not be able to store or retrieve any data and will be completely non-functional.",
113
120
  minMemoryMB: 256,
114
- gpuRequired: false
121
+ gpuRequired: false,
122
+ capDropCompatible: false,
123
+ envQuirks: [
124
+ {
125
+ key: "DISABLE_BEACON",
126
+ issue: "empty_string_crashes",
127
+ fix: {
128
+ type: "set_value",
129
+ value: "true"
130
+ }
131
+ },
132
+ {
133
+ key: "INSTANCE_SECRET",
134
+ issue: "min_length",
135
+ fix: {
136
+ type: "generate_hex",
137
+ minBytes: 32
138
+ }
139
+ },
140
+ {
141
+ key: "CONVEX_SELF_HOSTED_ADMIN_KEY",
142
+ issue: "min_length",
143
+ fix: {
144
+ type: "generate_hex",
145
+ minBytes: 32
146
+ }
147
+ },
148
+ {
149
+ key: "INSTANCE_SECRET",
150
+ issue: "must_sync",
151
+ fix: {
152
+ type: "sync_with",
153
+ syncKey: "CONVEX_INSTANCE_SECRET"
154
+ }
155
+ }
156
+ ]
115
157
  };
116
158
  //#endregion
117
159
  exports.convexDefinition = convexDefinition;
@@ -1 +1 @@
1
- {"version":3,"file":"convex.cjs","names":[],"sources":["../../../src/services/definitions/convex.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const convexDefinition: ServiceDefinition = {\n\tid: \"convex\",\n\tname: \"Convex\",\n\tdescription:\n\t\t\"Self-hosted Convex reactive backend. Real-time database, server functions, and file storage in a single service. Required by Mission Control.\",\n\tcategory: \"database\",\n\ticon: \"⚡\",\n\n\timage: \"ghcr.io/get-convex/convex-backend\",\n\timageTag: \"latest\",\n\tports: [\n\t\t{\n\t\t\thost: 3210,\n\t\t\tcontainer: 3210,\n\t\t\tdescription: \"Convex API (client connections & CLI)\",\n\t\t\texposed: true,\n\t\t},\n\t\t{\n\t\t\thost: 3211,\n\t\t\tcontainer: 3211,\n\t\t\tdescription: \"Convex HTTP actions / site proxy\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"convex-data\",\n\t\t\tcontainerPath: \"/convex/data\",\n\t\t\tdescription: \"Convex data directory (SQLite by default)\",\n\t\t},\n\t],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"CONVEX_CLOUD_ORIGIN\",\n\t\t\tdefaultValue: \"http://127.0.0.1:3210\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Public URL for the Convex API endpoint\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"CONVEX_SITE_ORIGIN\",\n\t\t\tdefaultValue: \"http://127.0.0.1:3211\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Public URL for Convex HTTP actions\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"INSTANCE_NAME\",\n\t\t\tdefaultValue: \"openclaw-convex\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Instance name for this Convex deployment\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"INSTANCE_SECRET\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Instance secret (generate a random value for production)\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"DATABASE_URL\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Optional Postgres connection string for production (leave empty to use SQLite)\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"RUST_LOG\",\n\t\t\tdefaultValue: \"info\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Log level for the Convex backend (debug, info, warn, error)\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"DISABLE_BEACON\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Set to any value to disable anonymous usage telemetry\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"CONVEX_SELF_HOSTED_ADMIN_KEY\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription:\n\t\t\t\t\"Admin key for CLI access. Generate with: docker compose exec convex ./generate_admin_key.sh\",\n\t\t\trequired: false,\n\t\t},\n\t],\n\thealthcheck: {\n\t\ttest: \"curl -f http://localhost:3210/version\",\n\t\tinterval: \"5s\",\n\t\ttimeout: \"5s\",\n\t\tretries: 5,\n\t\tstartPeriod: \"10s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [],\n\topenclawEnvVars: [],\n\n\tdocsUrl: \"https://github.com/get-convex/convex-backend\",\n\tselfHostedDocsUrl: \"https://github.com/get-convex/convex-backend/blob/main/self-hosted/README.md\",\n\ttags: [\"convex\", \"database\", \"reactive\", \"real-time\", \"backend\", \"self-hosted\"],\n\tmaturity: \"stable\",\n\n\trequires: [],\n\trecommends: [\"convex-dashboard\"],\n\tconflictsWith: [],\n\tmandatory: true,\n\tremovalWarning:\n\t\t\"Convex is the backend for Mission Control. Without it, Mission Control will not be able to store or retrieve any data and will be completely non-functional.\",\n\n\tminMemoryMB: 256,\n\tgpuRequired: false,\n};\n"],"mappings":";;AAEA,MAAa,mBAAsC;CAClD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,EACD;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,aAAa;EACZ;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aACC;GACD,UAAU;GACV;EACD;CACD,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,EAAE;CACV,iBAAiB,EAAE;CAEnB,SAAS;CACT,mBAAmB;CACnB,MAAM;EAAC;EAAU;EAAY;EAAY;EAAa;EAAW;EAAc;CAC/E,UAAU;CAEV,UAAU,EAAE;CACZ,YAAY,CAAC,mBAAmB;CAChC,eAAe,EAAE;CACjB,WAAW;CACX,gBACC;CAED,aAAa;CACb,aAAa;CACb"}
1
+ {"version":3,"file":"convex.cjs","names":[],"sources":["../../../src/services/definitions/convex.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const convexDefinition: ServiceDefinition = {\n\tid: \"convex\",\n\tname: \"Convex\",\n\tdescription:\n\t\t\"Self-hosted Convex reactive backend. Real-time database, server functions, and file storage in a single service. Required by Mission Control.\",\n\tcategory: \"database\",\n\ticon: \"⚡\",\n\n\timage: \"ghcr.io/get-convex/convex-backend\",\n\timageTag: \"latest\",\n\tports: [\n\t\t{\n\t\t\thost: 3210,\n\t\t\tcontainer: 3210,\n\t\t\tdescription: \"Convex API (client connections & CLI)\",\n\t\t\texposed: true,\n\t\t},\n\t\t{\n\t\t\thost: 3211,\n\t\t\tcontainer: 3211,\n\t\t\tdescription: \"Convex HTTP actions / site proxy\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"convex-data\",\n\t\t\tcontainerPath: \"/convex/data\",\n\t\t\tdescription: \"Convex data directory (SQLite by default)\",\n\t\t},\n\t],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"CONVEX_CLOUD_ORIGIN\",\n\t\t\tdefaultValue: \"http://127.0.0.1:3210\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Public URL for the Convex API endpoint\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"CONVEX_SITE_ORIGIN\",\n\t\t\tdefaultValue: \"http://127.0.0.1:3211\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Public URL for Convex HTTP actions\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"INSTANCE_NAME\",\n\t\t\tdefaultValue: \"openclaw-convex\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Instance name for this Convex deployment\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"INSTANCE_SECRET\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Instance secret (generate a random value for production)\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"DATABASE_URL\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Optional Postgres connection string for production (leave empty to use SQLite)\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"RUST_LOG\",\n\t\t\tdefaultValue: \"info\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Log level for the Convex backend (debug, info, warn, error)\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"DISABLE_BEACON\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Set to any value to disable anonymous usage telemetry\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"CONVEX_SELF_HOSTED_ADMIN_KEY\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription:\n\t\t\t\t\"Admin key for CLI access. Generate with: docker compose exec convex ./generate_admin_key.sh\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"CONVEX_INSTANCE_SECRET\",\n\t\t\tdefaultValue: \"${INSTANCE_SECRET}\",\n\t\t\tsecret: true,\n\t\t\tdescription:\n\t\t\t\t\"Convex instance secret used by Mission Control (synced with INSTANCE_SECRET)\",\n\t\t\trequired: false,\n\t\t},\n\t],\n\thealthcheck: {\n\t\ttest: \"curl -f http://localhost:3210/version\",\n\t\tinterval: \"5s\",\n\t\ttimeout: \"5s\",\n\t\tretries: 5,\n\t\tstartPeriod: \"10s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [],\n\topenclawEnvVars: [],\n\n\tdocsUrl: \"https://github.com/get-convex/convex-backend\",\n\tselfHostedDocsUrl: \"https://github.com/get-convex/convex-backend/blob/main/self-hosted/README.md\",\n\ttags: [\"convex\", \"database\", \"reactive\", \"real-time\", \"backend\", \"self-hosted\"],\n\tmaturity: \"stable\",\n\n\trequires: [],\n\trecommends: [\"convex-dashboard\"],\n\tconflictsWith: [],\n\tmandatory: true,\n\tremovalWarning:\n\t\t\"Convex is the backend for Mission Control. Without it, Mission Control will not be able to store or retrieve any data and will be completely non-functional.\",\n\n\tminMemoryMB: 256,\n\tgpuRequired: false,\n\tcapDropCompatible: false,\n\tenvQuirks: [\n\t\t{\n\t\t\tkey: \"DISABLE_BEACON\",\n\t\t\tissue: \"empty_string_crashes\" as const,\n\t\t\tfix: { type: \"set_value\" as const, value: \"true\" },\n\t\t},\n\t\t{\n\t\t\tkey: \"INSTANCE_SECRET\",\n\t\t\tissue: \"min_length\" as const,\n\t\t\tfix: { type: \"generate_hex\" as const, minBytes: 32 },\n\t\t},\n\t\t{\n\t\t\tkey: \"CONVEX_SELF_HOSTED_ADMIN_KEY\",\n\t\t\tissue: \"min_length\" as const,\n\t\t\tfix: { type: \"generate_hex\" as const, minBytes: 32 },\n\t\t},\n\t\t{\n\t\t\tkey: \"INSTANCE_SECRET\",\n\t\t\tissue: \"must_sync\" as const,\n\t\t\tfix: { type: \"sync_with\" as const, syncKey: \"CONVEX_INSTANCE_SECRET\" },\n\t\t},\n\t],\n};\n"],"mappings":";;AAEA,MAAa,mBAAsC;CAClD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,EACD;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,aAAa;EACZ;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aACC;GACD,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aACC;GACD,UAAU;GACV;EACD;CACD,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,EAAE;CACV,iBAAiB,EAAE;CAEnB,SAAS;CACT,mBAAmB;CACnB,MAAM;EAAC;EAAU;EAAY;EAAY;EAAa;EAAW;EAAc;CAC/E,UAAU;CAEV,UAAU,EAAE;CACZ,YAAY,CAAC,mBAAmB;CAChC,eAAe,EAAE;CACjB,WAAW;CACX,gBACC;CAED,aAAa;CACb,aAAa;CACb,mBAAmB;CACnB,WAAW;EACV;GACC,KAAK;GACL,OAAO;GACP,KAAK;IAAE,MAAM;IAAsB,OAAO;IAAQ;GAClD;EACD;GACC,KAAK;GACL,OAAO;GACP,KAAK;IAAE,MAAM;IAAyB,UAAU;IAAI;GACpD;EACD;GACC,KAAK;GACL,OAAO;GACP,KAAK;IAAE,MAAM;IAAyB,UAAU;IAAI;GACpD;EACD;GACC,KAAK;GACL,OAAO;GACP,KAAK;IAAE,MAAM;IAAsB,SAAS;IAA0B;GACtE;EACD;CACD"}
@@ -79,6 +79,13 @@ const convexDefinition = {
79
79
  secret: true,
80
80
  description: "Admin key for CLI access. Generate with: docker compose exec convex ./generate_admin_key.sh",
81
81
  required: false
82
+ },
83
+ {
84
+ key: "CONVEX_INSTANCE_SECRET",
85
+ defaultValue: "${INSTANCE_SECRET}",
86
+ secret: true,
87
+ description: "Convex instance secret used by Mission Control (synced with INSTANCE_SECRET)",
88
+ required: false
82
89
  }
83
90
  ],
84
91
  healthcheck: {
@@ -110,7 +117,42 @@ const convexDefinition = {
110
117
  mandatory: true,
111
118
  removalWarning: "Convex is the backend for Mission Control. Without it, Mission Control will not be able to store or retrieve any data and will be completely non-functional.",
112
119
  minMemoryMB: 256,
113
- gpuRequired: false
120
+ gpuRequired: false,
121
+ capDropCompatible: false,
122
+ envQuirks: [
123
+ {
124
+ key: "DISABLE_BEACON",
125
+ issue: "empty_string_crashes",
126
+ fix: {
127
+ type: "set_value",
128
+ value: "true"
129
+ }
130
+ },
131
+ {
132
+ key: "INSTANCE_SECRET",
133
+ issue: "min_length",
134
+ fix: {
135
+ type: "generate_hex",
136
+ minBytes: 32
137
+ }
138
+ },
139
+ {
140
+ key: "CONVEX_SELF_HOSTED_ADMIN_KEY",
141
+ issue: "min_length",
142
+ fix: {
143
+ type: "generate_hex",
144
+ minBytes: 32
145
+ }
146
+ },
147
+ {
148
+ key: "INSTANCE_SECRET",
149
+ issue: "must_sync",
150
+ fix: {
151
+ type: "sync_with",
152
+ syncKey: "CONVEX_INSTANCE_SECRET"
153
+ }
154
+ }
155
+ ]
114
156
  };
115
157
  //#endregion
116
158
  export { convexDefinition };