@better-openclaw/core 1.0.21 → 1.0.22
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.cjs +2 -3
- package/dist/bare-metal-partition.cjs.map +1 -1
- package/dist/bare-metal-partition.d.mts.map +1 -1
- package/dist/bare-metal-partition.mjs +1 -1
- package/dist/bare-metal-partition.test.cjs +4 -5
- 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/compose-validation.test.cjs +5 -6
- package/dist/compose-validation.test.cjs.map +1 -1
- package/dist/compose-validation.test.mjs +2 -3
- package/dist/compose-validation.test.mjs.map +1 -1
- package/dist/composer.cjs +4 -5
- package/dist/composer.cjs.map +1 -1
- package/dist/composer.d.mts.map +1 -1
- package/dist/composer.mjs +1 -2
- package/dist/composer.mjs.map +1 -1
- package/dist/composer.snapshot.test.cjs +4 -5
- package/dist/composer.snapshot.test.cjs.map +1 -1
- package/dist/composer.snapshot.test.mjs +3 -4
- package/dist/composer.snapshot.test.mjs.map +1 -1
- package/dist/composer.test.cjs +5 -6
- package/dist/composer.test.cjs.map +1 -1
- package/dist/composer.test.mjs +3 -4
- package/dist/composer.test.mjs.map +1 -1
- package/dist/coolify-BVGGcMrT.d.mts +18 -0
- package/dist/coolify-BVGGcMrT.d.mts.map +1 -0
- package/dist/coolify-vlb1G9V2.d.cts +18 -0
- package/dist/coolify-vlb1G9V2.d.cts.map +1 -0
- package/dist/deployers/coolify.cjs +3 -4
- package/dist/deployers/coolify.cjs.map +1 -1
- package/dist/deployers/coolify.d.cts +2 -18
- package/dist/deployers/coolify.d.mts +2 -18
- package/dist/deployers/coolify.mjs +1 -2
- package/dist/deployers/coolify.mjs.map +1 -1
- package/dist/deployers/dokploy.cjs +3 -4
- package/dist/deployers/dokploy.cjs.map +1 -1
- package/dist/deployers/dokploy.d.cts +2 -25
- package/dist/deployers/dokploy.d.mts +2 -25
- package/dist/deployers/dokploy.mjs +1 -2
- package/dist/deployers/dokploy.mjs.map +1 -1
- package/dist/deployers/index.cjs +4 -5
- package/dist/deployers/index.cjs.map +1 -1
- package/dist/deployers/index.d.cts +3 -3
- package/dist/deployers/index.d.mts +3 -3
- package/dist/deployers/index.mjs +1 -2
- package/dist/deployers/index.mjs.map +1 -1
- package/dist/deployers/strip-host-ports.cjs +3 -4
- package/dist/deployers/strip-host-ports.cjs.map +1 -1
- package/dist/deployers/strip-host-ports.mjs +1 -2
- package/dist/deployers/strip-host-ports.mjs.map +1 -1
- package/dist/deployers/strip-host-ports.test.cjs +3 -4
- package/dist/deployers/strip-host-ports.test.cjs.map +1 -1
- package/dist/deployers/strip-host-ports.test.mjs +3 -4
- package/dist/deployers/strip-host-ports.test.mjs.map +1 -1
- package/dist/deployers/types.d.cts +2 -243
- package/dist/deployers/types.d.mts +2 -243
- package/dist/deployers/types.mjs +1 -1
- package/dist/dokploy-8cbrxUun.d.cts +25 -0
- package/dist/dokploy-8cbrxUun.d.cts.map +1 -0
- package/dist/dokploy-BTflLhTM.d.mts +25 -0
- package/dist/dokploy-BTflLhTM.d.mts.map +1 -0
- package/dist/errors.cjs +2 -3
- package/dist/errors.cjs.map +1 -1
- package/dist/errors.mjs +1 -1
- package/dist/errors.mjs.map +1 -1
- package/dist/generate.cjs +27 -28
- package/dist/generate.cjs.map +1 -1
- package/dist/generate.d.mts.map +1 -1
- package/dist/generate.mjs +1 -2
- package/dist/generate.mjs.map +1 -1
- package/dist/generate.test.cjs +4 -5
- package/dist/generate.test.cjs.map +1 -1
- package/dist/generate.test.mjs +3 -4
- package/dist/generate.test.mjs.map +1 -1
- package/dist/generators/bare-metal-install.cjs +2 -3
- package/dist/generators/bare-metal-install.cjs.map +1 -1
- package/dist/generators/bare-metal-install.d.mts.map +1 -1
- package/dist/generators/bare-metal-install.mjs +1 -1
- package/dist/generators/bare-metal-install.test.cjs +3 -4
- package/dist/generators/bare-metal-install.test.cjs.map +1 -1
- package/dist/generators/bare-metal-install.test.mjs +3 -4
- package/dist/generators/bare-metal-install.test.mjs.map +1 -1
- package/dist/generators/caddy.cjs +2 -3
- package/dist/generators/caddy.cjs.map +1 -1
- package/dist/generators/caddy.d.mts.map +1 -1
- package/dist/generators/caddy.mjs +1 -1
- package/dist/generators/caddy.test.cjs +3 -4
- package/dist/generators/caddy.test.cjs.map +1 -1
- package/dist/generators/caddy.test.mjs +3 -4
- package/dist/generators/caddy.test.mjs.map +1 -1
- package/dist/generators/cloud-init.cjs +2 -3
- package/dist/generators/cloud-init.cjs.map +1 -1
- package/dist/generators/cloud-init.mjs +1 -1
- package/dist/generators/env.cjs +4 -5
- package/dist/generators/env.cjs.map +1 -1
- package/dist/generators/env.d.mts.map +1 -1
- package/dist/generators/env.mjs +1 -2
- package/dist/generators/env.mjs.map +1 -1
- package/dist/generators/env.test.cjs +3 -4
- package/dist/generators/env.test.cjs.map +1 -1
- package/dist/generators/env.test.mjs +3 -4
- package/dist/generators/env.test.mjs.map +1 -1
- package/dist/generators/get-shit-done.cjs +2 -3
- package/dist/generators/get-shit-done.cjs.map +1 -1
- package/dist/generators/get-shit-done.mjs +1 -1
- package/dist/generators/grafana.cjs +2 -3
- package/dist/generators/grafana.cjs.map +1 -1
- package/dist/generators/grafana.mjs +1 -1
- package/dist/generators/health-check.cjs +2 -3
- package/dist/generators/health-check.cjs.map +1 -1
- package/dist/generators/health-check.d.mts.map +1 -1
- package/dist/generators/health-check.mjs +1 -1
- package/dist/generators/health-check.test.cjs +3 -4
- package/dist/generators/health-check.test.cjs.map +1 -1
- package/dist/generators/health-check.test.mjs +3 -4
- package/dist/generators/health-check.test.mjs.map +1 -1
- package/dist/generators/n8n-workflows.cjs +2 -3
- package/dist/generators/n8n-workflows.cjs.map +1 -1
- package/dist/generators/n8n-workflows.d.mts.map +1 -1
- package/dist/generators/n8n-workflows.mjs +1 -1
- package/dist/generators/native-services.cjs +2 -3
- package/dist/generators/native-services.cjs.map +1 -1
- package/dist/generators/native-services.mjs +1 -1
- package/dist/generators/openclaw-install-script.cjs +2 -3
- package/dist/generators/openclaw-install-script.cjs.map +1 -1
- package/dist/generators/openclaw-install-script.mjs +1 -1
- package/dist/generators/openclaw-json.cjs +2 -3
- package/dist/generators/openclaw-json.cjs.map +1 -1
- package/dist/generators/openclaw-json.mjs +1 -1
- package/dist/generators/postgres-init.cjs +32 -3
- 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 +31 -1
- package/dist/generators/postgres-init.mjs.map +1 -1
- package/dist/generators/prometheus.cjs +2 -3
- package/dist/generators/prometheus.cjs.map +1 -1
- package/dist/generators/prometheus.d.mts.map +1 -1
- package/dist/generators/prometheus.mjs +1 -1
- package/dist/generators/readme.cjs +2 -3
- package/dist/generators/readme.cjs.map +1 -1
- package/dist/generators/readme.d.mts.map +1 -1
- package/dist/generators/readme.mjs +1 -1
- package/dist/generators/scripts.cjs +2 -3
- package/dist/generators/scripts.cjs.map +1 -1
- package/dist/generators/scripts.mjs +1 -1
- package/dist/generators/scripts.test.cjs +3 -4
- package/dist/generators/scripts.test.cjs.map +1 -1
- package/dist/generators/scripts.test.mjs +3 -4
- package/dist/generators/scripts.test.mjs.map +1 -1
- package/dist/generators/skills.cjs +3 -590
- package/dist/generators/skills.d.mts.map +1 -1
- package/dist/generators/skills.mjs +1 -2
- package/dist/generators/skills.mjs.map +1 -1
- package/dist/generators/stack-manifest.cjs +2 -3
- package/dist/generators/stack-manifest.cjs.map +1 -1
- package/dist/generators/stack-manifest.mjs +1 -1
- package/dist/generators/traefik.cjs +2 -3
- package/dist/generators/traefik.cjs.map +1 -1
- package/dist/generators/traefik.mjs +1 -1
- package/dist/generators/traefik.test.cjs +4 -5
- package/dist/generators/traefik.test.cjs.map +1 -1
- package/dist/generators/traefik.test.mjs +3 -4
- package/dist/generators/traefik.test.mjs.map +1 -1
- package/dist/index.cjs +35 -36
- package/dist/index.d.cts +4 -4
- package/dist/index.d.mts +4 -4
- package/dist/index.mjs +2 -3
- package/dist/{magic-string.es-D2agHT3I.cjs → magic-string.es-CJq41xdM.cjs} +2 -4
- package/dist/{magic-string.es-CfFonO_S.mjs.map → magic-string.es-CJq41xdM.cjs.map} +1 -1
- package/dist/{magic-string.es-CfFonO_S.mjs → magic-string.es-CoDyF8pj.mjs} +2 -3
- package/dist/{magic-string.es-D2agHT3I.cjs.map → magic-string.es-CoDyF8pj.mjs.map} +1 -1
- package/dist/migrations.cjs +5 -6
- package/dist/migrations.cjs.map +1 -1
- package/dist/migrations.mjs +4 -4
- package/dist/migrations.mjs.map +1 -1
- package/dist/migrations.test.cjs +6 -7
- package/dist/migrations.test.cjs.map +1 -1
- package/dist/migrations.test.mjs +7 -8
- package/dist/migrations.test.mjs.map +1 -1
- package/dist/port-scanner.cjs +2 -3
- package/dist/port-scanner.cjs.map +1 -1
- package/dist/port-scanner.d.mts.map +1 -1
- package/dist/port-scanner.mjs +1 -1
- package/dist/presets/presets.test.cjs +11 -8
- package/dist/presets/presets.test.cjs.map +1 -1
- package/dist/presets/presets.test.mjs +7 -4
- package/dist/presets/presets.test.mjs.map +1 -1
- package/dist/presets/registry.cjs +152 -3
- 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 +151 -1
- package/dist/presets/registry.mjs.map +1 -1
- package/dist/presets/registry.test.cjs +3 -4
- package/dist/presets/registry.test.cjs.map +1 -1
- package/dist/presets/registry.test.mjs +3 -4
- package/dist/presets/registry.test.mjs.map +1 -1
- package/dist/resolver.cjs +4 -5
- package/dist/resolver.cjs.map +1 -1
- package/dist/resolver.d.mts.map +1 -1
- package/dist/resolver.mjs +1 -2
- package/dist/resolver.mjs.map +1 -1
- package/dist/resolver.test.cjs +3 -4
- package/dist/resolver.test.cjs.map +1 -1
- package/dist/resolver.test.mjs +3 -4
- package/dist/resolver.test.mjs.map +1 -1
- package/dist/schema-C_hc7e4k.d.cts +898 -0
- package/dist/schema-C_hc7e4k.d.cts.map +1 -0
- package/dist/schema-CaesJaS2.d.mts +898 -0
- package/dist/schema-CaesJaS2.d.mts.map +1 -0
- package/dist/schema.cjs +15 -5
- package/dist/schema.cjs.map +1 -1
- package/dist/schema.d.cts +2 -854
- package/dist/schema.d.mts +2 -854
- package/dist/schema.mjs +13 -3
- package/dist/schema.mjs.map +1 -1
- package/dist/schema.test.cjs +3 -4
- package/dist/schema.test.cjs.map +1 -1
- package/dist/schema.test.mjs +3 -4
- package/dist/schema.test.mjs.map +1 -1
- package/dist/services/definitions/airbyte.cjs +76 -0
- package/dist/services/definitions/airbyte.cjs.map +1 -0
- package/dist/services/definitions/airbyte.d.cts +7 -0
- package/dist/services/definitions/airbyte.d.cts.map +1 -0
- package/dist/services/definitions/airbyte.d.mts +7 -0
- package/dist/services/definitions/airbyte.d.mts.map +1 -0
- package/dist/services/definitions/airbyte.mjs +75 -0
- package/dist/services/definitions/airbyte.mjs.map +1 -0
- package/dist/services/definitions/airflow.cjs +109 -0
- package/dist/services/definitions/airflow.cjs.map +1 -0
- package/dist/services/definitions/airflow.d.cts +7 -0
- package/dist/services/definitions/airflow.d.cts.map +1 -0
- package/dist/services/definitions/airflow.d.mts +7 -0
- package/dist/services/definitions/airflow.d.mts.map +1 -0
- package/dist/services/definitions/airflow.mjs +108 -0
- package/dist/services/definitions/airflow.mjs.map +1 -0
- package/dist/services/definitions/anything-llm.cjs +2 -3
- package/dist/services/definitions/anything-llm.cjs.map +1 -1
- package/dist/services/definitions/anything-llm.mjs +1 -1
- package/dist/services/definitions/appflowy.cjs +2 -3
- package/dist/services/definitions/appflowy.cjs.map +1 -1
- package/dist/services/definitions/appflowy.mjs +1 -1
- package/dist/services/definitions/appwrite.cjs +190 -0
- package/dist/services/definitions/appwrite.cjs.map +1 -0
- package/dist/services/definitions/appwrite.d.cts +7 -0
- package/dist/services/definitions/appwrite.d.cts.map +1 -0
- package/dist/services/definitions/appwrite.d.mts +7 -0
- package/dist/services/definitions/appwrite.d.mts.map +1 -0
- package/dist/services/definitions/appwrite.mjs +189 -0
- package/dist/services/definitions/appwrite.mjs.map +1 -0
- package/dist/services/definitions/authelia.cjs +145 -0
- package/dist/services/definitions/authelia.cjs.map +1 -0
- package/dist/services/definitions/authelia.d.cts +7 -0
- package/dist/services/definitions/authelia.d.cts.map +1 -0
- package/dist/services/definitions/authelia.d.mts +7 -0
- package/dist/services/definitions/authelia.d.mts.map +1 -0
- package/dist/services/definitions/authelia.mjs +144 -0
- package/dist/services/definitions/authelia.mjs.map +1 -0
- package/dist/services/definitions/authentik.cjs +2 -3
- package/dist/services/definitions/authentik.cjs.map +1 -1
- package/dist/services/definitions/authentik.mjs +1 -1
- package/dist/services/definitions/axolotl.cjs +67 -0
- package/dist/services/definitions/axolotl.cjs.map +1 -0
- package/dist/services/definitions/axolotl.d.cts +7 -0
- package/dist/services/definitions/axolotl.d.cts.map +1 -0
- package/dist/services/definitions/axolotl.d.mts +7 -0
- package/dist/services/definitions/axolotl.d.mts.map +1 -0
- package/dist/services/definitions/axolotl.mjs +66 -0
- package/dist/services/definitions/axolotl.mjs.map +1 -0
- package/dist/services/definitions/beszel.cjs +2 -3
- package/dist/services/definitions/beszel.cjs.map +1 -1
- package/dist/services/definitions/beszel.mjs +1 -1
- package/dist/services/definitions/browserless.cjs +2 -3
- package/dist/services/definitions/browserless.cjs.map +1 -1
- package/dist/services/definitions/browserless.mjs +1 -1
- package/dist/services/definitions/caddy.cjs +2 -3
- package/dist/services/definitions/caddy.cjs.map +1 -1
- package/dist/services/definitions/caddy.mjs +1 -1
- package/dist/services/definitions/cal-com.cjs +2 -3
- package/dist/services/definitions/cal-com.cjs.map +1 -1
- package/dist/services/definitions/cal-com.mjs +1 -1
- package/dist/services/definitions/chatwoot-worker.cjs +95 -0
- package/dist/services/definitions/chatwoot-worker.cjs.map +1 -0
- package/dist/services/definitions/chatwoot-worker.d.cts +7 -0
- package/dist/services/definitions/chatwoot-worker.d.cts.map +1 -0
- package/dist/services/definitions/chatwoot-worker.d.mts +7 -0
- package/dist/services/definitions/chatwoot-worker.d.mts.map +1 -0
- package/dist/services/definitions/chatwoot-worker.mjs +94 -0
- package/dist/services/definitions/chatwoot-worker.mjs.map +1 -0
- package/dist/services/definitions/chatwoot.cjs +112 -0
- package/dist/services/definitions/chatwoot.cjs.map +1 -0
- package/dist/services/definitions/chatwoot.d.cts +7 -0
- package/dist/services/definitions/chatwoot.d.cts.map +1 -0
- package/dist/services/definitions/chatwoot.d.mts +7 -0
- package/dist/services/definitions/chatwoot.d.mts.map +1 -0
- package/dist/services/definitions/chatwoot.mjs +111 -0
- package/dist/services/definitions/chatwoot.mjs.map +1 -0
- package/dist/services/definitions/chromadb.cjs +2 -3
- package/dist/services/definitions/chromadb.cjs.map +1 -1
- package/dist/services/definitions/chromadb.mjs +1 -1
- package/dist/services/definitions/claude-code.cjs +2 -3
- package/dist/services/definitions/claude-code.cjs.map +1 -1
- package/dist/services/definitions/claude-code.mjs +1 -1
- package/dist/services/definitions/code-server.cjs +2 -3
- package/dist/services/definitions/code-server.cjs.map +1 -1
- package/dist/services/definitions/code-server.mjs +1 -1
- package/dist/services/definitions/codex.cjs +2 -3
- package/dist/services/definitions/codex.cjs.map +1 -1
- package/dist/services/definitions/codex.mjs +1 -1
- package/dist/services/definitions/comfyui.cjs +2 -3
- package/dist/services/definitions/comfyui.cjs.map +1 -1
- package/dist/services/definitions/comfyui.mjs +1 -1
- package/dist/services/definitions/convex-dashboard.cjs +2 -3
- package/dist/services/definitions/convex-dashboard.cjs.map +1 -1
- package/dist/services/definitions/convex-dashboard.mjs +1 -1
- package/dist/services/definitions/convex.cjs +2 -3
- package/dist/services/definitions/convex.cjs.map +1 -1
- package/dist/services/definitions/convex.mjs +1 -1
- package/dist/services/definitions/coolify.cjs +2 -3
- package/dist/services/definitions/coolify.cjs.map +1 -1
- package/dist/services/definitions/coolify.mjs +1 -1
- package/dist/services/definitions/crowdsec.cjs +2 -3
- package/dist/services/definitions/crowdsec.cjs.map +1 -1
- package/dist/services/definitions/crowdsec.mjs +1 -1
- package/dist/services/definitions/dagster.cjs +83 -0
- package/dist/services/definitions/dagster.cjs.map +1 -0
- package/dist/services/definitions/dagster.d.cts +7 -0
- package/dist/services/definitions/dagster.d.cts.map +1 -0
- package/dist/services/definitions/dagster.d.mts +7 -0
- package/dist/services/definitions/dagster.d.mts.map +1 -0
- package/dist/services/definitions/dagster.mjs +82 -0
- package/dist/services/definitions/dagster.mjs.map +1 -0
- package/dist/services/definitions/desktop-environment.cjs +2 -3
- package/dist/services/definitions/desktop-environment.cjs.map +1 -1
- package/dist/services/definitions/desktop-environment.mjs +1 -1
- package/dist/services/definitions/dify.cjs +2 -3
- package/dist/services/definitions/dify.cjs.map +1 -1
- package/dist/services/definitions/dify.mjs +1 -1
- package/dist/services/definitions/directus.cjs +115 -0
- package/dist/services/definitions/directus.cjs.map +1 -0
- package/dist/services/definitions/directus.d.cts +7 -0
- package/dist/services/definitions/directus.d.cts.map +1 -0
- package/dist/services/definitions/directus.d.mts +7 -0
- package/dist/services/definitions/directus.d.mts.map +1 -0
- package/dist/services/definitions/directus.mjs +114 -0
- package/dist/services/definitions/directus.mjs.map +1 -0
- package/dist/services/definitions/docsgpt.cjs +2 -3
- package/dist/services/definitions/docsgpt.cjs.map +1 -1
- package/dist/services/definitions/docsgpt.mjs +1 -1
- package/dist/services/definitions/dokploy.cjs +2 -3
- package/dist/services/definitions/dokploy.cjs.map +1 -1
- package/dist/services/definitions/dokploy.mjs +1 -1
- package/dist/services/definitions/dozzle.cjs +2 -3
- package/dist/services/definitions/dozzle.cjs.map +1 -1
- package/dist/services/definitions/dozzle.mjs +1 -1
- package/dist/services/definitions/duplicati.cjs +76 -0
- package/dist/services/definitions/duplicati.cjs.map +1 -0
- package/dist/services/definitions/duplicati.d.cts +7 -0
- package/dist/services/definitions/duplicati.d.cts.map +1 -0
- package/dist/services/definitions/duplicati.d.mts +7 -0
- package/dist/services/definitions/duplicati.d.mts.map +1 -0
- package/dist/services/definitions/duplicati.mjs +75 -0
- package/dist/services/definitions/duplicati.mjs.map +1 -0
- package/dist/services/definitions/excalidraw.cjs +48 -0
- package/dist/services/definitions/excalidraw.cjs.map +1 -0
- package/dist/services/definitions/excalidraw.d.cts +7 -0
- package/dist/services/definitions/excalidraw.d.cts.map +1 -0
- package/dist/services/definitions/excalidraw.d.mts +7 -0
- package/dist/services/definitions/excalidraw.d.mts.map +1 -0
- package/dist/services/definitions/excalidraw.mjs +47 -0
- package/dist/services/definitions/excalidraw.mjs.map +1 -0
- package/dist/services/definitions/ffmpeg.cjs +2 -3
- package/dist/services/definitions/ffmpeg.cjs.map +1 -1
- package/dist/services/definitions/ffmpeg.mjs +1 -1
- package/dist/services/definitions/firecrawl-playwright.cjs +61 -0
- package/dist/services/definitions/firecrawl-playwright.cjs.map +1 -0
- package/dist/services/definitions/firecrawl-playwright.d.cts +7 -0
- package/dist/services/definitions/firecrawl-playwright.d.cts.map +1 -0
- package/dist/services/definitions/firecrawl-playwright.d.mts +7 -0
- package/dist/services/definitions/firecrawl-playwright.d.mts.map +1 -0
- package/dist/services/definitions/firecrawl-playwright.mjs +60 -0
- package/dist/services/definitions/firecrawl-playwright.mjs.map +1 -0
- package/dist/services/definitions/firecrawl.cjs +163 -0
- package/dist/services/definitions/firecrawl.cjs.map +1 -0
- package/dist/services/definitions/firecrawl.d.cts +7 -0
- package/dist/services/definitions/firecrawl.d.cts.map +1 -0
- package/dist/services/definitions/firecrawl.d.mts +7 -0
- package/dist/services/definitions/firecrawl.d.mts.map +1 -0
- package/dist/services/definitions/firecrawl.mjs +162 -0
- package/dist/services/definitions/firecrawl.mjs.map +1 -0
- package/dist/services/definitions/flagsmith.cjs +77 -0
- package/dist/services/definitions/flagsmith.cjs.map +1 -0
- package/dist/services/definitions/flagsmith.d.cts +7 -0
- package/dist/services/definitions/flagsmith.d.cts.map +1 -0
- package/dist/services/definitions/flagsmith.d.mts +7 -0
- package/dist/services/definitions/flagsmith.d.mts.map +1 -0
- package/dist/services/definitions/flagsmith.mjs +76 -0
- package/dist/services/definitions/flagsmith.mjs.map +1 -0
- package/dist/services/definitions/flowise.cjs +2 -3
- package/dist/services/definitions/flowise.cjs.map +1 -1
- package/dist/services/definitions/flowise.mjs +1 -1
- package/dist/services/definitions/fonoster.cjs +66 -0
- package/dist/services/definitions/fonoster.cjs.map +1 -0
- package/dist/services/definitions/fonoster.d.cts +7 -0
- package/dist/services/definitions/fonoster.d.cts.map +1 -0
- package/dist/services/definitions/fonoster.d.mts +7 -0
- package/dist/services/definitions/fonoster.d.mts.map +1 -0
- package/dist/services/definitions/fonoster.mjs +65 -0
- package/dist/services/definitions/fonoster.mjs.map +1 -0
- package/dist/services/definitions/formbricks.cjs +75 -0
- package/dist/services/definitions/formbricks.cjs.map +1 -0
- package/dist/services/definitions/formbricks.d.cts +7 -0
- package/dist/services/definitions/formbricks.d.cts.map +1 -0
- package/dist/services/definitions/formbricks.d.mts +7 -0
- package/dist/services/definitions/formbricks.d.mts.map +1 -0
- package/dist/services/definitions/formbricks.mjs +74 -0
- package/dist/services/definitions/formbricks.mjs.map +1 -0
- package/dist/services/definitions/gemini-cli.cjs +2 -3
- package/dist/services/definitions/gemini-cli.cjs.map +1 -1
- package/dist/services/definitions/gemini-cli.mjs +1 -1
- package/dist/services/definitions/ghost.cjs +2 -3
- package/dist/services/definitions/ghost.cjs.map +1 -1
- package/dist/services/definitions/ghost.mjs +1 -1
- package/dist/services/definitions/gitea.cjs +2 -3
- package/dist/services/definitions/gitea.cjs.map +1 -1
- package/dist/services/definitions/gitea.mjs +1 -1
- package/dist/services/definitions/gotify.cjs +2 -3
- package/dist/services/definitions/gotify.cjs.map +1 -1
- package/dist/services/definitions/gotify.mjs +1 -1
- package/dist/services/definitions/grafana.cjs +2 -3
- package/dist/services/definitions/grafana.cjs.map +1 -1
- package/dist/services/definitions/grafana.mjs +1 -1
- package/dist/services/definitions/headscale.cjs +2 -3
- package/dist/services/definitions/headscale.cjs.map +1 -1
- package/dist/services/definitions/headscale.mjs +1 -1
- package/dist/services/definitions/hedgedoc.cjs +82 -0
- package/dist/services/definitions/hedgedoc.cjs.map +1 -0
- package/dist/services/definitions/hedgedoc.d.cts +7 -0
- package/dist/services/definitions/hedgedoc.d.cts.map +1 -0
- package/dist/services/definitions/hedgedoc.d.mts +7 -0
- package/dist/services/definitions/hedgedoc.d.mts.map +1 -0
- package/dist/services/definitions/hedgedoc.mjs +81 -0
- package/dist/services/definitions/hedgedoc.mjs.map +1 -0
- package/dist/services/definitions/hexstrike.cjs +2 -3
- package/dist/services/definitions/hexstrike.cjs.map +1 -1
- package/dist/services/definitions/hexstrike.mjs +1 -1
- package/dist/services/definitions/heyform.cjs +64 -0
- package/dist/services/definitions/heyform.cjs.map +1 -0
- package/dist/services/definitions/heyform.d.cts +7 -0
- package/dist/services/definitions/heyform.d.cts.map +1 -0
- package/dist/services/definitions/heyform.d.mts +7 -0
- package/dist/services/definitions/heyform.d.mts.map +1 -0
- package/dist/services/definitions/heyform.mjs +63 -0
- package/dist/services/definitions/heyform.mjs.map +1 -0
- package/dist/services/definitions/homeassistant.cjs +2 -3
- package/dist/services/definitions/homeassistant.cjs.map +1 -1
- package/dist/services/definitions/homeassistant.mjs +1 -1
- package/dist/services/definitions/hoppscotch.cjs +76 -0
- package/dist/services/definitions/hoppscotch.cjs.map +1 -0
- package/dist/services/definitions/hoppscotch.d.cts +7 -0
- package/dist/services/definitions/hoppscotch.d.cts.map +1 -0
- package/dist/services/definitions/hoppscotch.d.mts +7 -0
- package/dist/services/definitions/hoppscotch.d.mts.map +1 -0
- package/dist/services/definitions/hoppscotch.mjs +75 -0
- package/dist/services/definitions/hoppscotch.mjs.map +1 -0
- package/dist/services/definitions/immich.cjs +2 -3
- package/dist/services/definitions/immich.cjs.map +1 -1
- package/dist/services/definitions/immich.mjs +1 -1
- package/dist/services/definitions/index.cjs +220 -98
- package/dist/services/definitions/index.cjs.map +1 -1
- package/dist/services/definitions/index.d.cts +42 -1
- package/dist/services/definitions/index.d.cts.map +1 -1
- package/dist/services/definitions/index.d.mts +42 -1
- package/dist/services/definitions/index.d.mts.map +1 -1
- package/dist/services/definitions/index.mjs +85 -4
- package/dist/services/definitions/index.mjs.map +1 -1
- package/dist/services/definitions/infisical.cjs +99 -0
- package/dist/services/definitions/infisical.cjs.map +1 -0
- package/dist/services/definitions/infisical.d.cts +7 -0
- package/dist/services/definitions/infisical.d.cts.map +1 -0
- package/dist/services/definitions/infisical.d.mts +7 -0
- package/dist/services/definitions/infisical.d.mts.map +1 -0
- package/dist/services/definitions/infisical.mjs +98 -0
- package/dist/services/definitions/infisical.mjs.map +1 -0
- package/dist/services/definitions/jellyfin.cjs +2 -3
- package/dist/services/definitions/jellyfin.cjs.map +1 -1
- package/dist/services/definitions/jellyfin.mjs +1 -1
- package/dist/services/definitions/jenkins.cjs +2 -3
- package/dist/services/definitions/jenkins.cjs.map +1 -1
- package/dist/services/definitions/jenkins.mjs +1 -1
- package/dist/services/definitions/keycloak.cjs +122 -0
- package/dist/services/definitions/keycloak.cjs.map +1 -0
- package/dist/services/definitions/keycloak.d.cts +7 -0
- package/dist/services/definitions/keycloak.d.cts.map +1 -0
- package/dist/services/definitions/keycloak.d.mts +7 -0
- package/dist/services/definitions/keycloak.d.mts.map +1 -0
- package/dist/services/definitions/keycloak.mjs +121 -0
- package/dist/services/definitions/keycloak.mjs.map +1 -0
- package/dist/services/definitions/kimi.cjs +2 -3
- package/dist/services/definitions/kimi.cjs.map +1 -1
- package/dist/services/definitions/kimi.mjs +1 -1
- package/dist/services/definitions/kong.cjs +121 -0
- package/dist/services/definitions/kong.cjs.map +1 -0
- package/dist/services/definitions/kong.d.cts +7 -0
- package/dist/services/definitions/kong.d.cts.map +1 -0
- package/dist/services/definitions/kong.d.mts +7 -0
- package/dist/services/definitions/kong.d.mts.map +1 -0
- package/dist/services/definitions/kong.mjs +120 -0
- package/dist/services/definitions/kong.mjs.map +1 -0
- package/dist/services/definitions/lago.cjs +95 -0
- package/dist/services/definitions/lago.cjs.map +1 -0
- package/dist/services/definitions/lago.d.cts +7 -0
- package/dist/services/definitions/lago.d.cts.map +1 -0
- package/dist/services/definitions/lago.d.mts +7 -0
- package/dist/services/definitions/lago.d.mts.map +1 -0
- package/dist/services/definitions/lago.mjs +94 -0
- package/dist/services/definitions/lago.mjs.map +1 -0
- package/dist/services/definitions/langflow.cjs +88 -0
- package/dist/services/definitions/langflow.cjs.map +1 -0
- package/dist/services/definitions/langflow.d.cts +7 -0
- package/dist/services/definitions/langflow.d.cts.map +1 -0
- package/dist/services/definitions/langflow.d.mts +7 -0
- package/dist/services/definitions/langflow.d.mts.map +1 -0
- package/dist/services/definitions/langflow.mjs +87 -0
- package/dist/services/definitions/langflow.mjs.map +1 -0
- package/dist/services/definitions/langfuse.cjs +79 -0
- package/dist/services/definitions/langfuse.cjs.map +1 -0
- package/dist/services/definitions/langfuse.d.cts +7 -0
- package/dist/services/definitions/langfuse.d.cts.map +1 -0
- package/dist/services/definitions/langfuse.d.mts +7 -0
- package/dist/services/definitions/langfuse.d.mts.map +1 -0
- package/dist/services/definitions/langfuse.mjs +78 -0
- package/dist/services/definitions/langfuse.mjs.map +1 -0
- package/dist/services/definitions/lasuite-meet-agents.cjs +2 -3
- package/dist/services/definitions/lasuite-meet-agents.cjs.map +1 -1
- package/dist/services/definitions/lasuite-meet-agents.mjs +1 -1
- package/dist/services/definitions/lasuite-meet-backend.cjs +2 -3
- package/dist/services/definitions/lasuite-meet-backend.cjs.map +1 -1
- package/dist/services/definitions/lasuite-meet-backend.mjs +1 -1
- package/dist/services/definitions/lasuite-meet-frontend.cjs +2 -3
- package/dist/services/definitions/lasuite-meet-frontend.cjs.map +1 -1
- package/dist/services/definitions/lasuite-meet-frontend.mjs +1 -1
- package/dist/services/definitions/librechat.cjs +2 -3
- package/dist/services/definitions/librechat.cjs.map +1 -1
- package/dist/services/definitions/librechat.mjs +1 -1
- package/dist/services/definitions/lightpanda.cjs +2 -3
- package/dist/services/definitions/lightpanda.cjs.map +1 -1
- package/dist/services/definitions/lightpanda.mjs +1 -1
- package/dist/services/definitions/listmonk.cjs +118 -0
- package/dist/services/definitions/listmonk.cjs.map +1 -0
- package/dist/services/definitions/listmonk.d.cts +7 -0
- package/dist/services/definitions/listmonk.d.cts.map +1 -0
- package/dist/services/definitions/listmonk.d.mts +7 -0
- package/dist/services/definitions/listmonk.d.mts.map +1 -0
- package/dist/services/definitions/listmonk.mjs +117 -0
- package/dist/services/definitions/listmonk.mjs.map +1 -0
- package/dist/services/definitions/litellm.cjs +2 -3
- package/dist/services/definitions/litellm.cjs.map +1 -1
- package/dist/services/definitions/litellm.mjs +1 -1
- package/dist/services/definitions/livekit.cjs +2 -3
- package/dist/services/definitions/livekit.cjs.map +1 -1
- package/dist/services/definitions/livekit.mjs +1 -1
- package/dist/services/definitions/loki.cjs +2 -3
- package/dist/services/definitions/loki.cjs.map +1 -1
- package/dist/services/definitions/loki.mjs +1 -1
- package/dist/services/definitions/mariadb.cjs +81 -0
- package/dist/services/definitions/mariadb.cjs.map +1 -0
- package/dist/services/definitions/mariadb.d.cts +7 -0
- package/dist/services/definitions/mariadb.d.cts.map +1 -0
- package/dist/services/definitions/mariadb.d.mts +7 -0
- package/dist/services/definitions/mariadb.d.mts.map +1 -0
- package/dist/services/definitions/mariadb.mjs +80 -0
- package/dist/services/definitions/mariadb.mjs.map +1 -0
- package/dist/services/definitions/matomo.cjs +2 -3
- package/dist/services/definitions/matomo.cjs.map +1 -1
- package/dist/services/definitions/matomo.mjs +1 -1
- package/dist/services/definitions/matrix-synapse.cjs +2 -3
- package/dist/services/definitions/matrix-synapse.cjs.map +1 -1
- package/dist/services/definitions/matrix-synapse.mjs +1 -1
- package/dist/services/definitions/mattermost.cjs +2 -3
- package/dist/services/definitions/mattermost.cjs.map +1 -1
- package/dist/services/definitions/mattermost.mjs +1 -1
- package/dist/services/definitions/mautic.cjs +83 -0
- package/dist/services/definitions/mautic.cjs.map +1 -0
- package/dist/services/definitions/mautic.d.cts +7 -0
- package/dist/services/definitions/mautic.d.cts.map +1 -0
- package/dist/services/definitions/mautic.d.mts +7 -0
- package/dist/services/definitions/mautic.d.mts.map +1 -0
- package/dist/services/definitions/mautic.mjs +82 -0
- package/dist/services/definitions/mautic.mjs.map +1 -0
- package/dist/services/definitions/medusa.cjs +83 -0
- package/dist/services/definitions/medusa.cjs.map +1 -0
- package/dist/services/definitions/medusa.d.cts +7 -0
- package/dist/services/definitions/medusa.d.cts.map +1 -0
- package/dist/services/definitions/medusa.d.mts +7 -0
- package/dist/services/definitions/medusa.d.mts.map +1 -0
- package/dist/services/definitions/medusa.mjs +82 -0
- package/dist/services/definitions/medusa.mjs.map +1 -0
- package/dist/services/definitions/meilisearch.cjs +2 -3
- package/dist/services/definitions/meilisearch.cjs.map +1 -1
- package/dist/services/definitions/meilisearch.mjs +1 -1
- package/dist/services/definitions/milvus.cjs +2 -3
- package/dist/services/definitions/milvus.cjs.map +1 -1
- package/dist/services/definitions/milvus.mjs +1 -1
- package/dist/services/definitions/minio.cjs +2 -3
- package/dist/services/definitions/minio.cjs.map +1 -1
- package/dist/services/definitions/minio.mjs +1 -1
- package/dist/services/definitions/mission-control.cjs +2 -3
- package/dist/services/definitions/mission-control.cjs.map +1 -1
- package/dist/services/definitions/mission-control.mjs +1 -1
- package/dist/services/definitions/mixpost.cjs +2 -3
- package/dist/services/definitions/mixpost.cjs.map +1 -1
- package/dist/services/definitions/mixpost.mjs +1 -1
- package/dist/services/definitions/motion-canvas.cjs +2 -3
- package/dist/services/definitions/motion-canvas.cjs.map +1 -1
- package/dist/services/definitions/motion-canvas.mjs +1 -1
- package/dist/services/definitions/mysql.cjs +81 -0
- package/dist/services/definitions/mysql.cjs.map +1 -0
- package/dist/services/definitions/mysql.d.cts +7 -0
- package/dist/services/definitions/mysql.d.cts.map +1 -0
- package/dist/services/definitions/mysql.d.mts +7 -0
- package/dist/services/definitions/mysql.d.mts.map +1 -0
- package/dist/services/definitions/mysql.mjs +80 -0
- package/dist/services/definitions/mysql.mjs.map +1 -0
- package/dist/services/definitions/n8n.cjs +2 -3
- package/dist/services/definitions/n8n.cjs.map +1 -1
- package/dist/services/definitions/n8n.mjs +1 -1
- package/dist/services/definitions/neo4j.cjs +2 -3
- package/dist/services/definitions/neo4j.cjs.map +1 -1
- package/dist/services/definitions/neo4j.mjs +1 -1
- package/dist/services/definitions/nextcloud.cjs +2 -3
- package/dist/services/definitions/nextcloud.cjs.map +1 -1
- package/dist/services/definitions/nextcloud.mjs +1 -1
- package/dist/services/definitions/nocodb.cjs +2 -3
- package/dist/services/definitions/nocodb.cjs.map +1 -1
- package/dist/services/definitions/nocodb.mjs +1 -1
- package/dist/services/definitions/ntfy.cjs +2 -3
- package/dist/services/definitions/ntfy.cjs.map +1 -1
- package/dist/services/definitions/ntfy.mjs +1 -1
- package/dist/services/definitions/ollama.cjs +2 -3
- package/dist/services/definitions/ollama.cjs.map +1 -1
- package/dist/services/definitions/ollama.mjs +1 -1
- package/dist/services/definitions/open-webui.cjs +2 -3
- package/dist/services/definitions/open-webui.cjs.map +1 -1
- package/dist/services/definitions/open-webui.mjs +1 -1
- package/dist/services/definitions/opencode.cjs +2 -3
- package/dist/services/definitions/opencode.cjs.map +1 -1
- package/dist/services/definitions/opencode.mjs +1 -1
- package/dist/services/definitions/openhands.cjs +58 -0
- package/dist/services/definitions/openhands.cjs.map +1 -0
- package/dist/services/definitions/openhands.d.cts +7 -0
- package/dist/services/definitions/openhands.d.cts.map +1 -0
- package/dist/services/definitions/openhands.d.mts +7 -0
- package/dist/services/definitions/openhands.d.mts.map +1 -0
- package/dist/services/definitions/openhands.mjs +57 -0
- package/dist/services/definitions/openhands.mjs.map +1 -0
- package/dist/services/definitions/openpanel.cjs +2 -3
- package/dist/services/definitions/openpanel.cjs.map +1 -1
- package/dist/services/definitions/openpanel.mjs +1 -1
- package/dist/services/definitions/opensearch.cjs +94 -0
- package/dist/services/definitions/opensearch.cjs.map +1 -0
- package/dist/services/definitions/opensearch.d.cts +7 -0
- package/dist/services/definitions/opensearch.d.cts.map +1 -0
- package/dist/services/definitions/opensearch.d.mts +7 -0
- package/dist/services/definitions/opensearch.d.mts.map +1 -0
- package/dist/services/definitions/opensearch.mjs +93 -0
- package/dist/services/definitions/opensearch.mjs.map +1 -0
- package/dist/services/definitions/outline.cjs +2 -3
- package/dist/services/definitions/outline.cjs.map +1 -1
- package/dist/services/definitions/outline.mjs +1 -1
- package/dist/services/definitions/paperless-ngx.cjs +2 -3
- package/dist/services/definitions/paperless-ngx.cjs.map +1 -1
- package/dist/services/definitions/paperless-ngx.mjs +1 -1
- package/dist/services/definitions/pentagi.cjs +2 -3
- package/dist/services/definitions/pentagi.cjs.map +1 -1
- package/dist/services/definitions/pentagi.mjs +1 -1
- package/dist/services/definitions/pentestagent.cjs +2 -3
- package/dist/services/definitions/pentestagent.cjs.map +1 -1
- package/dist/services/definitions/pentestagent.mjs +1 -1
- package/dist/services/definitions/playwright-server.cjs +2 -3
- package/dist/services/definitions/playwright-server.cjs.map +1 -1
- package/dist/services/definitions/playwright-server.mjs +1 -1
- package/dist/services/definitions/pocketbase.cjs +61 -0
- package/dist/services/definitions/pocketbase.cjs.map +1 -0
- package/dist/services/definitions/pocketbase.d.cts +7 -0
- package/dist/services/definitions/pocketbase.d.cts.map +1 -0
- package/dist/services/definitions/pocketbase.d.mts +7 -0
- package/dist/services/definitions/pocketbase.d.mts.map +1 -0
- package/dist/services/definitions/pocketbase.mjs +60 -0
- package/dist/services/definitions/pocketbase.mjs.map +1 -0
- package/dist/services/definitions/portainer.cjs +2 -3
- package/dist/services/definitions/portainer.cjs.map +1 -1
- package/dist/services/definitions/portainer.mjs +1 -1
- package/dist/services/definitions/postgresql.cjs +2 -3
- package/dist/services/definitions/postgresql.cjs.map +1 -1
- package/dist/services/definitions/postgresql.mjs +1 -1
- package/dist/services/definitions/postiz.cjs +2 -3
- package/dist/services/definitions/postiz.cjs.map +1 -1
- package/dist/services/definitions/postiz.mjs +1 -1
- package/dist/services/definitions/prometheus.cjs +2 -3
- package/dist/services/definitions/prometheus.cjs.map +1 -1
- package/dist/services/definitions/prometheus.mjs +1 -1
- package/dist/services/definitions/qdrant.cjs +2 -3
- package/dist/services/definitions/qdrant.cjs.map +1 -1
- package/dist/services/definitions/qdrant.mjs +1 -1
- package/dist/services/definitions/rabbitmq.cjs +80 -0
- package/dist/services/definitions/rabbitmq.cjs.map +1 -0
- package/dist/services/definitions/rabbitmq.d.cts +7 -0
- package/dist/services/definitions/rabbitmq.d.cts.map +1 -0
- package/dist/services/definitions/rabbitmq.d.mts +7 -0
- package/dist/services/definitions/rabbitmq.d.mts.map +1 -0
- package/dist/services/definitions/rabbitmq.mjs +79 -0
- package/dist/services/definitions/rabbitmq.mjs.map +1 -0
- package/dist/services/definitions/ragflow.cjs +192 -0
- package/dist/services/definitions/ragflow.cjs.map +1 -0
- package/dist/services/definitions/ragflow.d.cts +7 -0
- package/dist/services/definitions/ragflow.d.cts.map +1 -0
- package/dist/services/definitions/ragflow.d.mts +7 -0
- package/dist/services/definitions/ragflow.d.mts.map +1 -0
- package/dist/services/definitions/ragflow.mjs +191 -0
- package/dist/services/definitions/ragflow.mjs.map +1 -0
- package/dist/services/definitions/redis.cjs +2 -3
- package/dist/services/definitions/redis.cjs.map +1 -1
- package/dist/services/definitions/redis.mjs +1 -1
- package/dist/services/definitions/remotion.cjs +2 -3
- package/dist/services/definitions/remotion.cjs.map +1 -1
- package/dist/services/definitions/remotion.mjs +1 -1
- package/dist/services/definitions/restic.cjs +58 -0
- package/dist/services/definitions/restic.cjs.map +1 -0
- package/dist/services/definitions/restic.d.cts +7 -0
- package/dist/services/definitions/restic.d.cts.map +1 -0
- package/dist/services/definitions/restic.d.mts +7 -0
- package/dist/services/definitions/restic.d.mts.map +1 -0
- package/dist/services/definitions/restic.mjs +57 -0
- package/dist/services/definitions/restic.mjs.map +1 -0
- package/dist/services/definitions/rocketchat.cjs +2 -3
- package/dist/services/definitions/rocketchat.cjs.map +1 -1
- package/dist/services/definitions/rocketchat.mjs +1 -1
- package/dist/services/definitions/saleor.cjs +76 -0
- package/dist/services/definitions/saleor.cjs.map +1 -0
- package/dist/services/definitions/saleor.d.cts +7 -0
- package/dist/services/definitions/saleor.d.cts.map +1 -0
- package/dist/services/definitions/saleor.d.mts +7 -0
- package/dist/services/definitions/saleor.d.mts.map +1 -0
- package/dist/services/definitions/saleor.mjs +75 -0
- package/dist/services/definitions/saleor.mjs.map +1 -0
- package/dist/services/definitions/scrapling.cjs +2 -3
- package/dist/services/definitions/scrapling.cjs.map +1 -1
- package/dist/services/definitions/scrapling.mjs +1 -1
- package/dist/services/definitions/searxng.cjs +2 -3
- package/dist/services/definitions/searxng.cjs.map +1 -1
- package/dist/services/definitions/searxng.mjs +1 -1
- package/dist/services/definitions/signoz.cjs +2 -3
- package/dist/services/definitions/signoz.cjs.map +1 -1
- package/dist/services/definitions/signoz.mjs +1 -1
- package/dist/services/definitions/solidityguard.cjs +2 -3
- package/dist/services/definitions/solidityguard.cjs.map +1 -1
- package/dist/services/definitions/solidityguard.mjs +1 -1
- package/dist/services/definitions/stable-diffusion.cjs +2 -3
- package/dist/services/definitions/stable-diffusion.cjs.map +1 -1
- package/dist/services/definitions/stable-diffusion.mjs +1 -1
- package/dist/services/definitions/steel-browser.cjs +2 -3
- package/dist/services/definitions/steel-browser.cjs.map +1 -1
- package/dist/services/definitions/steel-browser.mjs +1 -1
- package/dist/services/definitions/stirling-pdf.cjs +74 -0
- package/dist/services/definitions/stirling-pdf.cjs.map +1 -0
- package/dist/services/definitions/stirling-pdf.d.cts +7 -0
- package/dist/services/definitions/stirling-pdf.d.cts.map +1 -0
- package/dist/services/definitions/stirling-pdf.d.mts +7 -0
- package/dist/services/definitions/stirling-pdf.d.mts.map +1 -0
- package/dist/services/definitions/stirling-pdf.mjs +73 -0
- package/dist/services/definitions/stirling-pdf.mjs.map +1 -0
- package/dist/services/definitions/strapi.cjs +124 -0
- package/dist/services/definitions/strapi.cjs.map +1 -0
- package/dist/services/definitions/strapi.d.cts +7 -0
- package/dist/services/definitions/strapi.d.cts.map +1 -0
- package/dist/services/definitions/strapi.d.mts +7 -0
- package/dist/services/definitions/strapi.d.mts.map +1 -0
- package/dist/services/definitions/strapi.mjs +123 -0
- package/dist/services/definitions/strapi.mjs.map +1 -0
- package/dist/services/definitions/stream-gateway.cjs +2 -3
- package/dist/services/definitions/stream-gateway.cjs.map +1 -1
- package/dist/services/definitions/stream-gateway.mjs +1 -1
- package/dist/services/definitions/supabase.cjs +2 -3
- package/dist/services/definitions/supabase.cjs.map +1 -1
- package/dist/services/definitions/supabase.mjs +1 -1
- package/dist/services/definitions/tailscale.cjs +2 -3
- package/dist/services/definitions/tailscale.cjs.map +1 -1
- package/dist/services/definitions/tailscale.mjs +1 -1
- package/dist/services/definitions/temporal.cjs +2 -3
- package/dist/services/definitions/temporal.cjs.map +1 -1
- package/dist/services/definitions/temporal.mjs +1 -1
- package/dist/services/definitions/traefik.cjs +2 -3
- package/dist/services/definitions/traefik.cjs.map +1 -1
- package/dist/services/definitions/traefik.mjs +1 -1
- package/dist/services/definitions/twenty.cjs +83 -0
- package/dist/services/definitions/twenty.cjs.map +1 -0
- package/dist/services/definitions/twenty.d.cts +7 -0
- package/dist/services/definitions/twenty.d.cts.map +1 -0
- package/dist/services/definitions/twenty.d.mts +7 -0
- package/dist/services/definitions/twenty.d.mts.map +1 -0
- package/dist/services/definitions/twenty.mjs +82 -0
- package/dist/services/definitions/twenty.mjs.map +1 -0
- package/dist/services/definitions/umami.cjs +2 -3
- package/dist/services/definitions/umami.cjs.map +1 -1
- package/dist/services/definitions/umami.mjs +1 -1
- package/dist/services/definitions/uptime-kuma.cjs +2 -3
- package/dist/services/definitions/uptime-kuma.cjs.map +1 -1
- package/dist/services/definitions/uptime-kuma.mjs +1 -1
- package/dist/services/definitions/usesend.cjs +2 -3
- package/dist/services/definitions/usesend.cjs.map +1 -1
- package/dist/services/definitions/usesend.mjs +1 -1
- package/dist/services/definitions/valkey.cjs +2 -3
- package/dist/services/definitions/valkey.cjs.map +1 -1
- package/dist/services/definitions/valkey.mjs +1 -1
- package/dist/services/definitions/vault.cjs +71 -0
- package/dist/services/definitions/vault.cjs.map +1 -0
- package/dist/services/definitions/vault.d.cts +7 -0
- package/dist/services/definitions/vault.d.cts.map +1 -0
- package/dist/services/definitions/vault.d.mts +7 -0
- package/dist/services/definitions/vault.d.mts.map +1 -0
- package/dist/services/definitions/vault.mjs +70 -0
- package/dist/services/definitions/vault.mjs.map +1 -0
- package/dist/services/definitions/vaultwarden.cjs +2 -3
- package/dist/services/definitions/vaultwarden.cjs.map +1 -1
- package/dist/services/definitions/vaultwarden.mjs +1 -1
- package/dist/services/definitions/watchtower.cjs +2 -3
- package/dist/services/definitions/watchtower.cjs.map +1 -1
- package/dist/services/definitions/watchtower.mjs +1 -1
- package/dist/services/definitions/weaviate.cjs +2 -3
- package/dist/services/definitions/weaviate.cjs.map +1 -1
- package/dist/services/definitions/weaviate.mjs +1 -1
- package/dist/services/definitions/whisper.cjs +2 -3
- package/dist/services/definitions/whisper.cjs.map +1 -1
- package/dist/services/definitions/whisper.mjs +1 -1
- package/dist/services/definitions/xyops.cjs +2 -3
- package/dist/services/definitions/xyops.cjs.map +1 -1
- package/dist/services/definitions/xyops.mjs +1 -1
- package/dist/services/registry.cjs +3 -4
- package/dist/services/registry.cjs.map +1 -1
- package/dist/services/registry.d.mts.map +1 -1
- package/dist/services/registry.mjs +1 -2
- package/dist/services/registry.mjs.map +1 -1
- package/dist/services/registry.test.cjs +3 -4
- package/dist/services/registry.test.cjs.map +1 -1
- package/dist/services/registry.test.mjs +3 -4
- package/dist/services/registry.test.mjs.map +1 -1
- package/dist/{manifest-4uLbISXV.cjs → skill-manifest--IgY9REK.cjs} +40 -10
- package/dist/skill-manifest--IgY9REK.cjs.map +1 -0
- package/dist/{manifest-B8UDsVlR.mjs → skill-manifest-BVUXU0__.mjs} +24 -5
- package/dist/skill-manifest-BVUXU0__.mjs.map +1 -0
- package/dist/skills/registry.cjs +262 -3
- package/dist/skills/registry.cjs.map +1 -1
- package/dist/skills/registry.d.cts.map +1 -1
- package/dist/skills/registry.d.mts.map +1 -1
- package/dist/skills/registry.mjs +261 -1
- package/dist/skills/registry.mjs.map +1 -1
- package/dist/skills/skill-manifest.cjs +5 -23
- package/dist/skills/skill-manifest.mjs +1 -19
- package/dist/skills-BlzpHmpH.cjs +620 -0
- package/dist/skills-BlzpHmpH.cjs.map +1 -0
- package/dist/types-CR83OJiq.d.cts +243 -0
- package/dist/types-CR83OJiq.d.cts.map +1 -0
- package/dist/types-zYjGTuyn.d.mts +243 -0
- package/dist/types-zYjGTuyn.d.mts.map +1 -0
- package/dist/types.cjs +79 -3
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +1 -1
- package/dist/types.d.mts +1 -1
- package/dist/types.mjs +78 -1
- package/dist/types.mjs.map +1 -1
- package/dist/validator.cjs +3 -4
- package/dist/validator.cjs.map +1 -1
- package/dist/validator.mjs +1 -2
- package/dist/validator.mjs.map +1 -1
- package/dist/validator.test.cjs +5 -6
- package/dist/validator.test.cjs.map +1 -1
- package/dist/validator.test.mjs +3 -4
- package/dist/validator.test.mjs.map +1 -1
- package/dist/version-manager.cjs +3 -4
- package/dist/version-manager.cjs.map +1 -1
- package/dist/version-manager.d.mts.map +1 -1
- package/dist/version-manager.mjs +1 -2
- package/dist/version-manager.mjs.map +1 -1
- package/dist/version-manager.test.cjs +5 -6
- package/dist/version-manager.test.cjs.map +1 -1
- package/dist/version-manager.test.mjs +3 -4
- package/dist/version-manager.test.mjs.map +1 -1
- package/dist/{vi.2VT5v0um-BmRMvymT.cjs → vi.2VT5v0um-CRqXre87.cjs} +82 -202
- package/dist/{vi.2VT5v0um-CFyDIn0m.mjs.map → vi.2VT5v0um-CRqXre87.cjs.map} +1 -1
- package/dist/{vi.2VT5v0um-CFyDIn0m.mjs → vi.2VT5v0um-DvC3SVNc.mjs} +67 -186
- package/dist/{vi.2VT5v0um-BmRMvymT.cjs.map → vi.2VT5v0um-DvC3SVNc.mjs.map} +1 -1
- package/package.json +3 -3
- package/src/generators/postgres-init.ts +6 -0
- package/src/presets/presets.test.ts +4 -0
- package/src/presets/registry.ts +88 -0
- package/src/schema.ts +11 -0
- package/src/services/definitions/airbyte.ts +75 -0
- package/src/services/definitions/airflow.ts +109 -0
- package/src/services/definitions/appwrite.ts +181 -0
- package/src/services/definitions/authelia.ts +145 -0
- package/src/services/definitions/axolotl.ts +65 -0
- package/src/services/definitions/chatwoot-worker.ts +93 -0
- package/src/services/definitions/chatwoot.ts +106 -0
- package/src/services/definitions/dagster.ts +82 -0
- package/src/services/definitions/directus.ts +115 -0
- package/src/services/definitions/duplicati.ts +77 -0
- package/src/services/definitions/excalidraw.ts +46 -0
- package/src/services/definitions/firecrawl-playwright.ts +62 -0
- package/src/services/definitions/firecrawl.ts +146 -0
- package/src/services/definitions/flagsmith.ts +76 -0
- package/src/services/definitions/fonoster.ts +67 -0
- package/src/services/definitions/formbricks.ts +75 -0
- package/src/services/definitions/hedgedoc.ts +81 -0
- package/src/services/definitions/heyform.ts +67 -0
- package/src/services/definitions/hoppscotch.ts +74 -0
- package/src/services/definitions/index.ts +124 -0
- package/src/services/definitions/infisical.ts +97 -0
- package/src/services/definitions/keycloak.ts +119 -0
- package/src/services/definitions/kong.ts +116 -0
- package/src/services/definitions/lago.ts +95 -0
- package/src/services/definitions/langflow.ts +82 -0
- package/src/services/definitions/langfuse.ts +76 -0
- package/src/services/definitions/listmonk.ts +118 -0
- package/src/services/definitions/mariadb.ts +82 -0
- package/src/services/definitions/mautic.ts +82 -0
- package/src/services/definitions/medusa.ts +82 -0
- package/src/services/definitions/mysql.ts +82 -0
- package/src/services/definitions/openhands.ts +60 -0
- package/src/services/definitions/opensearch.ts +95 -0
- package/src/services/definitions/pocketbase.ts +62 -0
- package/src/services/definitions/rabbitmq.ts +81 -0
- package/src/services/definitions/ragflow.ts +175 -0
- package/src/services/definitions/restic.ts +60 -0
- package/src/services/definitions/saleor.ts +75 -0
- package/src/services/definitions/stirling-pdf.ts +73 -0
- package/src/services/definitions/strapi.ts +124 -0
- package/src/services/definitions/twenty.ts +82 -0
- package/src/services/definitions/vault.ts +74 -0
- package/src/skills/manifest.json +8 -0
- package/src/skills/registry.ts +119 -0
- package/src/types.ts +91 -2
- package/dist/chunk-C0xms8kb.cjs +0 -34
- package/dist/deployers/coolify.d.cts.map +0 -1
- package/dist/deployers/coolify.d.mts.map +0 -1
- package/dist/deployers/dokploy.d.cts.map +0 -1
- package/dist/deployers/dokploy.d.mts.map +0 -1
- package/dist/deployers/types.d.cts.map +0 -1
- package/dist/deployers/types.d.mts.map +0 -1
- package/dist/generators/skills.cjs.map +0 -1
- package/dist/manifest-4uLbISXV.cjs.map +0 -1
- package/dist/manifest-B8UDsVlR.mjs.map +0 -1
- package/dist/schema.d.cts.map +0 -1
- package/dist/schema.d.mts.map +0 -1
- package/dist/skills/skill-manifest.cjs.map +0 -1
- package/dist/skills/skill-manifest.mjs.map +0 -1
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value:
|
|
2
|
-
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
2
|
//#region src/generators/n8n-workflows.ts
|
|
4
3
|
/**
|
|
5
4
|
* Generates n8n workflow template files.
|
|
@@ -71,7 +70,7 @@ return [{ json: { received: true, timestamp: new Date().toISOString(), payload }
|
|
|
71
70
|
tags: [{ name: "openclaw" }]
|
|
72
71
|
};
|
|
73
72
|
}
|
|
74
|
-
|
|
75
73
|
//#endregion
|
|
76
74
|
exports.generateN8nWorkflows = generateN8nWorkflows;
|
|
75
|
+
|
|
77
76
|
//# sourceMappingURL=n8n-workflows.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"n8n-workflows.cjs","names":[],"sources":["../../src/generators/n8n-workflows.ts"],"sourcesContent":["import type { ResolverOutput } from \"../types.js\";\n\n/**\n * Generates n8n workflow template files.\n * Returns a map of file paths to JSON content strings.\n */\nexport function generateN8nWorkflows(resolved: ResolverOutput): Record<string, string> {\n\tconst files: Record<string, string> = {};\n\n\t// Only generate if n8n is in the stack\n\tconst hasN8n = resolved.services.some((s) => s.definition.id === \"n8n\");\n\tif (!hasN8n) return files;\n\n\tfiles[\"n8n/workflows/openclaw-webhook-handler.json\"] = JSON.stringify(\n\t\tcreateWebhookHandlerWorkflow(resolved),\n\t\tnull,\n\t\t2,\n\t);\n\n\treturn files;\n}\n\nfunction createWebhookHandlerWorkflow(resolved: ResolverOutput) {\n\t// Create a basic n8n workflow JSON that:\n\t// 1. Has a Webhook trigger node listening on /openclaw-webhook\n\t// 2. Has a Function node that processes the payload\n\t// 3. Outputs to a Respond to Webhook node\n\tconst serviceNames = resolved.services.map((s) => s.definition.name).join(\", \");\n\n\treturn {\n\t\tname: \"OpenClaw Webhook Handler\",\n\t\tnodes: [\n\t\t\t{\n\t\t\t\tparameters: {\n\t\t\t\t\thttpMethod: \"POST\",\n\t\t\t\t\tpath: \"openclaw-webhook\",\n\t\t\t\t\tresponseMode: \"responseNode\",\n\t\t\t\t\toptions: {},\n\t\t\t\t},\n\t\t\t\tid: \"webhook-trigger\",\n\t\t\t\tname: \"Webhook\",\n\t\t\t\ttype: \"n8n-nodes-base.webhook\",\n\t\t\t\ttypeVersion: 2,\n\t\t\t\tposition: [250, 300],\n\t\t\t},\n\t\t\t{\n\t\t\t\tparameters: {\n\t\t\t\t\tjsCode:\n\t\t\t\t\t\t\"// Process OpenClaw webhook payload\\n\" +\n\t\t\t\t\t\t\"const payload = $input.all()[0].json;\\n\" +\n\t\t\t\t\t\t\"\\n\" +\n\t\t\t\t\t\t\"// Available services in this stack:\\n\" +\n\t\t\t\t\t\t`// ${serviceNames}\\n` +\n\t\t\t\t\t\t\"\\n\" +\n\t\t\t\t\t\t\"return [{ json: { received: true, timestamp: new Date().toISOString(), payload } }];\",\n\t\t\t\t},\n\t\t\t\tid: \"process-payload\",\n\t\t\t\tname: \"Process Payload\",\n\t\t\t\ttype: \"n8n-nodes-base.code\",\n\t\t\t\ttypeVersion: 2,\n\t\t\t\tposition: [470, 300],\n\t\t\t},\n\t\t\t{\n\t\t\t\tparameters: {\n\t\t\t\t\trespondWith: \"json\",\n\t\t\t\t\tresponseBody: \"={{ JSON.stringify($json) }}\",\n\t\t\t\t\toptions: {},\n\t\t\t\t},\n\t\t\t\tid: \"respond\",\n\t\t\t\tname: \"Respond to Webhook\",\n\t\t\t\ttype: \"n8n-nodes-base.respondToWebhook\",\n\t\t\t\ttypeVersion: 1,\n\t\t\t\tposition: [690, 300],\n\t\t\t},\n\t\t],\n\t\tconnections: {\n\t\t\tWebhook: {\n\t\t\t\tmain: [[{ node: \"Process Payload\", type: \"main\", index: 0 }]],\n\t\t\t},\n\t\t\t\"Process Payload\": {\n\t\t\t\tmain: [[{ node: \"Respond to Webhook\", type: \"main\", index: 0 }]],\n\t\t\t},\n\t\t},\n\t\tactive: false,\n\t\tsettings: { executionOrder: \"v1\" },\n\t\ttags: [{ name: \"openclaw\" }],\n\t};\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"n8n-workflows.cjs","names":[],"sources":["../../src/generators/n8n-workflows.ts"],"sourcesContent":["import type { ResolverOutput } from \"../types.js\";\n\n/**\n * Generates n8n workflow template files.\n * Returns a map of file paths to JSON content strings.\n */\nexport function generateN8nWorkflows(resolved: ResolverOutput): Record<string, string> {\n\tconst files: Record<string, string> = {};\n\n\t// Only generate if n8n is in the stack\n\tconst hasN8n = resolved.services.some((s) => s.definition.id === \"n8n\");\n\tif (!hasN8n) return files;\n\n\tfiles[\"n8n/workflows/openclaw-webhook-handler.json\"] = JSON.stringify(\n\t\tcreateWebhookHandlerWorkflow(resolved),\n\t\tnull,\n\t\t2,\n\t);\n\n\treturn files;\n}\n\nfunction createWebhookHandlerWorkflow(resolved: ResolverOutput) {\n\t// Create a basic n8n workflow JSON that:\n\t// 1. Has a Webhook trigger node listening on /openclaw-webhook\n\t// 2. Has a Function node that processes the payload\n\t// 3. Outputs to a Respond to Webhook node\n\tconst serviceNames = resolved.services.map((s) => s.definition.name).join(\", \");\n\n\treturn {\n\t\tname: \"OpenClaw Webhook Handler\",\n\t\tnodes: [\n\t\t\t{\n\t\t\t\tparameters: {\n\t\t\t\t\thttpMethod: \"POST\",\n\t\t\t\t\tpath: \"openclaw-webhook\",\n\t\t\t\t\tresponseMode: \"responseNode\",\n\t\t\t\t\toptions: {},\n\t\t\t\t},\n\t\t\t\tid: \"webhook-trigger\",\n\t\t\t\tname: \"Webhook\",\n\t\t\t\ttype: \"n8n-nodes-base.webhook\",\n\t\t\t\ttypeVersion: 2,\n\t\t\t\tposition: [250, 300],\n\t\t\t},\n\t\t\t{\n\t\t\t\tparameters: {\n\t\t\t\t\tjsCode:\n\t\t\t\t\t\t\"// Process OpenClaw webhook payload\\n\" +\n\t\t\t\t\t\t\"const payload = $input.all()[0].json;\\n\" +\n\t\t\t\t\t\t\"\\n\" +\n\t\t\t\t\t\t\"// Available services in this stack:\\n\" +\n\t\t\t\t\t\t`// ${serviceNames}\\n` +\n\t\t\t\t\t\t\"\\n\" +\n\t\t\t\t\t\t\"return [{ json: { received: true, timestamp: new Date().toISOString(), payload } }];\",\n\t\t\t\t},\n\t\t\t\tid: \"process-payload\",\n\t\t\t\tname: \"Process Payload\",\n\t\t\t\ttype: \"n8n-nodes-base.code\",\n\t\t\t\ttypeVersion: 2,\n\t\t\t\tposition: [470, 300],\n\t\t\t},\n\t\t\t{\n\t\t\t\tparameters: {\n\t\t\t\t\trespondWith: \"json\",\n\t\t\t\t\tresponseBody: \"={{ JSON.stringify($json) }}\",\n\t\t\t\t\toptions: {},\n\t\t\t\t},\n\t\t\t\tid: \"respond\",\n\t\t\t\tname: \"Respond to Webhook\",\n\t\t\t\ttype: \"n8n-nodes-base.respondToWebhook\",\n\t\t\t\ttypeVersion: 1,\n\t\t\t\tposition: [690, 300],\n\t\t\t},\n\t\t],\n\t\tconnections: {\n\t\t\tWebhook: {\n\t\t\t\tmain: [[{ node: \"Process Payload\", type: \"main\", index: 0 }]],\n\t\t\t},\n\t\t\t\"Process Payload\": {\n\t\t\t\tmain: [[{ node: \"Respond to Webhook\", type: \"main\", index: 0 }]],\n\t\t\t},\n\t\t},\n\t\tactive: false,\n\t\tsettings: { executionOrder: \"v1\" },\n\t\ttags: [{ name: \"openclaw\" }],\n\t};\n}\n"],"mappings":";;;;;;AAMA,SAAgB,qBAAqB,UAAkD;CACtF,MAAM,QAAgC,EAAE;AAIxC,KAAI,CADW,SAAS,SAAS,MAAM,MAAM,EAAE,WAAW,OAAO,MAAM,CAC1D,QAAO;AAEpB,OAAM,iDAAiD,KAAK,UAC3D,6BAA6B,SAAS,EACtC,MACA,EACA;AAED,QAAO;;AAGR,SAAS,6BAA6B,UAA0B;AAO/D,QAAO;EACN,MAAM;EACN,OAAO;GACN;IACC,YAAY;KACX,YAAY;KACZ,MAAM;KACN,cAAc;KACd,SAAS,EAAE;KACX;IACD,IAAI;IACJ,MAAM;IACN,MAAM;IACN,aAAa;IACb,UAAU,CAAC,KAAK,IAAI;IACpB;GACD;IACC,YAAY,EACX,QACC;;;;KArBgB,SAAS,SAAS,KAAK,MAAM,EAAE,WAAW,KAAK,CAAC,KAAK,KAAK,CAyBvD;uFAGpB;IACD,IAAI;IACJ,MAAM;IACN,MAAM;IACN,aAAa;IACb,UAAU,CAAC,KAAK,IAAI;IACpB;GACD;IACC,YAAY;KACX,aAAa;KACb,cAAc;KACd,SAAS,EAAE;KACX;IACD,IAAI;IACJ,MAAM;IACN,MAAM;IACN,aAAa;IACb,UAAU,CAAC,KAAK,IAAI;IACpB;GACD;EACD,aAAa;GACZ,SAAS,EACR,MAAM,CAAC,CAAC;IAAE,MAAM;IAAmB,MAAM;IAAQ,OAAO;IAAG,CAAC,CAAC,EAC7D;GACD,mBAAmB,EAClB,MAAM,CAAC,CAAC;IAAE,MAAM;IAAsB,MAAM;IAAQ,OAAO;IAAG,CAAC,CAAC,EAChE;GACD;EACD,QAAQ;EACR,UAAU,EAAE,gBAAgB,MAAM;EAClC,MAAM,CAAC,EAAE,MAAM,YAAY,CAAC;EAC5B"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"n8n-workflows.d.mts","names":[],"sources":["../../src/generators/n8n-workflows.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"n8n-workflows.d.mts","names":[],"sources":["../../src/generators/n8n-workflows.ts"],"mappings":";;;;;;AAMA;iBAAgB,oBAAA,CAAqB,QAAA,EAAU,cAAA,GAAiB,MAAA"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value:
|
|
2
|
-
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
2
|
//#region src/generators/native-services.ts
|
|
4
3
|
/**
|
|
5
4
|
* Generates native install/run scripts for services that have a native recipe.
|
|
@@ -74,7 +73,7 @@ function buildWindowsNativeScript(nativeServices) {
|
|
|
74
73
|
lines.push("Write-Host 'Native services started.'");
|
|
75
74
|
return lines.join("\n");
|
|
76
75
|
}
|
|
77
|
-
|
|
78
76
|
//#endregion
|
|
79
77
|
exports.generateNativeInstallScripts = generateNativeInstallScripts;
|
|
78
|
+
|
|
80
79
|
//# sourceMappingURL=native-services.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"native-services.cjs","names":[],"sources":["../../src/generators/native-services.ts"],"sourcesContent":["import type { NativePlatform, ResolvedService } from \"../types.js\";\n\nexport interface NativeServicesGeneratorOptions {\n\tnativeServices: ResolvedService[];\n\tplatform: NativePlatform;\n\tprojectName: string;\n}\n\n/**\n * Generates native install/run scripts for services that have a native recipe.\n * Returns e.g. native/install-linux.sh (or native/install.ps1 for Windows).\n * Scripts source .env and run install steps then start commands in dependency order.\n */\nexport function generateNativeInstallScripts(\n\toptions: NativeServicesGeneratorOptions,\n): Record<string, string> {\n\tconst { nativeServices, platform } = options;\n\tconst files: Record<string, string> = {};\n\n\tif (platform === \"linux\") {\n\t\tfiles[\"native/install-linux.sh\"] = buildLinuxNativeScript(nativeServices);\n\t} else if (platform === \"windows\") {\n\t\tfiles[\"native/install-windows.ps1\"] = buildWindowsNativeScript(nativeServices);\n\t} else {\n\t\t// macos: use bash script similar to linux\n\t\tfiles[\"native/install-macos.sh\"] = buildLinuxNativeScript(nativeServices);\n\t}\n\n\treturn files;\n}\n\nfunction buildLinuxNativeScript(nativeServices: ResolvedService[]): string {\n\tconst lines: string[] = [\n\t\t\"#!/usr/bin/env bash\",\n\t\t\"set -euo pipefail\",\n\t\t\"# OpenClaw native services — install and start (Linux). Run from project root. Source .env first.\",\n\t\t\"\",\n\t\t'SCRIPT_DIR=\"$(cd \"$(dirname \"${BASH_SOURCE[0]}\")\" && pwd)\"',\n\t\t'PROJECT_DIR=\"$(dirname \"$SCRIPT_DIR\")\"',\n\t\t'cd \"$PROJECT_DIR\"',\n\t\t\"\",\n\t\t\"if [ -f .env ]; then set -a; source .env; set +a; fi\",\n\t\t\"\",\n\t];\n\n\tfor (const { definition: def } of nativeServices) {\n\t\tconst recipe = def.nativeRecipes?.find((r) => r.platform === \"linux\");\n\t\tif (!recipe) continue;\n\n\t\tlines.push(`# ─── ${def.icon} ${def.name} ─────────────────────────────────────────`);\n\t\tlines.push(\"\");\n\n\t\tif (recipe.configPath && recipe.configTemplate) {\n\t\t\tconst delim = `ENDOF_${def.id.toUpperCase().replace(/-/g, \"_\")}_CONF`;\n\t\t\tlines.push(`# Write config for ${def.id}`);\n\t\t\tlines.push(`sudo mkdir -p \"$(dirname \"${recipe.configPath}\")\" 2>/dev/null || true`);\n\t\t\tlines.push(`sudo tee \"${recipe.configPath}\" > /dev/null << ${delim}`);\n\t\t\tlines.push(recipe.configTemplate.trim());\n\t\t\tlines.push(delim);\n\t\t\tlines.push(\"\");\n\t\t}\n\n\t\tfor (const step of recipe.installSteps) {\n\t\t\tlines.push(`# Install: ${def.id}`);\n\t\t\tlines.push(step);\n\t\t\tlines.push(\"\");\n\t\t}\n\n\t\tlines.push(`# Start: ${def.id}`);\n\t\tlines.push(recipe.startCommand);\n\t\tlines.push(\"\");\n\t}\n\n\tlines.push(\"echo 'Native services started.'\");\n\treturn lines.join(\"\\n\");\n}\n\nfunction buildWindowsNativeScript(nativeServices: ResolvedService[]): string {\n\tconst lines: string[] = [\n\t\t\"# OpenClaw native services — install and start (Windows). Run from project root.\",\n\t\t\"$ErrorActionPreference = 'Stop'\",\n\t\t\"$ProjectDir = (Get-Item $PSScriptRoot).Parent.FullName\",\n\t\t\"Set-Location $ProjectDir\",\n\t\t\"\",\n\t\t\"if (Test-Path .env) { Get-Content .env | ForEach-Object { if ($_ -match '^([^#=]+)=(.*)$') { [System.Environment]::SetEnvironmentVariable($matches[1].Trim(), $matches[2].Trim(), 'Process') } } }\",\n\t\t\"\",\n\t];\n\n\tfor (const { definition: def } of nativeServices) {\n\t\tconst recipe = def.nativeRecipes?.find((r) => r.platform === \"windows\");\n\t\tif (!recipe) continue;\n\n\t\tlines.push(`# ${def.name}`);\n\t\tfor (const step of recipe.installSteps) {\n\t\t\tlines.push(`Invoke-Expression \"${step.replace(/\"/g, '`\"')}\"`);\n\t\t}\n\t\tlines.push(recipe.startCommand);\n\t\tlines.push(\"\");\n\t}\n\n\tlines.push(\"Write-Host 'Native services started.'\");\n\treturn lines.join(\"\\n\");\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"native-services.cjs","names":[],"sources":["../../src/generators/native-services.ts"],"sourcesContent":["import type { NativePlatform, ResolvedService } from \"../types.js\";\n\nexport interface NativeServicesGeneratorOptions {\n\tnativeServices: ResolvedService[];\n\tplatform: NativePlatform;\n\tprojectName: string;\n}\n\n/**\n * Generates native install/run scripts for services that have a native recipe.\n * Returns e.g. native/install-linux.sh (or native/install.ps1 for Windows).\n * Scripts source .env and run install steps then start commands in dependency order.\n */\nexport function generateNativeInstallScripts(\n\toptions: NativeServicesGeneratorOptions,\n): Record<string, string> {\n\tconst { nativeServices, platform } = options;\n\tconst files: Record<string, string> = {};\n\n\tif (platform === \"linux\") {\n\t\tfiles[\"native/install-linux.sh\"] = buildLinuxNativeScript(nativeServices);\n\t} else if (platform === \"windows\") {\n\t\tfiles[\"native/install-windows.ps1\"] = buildWindowsNativeScript(nativeServices);\n\t} else {\n\t\t// macos: use bash script similar to linux\n\t\tfiles[\"native/install-macos.sh\"] = buildLinuxNativeScript(nativeServices);\n\t}\n\n\treturn files;\n}\n\nfunction buildLinuxNativeScript(nativeServices: ResolvedService[]): string {\n\tconst lines: string[] = [\n\t\t\"#!/usr/bin/env bash\",\n\t\t\"set -euo pipefail\",\n\t\t\"# OpenClaw native services — install and start (Linux). Run from project root. Source .env first.\",\n\t\t\"\",\n\t\t'SCRIPT_DIR=\"$(cd \"$(dirname \"${BASH_SOURCE[0]}\")\" && pwd)\"',\n\t\t'PROJECT_DIR=\"$(dirname \"$SCRIPT_DIR\")\"',\n\t\t'cd \"$PROJECT_DIR\"',\n\t\t\"\",\n\t\t\"if [ -f .env ]; then set -a; source .env; set +a; fi\",\n\t\t\"\",\n\t];\n\n\tfor (const { definition: def } of nativeServices) {\n\t\tconst recipe = def.nativeRecipes?.find((r) => r.platform === \"linux\");\n\t\tif (!recipe) continue;\n\n\t\tlines.push(`# ─── ${def.icon} ${def.name} ─────────────────────────────────────────`);\n\t\tlines.push(\"\");\n\n\t\tif (recipe.configPath && recipe.configTemplate) {\n\t\t\tconst delim = `ENDOF_${def.id.toUpperCase().replace(/-/g, \"_\")}_CONF`;\n\t\t\tlines.push(`# Write config for ${def.id}`);\n\t\t\tlines.push(`sudo mkdir -p \"$(dirname \"${recipe.configPath}\")\" 2>/dev/null || true`);\n\t\t\tlines.push(`sudo tee \"${recipe.configPath}\" > /dev/null << ${delim}`);\n\t\t\tlines.push(recipe.configTemplate.trim());\n\t\t\tlines.push(delim);\n\t\t\tlines.push(\"\");\n\t\t}\n\n\t\tfor (const step of recipe.installSteps) {\n\t\t\tlines.push(`# Install: ${def.id}`);\n\t\t\tlines.push(step);\n\t\t\tlines.push(\"\");\n\t\t}\n\n\t\tlines.push(`# Start: ${def.id}`);\n\t\tlines.push(recipe.startCommand);\n\t\tlines.push(\"\");\n\t}\n\n\tlines.push(\"echo 'Native services started.'\");\n\treturn lines.join(\"\\n\");\n}\n\nfunction buildWindowsNativeScript(nativeServices: ResolvedService[]): string {\n\tconst lines: string[] = [\n\t\t\"# OpenClaw native services — install and start (Windows). Run from project root.\",\n\t\t\"$ErrorActionPreference = 'Stop'\",\n\t\t\"$ProjectDir = (Get-Item $PSScriptRoot).Parent.FullName\",\n\t\t\"Set-Location $ProjectDir\",\n\t\t\"\",\n\t\t\"if (Test-Path .env) { Get-Content .env | ForEach-Object { if ($_ -match '^([^#=]+)=(.*)$') { [System.Environment]::SetEnvironmentVariable($matches[1].Trim(), $matches[2].Trim(), 'Process') } } }\",\n\t\t\"\",\n\t];\n\n\tfor (const { definition: def } of nativeServices) {\n\t\tconst recipe = def.nativeRecipes?.find((r) => r.platform === \"windows\");\n\t\tif (!recipe) continue;\n\n\t\tlines.push(`# ${def.name}`);\n\t\tfor (const step of recipe.installSteps) {\n\t\t\tlines.push(`Invoke-Expression \"${step.replace(/\"/g, '`\"')}\"`);\n\t\t}\n\t\tlines.push(recipe.startCommand);\n\t\tlines.push(\"\");\n\t}\n\n\tlines.push(\"Write-Host 'Native services started.'\");\n\treturn lines.join(\"\\n\");\n}\n"],"mappings":";;;;;;;AAaA,SAAgB,6BACf,SACyB;CACzB,MAAM,EAAE,gBAAgB,aAAa;CACrC,MAAM,QAAgC,EAAE;AAExC,KAAI,aAAa,QAChB,OAAM,6BAA6B,uBAAuB,eAAe;UAC/D,aAAa,UACvB,OAAM,gCAAgC,yBAAyB,eAAe;KAG9E,OAAM,6BAA6B,uBAAuB,eAAe;AAG1E,QAAO;;AAGR,SAAS,uBAAuB,gBAA2C;CAC1E,MAAM,QAAkB;EACvB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAED,MAAK,MAAM,EAAE,YAAY,SAAS,gBAAgB;EACjD,MAAM,SAAS,IAAI,eAAe,MAAM,MAAM,EAAE,aAAa,QAAQ;AACrE,MAAI,CAAC,OAAQ;AAEb,QAAM,KAAK,SAAS,IAAI,KAAK,GAAG,IAAI,KAAK,4CAA4C;AACrF,QAAM,KAAK,GAAG;AAEd,MAAI,OAAO,cAAc,OAAO,gBAAgB;GAC/C,MAAM,QAAQ,SAAS,IAAI,GAAG,aAAa,CAAC,QAAQ,MAAM,IAAI,CAAC;AAC/D,SAAM,KAAK,sBAAsB,IAAI,KAAK;AAC1C,SAAM,KAAK,6BAA6B,OAAO,WAAW,yBAAyB;AACnF,SAAM,KAAK,aAAa,OAAO,WAAW,mBAAmB,QAAQ;AACrE,SAAM,KAAK,OAAO,eAAe,MAAM,CAAC;AACxC,SAAM,KAAK,MAAM;AACjB,SAAM,KAAK,GAAG;;AAGf,OAAK,MAAM,QAAQ,OAAO,cAAc;AACvC,SAAM,KAAK,cAAc,IAAI,KAAK;AAClC,SAAM,KAAK,KAAK;AAChB,SAAM,KAAK,GAAG;;AAGf,QAAM,KAAK,YAAY,IAAI,KAAK;AAChC,QAAM,KAAK,OAAO,aAAa;AAC/B,QAAM,KAAK,GAAG;;AAGf,OAAM,KAAK,kCAAkC;AAC7C,QAAO,MAAM,KAAK,KAAK;;AAGxB,SAAS,yBAAyB,gBAA2C;CAC5E,MAAM,QAAkB;EACvB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;AAED,MAAK,MAAM,EAAE,YAAY,SAAS,gBAAgB;EACjD,MAAM,SAAS,IAAI,eAAe,MAAM,MAAM,EAAE,aAAa,UAAU;AACvE,MAAI,CAAC,OAAQ;AAEb,QAAM,KAAK,KAAK,IAAI,OAAO;AAC3B,OAAK,MAAM,QAAQ,OAAO,aACzB,OAAM,KAAK,sBAAsB,KAAK,QAAQ,MAAM,MAAK,CAAC,GAAG;AAE9D,QAAM,KAAK,OAAO,aAAa;AAC/B,QAAM,KAAK,GAAG;;AAGf,OAAM,KAAK,wCAAwC;AACnD,QAAO,MAAM,KAAK,KAAK"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value:
|
|
2
|
-
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
2
|
//#region src/generators/openclaw-install-script.ts
|
|
4
3
|
function generateOpenclawInstallScript(options) {
|
|
5
4
|
const files = {};
|
|
@@ -62,7 +61,7 @@ function generateOpenclawInstallScript(options) {
|
|
|
62
61
|
].join("\n");
|
|
63
62
|
return files;
|
|
64
63
|
}
|
|
65
|
-
|
|
66
64
|
//#endregion
|
|
67
65
|
exports.generateOpenclawInstallScript = generateOpenclawInstallScript;
|
|
66
|
+
|
|
68
67
|
//# sourceMappingURL=openclaw-install-script.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openclaw-install-script.cjs","names":[],"sources":["../../src/generators/openclaw-install-script.ts"],"sourcesContent":["/**\n * Generates the `scripts/install-openclaw.sh` and `scripts/install-openclaw.ps1`\n * scripts that install OpenClaw directly on the host via the official installer.\n */\n\nexport interface OpenclawInstallScriptOptions {\n\tprojectName: string;\n}\n\nexport function generateOpenclawInstallScript(\n\toptions: OpenclawInstallScriptOptions,\n): Record<string, string> {\n\tconst files: Record<string, string> = {};\n\n\t// Bash script (macOS / Linux)\n\tfiles[\"scripts/install-openclaw.sh\"] = [\n\t\t\"#!/usr/bin/env bash\",\n\t\t\"set -euo pipefail\",\n\t\t\"\",\n\t\t`# Install OpenClaw directly on this host for project: ${options.projectName}`,\n\t\t\"# This script downloads and runs the official OpenClaw installer.\",\n\t\t\"# It will install Node.js 22+ (if needed) and OpenClaw globally via npm.\",\n\t\t\"\",\n\t\t'echo \"╔══════════════════════════════════════════╗\"',\n\t\t'echo \"║ OpenClaw — Direct Host Installation ║\"',\n\t\t'echo \"╚══════════════════════════════════════════╝\"',\n\t\t'echo \"\"',\n\t\t\"\",\n\t\t\"# Run the official installer\",\n\t\t'curl -fsSL --proto \"=https\" --tlsv1.2 https://openclaw.ai/install.sh | bash',\n\t\t\"\",\n\t\t'echo \"\"',\n\t\t'echo \"OpenClaw installed successfully!\"',\n\t\t'echo \"\"',\n\t\t'echo \"Next steps:\"',\n\t\t'echo \" 1. Start your companion services: docker compose up -d\"',\n\t\t'echo \" 2. Run onboarding: openclaw onboard\"',\n\t\t'echo \" 3. Launch the dashboard: openclaw dashboard\"',\n\t\t'echo \"\"',\n\t\t\"\",\n\t].join(\"\\n\");\n\n\t// PowerShell script (Windows / WSL)\n\tfiles[\"scripts/install-openclaw.ps1\"] = [\n\t\t\"# Install OpenClaw directly on this host (Windows via WSL)\",\n\t\t`# Project: ${options.projectName}`,\n\t\t\"#\",\n\t\t\"# This script sets up WSL if needed, then runs the official Linux installer inside it.\",\n\t\t\"\",\n\t\t'Write-Host \"OpenClaw - Direct Host Installation\" -ForegroundColor Cyan',\n\t\t'Write-Host \"\"',\n\t\t\"\",\n\t\t\"# Check if WSL is available\",\n\t\t\"$wslCheck = Get-Command wsl -ErrorAction SilentlyContinue\",\n\t\t\"if (-not $wslCheck) {\",\n\t\t' Write-Host \"WSL is not installed. Installing WSL...\" -ForegroundColor Yellow',\n\t\t\" wsl --install\",\n\t\t' Write-Host \"Please restart your computer and re-run this script.\" -ForegroundColor Yellow',\n\t\t\" exit 1\",\n\t\t\"}\",\n\t\t\"\",\n\t\t'Write-Host \"Running OpenClaw installer inside WSL...\" -ForegroundColor Green',\n\t\t\"wsl bash -c \\\"curl -fsSL --proto '=https' --tlsv1.2 https://openclaw.ai/install.sh | bash\\\"\",\n\t\t\"\",\n\t\t'Write-Host \"\"',\n\t\t'Write-Host \"OpenClaw installed successfully inside WSL!\" -ForegroundColor Green',\n\t\t'Write-Host \"\"',\n\t\t'Write-Host \"Next steps:\"',\n\t\t'Write-Host \" 1. Start your companion services: docker compose up -d\"',\n\t\t'Write-Host \" 2. Run onboarding (in WSL): openclaw onboard\"',\n\t\t'Write-Host \" 3. Launch the dashboard: openclaw dashboard\"',\n\t\t'Write-Host \"\"',\n\t\t\"\",\n\t].join(\"\\n\");\n\n\treturn files;\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"openclaw-install-script.cjs","names":[],"sources":["../../src/generators/openclaw-install-script.ts"],"sourcesContent":["/**\n * Generates the `scripts/install-openclaw.sh` and `scripts/install-openclaw.ps1`\n * scripts that install OpenClaw directly on the host via the official installer.\n */\n\nexport interface OpenclawInstallScriptOptions {\n\tprojectName: string;\n}\n\nexport function generateOpenclawInstallScript(\n\toptions: OpenclawInstallScriptOptions,\n): Record<string, string> {\n\tconst files: Record<string, string> = {};\n\n\t// Bash script (macOS / Linux)\n\tfiles[\"scripts/install-openclaw.sh\"] = [\n\t\t\"#!/usr/bin/env bash\",\n\t\t\"set -euo pipefail\",\n\t\t\"\",\n\t\t`# Install OpenClaw directly on this host for project: ${options.projectName}`,\n\t\t\"# This script downloads and runs the official OpenClaw installer.\",\n\t\t\"# It will install Node.js 22+ (if needed) and OpenClaw globally via npm.\",\n\t\t\"\",\n\t\t'echo \"╔══════════════════════════════════════════╗\"',\n\t\t'echo \"║ OpenClaw — Direct Host Installation ║\"',\n\t\t'echo \"╚══════════════════════════════════════════╝\"',\n\t\t'echo \"\"',\n\t\t\"\",\n\t\t\"# Run the official installer\",\n\t\t'curl -fsSL --proto \"=https\" --tlsv1.2 https://openclaw.ai/install.sh | bash',\n\t\t\"\",\n\t\t'echo \"\"',\n\t\t'echo \"OpenClaw installed successfully!\"',\n\t\t'echo \"\"',\n\t\t'echo \"Next steps:\"',\n\t\t'echo \" 1. Start your companion services: docker compose up -d\"',\n\t\t'echo \" 2. Run onboarding: openclaw onboard\"',\n\t\t'echo \" 3. Launch the dashboard: openclaw dashboard\"',\n\t\t'echo \"\"',\n\t\t\"\",\n\t].join(\"\\n\");\n\n\t// PowerShell script (Windows / WSL)\n\tfiles[\"scripts/install-openclaw.ps1\"] = [\n\t\t\"# Install OpenClaw directly on this host (Windows via WSL)\",\n\t\t`# Project: ${options.projectName}`,\n\t\t\"#\",\n\t\t\"# This script sets up WSL if needed, then runs the official Linux installer inside it.\",\n\t\t\"\",\n\t\t'Write-Host \"OpenClaw - Direct Host Installation\" -ForegroundColor Cyan',\n\t\t'Write-Host \"\"',\n\t\t\"\",\n\t\t\"# Check if WSL is available\",\n\t\t\"$wslCheck = Get-Command wsl -ErrorAction SilentlyContinue\",\n\t\t\"if (-not $wslCheck) {\",\n\t\t' Write-Host \"WSL is not installed. Installing WSL...\" -ForegroundColor Yellow',\n\t\t\" wsl --install\",\n\t\t' Write-Host \"Please restart your computer and re-run this script.\" -ForegroundColor Yellow',\n\t\t\" exit 1\",\n\t\t\"}\",\n\t\t\"\",\n\t\t'Write-Host \"Running OpenClaw installer inside WSL...\" -ForegroundColor Green',\n\t\t\"wsl bash -c \\\"curl -fsSL --proto '=https' --tlsv1.2 https://openclaw.ai/install.sh | bash\\\"\",\n\t\t\"\",\n\t\t'Write-Host \"\"',\n\t\t'Write-Host \"OpenClaw installed successfully inside WSL!\" -ForegroundColor Green',\n\t\t'Write-Host \"\"',\n\t\t'Write-Host \"Next steps:\"',\n\t\t'Write-Host \" 1. Start your companion services: docker compose up -d\"',\n\t\t'Write-Host \" 2. Run onboarding (in WSL): openclaw onboard\"',\n\t\t'Write-Host \" 3. Launch the dashboard: openclaw dashboard\"',\n\t\t'Write-Host \"\"',\n\t\t\"\",\n\t].join(\"\\n\");\n\n\treturn files;\n}\n"],"mappings":";;AASA,SAAgB,8BACf,SACyB;CACzB,MAAM,QAAgC,EAAE;AAGxC,OAAM,iCAAiC;EACtC;EACA;EACA;EACA,yDAAyD,QAAQ;EACjE;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,CAAC,KAAK,KAAK;AAGZ,OAAM,kCAAkC;EACvC;EACA,cAAc,QAAQ;EACtB;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA;EACA,CAAC,KAAK,KAAK;AAEZ,QAAO"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value:
|
|
2
|
-
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
2
|
//#region src/generators/openclaw-json.ts
|
|
4
3
|
const PROVIDER_CONFIGS = {
|
|
5
4
|
openai: {
|
|
@@ -534,7 +533,7 @@ function generateOpenClawConfig(resolved, options) {
|
|
|
534
533
|
};
|
|
535
534
|
return JSON.stringify(config, null, 2);
|
|
536
535
|
}
|
|
537
|
-
|
|
538
536
|
//#endregion
|
|
539
537
|
exports.generateOpenClawConfig = generateOpenClawConfig;
|
|
538
|
+
|
|
540
539
|
//# sourceMappingURL=openclaw-json.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openclaw-json.cjs","names":[],"sources":["../../src/generators/openclaw-json.ts"],"sourcesContent":["import type { AiProvider, DeploymentType, ResolverOutput } from \"../types.js\";\n\nexport interface OpenClawConfigOptions {\n\tdeploymentType: DeploymentType;\n\tgatewayPort: number;\n\topenclawVersion: string;\n}\n\nconst PROVIDER_CONFIGS: Record<AiProvider, any> = {\n\topenai: {\n\t\tbaseUrl: \"https://api.openai.com/v1\",\n\t\tapi: \"openai-completions\",\n\t\tauth: \"api-key\",\n\t\tapiKey: \"${OPENAI_API_KEY}\",\n\t\tmodels: [\n\t\t\t{\n\t\t\t\tid: \"gpt-5\",\n\t\t\t\tname: \"GPT-5\",\n\t\t\t\tapi: \"openai-completions\",\n\t\t\t\treasoning: false,\n\t\t\t\tinput: [\"text\", \"image\"],\n\t\t\t\tcost: { input: 2.5, output: 10, cacheRead: 1.25, cacheWrite: 2.5 },\n\t\t\t\tcontextWindow: 128000,\n\t\t\t\tmaxTokens: 16384,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"o4-mini\",\n\t\t\t\tname: \"o4-mini\",\n\t\t\t\tapi: \"openai-completions\",\n\t\t\t\treasoning: true,\n\t\t\t\tinput: [\"text\"],\n\t\t\t\tcost: { input: 1.1, output: 4.4, cacheRead: 0.55, cacheWrite: 1.1 },\n\t\t\t\tcontextWindow: 200000,\n\t\t\t\tmaxTokens: 100000,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"gpt-5-mini\",\n\t\t\t\tname: \"GPT-5 Mini\",\n\t\t\t\tapi: \"openai-completions\",\n\t\t\t\treasoning: false,\n\t\t\t\tinput: [\"text\", \"image\"],\n\t\t\t\tcost: { input: 0.15, output: 0.6, cacheRead: 0.075, cacheWrite: 0.15 },\n\t\t\t\tcontextWindow: 128000,\n\t\t\t\tmaxTokens: 16384,\n\t\t\t},\n\t\t],\n\t},\n\tanthropic: {\n\t\tbaseUrl: \"https://api.anthropic.com/v1/messages\",\n\t\tapi: \"anthropic-messages\",\n\t\tauth: \"api-key\",\n\t\tapiKey: \"${ANTHROPIC_API_KEY}\",\n\t\tmodels: [\n\t\t\t{\n\t\t\t\tid: \"claude-opus-4-6\",\n\t\t\t\tname: \"Claude 4.6 Opus\",\n\t\t\t\tapi: \"anthropic-messages\",\n\t\t\t\treasoning: true,\n\t\t\t\tinput: [\"text\", \"image\"],\n\t\t\t\tcost: { input: 15.0, output: 75.0, cacheRead: 1.5, cacheWrite: 18.75 },\n\t\t\t\tcontextWindow: 1000000,\n\t\t\t\tmaxTokens: 128000,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"claude-sonnet-4-6\",\n\t\t\t\tname: \"Claude 4.6 Sonnet\",\n\t\t\t\tapi: \"anthropic-messages\",\n\t\t\t\treasoning: true,\n\t\t\t\tinput: [\"text\", \"image\"],\n\t\t\t\tcost: { input: 3.0, output: 15.0, cacheRead: 0.3, cacheWrite: 3.75 },\n\t\t\t\tcontextWindow: 1000000,\n\t\t\t\tmaxTokens: 128000,\n\t\t\t},\n\t\t],\n\t},\n\tgoogle: {\n\t\tbaseUrl: \"https://generativelanguage.googleapis.com/v1beta/openai\",\n\t\tapi: \"openai-completions\",\n\t\tauth: \"api-key\",\n\t\tapiKey: \"${GOOGLE_API_KEY}\",\n\t\tmodels: [\n\t\t\t{\n\t\t\t\tid: \"gemini-3.1-pro-preview\",\n\t\t\t\tname: \"Gemini 3.1 Pro\",\n\t\t\t\tapi: \"openai-completions\",\n\t\t\t\treasoning: true,\n\t\t\t\tinput: [\"text\", \"image\"],\n\t\t\t\tcost: { input: 2.0, output: 8.0, cacheRead: 0.5, cacheWrite: 2.0 },\n\t\t\t\tcontextWindow: 2000000,\n\t\t\t\tmaxTokens: 8192,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"gemini-3-flash-preview\",\n\t\t\t\tname: \"Gemini 3 Flash\",\n\t\t\t\tapi: \"openai-completions\",\n\t\t\t\treasoning: false,\n\t\t\t\tinput: [\"text\", \"image\"],\n\t\t\t\tcost: { input: 0.15, output: 0.6, cacheRead: 0.0375, cacheWrite: 0.15 },\n\t\t\t\tcontextWindow: 1000000,\n\t\t\t\tmaxTokens: 8192,\n\t\t\t},\n\t\t],\n\t},\n\txai: {\n\t\tbaseUrl: \"https://api.x.ai/v1\",\n\t\tapi: \"openai-completions\",\n\t\tauth: \"api-key\",\n\t\tapiKey: \"${XAI_API_KEY}\",\n\t\tmodels: [\n\t\t\t{\n\t\t\t\tid: \"grok-4-fast\",\n\t\t\t\tname: \"Grok 4 Fast\",\n\t\t\t\tapi: \"openai-completions\",\n\t\t\t\treasoning: false,\n\t\t\t\tinput: [\"text\", \"image\"],\n\t\t\t\tcost: { input: 2.0, output: 10.0, cacheRead: 1.0, cacheWrite: 2.0 },\n\t\t\t\tcontextWindow: 256000,\n\t\t\t\tmaxTokens: 32768,\n\t\t\t},\n\t\t],\n\t},\n\tdeepseek: {\n\t\tbaseUrl: \"https://api.deepseek.com/v1\",\n\t\tapi: \"openai-completions\",\n\t\tauth: \"api-key\",\n\t\tapiKey: \"${DEEPSEEK_API_KEY}\",\n\t\tmodels: [\n\t\t\t{\n\t\t\t\tid: \"deepseek-chat\",\n\t\t\t\tname: \"DeepSeek V3\",\n\t\t\t\tapi: \"openai-completions\",\n\t\t\t\treasoning: false,\n\t\t\t\tinput: [\"text\"],\n\t\t\t\tcost: { input: 0.14, output: 0.28, cacheRead: 0.014, cacheWrite: 0.14 },\n\t\t\t\tcontextWindow: 65536,\n\t\t\t\tmaxTokens: 8192,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"deepseek-reasoner\",\n\t\t\t\tname: \"DeepSeek R1\",\n\t\t\t\tapi: \"openai-completions\",\n\t\t\t\treasoning: true,\n\t\t\t\tinput: [\"text\"],\n\t\t\t\tcost: { input: 0.55, output: 2.19, cacheRead: 0.14, cacheWrite: 0.55 },\n\t\t\t\tcontextWindow: 65536,\n\t\t\t\tmaxTokens: 8192,\n\t\t\t},\n\t\t],\n\t},\n\tgroq: {\n\t\tbaseUrl: \"https://api.groq.com/openai/v1\",\n\t\tapi: \"openai-completions\",\n\t\tauth: \"api-key\",\n\t\tapiKey: \"${GROQ_API_KEY}\",\n\t\tmodels: [\n\t\t\t{\n\t\t\t\tid: \"llama-4-maverick\",\n\t\t\t\tname: \"LLaMA 4 Maverick (Groq)\",\n\t\t\t\tapi: \"openai-completions\",\n\t\t\t\treasoning: false,\n\t\t\t\tinput: [\"text\", \"image\"],\n\t\t\t\tcost: { input: 0.59, output: 0.79 },\n\t\t\t\tcontextWindow: 1000000,\n\t\t\t\tmaxTokens: 32768,\n\t\t\t},\n\t\t],\n\t},\n\topenrouter: {\n\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\tapi: \"openai-completions\",\n\t\tauth: \"api-key\",\n\t\tapiKey: \"${OPENROUTER_API_KEY}\",\n\t\tmodels: [\n\t\t\t{\n\t\t\t\tid: \"anthropic/claude-opus-4-6\",\n\t\t\t\tname: \"Claude 4.6 Opus (OpenRouter)\",\n\t\t\t\tapi: \"openai-completions\",\n\t\t\t\treasoning: true,\n\t\t\t\tinput: [\"text\", \"image\"],\n\t\t\t\tcost: { input: 15.0, output: 75.0 },\n\t\t\t\tcontextWindow: 1000000,\n\t\t\t\tmaxTokens: 128000,\n\t\t\t},\n\t\t],\n\t},\n\tmistral: {\n\t\tbaseUrl: \"https://api.mistral.ai/v1\",\n\t\tapi: \"openai-completions\",\n\t\tauth: \"api-key\",\n\t\tapiKey: \"${MISTRAL_API_KEY}\",\n\t\tmodels: [\n\t\t\t{\n\t\t\t\tid: \"mistral-large-latest\",\n\t\t\t\tname: \"Mistral Large\",\n\t\t\t\tapi: \"openai-completions\",\n\t\t\t\treasoning: false,\n\t\t\t\tinput: [\"text\"],\n\t\t\t\tcost: { input: 2.0, output: 6.0 },\n\t\t\t\tcontextWindow: 131000,\n\t\t\t\tmaxTokens: 8192,\n\t\t\t},\n\t\t],\n\t},\n\ttogether: {\n\t\tbaseUrl: \"https://api.together.xyz/v1\",\n\t\tapi: \"openai-completions\",\n\t\tauth: \"api-key\",\n\t\tapiKey: \"${TOGETHER_API_KEY}\",\n\t\tmodels: [\n\t\t\t{\n\t\t\t\tid: \"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8\", // \"meta-llama/Llama-4-Maverick-Instruct-Turbo\",\n\t\t\t\tname: \"LLaMA 4 Maverick (Together)\",\n\t\t\t\tapi: \"openai-completions\",\n\t\t\t\treasoning: false,\n\t\t\t\tinput: [\"text\", \"image\"],\n\t\t\t\tcost: { input: 0.88, output: 0.88 },\n\t\t\t\tcontextWindow: 1000000,\n\t\t\t\tmaxTokens: 32768,\n\t\t\t},\n\t\t],\n\t},\n\tollama: {\n\t\tbaseUrl: null, // dynamic: resolved at generation time based on deployment type\n\t\tapi: \"openai-completions\",\n\t\tauth: \"none\",\n\t\tmodels: [\n\t\t\t{\n\t\t\t\tid: \"llama3:latest\",\n\t\t\t\tname: \"LLaMA 3 (Local)\",\n\t\t\t\tapi: \"openai-completions\",\n\t\t\t\treasoning: false,\n\t\t\t\tinput: [\"text\"],\n\t\t\t\tcost: { input: 0, output: 0 },\n\t\t\t\tcontextWindow: 8192,\n\t\t\t\tmaxTokens: 4096,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"deepseek-r1:latest\",\n\t\t\t\tname: \"DeepSeek R1 (Local)\",\n\t\t\t\tapi: \"openai-completions\",\n\t\t\t\treasoning: true,\n\t\t\t\tinput: [\"text\"],\n\t\t\t\tcost: { input: 0, output: 0 },\n\t\t\t\tcontextWindow: 8192,\n\t\t\t\tmaxTokens: 4096,\n\t\t\t},\n\t\t],\n\t},\n\t\"ollama-cloud\": {\n\t\tbaseUrl: \"https://ollama.com/v1\",\n\t\tapi: \"openai-completions\",\n\t\tauth: \"api-key\",\n\t\tapiKey: \"${OLLAMA_API_KEY}\",\n\t\tmodels: [\n\t\t\t{\n\t\t\t\tid: \"qwen3.5:397b-cloud\",\n\t\t\t\tname: \"Qwen 3.5 397B (Cloud)\",\n\t\t\t\tapi: \"openai-completions\",\n\t\t\t\treasoning: false,\n\t\t\t\tinput: [\"text\"],\n\t\t\t\tcost: { input: 0, output: 0 },\n\t\t\t\tcontextWindow: 131072,\n\t\t\t\tmaxTokens: 32768,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"glm-5:cloud\",\n\t\t\t\tname: \"GLM-5 (Cloud)\",\n\t\t\t\tapi: \"openai-completions\",\n\t\t\t\treasoning: false,\n\t\t\t\tinput: [\"text\"],\n\t\t\t\tcost: { input: 0, output: 0 },\n\t\t\t\tcontextWindow: 131072,\n\t\t\t\tmaxTokens: 32768,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"minimax-m2.5:cloud\",\n\t\t\t\tname: \"MiniMax M2.5 (Cloud)\",\n\t\t\t\tapi: \"openai-completions\",\n\t\t\t\treasoning: false,\n\t\t\t\tinput: [\"text\"],\n\t\t\t\tcost: { input: 0, output: 0 },\n\t\t\t\tcontextWindow: 131072,\n\t\t\t\tmaxTokens: 32768,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"kimi-k2.5:cloud\",\n\t\t\t\tname: \"Kimi K2.5 (Cloud)\",\n\t\t\t\tapi: \"openai-completions\",\n\t\t\t\treasoning: false,\n\t\t\t\tinput: [\"text\"],\n\t\t\t\tcost: { input: 0, output: 0 },\n\t\t\t\tcontextWindow: 131072,\n\t\t\t\tmaxTokens: 32768,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"gemini-3-flash-preview:cloud\",\n\t\t\t\tname: \"Gemini 3 Flash (Cloud)\",\n\t\t\t\tapi: \"openai-completions\",\n\t\t\t\treasoning: false,\n\t\t\t\tinput: [\"text\", \"image\"],\n\t\t\t\tcost: { input: 0, output: 0 },\n\t\t\t\tcontextWindow: 1000000,\n\t\t\t\tmaxTokens: 8192,\n\t\t\t},\n\t\t],\n\t},\n\tlmstudio: {\n\t\tbaseUrl: null, // dynamic: resolved at generation time based on deployment type\n\t\tapi: \"openai-completions\",\n\t\tauth: \"none\",\n\t\tmodels: [\n\t\t\t{\n\t\t\t\tid: \"local-model\",\n\t\t\t\tname: \"LM Studio Model\",\n\t\t\t\tapi: \"openai-completions\",\n\t\t\t\treasoning: false,\n\t\t\t\tinput: [\"text\"],\n\t\t\t\tcost: { input: 0, output: 0 },\n\t\t\t\tcontextWindow: 8192,\n\t\t\t\tmaxTokens: 4096,\n\t\t\t},\n\t\t],\n\t},\n\tvllm: {\n\t\tbaseUrl: null, // dynamic: resolved at generation time based on deployment type\n\t\tapi: \"openai-completions\",\n\t\tauth: \"none\",\n\t\tmodels: [\n\t\t\t{\n\t\t\t\tid: \"local-model\",\n\t\t\t\tname: \"vLLM Model\",\n\t\t\t\tapi: \"openai-completions\",\n\t\t\t\treasoning: false,\n\t\t\t\tinput: [\"text\"],\n\t\t\t\tcost: { input: 0, output: 0 },\n\t\t\t\tcontextWindow: 8192,\n\t\t\t\tmaxTokens: 4096,\n\t\t\t},\n\t\t],\n\t},\n};\n\n/** Default ports for local inference providers (ollama, lmstudio, vllm). */\nconst LOCAL_PROVIDER_PORTS: Record<string, number> = {\n\tollama: 11434,\n\tlmstudio: 1234,\n\tvllm: 8000,\n};\n\n/**\n * Generates a default `openclaw/config/openclaw.json` tailored\n * to the services installed in the stack.\n */\nexport function generateOpenClawConfig(\n\tresolved: ResolverOutput,\n\toptions: OpenClawConfigOptions,\n): string {\n\tconst isDocker = options.deploymentType === \"docker\";\n\t// Docker containers reach host services via host.docker.internal; bare-metal uses localhost\n\tconst localInferenceHost = isDocker ? \"host.docker.internal\" : \"localhost\";\n\t// Docker: bind to all interfaces (0.0.0.0) so port mapping works from host\n\t// Bare-metal/local: bind to loopback (127.0.0.1) for security, Tailscale can expose if needed\n\tconst gatewayBind = isDocker ? \"lan\" : \"loopback\";\n\tconst defaultSkills: Record<string, { enabled: boolean }> = {};\n\n\t// Auto-enable any OpenClaw skills attached to installed companion services\n\tfor (const { definition } of resolved.services) {\n\t\tfor (const skill of definition.skills) {\n\t\t\tif (skill.autoInstall) {\n\t\t\t\tdefaultSkills[skill.skillId] = { enabled: true };\n\t\t\t}\n\t\t}\n\t}\n\n\tconst providers: Record<string, any> = {};\n\tconst agentsModels: Record<string, { alias: string }> = {};\n\tlet primaryModel = \"\";\n\n\t// Always default to empty or the first choice, fallback to openai if nothing was passed\n\tconst selectedProviders =\n\t\tresolved.aiProviders && resolved.aiProviders.length > 0\n\t\t\t? resolved.aiProviders\n\t\t\t: ([\"openai\"] as AiProvider[]);\n\n\tfor (const provider of selectedProviders) {\n\t\tconst meta = PROVIDER_CONFIGS[provider];\n\t\tif (!meta) continue;\n\n\t\t// Local inference providers have null baseUrl — resolve dynamically based on deployment type\n\t\tconst baseUrl =\n\t\t\tmeta.baseUrl ?? `http://${localInferenceHost}:${LOCAL_PROVIDER_PORTS[provider] ?? 8000}/v1`;\n\n\t\tproviders[provider] = {\n\t\t\tbaseUrl,\n\t\t\tapi: meta.api,\n\t\t\tauth: meta.auth,\n\t\t\t...(meta.apiKey ? { apiKey: meta.apiKey } : {}),\n\t\t\tmodels: meta.models,\n\t\t};\n\n\t\tfor (const m of meta.models) {\n\t\t\tconst fullId = `${provider}/${m.id}`;\n\t\t\tagentsModels[fullId] = { alias: m.name };\n\t\t\tif (!primaryModel) primaryModel = fullId; // Use the very first model mapped as the global system default\n\t\t}\n\t}\n\n\tconst authProfiles: Record<string, any> = {\n\t\t\"local:default\": {\n\t\t\tprovider: \"local\",\n\t\t\tmode: \"token\",\n\t\t},\n\t};\n\n\t// Add provider auth profiles too\n\tfor (const provider of Object.keys(providers)) {\n\t\tauthProfiles[`${provider}:default`] = {\n\t\t\tprovider: provider,\n\t\t\tmode: \"api_key\",\n\t\t};\n\t}\n\n\tconst config = {\n\t\tmeta: {\n\t\t\tlastTouchedVersion: options.openclawVersion,\n\t\t\tlastTouchedAt: new Date().toISOString(),\n\t\t},\n\t\tenv: {\n\t\t\tshellEnv: {\n\t\t\t\tenabled: true,\n\t\t\t},\n\t\t\tvars: {},\n\t\t},\n\t\twizard: {\n\t\t\tlastRunAt: new Date().toISOString(),\n\t\t\tlastRunVersion: options.openclawVersion,\n\t\t\tlastRunCommand: \"auto-generated-by-better-openclaw\",\n\t\t\tlastRunMode: \"local\",\n\t\t},\n\t\tlogging: {\n\t\t\tredactSensitive: \"tools\",\n\t\t},\n\t\tupdate: {\n\t\t\tcheckOnStart: true,\n\t\t},\n\t\tauth: {\n\t\t\tprofiles: authProfiles,\n\t\t},\n\t\tmodels: {\n\t\t\tmode: \"merge\",\n\t\t\tproviders,\n\t\t},\n\t\tagents: {\n\t\t\tdefaults: {\n\t\t\t\tmodel: {\n\t\t\t\t\tprimary: primaryModel,\n\t\t\t\t},\n\t\t\t\tmodels: agentsModels,\n\t\t\t\tworkspace: isDocker ? \"/home/node/.openclaw/workspace\" : \"./workspace\",\n\t\t\t\tcompaction: { mode: \"safeguard\" },\n\t\t\t\tmaxConcurrent: 4,\n\t\t\t\tsubagents: { maxConcurrent: 8 },\n\t\t\t},\n\t\t},\n\t\tmessages: {\n\t\t\tackReactionScope: \"group-mentions\",\n\t\t},\n\t\tcommands: {\n\t\t\tnative: \"auto\",\n\t\t\tnativeSkills: \"auto\",\n\t\t},\n\t\tcron: {\n\t\t\tenabled: true,\n\t\t},\n\t\thooks: {\n\t\t\tinternal: {\n\t\t\t\tenabled: true,\n\t\t\t\tentries: {\n\t\t\t\t\t\"boot-md\": { enabled: true },\n\t\t\t\t\t\"bootstrap-extra-files\": { enabled: true },\n\t\t\t\t\t\"command-logger\": { enabled: true },\n\t\t\t\t\t\"session-memory\": { enabled: true },\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tweb: {\n\t\t\tenabled: true,\n\t\t},\n\t\tdiscovery: {\n\t\t\twideArea: {\n\t\t\t\tenabled: true,\n\t\t\t},\n\t\t},\n\t\tcanvasHost: {\n\t\t\tenabled: true,\n\t\t\tliveReload: true,\n\t\t},\n\t\tchannels: {},\n\t\tgateway: {\n\t\t\tport: options.gatewayPort,\n\t\t\tmode: \"local\",\n\t\t\tbind: gatewayBind,\n\t\t\tcontrolUi: {\n\t\t\t\tenabled: true,\n\t\t\t\t// Docker NAT makes browser connections appear external — skip device pairing, use token-only auth\n\t\t\t\t...(isDocker ? { allowInsecureAuth: true } : {}),\n\t\t\t\t// Non-loopback binds need explicit origin allowlist for control UI CORS\n\t\t\t\t// Reference: docker-setup.sh ensure_control_ui_allowed_origins()\n\t\t\t\t...(gatewayBind !== \"loopback\"\n\t\t\t\t\t? { allowedOrigins: [`http://127.0.0.1:${options.gatewayPort}`] }\n\t\t\t\t\t: {}),\n\t\t\t},\n\t\t\tauth: {\n\t\t\t\tmode: \"token\",\n\t\t\t\ttoken: \"${OPENCLAW_GATEWAY_TOKEN}\",\n\t\t\t\t...(isDocker ? {} : { allowTailscale: true }),\n\t\t\t},\n\t\t\t// Tailscale serve only works on bare-metal/local (not inside Docker containers)\n\t\t\t...(isDocker ? {} : { tailscale: { mode: \"serve\", resetOnExit: true } }),\n\t\t\tnodes: {\n\t\t\t\tdenyCommands: [\"camera.snap\", \"camera.clip\", \"screen.record\"],\n\t\t\t},\n\t\t},\n\t\tskills: {\n\t\t\tinstall: { nodeManager: \"pnpm\" },\n\t\t\tload: {\n\t\t\t\twatch: true,\n\t\t\t},\n\t\t\t...(Object.keys(defaultSkills).length > 0 ? { entries: defaultSkills } : {}),\n\t\t},\n\t\tplugins: {\n\t\t\tenabled: true,\n\t\t\tentries: {\n\t\t\t\ttelegram: { enabled: true },\n\t\t\t\twhatsapp: { enabled: true },\n\t\t\t\tdiscord: { enabled: true },\n\t\t\t\t\"memory-core\": { enabled: true },\n\t\t\t},\n\t\t},\n\t};\n\n\treturn JSON.stringify(config, null, 2);\n}\n"],"mappings":";;;AAQA,MAAM,mBAA4C;CACjD,QAAQ;EACP,SAAS;EACT,KAAK;EACL,MAAM;EACN,QAAQ;EACR,QAAQ;GACP;IACC,IAAI;IACJ,MAAM;IACN,KAAK;IACL,WAAW;IACX,OAAO,CAAC,QAAQ,QAAQ;IACxB,MAAM;KAAE,OAAO;KAAK,QAAQ;KAAI,WAAW;KAAM,YAAY;KAAK;IAClE,eAAe;IACf,WAAW;IACX;GACD;IACC,IAAI;IACJ,MAAM;IACN,KAAK;IACL,WAAW;IACX,OAAO,CAAC,OAAO;IACf,MAAM;KAAE,OAAO;KAAK,QAAQ;KAAK,WAAW;KAAM,YAAY;KAAK;IACnE,eAAe;IACf,WAAW;IACX;GACD;IACC,IAAI;IACJ,MAAM;IACN,KAAK;IACL,WAAW;IACX,OAAO,CAAC,QAAQ,QAAQ;IACxB,MAAM;KAAE,OAAO;KAAM,QAAQ;KAAK,WAAW;KAAO,YAAY;KAAM;IACtE,eAAe;IACf,WAAW;IACX;GACD;EACD;CACD,WAAW;EACV,SAAS;EACT,KAAK;EACL,MAAM;EACN,QAAQ;EACR,QAAQ,CACP;GACC,IAAI;GACJ,MAAM;GACN,KAAK;GACL,WAAW;GACX,OAAO,CAAC,QAAQ,QAAQ;GACxB,MAAM;IAAE,OAAO;IAAM,QAAQ;IAAM,WAAW;IAAK,YAAY;IAAO;GACtE,eAAe;GACf,WAAW;GACX,EACD;GACC,IAAI;GACJ,MAAM;GACN,KAAK;GACL,WAAW;GACX,OAAO,CAAC,QAAQ,QAAQ;GACxB,MAAM;IAAE,OAAO;IAAK,QAAQ;IAAM,WAAW;IAAK,YAAY;IAAM;GACpE,eAAe;GACf,WAAW;GACX,CACD;EACD;CACD,QAAQ;EACP,SAAS;EACT,KAAK;EACL,MAAM;EACN,QAAQ;EACR,QAAQ,CACP;GACC,IAAI;GACJ,MAAM;GACN,KAAK;GACL,WAAW;GACX,OAAO,CAAC,QAAQ,QAAQ;GACxB,MAAM;IAAE,OAAO;IAAK,QAAQ;IAAK,WAAW;IAAK,YAAY;IAAK;GAClE,eAAe;GACf,WAAW;GACX,EACD;GACC,IAAI;GACJ,MAAM;GACN,KAAK;GACL,WAAW;GACX,OAAO,CAAC,QAAQ,QAAQ;GACxB,MAAM;IAAE,OAAO;IAAM,QAAQ;IAAK,WAAW;IAAQ,YAAY;IAAM;GACvE,eAAe;GACf,WAAW;GACX,CACD;EACD;CACD,KAAK;EACJ,SAAS;EACT,KAAK;EACL,MAAM;EACN,QAAQ;EACR,QAAQ,CACP;GACC,IAAI;GACJ,MAAM;GACN,KAAK;GACL,WAAW;GACX,OAAO,CAAC,QAAQ,QAAQ;GACxB,MAAM;IAAE,OAAO;IAAK,QAAQ;IAAM,WAAW;IAAK,YAAY;IAAK;GACnE,eAAe;GACf,WAAW;GACX,CACD;EACD;CACD,UAAU;EACT,SAAS;EACT,KAAK;EACL,MAAM;EACN,QAAQ;EACR,QAAQ,CACP;GACC,IAAI;GACJ,MAAM;GACN,KAAK;GACL,WAAW;GACX,OAAO,CAAC,OAAO;GACf,MAAM;IAAE,OAAO;IAAM,QAAQ;IAAM,WAAW;IAAO,YAAY;IAAM;GACvE,eAAe;GACf,WAAW;GACX,EACD;GACC,IAAI;GACJ,MAAM;GACN,KAAK;GACL,WAAW;GACX,OAAO,CAAC,OAAO;GACf,MAAM;IAAE,OAAO;IAAM,QAAQ;IAAM,WAAW;IAAM,YAAY;IAAM;GACtE,eAAe;GACf,WAAW;GACX,CACD;EACD;CACD,MAAM;EACL,SAAS;EACT,KAAK;EACL,MAAM;EACN,QAAQ;EACR,QAAQ,CACP;GACC,IAAI;GACJ,MAAM;GACN,KAAK;GACL,WAAW;GACX,OAAO,CAAC,QAAQ,QAAQ;GACxB,MAAM;IAAE,OAAO;IAAM,QAAQ;IAAM;GACnC,eAAe;GACf,WAAW;GACX,CACD;EACD;CACD,YAAY;EACX,SAAS;EACT,KAAK;EACL,MAAM;EACN,QAAQ;EACR,QAAQ,CACP;GACC,IAAI;GACJ,MAAM;GACN,KAAK;GACL,WAAW;GACX,OAAO,CAAC,QAAQ,QAAQ;GACxB,MAAM;IAAE,OAAO;IAAM,QAAQ;IAAM;GACnC,eAAe;GACf,WAAW;GACX,CACD;EACD;CACD,SAAS;EACR,SAAS;EACT,KAAK;EACL,MAAM;EACN,QAAQ;EACR,QAAQ,CACP;GACC,IAAI;GACJ,MAAM;GACN,KAAK;GACL,WAAW;GACX,OAAO,CAAC,OAAO;GACf,MAAM;IAAE,OAAO;IAAK,QAAQ;IAAK;GACjC,eAAe;GACf,WAAW;GACX,CACD;EACD;CACD,UAAU;EACT,SAAS;EACT,KAAK;EACL,MAAM;EACN,QAAQ;EACR,QAAQ,CACP;GACC,IAAI;GACJ,MAAM;GACN,KAAK;GACL,WAAW;GACX,OAAO,CAAC,QAAQ,QAAQ;GACxB,MAAM;IAAE,OAAO;IAAM,QAAQ;IAAM;GACnC,eAAe;GACf,WAAW;GACX,CACD;EACD;CACD,QAAQ;EACP,SAAS;EACT,KAAK;EACL,MAAM;EACN,QAAQ,CACP;GACC,IAAI;GACJ,MAAM;GACN,KAAK;GACL,WAAW;GACX,OAAO,CAAC,OAAO;GACf,MAAM;IAAE,OAAO;IAAG,QAAQ;IAAG;GAC7B,eAAe;GACf,WAAW;GACX,EACD;GACC,IAAI;GACJ,MAAM;GACN,KAAK;GACL,WAAW;GACX,OAAO,CAAC,OAAO;GACf,MAAM;IAAE,OAAO;IAAG,QAAQ;IAAG;GAC7B,eAAe;GACf,WAAW;GACX,CACD;EACD;CACD,gBAAgB;EACf,SAAS;EACT,KAAK;EACL,MAAM;EACN,QAAQ;EACR,QAAQ;GACP;IACC,IAAI;IACJ,MAAM;IACN,KAAK;IACL,WAAW;IACX,OAAO,CAAC,OAAO;IACf,MAAM;KAAE,OAAO;KAAG,QAAQ;KAAG;IAC7B,eAAe;IACf,WAAW;IACX;GACD;IACC,IAAI;IACJ,MAAM;IACN,KAAK;IACL,WAAW;IACX,OAAO,CAAC,OAAO;IACf,MAAM;KAAE,OAAO;KAAG,QAAQ;KAAG;IAC7B,eAAe;IACf,WAAW;IACX;GACD;IACC,IAAI;IACJ,MAAM;IACN,KAAK;IACL,WAAW;IACX,OAAO,CAAC,OAAO;IACf,MAAM;KAAE,OAAO;KAAG,QAAQ;KAAG;IAC7B,eAAe;IACf,WAAW;IACX;GACD;IACC,IAAI;IACJ,MAAM;IACN,KAAK;IACL,WAAW;IACX,OAAO,CAAC,OAAO;IACf,MAAM;KAAE,OAAO;KAAG,QAAQ;KAAG;IAC7B,eAAe;IACf,WAAW;IACX;GACD;IACC,IAAI;IACJ,MAAM;IACN,KAAK;IACL,WAAW;IACX,OAAO,CAAC,QAAQ,QAAQ;IACxB,MAAM;KAAE,OAAO;KAAG,QAAQ;KAAG;IAC7B,eAAe;IACf,WAAW;IACX;GACD;EACD;CACD,UAAU;EACT,SAAS;EACT,KAAK;EACL,MAAM;EACN,QAAQ,CACP;GACC,IAAI;GACJ,MAAM;GACN,KAAK;GACL,WAAW;GACX,OAAO,CAAC,OAAO;GACf,MAAM;IAAE,OAAO;IAAG,QAAQ;IAAG;GAC7B,eAAe;GACf,WAAW;GACX,CACD;EACD;CACD,MAAM;EACL,SAAS;EACT,KAAK;EACL,MAAM;EACN,QAAQ,CACP;GACC,IAAI;GACJ,MAAM;GACN,KAAK;GACL,WAAW;GACX,OAAO,CAAC,OAAO;GACf,MAAM;IAAE,OAAO;IAAG,QAAQ;IAAG;GAC7B,eAAe;GACf,WAAW;GACX,CACD;EACD;CACD;;AAGD,MAAM,uBAA+C;CACpD,QAAQ;CACR,UAAU;CACV,MAAM;CACN;;;;;AAMD,SAAgB,uBACf,UACA,SACS;CACT,MAAM,WAAW,QAAQ,mBAAmB;CAE5C,MAAM,qBAAqB,WAAW,yBAAyB;CAG/D,MAAM,cAAc,WAAW,QAAQ;CACvC,MAAM,gBAAsD,EAAE;AAG9D,MAAK,MAAM,EAAE,gBAAgB,SAAS,SACrC,MAAK,MAAM,SAAS,WAAW,OAC9B,KAAI,MAAM,YACT,eAAc,MAAM,WAAW,EAAE,SAAS,MAAM;CAKnD,MAAM,YAAiC,EAAE;CACzC,MAAM,eAAkD,EAAE;CAC1D,IAAI,eAAe;CAGnB,MAAM,oBACL,SAAS,eAAe,SAAS,YAAY,SAAS,IACnD,SAAS,cACR,CAAC,SAAS;AAEf,MAAK,MAAM,YAAY,mBAAmB;EACzC,MAAM,OAAO,iBAAiB;AAC9B,MAAI,CAAC,KAAM;AAMX,YAAU,YAAY;GACrB,SAHA,KAAK,WAAW,UAAU,mBAAmB,GAAG,qBAAqB,aAAa,IAAK;GAIvF,KAAK,KAAK;GACV,MAAM,KAAK;GACX,GAAI,KAAK,SAAS,EAAE,QAAQ,KAAK,QAAQ,GAAG,EAAE;GAC9C,QAAQ,KAAK;GACb;AAED,OAAK,MAAM,KAAK,KAAK,QAAQ;GAC5B,MAAM,SAAS,GAAG,SAAS,GAAG,EAAE;AAChC,gBAAa,UAAU,EAAE,OAAO,EAAE,MAAM;AACxC,OAAI,CAAC,aAAc,gBAAe;;;CAIpC,MAAM,eAAoC,EACzC,iBAAiB;EAChB,UAAU;EACV,MAAM;EACN,EACD;AAGD,MAAK,MAAM,YAAY,OAAO,KAAK,UAAU,CAC5C,cAAa,GAAG,SAAS,aAAa;EAC3B;EACV,MAAM;EACN;CAGF,MAAM,SAAS;EACd,MAAM;GACL,oBAAoB,QAAQ;GAC5B,gCAAe,IAAI,MAAM,EAAC,aAAa;GACvC;EACD,KAAK;GACJ,UAAU,EACT,SAAS,MACT;GACD,MAAM,EAAE;GACR;EACD,QAAQ;GACP,4BAAW,IAAI,MAAM,EAAC,aAAa;GACnC,gBAAgB,QAAQ;GACxB,gBAAgB;GAChB,aAAa;GACb;EACD,SAAS,EACR,iBAAiB,SACjB;EACD,QAAQ,EACP,cAAc,MACd;EACD,MAAM,EACL,UAAU,cACV;EACD,QAAQ;GACP,MAAM;GACN;GACA;EACD,QAAQ,EACP,UAAU;GACT,OAAO,EACN,SAAS,cACT;GACD,QAAQ;GACR,WAAW,WAAW,mCAAmC;GACzD,YAAY,EAAE,MAAM,aAAa;GACjC,eAAe;GACf,WAAW,EAAE,eAAe,GAAG;GAC/B,EACD;EACD,UAAU,EACT,kBAAkB,kBAClB;EACD,UAAU;GACT,QAAQ;GACR,cAAc;GACd;EACD,MAAM,EACL,SAAS,MACT;EACD,OAAO,EACN,UAAU;GACT,SAAS;GACT,SAAS;IACR,WAAW,EAAE,SAAS,MAAM;IAC5B,yBAAyB,EAAE,SAAS,MAAM;IAC1C,kBAAkB,EAAE,SAAS,MAAM;IACnC,kBAAkB,EAAE,SAAS,MAAM;IACnC;GACD,EACD;EACD,KAAK,EACJ,SAAS,MACT;EACD,WAAW,EACV,UAAU,EACT,SAAS,MACT,EACD;EACD,YAAY;GACX,SAAS;GACT,YAAY;GACZ;EACD,UAAU,EAAE;EACZ,SAAS;GACR,MAAM,QAAQ;GACd,MAAM;GACN,MAAM;GACN,WAAW;IACV,SAAS;IAET,GAAI,WAAW,EAAE,mBAAmB,MAAM,GAAG,EAAE;IAG/C,GAAI,gBAAgB,aACjB,EAAE,gBAAgB,CAAC,oBAAoB,QAAQ,cAAc,EAAE,GAC/D,EAAE;IACL;GACD,MAAM;IACL,MAAM;IACN,OAAO;IACP,GAAI,WAAW,EAAE,GAAG,EAAE,gBAAgB,MAAM;IAC5C;GAED,GAAI,WAAW,EAAE,GAAG,EAAE,WAAW;IAAE,MAAM;IAAS,aAAa;IAAM,EAAE;GACvE,OAAO,EACN,cAAc;IAAC;IAAe;IAAe;IAAgB,EAC7D;GACD;EACD,QAAQ;GACP,SAAS,EAAE,aAAa,QAAQ;GAChC,MAAM,EACL,OAAO,MACP;GACD,GAAI,OAAO,KAAK,cAAc,CAAC,SAAS,IAAI,EAAE,SAAS,eAAe,GAAG,EAAE;GAC3E;EACD,SAAS;GACR,SAAS;GACT,SAAS;IACR,UAAU,EAAE,SAAS,MAAM;IAC3B,UAAU,EAAE,SAAS,MAAM;IAC3B,SAAS,EAAE,SAAS,MAAM;IAC1B,eAAe,EAAE,SAAS,MAAM;IAChC;GACD;EACD;AAED,QAAO,KAAK,UAAU,QAAQ,MAAM,EAAE"}
|
|
1
|
+
{"version":3,"file":"openclaw-json.cjs","names":[],"sources":["../../src/generators/openclaw-json.ts"],"sourcesContent":["import type { AiProvider, DeploymentType, ResolverOutput } from \"../types.js\";\n\nexport interface OpenClawConfigOptions {\n\tdeploymentType: DeploymentType;\n\tgatewayPort: number;\n\topenclawVersion: string;\n}\n\nconst PROVIDER_CONFIGS: Record<AiProvider, any> = {\n\topenai: {\n\t\tbaseUrl: \"https://api.openai.com/v1\",\n\t\tapi: \"openai-completions\",\n\t\tauth: \"api-key\",\n\t\tapiKey: \"${OPENAI_API_KEY}\",\n\t\tmodels: [\n\t\t\t{\n\t\t\t\tid: \"gpt-5\",\n\t\t\t\tname: \"GPT-5\",\n\t\t\t\tapi: \"openai-completions\",\n\t\t\t\treasoning: false,\n\t\t\t\tinput: [\"text\", \"image\"],\n\t\t\t\tcost: { input: 2.5, output: 10, cacheRead: 1.25, cacheWrite: 2.5 },\n\t\t\t\tcontextWindow: 128000,\n\t\t\t\tmaxTokens: 16384,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"o4-mini\",\n\t\t\t\tname: \"o4-mini\",\n\t\t\t\tapi: \"openai-completions\",\n\t\t\t\treasoning: true,\n\t\t\t\tinput: [\"text\"],\n\t\t\t\tcost: { input: 1.1, output: 4.4, cacheRead: 0.55, cacheWrite: 1.1 },\n\t\t\t\tcontextWindow: 200000,\n\t\t\t\tmaxTokens: 100000,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"gpt-5-mini\",\n\t\t\t\tname: \"GPT-5 Mini\",\n\t\t\t\tapi: \"openai-completions\",\n\t\t\t\treasoning: false,\n\t\t\t\tinput: [\"text\", \"image\"],\n\t\t\t\tcost: { input: 0.15, output: 0.6, cacheRead: 0.075, cacheWrite: 0.15 },\n\t\t\t\tcontextWindow: 128000,\n\t\t\t\tmaxTokens: 16384,\n\t\t\t},\n\t\t],\n\t},\n\tanthropic: {\n\t\tbaseUrl: \"https://api.anthropic.com/v1/messages\",\n\t\tapi: \"anthropic-messages\",\n\t\tauth: \"api-key\",\n\t\tapiKey: \"${ANTHROPIC_API_KEY}\",\n\t\tmodels: [\n\t\t\t{\n\t\t\t\tid: \"claude-opus-4-6\",\n\t\t\t\tname: \"Claude 4.6 Opus\",\n\t\t\t\tapi: \"anthropic-messages\",\n\t\t\t\treasoning: true,\n\t\t\t\tinput: [\"text\", \"image\"],\n\t\t\t\tcost: { input: 15.0, output: 75.0, cacheRead: 1.5, cacheWrite: 18.75 },\n\t\t\t\tcontextWindow: 1000000,\n\t\t\t\tmaxTokens: 128000,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"claude-sonnet-4-6\",\n\t\t\t\tname: \"Claude 4.6 Sonnet\",\n\t\t\t\tapi: \"anthropic-messages\",\n\t\t\t\treasoning: true,\n\t\t\t\tinput: [\"text\", \"image\"],\n\t\t\t\tcost: { input: 3.0, output: 15.0, cacheRead: 0.3, cacheWrite: 3.75 },\n\t\t\t\tcontextWindow: 1000000,\n\t\t\t\tmaxTokens: 128000,\n\t\t\t},\n\t\t],\n\t},\n\tgoogle: {\n\t\tbaseUrl: \"https://generativelanguage.googleapis.com/v1beta/openai\",\n\t\tapi: \"openai-completions\",\n\t\tauth: \"api-key\",\n\t\tapiKey: \"${GOOGLE_API_KEY}\",\n\t\tmodels: [\n\t\t\t{\n\t\t\t\tid: \"gemini-3.1-pro-preview\",\n\t\t\t\tname: \"Gemini 3.1 Pro\",\n\t\t\t\tapi: \"openai-completions\",\n\t\t\t\treasoning: true,\n\t\t\t\tinput: [\"text\", \"image\"],\n\t\t\t\tcost: { input: 2.0, output: 8.0, cacheRead: 0.5, cacheWrite: 2.0 },\n\t\t\t\tcontextWindow: 2000000,\n\t\t\t\tmaxTokens: 8192,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"gemini-3-flash-preview\",\n\t\t\t\tname: \"Gemini 3 Flash\",\n\t\t\t\tapi: \"openai-completions\",\n\t\t\t\treasoning: false,\n\t\t\t\tinput: [\"text\", \"image\"],\n\t\t\t\tcost: { input: 0.15, output: 0.6, cacheRead: 0.0375, cacheWrite: 0.15 },\n\t\t\t\tcontextWindow: 1000000,\n\t\t\t\tmaxTokens: 8192,\n\t\t\t},\n\t\t],\n\t},\n\txai: {\n\t\tbaseUrl: \"https://api.x.ai/v1\",\n\t\tapi: \"openai-completions\",\n\t\tauth: \"api-key\",\n\t\tapiKey: \"${XAI_API_KEY}\",\n\t\tmodels: [\n\t\t\t{\n\t\t\t\tid: \"grok-4-fast\",\n\t\t\t\tname: \"Grok 4 Fast\",\n\t\t\t\tapi: \"openai-completions\",\n\t\t\t\treasoning: false,\n\t\t\t\tinput: [\"text\", \"image\"],\n\t\t\t\tcost: { input: 2.0, output: 10.0, cacheRead: 1.0, cacheWrite: 2.0 },\n\t\t\t\tcontextWindow: 256000,\n\t\t\t\tmaxTokens: 32768,\n\t\t\t},\n\t\t],\n\t},\n\tdeepseek: {\n\t\tbaseUrl: \"https://api.deepseek.com/v1\",\n\t\tapi: \"openai-completions\",\n\t\tauth: \"api-key\",\n\t\tapiKey: \"${DEEPSEEK_API_KEY}\",\n\t\tmodels: [\n\t\t\t{\n\t\t\t\tid: \"deepseek-chat\",\n\t\t\t\tname: \"DeepSeek V3\",\n\t\t\t\tapi: \"openai-completions\",\n\t\t\t\treasoning: false,\n\t\t\t\tinput: [\"text\"],\n\t\t\t\tcost: { input: 0.14, output: 0.28, cacheRead: 0.014, cacheWrite: 0.14 },\n\t\t\t\tcontextWindow: 65536,\n\t\t\t\tmaxTokens: 8192,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"deepseek-reasoner\",\n\t\t\t\tname: \"DeepSeek R1\",\n\t\t\t\tapi: \"openai-completions\",\n\t\t\t\treasoning: true,\n\t\t\t\tinput: [\"text\"],\n\t\t\t\tcost: { input: 0.55, output: 2.19, cacheRead: 0.14, cacheWrite: 0.55 },\n\t\t\t\tcontextWindow: 65536,\n\t\t\t\tmaxTokens: 8192,\n\t\t\t},\n\t\t],\n\t},\n\tgroq: {\n\t\tbaseUrl: \"https://api.groq.com/openai/v1\",\n\t\tapi: \"openai-completions\",\n\t\tauth: \"api-key\",\n\t\tapiKey: \"${GROQ_API_KEY}\",\n\t\tmodels: [\n\t\t\t{\n\t\t\t\tid: \"llama-4-maverick\",\n\t\t\t\tname: \"LLaMA 4 Maverick (Groq)\",\n\t\t\t\tapi: \"openai-completions\",\n\t\t\t\treasoning: false,\n\t\t\t\tinput: [\"text\", \"image\"],\n\t\t\t\tcost: { input: 0.59, output: 0.79 },\n\t\t\t\tcontextWindow: 1000000,\n\t\t\t\tmaxTokens: 32768,\n\t\t\t},\n\t\t],\n\t},\n\topenrouter: {\n\t\tbaseUrl: \"https://openrouter.ai/api/v1\",\n\t\tapi: \"openai-completions\",\n\t\tauth: \"api-key\",\n\t\tapiKey: \"${OPENROUTER_API_KEY}\",\n\t\tmodels: [\n\t\t\t{\n\t\t\t\tid: \"anthropic/claude-opus-4-6\",\n\t\t\t\tname: \"Claude 4.6 Opus (OpenRouter)\",\n\t\t\t\tapi: \"openai-completions\",\n\t\t\t\treasoning: true,\n\t\t\t\tinput: [\"text\", \"image\"],\n\t\t\t\tcost: { input: 15.0, output: 75.0 },\n\t\t\t\tcontextWindow: 1000000,\n\t\t\t\tmaxTokens: 128000,\n\t\t\t},\n\t\t],\n\t},\n\tmistral: {\n\t\tbaseUrl: \"https://api.mistral.ai/v1\",\n\t\tapi: \"openai-completions\",\n\t\tauth: \"api-key\",\n\t\tapiKey: \"${MISTRAL_API_KEY}\",\n\t\tmodels: [\n\t\t\t{\n\t\t\t\tid: \"mistral-large-latest\",\n\t\t\t\tname: \"Mistral Large\",\n\t\t\t\tapi: \"openai-completions\",\n\t\t\t\treasoning: false,\n\t\t\t\tinput: [\"text\"],\n\t\t\t\tcost: { input: 2.0, output: 6.0 },\n\t\t\t\tcontextWindow: 131000,\n\t\t\t\tmaxTokens: 8192,\n\t\t\t},\n\t\t],\n\t},\n\ttogether: {\n\t\tbaseUrl: \"https://api.together.xyz/v1\",\n\t\tapi: \"openai-completions\",\n\t\tauth: \"api-key\",\n\t\tapiKey: \"${TOGETHER_API_KEY}\",\n\t\tmodels: [\n\t\t\t{\n\t\t\t\tid: \"meta-llama/Llama-4-Maverick-17B-128E-Instruct-FP8\", // \"meta-llama/Llama-4-Maverick-Instruct-Turbo\",\n\t\t\t\tname: \"LLaMA 4 Maverick (Together)\",\n\t\t\t\tapi: \"openai-completions\",\n\t\t\t\treasoning: false,\n\t\t\t\tinput: [\"text\", \"image\"],\n\t\t\t\tcost: { input: 0.88, output: 0.88 },\n\t\t\t\tcontextWindow: 1000000,\n\t\t\t\tmaxTokens: 32768,\n\t\t\t},\n\t\t],\n\t},\n\tollama: {\n\t\tbaseUrl: null, // dynamic: resolved at generation time based on deployment type\n\t\tapi: \"openai-completions\",\n\t\tauth: \"none\",\n\t\tmodels: [\n\t\t\t{\n\t\t\t\tid: \"llama3:latest\",\n\t\t\t\tname: \"LLaMA 3 (Local)\",\n\t\t\t\tapi: \"openai-completions\",\n\t\t\t\treasoning: false,\n\t\t\t\tinput: [\"text\"],\n\t\t\t\tcost: { input: 0, output: 0 },\n\t\t\t\tcontextWindow: 8192,\n\t\t\t\tmaxTokens: 4096,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"deepseek-r1:latest\",\n\t\t\t\tname: \"DeepSeek R1 (Local)\",\n\t\t\t\tapi: \"openai-completions\",\n\t\t\t\treasoning: true,\n\t\t\t\tinput: [\"text\"],\n\t\t\t\tcost: { input: 0, output: 0 },\n\t\t\t\tcontextWindow: 8192,\n\t\t\t\tmaxTokens: 4096,\n\t\t\t},\n\t\t],\n\t},\n\t\"ollama-cloud\": {\n\t\tbaseUrl: \"https://ollama.com/v1\",\n\t\tapi: \"openai-completions\",\n\t\tauth: \"api-key\",\n\t\tapiKey: \"${OLLAMA_API_KEY}\",\n\t\tmodels: [\n\t\t\t{\n\t\t\t\tid: \"qwen3.5:397b-cloud\",\n\t\t\t\tname: \"Qwen 3.5 397B (Cloud)\",\n\t\t\t\tapi: \"openai-completions\",\n\t\t\t\treasoning: false,\n\t\t\t\tinput: [\"text\"],\n\t\t\t\tcost: { input: 0, output: 0 },\n\t\t\t\tcontextWindow: 131072,\n\t\t\t\tmaxTokens: 32768,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"glm-5:cloud\",\n\t\t\t\tname: \"GLM-5 (Cloud)\",\n\t\t\t\tapi: \"openai-completions\",\n\t\t\t\treasoning: false,\n\t\t\t\tinput: [\"text\"],\n\t\t\t\tcost: { input: 0, output: 0 },\n\t\t\t\tcontextWindow: 131072,\n\t\t\t\tmaxTokens: 32768,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"minimax-m2.5:cloud\",\n\t\t\t\tname: \"MiniMax M2.5 (Cloud)\",\n\t\t\t\tapi: \"openai-completions\",\n\t\t\t\treasoning: false,\n\t\t\t\tinput: [\"text\"],\n\t\t\t\tcost: { input: 0, output: 0 },\n\t\t\t\tcontextWindow: 131072,\n\t\t\t\tmaxTokens: 32768,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"kimi-k2.5:cloud\",\n\t\t\t\tname: \"Kimi K2.5 (Cloud)\",\n\t\t\t\tapi: \"openai-completions\",\n\t\t\t\treasoning: false,\n\t\t\t\tinput: [\"text\"],\n\t\t\t\tcost: { input: 0, output: 0 },\n\t\t\t\tcontextWindow: 131072,\n\t\t\t\tmaxTokens: 32768,\n\t\t\t},\n\t\t\t{\n\t\t\t\tid: \"gemini-3-flash-preview:cloud\",\n\t\t\t\tname: \"Gemini 3 Flash (Cloud)\",\n\t\t\t\tapi: \"openai-completions\",\n\t\t\t\treasoning: false,\n\t\t\t\tinput: [\"text\", \"image\"],\n\t\t\t\tcost: { input: 0, output: 0 },\n\t\t\t\tcontextWindow: 1000000,\n\t\t\t\tmaxTokens: 8192,\n\t\t\t},\n\t\t],\n\t},\n\tlmstudio: {\n\t\tbaseUrl: null, // dynamic: resolved at generation time based on deployment type\n\t\tapi: \"openai-completions\",\n\t\tauth: \"none\",\n\t\tmodels: [\n\t\t\t{\n\t\t\t\tid: \"local-model\",\n\t\t\t\tname: \"LM Studio Model\",\n\t\t\t\tapi: \"openai-completions\",\n\t\t\t\treasoning: false,\n\t\t\t\tinput: [\"text\"],\n\t\t\t\tcost: { input: 0, output: 0 },\n\t\t\t\tcontextWindow: 8192,\n\t\t\t\tmaxTokens: 4096,\n\t\t\t},\n\t\t],\n\t},\n\tvllm: {\n\t\tbaseUrl: null, // dynamic: resolved at generation time based on deployment type\n\t\tapi: \"openai-completions\",\n\t\tauth: \"none\",\n\t\tmodels: [\n\t\t\t{\n\t\t\t\tid: \"local-model\",\n\t\t\t\tname: \"vLLM Model\",\n\t\t\t\tapi: \"openai-completions\",\n\t\t\t\treasoning: false,\n\t\t\t\tinput: [\"text\"],\n\t\t\t\tcost: { input: 0, output: 0 },\n\t\t\t\tcontextWindow: 8192,\n\t\t\t\tmaxTokens: 4096,\n\t\t\t},\n\t\t],\n\t},\n};\n\n/** Default ports for local inference providers (ollama, lmstudio, vllm). */\nconst LOCAL_PROVIDER_PORTS: Record<string, number> = {\n\tollama: 11434,\n\tlmstudio: 1234,\n\tvllm: 8000,\n};\n\n/**\n * Generates a default `openclaw/config/openclaw.json` tailored\n * to the services installed in the stack.\n */\nexport function generateOpenClawConfig(\n\tresolved: ResolverOutput,\n\toptions: OpenClawConfigOptions,\n): string {\n\tconst isDocker = options.deploymentType === \"docker\";\n\t// Docker containers reach host services via host.docker.internal; bare-metal uses localhost\n\tconst localInferenceHost = isDocker ? \"host.docker.internal\" : \"localhost\";\n\t// Docker: bind to all interfaces (0.0.0.0) so port mapping works from host\n\t// Bare-metal/local: bind to loopback (127.0.0.1) for security, Tailscale can expose if needed\n\tconst gatewayBind = isDocker ? \"lan\" : \"loopback\";\n\tconst defaultSkills: Record<string, { enabled: boolean }> = {};\n\n\t// Auto-enable any OpenClaw skills attached to installed companion services\n\tfor (const { definition } of resolved.services) {\n\t\tfor (const skill of definition.skills) {\n\t\t\tif (skill.autoInstall) {\n\t\t\t\tdefaultSkills[skill.skillId] = { enabled: true };\n\t\t\t}\n\t\t}\n\t}\n\n\tconst providers: Record<string, any> = {};\n\tconst agentsModels: Record<string, { alias: string }> = {};\n\tlet primaryModel = \"\";\n\n\t// Always default to empty or the first choice, fallback to openai if nothing was passed\n\tconst selectedProviders =\n\t\tresolved.aiProviders && resolved.aiProviders.length > 0\n\t\t\t? resolved.aiProviders\n\t\t\t: ([\"openai\"] as AiProvider[]);\n\n\tfor (const provider of selectedProviders) {\n\t\tconst meta = PROVIDER_CONFIGS[provider];\n\t\tif (!meta) continue;\n\n\t\t// Local inference providers have null baseUrl — resolve dynamically based on deployment type\n\t\tconst baseUrl =\n\t\t\tmeta.baseUrl ?? `http://${localInferenceHost}:${LOCAL_PROVIDER_PORTS[provider] ?? 8000}/v1`;\n\n\t\tproviders[provider] = {\n\t\t\tbaseUrl,\n\t\t\tapi: meta.api,\n\t\t\tauth: meta.auth,\n\t\t\t...(meta.apiKey ? { apiKey: meta.apiKey } : {}),\n\t\t\tmodels: meta.models,\n\t\t};\n\n\t\tfor (const m of meta.models) {\n\t\t\tconst fullId = `${provider}/${m.id}`;\n\t\t\tagentsModels[fullId] = { alias: m.name };\n\t\t\tif (!primaryModel) primaryModel = fullId; // Use the very first model mapped as the global system default\n\t\t}\n\t}\n\n\tconst authProfiles: Record<string, any> = {\n\t\t\"local:default\": {\n\t\t\tprovider: \"local\",\n\t\t\tmode: \"token\",\n\t\t},\n\t};\n\n\t// Add provider auth profiles too\n\tfor (const provider of Object.keys(providers)) {\n\t\tauthProfiles[`${provider}:default`] = {\n\t\t\tprovider: provider,\n\t\t\tmode: \"api_key\",\n\t\t};\n\t}\n\n\tconst config = {\n\t\tmeta: {\n\t\t\tlastTouchedVersion: options.openclawVersion,\n\t\t\tlastTouchedAt: new Date().toISOString(),\n\t\t},\n\t\tenv: {\n\t\t\tshellEnv: {\n\t\t\t\tenabled: true,\n\t\t\t},\n\t\t\tvars: {},\n\t\t},\n\t\twizard: {\n\t\t\tlastRunAt: new Date().toISOString(),\n\t\t\tlastRunVersion: options.openclawVersion,\n\t\t\tlastRunCommand: \"auto-generated-by-better-openclaw\",\n\t\t\tlastRunMode: \"local\",\n\t\t},\n\t\tlogging: {\n\t\t\tredactSensitive: \"tools\",\n\t\t},\n\t\tupdate: {\n\t\t\tcheckOnStart: true,\n\t\t},\n\t\tauth: {\n\t\t\tprofiles: authProfiles,\n\t\t},\n\t\tmodels: {\n\t\t\tmode: \"merge\",\n\t\t\tproviders,\n\t\t},\n\t\tagents: {\n\t\t\tdefaults: {\n\t\t\t\tmodel: {\n\t\t\t\t\tprimary: primaryModel,\n\t\t\t\t},\n\t\t\t\tmodels: agentsModels,\n\t\t\t\tworkspace: isDocker ? \"/home/node/.openclaw/workspace\" : \"./workspace\",\n\t\t\t\tcompaction: { mode: \"safeguard\" },\n\t\t\t\tmaxConcurrent: 4,\n\t\t\t\tsubagents: { maxConcurrent: 8 },\n\t\t\t},\n\t\t},\n\t\tmessages: {\n\t\t\tackReactionScope: \"group-mentions\",\n\t\t},\n\t\tcommands: {\n\t\t\tnative: \"auto\",\n\t\t\tnativeSkills: \"auto\",\n\t\t},\n\t\tcron: {\n\t\t\tenabled: true,\n\t\t},\n\t\thooks: {\n\t\t\tinternal: {\n\t\t\t\tenabled: true,\n\t\t\t\tentries: {\n\t\t\t\t\t\"boot-md\": { enabled: true },\n\t\t\t\t\t\"bootstrap-extra-files\": { enabled: true },\n\t\t\t\t\t\"command-logger\": { enabled: true },\n\t\t\t\t\t\"session-memory\": { enabled: true },\n\t\t\t\t},\n\t\t\t},\n\t\t},\n\t\tweb: {\n\t\t\tenabled: true,\n\t\t},\n\t\tdiscovery: {\n\t\t\twideArea: {\n\t\t\t\tenabled: true,\n\t\t\t},\n\t\t},\n\t\tcanvasHost: {\n\t\t\tenabled: true,\n\t\t\tliveReload: true,\n\t\t},\n\t\tchannels: {},\n\t\tgateway: {\n\t\t\tport: options.gatewayPort,\n\t\t\tmode: \"local\",\n\t\t\tbind: gatewayBind,\n\t\t\tcontrolUi: {\n\t\t\t\tenabled: true,\n\t\t\t\t// Docker NAT makes browser connections appear external — skip device pairing, use token-only auth\n\t\t\t\t...(isDocker ? { allowInsecureAuth: true } : {}),\n\t\t\t\t// Non-loopback binds need explicit origin allowlist for control UI CORS\n\t\t\t\t// Reference: docker-setup.sh ensure_control_ui_allowed_origins()\n\t\t\t\t...(gatewayBind !== \"loopback\"\n\t\t\t\t\t? { allowedOrigins: [`http://127.0.0.1:${options.gatewayPort}`] }\n\t\t\t\t\t: {}),\n\t\t\t},\n\t\t\tauth: {\n\t\t\t\tmode: \"token\",\n\t\t\t\ttoken: \"${OPENCLAW_GATEWAY_TOKEN}\",\n\t\t\t\t...(isDocker ? {} : { allowTailscale: true }),\n\t\t\t},\n\t\t\t// Tailscale serve only works on bare-metal/local (not inside Docker containers)\n\t\t\t...(isDocker ? {} : { tailscale: { mode: \"serve\", resetOnExit: true } }),\n\t\t\tnodes: {\n\t\t\t\tdenyCommands: [\"camera.snap\", \"camera.clip\", \"screen.record\"],\n\t\t\t},\n\t\t},\n\t\tskills: {\n\t\t\tinstall: { nodeManager: \"pnpm\" },\n\t\t\tload: {\n\t\t\t\twatch: true,\n\t\t\t},\n\t\t\t...(Object.keys(defaultSkills).length > 0 ? { entries: defaultSkills } : {}),\n\t\t},\n\t\tplugins: {\n\t\t\tenabled: true,\n\t\t\tentries: {\n\t\t\t\ttelegram: { enabled: true },\n\t\t\t\twhatsapp: { enabled: true },\n\t\t\t\tdiscord: { enabled: true },\n\t\t\t\t\"memory-core\": { enabled: true },\n\t\t\t},\n\t\t},\n\t};\n\n\treturn JSON.stringify(config, null, 2);\n}\n"],"mappings":"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"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value:
|
|
2
|
-
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
2
|
//#region src/generators/postgres-init.ts
|
|
4
3
|
/**
|
|
5
4
|
* Known database requirements for services that need their own PostgreSQL database.
|
|
@@ -76,6 +75,36 @@ const DB_REQUIREMENTS = {
|
|
|
76
75
|
dbUser: "authentik",
|
|
77
76
|
passwordEnvVar: "AUTHENTIK_DB_PASSWORD"
|
|
78
77
|
},
|
|
78
|
+
chatwoot: {
|
|
79
|
+
dbName: "chatwoot",
|
|
80
|
+
dbUser: "chatwoot",
|
|
81
|
+
passwordEnvVar: "CHATWOOT_DB_PASSWORD"
|
|
82
|
+
},
|
|
83
|
+
firecrawl: {
|
|
84
|
+
dbName: "firecrawl",
|
|
85
|
+
dbUser: "firecrawl",
|
|
86
|
+
passwordEnvVar: "FIRECRAWL_DB_PASSWORD"
|
|
87
|
+
},
|
|
88
|
+
flagsmith: {
|
|
89
|
+
dbName: "flagsmith",
|
|
90
|
+
dbUser: "flagsmith",
|
|
91
|
+
passwordEnvVar: "FLAGSMITH_DB_PASSWORD"
|
|
92
|
+
},
|
|
93
|
+
infisical: {
|
|
94
|
+
dbName: "infisical",
|
|
95
|
+
dbUser: "infisical",
|
|
96
|
+
passwordEnvVar: "INFISICAL_DB_PASSWORD"
|
|
97
|
+
},
|
|
98
|
+
keycloak: {
|
|
99
|
+
dbName: "keycloak",
|
|
100
|
+
dbUser: "keycloak",
|
|
101
|
+
passwordEnvVar: "KEYCLOAK_DB_PASSWORD"
|
|
102
|
+
},
|
|
103
|
+
listmonk: {
|
|
104
|
+
dbName: "listmonk",
|
|
105
|
+
dbUser: "listmonk",
|
|
106
|
+
passwordEnvVar: "LISTMONK_DB_PASSWORD"
|
|
107
|
+
},
|
|
79
108
|
"lasuite-meet-backend": {
|
|
80
109
|
dbName: "meet",
|
|
81
110
|
dbUser: "meet",
|
|
@@ -182,8 +211,8 @@ echo " Services: ${reqs.map((r) => r.serviceName).join(", ")}"
|
|
|
182
211
|
echo "═══════════════════════════════════════════════════════════"
|
|
183
212
|
`;
|
|
184
213
|
}
|
|
185
|
-
|
|
186
214
|
//#endregion
|
|
187
215
|
exports.generatePostgresInit = generatePostgresInit;
|
|
188
216
|
exports.getDbRequirements = getDbRequirements;
|
|
217
|
+
|
|
189
218
|
//# sourceMappingURL=postgres-init.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgres-init.cjs","names":[],"sources":["../../src/generators/postgres-init.ts"],"sourcesContent":["import type { ResolverOutput } from \"../types.js\";\n\n/**\n * Database requirement descriptor for a service.\n */\ninterface DbRequirement {\n\tserviceId: string;\n\tserviceName: string;\n\tdbName: string;\n\tdbUser: string;\n\tpasswordEnvVar: string;\n}\n\n/**\n * Known database requirements for services that need their own PostgreSQL database.\n * Maps service ID to the DB name, user, and password env var they expect.\n */\nconst DB_REQUIREMENTS: Record<string, Omit<DbRequirement, \"serviceId\" | \"serviceName\">> = {\n\tn8n: { dbName: \"n8n\", dbUser: \"n8n\", passwordEnvVar: \"N8N_DB_PASSWORD\" },\n\tpostiz: { dbName: \"postiz\", dbUser: \"postiz\", passwordEnvVar: \"POSTIZ_DB_PASSWORD\" },\n\toutline: { dbName: \"outline\", dbUser: \"outline\", passwordEnvVar: \"OUTLINE_DB_PASSWORD\" },\n\tdify: { dbName: \"dify\", dbUser: \"dify\", passwordEnvVar: \"DIFY_DB_PASSWORD\" },\n\ttemporal: { dbName: \"temporal\", dbUser: \"temporal\", passwordEnvVar: \"TEMPORAL_DB_PASSWORD\" },\n\tmattermost: {\n\t\tdbName: \"mattermost\",\n\t\tdbUser: \"mattermost\",\n\t\tpasswordEnvVar: \"MATTERMOST_DB_PASSWORD\",\n\t},\n\t\"matrix-synapse\": { dbName: \"synapse\", dbUser: \"synapse\", passwordEnvVar: \"SYNAPSE_DB_PASSWORD\" },\n\t\"paperless-ngx\": {\n\t\tdbName: \"paperless\",\n\t\tdbUser: \"paperless\",\n\t\tpasswordEnvVar: \"PAPERLESS_DB_PASSWORD\",\n\t},\n\tumami: { dbName: \"umami\", dbUser: \"umami\", passwordEnvVar: \"UMAMI_DB_PASSWORD\" },\n\tmatomo: { dbName: \"matomo\", dbUser: \"matomo\", passwordEnvVar: \"MATOMO_DB_PASSWORD\" },\n\tmixpost: { dbName: \"mixpost\", dbUser: \"mixpost\", passwordEnvVar: \"MIXPOST_DB_PASSWORD\" },\n\t\"cal-com\": { dbName: \"calcom\", dbUser: \"calcom\", passwordEnvVar: \"CALCOM_DB_PASSWORD\" },\n\timmich: { dbName: \"immich\", dbUser: \"immich\", passwordEnvVar: \"IMMICH_DB_PASSWORD\" },\n\tauthentik: { dbName: \"authentik\", dbUser: \"authentik\", passwordEnvVar: \"AUTHENTIK_DB_PASSWORD\" },\n\t\"lasuite-meet-backend\": {\n\t\tdbName: \"meet\",\n\t\tdbUser: \"meet\",\n\t\tpasswordEnvVar: \"LASUITE_MEET_DB_PASSWORD\",\n\t},\n\topenpanel: { dbName: \"openpanel\", dbUser: \"openpanel\", passwordEnvVar: \"OPENPANEL_DB_PASSWORD\" },\n\tusesend: { dbName: \"usesend\", dbUser: \"usesend\", passwordEnvVar: \"USESEND_DB_PASSWORD\" },\n\tnextcloud: { dbName: \"nextcloud\", dbUser: \"nextcloud\", passwordEnvVar: \"NEXTCLOUD_DB_PASSWORD\" },\n};\n\n/**\n * Get the list of database requirements for all resolved services.\n * Exported so other generators (env, composer) can access the same data.\n */\nexport function getDbRequirements(resolved: ResolverOutput): DbRequirement[] {\n\tconst reqs: DbRequirement[] = [];\n\tfor (const { definition } of resolved.services) {\n\t\tconst req = DB_REQUIREMENTS[definition.id];\n\t\tif (req) {\n\t\t\treqs.push({\n\t\t\t\tserviceId: definition.id,\n\t\t\t\tserviceName: definition.name,\n\t\t\t\t...req,\n\t\t\t});\n\t\t}\n\t}\n\treturn reqs;\n}\n\n/**\n * Generates a PostgreSQL initialization script that creates databases and users\n * for all companion services that need their own DB.\n *\n * Returns null if PostgreSQL is not in the resolved stack or no services need extra DBs.\n * The script is designed to be mounted at /docker-entrypoint-initdb.d/init-databases.sh\n * and runs automatically during PostgreSQL's first initialization.\n */\nexport function generatePostgresInit(resolved: ResolverOutput): string | null {\n\tconst hasPostgres = resolved.services.some((s) => s.definition.id === \"postgresql\");\n\tif (!hasPostgres) return null;\n\n\tconst reqs = getDbRequirements(resolved);\n\tif (reqs.length === 0) return null;\n\n\tconst createCalls = reqs\n\t\t.map(\n\t\t\t(r) =>\n\t\t\t\t`create_db_and_user \"${r.dbName}\" \"${r.dbUser}\" \"\\${${r.passwordEnvVar}:-$POSTGRES_PASSWORD}\"`,\n\t\t)\n\t\t.join(\"\\n\");\n\n\treturn `#!/bin/bash\nset -e\n\n# ═══════════════════════════════════════════════════════════════════════════════\n# PostgreSQL Initialization Script\n# Generated by better-openclaw\n#\n# This script runs automatically during PostgreSQL's first initialization.\n# It creates databases and users for all companion services in your stack.\n# ═══════════════════════════════════════════════════════════════════════════════\n\ncreate_db_and_user() {\n local db=\"$1\"\n local user=\"$2\"\n local password=\"$3\"\n\n echo \">>> Creating database '$db' with user '$user'...\"\n\n psql -v ON_ERROR_STOP=1 --username \"$POSTGRES_USER\" --dbname \"$POSTGRES_DB\" <<-EOSQL\n -- Create user if not exists\n DO \\\\$\\\\$\n BEGIN\n IF NOT EXISTS (SELECT FROM pg_catalog.pg_roles WHERE rolname = '$user') THEN\n CREATE ROLE \"$user\" WITH LOGIN PASSWORD '$password';\n RAISE NOTICE 'Created user: $user';\n ELSE\n -- Update password in case it changed\n ALTER ROLE \"$user\" WITH PASSWORD '$password';\n RAISE NOTICE 'User already exists, updated password: $user';\n END IF;\n END\n \\\\$\\\\$;\n\n -- Create database if not exists\n SELECT 'CREATE DATABASE \"$db\" OWNER \"$user\"'\n WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = '$db')\\\\gexec\n\n -- Grant privileges\n GRANT ALL PRIVILEGES ON DATABASE \"$db\" TO \"$user\";\nEOSQL\n\n echo \">>> Done: database '$db' with user '$user'\"\n}\n\necho \"═══════════════════════════════════════════════════════════\"\necho \" Initializing databases for companion services...\"\necho \"═══════════════════════════════════════════════════════════\"\n\n${createCalls}\n\necho \"\"\necho \"═══════════════════════════════════════════════════════════\"\necho \" All databases initialized successfully!\"\necho \" Services: ${reqs.map((r) => r.serviceName).join(\", \")}\"\necho \"═══════════════════════════════════════════════════════════\"\n`;\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"postgres-init.cjs","names":[],"sources":["../../src/generators/postgres-init.ts"],"sourcesContent":["import type { ResolverOutput } from \"../types.js\";\n\n/**\n * Database requirement descriptor for a service.\n */\ninterface DbRequirement {\n\tserviceId: string;\n\tserviceName: string;\n\tdbName: string;\n\tdbUser: string;\n\tpasswordEnvVar: string;\n}\n\n/**\n * Known database requirements for services that need their own PostgreSQL database.\n * Maps service ID to the DB name, user, and password env var they expect.\n */\nconst DB_REQUIREMENTS: Record<string, Omit<DbRequirement, \"serviceId\" | \"serviceName\">> = {\n\tn8n: { dbName: \"n8n\", dbUser: \"n8n\", passwordEnvVar: \"N8N_DB_PASSWORD\" },\n\tpostiz: { dbName: \"postiz\", dbUser: \"postiz\", passwordEnvVar: \"POSTIZ_DB_PASSWORD\" },\n\toutline: { dbName: \"outline\", dbUser: \"outline\", passwordEnvVar: \"OUTLINE_DB_PASSWORD\" },\n\tdify: { dbName: \"dify\", dbUser: \"dify\", passwordEnvVar: \"DIFY_DB_PASSWORD\" },\n\ttemporal: { dbName: \"temporal\", dbUser: \"temporal\", passwordEnvVar: \"TEMPORAL_DB_PASSWORD\" },\n\tmattermost: {\n\t\tdbName: \"mattermost\",\n\t\tdbUser: \"mattermost\",\n\t\tpasswordEnvVar: \"MATTERMOST_DB_PASSWORD\",\n\t},\n\t\"matrix-synapse\": { dbName: \"synapse\", dbUser: \"synapse\", passwordEnvVar: \"SYNAPSE_DB_PASSWORD\" },\n\t\"paperless-ngx\": {\n\t\tdbName: \"paperless\",\n\t\tdbUser: \"paperless\",\n\t\tpasswordEnvVar: \"PAPERLESS_DB_PASSWORD\",\n\t},\n\tumami: { dbName: \"umami\", dbUser: \"umami\", passwordEnvVar: \"UMAMI_DB_PASSWORD\" },\n\tmatomo: { dbName: \"matomo\", dbUser: \"matomo\", passwordEnvVar: \"MATOMO_DB_PASSWORD\" },\n\tmixpost: { dbName: \"mixpost\", dbUser: \"mixpost\", passwordEnvVar: \"MIXPOST_DB_PASSWORD\" },\n\t\"cal-com\": { dbName: \"calcom\", dbUser: \"calcom\", passwordEnvVar: \"CALCOM_DB_PASSWORD\" },\n\timmich: { dbName: \"immich\", dbUser: \"immich\", passwordEnvVar: \"IMMICH_DB_PASSWORD\" },\n\tauthentik: { dbName: \"authentik\", dbUser: \"authentik\", passwordEnvVar: \"AUTHENTIK_DB_PASSWORD\" },\n\tchatwoot: { dbName: \"chatwoot\", dbUser: \"chatwoot\", passwordEnvVar: \"CHATWOOT_DB_PASSWORD\" },\n\tfirecrawl: { dbName: \"firecrawl\", dbUser: \"firecrawl\", passwordEnvVar: \"FIRECRAWL_DB_PASSWORD\" },\n\tflagsmith: { dbName: \"flagsmith\", dbUser: \"flagsmith\", passwordEnvVar: \"FLAGSMITH_DB_PASSWORD\" },\n\tinfisical: { dbName: \"infisical\", dbUser: \"infisical\", passwordEnvVar: \"INFISICAL_DB_PASSWORD\" },\n\tkeycloak: { dbName: \"keycloak\", dbUser: \"keycloak\", passwordEnvVar: \"KEYCLOAK_DB_PASSWORD\" },\n\tlistmonk: { dbName: \"listmonk\", dbUser: \"listmonk\", passwordEnvVar: \"LISTMONK_DB_PASSWORD\" },\n\t\"lasuite-meet-backend\": {\n\t\tdbName: \"meet\",\n\t\tdbUser: \"meet\",\n\t\tpasswordEnvVar: \"LASUITE_MEET_DB_PASSWORD\",\n\t},\n\topenpanel: { dbName: \"openpanel\", dbUser: \"openpanel\", passwordEnvVar: \"OPENPANEL_DB_PASSWORD\" },\n\tusesend: { dbName: \"usesend\", dbUser: \"usesend\", passwordEnvVar: \"USESEND_DB_PASSWORD\" },\n\tnextcloud: { dbName: \"nextcloud\", dbUser: \"nextcloud\", passwordEnvVar: \"NEXTCLOUD_DB_PASSWORD\" },\n};\n\n/**\n * Get the list of database requirements for all resolved services.\n * Exported so other generators (env, composer) can access the same data.\n */\nexport function getDbRequirements(resolved: ResolverOutput): DbRequirement[] {\n\tconst reqs: DbRequirement[] = [];\n\tfor (const { definition } of resolved.services) {\n\t\tconst req = DB_REQUIREMENTS[definition.id];\n\t\tif (req) {\n\t\t\treqs.push({\n\t\t\t\tserviceId: definition.id,\n\t\t\t\tserviceName: definition.name,\n\t\t\t\t...req,\n\t\t\t});\n\t\t}\n\t}\n\treturn reqs;\n}\n\n/**\n * Generates a PostgreSQL initialization script that creates databases and users\n * for all companion services that need their own DB.\n *\n * Returns null if PostgreSQL is not in the resolved stack or no services need extra DBs.\n * The script is designed to be mounted at /docker-entrypoint-initdb.d/init-databases.sh\n * and runs automatically during PostgreSQL's first initialization.\n */\nexport function generatePostgresInit(resolved: ResolverOutput): string | null {\n\tconst hasPostgres = resolved.services.some((s) => s.definition.id === \"postgresql\");\n\tif (!hasPostgres) return null;\n\n\tconst reqs = getDbRequirements(resolved);\n\tif (reqs.length === 0) return null;\n\n\tconst createCalls = reqs\n\t\t.map(\n\t\t\t(r) =>\n\t\t\t\t`create_db_and_user \"${r.dbName}\" \"${r.dbUser}\" \"\\${${r.passwordEnvVar}:-$POSTGRES_PASSWORD}\"`,\n\t\t)\n\t\t.join(\"\\n\");\n\n\treturn `#!/bin/bash\nset -e\n\n# ═══════════════════════════════════════════════════════════════════════════════\n# PostgreSQL Initialization Script\n# Generated by better-openclaw\n#\n# This script runs automatically during PostgreSQL's first initialization.\n# It creates databases and users for all companion services in your stack.\n# ═══════════════════════════════════════════════════════════════════════════════\n\ncreate_db_and_user() {\n local db=\"$1\"\n local user=\"$2\"\n local password=\"$3\"\n\n echo \">>> Creating database '$db' with user '$user'...\"\n\n psql -v ON_ERROR_STOP=1 --username \"$POSTGRES_USER\" --dbname \"$POSTGRES_DB\" <<-EOSQL\n -- Create user if not exists\n DO \\\\$\\\\$\n BEGIN\n IF NOT EXISTS (SELECT FROM pg_catalog.pg_roles WHERE rolname = '$user') THEN\n CREATE ROLE \"$user\" WITH LOGIN PASSWORD '$password';\n RAISE NOTICE 'Created user: $user';\n ELSE\n -- Update password in case it changed\n ALTER ROLE \"$user\" WITH PASSWORD '$password';\n RAISE NOTICE 'User already exists, updated password: $user';\n END IF;\n END\n \\\\$\\\\$;\n\n -- Create database if not exists\n SELECT 'CREATE DATABASE \"$db\" OWNER \"$user\"'\n WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = '$db')\\\\gexec\n\n -- Grant privileges\n GRANT ALL PRIVILEGES ON DATABASE \"$db\" TO \"$user\";\nEOSQL\n\n echo \">>> Done: database '$db' with user '$user'\"\n}\n\necho \"═══════════════════════════════════════════════════════════\"\necho \" Initializing databases for companion services...\"\necho \"═══════════════════════════════════════════════════════════\"\n\n${createCalls}\n\necho \"\"\necho \"═══════════════════════════════════════════════════════════\"\necho \" All databases initialized successfully!\"\necho \" Services: ${reqs.map((r) => r.serviceName).join(\", \")}\"\necho \"═══════════════════════════════════════════════════════════\"\n`;\n}\n"],"mappings":";;;;;;AAiBA,MAAM,kBAAoF;CACzF,KAAK;EAAE,QAAQ;EAAO,QAAQ;EAAO,gBAAgB;EAAmB;CACxE,QAAQ;EAAE,QAAQ;EAAU,QAAQ;EAAU,gBAAgB;EAAsB;CACpF,SAAS;EAAE,QAAQ;EAAW,QAAQ;EAAW,gBAAgB;EAAuB;CACxF,MAAM;EAAE,QAAQ;EAAQ,QAAQ;EAAQ,gBAAgB;EAAoB;CAC5E,UAAU;EAAE,QAAQ;EAAY,QAAQ;EAAY,gBAAgB;EAAwB;CAC5F,YAAY;EACX,QAAQ;EACR,QAAQ;EACR,gBAAgB;EAChB;CACD,kBAAkB;EAAE,QAAQ;EAAW,QAAQ;EAAW,gBAAgB;EAAuB;CACjG,iBAAiB;EAChB,QAAQ;EACR,QAAQ;EACR,gBAAgB;EAChB;CACD,OAAO;EAAE,QAAQ;EAAS,QAAQ;EAAS,gBAAgB;EAAqB;CAChF,QAAQ;EAAE,QAAQ;EAAU,QAAQ;EAAU,gBAAgB;EAAsB;CACpF,SAAS;EAAE,QAAQ;EAAW,QAAQ;EAAW,gBAAgB;EAAuB;CACxF,WAAW;EAAE,QAAQ;EAAU,QAAQ;EAAU,gBAAgB;EAAsB;CACvF,QAAQ;EAAE,QAAQ;EAAU,QAAQ;EAAU,gBAAgB;EAAsB;CACpF,WAAW;EAAE,QAAQ;EAAa,QAAQ;EAAa,gBAAgB;EAAyB;CAChG,UAAU;EAAE,QAAQ;EAAY,QAAQ;EAAY,gBAAgB;EAAwB;CAC5F,WAAW;EAAE,QAAQ;EAAa,QAAQ;EAAa,gBAAgB;EAAyB;CAChG,WAAW;EAAE,QAAQ;EAAa,QAAQ;EAAa,gBAAgB;EAAyB;CAChG,WAAW;EAAE,QAAQ;EAAa,QAAQ;EAAa,gBAAgB;EAAyB;CAChG,UAAU;EAAE,QAAQ;EAAY,QAAQ;EAAY,gBAAgB;EAAwB;CAC5F,UAAU;EAAE,QAAQ;EAAY,QAAQ;EAAY,gBAAgB;EAAwB;CAC5F,wBAAwB;EACvB,QAAQ;EACR,QAAQ;EACR,gBAAgB;EAChB;CACD,WAAW;EAAE,QAAQ;EAAa,QAAQ;EAAa,gBAAgB;EAAyB;CAChG,SAAS;EAAE,QAAQ;EAAW,QAAQ;EAAW,gBAAgB;EAAuB;CACxF,WAAW;EAAE,QAAQ;EAAa,QAAQ;EAAa,gBAAgB;EAAyB;CAChG;;;;;AAMD,SAAgB,kBAAkB,UAA2C;CAC5E,MAAM,OAAwB,EAAE;AAChC,MAAK,MAAM,EAAE,gBAAgB,SAAS,UAAU;EAC/C,MAAM,MAAM,gBAAgB,WAAW;AACvC,MAAI,IACH,MAAK,KAAK;GACT,WAAW,WAAW;GACtB,aAAa,WAAW;GACxB,GAAG;GACH,CAAC;;AAGJ,QAAO;;;;;;;;;;AAWR,SAAgB,qBAAqB,UAAyC;AAE7E,KAAI,CADgB,SAAS,SAAS,MAAM,MAAM,EAAE,WAAW,OAAO,aAAa,CACjE,QAAO;CAEzB,MAAM,OAAO,kBAAkB,SAAS;AACxC,KAAI,KAAK,WAAW,EAAG,QAAO;AAS9B,QAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAPa,KAClB,KACC,MACA,uBAAuB,EAAE,OAAO,KAAK,EAAE,OAAO,QAAQ,EAAE,eAAe,wBACxE,CACA,KAAK,KAAK,CAkDC;;;;;mBAKK,KAAK,KAAK,MAAM,EAAE,YAAY,CAAC,KAAK,KAAK,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgres-init.d.cts","names":[],"sources":["../../src/generators/postgres-init.ts"],"mappings":";;;;;AAAkD;UAKxC,aAAA;EACT,SAAA;EACA,WAAA;EACA,MAAA;EACA,MAAA;EACA,cAAA;AAAA;;;;
|
|
1
|
+
{"version":3,"file":"postgres-init.d.cts","names":[],"sources":["../../src/generators/postgres-init.ts"],"mappings":";;;;;AAAkD;UAKxC,aAAA;EACT,SAAA;EACA,WAAA;EACA,MAAA;EACA,MAAA;EACA,cAAA;AAAA;;;;AAkDD;iBAAgB,iBAAA,CAAkB,QAAA,EAAU,cAAA,GAAiB,aAAA;;;;;;;;AAuB7D;iBAAgB,oBAAA,CAAqB,QAAA,EAAU,cAAA"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgres-init.d.mts","names":[],"sources":["../../src/generators/postgres-init.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"postgres-init.d.mts","names":[],"sources":["../../src/generators/postgres-init.ts"],"mappings":";;;;;;UAKU,aAAA;EACT,SAAA;EACA,WAAA;EACA,MAAA;EACA,MAAA;EACA,cAAA;AAAA;;;;;iBAkDe,iBAAA,CAAkB,QAAA,EAAU,cAAA,GAAiB,aAAA;;;;;;;;;iBAuB7C,oBAAA,CAAqB,QAAA,EAAU,cAAA"}
|
|
@@ -74,6 +74,36 @@ const DB_REQUIREMENTS = {
|
|
|
74
74
|
dbUser: "authentik",
|
|
75
75
|
passwordEnvVar: "AUTHENTIK_DB_PASSWORD"
|
|
76
76
|
},
|
|
77
|
+
chatwoot: {
|
|
78
|
+
dbName: "chatwoot",
|
|
79
|
+
dbUser: "chatwoot",
|
|
80
|
+
passwordEnvVar: "CHATWOOT_DB_PASSWORD"
|
|
81
|
+
},
|
|
82
|
+
firecrawl: {
|
|
83
|
+
dbName: "firecrawl",
|
|
84
|
+
dbUser: "firecrawl",
|
|
85
|
+
passwordEnvVar: "FIRECRAWL_DB_PASSWORD"
|
|
86
|
+
},
|
|
87
|
+
flagsmith: {
|
|
88
|
+
dbName: "flagsmith",
|
|
89
|
+
dbUser: "flagsmith",
|
|
90
|
+
passwordEnvVar: "FLAGSMITH_DB_PASSWORD"
|
|
91
|
+
},
|
|
92
|
+
infisical: {
|
|
93
|
+
dbName: "infisical",
|
|
94
|
+
dbUser: "infisical",
|
|
95
|
+
passwordEnvVar: "INFISICAL_DB_PASSWORD"
|
|
96
|
+
},
|
|
97
|
+
keycloak: {
|
|
98
|
+
dbName: "keycloak",
|
|
99
|
+
dbUser: "keycloak",
|
|
100
|
+
passwordEnvVar: "KEYCLOAK_DB_PASSWORD"
|
|
101
|
+
},
|
|
102
|
+
listmonk: {
|
|
103
|
+
dbName: "listmonk",
|
|
104
|
+
dbUser: "listmonk",
|
|
105
|
+
passwordEnvVar: "LISTMONK_DB_PASSWORD"
|
|
106
|
+
},
|
|
77
107
|
"lasuite-meet-backend": {
|
|
78
108
|
dbName: "meet",
|
|
79
109
|
dbUser: "meet",
|
|
@@ -180,7 +210,7 @@ echo " Services: ${reqs.map((r) => r.serviceName).join(", ")}"
|
|
|
180
210
|
echo "═══════════════════════════════════════════════════════════"
|
|
181
211
|
`;
|
|
182
212
|
}
|
|
183
|
-
|
|
184
213
|
//#endregion
|
|
185
214
|
export { generatePostgresInit, getDbRequirements };
|
|
215
|
+
|
|
186
216
|
//# sourceMappingURL=postgres-init.mjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"postgres-init.mjs","names":[],"sources":["../../src/generators/postgres-init.ts"],"sourcesContent":["import type { ResolverOutput } from \"../types.js\";\n\n/**\n * Database requirement descriptor for a service.\n */\ninterface DbRequirement {\n\tserviceId: string;\n\tserviceName: string;\n\tdbName: string;\n\tdbUser: string;\n\tpasswordEnvVar: string;\n}\n\n/**\n * Known database requirements for services that need their own PostgreSQL database.\n * Maps service ID to the DB name, user, and password env var they expect.\n */\nconst DB_REQUIREMENTS: Record<string, Omit<DbRequirement, \"serviceId\" | \"serviceName\">> = {\n\tn8n: { dbName: \"n8n\", dbUser: \"n8n\", passwordEnvVar: \"N8N_DB_PASSWORD\" },\n\tpostiz: { dbName: \"postiz\", dbUser: \"postiz\", passwordEnvVar: \"POSTIZ_DB_PASSWORD\" },\n\toutline: { dbName: \"outline\", dbUser: \"outline\", passwordEnvVar: \"OUTLINE_DB_PASSWORD\" },\n\tdify: { dbName: \"dify\", dbUser: \"dify\", passwordEnvVar: \"DIFY_DB_PASSWORD\" },\n\ttemporal: { dbName: \"temporal\", dbUser: \"temporal\", passwordEnvVar: \"TEMPORAL_DB_PASSWORD\" },\n\tmattermost: {\n\t\tdbName: \"mattermost\",\n\t\tdbUser: \"mattermost\",\n\t\tpasswordEnvVar: \"MATTERMOST_DB_PASSWORD\",\n\t},\n\t\"matrix-synapse\": { dbName: \"synapse\", dbUser: \"synapse\", passwordEnvVar: \"SYNAPSE_DB_PASSWORD\" },\n\t\"paperless-ngx\": {\n\t\tdbName: \"paperless\",\n\t\tdbUser: \"paperless\",\n\t\tpasswordEnvVar: \"PAPERLESS_DB_PASSWORD\",\n\t},\n\tumami: { dbName: \"umami\", dbUser: \"umami\", passwordEnvVar: \"UMAMI_DB_PASSWORD\" },\n\tmatomo: { dbName: \"matomo\", dbUser: \"matomo\", passwordEnvVar: \"MATOMO_DB_PASSWORD\" },\n\tmixpost: { dbName: \"mixpost\", dbUser: \"mixpost\", passwordEnvVar: \"MIXPOST_DB_PASSWORD\" },\n\t\"cal-com\": { dbName: \"calcom\", dbUser: \"calcom\", passwordEnvVar: \"CALCOM_DB_PASSWORD\" },\n\timmich: { dbName: \"immich\", dbUser: \"immich\", passwordEnvVar: \"IMMICH_DB_PASSWORD\" },\n\tauthentik: { dbName: \"authentik\", dbUser: \"authentik\", passwordEnvVar: \"AUTHENTIK_DB_PASSWORD\" },\n\t\"lasuite-meet-backend\": {\n\t\tdbName: \"meet\",\n\t\tdbUser: \"meet\",\n\t\tpasswordEnvVar: \"LASUITE_MEET_DB_PASSWORD\",\n\t},\n\topenpanel: { dbName: \"openpanel\", dbUser: \"openpanel\", passwordEnvVar: \"OPENPANEL_DB_PASSWORD\" },\n\tusesend: { dbName: \"usesend\", dbUser: \"usesend\", passwordEnvVar: \"USESEND_DB_PASSWORD\" },\n\tnextcloud: { dbName: \"nextcloud\", dbUser: \"nextcloud\", passwordEnvVar: \"NEXTCLOUD_DB_PASSWORD\" },\n};\n\n/**\n * Get the list of database requirements for all resolved services.\n * Exported so other generators (env, composer) can access the same data.\n */\nexport function getDbRequirements(resolved: ResolverOutput): DbRequirement[] {\n\tconst reqs: DbRequirement[] = [];\n\tfor (const { definition } of resolved.services) {\n\t\tconst req = DB_REQUIREMENTS[definition.id];\n\t\tif (req) {\n\t\t\treqs.push({\n\t\t\t\tserviceId: definition.id,\n\t\t\t\tserviceName: definition.name,\n\t\t\t\t...req,\n\t\t\t});\n\t\t}\n\t}\n\treturn reqs;\n}\n\n/**\n * Generates a PostgreSQL initialization script that creates databases and users\n * for all companion services that need their own DB.\n *\n * Returns null if PostgreSQL is not in the resolved stack or no services need extra DBs.\n * The script is designed to be mounted at /docker-entrypoint-initdb.d/init-databases.sh\n * and runs automatically during PostgreSQL's first initialization.\n */\nexport function generatePostgresInit(resolved: ResolverOutput): string | null {\n\tconst hasPostgres = resolved.services.some((s) => s.definition.id === \"postgresql\");\n\tif (!hasPostgres) return null;\n\n\tconst reqs = getDbRequirements(resolved);\n\tif (reqs.length === 0) return null;\n\n\tconst createCalls = reqs\n\t\t.map(\n\t\t\t(r) =>\n\t\t\t\t`create_db_and_user \"${r.dbName}\" \"${r.dbUser}\" \"\\${${r.passwordEnvVar}:-$POSTGRES_PASSWORD}\"`,\n\t\t)\n\t\t.join(\"\\n\");\n\n\treturn `#!/bin/bash\nset -e\n\n# ═══════════════════════════════════════════════════════════════════════════════\n# PostgreSQL Initialization Script\n# Generated by better-openclaw\n#\n# This script runs automatically during PostgreSQL's first initialization.\n# It creates databases and users for all companion services in your stack.\n# ═══════════════════════════════════════════════════════════════════════════════\n\ncreate_db_and_user() {\n local db=\"$1\"\n local user=\"$2\"\n local password=\"$3\"\n\n echo \">>> Creating database '$db' with user '$user'...\"\n\n psql -v ON_ERROR_STOP=1 --username \"$POSTGRES_USER\" --dbname \"$POSTGRES_DB\" <<-EOSQL\n -- Create user if not exists\n DO \\\\$\\\\$\n BEGIN\n IF NOT EXISTS (SELECT FROM pg_catalog.pg_roles WHERE rolname = '$user') THEN\n CREATE ROLE \"$user\" WITH LOGIN PASSWORD '$password';\n RAISE NOTICE 'Created user: $user';\n ELSE\n -- Update password in case it changed\n ALTER ROLE \"$user\" WITH PASSWORD '$password';\n RAISE NOTICE 'User already exists, updated password: $user';\n END IF;\n END\n \\\\$\\\\$;\n\n -- Create database if not exists\n SELECT 'CREATE DATABASE \"$db\" OWNER \"$user\"'\n WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = '$db')\\\\gexec\n\n -- Grant privileges\n GRANT ALL PRIVILEGES ON DATABASE \"$db\" TO \"$user\";\nEOSQL\n\n echo \">>> Done: database '$db' with user '$user'\"\n}\n\necho \"═══════════════════════════════════════════════════════════\"\necho \" Initializing databases for companion services...\"\necho \"═══════════════════════════════════════════════════════════\"\n\n${createCalls}\n\necho \"\"\necho \"═══════════════════════════════════════════════════════════\"\necho \" All databases initialized successfully!\"\necho \" Services: ${reqs.map((r) => r.serviceName).join(\", \")}\"\necho \"═══════════════════════════════════════════════════════════\"\n`;\n}\n"],"mappings":";;;;;AAiBA,MAAM,kBAAoF;CACzF,KAAK;EAAE,QAAQ;EAAO,QAAQ;EAAO,gBAAgB;EAAmB;CACxE,QAAQ;EAAE,QAAQ;EAAU,QAAQ;EAAU,gBAAgB;EAAsB;CACpF,SAAS;EAAE,QAAQ;EAAW,QAAQ;EAAW,gBAAgB;EAAuB;CACxF,MAAM;EAAE,QAAQ;EAAQ,QAAQ;EAAQ,gBAAgB;EAAoB;CAC5E,UAAU;EAAE,QAAQ;EAAY,QAAQ;EAAY,gBAAgB;EAAwB;CAC5F,YAAY;EACX,QAAQ;EACR,QAAQ;EACR,gBAAgB;EAChB;CACD,kBAAkB;EAAE,QAAQ;EAAW,QAAQ;EAAW,gBAAgB;EAAuB;CACjG,iBAAiB;EAChB,QAAQ;EACR,QAAQ;EACR,gBAAgB;EAChB;CACD,OAAO;EAAE,QAAQ;EAAS,QAAQ;EAAS,gBAAgB;EAAqB;CAChF,QAAQ;EAAE,QAAQ;EAAU,QAAQ;EAAU,gBAAgB;EAAsB;CACpF,SAAS;EAAE,QAAQ;EAAW,QAAQ;EAAW,gBAAgB;EAAuB;CACxF,WAAW;EAAE,QAAQ;EAAU,QAAQ;EAAU,gBAAgB;EAAsB;CACvF,QAAQ;EAAE,QAAQ;EAAU,QAAQ;EAAU,gBAAgB;EAAsB;CACpF,WAAW;EAAE,QAAQ;EAAa,QAAQ;EAAa,gBAAgB;EAAyB;CAChG,wBAAwB;EACvB,QAAQ;EACR,QAAQ;EACR,gBAAgB;EAChB;CACD,WAAW;EAAE,QAAQ;EAAa,QAAQ;EAAa,gBAAgB;EAAyB;CAChG,SAAS;EAAE,QAAQ;EAAW,QAAQ;EAAW,gBAAgB;EAAuB;CACxF,WAAW;EAAE,QAAQ;EAAa,QAAQ;EAAa,gBAAgB;EAAyB;CAChG;;;;;AAMD,SAAgB,kBAAkB,UAA2C;CAC5E,MAAM,OAAwB,EAAE;AAChC,MAAK,MAAM,EAAE,gBAAgB,SAAS,UAAU;EAC/C,MAAM,MAAM,gBAAgB,WAAW;AACvC,MAAI,IACH,MAAK,KAAK;GACT,WAAW,WAAW;GACtB,aAAa,WAAW;GACxB,GAAG;GACH,CAAC;;AAGJ,QAAO;;;;;;;;;;AAWR,SAAgB,qBAAqB,UAAyC;AAE7E,KAAI,CADgB,SAAS,SAAS,MAAM,MAAM,EAAE,WAAW,OAAO,aAAa,CACjE,QAAO;CAEzB,MAAM,OAAO,kBAAkB,SAAS;AACxC,KAAI,KAAK,WAAW,EAAG,QAAO;AAS9B,QAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAPa,KAClB,KACC,MACA,uBAAuB,EAAE,OAAO,KAAK,EAAE,OAAO,QAAQ,EAAE,eAAe,wBACxE,CACA,KAAK,KAAK,CAkDC;;;;;mBAKK,KAAK,KAAK,MAAM,EAAE,YAAY,CAAC,KAAK,KAAK,CAAC"}
|
|
1
|
+
{"version":3,"file":"postgres-init.mjs","names":[],"sources":["../../src/generators/postgres-init.ts"],"sourcesContent":["import type { ResolverOutput } from \"../types.js\";\n\n/**\n * Database requirement descriptor for a service.\n */\ninterface DbRequirement {\n\tserviceId: string;\n\tserviceName: string;\n\tdbName: string;\n\tdbUser: string;\n\tpasswordEnvVar: string;\n}\n\n/**\n * Known database requirements for services that need their own PostgreSQL database.\n * Maps service ID to the DB name, user, and password env var they expect.\n */\nconst DB_REQUIREMENTS: Record<string, Omit<DbRequirement, \"serviceId\" | \"serviceName\">> = {\n\tn8n: { dbName: \"n8n\", dbUser: \"n8n\", passwordEnvVar: \"N8N_DB_PASSWORD\" },\n\tpostiz: { dbName: \"postiz\", dbUser: \"postiz\", passwordEnvVar: \"POSTIZ_DB_PASSWORD\" },\n\toutline: { dbName: \"outline\", dbUser: \"outline\", passwordEnvVar: \"OUTLINE_DB_PASSWORD\" },\n\tdify: { dbName: \"dify\", dbUser: \"dify\", passwordEnvVar: \"DIFY_DB_PASSWORD\" },\n\ttemporal: { dbName: \"temporal\", dbUser: \"temporal\", passwordEnvVar: \"TEMPORAL_DB_PASSWORD\" },\n\tmattermost: {\n\t\tdbName: \"mattermost\",\n\t\tdbUser: \"mattermost\",\n\t\tpasswordEnvVar: \"MATTERMOST_DB_PASSWORD\",\n\t},\n\t\"matrix-synapse\": { dbName: \"synapse\", dbUser: \"synapse\", passwordEnvVar: \"SYNAPSE_DB_PASSWORD\" },\n\t\"paperless-ngx\": {\n\t\tdbName: \"paperless\",\n\t\tdbUser: \"paperless\",\n\t\tpasswordEnvVar: \"PAPERLESS_DB_PASSWORD\",\n\t},\n\tumami: { dbName: \"umami\", dbUser: \"umami\", passwordEnvVar: \"UMAMI_DB_PASSWORD\" },\n\tmatomo: { dbName: \"matomo\", dbUser: \"matomo\", passwordEnvVar: \"MATOMO_DB_PASSWORD\" },\n\tmixpost: { dbName: \"mixpost\", dbUser: \"mixpost\", passwordEnvVar: \"MIXPOST_DB_PASSWORD\" },\n\t\"cal-com\": { dbName: \"calcom\", dbUser: \"calcom\", passwordEnvVar: \"CALCOM_DB_PASSWORD\" },\n\timmich: { dbName: \"immich\", dbUser: \"immich\", passwordEnvVar: \"IMMICH_DB_PASSWORD\" },\n\tauthentik: { dbName: \"authentik\", dbUser: \"authentik\", passwordEnvVar: \"AUTHENTIK_DB_PASSWORD\" },\n\tchatwoot: { dbName: \"chatwoot\", dbUser: \"chatwoot\", passwordEnvVar: \"CHATWOOT_DB_PASSWORD\" },\n\tfirecrawl: { dbName: \"firecrawl\", dbUser: \"firecrawl\", passwordEnvVar: \"FIRECRAWL_DB_PASSWORD\" },\n\tflagsmith: { dbName: \"flagsmith\", dbUser: \"flagsmith\", passwordEnvVar: \"FLAGSMITH_DB_PASSWORD\" },\n\tinfisical: { dbName: \"infisical\", dbUser: \"infisical\", passwordEnvVar: \"INFISICAL_DB_PASSWORD\" },\n\tkeycloak: { dbName: \"keycloak\", dbUser: \"keycloak\", passwordEnvVar: \"KEYCLOAK_DB_PASSWORD\" },\n\tlistmonk: { dbName: \"listmonk\", dbUser: \"listmonk\", passwordEnvVar: \"LISTMONK_DB_PASSWORD\" },\n\t\"lasuite-meet-backend\": {\n\t\tdbName: \"meet\",\n\t\tdbUser: \"meet\",\n\t\tpasswordEnvVar: \"LASUITE_MEET_DB_PASSWORD\",\n\t},\n\topenpanel: { dbName: \"openpanel\", dbUser: \"openpanel\", passwordEnvVar: \"OPENPANEL_DB_PASSWORD\" },\n\tusesend: { dbName: \"usesend\", dbUser: \"usesend\", passwordEnvVar: \"USESEND_DB_PASSWORD\" },\n\tnextcloud: { dbName: \"nextcloud\", dbUser: \"nextcloud\", passwordEnvVar: \"NEXTCLOUD_DB_PASSWORD\" },\n};\n\n/**\n * Get the list of database requirements for all resolved services.\n * Exported so other generators (env, composer) can access the same data.\n */\nexport function getDbRequirements(resolved: ResolverOutput): DbRequirement[] {\n\tconst reqs: DbRequirement[] = [];\n\tfor (const { definition } of resolved.services) {\n\t\tconst req = DB_REQUIREMENTS[definition.id];\n\t\tif (req) {\n\t\t\treqs.push({\n\t\t\t\tserviceId: definition.id,\n\t\t\t\tserviceName: definition.name,\n\t\t\t\t...req,\n\t\t\t});\n\t\t}\n\t}\n\treturn reqs;\n}\n\n/**\n * Generates a PostgreSQL initialization script that creates databases and users\n * for all companion services that need their own DB.\n *\n * Returns null if PostgreSQL is not in the resolved stack or no services need extra DBs.\n * The script is designed to be mounted at /docker-entrypoint-initdb.d/init-databases.sh\n * and runs automatically during PostgreSQL's first initialization.\n */\nexport function generatePostgresInit(resolved: ResolverOutput): string | null {\n\tconst hasPostgres = resolved.services.some((s) => s.definition.id === \"postgresql\");\n\tif (!hasPostgres) return null;\n\n\tconst reqs = getDbRequirements(resolved);\n\tif (reqs.length === 0) return null;\n\n\tconst createCalls = reqs\n\t\t.map(\n\t\t\t(r) =>\n\t\t\t\t`create_db_and_user \"${r.dbName}\" \"${r.dbUser}\" \"\\${${r.passwordEnvVar}:-$POSTGRES_PASSWORD}\"`,\n\t\t)\n\t\t.join(\"\\n\");\n\n\treturn `#!/bin/bash\nset -e\n\n# ═══════════════════════════════════════════════════════════════════════════════\n# PostgreSQL Initialization Script\n# Generated by better-openclaw\n#\n# This script runs automatically during PostgreSQL's first initialization.\n# It creates databases and users for all companion services in your stack.\n# ═══════════════════════════════════════════════════════════════════════════════\n\ncreate_db_and_user() {\n local db=\"$1\"\n local user=\"$2\"\n local password=\"$3\"\n\n echo \">>> Creating database '$db' with user '$user'...\"\n\n psql -v ON_ERROR_STOP=1 --username \"$POSTGRES_USER\" --dbname \"$POSTGRES_DB\" <<-EOSQL\n -- Create user if not exists\n DO \\\\$\\\\$\n BEGIN\n IF NOT EXISTS (SELECT FROM pg_catalog.pg_roles WHERE rolname = '$user') THEN\n CREATE ROLE \"$user\" WITH LOGIN PASSWORD '$password';\n RAISE NOTICE 'Created user: $user';\n ELSE\n -- Update password in case it changed\n ALTER ROLE \"$user\" WITH PASSWORD '$password';\n RAISE NOTICE 'User already exists, updated password: $user';\n END IF;\n END\n \\\\$\\\\$;\n\n -- Create database if not exists\n SELECT 'CREATE DATABASE \"$db\" OWNER \"$user\"'\n WHERE NOT EXISTS (SELECT FROM pg_database WHERE datname = '$db')\\\\gexec\n\n -- Grant privileges\n GRANT ALL PRIVILEGES ON DATABASE \"$db\" TO \"$user\";\nEOSQL\n\n echo \">>> Done: database '$db' with user '$user'\"\n}\n\necho \"═══════════════════════════════════════════════════════════\"\necho \" Initializing databases for companion services...\"\necho \"═══════════════════════════════════════════════════════════\"\n\n${createCalls}\n\necho \"\"\necho \"═══════════════════════════════════════════════════════════\"\necho \" All databases initialized successfully!\"\necho \" Services: ${reqs.map((r) => r.serviceName).join(\", \")}\"\necho \"═══════════════════════════════════════════════════════════\"\n`;\n}\n"],"mappings":";;;;;AAiBA,MAAM,kBAAoF;CACzF,KAAK;EAAE,QAAQ;EAAO,QAAQ;EAAO,gBAAgB;EAAmB;CACxE,QAAQ;EAAE,QAAQ;EAAU,QAAQ;EAAU,gBAAgB;EAAsB;CACpF,SAAS;EAAE,QAAQ;EAAW,QAAQ;EAAW,gBAAgB;EAAuB;CACxF,MAAM;EAAE,QAAQ;EAAQ,QAAQ;EAAQ,gBAAgB;EAAoB;CAC5E,UAAU;EAAE,QAAQ;EAAY,QAAQ;EAAY,gBAAgB;EAAwB;CAC5F,YAAY;EACX,QAAQ;EACR,QAAQ;EACR,gBAAgB;EAChB;CACD,kBAAkB;EAAE,QAAQ;EAAW,QAAQ;EAAW,gBAAgB;EAAuB;CACjG,iBAAiB;EAChB,QAAQ;EACR,QAAQ;EACR,gBAAgB;EAChB;CACD,OAAO;EAAE,QAAQ;EAAS,QAAQ;EAAS,gBAAgB;EAAqB;CAChF,QAAQ;EAAE,QAAQ;EAAU,QAAQ;EAAU,gBAAgB;EAAsB;CACpF,SAAS;EAAE,QAAQ;EAAW,QAAQ;EAAW,gBAAgB;EAAuB;CACxF,WAAW;EAAE,QAAQ;EAAU,QAAQ;EAAU,gBAAgB;EAAsB;CACvF,QAAQ;EAAE,QAAQ;EAAU,QAAQ;EAAU,gBAAgB;EAAsB;CACpF,WAAW;EAAE,QAAQ;EAAa,QAAQ;EAAa,gBAAgB;EAAyB;CAChG,UAAU;EAAE,QAAQ;EAAY,QAAQ;EAAY,gBAAgB;EAAwB;CAC5F,WAAW;EAAE,QAAQ;EAAa,QAAQ;EAAa,gBAAgB;EAAyB;CAChG,WAAW;EAAE,QAAQ;EAAa,QAAQ;EAAa,gBAAgB;EAAyB;CAChG,WAAW;EAAE,QAAQ;EAAa,QAAQ;EAAa,gBAAgB;EAAyB;CAChG,UAAU;EAAE,QAAQ;EAAY,QAAQ;EAAY,gBAAgB;EAAwB;CAC5F,UAAU;EAAE,QAAQ;EAAY,QAAQ;EAAY,gBAAgB;EAAwB;CAC5F,wBAAwB;EACvB,QAAQ;EACR,QAAQ;EACR,gBAAgB;EAChB;CACD,WAAW;EAAE,QAAQ;EAAa,QAAQ;EAAa,gBAAgB;EAAyB;CAChG,SAAS;EAAE,QAAQ;EAAW,QAAQ;EAAW,gBAAgB;EAAuB;CACxF,WAAW;EAAE,QAAQ;EAAa,QAAQ;EAAa,gBAAgB;EAAyB;CAChG;;;;;AAMD,SAAgB,kBAAkB,UAA2C;CAC5E,MAAM,OAAwB,EAAE;AAChC,MAAK,MAAM,EAAE,gBAAgB,SAAS,UAAU;EAC/C,MAAM,MAAM,gBAAgB,WAAW;AACvC,MAAI,IACH,MAAK,KAAK;GACT,WAAW,WAAW;GACtB,aAAa,WAAW;GACxB,GAAG;GACH,CAAC;;AAGJ,QAAO;;;;;;;;;;AAWR,SAAgB,qBAAqB,UAAyC;AAE7E,KAAI,CADgB,SAAS,SAAS,MAAM,MAAM,EAAE,WAAW,OAAO,aAAa,CACjE,QAAO;CAEzB,MAAM,OAAO,kBAAkB,SAAS;AACxC,KAAI,KAAK,WAAW,EAAG,QAAO;AAS9B,QAAO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;EAPa,KAClB,KACC,MACA,uBAAuB,EAAE,OAAO,KAAK,EAAE,OAAO,QAAQ,EAAE,eAAe,wBACxE,CACA,KAAK,KAAK,CAkDC;;;;;mBAKK,KAAK,KAAK,MAAM,EAAE,YAAY,CAAC,KAAK,KAAK,CAAC"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value:
|
|
2
|
-
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
2
|
//#region src/generators/prometheus.ts
|
|
4
3
|
/**
|
|
5
4
|
* Well-known metrics endpoints for services.
|
|
@@ -103,7 +102,7 @@ scrape_configs:
|
|
|
103
102
|
sections.push("");
|
|
104
103
|
return sections.join("\n");
|
|
105
104
|
}
|
|
106
|
-
|
|
107
105
|
//#endregion
|
|
108
106
|
exports.generatePrometheusConfig = generatePrometheusConfig;
|
|
107
|
+
|
|
109
108
|
//# sourceMappingURL=prometheus.cjs.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prometheus.cjs","names":[],"sources":["../../src/generators/prometheus.ts"],"sourcesContent":["import type { ResolverOutput } from \"../types.js\";\n\n/**\n * Well-known metrics endpoints for services.\n *\n * Services that expose Prometheus-compatible metrics are listed here\n * with their metrics path and port.\n */\nconst metricsEndpoints: Record<string, { path: string; port: number }> = {\n\tredis: { path: \"/metrics\", port: 9121 },\n\tpostgresql: { path: \"/metrics\", port: 9187 },\n\tminio: { path: \"/minio/v2/metrics/cluster\", port: 9000 },\n\tn8n: { path: \"/metrics\", port: 5678 },\n\tgrafana: { path: \"/metrics\", port: 3000 },\n\tcaddy: { path: \"/metrics\", port: 2019 },\n\ttraefik: { path: \"/metrics\", port: 8082 },\n\tqdrant: { path: \"/metrics\", port: 6333 },\n\t\"uptime-kuma\": { path: \"/metrics\", port: 3001 },\n\tollama: { path: \"/metrics\", port: 11434 },\n};\n\n/**\n * Generates a Prometheus configuration YAML file with scrape configs\n * for all services that expose metrics endpoints.\n *\n * @param resolved - The resolved service configuration\n * @returns The prometheus.yml content as a string\n */\nexport function generatePrometheusConfig(resolved: ResolverOutput): string {\n\tconst sections: string[] = [];\n\n\t// ── Header ──────────────────────────────────────────────────────────────\n\n\tsections.push(`# ═══════════════════════════════════════════════════════════════════════════════\n# Prometheus Configuration — Auto-generated by OpenClaw\n# ═══════════════════════════════════════════════════════════════════════════════\n\nglobal:\n scrape_interval: 15s\n evaluation_interval: 15s\n scrape_timeout: 10s\n\n# ─── Scrape Configs ──────────────────────────────────────────────────────────\n\nscrape_configs:\n # Prometheus self-monitoring\n - job_name: \"prometheus\"\n static_configs:\n - targets: [\"localhost:9090\"]\n labels:\n service: \"prometheus\"\n component: \"monitoring\"`);\n\n\t// ── Service Scrape Configs ───────────────────────────────────────────────\n\n\tfor (const { definition } of resolved.services) {\n\t\t// Skip prometheus itself (already included above)\n\t\tif (definition.id === \"prometheus\") continue;\n\n\t\tconst endpoint = metricsEndpoints[definition.id];\n\t\tif (!endpoint) continue;\n\n\t\tsections.push(`\n # ${definition.icon} ${definition.name}\n - job_name: \"${definition.id}\"\n metrics_path: \"${endpoint.path}\"\n static_configs:\n - targets: [\"${definition.id}:${endpoint.port}\"]\n labels:\n service: \"${definition.id}\"\n component: \"${definition.category}\"`);\n\t}\n\n\t// ── OpenClaw Gateway Metrics ────────────────────────────────────────────\n\n\tsections.push(`\n # 🐾 OpenClaw Gateway\n - job_name: \"openclaw-gateway\"\n metrics_path: \"/metrics\"\n static_configs:\n - targets: [\"openclaw:18789\"]\n labels:\n service: \"openclaw\"\n component: \"core\"`);\n\n\tsections.push(\"\");\n\n\treturn sections.join(\"\\n\");\n}\n"],"mappings":"
|
|
1
|
+
{"version":3,"file":"prometheus.cjs","names":[],"sources":["../../src/generators/prometheus.ts"],"sourcesContent":["import type { ResolverOutput } from \"../types.js\";\n\n/**\n * Well-known metrics endpoints for services.\n *\n * Services that expose Prometheus-compatible metrics are listed here\n * with their metrics path and port.\n */\nconst metricsEndpoints: Record<string, { path: string; port: number }> = {\n\tredis: { path: \"/metrics\", port: 9121 },\n\tpostgresql: { path: \"/metrics\", port: 9187 },\n\tminio: { path: \"/minio/v2/metrics/cluster\", port: 9000 },\n\tn8n: { path: \"/metrics\", port: 5678 },\n\tgrafana: { path: \"/metrics\", port: 3000 },\n\tcaddy: { path: \"/metrics\", port: 2019 },\n\ttraefik: { path: \"/metrics\", port: 8082 },\n\tqdrant: { path: \"/metrics\", port: 6333 },\n\t\"uptime-kuma\": { path: \"/metrics\", port: 3001 },\n\tollama: { path: \"/metrics\", port: 11434 },\n};\n\n/**\n * Generates a Prometheus configuration YAML file with scrape configs\n * for all services that expose metrics endpoints.\n *\n * @param resolved - The resolved service configuration\n * @returns The prometheus.yml content as a string\n */\nexport function generatePrometheusConfig(resolved: ResolverOutput): string {\n\tconst sections: string[] = [];\n\n\t// ── Header ──────────────────────────────────────────────────────────────\n\n\tsections.push(`# ═══════════════════════════════════════════════════════════════════════════════\n# Prometheus Configuration — Auto-generated by OpenClaw\n# ═══════════════════════════════════════════════════════════════════════════════\n\nglobal:\n scrape_interval: 15s\n evaluation_interval: 15s\n scrape_timeout: 10s\n\n# ─── Scrape Configs ──────────────────────────────────────────────────────────\n\nscrape_configs:\n # Prometheus self-monitoring\n - job_name: \"prometheus\"\n static_configs:\n - targets: [\"localhost:9090\"]\n labels:\n service: \"prometheus\"\n component: \"monitoring\"`);\n\n\t// ── Service Scrape Configs ───────────────────────────────────────────────\n\n\tfor (const { definition } of resolved.services) {\n\t\t// Skip prometheus itself (already included above)\n\t\tif (definition.id === \"prometheus\") continue;\n\n\t\tconst endpoint = metricsEndpoints[definition.id];\n\t\tif (!endpoint) continue;\n\n\t\tsections.push(`\n # ${definition.icon} ${definition.name}\n - job_name: \"${definition.id}\"\n metrics_path: \"${endpoint.path}\"\n static_configs:\n - targets: [\"${definition.id}:${endpoint.port}\"]\n labels:\n service: \"${definition.id}\"\n component: \"${definition.category}\"`);\n\t}\n\n\t// ── OpenClaw Gateway Metrics ────────────────────────────────────────────\n\n\tsections.push(`\n # 🐾 OpenClaw Gateway\n - job_name: \"openclaw-gateway\"\n metrics_path: \"/metrics\"\n static_configs:\n - targets: [\"openclaw:18789\"]\n labels:\n service: \"openclaw\"\n component: \"core\"`);\n\n\tsections.push(\"\");\n\n\treturn sections.join(\"\\n\");\n}\n"],"mappings":";;;;;;;;AAQA,MAAM,mBAAmE;CACxE,OAAO;EAAE,MAAM;EAAY,MAAM;EAAM;CACvC,YAAY;EAAE,MAAM;EAAY,MAAM;EAAM;CAC5C,OAAO;EAAE,MAAM;EAA6B,MAAM;EAAM;CACxD,KAAK;EAAE,MAAM;EAAY,MAAM;EAAM;CACrC,SAAS;EAAE,MAAM;EAAY,MAAM;EAAM;CACzC,OAAO;EAAE,MAAM;EAAY,MAAM;EAAM;CACvC,SAAS;EAAE,MAAM;EAAY,MAAM;EAAM;CACzC,QAAQ;EAAE,MAAM;EAAY,MAAM;EAAM;CACxC,eAAe;EAAE,MAAM;EAAY,MAAM;EAAM;CAC/C,QAAQ;EAAE,MAAM;EAAY,MAAM;EAAO;CACzC;;;;;;;;AASD,SAAgB,yBAAyB,UAAkC;CAC1E,MAAM,WAAqB,EAAE;AAI7B,UAAS,KAAK;;;;;;;;;;;;;;;;;;mCAkBoB;AAIlC,MAAK,MAAM,EAAE,gBAAgB,SAAS,UAAU;AAE/C,MAAI,WAAW,OAAO,aAAc;EAEpC,MAAM,WAAW,iBAAiB,WAAW;AAC7C,MAAI,CAAC,SAAU;AAEf,WAAS,KAAK;MACV,WAAW,KAAK,GAAG,WAAW,KAAK;iBACxB,WAAW,GAAG;qBACV,SAAS,KAAK;;qBAEd,WAAW,GAAG,GAAG,SAAS,KAAK;;sBAE9B,WAAW,GAAG;wBACZ,WAAW,SAAS,GAAG;;AAK9C,UAAS,KAAK;;;;;;;;6BAQc;AAE5B,UAAS,KAAK,GAAG;AAEjB,QAAO,SAAS,KAAK,KAAK"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"prometheus.d.mts","names":[],"sources":["../../src/generators/prometheus.ts"],"mappings":"
|
|
1
|
+
{"version":3,"file":"prometheus.d.mts","names":[],"sources":["../../src/generators/prometheus.ts"],"mappings":";;;;;;AA4BA;;;;iBAAgB,wBAAA,CAAyB,QAAA,EAAU,cAAA"}
|
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
Object.defineProperty(exports, Symbol.toStringTag, { value:
|
|
2
|
-
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
3
2
|
//#region src/generators/readme.ts
|
|
4
3
|
/**
|
|
5
4
|
* Generates a comprehensive README.md for the OpenClaw project.
|
|
@@ -280,7 +279,7 @@ Generated by [OpenClaw](https://openclaw.dev) • ${(/* @__PURE__ */ new Date())
|
|
|
280
279
|
`);
|
|
281
280
|
return sections.join("\n");
|
|
282
281
|
}
|
|
283
|
-
|
|
284
282
|
//#endregion
|
|
285
283
|
exports.generateReadme = generateReadme;
|
|
284
|
+
|
|
286
285
|
//# sourceMappingURL=readme.cjs.map
|