@better-openclaw/core 1.0.20 → 1.0.21
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/.github/workflows/publish-core.yml +1 -1
- package/dist/deployers/coolify.cjs +61 -50
- package/dist/deployers/coolify.cjs.map +1 -1
- package/dist/deployers/coolify.d.cts +4 -11
- package/dist/deployers/coolify.d.cts.map +1 -1
- package/dist/deployers/coolify.d.mts +4 -11
- package/dist/deployers/coolify.d.mts.map +1 -1
- package/dist/deployers/coolify.mjs +62 -50
- package/dist/deployers/coolify.mjs.map +1 -1
- package/dist/deployers/dokploy.cjs +106 -29
- package/dist/deployers/dokploy.cjs.map +1 -1
- package/dist/deployers/dokploy.d.cts +2 -1
- package/dist/deployers/dokploy.d.cts.map +1 -1
- package/dist/deployers/dokploy.d.mts +2 -1
- package/dist/deployers/dokploy.d.mts.map +1 -1
- package/dist/deployers/dokploy.mjs +107 -29
- package/dist/deployers/dokploy.mjs.map +1 -1
- package/dist/deployers/index.cjs.map +1 -1
- package/dist/deployers/index.d.cts +2 -2
- package/dist/deployers/index.d.cts.map +1 -1
- package/dist/deployers/index.d.mts +2 -2
- package/dist/deployers/index.d.mts.map +1 -1
- package/dist/deployers/index.mjs.map +1 -1
- package/dist/deployers/strip-host-ports.cjs +138 -0
- package/dist/deployers/strip-host-ports.cjs.map +1 -0
- package/dist/deployers/strip-host-ports.d.cts +62 -0
- package/dist/deployers/strip-host-ports.d.cts.map +1 -0
- package/dist/deployers/strip-host-ports.d.mts +62 -0
- package/dist/deployers/strip-host-ports.d.mts.map +1 -0
- package/dist/deployers/strip-host-ports.mjs +133 -0
- package/dist/deployers/strip-host-ports.mjs.map +1 -0
- package/dist/deployers/strip-host-ports.test.cjs +89 -0
- package/dist/deployers/strip-host-ports.test.cjs.map +1 -0
- package/dist/deployers/strip-host-ports.test.d.cts +1 -0
- package/dist/deployers/strip-host-ports.test.d.mts +1 -0
- package/dist/deployers/strip-host-ports.test.mjs +90 -0
- package/dist/deployers/strip-host-ports.test.mjs.map +1 -0
- package/dist/deployers/types.d.cts +173 -2
- package/dist/deployers/types.d.cts.map +1 -1
- package/dist/deployers/types.d.mts +173 -2
- package/dist/deployers/types.d.mts.map +1 -1
- package/dist/index.d.cts +2 -2
- package/dist/index.d.mts +2 -2
- package/package.json +2 -1
- package/src/deployers/coolify.ts +198 -103
- package/src/deployers/dokploy.ts +209 -55
- package/src/deployers/index.ts +1 -0
- package/src/deployers/strip-host-ports.test.ts +100 -0
- package/src/deployers/strip-host-ports.ts +187 -0
- package/src/deployers/types.ts +185 -1
- package/src/index.ts +19 -4
- package/tsconfig.tsbuildinfo +1 -0
package/src/deployers/types.ts
CHANGED
|
@@ -7,7 +7,7 @@
|
|
|
7
7
|
* registering it in `deployers/index.ts`.
|
|
8
8
|
*
|
|
9
9
|
* Architecture:
|
|
10
|
-
* Web UI / CLI --> API relay (/v1/deploy) --> PaaS instance (Dokploy/Coolify)
|
|
10
|
+
* Web UI / CLI --> API relay (/api/v1/deploy) --> PaaS instance (Dokploy/Coolify)
|
|
11
11
|
*
|
|
12
12
|
* The API server acts as a relay to avoid CORS issues when deploying from the
|
|
13
13
|
* browser. The CLI calls the deployer directly (no relay needed).
|
|
@@ -33,6 +33,8 @@ export interface DeployInput {
|
|
|
33
33
|
envContent: string;
|
|
34
34
|
/** Optional description */
|
|
35
35
|
description?: string;
|
|
36
|
+
/** Optional server ID to deploy to (for PaaS platforms managing multiple servers) */
|
|
37
|
+
serverId?: string;
|
|
36
38
|
}
|
|
37
39
|
|
|
38
40
|
/** Step-level status for deploy progress. */
|
|
@@ -57,6 +59,16 @@ export interface DeployResult {
|
|
|
57
59
|
error?: string;
|
|
58
60
|
}
|
|
59
61
|
|
|
62
|
+
/** Server available on a PaaS platform. */
|
|
63
|
+
export interface PaasServer {
|
|
64
|
+
/** Server ID (used as identifier when deploying) */
|
|
65
|
+
id: string;
|
|
66
|
+
/** Human-readable server name */
|
|
67
|
+
name: string;
|
|
68
|
+
/** Server IP address or hostname */
|
|
69
|
+
ip?: string;
|
|
70
|
+
}
|
|
71
|
+
|
|
60
72
|
/** Interface that all PaaS deployers implement. */
|
|
61
73
|
export interface PaasDeployer {
|
|
62
74
|
/** Human-readable name */
|
|
@@ -67,4 +79,176 @@ export interface PaasDeployer {
|
|
|
67
79
|
testConnection(target: DeployTarget): Promise<{ ok: boolean; error?: string }>;
|
|
68
80
|
/** Deploy a compose stack */
|
|
69
81
|
deploy(input: DeployInput): Promise<DeployResult>;
|
|
82
|
+
/** List available servers on the PaaS instance (optional — not all providers manage multiple servers) */
|
|
83
|
+
listServers?(target: DeployTarget): Promise<PaasServer[]>;
|
|
84
|
+
}
|
|
85
|
+
|
|
86
|
+
export interface ProviderCapabilities {
|
|
87
|
+
compose: boolean;
|
|
88
|
+
dockerImage: boolean;
|
|
89
|
+
volumes: boolean;
|
|
90
|
+
domains: boolean;
|
|
91
|
+
secrets: boolean;
|
|
92
|
+
}
|
|
93
|
+
|
|
94
|
+
export interface DeploymentResult {
|
|
95
|
+
success: boolean;
|
|
96
|
+
url?: string;
|
|
97
|
+
message?: string;
|
|
98
|
+
}
|
|
99
|
+
|
|
100
|
+
export interface DeploymentProvider {
|
|
101
|
+
id: string;
|
|
102
|
+
name: string;
|
|
103
|
+
|
|
104
|
+
capabilities: ProviderCapabilities;
|
|
105
|
+
|
|
106
|
+
deploy(config: NormalizedApp): Promise<DeploymentResult>;
|
|
107
|
+
|
|
108
|
+
createSecret?(key: string, value: string): Promise<void>;
|
|
109
|
+
|
|
110
|
+
createDomain?(service: string, domain: string): Promise<void>;
|
|
111
|
+
}
|
|
112
|
+
|
|
113
|
+
export interface NormalizedApp {
|
|
114
|
+
name: string;
|
|
115
|
+
services: NormalizedService[];
|
|
116
|
+
env: Record<string, string>;
|
|
117
|
+
}
|
|
118
|
+
|
|
119
|
+
export interface NormalizedService {
|
|
120
|
+
name: string;
|
|
121
|
+
image?: string;
|
|
122
|
+
build?: string;
|
|
123
|
+
ports?: number[];
|
|
124
|
+
volumes?: string[];
|
|
125
|
+
env?: Record<string, string>;
|
|
126
|
+
}
|
|
127
|
+
|
|
128
|
+
export interface DokployEnvironment {
|
|
129
|
+
environmentId: string;
|
|
130
|
+
name: string;
|
|
131
|
+
description: string;
|
|
132
|
+
createdAt: string;
|
|
133
|
+
env: string;
|
|
134
|
+
projectId: string;
|
|
135
|
+
isDefault: boolean;
|
|
136
|
+
applications: DokployApplication[];
|
|
137
|
+
mariadb: any[];
|
|
138
|
+
mongo: any[];
|
|
139
|
+
mysql: any[];
|
|
140
|
+
postgres: any[];
|
|
141
|
+
redis: any[];
|
|
142
|
+
compose: any[];
|
|
143
|
+
project: Project;
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
export interface DokployApplication {
|
|
147
|
+
applicationId: string;
|
|
148
|
+
name: string;
|
|
149
|
+
appName: string;
|
|
150
|
+
description: string;
|
|
151
|
+
env: string;
|
|
152
|
+
previewEnv: any;
|
|
153
|
+
watchPaths: any[];
|
|
154
|
+
previewBuildArgs: any;
|
|
155
|
+
previewBuildSecrets: any;
|
|
156
|
+
previewLabels: any;
|
|
157
|
+
previewWildcard: any;
|
|
158
|
+
previewPort: number;
|
|
159
|
+
previewHttps: boolean;
|
|
160
|
+
previewPath: string;
|
|
161
|
+
previewCertificateType: string;
|
|
162
|
+
previewCustomCertResolver: any;
|
|
163
|
+
previewLimit: number;
|
|
164
|
+
isPreviewDeploymentsActive: boolean;
|
|
165
|
+
previewRequireCollaboratorPermissions: boolean;
|
|
166
|
+
rollbackActive: boolean;
|
|
167
|
+
buildArgs: string;
|
|
168
|
+
buildSecrets: string;
|
|
169
|
+
memoryReservation: any;
|
|
170
|
+
memoryLimit: any;
|
|
171
|
+
cpuReservation: any;
|
|
172
|
+
cpuLimit: any;
|
|
173
|
+
title: any;
|
|
174
|
+
enabled: any;
|
|
175
|
+
subtitle: any;
|
|
176
|
+
command: any;
|
|
177
|
+
args: any;
|
|
178
|
+
refreshToken: string;
|
|
179
|
+
sourceType: string;
|
|
180
|
+
cleanCache: boolean;
|
|
181
|
+
repository: string;
|
|
182
|
+
owner: string;
|
|
183
|
+
branch: string;
|
|
184
|
+
buildPath: string;
|
|
185
|
+
triggerType: string;
|
|
186
|
+
autoDeploy: boolean;
|
|
187
|
+
gitlabProjectId: any;
|
|
188
|
+
gitlabRepository: any;
|
|
189
|
+
gitlabOwner: any;
|
|
190
|
+
gitlabBranch: any;
|
|
191
|
+
gitlabBuildPath: string;
|
|
192
|
+
gitlabPathNamespace: any;
|
|
193
|
+
giteaRepository: any;
|
|
194
|
+
giteaOwner: any;
|
|
195
|
+
giteaBranch: any;
|
|
196
|
+
giteaBuildPath: string;
|
|
197
|
+
bitbucketRepository: any;
|
|
198
|
+
bitbucketRepositorySlug: any;
|
|
199
|
+
bitbucketOwner: any;
|
|
200
|
+
bitbucketBranch: any;
|
|
201
|
+
bitbucketBuildPath: string;
|
|
202
|
+
username: any;
|
|
203
|
+
password: any;
|
|
204
|
+
dockerImage: any;
|
|
205
|
+
registryUrl: any;
|
|
206
|
+
customGitUrl: any;
|
|
207
|
+
customGitBranch: any;
|
|
208
|
+
customGitBuildPath: any;
|
|
209
|
+
customGitSSHKeyId: any;
|
|
210
|
+
enableSubmodules: boolean;
|
|
211
|
+
dockerfile: any;
|
|
212
|
+
dockerContextPath: any;
|
|
213
|
+
dockerBuildStage: any;
|
|
214
|
+
dropBuildPath: any;
|
|
215
|
+
healthCheckSwarm: any;
|
|
216
|
+
restartPolicySwarm: any;
|
|
217
|
+
placementSwarm: any;
|
|
218
|
+
updateConfigSwarm: any;
|
|
219
|
+
rollbackConfigSwarm: any;
|
|
220
|
+
modeSwarm: any;
|
|
221
|
+
labelsSwarm: any;
|
|
222
|
+
networkSwarm: any;
|
|
223
|
+
stopGracePeriodSwarm: any;
|
|
224
|
+
endpointSpecSwarm: any;
|
|
225
|
+
ulimitsSwarm: any;
|
|
226
|
+
replicas: number;
|
|
227
|
+
applicationStatus: string;
|
|
228
|
+
buildType: string;
|
|
229
|
+
railpackVersion: string;
|
|
230
|
+
herokuVersion: any;
|
|
231
|
+
publishDirectory: any;
|
|
232
|
+
isStaticSpa: any;
|
|
233
|
+
createEnvFile: boolean;
|
|
234
|
+
createdAt: string;
|
|
235
|
+
registryId: any;
|
|
236
|
+
rollbackRegistryId: any;
|
|
237
|
+
environmentId: string;
|
|
238
|
+
githubId: string;
|
|
239
|
+
gitlabId: any;
|
|
240
|
+
giteaId: any;
|
|
241
|
+
bitbucketId: any;
|
|
242
|
+
serverId: string;
|
|
243
|
+
buildServerId: any;
|
|
244
|
+
buildRegistryId: any;
|
|
245
|
+
}
|
|
246
|
+
|
|
247
|
+
export interface Project {
|
|
248
|
+
projectId: string;
|
|
249
|
+
name: string;
|
|
250
|
+
description: string;
|
|
251
|
+
createdAt: string;
|
|
252
|
+
organizationId: string;
|
|
253
|
+
env: string;
|
|
70
254
|
}
|
package/src/index.ts
CHANGED
|
@@ -15,6 +15,7 @@ export type {
|
|
|
15
15
|
DeployStep as PaasDeployStep,
|
|
16
16
|
DeployTarget as PaasDeployTarget,
|
|
17
17
|
PaasDeployer,
|
|
18
|
+
PaasServer,
|
|
18
19
|
} from "./deployers/index.js";
|
|
19
20
|
export {
|
|
20
21
|
CoolifyDeployer,
|
|
@@ -29,10 +30,16 @@ export { generate, generateServicesDoc } from "./generate.js";
|
|
|
29
30
|
export { generateCaddyfile } from "./generators/caddy.js";
|
|
30
31
|
export type { EnvVarGroup } from "./generators/env.js";
|
|
31
32
|
export { generateEnvFiles, getStructuredEnvVars } from "./generators/env.js";
|
|
32
|
-
export {
|
|
33
|
+
export {
|
|
34
|
+
generateGrafanaConfig,
|
|
35
|
+
generateGrafanaDashboard,
|
|
36
|
+
} from "./generators/grafana.js";
|
|
33
37
|
export { generateHealthCheck } from "./generators/health-check.js";
|
|
34
38
|
export { generateN8nWorkflows } from "./generators/n8n-workflows.js";
|
|
35
|
-
export {
|
|
39
|
+
export {
|
|
40
|
+
generatePostgresInit,
|
|
41
|
+
getDbRequirements,
|
|
42
|
+
} from "./generators/postgres-init.js";
|
|
36
43
|
export { generatePrometheusConfig } from "./generators/prometheus.js";
|
|
37
44
|
export { generateReadme } from "./generators/readme.js";
|
|
38
45
|
export { generateScripts } from "./generators/scripts.js";
|
|
@@ -44,12 +51,20 @@ export type {
|
|
|
44
51
|
} from "./generators/stack-manifest.js";
|
|
45
52
|
export { generateStackManifest } from "./generators/stack-manifest.js";
|
|
46
53
|
// ─── Config Migrations ──────────────────────────────────────────────────────
|
|
47
|
-
export {
|
|
54
|
+
export {
|
|
55
|
+
CURRENT_CONFIG_VERSION,
|
|
56
|
+
migrateConfig,
|
|
57
|
+
needsMigration,
|
|
58
|
+
} from "./migrations.js";
|
|
48
59
|
// ─── Port Scanner ───────────────────────────────────────────────────────────
|
|
49
60
|
export type { PortConflict } from "./port-scanner.js";
|
|
50
61
|
export { formatPortConflicts, scanPortConflicts } from "./port-scanner.js";
|
|
51
62
|
// ─── Presets ────────────────────────────────────────────────────────────────
|
|
52
|
-
export {
|
|
63
|
+
export {
|
|
64
|
+
getAllPresets,
|
|
65
|
+
getPresetById,
|
|
66
|
+
presetRegistry,
|
|
67
|
+
} from "./presets/registry.js";
|
|
53
68
|
export { resolve } from "./resolver.js";
|
|
54
69
|
export {
|
|
55
70
|
AddedDependencySchema,
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"root":["./src/bare-metal-partition.ts","./src/composer.ts","./src/errors.ts","./src/generate.ts","./src/index.ts","./src/migrations.ts","./src/port-scanner.ts","./src/resolver.ts","./src/schema.ts","./src/types.ts","./src/validator.ts","./src/version-manager.ts","./src/deployers/coolify.ts","./src/deployers/dokploy.ts","./src/deployers/index.ts","./src/deployers/strip-host-ports.ts","./src/deployers/types.ts","./src/generators/bare-metal-install.ts","./src/generators/caddy.ts","./src/generators/cloud-init.ts","./src/generators/env.ts","./src/generators/get-shit-done.ts","./src/generators/grafana.ts","./src/generators/health-check.ts","./src/generators/n8n-workflows.ts","./src/generators/native-services.ts","./src/generators/openclaw-install-script.ts","./src/generators/openclaw-json.ts","./src/generators/postgres-init.ts","./src/generators/prometheus.ts","./src/generators/readme.ts","./src/generators/scripts.ts","./src/generators/skills.ts","./src/generators/stack-manifest.ts","./src/generators/traefik.ts","./src/presets/registry.ts","./src/services/registry.ts","./src/services/definitions/anything-llm.ts","./src/services/definitions/appflowy.ts","./src/services/definitions/authentik.ts","./src/services/definitions/beszel.ts","./src/services/definitions/browserless.ts","./src/services/definitions/caddy.ts","./src/services/definitions/cal-com.ts","./src/services/definitions/chromadb.ts","./src/services/definitions/claude-code.ts","./src/services/definitions/code-server.ts","./src/services/definitions/codex.ts","./src/services/definitions/comfyui.ts","./src/services/definitions/convex-dashboard.ts","./src/services/definitions/convex.ts","./src/services/definitions/coolify.ts","./src/services/definitions/crowdsec.ts","./src/services/definitions/desktop-environment.ts","./src/services/definitions/dify.ts","./src/services/definitions/docsgpt.ts","./src/services/definitions/dokploy.ts","./src/services/definitions/dozzle.ts","./src/services/definitions/ffmpeg.ts","./src/services/definitions/flowise.ts","./src/services/definitions/gemini-cli.ts","./src/services/definitions/ghost.ts","./src/services/definitions/gitea.ts","./src/services/definitions/gotify.ts","./src/services/definitions/grafana.ts","./src/services/definitions/headscale.ts","./src/services/definitions/hexstrike.ts","./src/services/definitions/homeassistant.ts","./src/services/definitions/immich.ts","./src/services/definitions/index.ts","./src/services/definitions/jellyfin.ts","./src/services/definitions/jenkins.ts","./src/services/definitions/kimi.ts","./src/services/definitions/lasuite-meet-agents.ts","./src/services/definitions/lasuite-meet-backend.ts","./src/services/definitions/lasuite-meet-frontend.ts","./src/services/definitions/librechat.ts","./src/services/definitions/lightpanda.ts","./src/services/definitions/litellm.ts","./src/services/definitions/livekit.ts","./src/services/definitions/loki.ts","./src/services/definitions/matomo.ts","./src/services/definitions/matrix-synapse.ts","./src/services/definitions/mattermost.ts","./src/services/definitions/meilisearch.ts","./src/services/definitions/milvus.ts","./src/services/definitions/minio.ts","./src/services/definitions/mission-control.ts","./src/services/definitions/mixpost.ts","./src/services/definitions/motion-canvas.ts","./src/services/definitions/n8n.ts","./src/services/definitions/neo4j.ts","./src/services/definitions/nextcloud.ts","./src/services/definitions/nocodb.ts","./src/services/definitions/ntfy.ts","./src/services/definitions/ollama.ts","./src/services/definitions/open-webui.ts","./src/services/definitions/opencode.ts","./src/services/definitions/openpanel.ts","./src/services/definitions/outline.ts","./src/services/definitions/paperless-ngx.ts","./src/services/definitions/pentagi.ts","./src/services/definitions/pentestagent.ts","./src/services/definitions/playwright-server.ts","./src/services/definitions/portainer.ts","./src/services/definitions/postgresql.ts","./src/services/definitions/postiz.ts","./src/services/definitions/prometheus.ts","./src/services/definitions/qdrant.ts","./src/services/definitions/redis.ts","./src/services/definitions/remotion.ts","./src/services/definitions/rocketchat.ts","./src/services/definitions/scrapling.ts","./src/services/definitions/searxng.ts","./src/services/definitions/signoz.ts","./src/services/definitions/solidityguard.ts","./src/services/definitions/stable-diffusion.ts","./src/services/definitions/steel-browser.ts","./src/services/definitions/stream-gateway.ts","./src/services/definitions/supabase.ts","./src/services/definitions/tailscale.ts","./src/services/definitions/temporal.ts","./src/services/definitions/traefik.ts","./src/services/definitions/umami.ts","./src/services/definitions/uptime-kuma.ts","./src/services/definitions/usesend.ts","./src/services/definitions/valkey.ts","./src/services/definitions/vaultwarden.ts","./src/services/definitions/watchtower.ts","./src/services/definitions/weaviate.ts","./src/services/definitions/whisper.ts","./src/services/definitions/xyops.ts","./src/skills/registry.ts","./src/skills/skill-manifest.ts"],"version":"5.9.3"}
|