@better-openclaw/core 1.0.6 → 1.0.8
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/.github/workflows/publish-core.yml +1 -1
- package/dist/bare-metal-partition.d.mts +0 -1
- package/dist/bare-metal-partition.d.mts.map +1 -1
- package/dist/bare-metal-partition.mjs +47 -2
- package/dist/bare-metal-partition.mjs.map +1 -0
- package/dist/bare-metal-partition.test.mjs +3 -3
- package/dist/composer.d.mts +0 -1
- package/dist/composer.d.mts.map +1 -1
- package/dist/composer.mjs +286 -2
- package/dist/composer.mjs.map +1 -0
- package/dist/composer.snapshot.test.mjs +3 -3
- package/dist/composer.test.mjs +3 -3
- package/dist/generate.d.mts +0 -2
- package/dist/generate.d.mts.map +1 -1
- package/dist/generate.mjs +15 -15
- package/dist/generate.test.mjs +1 -1
- package/dist/generators/bare-metal-install.d.mts +0 -2
- package/dist/generators/bare-metal-install.d.mts.map +1 -1
- package/dist/generators/bare-metal-install.mjs +223 -2
- package/dist/generators/bare-metal-install.mjs.map +1 -0
- package/dist/generators/bare-metal-install.test.mjs +2 -2
- package/dist/generators/caddy.d.mts +0 -2
- package/dist/generators/caddy.d.mts.map +1 -1
- package/dist/generators/caddy.mjs +76 -2
- package/dist/generators/caddy.mjs.map +1 -0
- package/dist/generators/env.d.mts +0 -1
- package/dist/generators/env.d.mts.map +1 -1
- package/dist/generators/env.mjs +249 -2
- package/dist/generators/env.mjs.map +1 -0
- package/dist/generators/grafana.d.mts.map +1 -1
- package/dist/generators/grafana.mjs +292 -2
- package/dist/generators/grafana.mjs.map +1 -0
- package/dist/generators/n8n-workflows.d.mts +0 -2
- package/dist/generators/n8n-workflows.d.mts.map +1 -1
- package/dist/generators/n8n-workflows.mjs +74 -2
- package/dist/generators/n8n-workflows.mjs.map +1 -0
- package/dist/generators/native-services.d.mts +0 -1
- package/dist/generators/native-services.d.mts.map +1 -1
- package/dist/generators/native-services.mjs +77 -2
- package/dist/generators/native-services.mjs.map +1 -0
- package/dist/generators/postgres-init.d.mts +0 -1
- package/dist/generators/postgres-init.d.mts.map +1 -1
- package/dist/generators/postgres-init.mjs +150 -2
- package/dist/generators/postgres-init.mjs.map +1 -0
- package/dist/generators/prometheus.d.mts +0 -2
- package/dist/generators/prometheus.d.mts.map +1 -1
- package/dist/generators/prometheus.mjs +106 -2
- package/dist/generators/prometheus.mjs.map +1 -0
- package/dist/generators/readme.d.mts +0 -1
- package/dist/generators/readme.d.mts.map +1 -1
- package/dist/generators/readme.mjs +198 -2
- package/dist/generators/readme.mjs.map +1 -0
- package/dist/generators/scripts.d.mts.map +1 -1
- package/dist/generators/scripts.mjs +350 -2
- package/dist/generators/scripts.mjs.map +1 -0
- package/dist/generators/skills.d.mts +0 -2
- package/dist/generators/skills.d.mts.map +1 -1
- package/dist/generators/skills.mjs +586 -2
- package/dist/generators/skills.mjs.map +1 -0
- package/dist/index.d.mts +1 -1
- package/dist/index.mjs +15 -15
- package/dist/{magic-string.es-Dew0Rnsa.mjs → magic-string.es-1uTtupLe.mjs} +14 -14
- package/dist/magic-string.es-1uTtupLe.mjs.map +1 -0
- package/dist/presets/registry.d.mts +0 -1
- package/dist/presets/registry.d.mts.map +1 -1
- package/dist/presets/registry.test.mjs +1 -1
- package/dist/resolver.d.mts +0 -2
- package/dist/resolver.d.mts.map +1 -1
- package/dist/resolver.mjs +193 -2
- package/dist/resolver.mjs.map +1 -0
- package/dist/resolver.test.mjs +2 -2
- package/dist/schema.d.mts +714 -2
- package/dist/schema.d.mts.map +1 -0
- package/dist/schema.mjs +6 -2
- package/dist/schema.mjs.map +1 -1
- package/dist/schema.test.mjs +1 -1
- package/dist/services/definitions/anything-llm.d.mts +0 -1
- package/dist/services/definitions/anything-llm.d.mts.map +1 -1
- package/dist/services/definitions/anything-llm.mjs +43 -2
- package/dist/services/definitions/anything-llm.mjs.map +1 -0
- package/dist/services/definitions/appflowy.d.mts +0 -1
- package/dist/services/definitions/appflowy.d.mts.map +1 -1
- package/dist/services/definitions/appflowy.mjs +44 -2
- package/dist/services/definitions/appflowy.mjs.map +1 -0
- package/dist/services/definitions/beszel.d.mts +0 -1
- package/dist/services/definitions/beszel.d.mts.map +1 -1
- package/dist/services/definitions/beszel.mjs +44 -2
- package/dist/services/definitions/beszel.mjs.map +1 -0
- package/dist/services/definitions/browserless.d.mts +0 -1
- package/dist/services/definitions/browserless.d.mts.map +1 -1
- package/dist/services/definitions/browserless.mjs +84 -2
- package/dist/services/definitions/browserless.mjs.map +1 -0
- package/dist/services/definitions/caddy.d.mts +0 -1
- package/dist/services/definitions/caddy.d.mts.map +1 -1
- package/dist/services/definitions/caddy.mjs +51 -2
- package/dist/services/definitions/caddy.mjs.map +1 -0
- package/dist/services/definitions/chromadb.d.mts +0 -1
- package/dist/services/definitions/chromadb.d.mts.map +1 -1
- package/dist/services/definitions/chromadb.mjs +62 -2
- package/dist/services/definitions/chromadb.mjs.map +1 -0
- package/dist/services/definitions/claude-code.d.mts +0 -1
- package/dist/services/definitions/claude-code.d.mts.map +1 -1
- package/dist/services/definitions/claude-code.mjs +51 -2
- package/dist/services/definitions/claude-code.mjs.map +1 -0
- package/dist/services/definitions/code-server.d.mts +0 -1
- package/dist/services/definitions/code-server.d.mts.map +1 -1
- package/dist/services/definitions/code-server.mjs +65 -2
- package/dist/services/definitions/code-server.mjs.map +1 -0
- package/dist/services/definitions/codex.d.mts +0 -1
- package/dist/services/definitions/codex.d.mts.map +1 -1
- package/dist/services/definitions/codex.mjs +44 -2
- package/dist/services/definitions/codex.mjs.map +1 -0
- package/dist/services/definitions/comfyui.d.mts +7 -0
- package/dist/services/definitions/comfyui.d.mts.map +1 -0
- package/dist/services/definitions/comfyui.mjs +83 -0
- package/dist/services/definitions/comfyui.mjs.map +1 -0
- package/dist/services/definitions/convex-dashboard.d.mts +7 -0
- package/dist/services/definitions/convex-dashboard.d.mts.map +1 -0
- package/dist/services/definitions/convex-dashboard.mjs +46 -0
- package/dist/services/definitions/convex-dashboard.mjs.map +1 -0
- package/dist/services/definitions/convex.d.mts +7 -0
- package/dist/services/definitions/convex.d.mts.map +1 -0
- package/dist/services/definitions/convex.mjs +118 -0
- package/dist/services/definitions/convex.mjs.map +1 -0
- package/dist/services/definitions/coolify.d.mts +0 -1
- package/dist/services/definitions/coolify.d.mts.map +1 -1
- package/dist/services/definitions/coolify.mjs +48 -2
- package/dist/services/definitions/coolify.mjs.map +1 -0
- package/dist/services/definitions/desktop-environment.d.mts +7 -0
- package/dist/services/definitions/desktop-environment.d.mts.map +1 -0
- package/dist/services/definitions/desktop-environment.mjs +153 -0
- package/dist/services/definitions/desktop-environment.mjs.map +1 -0
- package/dist/services/definitions/dify.d.mts +0 -1
- package/dist/services/definitions/dify.d.mts.map +1 -1
- package/dist/services/definitions/dify.mjs +80 -2
- package/dist/services/definitions/dify.mjs.map +1 -0
- package/dist/services/definitions/docsgpt.d.mts +0 -1
- package/dist/services/definitions/docsgpt.d.mts.map +1 -1
- package/dist/services/definitions/docsgpt.mjs +44 -2
- package/dist/services/definitions/docsgpt.mjs.map +1 -0
- package/dist/services/definitions/dokploy.d.mts +0 -1
- package/dist/services/definitions/dokploy.d.mts.map +1 -1
- package/dist/services/definitions/dokploy.mjs +48 -2
- package/dist/services/definitions/dokploy.mjs.map +1 -0
- package/dist/services/definitions/dozzle.d.mts +0 -1
- package/dist/services/definitions/dozzle.d.mts.map +1 -1
- package/dist/services/definitions/dozzle.mjs +40 -2
- package/dist/services/definitions/dozzle.mjs.map +1 -0
- package/dist/services/definitions/ffmpeg.d.mts +0 -1
- package/dist/services/definitions/ffmpeg.d.mts.map +1 -1
- package/dist/services/definitions/ffmpeg.mjs +65 -2
- package/dist/services/definitions/ffmpeg.mjs.map +1 -0
- package/dist/services/definitions/flowise.d.mts +0 -1
- package/dist/services/definitions/flowise.d.mts.map +1 -1
- package/dist/services/definitions/flowise.mjs +44 -2
- package/dist/services/definitions/flowise.mjs.map +1 -0
- package/dist/services/definitions/gemini-cli.d.mts +0 -1
- package/dist/services/definitions/gemini-cli.d.mts.map +1 -1
- package/dist/services/definitions/gemini-cli.mjs +45 -2
- package/dist/services/definitions/gemini-cli.mjs.map +1 -0
- package/dist/services/definitions/gitea.d.mts +0 -1
- package/dist/services/definitions/gitea.d.mts.map +1 -1
- package/dist/services/definitions/gitea.mjs +48 -2
- package/dist/services/definitions/gitea.mjs.map +1 -0
- package/dist/services/definitions/gotify.d.mts +0 -1
- package/dist/services/definitions/gotify.d.mts.map +1 -1
- package/dist/services/definitions/gotify.mjs +61 -2
- package/dist/services/definitions/gotify.mjs.map +1 -0
- package/dist/services/definitions/grafana.d.mts +0 -1
- package/dist/services/definitions/grafana.d.mts.map +1 -1
- package/dist/services/definitions/grafana.mjs +62 -2
- package/dist/services/definitions/grafana.mjs.map +1 -0
- package/dist/services/definitions/index.d.mts +8 -2
- package/dist/services/definitions/index.d.mts.map +1 -1
- package/dist/services/definitions/index.mjs +151 -67
- package/dist/services/definitions/index.mjs.map +1 -0
- package/dist/services/definitions/kimi.d.mts +0 -1
- package/dist/services/definitions/kimi.d.mts.map +1 -1
- package/dist/services/definitions/kimi.mjs +45 -2
- package/dist/services/definitions/kimi.mjs.map +1 -0
- package/dist/services/definitions/lasuite-meet-agents.d.mts +0 -1
- package/dist/services/definitions/lasuite-meet-agents.d.mts.map +1 -1
- package/dist/services/definitions/lasuite-meet-agents.mjs +35 -2
- package/dist/services/definitions/lasuite-meet-agents.mjs.map +1 -0
- package/dist/services/definitions/lasuite-meet-backend.d.mts +0 -1
- package/dist/services/definitions/lasuite-meet-backend.d.mts.map +1 -1
- package/dist/services/definitions/lasuite-meet-backend.mjs +133 -2
- package/dist/services/definitions/lasuite-meet-backend.mjs.map +1 -0
- package/dist/services/definitions/lasuite-meet-frontend.d.mts +0 -1
- package/dist/services/definitions/lasuite-meet-frontend.d.mts.map +1 -1
- package/dist/services/definitions/lasuite-meet-frontend.mjs +47 -2
- package/dist/services/definitions/lasuite-meet-frontend.mjs.map +1 -0
- package/dist/services/definitions/librechat.d.mts +0 -1
- package/dist/services/definitions/librechat.d.mts.map +1 -1
- package/dist/services/definitions/librechat.mjs +49 -2
- package/dist/services/definitions/librechat.mjs.map +1 -0
- package/dist/services/definitions/lightpanda.d.mts +0 -1
- package/dist/services/definitions/lightpanda.d.mts.map +1 -1
- package/dist/services/definitions/lightpanda.mjs +58 -2
- package/dist/services/definitions/lightpanda.mjs.map +1 -0
- package/dist/services/definitions/litellm.d.mts +0 -1
- package/dist/services/definitions/litellm.d.mts.map +1 -1
- package/dist/services/definitions/litellm.mjs +46 -2
- package/dist/services/definitions/litellm.mjs.map +1 -0
- package/dist/services/definitions/livekit.d.mts +0 -1
- package/dist/services/definitions/livekit.d.mts.map +1 -1
- package/dist/services/definitions/livekit.mjs +55 -2
- package/dist/services/definitions/livekit.mjs.map +1 -0
- package/dist/services/definitions/matomo.d.mts +0 -1
- package/dist/services/definitions/matomo.d.mts.map +1 -1
- package/dist/services/definitions/matomo.mjs +79 -2
- package/dist/services/definitions/matomo.mjs.map +1 -0
- package/dist/services/definitions/matrix-synapse.d.mts +0 -1
- package/dist/services/definitions/matrix-synapse.d.mts.map +1 -1
- package/dist/services/definitions/matrix-synapse.mjs +87 -2
- package/dist/services/definitions/matrix-synapse.mjs.map +1 -0
- package/dist/services/definitions/mattermost.d.mts +0 -1
- package/dist/services/definitions/mattermost.d.mts.map +1 -1
- package/dist/services/definitions/mattermost.mjs +60 -2
- package/dist/services/definitions/mattermost.mjs.map +1 -0
- package/dist/services/definitions/meilisearch.d.mts +0 -1
- package/dist/services/definitions/meilisearch.d.mts.map +1 -1
- package/dist/services/definitions/meilisearch.mjs +77 -2
- package/dist/services/definitions/meilisearch.mjs.map +1 -0
- package/dist/services/definitions/minio.d.mts +0 -1
- package/dist/services/definitions/minio.d.mts.map +1 -1
- package/dist/services/definitions/minio.mjs +101 -2
- package/dist/services/definitions/minio.mjs.map +1 -0
- package/dist/services/definitions/mission-control.d.mts +7 -0
- package/dist/services/definitions/mission-control.d.mts.map +1 -0
- package/dist/services/definitions/mission-control.mjs +67 -0
- package/dist/services/definitions/mission-control.mjs.map +1 -0
- package/dist/services/definitions/mixpost.d.mts +0 -1
- package/dist/services/definitions/mixpost.d.mts.map +1 -1
- package/dist/services/definitions/mixpost.mjs +86 -2
- package/dist/services/definitions/mixpost.mjs.map +1 -0
- package/dist/services/definitions/motion-canvas.d.mts +0 -1
- package/dist/services/definitions/motion-canvas.d.mts.map +1 -1
- package/dist/services/definitions/motion-canvas.mjs +51 -2
- package/dist/services/definitions/motion-canvas.mjs.map +1 -0
- package/dist/services/definitions/n8n.d.mts +0 -1
- package/dist/services/definitions/n8n.d.mts.map +1 -1
- package/dist/services/definitions/n8n.mjs +153 -2
- package/dist/services/definitions/n8n.mjs.map +1 -0
- package/dist/services/definitions/nocodb.d.mts +0 -1
- package/dist/services/definitions/nocodb.d.mts.map +1 -1
- package/dist/services/definitions/nocodb.mjs +44 -2
- package/dist/services/definitions/nocodb.mjs.map +1 -0
- package/dist/services/definitions/ntfy.d.mts +0 -1
- package/dist/services/definitions/ntfy.d.mts.map +1 -1
- package/dist/services/definitions/ntfy.mjs +62 -2
- package/dist/services/definitions/ntfy.mjs.map +1 -0
- package/dist/services/definitions/ollama.d.mts +0 -1
- package/dist/services/definitions/ollama.d.mts.map +1 -1
- package/dist/services/definitions/ollama.mjs +65 -2
- package/dist/services/definitions/ollama.mjs.map +1 -0
- package/dist/services/definitions/open-webui.d.mts +0 -1
- package/dist/services/definitions/open-webui.d.mts.map +1 -1
- package/dist/services/definitions/open-webui.mjs +49 -2
- package/dist/services/definitions/open-webui.mjs.map +1 -0
- package/dist/services/definitions/opencode.d.mts +0 -1
- package/dist/services/definitions/opencode.d.mts.map +1 -1
- package/dist/services/definitions/opencode.mjs +49 -2
- package/dist/services/definitions/opencode.mjs.map +1 -0
- package/dist/services/definitions/openpanel.d.mts +0 -1
- package/dist/services/definitions/openpanel.d.mts.map +1 -1
- package/dist/services/definitions/openpanel.mjs +45 -2
- package/dist/services/definitions/openpanel.mjs.map +1 -0
- package/dist/services/definitions/outline.d.mts +0 -1
- package/dist/services/definitions/outline.d.mts.map +1 -1
- package/dist/services/definitions/outline.mjs +73 -2
- package/dist/services/definitions/outline.mjs.map +1 -0
- package/dist/services/definitions/paperless-ngx.d.mts +0 -1
- package/dist/services/definitions/paperless-ngx.d.mts.map +1 -1
- package/dist/services/definitions/paperless-ngx.mjs +92 -2
- package/dist/services/definitions/paperless-ngx.mjs.map +1 -0
- package/dist/services/definitions/playwright-server.d.mts +0 -1
- package/dist/services/definitions/playwright-server.d.mts.map +1 -1
- package/dist/services/definitions/playwright-server.mjs +41 -2
- package/dist/services/definitions/playwright-server.mjs.map +1 -0
- package/dist/services/definitions/portainer.d.mts +0 -1
- package/dist/services/definitions/portainer.d.mts.map +1 -1
- package/dist/services/definitions/portainer.mjs +48 -2
- package/dist/services/definitions/portainer.mjs.map +1 -0
- package/dist/services/definitions/postgresql.d.mts +0 -1
- package/dist/services/definitions/postgresql.d.mts.map +1 -1
- package/dist/services/definitions/postgresql.mjs +83 -2
- package/dist/services/definitions/postgresql.mjs.map +1 -0
- package/dist/services/definitions/postiz.d.mts +0 -1
- package/dist/services/definitions/postiz.d.mts.map +1 -1
- package/dist/services/definitions/postiz.mjs +82 -2
- package/dist/services/definitions/postiz.mjs.map +1 -0
- package/dist/services/definitions/prometheus.d.mts +0 -1
- package/dist/services/definitions/prometheus.d.mts.map +1 -1
- package/dist/services/definitions/prometheus.mjs +51 -2
- package/dist/services/definitions/prometheus.mjs.map +1 -0
- package/dist/services/definitions/qdrant.d.mts +0 -1
- package/dist/services/definitions/qdrant.d.mts.map +1 -1
- package/dist/services/definitions/qdrant.mjs +76 -2
- package/dist/services/definitions/qdrant.mjs.map +1 -0
- package/dist/services/definitions/redis.d.mts +0 -1
- package/dist/services/definitions/redis.d.mts.map +1 -1
- package/dist/services/definitions/redis.mjs +90 -2
- package/dist/services/definitions/redis.mjs.map +1 -0
- package/dist/services/definitions/remotion.d.mts +0 -1
- package/dist/services/definitions/remotion.d.mts.map +1 -1
- package/dist/services/definitions/remotion.mjs +54 -2
- package/dist/services/definitions/remotion.mjs.map +1 -0
- package/dist/services/definitions/rocketchat.d.mts +0 -1
- package/dist/services/definitions/rocketchat.d.mts.map +1 -1
- package/dist/services/definitions/rocketchat.mjs +56 -2
- package/dist/services/definitions/rocketchat.mjs.map +1 -0
- package/dist/services/definitions/searxng.d.mts +0 -1
- package/dist/services/definitions/searxng.d.mts.map +1 -1
- package/dist/services/definitions/searxng.mjs +64 -2
- package/dist/services/definitions/searxng.mjs.map +1 -0
- package/dist/services/definitions/stable-diffusion.d.mts +0 -1
- package/dist/services/definitions/stable-diffusion.d.mts.map +1 -1
- package/dist/services/definitions/stable-diffusion.mjs +47 -2
- package/dist/services/definitions/stable-diffusion.mjs.map +1 -0
- package/dist/services/definitions/steel-browser.d.mts +0 -1
- package/dist/services/definitions/steel-browser.d.mts.map +1 -1
- package/dist/services/definitions/steel-browser.mjs +76 -2
- package/dist/services/definitions/steel-browser.mjs.map +1 -0
- package/dist/services/definitions/stream-gateway.d.mts +7 -0
- package/dist/services/definitions/stream-gateway.d.mts.map +1 -0
- package/dist/services/definitions/stream-gateway.mjs +133 -0
- package/dist/services/definitions/stream-gateway.mjs.map +1 -0
- package/dist/services/definitions/tailscale.d.mts +0 -1
- package/dist/services/definitions/tailscale.d.mts.map +1 -1
- package/dist/services/definitions/tailscale.mjs +69 -2
- package/dist/services/definitions/tailscale.mjs.map +1 -0
- package/dist/services/definitions/temporal.d.mts +0 -1
- package/dist/services/definitions/temporal.d.mts.map +1 -1
- package/dist/services/definitions/temporal.mjs +99 -2
- package/dist/services/definitions/temporal.mjs.map +1 -0
- package/dist/services/definitions/traefik.d.mts +0 -1
- package/dist/services/definitions/traefik.d.mts.map +1 -1
- package/dist/services/definitions/traefik.mjs +57 -2
- package/dist/services/definitions/traefik.mjs.map +1 -0
- package/dist/services/definitions/umami.d.mts +0 -1
- package/dist/services/definitions/umami.d.mts.map +1 -1
- package/dist/services/definitions/umami.mjs +45 -2
- package/dist/services/definitions/umami.mjs.map +1 -0
- package/dist/services/definitions/uptime-kuma.d.mts +0 -1
- package/dist/services/definitions/uptime-kuma.d.mts.map +1 -1
- package/dist/services/definitions/uptime-kuma.mjs +50 -2
- package/dist/services/definitions/uptime-kuma.mjs.map +1 -0
- package/dist/services/definitions/usesend.d.mts +7 -0
- package/dist/services/definitions/usesend.d.mts.map +1 -0
- package/dist/services/definitions/usesend.mjs +99 -0
- package/dist/services/definitions/usesend.mjs.map +1 -0
- package/dist/services/definitions/valkey.d.mts +0 -1
- package/dist/services/definitions/valkey.d.mts.map +1 -1
- package/dist/services/definitions/valkey.mjs +60 -2
- package/dist/services/definitions/valkey.mjs.map +1 -0
- package/dist/services/definitions/watchtower.d.mts +0 -1
- package/dist/services/definitions/watchtower.d.mts.map +1 -1
- package/dist/services/definitions/watchtower.mjs +46 -2
- package/dist/services/definitions/watchtower.mjs.map +1 -0
- package/dist/services/definitions/weaviate.d.mts +0 -1
- package/dist/services/definitions/weaviate.d.mts.map +1 -1
- package/dist/services/definitions/weaviate.mjs +89 -2
- package/dist/services/definitions/weaviate.mjs.map +1 -0
- package/dist/services/definitions/whisper.d.mts +0 -1
- package/dist/services/definitions/whisper.d.mts.map +1 -1
- package/dist/services/definitions/whisper.mjs +61 -2
- package/dist/services/definitions/whisper.mjs.map +1 -0
- package/dist/services/registry.d.mts +0 -1
- package/dist/services/registry.d.mts.map +1 -1
- package/dist/services/registry.mjs +29 -2
- package/dist/services/registry.mjs.map +1 -0
- package/dist/services/registry.test.mjs +2 -2
- package/dist/skills/registry.d.mts +0 -1
- package/dist/skills/registry.d.mts.map +1 -1
- package/dist/skills/registry.mjs +214 -2
- package/dist/skills/registry.mjs.map +1 -0
- package/dist/types.d.mts +1 -1
- package/dist/types.d.mts.map +1 -1
- package/dist/types.mjs +10 -0
- package/dist/types.mjs.map +1 -1
- package/dist/validator.d.mts +0 -1
- package/dist/validator.d.mts.map +1 -1
- package/dist/validator.mjs +110 -2
- package/dist/validator.mjs.map +1 -0
- package/dist/validator.test.mjs +4 -4
- package/dist/version-manager.d.mts +0 -1
- package/dist/version-manager.d.mts.map +1 -1
- package/dist/version-manager.mjs +1 -1
- package/dist/{vi.2VT5v0um-Cs3Z_fCB.mjs → vi.2VT5v0um-Qk6MgAnK.mjs} +1183 -1183
- package/dist/vi.2VT5v0um-Qk6MgAnK.mjs.map +1 -0
- package/package.json +14 -13
- package/src/schema.ts +4 -1
- package/src/services/definitions/comfyui.ts +90 -0
- package/src/services/definitions/convex-dashboard.ts +48 -0
- package/src/services/definitions/convex.ts +123 -0
- package/src/services/definitions/desktop-environment.ts +163 -0
- package/src/services/definitions/index.ts +21 -0
- package/src/services/definitions/mission-control.ts +71 -0
- package/src/services/definitions/stream-gateway.ts +148 -0
- package/src/services/definitions/tailscale.ts +2 -0
- package/src/services/definitions/usesend.ts +98 -0
- package/src/types.ts +2 -0
- package/tsdown.config.ts +1 -0
- package/dist/anything-llm-DIIPhz6K.mjs +0 -44
- package/dist/anything-llm-DIIPhz6K.mjs.map +0 -1
- package/dist/appflowy-DdoE-dKg.mjs +0 -45
- package/dist/appflowy-DdoE-dKg.mjs.map +0 -1
- package/dist/bare-metal-install-DpYZDoGq.mjs +0 -224
- package/dist/bare-metal-install-DpYZDoGq.mjs.map +0 -1
- package/dist/bare-metal-partition-CYlOxf9B.mjs +0 -48
- package/dist/bare-metal-partition-CYlOxf9B.mjs.map +0 -1
- package/dist/beszel-DHAG1zl0.mjs +0 -45
- package/dist/beszel-DHAG1zl0.mjs.map +0 -1
- package/dist/browserless-gUuvGmMD.mjs +0 -85
- package/dist/browserless-gUuvGmMD.mjs.map +0 -1
- package/dist/caddy-BJDrqnmw.mjs +0 -77
- package/dist/caddy-BJDrqnmw.mjs.map +0 -1
- package/dist/caddy-_NIdWKrf.mjs +0 -52
- package/dist/caddy-_NIdWKrf.mjs.map +0 -1
- package/dist/chromadb-g4rIsfAl.mjs +0 -63
- package/dist/chromadb-g4rIsfAl.mjs.map +0 -1
- package/dist/claude-code-DPRA1fy_.mjs +0 -52
- package/dist/claude-code-DPRA1fy_.mjs.map +0 -1
- package/dist/code-server-BdZZxxm5.mjs +0 -66
- package/dist/code-server-BdZZxxm5.mjs.map +0 -1
- package/dist/codex-DFVzfrfX.mjs +0 -45
- package/dist/codex-DFVzfrfX.mjs.map +0 -1
- package/dist/composer-CSM5YycB.mjs +0 -287
- package/dist/composer-CSM5YycB.mjs.map +0 -1
- package/dist/coolify-Z5_zDgM3.mjs +0 -49
- package/dist/coolify-Z5_zDgM3.mjs.map +0 -1
- package/dist/definitions-BXpb1kzs.mjs +0 -138
- package/dist/definitions-BXpb1kzs.mjs.map +0 -1
- package/dist/dify-jDc9U6Ku.mjs +0 -81
- package/dist/dify-jDc9U6Ku.mjs.map +0 -1
- package/dist/docsgpt-BXM1c2JC.mjs +0 -45
- package/dist/docsgpt-BXM1c2JC.mjs.map +0 -1
- package/dist/dokploy-Ci8_fb0_.mjs +0 -49
- package/dist/dokploy-Ci8_fb0_.mjs.map +0 -1
- package/dist/dozzle-fAt2sLRL.mjs +0 -41
- package/dist/dozzle-fAt2sLRL.mjs.map +0 -1
- package/dist/env-D2h46lHT.mjs +0 -250
- package/dist/env-D2h46lHT.mjs.map +0 -1
- package/dist/ffmpeg-BCtnA8m_.mjs +0 -66
- package/dist/ffmpeg-BCtnA8m_.mjs.map +0 -1
- package/dist/flowise-CJTTBa7J.mjs +0 -45
- package/dist/flowise-CJTTBa7J.mjs.map +0 -1
- package/dist/gemini-cli-Bfwv6hYe.mjs +0 -46
- package/dist/gemini-cli-Bfwv6hYe.mjs.map +0 -1
- package/dist/gitea-BGkqa-sD.mjs +0 -49
- package/dist/gitea-BGkqa-sD.mjs.map +0 -1
- package/dist/gotify-D7p8oNM3.mjs +0 -62
- package/dist/gotify-D7p8oNM3.mjs.map +0 -1
- package/dist/grafana-BlnWc6js.mjs +0 -63
- package/dist/grafana-BlnWc6js.mjs.map +0 -1
- package/dist/grafana-D3kIm8RX.mjs +0 -293
- package/dist/grafana-D3kIm8RX.mjs.map +0 -1
- package/dist/kimi-BFu1v1sU.mjs +0 -46
- package/dist/kimi-BFu1v1sU.mjs.map +0 -1
- package/dist/lasuite-meet-agents-nlPhMEaN.mjs +0 -36
- package/dist/lasuite-meet-agents-nlPhMEaN.mjs.map +0 -1
- package/dist/lasuite-meet-backend-9H7rZ8Pc.mjs +0 -134
- package/dist/lasuite-meet-backend-9H7rZ8Pc.mjs.map +0 -1
- package/dist/lasuite-meet-frontend-B4xNbnBa.mjs +0 -48
- package/dist/lasuite-meet-frontend-B4xNbnBa.mjs.map +0 -1
- package/dist/librechat-CoPIHXKK.mjs +0 -50
- package/dist/librechat-CoPIHXKK.mjs.map +0 -1
- package/dist/lightpanda-QchAPgNX.mjs +0 -59
- package/dist/lightpanda-QchAPgNX.mjs.map +0 -1
- package/dist/litellm-Dgl6iTry.mjs +0 -47
- package/dist/litellm-Dgl6iTry.mjs.map +0 -1
- package/dist/livekit-C13SxlVB.mjs +0 -56
- package/dist/livekit-C13SxlVB.mjs.map +0 -1
- package/dist/magic-string.es-Dew0Rnsa.mjs.map +0 -1
- package/dist/matomo-CiOoggYl.mjs +0 -80
- package/dist/matomo-CiOoggYl.mjs.map +0 -1
- package/dist/matrix-synapse-CP20A7NN.mjs +0 -88
- package/dist/matrix-synapse-CP20A7NN.mjs.map +0 -1
- package/dist/mattermost-CeFVuhIr.mjs +0 -61
- package/dist/mattermost-CeFVuhIr.mjs.map +0 -1
- package/dist/meilisearch-CLiQiTdN.mjs +0 -78
- package/dist/meilisearch-CLiQiTdN.mjs.map +0 -1
- package/dist/minio-_QuguAeo.mjs +0 -102
- package/dist/minio-_QuguAeo.mjs.map +0 -1
- package/dist/mixpost-eSFPM9XK.mjs +0 -87
- package/dist/mixpost-eSFPM9XK.mjs.map +0 -1
- package/dist/motion-canvas-Bk1ruvuX.mjs +0 -52
- package/dist/motion-canvas-Bk1ruvuX.mjs.map +0 -1
- package/dist/n8n-W5qeU34C.mjs +0 -154
- package/dist/n8n-W5qeU34C.mjs.map +0 -1
- package/dist/n8n-workflows-BPmKVx8z.mjs +0 -75
- package/dist/n8n-workflows-BPmKVx8z.mjs.map +0 -1
- package/dist/native-services-CwOCM-Xz.mjs +0 -78
- package/dist/native-services-CwOCM-Xz.mjs.map +0 -1
- package/dist/nocodb-DQNbSYh_.mjs +0 -45
- package/dist/nocodb-DQNbSYh_.mjs.map +0 -1
- package/dist/ntfy-B8_cZAx2.mjs +0 -63
- package/dist/ntfy-B8_cZAx2.mjs.map +0 -1
- package/dist/ollama-BiKAypcO.mjs +0 -66
- package/dist/ollama-BiKAypcO.mjs.map +0 -1
- package/dist/open-webui-DZOG4_xL.mjs +0 -50
- package/dist/open-webui-DZOG4_xL.mjs.map +0 -1
- package/dist/opencode-Dvfh5KvA.mjs +0 -50
- package/dist/opencode-Dvfh5KvA.mjs.map +0 -1
- package/dist/openpanel-BuWHhDze.mjs +0 -46
- package/dist/openpanel-BuWHhDze.mjs.map +0 -1
- package/dist/outline-Dy-YzdYS.mjs +0 -74
- package/dist/outline-Dy-YzdYS.mjs.map +0 -1
- package/dist/paperless-ngx-DVtWWpKg.mjs +0 -93
- package/dist/paperless-ngx-DVtWWpKg.mjs.map +0 -1
- package/dist/playwright-server-Boiz8--G.mjs +0 -42
- package/dist/playwright-server-Boiz8--G.mjs.map +0 -1
- package/dist/portainer-D9MU96UI.mjs +0 -49
- package/dist/portainer-D9MU96UI.mjs.map +0 -1
- package/dist/postgres-init-BiM-xZtq.mjs +0 -151
- package/dist/postgres-init-BiM-xZtq.mjs.map +0 -1
- package/dist/postgresql-s65Z9RqR.mjs +0 -84
- package/dist/postgresql-s65Z9RqR.mjs.map +0 -1
- package/dist/postiz-U6EK23EY.mjs +0 -83
- package/dist/postiz-U6EK23EY.mjs.map +0 -1
- package/dist/prometheus-WOlk-a1G.mjs +0 -107
- package/dist/prometheus-WOlk-a1G.mjs.map +0 -1
- package/dist/prometheus-x901F67p.mjs +0 -52
- package/dist/prometheus-x901F67p.mjs.map +0 -1
- package/dist/qdrant-DZW9uW4e.mjs +0 -77
- package/dist/qdrant-DZW9uW4e.mjs.map +0 -1
- package/dist/readme-C7M3QE9a.mjs +0 -199
- package/dist/readme-C7M3QE9a.mjs.map +0 -1
- package/dist/redis-DPMOf237.mjs +0 -91
- package/dist/redis-DPMOf237.mjs.map +0 -1
- package/dist/registry-CqLarEm5.mjs +0 -30
- package/dist/registry-CqLarEm5.mjs.map +0 -1
- package/dist/registry-DLX9Q4VQ.mjs +0 -215
- package/dist/registry-DLX9Q4VQ.mjs.map +0 -1
- package/dist/remotion-COkr0wpr.mjs +0 -55
- package/dist/remotion-COkr0wpr.mjs.map +0 -1
- package/dist/resolver-Dl5clk-d.mjs +0 -194
- package/dist/resolver-Dl5clk-d.mjs.map +0 -1
- package/dist/rocketchat-BebQT1MZ.mjs +0 -57
- package/dist/rocketchat-BebQT1MZ.mjs.map +0 -1
- package/dist/schema-PSUY6yJU.d.mts +0 -700
- package/dist/schema-PSUY6yJU.d.mts.map +0 -1
- package/dist/scripts-DsljWbP4.mjs +0 -351
- package/dist/scripts-DsljWbP4.mjs.map +0 -1
- package/dist/searxng-tJpBkchC.mjs +0 -65
- package/dist/searxng-tJpBkchC.mjs.map +0 -1
- package/dist/skills-DWG72Y3X.mjs +0 -587
- package/dist/skills-DWG72Y3X.mjs.map +0 -1
- package/dist/stable-diffusion-BulAzkyT.mjs +0 -48
- package/dist/stable-diffusion-BulAzkyT.mjs.map +0 -1
- package/dist/steel-browser-Cc0bYBjM.mjs +0 -77
- package/dist/steel-browser-Cc0bYBjM.mjs.map +0 -1
- package/dist/tailscale-CrM4EZlF.mjs +0 -69
- package/dist/tailscale-CrM4EZlF.mjs.map +0 -1
- package/dist/temporal-49gA0msh.mjs +0 -100
- package/dist/temporal-49gA0msh.mjs.map +0 -1
- package/dist/traefik-Da-c1f55.mjs +0 -58
- package/dist/traefik-Da-c1f55.mjs.map +0 -1
- package/dist/umami-csBSsHqO.mjs +0 -46
- package/dist/umami-csBSsHqO.mjs.map +0 -1
- package/dist/uptime-kuma-D0NvVuXD.mjs +0 -51
- package/dist/uptime-kuma-D0NvVuXD.mjs.map +0 -1
- package/dist/validator-2FspYNva.mjs +0 -111
- package/dist/validator-2FspYNva.mjs.map +0 -1
- package/dist/valkey-BCZqGJ0L.mjs +0 -61
- package/dist/valkey-BCZqGJ0L.mjs.map +0 -1
- package/dist/vi.2VT5v0um-Cs3Z_fCB.mjs.map +0 -1
- package/dist/watchtower-BWuvFGpA.mjs +0 -47
- package/dist/watchtower-BWuvFGpA.mjs.map +0 -1
- package/dist/weaviate-DttY1Hn7.mjs +0 -90
- package/dist/weaviate-DttY1Hn7.mjs.map +0 -1
- package/dist/whisper-CLu7-Vd8.mjs +0 -62
- package/dist/whisper-CLu7-Vd8.mjs.map +0 -1
|
@@ -0,0 +1,148 @@
|
|
|
1
|
+
import type { ServiceDefinition } from "../../types.js";
|
|
2
|
+
|
|
3
|
+
export const streamGatewayDefinition: ServiceDefinition = {
|
|
4
|
+
id: "stream-gateway",
|
|
5
|
+
name: "Stream Gateway",
|
|
6
|
+
description:
|
|
7
|
+
"NGINX-RTMP relay server that receives a local RTMP stream (e.g. from OBS in the desktop-environment) and fans it out to YouTube, Twitch, TikTok, and Telegram simultaneously. Also serves an HLS preview on HTTP for local viewing.",
|
|
8
|
+
category: "streaming",
|
|
9
|
+
icon: "📺",
|
|
10
|
+
|
|
11
|
+
image: "tiangolo/nginx-rtmp",
|
|
12
|
+
imageTag: "latest",
|
|
13
|
+
ports: [
|
|
14
|
+
{
|
|
15
|
+
host: 1935,
|
|
16
|
+
container: 1935,
|
|
17
|
+
description: "RTMP ingest (receives stream from OBS or ffmpeg)",
|
|
18
|
+
exposed: true,
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
host: 8080,
|
|
22
|
+
container: 8080,
|
|
23
|
+
description: "HTTP server for HLS preview and stats",
|
|
24
|
+
exposed: true,
|
|
25
|
+
},
|
|
26
|
+
],
|
|
27
|
+
volumes: [
|
|
28
|
+
{
|
|
29
|
+
name: "stream-gateway-hls",
|
|
30
|
+
containerPath: "/tmp/hls",
|
|
31
|
+
description: "HLS segment storage for live preview playback",
|
|
32
|
+
},
|
|
33
|
+
],
|
|
34
|
+
environment: [
|
|
35
|
+
{
|
|
36
|
+
key: "YOUTUBE_STREAM_KEY",
|
|
37
|
+
defaultValue: "",
|
|
38
|
+
secret: true,
|
|
39
|
+
description: "YouTube Live stream key (leave empty to skip YouTube relay)",
|
|
40
|
+
required: false,
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
key: "TWITCH_STREAM_KEY",
|
|
44
|
+
defaultValue: "",
|
|
45
|
+
secret: true,
|
|
46
|
+
description: "Twitch stream key (leave empty to skip Twitch relay)",
|
|
47
|
+
required: false,
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
key: "TIKTOK_STREAM_URL",
|
|
51
|
+
defaultValue: "",
|
|
52
|
+
secret: true,
|
|
53
|
+
description:
|
|
54
|
+
"Full TikTok RTMP URL from TikTok Studio (leave empty to skip TikTok relay)",
|
|
55
|
+
required: false,
|
|
56
|
+
},
|
|
57
|
+
{
|
|
58
|
+
key: "TELEGRAM_STREAM_URL",
|
|
59
|
+
defaultValue: "",
|
|
60
|
+
secret: true,
|
|
61
|
+
description:
|
|
62
|
+
"Full Telegram RTMPS URL including stream key (leave empty to skip Telegram relay)",
|
|
63
|
+
required: false,
|
|
64
|
+
},
|
|
65
|
+
],
|
|
66
|
+
healthcheck: {
|
|
67
|
+
test: "curl -sf http://localhost:8080/health || exit 1",
|
|
68
|
+
interval: "15s",
|
|
69
|
+
timeout: "5s",
|
|
70
|
+
retries: 3,
|
|
71
|
+
},
|
|
72
|
+
dependsOn: [],
|
|
73
|
+
restartPolicy: "unless-stopped",
|
|
74
|
+
networks: ["openclaw-network"],
|
|
75
|
+
|
|
76
|
+
deploy: {
|
|
77
|
+
resources: {
|
|
78
|
+
limits: { cpus: "2.0", memory: "2G" },
|
|
79
|
+
reservations: { cpus: "0.5", memory: "512M" },
|
|
80
|
+
},
|
|
81
|
+
},
|
|
82
|
+
|
|
83
|
+
skills: [],
|
|
84
|
+
openclawEnvVars: [
|
|
85
|
+
{
|
|
86
|
+
key: "STREAM_GATEWAY_HOST",
|
|
87
|
+
defaultValue: "stream-gateway",
|
|
88
|
+
secret: false,
|
|
89
|
+
description: "Hostname of the stream-gateway container",
|
|
90
|
+
required: true,
|
|
91
|
+
},
|
|
92
|
+
{
|
|
93
|
+
key: "STREAM_GATEWAY_RTMP_PORT",
|
|
94
|
+
defaultValue: "1935",
|
|
95
|
+
secret: false,
|
|
96
|
+
description: "RTMP ingest port on the stream-gateway",
|
|
97
|
+
required: true,
|
|
98
|
+
},
|
|
99
|
+
{
|
|
100
|
+
key: "STREAM_GATEWAY_HLS_PORT",
|
|
101
|
+
defaultValue: "8080",
|
|
102
|
+
secret: false,
|
|
103
|
+
description: "HTTP port for HLS preview on the stream-gateway",
|
|
104
|
+
required: true,
|
|
105
|
+
},
|
|
106
|
+
],
|
|
107
|
+
|
|
108
|
+
docsUrl: "https://github.com/tiangolo/nginx-rtmp-docker",
|
|
109
|
+
tags: [
|
|
110
|
+
"streaming",
|
|
111
|
+
"rtmp",
|
|
112
|
+
"hls",
|
|
113
|
+
"relay",
|
|
114
|
+
"youtube",
|
|
115
|
+
"twitch",
|
|
116
|
+
"tiktok",
|
|
117
|
+
"telegram",
|
|
118
|
+
"obs",
|
|
119
|
+
"nginx",
|
|
120
|
+
],
|
|
121
|
+
maturity: "experimental",
|
|
122
|
+
|
|
123
|
+
requires: [],
|
|
124
|
+
recommends: ["desktop-environment"],
|
|
125
|
+
conflictsWith: [],
|
|
126
|
+
|
|
127
|
+
removalWarning:
|
|
128
|
+
"⚠️ STREAMING KEYS REQUIRED: To relay to platforms you must provide at least one stream key. Without any keys configured the gateway will still accept RTMP input and serve HLS locally but nothing will be forwarded.",
|
|
129
|
+
minMemoryMB: 512,
|
|
130
|
+
gpuRequired: false,
|
|
131
|
+
|
|
132
|
+
nativeSupported: true,
|
|
133
|
+
nativeRecipes: [
|
|
134
|
+
{
|
|
135
|
+
platform: "linux",
|
|
136
|
+
installSteps: [
|
|
137
|
+
"command -v nginx >/dev/null 2>&1 || (command -v apt-get >/dev/null 2>&1 && sudo apt-get update -qq && sudo apt-get install -y -qq nginx libnginx-mod-rtmp ffmpeg)",
|
|
138
|
+
"command -v nginx >/dev/null 2>&1 || (command -v dnf >/dev/null 2>&1 && sudo dnf install -y nginx nginx-mod-rtmp ffmpeg)",
|
|
139
|
+
],
|
|
140
|
+
startCommand: "sudo systemctl start nginx",
|
|
141
|
+
stopCommand: "sudo systemctl stop nginx",
|
|
142
|
+
configPath: "/etc/nginx/nginx.conf",
|
|
143
|
+
configTemplate:
|
|
144
|
+
'# Generated for OpenClaw bare-metal\nworker_processes auto;\nrtmp_auto_push on;\n\nevents { worker_connections 1024; }\n\nrtmp {\n server {\n listen 1935;\n chunk_size 4096;\n application live {\n live on;\n record off;\n hls on;\n hls_path /tmp/hls;\n hls_fragment 3;\n hls_playlist_length 60;\n }\n }\n}\n\nhttp {\n server {\n listen 8080;\n location /hls { types { application/vnd.apple.mpegurl m3u8; video/mp2t ts; } root /tmp; add_header Cache-Control no-cache; }\n location /health { return 200 "OK"; }\n }\n}\n',
|
|
145
|
+
systemdUnit: "nginx",
|
|
146
|
+
},
|
|
147
|
+
],
|
|
148
|
+
};
|
|
@@ -63,6 +63,8 @@ export const tailscaleDefinition: ServiceDefinition = {
|
|
|
63
63
|
recommends: [],
|
|
64
64
|
conflictsWith: [],
|
|
65
65
|
mandatory: true,
|
|
66
|
+
removalWarning:
|
|
67
|
+
"Tailscale provides secure VPN access to your stack via WireGuard. Without it, services will be directly exposed to the network and accessible without authentication.",
|
|
66
68
|
|
|
67
69
|
minMemoryMB: 64,
|
|
68
70
|
gpuRequired: false,
|
|
@@ -0,0 +1,98 @@
|
|
|
1
|
+
import type { ServiceDefinition } from "../../types.js";
|
|
2
|
+
|
|
3
|
+
export const usesendDefinition: ServiceDefinition = {
|
|
4
|
+
id: "usesend",
|
|
5
|
+
name: "useSend",
|
|
6
|
+
description:
|
|
7
|
+
"Self-hosted sending infrastructure for developers. Email via AWS SES/SNS, GitHub auth, Postgres and Redis. Open-source alternative for transactional and status emails.",
|
|
8
|
+
category: "communication",
|
|
9
|
+
icon: "📧",
|
|
10
|
+
|
|
11
|
+
image: "usesend/usesend",
|
|
12
|
+
imageTag: "latest",
|
|
13
|
+
ports: [
|
|
14
|
+
{
|
|
15
|
+
host: 3000,
|
|
16
|
+
container: 3000,
|
|
17
|
+
description: "useSend web UI",
|
|
18
|
+
exposed: true,
|
|
19
|
+
},
|
|
20
|
+
],
|
|
21
|
+
volumes: [],
|
|
22
|
+
environment: [
|
|
23
|
+
{
|
|
24
|
+
key: "DATABASE_URL",
|
|
25
|
+
defaultValue: "postgres://user:password@postgresql:5432/usesend",
|
|
26
|
+
secret: true,
|
|
27
|
+
description: "PostgreSQL connection URL",
|
|
28
|
+
required: true,
|
|
29
|
+
},
|
|
30
|
+
{
|
|
31
|
+
key: "REDIS_URL",
|
|
32
|
+
defaultValue: "redis://:password@redis:6379",
|
|
33
|
+
secret: true,
|
|
34
|
+
description: "Redis connection URL",
|
|
35
|
+
required: true,
|
|
36
|
+
},
|
|
37
|
+
{
|
|
38
|
+
key: "AWS_ACCESS_KEY",
|
|
39
|
+
defaultValue: "",
|
|
40
|
+
secret: true,
|
|
41
|
+
description: "AWS access key for SES/SNS",
|
|
42
|
+
required: true,
|
|
43
|
+
},
|
|
44
|
+
{
|
|
45
|
+
key: "AWS_SECRET_KEY",
|
|
46
|
+
defaultValue: "",
|
|
47
|
+
secret: true,
|
|
48
|
+
description: "AWS secret key for SES/SNS",
|
|
49
|
+
required: true,
|
|
50
|
+
},
|
|
51
|
+
{
|
|
52
|
+
key: "GITHUB_ID",
|
|
53
|
+
defaultValue: "",
|
|
54
|
+
secret: false,
|
|
55
|
+
description: "GitHub OAuth app client ID",
|
|
56
|
+
required: true,
|
|
57
|
+
},
|
|
58
|
+
{
|
|
59
|
+
key: "GITHUB_SECRET",
|
|
60
|
+
defaultValue: "",
|
|
61
|
+
secret: true,
|
|
62
|
+
description: "GitHub OAuth app client secret",
|
|
63
|
+
required: true,
|
|
64
|
+
},
|
|
65
|
+
{
|
|
66
|
+
key: "NEXTAUTH_URL",
|
|
67
|
+
defaultValue: "https://your-usesend-instance",
|
|
68
|
+
secret: false,
|
|
69
|
+
description: "Public URL of your useSend instance",
|
|
70
|
+
required: true,
|
|
71
|
+
},
|
|
72
|
+
{
|
|
73
|
+
key: "NEXTAUTH_SECRET",
|
|
74
|
+
defaultValue: "",
|
|
75
|
+
secret: true,
|
|
76
|
+
description: "Random secret for NextAuth (e.g. openssl rand -base64 32)",
|
|
77
|
+
required: true,
|
|
78
|
+
},
|
|
79
|
+
],
|
|
80
|
+
dependsOn: ["postgresql", "redis"],
|
|
81
|
+
restartPolicy: "unless-stopped",
|
|
82
|
+
networks: ["openclaw-network"],
|
|
83
|
+
|
|
84
|
+
skills: [],
|
|
85
|
+
openclawEnvVars: [],
|
|
86
|
+
|
|
87
|
+
docsUrl: "https://docs.usesend.com/self-hosting/overview",
|
|
88
|
+
selfHostedDocsUrl: "https://docs.usesend.com/self-hosting/overview",
|
|
89
|
+
tags: ["email", "ses", "smtp", "transactional", "self-hosted"],
|
|
90
|
+
maturity: "stable",
|
|
91
|
+
|
|
92
|
+
requires: [],
|
|
93
|
+
recommends: [],
|
|
94
|
+
conflictsWith: [],
|
|
95
|
+
|
|
96
|
+
minMemoryMB: 512,
|
|
97
|
+
gpuRequired: false,
|
|
98
|
+
};
|
package/src/types.ts
CHANGED
|
@@ -120,4 +120,6 @@ export const SERVICE_CATEGORIES: CategoryInfo[] = [
|
|
|
120
120
|
{ id: "browser", name: "Browser Automation", icon: "🌐" },
|
|
121
121
|
{ id: "search", name: "Search", icon: "🔍" },
|
|
122
122
|
{ id: "communication", name: "Notifications", icon: "🔔" },
|
|
123
|
+
{ id: "desktop", name: "Desktop Environment", icon: "🖥️" },
|
|
124
|
+
{ id: "streaming", name: "Streaming & Relay", icon: "📺" },
|
|
123
125
|
];
|
package/tsdown.config.ts
CHANGED
|
@@ -1,44 +0,0 @@
|
|
|
1
|
-
//#region src/services/definitions/anything-llm.ts
|
|
2
|
-
const anythingLlmDefinition = {
|
|
3
|
-
id: "anything-llm",
|
|
4
|
-
name: "AnythingLLM",
|
|
5
|
-
description: "All-in-one Desktop & Docker AI application with built-in RAG, AI agents, document chat, and multi-user support.",
|
|
6
|
-
category: "ai-platform",
|
|
7
|
-
icon: "📖",
|
|
8
|
-
image: "mintplexlabs/anythingllm",
|
|
9
|
-
imageTag: "latest",
|
|
10
|
-
ports: [{
|
|
11
|
-
host: 3100,
|
|
12
|
-
container: 3001,
|
|
13
|
-
description: "AnythingLLM interface",
|
|
14
|
-
exposed: true
|
|
15
|
-
}],
|
|
16
|
-
volumes: [{
|
|
17
|
-
name: "anythingllm-data",
|
|
18
|
-
containerPath: "/app/server/storage",
|
|
19
|
-
description: "AnythingLLM storage"
|
|
20
|
-
}],
|
|
21
|
-
environment: [],
|
|
22
|
-
dependsOn: [],
|
|
23
|
-
restartPolicy: "unless-stopped",
|
|
24
|
-
networks: ["openclaw-network"],
|
|
25
|
-
skills: [],
|
|
26
|
-
openclawEnvVars: [],
|
|
27
|
-
docsUrl: "https://docs.anythingllm.com/",
|
|
28
|
-
tags: [
|
|
29
|
-
"rag",
|
|
30
|
-
"documents",
|
|
31
|
-
"chat",
|
|
32
|
-
"knowledge-base"
|
|
33
|
-
],
|
|
34
|
-
maturity: "stable",
|
|
35
|
-
requires: [],
|
|
36
|
-
recommends: ["ollama"],
|
|
37
|
-
conflictsWith: [],
|
|
38
|
-
minMemoryMB: 512,
|
|
39
|
-
gpuRequired: false
|
|
40
|
-
};
|
|
41
|
-
|
|
42
|
-
//#endregion
|
|
43
|
-
export { anythingLlmDefinition as t };
|
|
44
|
-
//# sourceMappingURL=anything-llm-DIIPhz6K.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"anything-llm-DIIPhz6K.mjs","names":[],"sources":["../src/services/definitions/anything-llm.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const anythingLlmDefinition: ServiceDefinition = {\n\tid: \"anything-llm\",\n\tname: \"AnythingLLM\",\n\tdescription:\n\t\t\"All-in-one Desktop & Docker AI application with built-in RAG, AI agents, document chat, and multi-user support.\",\n\tcategory: \"ai-platform\",\n\ticon: \"📖\",\n\n\timage: \"mintplexlabs/anythingllm\",\n\timageTag: \"latest\",\n\tports: [\n\t\t{\n\t\t\thost: 3100,\n\t\t\tcontainer: 3001,\n\t\t\tdescription: \"AnythingLLM interface\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"anythingllm-data\",\n\t\t\tcontainerPath: \"/app/server/storage\",\n\t\t\tdescription: \"AnythingLLM storage\",\n\t\t},\n\t],\n\tenvironment: [],\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [],\n\topenclawEnvVars: [],\n\n\tdocsUrl: \"https://docs.anythingllm.com/\",\n\ttags: [\"rag\", \"documents\", \"chat\", \"knowledge-base\"],\n\tmaturity: \"stable\",\n\n\trequires: [],\n\trecommends: [\"ollama\"],\n\tconflictsWith: [],\n\n\tminMemoryMB: 512,\n\tgpuRequired: false,\n};\n"],"mappings":";AAEA,MAAa,wBAA2C;CACvD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,aAAa,EAAE;CACf,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,EAAE;CACV,iBAAiB,EAAE;CAEnB,SAAS;CACT,MAAM;EAAC;EAAO;EAAa;EAAQ;EAAiB;CACpD,UAAU;CAEV,UAAU,EAAE;CACZ,YAAY,CAAC,SAAS;CACtB,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb"}
|
|
@@ -1,45 +0,0 @@
|
|
|
1
|
-
//#region src/services/definitions/appflowy.ts
|
|
2
|
-
const appflowyDefinition = {
|
|
3
|
-
id: "appflowy",
|
|
4
|
-
name: "AppFlowy",
|
|
5
|
-
description: "Open-source Notion alternative focused on privacy and extensibility. Self-hosted collaborative workspace.",
|
|
6
|
-
category: "knowledge",
|
|
7
|
-
icon: "🍃",
|
|
8
|
-
image: "appflowyio/appflowy-cloud",
|
|
9
|
-
imageTag: "latest",
|
|
10
|
-
ports: [{
|
|
11
|
-
host: 8087,
|
|
12
|
-
container: 8025,
|
|
13
|
-
description: "AppFlowy Cloud API and Web UI",
|
|
14
|
-
exposed: true
|
|
15
|
-
}],
|
|
16
|
-
volumes: [{
|
|
17
|
-
name: "appflowy-data",
|
|
18
|
-
containerPath: "/data",
|
|
19
|
-
description: "AppFlowy persistent application data"
|
|
20
|
-
}],
|
|
21
|
-
environment: [],
|
|
22
|
-
dependsOn: [],
|
|
23
|
-
restartPolicy: "unless-stopped",
|
|
24
|
-
networks: ["openclaw-network"],
|
|
25
|
-
skills: [],
|
|
26
|
-
openclawEnvVars: [],
|
|
27
|
-
docsUrl: "https://docs.appflowy.io/",
|
|
28
|
-
tags: [
|
|
29
|
-
"notion-alternative",
|
|
30
|
-
"workspace",
|
|
31
|
-
"notes",
|
|
32
|
-
"wiki",
|
|
33
|
-
"collaboration"
|
|
34
|
-
],
|
|
35
|
-
maturity: "beta",
|
|
36
|
-
requires: [],
|
|
37
|
-
recommends: [],
|
|
38
|
-
conflictsWith: [],
|
|
39
|
-
minMemoryMB: 512,
|
|
40
|
-
gpuRequired: false
|
|
41
|
-
};
|
|
42
|
-
|
|
43
|
-
//#endregion
|
|
44
|
-
export { appflowyDefinition as t };
|
|
45
|
-
//# sourceMappingURL=appflowy-DdoE-dKg.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"appflowy-DdoE-dKg.mjs","names":[],"sources":["../src/services/definitions/appflowy.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const appflowyDefinition: ServiceDefinition = {\n\tid: \"appflowy\",\n\tname: \"AppFlowy\",\n\tdescription:\n\t\t\"Open-source Notion alternative focused on privacy and extensibility. Self-hosted collaborative workspace.\",\n\tcategory: \"knowledge\",\n\ticon: \"🍃\",\n\n\timage: \"appflowyio/appflowy-cloud\",\n\timageTag: \"latest\",\n\tports: [\n\t\t{\n\t\t\thost: 8087,\n\t\t\tcontainer: 8025,\n\t\t\tdescription: \"AppFlowy Cloud API and Web UI\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"appflowy-data\",\n\t\t\tcontainerPath: \"/data\",\n\t\t\tdescription: \"AppFlowy persistent application data\",\n\t\t},\n\t],\n\tenvironment: [],\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [],\n\topenclawEnvVars: [],\n\n\tdocsUrl: \"https://docs.appflowy.io/\",\n\ttags: [\"notion-alternative\", \"workspace\", \"notes\", \"wiki\", \"collaboration\"],\n\tmaturity: \"beta\",\n\n\trequires: [],\n\trecommends: [],\n\tconflictsWith: [],\n\n\tminMemoryMB: 512,\n\tgpuRequired: false,\n};\n"],"mappings":";AAEA,MAAa,qBAAwC;CACpD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,aAAa,EAAE;CACf,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,EAAE;CACV,iBAAiB,EAAE;CAEnB,SAAS;CACT,MAAM;EAAC;EAAsB;EAAa;EAAS;EAAQ;EAAgB;CAC3E,UAAU;CAEV,UAAU,EAAE;CACZ,YAAY,EAAE;CACd,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb"}
|
|
@@ -1,224 +0,0 @@
|
|
|
1
|
-
//#region src/generators/bare-metal-install.ts
|
|
2
|
-
const LINUX_SCRIPT_PREFIX_NATIVE = `
|
|
3
|
-
# Native services (install/start on host first)
|
|
4
|
-
if [ -f "native/install-linux.sh" ]; then
|
|
5
|
-
info "Installing and starting native services..."
|
|
6
|
-
bash native/install-linux.sh
|
|
7
|
-
ok "Native services ready."
|
|
8
|
-
fi
|
|
9
|
-
`;
|
|
10
|
-
const LINUX_SCRIPT = `#!/usr/bin/env bash
|
|
11
|
-
set -euo pipefail
|
|
12
|
-
|
|
13
|
-
# OpenClaw bare-metal installer (Linux)
|
|
14
|
-
# Optionally runs native services script, then Docker + Compose.
|
|
15
|
-
# Idempotent: safe to re-run.
|
|
16
|
-
|
|
17
|
-
SCRIPT_DIR="$(cd "$(dirname "\${BASH_SOURCE[0]}")" && pwd)"
|
|
18
|
-
cd "$SCRIPT_DIR"
|
|
19
|
-
|
|
20
|
-
if [ -t 1 ]; then
|
|
21
|
-
RED='\\033[0;31m'; GREEN='\\033[0;32m'; YELLOW='\\033[1;33m'; CYAN='\\033[0;36m'; NC='\\033[0m'
|
|
22
|
-
else
|
|
23
|
-
RED=''; GREEN=''; YELLOW=''; CYAN=''; NC=''
|
|
24
|
-
fi
|
|
25
|
-
info() { echo -e "\${CYAN}ℹ $*\${NC}"; }
|
|
26
|
-
ok() { echo -e "\${GREEN}✅ $*\${NC}"; }
|
|
27
|
-
warn() { echo -e "\${YELLOW}⚠️ $*\${NC}"; }
|
|
28
|
-
err() { echo -e "\${RED}❌ $*\${NC}" >&2; }
|
|
29
|
-
__NATIVE_BLOCK__
|
|
30
|
-
# Install Docker if missing
|
|
31
|
-
if ! command -v docker &> /dev/null; then
|
|
32
|
-
info "Installing Docker..."
|
|
33
|
-
if command -v apt-get &> /dev/null; then
|
|
34
|
-
sudo apt-get update -qq
|
|
35
|
-
sudo apt-get install -y -qq ca-certificates curl
|
|
36
|
-
curl -fsSL https://get.docker.com | sudo sh
|
|
37
|
-
sudo usermod -aG docker "$USER" 2>/dev/null || true
|
|
38
|
-
ok "Docker installed. You may need to log out and back in for group changes."
|
|
39
|
-
elif command -v dnf &> /dev/null || command -v yum &> /dev/null; then
|
|
40
|
-
sudo dnf install -y dnf-plugins-core 2>/dev/null || sudo yum install -y yum-utils
|
|
41
|
-
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 2>/dev/null || sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
|
|
42
|
-
sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin 2>/dev/null || sudo yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
|
|
43
|
-
sudo systemctl enable --now docker
|
|
44
|
-
sudo usermod -aG docker "$USER" 2>/dev/null || true
|
|
45
|
-
ok "Docker installed."
|
|
46
|
-
else
|
|
47
|
-
err "Unsupported package manager. Install Docker manually: https://docs.docker.com/engine/install/"
|
|
48
|
-
exit 1
|
|
49
|
-
fi
|
|
50
|
-
else
|
|
51
|
-
ok "Docker already installed."
|
|
52
|
-
fi
|
|
53
|
-
|
|
54
|
-
if ! docker compose version &> /dev/null; then
|
|
55
|
-
err "Docker Compose (v2) plugin not found. Install it: https://docs.docker.com/compose/install/"
|
|
56
|
-
exit 1
|
|
57
|
-
fi
|
|
58
|
-
|
|
59
|
-
if ! docker info &> /dev/null 2>&1; then
|
|
60
|
-
err "Docker daemon not running. Start it (e.g. sudo systemctl start docker) and re-run this script."
|
|
61
|
-
exit 1
|
|
62
|
-
fi
|
|
63
|
-
|
|
64
|
-
# Use project start script if present, else docker compose up
|
|
65
|
-
if [ -f "scripts/start.sh" ]; then
|
|
66
|
-
info "Starting stack via scripts/start.sh..."
|
|
67
|
-
bash scripts/start.sh
|
|
68
|
-
else
|
|
69
|
-
if [ -f ".env.example" ] && [ ! -f ".env" ]; then cp .env.example .env; fi
|
|
70
|
-
info "Starting stack..."
|
|
71
|
-
docker compose up -d --remove-orphans
|
|
72
|
-
echo ""
|
|
73
|
-
ok "Stack started. Gateway: http://localhost:\${OPENCLAW_GATEWAY_PORT:-18789}"
|
|
74
|
-
fi
|
|
75
|
-
`;
|
|
76
|
-
const MACOS_SCRIPT_PREFIX_NATIVE = `
|
|
77
|
-
if [ -f "native/install-macos.sh" ]; then
|
|
78
|
-
info "Installing and starting native services..."
|
|
79
|
-
bash native/install-macos.sh
|
|
80
|
-
ok "Native services ready."
|
|
81
|
-
fi
|
|
82
|
-
`;
|
|
83
|
-
const MACOS_SCRIPT = `#!/usr/bin/env bash
|
|
84
|
-
set -euo pipefail
|
|
85
|
-
|
|
86
|
-
# OpenClaw bare-metal installer (macOS)
|
|
87
|
-
# Optionally runs native services, then Docker Desktop + compose.
|
|
88
|
-
# Idempotent: safe to re-run.
|
|
89
|
-
|
|
90
|
-
SCRIPT_DIR="$(cd "$(dirname "\${BASH_SOURCE[0]}")" && pwd)"
|
|
91
|
-
cd "$SCRIPT_DIR"
|
|
92
|
-
|
|
93
|
-
if [ -t 1 ]; then
|
|
94
|
-
RED='\\033[0;31m'; GREEN='\\033[0;32m'; YELLOW='\\033[1;33m'; CYAN='\\033[0;36m'; NC='\\033[0m'
|
|
95
|
-
else
|
|
96
|
-
RED=''; GREEN=''; YELLOW=''; CYAN=''; NC=''
|
|
97
|
-
fi
|
|
98
|
-
info() { echo -e "\${CYAN}ℹ $*\${NC}"; }
|
|
99
|
-
ok() { echo -e "\${GREEN}✅ $*\${NC}"; }
|
|
100
|
-
warn() { echo -e "\${YELLOW}⚠️ $*\${NC}"; }
|
|
101
|
-
err() { echo -e "\${RED}❌ $*\${NC}" >&2; }
|
|
102
|
-
__NATIVE_BLOCK__
|
|
103
|
-
if ! command -v docker &> /dev/null; then
|
|
104
|
-
if command -v brew &> /dev/null; then
|
|
105
|
-
info "Installing Docker via Homebrew..."
|
|
106
|
-
brew install --cask docker
|
|
107
|
-
warn "Docker Desktop was installed. Please open Docker from Applications, then re-run this script."
|
|
108
|
-
exit 0
|
|
109
|
-
else
|
|
110
|
-
err "Docker not found. Install Docker Desktop from https://docs.docker.com/desktop/install/mac-install/ or run: brew install --cask docker"
|
|
111
|
-
exit 1
|
|
112
|
-
fi
|
|
113
|
-
fi
|
|
114
|
-
|
|
115
|
-
if ! docker info &> /dev/null 2>&1; then
|
|
116
|
-
err "Docker daemon not running. Open Docker Desktop from Applications, then re-run this script."
|
|
117
|
-
exit 1
|
|
118
|
-
fi
|
|
119
|
-
|
|
120
|
-
if ! docker compose version &> /dev/null; then
|
|
121
|
-
err "Docker Compose (v2) not available. Ensure Docker Desktop is up to date."
|
|
122
|
-
exit 1
|
|
123
|
-
fi
|
|
124
|
-
|
|
125
|
-
if [ -f "scripts/start.sh" ]; then
|
|
126
|
-
info "Starting stack via scripts/start.sh..."
|
|
127
|
-
bash scripts/start.sh
|
|
128
|
-
else
|
|
129
|
-
if [ -f ".env.example" ] && [ ! -f ".env" ]; then cp .env.example .env; fi
|
|
130
|
-
info "Starting stack..."
|
|
131
|
-
docker compose up -d --remove-orphans
|
|
132
|
-
echo ""
|
|
133
|
-
ok "Stack started. Gateway: http://localhost:\${OPENCLAW_GATEWAY_PORT:-18789}"
|
|
134
|
-
fi
|
|
135
|
-
`;
|
|
136
|
-
const WINDOWS_SCRIPT_PREFIX_NATIVE = `
|
|
137
|
-
if (Test-Path "native/install-windows.ps1") {
|
|
138
|
-
Info "Installing and starting native services..."
|
|
139
|
-
& .\\native\\install-windows.ps1
|
|
140
|
-
Ok "Native services ready."
|
|
141
|
-
}
|
|
142
|
-
`;
|
|
143
|
-
const WINDOWS_SCRIPT = `# OpenClaw bare-metal installer (Windows PowerShell)
|
|
144
|
-
# Optionally runs native services, then Docker Desktop + compose.
|
|
145
|
-
# Idempotent: safe to re-run. Run in PowerShell as Administrator if installing Docker.
|
|
146
|
-
|
|
147
|
-
$ErrorActionPreference = "Stop"
|
|
148
|
-
$ProjectDir = $PSScriptRoot
|
|
149
|
-
Set-Location $ProjectDir
|
|
150
|
-
|
|
151
|
-
function Info { Write-Host " $args" -ForegroundColor Cyan }
|
|
152
|
-
function Ok { Write-Host " $args" -ForegroundColor Green }
|
|
153
|
-
function Warn { Write-Host " $args" -ForegroundColor Yellow }
|
|
154
|
-
function Err { Write-Host " $args" -ForegroundColor Red; exit 1 }
|
|
155
|
-
__NATIVE_BLOCK__
|
|
156
|
-
# Check Docker
|
|
157
|
-
$docker = Get-Command docker -ErrorAction SilentlyContinue
|
|
158
|
-
if (-not $docker) {
|
|
159
|
-
Write-Host ""
|
|
160
|
-
Write-Host " Docker not found." -ForegroundColor Red
|
|
161
|
-
Write-Host " Install Docker Desktop from: https://docs.docker.com/desktop/install/windows-install/"
|
|
162
|
-
Write-Host " Then restart PowerShell and run this script again."
|
|
163
|
-
exit 1
|
|
164
|
-
}
|
|
165
|
-
|
|
166
|
-
try { docker info 2>$null | Out-Null } catch {
|
|
167
|
-
Write-Host ""
|
|
168
|
-
Write-Host " Docker daemon is not running." -ForegroundColor Red
|
|
169
|
-
Write-Host " Start Docker Desktop from the Start menu, then run this script again."
|
|
170
|
-
exit 1
|
|
171
|
-
}
|
|
172
|
-
|
|
173
|
-
try { docker compose version 2>$null | Out-Null } catch {
|
|
174
|
-
Write-Host ""
|
|
175
|
-
Write-Host " Docker Compose (v2) not available. Update Docker Desktop." -ForegroundColor Red
|
|
176
|
-
exit 1
|
|
177
|
-
}
|
|
178
|
-
|
|
179
|
-
Ok "Docker is ready."
|
|
180
|
-
|
|
181
|
-
# Prepare .env
|
|
182
|
-
if (-not (Test-Path ".env")) {
|
|
183
|
-
if (Test-Path ".env.example") {
|
|
184
|
-
Copy-Item ".env.example" ".env"
|
|
185
|
-
Info "Created .env from .env.example"
|
|
186
|
-
}
|
|
187
|
-
}
|
|
188
|
-
|
|
189
|
-
# Create dirs
|
|
190
|
-
$configDir = if ($env:OPENCLAW_CONFIG_DIR) { $env:OPENCLAW_CONFIG_DIR } else { "./openclaw/config" }
|
|
191
|
-
$workspaceDir = if ($env:OPENCLAW_WORKSPACE_DIR) { $env:OPENCLAW_WORKSPACE_DIR } else { "./openclaw/workspace" }
|
|
192
|
-
New-Item -ItemType Directory -Force -Path $configDir | Out-Null
|
|
193
|
-
New-Item -ItemType Directory -Force -Path $workspaceDir | Out-Null
|
|
194
|
-
Ok "Directories ready."
|
|
195
|
-
|
|
196
|
-
# Start stack
|
|
197
|
-
Info "Starting stack..."
|
|
198
|
-
docker compose up -d --remove-orphans
|
|
199
|
-
|
|
200
|
-
$port = if ($env:OPENCLAW_GATEWAY_PORT) { $env:OPENCLAW_GATEWAY_PORT } else { "18789" }
|
|
201
|
-
Write-Host ""
|
|
202
|
-
Ok "Stack started. Gateway: http://localhost:$port"
|
|
203
|
-
`;
|
|
204
|
-
/**
|
|
205
|
-
* Returns one file: install.sh (Linux/macOS) or install.ps1 (Windows).
|
|
206
|
-
* When hasNativeServices is true, the script runs the native installer first, then Docker + compose.
|
|
207
|
-
*/
|
|
208
|
-
function generateBareMetalInstall(options) {
|
|
209
|
-
const { platform, hasNativeServices } = options;
|
|
210
|
-
const files = {};
|
|
211
|
-
if (platform === "windows/amd64") {
|
|
212
|
-
files["install.ps1"] = hasNativeServices ? WINDOWS_SCRIPT.replace("__NATIVE_BLOCK__", WINDOWS_SCRIPT_PREFIX_NATIVE) : WINDOWS_SCRIPT.replace("__NATIVE_BLOCK__", "");
|
|
213
|
-
return files;
|
|
214
|
-
}
|
|
215
|
-
const isMac = platform.startsWith("macos/");
|
|
216
|
-
const baseScript = isMac ? MACOS_SCRIPT : LINUX_SCRIPT;
|
|
217
|
-
const prefix = hasNativeServices ? isMac ? MACOS_SCRIPT_PREFIX_NATIVE : LINUX_SCRIPT_PREFIX_NATIVE : "";
|
|
218
|
-
files["install.sh"] = baseScript.replace("__NATIVE_BLOCK__", prefix);
|
|
219
|
-
return files;
|
|
220
|
-
}
|
|
221
|
-
|
|
222
|
-
//#endregion
|
|
223
|
-
export { generateBareMetalInstall as t };
|
|
224
|
-
//# sourceMappingURL=bare-metal-install-DpYZDoGq.mjs.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"bare-metal-install-DpYZDoGq.mjs","names":[],"sources":["../src/generators/bare-metal-install.ts"],"sourcesContent":["/**\n * Generates platform-specific installer scripts for bare-metal (VPS, computer) deployment.\n * Each script ensures Docker and Docker Compose are installed, then runs the stack.\n * Returns a map of one file: install.sh (Linux/macOS) or install.ps1 (Windows).\n */\nimport type { Platform } from \"../types.js\";\n\nconst LINUX_SCRIPT_PREFIX_NATIVE = `\n# Native services (install/start on host first)\nif [ -f \"native/install-linux.sh\" ]; then\n info \"Installing and starting native services...\"\n bash native/install-linux.sh\n ok \"Native services ready.\"\nfi\n`;\n\nconst LINUX_SCRIPT = `#!/usr/bin/env bash\nset -euo pipefail\n\n# OpenClaw bare-metal installer (Linux)\n# Optionally runs native services script, then Docker + Compose.\n# Idempotent: safe to re-run.\n\nSCRIPT_DIR=\"$(cd \"$(dirname \"\\${BASH_SOURCE[0]}\")\" && pwd)\"\ncd \"$SCRIPT_DIR\"\n\nif [ -t 1 ]; then\n RED='\\\\033[0;31m'; GREEN='\\\\033[0;32m'; YELLOW='\\\\033[1;33m'; CYAN='\\\\033[0;36m'; NC='\\\\033[0m'\nelse\n RED=''; GREEN=''; YELLOW=''; CYAN=''; NC=''\nfi\ninfo() { echo -e \"\\${CYAN}ℹ $*\\${NC}\"; }\nok() { echo -e \"\\${GREEN}✅ $*\\${NC}\"; }\nwarn() { echo -e \"\\${YELLOW}⚠️ $*\\${NC}\"; }\nerr() { echo -e \"\\${RED}❌ $*\\${NC}\" >&2; }\n__NATIVE_BLOCK__\n# Install Docker if missing\nif ! command -v docker &> /dev/null; then\n info \"Installing Docker...\"\n if command -v apt-get &> /dev/null; then\n sudo apt-get update -qq\n sudo apt-get install -y -qq ca-certificates curl\n curl -fsSL https://get.docker.com | sudo sh\n sudo usermod -aG docker \"$USER\" 2>/dev/null || true\n ok \"Docker installed. You may need to log out and back in for group changes.\"\n elif command -v dnf &> /dev/null || command -v yum &> /dev/null; then\n sudo dnf install -y dnf-plugins-core 2>/dev/null || sudo yum install -y yum-utils\n sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo 2>/dev/null || sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo\n sudo dnf install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin 2>/dev/null || sudo yum install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin\n sudo systemctl enable --now docker\n sudo usermod -aG docker \"$USER\" 2>/dev/null || true\n ok \"Docker installed.\"\n else\n err \"Unsupported package manager. Install Docker manually: https://docs.docker.com/engine/install/\"\n exit 1\n fi\nelse\n ok \"Docker already installed.\"\nfi\n\nif ! docker compose version &> /dev/null; then\n err \"Docker Compose (v2) plugin not found. Install it: https://docs.docker.com/compose/install/\"\n exit 1\nfi\n\nif ! docker info &> /dev/null 2>&1; then\n err \"Docker daemon not running. Start it (e.g. sudo systemctl start docker) and re-run this script.\"\n exit 1\nfi\n\n# Use project start script if present, else docker compose up\nif [ -f \"scripts/start.sh\" ]; then\n info \"Starting stack via scripts/start.sh...\"\n bash scripts/start.sh\nelse\n if [ -f \".env.example\" ] && [ ! -f \".env\" ]; then cp .env.example .env; fi\n info \"Starting stack...\"\n docker compose up -d --remove-orphans\n echo \"\"\n ok \"Stack started. Gateway: http://localhost:\\${OPENCLAW_GATEWAY_PORT:-18789}\"\nfi\n`;\n\nconst MACOS_SCRIPT_PREFIX_NATIVE = `\nif [ -f \"native/install-macos.sh\" ]; then\n info \"Installing and starting native services...\"\n bash native/install-macos.sh\n ok \"Native services ready.\"\nfi\n`;\n\nconst MACOS_SCRIPT = `#!/usr/bin/env bash\nset -euo pipefail\n\n# OpenClaw bare-metal installer (macOS)\n# Optionally runs native services, then Docker Desktop + compose.\n# Idempotent: safe to re-run.\n\nSCRIPT_DIR=\"$(cd \"$(dirname \"\\${BASH_SOURCE[0]}\")\" && pwd)\"\ncd \"$SCRIPT_DIR\"\n\nif [ -t 1 ]; then\n RED='\\\\033[0;31m'; GREEN='\\\\033[0;32m'; YELLOW='\\\\033[1;33m'; CYAN='\\\\033[0;36m'; NC='\\\\033[0m'\nelse\n RED=''; GREEN=''; YELLOW=''; CYAN=''; NC=''\nfi\ninfo() { echo -e \"\\${CYAN}ℹ $*\\${NC}\"; }\nok() { echo -e \"\\${GREEN}✅ $*\\${NC}\"; }\nwarn() { echo -e \"\\${YELLOW}⚠️ $*\\${NC}\"; }\nerr() { echo -e \"\\${RED}❌ $*\\${NC}\" >&2; }\n__NATIVE_BLOCK__\nif ! command -v docker &> /dev/null; then\n if command -v brew &> /dev/null; then\n info \"Installing Docker via Homebrew...\"\n brew install --cask docker\n warn \"Docker Desktop was installed. Please open Docker from Applications, then re-run this script.\"\n exit 0\n else\n err \"Docker not found. Install Docker Desktop from https://docs.docker.com/desktop/install/mac-install/ or run: brew install --cask docker\"\n exit 1\n fi\nfi\n\nif ! docker info &> /dev/null 2>&1; then\n err \"Docker daemon not running. Open Docker Desktop from Applications, then re-run this script.\"\n exit 1\nfi\n\nif ! docker compose version &> /dev/null; then\n err \"Docker Compose (v2) not available. Ensure Docker Desktop is up to date.\"\n exit 1\nfi\n\nif [ -f \"scripts/start.sh\" ]; then\n info \"Starting stack via scripts/start.sh...\"\n bash scripts/start.sh\nelse\n if [ -f \".env.example\" ] && [ ! -f \".env\" ]; then cp .env.example .env; fi\n info \"Starting stack...\"\n docker compose up -d --remove-orphans\n echo \"\"\n ok \"Stack started. Gateway: http://localhost:\\${OPENCLAW_GATEWAY_PORT:-18789}\"\nfi\n`;\n\nconst WINDOWS_SCRIPT_PREFIX_NATIVE = `\nif (Test-Path \"native/install-windows.ps1\") {\n Info \"Installing and starting native services...\"\n & .\\\\native\\\\install-windows.ps1\n Ok \"Native services ready.\"\n}\n`;\n\nconst WINDOWS_SCRIPT = `# OpenClaw bare-metal installer (Windows PowerShell)\n# Optionally runs native services, then Docker Desktop + compose.\n# Idempotent: safe to re-run. Run in PowerShell as Administrator if installing Docker.\n\n$ErrorActionPreference = \"Stop\"\n$ProjectDir = $PSScriptRoot\nSet-Location $ProjectDir\n\nfunction Info { Write-Host \" $args\" -ForegroundColor Cyan }\nfunction Ok { Write-Host \" $args\" -ForegroundColor Green }\nfunction Warn { Write-Host \" $args\" -ForegroundColor Yellow }\nfunction Err { Write-Host \" $args\" -ForegroundColor Red; exit 1 }\n__NATIVE_BLOCK__\n# Check Docker\n$docker = Get-Command docker -ErrorAction SilentlyContinue\nif (-not $docker) {\n Write-Host \"\"\n Write-Host \" Docker not found.\" -ForegroundColor Red\n Write-Host \" Install Docker Desktop from: https://docs.docker.com/desktop/install/windows-install/\"\n Write-Host \" Then restart PowerShell and run this script again.\"\n exit 1\n}\n\ntry { docker info 2>$null | Out-Null } catch {\n Write-Host \"\"\n Write-Host \" Docker daemon is not running.\" -ForegroundColor Red\n Write-Host \" Start Docker Desktop from the Start menu, then run this script again.\"\n exit 1\n}\n\ntry { docker compose version 2>$null | Out-Null } catch {\n Write-Host \"\"\n Write-Host \" Docker Compose (v2) not available. Update Docker Desktop.\" -ForegroundColor Red\n exit 1\n}\n\nOk \"Docker is ready.\"\n\n# Prepare .env\nif (-not (Test-Path \".env\")) {\n if (Test-Path \".env.example\") {\n Copy-Item \".env.example\" \".env\"\n Info \"Created .env from .env.example\"\n }\n}\n\n# Create dirs\n$configDir = if ($env:OPENCLAW_CONFIG_DIR) { $env:OPENCLAW_CONFIG_DIR } else { \"./openclaw/config\" }\n$workspaceDir = if ($env:OPENCLAW_WORKSPACE_DIR) { $env:OPENCLAW_WORKSPACE_DIR } else { \"./openclaw/workspace\" }\nNew-Item -ItemType Directory -Force -Path $configDir | Out-Null\nNew-Item -ItemType Directory -Force -Path $workspaceDir | Out-Null\nOk \"Directories ready.\"\n\n# Start stack\nInfo \"Starting stack...\"\ndocker compose up -d --remove-orphans\n\n$port = if ($env:OPENCLAW_GATEWAY_PORT) { $env:OPENCLAW_GATEWAY_PORT } else { \"18789\" }\nWrite-Host \"\"\nOk \"Stack started. Gateway: http://localhost:$port\"\n`;\n\nexport interface BareMetalInstallOptions {\n\tplatform: Platform;\n\tprojectName: string;\n\t/** When true, top-level script runs native/install-*.sh|ps1 first, then Docker + compose. */\n\thasNativeServices?: boolean;\n}\n\n/**\n * Returns one file: install.sh (Linux/macOS) or install.ps1 (Windows).\n * When hasNativeServices is true, the script runs the native installer first, then Docker + compose.\n */\nexport function generateBareMetalInstall(options: BareMetalInstallOptions): Record<string, string> {\n\tconst { platform, hasNativeServices } = options;\n\tconst files: Record<string, string> = {};\n\n\tif (platform === \"windows/amd64\") {\n\t\tconst script = hasNativeServices\n\t\t\t? WINDOWS_SCRIPT.replace(\"__NATIVE_BLOCK__\", WINDOWS_SCRIPT_PREFIX_NATIVE)\n\t\t\t: WINDOWS_SCRIPT.replace(\"__NATIVE_BLOCK__\", \"\");\n\t\tfiles[\"install.ps1\"] = script;\n\t\treturn files;\n\t}\n\n\tconst isMac = platform.startsWith(\"macos/\");\n\tconst baseScript = isMac ? MACOS_SCRIPT : LINUX_SCRIPT;\n\tconst prefix = hasNativeServices\n\t\t? isMac\n\t\t\t? MACOS_SCRIPT_PREFIX_NATIVE\n\t\t\t: LINUX_SCRIPT_PREFIX_NATIVE\n\t\t: \"\";\n\tconst script = baseScript.replace(\"__NATIVE_BLOCK__\", prefix);\n\tfiles[\"install.sh\"] = script;\n\treturn files;\n}\n"],"mappings":";AAOA,MAAM,6BAA6B;;;;;;;;AASnC,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAmErB,MAAM,6BAA6B;;;;;;;AAQnC,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAsDrB,MAAM,+BAA+B;;;;;;;AAQrC,MAAM,iBAAiB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAyEvB,SAAgB,yBAAyB,SAA0D;CAClG,MAAM,EAAE,UAAU,sBAAsB;CACxC,MAAM,QAAgC,EAAE;AAExC,KAAI,aAAa,iBAAiB;AAIjC,QAAM,iBAHS,oBACZ,eAAe,QAAQ,oBAAoB,6BAA6B,GACxE,eAAe,QAAQ,oBAAoB,GAAG;AAEjD,SAAO;;CAGR,MAAM,QAAQ,SAAS,WAAW,SAAS;CAC3C,MAAM,aAAa,QAAQ,eAAe;CAC1C,MAAM,SAAS,oBACZ,QACC,6BACA,6BACD;AAEH,OAAM,gBADS,WAAW,QAAQ,oBAAoB,OAAO;AAE7D,QAAO"}
|
|
@@ -1,48 +0,0 @@
|
|
|
1
|
-
//#region src/bare-metal-partition.ts
|
|
2
|
-
/**
|
|
3
|
-
* Maps Platform (e.g. linux/amd64) to NativePlatform (linux, windows, macos).
|
|
4
|
-
*/
|
|
5
|
-
function platformToNativePlatform(platform) {
|
|
6
|
-
if (platform.startsWith("linux/")) return "linux";
|
|
7
|
-
if (platform.startsWith("windows/")) return "windows";
|
|
8
|
-
if (platform.startsWith("macos/")) return "macos";
|
|
9
|
-
return "linux";
|
|
10
|
-
}
|
|
11
|
-
/**
|
|
12
|
-
* Partitions resolved services into native (run on host via scripts) vs Docker-only.
|
|
13
|
-
* Gateway and CLI are never native; services with nativeSupported and a matching
|
|
14
|
-
* nativeRecipe for the platform go to native, rest to Docker.
|
|
15
|
-
*/
|
|
16
|
-
function partitionBareMetal(resolved, platform) {
|
|
17
|
-
const nativePlatform = platformToNativePlatform(platform);
|
|
18
|
-
const nativeServices = [];
|
|
19
|
-
const dockerOnlyServices = [];
|
|
20
|
-
const nativeIds = /* @__PURE__ */ new Set();
|
|
21
|
-
for (const entry of resolved.services) {
|
|
22
|
-
const def = entry.definition;
|
|
23
|
-
if (def.nativeSupported === true && def.nativeRecipes?.length && def.nativeRecipes.some((r) => r.platform === nativePlatform)) {
|
|
24
|
-
nativeServices.push(entry);
|
|
25
|
-
nativeIds.add(def.id);
|
|
26
|
-
} else dockerOnlyServices.push(entry);
|
|
27
|
-
}
|
|
28
|
-
return {
|
|
29
|
-
nativeServices,
|
|
30
|
-
dockerOnlyServices,
|
|
31
|
-
nativeIds
|
|
32
|
-
};
|
|
33
|
-
}
|
|
34
|
-
/**
|
|
35
|
-
* Returns a new ResolverOutput containing only the given service list (same order).
|
|
36
|
-
* Used to build compose for Docker-only subset when bare-metal has native services.
|
|
37
|
-
*/
|
|
38
|
-
function resolvedWithOnlyServices(resolved, services) {
|
|
39
|
-
const idSet = new Set(services.map((s) => s.definition.id));
|
|
40
|
-
return {
|
|
41
|
-
...resolved,
|
|
42
|
-
services: resolved.services.filter((s) => idSet.has(s.definition.id))
|
|
43
|
-
};
|
|
44
|
-
}
|
|
45
|
-
|
|
46
|
-
//#endregion
|
|
47
|
-
export { platformToNativePlatform as n, resolvedWithOnlyServices as r, partitionBareMetal as t };
|
|
48
|
-
//# sourceMappingURL=bare-metal-partition-CYlOxf9B.mjs.map
|