@better-openclaw/core 1.0.14 → 1.0.15

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (73) hide show
  1. package/dist/resolver.mjs.map +1 -1
  2. package/dist/services/definitions/authentik.d.mts +7 -0
  3. package/dist/services/definitions/authentik.d.mts.map +1 -0
  4. package/dist/services/definitions/authentik.mjs +105 -0
  5. package/dist/services/definitions/authentik.mjs.map +1 -0
  6. package/dist/services/definitions/crowdsec.d.mts +7 -0
  7. package/dist/services/definitions/crowdsec.d.mts.map +1 -0
  8. package/dist/services/definitions/crowdsec.mjs +62 -0
  9. package/dist/services/definitions/crowdsec.mjs.map +1 -0
  10. package/dist/services/definitions/ghost.d.mts +7 -0
  11. package/dist/services/definitions/ghost.d.mts.map +1 -0
  12. package/dist/services/definitions/ghost.mjs +58 -0
  13. package/dist/services/definitions/ghost.mjs.map +1 -0
  14. package/dist/services/definitions/homeassistant.d.mts +7 -0
  15. package/dist/services/definitions/homeassistant.d.mts.map +1 -0
  16. package/dist/services/definitions/homeassistant.mjs +61 -0
  17. package/dist/services/definitions/homeassistant.mjs.map +1 -0
  18. package/dist/services/definitions/immich.d.mts +7 -0
  19. package/dist/services/definitions/immich.d.mts.map +1 -0
  20. package/dist/services/definitions/immich.mjs +92 -0
  21. package/dist/services/definitions/immich.mjs.map +1 -0
  22. package/dist/services/definitions/index.d.mts +14 -1
  23. package/dist/services/definitions/index.d.mts.map +1 -1
  24. package/dist/services/definitions/index.mjs +27 -1
  25. package/dist/services/definitions/index.mjs.map +1 -1
  26. package/dist/services/definitions/jellyfin.d.mts +7 -0
  27. package/dist/services/definitions/jellyfin.d.mts.map +1 -0
  28. package/dist/services/definitions/jellyfin.mjs +62 -0
  29. package/dist/services/definitions/jellyfin.mjs.map +1 -0
  30. package/dist/services/definitions/jenkins.d.mts +7 -0
  31. package/dist/services/definitions/jenkins.d.mts.map +1 -0
  32. package/dist/services/definitions/jenkins.mjs +62 -0
  33. package/dist/services/definitions/jenkins.mjs.map +1 -0
  34. package/dist/services/definitions/loki.d.mts +7 -0
  35. package/dist/services/definitions/loki.d.mts.map +1 -0
  36. package/dist/services/definitions/loki.mjs +51 -0
  37. package/dist/services/definitions/loki.mjs.map +1 -0
  38. package/dist/services/definitions/milvus.d.mts +7 -0
  39. package/dist/services/definitions/milvus.d.mts.map +1 -0
  40. package/dist/services/definitions/milvus.mjs +75 -0
  41. package/dist/services/definitions/milvus.mjs.map +1 -0
  42. package/dist/services/definitions/nextcloud.d.mts +7 -0
  43. package/dist/services/definitions/nextcloud.d.mts.map +1 -0
  44. package/dist/services/definitions/nextcloud.mjs +80 -0
  45. package/dist/services/definitions/nextcloud.mjs.map +1 -0
  46. package/dist/services/definitions/signoz.d.mts +7 -0
  47. package/dist/services/definitions/signoz.d.mts.map +1 -0
  48. package/dist/services/definitions/signoz.mjs +54 -0
  49. package/dist/services/definitions/signoz.mjs.map +1 -0
  50. package/dist/services/definitions/supabase.d.mts +7 -0
  51. package/dist/services/definitions/supabase.d.mts.map +1 -0
  52. package/dist/services/definitions/supabase.mjs +69 -0
  53. package/dist/services/definitions/supabase.mjs.map +1 -0
  54. package/dist/services/definitions/vaultwarden.d.mts +7 -0
  55. package/dist/services/definitions/vaultwarden.d.mts.map +1 -0
  56. package/dist/services/definitions/vaultwarden.mjs +63 -0
  57. package/dist/services/definitions/vaultwarden.mjs.map +1 -0
  58. package/package.json +1 -1
  59. package/src/resolver.ts +10 -10
  60. package/src/services/definitions/authentik.ts +106 -0
  61. package/src/services/definitions/crowdsec.ts +66 -0
  62. package/src/services/definitions/ghost.ts +60 -0
  63. package/src/services/definitions/homeassistant.ts +65 -0
  64. package/src/services/definitions/immich.ts +93 -0
  65. package/src/services/definitions/index.ts +39 -0
  66. package/src/services/definitions/jellyfin.ts +66 -0
  67. package/src/services/definitions/jenkins.ts +67 -0
  68. package/src/services/definitions/loki.ts +53 -0
  69. package/src/services/definitions/milvus.ts +84 -0
  70. package/src/services/definitions/nextcloud.ts +81 -0
  71. package/src/services/definitions/signoz.ts +54 -0
  72. package/src/services/definitions/supabase.ts +73 -0
  73. package/src/services/definitions/vaultwarden.ts +68 -0
