@better-openclaw/core 1.0.19 → 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.
Files changed (61) hide show
  1. package/.github/dependabot.yml +32 -0
  2. package/.github/workflows/ci.yml +8 -8
  3. package/.github/workflows/publish-core.yml +4 -4
  4. package/SECURITY.md +62 -0
  5. package/dist/deployers/coolify.cjs +61 -50
  6. package/dist/deployers/coolify.cjs.map +1 -1
  7. package/dist/deployers/coolify.d.cts +4 -11
  8. package/dist/deployers/coolify.d.cts.map +1 -1
  9. package/dist/deployers/coolify.d.mts +4 -11
  10. package/dist/deployers/coolify.d.mts.map +1 -1
  11. package/dist/deployers/coolify.mjs +62 -50
  12. package/dist/deployers/coolify.mjs.map +1 -1
  13. package/dist/deployers/dokploy.cjs +106 -29
  14. package/dist/deployers/dokploy.cjs.map +1 -1
  15. package/dist/deployers/dokploy.d.cts +2 -1
  16. package/dist/deployers/dokploy.d.cts.map +1 -1
  17. package/dist/deployers/dokploy.d.mts +2 -1
  18. package/dist/deployers/dokploy.d.mts.map +1 -1
  19. package/dist/deployers/dokploy.mjs +107 -29
  20. package/dist/deployers/dokploy.mjs.map +1 -1
  21. package/dist/deployers/index.cjs.map +1 -1
  22. package/dist/deployers/index.d.cts +2 -2
  23. package/dist/deployers/index.d.cts.map +1 -1
  24. package/dist/deployers/index.d.mts +2 -2
  25. package/dist/deployers/index.d.mts.map +1 -1
  26. package/dist/deployers/index.mjs.map +1 -1
  27. package/dist/deployers/strip-host-ports.cjs +138 -0
  28. package/dist/deployers/strip-host-ports.cjs.map +1 -0
  29. package/dist/deployers/strip-host-ports.d.cts +62 -0
  30. package/dist/deployers/strip-host-ports.d.cts.map +1 -0
  31. package/dist/deployers/strip-host-ports.d.mts +62 -0
  32. package/dist/deployers/strip-host-ports.d.mts.map +1 -0
  33. package/dist/deployers/strip-host-ports.mjs +133 -0
  34. package/dist/deployers/strip-host-ports.mjs.map +1 -0
  35. package/dist/deployers/strip-host-ports.test.cjs +89 -0
  36. package/dist/deployers/strip-host-ports.test.cjs.map +1 -0
  37. package/dist/deployers/strip-host-ports.test.d.cts +1 -0
  38. package/dist/deployers/strip-host-ports.test.d.mts +1 -0
  39. package/dist/deployers/strip-host-ports.test.mjs +90 -0
  40. package/dist/deployers/strip-host-ports.test.mjs.map +1 -0
  41. package/dist/deployers/types.d.cts +173 -2
  42. package/dist/deployers/types.d.cts.map +1 -1
  43. package/dist/deployers/types.d.mts +173 -2
  44. package/dist/deployers/types.d.mts.map +1 -1
  45. package/dist/index.d.cts +2 -2
  46. package/dist/index.d.mts +2 -2
  47. package/dist/services/definitions/usesend.cjs +4 -4
  48. package/dist/services/definitions/usesend.cjs.map +1 -1
  49. package/dist/services/definitions/usesend.mjs +4 -4
  50. package/dist/services/definitions/usesend.mjs.map +1 -1
  51. package/package.json +4 -4
  52. package/src/__snapshots__/composer.snapshot.test.ts.snap +248 -38
  53. package/src/deployers/coolify.ts +198 -103
  54. package/src/deployers/dokploy.ts +209 -55
  55. package/src/deployers/index.ts +1 -0
  56. package/src/deployers/strip-host-ports.test.ts +100 -0
  57. package/src/deployers/strip-host-ports.ts +187 -0
  58. package/src/deployers/types.ts +185 -1
  59. package/src/index.ts +19 -4
  60. package/src/services/definitions/usesend.ts +4 -4
  61. package/tsconfig.tsbuildinfo +1 -0
@@ -8,7 +8,7 @@
8
8
  * registering it in `deployers/index.ts`.
9
9
  *
10
10
  * Architecture:
11
- * Web UI / CLI --> API relay (/v1/deploy) --> PaaS instance (Dokploy/Coolify)
11
+ * Web UI / CLI --> API relay (/api/v1/deploy) --> PaaS instance (Dokploy/Coolify)
12
12
  *
13
13
  * The API server acts as a relay to avoid CORS issues when deploying from the
14
14
  * browser. The CLI calls the deployer directly (no relay needed).
@@ -32,6 +32,8 @@ interface DeployInput {
32
32
  envContent: string;
33
33
  /** Optional description */
34
34
  description?: string;
35
+ /** Optional server ID to deploy to (for PaaS platforms managing multiple servers) */
36
+ serverId?: string;
35
37
  }
36
38
  /** Step-level status for deploy progress. */
