@better-openclaw/core 1.0.13 → 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 (109) hide show
  1. package/dist/composer.mjs.map +1 -1
  2. package/dist/generate.d.mts.map +1 -1
  3. package/dist/generate.mjs +11 -0
  4. package/dist/generate.mjs.map +1 -1
  5. package/dist/generators/env.d.mts.map +1 -1
  6. package/dist/generators/env.mjs +21 -1
  7. package/dist/generators/env.mjs.map +1 -1
  8. package/dist/generators/get-shit-done.d.mts +10 -0
  9. package/dist/generators/get-shit-done.d.mts.map +1 -0
  10. package/dist/generators/get-shit-done.mjs +38 -0
  11. package/dist/generators/get-shit-done.mjs.map +1 -0
  12. package/dist/generators/openclaw-json.d.mts +11 -0
  13. package/dist/generators/openclaw-json.d.mts.map +1 -0
  14. package/dist/generators/openclaw-json.mjs +410 -0
  15. package/dist/generators/openclaw-json.mjs.map +1 -0
  16. package/dist/index.d.mts +2 -2
  17. package/dist/resolver.mjs +3 -1
  18. package/dist/resolver.mjs.map +1 -1
  19. package/dist/schema.d.mts +81 -1
  20. package/dist/schema.d.mts.map +1 -1
  21. package/dist/schema.mjs +28 -2
  22. package/dist/schema.mjs.map +1 -1
  23. package/dist/services/definitions/authentik.d.mts +7 -0
  24. package/dist/services/definitions/authentik.d.mts.map +1 -0
  25. package/dist/services/definitions/authentik.mjs +105 -0
  26. package/dist/services/definitions/authentik.mjs.map +1 -0
  27. package/dist/services/definitions/crowdsec.d.mts +7 -0
  28. package/dist/services/definitions/crowdsec.d.mts.map +1 -0
  29. package/dist/services/definitions/crowdsec.mjs +62 -0
  30. package/dist/services/definitions/crowdsec.mjs.map +1 -0
  31. package/dist/services/definitions/ghost.d.mts +7 -0
  32. package/dist/services/definitions/ghost.d.mts.map +1 -0
  33. package/dist/services/definitions/ghost.mjs +58 -0
  34. package/dist/services/definitions/ghost.mjs.map +1 -0
  35. package/dist/services/definitions/homeassistant.d.mts +7 -0
  36. package/dist/services/definitions/homeassistant.d.mts.map +1 -0
  37. package/dist/services/definitions/homeassistant.mjs +61 -0
  38. package/dist/services/definitions/homeassistant.mjs.map +1 -0
  39. package/dist/services/definitions/immich.d.mts +7 -0
  40. package/dist/services/definitions/immich.d.mts.map +1 -0
  41. package/dist/services/definitions/immich.mjs +92 -0
  42. package/dist/services/definitions/immich.mjs.map +1 -0
  43. package/dist/services/definitions/index.d.mts +14 -1
  44. package/dist/services/definitions/index.d.mts.map +1 -1
  45. package/dist/services/definitions/index.mjs +27 -1
  46. package/dist/services/definitions/index.mjs.map +1 -1
  47. package/dist/services/definitions/jellyfin.d.mts +7 -0
  48. package/dist/services/definitions/jellyfin.d.mts.map +1 -0
  49. package/dist/services/definitions/jellyfin.mjs +62 -0
  50. package/dist/services/definitions/jellyfin.mjs.map +1 -0
  51. package/dist/services/definitions/jenkins.d.mts +7 -0
  52. package/dist/services/definitions/jenkins.d.mts.map +1 -0
  53. package/dist/services/definitions/jenkins.mjs +62 -0
  54. package/dist/services/definitions/jenkins.mjs.map +1 -0
  55. package/dist/services/definitions/loki.d.mts +7 -0
  56. package/dist/services/definitions/loki.d.mts.map +1 -0
  57. package/dist/services/definitions/loki.mjs +51 -0
  58. package/dist/services/definitions/loki.mjs.map +1 -0
  59. package/dist/services/definitions/milvus.d.mts +7 -0
  60. package/dist/services/definitions/milvus.d.mts.map +1 -0
  61. package/dist/services/definitions/milvus.mjs +75 -0
  62. package/dist/services/definitions/milvus.mjs.map +1 -0
  63. package/dist/services/definitions/nextcloud.d.mts +7 -0
  64. package/dist/services/definitions/nextcloud.d.mts.map +1 -0
  65. package/dist/services/definitions/nextcloud.mjs +80 -0
  66. package/dist/services/definitions/nextcloud.mjs.map +1 -0
  67. package/dist/services/definitions/pentagi.mjs.map +1 -1
  68. package/dist/services/definitions/pentestagent.mjs.map +1 -1
  69. package/dist/services/definitions/signoz.d.mts +7 -0
  70. package/dist/services/definitions/signoz.d.mts.map +1 -0
  71. package/dist/services/definitions/signoz.mjs +54 -0
  72. package/dist/services/definitions/signoz.mjs.map +1 -0
  73. package/dist/services/definitions/supabase.d.mts +7 -0
  74. package/dist/services/definitions/supabase.d.mts.map +1 -0
  75. package/dist/services/definitions/supabase.mjs +69 -0
  76. package/dist/services/definitions/supabase.mjs.map +1 -0
  77. package/dist/services/definitions/vaultwarden.d.mts +7 -0
  78. package/dist/services/definitions/vaultwarden.d.mts.map +1 -0
  79. package/dist/services/definitions/vaultwarden.mjs +63 -0
  80. package/dist/services/definitions/vaultwarden.mjs.map +1 -0
  81. package/dist/types.d.mts +6 -2
  82. package/dist/types.d.mts.map +1 -1
  83. package/dist/types.mjs.map +1 -1
  84. package/package.json +1 -1
  85. package/src/composer.ts +1 -1
  86. package/src/generate.ts +15 -0
  87. package/src/generators/env.ts +26 -0
  88. package/src/generators/get-shit-done.ts +43 -0
  89. package/src/generators/openclaw-json.ts +406 -0
  90. package/src/index.ts +2 -0
  91. package/src/resolver.ts +2 -0
  92. package/src/schema.ts +23 -0
  93. package/src/services/definitions/authentik.ts +106 -0
  94. package/src/services/definitions/crowdsec.ts +66 -0
  95. package/src/services/definitions/ghost.ts +60 -0
  96. package/src/services/definitions/homeassistant.ts +65 -0
  97. package/src/services/definitions/immich.ts +93 -0
  98. package/src/services/definitions/index.ts +39 -0
  99. package/src/services/definitions/jellyfin.ts +66 -0
  100. package/src/services/definitions/jenkins.ts +67 -0
  101. package/src/services/definitions/loki.ts +53 -0
  102. package/src/services/definitions/milvus.ts +84 -0
  103. package/src/services/definitions/nextcloud.ts +81 -0
  104. package/src/services/definitions/pentagi.ts +2 -1
  105. package/src/services/definitions/pentestagent.ts +2 -1
  106. package/src/services/definitions/signoz.ts +54 -0
  107. package/src/services/definitions/supabase.ts +73 -0
  108. package/src/services/definitions/vaultwarden.ts +68 -0
  109. package/src/types.ts +6 -0