@@ -0,0 +1,54 @@
1
+ //#region src/services/definitions/signoz.ts
2
+ const signozDefinition = {
3
+ id: "signoz",
4
+ name: "SigNoz",
5
+ description: "Open-source observability platform serving as a lighter alternative to DataDog.",
6
+ category: "monitoring",
7
+ icon: "📈",
8
+ image: "signoz/signoz-frontend",
9
+ imageTag: "latest",
10
+ ports: [{
11
+ host: 3301,
12
+ container: 3301,
13
+ description: "SigNoz Web UI",
14
+ exposed: true
15
+ }],
16
+ volumes: [],
17
+ environment: [{
18
+ key: "FRONTEND_PUBLIC_TELEMETRY",
19
+ defaultValue: "false",
20
+ secret: false,
21
+ description: "Enable anonymized usage telemetry",
22
+ required: false
23
+ }],
24
+ healthcheck: {
25
+ test: "wget -q --spider http://localhost:3301 || exit 1",
26
+ interval: "30s",
27
+ timeout: "10s",
28
+ retries: 3,
29
+ startPeriod: "15s"
30
+ },
31
+ dependsOn: [],
32
+ restartPolicy: "unless-stopped",
33
+ networks: ["openclaw-network"],
34
+ skills: [],
35
+ openclawEnvVars: [],
36
+ docsUrl: "https://signoz.io/docs/",
37
+ tags: [
38
+ "observability",
39
+ "metrics",
40
+ "traces",
41
+ "logs",
42
+ "opentelemetry"
43
+ ],
44
+ maturity: "stable",
45
+ requires: [],
46
+ recommends: [],
47
+ conflictsWith: [],
48
+ minMemoryMB: 1024,
49
+ gpuRequired: false
50
+ };
51
+
52
+ //#endregion
53
+ export { signozDefinition };
54
+ //# sourceMappingURL=signoz.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signoz.mjs","names":[],"sources":["../../../src/services/definitions/signoz.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const signozDefinition: ServiceDefinition = {\n\tid: \"signoz\",\n\tname: \"SigNoz\",\n\tdescription: \"Open-source observability platform serving as a lighter alternative to DataDog.\",\n\tcategory: \"monitoring\",\n\ticon: \"📈\",\n\n\timage: \"signoz/signoz-frontend\",\n\timageTag: \"latest\",\n\tports: [\n\t\t{\n\t\t\thost: 3301,\n\t\t\tcontainer: 3301,\n\t\t\tdescription: \"SigNoz Web UI\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"FRONTEND_PUBLIC_TELEMETRY\",\n\t\t\tdefaultValue: \"false\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Enable anonymized usage telemetry\",\n\t\t\trequired: false,\n\t\t},\n\t],\n\thealthcheck: {\n\t\ttest: \"wget -q --spider http://localhost:3301 || 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\n\tdocsUrl: \"https://signoz.io/docs/\",\n\ttags: [\"observability\", \"metrics\", \"traces\", \"logs\", \"opentelemetry\"],\n\tmaturity: \"stable\",\n\n\trequires: [],\n\trecommends: [],\n\tconflictsWith: [],\n\n\tminMemoryMB: 1024,\n\tgpuRequired: false,\n};\n"],"mappings":";AAEA,MAAa,mBAAsC;CAClD,IAAI;CACJ,MAAM;CACN,aAAa;CACb,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,CACZ;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,EAAE;CAEnB,SAAS;CACT,MAAM;EAAC;EAAiB;EAAW;EAAU;EAAQ;EAAgB;CACrE,UAAU;CAEV,UAAU,EAAE;CACZ,YAAY,EAAE;CACd,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb"}
@@ -0,0 +1,7 @@
1
+ import { ServiceDefinition } from "../../types.mjs";
2
+
3
+ //#region src/services/definitions/supabase.d.ts
4
+ declare const supabaseDefinition: ServiceDefinition;
5
+ //#endregion
6
+ export { supabaseDefinition };
7
+ //# sourceMappingURL=supabase.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supabase.d.mts","names":[],"sources":["../../../src/services/definitions/supabase.ts"],"mappings":";;;cAEa,kBAAA,EAAoB,iBAAA"}
@@ -0,0 +1,69 @@
1
+ //#region src/services/definitions/supabase.ts
2
+ const supabaseDefinition = {
3
+ id: "supabase",
4
+ name: "Supabase",
5
+ description: "The open source Firebase alternative. Build production-grade backends instantly.",
6
+ category: "database",
7
+ icon: "⚡",
8
+ image: "supabase/studio",
9
+ imageTag: "latest",
10
+ ports: [{
11
+ host: 3e3,
12
+ container: 3e3,
13
+ description: "Supabase Studio Web Dashboard",
14
+ exposed: true
15
+ }, {
16
+ host: 8e3,
17
+ container: 8e3,
18
+ description: "Supabase API Gateway",
19
+ exposed: true
20
+ }],
21
+ volumes: [{
22
+ name: "supabase_db",
23
+ containerPath: "/var/lib/postgresql/data",
24
+ description: "Supabase Postgres database storage"
25
+ }],
26
+ environment: [{
27
+ key: "STUDIO_DEFAULT_ORGANIZATION",
28
+ defaultValue: "Default Organization",
29
+ secret: false,
30
+ description: "Default organization name",
31
+ required: false
32
+ }, {
33
+ key: "STUDIO_DEFAULT_PROJECT",
34
+ defaultValue: "Default Project",
35
+ secret: false,
36
+ description: "Default project name",
37
+ required: false
38
+ }],
39
+ healthcheck: {
40
+ test: "wget -q --spider http://localhost:3000/api/profile || exit 1",
41
+ interval: "30s",
42
+ timeout: "10s",
43
+ retries: 3,
44
+ startPeriod: "30s"
45
+ },
46
+ dependsOn: ["postgresql"],
47
+ restartPolicy: "unless-stopped",
48
+ networks: ["openclaw-network"],
49
+ skills: [],
50
+ openclawEnvVars: [],
51
+ docsUrl: "https://supabase.com/docs/guides/self-hosting",
52
+ tags: [
53
+ "database",
54
+ "auth",
55
+ "storage",
56
+ "realtime",
57
+ "edge-functions"
58
+ ],
59
+ maturity: "stable",
60
+ requires: ["postgresql"],
61
+ recommends: [],
62
+ conflictsWith: [],
63
+ minMemoryMB: 2048,
64
+ gpuRequired: false
65
+ };
66
+
67
+ //#endregion
68
+ export { supabaseDefinition };
69
+ //# sourceMappingURL=supabase.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"supabase.mjs","names":[],"sources":["../../../src/services/definitions/supabase.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const supabaseDefinition: ServiceDefinition = {\n\tid: \"supabase\",\n\tname: \"Supabase\",\n\tdescription: \"The open source Firebase alternative. Build production-grade backends instantly.\",\n\tcategory: \"database\",\n\ticon: \"⚡\",\n\n\timage: \"supabase/studio\",\n\timageTag: \"latest\",\n\tports: [\n\t\t{\n\t\t\thost: 3000,\n\t\t\tcontainer: 3000,\n\t\t\tdescription: \"Supabase Studio Web Dashboard\",\n\t\t\texposed: true,\n\t\t},\n\t\t{\n\t\t\thost: 8000,\n\t\t\tcontainer: 8000,\n\t\t\tdescription: \"Supabase API Gateway\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"supabase_db\",\n\t\t\tcontainerPath: \"/var/lib/postgresql/data\",\n\t\t\tdescription: \"Supabase Postgres database storage\",\n\t\t},\n\t],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"STUDIO_DEFAULT_ORGANIZATION\",\n\t\t\tdefaultValue: \"Default Organization\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Default organization name\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"STUDIO_DEFAULT_PROJECT\",\n\t\t\tdefaultValue: \"Default Project\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Default project name\",\n\t\t\trequired: false,\n\t\t},\n\t],\n\thealthcheck: {\n\t\ttest: \"wget -q --spider http://localhost:3000/api/profile || exit 1\",\n\t\tinterval: \"30s\",\n\t\ttimeout: \"10s\",\n\t\tretries: 3,\n\t\tstartPeriod: \"30s\",\n\t},\n\tdependsOn: [\"postgresql\"],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [],\n\topenclawEnvVars: [],\n\n\tdocsUrl: \"https://supabase.com/docs/guides/self-hosting\",\n\ttags: [\"database\", \"auth\", \"storage\", \"realtime\", \"edge-functions\"],\n\tmaturity: \"stable\",\n\n\trequires: [\"postgresql\"],\n\trecommends: [],\n\tconflictsWith: [],\n\n\tminMemoryMB: 2048,\n\tgpuRequired: false,\n};\n"],"mappings":";AAEA,MAAa,qBAAwC;CACpD,IAAI;CACJ,MAAM;CACN,aAAa;CACb,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,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,CAAC,aAAa;CACzB,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,EAAE;CACV,iBAAiB,EAAE;CAEnB,SAAS;CACT,MAAM;EAAC;EAAY;EAAQ;EAAW;EAAY;EAAiB;CACnE,UAAU;CAEV,UAAU,CAAC,aAAa;CACxB,YAAY,EAAE;CACd,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb"}
@@ -0,0 +1,7 @@
1
+ import { ServiceDefinition } from "../../types.mjs";
2
+
3
+ //#region src/services/definitions/vaultwarden.d.ts
4
+ declare const vaultwardenDefinition: ServiceDefinition;
5
+ //#endregion
6
+ export { vaultwardenDefinition };
7
+ //# sourceMappingURL=vaultwarden.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vaultwarden.d.mts","names":[],"sources":["../../../src/services/definitions/vaultwarden.ts"],"mappings":";;;cAEa,qBAAA,EAAuB,iBAAA"}
@@ -0,0 +1,63 @@
1
+ //#region src/services/definitions/vaultwarden.ts
2
+ const vaultwardenDefinition = {
3
+ id: "vaultwarden",
4
+ name: "Vaultwarden",
5
+ description: "Unofficial Bitwarden compatible server written in Rust, perfect for self-hosted deployments.",
6
+ category: "security",
7
+ icon: "🔐",
8
+ image: "vaultwarden/server",
9
+ imageTag: "latest",
10
+ ports: [{
11
+ host: 80,
12
+ container: 80,
13
+ description: "Vaultwarden Web Interface / API",
14
+ exposed: true
15
+ }],
16
+ volumes: [{
17
+ name: "vaultwarden_data",
18
+ containerPath: "/data",
19
+ description: "Persistent Vaultwarden data storage"
20
+ }],
21
+ environment: [{
22
+ key: "WEBSOCKET_ENABLED",
23
+ defaultValue: "true",
24
+ secret: false,
25
+ description: "Enable WebSocket notifications",
26
+ required: false
27
+ }, {
28
+ key: "SIGNUPS_ALLOWED",
29
+ defaultValue: "true",
30
+ secret: false,
31
+ description: "Allow new user signups",
32
+ required: false
33
+ }],
34
+ healthcheck: {
35
+ test: "curl --fail http://localhost:80/alive || exit 1",
36
+ interval: "30s",
37
+ timeout: "10s",
38
+ retries: 3,
39
+ startPeriod: "15s"
40
+ },
41
+ dependsOn: [],
42
+ restartPolicy: "unless-stopped",
43
+ networks: ["openclaw-network"],
44
+ skills: [],
45
+ openclawEnvVars: [],
46
+ docsUrl: "https://github.com/dani-garcia/vaultwarden/wiki",
47
+ tags: [
48
+ "security",
49
+ "passwords",
50
+ "bitwarden",
51
+ "secrets"
52
+ ],
53
+ maturity: "stable",
54
+ requires: [],
55
+ recommends: ["caddy", "traefik"],
56
+ conflictsWith: [],
57
+ minMemoryMB: 128,
58
+ gpuRequired: false
59
+ };
60
+
61
+ //#endregion
62
+ export { vaultwardenDefinition };
63
+ //# sourceMappingURL=vaultwarden.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vaultwarden.mjs","names":[],"sources":["../../../src/services/definitions/vaultwarden.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const vaultwardenDefinition: ServiceDefinition = {\n\tid: \"vaultwarden\",\n\tname: \"Vaultwarden\",\n\tdescription:\n\t\t\"Unofficial Bitwarden compatible server written in Rust, perfect for self-hosted deployments.\",\n\tcategory: \"security\",\n\ticon: \"🔐\",\n\n\timage: \"vaultwarden/server\",\n\timageTag: \"latest\",\n\tports: [\n\t\t{\n\t\t\thost: 80, // User should probably proxy this or change it to avoid conflicts\n\t\t\tcontainer: 80,\n\t\t\tdescription: \"Vaultwarden Web Interface / API\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"vaultwarden_data\",\n\t\t\tcontainerPath: \"/data\",\n\t\t\tdescription: \"Persistent Vaultwarden data storage\",\n\t\t},\n\t],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"WEBSOCKET_ENABLED\",\n\t\t\tdefaultValue: \"true\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Enable WebSocket notifications\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"SIGNUPS_ALLOWED\",\n\t\t\tdefaultValue: \"true\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Allow new user signups\",\n\t\t\trequired: false,\n\t\t},\n\t],\n\thealthcheck: {\n\t\ttest: \"curl --fail http://localhost:80/alive || 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\n\tdocsUrl: \"https://github.com/dani-garcia/vaultwarden/wiki\",\n\ttags: [\"security\", \"passwords\", \"bitwarden\", \"secrets\"],\n\tmaturity: \"stable\",\n\n\trequires: [],\n\trecommends: [\"caddy\", \"traefik\"],\n\tconflictsWith: [],\n\n\tminMemoryMB: 128,\n\tgpuRequired: false,\n};\n"],"mappings":";AAEA,MAAa,wBAA2C;CACvD,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,EAAE;CAEnB,SAAS;CACT,MAAM;EAAC;EAAY;EAAa;EAAa;EAAU;CACvD,UAAU;CAEV,UAAU,EAAE;CACZ,YAAY,CAAC,SAAS,UAAU;CAChC,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@better-openclaw/core",
3
- "version": "1.0.14",
3
+ "version": "1.0.15",
4
4
  "private": false,