37
39
  interface DeployStep {
@@ -53,6 +55,15 @@ interface DeployResult {
53
55
  /** Error message if failed */
54
56
  error?: string;
55
57
  }
58
+ /** Server available on a PaaS platform. */
59
+ interface PaasServer {
60
+ /** Server ID (used as identifier when deploying) */
61
+ id: string;
62
+ /** Human-readable server name */
63
+ name: string;
64
+ /** Server IP address or hostname */
65
+ ip?: string;
66
+ }
56
67
  /** Interface that all PaaS deployers implement. */
57
68
  interface PaasDeployer {
58
69
  /** Human-readable name */
@@ -66,7 +77,167 @@ interface PaasDeployer {
66
77
  }>;
67
78
  /** Deploy a compose stack */
68
79
  deploy(input: DeployInput): Promise<DeployResult>;
80
+ /** List available servers on the PaaS instance (optional — not all providers manage multiple servers) */
81
+ listServers?(target: DeployTarget): Promise<PaasServer[]>;
82
+ }
83
+ interface ProviderCapabilities {
84
+ compose: boolean;
85
+ dockerImage: boolean;
86
+ volumes: boolean;
87
+ domains: boolean;
88
+ secrets: boolean;
89
+ }
90
+ interface DeploymentResult {
91
+ success: boolean;
92
+ url?: string;
93
+ message?: string;
94
+ }
95
+ interface DeploymentProvider {
96
+ id: string;
97
+ name: string;
98
+ capabilities: ProviderCapabilities;
99
+ deploy(config: NormalizedApp): Promise<DeploymentResult>;
100
+ createSecret?(key: string, value: string): Promise<void>;
101
+ createDomain?(service: string, domain: string): Promise<void>;
102
+ }
103
+ interface NormalizedApp {
104
+ name: string;
105
+ services: NormalizedService[];
106
+ env: Record<string, string>;
107
+ }
108
+ interface NormalizedService {
109
+ name: string;
110
+ image?: string;
111
+ build?: string;
112
+ ports?: number[];
113
+ volumes?: string[];
114
+ env?: Record<string, string>;
115
+ }
116
+ interface DokployEnvironment {
117
+ environmentId: string;
118
+ name: string;
119
+ description: string;
120
+ createdAt: string;
121
+ env: string;
122
+ projectId: string;
123
+ isDefault: boolean;
124
+ applications: DokployApplication[];
125
+ mariadb: any[];
126
+ mongo: any[];
127
+ mysql: any[];
128
+ postgres: any[];
129
+ redis: any[];
130
+ compose: any[];
131
+ project: Project;
132
+ }
133
+ interface DokployApplication {
134
+ applicationId: string;
135
+ name: string;
136
+ appName: string;
137
+ description: string;
138
+ env: string;
139
+ previewEnv: any;
140
+ watchPaths: any[];
141
+ previewBuildArgs: any;
142
+ previewBuildSecrets: any;
143
+ previewLabels: any;
144
+ previewWildcard: any;
145
+ previewPort: number;
146
+ previewHttps: boolean;
147
+ previewPath: string;
148
+ previewCertificateType: string;
149
+ previewCustomCertResolver: any;
150
+ previewLimit: number;
151
+ isPreviewDeploymentsActive: boolean;
152
+ previewRequireCollaboratorPermissions: boolean;
153
+ rollbackActive: boolean;
154
+ buildArgs: string;
155
+ buildSecrets: string;
156
+ memoryReservation: any;
157
+ memoryLimit: any;
158
+ cpuReservation: any;
159
+ cpuLimit: any;
160
+ title: any;
161
+ enabled: any;
162
+ subtitle: any;
163
+ command: any;
164
+ args: any;
165
+ refreshToken: string;
166
+ sourceType: string;
167
+ cleanCache: boolean;
168
+ repository: string;
169
+ owner: string;
170
+ branch: string;
171
+ buildPath: string;
172
+ triggerType: string;
173
+ autoDeploy: boolean;
174
+ gitlabProjectId: any;
175
+ gitlabRepository: any;
176
+ gitlabOwner: any;
177
+ gitlabBranch: any;
178
+ gitlabBuildPath: string;
179
+ gitlabPathNamespace: any;
180
+ giteaRepository: any;
181
+ giteaOwner: any;
182
+ giteaBranch: any;
183
+ giteaBuildPath: string;
184
+ bitbucketRepository: any;
185
+ bitbucketRepositorySlug: any;
186
+ bitbucketOwner: any;
187
+ bitbucketBranch: any;
188
+ bitbucketBuildPath: string;
189
+ username: any;
190
+ password: any;
191
+ dockerImage: any;
192
+ registryUrl: any;
193
+ customGitUrl: any;
194
+ customGitBranch: any;
195
+ customGitBuildPath: any;
196
+ customGitSSHKeyId: any;
197
+ enableSubmodules: boolean;
198
+ dockerfile: any;
199
+ dockerContextPath: any;
200
+ dockerBuildStage: any;
201
+ dropBuildPath: any;
202
+ healthCheckSwarm: any;
203
+ restartPolicySwarm: any;
204
+ placementSwarm: any;
205
+ updateConfigSwarm: any;
206
+ rollbackConfigSwarm: any;
207
+ modeSwarm: any;
208
+ labelsSwarm: any;
209
+ networkSwarm: any;
210
+ stopGracePeriodSwarm: any;
211
+ endpointSpecSwarm: any;
212
+ ulimitsSwarm: any;
213
+ replicas: number;
214
+ applicationStatus: string;
215
+ buildType: string;
216
+ railpackVersion: string;
217
+ herokuVersion: any;
218
+ publishDirectory: any;
219
+ isStaticSpa: any;
220
+ createEnvFile: boolean;
221
+ createdAt: string;
222
+ registryId: any;
223
+ rollbackRegistryId: any;
224
+ environmentId: string;
225
+ githubId: string;
226
+ gitlabId: any;
227
+ giteaId: any;
228
+ bitbucketId: any;
229
+ serverId: string;
230
+ buildServerId: any;
231
+ buildRegistryId: any;
232
+ }
233
+ interface Project {
234
+ projectId: string;
235
+ name: string;
236
+ description: string;
237
+ createdAt: string;
238
+ organizationId: string;
239
+ env: string;
69
240
  }
70
241
  //#endregion
71
- export { DeployInput, DeployResult, DeployStep, DeployTarget, PaasDeployer };
242
+ export { DeployInput, DeployResult, DeployStep, DeployTarget, DeploymentProvider, DeploymentResult, DokployApplication, DokployEnvironment, NormalizedApp, NormalizedService, PaasDeployer, PaasServer, Project, ProviderCapabilities };
72
243
  //# sourceMappingURL=types.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.mts","names":[],"sources":["../../src/deployers/types.ts"],"mappings":";;AAgBA;;;;;AAQA;;;;;;;;;UARiB,YAAA;EAkBL;EAhBX,WAAA;EAoBgB;EAlBhB,MAAA;AAAA;;UAIgB,WAAA;EAgBhB;EAdA,MAAA,EAAQ,YAAA;EAeF;EAbN,WAAA;EAiBgB;EAfhB,WAAA;;EAEA,UAAA;EAcA;EAZA,WAAA;AAAA;;UAIgB,UAAA;EAChB,IAAA;EACA,MAAA;EACA,MAAA;AAAA;AAmBD;AAAA,UAfiB,YAAA;EAChB,OAAA;EAoBuB;EAlBvB,YAAA;EAoBc;EAlBd,SAAA;EAkB4B;EAhB5B,SAAA;EAgBmC;EAdnC,KAAA,EAAO,UAAA;EAUE;EART,KAAA;AAAA;;UAIgB,YAAA;EAMgC;EAAA,SAJvC,IAAA;EAMT;EAAA,SAJS,EAAA;EAIF;EAFP,cAAA,CAAe,MAAA,EAAQ,YAAA,GAAe,OAAA;IAAU,EAAA;IAAa,KAAA;EAAA;;EAE7D,MAAA,CAAO,KAAA,EAAO,WAAA,GAAc,OAAA,CAAQ,YAAA;AAAA"}
1
+ {"version":3,"file":"types.d.mts","names":[],"sources":["../../src/deployers/types.ts"],"mappings":";;AAgBA;;;;;AAQA;;;;;;;;;UARiB,YAAA;EAoBhB;EAlBA,WAAA;EAkBQ;EAhBR,MAAA;AAAA;;UAIgB,WAAA;EAiBhB;EAfA,MAAA,EAAQ,YAAA;EAiBR;EAfA,WAAA;EAeM;EAbN,WAAA;EAiB4B;EAf5B,UAAA;EAwBiB;EAtBjB,WAAA;EAgBA;EAdA,QAAA;AAAA;;UAIgB,UAAA;EAChB,IAAA;EACA,MAAA;EACA,MAAA;AAAA;;UAIgB,YAAA;EAChB,OAAA;EAgBA;EAdA,YAAA;EAkBA;EAhBA,SAAA;EAgBE;EAdF,SAAA;EAkB4B;EAhB5B,KAAA,EAAO,UAAA;EAsBgB;EApBvB,KAAA;AAAA;;UAIgB,UAAA;EAoBK;EAlBrB,EAAA;EAkBoC;EAhBpC,IAAA;EAgB2C;EAd3C,EAAA;AAAA;;UAIgB,YAAA;EAMD;EAAA,SAJN,IAAA;EAIuC;EAAA,SAFvC,EAAA;EAIT;EAFA,cAAA,CAAe,MAAA,EAAQ,YAAA,GAAe,OAAA;IAAU,EAAA;IAAa,KAAA;EAAA;EAI7D;EAFA,MAAA,CAAO,KAAA,EAAO,WAAA,GAAc,OAAA,CAAQ,YAAA;EAEvB;EAAb,WAAA,EAAa,MAAA,EAAQ,YAAA,GAAe,OAAA,CAAQ,UAAA;AAAA;AAAA,UAG5B,oBAAA;EAChB,OAAA;EACA,WAAA;EACA,OAAA;EACA,OAAA;EACA,OAAA;AAAA;AAAA,UAGgB,gBAAA;EAChB,OAAA;EACA,GAAA;EACA,OAAA;AAAA;AAAA,UAGgB,kBAAA;EAChB,EAAA;EACA,IAAA;EAEA,YAAA,EAAc,oBAAA;EAEd,MAAA,CAAO,MAAA,EAAQ,aAAA,GAAgB,OAAA,CAAQ,gBAAA;EAEvC,YAAA,EAAc,GAAA,UAAa,KAAA,WAAgB,OAAA;EAE3C,YAAA,EAAc,OAAA,UAAiB,MAAA,WAAiB,OAAA;AAAA;AAAA,UAGhC,aAAA;EAChB,IAAA;EACA,QAAA,EAAU,iBAAA;EACV,GAAA,EAAK,MAAA;AAAA;AAAA,UAGW,iBAAA;EAChB,IAAA;EACA,KAAA;EACA,KAAA;EACA,KAAA;EACA,OAAA;EACA,GAAA,GAAM,MAAA;AAAA;AAAA,UAGU,kBAAA;EAChB,aAAA;EACA,IAAA;EACA,WAAA;EACA,SAAA;EACA,GAAA;EACA,SAAA;EACA,SAAA;EACA,YAAA,EAAc,kBAAA;EACd,OAAA;EACA,KAAA;EACA,KAAA;EACA,QAAA;EACA,KAAA;EACA,OAAA;EACA,OAAA,EAAS,OAAA;AAAA;AAAA,UAGO,kBAAA;EAChB,aAAA;EACA,IAAA;EACA,OAAA;EACA,WAAA;EACA,GAAA;EACA,UAAA;EACA,UAAA;EACA,gBAAA;EACA,mBAAA;EACA,aAAA;EACA,eAAA;EACA,WAAA;EACA,YAAA;EACA,WAAA;EACA,sBAAA;EACA,yBAAA;EACA,YAAA;EACA,0BAAA;EACA,qCAAA;EACA,cAAA;EACA,SAAA;EACA,YAAA;EACA,iBAAA;EACA,WAAA;EACA,cAAA;EACA,QAAA;EACA,KAAA;EACA,OAAA;EACA,QAAA;EACA,OAAA;EACA,IAAA;EACA,YAAA;EACA,UAAA;EACA,UAAA;EACA,UAAA;EACA,KAAA;EACA,MAAA;EACA,SAAA;EACA,WAAA;EACA,UAAA;EACA,eAAA;EACA,gBAAA;EACA,WAAA;EACA,YAAA;EACA,eAAA;EACA,mBAAA;EACA,eAAA;EACA,UAAA;EACA,WAAA;EACA,cAAA;EACA,mBAAA;EACA,uBAAA;EACA,cAAA;EACA,eAAA;EACA,kBAAA;EACA,QAAA;EACA,QAAA;EACA,WAAA;EACA,WAAA;EACA,YAAA;EACA,eAAA;EACA,kBAAA;EACA,iBAAA;EACA,gBAAA;EACA,UAAA;EACA,iBAAA;EACA,gBAAA;EACA,aAAA;EACA,gBAAA;EACA,kBAAA;EACA,cAAA;EACA,iBAAA;EACA,mBAAA;EACA,SAAA;EACA,WAAA;EACA,YAAA;EACA,oBAAA;EACA,iBAAA;EACA,YAAA;EACA,QAAA;EACA,iBAAA;EACA,SAAA;EACA,eAAA;EACA,aAAA;EACA,gBAAA;EACA,WAAA;EACA,aAAA;EACA,SAAA;EACA,UAAA;EACA,kBAAA;EACA,aAAA;EACA,QAAA;EACA,QAAA;EACA,OAAA;EACA,WAAA;EACA,QAAA;EACA,aAAA;EACA,eAAA;AAAA;AAAA,UAGgB,OAAA;EAChB,SAAA;EACA,IAAA;EACA,WAAA;EACA,SAAA;EACA,cAAA;EACA,GAAA;AAAA"}
package/dist/index.d.cts CHANGED
@@ -2,7 +2,7 @@ import { AddedDependencySchema, ApiErrorSchema, ComposeOptionsSchema, DeploySche
2
2
  import { AddedDependency, AiProvider, ApiError, CategoryInfo, ComposeOptions, Deploy, DeployTarget, DeploymentTarget, DeploymentType, EnvVariable, GeneratedFiles, GenerationInput, GenerationMetadata, GenerationResult, GsdRuntime, HealthCheck, Maturity, NativePlatform, NativeRecipe, OpenclawImageVariant, OpenclawInstallMethod, OutputFormat, Platform, PortMapping, Preset, ProxyType, ResolvedService, ResolverError, ResolverInput, ResolverOutput, ResourceLimits, RestartPolicy, SERVICE_CATEGORIES, ServiceCategory, ServiceDefinition, SkillBinding, SkillPack, ValidateRequest, ValidateResponse, VolumeMapping, Warning } from "./types.cjs";
3
3
  import { partitionBareMetal, platformToNativePlatform, resolvedWithOnlyServices } from "./bare-metal-partition.cjs";
4
4
  import { ComposeResult, compose, composeMultiFile } from "./composer.cjs";
5
- import { DeployInput, DeployResult, DeployStep, DeployTarget as DeployTarget$1, PaasDeployer } from "./deployers/types.cjs";
5
+ import { DeployInput, DeployResult, DeployStep, DeployTarget as DeployTarget$1, PaasDeployer, PaasServer } from "./deployers/types.cjs";
6
6
  import { CoolifyDeployer } from "./deployers/coolify.cjs";
7
7
  import { DokployDeployer } from "./deployers/dokploy.cjs";
8
8
  import { deployerRegistry, getAvailableDeployers, getDeployer } from "./deployers/index.cjs";
@@ -28,4 +28,4 @@ import { getAllSkillPacks, getCompatibleSkillPacks, getSkillPackById, skillPackR
28
28
  import { SkillManifestEntry, getAllManifestSkills, getManifestSkillById, getManifestSkillCount } from "./skills/skill-manifest.cjs";
29
29
  import { validate } from "./validator.cjs";
30
30
  import { checkCompatibility, getImageReference, getImageTag, pinImageTags } from "./version-manager.cjs";
31
- export { type AddedDependency, AddedDependencySchema, type AiProvider, type ApiError, ApiErrorSchema, CURRENT_CONFIG_VERSION, type CategoryInfo, type ComposeOptions, ComposeOptionsSchema, type ComposeResult, CoolifyDeployer, type Deploy, DeploySchema, type DeployTarget, DeployTargetSchema, type DeploymentTarget, DeploymentTargetSchema, type DeploymentType, DeploymentTypeSchema, DokployDeployer, type EnvVarGroup, type EnvVariable, EnvVariableSchema, ErrorSchema, type GeneratedFiles, type GenerationInput, GenerationInputSchema, type GenerationMetadata, type GenerationResult, type GsdRuntime, type HealthCheck, HealthCheckSchema, type Maturity, MaturitySchema, type NativePlatform, NativePlatformSchema, type NativeRecipe, NativeRecipeSchema, type OpenclawImageVariant, OpenclawImageVariantSchema, type OpenclawInstallMethod, OpenclawInstallMethodSchema, type OutputFormat, OutputFormatSchema, type DeployInput as PaasDeployInput, type DeployResult as PaasDeployResult, type DeployStep as PaasDeployStep, type DeployTarget$1 as PaasDeployTarget, type PaasDeployer, type Platform, PlatformSchema, type PortConflict, type PortMapping, PortMappingSchema, type Preset, PresetSchema, type ProxyType, ProxyTypeSchema, type ResolvedService, ResolvedServiceSchema, type ResolverError, type ResolverInput, type ResolverOutput, ResolverOutputSchema, type ResourceLimits, ResourceLimitsSchema, type RestartPolicy, RestartPolicySchema, SERVICE_CATEGORIES, type ServiceCategory, ServiceCategorySchema, type ServiceDefinition, ServiceDefinitionSchema, type SkillBinding, SkillBindingSchema, type SkillManifestEntry, type SkillPack, SkillPackSchema, StackConfigError, type StackManifest, type StackManifestService, type StackManifestSkill, type ValidateRequest, ValidateRequestSchema, type ValidateResponse, ValidateResponseSchema, ValidationError, type VolumeMapping, VolumeMappingSchema, type Warning, WarningSchema, checkCompatibility, compose, composeMultiFile, deployerRegistry, formatPortConflicts, generate, generateCaddyfile, generateEnvFiles, generateGrafanaConfig, generateGrafanaDashboard, generateHealthCheck, generateN8nWorkflows, generatePostgresInit, generatePrometheusConfig, generateReadme, generateScripts, generateServicesDoc, generateSkillFiles, generateStackManifest, getAllManifestSkills, getAllPresets, getAllServices, getAllSkillPacks, getAvailableDeployers, getCompatibleSkillPacks, getDbRequirements, getDeployer, getImageReference, getImageTag, getManifestSkillById, getManifestSkillCount, getPresetById, getServiceById, getServicesByCategory, getSkillPackById, getStructuredEnvVars, migrateConfig, needsMigration, partitionBareMetal, pinImageTags, platformToNativePlatform, presetRegistry, resolve, resolvedWithOnlyServices, scanPortConflicts, serviceRegistry, skillPackRegistry, validate };
31
+ export { type AddedDependency, AddedDependencySchema, type AiProvider, type ApiError, ApiErrorSchema, CURRENT_CONFIG_VERSION, type CategoryInfo, type ComposeOptions, ComposeOptionsSchema, type ComposeResult, CoolifyDeployer, type Deploy, DeploySchema, type DeployTarget, DeployTargetSchema, type DeploymentTarget, DeploymentTargetSchema, type DeploymentType, DeploymentTypeSchema, DokployDeployer, type EnvVarGroup, type EnvVariable, EnvVariableSchema, ErrorSchema, type GeneratedFiles, type GenerationInput, GenerationInputSchema, type GenerationMetadata, type GenerationResult, type GsdRuntime, type HealthCheck, HealthCheckSchema, type Maturity, MaturitySchema, type NativePlatform, NativePlatformSchema, type NativeRecipe, NativeRecipeSchema, type OpenclawImageVariant, OpenclawImageVariantSchema, type OpenclawInstallMethod, OpenclawInstallMethodSchema, type OutputFormat, OutputFormatSchema, type DeployInput as PaasDeployInput, type DeployResult as PaasDeployResult, type DeployStep as PaasDeployStep, type DeployTarget$1 as PaasDeployTarget, type PaasDeployer, type PaasServer, type Platform, PlatformSchema, type PortConflict, type PortMapping, PortMappingSchema, type Preset, PresetSchema, type ProxyType, ProxyTypeSchema, type ResolvedService, ResolvedServiceSchema, type ResolverError, type ResolverInput, type ResolverOutput, ResolverOutputSchema, type ResourceLimits, ResourceLimitsSchema, type RestartPolicy, RestartPolicySchema, SERVICE_CATEGORIES, type ServiceCategory, ServiceCategorySchema, type ServiceDefinition, ServiceDefinitionSchema, type SkillBinding, SkillBindingSchema, type SkillManifestEntry, type SkillPack, SkillPackSchema, StackConfigError, type StackManifest, type StackManifestService, type StackManifestSkill, type ValidateRequest, ValidateRequestSchema, type ValidateResponse, ValidateResponseSchema, ValidationError, type VolumeMapping, VolumeMappingSchema, type Warning, WarningSchema, checkCompatibility, compose, composeMultiFile, deployerRegistry, formatPortConflicts, generate, generateCaddyfile, generateEnvFiles, generateGrafanaConfig, generateGrafanaDashboard, generateHealthCheck, generateN8nWorkflows, generatePostgresInit, generatePrometheusConfig, generateReadme, generateScripts, generateServicesDoc, generateSkillFiles, generateStackManifest, getAllManifestSkills, getAllPresets, getAllServices, getAllSkillPacks, getAvailableDeployers, getCompatibleSkillPacks, getDbRequirements, getDeployer, getImageReference, getImageTag, getManifestSkillById, getManifestSkillCount, getPresetById, getServiceById, getServicesByCategory, getSkillPackById, getStructuredEnvVars, migrateConfig, needsMigration, partitionBareMetal, pinImageTags, platformToNativePlatform, presetRegistry, resolve, resolvedWithOnlyServices, scanPortConflicts, serviceRegistry, skillPackRegistry, validate };
package/dist/index.d.mts CHANGED
@@ -2,7 +2,7 @@ import { AddedDependencySchema, ApiErrorSchema, ComposeOptionsSchema, DeploySche
2
2
  import { AddedDependency, AiProvider, ApiError, CategoryInfo, ComposeOptions, Deploy, DeployTarget, DeploymentTarget, DeploymentType, EnvVariable, GeneratedFiles, GenerationInput, GenerationMetadata, GenerationResult, GsdRuntime, HealthCheck, Maturity, NativePlatform, NativeRecipe, OpenclawImageVariant, OpenclawInstallMethod, OutputFormat, Platform, PortMapping, Preset, ProxyType, ResolvedService, ResolverError, ResolverInput, ResolverOutput, ResourceLimits, RestartPolicy, SERVICE_CATEGORIES, ServiceCategory, ServiceDefinition, SkillBinding, SkillPack, ValidateRequest, ValidateResponse, VolumeMapping, Warning } from "./types.mjs";
3
3
  import { partitionBareMetal, platformToNativePlatform, resolvedWithOnlyServices } from "./bare-metal-partition.mjs";
4
4
  import { ComposeResult, compose, composeMultiFile } from "./composer.mjs";
5
- import { DeployInput, DeployResult, DeployStep, DeployTarget as DeployTarget$1, PaasDeployer } from "./deployers/types.mjs";
5
+ import { DeployInput, DeployResult, DeployStep, DeployTarget as DeployTarget$1, PaasDeployer, PaasServer } from "./deployers/types.mjs";
6
6
  import { CoolifyDeployer } from "./deployers/coolify.mjs";
7
7
  import { DokployDeployer } from "./deployers/dokploy.mjs";
8
8
  import { deployerRegistry, getAvailableDeployers, getDeployer } from "./deployers/index.mjs";
@@ -28,4 +28,4 @@ import { getAllSkillPacks, getCompatibleSkillPacks, getSkillPackById, skillPackR
28
28
  import { SkillManifestEntry, getAllManifestSkills, getManifestSkillById, getManifestSkillCount } from "./skills/skill-manifest.mjs";
29
29
  import { validate } from "./validator.mjs";
30
30
  import { checkCompatibility, getImageReference, getImageTag, pinImageTags } from "./version-manager.mjs";
31
- export { type AddedDependency, AddedDependencySchema, type AiProvider, type ApiError, ApiErrorSchema, CURRENT_CONFIG_VERSION, type CategoryInfo, type ComposeOptions, ComposeOptionsSchema, type ComposeResult, CoolifyDeployer, type Deploy, DeploySchema, type DeployTarget, DeployTargetSchema, type DeploymentTarget, DeploymentTargetSchema, type DeploymentType, DeploymentTypeSchema, DokployDeployer, type EnvVarGroup, type EnvVariable, EnvVariableSchema, ErrorSchema, type GeneratedFiles, type GenerationInput, GenerationInputSchema, type GenerationMetadata, type GenerationResult, type GsdRuntime, type HealthCheck, HealthCheckSchema, type Maturity, MaturitySchema, type NativePlatform, NativePlatformSchema, type NativeRecipe, NativeRecipeSchema, type OpenclawImageVariant, OpenclawImageVariantSchema, type OpenclawInstallMethod, OpenclawInstallMethodSchema, type OutputFormat, OutputFormatSchema, type DeployInput as PaasDeployInput, type DeployResult as PaasDeployResult, type DeployStep as PaasDeployStep, type DeployTarget$1 as PaasDeployTarget, type PaasDeployer, type Platform, PlatformSchema, type PortConflict, type PortMapping, PortMappingSchema, type Preset, PresetSchema, type ProxyType, ProxyTypeSchema, type ResolvedService, ResolvedServiceSchema, type ResolverError, type ResolverInput, type ResolverOutput, ResolverOutputSchema, type ResourceLimits, ResourceLimitsSchema, type RestartPolicy, RestartPolicySchema, SERVICE_CATEGORIES, type ServiceCategory, ServiceCategorySchema, type ServiceDefinition, ServiceDefinitionSchema, type SkillBinding, SkillBindingSchema, type SkillManifestEntry, type SkillPack, SkillPackSchema, StackConfigError, type StackManifest, type StackManifestService, type StackManifestSkill, type ValidateRequest, ValidateRequestSchema, type ValidateResponse, ValidateResponseSchema, ValidationError, type VolumeMapping, VolumeMappingSchema, type Warning, WarningSchema, checkCompatibility, compose, composeMultiFile, deployerRegistry, formatPortConflicts, generate, generateCaddyfile, generateEnvFiles, generateGrafanaConfig, generateGrafanaDashboard, generateHealthCheck, generateN8nWorkflows, generatePostgresInit, generatePrometheusConfig, generateReadme, generateScripts, generateServicesDoc, generateSkillFiles, generateStackManifest, getAllManifestSkills, getAllPresets, getAllServices, getAllSkillPacks, getAvailableDeployers, getCompatibleSkillPacks, getDbRequirements, getDeployer, getImageReference, getImageTag, getManifestSkillById, getManifestSkillCount, getPresetById, getServiceById, getServicesByCategory, getSkillPackById, getStructuredEnvVars, migrateConfig, needsMigration, partitionBareMetal, pinImageTags, platformToNativePlatform, presetRegistry, resolve, resolvedWithOnlyServices, scanPortConflicts, serviceRegistry, skillPackRegistry, validate };
31
+ export { type AddedDependency, AddedDependencySchema, type AiProvider, type ApiError, ApiErrorSchema, CURRENT_CONFIG_VERSION, type CategoryInfo, type ComposeOptions, ComposeOptionsSchema, type ComposeResult, CoolifyDeployer, type Deploy, DeploySchema, type DeployTarget, DeployTargetSchema, type DeploymentTarget, DeploymentTargetSchema, type DeploymentType, DeploymentTypeSchema, DokployDeployer, type EnvVarGroup, type EnvVariable, EnvVariableSchema, ErrorSchema, type GeneratedFiles, type GenerationInput, GenerationInputSchema, type GenerationMetadata, type GenerationResult, type GsdRuntime, type HealthCheck, HealthCheckSchema, type Maturity, MaturitySchema, type NativePlatform, NativePlatformSchema, type NativeRecipe, NativeRecipeSchema, type OpenclawImageVariant, OpenclawImageVariantSchema, type OpenclawInstallMethod, OpenclawInstallMethodSchema, type OutputFormat, OutputFormatSchema, type DeployInput as PaasDeployInput, type DeployResult as PaasDeployResult, type DeployStep as PaasDeployStep, type DeployTarget$1 as PaasDeployTarget, type PaasDeployer, type PaasServer, type Platform, PlatformSchema, type PortConflict, type PortMapping, PortMappingSchema, type Preset, PresetSchema, type ProxyType, ProxyTypeSchema, type ResolvedService, ResolvedServiceSchema, type ResolverError, type ResolverInput, type ResolverOutput, ResolverOutputSchema, type ResourceLimits, ResourceLimitsSchema, type RestartPolicy, RestartPolicySchema, SERVICE_CATEGORIES, type ServiceCategory, ServiceCategorySchema, type ServiceDefinition, ServiceDefinitionSchema, type SkillBinding, SkillBindingSchema, type SkillManifestEntry, type SkillPack, SkillPackSchema, StackConfigError, type StackManifest, type StackManifestService, type StackManifestSkill, type ValidateRequest, ValidateRequestSchema, type ValidateResponse, ValidateResponseSchema, ValidationError, type VolumeMapping, VolumeMappingSchema, type Warning, WarningSchema, checkCompatibility, compose, composeMultiFile, deployerRegistry, formatPortConflicts, generate, generateCaddyfile, generateEnvFiles, generateGrafanaConfig, generateGrafanaDashboard, generateHealthCheck, generateN8nWorkflows, generatePostgresInit, generatePrometheusConfig, generateReadme, generateScripts, generateServicesDoc, generateSkillFiles, generateStackManifest, getAllManifestSkills, getAllPresets, getAllServices, getAllSkillPacks, getAvailableDeployers, getCompatibleSkillPacks, getDbRequirements, getDeployer, getImageReference, getImageTag, getManifestSkillById, getManifestSkillCount, getPresetById, getServiceById, getServicesByCategory, getSkillPackById, getStructuredEnvVars, migrateConfig, needsMigration, partitionBareMetal, pinImageTags, platformToNativePlatform, presetRegistry, resolve, resolvedWithOnlyServices, scanPortConflicts, serviceRegistry, skillPackRegistry, validate };
@@ -33,28 +33,28 @@ const usesendDefinition = {
33
33
  },
34
34
  {
35
35
  key: "AWS_ACCESS_KEY",
36
- defaultValue: "",
36
+ defaultValue: "your-aws-access-key",
37
37
  secret: true,
38
38
  description: "AWS access key for SES/SNS",
39
39
  required: true
40
40
  },
41
41
  {
42
42
  key: "AWS_SECRET_KEY",
43
- defaultValue: "",
43
+ defaultValue: "your-aws-secret-key",
44
44
  secret: true,
45
45
  description: "AWS secret key for SES/SNS",
46
46
  required: true
47
47
  },
48
48
  {
49
49
  key: "GITHUB_ID",
50
- defaultValue: "",
50
+ defaultValue: "your-github-oauth-client-id",
51
51
  secret: false,
52
52
  description: "GitHub OAuth app client ID",
53
53
  required: true
54
54
  },
55
55
  {
56
56
  key: "GITHUB_SECRET",
57
- defaultValue: "",
57
+ defaultValue: "your-github-oauth-client-secret",
58
58
  secret: true,
59
59
  description: "GitHub OAuth app client secret",
60
60
  required: true
@@ -1 +1 @@
1
- {"version":3,"file":"usesend.cjs","names":[],"sources":["../../../src/services/definitions/usesend.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const usesendDefinition: ServiceDefinition = {\n\tid: \"usesend\",\n\tname: \"useSend\",\n\tdescription:\n\t\t\"Self-hosted sending infrastructure for developers. Email via AWS SES/SNS, GitHub auth, Postgres and Redis. Open-source alternative for transactional and status emails.\",\n\tcategory: \"communication\",\n\ticon: \"📧\",\n\n\timage: \"usesend/usesend\",\n\timageTag: \"v1.7.7\",\n\tports: [\n\t\t{\n\t\t\thost: 3025,\n\t\t\tcontainer: 3000,\n\t\t\tdescription: \"useSend web UI\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"DATABASE_URL\",\n\t\t\tdefaultValue: \"postgres://usesend:${USESEND_DB_PASSWORD}@postgresql:5432/usesend\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"PostgreSQL connection URL\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"REDIS_URL\",\n\t\t\tdefaultValue: \"redis://:password@redis:6379\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Redis connection URL\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"AWS_ACCESS_KEY\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"AWS access key for SES/SNS\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"AWS_SECRET_KEY\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"AWS secret key for SES/SNS\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"GITHUB_ID\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"GitHub OAuth app client ID\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"GITHUB_SECRET\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"GitHub OAuth app client secret\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"NEXTAUTH_URL\",\n\t\t\tdefaultValue: \"https://your-usesend-instance\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Public URL of your useSend instance\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"NEXTAUTH_SECRET\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Random secret for NextAuth (e.g. openssl rand -base64 32)\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\tdependsOn: [\"postgresql\", \"redis\"],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [],\n\topenclawEnvVars: [],\n\n\tdocsUrl: \"https://docs.usesend.com/self-hosting/overview\",\n\tselfHostedDocsUrl: \"https://docs.usesend.com/self-hosting/overview\",\n\ttags: [\"email\", \"ses\", \"smtp\", \"transactional\", \"self-hosted\"],\n\tmaturity: \"stable\",\n\n\trequires: [\"postgresql\", \"redis\"],\n\trecommends: [],\n\tconflictsWith: [],\n\n\tminMemoryMB: 512,\n\tgpuRequired: false,\n};\n"],"mappings":";;;AAEA,MAAa,oBAAuC;CACnD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,EAAE;CACX,aAAa;EACZ;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;CACD,WAAW,CAAC,cAAc,QAAQ;CAClC,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,EAAE;CACV,iBAAiB,EAAE;CAEnB,SAAS;CACT,mBAAmB;CACnB,MAAM;EAAC;EAAS;EAAO;EAAQ;EAAiB;EAAc;CAC9D,UAAU;CAEV,UAAU,CAAC,cAAc,QAAQ;CACjC,YAAY,EAAE;CACd,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb"}
1
+ {"version":3,"file":"usesend.cjs","names":[],"sources":["../../../src/services/definitions/usesend.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const usesendDefinition: ServiceDefinition = {\n\tid: \"usesend\",\n\tname: \"useSend\",\n\tdescription:\n\t\t\"Self-hosted sending infrastructure for developers. Email via AWS SES/SNS, GitHub auth, Postgres and Redis. Open-source alternative for transactional and status emails.\",\n\tcategory: \"communication\",\n\ticon: \"📧\",\n\n\timage: \"usesend/usesend\",\n\timageTag: \"v1.7.7\",\n\tports: [\n\t\t{\n\t\t\thost: 3025,\n\t\t\tcontainer: 3000,\n\t\t\tdescription: \"useSend web UI\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"DATABASE_URL\",\n\t\t\tdefaultValue: \"postgres://usesend:${USESEND_DB_PASSWORD}@postgresql:5432/usesend\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"PostgreSQL connection URL\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"REDIS_URL\",\n\t\t\tdefaultValue: \"redis://:password@redis:6379\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Redis connection URL\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"AWS_ACCESS_KEY\",\n\t\t\tdefaultValue: \"your-aws-access-key\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"AWS access key for SES/SNS\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"AWS_SECRET_KEY\",\n\t\t\tdefaultValue: \"your-aws-secret-key\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"AWS secret key for SES/SNS\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"GITHUB_ID\",\n\t\t\tdefaultValue: \"your-github-oauth-client-id\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"GitHub OAuth app client ID\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"GITHUB_SECRET\",\n\t\t\tdefaultValue: \"your-github-oauth-client-secret\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"GitHub OAuth app client secret\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"NEXTAUTH_URL\",\n\t\t\tdefaultValue: \"https://your-usesend-instance\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Public URL of your useSend instance\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"NEXTAUTH_SECRET\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Random secret for NextAuth (e.g. openssl rand -base64 32)\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\tdependsOn: [\"postgresql\", \"redis\"],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [],\n\topenclawEnvVars: [],\n\n\tdocsUrl: \"https://docs.usesend.com/self-hosting/overview\",\n\tselfHostedDocsUrl: \"https://docs.usesend.com/self-hosting/overview\",\n\ttags: [\"email\", \"ses\", \"smtp\", \"transactional\", \"self-hosted\"],\n\tmaturity: \"stable\",\n\n\trequires: [\"postgresql\", \"redis\"],\n\trecommends: [],\n\tconflictsWith: [],\n\n\tminMemoryMB: 512,\n\tgpuRequired: false,\n};\n"],"mappings":";;;AAEA,MAAa,oBAAuC;CACnD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,EAAE;CACX,aAAa;EACZ;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;CACD,WAAW,CAAC,cAAc,QAAQ;CAClC,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,EAAE;CACV,iBAAiB,EAAE;CAEnB,SAAS;CACT,mBAAmB;CACnB,MAAM;EAAC;EAAS;EAAO;EAAQ;EAAiB;EAAc;CAC9D,UAAU;CAEV,UAAU,CAAC,cAAc,QAAQ;CACjC,YAAY,EAAE;CACd,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb"}
@@ -31,28 +31,28 @@ const usesendDefinition = {
31
31
  },
32
32
  {
33
33
  key: "AWS_ACCESS_KEY",
34
- defaultValue: "",
34
+ defaultValue: "your-aws-access-key",
35
35
  secret: true,
36
36
  description: "AWS access key for SES/SNS",
37
37
  required: true
38
38
  },
39
39
  {
40
40
  key: "AWS_SECRET_KEY",
41
- defaultValue: "",
41
+ defaultValue: "your-aws-secret-key",
42
42
  secret: true,
43
43
  description: "AWS secret key for SES/SNS",
44
44
  required: true
45
45
  },
46
46
  {
47
47
  key: "GITHUB_ID",
48
- defaultValue: "",
48
+ defaultValue: "your-github-oauth-client-id",
49
49
  secret: false,
50
50
  description: "GitHub OAuth app client ID",
51
51
  required: true
52
52
  },
53
53
  {
54
54
  key: "GITHUB_SECRET",
55
- defaultValue: "",
55
+ defaultValue: "your-github-oauth-client-secret",
56
56
  secret: true,
57
57
  description: "GitHub OAuth app client secret",
58
58
  required: true
@@ -1 +1 @@
1
- {"version":3,"file":"usesend.mjs","names":[],"sources":["../../../src/services/definitions/usesend.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const usesendDefinition: ServiceDefinition = {\n\tid: \"usesend\",\n\tname: \"useSend\",\n\tdescription:\n\t\t\"Self-hosted sending infrastructure for developers. Email via AWS SES/SNS, GitHub auth, Postgres and Redis. Open-source alternative for transactional and status emails.\",\n\tcategory: \"communication\",\n\ticon: \"📧\",\n\n\timage: \"usesend/usesend\",\n\timageTag: \"v1.7.7\",\n\tports: [\n\t\t{\n\t\t\thost: 3025,\n\t\t\tcontainer: 3000,\n\t\t\tdescription: \"useSend web UI\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"DATABASE_URL\",\n\t\t\tdefaultValue: \"postgres://usesend:${USESEND_DB_PASSWORD}@postgresql:5432/usesend\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"PostgreSQL connection URL\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"REDIS_URL\",\n\t\t\tdefaultValue: \"redis://:password@redis:6379\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Redis connection URL\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"AWS_ACCESS_KEY\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"AWS access key for SES/SNS\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"AWS_SECRET_KEY\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"AWS secret key for SES/SNS\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"GITHUB_ID\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"GitHub OAuth app client ID\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"GITHUB_SECRET\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"GitHub OAuth app client secret\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"NEXTAUTH_URL\",\n\t\t\tdefaultValue: \"https://your-usesend-instance\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Public URL of your useSend instance\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"NEXTAUTH_SECRET\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Random secret for NextAuth (e.g. openssl rand -base64 32)\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\tdependsOn: [\"postgresql\", \"redis\"],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [],\n\topenclawEnvVars: [],\n\n\tdocsUrl: \"https://docs.usesend.com/self-hosting/overview\",\n\tselfHostedDocsUrl: \"https://docs.usesend.com/self-hosting/overview\",\n\ttags: [\"email\", \"ses\", \"smtp\", \"transactional\", \"self-hosted\"],\n\tmaturity: \"stable\",\n\n\trequires: [\"postgresql\", \"redis\"],\n\trecommends: [],\n\tconflictsWith: [],\n\n\tminMemoryMB: 512,\n\tgpuRequired: false,\n};\n"],"mappings":";AAEA,MAAa,oBAAuC;CACnD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,EAAE;CACX,aAAa;EACZ;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;CACD,WAAW,CAAC,cAAc,QAAQ;CAClC,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,EAAE;CACV,iBAAiB,EAAE;CAEnB,SAAS;CACT,mBAAmB;CACnB,MAAM;EAAC;EAAS;EAAO;EAAQ;EAAiB;EAAc;CAC9D,UAAU;CAEV,UAAU,CAAC,cAAc,QAAQ;CACjC,YAAY,EAAE;CACd,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb"}
1
+ {"version":3,"file":"usesend.mjs","names":[],"sources":["../../../src/services/definitions/usesend.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const usesendDefinition: ServiceDefinition = {\n\tid: \"usesend\",\n\tname: \"useSend\",\n\tdescription:\n\t\t\"Self-hosted sending infrastructure for developers. Email via AWS SES/SNS, GitHub auth, Postgres and Redis. Open-source alternative for transactional and status emails.\",\n\tcategory: \"communication\",\n\ticon: \"📧\",\n\n\timage: \"usesend/usesend\",\n\timageTag: \"v1.7.7\",\n\tports: [\n\t\t{\n\t\t\thost: 3025,\n\t\t\tcontainer: 3000,\n\t\t\tdescription: \"useSend web UI\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"DATABASE_URL\",\n\t\t\tdefaultValue: \"postgres://usesend:${USESEND_DB_PASSWORD}@postgresql:5432/usesend\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"PostgreSQL connection URL\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"REDIS_URL\",\n\t\t\tdefaultValue: \"redis://:password@redis:6379\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Redis connection URL\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"AWS_ACCESS_KEY\",\n\t\t\tdefaultValue: \"your-aws-access-key\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"AWS access key for SES/SNS\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"AWS_SECRET_KEY\",\n\t\t\tdefaultValue: \"your-aws-secret-key\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"AWS secret key for SES/SNS\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"GITHUB_ID\",\n\t\t\tdefaultValue: \"your-github-oauth-client-id\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"GitHub OAuth app client ID\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"GITHUB_SECRET\",\n\t\t\tdefaultValue: \"your-github-oauth-client-secret\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"GitHub OAuth app client secret\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"NEXTAUTH_URL\",\n\t\t\tdefaultValue: \"https://your-usesend-instance\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Public URL of your useSend instance\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"NEXTAUTH_SECRET\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Random secret for NextAuth (e.g. openssl rand -base64 32)\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\tdependsOn: [\"postgresql\", \"redis\"],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [],\n\topenclawEnvVars: [],\n\n\tdocsUrl: \"https://docs.usesend.com/self-hosting/overview\",\n\tselfHostedDocsUrl: \"https://docs.usesend.com/self-hosting/overview\",\n\ttags: [\"email\", \"ses\", \"smtp\", \"transactional\", \"self-hosted\"],\n\tmaturity: \"stable\",\n\n\trequires: [\"postgresql\", \"redis\"],\n\trecommends: [],\n\tconflictsWith: [],\n\n\tminMemoryMB: 512,\n\tgpuRequired: false,\n};\n"],"mappings":";AAEA,MAAa,oBAAuC;CACnD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,EAAE;CACX,aAAa;EACZ;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aAAa;GACb,UAAU;GACV;EACD;CACD,WAAW,CAAC,cAAc,QAAQ;CAClC,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,EAAE;CACV,iBAAiB,EAAE;CAEnB,SAAS;CACT,mBAAmB;CACnB,MAAM;EAAC;EAAS;EAAO;EAAQ;EAAiB;EAAc;CAC9D,UAAU;CAEV,UAAU,CAAC,cAAc,QAAQ;CACjC,YAAY,EAAE;CACd,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@better-openclaw/core",
3
- "version": "1.0.19",
3
+ "version": "1.0.21",
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>",
@@ -11,7 +11,7 @@
11
11
  "directory": "packages/core"
12
12
  },
13
13
  "homepage": "https://better-openclaw.dev",
14
- "packageManager": "pnpm@9.15.4",
14
+ "packageManager": "pnpm@10.30.3",
15
15
  "sideEffects": false,
16
16
  "main": "dist/index.mjs",
17
17
  "types": "dist/index.d.ts",
@@ -48,8 +48,8 @@
48
48
  "zod": "^4.3.6"
49
49
  },
50
50
  "devDependencies": {
51
- "@biomejs/biome": "^2.0.0",
52
- "@types/node": "^25.2.2",
51
+ "@biomejs/biome": "^2.4.4",
52
+ "@types/node": "^25.3.3",
53
53
  "tsdown": "^0.20.3",
54
54
  "typescript": "^5.9.3",
55
55
  "vitest": "^4.0.18"