@better-openclaw/core 1.0.24 → 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 +725 -0
- package/dist/addon-stack.cjs.map +1 -0
- package/dist/addon-stack.d.cts +23 -0
- package/dist/addon-stack.d.cts.map +1 -0
- package/dist/addon-stack.d.mts +23 -0
- package/dist/addon-stack.d.mts.map +1 -0
- package/dist/addon-stack.mjs +723 -0
- package/dist/addon-stack.mjs.map +1 -0
- package/dist/addon-stack.test.cjs +461 -0
- package/dist/addon-stack.test.cjs.map +1 -0
- package/dist/addon-stack.test.d.cts +1 -0
- package/dist/addon-stack.test.d.mts +1 -0
- package/dist/addon-stack.test.mjs +461 -0
- package/dist/addon-stack.test.mjs.map +1 -0
- package/dist/bare-metal-partition.test.cjs +20 -20
- package/dist/bare-metal-partition.test.cjs.map +1 -1
- package/dist/bare-metal-partition.test.mjs +2 -2
- package/dist/compose-validation.test.cjs +1 -1
- package/dist/composer.cjs +5 -1
- package/dist/composer.cjs.map +1 -1
- package/dist/composer.d.cts +24 -1
- package/dist/composer.d.cts.map +1 -1
- package/dist/composer.d.mts +24 -1
- package/dist/composer.d.mts.map +1 -1
- package/dist/composer.mjs +1 -1
- package/dist/composer.mjs.map +1 -1
- package/dist/composer.snapshot.test.cjs +20 -20
- package/dist/composer.snapshot.test.cjs.map +1 -1
- package/dist/composer.snapshot.test.mjs +2 -2
- package/dist/composer.test.cjs +54 -54
- package/dist/composer.test.cjs.map +1 -1
- package/dist/composer.test.mjs +2 -2
- package/dist/deployers/strip-host-ports.cjs +1 -1
- package/dist/deployers/strip-host-ports.test.cjs +26 -26
- package/dist/deployers/strip-host-ports.test.cjs.map +1 -1
- package/dist/deployers/strip-host-ports.test.mjs +1 -1
- package/dist/generate.cjs +3 -3
- package/dist/generate.mjs +3 -3
- package/dist/generate.test.cjs +56 -56
- package/dist/generate.test.cjs.map +1 -1
- package/dist/generate.test.mjs +1 -1
- package/dist/generators/bare-metal-install.test.cjs +18 -18
- package/dist/generators/bare-metal-install.test.cjs.map +1 -1
- package/dist/generators/bare-metal-install.test.mjs +1 -1
- package/dist/generators/caddy.test.cjs +13 -13
- package/dist/generators/caddy.test.cjs.map +1 -1
- package/dist/generators/caddy.test.mjs +1 -1
- package/dist/generators/clone-repos.test.cjs +27 -27
- package/dist/generators/clone-repos.test.cjs.map +1 -1
- package/dist/generators/clone-repos.test.mjs +1 -1
- package/dist/generators/env.cjs +1 -1
- package/dist/generators/env.test.cjs +17 -17
- package/dist/generators/env.test.cjs.map +1 -1
- package/dist/generators/env.test.mjs +1 -1
- package/dist/generators/health-check.test.cjs +39 -39
- package/dist/generators/health-check.test.cjs.map +1 -1
- package/dist/generators/health-check.test.mjs +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/scripts.test.cjs +39 -39
- package/dist/generators/scripts.test.cjs.map +1 -1
- package/dist/generators/scripts.test.mjs +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/generators/traefik.test.cjs +32 -32
- package/dist/generators/traefik.test.cjs.map +1 -1
- package/dist/generators/traefik.test.mjs +1 -1
- package/dist/index.cjs +21 -5
- package/dist/index.d.cts +5 -4
- package/dist/index.d.mts +5 -4
- package/dist/index.mjs +7 -6
- package/dist/migrations.test.cjs +16 -16
- package/dist/migrations.test.cjs.map +1 -1
- package/dist/migrations.test.mjs +1 -1
- package/dist/presets/presets.test.cjs +1 -1
- package/dist/presets/registry.test.cjs +14 -14
- package/dist/presets/registry.test.cjs.map +1 -1
- package/dist/presets/registry.test.mjs +1 -1
- package/dist/resolver.test.cjs +95 -95
- package/dist/resolver.test.cjs.map +1 -1
- package/dist/resolver.test.mjs +1 -1
- package/dist/{schema-eX44HhRp.d.mts → schema-BQnZrcw8.d.cts} +300 -2
- package/dist/schema-BQnZrcw8.d.cts.map +1 -0
- package/dist/{schema-tn5RK8CM.d.cts → schema-SBpL0bdI.d.mts} +300 -2
- package/dist/schema-SBpL0bdI.d.mts.map +1 -0
- package/dist/schema.cjs +148 -2
- package/dist/schema.cjs.map +1 -1
- package/dist/schema.d.cts +2 -2
- package/dist/schema.d.mts +2 -2
- package/dist/schema.mjs +139 -2
- package/dist/schema.mjs.map +1 -1
- package/dist/schema.test.cjs +86 -86
- package/dist/schema.test.cjs.map +1 -1
- package/dist/schema.test.mjs +1 -1
- package/dist/services/definitions/browserless.cjs +4 -1
- package/dist/services/definitions/browserless.cjs.map +1 -1
- package/dist/services/definitions/browserless.mjs +4 -1
- package/dist/services/definitions/browserless.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/convex.cjs +43 -1
- package/dist/services/definitions/convex.cjs.map +1 -1
- package/dist/services/definitions/convex.mjs +43 -1
- package/dist/services/definitions/convex.mjs.map +1 -1
- package/dist/services/definitions/grafana.cjs +11 -1
- package/dist/services/definitions/grafana.cjs.map +1 -1
- package/dist/services/definitions/grafana.mjs +11 -1
- package/dist/services/definitions/grafana.mjs.map +1 -1
- 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/meilisearch.cjs +11 -1
- package/dist/services/definitions/meilisearch.cjs.map +1 -1
- package/dist/services/definitions/meilisearch.mjs +11 -1
- package/dist/services/definitions/meilisearch.mjs.map +1 -1
- package/dist/services/definitions/minio.cjs +3 -1
- package/dist/services/definitions/minio.cjs.map +1 -1
- package/dist/services/definitions/minio.mjs +3 -1
- package/dist/services/definitions/minio.mjs.map +1 -1
- package/dist/services/definitions/n8n.cjs +11 -1
- package/dist/services/definitions/n8n.cjs.map +1 -1
- package/dist/services/definitions/n8n.mjs +11 -1
- package/dist/services/definitions/n8n.mjs.map +1 -1
- package/dist/services/definitions/ollama.cjs +3 -1
- package/dist/services/definitions/ollama.cjs.map +1 -1
- package/dist/services/definitions/ollama.mjs +3 -1
- package/dist/services/definitions/ollama.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/services/definitions/qdrant.cjs +3 -1
- package/dist/services/definitions/qdrant.cjs.map +1 -1
- package/dist/services/definitions/qdrant.mjs +3 -1
- package/dist/services/definitions/qdrant.mjs.map +1 -1
- package/dist/services/definitions/searxng.cjs +8 -1
- package/dist/services/definitions/searxng.cjs.map +1 -1
- package/dist/services/definitions/searxng.mjs +8 -1
- package/dist/services/definitions/searxng.mjs.map +1 -1
- package/dist/services/definitions/uptime-kuma.cjs +8 -1
- package/dist/services/definitions/uptime-kuma.cjs.map +1 -1
- package/dist/services/definitions/uptime-kuma.mjs +8 -1
- package/dist/services/definitions/uptime-kuma.mjs.map +1 -1
- package/dist/services/registry.test.cjs +36 -36
- package/dist/services/registry.test.cjs.map +1 -1
- package/dist/services/registry.test.mjs +1 -1
- package/dist/{skills-BlzpHmpH.cjs → skills-BSF7iNa4.cjs} +142 -1
- package/dist/{skills-BlzpHmpH.cjs.map → skills-BSF7iNa4.cjs.map} +1 -1
- package/dist/{vi.2VT5v0um-C_jmO7m2.mjs → test.CTcmp4Su-ClCHJ3FA.mjs} +6793 -6403
- package/dist/test.CTcmp4Su-ClCHJ3FA.mjs.map +1 -0
- package/dist/{vi.2VT5v0um-iVBt6Fyq.cjs → test.CTcmp4Su-DlzTarwH.cjs} +6793 -6403
- package/dist/test.CTcmp4Su-DlzTarwH.cjs.map +1 -0
- package/dist/track-analytics.test.cjs +28 -28
- package/dist/track-analytics.test.cjs.map +1 -1
- package/dist/track-analytics.test.mjs +1 -1
- package/dist/types.cjs.map +1 -1
- package/dist/types.d.cts +10 -2
- package/dist/types.d.cts.map +1 -1
- package/dist/types.d.mts +10 -2
- package/dist/types.d.mts.map +1 -1
- package/dist/types.mjs.map +1 -1
- package/dist/validator.cjs +1 -1
- package/dist/validator.test.cjs +15 -15
- package/dist/validator.test.cjs.map +1 -1
- package/dist/validator.test.mjs +2 -2
- package/dist/version-manager.test.cjs +37 -37
- package/dist/version-manager.test.cjs.map +1 -1
- package/dist/version-manager.test.mjs +1 -1
- package/package.json +4 -4
- package/src/__snapshots__/composer.snapshot.test.ts.snap +5 -0
- package/src/addon-stack.test.ts +648 -0
- package/src/addon-stack.ts +1046 -0
- package/src/composer.ts +4 -4
- package/src/generators/postgres-init.ts +2 -0
- package/src/generators/skills.ts +142 -0
- package/src/index.ts +20 -2
- package/src/schema.ts +190 -0
- package/src/services/definitions/browserless.ts +3 -0
- package/src/services/definitions/burnlink.ts +142 -0
- package/src/services/definitions/convex.ts +31 -0
- package/src/services/definitions/grafana.ts +9 -0
- package/src/services/definitions/hindsight.ts +131 -0
- package/src/services/definitions/index.ts +10 -0
- package/src/services/definitions/meilisearch.ts +9 -0
- package/src/services/definitions/minio.ts +2 -0
- package/src/services/definitions/n8n.ts +9 -0
- package/src/services/definitions/ollama.ts +2 -0
- package/src/services/definitions/opensandbox.ts +156 -0
- package/src/services/definitions/qdrant.ts +2 -0
- package/src/services/definitions/searxng.ts +3 -0
- package/src/services/definitions/uptime-kuma.ts +3 -0
- package/src/types.ts +18 -0
- package/dist/schema-eX44HhRp.d.mts.map +0 -1
- package/dist/schema-tn5RK8CM.d.cts.map +0 -1
- package/dist/vi.2VT5v0um-C_jmO7m2.mjs.map +0 -1
- package/dist/vi.2VT5v0um-iVBt6Fyq.cjs.map +0 -1
|
@@ -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"}
|
|
@@ -80,6 +80,13 @@ const convexDefinition = {
|
|
|
80
80
|
secret: true,
|
|
81
81
|
description: "Admin key for CLI access. Generate with: docker compose exec convex ./generate_admin_key.sh",
|
|
82
82
|
required: false
|
|
83
|
+
},
|
|
84
|
+
{
|
|
85
|
+
key: "CONVEX_INSTANCE_SECRET",
|
|
86
|
+
defaultValue: "${INSTANCE_SECRET}",
|
|
87
|
+
secret: true,
|
|
88
|
+
description: "Convex instance secret used by Mission Control (synced with INSTANCE_SECRET)",
|
|
89
|
+
required: false
|
|
83
90
|
}
|
|
84
91
|
],
|
|
85
92
|
healthcheck: {
|
|
@@ -111,7 +118,42 @@ const convexDefinition = {
|
|
|
111
118
|
mandatory: true,
|
|
112
119
|
removalWarning: "Convex is the backend for Mission Control. Without it, Mission Control will not be able to store or retrieve any data and will be completely non-functional.",
|
|
113
120
|
minMemoryMB: 256,
|
|
114
|
-
gpuRequired: false
|
|
121
|
+
gpuRequired: false,
|
|
122
|
+
capDropCompatible: false,
|
|
123
|
+
envQuirks: [
|
|
124
|
+
{
|
|
125
|
+
key: "DISABLE_BEACON",
|
|
126
|
+
issue: "empty_string_crashes",
|
|
127
|
+
fix: {
|
|
128
|
+
type: "set_value",
|
|
129
|
+
value: "true"
|
|
130
|
+
}
|
|
131
|
+
},
|
|
132
|
+
{
|
|
133
|
+
key: "INSTANCE_SECRET",
|
|
134
|
+
issue: "min_length",
|
|
135
|
+
fix: {
|
|
136
|
+
type: "generate_hex",
|
|
137
|
+
minBytes: 32
|
|
138
|
+
}
|
|
139
|
+
},
|
|
140
|
+
{
|
|
141
|
+
key: "CONVEX_SELF_HOSTED_ADMIN_KEY",
|
|
142
|
+
issue: "min_length",
|
|
143
|
+
fix: {
|
|
144
|
+
type: "generate_hex",
|
|
145
|
+
minBytes: 32
|
|
146
|
+
}
|
|
147
|
+
},
|
|
148
|
+
{
|
|
149
|
+
key: "INSTANCE_SECRET",
|
|
150
|
+
issue: "must_sync",
|
|
151
|
+
fix: {
|
|
152
|
+
type: "sync_with",
|
|
153
|
+
syncKey: "CONVEX_INSTANCE_SECRET"
|
|
154
|
+
}
|
|
155
|
+
}
|
|
156
|
+
]
|
|
115
157
|
};
|
|
116
158
|
//#endregion
|
|
117
159
|
exports.convexDefinition = convexDefinition;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convex.cjs","names":[],"sources":["../../../src/services/definitions/convex.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const convexDefinition: ServiceDefinition = {\n\tid: \"convex\",\n\tname: \"Convex\",\n\tdescription:\n\t\t\"Self-hosted Convex reactive backend. Real-time database, server functions, and file storage in a single service. Required by Mission Control.\",\n\tcategory: \"database\",\n\ticon: \"⚡\",\n\n\timage: \"ghcr.io/get-convex/convex-backend\",\n\timageTag: \"latest\",\n\tports: [\n\t\t{\n\t\t\thost: 3210,\n\t\t\tcontainer: 3210,\n\t\t\tdescription: \"Convex API (client connections & CLI)\",\n\t\t\texposed: true,\n\t\t},\n\t\t{\n\t\t\thost: 3211,\n\t\t\tcontainer: 3211,\n\t\t\tdescription: \"Convex HTTP actions / site proxy\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"convex-data\",\n\t\t\tcontainerPath: \"/convex/data\",\n\t\t\tdescription: \"Convex data directory (SQLite by default)\",\n\t\t},\n\t],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"CONVEX_CLOUD_ORIGIN\",\n\t\t\tdefaultValue: \"http://127.0.0.1:3210\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Public URL for the Convex API endpoint\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"CONVEX_SITE_ORIGIN\",\n\t\t\tdefaultValue: \"http://127.0.0.1:3211\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Public URL for Convex HTTP actions\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"INSTANCE_NAME\",\n\t\t\tdefaultValue: \"openclaw-convex\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Instance name for this Convex deployment\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"INSTANCE_SECRET\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Instance secret (generate a random value for production)\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"DATABASE_URL\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Optional Postgres connection string for production (leave empty to use SQLite)\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"RUST_LOG\",\n\t\t\tdefaultValue: \"info\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Log level for the Convex backend (debug, info, warn, error)\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"DISABLE_BEACON\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Set to any value to disable anonymous usage telemetry\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"CONVEX_SELF_HOSTED_ADMIN_KEY\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription:\n\t\t\t\t\"Admin key for CLI access. Generate with: docker compose exec convex ./generate_admin_key.sh\",\n\t\t\trequired: false,\n\t\t},\n\t],\n\thealthcheck: {\n\t\ttest: \"curl -f http://localhost:3210/version\",\n\t\tinterval: \"5s\",\n\t\ttimeout: \"5s\",\n\t\tretries: 5,\n\t\tstartPeriod: \"10s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [],\n\topenclawEnvVars: [],\n\n\tdocsUrl: \"https://github.com/get-convex/convex-backend\",\n\tselfHostedDocsUrl: \"https://github.com/get-convex/convex-backend/blob/main/self-hosted/README.md\",\n\ttags: [\"convex\", \"database\", \"reactive\", \"real-time\", \"backend\", \"self-hosted\"],\n\tmaturity: \"stable\",\n\n\trequires: [],\n\trecommends: [\"convex-dashboard\"],\n\tconflictsWith: [],\n\tmandatory: true,\n\tremovalWarning:\n\t\t\"Convex is the backend for Mission Control. Without it, Mission Control will not be able to store or retrieve any data and will be completely non-functional.\",\n\n\tminMemoryMB: 256,\n\tgpuRequired: false,\n};\n"],"mappings":";;AAEA,MAAa,mBAAsC;CAClD,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,EACD;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,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,aACC;GACD,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,EAAE;CAEnB,SAAS;CACT,mBAAmB;CACnB,MAAM;EAAC;EAAU;EAAY;EAAY;EAAa;EAAW;EAAc;CAC/E,UAAU;CAEV,UAAU,EAAE;CACZ,YAAY,CAAC,mBAAmB;CAChC,eAAe,EAAE;CACjB,WAAW;CACX,gBACC;CAED,aAAa;CACb,aAAa;CACb"}
|
|
1
|
+
{"version":3,"file":"convex.cjs","names":[],"sources":["../../../src/services/definitions/convex.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const convexDefinition: ServiceDefinition = {\n\tid: \"convex\",\n\tname: \"Convex\",\n\tdescription:\n\t\t\"Self-hosted Convex reactive backend. Real-time database, server functions, and file storage in a single service. Required by Mission Control.\",\n\tcategory: \"database\",\n\ticon: \"⚡\",\n\n\timage: \"ghcr.io/get-convex/convex-backend\",\n\timageTag: \"latest\",\n\tports: [\n\t\t{\n\t\t\thost: 3210,\n\t\t\tcontainer: 3210,\n\t\t\tdescription: \"Convex API (client connections & CLI)\",\n\t\t\texposed: true,\n\t\t},\n\t\t{\n\t\t\thost: 3211,\n\t\t\tcontainer: 3211,\n\t\t\tdescription: \"Convex HTTP actions / site proxy\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"convex-data\",\n\t\t\tcontainerPath: \"/convex/data\",\n\t\t\tdescription: \"Convex data directory (SQLite by default)\",\n\t\t},\n\t],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"CONVEX_CLOUD_ORIGIN\",\n\t\t\tdefaultValue: \"http://127.0.0.1:3210\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Public URL for the Convex API endpoint\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"CONVEX_SITE_ORIGIN\",\n\t\t\tdefaultValue: \"http://127.0.0.1:3211\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Public URL for Convex HTTP actions\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"INSTANCE_NAME\",\n\t\t\tdefaultValue: \"openclaw-convex\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Instance name for this Convex deployment\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"INSTANCE_SECRET\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Instance secret (generate a random value for production)\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"DATABASE_URL\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Optional Postgres connection string for production (leave empty to use SQLite)\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"RUST_LOG\",\n\t\t\tdefaultValue: \"info\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Log level for the Convex backend (debug, info, warn, error)\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"DISABLE_BEACON\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Set to any value to disable anonymous usage telemetry\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"CONVEX_SELF_HOSTED_ADMIN_KEY\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription:\n\t\t\t\t\"Admin key for CLI access. Generate with: docker compose exec convex ./generate_admin_key.sh\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"CONVEX_INSTANCE_SECRET\",\n\t\t\tdefaultValue: \"${INSTANCE_SECRET}\",\n\t\t\tsecret: true,\n\t\t\tdescription:\n\t\t\t\t\"Convex instance secret used by Mission Control (synced with INSTANCE_SECRET)\",\n\t\t\trequired: false,\n\t\t},\n\t],\n\thealthcheck: {\n\t\ttest: \"curl -f http://localhost:3210/version\",\n\t\tinterval: \"5s\",\n\t\ttimeout: \"5s\",\n\t\tretries: 5,\n\t\tstartPeriod: \"10s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [],\n\topenclawEnvVars: [],\n\n\tdocsUrl: \"https://github.com/get-convex/convex-backend\",\n\tselfHostedDocsUrl: \"https://github.com/get-convex/convex-backend/blob/main/self-hosted/README.md\",\n\ttags: [\"convex\", \"database\", \"reactive\", \"real-time\", \"backend\", \"self-hosted\"],\n\tmaturity: \"stable\",\n\n\trequires: [],\n\trecommends: [\"convex-dashboard\"],\n\tconflictsWith: [],\n\tmandatory: true,\n\tremovalWarning:\n\t\t\"Convex is the backend for Mission Control. Without it, Mission Control will not be able to store or retrieve any data and will be completely non-functional.\",\n\n\tminMemoryMB: 256,\n\tgpuRequired: false,\n\tcapDropCompatible: false,\n\tenvQuirks: [\n\t\t{\n\t\t\tkey: \"DISABLE_BEACON\",\n\t\t\tissue: \"empty_string_crashes\" as const,\n\t\t\tfix: { type: \"set_value\" as const, value: \"true\" },\n\t\t},\n\t\t{\n\t\t\tkey: \"INSTANCE_SECRET\",\n\t\t\tissue: \"min_length\" as const,\n\t\t\tfix: { type: \"generate_hex\" as const, minBytes: 32 },\n\t\t},\n\t\t{\n\t\t\tkey: \"CONVEX_SELF_HOSTED_ADMIN_KEY\",\n\t\t\tissue: \"min_length\" as const,\n\t\t\tfix: { type: \"generate_hex\" as const, minBytes: 32 },\n\t\t},\n\t\t{\n\t\t\tkey: \"INSTANCE_SECRET\",\n\t\t\tissue: \"must_sync\" as const,\n\t\t\tfix: { type: \"sync_with\" as const, syncKey: \"CONVEX_INSTANCE_SECRET\" },\n\t\t},\n\t],\n};\n"],"mappings":";;AAEA,MAAa,mBAAsC;CAClD,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,EACD;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,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,aACC;GACD,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aACC;GACD,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,EAAE;CAEnB,SAAS;CACT,mBAAmB;CACnB,MAAM;EAAC;EAAU;EAAY;EAAY;EAAa;EAAW;EAAc;CAC/E,UAAU;CAEV,UAAU,EAAE;CACZ,YAAY,CAAC,mBAAmB;CAChC,eAAe,EAAE;CACjB,WAAW;CACX,gBACC;CAED,aAAa;CACb,aAAa;CACb,mBAAmB;CACnB,WAAW;EACV;GACC,KAAK;GACL,OAAO;GACP,KAAK;IAAE,MAAM;IAAsB,OAAO;IAAQ;GAClD;EACD;GACC,KAAK;GACL,OAAO;GACP,KAAK;IAAE,MAAM;IAAyB,UAAU;IAAI;GACpD;EACD;GACC,KAAK;GACL,OAAO;GACP,KAAK;IAAE,MAAM;IAAyB,UAAU;IAAI;GACpD;EACD;GACC,KAAK;GACL,OAAO;GACP,KAAK;IAAE,MAAM;IAAsB,SAAS;IAA0B;GACtE;EACD;CACD"}
|
|
@@ -79,6 +79,13 @@ const convexDefinition = {
|
|
|
79
79
|
secret: true,
|
|
80
80
|
description: "Admin key for CLI access. Generate with: docker compose exec convex ./generate_admin_key.sh",
|
|
81
81
|
required: false
|
|
82
|
+
},
|
|
83
|
+
{
|
|
84
|
+
key: "CONVEX_INSTANCE_SECRET",
|
|
85
|
+
defaultValue: "${INSTANCE_SECRET}",
|
|
86
|
+
secret: true,
|
|
87
|
+
description: "Convex instance secret used by Mission Control (synced with INSTANCE_SECRET)",
|
|
88
|
+
required: false
|
|
82
89
|
}
|
|
83
90
|
],
|
|
84
91
|
healthcheck: {
|
|
@@ -110,7 +117,42 @@ const convexDefinition = {
|
|
|
110
117
|
mandatory: true,
|
|
111
118
|
removalWarning: "Convex is the backend for Mission Control. Without it, Mission Control will not be able to store or retrieve any data and will be completely non-functional.",
|
|
112
119
|
minMemoryMB: 256,
|
|
113
|
-
gpuRequired: false
|
|
120
|
+
gpuRequired: false,
|
|
121
|
+
capDropCompatible: false,
|
|
122
|
+
envQuirks: [
|
|
123
|
+
{
|
|
124
|
+
key: "DISABLE_BEACON",
|
|
125
|
+
issue: "empty_string_crashes",
|
|
126
|
+
fix: {
|
|
127
|
+
type: "set_value",
|
|
128
|
+
value: "true"
|
|
129
|
+
}
|
|
130
|
+
},
|
|
131
|
+
{
|
|
132
|
+
key: "INSTANCE_SECRET",
|
|
133
|
+
issue: "min_length",
|
|
134
|
+
fix: {
|
|
135
|
+
type: "generate_hex",
|
|
136
|
+
minBytes: 32
|
|
137
|
+
}
|
|
138
|
+
},
|
|
139
|
+
{
|
|
140
|
+
key: "CONVEX_SELF_HOSTED_ADMIN_KEY",
|
|
141
|
+
issue: "min_length",
|
|
142
|
+
fix: {
|
|
143
|
+
type: "generate_hex",
|
|
144
|
+
minBytes: 32
|
|
145
|
+
}
|
|
146
|
+
},
|
|
147
|
+
{
|
|
148
|
+
key: "INSTANCE_SECRET",
|
|
149
|
+
issue: "must_sync",
|
|
150
|
+
fix: {
|
|
151
|
+
type: "sync_with",
|
|
152
|
+
syncKey: "CONVEX_INSTANCE_SECRET"
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
]
|
|
114
156
|
};
|
|
115
157
|
//#endregion
|
|
116
158
|
export { convexDefinition };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"convex.mjs","names":[],"sources":["../../../src/services/definitions/convex.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const convexDefinition: ServiceDefinition = {\n\tid: \"convex\",\n\tname: \"Convex\",\n\tdescription:\n\t\t\"Self-hosted Convex reactive backend. Real-time database, server functions, and file storage in a single service. Required by Mission Control.\",\n\tcategory: \"database\",\n\ticon: \"⚡\",\n\n\timage: \"ghcr.io/get-convex/convex-backend\",\n\timageTag: \"latest\",\n\tports: [\n\t\t{\n\t\t\thost: 3210,\n\t\t\tcontainer: 3210,\n\t\t\tdescription: \"Convex API (client connections & CLI)\",\n\t\t\texposed: true,\n\t\t},\n\t\t{\n\t\t\thost: 3211,\n\t\t\tcontainer: 3211,\n\t\t\tdescription: \"Convex HTTP actions / site proxy\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"convex-data\",\n\t\t\tcontainerPath: \"/convex/data\",\n\t\t\tdescription: \"Convex data directory (SQLite by default)\",\n\t\t},\n\t],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"CONVEX_CLOUD_ORIGIN\",\n\t\t\tdefaultValue: \"http://127.0.0.1:3210\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Public URL for the Convex API endpoint\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"CONVEX_SITE_ORIGIN\",\n\t\t\tdefaultValue: \"http://127.0.0.1:3211\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Public URL for Convex HTTP actions\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"INSTANCE_NAME\",\n\t\t\tdefaultValue: \"openclaw-convex\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Instance name for this Convex deployment\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"INSTANCE_SECRET\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Instance secret (generate a random value for production)\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"DATABASE_URL\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Optional Postgres connection string for production (leave empty to use SQLite)\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"RUST_LOG\",\n\t\t\tdefaultValue: \"info\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Log level for the Convex backend (debug, info, warn, error)\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"DISABLE_BEACON\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Set to any value to disable anonymous usage telemetry\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"CONVEX_SELF_HOSTED_ADMIN_KEY\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription:\n\t\t\t\t\"Admin key for CLI access. Generate with: docker compose exec convex ./generate_admin_key.sh\",\n\t\t\trequired: false,\n\t\t},\n\t],\n\thealthcheck: {\n\t\ttest: \"curl -f http://localhost:3210/version\",\n\t\tinterval: \"5s\",\n\t\ttimeout: \"5s\",\n\t\tretries: 5,\n\t\tstartPeriod: \"10s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [],\n\topenclawEnvVars: [],\n\n\tdocsUrl: \"https://github.com/get-convex/convex-backend\",\n\tselfHostedDocsUrl: \"https://github.com/get-convex/convex-backend/blob/main/self-hosted/README.md\",\n\ttags: [\"convex\", \"database\", \"reactive\", \"real-time\", \"backend\", \"self-hosted\"],\n\tmaturity: \"stable\",\n\n\trequires: [],\n\trecommends: [\"convex-dashboard\"],\n\tconflictsWith: [],\n\tmandatory: true,\n\tremovalWarning:\n\t\t\"Convex is the backend for Mission Control. Without it, Mission Control will not be able to store or retrieve any data and will be completely non-functional.\",\n\n\tminMemoryMB: 256,\n\tgpuRequired: false,\n};\n"],"mappings":";AAEA,MAAa,mBAAsC;CAClD,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,EACD;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,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,aACC;GACD,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,EAAE;CAEnB,SAAS;CACT,mBAAmB;CACnB,MAAM;EAAC;EAAU;EAAY;EAAY;EAAa;EAAW;EAAc;CAC/E,UAAU;CAEV,UAAU,EAAE;CACZ,YAAY,CAAC,mBAAmB;CAChC,eAAe,EAAE;CACjB,WAAW;CACX,gBACC;CAED,aAAa;CACb,aAAa;CACb"}
|
|
1
|
+
{"version":3,"file":"convex.mjs","names":[],"sources":["../../../src/services/definitions/convex.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const convexDefinition: ServiceDefinition = {\n\tid: \"convex\",\n\tname: \"Convex\",\n\tdescription:\n\t\t\"Self-hosted Convex reactive backend. Real-time database, server functions, and file storage in a single service. Required by Mission Control.\",\n\tcategory: \"database\",\n\ticon: \"⚡\",\n\n\timage: \"ghcr.io/get-convex/convex-backend\",\n\timageTag: \"latest\",\n\tports: [\n\t\t{\n\t\t\thost: 3210,\n\t\t\tcontainer: 3210,\n\t\t\tdescription: \"Convex API (client connections & CLI)\",\n\t\t\texposed: true,\n\t\t},\n\t\t{\n\t\t\thost: 3211,\n\t\t\tcontainer: 3211,\n\t\t\tdescription: \"Convex HTTP actions / site proxy\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"convex-data\",\n\t\t\tcontainerPath: \"/convex/data\",\n\t\t\tdescription: \"Convex data directory (SQLite by default)\",\n\t\t},\n\t],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"CONVEX_CLOUD_ORIGIN\",\n\t\t\tdefaultValue: \"http://127.0.0.1:3210\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Public URL for the Convex API endpoint\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"CONVEX_SITE_ORIGIN\",\n\t\t\tdefaultValue: \"http://127.0.0.1:3211\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Public URL for Convex HTTP actions\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"INSTANCE_NAME\",\n\t\t\tdefaultValue: \"openclaw-convex\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Instance name for this Convex deployment\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"INSTANCE_SECRET\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Instance secret (generate a random value for production)\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"DATABASE_URL\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Optional Postgres connection string for production (leave empty to use SQLite)\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"RUST_LOG\",\n\t\t\tdefaultValue: \"info\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Log level for the Convex backend (debug, info, warn, error)\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"DISABLE_BEACON\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Set to any value to disable anonymous usage telemetry\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"CONVEX_SELF_HOSTED_ADMIN_KEY\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription:\n\t\t\t\t\"Admin key for CLI access. Generate with: docker compose exec convex ./generate_admin_key.sh\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"CONVEX_INSTANCE_SECRET\",\n\t\t\tdefaultValue: \"${INSTANCE_SECRET}\",\n\t\t\tsecret: true,\n\t\t\tdescription:\n\t\t\t\t\"Convex instance secret used by Mission Control (synced with INSTANCE_SECRET)\",\n\t\t\trequired: false,\n\t\t},\n\t],\n\thealthcheck: {\n\t\ttest: \"curl -f http://localhost:3210/version\",\n\t\tinterval: \"5s\",\n\t\ttimeout: \"5s\",\n\t\tretries: 5,\n\t\tstartPeriod: \"10s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [],\n\topenclawEnvVars: [],\n\n\tdocsUrl: \"https://github.com/get-convex/convex-backend\",\n\tselfHostedDocsUrl: \"https://github.com/get-convex/convex-backend/blob/main/self-hosted/README.md\",\n\ttags: [\"convex\", \"database\", \"reactive\", \"real-time\", \"backend\", \"self-hosted\"],\n\tmaturity: \"stable\",\n\n\trequires: [],\n\trecommends: [\"convex-dashboard\"],\n\tconflictsWith: [],\n\tmandatory: true,\n\tremovalWarning:\n\t\t\"Convex is the backend for Mission Control. Without it, Mission Control will not be able to store or retrieve any data and will be completely non-functional.\",\n\n\tminMemoryMB: 256,\n\tgpuRequired: false,\n\tcapDropCompatible: false,\n\tenvQuirks: [\n\t\t{\n\t\t\tkey: \"DISABLE_BEACON\",\n\t\t\tissue: \"empty_string_crashes\" as const,\n\t\t\tfix: { type: \"set_value\" as const, value: \"true\" },\n\t\t},\n\t\t{\n\t\t\tkey: \"INSTANCE_SECRET\",\n\t\t\tissue: \"min_length\" as const,\n\t\t\tfix: { type: \"generate_hex\" as const, minBytes: 32 },\n\t\t},\n\t\t{\n\t\t\tkey: \"CONVEX_SELF_HOSTED_ADMIN_KEY\",\n\t\t\tissue: \"min_length\" as const,\n\t\t\tfix: { type: \"generate_hex\" as const, minBytes: 32 },\n\t\t},\n\t\t{\n\t\t\tkey: \"INSTANCE_SECRET\",\n\t\t\tissue: \"must_sync\" as const,\n\t\t\tfix: { type: \"sync_with\" as const, syncKey: \"CONVEX_INSTANCE_SECRET\" },\n\t\t},\n\t],\n};\n"],"mappings":";AAEA,MAAa,mBAAsC;CAClD,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,EACD;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,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,aACC;GACD,UAAU;GACV;EACD;GACC,KAAK;GACL,cAAc;GACd,QAAQ;GACR,aACC;GACD,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,EAAE;CAEnB,SAAS;CACT,mBAAmB;CACnB,MAAM;EAAC;EAAU;EAAY;EAAY;EAAa;EAAW;EAAc;CAC/E,UAAU;CAEV,UAAU,EAAE;CACZ,YAAY,CAAC,mBAAmB;CAChC,eAAe,EAAE;CACjB,WAAW;CACX,gBACC;CAED,aAAa;CACb,aAAa;CACb,mBAAmB;CACnB,WAAW;EACV;GACC,KAAK;GACL,OAAO;GACP,KAAK;IAAE,MAAM;IAAsB,OAAO;IAAQ;GAClD;EACD;GACC,KAAK;GACL,OAAO;GACP,KAAK;IAAE,MAAM;IAAyB,UAAU;IAAI;GACpD;EACD;GACC,KAAK;GACL,OAAO;GACP,KAAK;IAAE,MAAM;IAAyB,UAAU;IAAI;GACpD;EACD;GACC,KAAK;GACL,OAAO;GACP,KAAK;IAAE,MAAM;IAAsB,SAAS;IAA0B;GACtE;EACD;CACD"}
|
|
@@ -68,7 +68,17 @@ const grafanaDefinition = {
|
|
|
68
68
|
recommends: [],
|
|
69
69
|
conflictsWith: [],
|
|
70
70
|
minMemoryMB: 256,
|
|
71
|
-
gpuRequired: false
|
|
71
|
+
gpuRequired: false,
|
|
72
|
+
capDropCompatible: true,
|
|
73
|
+
proxyPath: "/grafana",
|
|
74
|
+
envQuirks: [{
|
|
75
|
+
key: "GF_SECURITY_ADMIN_PASSWORD",
|
|
76
|
+
issue: "min_length",
|
|
77
|
+
fix: {
|
|
78
|
+
type: "generate_base64url",
|
|
79
|
+
minBytes: 16
|
|
80
|
+
}
|
|
81
|
+
}]
|
|
72
82
|
};
|
|
73
83
|
//#endregion
|
|
74
84
|
exports.grafanaDefinition = grafanaDefinition;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grafana.cjs","names":[],"sources":["../../../src/services/definitions/grafana.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const grafanaDefinition: ServiceDefinition = {\n\tid: \"grafana\",\n\tname: \"Grafana\",\n\tdescription:\n\t\t\"Open-source analytics and interactive visualization platform for metrics, logs, and traces with rich dashboards and alerting.\",\n\tcategory: \"monitoring\",\n\ticon: \"📊\",\n\n\timage: \"grafana/grafana\",\n\timageTag: \"12.4.0\",\n\tports: [\n\t\t{\n\t\t\thost: 3150,\n\t\t\tcontainer: 3000,\n\t\t\tdescription: \"Grafana web interface\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"grafana-data\",\n\t\t\tcontainerPath: \"/var/lib/grafana\",\n\t\t\tdescription: \"Persistent Grafana dashboards, plugins, and data\",\n\t\t},\n\t],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"GF_SECURITY_ADMIN_USER\",\n\t\t\tdefaultValue: \"admin\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Grafana admin username\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"GF_SECURITY_ADMIN_PASSWORD\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Grafana admin password\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\thealthcheck: {\n\t\ttest: \"curl -sf http://localhost:3000/api/health || 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: \"GRAFANA_HOST\",\n\t\t\tdefaultValue: \"grafana\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Grafana hostname\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"GRAFANA_PORT\",\n\t\t\tdefaultValue: \"3000\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Grafana internal port\",\n\t\t\trequired: false,\n\t\t},\n\t],\n\n\tdocsUrl: \"https://grafana.com/docs/grafana/latest/\",\n\ttags: [\"dashboards\", \"visualization\", \"metrics\", \"monitoring\"],\n\tmaturity: \"stable\",\n\n\trequires: [\"prometheus\"],\n\trecommends: [],\n\tconflictsWith: [],\n\n\tminMemoryMB: 256,\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,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,aAAa,CACZ;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,EACD;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,CACD;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;EAAc;EAAiB;EAAW;EAAa;CAC9D,UAAU;CAEV,UAAU,CAAC,aAAa;CACxB,YAAY,EAAE;CACd,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb"}
|
|
1
|
+
{"version":3,"file":"grafana.cjs","names":[],"sources":["../../../src/services/definitions/grafana.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const grafanaDefinition: ServiceDefinition = {\n\tid: \"grafana\",\n\tname: \"Grafana\",\n\tdescription:\n\t\t\"Open-source analytics and interactive visualization platform for metrics, logs, and traces with rich dashboards and alerting.\",\n\tcategory: \"monitoring\",\n\ticon: \"📊\",\n\n\timage: \"grafana/grafana\",\n\timageTag: \"12.4.0\",\n\tports: [\n\t\t{\n\t\t\thost: 3150,\n\t\t\tcontainer: 3000,\n\t\t\tdescription: \"Grafana web interface\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"grafana-data\",\n\t\t\tcontainerPath: \"/var/lib/grafana\",\n\t\t\tdescription: \"Persistent Grafana dashboards, plugins, and data\",\n\t\t},\n\t],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"GF_SECURITY_ADMIN_USER\",\n\t\t\tdefaultValue: \"admin\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Grafana admin username\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"GF_SECURITY_ADMIN_PASSWORD\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Grafana admin password\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\thealthcheck: {\n\t\ttest: \"curl -sf http://localhost:3000/api/health || 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: \"GRAFANA_HOST\",\n\t\t\tdefaultValue: \"grafana\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Grafana hostname\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"GRAFANA_PORT\",\n\t\t\tdefaultValue: \"3000\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Grafana internal port\",\n\t\t\trequired: false,\n\t\t},\n\t],\n\n\tdocsUrl: \"https://grafana.com/docs/grafana/latest/\",\n\ttags: [\"dashboards\", \"visualization\", \"metrics\", \"monitoring\"],\n\tmaturity: \"stable\",\n\n\trequires: [\"prometheus\"],\n\trecommends: [],\n\tconflictsWith: [],\n\n\tminMemoryMB: 256,\n\tgpuRequired: false,\n\tcapDropCompatible: true,\n\tproxyPath: \"/grafana\",\n\tenvQuirks: [\n\t\t{\n\t\t\tkey: \"GF_SECURITY_ADMIN_PASSWORD\",\n\t\t\tissue: \"min_length\" as const,\n\t\t\tfix: { type: \"generate_base64url\" as const, minBytes: 16 },\n\t\t},\n\t],\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,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,aAAa,CACZ;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,EACD;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,CACD;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;EAAc;EAAiB;EAAW;EAAa;CAC9D,UAAU;CAEV,UAAU,CAAC,aAAa;CACxB,YAAY,EAAE;CACd,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"}
|
|
@@ -67,7 +67,17 @@ const grafanaDefinition = {
|
|
|
67
67
|
recommends: [],
|
|
68
68
|
conflictsWith: [],
|
|
69
69
|
minMemoryMB: 256,
|
|
70
|
-
gpuRequired: false
|
|
70
|
+
gpuRequired: false,
|
|
71
|
+
capDropCompatible: true,
|
|
72
|
+
proxyPath: "/grafana",
|
|
73
|
+
envQuirks: [{
|
|
74
|
+
key: "GF_SECURITY_ADMIN_PASSWORD",
|
|
75
|
+
issue: "min_length",
|
|
76
|
+
fix: {
|
|
77
|
+
type: "generate_base64url",
|
|
78
|
+
minBytes: 16
|
|
79
|
+
}
|
|
80
|
+
}]
|
|
71
81
|
};
|
|
72
82
|
//#endregion
|
|
73
83
|
export { grafanaDefinition };
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"grafana.mjs","names":[],"sources":["../../../src/services/definitions/grafana.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const grafanaDefinition: ServiceDefinition = {\n\tid: \"grafana\",\n\tname: \"Grafana\",\n\tdescription:\n\t\t\"Open-source analytics and interactive visualization platform for metrics, logs, and traces with rich dashboards and alerting.\",\n\tcategory: \"monitoring\",\n\ticon: \"📊\",\n\n\timage: \"grafana/grafana\",\n\timageTag: \"12.4.0\",\n\tports: [\n\t\t{\n\t\t\thost: 3150,\n\t\t\tcontainer: 3000,\n\t\t\tdescription: \"Grafana web interface\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"grafana-data\",\n\t\t\tcontainerPath: \"/var/lib/grafana\",\n\t\t\tdescription: \"Persistent Grafana dashboards, plugins, and data\",\n\t\t},\n\t],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"GF_SECURITY_ADMIN_USER\",\n\t\t\tdefaultValue: \"admin\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Grafana admin username\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"GF_SECURITY_ADMIN_PASSWORD\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Grafana admin password\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\thealthcheck: {\n\t\ttest: \"curl -sf http://localhost:3000/api/health || 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: \"GRAFANA_HOST\",\n\t\t\tdefaultValue: \"grafana\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Grafana hostname\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"GRAFANA_PORT\",\n\t\t\tdefaultValue: \"3000\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Grafana internal port\",\n\t\t\trequired: false,\n\t\t},\n\t],\n\n\tdocsUrl: \"https://grafana.com/docs/grafana/latest/\",\n\ttags: [\"dashboards\", \"visualization\", \"metrics\", \"monitoring\"],\n\tmaturity: \"stable\",\n\n\trequires: [\"prometheus\"],\n\trecommends: [],\n\tconflictsWith: [],\n\n\tminMemoryMB: 256,\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,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,aAAa,CACZ;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,EACD;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,CACD;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;EAAc;EAAiB;EAAW;EAAa;CAC9D,UAAU;CAEV,UAAU,CAAC,aAAa;CACxB,YAAY,EAAE;CACd,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb"}
|
|
1
|
+
{"version":3,"file":"grafana.mjs","names":[],"sources":["../../../src/services/definitions/grafana.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const grafanaDefinition: ServiceDefinition = {\n\tid: \"grafana\",\n\tname: \"Grafana\",\n\tdescription:\n\t\t\"Open-source analytics and interactive visualization platform for metrics, logs, and traces with rich dashboards and alerting.\",\n\tcategory: \"monitoring\",\n\ticon: \"📊\",\n\n\timage: \"grafana/grafana\",\n\timageTag: \"12.4.0\",\n\tports: [\n\t\t{\n\t\t\thost: 3150,\n\t\t\tcontainer: 3000,\n\t\t\tdescription: \"Grafana web interface\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"grafana-data\",\n\t\t\tcontainerPath: \"/var/lib/grafana\",\n\t\t\tdescription: \"Persistent Grafana dashboards, plugins, and data\",\n\t\t},\n\t],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"GF_SECURITY_ADMIN_USER\",\n\t\t\tdefaultValue: \"admin\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Grafana admin username\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"GF_SECURITY_ADMIN_PASSWORD\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Grafana admin password\",\n\t\t\trequired: true,\n\t\t},\n\t],\n\thealthcheck: {\n\t\ttest: \"curl -sf http://localhost:3000/api/health || 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: \"GRAFANA_HOST\",\n\t\t\tdefaultValue: \"grafana\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Grafana hostname\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"GRAFANA_PORT\",\n\t\t\tdefaultValue: \"3000\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Grafana internal port\",\n\t\t\trequired: false,\n\t\t},\n\t],\n\n\tdocsUrl: \"https://grafana.com/docs/grafana/latest/\",\n\ttags: [\"dashboards\", \"visualization\", \"metrics\", \"monitoring\"],\n\tmaturity: \"stable\",\n\n\trequires: [\"prometheus\"],\n\trecommends: [],\n\tconflictsWith: [],\n\n\tminMemoryMB: 256,\n\tgpuRequired: false,\n\tcapDropCompatible: true,\n\tproxyPath: \"/grafana\",\n\tenvQuirks: [\n\t\t{\n\t\t\tkey: \"GF_SECURITY_ADMIN_PASSWORD\",\n\t\t\tissue: \"min_length\" as const,\n\t\t\tfix: { type: \"generate_base64url\" as const, minBytes: 16 },\n\t\t},\n\t],\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,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,aAAa,CACZ;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,EACD;EACC,KAAK;EACL,cAAc;EACd,QAAQ;EACR,aAAa;EACb,UAAU;EACV,CACD;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;EAAc;EAAiB;EAAW;EAAa;CAC9D,UAAU;CAEV,UAAU,CAAC,aAAa;CACxB,YAAY,EAAE;CACd,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,130 @@
|
|
|
1
|
+
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
//#region src/services/definitions/hindsight.ts
|
|
3
|
+
const hindsightDefinition = {
|
|
4
|
+
id: "hindsight",
|
|
5
|
+
name: "Hindsight",
|
|
6
|
+
description: "Open-source agent memory system with Retain/Recall/Reflect operations, multi-strategy retrieval (semantic, keyword, graph, temporal), and MCP server support.",
|
|
7
|
+
category: "ai",
|
|
8
|
+
icon: "🧠",
|
|
9
|
+
image: "ghcr.io/vectorize-io/hindsight",
|
|
10
|
+
imageTag: "latest",
|
|
11
|
+
ports: [{
|
|
12
|
+
host: 8889,
|
|
13
|
+
container: 8888,
|
|
14
|
+
description: "Hindsight API and MCP endpoint",
|
|
15
|
+
exposed: true
|
|
16
|
+
}, {
|
|
17
|
+
host: 9998,
|
|
18
|
+
container: 9999,
|
|
19
|
+
description: "Hindsight admin web UI",
|
|
20
|
+
exposed: true
|
|
21
|
+
}],
|
|
22
|
+
volumes: [{
|
|
23
|
+
name: "hindsight-data",
|
|
24
|
+
containerPath: "/home/hindsight/.pg0",
|
|
25
|
+
description: "Embedded PostgreSQL data (used when no external DB configured)"
|
|
26
|
+
}],
|
|
27
|
+
environment: [
|
|
28
|
+
{
|
|
29
|
+
key: "HINDSIGHT_API_LLM_PROVIDER",
|
|
30
|
+
defaultValue: "openai",
|
|
31
|
+
secret: false,
|
|
32
|
+
description: "LLM provider (openai, anthropic, gemini, groq, ollama, lmstudio)",
|
|
33
|
+
required: true
|
|
34
|
+
},
|
|
35
|
+
{
|
|
36
|
+
key: "HINDSIGHT_API_LLM_API_KEY",
|
|
37
|
+
defaultValue: "",
|
|
38
|
+
secret: true,
|
|
39
|
+
description: "API key for the configured LLM provider",
|
|
40
|
+
required: true
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
key: "HINDSIGHT_API_LLM_MODEL",
|
|
44
|
+
defaultValue: "o3-mini",
|
|
45
|
+
secret: false,
|
|
46
|
+
description: "LLM model to use for memory operations (e.g., o3-mini, claude-sonnet-4-20250514)",
|
|
47
|
+
required: true
|
|
48
|
+
},
|
|
49
|
+
{
|
|
50
|
+
key: "HINDSIGHT_API_DATABASE_URL",
|
|
51
|
+
defaultValue: "postgresql://hindsight:${HINDSIGHT_DB_PASSWORD}@postgresql:5432/hindsight",
|
|
52
|
+
secret: false,
|
|
53
|
+
description: "PostgreSQL connection string (leave empty to use embedded pg0 for dev)",
|
|
54
|
+
required: false
|
|
55
|
+
},
|
|
56
|
+
{
|
|
57
|
+
key: "HINDSIGHT_API_MCP_ENABLED",
|
|
58
|
+
defaultValue: "true",
|
|
59
|
+
secret: false,
|
|
60
|
+
description: "Enable MCP server for agent tool integration",
|
|
61
|
+
required: false
|
|
62
|
+
},
|
|
63
|
+
{
|
|
64
|
+
key: "HINDSIGHT_API_SKIP_LLM_VERIFICATION",
|
|
65
|
+
defaultValue: "false",
|
|
66
|
+
secret: false,
|
|
67
|
+
description: "Skip LLM connection verification on startup",
|
|
68
|
+
required: false
|
|
69
|
+
}
|
|
70
|
+
],
|
|
71
|
+
healthcheck: {
|
|
72
|
+
test: "wget -q --spider http://localhost:8888/metrics || exit 1",
|
|
73
|
+
interval: "30s",
|
|
74
|
+
timeout: "10s",
|
|
75
|
+
retries: 5,
|
|
76
|
+
startPeriod: "30s"
|
|
77
|
+
},
|
|
78
|
+
dependsOn: [],
|
|
79
|
+
restartPolicy: "unless-stopped",
|
|
80
|
+
networks: ["openclaw-network"],
|
|
81
|
+
skills: [],
|
|
82
|
+
openclawEnvVars: [{
|
|
83
|
+
key: "HINDSIGHT_HOST",
|
|
84
|
+
defaultValue: "hindsight",
|
|
85
|
+
secret: false,
|
|
86
|
+
description: "Hindsight hostname for agent memory operations",
|
|
87
|
+
required: false
|
|
88
|
+
}, {
|
|
89
|
+
key: "HINDSIGHT_API_PORT",
|
|
90
|
+
defaultValue: "8888",
|
|
91
|
+
secret: false,
|
|
92
|
+
description: "Hindsight API port",
|
|
93
|
+
required: false
|
|
94
|
+
}],
|
|
95
|
+
docsUrl: "https://hindsight.vectorize.io/",
|
|
96
|
+
tags: [
|
|
97
|
+
"agent-memory",
|
|
98
|
+
"mcp",
|
|
99
|
+
"recall",
|
|
100
|
+
"knowledge-graph",
|
|
101
|
+
"semantic-search"
|
|
102
|
+
],
|
|
103
|
+
maturity: "beta",
|
|
104
|
+
requires: ["postgresql"],
|
|
105
|
+
recommends: ["ollama"],
|
|
106
|
+
conflictsWith: [],
|
|
107
|
+
minMemoryMB: 512,
|
|
108
|
+
gpuRequired: false,
|
|
109
|
+
capDropCompatible: true,
|
|
110
|
+
proxyPath: "/hindsight",
|
|
111
|
+
envQuirks: [{
|
|
112
|
+
key: "HINDSIGHT_API_LLM_API_KEY",
|
|
113
|
+
issue: "min_length",
|
|
114
|
+
fix: {
|
|
115
|
+
type: "generate_base64url",
|
|
116
|
+
minBytes: 16
|
|
117
|
+
}
|
|
118
|
+
}, {
|
|
119
|
+
key: "HINDSIGHT_API_DATABASE_URL",
|
|
120
|
+
issue: "must_sync",
|
|
121
|
+
fix: {
|
|
122
|
+
type: "sync_with",
|
|
123
|
+
syncKey: "HINDSIGHT_DB_PASSWORD"
|
|
124
|
+
}
|
|
125
|
+
}]
|
|
126
|
+
};
|
|
127
|
+
//#endregion
|
|
128
|
+
exports.hindsightDefinition = hindsightDefinition;
|
|
129
|
+
|
|
130
|
+
//# sourceMappingURL=hindsight.cjs.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hindsight.cjs","names":[],"sources":["../../../src/services/definitions/hindsight.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const hindsightDefinition: ServiceDefinition = {\n\tid: \"hindsight\",\n\tname: \"Hindsight\",\n\tdescription:\n\t\t\"Open-source agent memory system with Retain/Recall/Reflect operations, multi-strategy retrieval (semantic, keyword, graph, temporal), and MCP server support.\",\n\tcategory: \"ai\",\n\ticon: \"🧠\",\n\n\timage: \"ghcr.io/vectorize-io/hindsight\",\n\timageTag: \"latest\",\n\tports: [\n\t\t{\n\t\t\thost: 8889,\n\t\t\tcontainer: 8888,\n\t\t\tdescription: \"Hindsight API and MCP endpoint\",\n\t\t\texposed: true,\n\t\t},\n\t\t{\n\t\t\thost: 9998,\n\t\t\tcontainer: 9999,\n\t\t\tdescription: \"Hindsight admin web UI\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"hindsight-data\",\n\t\t\tcontainerPath: \"/home/hindsight/.pg0\",\n\t\t\tdescription: \"Embedded PostgreSQL data (used when no external DB configured)\",\n\t\t},\n\t],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"HINDSIGHT_API_LLM_PROVIDER\",\n\t\t\tdefaultValue: \"openai\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"LLM provider (openai, anthropic, gemini, groq, ollama, lmstudio)\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"HINDSIGHT_API_LLM_API_KEY\",\n\t\t\tdefaultValue: \"\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"API key for the configured LLM provider\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"HINDSIGHT_API_LLM_MODEL\",\n\t\t\tdefaultValue: \"o3-mini\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"LLM model to use for memory operations (e.g., o3-mini, claude-sonnet-4-20250514)\",\n\t\t\trequired: true,\n\t\t},\n\t\t{\n\t\t\tkey: \"HINDSIGHT_API_DATABASE_URL\",\n\t\t\tdefaultValue: \"postgresql://hindsight:${HINDSIGHT_DB_PASSWORD}@postgresql:5432/hindsight\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"PostgreSQL connection string (leave empty to use embedded pg0 for dev)\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"HINDSIGHT_API_MCP_ENABLED\",\n\t\t\tdefaultValue: \"true\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Enable MCP server for agent tool integration\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"HINDSIGHT_API_SKIP_LLM_VERIFICATION\",\n\t\t\tdefaultValue: \"false\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Skip LLM connection verification on startup\",\n\t\t\trequired: false,\n\t\t},\n\t],\n\thealthcheck: {\n\t\ttest: \"wget -q --spider http://localhost:8888/metrics || exit 1\",\n\t\tinterval: \"30s\",\n\t\ttimeout: \"10s\",\n\t\tretries: 5,\n\t\tstartPeriod: \"30s\",\n\t},\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [],\n\topenclawEnvVars: [\n\t\t{\n\t\t\tkey: \"HINDSIGHT_HOST\",\n\t\t\tdefaultValue: \"hindsight\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Hindsight hostname for agent memory operations\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"HINDSIGHT_API_PORT\",\n\t\t\tdefaultValue: \"8888\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Hindsight API port\",\n\t\t\trequired: false,\n\t\t},\n\t],\n\n\tdocsUrl: \"https://hindsight.vectorize.io/\",\n\ttags: [\"agent-memory\", \"mcp\", \"recall\", \"knowledge-graph\", \"semantic-search\"],\n\tmaturity: \"beta\",\n\n\trequires: [\"postgresql\"],\n\trecommends: [\"ollama\"],\n\tconflictsWith: [],\n\n\tminMemoryMB: 512,\n\tgpuRequired: false,\n\tcapDropCompatible: true,\n\tproxyPath: \"/hindsight\",\n\tenvQuirks: [\n\t\t{\n\t\t\tkey: \"HINDSIGHT_API_LLM_API_KEY\",\n\t\t\tissue: \"min_length\" as const,\n\t\t\tfix: { type: \"generate_base64url\" as const, minBytes: 16 },\n\t\t},\n\t\t{\n\t\t\tkey: \"HINDSIGHT_API_DATABASE_URL\",\n\t\t\tissue: \"must_sync\" as const,\n\t\t\tfix: { type: \"sync_with\" as const, syncKey: \"HINDSIGHT_DB_PASSWORD\" },\n\t\t},\n\t],\n};\n"],"mappings":";;AAEA,MAAa,sBAAyC;CACrD,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,EACD;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,CACR;EACC,MAAM;EACN,eAAe;EACf,aAAa;EACb,CACD;CACD,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;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;EAAO;EAAU;EAAmB;EAAkB;CAC7E,UAAU;CAEV,UAAU,CAAC,aAAa;CACxB,YAAY,CAAC,SAAS;CACtB,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,EACD;EACC,KAAK;EACL,OAAO;EACP,KAAK;GAAE,MAAM;GAAsB,SAAS;GAAyB;EACrE,CACD;CACD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hindsight.d.cts","names":[],"sources":["../../../src/services/definitions/hindsight.ts"],"mappings":";;;cAEa,mBAAA,EAAqB,iBAAA"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hindsight.d.mts","names":[],"sources":["../../../src/services/definitions/hindsight.ts"],"mappings":";;;cAEa,mBAAA,EAAqB,iBAAA"}
|