@better-openclaw/core 1.0.25 → 1.0.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/addon-stack.cjs +55 -3
- package/dist/addon-stack.cjs.map +1 -1
- package/dist/addon-stack.d.cts.map +1 -1
- package/dist/addon-stack.d.mts.map +1 -1
- package/dist/addon-stack.mjs +54 -2
- package/dist/addon-stack.mjs.map +1 -1
- package/dist/addon-stack.test.cjs +113 -1
- package/dist/addon-stack.test.cjs.map +1 -1
- package/dist/addon-stack.test.mjs +112 -0
- package/dist/addon-stack.test.mjs.map +1 -1
- package/dist/compose-validation.test.cjs +1 -1
- package/dist/composer.cjs +1 -1
- package/dist/composer.test.cjs +1 -1
- package/dist/deployers/strip-host-ports.cjs +1 -1
- package/dist/generate.cjs +1 -1
- package/dist/generate.test.cjs +1 -1
- package/dist/generators/env.cjs +1 -1
- package/dist/generators/postgres-init.cjs +5 -0
- package/dist/generators/postgres-init.cjs.map +1 -1
- package/dist/generators/postgres-init.d.cts.map +1 -1
- package/dist/generators/postgres-init.d.mts.map +1 -1
- package/dist/generators/postgres-init.mjs +5 -0
- package/dist/generators/postgres-init.mjs.map +1 -1
- package/dist/generators/skills.cjs +1 -1
- package/dist/generators/skills.d.cts.map +1 -1
- package/dist/generators/skills.d.mts.map +1 -1
- package/dist/generators/skills.mjs +141 -0
- package/dist/generators/skills.mjs.map +1 -1
- package/dist/index.cjs +1 -1
- package/dist/index.d.cts +1 -1
- package/dist/index.d.mts +1 -1
- package/dist/presets/presets.test.cjs +1 -1
- package/dist/{schema-CKBRu-Rt.d.cts → schema-BQnZrcw8.d.cts} +6 -1
- package/dist/{schema-CKBRu-Rt.d.cts.map → schema-BQnZrcw8.d.cts.map} +1 -1
- package/dist/{schema-Dn-_Jpb6.d.mts → schema-SBpL0bdI.d.mts} +6 -1
- package/dist/{schema-Dn-_Jpb6.d.mts.map → schema-SBpL0bdI.d.mts.map} +1 -1
- package/dist/schema.cjs +11 -2
- package/dist/schema.cjs.map +1 -1
- package/dist/schema.d.cts +1 -1
- package/dist/schema.d.mts +1 -1
- package/dist/schema.mjs +10 -1
- package/dist/schema.mjs.map +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/hindsight.cjs +130 -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 +129 -0
- package/dist/services/definitions/hindsight.mjs.map +1 -0
- package/dist/services/definitions/index.cjs +9 -0
- package/dist/services/definitions/index.cjs.map +1 -1
- package/dist/services/definitions/index.d.cts +4 -1
- package/dist/services/definitions/index.d.cts.map +1 -1
- package/dist/services/definitions/index.d.mts +4 -1
- package/dist/services/definitions/index.d.mts.map +1 -1
- package/dist/services/definitions/index.mjs +7 -1
- package/dist/services/definitions/index.mjs.map +1 -1
- package/dist/services/definitions/opensandbox.cjs +149 -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 +148 -0
- package/dist/services/definitions/opensandbox.mjs.map +1 -0
- package/dist/{skills-BlzpHmpH.cjs → skills-BSF7iNa4.cjs} +142 -1
- package/dist/{skills-BlzpHmpH.cjs.map → skills-BSF7iNa4.cjs.map} +1 -1
- package/dist/types.d.cts +1 -1
- package/dist/types.d.mts +1 -1
- package/dist/validator.cjs +1 -1
- package/package.json +1 -1
- package/src/addon-stack.test.ts +158 -0
- package/src/addon-stack.ts +48 -0
- package/src/generators/postgres-init.ts +2 -0
- package/src/generators/skills.ts +142 -0
- package/src/schema.ts +7 -0
- package/src/services/definitions/burnlink.ts +142 -0
- package/src/services/definitions/hindsight.ts +131 -0
- package/src/services/definitions/index.ts +10 -0
- package/src/services/definitions/opensandbox.ts +156 -0
package/dist/schema.d.mts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
import { A as PortMappingSchema, B as SkillBindingSchema, C as MaturitySchema, D as OpenclawInstallMethodSchema, E as OpenclawImageVariantSchema, F as ResolverOutputSchema, G as ValidateResponseSchema, H as SkippedServiceReasonSchema, I as ResourceLimitsSchema, K as VolumeMappingSchema, L as RestartPolicySchema, M as ProxyRouteSchema, N as ProxyTypeSchema, O as OutputFormatSchema, P as ResolvedServiceSchema, R as ServiceCategorySchema, S as HealthCheckSchema, T as NativeRecipeSchema, U as SkippedServiceSchema, V as SkillPackSchema, W as ValidateRequestSchema, _ as EnvVariableSchema, a as AddonStackUpdateResultSchema, b as GitSourceSchema, c as BuildContextSchema, d as DeploySchema, f as DeployTargetSchema, g as EnvQuirkSchema, h as EnvQuirkFixSchema, i as AddonStackUpdateInputSchema, j as PresetSchema, k as PlatformSchema, l as ComposeOptionsSchema, m as DeploymentTypeSchema, n as AddonStackInputSchema, o as AiProviderSchema, p as DeploymentTargetSchema, q as WarningSchema, r as AddonStackResultSchema, s as ApiErrorSchema, t as AddedDependencySchema, u as ComposePlatformSchema, v as ErrorSchema, w as NativePlatformSchema, x as GsdRuntimeSchema, y as GenerationInputSchema, z as ServiceDefinitionSchema } from "./schema-
|
|
1
|
+
import { A as PortMappingSchema, B as SkillBindingSchema, C as MaturitySchema, D as OpenclawInstallMethodSchema, E as OpenclawImageVariantSchema, F as ResolverOutputSchema, G as ValidateResponseSchema, H as SkippedServiceReasonSchema, I as ResourceLimitsSchema, K as VolumeMappingSchema, L as RestartPolicySchema, M as ProxyRouteSchema, N as ProxyTypeSchema, O as OutputFormatSchema, P as ResolvedServiceSchema, R as ServiceCategorySchema, S as HealthCheckSchema, T as NativeRecipeSchema, U as SkippedServiceSchema, V as SkillPackSchema, W as ValidateRequestSchema, _ as EnvVariableSchema, a as AddonStackUpdateResultSchema, b as GitSourceSchema, c as BuildContextSchema, d as DeploySchema, f as DeployTargetSchema, g as EnvQuirkSchema, h as EnvQuirkFixSchema, i as AddonStackUpdateInputSchema, j as PresetSchema, k as PlatformSchema, l as ComposeOptionsSchema, m as DeploymentTypeSchema, n as AddonStackInputSchema, o as AiProviderSchema, p as DeploymentTargetSchema, q as WarningSchema, r as AddonStackResultSchema, s as ApiErrorSchema, t as AddedDependencySchema, u as ComposePlatformSchema, v as ErrorSchema, w as NativePlatformSchema, x as GsdRuntimeSchema, y as GenerationInputSchema, z as ServiceDefinitionSchema } from "./schema-SBpL0bdI.mjs";
|
|
2
2
|
export { AddedDependencySchema, AddonStackInputSchema, AddonStackResultSchema, AddonStackUpdateInputSchema, AddonStackUpdateResultSchema, AiProviderSchema, ApiErrorSchema, BuildContextSchema, ComposeOptionsSchema, ComposePlatformSchema, DeploySchema, DeployTargetSchema, DeploymentTargetSchema, DeploymentTypeSchema, EnvQuirkFixSchema, EnvQuirkSchema, EnvVariableSchema, ErrorSchema, GenerationInputSchema, GitSourceSchema, GsdRuntimeSchema, HealthCheckSchema, MaturitySchema, NativePlatformSchema, NativeRecipeSchema, OpenclawImageVariantSchema, OpenclawInstallMethodSchema, OutputFormatSchema, PlatformSchema, PortMappingSchema, PresetSchema, ProxyRouteSchema, ProxyTypeSchema, ResolvedServiceSchema, ResolverOutputSchema, ResourceLimitsSchema, RestartPolicySchema, ServiceCategorySchema, ServiceDefinitionSchema, SkillBindingSchema, SkillPackSchema, SkippedServiceReasonSchema, SkippedServiceSchema, ValidateRequestSchema, ValidateResponseSchema, VolumeMappingSchema, WarningSchema };
|
package/dist/schema.mjs
CHANGED
|
@@ -390,6 +390,7 @@ const AddonStackResultSchema = z.object({
|
|
|
390
390
|
skillFiles: z.record(z.string(), z.string()),
|
|
391
391
|
openclawConfigPatch: z.object({ skills: z.object({ entries: z.record(z.string(), z.object({ enabled: z.boolean() })) }) }),
|
|
392
392
|
proxyRoutes: z.array(ProxyRouteSchema),
|
|
393
|
+
additionalFiles: z.record(z.string(), z.string()).default({}),
|
|
393
394
|
metadata: z.object({
|
|
394
395
|
serviceCount: z.number(),
|
|
395
396
|
skillCount: z.number(),
|
|
@@ -397,7 +398,15 @@ const AddonStackResultSchema = z.object({
|
|
|
397
398
|
resolvedServices: z.array(z.string()),
|
|
398
399
|
skippedServices: z.array(SkippedServiceSchema),
|
|
399
400
|
generatedSecretKeys: z.array(z.string()),
|
|
400
|
-
portAssignments: z.record(z.string(), z.number())
|
|
401
|
+
portAssignments: z.record(z.string(), z.number()),
|
|
402
|
+
prePullImages: z.array(z.object({
|
|
403
|
+
image: z.string(),
|
|
404
|
+
priority: z.union([
|
|
405
|
+
z.literal(1),
|
|
406
|
+
z.literal(2),
|
|
407
|
+
z.literal(3)
|
|
408
|
+
])
|
|
409
|
+
})).default([])
|
|
401
410
|
}),
|
|
402
411
|
warnings: z.array(z.string())
|
|
403
412
|
});
|
package/dist/schema.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"schema.mjs","names":[],"sources":["../src/schema.ts"],"sourcesContent":["import { z } from \"zod\";\n\n// ─── Enums ──────────────────────────────────────────────────────────────────\n\nexport const ServiceCategorySchema = z.enum([\n\t\"automation\",\n\t\"vector-db\",\n\t\"media\",\n\t\"storage\",\n\t\"database\",\n\t\"proxy\",\n\t\"monitoring\",\n\t\"browser\",\n\t\"search\",\n\t\"ai\",\n\t\"communication\",\n\t\"coding-agent\",\n\t\"social-media\",\n\t\"analytics\",\n\t\"ai-platform\",\n\t\"dev-tools\",\n\t\"knowledge\",\n\t\"desktop\",\n\t\"streaming\",\n\t\"security\",\n\t\"billing\",\n\t\"crm\",\n\t\"email-marketing\",\n\t\"forms\",\n\t\"api-gateway\",\n\t\"backup\",\n\t\"voice\",\n\t\"ecommerce\",\n\t\"collaboration\",\n\t\"ai-observability\",\n\t\"fine-tuning\",\n\t\"project-management\",\n\t\"business-intelligence\",\n\t\"dns-networking\",\n\t\"iot\",\n\t\"saas-boilerplate\",\n]);\n\nexport const MaturitySchema = z.enum([\"stable\", \"beta\", \"experimental\"]);\n\nexport const PlatformSchema = z.enum([\n\t\"linux/amd64\",\n\t\"linux/arm64\",\n\t\"windows/amd64\",\n\t\"macos/amd64\",\n\t\"macos/arm64\",\n]);\n\n/** Platform for Docker image arch only (used by resolver/compose). */\nexport const ComposePlatformSchema = z.enum([\"linux/amd64\", \"linux/arm64\"]);\n\nexport const DeploymentTypeSchema = z.enum([\"docker\", \"bare-metal\", \"local\"]);\n\nexport const RestartPolicySchema = z.enum([\"unless-stopped\", \"always\", \"on-failure\", \"no\"]);\n\nexport const ProxyTypeSchema = z.enum([\"none\", \"caddy\", \"traefik\"]);\n\nexport const DeploymentTargetSchema = z.enum([\"local\", \"vps\", \"homelab\", \"clawexa\"]);\n\nexport const OutputFormatSchema = z.enum([\"directory\", \"tar\", \"zip\"]);\n\nexport const OpenclawImageVariantSchema = z.enum([\"official\", \"coolify\", \"alpine\"]);\n\nexport const OpenclawInstallMethodSchema = z.enum([\"docker\", \"direct\"]);\n\nexport const DeployTargetSchema = z.enum([\"local\", \"cloud-init\"]);\n\nexport const AiProviderSchema = z.enum([\n\t\"openai\",\n\t\"anthropic\",\n\t\"google\",\n\t\"xai\",\n\t\"deepseek\",\n\t\"groq\",\n\t\"openrouter\",\n\t\"mistral\",\n\t\"together\",\n\t\"ollama\",\n\t\"ollama-cloud\",\n\t\"lmstudio\",\n\t\"vllm\",\n]);\n\nexport const GsdRuntimeSchema = z.enum([\"claude\", \"opencode\", \"gemini\", \"codex\"]);\n\n// ─── Sub-Schemas ────────────────────────────────────────────────────────────\n\nexport const PortMappingSchema = z.object({\n\thost: z.number().int().min(1).max(65535),\n\tcontainer: z.number().int().min(1).max(65535),\n\tdescription: z.string(),\n\texposed: z.boolean().default(true),\n});\n\nexport const VolumeMappingSchema = z.object({\n\tname: z.string().min(1),\n\tcontainerPath: z.string().min(1),\n\tdescription: z.string(),\n\tdriver: z.string().optional(),\n});\n\nexport const EnvVariableSchema = z.object({\n\tkey: z.string().min(1),\n\tdefaultValue: z.string(),\n\tsecret: z.boolean().default(false),\n\tdescription: z.string(),\n\trequired: z.boolean().default(true),\n\tvalidation: z.string().optional(),\n});\n\nexport const HealthCheckSchema = z.object({\n\ttest: z.string().min(1),\n\tinterval: z.string().default(\"30s\"),\n\ttimeout: z.string().default(\"10s\"),\n\tretries: z.number().int().min(1).default(3),\n\tstartPeriod: z.string().optional(),\n});\n\nexport const ResourceLimitsSchema = z.object({\n\tcpus: z.string().optional(),\n\tmemory: z.string().optional(),\n});\n\nexport const DeploySchema = z.object({\n\tresources: z\n\t\t.object({\n\t\t\tlimits: ResourceLimitsSchema.optional(),\n\t\t\treservations: ResourceLimitsSchema.optional(),\n\t\t})\n\t\t.optional(),\n});\n\nexport const SkillBindingSchema = z.object({\n\tskillId: z.string().min(1),\n\tautoInstall: z.boolean().default(true),\n\tconfigOverrides: z.record(z.string(), z.string()).optional(),\n});\n\n/** Platform for native install (linux, windows, macos — no arch). */\nexport const NativePlatformSchema = z.enum([\"linux\", \"windows\", \"macos\"]);\n\nexport const NativeRecipeSchema = z.object({\n\tplatform: NativePlatformSchema,\n\tinstallSteps: z.array(z.string()).min(1),\n\tstartCommand: z.string(),\n\tstopCommand: z.string().optional(),\n\tconfigPath: z.string().optional(),\n\tconfigTemplate: z.string().optional(),\n\tsystemdUnit: z.string().optional(),\n});\n\n// ─── Git Source / Build Context (for repo-based services) ───────────────────\n\nexport const GitSourceSchema = z.object({\n\t/** Git clone URL, e.g. \"https://github.com/wasp-lang/open-saas.git\" */\n\trepoUrl: z.string().url(),\n\t/** Branch or tag to clone. Defaults to repo's default branch. */\n\tbranch: z.string().optional(),\n\t/** Subdirectory within the cloned repo to use as build context root. */\n\tsubdirectory: z.string().optional(),\n\t/** Commands to run after cloning (e.g. \"cp .env.example .env\"). */\n\tpostCloneCommands: z.array(z.string()).default([]),\n});\n\nexport const BuildContextSchema = z.object({\n\t/** Path to Dockerfile relative to the context root. Defaults to \"Dockerfile\". */\n\tdockerfile: z.string().optional(),\n\t/** Build context path relative to the subdirectory root. Defaults to \".\". */\n\tcontext: z.string().default(\".\"),\n\t/** Docker build args to pass at build time. */\n\targs: z.record(z.string(), z.string()).optional(),\n\t/** Target stage in a multi-stage Dockerfile. */\n\ttarget: z.string().optional(),\n});\n\n// ─── Env Quirks (for addon stack generation) ────────────────────────────────\n\nexport const EnvQuirkFixSchema = z.object({\n\ttype: z.enum([\"set_value\", \"generate_hex\", \"generate_base64url\", \"sync_with\"]),\n\t/** Fixed value to set (for set_value type). */\n\tvalue: z.string().optional(),\n\t/** Minimum bytes for generated secrets (for generate_hex/generate_base64url). */\n\tminBytes: z.number().int().min(1).optional(),\n\t/** Key to synchronize with (for sync_with type). */\n\tsyncKey: z.string().optional(),\n});\n\nexport const EnvQuirkSchema = z.object({\n\tkey: z.string(),\n\tissue: z.enum([\"empty_string_crashes\", \"min_length\", \"must_sync\"]),\n\tfix: EnvQuirkFixSchema,\n});\n\n// ─── Service Definition ─────────────────────────────────────────────────────\n\nexport const ServiceDefinitionSchema = z.object({\n\t// Identity\n\tid: z\n\t\t.string()\n\t\t.min(1)\n\t\t.regex(/^[a-z0-9-]+$/),\n\tname: z.string().min(1),\n\tdescription: z.string(),\n\tcategory: ServiceCategorySchema,\n\ticon: z.string(),\n\n\t// Docker (required for image-based services, omitted for git-based)\n\timage: z.string().min(1).optional(),\n\timageTag: z.string().min(1).optional(),\n\n\t// Git source (for services built from cloned repositories)\n\tgitSource: GitSourceSchema.optional(),\n\tbuildContext: BuildContextSchema.optional(),\n\tports: z.array(PortMappingSchema).default([]),\n\tvolumes: z.array(VolumeMappingSchema).default([]),\n\tenvironment: z.array(EnvVariableSchema).default([]),\n\thealthcheck: HealthCheckSchema.optional(),\n\tcommand: z.string().optional(),\n\tentrypoint: z.string().optional(),\n\tdependsOn: z.array(z.string()).default([]),\n\trestartPolicy: RestartPolicySchema.default(\"unless-stopped\"),\n\tnetworks: z.array(z.string()).default([\"openclaw-network\"]),\n\tlabels: z.record(z.string(), z.string()).optional(),\n\tdeploy: DeploySchema.optional(),\n\n\t// OpenClaw Integration\n\tskills: z.array(SkillBindingSchema).default([]),\n\topenclawEnvVars: z.array(EnvVariableSchema).default([]),\n\topenclawVolumeMounts: z.array(VolumeMappingSchema).optional(),\n\n\t// Metadata\n\tdocsUrl: z.string().url(),\n\tselfHostedDocsUrl: z.string().url().optional(),\n\ttags: z.array(z.string()).default([]),\n\tmaturity: MaturitySchema.default(\"stable\"),\n\n\t// Dependencies & Conflicts\n\trequires: z.array(z.string()).default([]),\n\trecommends: z.array(z.string()).default([]),\n\tconflictsWith: z.array(z.string()).default([]),\n\tmandatory: z.boolean().default(false).optional(),\n\tremovalWarning: z.string().optional(),\n\n\t// Platform Constraints\n\tplatforms: z.array(PlatformSchema).optional(),\n\tminMemoryMB: z.number().int().min(0).optional(),\n\tgpuRequired: z.boolean().default(false),\n\n\t// Bare-metal native (install/run on host when no Docker)\n\tnativeSupported: z.boolean().optional(),\n\tnativeRecipes: z.array(NativeRecipeSchema).optional(),\n\n\t// Clawexa addon metadata\n\t/** Whether the service works with cap_drop: ALL (default: undefined = not audited). */\n\tcapDropCompatible: z.boolean().optional(),\n\t/** Pre-built Docker image for cloud-init deployment (replaces build: directives). */\n\tprebuiltImage: z.string().optional(),\n\t/** Default reverse proxy path (e.g. \"/n8n\", \"/grafana\"). */\n\tproxyPath: z.string().optional(),\n\t/** Linux capabilities needed at first boot (e.g. [\"CHOWN\", \"SETGID\"]). */\n\tfirstBootCapabilities: z.array(z.string()).optional(),\n\t/** Known environment variable quirks that need special handling. */\n\tenvQuirks: z.array(EnvQuirkSchema).optional(),\n});\n\n// ─── Skill Pack ─────────────────────────────────────────────────────────────\n\nexport const SkillPackSchema = z.object({\n\tid: z\n\t\t.string()\n\t\t.min(1)\n\t\t.regex(/^[a-z0-9-]+$/),\n\tname: z.string().min(1),\n\tdescription: z.string(),\n\trequiredServices: z.array(z.string()).min(1),\n\tskills: z.array(z.string()),\n\ticon: z.string().optional(),\n\ttags: z.array(z.string()).default([]),\n});\n\n// ─── Preset ─────────────────────────────────────────────────────────────────\n\nexport const PresetSchema = z.object({\n\tid: z\n\t\t.string()\n\t\t.min(1)\n\t\t.regex(/^[a-z0-9-]+$/),\n\tname: z.string().min(1),\n\tdescription: z.string(),\n\tservices: z.array(z.string()),\n\tskillPacks: z.array(z.string()).default([]),\n\testimatedMemoryMB: z.number().int().min(0).optional(),\n});\n\n// ─── Generation Input ───────────────────────────────────────────────────────\n\nexport const GenerationInputSchema = z.object({\n\tconfigVersion: z.number().int().min(1).optional(),\n\tprojectName: z\n\t\t.string()\n\t\t.min(1)\n\t\t.max(64)\n\t\t.regex(/^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$/, {\n\t\t\tmessage:\n\t\t\t\t\"Project name must be lowercase alphanumeric with hyphens, cannot start or end with hyphen\",\n\t\t}),\n\tservices: z.array(z.string()).default([]),\n\tskillPacks: z.array(z.string()).default([]),\n\taiProviders: z.array(AiProviderSchema).default([]),\n\tgsdRuntimes: z.array(GsdRuntimeSchema).default([]),\n\tproxy: ProxyTypeSchema.default(\"none\"),\n\tproxyHttpPort: z.number().int().min(1).max(65535).optional(),\n\tproxyHttpsPort: z.number().int().min(1).max(65535).optional(),\n\tportOverrides: z\n\t\t.record(z.string(), z.record(z.string(), z.number().int().min(1).max(65535)))\n\t\t.optional(),\n\tdomain: z.string().optional(),\n\tgpu: z.boolean().default(false),\n\tplatform: PlatformSchema.default(\"linux/amd64\"),\n\tdeployment: DeploymentTargetSchema.default(\"local\"),\n\tdeploymentType: DeploymentTypeSchema.default(\"docker\"),\n\tgenerateSecrets: z.boolean().default(true),\n\topenclawVersion: z.string().default(\"latest\"),\n\tmonitoring: z.boolean().default(false),\n\topenclawImage: OpenclawImageVariantSchema.default(\"official\"),\n\topenclawInstallMethod: OpenclawInstallMethodSchema.default(\"docker\"),\n\tdeployTarget: DeployTargetSchema.default(\"local\"),\n\thardened: z.boolean().default(true),\n});\n\n// ─── Resolver Output ────────────────────────────────────────────────────────\n\nexport const ResolvedServiceSchema = z.object({\n\tdefinition: ServiceDefinitionSchema,\n\taddedBy: z.enum([\"user\", \"dependency\", \"skill-pack\", \"proxy\", \"monitoring\", \"mandatory\"]).default(\"user\"),\n});\n\nexport const AddedDependencySchema = z.object({\n\tservice: z.string(),\n\tserviceId: z.string().optional(),\n\trequiredBy: z.string().optional(),\n\treason: z.string(),\n});\n\nexport const WarningSchema = z.object({\n\ttype: z.string(),\n\tmessage: z.string(),\n});\n\nexport const ErrorSchema = z.object({\n\ttype: z.string(),\n\tmessage: z.string(),\n});\n\nexport const ResolverOutputSchema = z.object({\n\tservices: z.array(ResolvedServiceSchema),\n\taddedDependencies: z.array(AddedDependencySchema),\n\tremovedConflicts: z.array(z.object({ service: z.string(), reason: z.string() })),\n\twarnings: z.array(WarningSchema),\n\terrors: z.array(ErrorSchema),\n\tisValid: z.boolean(),\n\testimatedMemoryMB: z.number().int().min(0),\n\taiProviders: z.array(AiProviderSchema).default([]),\n\tgsdRuntimes: z.array(GsdRuntimeSchema).default([]),\n});\n\n// ─── Compose Options ────────────────────────────────────────────────────────\n\nexport const ComposeOptionsSchema = z.object({\n\tprojectName: z.string(),\n\tproxy: ProxyTypeSchema.default(\"none\"),\n\tproxyHttpPort: z.number().int().min(1).max(65535).optional(),\n\tproxyHttpsPort: z.number().int().min(1).max(65535).optional(),\n\tportOverrides: z\n\t\t.record(z.string(), z.record(z.string(), z.number().int().min(1).max(65535)))\n\t\t.optional(),\n\tdomain: z.string().optional(),\n\tgpu: z.boolean().default(false),\n\tplatform: PlatformSchema.default(\"linux/amd64\"),\n\tdeployment: DeploymentTargetSchema.default(\"local\"),\n\topenclawVersion: z.string().default(\"latest\"),\n\t/** When true, gateway gets extra_hosts so it can reach host-run (native) services. */\n\tbareMetalNativeHost: z.boolean().optional(),\n\t/** OpenClaw Docker image variant: official, coolify, or alpine. */\n\topenclawImage: OpenclawImageVariantSchema.default(\"official\"),\n\t/** Whether to apply security hardening (cap_drop, no-new-privileges, etc.) */\n\thardened: z.boolean().default(true),\n\t/** How to install OpenClaw itself: docker (in container) or direct (host install). */\n\topenclawInstallMethod: OpenclawInstallMethodSchema.default(\"docker\"),\n});\n\n// ─── Addon Stack (Clawexa) ───────────────────────────────────────────────────\n\nexport const SkippedServiceReasonSchema = z.enum([\n\t\"missing_credentials\",\n\t\"no_image\",\n\t\"platform_unsupported\",\n\t\"conflict\",\n\t\"gpu_required\",\n\t\"unknown_service\",\n\t\"resolution_error\",\n]);\n\nexport const SkippedServiceSchema = z.object({\n\tserviceId: z.string(),\n\treason: SkippedServiceReasonSchema,\n\tdetails: z.string(),\n\trequiredCredentials: z.array(z.string()).optional(),\n});\n\nexport const ProxyRouteSchema = z.object({\n\tserviceId: z.string(),\n\tpath: z.string(),\n\tport: z.number().int(),\n\tprotocol: z.enum([\"http\", \"https\", \"ws\"]).default(\"http\"),\n\tstripPrefix: z.boolean().default(true),\n});\n\nexport const AddonStackInputSchema = z.object({\n\t/** Instance identifier (used for project name sanitization). */\n\tinstanceId: z.string().min(1),\n\t/** Addon service IDs to deploy. */\n\tservices: z.array(z.string()),\n\t/** Optional skill packs. */\n\tskillPacks: z.array(z.string()).default([]),\n\t/** Platform architecture. */\n\tplatform: PlatformSchema.default(\"linux/amd64\"),\n\t/** OpenClaw version running on the instance. */\n\topenclawVersion: z.string().default(\"latest\"),\n\t/** Services already running on the instance (to detect conflicts). */\n\texistingServices: z.array(z.string()).default([]),\n\t/** Ports already in use on the host. */\n\treservedPorts: z.array(z.number().int()).default([]),\n\t/** Whether to generate secrets (default: true). */\n\tgenerateSecrets: z.boolean().default(true),\n\t/** User-provided credentials for services that need them. */\n\tcredentials: z.record(z.string(), z.record(z.string(), z.string())).default({}),\n\t/** Port overrides for specific services. */\n\tportOverrides: z.record(z.string(), z.record(z.string(), z.number().int().min(1).max(65535))).optional(),\n\t/** Whether the host has GPU support. */\n\tgpu: z.boolean().default(false),\n\t/** AI providers configured on this instance. */\n\taiProviders: z.array(AiProviderSchema).default([]),\n\t/** Pre-built image overrides (serviceId → image:tag). */\n\tprebuiltImages: z.record(z.string(), z.string()).default({}),\n});\n\nexport const AddonStackResultSchema = z.object({\n\t/** Single docker-compose.override.yml content. */\n\tcomposeOverride: z.string(),\n\t/** Complete .env file with all secrets generated. */\n\tenvFile: z.string(),\n\t/** Structured env vars for UI display / credential management. */\n\tenvVars: z.array(z.object({\n\t\tserviceName: z.string(),\n\t\tvars: z.array(z.object({\n\t\t\tkey: z.string(),\n\t\t\tdescription: z.string(),\n\t\t\tvalue: z.string(),\n\t\t\tsecret: z.boolean(),\n\t\t})),\n\t})),\n\t/** SKILL.md files keyed by slug. */\n\tskillFiles: z.record(z.string(), z.string()),\n\t/** OpenClaw config additions (skills.entries to merge). */\n\topenclawConfigPatch: z.object({\n\t\tskills: z.object({\n\t\t\tentries: z.record(z.string(), z.object({ enabled: z.boolean() })),\n\t\t}),\n\t}),\n\t/** Port mapping for reverse proxy configuration. */\n\tproxyRoutes: z.array(ProxyRouteSchema),\n\t/** Metadata. */\n\tmetadata: z.object({\n\t\tserviceCount: z.number(),\n\t\tskillCount: z.number(),\n\t\testimatedMemoryMB: z.number(),\n\t\tresolvedServices: z.array(z.string()),\n\t\tskippedServices: z.array(SkippedServiceSchema),\n\t\tgeneratedSecretKeys: z.array(z.string()),\n\t\tportAssignments: z.record(z.string(), z.number()),\n\t}),\n\t/** Warnings (non-fatal issues). */\n\twarnings: z.array(z.string()),\n});\n\nexport const AddonStackUpdateInputSchema = z.object({\n\tinstanceId: z.string().min(1),\n\t/** Current compose override YAML (from the running instance). */\n\tcurrentCompose: z.string(),\n\t/** Current .env content. */\n\tcurrentEnv: z.string(),\n\t/** Services to add. */\n\taddServices: z.array(z.string()).default([]),\n\t/** Services to remove. */\n\tremoveServices: z.array(z.string()).default([]),\n\t/** Whether to generate secrets for newly added services (default: true). */\n\tgenerateSecrets: z.boolean().default(true),\n\t/** User-provided credentials for new services. */\n\tcredentials: z.record(z.string(), z.record(z.string(), z.string())).default({}),\n\t/** Port overrides for specific services. */\n\tportOverrides: z.record(z.string(), z.record(z.string(), z.number().int().min(1).max(65535))).optional(),\n\t/** Reserved ports. */\n\treservedPorts: z.array(z.number().int()).default([]),\n\tplatform: PlatformSchema.default(\"linux/amd64\"),\n\topenclawVersion: z.string().default(\"latest\"),\n\taiProviders: z.array(AiProviderSchema).default([]),\n\tprebuiltImages: z.record(z.string(), z.string()).default({}),\n});\n\nexport const AddonStackUpdateResultSchema = z.object({\n\t/** Updated compose override (merged with existing). */\n\tcomposeOverride: z.string(),\n\t/** Updated .env (existing values preserved, new ones added). */\n\tenvFile: z.string(),\n\t/** Only NEW skill files to deploy. */\n\tnewSkillFiles: z.record(z.string(), z.string()),\n\t/** Skill slugs to remove from openclaw.json. */\n\tremovedSkillSlugs: z.array(z.string()),\n\t/** Config patch to apply. */\n\topenclawConfigPatch: z.object({\n\t\tskills: z.object({\n\t\t\tadd: z.record(z.string(), z.object({ enabled: z.boolean() })),\n\t\t\tremove: z.array(z.string()),\n\t\t}),\n\t}),\n\t/** New proxy routes to add. */\n\taddProxyRoutes: z.array(ProxyRouteSchema),\n\t/** Proxy routes to remove (service IDs). */\n\tremoveProxyRoutes: z.array(z.string()),\n\t/** Services that need their images pulled. */\n\timagesToPull: z.array(z.string()),\n\t/** Services to restart (due to dependency changes). */\n\trestartRequired: z.array(z.string()),\n\t/** Metadata. */\n\tmetadata: z.object({\n\t\tadded: z.array(z.string()),\n\t\tremoved: z.array(z.string()),\n\t\tunchanged: z.array(z.string()),\n\t\testimatedMemoryDelta: z.number(),\n\t}),\n\twarnings: z.array(z.string()),\n});\n\n// ─── API Request/Response ───────────────────────────────────────────────────\n\nexport const ValidateRequestSchema = z.object({\n\tservices: z.array(z.string()),\n\tskillPacks: z.array(z.string()).default([]),\n\taiProviders: z.array(AiProviderSchema).default([]),\n\tgsdRuntimes: z.array(GsdRuntimeSchema).default([]),\n\tproxy: ProxyTypeSchema.default(\"none\"),\n\tdomain: z.string().optional(),\n\tgpu: z.boolean().default(false),\n\tplatform: PlatformSchema.default(\"linux/amd64\"),\n});\n\nexport const ValidateResponseSchema = z.object({\n\tvalid: z.boolean(),\n\tresolvedServices: z.array(z.string()),\n\taddedDependencies: z.array(AddedDependencySchema),\n\twarnings: z.array(WarningSchema),\n\tconflicts: z.array(ErrorSchema),\n\testimatedMemoryMB: z.number(),\n});\n\nexport const ApiErrorSchema = z.object({\n\terror: z.object({\n\t\tcode: z.enum([\n\t\t\t\"VALIDATION_ERROR\",\n\t\t\t\"CONFLICT_ERROR\",\n\t\t\t\"GENERATION_ERROR\",\n\t\t\t\"RATE_LIMITED\",\n\t\t\t\"INTERNAL_ERROR\",\n\t\t]),\n\t\tmessage: z.string(),\n\t\tdetails: z\n\t\t\t.array(\n\t\t\t\tz.object({\n\t\t\t\t\tfield: z.string().optional(),\n\t\t\t\t\tmessage: z.string(),\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.optional(),\n\t}),\n});\n"],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"schema.mjs","names":[],"sources":["../src/schema.ts"],"sourcesContent":["import { z } from \"zod\";\n\n// ─── Enums ──────────────────────────────────────────────────────────────────\n\nexport const ServiceCategorySchema = z.enum([\n\t\"automation\",\n\t\"vector-db\",\n\t\"media\",\n\t\"storage\",\n\t\"database\",\n\t\"proxy\",\n\t\"monitoring\",\n\t\"browser\",\n\t\"search\",\n\t\"ai\",\n\t\"communication\",\n\t\"coding-agent\",\n\t\"social-media\",\n\t\"analytics\",\n\t\"ai-platform\",\n\t\"dev-tools\",\n\t\"knowledge\",\n\t\"desktop\",\n\t\"streaming\",\n\t\"security\",\n\t\"billing\",\n\t\"crm\",\n\t\"email-marketing\",\n\t\"forms\",\n\t\"api-gateway\",\n\t\"backup\",\n\t\"voice\",\n\t\"ecommerce\",\n\t\"collaboration\",\n\t\"ai-observability\",\n\t\"fine-tuning\",\n\t\"project-management\",\n\t\"business-intelligence\",\n\t\"dns-networking\",\n\t\"iot\",\n\t\"saas-boilerplate\",\n]);\n\nexport const MaturitySchema = z.enum([\"stable\", \"beta\", \"experimental\"]);\n\nexport const PlatformSchema = z.enum([\n\t\"linux/amd64\",\n\t\"linux/arm64\",\n\t\"windows/amd64\",\n\t\"macos/amd64\",\n\t\"macos/arm64\",\n]);\n\n/** Platform for Docker image arch only (used by resolver/compose). */\nexport const ComposePlatformSchema = z.enum([\"linux/amd64\", \"linux/arm64\"]);\n\nexport const DeploymentTypeSchema = z.enum([\"docker\", \"bare-metal\", \"local\"]);\n\nexport const RestartPolicySchema = z.enum([\"unless-stopped\", \"always\", \"on-failure\", \"no\"]);\n\nexport const ProxyTypeSchema = z.enum([\"none\", \"caddy\", \"traefik\"]);\n\nexport const DeploymentTargetSchema = z.enum([\"local\", \"vps\", \"homelab\", \"clawexa\"]);\n\nexport const OutputFormatSchema = z.enum([\"directory\", \"tar\", \"zip\"]);\n\nexport const OpenclawImageVariantSchema = z.enum([\"official\", \"coolify\", \"alpine\"]);\n\nexport const OpenclawInstallMethodSchema = z.enum([\"docker\", \"direct\"]);\n\nexport const DeployTargetSchema = z.enum([\"local\", \"cloud-init\"]);\n\nexport const AiProviderSchema = z.enum([\n\t\"openai\",\n\t\"anthropic\",\n\t\"google\",\n\t\"xai\",\n\t\"deepseek\",\n\t\"groq\",\n\t\"openrouter\",\n\t\"mistral\",\n\t\"together\",\n\t\"ollama\",\n\t\"ollama-cloud\",\n\t\"lmstudio\",\n\t\"vllm\",\n]);\n\nexport const GsdRuntimeSchema = z.enum([\"claude\", \"opencode\", \"gemini\", \"codex\"]);\n\n// ─── Sub-Schemas ────────────────────────────────────────────────────────────\n\nexport const PortMappingSchema = z.object({\n\thost: z.number().int().min(1).max(65535),\n\tcontainer: z.number().int().min(1).max(65535),\n\tdescription: z.string(),\n\texposed: z.boolean().default(true),\n});\n\nexport const VolumeMappingSchema = z.object({\n\tname: z.string().min(1),\n\tcontainerPath: z.string().min(1),\n\tdescription: z.string(),\n\tdriver: z.string().optional(),\n});\n\nexport const EnvVariableSchema = z.object({\n\tkey: z.string().min(1),\n\tdefaultValue: z.string(),\n\tsecret: z.boolean().default(false),\n\tdescription: z.string(),\n\trequired: z.boolean().default(true),\n\tvalidation: z.string().optional(),\n});\n\nexport const HealthCheckSchema = z.object({\n\ttest: z.string().min(1),\n\tinterval: z.string().default(\"30s\"),\n\ttimeout: z.string().default(\"10s\"),\n\tretries: z.number().int().min(1).default(3),\n\tstartPeriod: z.string().optional(),\n});\n\nexport const ResourceLimitsSchema = z.object({\n\tcpus: z.string().optional(),\n\tmemory: z.string().optional(),\n});\n\nexport const DeploySchema = z.object({\n\tresources: z\n\t\t.object({\n\t\t\tlimits: ResourceLimitsSchema.optional(),\n\t\t\treservations: ResourceLimitsSchema.optional(),\n\t\t})\n\t\t.optional(),\n});\n\nexport const SkillBindingSchema = z.object({\n\tskillId: z.string().min(1),\n\tautoInstall: z.boolean().default(true),\n\tconfigOverrides: z.record(z.string(), z.string()).optional(),\n});\n\n/** Platform for native install (linux, windows, macos — no arch). */\nexport const NativePlatformSchema = z.enum([\"linux\", \"windows\", \"macos\"]);\n\nexport const NativeRecipeSchema = z.object({\n\tplatform: NativePlatformSchema,\n\tinstallSteps: z.array(z.string()).min(1),\n\tstartCommand: z.string(),\n\tstopCommand: z.string().optional(),\n\tconfigPath: z.string().optional(),\n\tconfigTemplate: z.string().optional(),\n\tsystemdUnit: z.string().optional(),\n});\n\n// ─── Git Source / Build Context (for repo-based services) ───────────────────\n\nexport const GitSourceSchema = z.object({\n\t/** Git clone URL, e.g. \"https://github.com/wasp-lang/open-saas.git\" */\n\trepoUrl: z.string().url(),\n\t/** Branch or tag to clone. Defaults to repo's default branch. */\n\tbranch: z.string().optional(),\n\t/** Subdirectory within the cloned repo to use as build context root. */\n\tsubdirectory: z.string().optional(),\n\t/** Commands to run after cloning (e.g. \"cp .env.example .env\"). */\n\tpostCloneCommands: z.array(z.string()).default([]),\n});\n\nexport const BuildContextSchema = z.object({\n\t/** Path to Dockerfile relative to the context root. Defaults to \"Dockerfile\". */\n\tdockerfile: z.string().optional(),\n\t/** Build context path relative to the subdirectory root. Defaults to \".\". */\n\tcontext: z.string().default(\".\"),\n\t/** Docker build args to pass at build time. */\n\targs: z.record(z.string(), z.string()).optional(),\n\t/** Target stage in a multi-stage Dockerfile. */\n\ttarget: z.string().optional(),\n});\n\n// ─── Env Quirks (for addon stack generation) ────────────────────────────────\n\nexport const EnvQuirkFixSchema = z.object({\n\ttype: z.enum([\"set_value\", \"generate_hex\", \"generate_base64url\", \"sync_with\"]),\n\t/** Fixed value to set (for set_value type). */\n\tvalue: z.string().optional(),\n\t/** Minimum bytes for generated secrets (for generate_hex/generate_base64url). */\n\tminBytes: z.number().int().min(1).optional(),\n\t/** Key to synchronize with (for sync_with type). */\n\tsyncKey: z.string().optional(),\n});\n\nexport const EnvQuirkSchema = z.object({\n\tkey: z.string(),\n\tissue: z.enum([\"empty_string_crashes\", \"min_length\", \"must_sync\"]),\n\tfix: EnvQuirkFixSchema,\n});\n\n// ─── Service Definition ─────────────────────────────────────────────────────\n\nexport const ServiceDefinitionSchema = z.object({\n\t// Identity\n\tid: z\n\t\t.string()\n\t\t.min(1)\n\t\t.regex(/^[a-z0-9-]+$/),\n\tname: z.string().min(1),\n\tdescription: z.string(),\n\tcategory: ServiceCategorySchema,\n\ticon: z.string(),\n\n\t// Docker (required for image-based services, omitted for git-based)\n\timage: z.string().min(1).optional(),\n\timageTag: z.string().min(1).optional(),\n\n\t// Git source (for services built from cloned repositories)\n\tgitSource: GitSourceSchema.optional(),\n\tbuildContext: BuildContextSchema.optional(),\n\tports: z.array(PortMappingSchema).default([]),\n\tvolumes: z.array(VolumeMappingSchema).default([]),\n\tenvironment: z.array(EnvVariableSchema).default([]),\n\thealthcheck: HealthCheckSchema.optional(),\n\tcommand: z.string().optional(),\n\tentrypoint: z.string().optional(),\n\tdependsOn: z.array(z.string()).default([]),\n\trestartPolicy: RestartPolicySchema.default(\"unless-stopped\"),\n\tnetworks: z.array(z.string()).default([\"openclaw-network\"]),\n\tlabels: z.record(z.string(), z.string()).optional(),\n\tdeploy: DeploySchema.optional(),\n\n\t// OpenClaw Integration\n\tskills: z.array(SkillBindingSchema).default([]),\n\topenclawEnvVars: z.array(EnvVariableSchema).default([]),\n\topenclawVolumeMounts: z.array(VolumeMappingSchema).optional(),\n\n\t// Metadata\n\tdocsUrl: z.string().url(),\n\tselfHostedDocsUrl: z.string().url().optional(),\n\ttags: z.array(z.string()).default([]),\n\tmaturity: MaturitySchema.default(\"stable\"),\n\n\t// Dependencies & Conflicts\n\trequires: z.array(z.string()).default([]),\n\trecommends: z.array(z.string()).default([]),\n\tconflictsWith: z.array(z.string()).default([]),\n\tmandatory: z.boolean().default(false).optional(),\n\tremovalWarning: z.string().optional(),\n\n\t// Platform Constraints\n\tplatforms: z.array(PlatformSchema).optional(),\n\tminMemoryMB: z.number().int().min(0).optional(),\n\tgpuRequired: z.boolean().default(false),\n\n\t// Bare-metal native (install/run on host when no Docker)\n\tnativeSupported: z.boolean().optional(),\n\tnativeRecipes: z.array(NativeRecipeSchema).optional(),\n\n\t// Clawexa addon metadata\n\t/** Whether the service works with cap_drop: ALL (default: undefined = not audited). */\n\tcapDropCompatible: z.boolean().optional(),\n\t/** Pre-built Docker image for cloud-init deployment (replaces build: directives). */\n\tprebuiltImage: z.string().optional(),\n\t/** Default reverse proxy path (e.g. \"/n8n\", \"/grafana\"). */\n\tproxyPath: z.string().optional(),\n\t/** Linux capabilities needed at first boot (e.g. [\"CHOWN\", \"SETGID\"]). */\n\tfirstBootCapabilities: z.array(z.string()).optional(),\n\t/** Known environment variable quirks that need special handling. */\n\tenvQuirks: z.array(EnvQuirkSchema).optional(),\n});\n\n// ─── Skill Pack ─────────────────────────────────────────────────────────────\n\nexport const SkillPackSchema = z.object({\n\tid: z\n\t\t.string()\n\t\t.min(1)\n\t\t.regex(/^[a-z0-9-]+$/),\n\tname: z.string().min(1),\n\tdescription: z.string(),\n\trequiredServices: z.array(z.string()).min(1),\n\tskills: z.array(z.string()),\n\ticon: z.string().optional(),\n\ttags: z.array(z.string()).default([]),\n});\n\n// ─── Preset ─────────────────────────────────────────────────────────────────\n\nexport const PresetSchema = z.object({\n\tid: z\n\t\t.string()\n\t\t.min(1)\n\t\t.regex(/^[a-z0-9-]+$/),\n\tname: z.string().min(1),\n\tdescription: z.string(),\n\tservices: z.array(z.string()),\n\tskillPacks: z.array(z.string()).default([]),\n\testimatedMemoryMB: z.number().int().min(0).optional(),\n});\n\n// ─── Generation Input ───────────────────────────────────────────────────────\n\nexport const GenerationInputSchema = z.object({\n\tconfigVersion: z.number().int().min(1).optional(),\n\tprojectName: z\n\t\t.string()\n\t\t.min(1)\n\t\t.max(64)\n\t\t.regex(/^[a-z0-9][a-z0-9-]*[a-z0-9]$|^[a-z0-9]$/, {\n\t\t\tmessage:\n\t\t\t\t\"Project name must be lowercase alphanumeric with hyphens, cannot start or end with hyphen\",\n\t\t}),\n\tservices: z.array(z.string()).default([]),\n\tskillPacks: z.array(z.string()).default([]),\n\taiProviders: z.array(AiProviderSchema).default([]),\n\tgsdRuntimes: z.array(GsdRuntimeSchema).default([]),\n\tproxy: ProxyTypeSchema.default(\"none\"),\n\tproxyHttpPort: z.number().int().min(1).max(65535).optional(),\n\tproxyHttpsPort: z.number().int().min(1).max(65535).optional(),\n\tportOverrides: z\n\t\t.record(z.string(), z.record(z.string(), z.number().int().min(1).max(65535)))\n\t\t.optional(),\n\tdomain: z.string().optional(),\n\tgpu: z.boolean().default(false),\n\tplatform: PlatformSchema.default(\"linux/amd64\"),\n\tdeployment: DeploymentTargetSchema.default(\"local\"),\n\tdeploymentType: DeploymentTypeSchema.default(\"docker\"),\n\tgenerateSecrets: z.boolean().default(true),\n\topenclawVersion: z.string().default(\"latest\"),\n\tmonitoring: z.boolean().default(false),\n\topenclawImage: OpenclawImageVariantSchema.default(\"official\"),\n\topenclawInstallMethod: OpenclawInstallMethodSchema.default(\"docker\"),\n\tdeployTarget: DeployTargetSchema.default(\"local\"),\n\thardened: z.boolean().default(true),\n});\n\n// ─── Resolver Output ────────────────────────────────────────────────────────\n\nexport const ResolvedServiceSchema = z.object({\n\tdefinition: ServiceDefinitionSchema,\n\taddedBy: z.enum([\"user\", \"dependency\", \"skill-pack\", \"proxy\", \"monitoring\", \"mandatory\"]).default(\"user\"),\n});\n\nexport const AddedDependencySchema = z.object({\n\tservice: z.string(),\n\tserviceId: z.string().optional(),\n\trequiredBy: z.string().optional(),\n\treason: z.string(),\n});\n\nexport const WarningSchema = z.object({\n\ttype: z.string(),\n\tmessage: z.string(),\n});\n\nexport const ErrorSchema = z.object({\n\ttype: z.string(),\n\tmessage: z.string(),\n});\n\nexport const ResolverOutputSchema = z.object({\n\tservices: z.array(ResolvedServiceSchema),\n\taddedDependencies: z.array(AddedDependencySchema),\n\tremovedConflicts: z.array(z.object({ service: z.string(), reason: z.string() })),\n\twarnings: z.array(WarningSchema),\n\terrors: z.array(ErrorSchema),\n\tisValid: z.boolean(),\n\testimatedMemoryMB: z.number().int().min(0),\n\taiProviders: z.array(AiProviderSchema).default([]),\n\tgsdRuntimes: z.array(GsdRuntimeSchema).default([]),\n});\n\n// ─── Compose Options ────────────────────────────────────────────────────────\n\nexport const ComposeOptionsSchema = z.object({\n\tprojectName: z.string(),\n\tproxy: ProxyTypeSchema.default(\"none\"),\n\tproxyHttpPort: z.number().int().min(1).max(65535).optional(),\n\tproxyHttpsPort: z.number().int().min(1).max(65535).optional(),\n\tportOverrides: z\n\t\t.record(z.string(), z.record(z.string(), z.number().int().min(1).max(65535)))\n\t\t.optional(),\n\tdomain: z.string().optional(),\n\tgpu: z.boolean().default(false),\n\tplatform: PlatformSchema.default(\"linux/amd64\"),\n\tdeployment: DeploymentTargetSchema.default(\"local\"),\n\topenclawVersion: z.string().default(\"latest\"),\n\t/** When true, gateway gets extra_hosts so it can reach host-run (native) services. */\n\tbareMetalNativeHost: z.boolean().optional(),\n\t/** OpenClaw Docker image variant: official, coolify, or alpine. */\n\topenclawImage: OpenclawImageVariantSchema.default(\"official\"),\n\t/** Whether to apply security hardening (cap_drop, no-new-privileges, etc.) */\n\thardened: z.boolean().default(true),\n\t/** How to install OpenClaw itself: docker (in container) or direct (host install). */\n\topenclawInstallMethod: OpenclawInstallMethodSchema.default(\"docker\"),\n});\n\n// ─── Addon Stack (Clawexa) ───────────────────────────────────────────────────\n\nexport const SkippedServiceReasonSchema = z.enum([\n\t\"missing_credentials\",\n\t\"no_image\",\n\t\"platform_unsupported\",\n\t\"conflict\",\n\t\"gpu_required\",\n\t\"unknown_service\",\n\t\"resolution_error\",\n]);\n\nexport const SkippedServiceSchema = z.object({\n\tserviceId: z.string(),\n\treason: SkippedServiceReasonSchema,\n\tdetails: z.string(),\n\trequiredCredentials: z.array(z.string()).optional(),\n});\n\nexport const ProxyRouteSchema = z.object({\n\tserviceId: z.string(),\n\tpath: z.string(),\n\tport: z.number().int(),\n\tprotocol: z.enum([\"http\", \"https\", \"ws\"]).default(\"http\"),\n\tstripPrefix: z.boolean().default(true),\n});\n\nexport const AddonStackInputSchema = z.object({\n\t/** Instance identifier (used for project name sanitization). */\n\tinstanceId: z.string().min(1),\n\t/** Addon service IDs to deploy. */\n\tservices: z.array(z.string()),\n\t/** Optional skill packs. */\n\tskillPacks: z.array(z.string()).default([]),\n\t/** Platform architecture. */\n\tplatform: PlatformSchema.default(\"linux/amd64\"),\n\t/** OpenClaw version running on the instance. */\n\topenclawVersion: z.string().default(\"latest\"),\n\t/** Services already running on the instance (to detect conflicts). */\n\texistingServices: z.array(z.string()).default([]),\n\t/** Ports already in use on the host. */\n\treservedPorts: z.array(z.number().int()).default([]),\n\t/** Whether to generate secrets (default: true). */\n\tgenerateSecrets: z.boolean().default(true),\n\t/** User-provided credentials for services that need them. */\n\tcredentials: z.record(z.string(), z.record(z.string(), z.string())).default({}),\n\t/** Port overrides for specific services. */\n\tportOverrides: z.record(z.string(), z.record(z.string(), z.number().int().min(1).max(65535))).optional(),\n\t/** Whether the host has GPU support. */\n\tgpu: z.boolean().default(false),\n\t/** AI providers configured on this instance. */\n\taiProviders: z.array(AiProviderSchema).default([]),\n\t/** Pre-built image overrides (serviceId → image:tag). */\n\tprebuiltImages: z.record(z.string(), z.string()).default({}),\n});\n\nexport const AddonStackResultSchema = z.object({\n\t/** Single docker-compose.override.yml content. */\n\tcomposeOverride: z.string(),\n\t/** Complete .env file with all secrets generated. */\n\tenvFile: z.string(),\n\t/** Structured env vars for UI display / credential management. */\n\tenvVars: z.array(z.object({\n\t\tserviceName: z.string(),\n\t\tvars: z.array(z.object({\n\t\t\tkey: z.string(),\n\t\t\tdescription: z.string(),\n\t\t\tvalue: z.string(),\n\t\t\tsecret: z.boolean(),\n\t\t})),\n\t})),\n\t/** SKILL.md files keyed by slug. */\n\tskillFiles: z.record(z.string(), z.string()),\n\t/** OpenClaw config additions (skills.entries to merge). */\n\topenclawConfigPatch: z.object({\n\t\tskills: z.object({\n\t\t\tentries: z.record(z.string(), z.object({ enabled: z.boolean() })),\n\t\t}),\n\t}),\n\t/** Port mapping for reverse proxy configuration. */\n\tproxyRoutes: z.array(ProxyRouteSchema),\n\t/** Additional files to write alongside compose (e.g. sandbox.toml). Keyed by filename. */\n\tadditionalFiles: z.record(z.string(), z.string()).default({}),\n\t/** Metadata. */\n\tmetadata: z.object({\n\t\tserviceCount: z.number(),\n\t\tskillCount: z.number(),\n\t\testimatedMemoryMB: z.number(),\n\t\tresolvedServices: z.array(z.string()),\n\t\tskippedServices: z.array(SkippedServiceSchema),\n\t\tgeneratedSecretKeys: z.array(z.string()),\n\t\tportAssignments: z.record(z.string(), z.number()),\n\t\t/** Docker images to pre-pull during cloud-init, grouped by priority. */\n\t\tprePullImages: z.array(z.object({\n\t\t\timage: z.string(),\n\t\t\tpriority: z.union([z.literal(1), z.literal(2), z.literal(3)]),\n\t\t})).default([]),\n\t}),\n\t/** Warnings (non-fatal issues). */\n\twarnings: z.array(z.string()),\n});\n\nexport const AddonStackUpdateInputSchema = z.object({\n\tinstanceId: z.string().min(1),\n\t/** Current compose override YAML (from the running instance). */\n\tcurrentCompose: z.string(),\n\t/** Current .env content. */\n\tcurrentEnv: z.string(),\n\t/** Services to add. */\n\taddServices: z.array(z.string()).default([]),\n\t/** Services to remove. */\n\tremoveServices: z.array(z.string()).default([]),\n\t/** Whether to generate secrets for newly added services (default: true). */\n\tgenerateSecrets: z.boolean().default(true),\n\t/** User-provided credentials for new services. */\n\tcredentials: z.record(z.string(), z.record(z.string(), z.string())).default({}),\n\t/** Port overrides for specific services. */\n\tportOverrides: z.record(z.string(), z.record(z.string(), z.number().int().min(1).max(65535))).optional(),\n\t/** Reserved ports. */\n\treservedPorts: z.array(z.number().int()).default([]),\n\tplatform: PlatformSchema.default(\"linux/amd64\"),\n\topenclawVersion: z.string().default(\"latest\"),\n\taiProviders: z.array(AiProviderSchema).default([]),\n\tprebuiltImages: z.record(z.string(), z.string()).default({}),\n});\n\nexport const AddonStackUpdateResultSchema = z.object({\n\t/** Updated compose override (merged with existing). */\n\tcomposeOverride: z.string(),\n\t/** Updated .env (existing values preserved, new ones added). */\n\tenvFile: z.string(),\n\t/** Only NEW skill files to deploy. */\n\tnewSkillFiles: z.record(z.string(), z.string()),\n\t/** Skill slugs to remove from openclaw.json. */\n\tremovedSkillSlugs: z.array(z.string()),\n\t/** Config patch to apply. */\n\topenclawConfigPatch: z.object({\n\t\tskills: z.object({\n\t\t\tadd: z.record(z.string(), z.object({ enabled: z.boolean() })),\n\t\t\tremove: z.array(z.string()),\n\t\t}),\n\t}),\n\t/** New proxy routes to add. */\n\taddProxyRoutes: z.array(ProxyRouteSchema),\n\t/** Proxy routes to remove (service IDs). */\n\tremoveProxyRoutes: z.array(z.string()),\n\t/** Services that need their images pulled. */\n\timagesToPull: z.array(z.string()),\n\t/** Services to restart (due to dependency changes). */\n\trestartRequired: z.array(z.string()),\n\t/** Metadata. */\n\tmetadata: z.object({\n\t\tadded: z.array(z.string()),\n\t\tremoved: z.array(z.string()),\n\t\tunchanged: z.array(z.string()),\n\t\testimatedMemoryDelta: z.number(),\n\t}),\n\twarnings: z.array(z.string()),\n});\n\n// ─── API Request/Response ───────────────────────────────────────────────────\n\nexport const ValidateRequestSchema = z.object({\n\tservices: z.array(z.string()),\n\tskillPacks: z.array(z.string()).default([]),\n\taiProviders: z.array(AiProviderSchema).default([]),\n\tgsdRuntimes: z.array(GsdRuntimeSchema).default([]),\n\tproxy: ProxyTypeSchema.default(\"none\"),\n\tdomain: z.string().optional(),\n\tgpu: z.boolean().default(false),\n\tplatform: PlatformSchema.default(\"linux/amd64\"),\n});\n\nexport const ValidateResponseSchema = z.object({\n\tvalid: z.boolean(),\n\tresolvedServices: z.array(z.string()),\n\taddedDependencies: z.array(AddedDependencySchema),\n\twarnings: z.array(WarningSchema),\n\tconflicts: z.array(ErrorSchema),\n\testimatedMemoryMB: z.number(),\n});\n\nexport const ApiErrorSchema = z.object({\n\terror: z.object({\n\t\tcode: z.enum([\n\t\t\t\"VALIDATION_ERROR\",\n\t\t\t\"CONFLICT_ERROR\",\n\t\t\t\"GENERATION_ERROR\",\n\t\t\t\"RATE_LIMITED\",\n\t\t\t\"INTERNAL_ERROR\",\n\t\t]),\n\t\tmessage: z.string(),\n\t\tdetails: z\n\t\t\t.array(\n\t\t\t\tz.object({\n\t\t\t\t\tfield: z.string().optional(),\n\t\t\t\t\tmessage: z.string(),\n\t\t\t\t}),\n\t\t\t)\n\t\t\t.optional(),\n\t}),\n});\n"],"mappings":"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"}
|
|
@@ -0,0 +1,142 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
//#region src/services/definitions/burnlink.ts
|
|
3
|
+
const burnlinkDefinition = {
|
|
4
|
+
id: "burnlink",
|
|
5
|
+
name: "BurnLink",
|
|
6
|
+
description: "Privacy-first, zero-knowledge file sharing with end-to-end browser-side AES-256-GCM encryption, one-time downloads, view-once mode, and brute-force protection.",
|
|
7
|
+
category: "storage",
|
|
8
|
+
icon: "🔥",
|
|
9
|
+
image: "diopisemou/burnlink",
|
|
10
|
+
imageTag: "latest",
|
|
11
|
+
ports: [{
|
|
12
|
+
host: 3250,
|
|
13
|
+
container: 3e3,
|
|
14
|
+
description: "BurnLink web interface",
|
|
15
|
+
exposed: true
|
|
16
|
+
}],
|
|
17
|
+
volumes: [],
|
|
18
|
+
environment: [
|
|
19
|
+
{
|
|
20
|
+
key: "PORT",
|
|
21
|
+
defaultValue: "3000",
|
|
22
|
+
secret: false,
|
|
23
|
+
description: "Server listen port",
|
|
24
|
+
required: false
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
key: "SUPABASE_URL",
|
|
28
|
+
defaultValue: "",
|
|
29
|
+
secret: false,
|
|
30
|
+
description: "Supabase project URL for metadata storage",
|
|
31
|
+
required: true
|
|
32
|
+
},
|
|
33
|
+
{
|
|
34
|
+
key: "SUPABASE_SERVICE_ROLE_KEY",
|
|
35
|
+
defaultValue: "",
|
|
36
|
+
secret: true,
|
|
37
|
+
description: "Supabase service role key",
|
|
38
|
+
required: true
|
|
39
|
+
},
|
|
40
|
+
{
|
|
41
|
+
key: "R2_ACCOUNT_ID",
|
|
42
|
+
defaultValue: "",
|
|
43
|
+
secret: false,
|
|
44
|
+
description: "Cloudflare R2 account ID (or MinIO endpoint for self-hosted)",
|
|
45
|
+
required: true
|
|
46
|
+
},
|
|
47
|
+
{
|
|
48
|
+
key: "R2_ACCESS_KEY_ID",
|
|
49
|
+
defaultValue: "",
|
|
50
|
+
secret: true,
|
|
51
|
+
description: "S3-compatible storage access key",
|
|
52
|
+
required: true
|
|
53
|
+
},
|
|
54
|
+
{
|
|
55
|
+
key: "R2_SECRET_ACCESS_KEY",
|
|
56
|
+
defaultValue: "",
|
|
57
|
+
secret: true,
|
|
58
|
+
description: "S3-compatible storage secret key",
|
|
59
|
+
required: true
|
|
60
|
+
},
|
|
61
|
+
{
|
|
62
|
+
key: "R2_BUCKET_NAME",
|
|
63
|
+
defaultValue: "burnlink",
|
|
64
|
+
secret: false,
|
|
65
|
+
description: "Storage bucket name for encrypted files",
|
|
66
|
+
required: true
|
|
67
|
+
},
|
|
68
|
+
{
|
|
69
|
+
key: "CANONICAL_BASE_URL",
|
|
70
|
+
defaultValue: "",
|
|
71
|
+
secret: false,
|
|
72
|
+
description: "Public URL for share links (e.g., https://burn.example.com)",
|
|
73
|
+
required: false
|
|
74
|
+
},
|
|
75
|
+
{
|
|
76
|
+
key: "MAX_UPLOAD_BYTES",
|
|
77
|
+
defaultValue: "1073741824",
|
|
78
|
+
secret: false,
|
|
79
|
+
description: "Max file upload size in bytes (default 1 GB)",
|
|
80
|
+
required: false
|
|
81
|
+
},
|
|
82
|
+
{
|
|
83
|
+
key: "NODE_ENV",
|
|
84
|
+
defaultValue: "production",
|
|
85
|
+
secret: false,
|
|
86
|
+
description: "Node environment (production enables rate limiting)",
|
|
87
|
+
required: false
|
|
88
|
+
}
|
|
89
|
+
],
|
|
90
|
+
healthcheck: {
|
|
91
|
+
test: "wget -q --spider http://localhost:3000/ || exit 1",
|
|
92
|
+
interval: "30s",
|
|
93
|
+
timeout: "10s",
|
|
94
|
+
retries: 3,
|
|
95
|
+
startPeriod: "15s"
|
|
96
|
+
},
|
|
97
|
+
dependsOn: [],
|
|
98
|
+
restartPolicy: "unless-stopped",
|
|
99
|
+
networks: ["openclaw-network"],
|
|
100
|
+
skills: [],
|
|
101
|
+
openclawEnvVars: [{
|
|
102
|
+
key: "BURNLINK_HOST",
|
|
103
|
+
defaultValue: "burnlink",
|
|
104
|
+
secret: false,
|
|
105
|
+
description: "BurnLink hostname",
|
|
106
|
+
required: false
|
|
107
|
+
}, {
|
|
108
|
+
key: "BURNLINK_PORT",
|
|
109
|
+
defaultValue: "3000",
|
|
110
|
+
secret: false,
|
|
111
|
+
description: "BurnLink internal port",
|
|
112
|
+
required: false
|
|
113
|
+
}],
|
|
114
|
+
docsUrl: "https://github.com/diopisemou/BurnLink",
|
|
115
|
+
tags: [
|
|
116
|
+
"file-sharing",
|
|
117
|
+
"encryption",
|
|
118
|
+
"privacy",
|
|
119
|
+
"zero-knowledge",
|
|
120
|
+
"self-destruct"
|
|
121
|
+
],
|
|
122
|
+
maturity: "beta",
|
|
123
|
+
requires: [],
|
|
124
|
+
recommends: ["supabase", "minio"],
|
|
125
|
+
conflictsWith: [],
|
|
126
|
+
minMemoryMB: 128,
|
|
127
|
+
gpuRequired: false,
|
|
128
|
+
capDropCompatible: true,
|
|
129
|
+
proxyPath: "/burnlink",
|
|
130
|
+
envQuirks: [{
|
|
131
|
+
key: "R2_SECRET_ACCESS_KEY",
|
|
132
|
+
issue: "min_length",
|
|
133
|
+
fix: {
|
|
134
|
+
type: "generate_base64url",
|
|
135
|
+
minBytes: 24
|
|
136
|
+
}
|
|
137
|
+
}]
|
|
138
|
+
};
|
|
139
|
+
//#endregion
|
|
140
|
+
exports.burnlinkDefinition = burnlinkDefinition;
|
|
141
|
+
|
|
142
|
+
//# sourceMappingURL=burnlink.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"burnlink.cjs","names":[],"sources":["../../../src/services/definitions/burnlink.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const burnlinkDefinition: ServiceDefinition = {\n\tid: \"burnlink\",\n\tname: \"BurnLink\",\n\tdescription:\n\t\t\"Privacy-first, zero-knowledge file sharing with end-to-end browser-side AES-256-GCM encryption, one-time downloads, view-once mode, and brute-force protection.\",\n\tcategory: \"storage\",\n\ticon: \"🔥\",\n\n\timage: \"diopisemou/burnlink\",\n\timageTag: \"latest\",\n\tports: [\n\t\t{\n\t\t\thost: 3250,\n\t\t\tcontainer: 3000,\n\t\t\tdescription: \"BurnLink web interface\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"PORT\",\n\t\t\tdefaultValue: \"3000\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Server listen port\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"SUPABASE_URL\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Supabase project URL for metadata storage\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"SUPABASE_SERVICE_ROLE_KEY\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Supabase service role key\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"R2_ACCOUNT_ID\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Cloudflare R2 account ID (or MinIO endpoint for self-hosted)\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"R2_ACCESS_KEY_ID\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"S3-compatible storage access key\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"R2_SECRET_ACCESS_KEY\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"S3-compatible storage secret key\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"R2_BUCKET_NAME\",\n\t\t\tdefaultValue: \"burnlink\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Storage bucket name for encrypted files\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"CANONICAL_BASE_URL\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Public URL for share links (e.g., https://burn.example.com)\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"MAX_UPLOAD_BYTES\",\n\t\t\tdefaultValue: \"1073741824\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Max file upload size in bytes (default 1 GB)\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"NODE_ENV\",\n\t\t\tdefaultValue: \"production\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Node environment (production enables rate limiting)\",\n\t\t\trequired: false,\n\t\t},\n\t],\n\thealthcheck: {\n\t\ttest: \"wget -q --spider http://localhost:3000/ || exit 1\",\n\t\tinterval: \"30s\",\n\t\ttimeout: \"10s\",\n\t\tretries: 3,\n\t\tstartPeriod: \"15s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [],\n\topenclawEnvVars: [\n\t\t{\n\t\t\tkey: \"BURNLINK_HOST\",\n\t\t\tdefaultValue: \"burnlink\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"BurnLink hostname\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"BURNLINK_PORT\",\n\t\t\tdefaultValue: \"3000\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"BurnLink internal port\",\n\t\t\trequired: false,\n\t\t},\n\t],\n\n\tdocsUrl: \"https://github.com/diopisemou/BurnLink\",\n\ttags: [\"file-sharing\", \"encryption\", \"privacy\", \"zero-knowledge\", \"self-destruct\"],\n\tmaturity: \"beta\",\n\n\trequires: [],\n\trecommends: [\"supabase\", \"minio\"],\n\tconflictsWith: [],\n\n\tminMemoryMB: 128,\n\tgpuRequired: false,\n\tcapDropCompatible: true,\n\tproxyPath: \"/burnlink\",\n\tenvQuirks: [\n\t\t{\n\t\t\tkey: \"R2_SECRET_ACCESS_KEY\",\n\t\t\tissue: \"min_length\" as const,\n\t\t\tfix: { type: \"generate_base64url\" as const, minBytes: 24 },\n\t\t},\n\t],\n};\n"],"mappings":";;AAEA,MAAa,qBAAwC;CACpD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,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;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,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,EAAE;CACV,iBAAiB,CAChB;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,EACD;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,CACD;CAED,SAAS;CACT,MAAM;EAAC;EAAgB;EAAc;EAAW;EAAkB;EAAgB;CAClF,UAAU;CAEV,UAAU,EAAE;CACZ,YAAY,CAAC,YAAY,QAAQ;CACjC,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb,mBAAmB;CACnB,WAAW;CACX,WAAW,CACV;EACC,KAAK;EACL,OAAO;EACP,KAAK;GAAE,MAAM;GAA+B,UAAU;GAAI;EAC1D,CACD;CACD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"burnlink.d.cts","names":[],"sources":["../../../src/services/definitions/burnlink.ts"],"mappings":";;;cAEa,kBAAA,EAAoB,iBAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"burnlink.d.mts","names":[],"sources":["../../../src/services/definitions/burnlink.ts"],"mappings":";;;cAEa,kBAAA,EAAoB,iBAAA"}
|
|
@@ -0,0 +1,141 @@
|
|
|
1
|
+
//#region src/services/definitions/burnlink.ts
|
|
2
|
+
const burnlinkDefinition = {
|
|
3
|
+
id: "burnlink",
|
|
4
|
+
name: "BurnLink",
|
|
5
|
+
description: "Privacy-first, zero-knowledge file sharing with end-to-end browser-side AES-256-GCM encryption, one-time downloads, view-once mode, and brute-force protection.",
|
|
6
|
+
category: "storage",
|
|
7
|
+
icon: "🔥",
|
|
8
|
+
image: "diopisemou/burnlink",
|
|
9
|
+
imageTag: "latest",
|
|
10
|
+
ports: [{
|
|
11
|
+
host: 3250,
|
|
12
|
+
container: 3e3,
|
|
13
|
+
description: "BurnLink web interface",
|
|
14
|
+
exposed: true
|
|
15
|
+
}],
|
|
16
|
+
volumes: [],
|
|
17
|
+
environment: [
|
|
18
|
+
{
|
|
19
|
+
key: "PORT",
|
|
20
|
+
defaultValue: "3000",
|
|
21
|
+
secret: false,
|
|
22
|
+
description: "Server listen port",
|
|
23
|
+
required: false
|
|
24
|
+
},
|
|
25
|
+
{
|
|
26
|
+
key: "SUPABASE_URL",
|
|
27
|
+
defaultValue: "",
|
|
28
|
+
secret: false,
|
|
29
|
+
description: "Supabase project URL for metadata storage",
|
|
30
|
+
required: true
|
|
31
|
+
},
|
|
32
|
+
{
|
|
33
|
+
key: "SUPABASE_SERVICE_ROLE_KEY",
|
|
34
|
+
defaultValue: "",
|
|
35
|
+
secret: true,
|
|
36
|
+
description: "Supabase service role key",
|
|
37
|
+
required: true
|
|
38
|
+
},
|
|
39
|
+
{
|
|
40
|
+
key: "R2_ACCOUNT_ID",
|
|
41
|
+
defaultValue: "",
|
|
42
|
+
secret: false,
|
|
43
|
+
description: "Cloudflare R2 account ID (or MinIO endpoint for self-hosted)",
|
|
44
|
+
required: true
|
|
45
|
+
},
|
|
46
|
+
{
|
|
47
|
+
key: "R2_ACCESS_KEY_ID",
|
|
48
|
+
defaultValue: "",
|
|
49
|
+
secret: true,
|
|
50
|
+
description: "S3-compatible storage access key",
|
|
51
|
+
required: true
|
|
52
|
+
},
|
|
53
|
+
{
|
|
54
|
+
key: "R2_SECRET_ACCESS_KEY",
|
|
55
|
+
defaultValue: "",
|
|
56
|
+
secret: true,
|
|
57
|
+
description: "S3-compatible storage secret key",
|
|
58
|
+
required: true
|
|
59
|
+
},
|
|
60
|
+
{
|
|
61
|
+
key: "R2_BUCKET_NAME",
|
|
62
|
+
defaultValue: "burnlink",
|
|
63
|
+
secret: false,
|
|
64
|
+
description: "Storage bucket name for encrypted files",
|
|
65
|
+
required: true
|
|
66
|
+
},
|
|
67
|
+
{
|
|
68
|
+
key: "CANONICAL_BASE_URL",
|
|
69
|
+
defaultValue: "",
|
|
70
|
+
secret: false,
|
|
71
|
+
description: "Public URL for share links (e.g., https://burn.example.com)",
|
|
72
|
+
required: false
|
|
73
|
+
},
|
|
74
|
+
{
|
|
75
|
+
key: "MAX_UPLOAD_BYTES",
|
|
76
|
+
defaultValue: "1073741824",
|
|
77
|
+
secret: false,
|
|
78
|
+
description: "Max file upload size in bytes (default 1 GB)",
|
|
79
|
+
required: false
|
|
80
|
+
},
|
|
81
|
+
{
|
|
82
|
+
key: "NODE_ENV",
|
|
83
|
+
defaultValue: "production",
|
|
84
|
+
secret: false,
|
|
85
|
+
description: "Node environment (production enables rate limiting)",
|
|
86
|
+
required: false
|
|
87
|
+
}
|
|
88
|
+
],
|
|
89
|
+
healthcheck: {
|
|
90
|
+
test: "wget -q --spider http://localhost:3000/ || exit 1",
|
|
91
|
+
interval: "30s",
|
|
92
|
+
timeout: "10s",
|
|
93
|
+
retries: 3,
|
|
94
|
+
startPeriod: "15s"
|
|
95
|
+
},
|
|
96
|
+
dependsOn: [],
|
|
97
|
+
restartPolicy: "unless-stopped",
|
|
98
|
+
networks: ["openclaw-network"],
|
|
99
|
+
skills: [],
|
|
100
|
+
openclawEnvVars: [{
|
|
101
|
+
key: "BURNLINK_HOST",
|
|
102
|
+
defaultValue: "burnlink",
|
|
103
|
+
secret: false,
|
|
104
|
+
description: "BurnLink hostname",
|
|
105
|
+
required: false
|
|
106
|
+
}, {
|
|
107
|
+
key: "BURNLINK_PORT",
|
|
108
|
+
defaultValue: "3000",
|
|
109
|
+
secret: false,
|
|
110
|
+
description: "BurnLink internal port",
|
|
111
|
+
required: false
|
|
112
|
+
}],
|
|
113
|
+
docsUrl: "https://github.com/diopisemou/BurnLink",
|
|
114
|
+
tags: [
|
|
115
|
+
"file-sharing",
|
|
116
|
+
"encryption",
|
|
117
|
+
"privacy",
|
|
118
|
+
"zero-knowledge",
|
|
119
|
+
"self-destruct"
|
|
120
|
+
],
|
|
121
|
+
maturity: "beta",
|
|
122
|
+
requires: [],
|
|
123
|
+
recommends: ["supabase", "minio"],
|
|
124
|
+
conflictsWith: [],
|
|
125
|
+
minMemoryMB: 128,
|
|
126
|
+
gpuRequired: false,
|
|
127
|
+
capDropCompatible: true,
|
|
128
|
+
proxyPath: "/burnlink",
|
|
129
|
+
envQuirks: [{
|
|
130
|
+
key: "R2_SECRET_ACCESS_KEY",
|
|
131
|
+
issue: "min_length",
|
|
132
|
+
fix: {
|
|
133
|
+
type: "generate_base64url",
|
|
134
|
+
minBytes: 24
|
|
135
|
+
}
|
|
136
|
+
}]
|
|
137
|
+
};
|
|
138
|
+
//#endregion
|
|
139
|
+
export { burnlinkDefinition };
|
|
140
|
+
|
|
141
|
+
//# sourceMappingURL=burnlink.mjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"burnlink.mjs","names":[],"sources":["../../../src/services/definitions/burnlink.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const burnlinkDefinition: ServiceDefinition = {\n\tid: \"burnlink\",\n\tname: \"BurnLink\",\n\tdescription:\n\t\t\"Privacy-first, zero-knowledge file sharing with end-to-end browser-side AES-256-GCM encryption, one-time downloads, view-once mode, and brute-force protection.\",\n\tcategory: \"storage\",\n\ticon: \"🔥\",\n\n\timage: \"diopisemou/burnlink\",\n\timageTag: \"latest\",\n\tports: [\n\t\t{\n\t\t\thost: 3250,\n\t\t\tcontainer: 3000,\n\t\t\tdescription: \"BurnLink web interface\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"PORT\",\n\t\t\tdefaultValue: \"3000\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Server listen port\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"SUPABASE_URL\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Supabase project URL for metadata storage\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"SUPABASE_SERVICE_ROLE_KEY\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Supabase service role key\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"R2_ACCOUNT_ID\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Cloudflare R2 account ID (or MinIO endpoint for self-hosted)\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"R2_ACCESS_KEY_ID\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"S3-compatible storage access key\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"R2_SECRET_ACCESS_KEY\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"S3-compatible storage secret key\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"R2_BUCKET_NAME\",\n\t\t\tdefaultValue: \"burnlink\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Storage bucket name for encrypted files\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"CANONICAL_BASE_URL\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Public URL for share links (e.g., https://burn.example.com)\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"MAX_UPLOAD_BYTES\",\n\t\t\tdefaultValue: \"1073741824\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Max file upload size in bytes (default 1 GB)\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"NODE_ENV\",\n\t\t\tdefaultValue: \"production\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Node environment (production enables rate limiting)\",\n\t\t\trequired: false,\n\t\t},\n\t],\n\thealthcheck: {\n\t\ttest: \"wget -q --spider http://localhost:3000/ || exit 1\",\n\t\tinterval: \"30s\",\n\t\ttimeout: \"10s\",\n\t\tretries: 3,\n\t\tstartPeriod: \"15s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [],\n\topenclawEnvVars: [\n\t\t{\n\t\t\tkey: \"BURNLINK_HOST\",\n\t\t\tdefaultValue: \"burnlink\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"BurnLink hostname\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"BURNLINK_PORT\",\n\t\t\tdefaultValue: \"3000\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"BurnLink internal port\",\n\t\t\trequired: false,\n\t\t},\n\t],\n\n\tdocsUrl: \"https://github.com/diopisemou/BurnLink\",\n\ttags: [\"file-sharing\", \"encryption\", \"privacy\", \"zero-knowledge\", \"self-destruct\"],\n\tmaturity: \"beta\",\n\n\trequires: [],\n\trecommends: [\"supabase\", \"minio\"],\n\tconflictsWith: [],\n\n\tminMemoryMB: 128,\n\tgpuRequired: false,\n\tcapDropCompatible: true,\n\tproxyPath: \"/burnlink\",\n\tenvQuirks: [\n\t\t{\n\t\t\tkey: \"R2_SECRET_ACCESS_KEY\",\n\t\t\tissue: \"min_length\" as const,\n\t\t\tfix: { type: \"generate_base64url\" as const, minBytes: 24 },\n\t\t},\n\t],\n};\n"],"mappings":";AAEA,MAAa,qBAAwC;CACpD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,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;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,aAAa;EACZ,MAAM;EACN,UAAU;EACV,SAAS;EACT,SAAS;EACT,aAAa;EACb;CACD,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,EAAE;CACV,iBAAiB,CAChB;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,EACD;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,CACD;CAED,SAAS;CACT,MAAM;EAAC;EAAgB;EAAc;EAAW;EAAkB;EAAgB;CAClF,UAAU;CAEV,UAAU,EAAE;CACZ,YAAY,CAAC,YAAY,QAAQ;CACjC,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb,mBAAmB;CACnB,WAAW;CACX,WAAW,CACV;EACC,KAAK;EACL,OAAO;EACP,KAAK;GAAE,MAAM;GAA+B,UAAU;GAAI;EAC1D,CACD;CACD"}
|