@better-openclaw/core 1.0.22 → 1.0.24
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/dist/bare-metal-partition.test.cjs +3 -4
- package/dist/bare-metal-partition.test.cjs.map +1 -1
- package/dist/bare-metal-partition.test.mjs +3 -4
- package/dist/bare-metal-partition.test.mjs.map +1 -1
- package/dist/composer.cjs +40 -14
- package/dist/composer.cjs.map +1 -1
- package/dist/composer.d.cts.map +1 -1
- package/dist/composer.d.mts.map +1 -1
- package/dist/composer.mjs +40 -14
- package/dist/composer.mjs.map +1 -1
- package/dist/composer.snapshot.test.cjs +1 -1
- package/dist/composer.snapshot.test.mjs +1 -1
- package/dist/composer.test.cjs +3 -2
- package/dist/composer.test.cjs.map +1 -1
- package/dist/composer.test.mjs +3 -2
- package/dist/composer.test.mjs.map +1 -1
- package/dist/deployers/strip-host-ports.test.cjs +1 -1
- package/dist/deployers/strip-host-ports.test.mjs +1 -1
- package/dist/generate.cjs +7 -2
- package/dist/generate.cjs.map +1 -1
- package/dist/generate.d.cts.map +1 -1
- package/dist/generate.d.mts.map +1 -1
- package/dist/generate.mjs +7 -2
- package/dist/generate.mjs.map +1 -1
- package/dist/generate.test.cjs +2 -2
- package/dist/generate.test.cjs.map +1 -1
- package/dist/generate.test.mjs +2 -2
- package/dist/generate.test.mjs.map +1 -1
- package/dist/generators/bare-metal-install.test.cjs +1 -1
- package/dist/generators/bare-metal-install.test.mjs +1 -1
- package/dist/generators/caddy.test.cjs +1 -1
- package/dist/generators/caddy.test.mjs +1 -1
- package/dist/generators/clone-repos.cjs +140 -0
- package/dist/generators/clone-repos.cjs.map +1 -0
- package/dist/generators/clone-repos.d.cts +11 -0
- package/dist/generators/clone-repos.d.cts.map +1 -0
- package/dist/generators/clone-repos.d.mts +11 -0
- package/dist/generators/clone-repos.d.mts.map +1 -0
- package/dist/generators/clone-repos.mjs +139 -0
- package/dist/generators/clone-repos.mjs.map +1 -0
- package/dist/generators/clone-repos.test.cjs +140 -0
- package/dist/generators/clone-repos.test.cjs.map +1 -0
- package/dist/generators/clone-repos.test.d.cts +1 -0
- package/dist/generators/clone-repos.test.d.mts +1 -0
- package/dist/generators/clone-repos.test.mjs +141 -0
- package/dist/generators/clone-repos.test.mjs.map +1 -0
- package/dist/generators/env.cjs +146 -0
- package/dist/generators/env.cjs.map +1 -1
- package/dist/generators/env.d.cts.map +1 -1
- package/dist/generators/env.d.mts.map +1 -1
- package/dist/generators/env.mjs +146 -0
- package/dist/generators/env.mjs.map +1 -1
- package/dist/generators/env.test.cjs +1 -1
- package/dist/generators/env.test.mjs +1 -1
- package/dist/generators/health-check.test.cjs +1 -1
- package/dist/generators/health-check.test.mjs +1 -1
- package/dist/generators/openclaw-json.cjs +102 -7
- package/dist/generators/openclaw-json.cjs.map +1 -1
- package/dist/generators/openclaw-json.mjs +102 -7
- package/dist/generators/openclaw-json.mjs.map +1 -1
- package/dist/generators/postgres-init.cjs +20 -0
- package/dist/generators/postgres-init.cjs.map +1 -1
- package/dist/generators/postgres-init.d.cts.map +1 -1
- package/dist/generators/postgres-init.d.mts.map +1 -1
- package/dist/generators/postgres-init.mjs +20 -0
- package/dist/generators/postgres-init.mjs.map +1 -1
- package/dist/generators/readme.cjs +2 -1
- package/dist/generators/readme.cjs.map +1 -1
- package/dist/generators/readme.mjs +2 -1
- package/dist/generators/readme.mjs.map +1 -1
- package/dist/generators/scripts.cjs +332 -3
- package/dist/generators/scripts.cjs.map +1 -1
- package/dist/generators/scripts.d.cts +3 -1
- package/dist/generators/scripts.d.cts.map +1 -1
- package/dist/generators/scripts.d.mts +3 -1
- package/dist/generators/scripts.d.mts.map +1 -1
- package/dist/generators/scripts.mjs +332 -3
- package/dist/generators/scripts.mjs.map +1 -1
- package/dist/generators/scripts.test.cjs +39 -5
- package/dist/generators/scripts.test.cjs.map +1 -1
- package/dist/generators/scripts.test.mjs +39 -5
- package/dist/generators/scripts.test.mjs.map +1 -1
- package/dist/generators/stack-manifest.cjs +1 -0
- package/dist/generators/stack-manifest.cjs.map +1 -1
- package/dist/generators/stack-manifest.d.cts +3 -2
- package/dist/generators/stack-manifest.d.cts.map +1 -1
- package/dist/generators/stack-manifest.d.mts +3 -2
- package/dist/generators/stack-manifest.d.mts.map +1 -1
- package/dist/generators/stack-manifest.mjs +1 -0
- package/dist/generators/stack-manifest.mjs.map +1 -1
- package/dist/generators/traefik.test.cjs +1 -1
- package/dist/generators/traefik.test.mjs +1 -1
- package/dist/index.cjs +8 -1
- package/dist/index.d.cts +5 -3
- package/dist/index.d.mts +5 -3
- package/dist/index.mjs +5 -3
- package/dist/migrations.test.cjs +1 -1
- package/dist/migrations.test.mjs +1 -1
- package/dist/presets/registry.cjs +19 -0
- package/dist/presets/registry.cjs.map +1 -1
- package/dist/presets/registry.d.cts.map +1 -1
- package/dist/presets/registry.d.mts.map +1 -1
- package/dist/presets/registry.mjs +19 -0
- package/dist/presets/registry.mjs.map +1 -1
- package/dist/presets/registry.test.cjs +1 -1
- package/dist/presets/registry.test.mjs +1 -1
- package/dist/resolver.cjs +8 -0
- package/dist/resolver.cjs.map +1 -1
- package/dist/resolver.mjs +9 -1
- package/dist/resolver.mjs.map +1 -1
- package/dist/resolver.test.cjs +47 -12
- package/dist/resolver.test.cjs.map +1 -1
- package/dist/resolver.test.mjs +47 -12
- package/dist/resolver.test.mjs.map +1 -1
- package/dist/{schema-C_hc7e4k.d.cts → schema-eX44HhRp.d.mts} +78 -8
- package/dist/schema-eX44HhRp.d.mts.map +1 -0
- package/dist/{schema-CaesJaS2.d.mts → schema-tn5RK8CM.d.cts} +78 -8
- package/dist/schema-tn5RK8CM.d.cts.map +1 -0
- package/dist/schema.cjs +26 -4
- package/dist/schema.cjs.map +1 -1
- package/dist/schema.d.cts +2 -2
- package/dist/schema.d.mts +2 -2
- package/dist/schema.mjs +25 -5
- package/dist/schema.mjs.map +1 -1
- package/dist/schema.test.cjs +1 -1
- package/dist/schema.test.mjs +1 -1
- package/dist/services/definitions/adguard-home.cjs +74 -0
- package/dist/services/definitions/adguard-home.cjs.map +1 -0
- package/dist/services/definitions/adguard-home.d.cts +7 -0
- package/dist/services/definitions/adguard-home.d.cts.map +1 -0
- package/dist/services/definitions/adguard-home.d.mts +7 -0
- package/dist/services/definitions/adguard-home.d.mts.map +1 -0
- package/dist/services/definitions/adguard-home.mjs +73 -0
- package/dist/services/definitions/adguard-home.mjs.map +1 -0
- package/dist/services/definitions/apptension-saas.cjs +87 -0
- package/dist/services/definitions/apptension-saas.cjs.map +1 -0
- package/dist/services/definitions/apptension-saas.d.cts +7 -0
- package/dist/services/definitions/apptension-saas.d.cts.map +1 -0
- package/dist/services/definitions/apptension-saas.d.mts +7 -0
- package/dist/services/definitions/apptension-saas.d.mts.map +1 -0
- package/dist/services/definitions/apptension-saas.mjs +86 -0
- package/dist/services/definitions/apptension-saas.mjs.map +1 -0
- package/dist/services/definitions/audiobookshelf.cjs +81 -0
- package/dist/services/definitions/audiobookshelf.cjs.map +1 -0
- package/dist/services/definitions/audiobookshelf.d.cts +7 -0
- package/dist/services/definitions/audiobookshelf.d.cts.map +1 -0
- package/dist/services/definitions/audiobookshelf.d.mts +7 -0
- package/dist/services/definitions/audiobookshelf.d.mts.map +1 -0
- package/dist/services/definitions/audiobookshelf.mjs +80 -0
- package/dist/services/definitions/audiobookshelf.mjs.map +1 -0
- package/dist/services/definitions/baserow.cjs +115 -0
- package/dist/services/definitions/baserow.cjs.map +1 -0
- package/dist/services/definitions/baserow.d.cts +7 -0
- package/dist/services/definitions/baserow.d.cts.map +1 -0
- package/dist/services/definitions/baserow.d.mts +7 -0
- package/dist/services/definitions/baserow.d.mts.map +1 -0
- package/dist/services/definitions/baserow.mjs +114 -0
- package/dist/services/definitions/baserow.mjs.map +1 -0
- package/dist/services/definitions/boxyhq-saas.cjs +88 -0
- package/dist/services/definitions/boxyhq-saas.cjs.map +1 -0
- package/dist/services/definitions/boxyhq-saas.d.cts +7 -0
- package/dist/services/definitions/boxyhq-saas.d.cts.map +1 -0
- package/dist/services/definitions/boxyhq-saas.d.mts +7 -0
- package/dist/services/definitions/boxyhq-saas.d.mts.map +1 -0
- package/dist/services/definitions/boxyhq-saas.mjs +87 -0
- package/dist/services/definitions/boxyhq-saas.mjs.map +1 -0
- package/dist/services/definitions/calibre-web.cjs +91 -0
- package/dist/services/definitions/calibre-web.cjs.map +1 -0
- package/dist/services/definitions/calibre-web.d.cts +7 -0
- package/dist/services/definitions/calibre-web.d.cts.map +1 -0
- package/dist/services/definitions/calibre-web.d.mts +7 -0
- package/dist/services/definitions/calibre-web.d.mts.map +1 -0
- package/dist/services/definitions/calibre-web.mjs +90 -0
- package/dist/services/definitions/calibre-web.mjs.map +1 -0
- package/dist/services/definitions/clickhouse.cjs +113 -0
- package/dist/services/definitions/clickhouse.cjs.map +1 -0
- package/dist/services/definitions/clickhouse.d.cts +7 -0
- package/dist/services/definitions/clickhouse.d.cts.map +1 -0
- package/dist/services/definitions/clickhouse.d.mts +7 -0
- package/dist/services/definitions/clickhouse.d.mts.map +1 -0
- package/dist/services/definitions/clickhouse.mjs +112 -0
- package/dist/services/definitions/clickhouse.mjs.map +1 -0
- package/dist/services/definitions/cloudflared.cjs +55 -0
- package/dist/services/definitions/cloudflared.cjs.map +1 -0
- package/dist/services/definitions/cloudflared.d.cts +7 -0
- package/dist/services/definitions/cloudflared.d.cts.map +1 -0
- package/dist/services/definitions/cloudflared.d.mts +7 -0
- package/dist/services/definitions/cloudflared.d.mts.map +1 -0
- package/dist/services/definitions/cloudflared.mjs +54 -0
- package/dist/services/definitions/cloudflared.mjs.map +1 -0
- package/dist/services/definitions/cmsaas-starter.cjs +86 -0
- package/dist/services/definitions/cmsaas-starter.cjs.map +1 -0
- package/dist/services/definitions/cmsaas-starter.d.cts +7 -0
- package/dist/services/definitions/cmsaas-starter.d.cts.map +1 -0
- package/dist/services/definitions/cmsaas-starter.d.mts +7 -0
- package/dist/services/definitions/cmsaas-starter.d.mts.map +1 -0
- package/dist/services/definitions/cmsaas-starter.mjs +85 -0
- package/dist/services/definitions/cmsaas-starter.mjs.map +1 -0
- package/dist/services/definitions/cockroachdb.cjs +70 -0
- package/dist/services/definitions/cockroachdb.cjs.map +1 -0
- package/dist/services/definitions/cockroachdb.d.cts +7 -0
- package/dist/services/definitions/cockroachdb.d.cts.map +1 -0
- package/dist/services/definitions/cockroachdb.d.mts +7 -0
- package/dist/services/definitions/cockroachdb.d.mts.map +1 -0
- package/dist/services/definitions/cockroachdb.mjs +69 -0
- package/dist/services/definitions/cockroachdb.mjs.map +1 -0
- package/dist/services/definitions/coder.cjs +64 -0
- package/dist/services/definitions/coder.cjs.map +1 -0
- package/dist/services/definitions/coder.d.cts +7 -0
- package/dist/services/definitions/coder.d.cts.map +1 -0
- package/dist/services/definitions/coder.d.mts +7 -0
- package/dist/services/definitions/coder.d.mts.map +1 -0
- package/dist/services/definitions/coder.mjs +63 -0
- package/dist/services/definitions/coder.mjs.map +1 -0
- package/dist/services/definitions/dragonfly.cjs +64 -0
- package/dist/services/definitions/dragonfly.cjs.map +1 -0
- package/dist/services/definitions/dragonfly.d.cts +7 -0
- package/dist/services/definitions/dragonfly.d.cts.map +1 -0
- package/dist/services/definitions/dragonfly.d.mts +7 -0
- package/dist/services/definitions/dragonfly.d.mts.map +1 -0
- package/dist/services/definitions/dragonfly.mjs +63 -0
- package/dist/services/definitions/dragonfly.mjs.map +1 -0
- package/dist/services/definitions/drone-ci.cjs +95 -0
- package/dist/services/definitions/drone-ci.cjs.map +1 -0
- package/dist/services/definitions/drone-ci.d.cts +7 -0
- package/dist/services/definitions/drone-ci.d.cts.map +1 -0
- package/dist/services/definitions/drone-ci.d.mts +7 -0
- package/dist/services/definitions/drone-ci.d.mts.map +1 -0
- package/dist/services/definitions/drone-ci.mjs +94 -0
- package/dist/services/definitions/drone-ci.mjs.map +1 -0
- package/dist/services/definitions/element-web.cjs +61 -0
- package/dist/services/definitions/element-web.cjs.map +1 -0
- package/dist/services/definitions/element-web.d.cts +7 -0
- package/dist/services/definitions/element-web.d.cts.map +1 -0
- package/dist/services/definitions/element-web.d.mts +7 -0
- package/dist/services/definitions/element-web.d.mts.map +1 -0
- package/dist/services/definitions/element-web.mjs +60 -0
- package/dist/services/definitions/element-web.mjs.map +1 -0
- package/dist/services/definitions/focalboard.cjs +65 -0
- package/dist/services/definitions/focalboard.cjs.map +1 -0
- package/dist/services/definitions/focalboard.d.cts +7 -0
- package/dist/services/definitions/focalboard.d.cts.map +1 -0
- package/dist/services/definitions/focalboard.d.mts +7 -0
- package/dist/services/definitions/focalboard.d.mts.map +1 -0
- package/dist/services/definitions/focalboard.mjs +64 -0
- package/dist/services/definitions/focalboard.mjs.map +1 -0
- package/dist/services/definitions/forgejo.cjs +108 -0
- package/dist/services/definitions/forgejo.cjs.map +1 -0
- package/dist/services/definitions/forgejo.d.cts +7 -0
- package/dist/services/definitions/forgejo.d.cts.map +1 -0
- package/dist/services/definitions/forgejo.d.mts +7 -0
- package/dist/services/definitions/forgejo.d.mts.map +1 -0
- package/dist/services/definitions/forgejo.mjs +107 -0
- package/dist/services/definitions/forgejo.mjs.map +1 -0
- package/dist/services/definitions/graylog.cjs +103 -0
- package/dist/services/definitions/graylog.cjs.map +1 -0
- package/dist/services/definitions/graylog.d.cts +7 -0
- package/dist/services/definitions/graylog.d.cts.map +1 -0
- package/dist/services/definitions/graylog.d.mts +7 -0
- package/dist/services/definitions/graylog.d.mts.map +1 -0
- package/dist/services/definitions/graylog.mjs +102 -0
- package/dist/services/definitions/graylog.mjs.map +1 -0
- package/dist/services/definitions/index.cjs +154 -1
- package/dist/services/definitions/index.cjs.map +1 -1
- package/dist/services/definitions/index.d.cts +52 -1
- package/dist/services/definitions/index.d.cts.map +1 -1
- package/dist/services/definitions/index.d.mts +52 -1
- package/dist/services/definitions/index.d.mts.map +1 -1
- package/dist/services/definitions/index.mjs +104 -2
- package/dist/services/definitions/index.mjs.map +1 -1
- package/dist/services/definitions/influxdb.cjs +105 -0
- package/dist/services/definitions/influxdb.cjs.map +1 -0
- package/dist/services/definitions/influxdb.d.cts +7 -0
- package/dist/services/definitions/influxdb.d.cts.map +1 -0
- package/dist/services/definitions/influxdb.d.mts +7 -0
- package/dist/services/definitions/influxdb.d.mts.map +1 -0
- package/dist/services/definitions/influxdb.mjs +104 -0
- package/dist/services/definitions/influxdb.mjs.map +1 -0
- package/dist/services/definitions/invoke-ai.cjs +70 -0
- package/dist/services/definitions/invoke-ai.cjs.map +1 -0
- package/dist/services/definitions/invoke-ai.d.cts +7 -0
- package/dist/services/definitions/invoke-ai.d.cts.map +1 -0
- package/dist/services/definitions/invoke-ai.d.mts +7 -0
- package/dist/services/definitions/invoke-ai.d.mts.map +1 -0
- package/dist/services/definitions/invoke-ai.mjs +69 -0
- package/dist/services/definitions/invoke-ai.mjs.map +1 -0
- package/dist/services/definitions/ixartz-saas.cjs +88 -0
- package/dist/services/definitions/ixartz-saas.cjs.map +1 -0
- package/dist/services/definitions/ixartz-saas.d.cts +7 -0
- package/dist/services/definitions/ixartz-saas.d.cts.map +1 -0
- package/dist/services/definitions/ixartz-saas.d.mts +7 -0
- package/dist/services/definitions/ixartz-saas.d.mts.map +1 -0
- package/dist/services/definitions/ixartz-saas.mjs +87 -0
- package/dist/services/definitions/ixartz-saas.mjs.map +1 -0
- package/dist/services/definitions/jaeger.cjs +95 -0
- package/dist/services/definitions/jaeger.cjs.map +1 -0
- package/dist/services/definitions/jaeger.d.cts +7 -0
- package/dist/services/definitions/jaeger.d.cts.map +1 -0
- package/dist/services/definitions/jaeger.d.mts +7 -0
- package/dist/services/definitions/jaeger.d.mts.map +1 -0
- package/dist/services/definitions/jaeger.mjs +94 -0
- package/dist/services/definitions/jaeger.mjs.map +1 -0
- package/dist/services/definitions/jan.cjs +64 -0
- package/dist/services/definitions/jan.cjs.map +1 -0
- package/dist/services/definitions/jan.d.cts +7 -0
- package/dist/services/definitions/jan.d.cts.map +1 -0
- package/dist/services/definitions/jan.d.mts +7 -0
- package/dist/services/definitions/jan.d.mts.map +1 -0
- package/dist/services/definitions/jan.mjs +63 -0
- package/dist/services/definitions/jan.mjs.map +1 -0
- package/dist/services/definitions/jitsi-meet.cjs +102 -0
- package/dist/services/definitions/jitsi-meet.cjs.map +1 -0
- package/dist/services/definitions/jitsi-meet.d.cts +7 -0
- package/dist/services/definitions/jitsi-meet.d.cts.map +1 -0
- package/dist/services/definitions/jitsi-meet.d.mts +7 -0
- package/dist/services/definitions/jitsi-meet.d.mts.map +1 -0
- package/dist/services/definitions/jitsi-meet.mjs +101 -0
- package/dist/services/definitions/jitsi-meet.mjs.map +1 -0
- package/dist/services/definitions/local-ai.cjs +86 -0
- package/dist/services/definitions/local-ai.cjs.map +1 -0
- package/dist/services/definitions/local-ai.d.cts +7 -0
- package/dist/services/definitions/local-ai.d.cts.map +1 -0
- package/dist/services/definitions/local-ai.d.mts +7 -0
- package/dist/services/definitions/local-ai.d.mts.map +1 -0
- package/dist/services/definitions/local-ai.mjs +85 -0
- package/dist/services/definitions/local-ai.mjs.map +1 -0
- package/dist/services/definitions/metabase.cjs +108 -0
- package/dist/services/definitions/metabase.cjs.map +1 -0
- package/dist/services/definitions/metabase.d.cts +7 -0
- package/dist/services/definitions/metabase.d.cts.map +1 -0
- package/dist/services/definitions/metabase.d.mts +7 -0
- package/dist/services/definitions/metabase.d.mts.map +1 -0
- package/dist/services/definitions/metabase.mjs +107 -0
- package/dist/services/definitions/metabase.mjs.map +1 -0
- package/dist/services/definitions/mission-control.cjs +16 -2
- package/dist/services/definitions/mission-control.cjs.map +1 -1
- package/dist/services/definitions/mission-control.mjs +16 -2
- package/dist/services/definitions/mission-control.mjs.map +1 -1
- package/dist/services/definitions/mosquitto.cjs +82 -0
- package/dist/services/definitions/mosquitto.cjs.map +1 -0
- package/dist/services/definitions/mosquitto.d.cts +7 -0
- package/dist/services/definitions/mosquitto.d.cts.map +1 -0
- package/dist/services/definitions/mosquitto.d.mts +7 -0
- package/dist/services/definitions/mosquitto.d.mts.map +1 -0
- package/dist/services/definitions/mosquitto.mjs +81 -0
- package/dist/services/definitions/mosquitto.mjs.map +1 -0
- package/dist/services/definitions/navidrome.cjs +90 -0
- package/dist/services/definitions/navidrome.cjs.map +1 -0
- package/dist/services/definitions/navidrome.d.cts +7 -0
- package/dist/services/definitions/navidrome.d.cts.map +1 -0
- package/dist/services/definitions/navidrome.d.mts +7 -0
- package/dist/services/definitions/navidrome.d.mts.map +1 -0
- package/dist/services/definitions/navidrome.mjs +89 -0
- package/dist/services/definitions/navidrome.mjs.map +1 -0
- package/dist/services/definitions/nginx-proxy-manager.cjs +71 -0
- package/dist/services/definitions/nginx-proxy-manager.cjs.map +1 -0
- package/dist/services/definitions/nginx-proxy-manager.d.cts +7 -0
- package/dist/services/definitions/nginx-proxy-manager.d.cts.map +1 -0
- package/dist/services/definitions/nginx-proxy-manager.d.mts +7 -0
- package/dist/services/definitions/nginx-proxy-manager.d.mts.map +1 -0
- package/dist/services/definitions/nginx-proxy-manager.mjs +70 -0
- package/dist/services/definitions/nginx-proxy-manager.mjs.map +1 -0
- package/dist/services/definitions/node-red.cjs +77 -0
- package/dist/services/definitions/node-red.cjs.map +1 -0
- package/dist/services/definitions/node-red.d.cts +7 -0
- package/dist/services/definitions/node-red.d.cts.map +1 -0
- package/dist/services/definitions/node-red.d.mts +7 -0
- package/dist/services/definitions/node-red.d.mts.map +1 -0
- package/dist/services/definitions/node-red.mjs +76 -0
- package/dist/services/definitions/node-red.mjs.map +1 -0
- package/dist/services/definitions/open-saas.cjs +81 -0
- package/dist/services/definitions/open-saas.cjs.map +1 -0
- package/dist/services/definitions/open-saas.d.cts +7 -0
- package/dist/services/definitions/open-saas.d.cts.map +1 -0
- package/dist/services/definitions/open-saas.d.mts +7 -0
- package/dist/services/definitions/open-saas.d.mts.map +1 -0
- package/dist/services/definitions/open-saas.mjs +80 -0
- package/dist/services/definitions/open-saas.mjs.map +1 -0
- package/dist/services/definitions/photoprism.cjs +126 -0
- package/dist/services/definitions/photoprism.cjs.map +1 -0
- package/dist/services/definitions/photoprism.d.cts +7 -0
- package/dist/services/definitions/photoprism.d.cts.map +1 -0
- package/dist/services/definitions/photoprism.d.mts +7 -0
- package/dist/services/definitions/photoprism.d.mts.map +1 -0
- package/dist/services/definitions/photoprism.mjs +125 -0
- package/dist/services/definitions/photoprism.mjs.map +1 -0
- package/dist/services/definitions/pihole.cjs +73 -0
- package/dist/services/definitions/pihole.cjs.map +1 -0
- package/dist/services/definitions/pihole.d.cts +7 -0
- package/dist/services/definitions/pihole.d.cts.map +1 -0
- package/dist/services/definitions/pihole.d.mts +7 -0
- package/dist/services/definitions/pihole.d.mts.map +1 -0
- package/dist/services/definitions/pihole.mjs +72 -0
- package/dist/services/definitions/pihole.mjs.map +1 -0
- package/dist/services/definitions/piper-tts.cjs +70 -0
- package/dist/services/definitions/piper-tts.cjs.map +1 -0
- package/dist/services/definitions/piper-tts.d.cts +7 -0
- package/dist/services/definitions/piper-tts.d.cts.map +1 -0
- package/dist/services/definitions/piper-tts.d.mts +7 -0
- package/dist/services/definitions/piper-tts.d.mts.map +1 -0
- package/dist/services/definitions/piper-tts.mjs +69 -0
- package/dist/services/definitions/piper-tts.mjs.map +1 -0
- package/dist/services/definitions/plane.cjs +75 -0
- package/dist/services/definitions/plane.cjs.map +1 -0
- package/dist/services/definitions/plane.d.cts +7 -0
- package/dist/services/definitions/plane.d.cts.map +1 -0
- package/dist/services/definitions/plane.d.mts +7 -0
- package/dist/services/definitions/plane.d.mts.map +1 -0
- package/dist/services/definitions/plane.mjs +74 -0
- package/dist/services/definitions/plane.mjs.map +1 -0
- package/dist/services/definitions/plausible.cjs +94 -0
- package/dist/services/definitions/plausible.cjs.map +1 -0
- package/dist/services/definitions/plausible.d.cts +7 -0
- package/dist/services/definitions/plausible.d.cts.map +1 -0
- package/dist/services/definitions/plausible.d.mts +7 -0
- package/dist/services/definitions/plausible.d.mts.map +1 -0
- package/dist/services/definitions/plausible.mjs +93 -0
- package/dist/services/definitions/plausible.mjs.map +1 -0
- package/dist/services/definitions/pocket-id.cjs +101 -0
- package/dist/services/definitions/pocket-id.cjs.map +1 -0
- package/dist/services/definitions/pocket-id.d.cts +7 -0
- package/dist/services/definitions/pocket-id.d.cts.map +1 -0
- package/dist/services/definitions/pocket-id.d.mts +7 -0
- package/dist/services/definitions/pocket-id.d.mts.map +1 -0
- package/dist/services/definitions/pocket-id.mjs +100 -0
- package/dist/services/definitions/pocket-id.mjs.map +1 -0
- package/dist/services/definitions/posthog.cjs +94 -0
- package/dist/services/definitions/posthog.cjs.map +1 -0
- package/dist/services/definitions/posthog.d.cts +7 -0
- package/dist/services/definitions/posthog.d.cts.map +1 -0
- package/dist/services/definitions/posthog.d.mts +7 -0
- package/dist/services/definitions/posthog.d.mts.map +1 -0
- package/dist/services/definitions/posthog.mjs +93 -0
- package/dist/services/definitions/posthog.mjs.map +1 -0
- package/dist/services/definitions/redis.cjs +1 -1
- package/dist/services/definitions/redis.cjs.map +1 -1
- package/dist/services/definitions/redis.mjs +1 -1
- package/dist/services/definitions/redis.mjs.map +1 -1
- package/dist/services/definitions/revolt.cjs +64 -0
- package/dist/services/definitions/revolt.cjs.map +1 -0
- package/dist/services/definitions/revolt.d.cts +7 -0
- package/dist/services/definitions/revolt.d.cts.map +1 -0
- package/dist/services/definitions/revolt.d.mts +7 -0
- package/dist/services/definitions/revolt.d.mts.map +1 -0
- package/dist/services/definitions/revolt.mjs +63 -0
- package/dist/services/definitions/revolt.mjs.map +1 -0
- package/dist/services/definitions/sentry.cjs +101 -0
- package/dist/services/definitions/sentry.cjs.map +1 -0
- package/dist/services/definitions/sentry.d.cts +7 -0
- package/dist/services/definitions/sentry.d.cts.map +1 -0
- package/dist/services/definitions/sentry.d.mts +7 -0
- package/dist/services/definitions/sentry.d.mts.map +1 -0
- package/dist/services/definitions/sentry.mjs +100 -0
- package/dist/services/definitions/sentry.mjs.map +1 -0
- package/dist/services/definitions/sonarqube.cjs +86 -0
- package/dist/services/definitions/sonarqube.cjs.map +1 -0
- package/dist/services/definitions/sonarqube.d.cts +7 -0
- package/dist/services/definitions/sonarqube.d.cts.map +1 -0
- package/dist/services/definitions/sonarqube.d.mts +7 -0
- package/dist/services/definitions/sonarqube.d.mts.map +1 -0
- package/dist/services/definitions/sonarqube.mjs +85 -0
- package/dist/services/definitions/sonarqube.mjs.map +1 -0
- package/dist/services/definitions/superset.cjs +77 -0
- package/dist/services/definitions/superset.cjs.map +1 -0
- package/dist/services/definitions/superset.d.cts +7 -0
- package/dist/services/definitions/superset.d.cts.map +1 -0
- package/dist/services/definitions/superset.d.mts +7 -0
- package/dist/services/definitions/superset.d.mts.map +1 -0
- package/dist/services/definitions/superset.mjs +76 -0
- package/dist/services/definitions/superset.mjs.map +1 -0
- package/dist/services/definitions/surrealdb.cjs +72 -0
- package/dist/services/definitions/surrealdb.cjs.map +1 -0
- package/dist/services/definitions/surrealdb.d.cts +7 -0
- package/dist/services/definitions/surrealdb.d.cts.map +1 -0
- package/dist/services/definitions/surrealdb.d.mts +7 -0
- package/dist/services/definitions/surrealdb.d.mts.map +1 -0
- package/dist/services/definitions/surrealdb.mjs +71 -0
- package/dist/services/definitions/surrealdb.mjs.map +1 -0
- package/dist/services/definitions/tabby-ml.cjs +70 -0
- package/dist/services/definitions/tabby-ml.cjs.map +1 -0
- package/dist/services/definitions/tabby-ml.d.cts +7 -0
- package/dist/services/definitions/tabby-ml.d.cts.map +1 -0
- package/dist/services/definitions/tabby-ml.d.mts +7 -0
- package/dist/services/definitions/tabby-ml.d.mts.map +1 -0
- package/dist/services/definitions/tabby-ml.mjs +69 -0
- package/dist/services/definitions/tabby-ml.mjs.map +1 -0
- package/dist/services/definitions/tempo.cjs +57 -0
- package/dist/services/definitions/tempo.cjs.map +1 -0
- package/dist/services/definitions/tempo.d.cts +7 -0
- package/dist/services/definitions/tempo.d.cts.map +1 -0
- package/dist/services/definitions/tempo.d.mts +7 -0
- package/dist/services/definitions/tempo.d.mts.map +1 -0
- package/dist/services/definitions/tempo.mjs +56 -0
- package/dist/services/definitions/tempo.mjs.map +1 -0
- package/dist/services/definitions/text-gen-webui.cjs +88 -0
- package/dist/services/definitions/text-gen-webui.cjs.map +1 -0
- package/dist/services/definitions/text-gen-webui.d.cts +7 -0
- package/dist/services/definitions/text-gen-webui.d.cts.map +1 -0
- package/dist/services/definitions/text-gen-webui.d.mts +7 -0
- package/dist/services/definitions/text-gen-webui.d.mts.map +1 -0
- package/dist/services/definitions/text-gen-webui.mjs +87 -0
- package/dist/services/definitions/text-gen-webui.mjs.map +1 -0
- package/dist/services/definitions/timescaledb.cjs +87 -0
- package/dist/services/definitions/timescaledb.cjs.map +1 -0
- package/dist/services/definitions/timescaledb.d.cts +7 -0
- package/dist/services/definitions/timescaledb.d.cts.map +1 -0
- package/dist/services/definitions/timescaledb.d.mts +7 -0
- package/dist/services/definitions/timescaledb.d.mts.map +1 -0
- package/dist/services/definitions/timescaledb.mjs +86 -0
- package/dist/services/definitions/timescaledb.mjs.map +1 -0
- package/dist/services/definitions/valkey.cjs +1 -1
- package/dist/services/definitions/valkey.cjs.map +1 -1
- package/dist/services/definitions/valkey.mjs +1 -1
- package/dist/services/definitions/valkey.mjs.map +1 -1
- package/dist/services/definitions/vector-log.cjs +59 -0
- package/dist/services/definitions/vector-log.cjs.map +1 -0
- package/dist/services/definitions/vector-log.d.cts +7 -0
- package/dist/services/definitions/vector-log.d.cts.map +1 -0
- package/dist/services/definitions/vector-log.d.mts +7 -0
- package/dist/services/definitions/vector-log.d.mts.map +1 -0
- package/dist/services/definitions/vector-log.mjs +58 -0
- package/dist/services/definitions/vector-log.mjs.map +1 -0
- package/dist/services/definitions/vikunja.cjs +96 -0
- package/dist/services/definitions/vikunja.cjs.map +1 -0
- package/dist/services/definitions/vikunja.d.cts +7 -0
- package/dist/services/definitions/vikunja.d.cts.map +1 -0
- package/dist/services/definitions/vikunja.d.mts +7 -0
- package/dist/services/definitions/vikunja.d.mts.map +1 -0
- package/dist/services/definitions/vikunja.mjs +95 -0
- package/dist/services/definitions/vikunja.mjs.map +1 -0
- package/dist/services/definitions/wireguard.cjs +88 -0
- package/dist/services/definitions/wireguard.cjs.map +1 -0
- package/dist/services/definitions/wireguard.d.cts +7 -0
- package/dist/services/definitions/wireguard.d.cts.map +1 -0
- package/dist/services/definitions/wireguard.d.mts +7 -0
- package/dist/services/definitions/wireguard.d.mts.map +1 -0
- package/dist/services/definitions/wireguard.mjs +87 -0
- package/dist/services/definitions/wireguard.mjs.map +1 -0
- package/dist/services/definitions/woodpecker-ci.cjs +93 -0
- package/dist/services/definitions/woodpecker-ci.cjs.map +1 -0
- package/dist/services/definitions/woodpecker-ci.d.cts +7 -0
- package/dist/services/definitions/woodpecker-ci.d.cts.map +1 -0
- package/dist/services/definitions/woodpecker-ci.d.mts +7 -0
- package/dist/services/definitions/woodpecker-ci.d.mts.map +1 -0
- package/dist/services/definitions/woodpecker-ci.mjs +92 -0
- package/dist/services/definitions/woodpecker-ci.mjs.map +1 -0
- package/dist/services/definitions/zulip.cjs +116 -0
- package/dist/services/definitions/zulip.cjs.map +1 -0
- package/dist/services/definitions/zulip.d.cts +7 -0
- package/dist/services/definitions/zulip.d.cts.map +1 -0
- package/dist/services/definitions/zulip.d.mts +7 -0
- package/dist/services/definitions/zulip.d.mts.map +1 -0
- package/dist/services/definitions/zulip.mjs +115 -0
- package/dist/services/definitions/zulip.mjs.map +1 -0
- package/dist/services/registry.cjs +3 -0
- package/dist/services/registry.cjs.map +1 -1
- package/dist/services/registry.d.cts.map +1 -1
- package/dist/services/registry.d.mts.map +1 -1
- package/dist/services/registry.mjs +3 -0
- package/dist/services/registry.mjs.map +1 -1
- package/dist/services/registry.test.cjs +8 -1
- package/dist/services/registry.test.cjs.map +1 -1
- package/dist/services/registry.test.mjs +8 -1
- package/dist/services/registry.test.mjs.map +1 -1
- package/dist/{skill-manifest-BVUXU0__.mjs → skill-manifest-6XhrhWsG.mjs} +49 -1
- package/dist/{skill-manifest--IgY9REK.cjs.map → skill-manifest-6XhrhWsG.mjs.map} +1 -1
- package/dist/{skill-manifest--IgY9REK.cjs → skill-manifest-B8znSsym.cjs} +49 -1
- package/dist/{skill-manifest-BVUXU0__.mjs.map → skill-manifest-B8znSsym.cjs.map} +1 -1
- package/dist/skills/registry.cjs +3 -3
- package/dist/skills/registry.cjs.map +1 -1
- package/dist/skills/registry.mjs +3 -3
- package/dist/skills/registry.mjs.map +1 -1
- package/dist/skills/skill-manifest.cjs +1 -1
- package/dist/skills/skill-manifest.mjs +1 -1
- package/dist/track-analytics.cjs +50 -0
- package/dist/track-analytics.cjs.map +1 -0
- package/dist/track-analytics.d.cts +34 -0
- package/dist/track-analytics.d.cts.map +1 -0
- package/dist/track-analytics.d.mts +34 -0
- package/dist/track-analytics.d.mts.map +1 -0
- package/dist/track-analytics.mjs +48 -0
- package/dist/track-analytics.mjs.map +1 -0
- package/dist/track-analytics.test.cjs +91 -0
- package/dist/track-analytics.test.cjs.map +1 -0
- package/dist/track-analytics.test.d.cts +1 -0
- package/dist/track-analytics.test.d.mts +1 -0
- package/dist/track-analytics.test.mjs +92 -0
- package/dist/track-analytics.test.mjs.map +1 -0
- package/dist/types.cjs +35 -0
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +5 -2
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.mts +5 -2
- package/dist/types.d.mts.map +1 -1
- package/dist/types.mjs +35 -0
- package/dist/types.mjs.map +1 -1
- package/dist/validator.test.cjs +1 -1
- package/dist/validator.test.mjs +1 -1
- package/dist/version-manager.cjs +1 -1
- package/dist/version-manager.cjs.map +1 -1
- package/dist/version-manager.mjs +1 -1
- package/dist/version-manager.mjs.map +1 -1
- package/dist/version-manager.test.cjs +7 -5
- package/dist/version-manager.test.cjs.map +1 -1
- package/dist/version-manager.test.mjs +7 -5
- package/dist/version-manager.test.mjs.map +1 -1
- package/dist/{vi.2VT5v0um-DvC3SVNc.mjs → vi.2VT5v0um-C_jmO7m2.mjs} +5 -5
- package/dist/{vi.2VT5v0um-DvC3SVNc.mjs.map → vi.2VT5v0um-C_jmO7m2.mjs.map} +1 -1
- package/dist/{vi.2VT5v0um-CRqXre87.cjs → vi.2VT5v0um-iVBt6Fyq.cjs} +5 -5
- package/dist/{vi.2VT5v0um-CRqXre87.cjs.map → vi.2VT5v0um-iVBt6Fyq.cjs.map} +1 -1
- package/package.json +1 -1
- package/src/__snapshots__/composer.snapshot.test.ts.snap +285 -65
- package/src/bare-metal-partition.test.ts +4 -3
- package/src/composer.test.ts +4 -2
- package/src/composer.ts +45 -16
- package/src/generate.test.ts +2 -1
- package/src/generate.ts +11 -1
- package/src/generators/clone-repos.test.ts +154 -0
- package/src/generators/clone-repos.ts +159 -0
- package/src/generators/env.ts +214 -0
- package/src/generators/openclaw-json.ts +156 -1
- package/src/generators/postgres-init.ts +17 -0
- package/src/generators/readme.ts +2 -1
- package/src/generators/scripts.test.ts +52 -4
- package/src/generators/scripts.ts +351 -3
- package/src/generators/stack-manifest.ts +4 -2
- package/src/index.ts +8 -0
- package/src/presets/registry.ts +20 -0
- package/src/resolver.test.ts +53 -15
- package/src/resolver.ts +13 -1
- package/src/schema.ts +37 -4
- package/src/services/definitions/adguard-home.ts +79 -0
- package/src/services/definitions/apptension-saas.ts +84 -0
- package/src/services/definitions/audiobookshelf.ts +83 -0
- package/src/services/definitions/baserow.ts +118 -0
- package/src/services/definitions/boxyhq-saas.ts +84 -0
- package/src/services/definitions/calibre-web.ts +95 -0
- package/src/services/definitions/clickhouse.ts +115 -0
- package/src/services/definitions/cloudflared.ts +55 -0
- package/src/services/definitions/cmsaas-starter.ts +84 -0
- package/src/services/definitions/cockroachdb.ts +75 -0
- package/src/services/definitions/coder.ts +68 -0
- package/src/services/definitions/dragonfly.ts +68 -0
- package/src/services/definitions/drone-ci.ts +96 -0
- package/src/services/definitions/element-web.ts +62 -0
- package/src/services/definitions/focalboard.ts +69 -0
- package/src/services/definitions/forgejo.ts +109 -0
- package/src/services/definitions/graylog.ts +101 -0
- package/src/services/definitions/index.ts +159 -0
- package/src/services/definitions/influxdb.ts +109 -0
- package/src/services/definitions/invoke-ai.ts +76 -0
- package/src/services/definitions/ixartz-saas.ts +84 -0
- package/src/services/definitions/jaeger.ts +94 -0
- package/src/services/definitions/jan.ts +68 -0
- package/src/services/definitions/jitsi-meet.ts +108 -0
- package/src/services/definitions/local-ai.ts +90 -0
- package/src/services/definitions/metabase.ts +111 -0
- package/src/services/definitions/mission-control.ts +19 -2
- package/src/services/definitions/mosquitto.ts +84 -0
- package/src/services/definitions/navidrome.ts +95 -0
- package/src/services/definitions/nginx-proxy-manager.ts +70 -0
- package/src/services/definitions/node-red.ts +83 -0
- package/src/services/definitions/open-saas.ts +79 -0
- package/src/services/definitions/photoprism.ts +130 -0
- package/src/services/definitions/pihole.ts +79 -0
- package/src/services/definitions/piper-tts.ts +76 -0
- package/src/services/definitions/plane.ts +75 -0
- package/src/services/definitions/plausible.ts +97 -0
- package/src/services/definitions/pocket-id.ts +98 -0
- package/src/services/definitions/posthog.ts +97 -0
- package/src/services/definitions/redis.ts +1 -1
- package/src/services/definitions/revolt.ts +68 -0
- package/src/services/definitions/sentry.ts +104 -0
- package/src/services/definitions/sonarqube.ts +85 -0
- package/src/services/definitions/superset.ts +84 -0
- package/src/services/definitions/surrealdb.ts +77 -0
- package/src/services/definitions/tabby-ml.ts +76 -0
- package/src/services/definitions/tempo.ts +59 -0
- package/src/services/definitions/text-gen-webui.ts +92 -0
- package/src/services/definitions/timescaledb.ts +90 -0
- package/src/services/definitions/valkey.ts +1 -1
- package/src/services/definitions/vector-log.ts +61 -0
- package/src/services/definitions/vikunja.ts +96 -0
- package/src/services/definitions/wireguard.ts +89 -0
- package/src/services/definitions/woodpecker-ci.ts +97 -0
- package/src/services/definitions/zulip.ts +117 -0
- package/src/services/registry.test.ts +8 -0
- package/src/services/registry.ts +7 -0
- package/src/skills/manifest.json +64 -0
- package/src/skills/registry.ts +3 -3
- package/src/track-analytics.test.ts +82 -0
- package/src/track-analytics.ts +76 -0
- package/src/types.ts +40 -0
- package/src/version-manager.test.ts +10 -5
- package/src/version-manager.ts +1 -1
- package/dist/schema-C_hc7e4k.d.cts.map +0 -1
- package/dist/schema-CaesJaS2.d.mts.map +0 -1
package/src/composer.ts
CHANGED
|
@@ -50,6 +50,7 @@ const CATEGORY_PROFILE_MAP: Partial<Record<ServiceCategory, { file: string; prof
|
|
|
50
50
|
"social-media": { file: "docker-compose.social.yml", profile: "social" },
|
|
51
51
|
knowledge: { file: "docker-compose.knowledge.yml", profile: "knowledge" },
|
|
52
52
|
communication: { file: "docker-compose.communication.yml", profile: "communication" },
|
|
53
|
+
"saas-boilerplate": { file: "docker-compose.saas.yml", profile: "saas" },
|
|
53
54
|
};
|
|
54
55
|
|
|
55
56
|
const YAML_OPTIONS = { lineWidth: 120, nullStr: "" };
|
|
@@ -83,10 +84,11 @@ function buildGatewayServices(
|
|
|
83
84
|
HOME: "/home/node",
|
|
84
85
|
TERM: "xterm-256color",
|
|
85
86
|
OPENCLAW_GATEWAY_TOKEN: "${OPENCLAW_GATEWAY_TOKEN}",
|
|
87
|
+
OPENCLAW_ALLOW_INSECURE_PRIVATE_WS: "${OPENCLAW_ALLOW_INSECURE_PRIVATE_WS:-}",
|
|
86
88
|
// Claude web-provider session vars (optional, user fills in .env)
|
|
87
|
-
CLAUDE_AI_SESSION_KEY: "${CLAUDE_AI_SESSION_KEY}",
|
|
88
|
-
CLAUDE_WEB_SESSION_KEY: "${CLAUDE_WEB_SESSION_KEY}",
|
|
89
|
-
CLAUDE_WEB_COOKIE: "${CLAUDE_WEB_COOKIE}",
|
|
89
|
+
CLAUDE_AI_SESSION_KEY: "${CLAUDE_AI_SESSION_KEY:-}",
|
|
90
|
+
CLAUDE_WEB_SESSION_KEY: "${CLAUDE_WEB_SESSION_KEY:-}",
|
|
91
|
+
CLAUDE_WEB_COOKIE: "${CLAUDE_WEB_COOKIE:-}",
|
|
90
92
|
};
|
|
91
93
|
|
|
92
94
|
// Add AI provider API keys to gateway environment
|
|
@@ -150,7 +152,20 @@ function buildGatewayServices(
|
|
|
150
152
|
"${OPENCLAW_GATEWAY_BIND:-lan}",
|
|
151
153
|
"--port",
|
|
152
154
|
"18789",
|
|
155
|
+
"--allow-unconfigured",
|
|
153
156
|
],
|
|
157
|
+
healthcheck: {
|
|
158
|
+
test: [
|
|
159
|
+
"CMD",
|
|
160
|
+
"node",
|
|
161
|
+
"-e",
|
|
162
|
+
"fetch('http://127.0.0.1:18789/healthz').then((r)=>process.exit(r.ok?0:1)).catch(()=>process.exit(1))",
|
|
163
|
+
],
|
|
164
|
+
interval: "30s",
|
|
165
|
+
timeout: "5s",
|
|
166
|
+
retries: 5,
|
|
167
|
+
start_period: "20s",
|
|
168
|
+
},
|
|
154
169
|
};
|
|
155
170
|
|
|
156
171
|
// Traefik labels for the gateway
|
|
@@ -173,13 +188,11 @@ function buildGatewayServices(
|
|
|
173
188
|
HOME: "/home/node",
|
|
174
189
|
TERM: "xterm-256color",
|
|
175
190
|
OPENCLAW_GATEWAY_TOKEN: "${OPENCLAW_GATEWAY_TOKEN}",
|
|
176
|
-
|
|
177
|
-
OPENCLAW_GATEWAY_HOST: "openclaw-gateway",
|
|
178
|
-
OPENCLAW_GATEWAY_PORT: "18789",
|
|
191
|
+
OPENCLAW_ALLOW_INSECURE_PRIVATE_WS: "${OPENCLAW_ALLOW_INSECURE_PRIVATE_WS:-}",
|
|
179
192
|
BROWSER: "echo",
|
|
180
|
-
CLAUDE_AI_SESSION_KEY: "${CLAUDE_AI_SESSION_KEY}",
|
|
181
|
-
CLAUDE_WEB_SESSION_KEY: "${CLAUDE_WEB_SESSION_KEY}",
|
|
182
|
-
CLAUDE_WEB_COOKIE: "${CLAUDE_WEB_COOKIE}",
|
|
193
|
+
CLAUDE_AI_SESSION_KEY: "${CLAUDE_AI_SESSION_KEY:-}",
|
|
194
|
+
CLAUDE_WEB_SESSION_KEY: "${CLAUDE_WEB_SESSION_KEY:-}",
|
|
195
|
+
CLAUDE_WEB_COOKIE: "${CLAUDE_WEB_COOKIE:-}",
|
|
183
196
|
};
|
|
184
197
|
|
|
185
198
|
// Add same AI provider API keys to CLI for direct AI interactions
|
|
@@ -189,6 +202,9 @@ function buildGatewayServices(
|
|
|
189
202
|
|
|
190
203
|
const cliService: Record<string, unknown> = {
|
|
191
204
|
image: `\${OPENCLAW_IMAGE:-${defaultImage}}`,
|
|
205
|
+
network_mode: "service:openclaw-gateway",
|
|
206
|
+
cap_drop: ["NET_RAW", "NET_ADMIN"],
|
|
207
|
+
security_opt: ["no-new-privileges:true"],
|
|
192
208
|
environment: cliEnv,
|
|
193
209
|
volumes: [
|
|
194
210
|
"${OPENCLAW_CONFIG_DIR:-./openclaw/config}:/home/node/.openclaw",
|
|
@@ -197,13 +213,8 @@ function buildGatewayServices(
|
|
|
197
213
|
stdin_open: true,
|
|
198
214
|
tty: true,
|
|
199
215
|
init: true,
|
|
200
|
-
networks: ["openclaw-network"],
|
|
201
216
|
entrypoint: ["node", "dist/index.js"],
|
|
202
|
-
|
|
203
|
-
restart: "no",
|
|
204
|
-
depends_on: {
|
|
205
|
-
"openclaw-gateway": { condition: "service_started" },
|
|
206
|
-
},
|
|
217
|
+
depends_on: ["openclaw-gateway"],
|
|
207
218
|
};
|
|
208
219
|
|
|
209
220
|
return { gatewayService: gateway, cliService: cliService, allVolumes };
|
|
@@ -220,7 +231,25 @@ function buildCompanionService(
|
|
|
220
231
|
const svc: Record<string, unknown> = {};
|
|
221
232
|
const volumeNames: string[] = [];
|
|
222
233
|
|
|
223
|
-
|
|
234
|
+
// Git-based services use build: context; image-based services use image:
|
|
235
|
+
if (def.gitSource && def.buildContext) {
|
|
236
|
+
const subdir = def.gitSource.subdirectory || ".";
|
|
237
|
+
const ctxPath = def.buildContext.context || ".";
|
|
238
|
+
const contextFull = subdir === "." ? `./repos/${def.id}/${ctxPath}` : `./repos/${def.id}/${subdir}/${ctxPath}`;
|
|
239
|
+
const buildBlock: Record<string, unknown> = { context: contextFull };
|
|
240
|
+
if (def.buildContext.dockerfile) {
|
|
241
|
+
buildBlock.dockerfile = def.buildContext.dockerfile;
|
|
242
|
+
}
|
|
243
|
+
if (def.buildContext.args && Object.keys(def.buildContext.args).length > 0) {
|
|
244
|
+
buildBlock.args = def.buildContext.args;
|
|
245
|
+
}
|
|
246
|
+
if (def.buildContext.target) {
|
|
247
|
+
buildBlock.target = def.buildContext.target;
|
|
248
|
+
}
|
|
249
|
+
svc.build = buildBlock;
|
|
250
|
+
} else {
|
|
251
|
+
svc.image = `${def.image}:${def.imageTag}`;
|
|
252
|
+
}
|
|
224
253
|
|
|
225
254
|
if (def.environment.length > 0) {
|
|
226
255
|
const env: Record<string, string> = {};
|
package/src/generate.test.ts
CHANGED
|
@@ -187,7 +187,8 @@ describe("generate (end-to-end)", () => {
|
|
|
187
187
|
for (const id of lasuiteMeetServices) {
|
|
188
188
|
expect(allServiceIds.has(id), `missing service ${id}`).toBe(true);
|
|
189
189
|
}
|
|
190
|
-
|
|
190
|
+
// Service count includes user services + mandatory platform services (convex, mission-control, tailscale)
|
|
191
|
+
expect(result.metadata.serviceCount).toBeGreaterThanOrEqual(lasuiteMeetServices.length);
|
|
191
192
|
});
|
|
192
193
|
|
|
193
194
|
it("generates bare-metal installer for Windows (install.ps1)", () => {
|
package/src/generate.ts
CHANGED
|
@@ -7,6 +7,7 @@ import { composeMultiFile } from "./composer.js";
|
|
|
7
7
|
import { StackConfigError, ValidationError } from "./errors.js";
|
|
8
8
|
import { generateBareMetalInstall } from "./generators/bare-metal-install.js";
|
|
9
9
|
import { generateCaddyfile } from "./generators/caddy.js";
|
|
10
|
+
import { generateCloneScripts } from "./generators/clone-repos.js";
|
|
10
11
|
import { generateCloudInit } from "./generators/cloud-init.js";
|
|
11
12
|
import { generateEnvFiles } from "./generators/env.js";
|
|
12
13
|
import { generateGsdScripts } from "./generators/get-shit-done.js";
|
|
@@ -149,6 +150,7 @@ export function generate(rawInput: GenerationInput): GenerationResult {
|
|
|
149
150
|
".env.*.local",
|
|
150
151
|
"*.log",
|
|
151
152
|
"docker-compose.override.yml",
|
|
153
|
+
"repos/",
|
|
152
154
|
].join("\n");
|
|
153
155
|
|
|
154
156
|
// Stack manifest (consumed by Mission Control)
|
|
@@ -181,11 +183,18 @@ export function generate(rawInput: GenerationInput): GenerationResult {
|
|
|
181
183
|
});
|
|
182
184
|
|
|
183
185
|
// Scripts
|
|
184
|
-
const
|
|
186
|
+
const hasGitServices = resolvedForCompose.services.some((s) => s.definition.gitSource);
|
|
187
|
+
const scripts = generateScripts({ hasGitServices });
|
|
185
188
|
for (const [path, content] of Object.entries(scripts)) {
|
|
186
189
|
files[path] = content;
|
|
187
190
|
}
|
|
188
191
|
|
|
192
|
+
// Clone scripts for git-based services (SaaS boilerplates)
|
|
193
|
+
const cloneScripts = generateCloneScripts(resolvedForCompose);
|
|
194
|
+
for (const [path, content] of Object.entries(cloneScripts)) {
|
|
195
|
+
files[path] = content;
|
|
196
|
+
}
|
|
197
|
+
|
|
189
198
|
// Health check scripts (dynamic, stack-specific)
|
|
190
199
|
const healthCheckFiles = generateHealthCheck(resolved, {
|
|
191
200
|
projectName: input.projectName,
|
|
@@ -307,6 +316,7 @@ export function generate(rawInput: GenerationInput): GenerationResult {
|
|
|
307
316
|
serviceCount: resolved.services.length,
|
|
308
317
|
skillCount,
|
|
309
318
|
estimatedMemoryMB: resolved.estimatedMemoryMB,
|
|
319
|
+
resolvedServices: resolved.services.map((s) => s.definition.id),
|
|
310
320
|
generatedAt: new Date().toISOString(),
|
|
311
321
|
},
|
|
312
322
|
};
|
|
@@ -0,0 +1,154 @@
|
|
|
1
|
+
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { generateCloneScripts } from "./clone-repos.js";
|
|
3
|
+
import type { ResolverOutput } from "../types.js";
|
|
4
|
+
|
|
5
|
+
/** Minimal resolved output with no services */
|
|
6
|
+
function emptyResolved(): ResolverOutput {
|
|
7
|
+
return {
|
|
8
|
+
services: [],
|
|
9
|
+
addedDependencies: [],
|
|
10
|
+
removedConflicts: [],
|
|
11
|
+
warnings: [],
|
|
12
|
+
errors: [],
|
|
13
|
+
isValid: true,
|
|
14
|
+
estimatedMemoryMB: 0,
|
|
15
|
+
aiProviders: [],
|
|
16
|
+
gsdRuntimes: [],
|
|
17
|
+
};
|
|
18
|
+
}
|
|
19
|
+
|
|
20
|
+
/** Create a resolved output with image-based services only */
|
|
21
|
+
function imageOnlyResolved(): ResolverOutput {
|
|
22
|
+
return {
|
|
23
|
+
...emptyResolved(),
|
|
24
|
+
services: [
|
|
25
|
+
{
|
|
26
|
+
definition: {
|
|
27
|
+
id: "redis",
|
|
28
|
+
name: "Redis",
|
|
29
|
+
description: "In-memory cache",
|
|
30
|
+
category: "database",
|
|
31
|
+
icon: "🔴",
|
|
32
|
+
image: "redis",
|
|
33
|
+
imageTag: "7-alpine",
|
|
34
|
+
ports: [],
|
|
35
|
+
volumes: [],
|
|
36
|
+
environment: [],
|
|
37
|
+
dependsOn: [],
|
|
38
|
+
restartPolicy: "unless-stopped",
|
|
39
|
+
networks: ["openclaw-network"],
|
|
40
|
+
skills: [],
|
|
41
|
+
openclawEnvVars: [],
|
|
42
|
+
docsUrl: "https://redis.io",
|
|
43
|
+
tags: [],
|
|
44
|
+
maturity: "stable",
|
|
45
|
+
requires: [],
|
|
46
|
+
recommends: [],
|
|
47
|
+
conflictsWith: [],
|
|
48
|
+
gpuRequired: false,
|
|
49
|
+
},
|
|
50
|
+
addedBy: "user",
|
|
51
|
+
},
|
|
52
|
+
],
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
|
|
56
|
+
/** Create a resolved output with a git-based service */
|
|
57
|
+
function gitServiceResolved(): ResolverOutput {
|
|
58
|
+
return {
|
|
59
|
+
...emptyResolved(),
|
|
60
|
+
services: [
|
|
61
|
+
{
|
|
62
|
+
definition: {
|
|
63
|
+
id: "open-saas",
|
|
64
|
+
name: "Open SaaS",
|
|
65
|
+
description: "SaaS boilerplate",
|
|
66
|
+
category: "saas-boilerplate",
|
|
67
|
+
icon: "🚀",
|
|
68
|
+
gitSource: {
|
|
69
|
+
repoUrl: "https://github.com/wasp-lang/open-saas.git",
|
|
70
|
+
branch: "main",
|
|
71
|
+
subdirectory: "template",
|
|
72
|
+
postCloneCommands: ["cp .env.example .env"],
|
|
73
|
+
},
|
|
74
|
+
buildContext: {
|
|
75
|
+
dockerfile: "Dockerfile",
|
|
76
|
+
context: ".",
|
|
77
|
+
},
|
|
78
|
+
ports: [{ host: 3100, container: 3000, description: "Web app", exposed: true }],
|
|
79
|
+
volumes: [],
|
|
80
|
+
environment: [],
|
|
81
|
+
dependsOn: [],
|
|
82
|
+
restartPolicy: "unless-stopped",
|
|
83
|
+
networks: ["openclaw-network"],
|
|
84
|
+
skills: [],
|
|
85
|
+
openclawEnvVars: [],
|
|
86
|
+
docsUrl: "https://opensaas.sh/docs",
|
|
87
|
+
tags: [],
|
|
88
|
+
maturity: "beta",
|
|
89
|
+
requires: [],
|
|
90
|
+
recommends: [],
|
|
91
|
+
conflictsWith: [],
|
|
92
|
+
gpuRequired: false,
|
|
93
|
+
},
|
|
94
|
+
addedBy: "user",
|
|
95
|
+
},
|
|
96
|
+
],
|
|
97
|
+
};
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
describe("generateCloneScripts", () => {
|
|
101
|
+
it("returns empty object when no git-based services exist", () => {
|
|
102
|
+
const result = generateCloneScripts(emptyResolved());
|
|
103
|
+
expect(result).toEqual({});
|
|
104
|
+
});
|
|
105
|
+
|
|
106
|
+
it("returns empty object when only image-based services exist", () => {
|
|
107
|
+
const result = generateCloneScripts(imageOnlyResolved());
|
|
108
|
+
expect(result).toEqual({});
|
|
109
|
+
});
|
|
110
|
+
|
|
111
|
+
it("generates bash and PowerShell scripts for git-based services", () => {
|
|
112
|
+
const result = generateCloneScripts(gitServiceResolved());
|
|
113
|
+
expect(Object.keys(result)).toHaveLength(2);
|
|
114
|
+
expect(result).toHaveProperty("scripts/clone-repos.sh");
|
|
115
|
+
expect(result).toHaveProperty("scripts/clone-repos.ps1");
|
|
116
|
+
});
|
|
117
|
+
|
|
118
|
+
it("bash script contains clone command with repo URL", () => {
|
|
119
|
+
const result = generateCloneScripts(gitServiceResolved());
|
|
120
|
+
const bash = result["scripts/clone-repos.sh"];
|
|
121
|
+
expect(bash).toContain("https://github.com/wasp-lang/open-saas.git");
|
|
122
|
+
expect(bash).toContain('"open-saas"');
|
|
123
|
+
expect(bash).toContain('"main"');
|
|
124
|
+
});
|
|
125
|
+
|
|
126
|
+
it("bash script includes postCloneCommands", () => {
|
|
127
|
+
const result = generateCloneScripts(gitServiceResolved());
|
|
128
|
+
const bash = result["scripts/clone-repos.sh"];
|
|
129
|
+
expect(bash).toContain("cp .env.example .env");
|
|
130
|
+
});
|
|
131
|
+
|
|
132
|
+
it("bash script includes git check and idempotency logic", () => {
|
|
133
|
+
const result = generateCloneScripts(gitServiceResolved());
|
|
134
|
+
const bash = result["scripts/clone-repos.sh"];
|
|
135
|
+
expect(bash).toContain("command -v git");
|
|
136
|
+
expect(bash).toContain("clone_or_update");
|
|
137
|
+
expect(bash).toContain("pull --ff-only");
|
|
138
|
+
expect(bash).toContain("git clone --depth 1");
|
|
139
|
+
});
|
|
140
|
+
|
|
141
|
+
it("PowerShell script contains clone command with repo URL", () => {
|
|
142
|
+
const result = generateCloneScripts(gitServiceResolved());
|
|
143
|
+
const ps = result["scripts/clone-repos.ps1"];
|
|
144
|
+
expect(ps).toContain("https://github.com/wasp-lang/open-saas.git");
|
|
145
|
+
expect(ps).toContain('"open-saas"');
|
|
146
|
+
expect(ps).toContain("Clone-OrUpdate");
|
|
147
|
+
});
|
|
148
|
+
|
|
149
|
+
it("bash script is executable (starts with shebang)", () => {
|
|
150
|
+
const result = generateCloneScripts(gitServiceResolved());
|
|
151
|
+
const bash = result["scripts/clone-repos.sh"];
|
|
152
|
+
expect(bash).toMatch(/^#!/);
|
|
153
|
+
});
|
|
154
|
+
});
|
|
@@ -0,0 +1,159 @@
|
|
|
1
|
+
import type { ResolverOutput } from "../types.js";
|
|
2
|
+
|
|
3
|
+
/**
|
|
4
|
+
* Generates clone scripts for git-based services (SaaS boilerplates).
|
|
5
|
+
* Returns empty object if no git-based services exist in the resolved stack.
|
|
6
|
+
*/
|
|
7
|
+
export function generateCloneScripts(resolved: ResolverOutput): Record<string, string> {
|
|
8
|
+
const gitServices = resolved.services.filter(
|
|
9
|
+
(s) => s.definition.gitSource && s.definition.buildContext,
|
|
10
|
+
);
|
|
11
|
+
|
|
12
|
+
if (gitServices.length === 0) return {};
|
|
13
|
+
|
|
14
|
+
const files: Record<string, string> = {};
|
|
15
|
+
|
|
16
|
+
// ── scripts/clone-repos.sh ─────────────────────────────────────────────
|
|
17
|
+
|
|
18
|
+
const bashEntries = gitServices
|
|
19
|
+
.map((s) => {
|
|
20
|
+
const gs = s.definition.gitSource!;
|
|
21
|
+
const branchArg = gs.branch ? `"${gs.branch}"` : '""';
|
|
22
|
+
let block = `clone_or_update "${s.definition.id}" "${gs.repoUrl}" ${branchArg}`;
|
|
23
|
+
if (gs.postCloneCommands && gs.postCloneCommands.length > 0) {
|
|
24
|
+
const cmds = gs.postCloneCommands
|
|
25
|
+
.map((cmd) => ` (cd "$REPOS_DIR/${s.definition.id}${gs.subdirectory ? `/${gs.subdirectory}` : ""}" && ${cmd})`)
|
|
26
|
+
.join("\n");
|
|
27
|
+
block += `\n${cmds}`;
|
|
28
|
+
}
|
|
29
|
+
return block;
|
|
30
|
+
})
|
|
31
|
+
.join("\n\n");
|
|
32
|
+
|
|
33
|
+
files["scripts/clone-repos.sh"] = `#!/usr/bin/env bash
|
|
34
|
+
set -euo pipefail
|
|
35
|
+
|
|
36
|
+
# ─── Clone/Update Git-Based Service Repositories ────────────────────────────
|
|
37
|
+
# Idempotent: clones if missing, pulls if already present.
|
|
38
|
+
|
|
39
|
+
SCRIPT_DIR="$(cd "$(dirname "\${BASH_SOURCE[0]}")" && pwd)"
|
|
40
|
+
PROJECT_DIR="$(dirname "$SCRIPT_DIR")"
|
|
41
|
+
REPOS_DIR="$PROJECT_DIR/repos"
|
|
42
|
+
|
|
43
|
+
# ── Colour helpers ──────────────────────────────────────────────────────────
|
|
44
|
+
if [ -t 1 ]; then
|
|
45
|
+
GREEN='\\033[0;32m'; YELLOW='\\033[1;33m'; CYAN='\\033[0;36m'; RED='\\033[0;31m'; NC='\\033[0m'
|
|
46
|
+
else
|
|
47
|
+
GREEN=''; YELLOW=''; CYAN=''; RED=''; NC=''
|
|
48
|
+
fi
|
|
49
|
+
info() { echo -e "\${CYAN}i $*\${NC}"; }
|
|
50
|
+
ok() { echo -e "\${GREEN}✓ $*\${NC}"; }
|
|
51
|
+
warn() { echo -e "\${YELLOW}⚠ $*\${NC}"; }
|
|
52
|
+
err() { echo -e "\${RED}✗ $*\${NC}" >&2; }
|
|
53
|
+
|
|
54
|
+
# ── Check git ───────────────────────────────────────────────────────────────
|
|
55
|
+
if ! command -v git &> /dev/null; then
|
|
56
|
+
err "git is not installed. Please install git first."
|
|
57
|
+
exit 1
|
|
58
|
+
fi
|
|
59
|
+
|
|
60
|
+
mkdir -p "$REPOS_DIR"
|
|
61
|
+
|
|
62
|
+
clone_or_update() {
|
|
63
|
+
local name="$1" url="$2" branch="\${3:-}"
|
|
64
|
+
local dir="$REPOS_DIR/$name"
|
|
65
|
+
|
|
66
|
+
if [ -d "$dir/.git" ]; then
|
|
67
|
+
info "Updating $name..."
|
|
68
|
+
git -C "$dir" pull --ff-only 2>/dev/null || warn "Could not fast-forward $name (you may have local changes)"
|
|
69
|
+
else
|
|
70
|
+
info "Cloning $name..."
|
|
71
|
+
if [ -n "$branch" ]; then
|
|
72
|
+
git clone --depth 1 --branch "$branch" "$url" "$dir"
|
|
73
|
+
else
|
|
74
|
+
git clone --depth 1 "$url" "$dir"
|
|
75
|
+
fi
|
|
76
|
+
fi
|
|
77
|
+
}
|
|
78
|
+
|
|
79
|
+
echo ""
|
|
80
|
+
info "Cloning/updating SaaS boilerplate repositories..."
|
|
81
|
+
echo ""
|
|
82
|
+
|
|
83
|
+
${bashEntries}
|
|
84
|
+
|
|
85
|
+
echo ""
|
|
86
|
+
ok "All repositories ready."
|
|
87
|
+
`;
|
|
88
|
+
|
|
89
|
+
// ── scripts/clone-repos.ps1 ────────────────────────────────────────────
|
|
90
|
+
|
|
91
|
+
const psEntries = gitServices
|
|
92
|
+
.map((s) => {
|
|
93
|
+
const gs = s.definition.gitSource!;
|
|
94
|
+
const branchArg = gs.branch ? ` -Branch "${gs.branch}"` : "";
|
|
95
|
+
let block = `Clone-OrUpdate -Name "${s.definition.id}" -Url "${gs.repoUrl}"${branchArg}`;
|
|
96
|
+
if (gs.postCloneCommands && gs.postCloneCommands.length > 0) {
|
|
97
|
+
const subdir = gs.subdirectory ? `/${gs.subdirectory}` : "";
|
|
98
|
+
const cmds = gs.postCloneCommands
|
|
99
|
+
.map((cmd) => `Push-Location "$ReposDir/${s.definition.id}${subdir}"; ${cmd}; Pop-Location`)
|
|
100
|
+
.join("\n");
|
|
101
|
+
block += `\n${cmds}`;
|
|
102
|
+
}
|
|
103
|
+
return block;
|
|
104
|
+
})
|
|
105
|
+
.join("\n\n");
|
|
106
|
+
|
|
107
|
+
files["scripts/clone-repos.ps1"] = `#Requires -Version 5.1
|
|
108
|
+
<#
|
|
109
|
+
.SYNOPSIS
|
|
110
|
+
Clone/update git-based service repositories.
|
|
111
|
+
Idempotent: clones if missing, pulls if already present.
|
|
112
|
+
#>
|
|
113
|
+
$ErrorActionPreference = "Stop"
|
|
114
|
+
|
|
115
|
+
$ScriptDir = Split-Path -Parent $MyInvocation.MyCommand.Path
|
|
116
|
+
$ProjectDir = Split-Path -Parent $ScriptDir
|
|
117
|
+
$ReposDir = Join-Path $ProjectDir "repos"
|
|
118
|
+
|
|
119
|
+
if (-not (Get-Command git -ErrorAction SilentlyContinue)) {
|
|
120
|
+
Write-Error "git is not installed. Please install git first."
|
|
121
|
+
exit 1
|
|
122
|
+
}
|
|
123
|
+
|
|
124
|
+
if (-not (Test-Path $ReposDir)) { New-Item -ItemType Directory -Path $ReposDir -Force | Out-Null }
|
|
125
|
+
|
|
126
|
+
function Clone-OrUpdate {
|
|
127
|
+
param(
|
|
128
|
+
[string]$Name,
|
|
129
|
+
[string]$Url,
|
|
130
|
+
[string]$Branch = ""
|
|
131
|
+
)
|
|
132
|
+
$dir = Join-Path $ReposDir $Name
|
|
133
|
+
|
|
134
|
+
if (Test-Path (Join-Path $dir ".git")) {
|
|
135
|
+
Write-Host " Updating $Name..." -ForegroundColor Cyan
|
|
136
|
+
git -C $dir pull --ff-only 2>$null
|
|
137
|
+
if ($LASTEXITCODE -ne 0) { Write-Warning "Could not fast-forward $Name" }
|
|
138
|
+
} else {
|
|
139
|
+
Write-Host " Cloning $Name..." -ForegroundColor Cyan
|
|
140
|
+
if ($Branch) {
|
|
141
|
+
git clone --depth 1 --branch $Branch $Url $dir
|
|
142
|
+
} else {
|
|
143
|
+
git clone --depth 1 $Url $dir
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
Write-Host ""
|
|
149
|
+
Write-Host "Cloning/updating SaaS boilerplate repositories..." -ForegroundColor Cyan
|
|
150
|
+
Write-Host ""
|
|
151
|
+
|
|
152
|
+
${psEntries}
|
|
153
|
+
|
|
154
|
+
Write-Host ""
|
|
155
|
+
Write-Host "All repositories ready." -ForegroundColor Green
|
|
156
|
+
`;
|
|
157
|
+
|
|
158
|
+
return files;
|
|
159
|
+
}
|