@better-openclaw/core 1.0.25 → 1.0.30
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +66 -7
- package/dist/addon-stack.cjs +95 -30
- package/dist/addon-stack.cjs.map +1 -1
- package/dist/addon-stack.d.cts +1 -1
- package/dist/addon-stack.d.cts.map +1 -1
- package/dist/addon-stack.d.mts +1 -1
- package/dist/addon-stack.d.mts.map +1 -1
- package/dist/addon-stack.mjs +94 -29
- package/dist/addon-stack.mjs.map +1 -1
- package/dist/addon-stack.test.cjs +123 -11
- package/dist/addon-stack.test.cjs.map +1 -1
- package/dist/addon-stack.test.mjs +122 -10
- package/dist/addon-stack.test.mjs.map +1 -1
- package/dist/bare-metal-partition.d.cts +1 -1
- package/dist/bare-metal-partition.d.mts +1 -1
- package/dist/bare-metal-partition.test.cjs +1 -1
- package/dist/bare-metal-partition.test.mjs +1 -1
- package/dist/callback-sink-CdMKYayY.d.mts +15 -0
- package/dist/callback-sink-CdMKYayY.d.mts.map +1 -0
- package/dist/callback-sink-iNThWRnQ.d.cts +15 -0
- package/dist/callback-sink-iNThWRnQ.d.cts.map +1 -0
- package/dist/claude-code-fw-CrbAlzTM.d.mts +7 -0
- package/dist/claude-code-fw-CrbAlzTM.d.mts.map +1 -0
- package/dist/claude-code-fw-dKYH2prH.d.cts +7 -0
- package/dist/claude-code-fw-dKYH2prH.d.cts.map +1 -0
- package/dist/codex-fw-Ct8q4pzo.d.mts +7 -0
- package/dist/codex-fw-Ct8q4pzo.d.mts.map +1 -0
- package/dist/codex-fw-l7Ku8ZI8.d.cts +7 -0
- package/dist/codex-fw-l7Ku8ZI8.d.cts.map +1 -0
- package/dist/compose-validation.test.cjs +1 -1
- package/dist/composer.cjs +89 -129
- package/dist/composer.cjs.map +1 -1
- package/dist/composer.d.cts +3 -3
- package/dist/composer.d.cts.map +1 -1
- package/dist/composer.d.mts +3 -3
- package/dist/composer.d.mts.map +1 -1
- package/dist/composer.mjs +88 -128
- package/dist/composer.mjs.map +1 -1
- package/dist/composer.snapshot.test.cjs +1 -1
- package/dist/composer.snapshot.test.mjs +1 -1
- package/dist/composer.test.cjs +53 -2
- package/dist/composer.test.cjs.map +1 -1
- package/dist/composer.test.mjs +52 -1
- package/dist/composer.test.mjs.map +1 -1
- package/dist/console-sink-BHQpRyCt.d.cts +13 -0
- package/dist/console-sink-BHQpRyCt.d.cts.map +1 -0
- package/dist/console-sink-bouG_M1K.d.mts +13 -0
- package/dist/console-sink-bouG_M1K.d.mts.map +1 -0
- package/dist/{coolify-BVGGcMrT.d.mts → coolify-D5E0z01M.d.mts} +2 -2
- package/dist/{coolify-BVGGcMrT.d.mts.map → coolify-D5E0z01M.d.mts.map} +1 -1
- package/dist/{coolify-vlb1G9V2.d.cts → coolify-DjHecHCr.d.cts} +2 -2
- package/dist/{coolify-vlb1G9V2.d.cts.map → coolify-DjHecHCr.d.cts.map} +1 -1
- package/dist/copaw-BQyjioz7.d.cts +7 -0
- package/dist/copaw-BQyjioz7.d.cts.map +1 -0
- package/dist/copaw-C_3N7eQu.d.mts +7 -0
- package/dist/copaw-C_3N7eQu.d.mts.map +1 -0
- package/dist/deployers/coolify.cjs +25 -0
- package/dist/deployers/coolify.cjs.map +1 -1
- package/dist/deployers/coolify.d.cts +1 -1
- package/dist/deployers/coolify.d.mts +1 -1
- package/dist/deployers/coolify.mjs +25 -0
- package/dist/deployers/coolify.mjs.map +1 -1
- package/dist/deployers/dokploy.cjs +25 -0
- package/dist/deployers/dokploy.cjs.map +1 -1
- package/dist/deployers/dokploy.d.cts +1 -1
- package/dist/deployers/dokploy.d.mts +1 -1
- package/dist/deployers/dokploy.mjs +25 -0
- package/dist/deployers/dokploy.mjs.map +1 -1
- package/dist/deployers/index.d.cts +3 -3
- package/dist/deployers/index.d.mts +3 -3
- package/dist/deployers/strip-host-ports.cjs +1 -1
- package/dist/deployers/strip-host-ports.test.cjs +1 -1
- package/dist/deployers/strip-host-ports.test.mjs +1 -1
- package/dist/deployers/types.d.cts +1 -1
- package/dist/deployers/types.d.mts +1 -1
- package/dist/{dokploy-8cbrxUun.d.cts → dokploy-BnVDjWCV.d.cts} +2 -2
- package/dist/{dokploy-8cbrxUun.d.cts.map → dokploy-BnVDjWCV.d.cts.map} +1 -1
- package/dist/{dokploy-BTflLhTM.d.mts → dokploy-BqLdCfyR.d.mts} +2 -2
- package/dist/{dokploy-BTflLhTM.d.mts.map → dokploy-BqLdCfyR.d.mts.map} +1 -1
- package/dist/frameworks/claude-code-fw.cjs +79 -0
- package/dist/frameworks/claude-code-fw.cjs.map +1 -0
- package/dist/frameworks/claude-code-fw.d.cts +2 -0
- package/dist/frameworks/claude-code-fw.d.mts +2 -0
- package/dist/frameworks/claude-code-fw.mjs +78 -0
- package/dist/frameworks/claude-code-fw.mjs.map +1 -0
- package/dist/frameworks/codex-fw.cjs +67 -0
- package/dist/frameworks/codex-fw.cjs.map +1 -0
- package/dist/frameworks/codex-fw.d.cts +2 -0
- package/dist/frameworks/codex-fw.d.mts +2 -0
- package/dist/frameworks/codex-fw.mjs +66 -0
- package/dist/frameworks/codex-fw.mjs.map +1 -0
- package/dist/frameworks/copaw.cjs +118 -0
- package/dist/frameworks/copaw.cjs.map +1 -0
- package/dist/frameworks/copaw.d.cts +2 -0
- package/dist/frameworks/copaw.d.mts +2 -0
- package/dist/frameworks/copaw.mjs +117 -0
- package/dist/frameworks/copaw.mjs.map +1 -0
- package/dist/frameworks/index.cjs +35 -0
- package/dist/frameworks/index.cjs.map +1 -0
- package/dist/frameworks/index.d.cts +11 -0
- package/dist/frameworks/index.d.mts +11 -0
- package/dist/frameworks/index.mjs +22 -0
- package/dist/frameworks/index.mjs.map +1 -0
- package/dist/frameworks/memu.cjs +118 -0
- package/dist/frameworks/memu.cjs.map +1 -0
- package/dist/frameworks/memu.d.cts +2 -0
- package/dist/frameworks/memu.d.mts +2 -0
- package/dist/frameworks/memu.mjs +117 -0
- package/dist/frameworks/memu.mjs.map +1 -0
- package/dist/frameworks/nanobot.cjs +126 -0
- package/dist/frameworks/nanobot.cjs.map +1 -0
- package/dist/frameworks/nanobot.d.cts +2 -0
- package/dist/frameworks/nanobot.d.mts +2 -0
- package/dist/frameworks/nanobot.mjs +125 -0
- package/dist/frameworks/nanobot.mjs.map +1 -0
- package/dist/frameworks/nanoclaw.cjs +99 -0
- package/dist/frameworks/nanoclaw.cjs.map +1 -0
- package/dist/frameworks/nanoclaw.d.cts +2 -0
- package/dist/frameworks/nanoclaw.d.mts +2 -0
- package/dist/frameworks/nanoclaw.mjs +98 -0
- package/dist/frameworks/nanoclaw.mjs.map +1 -0
- package/dist/frameworks/openclaw.cjs +253 -0
- package/dist/frameworks/openclaw.cjs.map +1 -0
- package/dist/frameworks/openclaw.d.cts +2 -0
- package/dist/frameworks/openclaw.d.mts +2 -0
- package/dist/frameworks/openclaw.mjs +251 -0
- package/dist/frameworks/openclaw.mjs.map +1 -0
- package/dist/frameworks/registry.cjs +31 -0
- package/dist/frameworks/registry.cjs.map +1 -0
- package/dist/frameworks/registry.d.cts +2 -0
- package/dist/frameworks/registry.d.mts +2 -0
- package/dist/frameworks/registry.mjs +26 -0
- package/dist/frameworks/registry.mjs.map +1 -0
- package/dist/frameworks/registry.test.cjs +110 -0
- package/dist/frameworks/registry.test.cjs.map +1 -0
- package/dist/frameworks/registry.test.d.cts +1 -0
- package/dist/frameworks/registry.test.d.mts +1 -0
- package/dist/frameworks/registry.test.mjs +111 -0
- package/dist/frameworks/registry.test.mjs.map +1 -0
- package/dist/frameworks/types.cjs +0 -0
- package/dist/frameworks/types.d.cts +2 -0
- package/dist/frameworks/types.d.mts +2 -0
- package/dist/frameworks/types.mjs +1 -0
- package/dist/frameworks/zeroclaw.cjs +123 -0
- package/dist/frameworks/zeroclaw.cjs.map +1 -0
- package/dist/frameworks/zeroclaw.d.cts +2 -0
- package/dist/frameworks/zeroclaw.d.mts +2 -0
- package/dist/frameworks/zeroclaw.mjs +122 -0
- package/dist/frameworks/zeroclaw.mjs.map +1 -0
- package/dist/generate.cjs +64 -13
- package/dist/generate.cjs.map +1 -1
- package/dist/generate.d.cts +5 -2
- package/dist/generate.d.cts.map +1 -1
- package/dist/generate.d.mts +5 -2
- package/dist/generate.d.mts.map +1 -1
- package/dist/generate.mjs +63 -12
- package/dist/generate.mjs.map +1 -1
- package/dist/generate.test.cjs +42 -6
- package/dist/generate.test.cjs.map +1 -1
- package/dist/generate.test.mjs +41 -5
- package/dist/generate.test.mjs.map +1 -1
- package/dist/generators/bare-metal-install.d.cts +1 -1
- package/dist/generators/bare-metal-install.d.mts +1 -1
- package/dist/generators/bare-metal-install.test.cjs +1 -1
- package/dist/generators/bare-metal-install.test.mjs +1 -1
- package/dist/generators/caddy.cjs +9 -3
- package/dist/generators/caddy.cjs.map +1 -1
- package/dist/generators/caddy.d.cts +1 -1
- package/dist/generators/caddy.d.mts +1 -1
- package/dist/generators/caddy.mjs +9 -3
- package/dist/generators/caddy.mjs.map +1 -1
- package/dist/generators/caddy.test.cjs +30 -2
- package/dist/generators/caddy.test.cjs.map +1 -1
- package/dist/generators/caddy.test.mjs +30 -2
- package/dist/generators/caddy.test.mjs.map +1 -1
- package/dist/generators/clone-repos.cjs.map +1 -1
- package/dist/generators/clone-repos.d.cts +1 -1
- package/dist/generators/clone-repos.d.mts +1 -1
- package/dist/generators/clone-repos.mjs.map +1 -1
- package/dist/generators/clone-repos.test.cjs +1 -1
- package/dist/generators/clone-repos.test.cjs.map +1 -1
- package/dist/generators/clone-repos.test.mjs +1 -1
- package/dist/generators/clone-repos.test.mjs.map +1 -1
- package/dist/generators/env.cjs +28 -103
- package/dist/generators/env.cjs.map +1 -1
- package/dist/generators/env.d.cts +4 -1
- package/dist/generators/env.d.cts.map +1 -1
- package/dist/generators/env.d.mts +4 -1
- package/dist/generators/env.d.mts.map +1 -1
- package/dist/generators/env.mjs +27 -102
- package/dist/generators/env.mjs.map +1 -1
- package/dist/generators/env.test.cjs +3 -3
- package/dist/generators/env.test.cjs.map +1 -1
- package/dist/generators/env.test.mjs +3 -3
- package/dist/generators/env.test.mjs.map +1 -1
- package/dist/generators/get-shit-done.d.cts +1 -1
- package/dist/generators/get-shit-done.d.mts +1 -1
- package/dist/generators/health-check.cjs +6 -6
- package/dist/generators/health-check.cjs.map +1 -1
- package/dist/generators/health-check.d.cts +1 -1
- package/dist/generators/health-check.d.mts +1 -1
- package/dist/generators/health-check.mjs +6 -6
- package/dist/generators/health-check.mjs.map +1 -1
- package/dist/generators/health-check.test.cjs +1 -1
- package/dist/generators/health-check.test.mjs +1 -1
- package/dist/generators/n8n-workflows.d.cts +1 -1
- package/dist/generators/n8n-workflows.d.mts +1 -1
- package/dist/generators/native-services.d.cts +1 -1
- package/dist/generators/native-services.d.mts +1 -1
- package/dist/generators/openclaw-json.cjs +60 -4
- package/dist/generators/openclaw-json.cjs.map +1 -1
- package/dist/generators/openclaw-json.d.cts +1 -5
- package/dist/generators/openclaw-json.d.cts.map +1 -1
- package/dist/generators/openclaw-json.d.mts +1 -5
- package/dist/generators/openclaw-json.d.mts.map +1 -1
- package/dist/generators/openclaw-json.mjs +60 -4
- package/dist/generators/openclaw-json.mjs.map +1 -1
- package/dist/generators/postgres-init.cjs +25 -0
- package/dist/generators/postgres-init.cjs.map +1 -1
- package/dist/generators/postgres-init.d.cts +1 -1
- package/dist/generators/postgres-init.d.cts.map +1 -1
- package/dist/generators/postgres-init.d.mts +1 -1
- package/dist/generators/postgres-init.d.mts.map +1 -1
- package/dist/generators/postgres-init.mjs +25 -0
- package/dist/generators/postgres-init.mjs.map +1 -1
- package/dist/generators/prometheus.d.cts +1 -1
- package/dist/generators/prometheus.d.mts +1 -1
- package/dist/generators/readme.cjs +50 -7
- package/dist/generators/readme.cjs.map +1 -1
- package/dist/generators/readme.d.cts +3 -1
- package/dist/generators/readme.d.cts.map +1 -1
- package/dist/generators/readme.d.mts +3 -1
- package/dist/generators/readme.d.mts.map +1 -1
- package/dist/generators/readme.mjs +50 -7
- package/dist/generators/readme.mjs.map +1 -1
- package/dist/generators/scripts.test.cjs +2 -2
- package/dist/generators/scripts.test.cjs.map +1 -1
- package/dist/generators/scripts.test.mjs +2 -2
- package/dist/generators/scripts.test.mjs.map +1 -1
- package/dist/generators/skills.cjs +1 -1
- package/dist/generators/skills.d.cts +1 -1
- package/dist/generators/skills.d.cts.map +1 -1
- package/dist/generators/skills.d.mts +1 -1
- package/dist/generators/skills.d.mts.map +1 -1
- package/dist/generators/skills.mjs +451 -0
- package/dist/generators/skills.mjs.map +1 -1
- package/dist/generators/stack-manifest.d.cts +1 -1
- package/dist/generators/stack-manifest.d.mts +1 -1
- package/dist/generators/traefik.d.cts +1 -1
- package/dist/generators/traefik.d.mts +1 -1
- package/dist/generators/traefik.test.cjs +12 -12
- package/dist/generators/traefik.test.cjs.map +1 -1
- package/dist/generators/traefik.test.mjs +12 -12
- package/dist/generators/traefik.test.mjs.map +1 -1
- package/dist/index.cjs +20 -2
- package/dist/index.d.cts +14 -7
- package/dist/index.d.mts +14 -7
- package/dist/index.mjs +10 -3
- package/dist/logger/__tests__/logger.test.cjs +308 -0
- package/dist/logger/__tests__/logger.test.cjs.map +1 -0
- package/dist/logger/__tests__/logger.test.d.cts +1 -0
- package/dist/logger/__tests__/logger.test.d.mts +1 -0
- package/dist/logger/__tests__/logger.test.mjs +308 -0
- package/dist/logger/__tests__/logger.test.mjs.map +1 -0
- package/dist/logger/index.cjs +10 -0
- package/dist/logger/index.d.cts +6 -0
- package/dist/logger/index.d.mts +6 -0
- package/dist/logger/index.mjs +5 -0
- package/dist/logger/logger.cjs +270 -0
- package/dist/logger/logger.cjs.map +1 -0
- package/dist/logger/logger.d.cts +2 -0
- package/dist/logger/logger.d.mts +2 -0
- package/dist/logger/logger.mjs +267 -0
- package/dist/logger/logger.mjs.map +1 -0
- package/dist/logger/sinks/callback-sink.cjs +18 -0
- package/dist/logger/sinks/callback-sink.cjs.map +1 -0
- package/dist/logger/sinks/callback-sink.d.cts +2 -0
- package/dist/logger/sinks/callback-sink.d.mts +2 -0
- package/dist/logger/sinks/callback-sink.mjs +17 -0
- package/dist/logger/sinks/callback-sink.mjs.map +1 -0
- package/dist/logger/sinks/console-sink.cjs +39 -0
- package/dist/logger/sinks/console-sink.cjs.map +1 -0
- package/dist/logger/sinks/console-sink.d.cts +2 -0
- package/dist/logger/sinks/console-sink.d.mts +2 -0
- package/dist/logger/sinks/console-sink.mjs +38 -0
- package/dist/logger/sinks/console-sink.mjs.map +1 -0
- package/dist/logger/sinks/file-sink.cjs +72 -0
- package/dist/logger/sinks/file-sink.cjs.map +1 -0
- package/dist/logger/sinks/file-sink.d.cts +36 -0
- package/dist/logger/sinks/file-sink.d.cts.map +1 -0
- package/dist/logger/sinks/file-sink.d.mts +36 -0
- package/dist/logger/sinks/file-sink.d.mts.map +1 -0
- package/dist/logger/sinks/file-sink.mjs +70 -0
- package/dist/logger/sinks/file-sink.mjs.map +1 -0
- package/dist/logger/types.cjs +0 -0
- package/dist/logger/types.d.cts +2 -0
- package/dist/logger/types.d.mts +2 -0
- package/dist/logger/types.mjs +1 -0
- package/dist/logger-CZ0Qnyiu.d.mts +66 -0
- package/dist/logger-CZ0Qnyiu.d.mts.map +1 -0
- package/dist/logger-DDfwai-A.d.cts +66 -0
- package/dist/logger-DDfwai-A.d.cts.map +1 -0
- package/dist/memu-BfRXtwmL.d.cts +7 -0
- package/dist/memu-BfRXtwmL.d.cts.map +1 -0
- package/dist/memu-C-fXbWr-.d.mts +7 -0
- package/dist/memu-C-fXbWr-.d.mts.map +1 -0
- package/dist/migrations.cjs +17 -9
- package/dist/migrations.cjs.map +1 -1
- package/dist/migrations.d.cts +1 -1
- package/dist/migrations.d.cts.map +1 -1
- package/dist/migrations.d.mts +1 -1
- package/dist/migrations.d.mts.map +1 -1
- package/dist/migrations.mjs +17 -9
- package/dist/migrations.mjs.map +1 -1
- package/dist/migrations.test.cjs +4 -4
- package/dist/migrations.test.mjs +4 -4
- package/dist/nanobot-2c0bS4lu.d.cts +7 -0
- package/dist/nanobot-2c0bS4lu.d.cts.map +1 -0
- package/dist/nanobot-BUO6pVQc.d.mts +7 -0
- package/dist/nanobot-BUO6pVQc.d.mts.map +1 -0
- package/dist/nanoclaw-CgHubEig.d.mts +7 -0
- package/dist/nanoclaw-CgHubEig.d.mts.map +1 -0
- package/dist/nanoclaw-Dvz0ef6J.d.cts +7 -0
- package/dist/nanoclaw-Dvz0ef6J.d.cts.map +1 -0
- package/dist/openclaw-D8lVecjC.d.mts +7 -0
- package/dist/openclaw-D8lVecjC.d.mts.map +1 -0
- package/dist/openclaw-DThj8i3N.d.cts +7 -0
- package/dist/openclaw-DThj8i3N.d.cts.map +1 -0
- package/dist/port-scanner.d.cts +1 -1
- package/dist/port-scanner.d.mts +1 -1
- package/dist/presets/presets.test.cjs +5 -5
- package/dist/presets/presets.test.cjs.map +1 -1
- package/dist/presets/presets.test.mjs +4 -4
- package/dist/presets/presets.test.mjs.map +1 -1
- package/dist/presets/registry.d.cts +1 -1
- package/dist/presets/registry.d.mts +1 -1
- package/dist/presets/registry.test.cjs +7 -7
- package/dist/presets/registry.test.cjs.map +1 -1
- package/dist/presets/registry.test.mjs +7 -7
- package/dist/presets/registry.test.mjs.map +1 -1
- package/dist/registry-DHX7vnVo.d.cts +16 -0
- package/dist/registry-DHX7vnVo.d.cts.map +1 -0
- package/dist/registry-DTAILnga.d.mts +16 -0
- package/dist/registry-DTAILnga.d.mts.map +1 -0
- package/dist/resolver.cjs +13 -3
- package/dist/resolver.cjs.map +1 -1
- package/dist/resolver.d.cts +1 -1
- package/dist/resolver.d.cts.map +1 -1
- package/dist/resolver.d.mts +1 -1
- package/dist/resolver.d.mts.map +1 -1
- package/dist/resolver.mjs +13 -3
- package/dist/resolver.mjs.map +1 -1
- package/dist/resolver.test.cjs +35 -3
- package/dist/resolver.test.cjs.map +1 -1
- package/dist/resolver.test.mjs +35 -3
- package/dist/resolver.test.mjs.map +1 -1
- package/dist/{schema-CKBRu-Rt.d.cts → schema-BSl9wiFe.d.mts} +139 -2
- package/dist/schema-BSl9wiFe.d.mts.map +1 -0
- package/dist/{schema-Dn-_Jpb6.d.mts → schema-Bd9l2r7p.d.cts} +139 -2
- package/dist/schema-Bd9l2r7p.d.cts.map +1 -0
- package/dist/schema.cjs +38 -5
- package/dist/schema.cjs.map +1 -1
- package/dist/schema.d.cts +2 -2
- package/dist/schema.d.mts +2 -2
- package/dist/schema.mjs +37 -5
- package/dist/schema.mjs.map +1 -1
- package/dist/schema.test.cjs +3 -3
- package/dist/schema.test.cjs.map +1 -1
- package/dist/schema.test.mjs +3 -3
- package/dist/schema.test.mjs.map +1 -1
- package/dist/services/definitions/adguard-home.d.cts +1 -1
- package/dist/services/definitions/adguard-home.d.mts +1 -1
- package/dist/services/definitions/agent-browser.cjs +161 -0
- package/dist/services/definitions/agent-browser.cjs.map +1 -0
- package/dist/services/definitions/agent-browser.d.cts +7 -0
- package/dist/services/definitions/agent-browser.d.cts.map +1 -0
- package/dist/services/definitions/agent-browser.d.mts +7 -0
- package/dist/services/definitions/agent-browser.d.mts.map +1 -0
- package/dist/services/definitions/agent-browser.mjs +160 -0
- package/dist/services/definitions/agent-browser.mjs.map +1 -0
- package/dist/services/definitions/airbyte.d.cts +1 -1
- package/dist/services/definitions/airbyte.d.mts +1 -1
- package/dist/services/definitions/airflow.d.cts +1 -1
- package/dist/services/definitions/airflow.d.mts +1 -1
- package/dist/services/definitions/anything-llm.d.cts +1 -1
- package/dist/services/definitions/anything-llm.d.mts +1 -1
- package/dist/services/definitions/appflowy.d.cts +1 -1
- package/dist/services/definitions/appflowy.d.mts +1 -1
- package/dist/services/definitions/apptension-saas.cjs.map +1 -1
- package/dist/services/definitions/apptension-saas.d.cts +1 -1
- package/dist/services/definitions/apptension-saas.d.mts +1 -1
- package/dist/services/definitions/apptension-saas.mjs.map +1 -1
- package/dist/services/definitions/appwrite.d.cts +1 -1
- package/dist/services/definitions/appwrite.d.mts +1 -1
- package/dist/services/definitions/audiobookshelf.d.cts +1 -1
- package/dist/services/definitions/audiobookshelf.d.mts +1 -1
- package/dist/services/definitions/authelia.d.cts +1 -1
- package/dist/services/definitions/authelia.d.mts +1 -1
- package/dist/services/definitions/authentik.d.cts +1 -1
- package/dist/services/definitions/authentik.d.mts +1 -1
- package/dist/services/definitions/axolotl.d.cts +1 -1
- package/dist/services/definitions/axolotl.d.mts +1 -1
- package/dist/services/definitions/baserow.d.cts +1 -1
- package/dist/services/definitions/baserow.d.mts +1 -1
- package/dist/services/definitions/beszel.d.cts +1 -1
- package/dist/services/definitions/beszel.d.mts +1 -1
- package/dist/services/definitions/boxyhq-saas.d.cts +1 -1
- package/dist/services/definitions/boxyhq-saas.d.mts +1 -1
- package/dist/services/definitions/browserless.d.cts +1 -1
- package/dist/services/definitions/browserless.d.mts +1 -1
- package/dist/services/definitions/burnlink.cjs +142 -0
- package/dist/services/definitions/burnlink.cjs.map +1 -0
- package/dist/services/definitions/burnlink.d.cts +7 -0
- package/dist/services/definitions/burnlink.d.cts.map +1 -0
- package/dist/services/definitions/burnlink.d.mts +7 -0
- package/dist/services/definitions/burnlink.d.mts.map +1 -0
- package/dist/services/definitions/burnlink.mjs +141 -0
- package/dist/services/definitions/burnlink.mjs.map +1 -0
- package/dist/services/definitions/caddy.d.cts +1 -1
- package/dist/services/definitions/caddy.d.mts +1 -1
- package/dist/services/definitions/cal-com.d.cts +1 -1
- package/dist/services/definitions/cal-com.d.mts +1 -1
- package/dist/services/definitions/calibre-web.d.cts +1 -1
- package/dist/services/definitions/calibre-web.d.mts +1 -1
- package/dist/services/definitions/chatwoot-worker.d.cts +1 -1
- package/dist/services/definitions/chatwoot-worker.d.mts +1 -1
- package/dist/services/definitions/chatwoot.d.cts +1 -1
- package/dist/services/definitions/chatwoot.d.mts +1 -1
- package/dist/services/definitions/chromadb.cjs +4 -1
- package/dist/services/definitions/chromadb.cjs.map +1 -1
- package/dist/services/definitions/chromadb.d.cts +1 -1
- package/dist/services/definitions/chromadb.d.mts +1 -1
- package/dist/services/definitions/chromadb.mjs +4 -1
- package/dist/services/definitions/chromadb.mjs.map +1 -1
- package/dist/services/definitions/claude-code.cjs +1 -1
- package/dist/services/definitions/claude-code.cjs.map +1 -1
- package/dist/services/definitions/claude-code.d.cts +1 -1
- package/dist/services/definitions/claude-code.d.mts +1 -1
- package/dist/services/definitions/claude-code.mjs +1 -1
- package/dist/services/definitions/claude-code.mjs.map +1 -1
- package/dist/services/definitions/clawrouter.cjs +138 -0
- package/dist/services/definitions/clawrouter.cjs.map +1 -0
- package/dist/services/definitions/clawrouter.d.cts +7 -0
- package/dist/services/definitions/clawrouter.d.cts.map +1 -0
- package/dist/services/definitions/clawrouter.d.mts +7 -0
- package/dist/services/definitions/clawrouter.d.mts.map +1 -0
- package/dist/services/definitions/clawrouter.mjs +137 -0
- package/dist/services/definitions/clawrouter.mjs.map +1 -0
- package/dist/services/definitions/clickhouse.d.cts +1 -1
- package/dist/services/definitions/clickhouse.d.mts +1 -1
- package/dist/services/definitions/cloudflared.d.cts +1 -1
- package/dist/services/definitions/cloudflared.d.mts +1 -1
- package/dist/services/definitions/cmsaas-starter.d.cts +1 -1
- package/dist/services/definitions/cmsaas-starter.d.mts +1 -1
- package/dist/services/definitions/cockroachdb.d.cts +1 -1
- package/dist/services/definitions/cockroachdb.d.mts +1 -1
- package/dist/services/definitions/code-server.d.cts +1 -1
- package/dist/services/definitions/code-server.d.mts +1 -1
- package/dist/services/definitions/coder.d.cts +1 -1
- package/dist/services/definitions/coder.d.mts +1 -1
- package/dist/services/definitions/codex.cjs +1 -1
- package/dist/services/definitions/codex.cjs.map +1 -1
- package/dist/services/definitions/codex.d.cts +1 -1
- package/dist/services/definitions/codex.d.mts +1 -1
- package/dist/services/definitions/codex.mjs +1 -1
- package/dist/services/definitions/codex.mjs.map +1 -1
- package/dist/services/definitions/comfyui.d.cts +1 -1
- package/dist/services/definitions/comfyui.d.mts +1 -1
- package/dist/services/definitions/convex-dashboard.d.cts +1 -1
- package/dist/services/definitions/convex-dashboard.d.mts +1 -1
- package/dist/services/definitions/convex.cjs.map +1 -1
- package/dist/services/definitions/convex.d.cts +1 -1
- package/dist/services/definitions/convex.d.mts +1 -1
- package/dist/services/definitions/convex.mjs.map +1 -1
- package/dist/services/definitions/coolify.d.cts +1 -1
- package/dist/services/definitions/coolify.d.mts +1 -1
- package/dist/services/definitions/copaw.cjs +97 -0
- package/dist/services/definitions/copaw.cjs.map +1 -0
- package/dist/services/definitions/copaw.d.cts +7 -0
- package/dist/services/definitions/copaw.d.cts.map +1 -0
- package/dist/services/definitions/copaw.d.mts +7 -0
- package/dist/services/definitions/copaw.d.mts.map +1 -0
- package/dist/services/definitions/copaw.mjs +96 -0
- package/dist/services/definitions/copaw.mjs.map +1 -0
- package/dist/services/definitions/crowdsec.d.cts +1 -1
- package/dist/services/definitions/crowdsec.d.mts +1 -1
- package/dist/services/definitions/dagster.d.cts +1 -1
- package/dist/services/definitions/dagster.d.mts +1 -1
- package/dist/services/definitions/desktop-environment.cjs +2 -1
- package/dist/services/definitions/desktop-environment.cjs.map +1 -1
- package/dist/services/definitions/desktop-environment.d.cts +1 -1
- package/dist/services/definitions/desktop-environment.d.mts +1 -1
- package/dist/services/definitions/desktop-environment.mjs +2 -1
- package/dist/services/definitions/desktop-environment.mjs.map +1 -1
- package/dist/services/definitions/dify.d.cts +1 -1
- package/dist/services/definitions/dify.d.mts +1 -1
- package/dist/services/definitions/directus.d.cts +1 -1
- package/dist/services/definitions/directus.d.mts +1 -1
- package/dist/services/definitions/docsgpt.d.cts +1 -1
- package/dist/services/definitions/docsgpt.d.mts +1 -1
- package/dist/services/definitions/dokploy.d.cts +1 -1
- package/dist/services/definitions/dokploy.d.mts +1 -1
- package/dist/services/definitions/dozzle.d.cts +1 -1
- package/dist/services/definitions/dozzle.d.mts +1 -1
- package/dist/services/definitions/dragonfly.d.cts +1 -1
- package/dist/services/definitions/dragonfly.d.mts +1 -1
- package/dist/services/definitions/drone-ci.d.cts +1 -1
- package/dist/services/definitions/drone-ci.d.mts +1 -1
- package/dist/services/definitions/duplicati.d.cts +1 -1
- package/dist/services/definitions/duplicati.d.mts +1 -1
- package/dist/services/definitions/element-web.d.cts +1 -1
- package/dist/services/definitions/element-web.d.mts +1 -1
- package/dist/services/definitions/excalidraw.d.cts +1 -1
- package/dist/services/definitions/excalidraw.d.mts +1 -1
- package/dist/services/definitions/ffmpeg.d.cts +1 -1
- package/dist/services/definitions/ffmpeg.d.mts +1 -1
- package/dist/services/definitions/firecrawl-playwright.d.cts +1 -1
- package/dist/services/definitions/firecrawl-playwright.d.mts +1 -1
- package/dist/services/definitions/firecrawl.d.cts +1 -1
- package/dist/services/definitions/firecrawl.d.mts +1 -1
- package/dist/services/definitions/flagsmith.d.cts +1 -1
- package/dist/services/definitions/flagsmith.d.mts +1 -1
- package/dist/services/definitions/flowise.d.cts +1 -1
- package/dist/services/definitions/flowise.d.mts +1 -1
- package/dist/services/definitions/focalboard.d.cts +1 -1
- package/dist/services/definitions/focalboard.d.mts +1 -1
- package/dist/services/definitions/fonoster.d.cts +1 -1
- package/dist/services/definitions/fonoster.d.mts +1 -1
- package/dist/services/definitions/forgejo.d.cts +1 -1
- package/dist/services/definitions/forgejo.d.mts +1 -1
- package/dist/services/definitions/formbricks.d.cts +1 -1
- package/dist/services/definitions/formbricks.d.mts +1 -1
- package/dist/services/definitions/gemini-cli.d.cts +1 -1
- package/dist/services/definitions/gemini-cli.d.mts +1 -1
- package/dist/services/definitions/ghost.d.cts +1 -1
- package/dist/services/definitions/ghost.d.mts +1 -1
- package/dist/services/definitions/gitea.d.cts +1 -1
- package/dist/services/definitions/gitea.d.mts +1 -1
- package/dist/services/definitions/gotify.d.cts +1 -1
- package/dist/services/definitions/gotify.d.mts +1 -1
- package/dist/services/definitions/grafana.d.cts +1 -1
- package/dist/services/definitions/grafana.d.mts +1 -1
- package/dist/services/definitions/graylog.d.cts +1 -1
- package/dist/services/definitions/graylog.d.mts +1 -1
- package/dist/services/definitions/headscale.d.cts +1 -1
- package/dist/services/definitions/headscale.d.mts +1 -1
- package/dist/services/definitions/hedgedoc.d.cts +1 -1
- package/dist/services/definitions/hedgedoc.d.mts +1 -1
- package/dist/services/definitions/hexstrike.d.cts +1 -1
- package/dist/services/definitions/hexstrike.d.mts +1 -1
- package/dist/services/definitions/heyform.d.cts +1 -1
- package/dist/services/definitions/heyform.d.mts +1 -1
- package/dist/services/definitions/hindsight.cjs +133 -0
- package/dist/services/definitions/hindsight.cjs.map +1 -0
- package/dist/services/definitions/hindsight.d.cts +7 -0
- package/dist/services/definitions/hindsight.d.cts.map +1 -0
- package/dist/services/definitions/hindsight.d.mts +7 -0
- package/dist/services/definitions/hindsight.d.mts.map +1 -0
- package/dist/services/definitions/hindsight.mjs +132 -0
- package/dist/services/definitions/hindsight.mjs.map +1 -0
- package/dist/services/definitions/homeassistant.d.cts +1 -1
- package/dist/services/definitions/homeassistant.d.mts +1 -1
- package/dist/services/definitions/hoppscotch.d.cts +1 -1
- package/dist/services/definitions/hoppscotch.d.mts +1 -1
- package/dist/services/definitions/immich.d.cts +1 -1
- package/dist/services/definitions/immich.d.mts +1 -1
- package/dist/services/definitions/index.cjs +50 -5
- package/dist/services/definitions/index.cjs.map +1 -1
- package/dist/services/definitions/index.d.cts +19 -4
- package/dist/services/definitions/index.d.cts.map +1 -1
- package/dist/services/definitions/index.d.mts +19 -4
- package/dist/services/definitions/index.d.mts.map +1 -1
- package/dist/services/definitions/index.mjs +36 -6
- package/dist/services/definitions/index.mjs.map +1 -1
- package/dist/services/definitions/infisical.d.cts +1 -1
- package/dist/services/definitions/infisical.d.mts +1 -1
- package/dist/services/definitions/influxdb.d.cts +1 -1
- package/dist/services/definitions/influxdb.d.mts +1 -1
- package/dist/services/definitions/invoke-ai.d.cts +1 -1
- package/dist/services/definitions/invoke-ai.d.mts +1 -1
- package/dist/services/definitions/ixartz-saas.d.cts +1 -1
- package/dist/services/definitions/ixartz-saas.d.mts +1 -1
- package/dist/services/definitions/jaeger.d.cts +1 -1
- package/dist/services/definitions/jaeger.d.mts +1 -1
- package/dist/services/definitions/jan.d.cts +1 -1
- package/dist/services/definitions/jan.d.mts +1 -1
- package/dist/services/definitions/jellyfin.d.cts +1 -1
- package/dist/services/definitions/jellyfin.d.mts +1 -1
- package/dist/services/definitions/jenkins.d.cts +1 -1
- package/dist/services/definitions/jenkins.d.mts +1 -1
- package/dist/services/definitions/jitsi-meet.d.cts +1 -1
- package/dist/services/definitions/jitsi-meet.d.mts +1 -1
- package/dist/services/definitions/keycloak.d.cts +1 -1
- package/dist/services/definitions/keycloak.d.mts +1 -1
- package/dist/services/definitions/kimi.d.cts +1 -1
- package/dist/services/definitions/kimi.d.mts +1 -1
- package/dist/services/definitions/kong.d.cts +1 -1
- package/dist/services/definitions/kong.d.mts +1 -1
- package/dist/services/definitions/lago.d.cts +1 -1
- package/dist/services/definitions/lago.d.mts +1 -1
- package/dist/services/definitions/langflow.d.cts +1 -1
- package/dist/services/definitions/langflow.d.mts +1 -1
- package/dist/services/definitions/langfuse.d.cts +1 -1
- package/dist/services/definitions/langfuse.d.mts +1 -1
- package/dist/services/definitions/lasuite-meet-agents.d.cts +1 -1
- package/dist/services/definitions/lasuite-meet-agents.d.mts +1 -1
- package/dist/services/definitions/lasuite-meet-backend.d.cts +1 -1
- package/dist/services/definitions/lasuite-meet-backend.d.mts +1 -1
- package/dist/services/definitions/lasuite-meet-frontend.d.cts +1 -1
- package/dist/services/definitions/lasuite-meet-frontend.d.mts +1 -1
- package/dist/services/definitions/librechat.d.cts +1 -1
- package/dist/services/definitions/librechat.d.mts +1 -1
- package/dist/services/definitions/lightpanda.d.cts +1 -1
- package/dist/services/definitions/lightpanda.d.mts +1 -1
- package/dist/services/definitions/listmonk.d.cts +1 -1
- package/dist/services/definitions/listmonk.d.mts +1 -1
- package/dist/services/definitions/litellm.d.cts +1 -1
- package/dist/services/definitions/litellm.d.mts +1 -1
- package/dist/services/definitions/livekit.d.cts +1 -1
- package/dist/services/definitions/livekit.d.mts +1 -1
- package/dist/services/definitions/local-ai.d.cts +1 -1
- package/dist/services/definitions/local-ai.d.mts +1 -1
- package/dist/services/definitions/loki.d.cts +1 -1
- package/dist/services/definitions/loki.d.mts +1 -1
- package/dist/services/definitions/mariadb.d.cts +1 -1
- package/dist/services/definitions/mariadb.d.mts +1 -1
- package/dist/services/definitions/matomo.d.cts +1 -1
- package/dist/services/definitions/matomo.d.mts +1 -1
- package/dist/services/definitions/matrix-synapse.d.cts +1 -1
- package/dist/services/definitions/matrix-synapse.d.mts +1 -1
- package/dist/services/definitions/mattermost.d.cts +1 -1
- package/dist/services/definitions/mattermost.d.mts +1 -1
- package/dist/services/definitions/mautic.d.cts +1 -1
- package/dist/services/definitions/mautic.d.mts +1 -1
- package/dist/services/definitions/medusa.d.cts +1 -1
- package/dist/services/definitions/medusa.d.mts +1 -1
- package/dist/services/definitions/meilisearch.d.cts +1 -1
- package/dist/services/definitions/meilisearch.d.mts +1 -1
- package/dist/services/definitions/mem0.cjs +133 -0
- package/dist/services/definitions/mem0.cjs.map +1 -0
- package/dist/services/definitions/mem0.d.cts +7 -0
- package/dist/services/definitions/mem0.d.cts.map +1 -0
- package/dist/services/definitions/mem0.d.mts +7 -0
- package/dist/services/definitions/mem0.d.mts.map +1 -0
- package/dist/services/definitions/mem0.mjs +132 -0
- package/dist/services/definitions/mem0.mjs.map +1 -0
- package/dist/services/definitions/memu.cjs +96 -0
- package/dist/services/definitions/memu.cjs.map +1 -0
- package/dist/services/definitions/memu.d.cts +7 -0
- package/dist/services/definitions/memu.d.cts.map +1 -0
- package/dist/services/definitions/memu.d.mts +7 -0
- package/dist/services/definitions/memu.d.mts.map +1 -0
- package/dist/services/definitions/memu.mjs +95 -0
- package/dist/services/definitions/memu.mjs.map +1 -0
- package/dist/services/definitions/metabase.d.cts +1 -1
- package/dist/services/definitions/metabase.d.mts +1 -1
- package/dist/services/definitions/milvus.cjs +4 -1
- package/dist/services/definitions/milvus.cjs.map +1 -1
- package/dist/services/definitions/milvus.d.cts +1 -1
- package/dist/services/definitions/milvus.d.mts +1 -1
- package/dist/services/definitions/milvus.mjs +4 -1
- package/dist/services/definitions/milvus.mjs.map +1 -1
- package/dist/services/definitions/minio.d.cts +1 -1
- package/dist/services/definitions/minio.d.mts +1 -1
- package/dist/services/definitions/mission-control.d.cts +1 -1
- package/dist/services/definitions/mission-control.d.mts +1 -1
- package/dist/services/definitions/mixpost.d.cts +1 -1
- package/dist/services/definitions/mixpost.d.mts +1 -1
- package/dist/services/definitions/mosquitto.d.cts +1 -1
- package/dist/services/definitions/mosquitto.d.mts +1 -1
- package/dist/services/definitions/motion-canvas.d.cts +1 -1
- package/dist/services/definitions/motion-canvas.d.mts +1 -1
- package/dist/services/definitions/mysql.d.cts +1 -1
- package/dist/services/definitions/mysql.d.mts +1 -1
- package/dist/services/definitions/n8n.d.cts +1 -1
- package/dist/services/definitions/n8n.d.mts +1 -1
- package/dist/services/definitions/nanobot.cjs +86 -0
- package/dist/services/definitions/nanobot.cjs.map +1 -0
- package/dist/services/definitions/nanobot.d.cts +7 -0
- package/dist/services/definitions/nanobot.d.cts.map +1 -0
- package/dist/services/definitions/nanobot.d.mts +7 -0
- package/dist/services/definitions/nanobot.d.mts.map +1 -0
- package/dist/services/definitions/nanobot.mjs +85 -0
- package/dist/services/definitions/nanobot.mjs.map +1 -0
- package/dist/services/definitions/nanoclaw.cjs +79 -0
- package/dist/services/definitions/nanoclaw.cjs.map +1 -0
- package/dist/services/definitions/nanoclaw.d.cts +7 -0
- package/dist/services/definitions/nanoclaw.d.cts.map +1 -0
- package/dist/services/definitions/nanoclaw.d.mts +7 -0
- package/dist/services/definitions/nanoclaw.d.mts.map +1 -0
- package/dist/services/definitions/nanoclaw.mjs +78 -0
- package/dist/services/definitions/nanoclaw.mjs.map +1 -0
- package/dist/services/definitions/navidrome.d.cts +1 -1
- package/dist/services/definitions/navidrome.d.mts +1 -1
- package/dist/services/definitions/neo4j.d.cts +1 -1
- package/dist/services/definitions/neo4j.d.mts +1 -1
- package/dist/services/definitions/nextcloud.d.cts +1 -1
- package/dist/services/definitions/nextcloud.d.mts +1 -1
- package/dist/services/definitions/nginx-proxy-manager.d.cts +1 -1
- package/dist/services/definitions/nginx-proxy-manager.d.mts +1 -1
- package/dist/services/definitions/nocodb.d.cts +1 -1
- package/dist/services/definitions/nocodb.d.mts +1 -1
- package/dist/services/definitions/node-red.d.cts +1 -1
- package/dist/services/definitions/node-red.d.mts +1 -1
- package/dist/services/definitions/ntfy.d.cts +1 -1
- package/dist/services/definitions/ntfy.d.mts +1 -1
- package/dist/services/definitions/ollama.d.cts +1 -1
- package/dist/services/definitions/ollama.d.mts +1 -1
- package/dist/services/definitions/open-saas.d.cts +1 -1
- package/dist/services/definitions/open-saas.d.mts +1 -1
- package/dist/services/definitions/open-webui.d.cts +1 -1
- package/dist/services/definitions/open-webui.d.mts +1 -1
- package/dist/services/definitions/opencode.d.cts +1 -1
- package/dist/services/definitions/opencode.d.mts +1 -1
- package/dist/services/definitions/openhands.d.cts +1 -1
- package/dist/services/definitions/openhands.d.mts +1 -1
- package/dist/services/definitions/openpanel.d.cts +1 -1
- package/dist/services/definitions/openpanel.d.mts +1 -1
- package/dist/services/definitions/opensandbox.cjs +150 -0
- package/dist/services/definitions/opensandbox.cjs.map +1 -0
- package/dist/services/definitions/opensandbox.d.cts +7 -0
- package/dist/services/definitions/opensandbox.d.cts.map +1 -0
- package/dist/services/definitions/opensandbox.d.mts +7 -0
- package/dist/services/definitions/opensandbox.d.mts.map +1 -0
- package/dist/services/definitions/opensandbox.mjs +149 -0
- package/dist/services/definitions/opensandbox.mjs.map +1 -0
- package/dist/services/definitions/opensearch.d.cts +1 -1
- package/dist/services/definitions/opensearch.d.mts +1 -1
- package/dist/services/definitions/outline.d.cts +1 -1
- package/dist/services/definitions/outline.d.mts +1 -1
- package/dist/services/definitions/paperless-ngx.d.cts +1 -1
- package/dist/services/definitions/paperless-ngx.d.mts +1 -1
- package/dist/services/definitions/pentagi.d.cts +1 -1
- package/dist/services/definitions/pentagi.d.mts +1 -1
- package/dist/services/definitions/pentestagent.d.cts +1 -1
- package/dist/services/definitions/pentestagent.d.mts +1 -1
- package/dist/services/definitions/photoprism.d.cts +1 -1
- package/dist/services/definitions/photoprism.d.mts +1 -1
- package/dist/services/definitions/pihole.d.cts +1 -1
- package/dist/services/definitions/pihole.d.mts +1 -1
- package/dist/services/definitions/piper-tts.d.cts +1 -1
- package/dist/services/definitions/piper-tts.d.mts +1 -1
- package/dist/services/definitions/plane.d.cts +1 -1
- package/dist/services/definitions/plane.d.mts +1 -1
- package/dist/services/definitions/plausible.d.cts +1 -1
- package/dist/services/definitions/plausible.d.mts +1 -1
- package/dist/services/definitions/playwright-server.d.cts +1 -1
- package/dist/services/definitions/playwright-server.d.mts +1 -1
- package/dist/services/definitions/pocket-id.d.cts +1 -1
- package/dist/services/definitions/pocket-id.d.mts +1 -1
- package/dist/services/definitions/pocketbase.d.cts +1 -1
- package/dist/services/definitions/pocketbase.d.mts +1 -1
- package/dist/services/definitions/portainer.d.cts +1 -1
- package/dist/services/definitions/portainer.d.mts +1 -1
- package/dist/services/definitions/postgresql.d.cts +1 -1
- package/dist/services/definitions/postgresql.d.mts +1 -1
- package/dist/services/definitions/posthog.d.cts +1 -1
- package/dist/services/definitions/posthog.d.mts +1 -1
- package/dist/services/definitions/postiz.d.cts +1 -1
- package/dist/services/definitions/postiz.d.mts +1 -1
- package/dist/services/definitions/prometheus.d.cts +1 -1
- package/dist/services/definitions/prometheus.d.mts +1 -1
- package/dist/services/definitions/qdrant.d.cts +1 -1
- package/dist/services/definitions/qdrant.d.mts +1 -1
- package/dist/services/definitions/rabbitmq.d.cts +1 -1
- package/dist/services/definitions/rabbitmq.d.mts +1 -1
- package/dist/services/definitions/ragflow.d.cts +1 -1
- package/dist/services/definitions/ragflow.d.mts +1 -1
- package/dist/services/definitions/redis.d.cts +1 -1
- package/dist/services/definitions/redis.d.mts +1 -1
- package/dist/services/definitions/relaticle-horizon.cjs +48 -0
- package/dist/services/definitions/relaticle-horizon.cjs.map +1 -0
- package/dist/services/definitions/relaticle-horizon.d.cts +7 -0
- package/dist/services/definitions/relaticle-horizon.d.cts.map +1 -0
- package/dist/services/definitions/relaticle-horizon.d.mts +7 -0
- package/dist/services/definitions/relaticle-horizon.d.mts.map +1 -0
- package/dist/services/definitions/relaticle-horizon.mjs +48 -0
- package/dist/services/definitions/relaticle-horizon.mjs.map +1 -0
- package/dist/services/definitions/relaticle-scheduler.cjs +44 -0
- package/dist/services/definitions/relaticle-scheduler.cjs.map +1 -0
- package/dist/services/definitions/relaticle-scheduler.d.cts +7 -0
- package/dist/services/definitions/relaticle-scheduler.d.cts.map +1 -0
- package/dist/services/definitions/relaticle-scheduler.d.mts +7 -0
- package/dist/services/definitions/relaticle-scheduler.d.mts.map +1 -0
- package/dist/services/definitions/relaticle-scheduler.mjs +44 -0
- package/dist/services/definitions/relaticle-scheduler.mjs.map +1 -0
- package/dist/services/definitions/relaticle.cjs +151 -0
- package/dist/services/definitions/relaticle.cjs.map +1 -0
- package/dist/services/definitions/relaticle.d.cts +80 -0
- package/dist/services/definitions/relaticle.d.cts.map +1 -0
- package/dist/services/definitions/relaticle.d.mts +80 -0
- package/dist/services/definitions/relaticle.d.mts.map +1 -0
- package/dist/services/definitions/relaticle.mjs +149 -0
- package/dist/services/definitions/relaticle.mjs.map +1 -0
- package/dist/services/definitions/remotion.d.cts +1 -1
- package/dist/services/definitions/remotion.d.mts +1 -1
- package/dist/services/definitions/restic.d.cts +1 -1
- package/dist/services/definitions/restic.d.mts +1 -1
- package/dist/services/definitions/revolt.d.cts +1 -1
- package/dist/services/definitions/revolt.d.mts +1 -1
- package/dist/services/definitions/rocketchat.d.cts +1 -1
- package/dist/services/definitions/rocketchat.d.mts +1 -1
- package/dist/services/definitions/saleor.d.cts +1 -1
- package/dist/services/definitions/saleor.d.mts +1 -1
- package/dist/services/definitions/scrapling.d.cts +1 -1
- package/dist/services/definitions/scrapling.d.mts +1 -1
- package/dist/services/definitions/searxng.d.cts +1 -1
- package/dist/services/definitions/searxng.d.mts +1 -1
- package/dist/services/definitions/sentry.d.cts +1 -1
- package/dist/services/definitions/sentry.d.mts +1 -1
- package/dist/services/definitions/signoz.d.cts +1 -1
- package/dist/services/definitions/signoz.d.mts +1 -1
- package/dist/services/definitions/solidityguard.d.cts +1 -1
- package/dist/services/definitions/solidityguard.d.mts +1 -1
- package/dist/services/definitions/sonarqube.d.cts +1 -1
- package/dist/services/definitions/sonarqube.d.mts +1 -1
- package/dist/services/definitions/stable-diffusion.d.cts +1 -1
- package/dist/services/definitions/stable-diffusion.d.mts +1 -1
- package/dist/services/definitions/steel-browser.d.cts +1 -1
- package/dist/services/definitions/steel-browser.d.mts +1 -1
- package/dist/services/definitions/stirling-pdf.d.cts +1 -1
- package/dist/services/definitions/stirling-pdf.d.mts +1 -1
- package/dist/services/definitions/strapi.d.cts +1 -1
- package/dist/services/definitions/strapi.d.mts +1 -1
- package/dist/services/definitions/stream-gateway.d.cts +1 -1
- package/dist/services/definitions/stream-gateway.d.mts +1 -1
- package/dist/services/definitions/supabase.d.cts +1 -1
- package/dist/services/definitions/supabase.d.mts +1 -1
- package/dist/services/definitions/superset.d.cts +1 -1
- package/dist/services/definitions/superset.d.mts +1 -1
- package/dist/services/definitions/surrealdb.d.cts +1 -1
- package/dist/services/definitions/surrealdb.d.mts +1 -1
- package/dist/services/definitions/tabby-ml.d.cts +1 -1
- package/dist/services/definitions/tabby-ml.d.mts +1 -1
- package/dist/services/definitions/tailscale.d.cts +1 -1
- package/dist/services/definitions/tailscale.d.mts +1 -1
- package/dist/services/definitions/tempo.d.cts +1 -1
- package/dist/services/definitions/tempo.d.mts +1 -1
- package/dist/services/definitions/temporal.d.cts +1 -1
- package/dist/services/definitions/temporal.d.mts +1 -1
- package/dist/services/definitions/text-gen-webui.d.cts +1 -1
- package/dist/services/definitions/text-gen-webui.d.mts +1 -1
- package/dist/services/definitions/timescaledb.d.cts +1 -1
- package/dist/services/definitions/timescaledb.d.mts +1 -1
- package/dist/services/definitions/traefik.d.cts +1 -1
- package/dist/services/definitions/traefik.d.mts +1 -1
- package/dist/services/definitions/twenty-worker.cjs +73 -0
- package/dist/services/definitions/twenty-worker.cjs.map +1 -0
- package/dist/services/definitions/twenty-worker.d.cts +7 -0
- package/dist/services/definitions/twenty-worker.d.cts.map +1 -0
- package/dist/services/definitions/twenty-worker.d.mts +7 -0
- package/dist/services/definitions/twenty-worker.d.mts.map +1 -0
- package/dist/services/definitions/twenty-worker.mjs +72 -0
- package/dist/services/definitions/twenty-worker.mjs.map +1 -0
- package/dist/services/definitions/twenty.cjs +24 -2
- package/dist/services/definitions/twenty.cjs.map +1 -1
- package/dist/services/definitions/twenty.d.cts +1 -1
- package/dist/services/definitions/twenty.d.mts +1 -1
- package/dist/services/definitions/twenty.mjs +24 -2
- package/dist/services/definitions/twenty.mjs.map +1 -1
- package/dist/services/definitions/umami.d.cts +1 -1
- package/dist/services/definitions/umami.d.mts +1 -1
- package/dist/services/definitions/uptime-kuma.d.cts +1 -1
- package/dist/services/definitions/uptime-kuma.d.mts +1 -1
- package/dist/services/definitions/usesend.d.cts +1 -1
- package/dist/services/definitions/usesend.d.mts +1 -1
- package/dist/services/definitions/valkey.d.cts +1 -1
- package/dist/services/definitions/valkey.d.mts +1 -1
- package/dist/services/definitions/vault.d.cts +1 -1
- package/dist/services/definitions/vault.d.mts +1 -1
- package/dist/services/definitions/vaultwarden.d.cts +1 -1
- package/dist/services/definitions/vaultwarden.d.mts +1 -1
- package/dist/services/definitions/vector-log.d.cts +1 -1
- package/dist/services/definitions/vector-log.d.mts +1 -1
- package/dist/services/definitions/vikunja.d.cts +1 -1
- package/dist/services/definitions/vikunja.d.mts +1 -1
- package/dist/services/definitions/watchtower.d.cts +1 -1
- package/dist/services/definitions/watchtower.d.mts +1 -1
- package/dist/services/definitions/weaviate.cjs +4 -1
- package/dist/services/definitions/weaviate.cjs.map +1 -1
- package/dist/services/definitions/weaviate.d.cts +1 -1
- package/dist/services/definitions/weaviate.d.mts +1 -1
- package/dist/services/definitions/weaviate.mjs +4 -1
- package/dist/services/definitions/weaviate.mjs.map +1 -1
- package/dist/services/definitions/whisper.d.cts +1 -1
- package/dist/services/definitions/whisper.d.mts +1 -1
- package/dist/services/definitions/wireguard.d.cts +1 -1
- package/dist/services/definitions/wireguard.d.mts +1 -1
- package/dist/services/definitions/woodpecker-ci.d.cts +1 -1
- package/dist/services/definitions/woodpecker-ci.d.mts +1 -1
- package/dist/services/definitions/xyops.d.cts +1 -1
- package/dist/services/definitions/xyops.d.mts +1 -1
- package/dist/services/definitions/zeroclaw.cjs +103 -0
- package/dist/services/definitions/zeroclaw.cjs.map +1 -0
- package/dist/services/definitions/zeroclaw.d.cts +7 -0
- package/dist/services/definitions/zeroclaw.d.cts.map +1 -0
- package/dist/services/definitions/zeroclaw.d.mts +7 -0
- package/dist/services/definitions/zeroclaw.d.mts.map +1 -0
- package/dist/services/definitions/zeroclaw.mjs +102 -0
- package/dist/services/definitions/zeroclaw.mjs.map +1 -0
- package/dist/services/definitions/zulip.d.cts +1 -1
- package/dist/services/definitions/zulip.d.mts +1 -1
- package/dist/services/registry.d.cts +1 -1
- package/dist/services/registry.d.mts +1 -1
- package/dist/services/registry.test.cjs +8 -8
- package/dist/services/registry.test.cjs.map +1 -1
- package/dist/services/registry.test.mjs +8 -8
- package/dist/services/registry.test.mjs.map +1 -1
- package/dist/skills/registry.cjs +19 -0
- package/dist/skills/registry.cjs.map +1 -1
- package/dist/skills/registry.d.cts +1 -1
- package/dist/skills/registry.d.cts.map +1 -1
- package/dist/skills/registry.d.mts +1 -1
- package/dist/skills/registry.d.mts.map +1 -1
- package/dist/skills/registry.mjs +19 -0
- package/dist/skills/registry.mjs.map +1 -1
- package/dist/{skills-BlzpHmpH.cjs → skills-uPxJVmKk.cjs} +452 -1
- package/dist/skills-uPxJVmKk.cjs.map +1 -0
- package/dist/{test.CTcmp4Su-ClCHJ3FA.mjs → test.CTcmp4Su-BRa7-bTj.mjs} +2 -2
- package/dist/{test.CTcmp4Su-ClCHJ3FA.mjs.map → test.CTcmp4Su-BRa7-bTj.mjs.map} +1 -1
- package/dist/{test.CTcmp4Su-DlzTarwH.cjs → test.CTcmp4Su-BWSPM8ZQ.cjs} +19 -1
- package/dist/{test.CTcmp4Su-DlzTarwH.cjs.map → test.CTcmp4Su-BWSPM8ZQ.cjs.map} +1 -1
- package/dist/track-analytics.d.cts +1 -1
- package/dist/track-analytics.d.mts +1 -1
- package/dist/track-analytics.test.cjs +1 -1
- package/dist/track-analytics.test.mjs +1 -1
- package/dist/types-BREUfzzq.d.mts +77 -0
- package/dist/types-BREUfzzq.d.mts.map +1 -0
- package/dist/types-Bsn0XzSP.d.cts +95 -0
- package/dist/types-Bsn0XzSP.d.cts.map +1 -0
- package/dist/types-CyZ5mn6w.d.cts +77 -0
- package/dist/types-CyZ5mn6w.d.cts.map +1 -0
- package/dist/types-DIsPc-hb.d.cts +100 -0
- package/dist/types-DIsPc-hb.d.cts.map +1 -0
- package/dist/types-DbXajvYq.d.mts +100 -0
- package/dist/types-DbXajvYq.d.mts.map +1 -0
- package/dist/types-DwTKyCZ9.d.mts +95 -0
- package/dist/types-DwTKyCZ9.d.mts.map +1 -0
- package/dist/{types-CR83OJiq.d.cts → types-dyBnrHm9.d.cts} +5 -1
- package/dist/types-dyBnrHm9.d.cts.map +1 -0
- package/dist/{types-zYjGTuyn.d.mts → types-fRSnaZTX.d.mts} +5 -1
- package/dist/types-fRSnaZTX.d.mts.map +1 -0
- package/dist/types.cjs +7 -0
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +2 -93
- package/dist/types.d.mts +2 -93
- package/dist/types.mjs +7 -0
- package/dist/types.mjs.map +1 -1
- package/dist/validator.cjs +1 -1
- package/dist/validator.d.cts +1 -1
- package/dist/validator.d.mts +1 -1
- package/dist/validator.test.cjs +1 -1
- package/dist/validator.test.mjs +1 -1
- package/dist/version-manager.d.cts +1 -1
- package/dist/version-manager.d.mts +1 -1
- package/dist/version-manager.test.cjs +3 -3
- package/dist/version-manager.test.cjs.map +1 -1
- package/dist/version-manager.test.mjs +3 -3
- package/dist/version-manager.test.mjs.map +1 -1
- package/dist/zeroclaw-B-0TuOfZ.d.mts +7 -0
- package/dist/zeroclaw-B-0TuOfZ.d.mts.map +1 -0
- package/dist/zeroclaw-BvKpDHKe.d.cts +7 -0
- package/dist/zeroclaw-BvKpDHKe.d.cts.map +1 -0
- package/package.json +6 -2
- package/src/addon-stack.test.ts +170 -16
- package/src/addon-stack.ts +114 -43
- package/src/composer.test.ts +59 -0
- package/src/composer.ts +135 -194
- package/src/deployers/coolify.ts +38 -0
- package/src/deployers/dokploy.ts +38 -0
- package/src/deployers/types.ts +2 -0
- package/src/frameworks/claude-code-fw.ts +118 -0
- package/src/frameworks/codex-fw.ts +102 -0
- package/src/frameworks/copaw.ts +154 -0
- package/src/frameworks/index.ts +46 -0
- package/src/frameworks/memu.ts +149 -0
- package/src/frameworks/nanobot.ts +156 -0
- package/src/frameworks/nanoclaw.ts +126 -0
- package/src/frameworks/openclaw.ts +325 -0
- package/src/frameworks/registry.test.ts +131 -0
- package/src/frameworks/registry.ts +28 -0
- package/src/frameworks/types.ts +146 -0
- package/src/frameworks/zeroclaw.ts +148 -0
- package/src/generate.test.ts +55 -4
- package/src/generate.ts +67 -14
- package/src/generators/caddy.test.ts +41 -1
- package/src/generators/caddy.ts +16 -2
- package/src/generators/clone-repos.test.ts +1 -1
- package/src/generators/clone-repos.ts +7 -2
- package/src/generators/env.test.ts +2 -2
- package/src/generators/env.ts +30 -180
- package/src/generators/health-check.ts +4 -4
- package/src/generators/openclaw-json.ts +57 -5
- package/src/generators/postgres-init.ts +11 -0
- package/src/generators/readme.ts +75 -9
- package/src/generators/scripts.test.ts +1 -1
- package/src/generators/skills.ts +458 -0
- package/src/generators/traefik.test.ts +13 -13
- package/src/index.ts +46 -7
- package/src/logger/__tests__/logger.test.ts +388 -0
- package/src/logger/index.ts +14 -0
- package/src/logger/logger.ts +326 -0
- package/src/logger/sinks/callback-sink.ts +13 -0
- package/src/logger/sinks/console-sink.ts +51 -0
- package/src/logger/sinks/file-sink.ts +121 -0
- package/src/logger/types.ts +90 -0
- package/src/migrations.ts +8 -1
- package/src/presets/presets.test.ts +4 -4
- package/src/presets/registry.test.ts +6 -6
- package/src/resolver.test.ts +31 -3
- package/src/resolver.ts +19 -3
- package/src/schema.test.ts +2 -2
- package/src/schema.ts +61 -13
- package/src/services/definitions/agent-browser.ts +177 -0
- package/src/services/definitions/apptension-saas.ts +2 -1
- package/src/services/definitions/burnlink.ts +142 -0
- package/src/services/definitions/chromadb.ts +1 -1
- package/src/services/definitions/claude-code.ts +1 -1
- package/src/services/definitions/clawrouter.ts +141 -0
- package/src/services/definitions/codex.ts +1 -1
- package/src/services/definitions/convex.ts +1 -2
- package/src/services/definitions/copaw.ts +101 -0
- package/src/services/definitions/desktop-environment.ts +1 -0
- package/src/services/definitions/hindsight.ts +132 -0
- package/src/services/definitions/index.ts +61 -14
- package/src/services/definitions/mem0.ts +132 -0
- package/src/services/definitions/memu.ts +96 -0
- package/src/services/definitions/milvus.ts +1 -1
- package/src/services/definitions/nanobot.ts +89 -0
- package/src/services/definitions/nanoclaw.ts +78 -0
- package/src/services/definitions/opensandbox.ts +147 -0
- package/src/services/definitions/relaticle-horizon.ts +48 -0
- package/src/services/definitions/relaticle-scheduler.ts +42 -0
- package/src/services/definitions/relaticle.ts +142 -0
- package/src/services/definitions/twenty-worker.ts +70 -0
- package/src/services/definitions/twenty.ts +16 -2
- package/src/services/definitions/weaviate.ts +1 -1
- package/src/services/definitions/zeroclaw.ts +102 -0
- package/src/services/registry.test.ts +7 -7
- package/src/skills/registry.ts +10 -0
- package/src/types.ts +11 -1
- package/src/version-manager.test.ts +2 -2
- package/dist/schema-CKBRu-Rt.d.cts.map +0 -1
- package/dist/schema-Dn-_Jpb6.d.mts.map +0 -1
- package/dist/skills-BlzpHmpH.cjs.map +0 -1
- package/dist/types-CR83OJiq.d.cts.map +0 -1
- package/dist/types-zYjGTuyn.d.mts.map +0 -1
- package/dist/types.d.cts.map +0 -1
- package/dist/types.d.mts.map +0 -1
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { t as AgentFrameworkDefinition } from "./types-DbXajvYq.mjs";
|
|
2
|
+
|
|
3
|
+
//#region src/frameworks/zeroclaw.d.ts
|
|
4
|
+
declare const zeroclawFramework: AgentFrameworkDefinition;
|
|
5
|
+
//#endregion
|
|
6
|
+
export { zeroclawFramework as t };
|
|
7
|
+
//# sourceMappingURL=zeroclaw-B-0TuOfZ.d.mts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zeroclaw-B-0TuOfZ.d.mts","names":[],"sources":["../src/frameworks/zeroclaw.ts"],"mappings":";;;cAuBa,iBAAA,EAAmB,wBAAA"}
|
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
import { t as AgentFrameworkDefinition } from "./types-DIsPc-hb.cjs";
|
|
2
|
+
|
|
3
|
+
//#region src/frameworks/zeroclaw.d.ts
|
|
4
|
+
declare const zeroclawFramework: AgentFrameworkDefinition;
|
|
5
|
+
//#endregion
|
|
6
|
+
export { zeroclawFramework as t };
|
|
7
|
+
//# sourceMappingURL=zeroclaw-BvKpDHKe.d.cts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"zeroclaw-BvKpDHKe.d.cts","names":[],"sources":["../src/frameworks/zeroclaw.ts"],"mappings":";;;cAuBa,iBAAA,EAAmB,wBAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@better-openclaw/core",
|
|
3
|
-
"version": "1.0.
|
|
3
|
+
"version": "1.0.30",
|
|
4
4
|
"private": false,
|
|
5
5
|
"description": "Core logic for better-openclaw: schemas, service registry, resolver, composer, validators and generators",
|
|
6
6
|
"author": "bidew.io <bachir@bidew.io>",
|
|
@@ -12,7 +12,11 @@
|
|
|
12
12
|
},
|
|
13
13
|
"homepage": "https://better-openclaw.dev",
|
|
14
14
|
"packageManager": "pnpm@10.30.3",
|
|
15
|
-
"sideEffects":
|
|
15
|
+
"sideEffects": [
|
|
16
|
+
"./src/frameworks/index.ts",
|
|
17
|
+
"./dist/index.mjs",
|
|
18
|
+
"./dist/index.cjs"
|
|
19
|
+
],
|
|
16
20
|
"main": "dist/index.mjs",
|
|
17
21
|
"types": "dist/index.d.ts",
|
|
18
22
|
"type": "module",
|
package/src/addon-stack.test.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
import { parse } from "yaml";
|
|
2
1
|
import { describe, expect, it } from "vitest";
|
|
2
|
+
import { parse } from "yaml";
|
|
3
3
|
import { generateAddonStack, updateAddonStack } from "./addon-stack.js";
|
|
4
4
|
import { AddonStackInputSchema } from "./schema.js";
|
|
5
5
|
|
|
@@ -83,7 +83,7 @@ describe("generateAddonStack", () => {
|
|
|
83
83
|
// Password should be non-empty (48 hex chars = 24 bytes)
|
|
84
84
|
const match = result.envFile.match(/N8N_DB_PASSWORD=([a-f0-9]+)/);
|
|
85
85
|
expect(match).not.toBeNull();
|
|
86
|
-
expect(match
|
|
86
|
+
expect(match?.[1].length).toBe(48);
|
|
87
87
|
});
|
|
88
88
|
|
|
89
89
|
it("gracefully handles unknown service IDs without throwing", () => {
|
|
@@ -131,8 +131,8 @@ describe("generateAddonStack", () => {
|
|
|
131
131
|
|
|
132
132
|
const n8nRoute = result.proxyRoutes.find((r) => r.serviceId === "n8n");
|
|
133
133
|
expect(n8nRoute).toBeDefined();
|
|
134
|
-
expect(n8nRoute
|
|
135
|
-
expect(n8nRoute
|
|
134
|
+
expect(n8nRoute?.path).toBe("/n8n");
|
|
135
|
+
expect(n8nRoute?.port).toBe(5678);
|
|
136
136
|
});
|
|
137
137
|
|
|
138
138
|
it("generates skill files and openclaw config patch", () => {
|
|
@@ -155,11 +155,9 @@ describe("generateAddonStack", () => {
|
|
|
155
155
|
|
|
156
156
|
// Port should be reassigned
|
|
157
157
|
const portAssignments = result.metadata.portAssignments;
|
|
158
|
-
const n8nAssignment = Object.entries(portAssignments).find(([key]) =>
|
|
159
|
-
key.startsWith("n8n:"),
|
|
160
|
-
);
|
|
158
|
+
const n8nAssignment = Object.entries(portAssignments).find(([key]) => key.startsWith("n8n:"));
|
|
161
159
|
expect(n8nAssignment).toBeDefined();
|
|
162
|
-
expect(n8nAssignment
|
|
160
|
+
expect(n8nAssignment?.[1]).not.toBe(5678);
|
|
163
161
|
});
|
|
164
162
|
|
|
165
163
|
it("sanitizes project name from instanceId", () => {
|
|
@@ -211,9 +209,9 @@ describe("generateAddonStack", () => {
|
|
|
211
209
|
// MEILI_MASTER_KEY should be a base64url string of at least 32 chars (24 bytes)
|
|
212
210
|
const match = result.envFile.match(/MEILI_MASTER_KEY=([^\n]+)/);
|
|
213
211
|
expect(match).not.toBeNull();
|
|
214
|
-
expect(match
|
|
212
|
+
expect(match?.[1].length).toBeGreaterThanOrEqual(32);
|
|
215
213
|
// Should not be empty
|
|
216
|
-
expect(match
|
|
214
|
+
expect(match?.[1]).not.toBe("");
|
|
217
215
|
});
|
|
218
216
|
|
|
219
217
|
it("applies env quirks to envFile output (grafana GF_SECURITY_ADMIN_PASSWORD)", () => {
|
|
@@ -226,7 +224,7 @@ describe("generateAddonStack", () => {
|
|
|
226
224
|
const match = result.envFile.match(/GF_SECURITY_ADMIN_PASSWORD=([^\n]+)/);
|
|
227
225
|
expect(match).not.toBeNull();
|
|
228
226
|
// Should be at least 22 chars (16 bytes base64url)
|
|
229
|
-
expect(match
|
|
227
|
+
expect(match?.[1].length).toBeGreaterThanOrEqual(22);
|
|
230
228
|
});
|
|
231
229
|
|
|
232
230
|
it("syncs DB_POSTGRESDB_PASSWORD with N8N_DB_PASSWORD via must_sync quirk", () => {
|
|
@@ -241,7 +239,7 @@ describe("generateAddonStack", () => {
|
|
|
241
239
|
expect(n8nDbPw).not.toBeNull();
|
|
242
240
|
expect(dbPostgresPw).not.toBeNull();
|
|
243
241
|
// Both passwords must match due to must_sync quirk
|
|
244
|
-
expect(n8nDbPw
|
|
242
|
+
expect(n8nDbPw?.[1]).toBe(dbPostgresPw?.[1]);
|
|
245
243
|
});
|
|
246
244
|
|
|
247
245
|
it("syncs user-provided credential with DB password reference", () => {
|
|
@@ -270,11 +268,9 @@ describe("generateAddonStack", () => {
|
|
|
270
268
|
|
|
271
269
|
// n8n should still get its default port (no conflict with qdrant)
|
|
272
270
|
const portAssignments = result.metadata.portAssignments;
|
|
273
|
-
const n8nAssignment = Object.entries(portAssignments).find(([key]) =>
|
|
274
|
-
key.startsWith("n8n:"),
|
|
275
|
-
);
|
|
271
|
+
const n8nAssignment = Object.entries(portAssignments).find(([key]) => key.startsWith("n8n:"));
|
|
276
272
|
expect(n8nAssignment).toBeDefined();
|
|
277
|
-
expect(n8nAssignment
|
|
273
|
+
expect(n8nAssignment?.[1]).toBe(5678);
|
|
278
274
|
});
|
|
279
275
|
|
|
280
276
|
it("does not dual-list GPU services in both skipped and resolved", () => {
|
|
@@ -310,6 +306,164 @@ describe("generateAddonStack", () => {
|
|
|
310
306
|
expect(isSkipped).toBe(false);
|
|
311
307
|
expect(result.metadata.resolvedServices).toContain("ollama");
|
|
312
308
|
});
|
|
309
|
+
|
|
310
|
+
// ── OpenSandbox ────────────────────────────────────────────────────────
|
|
311
|
+
|
|
312
|
+
it("generates valid compose YAML for opensandbox", () => {
|
|
313
|
+
const result = generateAddonStack({
|
|
314
|
+
instanceId: "test-instance",
|
|
315
|
+
services: ["opensandbox"],
|
|
316
|
+
});
|
|
317
|
+
|
|
318
|
+
expect(result.metadata.resolvedServices).toContain("opensandbox");
|
|
319
|
+
const composed = parse(result.composeOverride);
|
|
320
|
+
expect(composed.services).toHaveProperty("opensandbox");
|
|
321
|
+
|
|
322
|
+
// Should have Docker socket mount
|
|
323
|
+
const volumes = composed.services.opensandbox.volumes as string[];
|
|
324
|
+
expect(volumes.some((v: string) => v.includes("/var/run/docker.sock"))).toBe(true);
|
|
325
|
+
|
|
326
|
+
// Should have config bind mount
|
|
327
|
+
expect(volumes.some((v: string) => v.includes("sandbox.toml"))).toBe(true);
|
|
328
|
+
});
|
|
329
|
+
|
|
330
|
+
it("generates OPEN_SANDBOX_API_KEY with min 32 bytes via env quirk", () => {
|
|
331
|
+
const result = generateAddonStack({
|
|
332
|
+
instanceId: "test-instance",
|
|
333
|
+
services: ["opensandbox"],
|
|
334
|
+
generateSecrets: true,
|
|
335
|
+
});
|
|
336
|
+
|
|
337
|
+
const match = result.envFile.match(/OPEN_SANDBOX_API_KEY=([^\n]+)/);
|
|
338
|
+
expect(match).not.toBeNull();
|
|
339
|
+
// 32 bytes base64url ≈ 43 chars
|
|
340
|
+
expect(match?.[1].length).toBeGreaterThanOrEqual(43);
|
|
341
|
+
});
|
|
342
|
+
|
|
343
|
+
it("generates code-sandbox skill file and config patch", () => {
|
|
344
|
+
const result = generateAddonStack({
|
|
345
|
+
instanceId: "test-instance",
|
|
346
|
+
services: ["opensandbox"],
|
|
347
|
+
});
|
|
348
|
+
|
|
349
|
+
// Skill config patch
|
|
350
|
+
expect(result.openclawConfigPatch.skills.entries).toHaveProperty("code-sandbox");
|
|
351
|
+
expect(result.openclawConfigPatch.skills.entries["code-sandbox"].enabled).toBe(true);
|
|
352
|
+
|
|
353
|
+
// Skill file content should exist and contain key actions
|
|
354
|
+
const skillFile = Object.values(result.skillFiles).find((content) =>
|
|
355
|
+
content.includes("code-sandbox"),
|
|
356
|
+
);
|
|
357
|
+
expect(skillFile).toBeDefined();
|
|
358
|
+
expect(skillFile).toContain("execute_code");
|
|
359
|
+
expect(skillFile).toContain("create_desktop");
|
|
360
|
+
expect(skillFile).toContain("get_preview_url");
|
|
361
|
+
});
|
|
362
|
+
|
|
363
|
+
it("generates proxy route for opensandbox at /sandbox", () => {
|
|
364
|
+
const result = generateAddonStack({
|
|
365
|
+
instanceId: "test-instance",
|
|
366
|
+
services: ["opensandbox"],
|
|
367
|
+
});
|
|
368
|
+
|
|
369
|
+
const route = result.proxyRoutes.find((r) => r.serviceId === "opensandbox");
|
|
370
|
+
expect(route).toBeDefined();
|
|
371
|
+
expect(route?.path).toBe("/sandbox");
|
|
372
|
+
expect(route?.port).toBe(8080);
|
|
373
|
+
});
|
|
374
|
+
|
|
375
|
+
it("generates sandbox.toml in additionalFiles", () => {
|
|
376
|
+
const result = generateAddonStack({
|
|
377
|
+
instanceId: "test-instance",
|
|
378
|
+
services: ["opensandbox"],
|
|
379
|
+
});
|
|
380
|
+
|
|
381
|
+
expect(result.additionalFiles).toHaveProperty("sandbox.toml");
|
|
382
|
+
const toml = result.additionalFiles["sandbox.toml"];
|
|
383
|
+
expect(toml).toContain("[server]");
|
|
384
|
+
expect(toml).toContain('api_key = "${OPEN_SANDBOX_API_KEY}"');
|
|
385
|
+
expect(toml).toContain("[runtime]");
|
|
386
|
+
expect(toml).toContain("[docker]");
|
|
387
|
+
expect(toml).toContain("[secure_runtime]");
|
|
388
|
+
expect(toml).toContain('type = "gvisor"');
|
|
389
|
+
});
|
|
390
|
+
|
|
391
|
+
it("populates prePullImages with 8 images across 3 priority tiers", () => {
|
|
392
|
+
const result = generateAddonStack({
|
|
393
|
+
instanceId: "test-instance",
|
|
394
|
+
services: ["opensandbox"],
|
|
395
|
+
});
|
|
396
|
+
|
|
397
|
+
const images = result.metadata.prePullImages;
|
|
398
|
+
expect(images.length).toBe(8);
|
|
399
|
+
|
|
400
|
+
// Priority 1: core + Homespace
|
|
401
|
+
const p1 = images.filter((i) => i.priority === 1);
|
|
402
|
+
expect(p1.length).toBe(4);
|
|
403
|
+
expect(p1.map((i) => i.image)).toContain("opensandbox/server:v1.0.6");
|
|
404
|
+
expect(p1.map((i) => i.image)).toContain("opensandbox/execd:v1.0.6");
|
|
405
|
+
expect(p1.map((i) => i.image)).toContain("opensandbox/desktop:latest");
|
|
406
|
+
expect(p1.map((i) => i.image)).toContain("opensandbox/chrome:latest");
|
|
407
|
+
|
|
408
|
+
// Priority 2: common languages
|
|
409
|
+
const p2 = images.filter((i) => i.priority === 2);
|
|
410
|
+
expect(p2.length).toBe(2);
|
|
411
|
+
expect(p2.map((i) => i.image)).toContain("opensandbox/code-interpreter:python");
|
|
412
|
+
expect(p2.map((i) => i.image)).toContain("opensandbox/code-interpreter:node");
|
|
413
|
+
|
|
414
|
+
// Priority 3: optional
|
|
415
|
+
const p3 = images.filter((i) => i.priority === 3);
|
|
416
|
+
expect(p3.length).toBe(2);
|
|
417
|
+
expect(p3.map((i) => i.image)).toContain("opensandbox/code-interpreter:latest");
|
|
418
|
+
expect(p3.map((i) => i.image)).toContain("opensandbox/vscode:latest");
|
|
419
|
+
});
|
|
420
|
+
|
|
421
|
+
it("resolves port conflict between opensandbox and searxng (both 8080)", () => {
|
|
422
|
+
const result = generateAddonStack({
|
|
423
|
+
instanceId: "test-instance",
|
|
424
|
+
services: ["opensandbox", "searxng"],
|
|
425
|
+
});
|
|
426
|
+
|
|
427
|
+
expect(result.metadata.resolvedServices).toContain("opensandbox");
|
|
428
|
+
expect(result.metadata.resolvedServices).toContain("searxng");
|
|
429
|
+
|
|
430
|
+
// Both should have port assignments, but they should differ
|
|
431
|
+
const assignments = result.metadata.portAssignments;
|
|
432
|
+
const opensandboxPort = assignments["opensandbox:8080"];
|
|
433
|
+
const searxngPort = assignments["searxng:8080"];
|
|
434
|
+
expect(opensandboxPort).toBeDefined();
|
|
435
|
+
expect(searxngPort).toBeDefined();
|
|
436
|
+
expect(opensandboxPort).not.toBe(searxngPort);
|
|
437
|
+
});
|
|
438
|
+
|
|
439
|
+
it("does not include opensandbox in prePullImages when not selected", () => {
|
|
440
|
+
const result = generateAddonStack({
|
|
441
|
+
instanceId: "test-instance",
|
|
442
|
+
services: ["qdrant"],
|
|
443
|
+
});
|
|
444
|
+
|
|
445
|
+
expect(result.metadata.prePullImages.length).toBe(0);
|
|
446
|
+
expect(result.additionalFiles).not.toHaveProperty("sandbox.toml");
|
|
447
|
+
});
|
|
448
|
+
|
|
449
|
+
it("opensandbox does not require postgresql (no postgres-setup)", () => {
|
|
450
|
+
const result = generateAddonStack({
|
|
451
|
+
instanceId: "test-instance",
|
|
452
|
+
services: ["opensandbox"],
|
|
453
|
+
});
|
|
454
|
+
|
|
455
|
+
const composed = parse(result.composeOverride);
|
|
456
|
+
expect(composed.services).not.toHaveProperty("postgres-setup");
|
|
457
|
+
});
|
|
458
|
+
|
|
459
|
+
it("accounts for 768MB memory in estimatedMemoryMB", () => {
|
|
460
|
+
const result = generateAddonStack({
|
|
461
|
+
instanceId: "test-instance",
|
|
462
|
+
services: ["opensandbox"],
|
|
463
|
+
});
|
|
464
|
+
|
|
465
|
+
expect(result.metadata.estimatedMemoryMB).toBeGreaterThanOrEqual(768);
|
|
466
|
+
});
|
|
313
467
|
});
|
|
314
468
|
|
|
315
469
|
describe("updateAddonStack", () => {
|
package/src/addon-stack.ts
CHANGED
|
@@ -1,7 +1,8 @@
|
|
|
1
1
|
import { randomBytes } from "node:crypto";
|
|
2
|
-
import { stringify } from "yaml";
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
2
|
+
import { parse as parseYaml, stringify } from "yaml";
|
|
3
|
+
import { buildCompanionService, quotedStr, YAML_OPTIONS } from "./composer.js";
|
|
4
|
+
import { getFrameworkById } from "./frameworks/index.js";
|
|
5
|
+
import type { AgentFrameworkDefinition } from "./frameworks/types.js";
|
|
5
6
|
import { getDbRequirements } from "./generators/postgres-init.js";
|
|
6
7
|
import { generateSkillFiles } from "./generators/skills.js";
|
|
7
8
|
import { resolve } from "./resolver.js";
|
|
@@ -22,33 +23,30 @@ import type {
|
|
|
22
23
|
|
|
23
24
|
// ── Constants ────────────────────────────────────────────────────────────────
|
|
24
25
|
|
|
25
|
-
/**
|
|
26
|
-
const
|
|
27
|
-
"openclaw-gateway",
|
|
28
|
-
"openclaw-cli",
|
|
26
|
+
/** Base infrastructure service IDs that Clawexa's cloud-init provisions. */
|
|
27
|
+
const BASE_INFRA_SERVICE_IDS = [
|
|
29
28
|
"redis",
|
|
30
29
|
"postgresql",
|
|
31
30
|
"open-webui",
|
|
32
31
|
"caddy",
|
|
33
32
|
"traefik",
|
|
34
33
|
"postgres-setup",
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
34
|
+
];
|
|
35
|
+
|
|
36
|
+
/** Build the full set of infra IDs for a given framework. */
|
|
37
|
+
function getInfraServiceIds(framework: AgentFrameworkDefinition): Set<string> {
|
|
38
|
+
return new Set([
|
|
39
|
+
`${framework.id}-gateway`,
|
|
40
|
+
`${framework.id}-cli`,
|
|
41
|
+
...BASE_INFRA_SERVICE_IDS,
|
|
42
|
+
...framework.getMandatoryServices(),
|
|
43
|
+
]);
|
|
44
|
+
}
|
|
40
45
|
|
|
41
46
|
/** Env keys managed by Clawexa's cloud-init — never include in addon env output. */
|
|
42
47
|
const CLAWEXA_MANAGED_ENV_KEYS = new Set([
|
|
43
48
|
"COMPOSE_FILE",
|
|
44
49
|
"COMPOSE_PROFILES",
|
|
45
|
-
"OPENCLAW_VERSION",
|
|
46
|
-
"OPENCLAW_GATEWAY_TOKEN",
|
|
47
|
-
"OPENCLAW_GATEWAY_PORT",
|
|
48
|
-
"OPENCLAW_BRIDGE_PORT",
|
|
49
|
-
"OPENCLAW_GATEWAY_BIND",
|
|
50
|
-
"OPENCLAW_CONFIG_DIR",
|
|
51
|
-
"OPENCLAW_WORKSPACE_DIR",
|
|
52
50
|
"REDIS_PASSWORD",
|
|
53
51
|
"REDIS_HOST",
|
|
54
52
|
"REDIS_PORT",
|
|
@@ -59,16 +57,31 @@ const CLAWEXA_MANAGED_ENV_KEYS = new Set([
|
|
|
59
57
|
"POSTGRES_PORT",
|
|
60
58
|
]);
|
|
61
59
|
|
|
60
|
+
/** Build the full set of managed env keys for a given framework. */
|
|
61
|
+
function getManagedEnvKeys(framework: AgentFrameworkDefinition): Set<string> {
|
|
62
|
+
const keys = new Set(CLAWEXA_MANAGED_ENV_KEYS);
|
|
63
|
+
for (const envLine of framework.getBaseEnvVars({
|
|
64
|
+
generateSecrets: false,
|
|
65
|
+
frameworkVersion: "latest",
|
|
66
|
+
frameworkImageVariant: "official",
|
|
67
|
+
})) {
|
|
68
|
+
keys.add(envLine.key);
|
|
69
|
+
}
|
|
70
|
+
return keys;
|
|
71
|
+
}
|
|
72
|
+
|
|
62
73
|
// ── Helpers ──────────────────────────────────────────────────────────────────
|
|
63
74
|
|
|
64
75
|
/** Sanitize instanceId into a valid Docker Compose project name. */
|
|
65
76
|
function sanitizeProjectName(instanceId: string): string {
|
|
66
|
-
return
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
77
|
+
return (
|
|
78
|
+
instanceId
|
|
79
|
+
.toLowerCase()
|
|
80
|
+
.replace(/[^a-z0-9-]/g, "-")
|
|
81
|
+
.replace(/^-+|-+$/g, "")
|
|
82
|
+
.replace(/-{2,}/g, "-")
|
|
83
|
+
.slice(0, 64) || "addon"
|
|
84
|
+
);
|
|
72
85
|
}
|
|
73
86
|
|
|
74
87
|
/** Generate a cryptographically secure hex secret of the given byte length. */
|
|
@@ -221,8 +234,8 @@ function resolvePortConflicts(
|
|
|
221
234
|
if (userOverride) {
|
|
222
235
|
usedPorts.add(userOverride);
|
|
223
236
|
assignments[`${def.id}:${port.container}`] = userOverride;
|
|
224
|
-
|
|
225
|
-
overrides[def.id][String(port.host)] = userOverride;
|
|
237
|
+
overrides[def.id] ??= {};
|
|
238
|
+
overrides[def.id]![String(port.host)] = userOverride;
|
|
226
239
|
continue;
|
|
227
240
|
}
|
|
228
241
|
|
|
@@ -233,8 +246,8 @@ function resolvePortConflicts(
|
|
|
233
246
|
while (usedPorts.has(assignedPort)) {
|
|
234
247
|
assignedPort++;
|
|
235
248
|
}
|
|
236
|
-
|
|
237
|
-
overrides[def.id][String(port.host)] = assignedPort;
|
|
249
|
+
overrides[def.id] ??= {};
|
|
250
|
+
overrides[def.id]![String(port.host)] = assignedPort;
|
|
238
251
|
}
|
|
239
252
|
usedPorts.add(assignedPort);
|
|
240
253
|
assignments[`${def.id}:${port.container}`] = assignedPort;
|
|
@@ -270,9 +283,14 @@ export function generateAddonStack(rawInput: AddonStackInput): AddonStackResult
|
|
|
270
283
|
|
|
271
284
|
const projectName = sanitizeProjectName(input.instanceId);
|
|
272
285
|
|
|
286
|
+
// Resolve framework for this addon stack (defaults to openclaw)
|
|
287
|
+
const framework = getFrameworkById("openclaw")!;
|
|
288
|
+
const infraIds = getInfraServiceIds(framework);
|
|
289
|
+
const managedKeys = getManagedEnvKeys(framework);
|
|
290
|
+
|
|
273
291
|
// 2. Filter out infrastructure service IDs from request
|
|
274
292
|
const addonServiceIds = input.services.filter((id) => {
|
|
275
|
-
if (
|
|
293
|
+
if (infraIds.has(id)) {
|
|
276
294
|
warnings.push(`Service "${id}" is managed by Clawexa infrastructure and was excluded.`);
|
|
277
295
|
return false;
|
|
278
296
|
}
|
|
@@ -340,7 +358,7 @@ export function generateAddonStack(rawInput: AddonStackInput): AddonStackResult
|
|
|
340
358
|
// 5. Filter resolved services: keep only addon services (not infra)
|
|
341
359
|
const addonResolved: ResolvedService[] = [];
|
|
342
360
|
for (const svc of resolved.services) {
|
|
343
|
-
if (
|
|
361
|
+
if (infraIds.has(svc.definition.id)) continue;
|
|
344
362
|
addonResolved.push(svc);
|
|
345
363
|
}
|
|
346
364
|
|
|
@@ -478,7 +496,7 @@ export function generateAddonStack(rawInput: AddonStackInput): AddonStackResult
|
|
|
478
496
|
if (entry.depends_on) {
|
|
479
497
|
const deps = entry.depends_on as Record<string, { condition: string }>;
|
|
480
498
|
for (const depId of Object.keys(deps)) {
|
|
481
|
-
if (
|
|
499
|
+
if (infraIds.has(depId)) {
|
|
482
500
|
delete deps[depId];
|
|
483
501
|
}
|
|
484
502
|
}
|
|
@@ -506,7 +524,7 @@ export function generateAddonStack(rawInput: AddonStackInput): AddonStackResult
|
|
|
506
524
|
envVar.defaultValue?.endsWith("}")
|
|
507
525
|
) {
|
|
508
526
|
const refKey = envVar.defaultValue.slice(2, -1);
|
|
509
|
-
envValues.set(refKey, userCreds[envVar.key]);
|
|
527
|
+
envValues.set(refKey, userCreds[envVar.key]!);
|
|
510
528
|
}
|
|
511
529
|
}
|
|
512
530
|
}
|
|
@@ -516,7 +534,9 @@ export function generateAddonStack(rawInput: AddonStackInput): AddonStackResult
|
|
|
516
534
|
reason: "resolution_error",
|
|
517
535
|
details: `Failed to build compose entry: ${err instanceof Error ? err.message : String(err)}`,
|
|
518
536
|
});
|
|
519
|
-
warnings.push(
|
|
537
|
+
warnings.push(
|
|
538
|
+
`Failed to process service "${def.name}": ${err instanceof Error ? err.message : String(err)}`,
|
|
539
|
+
);
|
|
520
540
|
}
|
|
521
541
|
}
|
|
522
542
|
|
|
@@ -561,7 +581,7 @@ export function generateAddonStack(rawInput: AddonStackInput): AddonStackResult
|
|
|
561
581
|
entrypoint: ["/bin/sh", "-c"],
|
|
562
582
|
command: [scriptLines.join("\n")],
|
|
563
583
|
restart: quotedStr("no"),
|
|
564
|
-
networks: [
|
|
584
|
+
networks: [framework.networkName],
|
|
565
585
|
};
|
|
566
586
|
|
|
567
587
|
// Update addon services that need DB to depend on postgres-setup
|
|
@@ -592,14 +612,16 @@ export function generateAddonStack(rawInput: AddonStackInput): AddonStackResult
|
|
|
592
612
|
const secretValue = input.generateSecrets ? generateHexSecret(24) : "";
|
|
593
613
|
envValues.set(req.passwordEnvVar, secretValue);
|
|
594
614
|
if (secretValue) generatedSecretKeys.push(req.passwordEnvVar);
|
|
595
|
-
envLines.push(
|
|
615
|
+
envLines.push(
|
|
616
|
+
`# PostgreSQL password for ${req.serviceName} (db: ${req.dbName}, user: ${req.dbUser})`,
|
|
617
|
+
);
|
|
596
618
|
envLines.push(`${req.passwordEnvVar}=${secretValue}`);
|
|
597
619
|
envLines.push("");
|
|
598
620
|
}
|
|
599
621
|
}
|
|
600
622
|
|
|
601
623
|
// Per-service env vars
|
|
602
|
-
const seenKeys = new Set<string>([...
|
|
624
|
+
const seenKeys = new Set<string>([...managedKeys, ...dbReqs.map((r) => r.passwordEnvVar)]);
|
|
603
625
|
const envVarGroups: AddonStackResult["envVars"] = [];
|
|
604
626
|
|
|
605
627
|
for (const svc of deployableServices) {
|
|
@@ -688,7 +710,7 @@ export function generateAddonStack(rawInput: AddonStackInput): AddonStackResult
|
|
|
688
710
|
}
|
|
689
711
|
// Append any new keys introduced by quirks (e.g., must_sync creating a new key)
|
|
690
712
|
for (const [key, value] of envValues) {
|
|
691
|
-
if (!quirkedKeys.has(key) && !seenKeys.has(key) && !
|
|
713
|
+
if (!quirkedKeys.has(key) && !seenKeys.has(key) && !managedKeys.has(key)) {
|
|
692
714
|
finalEnvLines.push(`# Synced by env quirk`);
|
|
693
715
|
finalEnvLines.push(`${key}=${value}`);
|
|
694
716
|
finalEnvLines.push("");
|
|
@@ -714,6 +736,50 @@ export function generateAddonStack(rawInput: AddonStackInput): AddonStackResult
|
|
|
714
736
|
// 14. Build proxy routes
|
|
715
737
|
const proxyRoutes = buildProxyRoutes(deployableServices);
|
|
716
738
|
|
|
739
|
+
// 14b. Build additional files (e.g. sandbox.toml for opensandbox)
|
|
740
|
+
const additionalFiles: Record<string, string> = {};
|
|
741
|
+
if (deployableServices.some((s) => s.definition.id === "opensandbox")) {
|
|
742
|
+
additionalFiles["sandbox.toml"] = [
|
|
743
|
+
"[server]",
|
|
744
|
+
'host = "0.0.0.0"',
|
|
745
|
+
"port = 8080",
|
|
746
|
+
'log_level = "INFO"',
|
|
747
|
+
'api_key = "${OPEN_SANDBOX_API_KEY}"',
|
|
748
|
+
"",
|
|
749
|
+
"[runtime]",
|
|
750
|
+
'type = "docker"',
|
|
751
|
+
'execd_image = "opensandbox/execd:v1.0.6"',
|
|
752
|
+
"",
|
|
753
|
+
"[docker]",
|
|
754
|
+
'network_mode = "bridge"',
|
|
755
|
+
'drop_capabilities = ["NET_ADMIN", "SYS_ADMIN", "SYS_PTRACE", "MKNOD", "NET_RAW", "SYS_RAWIO"]',
|
|
756
|
+
"no_new_privileges = true",
|
|
757
|
+
"pids_limit = 512",
|
|
758
|
+
"",
|
|
759
|
+
"[secure_runtime]",
|
|
760
|
+
'type = "gvisor"',
|
|
761
|
+
"",
|
|
762
|
+
].join("\n");
|
|
763
|
+
}
|
|
764
|
+
|
|
765
|
+
// 14c. Build pre-pull images list
|
|
766
|
+
const prePullImages: Array<{ image: string; priority: 1 | 2 | 3 }> = [];
|
|
767
|
+
if (deployableServices.some((s) => s.definition.id === "opensandbox")) {
|
|
768
|
+
prePullImages.push(
|
|
769
|
+
// Priority 1: always pulled (core + Homespace)
|
|
770
|
+
{ image: "opensandbox/server:v1.0.6", priority: 1 },
|
|
771
|
+
{ image: "opensandbox/execd:v1.0.6", priority: 1 },
|
|
772
|
+
{ image: "opensandbox/desktop:latest", priority: 1 },
|
|
773
|
+
{ image: "opensandbox/chrome:latest", priority: 1 },
|
|
774
|
+
// Priority 2: recommended (common languages)
|
|
775
|
+
{ image: "opensandbox/code-interpreter:python", priority: 2 },
|
|
776
|
+
{ image: "opensandbox/code-interpreter:node", priority: 2 },
|
|
777
|
+
// Priority 3: optional (full multi-lang and IDE)
|
|
778
|
+
{ image: "opensandbox/code-interpreter:latest", priority: 3 },
|
|
779
|
+
{ image: "opensandbox/vscode:latest", priority: 3 },
|
|
780
|
+
);
|
|
781
|
+
}
|
|
782
|
+
|
|
717
783
|
// 15. Compose single YAML
|
|
718
784
|
const volumeMap: Record<string, null> = {};
|
|
719
785
|
for (const v of allVolumes) {
|
|
@@ -729,7 +795,7 @@ export function generateAddonStack(rawInput: AddonStackInput): AddonStackResult
|
|
|
729
795
|
}
|
|
730
796
|
|
|
731
797
|
composeDoc.networks = {
|
|
732
|
-
|
|
798
|
+
[framework.networkName]: {
|
|
733
799
|
external: true,
|
|
734
800
|
},
|
|
735
801
|
};
|
|
@@ -746,6 +812,7 @@ export function generateAddonStack(rawInput: AddonStackInput): AddonStackResult
|
|
|
746
812
|
skills: { entries: skillEntries },
|
|
747
813
|
},
|
|
748
814
|
proxyRoutes,
|
|
815
|
+
additionalFiles,
|
|
749
816
|
metadata: {
|
|
750
817
|
serviceCount: Object.keys(services).length,
|
|
751
818
|
skillCount,
|
|
@@ -754,6 +821,7 @@ export function generateAddonStack(rawInput: AddonStackInput): AddonStackResult
|
|
|
754
821
|
skippedServices,
|
|
755
822
|
generatedSecretKeys,
|
|
756
823
|
portAssignments: portConflicts.assignments,
|
|
824
|
+
prePullImages,
|
|
757
825
|
},
|
|
758
826
|
warnings,
|
|
759
827
|
};
|
|
@@ -805,7 +873,6 @@ export function updateAddonStack(rawInput: AddonStackUpdateInput): AddonStackUpd
|
|
|
805
873
|
}
|
|
806
874
|
|
|
807
875
|
// 4. Compute desired service list
|
|
808
|
-
const addSet = new Set(input.addServices);
|
|
809
876
|
const removeSet = new Set(input.removeServices);
|
|
810
877
|
const desiredServiceIds = [
|
|
811
878
|
...currentServiceIds.filter((id) => !removeSet.has(id)),
|
|
@@ -819,10 +886,12 @@ export function updateAddonStack(rawInput: AddonStackUpdateInput): AddonStackUpd
|
|
|
819
886
|
skillPacks: [],
|
|
820
887
|
platform: input.platform,
|
|
821
888
|
openclawVersion: input.openclawVersion,
|
|
889
|
+
existingServices: input.existingServices,
|
|
822
890
|
reservedPorts: input.reservedPorts,
|
|
823
891
|
generateSecrets: input.generateSecrets,
|
|
824
892
|
credentials: input.credentials,
|
|
825
893
|
portOverrides: input.portOverrides,
|
|
894
|
+
gpu: input.gpu,
|
|
826
895
|
aiProviders: input.aiProviders,
|
|
827
896
|
prebuiltImages: input.prebuiltImages,
|
|
828
897
|
});
|
|
@@ -865,10 +934,10 @@ export function updateAddonStack(rawInput: AddonStackUpdateInput): AddonStackUpd
|
|
|
865
934
|
const def = getServiceById(id);
|
|
866
935
|
if (!def) continue;
|
|
867
936
|
for (const skill of def.skills) {
|
|
868
|
-
const skillPath = Object.keys(targetResult.skillFiles).find(
|
|
869
|
-
|
|
937
|
+
const skillPath = Object.keys(targetResult.skillFiles).find((path) =>
|
|
938
|
+
path.includes(skill.skillId),
|
|
870
939
|
);
|
|
871
|
-
if (skillPath) {
|
|
940
|
+
if (skillPath && targetResult.skillFiles[skillPath]) {
|
|
872
941
|
newSkillFiles[skillPath] = targetResult.skillFiles[skillPath];
|
|
873
942
|
}
|
|
874
943
|
}
|
|
@@ -956,6 +1025,7 @@ function emptyResultBase(): AddonStackResult {
|
|
|
956
1025
|
skillFiles: {},
|
|
957
1026
|
openclawConfigPatch: { skills: { entries: {} } },
|
|
958
1027
|
proxyRoutes: [],
|
|
1028
|
+
additionalFiles: {},
|
|
959
1029
|
metadata: {
|
|
960
1030
|
serviceCount: 0,
|
|
961
1031
|
skillCount: 0,
|
|
@@ -964,6 +1034,7 @@ function emptyResultBase(): AddonStackResult {
|
|
|
964
1034
|
skippedServices: [],
|
|
965
1035
|
generatedSecretKeys: [],
|
|
966
1036
|
portAssignments: {},
|
|
1037
|
+
prePullImages: [],
|
|
967
1038
|
},
|
|
968
1039
|
warnings: [],
|
|
969
1040
|
};
|