@better-openclaw/core 1.0.16 → 1.0.19
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.
- package/README.md +27 -0
- package/dist/bare-metal-partition.cjs +53 -0
- package/dist/bare-metal-partition.cjs.map +1 -0
- package/dist/bare-metal-partition.d.cts +26 -0
- package/dist/bare-metal-partition.d.cts.map +1 -0
- package/dist/bare-metal-partition.test.cjs +57 -0
- package/dist/bare-metal-partition.test.cjs.map +1 -0
- package/dist/bare-metal-partition.test.d.cts +1 -0
- package/dist/bare-metal-partition.test.mjs +1 -1
- package/dist/chunk-C0xms8kb.cjs +34 -0
- package/dist/compose-validation.test.cjs +67 -0
- package/dist/compose-validation.test.cjs.map +1 -0
- package/dist/compose-validation.test.d.cts +1 -0
- package/dist/compose-validation.test.d.mts +1 -0
- package/dist/compose-validation.test.mjs +66 -0
- package/dist/compose-validation.test.mjs.map +1 -0
- package/dist/composer.cjs +462 -0
- package/dist/composer.cjs.map +1 -0
- package/dist/composer.d.cts +21 -0
- package/dist/composer.d.cts.map +1 -0
- package/dist/composer.d.mts.map +1 -1
- package/dist/composer.mjs +187 -27
- package/dist/composer.mjs.map +1 -1
- package/dist/composer.snapshot.test.cjs +91 -0
- package/dist/composer.snapshot.test.cjs.map +1 -0
- package/dist/composer.snapshot.test.d.cts +1 -0
- package/dist/composer.snapshot.test.mjs +1 -1
- package/dist/composer.test.cjs +166 -0
- package/dist/composer.test.cjs.map +1 -0
- package/dist/composer.test.d.cts +1 -0
- package/dist/composer.test.mjs +2 -2
- package/dist/composer.test.mjs.map +1 -1
- package/dist/deployers/coolify.cjs +179 -0
- package/dist/deployers/coolify.cjs.map +1 -0
- package/dist/deployers/coolify.d.cts +25 -0
- package/dist/deployers/coolify.d.cts.map +1 -0
- package/dist/deployers/coolify.d.mts +25 -0
- package/dist/deployers/coolify.d.mts.map +1 -0
- package/dist/deployers/coolify.mjs +177 -0
- package/dist/deployers/coolify.mjs.map +1 -0
- package/dist/deployers/dokploy.cjs +145 -0
- package/dist/deployers/dokploy.cjs.map +1 -0
- package/dist/deployers/dokploy.d.cts +24 -0
- package/dist/deployers/dokploy.d.cts.map +1 -0
- package/dist/deployers/dokploy.d.mts +24 -0
- package/dist/deployers/dokploy.d.mts.map +1 -0
- package/dist/deployers/dokploy.mjs +143 -0
- package/dist/deployers/dokploy.mjs.map +1 -0
- package/dist/deployers/index.cjs +26 -0
- package/dist/deployers/index.cjs.map +1 -0
- package/dist/deployers/index.d.cts +14 -0
- package/dist/deployers/index.d.cts.map +1 -0
- package/dist/deployers/index.d.mts +14 -0
- package/dist/deployers/index.d.mts.map +1 -0
- package/dist/deployers/index.mjs +21 -0
- package/dist/deployers/index.mjs.map +1 -0
- package/dist/deployers/types.cjs +0 -0
- package/dist/deployers/types.d.cts +72 -0
- package/dist/deployers/types.d.cts.map +1 -0
- package/dist/deployers/types.d.mts +72 -0
- package/dist/deployers/types.d.mts.map +1 -0
- package/dist/deployers/types.mjs +1 -0
- package/dist/errors.cjs +27 -0
- package/dist/errors.cjs.map +1 -0
- package/dist/errors.d.cts +17 -0
- package/dist/errors.d.cts.map +1 -0
- package/dist/generate.cjs +225 -0
- package/dist/generate.cjs.map +1 -0
- package/dist/generate.d.cts +12 -0
- package/dist/generate.d.cts.map +1 -0
- package/dist/generate.d.mts.map +1 -1
- package/dist/generate.mjs +34 -5
- package/dist/generate.mjs.map +1 -1
- package/dist/generate.test.cjs +283 -0
- package/dist/generate.test.cjs.map +1 -0
- package/dist/generate.test.d.cts +1 -0
- package/dist/generate.test.mjs +1 -1
- package/dist/generators/bare-metal-install.cjs +226 -0
- package/dist/generators/bare-metal-install.cjs.map +1 -0
- package/dist/generators/bare-metal-install.d.cts +17 -0
- package/dist/generators/bare-metal-install.d.cts.map +1 -0
- package/dist/generators/bare-metal-install.test.cjs +47 -0
- package/dist/generators/bare-metal-install.test.cjs.map +1 -0
- package/dist/generators/bare-metal-install.test.d.cts +1 -0
- package/dist/generators/bare-metal-install.test.mjs +1 -1
- package/dist/generators/caddy.cjs +79 -0
- package/dist/generators/caddy.cjs.map +1 -0
- package/dist/generators/caddy.d.cts +17 -0
- package/dist/generators/caddy.d.cts.map +1 -0
- package/dist/generators/caddy.test.cjs +44 -0
- package/dist/generators/caddy.test.cjs.map +1 -0
- package/dist/generators/caddy.test.d.cts +1 -0
- package/dist/generators/caddy.test.mjs +1 -1
- package/dist/generators/cloud-init.cjs +132 -0
- package/dist/generators/cloud-init.cjs.map +1 -0
- package/dist/generators/cloud-init.d.cts +25 -0
- package/dist/generators/cloud-init.d.cts.map +1 -0
- package/dist/generators/cloud-init.d.mts +25 -0
- package/dist/generators/cloud-init.d.mts.map +1 -0
- package/dist/generators/cloud-init.mjs +130 -0
- package/dist/generators/cloud-init.mjs.map +1 -0
- package/dist/generators/env.cjs +325 -0
- package/dist/generators/env.cjs.map +1 -0
- package/dist/generators/env.d.cts +52 -0
- package/dist/generators/env.d.cts.map +1 -0
- package/dist/generators/env.d.mts +6 -0
- package/dist/generators/env.d.mts.map +1 -1
- package/dist/generators/env.mjs +58 -6
- package/dist/generators/env.mjs.map +1 -1
- package/dist/generators/env.test.cjs +59 -0
- package/dist/generators/env.test.cjs.map +1 -0
- package/dist/generators/env.test.d.cts +1 -0
- package/dist/generators/env.test.mjs +1 -1
- package/dist/generators/get-shit-done.cjs +40 -0
- package/dist/generators/get-shit-done.cjs.map +1 -0
- package/dist/generators/get-shit-done.d.cts +10 -0
- package/dist/generators/get-shit-done.d.cts.map +1 -0
- package/dist/generators/grafana.cjs +296 -0
- package/dist/generators/grafana.cjs.map +1 -0
- package/dist/generators/grafana.d.cts +22 -0
- package/dist/generators/grafana.d.cts.map +1 -0
- package/dist/generators/health-check.cjs +707 -0
- package/dist/generators/health-check.cjs.map +1 -0
- package/dist/generators/health-check.d.cts +18 -0
- package/dist/generators/health-check.d.cts.map +1 -0
- package/dist/generators/health-check.d.mts +2 -2
- package/dist/generators/health-check.d.mts.map +1 -1
- package/dist/generators/health-check.mjs.map +1 -1
- package/dist/generators/health-check.test.cjs +84 -0
- package/dist/generators/health-check.test.cjs.map +1 -0
- package/dist/generators/health-check.test.d.cts +1 -0
- package/dist/generators/health-check.test.mjs +1 -1
- package/dist/generators/n8n-workflows.cjs +77 -0
- package/dist/generators/n8n-workflows.cjs.map +1 -0
- package/dist/generators/n8n-workflows.d.cts +11 -0
- package/dist/generators/n8n-workflows.d.cts.map +1 -0
- package/dist/generators/native-services.cjs +80 -0
- package/dist/generators/native-services.cjs.map +1 -0
- package/dist/generators/native-services.d.cts +17 -0
- package/dist/generators/native-services.d.cts.map +1 -0
- package/dist/generators/openclaw-install-script.cjs +68 -0
- package/dist/generators/openclaw-install-script.cjs.map +1 -0
- package/dist/generators/openclaw-install-script.d.cts +12 -0
- package/dist/generators/openclaw-install-script.d.cts.map +1 -0
- package/dist/generators/openclaw-install-script.d.mts +12 -0
- package/dist/generators/openclaw-install-script.d.mts.map +1 -0
- package/dist/generators/openclaw-install-script.mjs +66 -0
- package/dist/generators/openclaw-install-script.mjs.map +1 -0
- package/dist/generators/openclaw-json.cjs +540 -0
- package/dist/generators/openclaw-json.cjs.map +1 -0
- package/dist/generators/openclaw-json.d.cts +16 -0
- package/dist/generators/openclaw-json.d.cts.map +1 -0
- package/dist/generators/openclaw-json.d.mts +8 -3
- package/dist/generators/openclaw-json.d.mts.map +1 -1
- package/dist/generators/openclaw-json.mjs +214 -86
- package/dist/generators/openclaw-json.mjs.map +1 -1
- package/dist/generators/postgres-init.cjs +189 -0
- package/dist/generators/postgres-init.cjs.map +1 -0
- package/dist/generators/postgres-init.d.cts +30 -0
- package/dist/generators/postgres-init.d.cts.map +1 -0
- package/dist/generators/postgres-init.d.mts.map +1 -1
- package/dist/generators/postgres-init.mjs +35 -0
- package/dist/generators/postgres-init.mjs.map +1 -1
- package/dist/generators/prometheus.cjs +109 -0
- package/dist/generators/prometheus.cjs.map +1 -0
- package/dist/generators/prometheus.d.cts +14 -0
- package/dist/generators/prometheus.d.cts.map +1 -0
- package/dist/generators/readme.cjs +286 -0
- package/dist/generators/readme.cjs.map +1 -0
- package/dist/generators/readme.d.cts +27 -0
- package/dist/generators/readme.d.cts.map +1 -0
- package/dist/generators/readme.d.mts +3 -1
- package/dist/generators/readme.d.mts.map +1 -1
- package/dist/generators/readme.mjs +88 -3
- package/dist/generators/readme.mjs.map +1 -1
- package/dist/generators/scripts.cjs +353 -0
- package/dist/generators/scripts.cjs.map +1 -0
- package/dist/generators/scripts.d.cts +10 -0
- package/dist/generators/scripts.d.cts.map +1 -0
- package/dist/generators/scripts.test.cjs +51 -0
- package/dist/generators/scripts.test.cjs.map +1 -0
- package/dist/generators/scripts.test.d.cts +1 -0
- package/dist/generators/scripts.test.mjs +1 -1
- package/dist/generators/skills.cjs +590 -0
- package/dist/generators/skills.cjs.map +1 -0
- package/dist/generators/skills.d.cts +14 -0
- package/dist/generators/skills.d.cts.map +1 -0
- package/dist/generators/stack-manifest.cjs +70 -0
- package/dist/generators/stack-manifest.cjs.map +1 -0
- package/dist/generators/stack-manifest.d.cts +51 -0
- package/dist/generators/stack-manifest.d.cts.map +1 -0
- package/dist/generators/stack-manifest.d.mts +51 -0
- package/dist/generators/stack-manifest.d.mts.map +1 -0
- package/dist/generators/stack-manifest.mjs +68 -0
- package/dist/generators/stack-manifest.mjs.map +1 -0
- package/dist/generators/traefik.cjs +88 -0
- package/dist/generators/traefik.cjs.map +1 -0
- package/dist/generators/traefik.d.cts +19 -0
- package/dist/generators/traefik.d.cts.map +1 -0
- package/dist/generators/traefik.test.cjs +68 -0
- package/dist/generators/traefik.test.cjs.map +1 -0
- package/dist/generators/traefik.test.d.cts +1 -0
- package/dist/generators/traefik.test.mjs +1 -1
- package/dist/index.cjs +118 -0
- package/dist/index.d.cts +31 -0
- package/dist/index.d.mts +9 -3
- package/dist/index.mjs +8 -3
- package/dist/magic-string.es-D2agHT3I.cjs +1015 -0
- package/dist/magic-string.es-D2agHT3I.cjs.map +1 -0
- package/dist/manifest-4uLbISXV.cjs +1190 -0
- package/dist/manifest-4uLbISXV.cjs.map +1 -0
- package/dist/migrations.cjs +37 -0
- package/dist/migrations.cjs.map +1 -0
- package/dist/migrations.d.cts +14 -0
- package/dist/migrations.d.cts.map +1 -0
- package/dist/migrations.test.cjs +41 -0
- package/dist/migrations.test.cjs.map +1 -0
- package/dist/migrations.test.d.cts +1 -0
- package/dist/migrations.test.mjs +1 -1
- package/dist/port-scanner.cjs +125 -0
- package/dist/port-scanner.cjs.map +1 -0
- package/dist/port-scanner.d.cts +27 -0
- package/dist/port-scanner.d.cts.map +1 -0
- package/dist/port-scanner.d.mts +27 -0
- package/dist/port-scanner.d.mts.map +1 -0
- package/dist/port-scanner.mjs +122 -0
- package/dist/port-scanner.mjs.map +1 -0
- package/dist/presets/presets.test.cjs +65 -0
- package/dist/presets/presets.test.cjs.map +1 -0
- package/dist/presets/presets.test.d.cts +1 -0
- package/dist/presets/presets.test.d.mts +1 -0
- package/dist/presets/presets.test.mjs +64 -0
- package/dist/presets/presets.test.mjs.map +1 -0
- package/dist/presets/registry.cjs +193 -0
- package/dist/presets/registry.cjs.map +1 -0
- package/dist/presets/registry.d.cts +9 -0
- package/dist/presets/registry.d.cts.map +1 -0
- package/dist/presets/registry.d.mts.map +1 -1
- package/dist/presets/registry.mjs +38 -8
- package/dist/presets/registry.mjs.map +1 -1
- package/dist/presets/registry.test.cjs +36 -0
- package/dist/presets/registry.test.cjs.map +1 -0
- package/dist/presets/registry.test.d.cts +1 -0
- package/dist/presets/registry.test.mjs +5 -2
- package/dist/presets/registry.test.mjs.map +1 -1
- package/dist/resolver.cjs +217 -0
- package/dist/resolver.cjs.map +1 -0
- package/dist/resolver.d.cts +26 -0
- package/dist/resolver.d.cts.map +1 -0
- package/dist/resolver.mjs +2 -0
- package/dist/resolver.mjs.map +1 -1
- package/dist/resolver.test.cjs +236 -0
- package/dist/resolver.test.cjs.map +1 -0
- package/dist/resolver.test.d.cts +1 -0
- package/dist/resolver.test.mjs +1 -1
- package/dist/schema.cjs +354 -0
- package/dist/schema.cjs.map +1 -0
- package/dist/schema.d.cts +854 -0
- package/dist/schema.d.cts.map +1 -0
- package/dist/schema.d.mts +56 -1
- package/dist/schema.d.mts.map +1 -1
- package/dist/schema.mjs +31 -4
- package/dist/schema.mjs.map +1 -1
- package/dist/schema.test.cjs +263 -0
- package/dist/schema.test.cjs.map +1 -0
- package/dist/schema.test.d.cts +1 -0
- package/dist/schema.test.mjs +1 -1
- package/dist/services/definitions/anything-llm.cjs +46 -0
- package/dist/services/definitions/anything-llm.cjs.map +1 -0
- package/dist/services/definitions/anything-llm.d.cts +7 -0
- package/dist/services/definitions/anything-llm.d.cts.map +1 -0
- package/dist/services/definitions/anything-llm.mjs +2 -2
- package/dist/services/definitions/anything-llm.mjs.map +1 -1
- package/dist/services/definitions/appflowy.cjs +47 -0
- package/dist/services/definitions/appflowy.cjs.map +1 -0
- package/dist/services/definitions/appflowy.d.cts +7 -0
- package/dist/services/definitions/appflowy.d.cts.map +1 -0
- package/dist/services/definitions/appflowy.mjs +1 -1
- package/dist/services/definitions/appflowy.mjs.map +1 -1
- package/dist/services/definitions/authentik.cjs +107 -0
- package/dist/services/definitions/authentik.cjs.map +1 -0
- package/dist/services/definitions/authentik.d.cts +7 -0
- package/dist/services/definitions/authentik.d.cts.map +1 -0
- package/dist/services/definitions/authentik.mjs +5 -5
- package/dist/services/definitions/authentik.mjs.map +1 -1
- package/dist/services/definitions/beszel.cjs +47 -0
- package/dist/services/definitions/beszel.cjs.map +1 -0
- package/dist/services/definitions/beszel.d.cts +7 -0
- package/dist/services/definitions/beszel.d.cts.map +1 -0
- package/dist/services/definitions/beszel.mjs +1 -1
- package/dist/services/definitions/beszel.mjs.map +1 -1
- package/dist/services/definitions/browserless.cjs +87 -0
- package/dist/services/definitions/browserless.cjs.map +1 -0
- package/dist/services/definitions/browserless.d.cts +7 -0
- package/dist/services/definitions/browserless.d.cts.map +1 -0
- package/dist/services/definitions/browserless.mjs +1 -1
- package/dist/services/definitions/browserless.mjs.map +1 -1
- package/dist/services/definitions/caddy.cjs +73 -0
- package/dist/services/definitions/caddy.cjs.map +1 -0
- package/dist/services/definitions/caddy.d.cts +7 -0
- package/dist/services/definitions/caddy.d.cts.map +1 -0
- package/dist/services/definitions/caddy.mjs +2 -2
- package/dist/services/definitions/caddy.mjs.map +1 -1
- package/dist/services/definitions/cal-com.cjs +90 -0
- package/dist/services/definitions/cal-com.cjs.map +1 -0
- package/dist/services/definitions/cal-com.d.cts +7 -0
- package/dist/services/definitions/cal-com.d.cts.map +1 -0
- package/dist/services/definitions/cal-com.mjs +2 -2
- package/dist/services/definitions/cal-com.mjs.map +1 -1
- package/dist/services/definitions/chromadb.cjs +65 -0
- package/dist/services/definitions/chromadb.cjs.map +1 -0
- package/dist/services/definitions/chromadb.d.cts +7 -0
- package/dist/services/definitions/chromadb.d.cts.map +1 -0
- package/dist/services/definitions/chromadb.mjs +3 -3
- package/dist/services/definitions/chromadb.mjs.map +1 -1
- package/dist/services/definitions/claude-code.cjs +54 -0
- package/dist/services/definitions/claude-code.cjs.map +1 -0
- package/dist/services/definitions/claude-code.d.cts +7 -0
- package/dist/services/definitions/claude-code.d.cts.map +1 -0
- package/dist/services/definitions/claude-code.mjs +1 -1
- package/dist/services/definitions/claude-code.mjs.map +1 -1
- package/dist/services/definitions/code-server.cjs +68 -0
- package/dist/services/definitions/code-server.cjs.map +1 -0
- package/dist/services/definitions/code-server.d.cts +7 -0
- package/dist/services/definitions/code-server.d.cts.map +1 -0
- package/dist/services/definitions/code-server.mjs +1 -1
- package/dist/services/definitions/code-server.mjs.map +1 -1
- package/dist/services/definitions/codex.cjs +47 -0
- package/dist/services/definitions/codex.cjs.map +1 -0
- package/dist/services/definitions/codex.d.cts +7 -0
- package/dist/services/definitions/codex.d.cts.map +1 -0
- package/dist/services/definitions/codex.mjs +1 -1
- package/dist/services/definitions/codex.mjs.map +1 -1
- package/dist/services/definitions/comfyui.cjs +85 -0
- package/dist/services/definitions/comfyui.cjs.map +1 -0
- package/dist/services/definitions/comfyui.d.cts +7 -0
- package/dist/services/definitions/comfyui.d.cts.map +1 -0
- package/dist/services/definitions/comfyui.mjs +1 -1
- package/dist/services/definitions/comfyui.mjs.map +1 -1
- package/dist/services/definitions/convex-dashboard.cjs +48 -0
- package/dist/services/definitions/convex-dashboard.cjs.map +1 -0
- package/dist/services/definitions/convex-dashboard.d.cts +7 -0
- package/dist/services/definitions/convex-dashboard.d.cts.map +1 -0
- package/dist/services/definitions/convex.cjs +120 -0
- package/dist/services/definitions/convex.cjs.map +1 -0
- package/dist/services/definitions/convex.d.cts +7 -0
- package/dist/services/definitions/convex.d.cts.map +1 -0
- package/dist/services/definitions/coolify.cjs +51 -0
- package/dist/services/definitions/coolify.cjs.map +1 -0
- package/dist/services/definitions/coolify.d.cts +7 -0
- package/dist/services/definitions/coolify.d.cts.map +1 -0
- package/dist/services/definitions/coolify.mjs +1 -1
- package/dist/services/definitions/coolify.mjs.map +1 -1
- package/dist/services/definitions/crowdsec.cjs +64 -0
- package/dist/services/definitions/crowdsec.cjs.map +1 -0
- package/dist/services/definitions/crowdsec.d.cts +7 -0
- package/dist/services/definitions/crowdsec.d.cts.map +1 -0
- package/dist/services/definitions/crowdsec.mjs +2 -2
- package/dist/services/definitions/crowdsec.mjs.map +1 -1
- package/dist/services/definitions/desktop-environment.cjs +155 -0
- package/dist/services/definitions/desktop-environment.cjs.map +1 -0
- package/dist/services/definitions/desktop-environment.d.cts +7 -0
- package/dist/services/definitions/desktop-environment.d.cts.map +1 -0
- package/dist/services/definitions/desktop-environment.mjs +1 -1
- package/dist/services/definitions/desktop-environment.mjs.map +1 -1
- package/dist/services/definitions/dify.cjs +83 -0
- package/dist/services/definitions/dify.cjs.map +1 -0
- package/dist/services/definitions/dify.d.cts +7 -0
- package/dist/services/definitions/dify.d.cts.map +1 -0
- package/dist/services/definitions/dify.mjs +1 -1
- package/dist/services/definitions/dify.mjs.map +1 -1
- package/dist/services/definitions/docsgpt.cjs +47 -0
- package/dist/services/definitions/docsgpt.cjs.map +1 -0
- package/dist/services/definitions/docsgpt.d.cts +7 -0
- package/dist/services/definitions/docsgpt.d.cts.map +1 -0
- package/dist/services/definitions/docsgpt.mjs +1 -1
- package/dist/services/definitions/docsgpt.mjs.map +1 -1
- package/dist/services/definitions/dokploy.cjs +51 -0
- package/dist/services/definitions/dokploy.cjs.map +1 -0
- package/dist/services/definitions/dokploy.d.cts +7 -0
- package/dist/services/definitions/dokploy.d.cts.map +1 -0
- package/dist/services/definitions/dokploy.mjs +2 -2
- package/dist/services/definitions/dokploy.mjs.map +1 -1
- package/dist/services/definitions/dozzle.cjs +43 -0
- package/dist/services/definitions/dozzle.cjs.map +1 -0
- package/dist/services/definitions/dozzle.d.cts +7 -0
- package/dist/services/definitions/dozzle.d.cts.map +1 -0
- package/dist/services/definitions/dozzle.mjs +1 -1
- package/dist/services/definitions/dozzle.mjs.map +1 -1
- package/dist/services/definitions/ffmpeg.cjs +68 -0
- package/dist/services/definitions/ffmpeg.cjs.map +1 -0
- package/dist/services/definitions/ffmpeg.d.cts +7 -0
- package/dist/services/definitions/ffmpeg.d.cts.map +1 -0
- package/dist/services/definitions/ffmpeg.mjs +2 -2
- package/dist/services/definitions/ffmpeg.mjs.map +1 -1
- package/dist/services/definitions/flowise.cjs +47 -0
- package/dist/services/definitions/flowise.cjs.map +1 -0
- package/dist/services/definitions/flowise.d.cts +7 -0
- package/dist/services/definitions/flowise.d.cts.map +1 -0
- package/dist/services/definitions/flowise.mjs +1 -1
- package/dist/services/definitions/flowise.mjs.map +1 -1
- package/dist/services/definitions/gemini-cli.cjs +54 -0
- package/dist/services/definitions/gemini-cli.cjs.map +1 -0
- package/dist/services/definitions/gemini-cli.d.cts +7 -0
- package/dist/services/definitions/gemini-cli.d.cts.map +1 -0
- package/dist/services/definitions/gemini-cli.mjs +7 -1
- package/dist/services/definitions/gemini-cli.mjs.map +1 -1
- package/dist/services/definitions/ghost.cjs +60 -0
- package/dist/services/definitions/ghost.cjs.map +1 -0
- package/dist/services/definitions/ghost.d.cts +7 -0
- package/dist/services/definitions/ghost.d.cts.map +1 -0
- package/dist/services/definitions/ghost.mjs +1 -1
- package/dist/services/definitions/ghost.mjs.map +1 -1
- package/dist/services/definitions/gitea.cjs +51 -0
- package/dist/services/definitions/gitea.cjs.map +1 -0
- package/dist/services/definitions/gitea.d.cts +7 -0
- package/dist/services/definitions/gitea.d.cts.map +1 -0
- package/dist/services/definitions/gitea.mjs +1 -1
- package/dist/services/definitions/gitea.mjs.map +1 -1
- package/dist/services/definitions/gotify.cjs +64 -0
- package/dist/services/definitions/gotify.cjs.map +1 -0
- package/dist/services/definitions/gotify.d.cts +7 -0
- package/dist/services/definitions/gotify.d.cts.map +1 -0
- package/dist/services/definitions/gotify.mjs +3 -3
- package/dist/services/definitions/gotify.mjs.map +1 -1
- package/dist/services/definitions/grafana.cjs +77 -0
- package/dist/services/definitions/grafana.cjs.map +1 -0
- package/dist/services/definitions/grafana.d.cts +7 -0
- package/dist/services/definitions/grafana.d.cts.map +1 -0
- package/dist/services/definitions/grafana.mjs +2 -2
- package/dist/services/definitions/grafana.mjs.map +1 -1
- package/dist/services/definitions/headscale.cjs +73 -0
- package/dist/services/definitions/headscale.cjs.map +1 -0
- package/dist/services/definitions/headscale.d.cts +7 -0
- package/dist/services/definitions/headscale.d.cts.map +1 -0
- package/dist/services/definitions/headscale.mjs +2 -2
- package/dist/services/definitions/headscale.mjs.map +1 -1
- package/dist/services/definitions/hexstrike.cjs +46 -0
- package/dist/services/definitions/hexstrike.cjs.map +1 -0
- package/dist/services/definitions/hexstrike.d.cts +7 -0
- package/dist/services/definitions/hexstrike.d.cts.map +1 -0
- package/dist/services/definitions/hexstrike.mjs +1 -1
- package/dist/services/definitions/hexstrike.mjs.map +1 -1
- package/dist/services/definitions/homeassistant.cjs +63 -0
- package/dist/services/definitions/homeassistant.cjs.map +1 -0
- package/dist/services/definitions/homeassistant.d.cts +7 -0
- package/dist/services/definitions/homeassistant.d.cts.map +1 -0
- package/dist/services/definitions/homeassistant.mjs +1 -1
- package/dist/services/definitions/homeassistant.mjs.map +1 -1
- package/dist/services/definitions/immich.cjs +94 -0
- package/dist/services/definitions/immich.cjs.map +1 -0
- package/dist/services/definitions/immich.d.cts +7 -0
- package/dist/services/definitions/immich.d.cts.map +1 -0
- package/dist/services/definitions/immich.mjs +6 -6
- package/dist/services/definitions/immich.mjs.map +1 -1
- package/dist/services/definitions/index.cjs +291 -0
- package/dist/services/definitions/index.cjs.map +1 -0
- package/dist/services/definitions/index.d.cts +101 -0
- package/dist/services/definitions/index.d.cts.map +1 -0
- package/dist/services/definitions/jellyfin.cjs +64 -0
- package/dist/services/definitions/jellyfin.cjs.map +1 -0
- package/dist/services/definitions/jellyfin.d.cts +7 -0
- package/dist/services/definitions/jellyfin.d.cts.map +1 -0
- package/dist/services/definitions/jellyfin.mjs +1 -1
- package/dist/services/definitions/jellyfin.mjs.map +1 -1
- package/dist/services/definitions/jenkins.cjs +64 -0
- package/dist/services/definitions/jenkins.cjs.map +1 -0
- package/dist/services/definitions/jenkins.d.cts +7 -0
- package/dist/services/definitions/jenkins.d.cts.map +1 -0
- package/dist/services/definitions/jenkins.mjs +1 -1
- package/dist/services/definitions/jenkins.mjs.map +1 -1
- package/dist/services/definitions/kimi.cjs +48 -0
- package/dist/services/definitions/kimi.cjs.map +1 -0
- package/dist/services/definitions/kimi.d.cts +7 -0
- package/dist/services/definitions/kimi.d.cts.map +1 -0
- package/dist/services/definitions/kimi.mjs +1 -1
- package/dist/services/definitions/kimi.mjs.map +1 -1
- package/dist/services/definitions/lasuite-meet-agents.cjs +38 -0
- package/dist/services/definitions/lasuite-meet-agents.cjs.map +1 -0
- package/dist/services/definitions/lasuite-meet-agents.d.cts +7 -0
- package/dist/services/definitions/lasuite-meet-agents.d.cts.map +1 -0
- package/dist/services/definitions/lasuite-meet-agents.mjs +1 -1
- package/dist/services/definitions/lasuite-meet-agents.mjs.map +1 -1
- package/dist/services/definitions/lasuite-meet-backend.cjs +136 -0
- package/dist/services/definitions/lasuite-meet-backend.cjs.map +1 -0
- package/dist/services/definitions/lasuite-meet-backend.d.cts +7 -0
- package/dist/services/definitions/lasuite-meet-backend.d.cts.map +1 -0
- package/dist/services/definitions/lasuite-meet-backend.mjs +3 -3
- package/dist/services/definitions/lasuite-meet-backend.mjs.map +1 -1
- package/dist/services/definitions/lasuite-meet-frontend.cjs +50 -0
- package/dist/services/definitions/lasuite-meet-frontend.cjs.map +1 -0
- package/dist/services/definitions/lasuite-meet-frontend.d.cts +7 -0
- package/dist/services/definitions/lasuite-meet-frontend.d.cts.map +1 -0
- package/dist/services/definitions/lasuite-meet-frontend.mjs +3 -3
- package/dist/services/definitions/lasuite-meet-frontend.mjs.map +1 -1
- package/dist/services/definitions/librechat.cjs +52 -0
- package/dist/services/definitions/librechat.cjs.map +1 -0
- package/dist/services/definitions/librechat.d.cts +7 -0
- package/dist/services/definitions/librechat.d.cts.map +1 -0
- package/dist/services/definitions/librechat.mjs +1 -1
- package/dist/services/definitions/librechat.mjs.map +1 -1
- package/dist/services/definitions/lightpanda.cjs +61 -0
- package/dist/services/definitions/lightpanda.cjs.map +1 -0
- package/dist/services/definitions/lightpanda.d.cts +7 -0
- package/dist/services/definitions/lightpanda.d.cts.map +1 -0
- package/dist/services/definitions/litellm.cjs +49 -0
- package/dist/services/definitions/litellm.cjs.map +1 -0
- package/dist/services/definitions/litellm.d.cts +7 -0
- package/dist/services/definitions/litellm.d.cts.map +1 -0
- package/dist/services/definitions/litellm.mjs +1 -1
- package/dist/services/definitions/litellm.mjs.map +1 -1
- package/dist/services/definitions/livekit.cjs +58 -0
- package/dist/services/definitions/livekit.cjs.map +1 -0
- package/dist/services/definitions/livekit.d.cts +7 -0
- package/dist/services/definitions/livekit.d.cts.map +1 -0
- package/dist/services/definitions/loki.cjs +53 -0
- package/dist/services/definitions/loki.cjs.map +1 -0
- package/dist/services/definitions/loki.d.cts +7 -0
- package/dist/services/definitions/loki.d.cts.map +1 -0
- package/dist/services/definitions/loki.mjs +1 -1
- package/dist/services/definitions/loki.mjs.map +1 -1
- package/dist/services/definitions/matomo.cjs +82 -0
- package/dist/services/definitions/matomo.cjs.map +1 -0
- package/dist/services/definitions/matomo.d.cts +7 -0
- package/dist/services/definitions/matomo.d.cts.map +1 -0
- package/dist/services/definitions/matomo.mjs +1 -1
- package/dist/services/definitions/matomo.mjs.map +1 -1
- package/dist/services/definitions/matrix-synapse.cjs +90 -0
- package/dist/services/definitions/matrix-synapse.cjs.map +1 -0
- package/dist/services/definitions/matrix-synapse.d.cts +7 -0
- package/dist/services/definitions/matrix-synapse.d.cts.map +1 -0
- package/dist/services/definitions/matrix-synapse.mjs +1 -1
- package/dist/services/definitions/matrix-synapse.mjs.map +1 -1
- package/dist/services/definitions/mattermost.cjs +63 -0
- package/dist/services/definitions/mattermost.cjs.map +1 -0
- package/dist/services/definitions/mattermost.d.cts +7 -0
- package/dist/services/definitions/mattermost.d.cts.map +1 -0
- package/dist/services/definitions/mattermost.mjs +1 -1
- package/dist/services/definitions/mattermost.mjs.map +1 -1
- package/dist/services/definitions/meilisearch.cjs +80 -0
- package/dist/services/definitions/meilisearch.cjs.map +1 -0
- package/dist/services/definitions/meilisearch.d.cts +7 -0
- package/dist/services/definitions/meilisearch.d.cts.map +1 -0
- package/dist/services/definitions/meilisearch.mjs +4 -4
- package/dist/services/definitions/meilisearch.mjs.map +1 -1
- package/dist/services/definitions/milvus.cjs +77 -0
- package/dist/services/definitions/milvus.cjs.map +1 -0
- package/dist/services/definitions/milvus.d.cts +7 -0
- package/dist/services/definitions/milvus.d.cts.map +1 -0
- package/dist/services/definitions/milvus.mjs +1 -1
- package/dist/services/definitions/milvus.mjs.map +1 -1
- package/dist/services/definitions/minio.cjs +104 -0
- package/dist/services/definitions/minio.cjs.map +1 -0
- package/dist/services/definitions/minio.d.cts +7 -0
- package/dist/services/definitions/minio.d.cts.map +1 -0
- package/dist/services/definitions/minio.mjs +1 -1
- package/dist/services/definitions/minio.mjs.map +1 -1
- package/dist/services/definitions/mission-control.cjs +69 -0
- package/dist/services/definitions/mission-control.cjs.map +1 -0
- package/dist/services/definitions/mission-control.d.cts +7 -0
- package/dist/services/definitions/mission-control.d.cts.map +1 -0
- package/dist/services/definitions/mixpost.cjs +89 -0
- package/dist/services/definitions/mixpost.cjs.map +1 -0
- package/dist/services/definitions/mixpost.d.cts +7 -0
- package/dist/services/definitions/mixpost.d.cts.map +1 -0
- package/dist/services/definitions/mixpost.mjs +1 -1
- package/dist/services/definitions/mixpost.mjs.map +1 -1
- package/dist/services/definitions/motion-canvas.cjs +54 -0
- package/dist/services/definitions/motion-canvas.cjs.map +1 -0
- package/dist/services/definitions/motion-canvas.d.cts +7 -0
- package/dist/services/definitions/motion-canvas.d.cts.map +1 -0
- package/dist/services/definitions/motion-canvas.mjs +1 -1
- package/dist/services/definitions/motion-canvas.mjs.map +1 -1
- package/dist/services/definitions/n8n.cjs +156 -0
- package/dist/services/definitions/n8n.cjs.map +1 -0
- package/dist/services/definitions/n8n.d.cts +7 -0
- package/dist/services/definitions/n8n.d.cts.map +1 -0
- package/dist/services/definitions/n8n.mjs +1 -1
- package/dist/services/definitions/n8n.mjs.map +1 -1
- package/dist/services/definitions/neo4j.cjs +93 -0
- package/dist/services/definitions/neo4j.cjs.map +1 -0
- package/dist/services/definitions/neo4j.d.cts +7 -0
- package/dist/services/definitions/neo4j.d.cts.map +1 -0
- package/dist/services/definitions/neo4j.mjs +1 -1
- package/dist/services/definitions/neo4j.mjs.map +1 -1
- package/dist/services/definitions/nextcloud.cjs +82 -0
- package/dist/services/definitions/nextcloud.cjs.map +1 -0
- package/dist/services/definitions/nextcloud.d.cts +7 -0
- package/dist/services/definitions/nextcloud.d.cts.map +1 -0
- package/dist/services/definitions/nextcloud.mjs +19 -19
- package/dist/services/definitions/nextcloud.mjs.map +1 -1
- package/dist/services/definitions/nocodb.cjs +47 -0
- package/dist/services/definitions/nocodb.cjs.map +1 -0
- package/dist/services/definitions/nocodb.d.cts +7 -0
- package/dist/services/definitions/nocodb.d.cts.map +1 -0
- package/dist/services/definitions/nocodb.mjs +1 -1
- package/dist/services/definitions/nocodb.mjs.map +1 -1
- package/dist/services/definitions/ntfy.cjs +65 -0
- package/dist/services/definitions/ntfy.cjs.map +1 -0
- package/dist/services/definitions/ntfy.d.cts +7 -0
- package/dist/services/definitions/ntfy.d.cts.map +1 -0
- package/dist/services/definitions/ntfy.mjs +2 -2
- package/dist/services/definitions/ntfy.mjs.map +1 -1
- package/dist/services/definitions/ollama.cjs +68 -0
- package/dist/services/definitions/ollama.cjs.map +1 -0
- package/dist/services/definitions/ollama.d.cts +7 -0
- package/dist/services/definitions/ollama.d.cts.map +1 -0
- package/dist/services/definitions/ollama.mjs +1 -1
- package/dist/services/definitions/ollama.mjs.map +1 -1
- package/dist/services/definitions/open-webui.cjs +52 -0
- package/dist/services/definitions/open-webui.cjs.map +1 -0
- package/dist/services/definitions/open-webui.d.cts +7 -0
- package/dist/services/definitions/open-webui.d.cts.map +1 -0
- package/dist/services/definitions/open-webui.mjs +1 -1
- package/dist/services/definitions/open-webui.mjs.map +1 -1
- package/dist/services/definitions/opencode.cjs +52 -0
- package/dist/services/definitions/opencode.cjs.map +1 -0
- package/dist/services/definitions/opencode.d.cts +7 -0
- package/dist/services/definitions/opencode.d.cts.map +1 -0
- package/dist/services/definitions/opencode.mjs +1 -1
- package/dist/services/definitions/opencode.mjs.map +1 -1
- package/dist/services/definitions/openpanel.cjs +48 -0
- package/dist/services/definitions/openpanel.cjs.map +1 -0
- package/dist/services/definitions/openpanel.d.cts +7 -0
- package/dist/services/definitions/openpanel.d.cts.map +1 -0
- package/dist/services/definitions/openpanel.mjs +3 -3
- package/dist/services/definitions/openpanel.mjs.map +1 -1
- package/dist/services/definitions/outline.cjs +76 -0
- package/dist/services/definitions/outline.cjs.map +1 -0
- package/dist/services/definitions/outline.d.cts +7 -0
- package/dist/services/definitions/outline.d.cts.map +1 -0
- package/dist/services/definitions/paperless-ngx.cjs +95 -0
- package/dist/services/definitions/paperless-ngx.cjs.map +1 -0
- package/dist/services/definitions/paperless-ngx.d.cts +7 -0
- package/dist/services/definitions/paperless-ngx.d.cts.map +1 -0
- package/dist/services/definitions/paperless-ngx.mjs +1 -1
- package/dist/services/definitions/paperless-ngx.mjs.map +1 -1
- package/dist/services/definitions/pentagi.cjs +46 -0
- package/dist/services/definitions/pentagi.cjs.map +1 -0
- package/dist/services/definitions/pentagi.d.cts +7 -0
- package/dist/services/definitions/pentagi.d.cts.map +1 -0
- package/dist/services/definitions/pentagi.mjs +2 -2
- package/dist/services/definitions/pentagi.mjs.map +1 -1
- package/dist/services/definitions/pentestagent.cjs +41 -0
- package/dist/services/definitions/pentestagent.cjs.map +1 -0
- package/dist/services/definitions/pentestagent.d.cts +7 -0
- package/dist/services/definitions/pentestagent.d.cts.map +1 -0
- package/dist/services/definitions/playwright-server.cjs +44 -0
- package/dist/services/definitions/playwright-server.cjs.map +1 -0
- package/dist/services/definitions/playwright-server.d.cts +7 -0
- package/dist/services/definitions/playwright-server.d.cts.map +1 -0
- package/dist/services/definitions/playwright-server.mjs +1 -1
- package/dist/services/definitions/playwright-server.mjs.map +1 -1
- package/dist/services/definitions/portainer.cjs +51 -0
- package/dist/services/definitions/portainer.cjs.map +1 -0
- package/dist/services/definitions/portainer.d.cts +7 -0
- package/dist/services/definitions/portainer.d.cts.map +1 -0
- package/dist/services/definitions/portainer.mjs +1 -1
- package/dist/services/definitions/portainer.mjs.map +1 -1
- package/dist/services/definitions/postgresql.cjs +86 -0
- package/dist/services/definitions/postgresql.cjs.map +1 -0
- package/dist/services/definitions/postgresql.d.cts +7 -0
- package/dist/services/definitions/postgresql.d.cts.map +1 -0
- package/dist/services/definitions/postgresql.mjs +1 -1
- package/dist/services/definitions/postgresql.mjs.map +1 -1
- package/dist/services/definitions/postiz.cjs +85 -0
- package/dist/services/definitions/postiz.cjs.map +1 -0
- package/dist/services/definitions/postiz.d.cts +7 -0
- package/dist/services/definitions/postiz.d.cts.map +1 -0
- package/dist/services/definitions/postiz.mjs +1 -1
- package/dist/services/definitions/postiz.mjs.map +1 -1
- package/dist/services/definitions/prometheus.cjs +54 -0
- package/dist/services/definitions/prometheus.cjs.map +1 -0
- package/dist/services/definitions/prometheus.d.cts +7 -0
- package/dist/services/definitions/prometheus.d.cts.map +1 -0
- package/dist/services/definitions/prometheus.mjs +1 -1
- package/dist/services/definitions/prometheus.mjs.map +1 -1
- package/dist/services/definitions/qdrant.cjs +79 -0
- package/dist/services/definitions/qdrant.cjs.map +1 -0
- package/dist/services/definitions/qdrant.d.cts +7 -0
- package/dist/services/definitions/qdrant.d.cts.map +1 -0
- package/dist/services/definitions/qdrant.mjs +1 -1
- package/dist/services/definitions/qdrant.mjs.map +1 -1
- package/dist/services/definitions/redis.cjs +93 -0
- package/dist/services/definitions/redis.cjs.map +1 -0
- package/dist/services/definitions/redis.d.cts +7 -0
- package/dist/services/definitions/redis.d.cts.map +1 -0
- package/dist/services/definitions/redis.mjs +1 -1
- package/dist/services/definitions/redis.mjs.map +1 -1
- package/dist/services/definitions/remotion.cjs +57 -0
- package/dist/services/definitions/remotion.cjs.map +1 -0
- package/dist/services/definitions/remotion.d.cts +7 -0
- package/dist/services/definitions/remotion.d.cts.map +1 -0
- package/dist/services/definitions/remotion.mjs +1 -1
- package/dist/services/definitions/remotion.mjs.map +1 -1
- package/dist/services/definitions/rocketchat.cjs +59 -0
- package/dist/services/definitions/rocketchat.cjs.map +1 -0
- package/dist/services/definitions/rocketchat.d.cts +7 -0
- package/dist/services/definitions/rocketchat.d.cts.map +1 -0
- package/dist/services/definitions/rocketchat.mjs +1 -1
- package/dist/services/definitions/rocketchat.mjs.map +1 -1
- package/dist/services/definitions/scrapling.cjs +46 -0
- package/dist/services/definitions/scrapling.cjs.map +1 -0
- package/dist/services/definitions/scrapling.d.cts +7 -0
- package/dist/services/definitions/scrapling.d.cts.map +1 -0
- package/dist/services/definitions/scrapling.mjs +2 -2
- package/dist/services/definitions/scrapling.mjs.map +1 -1
- package/dist/services/definitions/searxng.cjs +67 -0
- package/dist/services/definitions/searxng.cjs.map +1 -0
- package/dist/services/definitions/searxng.d.cts +7 -0
- package/dist/services/definitions/searxng.d.cts.map +1 -0
- package/dist/services/definitions/searxng.mjs +1 -1
- package/dist/services/definitions/searxng.mjs.map +1 -1
- package/dist/services/definitions/signoz.cjs +56 -0
- package/dist/services/definitions/signoz.cjs.map +1 -0
- package/dist/services/definitions/signoz.d.cts +7 -0
- package/dist/services/definitions/signoz.d.cts.map +1 -0
- package/dist/services/definitions/signoz.mjs +2 -2
- package/dist/services/definitions/signoz.mjs.map +1 -1
- package/dist/services/definitions/solidityguard.cjs +51 -0
- package/dist/services/definitions/solidityguard.cjs.map +1 -0
- package/dist/services/definitions/solidityguard.d.cts +7 -0
- package/dist/services/definitions/solidityguard.d.cts.map +1 -0
- package/dist/services/definitions/solidityguard.mjs +1 -1
- package/dist/services/definitions/solidityguard.mjs.map +1 -1
- package/dist/services/definitions/stable-diffusion.cjs +50 -0
- package/dist/services/definitions/stable-diffusion.cjs.map +1 -0
- package/dist/services/definitions/stable-diffusion.d.cts +7 -0
- package/dist/services/definitions/stable-diffusion.d.cts.map +1 -0
- package/dist/services/definitions/stable-diffusion.mjs +1 -1
- package/dist/services/definitions/stable-diffusion.mjs.map +1 -1
- package/dist/services/definitions/steel-browser.cjs +79 -0
- package/dist/services/definitions/steel-browser.cjs.map +1 -0
- package/dist/services/definitions/steel-browser.d.cts +7 -0
- package/dist/services/definitions/steel-browser.d.cts.map +1 -0
- package/dist/services/definitions/steel-browser.mjs +1 -1
- package/dist/services/definitions/steel-browser.mjs.map +1 -1
- package/dist/services/definitions/stream-gateway.cjs +135 -0
- package/dist/services/definitions/stream-gateway.cjs.map +1 -0
- package/dist/services/definitions/stream-gateway.d.cts +7 -0
- package/dist/services/definitions/stream-gateway.d.cts.map +1 -0
- package/dist/services/definitions/stream-gateway.mjs +2 -2
- package/dist/services/definitions/stream-gateway.mjs.map +1 -1
- package/dist/services/definitions/supabase.cjs +71 -0
- package/dist/services/definitions/supabase.cjs.map +1 -0
- package/dist/services/definitions/supabase.d.cts +7 -0
- package/dist/services/definitions/supabase.d.cts.map +1 -0
- package/dist/services/definitions/supabase.mjs +2 -2
- package/dist/services/definitions/supabase.mjs.map +1 -1
- package/dist/services/definitions/tailscale.cjs +72 -0
- package/dist/services/definitions/tailscale.cjs.map +1 -0
- package/dist/services/definitions/tailscale.d.cts +7 -0
- package/dist/services/definitions/tailscale.d.cts.map +1 -0
- package/dist/services/definitions/tailscale.mjs +1 -1
- package/dist/services/definitions/tailscale.mjs.map +1 -1
- package/dist/services/definitions/temporal.cjs +102 -0
- package/dist/services/definitions/temporal.cjs.map +1 -0
- package/dist/services/definitions/temporal.d.cts +7 -0
- package/dist/services/definitions/temporal.d.cts.map +1 -0
- package/dist/services/definitions/traefik.cjs +59 -0
- package/dist/services/definitions/traefik.cjs.map +1 -0
- package/dist/services/definitions/traefik.d.cts +7 -0
- package/dist/services/definitions/traefik.d.cts.map +1 -0
- package/dist/services/definitions/traefik.mjs +1 -1
- package/dist/services/definitions/traefik.mjs.map +1 -1
- package/dist/services/definitions/umami.cjs +48 -0
- package/dist/services/definitions/umami.cjs.map +1 -0
- package/dist/services/definitions/umami.d.cts +7 -0
- package/dist/services/definitions/umami.d.cts.map +1 -0
- package/dist/services/definitions/uptime-kuma.cjs +53 -0
- package/dist/services/definitions/uptime-kuma.cjs.map +1 -0
- package/dist/services/definitions/uptime-kuma.d.cts +7 -0
- package/dist/services/definitions/uptime-kuma.d.cts.map +1 -0
- package/dist/services/definitions/uptime-kuma.mjs +2 -2
- package/dist/services/definitions/uptime-kuma.mjs.map +1 -1
- package/dist/services/definitions/usesend.cjs +101 -0
- package/dist/services/definitions/usesend.cjs.map +1 -0
- package/dist/services/definitions/usesend.d.cts +7 -0
- package/dist/services/definitions/usesend.d.cts.map +1 -0
- package/dist/services/definitions/usesend.mjs +4 -4
- package/dist/services/definitions/usesend.mjs.map +1 -1
- package/dist/services/definitions/valkey.cjs +63 -0
- package/dist/services/definitions/valkey.cjs.map +1 -0
- package/dist/services/definitions/valkey.d.cts +7 -0
- package/dist/services/definitions/valkey.d.cts.map +1 -0
- package/dist/services/definitions/valkey.mjs +1 -1
- package/dist/services/definitions/valkey.mjs.map +1 -1
- package/dist/services/definitions/vaultwarden.cjs +65 -0
- package/dist/services/definitions/vaultwarden.cjs.map +1 -0
- package/dist/services/definitions/vaultwarden.d.cts +7 -0
- package/dist/services/definitions/vaultwarden.d.cts.map +1 -0
- package/dist/services/definitions/vaultwarden.mjs +2 -2
- package/dist/services/definitions/vaultwarden.mjs.map +1 -1
- package/dist/services/definitions/watchtower.cjs +49 -0
- package/dist/services/definitions/watchtower.cjs.map +1 -0
- package/dist/services/definitions/watchtower.d.cts +7 -0
- package/dist/services/definitions/watchtower.d.cts.map +1 -0
- package/dist/services/definitions/weaviate.cjs +92 -0
- package/dist/services/definitions/weaviate.cjs.map +1 -0
- package/dist/services/definitions/weaviate.d.cts +7 -0
- package/dist/services/definitions/weaviate.d.cts.map +1 -0
- package/dist/services/definitions/weaviate.mjs +2 -2
- package/dist/services/definitions/weaviate.mjs.map +1 -1
- package/dist/services/definitions/whisper.cjs +64 -0
- package/dist/services/definitions/whisper.cjs.map +1 -0
- package/dist/services/definitions/whisper.d.cts +7 -0
- package/dist/services/definitions/whisper.d.cts.map +1 -0
- package/dist/services/definitions/whisper.mjs +2 -2
- package/dist/services/definitions/whisper.mjs.map +1 -1
- package/dist/services/definitions/xyops.cjs +88 -0
- package/dist/services/definitions/xyops.cjs.map +1 -0
- package/dist/services/definitions/xyops.d.cts +7 -0
- package/dist/services/definitions/xyops.d.cts.map +1 -0
- package/dist/services/definitions/xyops.mjs +1 -1
- package/dist/services/definitions/xyops.mjs.map +1 -1
- package/dist/services/registry.cjs +35 -0
- package/dist/services/registry.cjs.map +1 -0
- package/dist/services/registry.d.cts +16 -0
- package/dist/services/registry.d.cts.map +1 -0
- package/dist/services/registry.test.cjs +63 -0
- package/dist/services/registry.test.cjs.map +1 -0
- package/dist/services/registry.test.d.cts +1 -0
- package/dist/services/registry.test.mjs +1 -1
- package/dist/skills/registry.cjs +712 -0
- package/dist/skills/registry.cjs.map +1 -0
- package/dist/skills/registry.d.cts +11 -0
- package/dist/skills/registry.d.cts.map +1 -0
- package/dist/skills/skill-manifest.cjs +23 -0
- package/dist/skills/skill-manifest.cjs.map +1 -0
- package/dist/skills/skill-manifest.d.cts +20 -0
- package/dist/skills/skill-manifest.d.cts.map +1 -0
- package/dist/types.cjs +149 -0
- package/dist/types.cjs.map +1 -0
- package/dist/types.d.cts +82 -0
- package/dist/types.d.cts.map +1 -0
- package/dist/types.d.mts +9 -2
- package/dist/types.d.mts.map +1 -1
- package/dist/types.mjs +40 -0
- package/dist/types.mjs.map +1 -1
- package/dist/validator.cjs +124 -0
- package/dist/validator.cjs.map +1 -0
- package/dist/validator.d.cts +20 -0
- package/dist/validator.d.cts.map +1 -0
- package/dist/validator.test.cjs +64 -0
- package/dist/validator.test.cjs.map +1 -0
- package/dist/validator.test.d.cts +1 -0
- package/dist/validator.test.mjs +1 -1
- package/dist/version-manager.cjs +65 -0
- package/dist/version-manager.cjs.map +1 -0
- package/dist/version-manager.d.cts +14 -0
- package/dist/version-manager.d.cts.map +1 -0
- package/dist/version-manager.test.cjs +101 -0
- package/dist/version-manager.test.cjs.map +1 -0
- package/dist/version-manager.test.d.cts +1 -0
- package/dist/version-manager.test.mjs +1 -1
- package/dist/vi.2VT5v0um-BmRMvymT.cjs +12934 -0
- package/dist/vi.2VT5v0um-BmRMvymT.cjs.map +1 -0
- package/dist/{vi.2VT5v0um-BgmKutxR.mjs → vi.2VT5v0um-CFyDIn0m.mjs} +5 -5
- package/dist/{vi.2VT5v0um-BgmKutxR.mjs.map → vi.2VT5v0um-CFyDIn0m.mjs.map} +1 -1
- package/package.json +24 -3
- package/src/__snapshots__/composer.snapshot.test.ts.snap +20 -20
- package/src/compose-validation.test.ts +102 -0
- package/src/composer.test.ts +1 -1
- package/src/composer.ts +331 -53
- package/src/deployers/coolify.ts +240 -0
- package/src/deployers/dokploy.ts +173 -0
- package/src/deployers/index.ts +36 -0
- package/src/deployers/types.ts +70 -0
- package/src/generate.ts +45 -1
- package/src/generators/cloud-init.ts +137 -0
- package/src/generators/env.ts +112 -6
- package/src/generators/health-check.ts +2 -2
- package/src/generators/openclaw-install-script.ts +77 -0
- package/src/generators/openclaw-json.ts +195 -58
- package/src/generators/postgres-init.ts +11 -0
- package/src/generators/readme.ts +103 -4
- package/src/generators/stack-manifest.ts +127 -0
- package/src/index.ts +30 -0
- package/src/port-scanner.ts +189 -0
- package/src/presets/presets.test.ts +73 -0
- package/src/presets/registry.test.ts +3 -0
- package/src/presets/registry.ts +30 -7
- package/src/resolver.ts +2 -0
- package/src/schema.ts +30 -1
- package/src/services/definitions/anything-llm.ts +2 -2
- package/src/services/definitions/appflowy.ts +1 -1
- package/src/services/definitions/authentik.ts +5 -5
- package/src/services/definitions/beszel.ts +1 -1
- package/src/services/definitions/browserless.ts +1 -1
- package/src/services/definitions/caddy.ts +2 -2
- package/src/services/definitions/cal-com.ts +2 -2
- package/src/services/definitions/chromadb.ts +3 -3
- package/src/services/definitions/claude-code.ts +1 -1
- package/src/services/definitions/code-server.ts +1 -1
- package/src/services/definitions/codex.ts +1 -1
- package/src/services/definitions/comfyui.ts +1 -1
- package/src/services/definitions/coolify.ts +1 -1
- package/src/services/definitions/crowdsec.ts +2 -2
- package/src/services/definitions/desktop-environment.ts +1 -1
- package/src/services/definitions/dify.ts +1 -1
- package/src/services/definitions/docsgpt.ts +1 -1
- package/src/services/definitions/dokploy.ts +2 -2
- package/src/services/definitions/dozzle.ts +1 -1
- package/src/services/definitions/ffmpeg.ts +2 -2
- package/src/services/definitions/flowise.ts +1 -1
- package/src/services/definitions/gemini-cli.ts +8 -1
- package/src/services/definitions/ghost.ts +1 -1
- package/src/services/definitions/gitea.ts +1 -1
- package/src/services/definitions/gotify.ts +3 -3
- package/src/services/definitions/grafana.ts +2 -2
- package/src/services/definitions/headscale.ts +68 -68
- package/src/services/definitions/hexstrike.ts +1 -1
- package/src/services/definitions/homeassistant.ts +1 -1
- package/src/services/definitions/immich.ts +6 -6
- package/src/services/definitions/jellyfin.ts +1 -1
- package/src/services/definitions/jenkins.ts +1 -1
- package/src/services/definitions/kimi.ts +1 -1
- package/src/services/definitions/lasuite-meet-agents.ts +1 -1
- package/src/services/definitions/lasuite-meet-backend.ts +3 -3
- package/src/services/definitions/lasuite-meet-frontend.ts +3 -3
- package/src/services/definitions/librechat.ts +1 -1
- package/src/services/definitions/litellm.ts +1 -1
- package/src/services/definitions/loki.ts +1 -1
- package/src/services/definitions/matomo.ts +1 -1
- package/src/services/definitions/matrix-synapse.ts +1 -1
- package/src/services/definitions/mattermost.ts +1 -1
- package/src/services/definitions/meilisearch.ts +4 -4
- package/src/services/definitions/milvus.ts +1 -1
- package/src/services/definitions/minio.ts +1 -1
- package/src/services/definitions/mixpost.ts +1 -1
- package/src/services/definitions/motion-canvas.ts +1 -1
- package/src/services/definitions/n8n.ts +1 -1
- package/src/services/definitions/neo4j.ts +1 -1
- package/src/services/definitions/nextcloud.ts +19 -19
- package/src/services/definitions/nocodb.ts +1 -1
- package/src/services/definitions/ntfy.ts +2 -2
- package/src/services/definitions/ollama.ts +1 -1
- package/src/services/definitions/open-webui.ts +1 -1
- package/src/services/definitions/opencode.ts +1 -1
- package/src/services/definitions/openpanel.ts +3 -3
- package/src/services/definitions/paperless-ngx.ts +1 -1
- package/src/services/definitions/pentagi.ts +2 -2
- package/src/services/definitions/playwright-server.ts +1 -1
- package/src/services/definitions/portainer.ts +1 -1
- package/src/services/definitions/postgresql.ts +1 -1
- package/src/services/definitions/postiz.ts +1 -1
- package/src/services/definitions/prometheus.ts +1 -1
- package/src/services/definitions/qdrant.ts +1 -1
- package/src/services/definitions/redis.ts +1 -1
- package/src/services/definitions/remotion.ts +1 -1
- package/src/services/definitions/rocketchat.ts +1 -1
- package/src/services/definitions/scrapling.ts +2 -2
- package/src/services/definitions/searxng.ts +1 -1
- package/src/services/definitions/signoz.ts +2 -2
- package/src/services/definitions/solidityguard.ts +1 -1
- package/src/services/definitions/stable-diffusion.ts +1 -1
- package/src/services/definitions/steel-browser.ts +1 -1
- package/src/services/definitions/stream-gateway.ts +2 -2
- package/src/services/definitions/supabase.ts +2 -2
- package/src/services/definitions/tailscale.ts +1 -1
- package/src/services/definitions/traefik.ts +1 -1
- package/src/services/definitions/uptime-kuma.ts +2 -2
- package/src/services/definitions/usesend.ts +4 -4
- package/src/services/definitions/valkey.ts +1 -1
- package/src/services/definitions/vaultwarden.ts +2 -2
- package/src/services/definitions/weaviate.ts +2 -2
- package/src/services/definitions/whisper.ts +2 -2
- package/src/services/definitions/xyops.ts +1 -1
- package/src/types.ts +138 -20
- package/tsdown.config.ts +2 -2
package/README.md
CHANGED
|
@@ -61,6 +61,33 @@ export const myCoolService: ServiceDefinition = {
|
|
|
61
61
|
|
|
62
62
|
Skills are markdown instructions or code bundles mapped to specific tools. They are defined in `skills/manifest.json`. During generation, if a `SkillPack` is explicitly selected or implicitly included via an auto-installing service, the Core locates the corresponding files and mounts them into the generated stack's Volume pathways.
|
|
63
63
|
|
|
64
|
+
## PaaS Deployers
|
|
65
|
+
|
|
66
|
+
The core includes deployer clients for pushing generated stacks directly to self-hosted PaaS platforms:
|
|
67
|
+
|
|
68
|
+
| Provider | Module | Auth |
|
|
69
|
+
|-------------|------------------------|-------------------------|
|
|
70
|
+
| **Dokploy** | `deployers/dokploy.ts` | `x-api-key` header |
|
|
71
|
+
| **Coolify** | `deployers/coolify.ts` | `Authorization: Bearer` |
|
|
72
|
+
|
|
73
|
+
All deployers implement the `PaasDeployer` interface (defined in `deployers/types.ts`). To add a new provider, implement the interface and register it in `deployers/index.ts`.
|
|
74
|
+
|
|
75
|
+
```typescript
|
|
76
|
+
import { getDeployer, getAvailableDeployers } from "@better-openclaw/core";
|
|
77
|
+
|
|
78
|
+
// List available providers
|
|
79
|
+
const providers = getAvailableDeployers(); // ["dokploy", "coolify"]
|
|
80
|
+
|
|
81
|
+
// Deploy a stack
|
|
82
|
+
const deployer = getDeployer("dokploy");
|
|
83
|
+
const result = await deployer.deploy({
|
|
84
|
+
target: { instanceUrl: "https://dokploy.example.com", apiKey: "..." },
|
|
85
|
+
projectName: "my-stack",
|
|
86
|
+
composeYaml: "...",
|
|
87
|
+
envContent: "...",
|
|
88
|
+
});
|
|
89
|
+
```
|
|
90
|
+
|
|
64
91
|
## Development
|
|
65
92
|
|
|
66
93
|
```bash
|
|
@@ -0,0 +1,53 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: 'Module' });
|
|
2
|
+
|
|
3
|
+
//#region src/bare-metal-partition.ts
|
|
4
|
+
/**
|
|
5
|
+
* Maps Platform (e.g. linux/amd64) to NativePlatform (linux, windows, macos).
|
|
6
|
+
*/
|
|
7
|
+
function platformToNativePlatform(platform) {
|
|
8
|
+
if (platform.startsWith("linux/")) return "linux";
|
|
9
|
+
if (platform.startsWith("windows/")) return "windows";
|
|
10
|
+
if (platform.startsWith("macos/")) return "macos";
|
|
11
|
+
console.warn(`Unknown platform prefix in "${platform}", defaulting to linux`);
|
|
12
|
+
return "linux";
|
|
13
|
+
}
|
|
14
|
+
/**
|
|
15
|
+
* Partitions resolved services into native (run on host via scripts) vs Docker-only.
|
|
16
|
+
* Gateway and CLI are never native; services with nativeSupported and a matching
|
|
17
|
+
* nativeRecipe for the platform go to native, rest to Docker.
|
|
18
|
+
*/
|
|
19
|
+
function partitionBareMetal(resolved, platform) {
|
|
20
|
+
const nativePlatform = platformToNativePlatform(platform);
|
|
21
|
+
const nativeServices = [];
|
|
22
|
+
const dockerOnlyServices = [];
|
|
23
|
+
const nativeIds = /* @__PURE__ */ new Set();
|
|
24
|
+
for (const entry of resolved.services) {
|
|
25
|
+
const def = entry.definition;
|
|
26
|
+
if (def.nativeSupported === true && def.nativeRecipes?.length && def.nativeRecipes.some((r) => r.platform === nativePlatform)) {
|
|
27
|
+
nativeServices.push(entry);
|
|
28
|
+
nativeIds.add(def.id);
|
|
29
|
+
} else dockerOnlyServices.push(entry);
|
|
30
|
+
}
|
|
31
|
+
return {
|
|
32
|
+
nativeServices,
|
|
33
|
+
dockerOnlyServices,
|
|
34
|
+
nativeIds
|
|
35
|
+
};
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Returns a new ResolverOutput containing only the given service list (same order).
|
|
39
|
+
* Used to build compose for Docker-only subset when bare-metal has native services.
|
|
40
|
+
*/
|
|
41
|
+
function resolvedWithOnlyServices(resolved, services) {
|
|
42
|
+
const idSet = new Set(services.map((s) => s.definition.id));
|
|
43
|
+
return {
|
|
44
|
+
...resolved,
|
|
45
|
+
services: resolved.services.filter((s) => idSet.has(s.definition.id))
|
|
46
|
+
};
|
|
47
|
+
}
|
|
48
|
+
|
|
49
|
+
//#endregion
|
|
50
|
+
exports.partitionBareMetal = partitionBareMetal;
|
|
51
|
+
exports.platformToNativePlatform = platformToNativePlatform;
|
|
52
|
+
exports.resolvedWithOnlyServices = resolvedWithOnlyServices;
|
|
53
|
+
//# sourceMappingURL=bare-metal-partition.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bare-metal-partition.cjs","names":[],"sources":["../src/bare-metal-partition.ts"],"sourcesContent":["import type { NativePlatform, Platform, ResolvedService, ResolverOutput } from \"./types.js\";\n\n/**\n * Maps Platform (e.g. linux/amd64) to NativePlatform (linux, windows, macos).\n */\nexport function platformToNativePlatform(platform: Platform): NativePlatform {\n\tif (platform.startsWith(\"linux/\")) return \"linux\";\n\tif (platform.startsWith(\"windows/\")) return \"windows\";\n\tif (platform.startsWith(\"macos/\")) return \"macos\";\n\tconsole.warn(`Unknown platform prefix in \"${platform}\", defaulting to linux`);\n\treturn \"linux\";\n}\n\nexport interface BareMetalPartitionResult {\n\tnativeServices: ResolvedService[];\n\tdockerOnlyServices: ResolvedService[];\n\tnativeIds: Set<string>;\n}\n\n/**\n * Partitions resolved services into native (run on host via scripts) vs Docker-only.\n * Gateway and CLI are never native; services with nativeSupported and a matching\n * nativeRecipe for the platform go to native, rest to Docker.\n */\nexport function partitionBareMetal(\n\tresolved: ResolverOutput,\n\tplatform: Platform,\n): BareMetalPartitionResult {\n\tconst nativePlatform = platformToNativePlatform(platform);\n\tconst nativeServices: ResolvedService[] = [];\n\tconst dockerOnlyServices: ResolvedService[] = [];\n\tconst nativeIds = new Set<string>();\n\n\tfor (const entry of resolved.services) {\n\t\tconst def = entry.definition;\n\t\tconst hasNativeRecipe =\n\t\t\tdef.nativeSupported === true &&\n\t\t\tdef.nativeRecipes?.length &&\n\t\t\tdef.nativeRecipes.some((r) => r.platform === nativePlatform);\n\n\t\tif (hasNativeRecipe) {\n\t\t\tnativeServices.push(entry);\n\t\t\tnativeIds.add(def.id);\n\t\t} else {\n\t\t\tdockerOnlyServices.push(entry);\n\t\t}\n\t}\n\n\treturn { nativeServices, dockerOnlyServices, nativeIds };\n}\n\n/**\n * Returns a new ResolverOutput containing only the given service list (same order).\n * Used to build compose for Docker-only subset when bare-metal has native services.\n */\nexport function resolvedWithOnlyServices(\n\tresolved: ResolverOutput,\n\tservices: ResolvedService[],\n): ResolverOutput {\n\tconst idSet = new Set(services.map((s) => s.definition.id));\n\treturn {\n\t\t...resolved,\n\t\tservices: resolved.services.filter((s) => idSet.has(s.definition.id)),\n\t};\n}\n"],"mappings":";;;;;;AAKA,SAAgB,yBAAyB,UAAoC;AAC5E,KAAI,SAAS,WAAW,SAAS,CAAE,QAAO;AAC1C,KAAI,SAAS,WAAW,WAAW,CAAE,QAAO;AAC5C,KAAI,SAAS,WAAW,SAAS,CAAE,QAAO;AAC1C,SAAQ,KAAK,+BAA+B,SAAS,wBAAwB;AAC7E,QAAO;;;;;;;AAcR,SAAgB,mBACf,UACA,UAC2B;CAC3B,MAAM,iBAAiB,yBAAyB,SAAS;CACzD,MAAM,iBAAoC,EAAE;CAC5C,MAAM,qBAAwC,EAAE;CAChD,MAAM,4BAAY,IAAI,KAAa;AAEnC,MAAK,MAAM,SAAS,SAAS,UAAU;EACtC,MAAM,MAAM,MAAM;AAMlB,MAJC,IAAI,oBAAoB,QACxB,IAAI,eAAe,UACnB,IAAI,cAAc,MAAM,MAAM,EAAE,aAAa,eAAe,EAExC;AACpB,kBAAe,KAAK,MAAM;AAC1B,aAAU,IAAI,IAAI,GAAG;QAErB,oBAAmB,KAAK,MAAM;;AAIhC,QAAO;EAAE;EAAgB;EAAoB;EAAW;;;;;;AAOzD,SAAgB,yBACf,UACA,UACiB;CACjB,MAAM,QAAQ,IAAI,IAAI,SAAS,KAAK,MAAM,EAAE,WAAW,GAAG,CAAC;AAC3D,QAAO;EACN,GAAG;EACH,UAAU,SAAS,SAAS,QAAQ,MAAM,MAAM,IAAI,EAAE,WAAW,GAAG,CAAC;EACrE"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { NativePlatform, Platform, ResolvedService, ResolverOutput } from "./types.cjs";
|
|
2
|
+
|
|
3
|
+
//#region src/bare-metal-partition.d.ts
|
|
4
|
+
/**
|
|
5
|
+
* Maps Platform (e.g. linux/amd64) to NativePlatform (linux, windows, macos).
|
|
6
|
+
*/
|
|
7
|
+
declare function platformToNativePlatform(platform: Platform): NativePlatform;
|
|
8
|
+
interface BareMetalPartitionResult {
|
|
9
|
+
nativeServices: ResolvedService[];
|
|
10
|
+
dockerOnlyServices: ResolvedService[];
|
|
11
|
+
nativeIds: Set<string>;
|
|
12
|
+
}
|
|
13
|
+
/**
|
|
14
|
+
* Partitions resolved services into native (run on host via scripts) vs Docker-only.
|
|
15
|
+
* Gateway and CLI are never native; services with nativeSupported and a matching
|
|
16
|
+
* nativeRecipe for the platform go to native, rest to Docker.
|
|
17
|
+
*/
|
|
18
|
+
declare function partitionBareMetal(resolved: ResolverOutput, platform: Platform): BareMetalPartitionResult;
|
|
19
|
+
/**
|
|
20
|
+
* Returns a new ResolverOutput containing only the given service list (same order).
|
|
21
|
+
* Used to build compose for Docker-only subset when bare-metal has native services.
|
|
22
|
+
*/
|
|
23
|
+
declare function resolvedWithOnlyServices(resolved: ResolverOutput, services: ResolvedService[]): ResolverOutput;
|
|
24
|
+
//#endregion
|
|
25
|
+
export { BareMetalPartitionResult, partitionBareMetal, platformToNativePlatform, resolvedWithOnlyServices };
|
|
26
|
+
//# sourceMappingURL=bare-metal-partition.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bare-metal-partition.d.cts","names":[],"sources":["../src/bare-metal-partition.ts"],"mappings":";;;;;AAKA;iBAAgB,wBAAA,CAAyB,QAAA,EAAU,QAAA,GAAW,cAAA;AAAA,UAQ7C,wBAAA;EAChB,cAAA,EAAgB,eAAA;EAChB,kBAAA,EAAoB,eAAA;EACpB,SAAA,EAAW,GAAA;AAAA;;;AAHZ;;;iBAWgB,kBAAA,CACf,QAAA,EAAU,cAAA,EACV,QAAA,EAAU,QAAA,GACR,wBAAA;;;;;iBA4Ba,wBAAA,CACf,QAAA,EAAU,cAAA,EACV,QAAA,EAAU,eAAA,KACR,cAAA"}
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
const require_vi_2VT5v0um = require('./vi.2VT5v0um-BmRMvymT.cjs');
|
|
2
|
+
const require_bare_metal_partition = require('./bare-metal-partition.cjs');
|
|
3
|
+
const require_resolver = require('./resolver.cjs');
|
|
4
|
+
|
|
5
|
+
//#region src/bare-metal-partition.test.ts
|
|
6
|
+
require_vi_2VT5v0um.describe("bare-metal partition", () => {
|
|
7
|
+
require_vi_2VT5v0um.it("platformToNativePlatform maps platform to native", () => {
|
|
8
|
+
require_vi_2VT5v0um.globalExpect(require_bare_metal_partition.platformToNativePlatform("linux/amd64")).toBe("linux");
|
|
9
|
+
require_vi_2VT5v0um.globalExpect(require_bare_metal_partition.platformToNativePlatform("linux/arm64")).toBe("linux");
|
|
10
|
+
require_vi_2VT5v0um.globalExpect(require_bare_metal_partition.platformToNativePlatform("windows/amd64")).toBe("windows");
|
|
11
|
+
require_vi_2VT5v0um.globalExpect(require_bare_metal_partition.platformToNativePlatform("macos/arm64")).toBe("macos");
|
|
12
|
+
});
|
|
13
|
+
require_vi_2VT5v0um.it("partitions redis as native on Linux when redis has native recipe", () => {
|
|
14
|
+
const result = require_bare_metal_partition.partitionBareMetal(require_resolver.resolve({
|
|
15
|
+
services: ["redis"],
|
|
16
|
+
skillPacks: [],
|
|
17
|
+
proxy: "none",
|
|
18
|
+
gpu: false,
|
|
19
|
+
platform: "linux/amd64",
|
|
20
|
+
monitoring: false
|
|
21
|
+
}), "linux/amd64");
|
|
22
|
+
require_vi_2VT5v0um.globalExpect(result.nativeIds.has("redis")).toBe(true);
|
|
23
|
+
require_vi_2VT5v0um.globalExpect(result.nativeServices.length).toBe(1);
|
|
24
|
+
require_vi_2VT5v0um.globalExpect(result.nativeServices[0].definition.id).toBe("redis");
|
|
25
|
+
require_vi_2VT5v0um.globalExpect(result.dockerOnlyServices.length).toBe(0);
|
|
26
|
+
});
|
|
27
|
+
require_vi_2VT5v0um.it("partitions n8n as Docker-only (no native recipe)", () => {
|
|
28
|
+
const result = require_bare_metal_partition.partitionBareMetal(require_resolver.resolve({
|
|
29
|
+
services: ["n8n"],
|
|
30
|
+
skillPacks: [],
|
|
31
|
+
proxy: "none",
|
|
32
|
+
gpu: false,
|
|
33
|
+
platform: "linux/amd64",
|
|
34
|
+
monitoring: false
|
|
35
|
+
}), "linux/amd64");
|
|
36
|
+
require_vi_2VT5v0um.globalExpect(result.nativeIds.has("n8n")).toBe(false);
|
|
37
|
+
require_vi_2VT5v0um.globalExpect(result.nativeServices.length).toBe(0);
|
|
38
|
+
require_vi_2VT5v0um.globalExpect(result.dockerOnlyServices.length).toBeGreaterThanOrEqual(1);
|
|
39
|
+
require_vi_2VT5v0um.globalExpect(result.dockerOnlyServices.some((s) => s.definition.id === "n8n")).toBe(true);
|
|
40
|
+
});
|
|
41
|
+
require_vi_2VT5v0um.it("resolvedWithOnlyServices filters to given service list", () => {
|
|
42
|
+
const resolved = require_resolver.resolve({
|
|
43
|
+
services: ["redis", "n8n"],
|
|
44
|
+
skillPacks: [],
|
|
45
|
+
proxy: "none",
|
|
46
|
+
gpu: false,
|
|
47
|
+
platform: "linux/amd64",
|
|
48
|
+
monitoring: false
|
|
49
|
+
});
|
|
50
|
+
const filtered = require_bare_metal_partition.resolvedWithOnlyServices(resolved, require_bare_metal_partition.partitionBareMetal(resolved, "linux/amd64").dockerOnlyServices);
|
|
51
|
+
require_vi_2VT5v0um.globalExpect(filtered.services.every((s) => s.definition.id !== "redis")).toBe(true);
|
|
52
|
+
require_vi_2VT5v0um.globalExpect(filtered.services.some((s) => s.definition.id === "n8n")).toBe(true);
|
|
53
|
+
});
|
|
54
|
+
});
|
|
55
|
+
|
|
56
|
+
//#endregion
|
|
57
|
+
//# sourceMappingURL=bare-metal-partition.test.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"bare-metal-partition.test.cjs","names":["describe","platformToNativePlatform","partitionBareMetal","resolve","resolvedWithOnlyServices"],"sources":["../src/bare-metal-partition.test.ts"],"sourcesContent":["import { describe, expect, it } from \"vitest\";\nimport {\n\tpartitionBareMetal,\n\tplatformToNativePlatform,\n\tresolvedWithOnlyServices,\n} from \"./bare-metal-partition.js\";\nimport { resolve } from \"./resolver.js\";\n\ndescribe(\"bare-metal partition\", () => {\n\tit(\"platformToNativePlatform maps platform to native\", () => {\n\t\texpect(platformToNativePlatform(\"linux/amd64\")).toBe(\"linux\");\n\t\texpect(platformToNativePlatform(\"linux/arm64\")).toBe(\"linux\");\n\t\texpect(platformToNativePlatform(\"windows/amd64\")).toBe(\"windows\");\n\t\texpect(platformToNativePlatform(\"macos/arm64\")).toBe(\"macos\");\n\t});\n\n\tit(\"partitions redis as native on Linux when redis has native recipe\", () => {\n\t\tconst resolved = resolve({\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\tmonitoring: false,\n\t\t});\n\t\tconst result = partitionBareMetal(resolved, \"linux/amd64\");\n\t\texpect(result.nativeIds.has(\"redis\")).toBe(true);\n\t\texpect(result.nativeServices.length).toBe(1);\n\t\texpect(result.nativeServices[0].definition.id).toBe(\"redis\");\n\t\texpect(result.dockerOnlyServices.length).toBe(0);\n\t});\n\n\tit(\"partitions n8n as Docker-only (no native recipe)\", () => {\n\t\tconst resolved = resolve({\n\t\t\tservices: [\"n8n\"],\n\t\t\tskillPacks: [],\n\t\t\tproxy: \"none\",\n\t\t\tgpu: false,\n\t\t\tplatform: \"linux/amd64\",\n\t\t\tmonitoring: false,\n\t\t});\n\t\tconst result = partitionBareMetal(resolved, \"linux/amd64\");\n\t\texpect(result.nativeIds.has(\"n8n\")).toBe(false);\n\t\texpect(result.nativeServices.length).toBe(0);\n\t\texpect(result.dockerOnlyServices.length).toBeGreaterThanOrEqual(1);\n\t\texpect(result.dockerOnlyServices.some((s) => s.definition.id === \"n8n\")).toBe(true);\n\t});\n\n\tit(\"resolvedWithOnlyServices filters to given service list\", () => {\n\t\tconst resolved = resolve({\n\t\t\tservices: [\"redis\", \"n8n\"],\n\t\t\tskillPacks: [],\n\t\t\tproxy: \"none\",\n\t\t\tgpu: false,\n\t\t\tplatform: \"linux/amd64\",\n\t\t\tmonitoring: false,\n\t\t});\n\t\tconst partition = partitionBareMetal(resolved, \"linux/amd64\");\n\t\tconst filtered = resolvedWithOnlyServices(resolved, partition.dockerOnlyServices);\n\t\texpect(filtered.services.every((s) => s.definition.id !== \"redis\")).toBe(true);\n\t\texpect(filtered.services.some((s) => s.definition.id === \"n8n\")).toBe(true);\n\t});\n});\n"],"mappings":";;;;;AAQAA,6BAAS,8BAA8B;AACtC,wBAAG,0DAA0D;AAC5D,mCAAOC,sDAAyB,cAAc,CAAC,CAAC,KAAK,QAAQ;AAC7D,mCAAOA,sDAAyB,cAAc,CAAC,CAAC,KAAK,QAAQ;AAC7D,mCAAOA,sDAAyB,gBAAgB,CAAC,CAAC,KAAK,UAAU;AACjE,mCAAOA,sDAAyB,cAAc,CAAC,CAAC,KAAK,QAAQ;GAC5D;AAEF,wBAAG,0EAA0E;EAS5E,MAAM,SAASC,gDAREC,yBAAQ;GACxB,UAAU,CAAC,QAAQ;GACnB,YAAY,EAAE;GACd,OAAO;GACP,KAAK;GACL,UAAU;GACV,YAAY;GACZ,CAAC,EAC0C,cAAc;AAC1D,mCAAO,OAAO,UAAU,IAAI,QAAQ,CAAC,CAAC,KAAK,KAAK;AAChD,mCAAO,OAAO,eAAe,OAAO,CAAC,KAAK,EAAE;AAC5C,mCAAO,OAAO,eAAe,GAAG,WAAW,GAAG,CAAC,KAAK,QAAQ;AAC5D,mCAAO,OAAO,mBAAmB,OAAO,CAAC,KAAK,EAAE;GAC/C;AAEF,wBAAG,0DAA0D;EAS5D,MAAM,SAASD,gDAREC,yBAAQ;GACxB,UAAU,CAAC,MAAM;GACjB,YAAY,EAAE;GACd,OAAO;GACP,KAAK;GACL,UAAU;GACV,YAAY;GACZ,CAAC,EAC0C,cAAc;AAC1D,mCAAO,OAAO,UAAU,IAAI,MAAM,CAAC,CAAC,KAAK,MAAM;AAC/C,mCAAO,OAAO,eAAe,OAAO,CAAC,KAAK,EAAE;AAC5C,mCAAO,OAAO,mBAAmB,OAAO,CAAC,uBAAuB,EAAE;AAClE,mCAAO,OAAO,mBAAmB,MAAM,MAAM,EAAE,WAAW,OAAO,MAAM,CAAC,CAAC,KAAK,KAAK;GAClF;AAEF,wBAAG,gEAAgE;EAClE,MAAM,WAAWA,yBAAQ;GACxB,UAAU,CAAC,SAAS,MAAM;GAC1B,YAAY,EAAE;GACd,OAAO;GACP,KAAK;GACL,UAAU;GACV,YAAY;GACZ,CAAC;EAEF,MAAM,WAAWC,sDAAyB,UADxBF,gDAAmB,UAAU,cAAc,CACC,mBAAmB;AACjF,mCAAO,SAAS,SAAS,OAAO,MAAM,EAAE,WAAW,OAAO,QAAQ,CAAC,CAAC,KAAK,KAAK;AAC9E,mCAAO,SAAS,SAAS,MAAM,MAAM,EAAE,WAAW,OAAO,MAAM,CAAC,CAAC,KAAK,KAAK;GAC1E;EACD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { };
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { n as describe, r as it, t as globalExpect } from "./vi.2VT5v0um-
|
|
1
|
+
import { n as describe, r as it, t as globalExpect } from "./vi.2VT5v0um-CFyDIn0m.mjs";
|
|
2
2
|
import { partitionBareMetal, platformToNativePlatform, resolvedWithOnlyServices } from "./bare-metal-partition.mjs";
|
|
3
3
|
import { resolve } from "./resolver.mjs";
|
|
4
4
|
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
//#region \0rolldown/runtime.js
|
|
2
|
+
var __create = Object.create;
|
|
3
|
+
var __defProp = Object.defineProperty;
|
|
4
|
+
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
|
|
5
|
+
var __getOwnPropNames = Object.getOwnPropertyNames;
|
|
6
|
+
var __getProtoOf = Object.getPrototypeOf;
|
|
7
|
+
var __hasOwnProp = Object.prototype.hasOwnProperty;
|
|
8
|
+
var __copyProps = (to, from, except, desc) => {
|
|
9
|
+
if (from && typeof from === "object" || typeof from === "function") {
|
|
10
|
+
for (var keys = __getOwnPropNames(from), i = 0, n = keys.length, key; i < n; i++) {
|
|
11
|
+
key = keys[i];
|
|
12
|
+
if (!__hasOwnProp.call(to, key) && key !== except) {
|
|
13
|
+
__defProp(to, key, {
|
|
14
|
+
get: ((k) => from[k]).bind(null, key),
|
|
15
|
+
enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable
|
|
16
|
+
});
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
return to;
|
|
21
|
+
};
|
|
22
|
+
var __toESM = (mod, isNodeMode, target) => (target = mod != null ? __create(__getProtoOf(mod)) : {}, __copyProps(isNodeMode || !mod || !mod.__esModule ? __defProp(target, "default", {
|
|
23
|
+
value: mod,
|
|
24
|
+
enumerable: true
|
|
25
|
+
}) : target, mod));
|
|
26
|
+
|
|
27
|
+
//#endregion
|
|
28
|
+
|
|
29
|
+
Object.defineProperty(exports, '__toESM', {
|
|
30
|
+
enumerable: true,
|
|
31
|
+
get: function () {
|
|
32
|
+
return __toESM;
|
|
33
|
+
}
|
|
34
|
+
});
|
|
@@ -0,0 +1,67 @@
|
|
|
1
|
+
const require_chunk = require('./chunk-C0xms8kb.cjs');
|
|
2
|
+
const require_generate = require('./generate.cjs');
|
|
3
|
+
const require_presets_registry = require('./presets/registry.cjs');
|
|
4
|
+
let yaml = require("yaml");
|
|
5
|
+
yaml = require_chunk.__toESM(yaml);
|
|
6
|
+
|
|
7
|
+
//#region src/compose-validation.test.ts
|
|
8
|
+
const allPresets = require_presets_registry.getAllPresets();
|
|
9
|
+
describe("docker compose config integration tests", () => {
|
|
10
|
+
for (const preset of allPresets) describe(`preset "${preset.id}"`, () => {
|
|
11
|
+
const composeContent = require_generate.generate({
|
|
12
|
+
projectName: "test-project",
|
|
13
|
+
services: preset.services,
|
|
14
|
+
skillPacks: preset.skillPacks,
|
|
15
|
+
aiProviders: [],
|
|
16
|
+
gsdRuntimes: [],
|
|
17
|
+
proxy: "none",
|
|
18
|
+
gpu: false,
|
|
19
|
+
platform: "linux/amd64",
|
|
20
|
+
deployment: "local",
|
|
21
|
+
deploymentType: "docker",
|
|
22
|
+
generateSecrets: false,
|
|
23
|
+
openclawVersion: "latest",
|
|
24
|
+
monitoring: false
|
|
25
|
+
}).files["docker-compose.yml"];
|
|
26
|
+
const parsed = yaml.parse(composeContent);
|
|
27
|
+
it("parses as valid YAML", () => {
|
|
28
|
+
expect(parsed).toBeDefined();
|
|
29
|
+
expect(typeof parsed).toBe("object");
|
|
30
|
+
});
|
|
31
|
+
it("every service has an image field", () => {
|
|
32
|
+
expect(parsed.services).toBeDefined();
|
|
33
|
+
for (const [name, service] of Object.entries(parsed.services)) expect(service.image, `service "${name}" is missing an image field`).toBeDefined();
|
|
34
|
+
});
|
|
35
|
+
it("every service has restart or uses default", () => {
|
|
36
|
+
for (const [name, service] of Object.entries(parsed.services)) {
|
|
37
|
+
const svc = service;
|
|
38
|
+
if (svc.restart !== void 0) expect([
|
|
39
|
+
"always",
|
|
40
|
+
"unless-stopped",
|
|
41
|
+
"on-failure",
|
|
42
|
+
"no"
|
|
43
|
+
].includes(svc.restart), `service "${name}" has invalid restart policy: ${svc.restart}`).toBe(true);
|
|
44
|
+
}
|
|
45
|
+
});
|
|
46
|
+
it("has networks defined", () => {
|
|
47
|
+
expect(parsed.networks).toBeDefined();
|
|
48
|
+
expect(typeof parsed.networks).toBe("object");
|
|
49
|
+
});
|
|
50
|
+
it("named volumes referenced by services are declared in top-level volumes", () => {
|
|
51
|
+
const topLevelVolumes = parsed.volumes ? new Set(Object.keys(parsed.volumes)) : /* @__PURE__ */ new Set();
|
|
52
|
+
for (const [serviceName, service] of Object.entries(parsed.services)) {
|
|
53
|
+
const volumes = service.volumes;
|
|
54
|
+
if (!volumes) continue;
|
|
55
|
+
for (const vol of volumes) {
|
|
56
|
+
const volStr = typeof vol === "string" ? vol : vol?.source;
|
|
57
|
+
if (typeof volStr !== "string") continue;
|
|
58
|
+
const source = volStr.split(":")[0];
|
|
59
|
+
if (source.length > 0 && !source.startsWith(".") && !source.startsWith("/") && !source.startsWith("~") && !source.includes("\\") && !source.startsWith("$") && !source.includes("${")) expect(topLevelVolumes.has(source), `service "${serviceName}" references named volume "${source}" which is not declared in top-level volumes`).toBe(true);
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
});
|
|
63
|
+
});
|
|
64
|
+
});
|
|
65
|
+
|
|
66
|
+
//#endregion
|
|
67
|
+
//# sourceMappingURL=compose-validation.test.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compose-validation.test.cjs","names":["getAllPresets","generate"],"sources":["../src/compose-validation.test.ts"],"sourcesContent":["import * as yaml from \"yaml\";\nimport { generate } from \"./generate.js\";\nimport { getAllPresets } from \"./presets/registry.js\";\n\nconst allPresets = getAllPresets();\n\ndescribe(\"docker compose config integration tests\", () => {\n\tfor (const preset of allPresets) {\n\t\tdescribe(`preset \"${preset.id}\"`, () => {\n\t\t\tconst result = generate({\n\t\t\t\tprojectName: \"test-project\",\n\t\t\t\tservices: preset.services,\n\t\t\t\tskillPacks: preset.skillPacks,\n\t\t\t\taiProviders: [],\n\t\t\t\tgsdRuntimes: [],\n\t\t\t\tproxy: \"none\",\n\t\t\t\tgpu: false,\n\t\t\t\tplatform: \"linux/amd64\",\n\t\t\t\tdeployment: \"local\",\n\t\t\t\tdeploymentType: \"docker\",\n\t\t\t\tgenerateSecrets: false,\n\t\t\t\topenclawVersion: \"latest\",\n\t\t\t\tmonitoring: false,\n\t\t\t});\n\n\t\t\tconst composeContent = result.files[\"docker-compose.yml\"]!;\n\t\t\tconst parsed = yaml.parse(composeContent);\n\n\t\t\tit(\"parses as valid YAML\", () => {\n\t\t\t\texpect(parsed).toBeDefined();\n\t\t\t\texpect(typeof parsed).toBe(\"object\");\n\t\t\t});\n\n\t\t\tit(\"every service has an image field\", () => {\n\t\t\t\texpect(parsed.services).toBeDefined();\n\t\t\t\tfor (const [name, service] of Object.entries(parsed.services)) {\n\t\t\t\t\texpect(\n\t\t\t\t\t\t(service as Record<string, unknown>).image,\n\t\t\t\t\t\t`service \"${name}\" is missing an image field`,\n\t\t\t\t\t).toBeDefined();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tit(\"every service has restart or uses default\", () => {\n\t\t\t\tfor (const [name, service] of Object.entries(parsed.services)) {\n\t\t\t\t\tconst svc = service as Record<string, unknown>;\n\t\t\t\t\t// A service should either have an explicit restart policy\n\t\t\t\t\t// or rely on the default (which means the field can be absent).\n\t\t\t\t\t// We just verify that if restart is set, it is a valid value.\n\t\t\t\t\tif (svc.restart !== undefined) {\n\t\t\t\t\t\texpect(\n\t\t\t\t\t\t\t[\"always\", \"unless-stopped\", \"on-failure\", \"no\"].includes(svc.restart as string),\n\t\t\t\t\t\t\t`service \"${name}\" has invalid restart policy: ${svc.restart}`,\n\t\t\t\t\t\t).toBe(true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tit(\"has networks defined\", () => {\n\t\t\t\texpect(parsed.networks).toBeDefined();\n\t\t\t\texpect(typeof parsed.networks).toBe(\"object\");\n\t\t\t});\n\n\t\t\tit(\"named volumes referenced by services are declared in top-level volumes\", () => {\n\t\t\t\tconst topLevelVolumes = parsed.volumes\n\t\t\t\t\t? new Set(Object.keys(parsed.volumes))\n\t\t\t\t\t: new Set<string>();\n\n\t\t\t\tfor (const [serviceName, service] of Object.entries(parsed.services)) {\n\t\t\t\t\tconst svc = service as Record<string, unknown>;\n\t\t\t\t\tconst volumes = svc.volumes as string[] | undefined;\n\t\t\t\t\tif (!volumes) continue;\n\n\t\t\t\t\tfor (const vol of volumes) {\n\t\t\t\t\t\tconst volStr = typeof vol === \"string\" ? vol : (vol as { source?: string })?.source;\n\t\t\t\t\t\tif (typeof volStr !== \"string\") continue;\n\n\t\t\t\t\t\t// Named volumes follow the pattern \"name:path\" (no leading . or /)\n\t\t\t\t\t\t// Bind mounts start with . or / or use an absolute path\n\t\t\t\t\t\tconst parts = volStr.split(\":\");\n\t\t\t\t\t\tconst source = parts[0]!;\n\t\t\t\t\t\tconst isNamedVolume =\n\t\t\t\t\t\t\tsource.length > 0 &&\n\t\t\t\t\t\t\t!source.startsWith(\".\") &&\n\t\t\t\t\t\t\t!source.startsWith(\"/\") &&\n\t\t\t\t\t\t\t!source.startsWith(\"~\") &&\n\t\t\t\t\t\t\t!source.includes(\"\\\\\") &&\n\t\t\t\t\t\t\t!source.startsWith(\"$\") &&\n\t\t\t\t\t\t\t!source.includes(\"${\");\n\n\t\t\t\t\t\tif (isNamedVolume) {\n\t\t\t\t\t\t\texpect(\n\t\t\t\t\t\t\t\ttopLevelVolumes.has(source),\n\t\t\t\t\t\t\t\t`service \"${serviceName}\" references named volume \"${source}\" which is not declared in top-level volumes`,\n\t\t\t\t\t\t\t).toBe(true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n});\n"],"mappings":";;;;;;;AAIA,MAAM,aAAaA,wCAAe;AAElC,SAAS,iDAAiD;AACzD,MAAK,MAAM,UAAU,WACpB,UAAS,WAAW,OAAO,GAAG,UAAU;EAiBvC,MAAM,iBAhBSC,0BAAS;GACvB,aAAa;GACb,UAAU,OAAO;GACjB,YAAY,OAAO;GACnB,aAAa,EAAE;GACf,aAAa,EAAE;GACf,OAAO;GACP,KAAK;GACL,UAAU;GACV,YAAY;GACZ,gBAAgB;GAChB,iBAAiB;GACjB,iBAAiB;GACjB,YAAY;GACZ,CAAC,CAE4B,MAAM;EACpC,MAAM,SAAS,KAAK,MAAM,eAAe;AAEzC,KAAG,8BAA8B;AAChC,UAAO,OAAO,CAAC,aAAa;AAC5B,UAAO,OAAO,OAAO,CAAC,KAAK,SAAS;IACnC;AAEF,KAAG,0CAA0C;AAC5C,UAAO,OAAO,SAAS,CAAC,aAAa;AACrC,QAAK,MAAM,CAAC,MAAM,YAAY,OAAO,QAAQ,OAAO,SAAS,CAC5D,QACE,QAAoC,OACrC,YAAY,KAAK,6BACjB,CAAC,aAAa;IAEf;AAEF,KAAG,mDAAmD;AACrD,QAAK,MAAM,CAAC,MAAM,YAAY,OAAO,QAAQ,OAAO,SAAS,EAAE;IAC9D,MAAM,MAAM;AAIZ,QAAI,IAAI,YAAY,OACnB,QACC;KAAC;KAAU;KAAkB;KAAc;KAAK,CAAC,SAAS,IAAI,QAAkB,EAChF,YAAY,KAAK,gCAAgC,IAAI,UACrD,CAAC,KAAK,KAAK;;IAGb;AAEF,KAAG,8BAA8B;AAChC,UAAO,OAAO,SAAS,CAAC,aAAa;AACrC,UAAO,OAAO,OAAO,SAAS,CAAC,KAAK,SAAS;IAC5C;AAEF,KAAG,gFAAgF;GAClF,MAAM,kBAAkB,OAAO,UAC5B,IAAI,IAAI,OAAO,KAAK,OAAO,QAAQ,CAAC,mBACpC,IAAI,KAAa;AAEpB,QAAK,MAAM,CAAC,aAAa,YAAY,OAAO,QAAQ,OAAO,SAAS,EAAE;IAErE,MAAM,UADM,QACQ;AACpB,QAAI,CAAC,QAAS;AAEd,SAAK,MAAM,OAAO,SAAS;KAC1B,MAAM,SAAS,OAAO,QAAQ,WAAW,MAAO,KAA6B;AAC7E,SAAI,OAAO,WAAW,SAAU;KAKhC,MAAM,SADQ,OAAO,MAAM,IAAI,CACV;AAUrB,SARC,OAAO,SAAS,KAChB,CAAC,OAAO,WAAW,IAAI,IACvB,CAAC,OAAO,WAAW,IAAI,IACvB,CAAC,OAAO,WAAW,IAAI,IACvB,CAAC,OAAO,SAAS,KAAK,IACtB,CAAC,OAAO,WAAW,IAAI,IACvB,CAAC,OAAO,SAAS,KAAK,CAGtB,QACC,gBAAgB,IAAI,OAAO,EAC3B,YAAY,YAAY,6BAA6B,OAAO,8CAC5D,CAAC,KAAK,KAAK;;;IAId;GACD;EAEF"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { };
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
export { };
|
|
@@ -0,0 +1,66 @@
|
|
|
1
|
+
import { generate } from "./generate.mjs";
|
|
2
|
+
import { getAllPresets } from "./presets/registry.mjs";
|
|
3
|
+
import * as yaml from "yaml";
|
|
4
|
+
|
|
5
|
+
//#region src/compose-validation.test.ts
|
|
6
|
+
const allPresets = getAllPresets();
|
|
7
|
+
describe("docker compose config integration tests", () => {
|
|
8
|
+
for (const preset of allPresets) describe(`preset "${preset.id}"`, () => {
|
|
9
|
+
const composeContent = generate({
|
|
10
|
+
projectName: "test-project",
|
|
11
|
+
services: preset.services,
|
|
12
|
+
skillPacks: preset.skillPacks,
|
|
13
|
+
aiProviders: [],
|
|
14
|
+
gsdRuntimes: [],
|
|
15
|
+
proxy: "none",
|
|
16
|
+
gpu: false,
|
|
17
|
+
platform: "linux/amd64",
|
|
18
|
+
deployment: "local",
|
|
19
|
+
deploymentType: "docker",
|
|
20
|
+
generateSecrets: false,
|
|
21
|
+
openclawVersion: "latest",
|
|
22
|
+
monitoring: false
|
|
23
|
+
}).files["docker-compose.yml"];
|
|
24
|
+
const parsed = yaml.parse(composeContent);
|
|
25
|
+
it("parses as valid YAML", () => {
|
|
26
|
+
expect(parsed).toBeDefined();
|
|
27
|
+
expect(typeof parsed).toBe("object");
|
|
28
|
+
});
|
|
29
|
+
it("every service has an image field", () => {
|
|
30
|
+
expect(parsed.services).toBeDefined();
|
|
31
|
+
for (const [name, service] of Object.entries(parsed.services)) expect(service.image, `service "${name}" is missing an image field`).toBeDefined();
|
|
32
|
+
});
|
|
33
|
+
it("every service has restart or uses default", () => {
|
|
34
|
+
for (const [name, service] of Object.entries(parsed.services)) {
|
|
35
|
+
const svc = service;
|
|
36
|
+
if (svc.restart !== void 0) expect([
|
|
37
|
+
"always",
|
|
38
|
+
"unless-stopped",
|
|
39
|
+
"on-failure",
|
|
40
|
+
"no"
|
|
41
|
+
].includes(svc.restart), `service "${name}" has invalid restart policy: ${svc.restart}`).toBe(true);
|
|
42
|
+
}
|
|
43
|
+
});
|
|
44
|
+
it("has networks defined", () => {
|
|
45
|
+
expect(parsed.networks).toBeDefined();
|
|
46
|
+
expect(typeof parsed.networks).toBe("object");
|
|
47
|
+
});
|
|
48
|
+
it("named volumes referenced by services are declared in top-level volumes", () => {
|
|
49
|
+
const topLevelVolumes = parsed.volumes ? new Set(Object.keys(parsed.volumes)) : /* @__PURE__ */ new Set();
|
|
50
|
+
for (const [serviceName, service] of Object.entries(parsed.services)) {
|
|
51
|
+
const volumes = service.volumes;
|
|
52
|
+
if (!volumes) continue;
|
|
53
|
+
for (const vol of volumes) {
|
|
54
|
+
const volStr = typeof vol === "string" ? vol : vol?.source;
|
|
55
|
+
if (typeof volStr !== "string") continue;
|
|
56
|
+
const source = volStr.split(":")[0];
|
|
57
|
+
if (source.length > 0 && !source.startsWith(".") && !source.startsWith("/") && !source.startsWith("~") && !source.includes("\\") && !source.startsWith("$") && !source.includes("${")) expect(topLevelVolumes.has(source), `service "${serviceName}" references named volume "${source}" which is not declared in top-level volumes`).toBe(true);
|
|
58
|
+
}
|
|
59
|
+
}
|
|
60
|
+
});
|
|
61
|
+
});
|
|
62
|
+
});
|
|
63
|
+
|
|
64
|
+
//#endregion
|
|
65
|
+
export { };
|
|
66
|
+
//# sourceMappingURL=compose-validation.test.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"compose-validation.test.mjs","names":[],"sources":["../src/compose-validation.test.ts"],"sourcesContent":["import * as yaml from \"yaml\";\nimport { generate } from \"./generate.js\";\nimport { getAllPresets } from \"./presets/registry.js\";\n\nconst allPresets = getAllPresets();\n\ndescribe(\"docker compose config integration tests\", () => {\n\tfor (const preset of allPresets) {\n\t\tdescribe(`preset \"${preset.id}\"`, () => {\n\t\t\tconst result = generate({\n\t\t\t\tprojectName: \"test-project\",\n\t\t\t\tservices: preset.services,\n\t\t\t\tskillPacks: preset.skillPacks,\n\t\t\t\taiProviders: [],\n\t\t\t\tgsdRuntimes: [],\n\t\t\t\tproxy: \"none\",\n\t\t\t\tgpu: false,\n\t\t\t\tplatform: \"linux/amd64\",\n\t\t\t\tdeployment: \"local\",\n\t\t\t\tdeploymentType: \"docker\",\n\t\t\t\tgenerateSecrets: false,\n\t\t\t\topenclawVersion: \"latest\",\n\t\t\t\tmonitoring: false,\n\t\t\t});\n\n\t\t\tconst composeContent = result.files[\"docker-compose.yml\"]!;\n\t\t\tconst parsed = yaml.parse(composeContent);\n\n\t\t\tit(\"parses as valid YAML\", () => {\n\t\t\t\texpect(parsed).toBeDefined();\n\t\t\t\texpect(typeof parsed).toBe(\"object\");\n\t\t\t});\n\n\t\t\tit(\"every service has an image field\", () => {\n\t\t\t\texpect(parsed.services).toBeDefined();\n\t\t\t\tfor (const [name, service] of Object.entries(parsed.services)) {\n\t\t\t\t\texpect(\n\t\t\t\t\t\t(service as Record<string, unknown>).image,\n\t\t\t\t\t\t`service \"${name}\" is missing an image field`,\n\t\t\t\t\t).toBeDefined();\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tit(\"every service has restart or uses default\", () => {\n\t\t\t\tfor (const [name, service] of Object.entries(parsed.services)) {\n\t\t\t\t\tconst svc = service as Record<string, unknown>;\n\t\t\t\t\t// A service should either have an explicit restart policy\n\t\t\t\t\t// or rely on the default (which means the field can be absent).\n\t\t\t\t\t// We just verify that if restart is set, it is a valid value.\n\t\t\t\t\tif (svc.restart !== undefined) {\n\t\t\t\t\t\texpect(\n\t\t\t\t\t\t\t[\"always\", \"unless-stopped\", \"on-failure\", \"no\"].includes(svc.restart as string),\n\t\t\t\t\t\t\t`service \"${name}\" has invalid restart policy: ${svc.restart}`,\n\t\t\t\t\t\t).toBe(true);\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\n\t\t\tit(\"has networks defined\", () => {\n\t\t\t\texpect(parsed.networks).toBeDefined();\n\t\t\t\texpect(typeof parsed.networks).toBe(\"object\");\n\t\t\t});\n\n\t\t\tit(\"named volumes referenced by services are declared in top-level volumes\", () => {\n\t\t\t\tconst topLevelVolumes = parsed.volumes\n\t\t\t\t\t? new Set(Object.keys(parsed.volumes))\n\t\t\t\t\t: new Set<string>();\n\n\t\t\t\tfor (const [serviceName, service] of Object.entries(parsed.services)) {\n\t\t\t\t\tconst svc = service as Record<string, unknown>;\n\t\t\t\t\tconst volumes = svc.volumes as string[] | undefined;\n\t\t\t\t\tif (!volumes) continue;\n\n\t\t\t\t\tfor (const vol of volumes) {\n\t\t\t\t\t\tconst volStr = typeof vol === \"string\" ? vol : (vol as { source?: string })?.source;\n\t\t\t\t\t\tif (typeof volStr !== \"string\") continue;\n\n\t\t\t\t\t\t// Named volumes follow the pattern \"name:path\" (no leading . or /)\n\t\t\t\t\t\t// Bind mounts start with . or / or use an absolute path\n\t\t\t\t\t\tconst parts = volStr.split(\":\");\n\t\t\t\t\t\tconst source = parts[0]!;\n\t\t\t\t\t\tconst isNamedVolume =\n\t\t\t\t\t\t\tsource.length > 0 &&\n\t\t\t\t\t\t\t!source.startsWith(\".\") &&\n\t\t\t\t\t\t\t!source.startsWith(\"/\") &&\n\t\t\t\t\t\t\t!source.startsWith(\"~\") &&\n\t\t\t\t\t\t\t!source.includes(\"\\\\\") &&\n\t\t\t\t\t\t\t!source.startsWith(\"$\") &&\n\t\t\t\t\t\t\t!source.includes(\"${\");\n\n\t\t\t\t\t\tif (isNamedVolume) {\n\t\t\t\t\t\t\texpect(\n\t\t\t\t\t\t\t\ttopLevelVolumes.has(source),\n\t\t\t\t\t\t\t\t`service \"${serviceName}\" references named volume \"${source}\" which is not declared in top-level volumes`,\n\t\t\t\t\t\t\t).toBe(true);\n\t\t\t\t\t\t}\n\t\t\t\t\t}\n\t\t\t\t}\n\t\t\t});\n\t\t});\n\t}\n});\n"],"mappings":";;;;;AAIA,MAAM,aAAa,eAAe;AAElC,SAAS,iDAAiD;AACzD,MAAK,MAAM,UAAU,WACpB,UAAS,WAAW,OAAO,GAAG,UAAU;EAiBvC,MAAM,iBAhBS,SAAS;GACvB,aAAa;GACb,UAAU,OAAO;GACjB,YAAY,OAAO;GACnB,aAAa,EAAE;GACf,aAAa,EAAE;GACf,OAAO;GACP,KAAK;GACL,UAAU;GACV,YAAY;GACZ,gBAAgB;GAChB,iBAAiB;GACjB,iBAAiB;GACjB,YAAY;GACZ,CAAC,CAE4B,MAAM;EACpC,MAAM,SAAS,KAAK,MAAM,eAAe;AAEzC,KAAG,8BAA8B;AAChC,UAAO,OAAO,CAAC,aAAa;AAC5B,UAAO,OAAO,OAAO,CAAC,KAAK,SAAS;IACnC;AAEF,KAAG,0CAA0C;AAC5C,UAAO,OAAO,SAAS,CAAC,aAAa;AACrC,QAAK,MAAM,CAAC,MAAM,YAAY,OAAO,QAAQ,OAAO,SAAS,CAC5D,QACE,QAAoC,OACrC,YAAY,KAAK,6BACjB,CAAC,aAAa;IAEf;AAEF,KAAG,mDAAmD;AACrD,QAAK,MAAM,CAAC,MAAM,YAAY,OAAO,QAAQ,OAAO,SAAS,EAAE;IAC9D,MAAM,MAAM;AAIZ,QAAI,IAAI,YAAY,OACnB,QACC;KAAC;KAAU;KAAkB;KAAc;KAAK,CAAC,SAAS,IAAI,QAAkB,EAChF,YAAY,KAAK,gCAAgC,IAAI,UACrD,CAAC,KAAK,KAAK;;IAGb;AAEF,KAAG,8BAA8B;AAChC,UAAO,OAAO,SAAS,CAAC,aAAa;AACrC,UAAO,OAAO,OAAO,SAAS,CAAC,KAAK,SAAS;IAC5C;AAEF,KAAG,gFAAgF;GAClF,MAAM,kBAAkB,OAAO,UAC5B,IAAI,IAAI,OAAO,KAAK,OAAO,QAAQ,CAAC,mBACpC,IAAI,KAAa;AAEpB,QAAK,MAAM,CAAC,aAAa,YAAY,OAAO,QAAQ,OAAO,SAAS,EAAE;IAErE,MAAM,UADM,QACQ;AACpB,QAAI,CAAC,QAAS;AAEd,SAAK,MAAM,OAAO,SAAS;KAC1B,MAAM,SAAS,OAAO,QAAQ,WAAW,MAAO,KAA6B;AAC7E,SAAI,OAAO,WAAW,SAAU;KAKhC,MAAM,SADQ,OAAO,MAAM,IAAI,CACV;AAUrB,SARC,OAAO,SAAS,KAChB,CAAC,OAAO,WAAW,IAAI,IACvB,CAAC,OAAO,WAAW,IAAI,IACvB,CAAC,OAAO,WAAW,IAAI,IACvB,CAAC,OAAO,SAAS,KAAK,IACtB,CAAC,OAAO,WAAW,IAAI,IACvB,CAAC,OAAO,SAAS,KAAK,CAGtB,QACC,gBAAgB,IAAI,OAAO,EAC3B,YAAY,YAAY,6BAA6B,OAAO,8CAC5D,CAAC,KAAK,KAAK;;;IAId;GACD;EAEF"}
|