@@ -0,0 +1,80 @@
1
+ //#region src/services/definitions/nextcloud.ts
2
+ const nextcloudDefinition = {
3
+ id: "nextcloud",
4
+ name: "Nextcloud",
5
+ description: "Self-hosted productivity platform that keeps you in control.",
6
+ category: "storage",
7
+ icon: "☁️",
8
+ image: "nextcloud",
9
+ imageTag: "latest",
10
+ ports: [{
11
+ host: 8080,
12
+ container: 80,
13
+ description: "Nextcloud Web Interface",
14
+ exposed: true
15
+ }],
16
+ volumes: [{
17
+ name: "nextcloud_data",
18
+ containerPath: "/var/www/html",
19
+ description: "Persistent Nextcloud data storage"
20
+ }],
21
+ environment: [
22
+ {
23
+ key: "MYSQL_DATABASE",
24
+ defaultValue: "nextcloud",
25
+ secret: false,
26
+ description: "Database name",
27
+ required: false
28
+ },
29
+ {
30
+ key: "MYSQL_USER",
31
+ defaultValue: "nextcloud",
32
+ secret: false,
33
+ description: "Database user",
34
+ required: false
35
+ },
36
+ {
37
+ key: "MYSQL_PASSWORD",
38
+ defaultValue: "nextcloud_secret",
39
+ secret: true,
40
+ description: "Database password",
41
+ required: false
42
+ },
43
+ {
44
+ key: "MYSQL_HOST",
45
+ defaultValue: "postgres",
46
+ secret: false,
47
+ description: "Database hostname",
48
+ required: false
49
+ }
50
+ ],
51
+ healthcheck: {
52
+ test: "curl --fail http://localhost:80/status.php || exit 1",
53
+ interval: "30s",
54
+ timeout: "10s",
55
+ retries: 3,
56
+ startPeriod: "30s"
57
+ },
58
+ dependsOn: ["postgresql"],
59
+ restartPolicy: "unless-stopped",
60
+ networks: ["openclaw-network"],
61
+ skills: [],
62
+ openclawEnvVars: [],
63
+ docsUrl: "https://nextcloud.com/",
64
+ tags: [
65
+ "storage",
66
+ "cloud",
67
+ "productivity",
68
+ "collaboration"
69
+ ],
70
+ maturity: "stable",
71
+ requires: [],
72
+ recommends: ["postgresql"],
73
+ conflictsWith: [],
74
+ minMemoryMB: 512,
75
+ gpuRequired: false
76
+ };
77
+
78
+ //#endregion
79
+ export { nextcloudDefinition };
80
+ //# sourceMappingURL=nextcloud.mjs.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"nextcloud.mjs","names":[],"sources":["../../../src/services/definitions/nextcloud.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const nextcloudDefinition: ServiceDefinition = {\n\tid: \"nextcloud\",\n\tname: \"Nextcloud\",\n\tdescription: \"Self-hosted productivity platform that keeps you in control.\",\n\tcategory: \"storage\",\n\ticon: \"☁️\",\n\n\timage: \"nextcloud\",\n\timageTag: \"latest\",\n\tports: [\n\t\t{\n\t\t\thost: 8080,\n\t\t\tcontainer: 80,\n\t\t\tdescription: \"Nextcloud Web Interface\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [\n\t\t{\n\t\t\tname: \"nextcloud_data\",\n\t\t\tcontainerPath: \"/var/www/html\",\n\t\t\tdescription: \"Persistent Nextcloud data storage\",\n\t\t},\n\t],\n\tenvironment: [\n\t\t{\n\t\t\tkey: \"MYSQL_DATABASE\",\n\t\t\tdefaultValue: \"nextcloud\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Database name\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"MYSQL_USER\",\n\t\t\tdefaultValue: \"nextcloud\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Database user\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"MYSQL_PASSWORD\",\n\t\t\tdefaultValue: \"nextcloud_secret\",\n\t\t\tsecret: true,\n\t\t\tdescription: \"Database password\",\n\t\t\trequired: false,\n\t\t},\n\t\t{\n\t\t\tkey: \"MYSQL_HOST\",\n\t\t\tdefaultValue: \"postgres\",\n\t\t\tsecret: false,\n\t\t\tdescription: \"Database hostname\",\n\t\t\trequired: false,\n\t\t},\n\t],\n\thealthcheck: {\n\t\ttest: \"curl --fail http://localhost:80/status.php || 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://nextcloud.com/\",\n\ttags: [\"storage\", \"cloud\", \"productivity\", \"collaboration\"],\n\tmaturity: \"stable\",\n\n\trequires: [],\n\trecommends: [\"postgresql\"],\n\tconflictsWith: [],\n\n\tminMemoryMB: 512,\n\tgpuRequired: false,\n};\n"],"mappings":";AAEA,MAAa,sBAAyC;CACrD,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,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;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;EAAW;EAAS;EAAgB;EAAgB;CAC3D,UAAU;CAEV,UAAU,EAAE;CACZ,YAAY,CAAC,aAAa;CAC1B,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb"}
@@ -1 +1 @@
1
- {"version":3,"file":"pentagi.mjs","names":[],"sources":["../../../src/services/definitions/pentagi.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const pentagiDefinition: ServiceDefinition = {\n\tid: \"pentagi\",\n\tname: \"PentAGI\",\n\tdescription: \"Fully autonomous AI Agents system capable of performing complex penetration testing tasks.\",\n\tcategory: \"security\",\n\ticon: \"🕵️\",\n\n\timage: \"vxcontrol/pentagi\",\n\timageTag: \"latest\",\n\tports: [\n\t\t{\n\t\t\thost: 8080, // Assuming default or common port for web UI, might need adjustment based on their docker-compose\n\t\t\tcontainer: 8080,\n\t\t\tdescription: \"PentAGI Interface\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [],\n\tenvironment: [],\n\tcommand: \"\", // Leave empty to use default image command\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [{ skillId: \"pentagi-orchestrator\", autoInstall: true }],\n\topenclawEnvVars: [],\n\n\tdocsUrl: \"https://pentagi.com\",\n\ttags: [\"security\", \"pentesting\", \"autonomous\", \"agents\"],\n\tmaturity: \"experimental\",\n\n\trequires: [],\n\trecommends: [],\n\tconflictsWith: [],\n\n\tminMemoryMB: 4096, // Documentation explicitly asks for Minimum 4GB RAM\n\tgpuRequired: false,\n};\n"],"mappings":";AAEA,MAAa,oBAAuC;CACnD,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,EAAE;CACf,SAAS;CACT,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,CAAC;EAAE,SAAS;EAAwB,aAAa;EAAM,CAAC;CAChE,iBAAiB,EAAE;CAEnB,SAAS;CACT,MAAM;EAAC;EAAY;EAAc;EAAc;EAAS;CACxD,UAAU;CAEV,UAAU,EAAE;CACZ,YAAY,EAAE;CACd,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb"}
1
+ {"version":3,"file":"pentagi.mjs","names":[],"sources":["../../../src/services/definitions/pentagi.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const pentagiDefinition: ServiceDefinition = {\n\tid: \"pentagi\",\n\tname: \"PentAGI\",\n\tdescription:\n\t\t\"Fully autonomous AI Agents system capable of performing complex penetration testing tasks.\",\n\tcategory: \"security\",\n\ticon: \"🕵️\",\n\n\timage: \"vxcontrol/pentagi\",\n\timageTag: \"latest\",\n\tports: [\n\t\t{\n\t\t\thost: 8080, // Assuming default or common port for web UI, might need adjustment based on their docker-compose\n\t\t\tcontainer: 8080,\n\t\t\tdescription: \"PentAGI Interface\",\n\t\t\texposed: true,\n\t\t},\n\t],\n\tvolumes: [],\n\tenvironment: [],\n\tcommand: \"\", // Leave empty to use default image command\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [{ skillId: \"pentagi-orchestrator\", autoInstall: true }],\n\topenclawEnvVars: [],\n\n\tdocsUrl: \"https://pentagi.com\",\n\ttags: [\"security\", \"pentesting\", \"autonomous\", \"agents\"],\n\tmaturity: \"experimental\",\n\n\trequires: [],\n\trecommends: [],\n\tconflictsWith: [],\n\n\tminMemoryMB: 4096, // Documentation explicitly asks for Minimum 4GB RAM\n\tgpuRequired: false,\n};\n"],"mappings":";AAEA,MAAa,oBAAuC;CACnD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,CACN;EACC,MAAM;EACN,WAAW;EACX,aAAa;EACb,SAAS;EACT,CACD;CACD,SAAS,EAAE;CACX,aAAa,EAAE;CACf,SAAS;CACT,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,CAAC;EAAE,SAAS;EAAwB,aAAa;EAAM,CAAC;CAChE,iBAAiB,EAAE;CAEnB,SAAS;CACT,MAAM;EAAC;EAAY;EAAc;EAAc;EAAS;CACxD,UAAU;CAEV,UAAU,EAAE;CACZ,YAAY,EAAE;CACd,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb"}
@@ -1 +1 @@
1
- {"version":3,"file":"pentestagent.mjs","names":[],"sources":["../../../src/services/definitions/pentestagent.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const pentestagentDefinition: ServiceDefinition = {\n\tid: \"pentestagent\",\n\tname: \"PentestAgent\",\n\tdescription: \"AI agent framework for black-box security testing via internal Docker isolated environments.\",\n\tcategory: \"security\",\n\ticon: \"🔍\",\n\n\timage: \"ghcr.io/gh05tcrew/pentestagent\",\n\timageTag: \"latest\",\n\tports: [], // Typically an internal CLI/TUI\n\tvolumes: [],\n\tenvironment: [],\n\tcommand: \"tail -f /dev/null\", // Keeps container alive for executing interactive TUIs\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [{ skillId: \"pentestagent-runner\", autoInstall: true }],\n\topenclawEnvVars: [],\n\n\tdocsUrl: \"https://github.com/GH05TCREW/pentestagent\",\n\ttags: [\"security\", \"pentesting\", \"tui\", \"framework\"],\n\tmaturity: \"experimental\",\n\n\trequires: [],\n\trecommends: [],\n\tconflictsWith: [],\n\n\tminMemoryMB: 1024,\n\tgpuRequired: false,\n};\n"],"mappings":";AAEA,MAAa,yBAA4C;CACxD,IAAI;CACJ,MAAM;CACN,aAAa;CACb,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,EAAE;CACT,SAAS,EAAE;CACX,aAAa,EAAE;CACf,SAAS;CACT,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,CAAC;EAAE,SAAS;EAAuB,aAAa;EAAM,CAAC;CAC/D,iBAAiB,EAAE;CAEnB,SAAS;CACT,MAAM;EAAC;EAAY;EAAc;EAAO;EAAY;CACpD,UAAU;CAEV,UAAU,EAAE;CACZ,YAAY,EAAE;CACd,eAAe,EAAE;CAEjB,aAAa;CACb,aAAa;CACb"}
1
+ {"version":3,"file":"pentestagent.mjs","names":[],"sources":["../../../src/services/definitions/pentestagent.ts"],"sourcesContent":["import type { ServiceDefinition } from \"../../types.js\";\n\nexport const pentestagentDefinition: ServiceDefinition = {\n\tid: \"pentestagent\",\n\tname: \"PentestAgent\",\n\tdescription:\n\t\t\"AI agent framework for black-box security testing via internal Docker isolated environments.\",\n\tcategory: \"security\",\n\ticon: \"🔍\",\n\n\timage: \"ghcr.io/gh05tcrew/pentestagent\",\n\timageTag: \"latest\",\n\tports: [], // Typically an internal CLI/TUI\n\tvolumes: [],\n\tenvironment: [],\n\tcommand: \"tail -f /dev/null\", // Keeps container alive for executing interactive TUIs\n\tdependsOn: [],\n\trestartPolicy: \"unless-stopped\",\n\tnetworks: [\"openclaw-network\"],\n\n\tskills: [{ skillId: \"pentestagent-runner\", autoInstall: true }],\n\topenclawEnvVars: [],\n\n\tdocsUrl: \"https://github.com/GH05TCREW/pentestagent\",\n\ttags: [\"security\", \"pentesting\", \"tui\", \"framework\"],\n\tmaturity: \"experimental\",\n\n\trequires: [],\n\trecommends: [],\n\tconflictsWith: [],\n\n\tminMemoryMB: 1024,\n\tgpuRequired: false,\n};\n"],"mappings":";AAEA,MAAa,yBAA4C;CACxD,IAAI;CACJ,MAAM;CACN,aACC;CACD,UAAU;CACV,MAAM;CAEN,OAAO;CACP,UAAU;CACV,OAAO,EAAE;CACT,SAAS,EAAE;CACX,aAAa,EAAE;CACf,SAAS;CACT,WAAW,EAAE;CACb,eAAe;CACf,UAAU,CAAC,mBAAmB;CAE9B,QAAQ,CAAC;EAAE,SAAS;EAAuB,aAAa;EAAM,CAAC;CAC/D,iBAAiB,EAAE;CAEnB,SAAS;CACT,MAAM;EAAC;EAAY;EAAc;EAAO;EAAY;CACpD,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/signoz.d.ts
4
+ declare const signozDefinition: ServiceDefinition;
5
+ //#endregion
6
+ export { signozDefinition };
7
+ //# sourceMappingURL=signoz.d.mts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signoz.d.mts","names":[],"sources":["../../../src/services/definitions/signoz.ts"],"mappings":";;;cAEa,gBAAA,EAAkB,iBAAA"}
@@ -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/dist/types.d.mts CHANGED
@@ -1,7 +1,9 @@
1
- import { AddedDependencySchema, ApiErrorSchema, ComposeOptionsSchema, DeploySchema, DeploymentTargetSchema, DeploymentTypeSchema, EnvVariableSchema, ErrorSchema, GenerationInputSchema, HealthCheckSchema, MaturitySchema, NativePlatformSchema, NativeRecipeSchema, OutputFormatSchema, PlatformSchema, PortMappingSchema, PresetSchema, ProxyTypeSchema, ResolvedServiceSchema, ResolverOutputSchema, ResourceLimitsSchema, RestartPolicySchema, ServiceCategorySchema, ServiceDefinitionSchema, SkillBindingSchema, SkillPackSchema, ValidateRequestSchema, ValidateResponseSchema, VolumeMappingSchema, WarningSchema } from "./schema.mjs";
1
+ import { AddedDependencySchema, AiProviderSchema, ApiErrorSchema, ComposeOptionsSchema, DeploySchema, DeploymentTargetSchema, DeploymentTypeSchema, EnvVariableSchema, ErrorSchema, GenerationInputSchema, GsdRuntimeSchema, HealthCheckSchema, MaturitySchema, NativePlatformSchema, NativeRecipeSchema, OutputFormatSchema, PlatformSchema, PortMappingSchema, PresetSchema, ProxyTypeSchema, ResolvedServiceSchema, ResolverOutputSchema, ResourceLimitsSchema, RestartPolicySchema, ServiceCategorySchema, ServiceDefinitionSchema, SkillBindingSchema, SkillPackSchema, ValidateRequestSchema, ValidateResponseSchema, VolumeMappingSchema, WarningSchema } from "./schema.mjs";
2
2
  import { z } from "zod";
3
3
 
4
4
  //#region src/types.d.ts
5
+ type AiProvider = z.infer<typeof AiProviderSchema>;
6
+ type GsdRuntime = z.infer<typeof GsdRuntimeSchema>;
5
7
  type ServiceCategory = z.infer<typeof ServiceCategorySchema>;
6
8
  type Maturity = z.infer<typeof MaturitySchema>;
7
9
  type Platform = z.infer<typeof PlatformSchema>;
@@ -37,6 +39,8 @@ type ApiError = z.infer<typeof ApiErrorSchema>;
37
39
  interface ResolverInput {
38
40
  services: string[];
39
41
  skillPacks: string[];
42
+ aiProviders?: AiProvider[];
43
+ gsdRuntimes?: GsdRuntime[];
40
44
  proxy?: ProxyType;
41
45
  gpu?: boolean;
42
46
  platform?: Platform;
@@ -67,5 +71,5 @@ interface CategoryInfo {
67
71
  }
68
72
  declare const SERVICE_CATEGORIES: CategoryInfo[];
69
73
  //#endregion
70
- export { AddedDependency, ApiError, CategoryInfo, ComposeOptions, Deploy, DeploymentTarget, DeploymentType, EnvVariable, GeneratedFiles, GenerationInput, GenerationMetadata, GenerationResult, HealthCheck, Maturity, NativePlatform, NativeRecipe, OutputFormat, Platform, PortMapping, Preset, ProxyType, ResolvedService, ResolverError, ResolverInput, ResolverOutput, ResourceLimits, RestartPolicy, SERVICE_CATEGORIES, ServiceCategory, ServiceDefinition, SkillBinding, SkillPack, ValidateRequest, ValidateResponse, VolumeMapping, Warning };
74
+ export { AddedDependency, AiProvider, ApiError, CategoryInfo, ComposeOptions, Deploy, DeploymentTarget, DeploymentType, EnvVariable, GeneratedFiles, GenerationInput, GenerationMetadata, GenerationResult, GsdRuntime, HealthCheck, Maturity, NativePlatform, NativeRecipe, OutputFormat, Platform, PortMapping, Preset, ProxyType, ResolvedService, ResolverError, ResolverInput, ResolverOutput, ResourceLimits, RestartPolicy, SERVICE_CATEGORIES, ServiceCategory, ServiceDefinition, SkillBinding, SkillPack, ValidateRequest, ValidateResponse, VolumeMapping, Warning };
71
75
  //# sourceMappingURL=types.d.mts.map
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.mts","names":[],"sources":["../src/types.ts"],"mappings":";;;;KAoCY,eAAA,GAAkB,CAAA,CAAE,KAAA,QAAa,qBAAA;AAAA,KACjC,QAAA,GAAW,CAAA,CAAE,KAAA,QAAa,cAAA;AAAA,KAC1B,QAAA,GAAW,CAAA,CAAE,KAAA,QAAa,cAAA;AAAA,KAC1B,aAAA,GAAgB,CAAA,CAAE,KAAA,QAAa,mBAAA;AAAA,KAC/B,SAAA,GAAY,CAAA,CAAE,KAAA,QAAa,eAAA;AAAA,KAC3B,gBAAA,GAAmB,CAAA,CAAE,KAAA,QAAa,sBAAA;AAAA,KAClC,cAAA,GAAiB,CAAA,CAAE,KAAA,QAAa,oBAAA;AAAA,KAChC,cAAA,GAAiB,CAAA,CAAE,KAAA,QAAa,oBAAA;AAAA,KAChC,YAAA,GAAe,CAAA,CAAE,KAAA,QAAa,kBAAA;AAAA,KAC9B,YAAA,GAAe,CAAA,CAAE,KAAA,QAAa,kBAAA;AAAA,KAE9B,WAAA,GAAc,CAAA,CAAE,KAAA,QAAa,iBAAA;AAAA,KAC7B,aAAA,GAAgB,CAAA,CAAE,KAAA,QAAa,mBAAA;AAAA,KAC/B,WAAA,GAAc,CAAA,CAAE,KAAA,QAAa,iBAAA;AAAA,KAC7B,WAAA,GAAc,CAAA,CAAE,KAAA,QAAa,iBAAA;AAAA,KAC7B,cAAA,GAAiB,CAAA,CAAE,KAAA,QAAa,oBAAA;AAAA,KAChC,MAAA,GAAS,CAAA,CAAE,KAAA,QAAa,YAAA;AAAA,KACxB,YAAA,GAAe,CAAA,CAAE,KAAA,QAAa,kBAAA;AAAA,KAE9B,iBAAA,GAAoB,CAAA,CAAE,KAAA,QAAa,uBAAA;AAAA,KACnC,SAAA,GAAY,CAAA,CAAE,KAAA,QAAa,eAAA;AAAA,KAC3B,MAAA,GAAS,CAAA,CAAE,KAAA,QAAa,YAAA;AAAA,KAExB,eAAA,GAAkB,CAAA,CAAE,KAAA,QAAa,qBAAA;AAAA,KACjC,cAAA,GAAiB,CAAA,CAAE,KAAA,QAAa,oBAAA;+EAE3C,aAAA,GAAgB,GAAA,SAAY,MAAA;AAAA;AAAA,KAEjB,eAAA,GAAkB,CAAA,CAAE,KAAA,QAAa,qBAAA;AAAA,KACjC,eAAA,GAAkB,CAAA,CAAE,KAAA,QAAa,qBAAA;AAAA,KACjC,OAAA,GAAU,CAAA,CAAE,KAAA,QAAa,aAAA;AAAA,KACzB,aAAA,GAAgB,CAAA,CAAE,KAAA,QAAa,WAAA;AAAA,KAC/B,cAAA,GAAiB,CAAA,CAAE,KAAA,QAAa,oBAAA;AAAA,KAEhC,eAAA,GAAkB,CAAA,CAAE,KAAA,QAAa,qBAAA;AAAA,KACjC,gBAAA,GAAmB,CAAA,CAAE,KAAA,QAAa,sBAAA;AAAA,KAClC,QAAA,GAAW,CAAA,CAAE,KAAA,QAAa,cAAA;AAAA,UAIrB,aAAA;EAChB,QAAA;EACA,UAAA;EACA,KAAA,GAAQ,SAAA;EACR,GAAA;EACA,QAAA,GAAW,QAAA;EACX,UAAA;EACA,gBAAA;IAAqB,IAAA;IAAc,OAAA;IAAiB,QAAA;EAAA;AAAA;AAAA,UAGpC,cAAA;EAAA,CACf,IAAA;AAAA;AAAA,UAGe,kBAAA;EAChB,YAAA;EACA,UAAA;EACA,iBAAA;EACA,WAAA;AAAA;AAAA,UAGgB,gBAAA;EAChB,KAAA,EAAO,cAAA;EACP,QAAA,EAAU,kBAAA;AAAA;AAAA,UAGM,YAAA;EAChB,EAAA,EAAI,eAAA;EACJ,IAAA;EACA,IAAA;AAAA;AAAA,cAGY,kBAAA,EAAoB,YAAA"}
1
+ {"version":3,"file":"types.d.mts","names":[],"sources":["../src/types.ts"],"mappings":";;;;KAsCY,UAAA,GAAa,CAAA,CAAE,KAAA,QAAa,gBAAA;AAAA,KAC5B,UAAA,GAAa,CAAA,CAAE,KAAA,QAAa,gBAAA;AAAA,KAC5B,eAAA,GAAkB,CAAA,CAAE,KAAA,QAAa,qBAAA;AAAA,KACjC,QAAA,GAAW,CAAA,CAAE,KAAA,QAAa,cAAA;AAAA,KAC1B,QAAA,GAAW,CAAA,CAAE,KAAA,QAAa,cAAA;AAAA,KAC1B,aAAA,GAAgB,CAAA,CAAE,KAAA,QAAa,mBAAA;AAAA,KAC/B,SAAA,GAAY,CAAA,CAAE,KAAA,QAAa,eAAA;AAAA,KAC3B,gBAAA,GAAmB,CAAA,CAAE,KAAA,QAAa,sBAAA;AAAA,KAClC,cAAA,GAAiB,CAAA,CAAE,KAAA,QAAa,oBAAA;AAAA,KAChC,cAAA,GAAiB,CAAA,CAAE,KAAA,QAAa,oBAAA;AAAA,KAChC,YAAA,GAAe,CAAA,CAAE,KAAA,QAAa,kBAAA;AAAA,KAC9B,YAAA,GAAe,CAAA,CAAE,KAAA,QAAa,kBAAA;AAAA,KAE9B,WAAA,GAAc,CAAA,CAAE,KAAA,QAAa,iBAAA;AAAA,KAC7B,aAAA,GAAgB,CAAA,CAAE,KAAA,QAAa,mBAAA;AAAA,KAC/B,WAAA,GAAc,CAAA,CAAE,KAAA,QAAa,iBAAA;AAAA,KAC7B,WAAA,GAAc,CAAA,CAAE,KAAA,QAAa,iBAAA;AAAA,KAC7B,cAAA,GAAiB,CAAA,CAAE,KAAA,QAAa,oBAAA;AAAA,KAChC,MAAA,GAAS,CAAA,CAAE,KAAA,QAAa,YAAA;AAAA,KACxB,YAAA,GAAe,CAAA,CAAE,KAAA,QAAa,kBAAA;AAAA,KAE9B,iBAAA,GAAoB,CAAA,CAAE,KAAA,QAAa,uBAAA;AAAA,KACnC,SAAA,GAAY,CAAA,CAAE,KAAA,QAAa,eAAA;AAAA,KAC3B,MAAA,GAAS,CAAA,CAAE,KAAA,QAAa,YAAA;AAAA,KAExB,eAAA,GAAkB,CAAA,CAAE,KAAA,QAAa,qBAAA;AAAA,KACjC,cAAA,GAAiB,CAAA,CAAE,KAAA,QAAa,oBAAA;EAxBd,6EA0B7B,aAAA,GAAgB,GAAA,SAAY,MAAA;AAAA;AAAA,KAEjB,eAAA,GAAkB,CAAA,CAAE,KAAA,QAAa,qBAAA;AAAA,KACjC,eAAA,GAAkB,CAAA,CAAE,KAAA,QAAa,qBAAA;AAAA,KACjC,OAAA,GAAU,CAAA,CAAE,KAAA,QAAa,aAAA;AAAA,KACzB,aAAA,GAAgB,CAAA,CAAE,KAAA,QAAa,WAAA;AAAA,KAC/B,cAAA,GAAiB,CAAA,CAAE,KAAA,QAAa,oBAAA;AAAA,KAEhC,eAAA,GAAkB,CAAA,CAAE,KAAA,QAAa,qBAAA;AAAA,KACjC,gBAAA,GAAmB,CAAA,CAAE,KAAA,QAAa,sBAAA;AAAA,KAClC,QAAA,GAAW,CAAA,CAAE,KAAA,QAAa,cAAA;AAAA,UAIrB,aAAA;EAChB,QAAA;EACA,UAAA;EACA,WAAA,GAAc,UAAA;EACd,WAAA,GAAc,UAAA;EACd,KAAA,GAAQ,SAAA;EACR,GAAA;EACA,QAAA,GAAW,QAAA;EACX,UAAA;EACA,gBAAA;IAAqB,IAAA;IAAc,OAAA;IAAiB,QAAA;EAAA;AAAA;AAAA,UAGpC,cAAA;EAAA,CACf,IAAA;AAAA;AAAA,UAGe,kBAAA;EAChB,YAAA;EACA,UAAA;EACA,iBAAA;EACA,WAAA;AAAA;AAAA,UAGgB,gBAAA;EAChB,KAAA,EAAO,cAAA;EACP,QAAA,EAAU,kBAAA;AAAA;AAAA,UAGM,YAAA;EAChB,EAAA,EAAI,eAAA;EACJ,IAAA;EACA,IAAA;AAAA;AAAA,cAGY,kBAAA,EAAoB,YAAA"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.mjs","names":[],"sources":["../src/types.ts"],"sourcesContent":["import type { z } from \"zod\";\nimport type {\n\tAddedDependencySchema,\n\tApiErrorSchema,\n\tComposeOptionsSchema,\n\tDeploymentTargetSchema,\n\tDeploymentTypeSchema,\n\tDeploySchema,\n\tEnvVariableSchema,\n\tErrorSchema,\n\tGenerationInputSchema,\n\tHealthCheckSchema,\n\tMaturitySchema,\n\tNativePlatformSchema,\n\tNativeRecipeSchema,\n\tOutputFormatSchema,\n\tPlatformSchema,\n\tPortMappingSchema,\n\tPresetSchema,\n\tProxyTypeSchema,\n\tResolvedServiceSchema,\n\tResolverOutputSchema,\n\tResourceLimitsSchema,\n\tRestartPolicySchema,\n\tServiceCategorySchema,\n\tServiceDefinitionSchema,\n\tSkillBindingSchema,\n\tSkillPackSchema,\n\tValidateRequestSchema,\n\tValidateResponseSchema,\n\tVolumeMappingSchema,\n\tWarningSchema,\n} from \"./schema.js\";\n\n// ─── Inferred Types ─────────────────────────────────────────────────────────\n\nexport type ServiceCategory = z.infer<typeof ServiceCategorySchema>;\nexport type Maturity = z.infer<typeof MaturitySchema>;\nexport type Platform = z.infer<typeof PlatformSchema>;\nexport type RestartPolicy = z.infer<typeof RestartPolicySchema>;\nexport type ProxyType = z.infer<typeof ProxyTypeSchema>;\nexport type DeploymentTarget = z.infer<typeof DeploymentTargetSchema>;\nexport type DeploymentType = z.infer<typeof DeploymentTypeSchema>;\nexport type NativePlatform = z.infer<typeof NativePlatformSchema>;\nexport type NativeRecipe = z.infer<typeof NativeRecipeSchema>;\nexport type OutputFormat = z.infer<typeof OutputFormatSchema>;\n\nexport type PortMapping = z.infer<typeof PortMappingSchema>;\nexport type VolumeMapping = z.infer<typeof VolumeMappingSchema>;\nexport type EnvVariable = z.infer<typeof EnvVariableSchema>;\nexport type HealthCheck = z.infer<typeof HealthCheckSchema>;\nexport type ResourceLimits = z.infer<typeof ResourceLimitsSchema>;\nexport type Deploy = z.infer<typeof DeploySchema>;\nexport type SkillBinding = z.infer<typeof SkillBindingSchema>;\n\nexport type ServiceDefinition = z.infer<typeof ServiceDefinitionSchema>;\nexport type SkillPack = z.infer<typeof SkillPackSchema>;\nexport type Preset = z.infer<typeof PresetSchema>;\n\nexport type GenerationInput = z.infer<typeof GenerationInputSchema>;\nexport type ComposeOptions = z.infer<typeof ComposeOptionsSchema> & {\n\t/** Dynamic Traefik labels per service, computed by the Traefik generator. */\n\ttraefikLabels?: Map<string, Record<string, string>>;\n};\nexport type ResolvedService = z.infer<typeof ResolvedServiceSchema>;\nexport type AddedDependency = z.infer<typeof AddedDependencySchema>;\nexport type Warning = z.infer<typeof WarningSchema>;\nexport type ResolverError = z.infer<typeof ErrorSchema>;\nexport type ResolverOutput = z.infer<typeof ResolverOutputSchema>;\n\nexport type ValidateRequest = z.infer<typeof ValidateRequestSchema>;\nexport type ValidateResponse = z.infer<typeof ValidateResponseSchema>;\nexport type ApiError = z.infer<typeof ApiErrorSchema>;\n\n// ─── Additional Types ───────────────────────────────────────────────────────\n\nexport interface ResolverInput {\n\tservices: string[];\n\tskillPacks: string[];\n\tproxy?: ProxyType;\n\tgpu?: boolean;\n\tplatform?: Platform;\n\tmonitoring?: boolean;\n\tmemoryThresholds?: { info: number; warning: number; critical: number };\n}\n\nexport interface GeneratedFiles {\n\t[path: string]: string;\n}\n\nexport interface GenerationMetadata {\n\tserviceCount: number;\n\tskillCount: number;\n\testimatedMemoryMB: number;\n\tgeneratedAt: string;\n}\n\nexport interface GenerationResult {\n\tfiles: GeneratedFiles;\n\tmetadata: GenerationMetadata;\n}\n\nexport interface CategoryInfo {\n\tid: ServiceCategory;\n\tname: string;\n\ticon: string;\n}\n\nexport const SERVICE_CATEGORIES: CategoryInfo[] = [\n\t{ id: \"coding-agent\", name: \"AI Coding Agents\", icon: \"💻\" },\n\t{ id: \"ai-platform\", name: \"AI Platforms & Chat UIs\", icon: \"🧪\" },\n\t{ id: \"ai\", name: \"AI / Local Models\", icon: \"🤖\" },\n\t{ id: \"automation\", name: \"Automation & Workflows\", icon: \"🔄\" },\n\t{ id: \"vector-db\", name: \"Vector Databases\", icon: \"🧠\" },\n\t{ id: \"media\", name: \"Media & Video\", icon: \"🎬\" },\n\t{ id: \"social-media\", name: \"Social Media\", icon: \"📱\" },\n\t{ id: \"analytics\", name: \"Analytics\", icon: \"📊\" },\n\t{ id: \"knowledge\", name: \"Knowledge & Documents\", icon: \"📚\" },\n\t{ id: \"storage\", name: \"Object Storage\", icon: \"💾\" },\n\t{ id: \"database\", name: \"Databases & Caching\", icon: \"🗄️\" },\n\t{ id: \"dev-tools\", name: \"Developer Tools\", icon: \"🛠️\" },\n\t{ id: \"proxy\", name: \"Reverse Proxy\", icon: \"🌐\" },\n\t{ id: \"monitoring\", name: \"Monitoring\", icon: \"📡\" },\n\t{ id: \"browser\", name: \"Browser Automation\", icon: \"🌐\" },\n\t{ id: \"search\", name: \"Search\", icon: \"🔍\" },\n\t{ id: \"communication\", name: \"Notifications\", icon: \"🔔\" },\n\t{ id: \"desktop\", name: \"Desktop Environment\", icon: \"🖥️\" },\n\t{ id: \"streaming\", name: \"Streaming & Relay\", icon: \"📺\" },\n\t{ id: \"security\", name: \"Security & Pentesting\", icon: \"🛡️\" },\n];\n"],"mappings":";AA4GA,MAAa,qBAAqC;CACjD;EAAE,IAAI;EAAgB,MAAM;EAAoB,MAAM;EAAM;CAC5D;EAAE,IAAI;EAAe,MAAM;EAA2B,MAAM;EAAM;CAClE;EAAE,IAAI;EAAM,MAAM;EAAqB,MAAM;EAAM;CACnD;EAAE,IAAI;EAAc,MAAM;EAA0B,MAAM;EAAM;CAChE;EAAE,IAAI;EAAa,MAAM;EAAoB,MAAM;EAAM;CACzD;EAAE,IAAI;EAAS,MAAM;EAAiB,MAAM;EAAM;CAClD;EAAE,IAAI;EAAgB,MAAM;EAAgB,MAAM;EAAM;CACxD;EAAE,IAAI;EAAa,MAAM;EAAa,MAAM;EAAM;CAClD;EAAE,IAAI;EAAa,MAAM;EAAyB,MAAM;EAAM;CAC9D;EAAE,IAAI;EAAW,MAAM;EAAkB,MAAM;EAAM;CACrD;EAAE,IAAI;EAAY,MAAM;EAAuB,MAAM;EAAO;CAC5D;EAAE,IAAI;EAAa,MAAM;EAAmB,MAAM;EAAO;CACzD;EAAE,IAAI;EAAS,MAAM;EAAiB,MAAM;EAAM;CAClD;EAAE,IAAI;EAAc,MAAM;EAAc,MAAM;EAAM;CACpD;EAAE,IAAI;EAAW,MAAM;EAAsB,MAAM;EAAM;CACzD;EAAE,IAAI;EAAU,MAAM;EAAU,MAAM;EAAM;CAC5C;EAAE,IAAI;EAAiB,MAAM;EAAiB,MAAM;EAAM;CAC1D;EAAE,IAAI;EAAW,MAAM;EAAuB,MAAM;EAAO;CAC3D;EAAE,IAAI;EAAa,MAAM;EAAqB,MAAM;EAAM;CAC1D;EAAE,IAAI;EAAY,MAAM;EAAyB,MAAM;EAAO;CAC9D"}
1
+ {"version":3,"file":"types.mjs","names":[],"sources":["../src/types.ts"],"sourcesContent":["import type { z } from \"zod\";\nimport type {\n\tAddedDependencySchema,\n\tAiProviderSchema,\n\tApiErrorSchema,\n\tComposeOptionsSchema,\n\tDeploymentTargetSchema,\n\tDeploymentTypeSchema,\n\tDeploySchema,\n\tEnvVariableSchema,\n\tErrorSchema,\n\tGenerationInputSchema,\n\tGsdRuntimeSchema,\n\tHealthCheckSchema,\n\tMaturitySchema,\n\tNativePlatformSchema,\n\tNativeRecipeSchema,\n\tOutputFormatSchema,\n\tPlatformSchema,\n\tPortMappingSchema,\n\tPresetSchema,\n\tProxyTypeSchema,\n\tResolvedServiceSchema,\n\tResolverOutputSchema,\n\tResourceLimitsSchema,\n\tRestartPolicySchema,\n\tServiceCategorySchema,\n\tServiceDefinitionSchema,\n\tSkillBindingSchema,\n\tSkillPackSchema,\n\tValidateRequestSchema,\n\tValidateResponseSchema,\n\tVolumeMappingSchema,\n\tWarningSchema,\n} from \"./schema.js\";\n\n// ─── Inferred Types ─────────────────────────────────────────────────────────\n\nexport type AiProvider = z.infer<typeof AiProviderSchema>;\nexport type GsdRuntime = z.infer<typeof GsdRuntimeSchema>;\nexport type ServiceCategory = z.infer<typeof ServiceCategorySchema>;\nexport type Maturity = z.infer<typeof MaturitySchema>;\nexport type Platform = z.infer<typeof PlatformSchema>;\nexport type RestartPolicy = z.infer<typeof RestartPolicySchema>;\nexport type ProxyType = z.infer<typeof ProxyTypeSchema>;\nexport type DeploymentTarget = z.infer<typeof DeploymentTargetSchema>;\nexport type DeploymentType = z.infer<typeof DeploymentTypeSchema>;\nexport type NativePlatform = z.infer<typeof NativePlatformSchema>;\nexport type NativeRecipe = z.infer<typeof NativeRecipeSchema>;\nexport type OutputFormat = z.infer<typeof OutputFormatSchema>;\n\nexport type PortMapping = z.infer<typeof PortMappingSchema>;\nexport type VolumeMapping = z.infer<typeof VolumeMappingSchema>;\nexport type EnvVariable = z.infer<typeof EnvVariableSchema>;\nexport type HealthCheck = z.infer<typeof HealthCheckSchema>;\nexport type ResourceLimits = z.infer<typeof ResourceLimitsSchema>;\nexport type Deploy = z.infer<typeof DeploySchema>;\nexport type SkillBinding = z.infer<typeof SkillBindingSchema>;\n\nexport type ServiceDefinition = z.infer<typeof ServiceDefinitionSchema>;\nexport type SkillPack = z.infer<typeof SkillPackSchema>;\nexport type Preset = z.infer<typeof PresetSchema>;\n\nexport type GenerationInput = z.infer<typeof GenerationInputSchema>;\nexport type ComposeOptions = z.infer<typeof ComposeOptionsSchema> & {\n\t/** Dynamic Traefik labels per service, computed by the Traefik generator. */\n\ttraefikLabels?: Map<string, Record<string, string>>;\n};\nexport type ResolvedService = z.infer<typeof ResolvedServiceSchema>;\nexport type AddedDependency = z.infer<typeof AddedDependencySchema>;\nexport type Warning = z.infer<typeof WarningSchema>;\nexport type ResolverError = z.infer<typeof ErrorSchema>;\nexport type ResolverOutput = z.infer<typeof ResolverOutputSchema>;\n\nexport type ValidateRequest = z.infer<typeof ValidateRequestSchema>;\nexport type ValidateResponse = z.infer<typeof ValidateResponseSchema>;\nexport type ApiError = z.infer<typeof ApiErrorSchema>;\n\n// ─── Additional Types ───────────────────────────────────────────────────────\n\nexport interface ResolverInput {\n\tservices: string[];\n\tskillPacks: string[];\n\taiProviders?: AiProvider[];\n\tgsdRuntimes?: GsdRuntime[];\n\tproxy?: ProxyType;\n\tgpu?: boolean;\n\tplatform?: Platform;\n\tmonitoring?: boolean;\n\tmemoryThresholds?: { info: number; warning: number; critical: number };\n}\n\nexport interface GeneratedFiles {\n\t[path: string]: string;\n}\n\nexport interface GenerationMetadata {\n\tserviceCount: number;\n\tskillCount: number;\n\testimatedMemoryMB: number;\n\tgeneratedAt: string;\n}\n\nexport interface GenerationResult {\n\tfiles: GeneratedFiles;\n\tmetadata: GenerationMetadata;\n}\n\nexport interface CategoryInfo {\n\tid: ServiceCategory;\n\tname: string;\n\ticon: string;\n}\n\nexport const SERVICE_CATEGORIES: CategoryInfo[] = [\n\t{ id: \"coding-agent\", name: \"AI Coding Agents\", icon: \"💻\" },\n\t{ id: \"ai-platform\", name: \"AI Platforms & Chat UIs\", icon: \"🧪\" },\n\t{ id: \"ai\", name: \"AI / Local Models\", icon: \"🤖\" },\n\t{ id: \"automation\", name: \"Automation & Workflows\", icon: \"🔄\" },\n\t{ id: \"vector-db\", name: \"Vector Databases\", icon: \"🧠\" },\n\t{ id: \"media\", name: \"Media & Video\", icon: \"🎬\" },\n\t{ id: \"social-media\", name: \"Social Media\", icon: \"📱\" },\n\t{ id: \"analytics\", name: \"Analytics\", icon: \"📊\" },\n\t{ id: \"knowledge\", name: \"Knowledge & Documents\", icon: \"📚\" },\n\t{ id: \"storage\", name: \"Object Storage\", icon: \"💾\" },\n\t{ id: \"database\", name: \"Databases & Caching\", icon: \"🗄️\" },\n\t{ id: \"dev-tools\", name: \"Developer Tools\", icon: \"🛠️\" },\n\t{ id: \"proxy\", name: \"Reverse Proxy\", icon: \"🌐\" },\n\t{ id: \"monitoring\", name: \"Monitoring\", icon: \"📡\" },\n\t{ id: \"browser\", name: \"Browser Automation\", icon: \"🌐\" },\n\t{ id: \"search\", name: \"Search\", icon: \"🔍\" },\n\t{ id: \"communication\", name: \"Notifications\", icon: \"🔔\" },\n\t{ id: \"desktop\", name: \"Desktop Environment\", icon: \"🖥️\" },\n\t{ id: \"streaming\", name: \"Streaming & Relay\", icon: \"📺\" },\n\t{ id: \"security\", name: \"Security & Pentesting\", icon: \"🛡️\" },\n];\n"],"mappings":";AAkHA,MAAa,qBAAqC;CACjD;EAAE,IAAI;EAAgB,MAAM;EAAoB,MAAM;EAAM;CAC5D;EAAE,IAAI;EAAe,MAAM;EAA2B,MAAM;EAAM;CAClE;EAAE,IAAI;EAAM,MAAM;EAAqB,MAAM;EAAM;CACnD;EAAE,IAAI;EAAc,MAAM;EAA0B,MAAM;EAAM;CAChE;EAAE,IAAI;EAAa,MAAM;EAAoB,MAAM;EAAM;CACzD;EAAE,IAAI;EAAS,MAAM;EAAiB,MAAM;EAAM;CAClD;EAAE,IAAI;EAAgB,MAAM;EAAgB,MAAM;EAAM;CACxD;EAAE,IAAI;EAAa,MAAM;EAAa,MAAM;EAAM;CAClD;EAAE,IAAI;EAAa,MAAM;EAAyB,MAAM;EAAM;CAC9D;EAAE,IAAI;EAAW,MAAM;EAAkB,MAAM;EAAM;CACrD;EAAE,IAAI;EAAY,MAAM;EAAuB,MAAM;EAAO;CAC5D;EAAE,IAAI;EAAa,MAAM;EAAmB,MAAM;EAAO;CACzD;EAAE,IAAI;EAAS,MAAM;EAAiB,MAAM;EAAM;CAClD;EAAE,IAAI;EAAc,MAAM;EAAc,MAAM;EAAM;CACpD;EAAE,IAAI;EAAW,MAAM;EAAsB,MAAM;EAAM;CACzD;EAAE,IAAI;EAAU,MAAM;EAAU,MAAM;EAAM;CAC5C;EAAE,IAAI;EAAiB,MAAM;EAAiB,MAAM;EAAM;CAC1D;EAAE,IAAI;EAAW,MAAM;EAAuB,MAAM;EAAO;CAC3D;EAAE,IAAI;EAAa,MAAM;EAAqB,MAAM;EAAM;CAC1D;EAAE,IAAI;EAAY,MAAM;EAAyB,MAAM;EAAO;CAC9D"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@better-openclaw/core",
3
- "version": "1.0.13",
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/composer.ts CHANGED
@@ -178,7 +178,7 @@ function buildCompanionService(
178
178
  svc.volumes = def.volumes.map((v) => {
179
179
  const isBindMount =
180
180
  v.name.startsWith("./") || v.name.startsWith("/") || v.name.startsWith("~");
181
-
181
+
182
182
  if (!isBindMount) {
183
183
  allVolumes.add(v.name);
184
184
  volumeNames.push(v.name);
package/src/generate.ts CHANGED
@@ -8,10 +8,12 @@ import { StackConfigError, ValidationError } from "./errors.js";
8
8
  import { generateBareMetalInstall } from "./generators/bare-metal-install.js";
9
9
  import { generateCaddyfile } from "./generators/caddy.js";
10
10
  import { generateEnvFiles } from "./generators/env.js";
11
+ import { generateGsdScripts } from "./generators/get-shit-done.js";
11
12
  import { generateGrafanaConfig, generateGrafanaDashboard } from "./generators/grafana.js";
12
13
  import { generateHealthCheck } from "./generators/health-check.js";
13
14
  import { generateN8nWorkflows } from "./generators/n8n-workflows.js";
14
15
  import { generateNativeInstallScripts } from "./generators/native-services.js";
16
+ import { generateOpenClawConfig } from "./generators/openclaw-json.js";
15
17
  import { generatePostgresInit } from "./generators/postgres-init.js";
16
18
  import { generatePrometheusConfig } from "./generators/prometheus.js";
17
19
  import { generateReadme } from "./generators/readme.js";
@@ -49,6 +51,7 @@ export function generate(rawInput: GenerationInput): GenerationResult {
49
51
  const resolverInput: ResolverInput = {
50
52
  services: input.services,
51
53
  skillPacks: input.skillPacks,
54
+ aiProviders: input.aiProviders,
52
55
  proxy: input.proxy,
53
56
  gpu: input.gpu,
54
57
  platform: composePlatform,
@@ -142,6 +145,9 @@ export function generate(rawInput: GenerationInput): GenerationResult {
142
145
  files[path] = content;
143
146
  }
144
147
 
148
+ // OpenClaw Core Configuration
149
+ files["openclaw/config/openclaw.json"] = generateOpenClawConfig(resolved);
150
+
145
151
  // README
146
152
  files["README.md"] = generateReadme(resolved, {
147
153
  projectName: input.projectName,
@@ -239,6 +245,15 @@ export function generate(rawInput: GenerationInput): GenerationResult {
239
245
  }
240
246
  }
241
247
 
248
+ // Get-Shit-Done setup scripts
249
+ if (input.gsdRuntimes && input.gsdRuntimes.length > 0) {
250
+ const gsdScripts = generateGsdScripts(input.gsdRuntimes);
251
+ if (gsdScripts) {
252
+ files["openclaw/scripts/setup-gsd.sh"] = gsdScripts.sh;
253
+ files["openclaw/scripts/setup-gsd.ps1"] = gsdScripts.ps1;
254
+ }
255
+ }
256
+
242
257
  // 5. Calculate metadata
243
258
  const skillCount = resolved.services.reduce((sum, s) => sum + s.definition.skills.length, 0);
244
259
 
@@ -125,6 +125,30 @@ export function generateEnvFiles(
125
125
  });
126
126
  }
127
127
 
128
+ // ── AI Provider API Keys ─────────────────────────────────────────────────
129
+
130
+ if (resolved.aiProviders && resolved.aiProviders.length > 0) {
131
+ lines.push({
132
+ comment:
133
+ "\n# ═══════════════════════════════════════════════════════════════════════════════\n# AI Provider API Keys\n# ═══════════════════════════════════════════════════════════════════════════════",
134
+ key: "",
135
+ exampleValue: "",
136
+ actualValue: "",
137
+ });
138
+
139
+ for (const provider of resolved.aiProviders) {
140
+ if (provider === "ollama" || provider === "lmstudio" || provider === "vllm") continue;
141
+
142
+ const envKey = `${provider.toUpperCase()}_API_KEY`;
143
+ lines.push({
144
+ comment: formatComment(`API Key for ${provider} AI models`, "OpenClaw Core", true, true),
145
+ key: envKey,
146
+ exampleValue: `your_${provider.toLowerCase()}_api_key_here`,
147
+ actualValue: "",
148
+ });
149
+ }
150
+ }
151
+
128
152
  // Claude web-provider session variables (optional)
129
153
  lines.push({
130
154
  comment:
@@ -203,6 +227,7 @@ export function generateEnvFiles(
203
227
  // ── Service-Specific Variables ───────────────────────────────────────────
204
228
 
205
229
  const dbPasswordKeys = dbReqs.map((r) => r.passwordEnvVar);
230
+ const aiProviderKeys = (resolved.aiProviders || []).map((p) => `${p.toUpperCase()}_API_KEY`);
206
231
  const seenKeys = new Set<string>([
207
232
  "OPENCLAW_VERSION",
208
233
  "OPENCLAW_GATEWAY_TOKEN",
@@ -217,6 +242,7 @@ export function generateEnvFiles(
217
242
  "CLAUDE_WEB_SESSION_KEY",
218
243
  "CLAUDE_WEB_COOKIE",
219
244
  ...dbPasswordKeys,
245
+ ...aiProviderKeys,
220
246
  ]);
221
247
 
222
248
  for (const { definition } of resolved.services) {
@@ -0,0 +1,43 @@
1
+ import type { GsdRuntime } from "../types.js";
2
+
3
+ export function generateGsdScripts(
4
+ runtimes: GsdRuntime[] | undefined,
5
+ ): { sh: string; ps1: string } | undefined {
6
+ if (!runtimes || runtimes.length === 0) {
7
+ return undefined;
8
+ }
9
+
10
+ // Map runtimes to their corresponding CLI flags for GSD installer
11
+ const flags = runtimes.map((r) => `--${r}`).join(" ");
12
+
13
+ const sh = `#!/usr/bin/env bash
14
+ # Automatically generated by Better-OpenClaw
15
+
16
+ if ! command -v npx &> /dev/null; then
17
+ echo "Error: Node.js (npx) is not installed. Please install Node.js."
18
+ exit 1
19
+ fi
20
+
21
+ echo "Installing Get-Shit-Done workflows for requested runtimes: ${runtimes.join(", ")}"
22
+ npx yes | npx get-shit-done-cc@latest --local ${flags}
23
+
24
+ echo "GSD Integration Complete!"
25
+ echo "Check the injected folders matching your target platform (e.g. .claude, .codex)."
26
+ `;
27
+
28
+ const ps1 = `# Automatically generated by Better-OpenClaw
29
+
30
+ if (!(Get-Command npx -ErrorAction SilentlyContinue)) {
31
+ Write-Error "Error: Node.js (npx) is not installed. Please install Node.js."
32
+ exit 1
33
+ }
34
+
35
+ Write-Host "Installing Get-Shit-Done workflows for requested runtimes: ${runtimes.join(", ")}"
36
+ npx get-shit-done-cc@latest --local ${flags}
37
+
38
+ Write-Host "GSD Integration Complete!"
39
+ Write-Host "Check the injected folders matching your target platform (e.g. .claude, .codex)."
40
+ `;
41
+
42
+ return { sh, ps1 };
43
+ }