averecion-clawguard 2.7.0

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 ADDED
@@ -0,0 +1,105 @@
1
+ # 🦞 Clawguard - Real-Time AI Agent Monitoring
2
+
3
+ Clawguard monitors your AI agent's activity in real-time. See everything your agent does, detect dangerous commands and prompt injection attacks.
4
+
5
+ ## What Clawguard Does
6
+
7
+ **✓ Monitors:**
8
+ - Shell commands (rm, chmod, curl piped to bash, etc.)
9
+ - File writes and deletions
10
+ - Network requests
11
+ - Credential/environment access
12
+ - Prompt injection attempts
13
+
14
+ **✗ Clawguard does NOT:**
15
+ - Send data to external servers
16
+ - Modify your agent's core behavior
17
+ - Store data outside your machine
18
+
19
+ ## Quick Start
20
+
21
+ Just run:
22
+ ```bash
23
+ npx averecion-clawguard start
24
+ ```
25
+
26
+ Your dashboard opens at `http://localhost:4321/clawguard`
27
+
28
+ Works on Windows, Mac, and Linux - no install needed!
29
+
30
+ ### Optional: Install Globally
31
+
32
+ For frequent use, install globally:
33
+ ```bash
34
+ npm install -g averecion-clawguard # add sudo on Mac/Linux if needed
35
+ clawguard start
36
+ ```
37
+
38
+ ## How It Works
39
+
40
+ ### Show Mode (First Run)
41
+ When first installed, Clawguard runs in "Show Mode" - it logs what it WOULD block but doesn't actually block anything. This lets you see how it works without disruption.
42
+
43
+ After 10 actions, you'll be prompted to enable full protection.
44
+
45
+ ### Protection Levels
46
+
47
+ | Level | Description |
48
+ |-------|-------------|
49
+ | 😊 **Relaxed** | Only block the really dangerous stuff |
50
+ | ⚖️ **Balanced** | Ask before risky actions (recommended) |
51
+ | 🔒 **Strict** | Approve everything important |
52
+
53
+ ## Commands
54
+
55
+ ```bash
56
+ # Check status
57
+ openclaw clawguard status
58
+
59
+ # Open dashboard
60
+ openclaw clawguard dashboard
61
+
62
+ # Enable/disable protection
63
+ openclaw clawguard enable
64
+ openclaw clawguard disable
65
+
66
+ # Change protection level
67
+ openclaw clawguard level strict
68
+
69
+ # View recent activity
70
+ openclaw clawguard logs
71
+ ```
72
+
73
+ ## Dashboard
74
+
75
+ The Clawguard dashboard shows:
76
+ - Real-time action monitoring
77
+ - Blocked action history
78
+ - Approval requests
79
+ - Protection score
80
+
81
+ Access at: `http://127.0.0.1:4321/clawguard`
82
+
83
+ ## Configuration
84
+
85
+ Config file: `~/.clawguard/config.json`
86
+ Logs: `~/.clawguard/logs/`
87
+ Custom policy: `~/.clawguard/policy.json`
88
+
89
+ ## Transparency
90
+
91
+ Clawguard is:
92
+ - ✅ Open source
93
+ - ✅ Local-only (no cloud)
94
+ - ✅ No data collection
95
+ - ✅ Can be disabled anytime
96
+
97
+ ## Support
98
+
99
+ - Issues: [github.com/averecion/clawguard](https://github.com/averecion/clawguard)
100
+ - Docs: [clawguard.dev](https://clawguard.dev)
101
+ - Full governance platform: [averecion.com](https://averecion.com)
102
+
103
+ ---
104
+
105
+ Made with 🦞 by [Averecion](https://averecion.com)
@@ -0,0 +1,34 @@
1
+ {
2
+ "id": "clawguard",
3
+ "name": "Clawguard",
4
+ "version": "2.0.3",
5
+ "description": "AI safety guardrails - monitors actions, blocks dangerous commands, requires approval for risky operations",
6
+ "homepage": "https://github.com/averecion/clawguard",
7
+ "author": "Averecion",
8
+ "license": "MIT",
9
+ "configSchema": {
10
+ "type": "object",
11
+ "additionalProperties": false,
12
+ "properties": {
13
+ "protectionLevel": {
14
+ "type": "string",
15
+ "enum": ["relaxed", "balanced", "strict"],
16
+ "default": "balanced"
17
+ },
18
+ "dashboardPort": {
19
+ "type": "number",
20
+ "default": 4321
21
+ }
22
+ }
23
+ },
24
+ "uiHints": {
25
+ "protectionLevel": {
26
+ "label": "Protection Level",
27
+ "placeholder": "balanced"
28
+ },
29
+ "dashboardPort": {
30
+ "label": "Dashboard Port",
31
+ "placeholder": "4321"
32
+ }
33
+ }
34
+ }
package/dist/cli.d.ts ADDED
@@ -0,0 +1,3 @@
1
+ #!/usr/bin/env node
2
+ export {};
3
+ //# sourceMappingURL=cli.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":""}
package/dist/cli.js ADDED
@@ -0,0 +1,316 @@
1
+ #!/usr/bin/env node
2
+ "use strict";
3
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
4
+ if (k2 === undefined) k2 = k;
5
+ var desc = Object.getOwnPropertyDescriptor(m, k);
6
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
7
+ desc = { enumerable: true, get: function() { return m[k]; } };
8
+ }
9
+ Object.defineProperty(o, k2, desc);
10
+ }) : (function(o, m, k, k2) {
11
+ if (k2 === undefined) k2 = k;
12
+ o[k2] = m[k];
13
+ }));
14
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
15
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
16
+ }) : function(o, v) {
17
+ o["default"] = v;
18
+ });
19
+ var __importStar = (this && this.__importStar) || function (mod) {
20
+ if (mod && mod.__esModule) return mod;
21
+ var result = {};
22
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
23
+ __setModuleDefault(result, mod);
24
+ return result;
25
+ };
26
+ Object.defineProperty(exports, "__esModule", { value: true });
27
+ const consent_1 = require("./consent");
28
+ const hooks_1 = require("./hooks");
29
+ const child_process_1 = require("child_process");
30
+ const fs = __importStar(require("fs"));
31
+ const path = __importStar(require("path"));
32
+ const os = __importStar(require("os"));
33
+ const https = __importStar(require("https"));
34
+ const LOG_DIR = path.join(os.homedir(), ".clawguard", "logs");
35
+ const PACKAGE_NAME = "averecion-clawguard";
36
+ const CURRENT_VERSION = "2.7.0";
37
+ function checkForUpdates() {
38
+ const url = `https://registry.npmjs.org/${PACKAGE_NAME}/latest`;
39
+ const req = https.get(url, { timeout: 3000 }, (res) => {
40
+ let data = "";
41
+ res.on("data", (chunk) => { data += chunk; });
42
+ res.on("end", () => {
43
+ try {
44
+ const latest = JSON.parse(data).version;
45
+ if (latest && latest !== CURRENT_VERSION) {
46
+ const parts = (v) => v.split(".").map(Number);
47
+ const cur = parts(CURRENT_VERSION);
48
+ const lat = parts(latest);
49
+ const isNewer = lat[0] > cur[0] || (lat[0] === cur[0] && lat[1] > cur[1]) || (lat[0] === cur[0] && lat[1] === cur[1] && lat[2] > cur[2]);
50
+ if (isNewer) {
51
+ console.log(`\x1b[33m ⬆ Update available: v${CURRENT_VERSION} → v${latest}\x1b[0m`);
52
+ console.log(`\x1b[33m Run: npx averecion-clawguard@latest start\x1b[0m\n`);
53
+ }
54
+ }
55
+ }
56
+ catch { }
57
+ });
58
+ });
59
+ req.on("error", () => { });
60
+ req.end();
61
+ }
62
+ const args = process.argv.slice(2);
63
+ const command = args[0];
64
+ function printStatus() {
65
+ const config = (0, consent_1.loadConfig)();
66
+ console.log(`
67
+ \x1b[31m🦞 Clawguard v${CURRENT_VERSION}\x1b[0m - Status
68
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
69
+
70
+ Monitoring: ${config.enabled ? "\x1b[32mActive\x1b[0m" : "\x1b[31mOff\x1b[0m"}
71
+ Alert Level: \x1b[1m${config.protectionLevel}\x1b[0m
72
+ Show Mode: ${config.showMode ? `\x1b[33mActive (${config.showModeActionsRemaining} actions left)\x1b[0m` : "\x1b[32mComplete\x1b[0m"}
73
+ Configured: ${config.consented ? `\x1b[32mYes\x1b[0m (${config.consentedAt})` : "\x1b[31mNo\x1b[0m"}
74
+ `);
75
+ // Show recent activity
76
+ const today = new Date().toISOString().split("T")[0];
77
+ const logFile = path.join(LOG_DIR, `${today}.jsonl`);
78
+ if (fs.existsSync(logFile)) {
79
+ const lines = fs.readFileSync(logFile, "utf-8").trim().split("\n");
80
+ const recentCount = lines.length;
81
+ const flagged = lines.filter(l => {
82
+ try {
83
+ return !JSON.parse(l).allowed;
84
+ }
85
+ catch {
86
+ return false;
87
+ }
88
+ }).length;
89
+ console.log(`Today's Activity:
90
+ Total actions: ${recentCount}
91
+ Flagged: ${flagged}
92
+ `);
93
+ }
94
+ else {
95
+ console.log("Today's Activity: No actions logged yet.\n");
96
+ }
97
+ }
98
+ function enableMonitoring() {
99
+ const config = (0, consent_1.loadConfig)();
100
+ config.enabled = true;
101
+ config.showMode = false;
102
+ (0, consent_1.saveConfig)(config);
103
+ console.log("\x1b[32m✓ Clawguard monitoring enabled!\x1b[0m");
104
+ }
105
+ function disableMonitoring() {
106
+ const config = (0, consent_1.loadConfig)();
107
+ config.enabled = false;
108
+ (0, consent_1.saveConfig)(config);
109
+ console.log("\x1b[33m⚠ Clawguard monitoring disabled.\x1b[0m");
110
+ console.log("Run 'openclaw clawguard enable' to re-enable.");
111
+ }
112
+ async function startServer() {
113
+ let config = (0, consent_1.loadConfig)();
114
+ // Run onboarding if user hasn't consented yet
115
+ if (!config.consented) {
116
+ console.log("\n\x1b[36m👋 Welcome to Clawguard! Let's set things up first.\x1b[0m\n");
117
+ await (0, consent_1.runConsentFlow)();
118
+ // Reload config after consent flow saves it
119
+ config = (0, consent_1.loadConfig)();
120
+ }
121
+ const port = 4321;
122
+ // Set the secret before importing - use config secret, env override, or default
123
+ const secret = process.env.CLAWGUARD_SECRET || config.secret || "clawguard-local";
124
+ process.env.LITE_ADAPTER_SECRET = secret;
125
+ process.env.PORT = String(port);
126
+ console.log(`
127
+ \x1b[31m🦞 Clawguard v${CURRENT_VERSION}\x1b[0m - Starting monitoring server...
128
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
129
+
130
+ Dashboard: http://localhost:${port}/clawguard
131
+ Log files: ~/.clawguard/logs/
132
+
133
+ Press Ctrl+C to stop.
134
+ `);
135
+ checkForUpdates();
136
+ try {
137
+ // Import and start the server properly
138
+ // @ts-ignore - dynamic import at runtime
139
+ const serverModule = require("averecion-lite/dist/server.js");
140
+ await serverModule.startServer(port, "0.0.0.0");
141
+ }
142
+ catch (err) {
143
+ console.log(`\x1b[31mError starting server: ${err.message}\x1b[0m`);
144
+ console.log("Try running: npm install -g averecion-lite");
145
+ }
146
+ }
147
+ function openDashboard() {
148
+ const port = 4321;
149
+ console.log(`\x1b[36m🦞 Opening Clawguard dashboard...\x1b[0m`);
150
+ console.log(` http://127.0.0.1:${port}/clawguard\n`);
151
+ // Try to start the dashboard server if not running
152
+ try {
153
+ const lite = (0, child_process_1.spawn)("npx", ["averecion-lite", "start"], {
154
+ detached: true,
155
+ stdio: "ignore",
156
+ env: {
157
+ ...process.env,
158
+ LITE_ADAPTER_SECRET: process.env.CLAWGUARD_SECRET || "clawguard-local"
159
+ }
160
+ });
161
+ lite.unref();
162
+ }
163
+ catch { }
164
+ // Open browser
165
+ const platform = process.platform;
166
+ const openCmd = platform === "darwin" ? "open" : platform === "win32" ? "start" : "xdg-open";
167
+ (0, child_process_1.spawn)(openCmd, [`http://127.0.0.1:${port}/clawguard`], {
168
+ detached: true,
169
+ stdio: "ignore"
170
+ }).unref();
171
+ }
172
+ function setAlertLevel(level) {
173
+ if (!["relaxed", "balanced", "strict"].includes(level)) {
174
+ console.log("\x1b[31mError: Level must be 'relaxed', 'balanced', or 'strict'\x1b[0m");
175
+ return;
176
+ }
177
+ const config = (0, consent_1.loadConfig)();
178
+ config.protectionLevel = level;
179
+ (0, consent_1.saveConfig)(config);
180
+ console.log(`\x1b[32m✓ Alert level set to: ${level}\x1b[0m`);
181
+ }
182
+ function showLogs(count = 20) {
183
+ const today = new Date().toISOString().split("T")[0];
184
+ const logFile = path.join(LOG_DIR, `${today}.jsonl`);
185
+ if (!fs.existsSync(logFile)) {
186
+ console.log("No logs for today.");
187
+ return;
188
+ }
189
+ const lines = fs.readFileSync(logFile, "utf-8").trim().split("\n").slice(-count);
190
+ console.log(`\x1b[1mRecent Activity (last ${lines.length} entries):\x1b[0m\n`);
191
+ for (const line of lines) {
192
+ try {
193
+ const entry = JSON.parse(line);
194
+ const icon = entry.allowed ? "\x1b[32m✓\x1b[0m" : "\x1b[31m✗\x1b[0m";
195
+ const time = entry.ts.split("T")[1].split(".")[0];
196
+ console.log(`${icon} [${time}] ${entry.tool} - ${entry.reason}`);
197
+ }
198
+ catch { }
199
+ }
200
+ }
201
+ function showFlagged() {
202
+ const pending = (0, hooks_1.listPendingApprovals)();
203
+ if (pending.length === 0) {
204
+ console.log("\x1b[32m✓ No flagged actions to review\x1b[0m");
205
+ return;
206
+ }
207
+ console.log(`\x1b[1mFlagged Actions (${pending.length}):\x1b[0m\n`);
208
+ for (const p of pending) {
209
+ const time = p.createdAt.split("T")[1].split(".")[0];
210
+ console.log(` \x1b[33m${p.id}\x1b[0m`);
211
+ console.log(` Tool: ${p.tool}`);
212
+ console.log(` Reason: ${p.reason}`);
213
+ console.log(` Time: ${time}`);
214
+ console.log("");
215
+ }
216
+ console.log("To mark reviewed: openclaw clawguard ack <id>");
217
+ console.log("To investigate: openclaw clawguard investigate <id>");
218
+ }
219
+ function handleAck(id) {
220
+ if (!id) {
221
+ console.log("\x1b[31mError: Please provide a flagged action ID\x1b[0m");
222
+ return;
223
+ }
224
+ if ((0, hooks_1.approveAction)(id)) {
225
+ console.log(`\x1b[32m✓ Acknowledged: ${id}\x1b[0m`);
226
+ }
227
+ else {
228
+ console.log(`\x1b[31mError: Could not find flagged action ${id}\x1b[0m`);
229
+ }
230
+ }
231
+ function handleInvestigate(id) {
232
+ if (!id) {
233
+ console.log("\x1b[31mError: Please provide a flagged action ID\x1b[0m");
234
+ return;
235
+ }
236
+ if ((0, hooks_1.denyAction)(id)) {
237
+ console.log(`\x1b[33m🔍 Marked for investigation: ${id}\x1b[0m`);
238
+ }
239
+ else {
240
+ console.log(`\x1b[31mError: Could not find flagged action ${id}\x1b[0m`);
241
+ }
242
+ }
243
+ function printHelp() {
244
+ console.log(`
245
+ \x1b[31m🦞 Clawguard\x1b[0m - AI Safety for OpenClaw
246
+
247
+ \x1b[1mUsage:\x1b[0m
248
+ openclaw clawguard <command>
249
+
250
+ \x1b[1mCommands:\x1b[0m
251
+ start Start the monitoring server
252
+ status Show current monitoring status
253
+ dashboard Open the dashboard in browser
254
+ level <level> Set alert sensitivity (relaxed|balanced|strict)
255
+ logs [count] Show recent activity logs
256
+ flagged Show flagged actions awaiting review
257
+ ack <id> Mark a flagged action as reviewed
258
+ investigate <id> Mark an action for investigation
259
+ setup Re-run the setup wizard
260
+ help Show this help message
261
+
262
+ \x1b[1mExamples:\x1b[0m
263
+ clawguard start
264
+ clawguard status
265
+ clawguard logs 50
266
+ `);
267
+ }
268
+ async function main() {
269
+ switch (command) {
270
+ case "start":
271
+ await startServer();
272
+ break;
273
+ case "status":
274
+ printStatus();
275
+ break;
276
+ case "enable":
277
+ enableMonitoring();
278
+ break;
279
+ case "disable":
280
+ disableMonitoring();
281
+ break;
282
+ case "dashboard":
283
+ openDashboard();
284
+ break;
285
+ case "level":
286
+ setAlertLevel(args[1]);
287
+ break;
288
+ case "logs":
289
+ showLogs(parseInt(args[1]) || 20);
290
+ break;
291
+ case "pending":
292
+ case "flagged":
293
+ showFlagged();
294
+ break;
295
+ case "approve":
296
+ case "ack":
297
+ handleAck(args[1]);
298
+ break;
299
+ case "deny":
300
+ case "investigate":
301
+ handleInvestigate(args[1]);
302
+ break;
303
+ case "setup":
304
+ await (0, consent_1.runConsentFlow)();
305
+ break;
306
+ case "help":
307
+ case "--help":
308
+ case "-h":
309
+ printHelp();
310
+ break;
311
+ default:
312
+ printHelp();
313
+ }
314
+ }
315
+ main();
316
+ //# sourceMappingURL=cli.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../src/cli.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,14 @@
1
+ interface ClawguardConfig {
2
+ consented: boolean;
3
+ consentedAt: string | null;
4
+ showMode: boolean;
5
+ showModeActionsRemaining: number;
6
+ protectionLevel: "relaxed" | "balanced" | "strict";
7
+ enabled: boolean;
8
+ secret: string;
9
+ }
10
+ export declare function loadConfig(): ClawguardConfig;
11
+ export declare function saveConfig(config: ClawguardConfig): void;
12
+ export declare function runConsentFlow(): Promise<boolean>;
13
+ export {};
14
+ //# sourceMappingURL=consent.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consent.d.ts","sourceRoot":"","sources":["../src/consent.ts"],"names":[],"mappings":"AAQA,UAAU,eAAe;IACvB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,QAAQ,EAAE,OAAO,CAAC;IAClB,wBAAwB,EAAE,MAAM,CAAC;IACjC,eAAe,EAAE,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC;IACnD,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;CAChB;AAgBD,wBAAgB,UAAU,IAAI,eAAe,CAY5C;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,eAAe,GAAG,IAAI,CAKxD;AAyED,wBAAsB,cAAc,IAAI,OAAO,CAAC,OAAO,CAAC,CA6CvD"}
@@ -0,0 +1,176 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
14
+ Object.defineProperty(o, "default", { enumerable: true, value: v });
15
+ }) : function(o, v) {
16
+ o["default"] = v;
17
+ });
18
+ var __importStar = (this && this.__importStar) || function (mod) {
19
+ if (mod && mod.__esModule) return mod;
20
+ var result = {};
21
+ if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
22
+ __setModuleDefault(result, mod);
23
+ return result;
24
+ };
25
+ Object.defineProperty(exports, "__esModule", { value: true });
26
+ exports.loadConfig = loadConfig;
27
+ exports.saveConfig = saveConfig;
28
+ exports.runConsentFlow = runConsentFlow;
29
+ const fs = __importStar(require("fs"));
30
+ const path = __importStar(require("path"));
31
+ const readline = __importStar(require("readline"));
32
+ const os = __importStar(require("os"));
33
+ const CONFIG_DIR = path.join(os.homedir(), ".clawguard");
34
+ const CONFIG_FILE = path.join(CONFIG_DIR, "config.json");
35
+ const DEFAULT_SECRET = "clawguard-local";
36
+ function getDefaultConfig() {
37
+ return {
38
+ consented: false,
39
+ consentedAt: null,
40
+ showMode: true,
41
+ showModeActionsRemaining: 10,
42
+ protectionLevel: "balanced",
43
+ enabled: true,
44
+ secret: DEFAULT_SECRET
45
+ };
46
+ }
47
+ function loadConfig() {
48
+ try {
49
+ if (fs.existsSync(CONFIG_FILE)) {
50
+ const config = JSON.parse(fs.readFileSync(CONFIG_FILE, "utf-8"));
51
+ // Ensure secret field exists for backwards compatibility
52
+ if (!config.secret) {
53
+ config.secret = DEFAULT_SECRET;
54
+ }
55
+ return config;
56
+ }
57
+ }
58
+ catch { }
59
+ return getDefaultConfig();
60
+ }
61
+ function saveConfig(config) {
62
+ if (!fs.existsSync(CONFIG_DIR)) {
63
+ fs.mkdirSync(CONFIG_DIR, { recursive: true });
64
+ }
65
+ fs.writeFileSync(CONFIG_FILE, JSON.stringify(config, null, 2));
66
+ }
67
+ function printBanner() {
68
+ console.log(`
69
+ \x1b[31m🦞 Clawguard\x1b[0m - AI Safety for OpenClaw
70
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
71
+
72
+ Clawguard monitors your agent's actions in real-time.
73
+ Before installing, please review what it does:
74
+
75
+ \x1b[32m✓ What Clawguard WILL do:\x1b[0m
76
+ • Watch your agent's tool calls as they happen
77
+ • Detect dangerous commands (rm -rf, credential theft, etc.)
78
+ • Flag prompt injection attempts
79
+ • Log everything locally (viewable in dashboard)
80
+
81
+ \x1b[31m✗ What Clawguard will NOT do:\x1b[0m
82
+ • Send data to external servers
83
+ • Modify your agent's behavior
84
+ • Store data outside your machine
85
+
86
+ \x1b[33m📊 Show Mode (First Run):\x1b[0m
87
+ Clawguard starts in "Show Mode" - observing and logging
88
+ without sending alerts. After 10 actions, you can
89
+ enable full monitoring with alerts.
90
+
91
+ \x1b[36m🔓 You can disable Clawguard anytime with:\x1b[0m
92
+ openclaw clawguard disable
93
+
94
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
95
+ `);
96
+ }
97
+ async function askConsent() {
98
+ const rl = readline.createInterface({
99
+ input: process.stdin,
100
+ output: process.stdout
101
+ });
102
+ return new Promise((resolve) => {
103
+ rl.question("\x1b[1mDo you consent to install Clawguard? [Y/n] \x1b[0m", (answer) => {
104
+ rl.close();
105
+ const normalized = answer.trim().toLowerCase();
106
+ resolve(normalized === "" || normalized === "y" || normalized === "yes");
107
+ });
108
+ });
109
+ }
110
+ async function chooseProtectionLevel() {
111
+ const rl = readline.createInterface({
112
+ input: process.stdin,
113
+ output: process.stdout
114
+ });
115
+ console.log(`
116
+ \x1b[1mChoose your alert sensitivity:\x1b[0m
117
+
118
+ \x1b[32m1) Relaxed\x1b[0m - Flag only critical threats
119
+ \x1b[33m2) Balanced\x1b[0m - Flag risky actions for review (recommended)
120
+ \x1b[31m3) Strict\x1b[0m - Flag everything for full visibility
121
+ `);
122
+ return new Promise((resolve) => {
123
+ rl.question("Enter 1, 2, or 3 [default: 2]: ", (answer) => {
124
+ rl.close();
125
+ const choice = answer.trim();
126
+ if (choice === "1")
127
+ return resolve("relaxed");
128
+ if (choice === "3")
129
+ return resolve("strict");
130
+ return resolve("balanced");
131
+ });
132
+ });
133
+ }
134
+ async function runConsentFlow() {
135
+ const config = loadConfig();
136
+ if (config.consented) {
137
+ console.log("\x1b[32m✓ Clawguard already configured.\x1b[0m");
138
+ return true;
139
+ }
140
+ printBanner();
141
+ const consented = await askConsent();
142
+ if (!consented) {
143
+ console.log("\n\x1b[33mInstallation cancelled. You can run this again anytime.\x1b[0m\n");
144
+ return false;
145
+ }
146
+ const level = await chooseProtectionLevel();
147
+ config.consented = true;
148
+ config.consentedAt = new Date().toISOString();
149
+ config.protectionLevel = level;
150
+ config.showMode = true;
151
+ config.showModeActionsRemaining = 10;
152
+ config.enabled = true;
153
+ config.secret = DEFAULT_SECRET;
154
+ saveConfig(config);
155
+ console.log(`
156
+ \x1b[32m━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
157
+ ✓ Clawguard installed successfully!
158
+ ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━\x1b[0m
159
+
160
+ Protection level: \x1b[1m${level}\x1b[0m
161
+ Mode: \x1b[33mShow Mode\x1b[0m (observing first 10 actions)
162
+
163
+ \x1b[36mView your dashboard:\x1b[0m
164
+ openclaw clawguard dashboard
165
+
166
+ \x1b[36mCheck status:\x1b[0m
167
+ openclaw clawguard status
168
+ `);
169
+ return true;
170
+ }
171
+ if (require.main === module) {
172
+ runConsentFlow().then((success) => {
173
+ process.exit(success ? 0 : 1);
174
+ });
175
+ }
176
+ //# sourceMappingURL=consent.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"consent.js","sourceRoot":"","sources":["../src/consent.ts"],"names":[],"mappings":"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"}