@goplus/agentguard 1.1.9 → 1.1.10
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 +19 -4
- package/dist/cli.js +65 -10
- package/dist/cli.js.map +1 -1
- package/dist/config.d.ts +1 -0
- package/dist/config.d.ts.map +1 -1
- package/dist/config.js +6 -0
- package/dist/config.js.map +1 -1
- package/dist/feed/cron.d.ts +26 -0
- package/dist/feed/cron.d.ts.map +1 -1
- package/dist/feed/cron.js +372 -21
- package/dist/feed/cron.js.map +1 -1
- package/dist/installers.d.ts +1 -1
- package/dist/installers.d.ts.map +1 -1
- package/dist/installers.js +57 -0
- package/dist/installers.js.map +1 -1
- package/dist/postinstall.js +9 -0
- package/dist/postinstall.js.map +1 -1
- package/dist/runtime/types.d.ts +1 -1
- package/dist/runtime/types.d.ts.map +1 -1
- package/dist/tests/cli-init.test.d.ts +2 -0
- package/dist/tests/cli-init.test.d.ts.map +1 -0
- package/dist/tests/cli-init.test.js +40 -0
- package/dist/tests/cli-init.test.js.map +1 -0
- package/dist/tests/cli-policy.test.js +47 -0
- package/dist/tests/cli-policy.test.js.map +1 -1
- package/dist/tests/feed-cron.test.js +238 -0
- package/dist/tests/feed-cron.test.js.map +1 -1
- package/dist/tests/installer.test.js +13 -0
- package/dist/tests/installer.test.js.map +1 -1
- package/dist/tests/postinstall.test.d.ts +2 -0
- package/dist/tests/postinstall.test.d.ts.map +1 -0
- package/dist/tests/postinstall.test.js +27 -0
- package/dist/tests/postinstall.test.js.map +1 -0
- package/package.json +1 -1
- package/skills/agentguard/SKILL.md +29 -4
package/dist/feed/cron.js
CHANGED
|
@@ -5,10 +5,15 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
5
5
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
6
6
|
exports.validateCronExpression = validateCronExpression;
|
|
7
7
|
exports.localTimeZone = localTimeZone;
|
|
8
|
+
exports.installThreatFeedCron = installThreatFeedCron;
|
|
8
9
|
exports.installOpenClawThreatFeedCron = installOpenClawThreatFeedCron;
|
|
9
10
|
exports.extractOpenClawCronJobs = extractOpenClawCronJobs;
|
|
10
11
|
exports.openClawGatewayRequest = openClawGatewayRequest;
|
|
11
12
|
const node_http_1 = __importDefault(require("node:http"));
|
|
13
|
+
const node_child_process_1 = require("node:child_process");
|
|
14
|
+
const promises_1 = require("node:fs/promises");
|
|
15
|
+
const node_os_1 = require("node:os");
|
|
16
|
+
const node_path_1 = require("node:path");
|
|
12
17
|
function validateCronExpression(value) {
|
|
13
18
|
const expr = value.trim();
|
|
14
19
|
const fields = expr.split(/\s+/);
|
|
@@ -23,9 +28,51 @@ function validateCronExpression(value) {
|
|
|
23
28
|
function localTimeZone() {
|
|
24
29
|
return Intl.DateTimeFormat().resolvedOptions().timeZone || 'UTC';
|
|
25
30
|
}
|
|
31
|
+
async function installThreatFeedCron(options, adapters = {}) {
|
|
32
|
+
const backend = options.backend ?? 'auto';
|
|
33
|
+
if (backend === 'auto' && !options.agentHost) {
|
|
34
|
+
throw new Error('Cron target auto requires a saved agent host. Run `agentguard init --agent <claude-code|codex|openclaw|hermes|qclaw>` first, or pass `--cron-target openclaw`, `--cron-target qclaw`, `--cron-target hermes`, or `--cron-target system`.');
|
|
35
|
+
}
|
|
36
|
+
if (backend === 'system' || (backend === 'auto' && options.agentHost !== 'openclaw' && options.agentHost !== 'qclaw' && options.agentHost !== 'hermes')) {
|
|
37
|
+
return installSystemThreatFeedCron(options, adapters.runCommand);
|
|
38
|
+
}
|
|
39
|
+
if (backend === 'hermes' || (backend === 'auto' && options.agentHost === 'hermes')) {
|
|
40
|
+
return installHermesNativeThreatFeedCron(options, adapters.runCommand);
|
|
41
|
+
}
|
|
42
|
+
if (backend === 'openclaw' || (backend === 'auto' && options.agentHost === 'openclaw')) {
|
|
43
|
+
let nativeError = null;
|
|
44
|
+
try {
|
|
45
|
+
const result = await installOpenClawNativeThreatFeedCron(options, adapters.runCommand);
|
|
46
|
+
result.backend = 'openclaw';
|
|
47
|
+
return result;
|
|
48
|
+
}
|
|
49
|
+
catch (err) {
|
|
50
|
+
nativeError = err;
|
|
51
|
+
if (!(nativeError instanceof CronBackendUnavailableError)) {
|
|
52
|
+
throw nativeError;
|
|
53
|
+
}
|
|
54
|
+
}
|
|
55
|
+
try {
|
|
56
|
+
const result = await installOpenClawThreatFeedCron(options, adapters.gateway);
|
|
57
|
+
result.backend = 'openclaw-gateway';
|
|
58
|
+
return result;
|
|
59
|
+
}
|
|
60
|
+
catch (gatewayError) {
|
|
61
|
+
throw new Error(`Could not install OpenClaw cron. Native openclaw command failed: ${nativeError.message}. ` +
|
|
62
|
+
`Gateway fallback failed: ${gatewayError.message}`);
|
|
63
|
+
}
|
|
64
|
+
}
|
|
65
|
+
if (backend === 'qclaw' || (backend === 'auto' && options.agentHost === 'qclaw')) {
|
|
66
|
+
const result = await installOpenClawThreatFeedCron(options, qclawGatewayOptions(adapters.gateway));
|
|
67
|
+
result.backend = 'qclaw-gateway';
|
|
68
|
+
return result;
|
|
69
|
+
}
|
|
70
|
+
throw new Error('Invalid cron target. Use auto, openclaw, qclaw, hermes, or system.');
|
|
71
|
+
}
|
|
26
72
|
async function installOpenClawThreatFeedCron(options, gateway = {}) {
|
|
27
73
|
const schedule = validateCronExpression(options.cronExpression);
|
|
28
74
|
const timezone = options.timezone ?? localTimeZone();
|
|
75
|
+
const command = threatFeedCommand(options.quiet);
|
|
29
76
|
const existing = await findOpenClawCronJobsByName(options.name, gateway);
|
|
30
77
|
if (existing.length > 0 && !options.force) {
|
|
31
78
|
return {
|
|
@@ -33,24 +80,13 @@ async function installOpenClawThreatFeedCron(options, gateway = {}) {
|
|
|
33
80
|
schedule,
|
|
34
81
|
timezone,
|
|
35
82
|
created: false,
|
|
83
|
+
backend: 'openclaw-gateway',
|
|
84
|
+
command,
|
|
36
85
|
};
|
|
37
86
|
}
|
|
38
87
|
const mode = options.quiet ? 'quiet' : 'manual';
|
|
39
|
-
const command = `agentguard subscribe${options.quiet ? ' --quiet' : ''} --json --cron-run`;
|
|
40
88
|
const description = `AgentGuard Cloud threat feed subscription (${schedule})`;
|
|
41
|
-
const message =
|
|
42
|
-
`Mode: ${mode}.`,
|
|
43
|
-
`Command: \`${command}\`.`,
|
|
44
|
-
`Run exactly the command above.`,
|
|
45
|
-
'',
|
|
46
|
-
'Rules:',
|
|
47
|
-
'- If the JSON field `hardFailures` is greater than 0, output a short error summary and do not send a notification.',
|
|
48
|
-
'- If the JSON field `shouldNotify` is true, send `notification.body` exactly as-is using the current session notification context.',
|
|
49
|
-
'- If `shouldNotify` is false, output "skipped" and finish without sending any message.',
|
|
50
|
-
'- If the command fails or the JSON cannot be parsed, output a short error summary and do not send a notification.',
|
|
51
|
-
'',
|
|
52
|
-
'Follow these rules exactly.',
|
|
53
|
-
].join('\n');
|
|
89
|
+
const message = openClawCronMessage(options.quiet);
|
|
54
90
|
if (existing.length > 0) {
|
|
55
91
|
await removeOpenClawCronJobs(existing, gateway);
|
|
56
92
|
}
|
|
@@ -84,12 +120,326 @@ async function installOpenClawThreatFeedCron(options, gateway = {}) {
|
|
|
84
120
|
schedule,
|
|
85
121
|
timezone,
|
|
86
122
|
created: true,
|
|
123
|
+
backend: 'openclaw-gateway',
|
|
124
|
+
command,
|
|
87
125
|
};
|
|
88
126
|
}
|
|
89
127
|
async function findOpenClawCronJobsByName(name, gateway) {
|
|
90
|
-
const listed = await openClawGatewayRequest('cron.list', {}, gateway)
|
|
128
|
+
const listed = await openClawGatewayRequest('cron.list', {}, gateway);
|
|
91
129
|
return extractOpenClawCronJobs(listed).filter((job) => job.name === name);
|
|
92
130
|
}
|
|
131
|
+
async function installOpenClawNativeThreatFeedCron(options, runCommand = execCommand) {
|
|
132
|
+
const schedule = validateCronExpression(options.cronExpression);
|
|
133
|
+
const timezone = options.timezone ?? localTimeZone();
|
|
134
|
+
const command = threatFeedCommand(options.quiet);
|
|
135
|
+
const message = openClawCronMessage(options.quiet);
|
|
136
|
+
let existing;
|
|
137
|
+
try {
|
|
138
|
+
existing = await runCommand('openclaw', ['cron', 'list']);
|
|
139
|
+
}
|
|
140
|
+
catch (err) {
|
|
141
|
+
throw new CronBackendUnavailableError(`Could not list native OpenClaw cron jobs. Is OpenClaw installed and available on PATH? ${err.message}`);
|
|
142
|
+
}
|
|
143
|
+
if (nativeCronListHasExactName(existing.stdout, options.name) && !options.force) {
|
|
144
|
+
return {
|
|
145
|
+
name: options.name,
|
|
146
|
+
schedule,
|
|
147
|
+
timezone,
|
|
148
|
+
created: false,
|
|
149
|
+
backend: 'openclaw',
|
|
150
|
+
command,
|
|
151
|
+
};
|
|
152
|
+
}
|
|
153
|
+
const args = [
|
|
154
|
+
'cron',
|
|
155
|
+
'add',
|
|
156
|
+
'--name',
|
|
157
|
+
options.name,
|
|
158
|
+
'--description',
|
|
159
|
+
`AgentGuard Cloud threat feed subscription (${schedule})`,
|
|
160
|
+
'--cron',
|
|
161
|
+
schedule,
|
|
162
|
+
'--tz',
|
|
163
|
+
timezone,
|
|
164
|
+
'--session',
|
|
165
|
+
'isolated',
|
|
166
|
+
'--message',
|
|
167
|
+
message,
|
|
168
|
+
'--timeout-seconds',
|
|
169
|
+
'300',
|
|
170
|
+
'--thinking',
|
|
171
|
+
'off',
|
|
172
|
+
];
|
|
173
|
+
if (options.force)
|
|
174
|
+
args.push('--force');
|
|
175
|
+
await runCommand('openclaw', args);
|
|
176
|
+
return {
|
|
177
|
+
name: options.name,
|
|
178
|
+
schedule,
|
|
179
|
+
timezone,
|
|
180
|
+
created: true,
|
|
181
|
+
backend: 'openclaw',
|
|
182
|
+
command,
|
|
183
|
+
};
|
|
184
|
+
}
|
|
185
|
+
class CronBackendUnavailableError extends Error {
|
|
186
|
+
constructor(message) {
|
|
187
|
+
super(message);
|
|
188
|
+
this.name = 'CronBackendUnavailableError';
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
function nativeCronListHasExactName(stdout, name) {
|
|
192
|
+
const jsonJobs = extractOpenClawCronJobs(parseJsonOrNull(stdout));
|
|
193
|
+
if (jsonJobs.some((job) => job.name === name))
|
|
194
|
+
return true;
|
|
195
|
+
return stdout
|
|
196
|
+
.split(/\r?\n/)
|
|
197
|
+
.map((line) => line.trim())
|
|
198
|
+
.filter(Boolean)
|
|
199
|
+
.some((line) => nativeCronListLineHasExactName(line, name));
|
|
200
|
+
}
|
|
201
|
+
function nativeCronListLineHasExactName(line, name) {
|
|
202
|
+
const quoted = line.match(/(["'])(.*?)\1/);
|
|
203
|
+
if (quoted?.[2] === name)
|
|
204
|
+
return true;
|
|
205
|
+
const cells = line.split(/\s{2,}|\t+/).map((cell) => cell.trim()).filter(Boolean);
|
|
206
|
+
return cells.includes(name);
|
|
207
|
+
}
|
|
208
|
+
function parseJsonOrNull(value) {
|
|
209
|
+
try {
|
|
210
|
+
return JSON.parse(value);
|
|
211
|
+
}
|
|
212
|
+
catch {
|
|
213
|
+
return null;
|
|
214
|
+
}
|
|
215
|
+
}
|
|
216
|
+
async function installHermesNativeThreatFeedCron(options, runCommand = execCommand) {
|
|
217
|
+
const schedule = validateCronExpression(options.cronExpression);
|
|
218
|
+
const timezone = options.timezone ?? localTimeZone();
|
|
219
|
+
const command = threatFeedCommand(options.quiet);
|
|
220
|
+
let existing;
|
|
221
|
+
try {
|
|
222
|
+
existing = await runCommand('hermes', ['cron', 'list']);
|
|
223
|
+
}
|
|
224
|
+
catch (err) {
|
|
225
|
+
throw new Error(`Could not list Hermes cron jobs. Is Hermes installed and available on PATH? ${err.message}`);
|
|
226
|
+
}
|
|
227
|
+
if (existing.stdout.includes(options.name) && !options.force) {
|
|
228
|
+
return {
|
|
229
|
+
name: options.name,
|
|
230
|
+
schedule,
|
|
231
|
+
timezone,
|
|
232
|
+
created: false,
|
|
233
|
+
backend: 'hermes',
|
|
234
|
+
command,
|
|
235
|
+
};
|
|
236
|
+
}
|
|
237
|
+
if (existing.stdout.includes(options.name) && options.force) {
|
|
238
|
+
await runCommand('hermes', ['cron', 'remove', options.name]);
|
|
239
|
+
}
|
|
240
|
+
const script = await writeHermesThreatFeedScript(options);
|
|
241
|
+
await runCommand('hermes', [
|
|
242
|
+
'cron',
|
|
243
|
+
'create',
|
|
244
|
+
schedule,
|
|
245
|
+
'--name',
|
|
246
|
+
options.name,
|
|
247
|
+
'--deliver',
|
|
248
|
+
'local',
|
|
249
|
+
'--script',
|
|
250
|
+
script,
|
|
251
|
+
'--no-agent',
|
|
252
|
+
]);
|
|
253
|
+
return {
|
|
254
|
+
name: options.name,
|
|
255
|
+
schedule,
|
|
256
|
+
timezone,
|
|
257
|
+
created: true,
|
|
258
|
+
backend: 'hermes',
|
|
259
|
+
command,
|
|
260
|
+
script,
|
|
261
|
+
};
|
|
262
|
+
}
|
|
263
|
+
async function installSystemThreatFeedCron(options, runCommand = execCommand) {
|
|
264
|
+
const schedule = validateCronExpression(options.cronExpression);
|
|
265
|
+
const timezone = options.timezone ?? localTimeZone();
|
|
266
|
+
const command = threatFeedCommand(options.quiet);
|
|
267
|
+
const home = validateCronFilesystemPath(options.agentGuardHome ?? (0, node_path_1.join)((0, node_os_1.homedir)(), '.agentguard'), 'AGENTGUARD_HOME');
|
|
268
|
+
const jobId = sanitizeCronJobId(options.name);
|
|
269
|
+
const begin = `# AgentGuard begin ${jobId}`;
|
|
270
|
+
const end = `# AgentGuard end ${jobId}`;
|
|
271
|
+
const script = await writeSystemThreatFeedScript({
|
|
272
|
+
name: options.name,
|
|
273
|
+
quiet: options.quiet,
|
|
274
|
+
agentGuardHome: home,
|
|
275
|
+
});
|
|
276
|
+
const logPath = validateCronFilesystemPath((0, node_path_1.join)(home, 'feed-cron.log'), 'system cron log path');
|
|
277
|
+
const line = `${schedule} ${shellQuote(script)} >> ${shellQuote(logPath)} 2>&1`;
|
|
278
|
+
const existing = await runCommand('crontab', ['-l']).then((result) => result.stdout, () => '');
|
|
279
|
+
const hasExisting = existing.includes(begin);
|
|
280
|
+
if (hasExisting && !options.force) {
|
|
281
|
+
return {
|
|
282
|
+
name: options.name,
|
|
283
|
+
schedule,
|
|
284
|
+
timezone,
|
|
285
|
+
created: false,
|
|
286
|
+
backend: 'system',
|
|
287
|
+
command,
|
|
288
|
+
script,
|
|
289
|
+
};
|
|
290
|
+
}
|
|
291
|
+
const withoutExisting = removeAgentGuardCronBlock(existing, jobId).trimEnd();
|
|
292
|
+
const next = `${withoutExisting}${withoutExisting ? '\n' : ''}${begin}\n${line}\n${end}\n`;
|
|
293
|
+
await runCommand('crontab', ['-'], next);
|
|
294
|
+
return {
|
|
295
|
+
name: options.name,
|
|
296
|
+
schedule,
|
|
297
|
+
timezone,
|
|
298
|
+
created: true,
|
|
299
|
+
backend: 'system',
|
|
300
|
+
command,
|
|
301
|
+
script,
|
|
302
|
+
};
|
|
303
|
+
}
|
|
304
|
+
function threatFeedCommand(quiet) {
|
|
305
|
+
return `agentguard subscribe${quiet ? ' --quiet' : ''} --json --cron-run`;
|
|
306
|
+
}
|
|
307
|
+
function qclawGatewayOptions(gateway = {}) {
|
|
308
|
+
return {
|
|
309
|
+
...gateway,
|
|
310
|
+
port: gateway.port ?? 28789,
|
|
311
|
+
label: gateway.label ?? 'QClaw Gateway',
|
|
312
|
+
};
|
|
313
|
+
}
|
|
314
|
+
async function writeHermesThreatFeedScript(options) {
|
|
315
|
+
const hermesHome = (options.hermesHome ?? process.env.HERMES_HOME?.trim()) || (0, node_path_1.join)((0, node_os_1.homedir)(), '.hermes');
|
|
316
|
+
const scriptsDir = (0, node_path_1.join)(hermesHome, 'scripts');
|
|
317
|
+
await (0, promises_1.mkdir)(scriptsDir, { recursive: true });
|
|
318
|
+
const scriptName = `${sanitizeHermesScriptName(options.name)}.sh`;
|
|
319
|
+
const scriptPath = (0, node_path_1.join)(scriptsDir, scriptName);
|
|
320
|
+
const lines = [
|
|
321
|
+
'#!/usr/bin/env bash',
|
|
322
|
+
'set -euo pipefail',
|
|
323
|
+
`export AGENTGUARD_HOME=${shellQuote(options.agentGuardHome ?? (0, node_path_1.join)((0, node_os_1.homedir)(), '.agentguard'))}`,
|
|
324
|
+
process.env.PATH ? `export PATH=${shellQuote(process.env.PATH)}` : '',
|
|
325
|
+
`exec ${threatFeedCommand(options.quiet)}`,
|
|
326
|
+
'',
|
|
327
|
+
].filter(Boolean);
|
|
328
|
+
await (0, promises_1.writeFile)(scriptPath, lines.join('\n'), { mode: 0o700 });
|
|
329
|
+
await (0, promises_1.chmod)(scriptPath, 0o700).catch(() => undefined);
|
|
330
|
+
return scriptName;
|
|
331
|
+
}
|
|
332
|
+
async function writeSystemThreatFeedScript(options) {
|
|
333
|
+
const scriptsDir = (0, node_path_1.join)(options.agentGuardHome, 'scripts');
|
|
334
|
+
await (0, promises_1.mkdir)(scriptsDir, { recursive: true });
|
|
335
|
+
const scriptPath = validateCronFilesystemPath((0, node_path_1.join)(scriptsDir, `${sanitizeCronJobId(options.name)}.sh`), 'system cron script path');
|
|
336
|
+
const lines = [
|
|
337
|
+
'#!/usr/bin/env bash',
|
|
338
|
+
'set -euo pipefail',
|
|
339
|
+
`export AGENTGUARD_HOME=${shellQuote(options.agentGuardHome)}`,
|
|
340
|
+
process.env.PATH ? `export PATH=${shellQuote(process.env.PATH)}` : '',
|
|
341
|
+
`exec ${threatFeedCommand(options.quiet)}`,
|
|
342
|
+
'',
|
|
343
|
+
].filter(Boolean);
|
|
344
|
+
await (0, promises_1.writeFile)(scriptPath, lines.join('\n'), { mode: 0o700 });
|
|
345
|
+
await (0, promises_1.chmod)(scriptPath, 0o700).catch(() => undefined);
|
|
346
|
+
return scriptPath;
|
|
347
|
+
}
|
|
348
|
+
function validateCronFilesystemPath(value, label) {
|
|
349
|
+
if (!(0, node_path_1.isAbsolute)(value)) {
|
|
350
|
+
throw new Error(`${label} must be an absolute path for system cron installation.`);
|
|
351
|
+
}
|
|
352
|
+
if (/[\0\r\n'"]/.test(value)) {
|
|
353
|
+
throw new Error(`${label} must not contain quotes or newlines for system cron installation.`);
|
|
354
|
+
}
|
|
355
|
+
return value;
|
|
356
|
+
}
|
|
357
|
+
function sanitizeCronJobId(value) {
|
|
358
|
+
const normalized = value.trim().replace(/[^A-Za-z0-9._-]+/g, '-').replace(/^-+|-+$/g, '');
|
|
359
|
+
return normalized || 'agentguard-threat-feed';
|
|
360
|
+
}
|
|
361
|
+
function sanitizeHermesScriptName(value) {
|
|
362
|
+
const normalized = value.trim().replace(/[^A-Za-z0-9._-]+/g, '-').replace(/^-+|-+$/g, '');
|
|
363
|
+
return normalized ? `agentguard-${normalized}` : 'agentguard-threat-feed';
|
|
364
|
+
}
|
|
365
|
+
function shellQuote(value) {
|
|
366
|
+
return `'${value.replace(/'/g, `'\\''`)}'`;
|
|
367
|
+
}
|
|
368
|
+
function openClawCronMessage(quiet) {
|
|
369
|
+
const mode = quiet ? 'quiet' : 'manual';
|
|
370
|
+
const command = threatFeedCommand(quiet);
|
|
371
|
+
return [
|
|
372
|
+
`Mode: ${mode}.`,
|
|
373
|
+
`Command: \`${command}\`.`,
|
|
374
|
+
`Run exactly the command above.`,
|
|
375
|
+
'',
|
|
376
|
+
'Rules:',
|
|
377
|
+
'- If the JSON field `hardFailures` is greater than 0, output a short error summary and do not send a notification.',
|
|
378
|
+
'- If the JSON field `shouldNotify` is true, send `notification.body` exactly as-is using the current session notification context.',
|
|
379
|
+
'- If `shouldNotify` is false, output "skipped" and finish without sending any message.',
|
|
380
|
+
'- If the command fails or the JSON cannot be parsed, output a short error summary and do not send a notification.',
|
|
381
|
+
'',
|
|
382
|
+
'Follow these rules exactly.',
|
|
383
|
+
].join('\n');
|
|
384
|
+
}
|
|
385
|
+
function removeAgentGuardCronBlock(value, name) {
|
|
386
|
+
const begin = `# AgentGuard begin ${name}`;
|
|
387
|
+
const end = `# AgentGuard end ${name}`;
|
|
388
|
+
const lines = value.split(/\r?\n/);
|
|
389
|
+
const kept = [];
|
|
390
|
+
let skipping = false;
|
|
391
|
+
for (const line of lines) {
|
|
392
|
+
if (line.trim() === begin) {
|
|
393
|
+
skipping = true;
|
|
394
|
+
continue;
|
|
395
|
+
}
|
|
396
|
+
if (line.trim() === end) {
|
|
397
|
+
skipping = false;
|
|
398
|
+
continue;
|
|
399
|
+
}
|
|
400
|
+
if (!skipping)
|
|
401
|
+
kept.push(line);
|
|
402
|
+
}
|
|
403
|
+
return kept.join('\n');
|
|
404
|
+
}
|
|
405
|
+
function execCommand(command, args, input) {
|
|
406
|
+
return new Promise((resolve, reject) => {
|
|
407
|
+
const child = (0, node_child_process_1.spawn)(command, args, { stdio: ['pipe', 'pipe', 'pipe'] });
|
|
408
|
+
let settled = false;
|
|
409
|
+
const finish = (fn) => {
|
|
410
|
+
if (settled)
|
|
411
|
+
return;
|
|
412
|
+
settled = true;
|
|
413
|
+
clearTimeout(timeout);
|
|
414
|
+
fn();
|
|
415
|
+
};
|
|
416
|
+
const timeout = setTimeout(() => {
|
|
417
|
+
child.kill('SIGTERM');
|
|
418
|
+
finish(() => reject(new Error(`${command} ${args.join(' ')} timed out after 10000ms`)));
|
|
419
|
+
}, 10000);
|
|
420
|
+
let stdout = '';
|
|
421
|
+
let stderr = '';
|
|
422
|
+
child.stdout.on('data', (chunk) => {
|
|
423
|
+
stdout += chunk.toString();
|
|
424
|
+
});
|
|
425
|
+
child.stderr.on('data', (chunk) => {
|
|
426
|
+
stderr += chunk.toString();
|
|
427
|
+
});
|
|
428
|
+
child.on('error', (err) => {
|
|
429
|
+
finish(() => reject(err));
|
|
430
|
+
});
|
|
431
|
+
child.on('close', (code) => {
|
|
432
|
+
if (code === 0) {
|
|
433
|
+
finish(() => resolve({ stdout, stderr }));
|
|
434
|
+
return;
|
|
435
|
+
}
|
|
436
|
+
finish(() => reject(new Error(`${command} ${args.join(' ')} failed with exit code ${code}: ${stderr || stdout}`.trim())));
|
|
437
|
+
});
|
|
438
|
+
if (input)
|
|
439
|
+
child.stdin.write(input);
|
|
440
|
+
child.stdin.end();
|
|
441
|
+
});
|
|
442
|
+
}
|
|
93
443
|
async function removeOpenClawCronJobs(jobs, gateway) {
|
|
94
444
|
for (const job of jobs) {
|
|
95
445
|
if (!job.id)
|
|
@@ -122,6 +472,7 @@ function openClawGatewayRequest(method, params, options = {}) {
|
|
|
122
472
|
});
|
|
123
473
|
const host = options.host ?? '127.0.0.1';
|
|
124
474
|
const port = options.port ?? 18789;
|
|
475
|
+
const label = options.label ?? 'OpenClaw Gateway';
|
|
125
476
|
const timeoutMs = options.timeoutMs ?? 5000;
|
|
126
477
|
return new Promise((resolve, reject) => {
|
|
127
478
|
let settled = false;
|
|
@@ -150,7 +501,7 @@ function openClawGatewayRequest(method, params, options = {}) {
|
|
|
150
501
|
let data = '';
|
|
151
502
|
res.setEncoding('utf8');
|
|
152
503
|
res.on('error', (err) => {
|
|
153
|
-
fail(new Error(
|
|
504
|
+
fail(new Error(`${label} ${method} response failed: ${err.message}`));
|
|
154
505
|
});
|
|
155
506
|
res.on('data', (chunk) => {
|
|
156
507
|
data += chunk;
|
|
@@ -161,25 +512,25 @@ function openClawGatewayRequest(method, params, options = {}) {
|
|
|
161
512
|
parsed = data ? JSON.parse(data) : null;
|
|
162
513
|
}
|
|
163
514
|
catch {
|
|
164
|
-
fail(new Error(
|
|
515
|
+
fail(new Error(`${label} returned non-JSON response: ${data}`));
|
|
165
516
|
return;
|
|
166
517
|
}
|
|
167
518
|
if (parsed?.error) {
|
|
168
|
-
fail(new Error(
|
|
519
|
+
fail(new Error(`${label} ${method} failed: ${parsed.error.message ?? JSON.stringify(parsed.error)}`));
|
|
169
520
|
return;
|
|
170
521
|
}
|
|
171
522
|
if (res.statusCode && res.statusCode >= 400) {
|
|
172
|
-
fail(new Error(
|
|
523
|
+
fail(new Error(`${label} ${method} failed with HTTP ${res.statusCode}`));
|
|
173
524
|
return;
|
|
174
525
|
}
|
|
175
526
|
succeed(parsed?.result ?? parsed);
|
|
176
527
|
});
|
|
177
528
|
});
|
|
178
529
|
req.on('error', (err) => {
|
|
179
|
-
fail(new Error(`Could not reach
|
|
530
|
+
fail(new Error(`Could not reach ${label} at ${host}:${port}: ${err.message}`));
|
|
180
531
|
});
|
|
181
532
|
req.setTimeout(timeoutMs, () => {
|
|
182
|
-
const err = new Error(
|
|
533
|
+
const err = new Error(`${label} ${method} request timed out after ${timeoutMs}ms`);
|
|
183
534
|
fail(err);
|
|
184
535
|
req.destroy(err);
|
|
185
536
|
});
|
package/dist/feed/cron.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cron.js","sourceRoot":"","sources":["../../src/feed/cron.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"cron.js","sourceRoot":"","sources":["../../src/feed/cron.ts"],"names":[],"mappings":"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"}
|
package/dist/installers.d.ts
CHANGED
package/dist/installers.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installers.d.ts","sourceRoot":"","sources":["../src/installers.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,cAAc,GAAG,aAAa,GAAG,OAAO,GAAG,UAAU,CAAC;
|
|
1
|
+
{"version":3,"file":"installers.d.ts","sourceRoot":"","sources":["../src/installers.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,cAAc,GAAG,aAAa,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEvF,MAAM,WAAW,aAAa;IAC5B,KAAK,EAAE,cAAc,CAAC;IACtB,KAAK,EAAE,MAAM,EAAE,CAAC;CACjB;AAED,wBAAgB,qBAAqB,CAAC,KAAK,EAAE,cAAc,EAAE,OAAO,GAAE;IAAE,GAAG,CAAC,EAAE,MAAM,CAAC;IAAC,KAAK,CAAC,EAAE,OAAO,CAAA;CAAO,GAAG,aAAa,CAQ3H"}
|
package/dist/installers.js
CHANGED
|
@@ -12,6 +12,10 @@ function installAgentTemplates(agent, options = {}) {
|
|
|
12
12
|
return installCodex(root, Boolean(options.force));
|
|
13
13
|
if (agent === 'openclaw')
|
|
14
14
|
return installOpenClaw(options.cwd, Boolean(options.force));
|
|
15
|
+
if (agent === 'hermes')
|
|
16
|
+
return installHermes(root, Boolean(options.force));
|
|
17
|
+
if (agent === 'qclaw')
|
|
18
|
+
return installQClaw(root, Boolean(options.force));
|
|
15
19
|
throw new Error(`Unsupported agent installer: ${agent}`);
|
|
16
20
|
}
|
|
17
21
|
function installClaudeCode(root, force) {
|
|
@@ -49,12 +53,36 @@ function installOpenClaw(cwd, force) {
|
|
|
49
53
|
enableOpenClawPlugin(configPath, pluginDir);
|
|
50
54
|
return { agent: 'openclaw', files: [packagePath, pluginPath, manifestPath, configPath] };
|
|
51
55
|
}
|
|
56
|
+
function installHermes(root, force) {
|
|
57
|
+
const skillDir = (0, node_path_1.join)(root, '.hermes', 'skills', 'agentguard');
|
|
58
|
+
const configExamplePath = (0, node_path_1.join)(root, '.hermes', 'agentguard-hooks.example.yaml');
|
|
59
|
+
copyBundledSkill(skillDir, force);
|
|
60
|
+
writeIfAllowed(configExamplePath, hermesHooksTemplate(skillDir), force);
|
|
61
|
+
return { agent: 'hermes', files: [skillDir, configExamplePath] };
|
|
62
|
+
}
|
|
63
|
+
function installQClaw(root, force) {
|
|
64
|
+
const skillDir = (0, node_path_1.join)(root, '.qclaw', 'skills', 'agentguard');
|
|
65
|
+
copyBundledSkill(skillDir, force);
|
|
66
|
+
return { agent: 'qclaw', files: [skillDir] };
|
|
67
|
+
}
|
|
52
68
|
function writeIfAllowed(path, content, force) {
|
|
53
69
|
if ((0, node_fs_1.existsSync)(path) && !force)
|
|
54
70
|
return;
|
|
55
71
|
(0, node_fs_1.mkdirSync)((0, node_path_1.dirname)(path), { recursive: true });
|
|
56
72
|
(0, node_fs_1.writeFileSync)(path, content, { mode: path.endsWith('.sh') ? 0o755 : undefined });
|
|
57
73
|
}
|
|
74
|
+
function copyBundledSkill(targetDir, force) {
|
|
75
|
+
if ((0, node_fs_1.existsSync)(targetDir) && !force)
|
|
76
|
+
return;
|
|
77
|
+
(0, node_fs_1.mkdirSync)((0, node_path_1.dirname)(targetDir), { recursive: true });
|
|
78
|
+
const sourceDir = (0, node_path_1.resolve)(__dirname, '..', 'skills', 'agentguard');
|
|
79
|
+
if (!(0, node_fs_1.existsSync)(sourceDir)) {
|
|
80
|
+
(0, node_fs_1.mkdirSync)(targetDir, { recursive: true });
|
|
81
|
+
writeIfAllowed((0, node_path_1.join)(targetDir, 'SKILL.md'), codexSkillTemplate(), force);
|
|
82
|
+
return;
|
|
83
|
+
}
|
|
84
|
+
(0, node_fs_1.cpSync)(sourceDir, targetDir, { recursive: true, force });
|
|
85
|
+
}
|
|
58
86
|
function claudeHookScript() {
|
|
59
87
|
return `#!/bin/sh
|
|
60
88
|
set -eu
|
|
@@ -136,6 +164,35 @@ function codexHookTemplate() {
|
|
|
136
164
|
},
|
|
137
165
|
};
|
|
138
166
|
}
|
|
167
|
+
function hermesHooksTemplate(skillDir) {
|
|
168
|
+
return `# Copy this block into ~/.hermes/config.yaml.
|
|
169
|
+
hooks:
|
|
170
|
+
on_session_start:
|
|
171
|
+
- command: "env AGENTGUARD_AUTO_SCAN=1 node \\"${skillDir}/scripts/auto-scan.js\\""
|
|
172
|
+
timeout: 30
|
|
173
|
+
|
|
174
|
+
pre_tool_call:
|
|
175
|
+
- matcher: "terminal|execute_code"
|
|
176
|
+
command: "node \\"${skillDir}/scripts/hermes-hook.js\\""
|
|
177
|
+
timeout: 10
|
|
178
|
+
- matcher: "write_file|patch|skill_manage"
|
|
179
|
+
command: "node \\"${skillDir}/scripts/hermes-hook.js\\""
|
|
180
|
+
timeout: 10
|
|
181
|
+
- matcher: "read_file"
|
|
182
|
+
command: "node \\"${skillDir}/scripts/hermes-hook.js\\""
|
|
183
|
+
timeout: 10
|
|
184
|
+
- matcher: "web_search|web_extract|browser_navigate"
|
|
185
|
+
command: "node \\"${skillDir}/scripts/hermes-hook.js\\""
|
|
186
|
+
timeout: 10
|
|
187
|
+
|
|
188
|
+
post_tool_call:
|
|
189
|
+
- matcher: "terminal|execute_code|write_file|patch|skill_manage|read_file|web_search|web_extract|browser_navigate"
|
|
190
|
+
command: "node \\"${skillDir}/scripts/hermes-hook.js\\""
|
|
191
|
+
timeout: 5
|
|
192
|
+
|
|
193
|
+
hooks_auto_accept: false
|
|
194
|
+
`;
|
|
195
|
+
}
|
|
139
196
|
function openClawPluginTemplate() {
|
|
140
197
|
return `const { registerOpenClawPlugin } = require('@goplus/agentguard');
|
|
141
198
|
|
package/dist/installers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"installers.js","sourceRoot":"","sources":["../src/installers.ts"],"names":[],"mappings":";;AAWA,
|
|
1
|
+
{"version":3,"file":"installers.js","sourceRoot":"","sources":["../src/installers.ts"],"names":[],"mappings":"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"}
|