@goplus/agentguard 1.1.8 → 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.
Files changed (55) hide show
  1. package/README.md +31 -12
  2. package/dist/cli.js +518 -54
  3. package/dist/cli.js.map +1 -1
  4. package/dist/config.d.ts +1 -0
  5. package/dist/config.d.ts.map +1 -1
  6. package/dist/config.js +6 -0
  7. package/dist/config.js.map +1 -1
  8. package/dist/feed/cron.d.ts +32 -2
  9. package/dist/feed/cron.d.ts.map +1 -1
  10. package/dist/feed/cron.js +398 -30
  11. package/dist/feed/cron.js.map +1 -1
  12. package/dist/feed/selfcheck.d.ts +10 -1
  13. package/dist/feed/selfcheck.d.ts.map +1 -1
  14. package/dist/feed/selfcheck.js +220 -37
  15. package/dist/feed/selfcheck.js.map +1 -1
  16. package/dist/feed/types.d.ts +1 -1
  17. package/dist/feed/types.d.ts.map +1 -1
  18. package/dist/installers.d.ts +1 -1
  19. package/dist/installers.d.ts.map +1 -1
  20. package/dist/installers.js +57 -0
  21. package/dist/installers.js.map +1 -1
  22. package/dist/postinstall.js +9 -0
  23. package/dist/postinstall.js.map +1 -1
  24. package/dist/runtime/types.d.ts +1 -1
  25. package/dist/runtime/types.d.ts.map +1 -1
  26. package/dist/tests/cli-checkup.test.d.ts +2 -0
  27. package/dist/tests/cli-checkup.test.d.ts.map +1 -0
  28. package/dist/tests/cli-checkup.test.js +63 -0
  29. package/dist/tests/cli-checkup.test.js.map +1 -0
  30. package/dist/tests/cli-init.test.d.ts +2 -0
  31. package/dist/tests/cli-init.test.d.ts.map +1 -0
  32. package/dist/tests/cli-init.test.js +40 -0
  33. package/dist/tests/cli-init.test.js.map +1 -0
  34. package/dist/tests/cli-policy.test.js +47 -0
  35. package/dist/tests/cli-policy.test.js.map +1 -1
  36. package/dist/tests/cli-subscribe.test.d.ts +2 -0
  37. package/dist/tests/cli-subscribe.test.d.ts.map +1 -0
  38. package/dist/tests/cli-subscribe.test.js +123 -0
  39. package/dist/tests/cli-subscribe.test.js.map +1 -0
  40. package/dist/tests/feed-cron.test.js +266 -13
  41. package/dist/tests/feed-cron.test.js.map +1 -1
  42. package/dist/tests/feed-selfcheck.test.js +65 -3
  43. package/dist/tests/feed-selfcheck.test.js.map +1 -1
  44. package/dist/tests/feed-state.test.d.ts +2 -0
  45. package/dist/tests/feed-state.test.d.ts.map +1 -0
  46. package/dist/tests/feed-state.test.js +40 -0
  47. package/dist/tests/feed-state.test.js.map +1 -0
  48. package/dist/tests/installer.test.js +13 -0
  49. package/dist/tests/installer.test.js.map +1 -1
  50. package/dist/tests/postinstall.test.d.ts +2 -0
  51. package/dist/tests/postinstall.test.d.ts.map +1 -0
  52. package/dist/tests/postinstall.test.js +27 -0
  53. package/dist/tests/postinstall.test.js.map +1 -0
  54. package/package.json +2 -1
  55. package/skills/agentguard/SKILL.md +37 -9
package/dist/feed/cron.js CHANGED
@@ -3,43 +3,90 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
3
3
  return (mod && mod.__esModule) ? mod : { "default": mod };
4
4
  };
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
- exports.parseIntervalMinutes = parseIntervalMinutes;
6
+ exports.validateCronExpression = validateCronExpression;
7
+ exports.localTimeZone = localTimeZone;
8
+ exports.installThreatFeedCron = installThreatFeedCron;
7
9
  exports.installOpenClawThreatFeedCron = installOpenClawThreatFeedCron;
8
10
  exports.extractOpenClawCronJobs = extractOpenClawCronJobs;
9
11
  exports.openClawGatewayRequest = openClawGatewayRequest;
10
12
  const node_http_1 = __importDefault(require("node:http"));