5
5
  "description": "Core logic for better-openclaw: schemas, service registry, resolver, composer, validators and more",
6
6
  "packageManager": "pnpm@9.15.4",
package/src/resolver.ts CHANGED
@@ -241,16 +241,16 @@ export function resolve(input: ResolverInput): ResolverOutput {
241
241
  const isValid = errors.length === 0;
242
242
 
243
243
  return {
244
- services,
245
- addedDependencies,
246
- removedConflicts: [],
247
- warnings,
248
- errors,
249
- isValid,
250
- estimatedMemoryMB,
251
- aiProviders: input.aiProviders ?? [],
252
- gsdRuntimes: []
253
- };
244
+ services,
245
+ addedDependencies,
246
+ removedConflicts: [],
247
+ warnings,
248
+ errors,
249
+ isValid,
250
+ estimatedMemoryMB,
251
+ aiProviders: input.aiProviders ?? [],
252
+ gsdRuntimes: [],
253
+ };
254
254
  }
255
255
 
256
256
  /**
@@ -0,0 +1,106 @@
1
+ import type { ServiceDefinition } from "../../types.js";
2
+
3
+ export const authentikDefinition: ServiceDefinition = {
4
+ id: "authentik",
5
+ name: "Authentik",
6
+ description: "The open-source Identity Provider that unifies your identity infrastructure.",
7
+ category: "security",
8
+ icon: "🛡️",
9
+
10
+ image: "ghcr.io/goauthentik/server",
11
+ imageTag: "latest",
12
+ ports: [
13
+ {
14
+ host: 9000,
15
+ container: 9000,
16
+ description: "Authentik HTTP Interface",
17
+ exposed: true,
18
+ },
19
+ {
20
+ host: 9443,
21
+ container: 9443,
22
+ description: "Authentik HTTPS Interface",
23
+ exposed: false,
24
+ },
25
+ ],
26
+ volumes: [
27
+ {
28
+ name: "authentik_media",
29
+ containerPath: "/media",
30
+ description: "Authentik media storage",
31
+ },
32
+ {
33
+ name: "authentik_custom_templates",
34
+ containerPath: "/templates",
35
+ description: "Authentik custom templates",
36
+ },
37
+ ],
38
+ environment: [
39
+ {
40
+ key: "AUTHENTIK_REDIS__HOST",
41
+ defaultValue: "redis",
42
+ secret: false,
43
+ description: "Redis server hostname",
44
+ required: true,
45
+ },
46
+ {
47
+ key: "AUTHENTIK_POSTGRESQL__HOST",
48
+ defaultValue: "postgres",
49
+ secret: false,
50
+ description: "Postgres database hostname",
51
+ required: true,
52
+ },
53
+ {
54
+ key: "AUTHENTIK_POSTGRESQL__USER",
55
+ defaultValue: "postgres",
56
+ secret: false,
57
+ description: "Postgres database user",
58
+ required: true,
59
+ },
60
+ {
61
+ key: "AUTHENTIK_POSTGRESQL__NAME",
62
+ defaultValue: "authentik",
63
+ secret: false,
64
+ description: "Postgres database name",
65
+ required: true,
66
+ },
67
+ {
68
+ key: "AUTHENTIK_POSTGRESQL__PASSWORD",
69
+ defaultValue: "postgres",
70
+ secret: true,
71
+ description: "Postgres database password",
72
+ required: true,
73
+ },
74
+ {
75
+ key: "AUTHENTIK_SECRET_KEY",
76
+ defaultValue: "authentik_secret_replace_me_in_production",
77
+ secret: true,
78
+ description: "Secret key used for cookie signing",
79
+ required: true,
80
+ },
81
+ ],
82
+ healthcheck: {
83
+ test: "curl --fail http://localhost:9000/-/health/live/ || exit 1",
84
+ interval: "30s",
85
+ timeout: "5s",
86
+ retries: 3,
87
+ startPeriod: "30s",
88
+ },
89
+ dependsOn: ["postgresql", "redis"],
90
+ restartPolicy: "unless-stopped",
91
+ networks: ["openclaw-network"],
92
+
93
+ skills: [],
94
+ openclawEnvVars: [],
95
+
96
+ docsUrl: "https://docs.goauthentik.io/",
97
+ tags: ["identity", "sso", "saml", "oidc", "oauth2", "security"],
98
+ maturity: "stable",
99
+
100
+ requires: ["postgresql", "redis"],
101
+ recommends: [],
102
+ conflictsWith: [],
103
+
104
+ minMemoryMB: 2048,
105
+ gpuRequired: false,
106
+ };
@@ -0,0 +1,66 @@
1
+ import type { ServiceDefinition } from "../../types.js";
2
+
3
+ export const crowdsecDefinition: ServiceDefinition = {
4
+ id: "crowdsec",
5
+ name: "CrowdSec",
6
+ description:
7
+ "Free, open-source and collaborative IPS designed to protect servers, services, and containers.",
8
+ category: "security",
9
+ icon: "⚔️",
10
+
11
+ image: "crowdsecurity/crowdsec",
12
+ imageTag: "latest",
13
+ ports: [
14
+ {
15
+ host: 8080,
16
+ container: 8080,
17
+ description: "CrowdSec Local API Interface",
18
+ exposed: true,
19
+ },
20
+ ],
21
+ volumes: [
22
+ {
23
+ name: "crowdsec_data",
24
+ containerPath: "/v/lib/crowdsec/data",
25
+ description: "CrowdSec persistent SQLite data",
26
+ },
27
+ {
28
+ name: "crowdsec_config",
29
+ containerPath: "/etc/crowdsec",
30
+ description: "CrowdSec configurations",
31
+ },
32
+ ],
33
+ environment: [
34
+ {
35
+ key: "COLLECTIONS",
36
+ defaultValue: "crowdsecurity/linux crowdsecurity/sshd",
37
+ secret: false,
38
+ description: "Default collections to install",
39
+ required: false,
40
+ },
41
+ ],
42
+ healthcheck: {
43
+ test: "cscli metrics || exit 1",
44
+ interval: "30s",
45
+ timeout: "10s",
46
+ retries: 3,
47
+ startPeriod: "15s",
48
+ },
49
+ dependsOn: [],
50
+ restartPolicy: "unless-stopped",
51
+ networks: ["openclaw-network"],
52
+
53
+ skills: [],
54
+ openclawEnvVars: [],
55
+
56
+ docsUrl: "https://docs.crowdsec.net/",
57
+ tags: ["ips", "ids", "firewall", "security", "threat-intelligence"],
58
+ maturity: "stable",
59
+
60
+ requires: [],
61
+ recommends: [],
62
+ conflictsWith: [],
63
+
64
+ minMemoryMB: 256,
65
+ gpuRequired: false,
66
+ };
@@ -0,0 +1,60 @@
1
+ import type { ServiceDefinition } from "../../types.js";
2
+
3
+ export const ghostDefinition: ServiceDefinition = {
4
+ id: "ghost",
5
+ name: "Ghost",
6
+ description: "The world's most popular modern open-source publishing platform.",
7
+ category: "social-media",
8
+ icon: "👻",
9
+
10
+ image: "ghost",
11
+ imageTag: "latest",
12
+ ports: [
13
+ {
14
+ host: 2368,
15
+ container: 2368,
16
+ description: "Ghost Public Interface",
17
+ exposed: true,
18
+ },
19
+ ],
20
+ volumes: [
21
+ {
22
+ name: "ghost_content",
23
+ containerPath: "/var/lib/ghost/content",
24
+ description: "Ghost images, themes, and content storage",
25
+ },
26
+ ],
27
+ environment: [
28
+ {
29
+ key: "url",
30
+ defaultValue: "http://localhost:2368",
31
+ secret: false,
32
+ description: "The URL of the Ghost install",
33
+ required: true,
34
+ },
35
+ ],
36
+ healthcheck: {
37
+ test: "curl --fail http://localhost:2368/ghost/ || exit 1",
38
+ interval: "30s",
39
+ timeout: "10s",
40
+ retries: 3,
41
+ startPeriod: "30s",
42
+ },
43
+ dependsOn: [],
44
+ restartPolicy: "unless-stopped",
45
+ networks: ["openclaw-network"],
46
+
47
+ skills: [],
48
+ openclawEnvVars: [],
49
+
50
+ docsUrl: "https://ghost.org/docs/",
51
+ tags: ["blog", "publishing", "writing", "cms", "content"],
52
+ maturity: "stable",
53
+
54
+ requires: [],
55
+ recommends: [],
56
+ conflictsWith: [],
57
+
58
+ minMemoryMB: 512,
59
+ gpuRequired: false,
60
+ };
@@ -0,0 +1,65 @@
1
+ import type { ServiceDefinition } from "../../types.js";
2
+
3
+ export const homeassistantDefinition: ServiceDefinition = {
4
+ id: "homeassistant",
5
+ name: "Home Assistant",
6
+ description: "Open source home automation that puts local control and privacy first.",
7
+ category: "automation",
8
+ icon: "🏠",
9
+
10
+ image: "ghcr.io/home-assistant/home-assistant",
11
+ imageTag: "stable",
12
+ ports: [
13
+ {
14
+ host: 8123,
15
+ container: 8123,
16
+ description: "Home Assistant Web Interface",
17
+ exposed: true,
18
+ },
19
+ ],
20
+ volumes: [
21
+ {
22
+ name: "homeassistant_config",
23
+ containerPath: "/config",
24
+ description: "Home Assistant configuration directory",
25
+ },
26
+ {
27
+ name: "/etc/localtime",
28
+ containerPath: "/etc/localtime",
29
+ description: "Timezone sync",
30
+ },
31
+ ],
32
+ environment: [
33
+ {
34
+ key: "TZ",
35
+ defaultValue: "UTC",
36
+ secret: false,
37
+ description: "Timezone mapping",
38
+ required: false,
39
+ },
40
+ ],
41
+ healthcheck: {
42
+ test: "curl --fail http://localhost:8123/ || exit 1",
43
+ interval: "30s",
44
+ timeout: "10s",
45
+ retries: 3,
46
+ startPeriod: "30s",
47
+ },
48
+ dependsOn: [],
49
+ restartPolicy: "unless-stopped",
50
+ networks: ["openclaw-network"],
51
+
52
+ skills: [],
53
+ openclawEnvVars: [],
54
+
55
+ docsUrl: "https://www.home-assistant.io/docs/",
56
+ tags: ["smarthome", "automation", "iot", "local-first"],
57
+ maturity: "stable",
58
+
59
+ requires: [],
60
+ recommends: [],
61
+ conflictsWith: [],
62
+
63
+ minMemoryMB: 1024,
64
+ gpuRequired: false,
65
+ };
@@ -0,0 +1,93 @@
1
+ import type { ServiceDefinition } from "../../types.js";
2
+
3
+ export const immichDefinition: ServiceDefinition = {
4
+ id: "immich",
5
+ name: "Immich",
6
+ description: "High performance self-hosted photo and video management solution.",
7
+ category: "media",
8
+ icon: "📸",
9
+
10
+ image: "ghcr.io/immich-app/immich-server",
11
+ imageTag: "release",
12
+ ports: [
13
+ {
14
+ host: 2283,
15
+ container: 2283,
16
+ description: "Immich Web Interface",
17
+ exposed: true,
18
+ },
19
+ ],
20
+ volumes: [
21
+ {
22
+ name: "immich_upload",
23
+ containerPath: "/usr/src/app/upload",
24
+ description: "Persistent Immich photos/videos storage",
25
+ },
26
+ {
27
+ name: "/etc/localtime",
28
+ containerPath: "/etc/localtime",
29
+ description: "Host timezone synchronization",
30
+ },
31
+ ],
32
+ environment: [
33
+ {
34
+ key: "DB_HOSTNAME",
35
+ defaultValue: "postgres",
36
+ secret: false,
37
+ description: "Database hostname",
38
+ required: true,
39
+ },
40
+ {
41
+ key: "DB_USERNAME",
42
+ defaultValue: "postgres",
43
+ secret: false,
44
+ description: "Database user",
45
+ required: true,
46
+ },
47
+ {
48
+ key: "DB_PASSWORD",
49
+ defaultValue: "postgres",
50
+ secret: true,
51
+ description: "Database password",
52
+ required: true,
53
+ },
54
+ {
55
+ key: "DB_DATABASE_NAME",
56
+ defaultValue: "immich",
57
+ secret: false,
58
+ description: "Database name",
59
+ required: true,
60
+ },
61
+ {
62
+ key: "REDIS_HOSTNAME",
63
+ defaultValue: "redis",
64
+ secret: false,
65
+ description: "Redis hostname",
66
+ required: true,
67
+ },
68
+ ],
69
+ healthcheck: {
70
+ test: "curl --fail http://localhost:2283/api/server-info/ping || exit 1",
71
+ interval: "30s",
72
+ timeout: "10s",
73
+ retries: 3,
74
+ startPeriod: "30s",
75
+ },
76
+ dependsOn: ["postgresql", "redis"],
77
+ restartPolicy: "unless-stopped",
78
+ networks: ["openclaw-network"],
79
+
80
+ skills: [],
81
+ openclawEnvVars: [],
82
+
83
+ docsUrl: "https://immich.app/docs/overview/introduction",
84
+ tags: ["media", "photos", "videos", "gallery", "backup"],
85
+ maturity: "stable",
86
+
87
+ requires: ["postgresql", "redis"],
88
+ recommends: [],
89
+ conflictsWith: [],
90
+
91
+ minMemoryMB: 1024,
92
+ gpuRequired: false,
93
+ };