@better-openclaw/core 1.0.11 → 1.0.13
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/README.md +70 -0
- package/dist/bare-metal-partition.test.mjs +1 -1
- package/dist/composer.d.mts.map +1 -1
- package/dist/composer.mjs +5 -3
- package/dist/composer.mjs.map +1 -1
- package/dist/composer.snapshot.test.mjs +1 -1
- package/dist/composer.test.mjs +1 -1
- package/dist/generate.test.mjs +1 -1
- package/dist/generators/bare-metal-install.test.mjs +1 -1
- package/dist/generators/caddy.test.mjs +1 -1
- package/dist/generators/env.test.mjs +1 -1
- package/dist/generators/health-check.mjs.map +1 -1
- package/dist/generators/health-check.test.mjs +1 -1
- package/dist/generators/scripts.test.mjs +1 -1
- package/dist/generators/traefik.test.mjs +1 -1
- package/dist/{magic-string.es-1uTtupLe.mjs → magic-string.es-CfFonO_S.mjs} +1 -1
- package/dist/{magic-string.es-1uTtupLe.mjs.map → magic-string.es-CfFonO_S.mjs.map} +1 -1
- package/dist/manifest-BjK4ALvr.mjs +1158 -0
- package/dist/manifest-BjK4ALvr.mjs.map +1 -0
- package/dist/migrations.d.mts.map +1 -1
- package/dist/migrations.mjs.map +1 -1
- package/dist/migrations.test.mjs +1 -1
- package/dist/presets/registry.test.mjs +1 -1
- package/dist/resolver.test.mjs +1 -1
- package/dist/schema.d.mts +4 -0
- package/dist/schema.d.mts.map +1 -1
- package/dist/schema.mjs +2 -1
- package/dist/schema.mjs.map +1 -1
- package/dist/schema.test.mjs +1 -1
- package/dist/services/definitions/hexstrike.d.mts +7 -0
- package/dist/services/definitions/hexstrike.d.mts.map +1 -0
- package/dist/services/definitions/hexstrike.mjs +44 -0
- package/dist/services/definitions/hexstrike.mjs.map +1 -0
- package/dist/services/definitions/index.d.mts +6 -1
- package/dist/services/definitions/index.d.mts.map +1 -1
- package/dist/services/definitions/index.mjs +12 -2
- package/dist/services/definitions/index.mjs.map +1 -1
- package/dist/services/definitions/pentagi.d.mts +7 -0
- package/dist/services/definitions/pentagi.d.mts.map +1 -0
- package/dist/services/definitions/pentagi.mjs +44 -0
- package/dist/services/definitions/pentagi.mjs.map +1 -0
- package/dist/services/definitions/pentestagent.d.mts +7 -0
- package/dist/services/definitions/pentestagent.d.mts.map +1 -0
- package/dist/services/definitions/pentestagent.mjs +39 -0
- package/dist/services/definitions/pentestagent.mjs.map +1 -0
- package/dist/services/definitions/scrapling.d.mts +7 -0
- package/dist/services/definitions/scrapling.d.mts.map +1 -0
- package/dist/services/definitions/scrapling.mjs +44 -0
- package/dist/services/definitions/scrapling.mjs.map +1 -0
- package/dist/services/definitions/solidityguard.d.mts +7 -0
- package/dist/services/definitions/solidityguard.d.mts.map +1 -0
- package/dist/services/definitions/solidityguard.mjs +49 -0
- package/dist/services/definitions/solidityguard.mjs.map +1 -0
- package/dist/services/registry.test.mjs +1 -1
- package/dist/skills/skill-manifest.d.mts.map +1 -1
- package/dist/skills/skill-manifest.mjs +5 -13
- package/dist/skills/skill-manifest.mjs.map +1 -1
- package/dist/types.mjs +5 -0
- package/dist/types.mjs.map +1 -1
- package/dist/validator.test.mjs +1 -1
- package/dist/version-manager.test.mjs +1 -1
- package/dist/{vi.2VT5v0um-YSByewHe.mjs → vi.2VT5v0um-BgmKutxR.mjs} +2 -2
- package/dist/{vi.2VT5v0um-YSByewHe.mjs.map → vi.2VT5v0um-BgmKutxR.mjs.map} +1 -1
- package/package.json +1 -1
- package/src/composer.ts +12 -3
- package/src/generators/health-check.ts +46 -8
- package/src/migrations.ts +0 -1
- package/src/schema.ts +1 -0
- package/src/services/definitions/hexstrike.ts +40 -0
- package/src/services/definitions/index.ts +15 -0
- package/src/services/definitions/pentagi.ts +40 -0
- package/src/services/definitions/pentestagent.ts +33 -0
- package/src/services/definitions/scrapling.ts +40 -0
- package/src/services/definitions/solidityguard.ts +46 -0
- package/src/skills/manifest.json +1391 -0
- package/src/skills/manifest.schema.json +51 -0
- package/src/skills/skill-manifest.ts +27 -22
- package/src/types.ts +1 -0
package/package.json
CHANGED
package/src/composer.ts
CHANGED
|
@@ -74,7 +74,11 @@ function buildGatewayServices(
|
|
|
74
74
|
}
|
|
75
75
|
if (def.openclawVolumeMounts) {
|
|
76
76
|
for (const vol of def.openclawVolumeMounts) {
|
|
77
|
-
|
|
77
|
+
const isBindMount =
|
|
78
|
+
vol.name.startsWith("./") || vol.name.startsWith("/") || vol.name.startsWith("~");
|
|
79
|
+
if (!isBindMount) {
|
|
80
|
+
allVolumes.add(vol.name);
|
|
81
|
+
}
|
|
78
82
|
gatewayVolumes.push(`${vol.name}:${vol.containerPath}`);
|
|
79
83
|
}
|
|
80
84
|
}
|
|
@@ -172,8 +176,13 @@ function buildCompanionService(
|
|
|
172
176
|
|
|
173
177
|
if (def.volumes.length > 0) {
|
|
174
178
|
svc.volumes = def.volumes.map((v) => {
|
|
175
|
-
|
|
176
|
-
|
|
179
|
+
const isBindMount =
|
|
180
|
+
v.name.startsWith("./") || v.name.startsWith("/") || v.name.startsWith("~");
|
|
181
|
+
|
|
182
|
+
if (!isBindMount) {
|
|
183
|
+
allVolumes.add(v.name);
|
|
184
|
+
volumeNames.push(v.name);
|
|
185
|
+
}
|
|
177
186
|
return `${v.name}:${v.containerPath}`;
|
|
178
187
|
});
|
|
179
188
|
}
|
|
@@ -75,7 +75,9 @@ function generateBashScript(resolved: ResolverOutput, options: HealthCheckOption
|
|
|
75
75
|
dockerChecks.push(L(" # ── ", svc.icon, " ", svc.name, " ──"));
|
|
76
76
|
dockerChecks.push(L(' check_container "', svc.id, '" "', svc.name, '" "', svc.icon, '"'));
|
|
77
77
|
for (const p of svc.ports.filter((pp) => pp.exposed)) {
|
|
78
|
-
dockerChecks.push(
|
|
78
|
+
dockerChecks.push(
|
|
79
|
+
L(' check_port "', svc.id, '" ', String(p.host), ' "', p.description, '"'),
|
|
80
|
+
);
|
|
79
81
|
}
|
|
80
82
|
if (svc.healthCheckCmd) {
|
|
81
83
|
dockerChecks.push(
|
|
@@ -253,8 +255,8 @@ function generateBashScript(resolved: ResolverOutput, options: HealthCheckOption
|
|
|
253
255
|
" fi",
|
|
254
256
|
"",
|
|
255
257
|
" local state health_status",
|
|
256
|
-
|
|
257
|
-
|
|
258
|
+
' state=$(echo "$status" | grep -o \'"State":"[^"]*"\' | cut -d\'"\' -f4 || echo "unknown")',
|
|
259
|
+
' health_status=$(echo "$status" | grep -o \'"Health":"[^"]*"\' | cut -d\'"\' -f4 || echo "none")',
|
|
258
260
|
"",
|
|
259
261
|
' restarts=$(docker inspect --format="{{.RestartCount}}" "$(docker compose ps -q "$id" 2>/dev/null | head -1)" 2>/dev/null || echo "0")',
|
|
260
262
|
"",
|
|
@@ -463,11 +465,27 @@ function generatePowerShellScript(resolved: ResolverOutput, options: HealthCheck
|
|
|
463
465
|
for (const svc of checks) {
|
|
464
466
|
dockerChecks.push(L(" # ", svc.icon, " ", svc.name));
|
|
465
467
|
dockerChecks.push(
|
|
466
|
-
L(
|
|
468
|
+
L(
|
|
469
|
+
' Test-Container -ServiceId "',
|
|
470
|
+
svc.id,
|
|
471
|
+
'" -ServiceName "',
|
|
472
|
+
svc.name,
|
|
473
|
+
'" -Icon "',
|
|
474
|
+
svc.icon,
|
|
475
|
+
'"',
|
|
476
|
+
),
|
|
467
477
|
);
|
|
468
478
|
for (const p of svc.ports.filter((pp) => pp.exposed)) {
|
|
469
479
|
dockerChecks.push(
|
|
470
|
-
L(
|
|
480
|
+
L(
|
|
481
|
+
' Test-Port -ServiceId "',
|
|
482
|
+
svc.id,
|
|
483
|
+
'" -Port ',
|
|
484
|
+
String(p.host),
|
|
485
|
+
' -Description "',
|
|
486
|
+
p.description,
|
|
487
|
+
'"',
|
|
488
|
+
),
|
|
471
489
|
);
|
|
472
490
|
}
|
|
473
491
|
dockerChecks.push("");
|
|
@@ -478,11 +496,27 @@ function generatePowerShellScript(resolved: ResolverOutput, options: HealthCheck
|
|
|
478
496
|
for (const svc of checks) {
|
|
479
497
|
bmChecks.push(L(" # ", svc.icon, " ", svc.name));
|
|
480
498
|
bmChecks.push(
|
|
481
|
-
L(
|
|
499
|
+
L(
|
|
500
|
+
' Test-ProcessRunning -ServiceId "',
|
|
501
|
+
svc.id,
|
|
502
|
+
'" -ServiceName "',
|
|
503
|
+
svc.name,
|
|
504
|
+
'" -Icon "',
|
|
505
|
+
svc.icon,
|
|
506
|
+
'"',
|
|
507
|
+
),
|
|
482
508
|
);
|
|
483
509
|
for (const p of svc.ports.filter((pp) => pp.exposed)) {
|
|
484
510
|
bmChecks.push(
|
|
485
|
-
L(
|
|
511
|
+
L(
|
|
512
|
+
' Test-Port -ServiceId "',
|
|
513
|
+
svc.id,
|
|
514
|
+
'" -Port ',
|
|
515
|
+
String(p.host),
|
|
516
|
+
' -Description "',
|
|
517
|
+
p.description,
|
|
518
|
+
'"',
|
|
519
|
+
),
|
|
486
520
|
);
|
|
487
521
|
}
|
|
488
522
|
bmChecks.push("");
|
|
@@ -498,7 +532,11 @@ function generatePowerShellScript(resolved: ResolverOutput, options: HealthCheck
|
|
|
498
532
|
"",
|
|
499
533
|
".DESCRIPTION",
|
|
500
534
|
" Auto-generated verification script for your stack.",
|
|
501
|
-
L(
|
|
535
|
+
L(
|
|
536
|
+
" Checks ",
|
|
537
|
+
String(total),
|
|
538
|
+
" services: container status, port reachability, and log errors.",
|
|
539
|
+
),
|
|
502
540
|
"",
|
|
503
541
|
".PARAMETER Quick",
|
|
504
542
|
" Skip log scanning for faster results.",
|
package/src/migrations.ts
CHANGED
package/src/schema.ts
CHANGED
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { ServiceDefinition } from "../../types.js";
|
|
2
|
+
|
|
3
|
+
export const hexstrikeDefinition: ServiceDefinition = {
|
|
4
|
+
id: "hexstrike",
|
|
5
|
+
name: "HexStrike AI",
|
|
6
|
+
description: "AI-Powered MCP Cybersecurity Automation Platform with 150+ pentesting tools.",
|
|
7
|
+
category: "security",
|
|
8
|
+
icon: "⚔️",
|
|
9
|
+
|
|
10
|
+
image: "ghcr.io/0x4m4/hexstrike-ai",
|
|
11
|
+
imageTag: "latest",
|
|
12
|
+
ports: [
|
|
13
|
+
{
|
|
14
|
+
host: 8888,
|
|
15
|
+
container: 8888,
|
|
16
|
+
description: "HexStrike MCP Server",
|
|
17
|
+
exposed: true,
|
|
18
|
+
},
|
|
19
|
+
],
|
|
20
|
+
volumes: [],
|
|
21
|
+
environment: [],
|
|
22
|
+
command: "mcp", // Instructs standard Python/Docker runtime to serve the MCP endpoint
|
|
23
|
+
dependsOn: [],
|
|
24
|
+
restartPolicy: "unless-stopped",
|
|
25
|
+
networks: ["openclaw-network"],
|
|
26
|
+
|
|
27
|
+
skills: [{ skillId: "hexstrike-mcp", autoInstall: true }],
|
|
28
|
+
openclawEnvVars: [],
|
|
29
|
+
|
|
30
|
+
docsUrl: "https://github.com/0x4m4/hexstrike-ai",
|
|
31
|
+
tags: ["security", "pentesting", "mcp", "agent"],
|
|
32
|
+
maturity: "experimental",
|
|
33
|
+
|
|
34
|
+
requires: [],
|
|
35
|
+
recommends: [],
|
|
36
|
+
conflictsWith: [],
|
|
37
|
+
|
|
38
|
+
minMemoryMB: 2048,
|
|
39
|
+
gpuRequired: false,
|
|
40
|
+
};
|
|
@@ -23,6 +23,7 @@ export { geminiCliDefinition } from "./gemini-cli.js";
|
|
|
23
23
|
export { giteaDefinition } from "./gitea.js";
|
|
24
24
|
export { gotifyDefinition } from "./gotify.js";
|
|
25
25
|
export { grafanaDefinition } from "./grafana.js";
|
|
26
|
+
export { hexstrikeDefinition } from "./hexstrike.js";
|
|
26
27
|
export { kimiDefinition } from "./kimi.js";
|
|
27
28
|
export { lasuiteMeetAgentsDefinition } from "./lasuite-meet-agents.js";
|
|
28
29
|
export { lasuiteMeetBackendDefinition } from "./lasuite-meet-backend.js";
|
|
@@ -49,6 +50,8 @@ export { opencodeDefinition } from "./opencode.js";
|
|
|
49
50
|
export { openpanelDefinition } from "./openpanel.js";
|
|
50
51
|
export { outlineDefinition } from "./outline.js";
|
|
51
52
|
export { paperlessNgxDefinition } from "./paperless-ngx.js";
|
|
53
|
+
export { pentagiDefinition } from "./pentagi.js";
|
|
54
|
+
export { pentestagentDefinition } from "./pentestagent.js";
|
|
52
55
|
export { playwrightServerDefinition } from "./playwright-server.js";
|
|
53
56
|
export { portainerDefinition } from "./portainer.js";
|
|
54
57
|
export { postgresqlDefinition } from "./postgresql.js";
|
|
@@ -58,7 +61,9 @@ export { qdrantDefinition } from "./qdrant.js";
|
|
|
58
61
|
export { redisDefinition } from "./redis.js";
|
|
59
62
|
export { remotionDefinition } from "./remotion.js";
|
|
60
63
|
export { rocketchatDefinition } from "./rocketchat.js";
|
|
64
|
+
export { scraplingDefinition } from "./scrapling.js";
|
|
61
65
|
export { searxngDefinition } from "./searxng.js";
|
|
66
|
+
export { solidityGuardDefinition } from "./solidityguard.js";
|
|
62
67
|
export { stableDiffusionDefinition } from "./stable-diffusion.js";
|
|
63
68
|
export { steelBrowserDefinition } from "./steel-browser.js";
|
|
64
69
|
export { streamGatewayDefinition } from "./stream-gateway.js";
|
|
@@ -100,6 +105,7 @@ import { geminiCliDefinition } from "./gemini-cli.js";
|
|
|
100
105
|
import { giteaDefinition } from "./gitea.js";
|
|
101
106
|
import { gotifyDefinition } from "./gotify.js";
|
|
102
107
|
import { grafanaDefinition } from "./grafana.js";
|
|
108
|
+
import { hexstrikeDefinition } from "./hexstrike.js";
|
|
103
109
|
import { kimiDefinition } from "./kimi.js";
|
|
104
110
|
import { lasuiteMeetAgentsDefinition } from "./lasuite-meet-agents.js";
|
|
105
111
|
import { lasuiteMeetBackendDefinition } from "./lasuite-meet-backend.js";
|
|
@@ -126,6 +132,8 @@ import { opencodeDefinition } from "./opencode.js";
|
|
|
126
132
|
import { openpanelDefinition } from "./openpanel.js";
|
|
127
133
|
import { outlineDefinition } from "./outline.js";
|
|
128
134
|
import { paperlessNgxDefinition } from "./paperless-ngx.js";
|
|
135
|
+
import { pentagiDefinition } from "./pentagi.js";
|
|
136
|
+
import { pentestagentDefinition } from "./pentestagent.js";
|
|
129
137
|
import { playwrightServerDefinition } from "./playwright-server.js";
|
|
130
138
|
import { portainerDefinition } from "./portainer.js";
|
|
131
139
|
import { postgresqlDefinition } from "./postgresql.js";
|
|
@@ -135,7 +143,9 @@ import { qdrantDefinition } from "./qdrant.js";
|
|
|
135
143
|
import { redisDefinition } from "./redis.js";
|
|
136
144
|
import { remotionDefinition } from "./remotion.js";
|
|
137
145
|
import { rocketchatDefinition } from "./rocketchat.js";
|
|
146
|
+
import { scraplingDefinition } from "./scrapling.js";
|
|
138
147
|
import { searxngDefinition } from "./searxng.js";
|
|
148
|
+
import { solidityGuardDefinition } from "./solidityguard.js";
|
|
139
149
|
import { stableDiffusionDefinition } from "./stable-diffusion.js";
|
|
140
150
|
import { steelBrowserDefinition } from "./steel-browser.js";
|
|
141
151
|
import { streamGatewayDefinition } from "./stream-gateway.js";
|
|
@@ -227,4 +237,9 @@ export const allServiceDefinitions: ServiceDefinition[] = [
|
|
|
227
237
|
neo4jDefinition,
|
|
228
238
|
calComDefinition,
|
|
229
239
|
xyopsDefinition,
|
|
240
|
+
scraplingDefinition,
|
|
241
|
+
hexstrikeDefinition,
|
|
242
|
+
solidityGuardDefinition,
|
|
243
|
+
pentagiDefinition,
|
|
244
|
+
pentestagentDefinition,
|
|
230
245
|
];
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { ServiceDefinition } from "../../types.js";
|
|
2
|
+
|
|
3
|
+
export const pentagiDefinition: ServiceDefinition = {
|
|
4
|
+
id: "pentagi",
|
|
5
|
+
name: "PentAGI",
|
|
6
|
+
description: "Fully autonomous AI Agents system capable of performing complex penetration testing tasks.",
|
|
7
|
+
category: "security",
|
|
8
|
+
icon: "🕵️",
|
|
9
|
+
|
|
10
|
+
image: "vxcontrol/pentagi",
|
|
11
|
+
imageTag: "latest",
|
|
12
|
+
ports: [
|
|
13
|
+
{
|
|
14
|
+
host: 8080, // Assuming default or common port for web UI, might need adjustment based on their docker-compose
|
|
15
|
+
container: 8080,
|
|
16
|
+
description: "PentAGI Interface",
|
|
17
|
+
exposed: true,
|
|
18
|
+
},
|
|
19
|
+
],
|
|
20
|
+
volumes: [],
|
|
21
|
+
environment: [],
|
|
22
|
+
command: "", // Leave empty to use default image command
|
|
23
|
+
dependsOn: [],
|
|
24
|
+
restartPolicy: "unless-stopped",
|
|
25
|
+
networks: ["openclaw-network"],
|
|
26
|
+
|
|
27
|
+
skills: [{ skillId: "pentagi-orchestrator", autoInstall: true }],
|
|
28
|
+
openclawEnvVars: [],
|
|
29
|
+
|
|
30
|
+
docsUrl: "https://pentagi.com",
|
|
31
|
+
tags: ["security", "pentesting", "autonomous", "agents"],
|
|
32
|
+
maturity: "experimental",
|
|
33
|
+
|
|
34
|
+
requires: [],
|
|
35
|
+
recommends: [],
|
|
36
|
+
conflictsWith: [],
|
|
37
|
+
|
|
38
|
+
minMemoryMB: 4096, // Documentation explicitly asks for Minimum 4GB RAM
|
|
39
|
+
gpuRequired: false,
|
|
40
|
+
};
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { ServiceDefinition } from "../../types.js";
|
|
2
|
+
|
|
3
|
+
export const pentestagentDefinition: ServiceDefinition = {
|
|
4
|
+
id: "pentestagent",
|
|
5
|
+
name: "PentestAgent",
|
|
6
|
+
description: "AI agent framework for black-box security testing via internal Docker isolated environments.",
|
|
7
|
+
category: "security",
|
|
8
|
+
icon: "🔍",
|
|
9
|
+
|
|
10
|
+
image: "ghcr.io/gh05tcrew/pentestagent",
|
|
11
|
+
imageTag: "latest",
|
|
12
|
+
ports: [], // Typically an internal CLI/TUI
|
|
13
|
+
volumes: [],
|
|
14
|
+
environment: [],
|
|
15
|
+
command: "tail -f /dev/null", // Keeps container alive for executing interactive TUIs
|
|
16
|
+
dependsOn: [],
|
|
17
|
+
restartPolicy: "unless-stopped",
|
|
18
|
+
networks: ["openclaw-network"],
|
|
19
|
+
|
|
20
|
+
skills: [{ skillId: "pentestagent-runner", autoInstall: true }],
|
|
21
|
+
openclawEnvVars: [],
|
|
22
|
+
|
|
23
|
+
docsUrl: "https://github.com/GH05TCREW/pentestagent",
|
|
24
|
+
tags: ["security", "pentesting", "tui", "framework"],
|
|
25
|
+
maturity: "experimental",
|
|
26
|
+
|
|
27
|
+
requires: [],
|
|
28
|
+
recommends: [],
|
|
29
|
+
conflictsWith: [],
|
|
30
|
+
|
|
31
|
+
minMemoryMB: 1024,
|
|
32
|
+
gpuRequired: false,
|
|
33
|
+
};
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import type { ServiceDefinition } from "../../types.js";
|
|
2
|
+
|
|
3
|
+
export const scraplingDefinition: ServiceDefinition = {
|
|
4
|
+
id: "scrapling",
|
|
5
|
+
name: "Scrapling",
|
|
6
|
+
description: "Adaptive Web Scraping framework with anti-bot bypass capabilities and MCP server.",
|
|
7
|
+
category: "browser",
|
|
8
|
+
icon: "🕷️",
|
|
9
|
+
|
|
10
|
+
image: "ghcr.io/d4vinci/scrapling",
|
|
11
|
+
imageTag: "latest",
|
|
12
|
+
ports: [
|
|
13
|
+
{
|
|
14
|
+
host: 8000,
|
|
15
|
+
container: 8000,
|
|
16
|
+
description: "Scrapling MCP Server",
|
|
17
|
+
exposed: true,
|
|
18
|
+
},
|
|
19
|
+
],
|
|
20
|
+
volumes: [],
|
|
21
|
+
environment: [],
|
|
22
|
+
command: "mcp",
|
|
23
|
+
dependsOn: [],
|
|
24
|
+
restartPolicy: "unless-stopped",
|
|
25
|
+
networks: ["openclaw-network"],
|
|
26
|
+
|
|
27
|
+
skills: [{ skillId: "scrapling-scrape", autoInstall: true }],
|
|
28
|
+
openclawEnvVars: [],
|
|
29
|
+
|
|
30
|
+
docsUrl: "https://scrapling.readthedocs.io",
|
|
31
|
+
tags: ["data", "scraping", "automation", "mcp"],
|
|
32
|
+
maturity: "stable",
|
|
33
|
+
|
|
34
|
+
requires: [],
|
|
35
|
+
recommends: [],
|
|
36
|
+
conflictsWith: [],
|
|
37
|
+
|
|
38
|
+
minMemoryMB: 1024,
|
|
39
|
+
gpuRequired: false,
|
|
40
|
+
};
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
import type { ServiceDefinition } from "../../types.js";
|
|
2
|
+
|
|
3
|
+
export const solidityGuardDefinition: ServiceDefinition = {
|
|
4
|
+
id: "solidityguard",
|
|
5
|
+
name: "SolidityGuard",
|
|
6
|
+
description: "7-Phase Deep Audit Smart Contract Security Auditor for EVM/Solidity.",
|
|
7
|
+
category: "security",
|
|
8
|
+
icon: "🛡️",
|
|
9
|
+
|
|
10
|
+
image: "altresearch/solidityguard", // Presumed standard dockerhub naming format, usually ghcr.io or dockerhub
|
|
11
|
+
imageTag: "latest",
|
|
12
|
+
ports: [
|
|
13
|
+
{
|
|
14
|
+
host: 8000,
|
|
15
|
+
container: 8000,
|
|
16
|
+
description: "SolidityGuard Web Dashboard",
|
|
17
|
+
exposed: true,
|
|
18
|
+
},
|
|
19
|
+
],
|
|
20
|
+
volumes: [
|
|
21
|
+
{
|
|
22
|
+
name: "./contracts",
|
|
23
|
+
containerPath: "/audit",
|
|
24
|
+
description: "Mounts local contracts for CLI deep auditing.",
|
|
25
|
+
},
|
|
26
|
+
],
|
|
27
|
+
environment: [],
|
|
28
|
+
command: "web", // Presumed default startup command for the web UI if no CLI args are given
|
|
29
|
+
dependsOn: [],
|
|
30
|
+
restartPolicy: "unless-stopped",
|
|
31
|
+
networks: ["openclaw-network"],
|
|
32
|
+
|
|
33
|
+
skills: [{ skillId: "solidityguard-audit", autoInstall: true }],
|
|
34
|
+
openclawEnvVars: [],
|
|
35
|
+
|
|
36
|
+
docsUrl: "https://solidityguard.org",
|
|
37
|
+
tags: ["security", "web3", "solidity", "evm", "audit"],
|
|
38
|
+
maturity: "stable",
|
|
39
|
+
|
|
40
|
+
requires: [],
|
|
41
|
+
recommends: [],
|
|
42
|
+
conflictsWith: [],
|
|
43
|
+
|
|
44
|
+
minMemoryMB: 2048,
|
|
45
|
+
gpuRequired: false,
|
|
46
|
+
};
|