11
- function parseIntervalMinutes(value) {
12
- if (!/^\d+$/.test(value)) {
13
- throw new Error('Invalid --interval-minutes. Use an integer between 1 and 59.');
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");
17
+ function validateCronExpression(value) {
18
+ const expr = value.trim();
19
+ const fields = expr.split(/\s+/);
20
+ if (fields.length !== 5) {
21
+ throw new Error('Invalid --cron. Use a standard five-field cron expression, for example "0 * * * *".');
14
22
  }
15
- const minutes = Number.parseInt(value, 10);
16
- if (!Number.isInteger(minutes) || minutes < 1 || minutes > 59) {
17
- throw new Error('Invalid --interval-minutes. Use an integer between 1 and 59.');
23
+ if (fields.some((field) => field.length === 0)) {
24
+ throw new Error('Invalid --cron. Use a standard five-field cron expression, for example "0 * * * *".');
18
25
  }
19
- return minutes;
26
+ return fields.join(' ');
27
+ }
28
+ function localTimeZone() {
29
+ return Intl.DateTimeFormat().resolvedOptions().timeZone || 'UTC';
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.');
20
71
  }
21
72
  async function installOpenClawThreatFeedCron(options, gateway = {}) {
22
- const schedule = `*/${options.intervalMinutes} * * * *`;
73
+ const schedule = validateCronExpression(options.cronExpression);
74
+ const timezone = options.timezone ?? localTimeZone();
75
+ const command = threatFeedCommand(options.quiet);
23
76
  const existing = await findOpenClawCronJobsByName(options.name, gateway);
24
77
  if (existing.length > 0 && !options.force) {
25
78
  return {
26
79
  name: options.name,
27
80
  schedule,
81
+ timezone,
28
82
  created: false,
83
+ backend: 'openclaw-gateway',
84
+ command,
29
85
  };
30
86
  }
31
- const description = `AgentGuard Cloud threat feed self-check every ${options.intervalMinutes} minute${options.intervalMinutes === 1 ? '' : 's'}`;
32
- const message = [
33
- 'Run `agentguard subscribe --json --cron-run`.',
34
- '',
35
- 'Rules:',
36
- '- If the JSON field `hardFailures` is greater than 0, output a short error summary and do not send a threat-match notification.',
37
- '- If the JSON field `shouldNotify` is true, send `notification.body` exactly as-is using the current session notification context.',
38
- '- If `shouldNotify` is false, output "skipped" and finish without sending any message.',
39
- '- If the command fails or the JSON cannot be parsed, output a short error summary and do not send a threat-match notification.',
40
- '',
41
- 'Follow these rules exactly.',
42
- ].join('\n');
87
+ const mode = options.quiet ? 'quiet' : 'manual';
88
+ const description = `AgentGuard Cloud threat feed subscription (${schedule})`;
89
+ const message = openClawCronMessage(options.quiet);
43
90
  if (existing.length > 0) {
44
91
  await removeOpenClawCronJobs(existing, gateway);
45
92
  }
@@ -49,14 +96,19 @@ async function installOpenClawThreatFeedCron(options, gateway = {}) {
49
96
  description,
50
97
  enabled: true,
51
98
  schedule: {
52
- kind: 'every',
53
- everyMs: options.intervalMinutes * 60 * 1000,
99
+ kind: 'cron',
100
+ expr: schedule,
101
+ tz: timezone,
54
102
  },
55
103
  sessionTarget: 'isolated',
56
104
  payload: {
57
105
  kind: 'agentTurn',
58
106
  message,
59
107
  timeoutSeconds: 300,
108
+ agentguard: {
109
+ mode,
110
+ command,
111
+ },
60
112
  },
61
113
  delivery: {
62
114
  mode: 'none',
@@ -66,13 +118,328 @@ async function installOpenClawThreatFeedCron(options, gateway = {}) {
66
118
  return {
67
119
  name: options.name,
68
120
  schedule,
121
+ timezone,
69
122
  created: true,
123
+ backend: 'openclaw-gateway',
124
+ command,
70
125
  };
71
126
  }
72
127
  async function findOpenClawCronJobsByName(name, gateway) {
73
- const listed = await openClawGatewayRequest('cron.list', {}, gateway).catch(() => null);
128
+ const listed = await openClawGatewayRequest('cron.list', {}, gateway);
74
129
  return extractOpenClawCronJobs(listed).filter((job) => job.name === name);
75
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
+ }
76
443
  async function removeOpenClawCronJobs(jobs, gateway) {
77
444
  for (const job of jobs) {
78
445
  if (!job.id)
@@ -105,6 +472,7 @@ function openClawGatewayRequest(method, params, options = {}) {
105
472
  });
106
473
  const host = options.host ?? '127.0.0.1';
107
474
  const port = options.port ?? 18789;
475
+ const label = options.label ?? 'OpenClaw Gateway';
108
476
  const timeoutMs = options.timeoutMs ?? 5000;
109
477
  return new Promise((resolve, reject) => {
110
478
  let settled = false;
@@ -133,7 +501,7 @@ function openClawGatewayRequest(method, params, options = {}) {
133
501
  let data = '';
134
502
  res.setEncoding('utf8');
135
503
  res.on('error', (err) => {
136
- fail(new Error(`OpenClaw Gateway ${method} response failed: ${err.message}`));
504
+ fail(new Error(`${label} ${method} response failed: ${err.message}`));
137
505
  });
138
506
  res.on('data', (chunk) => {
139
507
  data += chunk;
@@ -144,25 +512,25 @@ function openClawGatewayRequest(method, params, options = {}) {
144
512
  parsed = data ? JSON.parse(data) : null;
145
513
  }
146
514
  catch {
147
- fail(new Error(`OpenClaw Gateway returned non-JSON response: ${data}`));
515
+ fail(new Error(`${label} returned non-JSON response: ${data}`));
148
516
  return;
149
517
  }
150
518
  if (parsed?.error) {
151
- fail(new Error(`OpenClaw Gateway ${method} failed: ${parsed.error.message ?? JSON.stringify(parsed.error)}`));
519
+ fail(new Error(`${label} ${method} failed: ${parsed.error.message ?? JSON.stringify(parsed.error)}`));
152
520
  return;
153
521
  }
154
522
  if (res.statusCode && res.statusCode >= 400) {
155
- fail(new Error(`OpenClaw Gateway ${method} failed with HTTP ${res.statusCode}`));
523
+ fail(new Error(`${label} ${method} failed with HTTP ${res.statusCode}`));
156
524
  return;
157
525
  }
158
526
  succeed(parsed?.result ?? parsed);
159
527
  });
160
528
  });
161
529
  req.on('error', (err) => {
162
- fail(new Error(`Could not reach OpenClaw Gateway at ${host}:${port}: ${err.message}`));
530
+ fail(new Error(`Could not reach ${label} at ${host}:${port}: ${err.message}`));
163
531
  });
164
532
  req.setTimeout(timeoutMs, () => {
165
- const err = new Error(`OpenClaw Gateway ${method} request timed out after ${timeoutMs}ms`);
533
+ const err = new Error(`${label} ${method} request timed out after ${timeoutMs}ms`);
166
534
  fail(err);
167
535
  req.destroy(err);
168
536
  });
@@ -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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"}
@@ -16,10 +16,19 @@ import type { Advisory, SelfCheckResult } from './types.js';
16
16
  * conventions, but inspection of those is config-aware and lives elsewhere.
17
17
  */
18
18
  export declare const DEFAULT_SKILL_ROOTS: string[];
19
+ export declare const DEFAULT_PLUGIN_ROOTS: string[];
20
+ export declare const DEFAULT_MCP_CONFIG_PATHS: string[];
21
+ export declare const DEFAULT_SUPPLY_CHAIN_PATHS: string[];
22
+ export declare const DEFAULT_URL_SCAN_PATHS: string[];
19
23
  export interface RunSelfCheckOptions {
20
24
  /** Override the default per-ecosystem search roots. */
21
25
  skillRoots?: string[];
22
- /** Cap on hashing work: skill dirs beyond this count are skipped. */
26
+ pluginRoots?: string[];
27
+ mcpConfigPaths?: string[];
28
+ supplyChainPaths?: string[];
29
+ urlScanPaths?: string[];
30
+ promptInjectionRoots?: string[];
31
+ /** Cap on local artifacts checked per advisory. */
23
32
  maxArtifacts?: number;
24
33
  }
25
34
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"selfcheck.d.ts","sourceRoot":"","sources":["../../src/feed/selfcheck.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,OAAO,KAAK,EACV,QAAQ,EAGR,eAAe,EAChB,MAAM,YAAY,CAAC;AAEpB;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,UAK/B,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC,uDAAuD;IACvD,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,qEAAqE;IACrE,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,QAAQ,EAClB,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,eAAe,CAAC,CAqC1B;AAgGD,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAiBpE;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAOjE"}
1
+ {"version":3,"file":"selfcheck.d.ts","sourceRoot":"","sources":["../../src/feed/selfcheck.ts"],"names":[],"mappings":"AAAA;;;;;;GAMG;AAOH,OAAO,KAAK,EACV,QAAQ,EAIR,eAAe,EAChB,MAAM,YAAY,CAAC;AAEpB;;;;;;;;GAQG;AACH,eAAO,MAAM,mBAAmB,UAK/B,CAAC;AAEF,eAAO,MAAM,oBAAoB,UAKhC,CAAC;AAEF,eAAO,MAAM,wBAAwB,UAOpC,CAAC;AAEF,eAAO,MAAM,0BAA0B,UAatC,CAAC;AAEF,eAAO,MAAM,sBAAsB,UAOlC,CAAC;AAEF,MAAM,WAAW,mBAAmB;IAClC,uDAAuD;IACvD,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;IACtB,WAAW,CAAC,EAAE,MAAM,EAAE,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,EAAE,CAAC;IAC1B,gBAAgB,CAAC,EAAE,MAAM,EAAE,CAAC;IAC5B,YAAY,CAAC,EAAE,MAAM,EAAE,CAAC;IACxB,oBAAoB,CAAC,EAAE,MAAM,EAAE,CAAC;IAChC,mDAAmD;IACnD,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AASD;;;GAGG;AACH,wBAAsB,uBAAuB,CAC3C,QAAQ,EAAE,QAAQ,EAClB,OAAO,GAAE,mBAAwB,GAChC,OAAO,CAAC,eAAe,CAAC,CA+B1B;AA8PD,wBAAgB,aAAa,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAiBpE;AAED;;;GAGG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,GAAG,OAAO,CAOjE"}