@goplus/agentguard 1.1.18 → 1.1.20

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 (37) hide show
  1. package/dist/adapters/engine.d.ts.map +1 -1
  2. package/dist/adapters/engine.js +10 -0
  3. package/dist/adapters/engine.js.map +1 -1
  4. package/dist/cli.js +176 -33
  5. package/dist/cli.js.map +1 -1
  6. package/dist/config.d.ts +3 -0
  7. package/dist/config.d.ts.map +1 -1
  8. package/dist/config.js +10 -0
  9. package/dist/config.js.map +1 -1
  10. package/dist/feed/cron.d.ts +17 -0
  11. package/dist/feed/cron.d.ts.map +1 -1
  12. package/dist/feed/cron.js +197 -18
  13. package/dist/feed/cron.js.map +1 -1
  14. package/dist/installers.d.ts.map +1 -1
  15. package/dist/installers.js +76 -1
  16. package/dist/installers.js.map +1 -1
  17. package/dist/runtime/protect.d.ts.map +1 -1
  18. package/dist/runtime/protect.js +6 -0
  19. package/dist/runtime/protect.js.map +1 -1
  20. package/dist/runtime/self-command.d.ts +2 -0
  21. package/dist/runtime/self-command.d.ts.map +1 -0
  22. package/dist/runtime/self-command.js +73 -0
  23. package/dist/runtime/self-command.js.map +1 -0
  24. package/dist/tests/cli-connect.test.js +118 -1
  25. package/dist/tests/cli-connect.test.js.map +1 -1
  26. package/dist/tests/cli-init.test.js +113 -0
  27. package/dist/tests/cli-init.test.js.map +1 -1
  28. package/dist/tests/cli-subscribe.test.js +71 -0
  29. package/dist/tests/cli-subscribe.test.js.map +1 -1
  30. package/dist/tests/feed-cron.test.js +236 -0
  31. package/dist/tests/feed-cron.test.js.map +1 -1
  32. package/dist/tests/installer.test.js +69 -0
  33. package/dist/tests/installer.test.js.map +1 -1
  34. package/dist/tests/runtime-cloud.test.js +83 -0
  35. package/dist/tests/runtime-cloud.test.js.map +1 -1
  36. package/package.json +1 -1
  37. package/skills/agentguard/SKILL.md +10 -4
package/dist/config.d.ts CHANGED
@@ -11,6 +11,8 @@ export interface AgentGuardConfig {
11
11
  agentRegisterUrl?: string;
12
12
  agentRegisteredAt?: string;
13
13
  connectedAt?: string;
14
+ threatFeedCronName?: string;
15
+ threatFeedCronInstalledAt?: string;
14
16
  policyCachePath: string;
15
17
  auditPath: string;
16
18
  eventSpoolPath: string;
@@ -39,6 +41,7 @@ export declare function connectAgentJwt(options: {
39
41
  cloudUrl?: string;
40
42
  }): AgentGuardConfig;
41
43
  export declare function clearAgentJwt(config?: AgentGuardConfig): AgentGuardConfig;
44
+ export declare function clearAgentRegisterUrl(config?: AgentGuardConfig): AgentGuardConfig;
42
45
  export declare function disconnectCloud(): AgentGuardConfig;
43
46
  export declare function maskApiKey(apiKey?: string): string;
44
47
  export declare function validateApiKey(apiKey: string): void;
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,mBAAmB,GAAG,aAAa,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE5F,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,CAAC,CAAC;IACX,KAAK,EAAE,QAAQ,GAAG,UAAU,GAAG,YAAY,CAAC;IAC5C,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,UAAU,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CACxB;AAKD,wBAAgB,kBAAkB,IAAI,eAAe,CASpD;AAED,wBAAgB,aAAa,IAAI,gBAAgB,CAUhD;AAED,wBAAgB,oBAAoB,IAAI,eAAe,CAKtD;AAED,wBAAgB,YAAY,IAAI,gBAAgB,CAQ/C;AAED,wBAAgB,UAAU,IAAI,gBAAgB,CAoB7C;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAKzD;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,gBAAgB,CAe7F;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,gBAAgB,CAqBnB;AAED,wBAAgB,aAAa,CAAC,MAAM,GAAE,gBAAiC,GAAG,gBAAgB,CAQzF;AAED,wBAAgB,eAAe,IAAI,gBAAgB,CAalD;AAED,wBAAgB,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAIlD;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAInD;AAID,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAevD"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAIA,MAAM,MAAM,mBAAmB,GAAG,aAAa,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;AAE5F,MAAM,WAAW,gBAAgB;IAC/B,OAAO,EAAE,CAAC,CAAC;IACX,KAAK,EAAE,QAAQ,GAAG,UAAU,GAAG,YAAY,CAAC;IAC5C,SAAS,CAAC,EAAE,mBAAmB,CAAC;IAChC,UAAU,CAAC,EAAE,mBAAmB,EAAE,CAAC;IACnC,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,yBAAyB,CAAC,EAAE,MAAM,CAAC;IACnC,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,eAAe;IAC9B,IAAI,EAAE,MAAM,CAAC;IACb,UAAU,EAAE,MAAM,CAAC;IACnB,eAAe,EAAE,MAAM,CAAC;IACxB,SAAS,EAAE,MAAM,CAAC;IAClB,cAAc,EAAE,MAAM,CAAC;CACxB;AAKD,wBAAgB,kBAAkB,IAAI,eAAe,CASpD;AAED,wBAAgB,aAAa,IAAI,gBAAgB,CAUhD;AAED,wBAAgB,oBAAoB,IAAI,eAAe,CAKtD;AAED,wBAAgB,YAAY,IAAI,gBAAgB,CAQ/C;AAED,wBAAgB,UAAU,IAAI,gBAAgB,CAoB7C;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,gBAAgB,GAAG,IAAI,CAKzD;AAED,wBAAgB,YAAY,CAAC,OAAO,EAAE;IAAE,MAAM,EAAE,MAAM,CAAC;IAAC,QAAQ,CAAC,EAAE,MAAM,CAAA;CAAE,GAAG,gBAAgB,CAe7F;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE;IACvC,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,GAAG,gBAAgB,CAsBnB;AAED,wBAAgB,aAAa,CAAC,MAAM,GAAE,gBAAiC,GAAG,gBAAgB,CAQzF;AAED,wBAAgB,qBAAqB,CAAC,MAAM,GAAE,gBAAiC,GAAG,gBAAgB,CAKjG;AAED,wBAAgB,eAAe,IAAI,gBAAgB,CAelD;AAED,wBAAgB,UAAU,CAAC,MAAM,CAAC,EAAE,MAAM,GAAG,MAAM,CAIlD;AAED,wBAAgB,cAAc,CAAC,MAAM,EAAE,MAAM,GAAG,IAAI,CAInD;AAID,wBAAgB,iBAAiB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAevD"}
package/dist/config.js CHANGED
@@ -9,6 +9,7 @@ exports.saveConfig = saveConfig;
9
9
  exports.connectCloud = connectCloud;
10
10
  exports.connectAgentJwt = connectAgentJwt;
11
11
  exports.clearAgentJwt = clearAgentJwt;
12
+ exports.clearAgentRegisterUrl = clearAgentRegisterUrl;
12
13
  exports.disconnectCloud = disconnectCloud;
13
14
  exports.maskApiKey = maskApiKey;
14
15
  exports.validateApiKey = validateApiKey;
@@ -117,6 +118,7 @@ function connectAgentJwt(options) {
117
118
  agentRegisteredAt: new Date().toISOString(),
118
119
  connectedAt: new Date().toISOString(),
119
120
  };
121
+ delete next.apiKey;
120
122
  saveConfig(next);
121
123
  return next;
122
124
  }
@@ -129,6 +131,12 @@ function clearAgentJwt(config = ensureConfig()) {
129
131
  saveConfig(next);
130
132
  return next;
131
133
  }
134
+ function clearAgentRegisterUrl(config = ensureConfig()) {
135
+ const next = { ...config };
136
+ delete next.agentRegisterUrl;
137
+ saveConfig(next);
138
+ return next;
139
+ }
132
140
  function disconnectCloud() {
133
141
  const current = ensureConfig();
134
142
  const next = { ...current };
@@ -138,6 +146,8 @@ function disconnectCloud() {
138
146
  delete next.agentRegisterUrl;
139
147
  delete next.agentRegisteredAt;
140
148
  delete next.connectedAt;
149
+ delete next.threatFeedCronName;
150
+ delete next.threatFeedCronInstalledAt;
141
151
  (0, node_fs_1.rmSync)(current.eventSpoolPath, { force: true });
142
152
  (0, node_fs_1.rmSync)(current.policyCachePath, { force: true });
143
153
  saveConfig(next);
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -10,10 +10,17 @@ export interface OpenClawCronInstallResult {
10
10
  command?: string;
11
11
  script?: string;
12
12
  }
13
+ export interface ThreatFeedCronRemovalResult {
14
+ name: string;
15
+ backend: ResolvedCronBackend;
16
+ removed: boolean;
17
+ error?: string;
18
+ }
13
19
  export interface OpenClawGatewayOptions {
14
20
  host?: string;
15
21
  port?: number;
16
22
  url?: string;
23
+ token?: string;
17
24
  label?: string;
18
25
  timeoutMs?: number;
19
26
  runCommand?: CommandRunner;
@@ -44,6 +51,16 @@ export declare function installThreatFeedCron(options: {
44
51
  gateway?: OpenClawGatewayOptions;
45
52
  runCommand?: CommandRunner;
46
53
  }): Promise<OpenClawCronInstallResult>;
54
+ export declare function removeThreatFeedCron(options: {
55
+ name: string;
56
+ backend?: CronBackend | 'all';
57
+ agentHost?: CronAgentHost;
58
+ agentGuardHome?: string;
59
+ hermesHome?: string;
60
+ }, adapters?: {
61
+ gateway?: OpenClawGatewayOptions;
62
+ runCommand?: CommandRunner;
63
+ }): Promise<ThreatFeedCronRemovalResult[]>;
47
64
  export declare function installOpenClawThreatFeedCron(options: {
48
65
  name: string;
49
66
  cronExpression: string;
@@ -1 +1 @@
1
- {"version":3,"file":"cron.d.ts","sourceRoot":"","sources":["../../src/feed/cron.ts"],"names":[],"mappings":"AASA,MAAM,MAAM,WAAW,GAAG,MAAM,GAAG,UAAU,GAAG,OAAO,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAC9E,MAAM,MAAM,mBAAmB,GAAG,UAAU,GAAG,kBAAkB,GAAG,eAAe,GAAG,QAAQ,GAAG,QAAQ,CAAC;AAC1G,MAAM,MAAM,aAAa,GAAG,aAAa,GAAG,OAAO,GAAG,UAAU,GAAG,QAAQ,GAAG,OAAO,CAAC;AAEtF,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,MAAM,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,OAAO,CAAC,EAAE,mBAAmB,CAAC;IAC9B,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;CACjB;AAED,MAAM,WAAW,sBAAsB;IACrC,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,aAAa,CAAC;IAC3B,OAAO,CAAC,EAAE,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,KAAK,OAAO,CAAC,OAAO,CAAC,CAAC;CACjE;AAED,MAAM,WAAW,aAAa;IAC5B,MAAM,EAAE,MAAM,CAAC;IACf,MAAM,EAAE,MAAM,CAAC;CAChB;AAED,MAAM,MAAM,aAAa,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,IAAI,EAAE,MAAM,EAAE,EAAE,KAAK,CAAC,EAAE,MAAM,KAAK,OAAO,CAAC,aAAa,CAAC,CAAC;AAExG,UAAU,eAAe;IACvB,EAAE,CAAC,EAAE,MAAM,CAAC;IACZ,IAAI,CAAC,EAAE,MAAM,CAAC;CACf;AAkBD,wBAAgB,sBAAsB,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM,CAU5D;AAED,wBAAgB,aAAa,IAAI,MAAM,CAEtC;AAED,wBAAsB,qBAAqB,CACzC,OAAO,EAAE;IACP,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,WAAW,CAAC;IACtB,SAAS,CAAC,EAAE,aAAa,CAAC;IAC1B,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,EACD,QAAQ,GAAE;IACR,OAAO,CAAC,EAAE,sBAAsB,CAAC;IACjC,UAAU,CAAC,EAAE,aAAa,CAAC;CACvB,GACL,OAAO,CAAC,yBAAyB,CAAC,CAwDpC;AAED,wBAAsB,6BAA6B,CACjD,OAAO,EAAE;IACP,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IACvB,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;CACnB,EACD,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,yBAAyB,CAAC,CAsDpC;AA6eD,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,OAAO,GAAG,eAAe,EAAE,CAczE;AAED,wBAAgB,sBAAsB,CACpC,MAAM,EAAE,MAAM,EACd,MAAM,EAAE,OAAO,EACf,OAAO,GAAE,sBAA2B,GACnC,OAAO,CAAC,OAAO,CAAC,CAoBlB"}
1
+ {"version":3,"file":"cron.d.ts","sourceRoot":"","sources":["../../src/feed/cron.ts"],"names":[],"mappings":"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"}
package/dist/feed/cron.js CHANGED
@@ -6,6 +6,7 @@ Object.defineProperty(exports, "__esModule", { value: true });
6
6
  exports.validateCronExpression = validateCronExpression;
7
7
  exports.localTimeZone = localTimeZone;
8
8
  exports.installThreatFeedCron = installThreatFeedCron;
9
+ exports.removeThreatFeedCron = removeThreatFeedCron;
9
10
  exports.installOpenClawThreatFeedCron = installOpenClawThreatFeedCron;
10
11
  exports.extractOpenClawCronJobs = extractOpenClawCronJobs;
11
12
  exports.openClawGatewayRequest = openClawGatewayRequest;
@@ -85,6 +86,53 @@ async function installThreatFeedCron(options, adapters = {}) {
85
86
  }
86
87
  throw new Error('Invalid cron target. Use auto, openclaw, qclaw, hermes, or system.');
87
88
  }
89
+ async function removeThreatFeedCron(options, adapters = {}) {
90
+ const backend = options.backend ?? 'auto';
91
+ if (backend === 'all') {
92
+ return removeThreatFeedCronFromBackends(options, ['system', 'hermes', 'openclaw', 'openclaw-gateway', 'qclaw-gateway'], adapters);
93
+ }
94
+ if (backend === 'system') {
95
+ return [await removeSystemThreatFeedCron(options, adapters.runCommand)];
96
+ }
97
+ if (backend === 'hermes') {
98
+ return [await removeHermesThreatFeedCron(options, adapters.runCommand)];
99
+ }
100
+ if (backend === 'openclaw') {
101
+ return removeThreatFeedCronFromBackends(options, ['openclaw', 'openclaw-gateway'], adapters);
102
+ }
103
+ if (backend === 'qclaw') {
104
+ return [await removeGatewayThreatFeedCron(options, qclawGatewayOptions(adapters.gateway), 'qclaw-gateway')];
105
+ }
106
+ const targets = ['system'];
107
+ if (options.agentHost === 'hermes')
108
+ targets.push('hermes');
109
+ if (options.agentHost === 'openclaw')
110
+ targets.push('openclaw', 'openclaw-gateway');
111
+ if (options.agentHost === 'qclaw')
112
+ targets.push('qclaw-gateway');
113
+ return removeThreatFeedCronFromBackends(options, targets, adapters);
114
+ }
115
+ async function removeThreatFeedCronFromBackends(options, backends, adapters) {
116
+ const results = [];
117
+ for (const backend of backends) {
118
+ if (backend === 'system') {
119
+ results.push(await removeSystemThreatFeedCron(options, adapters.runCommand));
120
+ }
121
+ else if (backend === 'hermes') {
122
+ results.push(await removeHermesThreatFeedCron(options, adapters.runCommand));
123
+ }
124
+ else if (backend === 'openclaw') {
125
+ results.push(await removeOpenClawNativeThreatFeedCron(options, adapters.runCommand));
126
+ }
127
+ else if (backend === 'openclaw-gateway') {
128
+ results.push(await removeGatewayThreatFeedCron(options, adapters.gateway, 'openclaw-gateway'));
129
+ }
130
+ else if (backend === 'qclaw-gateway') {
131
+ results.push(await removeGatewayThreatFeedCron(options, qclawGatewayOptions(adapters.gateway), 'qclaw-gateway'));
132
+ }
133
+ }
134
+ return results;
135
+ }
88
136
  async function installOpenClawThreatFeedCron(options, gateway = {}) {
89
137
  const schedule = validateCronExpression(options.cronExpression);
90
138
  const timezone = options.timezone ?? localTimeZone();
@@ -198,7 +246,8 @@ async function installOpenClawNativeThreatFeedCron(options, runCommand = execCom
198
246
  catch (err) {
199
247
  throw new CronBackendUnavailableError(`Could not list native OpenClaw cron jobs. Is OpenClaw installed and available on PATH? ${err.message}`);
200
248
  }
201
- if (nativeCronListHasExactName(existing.stdout, options.name) && !options.force) {
249
+ const existingJobs = nativeCronListJobsByName(existing.stdout, options.name);
250
+ if (existingJobs.length > 0 && !options.force) {
202
251
  return {
203
252
  name: options.name,
204
253
  schedule,
@@ -208,6 +257,11 @@ async function installOpenClawNativeThreatFeedCron(options, runCommand = execCom
208
257
  command,
209
258
  };
210
259
  }
260
+ if (existingJobs.length > 0) {
261
+ for (const job of existingJobs) {
262
+ await runCommand('openclaw', ['cron', 'remove', job.id ?? job.name ?? options.name]);
263
+ }
264
+ }
211
265
  const args = [
212
266
  'cron',
213
267
  'add',
@@ -229,8 +283,6 @@ async function installOpenClawNativeThreatFeedCron(options, runCommand = execCom
229
283
  '--thinking',
230
284
  'off',
231
285
  ];
232
- if (options.force)
233
- args.push('--force');
234
286
  await runCommand('openclaw', args);
235
287
  return {
236
288
  name: options.name,
@@ -248,21 +300,34 @@ class CronBackendUnavailableError extends Error {
248
300
  }
249
301
  }
250
302
  function nativeCronListHasExactName(stdout, name) {
303
+ return nativeCronListJobsByName(stdout, name).length > 0;
304
+ }
305
+ function nativeCronListJobsByName(stdout, name) {
251
306
  const jsonJobs = extractOpenClawCronJobs(parseJsonOrNull(stdout));
252
- if (jsonJobs.some((job) => job.name === name))
253
- return true;
307
+ const exactJsonJobs = jsonJobs.filter((job) => job.name === name);
308
+ if (exactJsonJobs.length > 0)
309
+ return exactJsonJobs;
254
310
  return stdout
255
311
  .split(/\r?\n/)
256
312
  .map((line) => line.trim())
257
313
  .filter(Boolean)
258
- .some((line) => nativeCronListLineHasExactName(line, name));
314
+ .filter((line) => nativeCronListLineHasExactName(line, name))
315
+ .map((line) => ({ id: nativeCronListLineId(line), name }));
259
316
  }
260
317
  function nativeCronListLineHasExactName(line, name) {
261
318
  const quoted = line.match(/(["'])(.*?)\1/);
262
319
  if (quoted?.[2] === name)
263
320
  return true;
264
321
  const cells = line.split(/\s{2,}|\t+/).map((cell) => cell.trim()).filter(Boolean);
265
- return cells.includes(name);
322
+ if (cells.includes(name))
323
+ return true;
324
+ return new RegExp(`(^|\\s)${escapeRegExp(name)}(\\s|$)`).test(line);
325
+ }
326
+ function nativeCronListLineId(line) {
327
+ return line.match(/\b[0-9a-f]{8}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{4}-[0-9a-f]{12}\b/i)?.[0];
328
+ }
329
+ function escapeRegExp(value) {
330
+ return value.replace(/[.*+?^${}()|[\]\\]/g, '\\$&');
266
331
  }
267
332
  function parseJsonOrNull(value) {
268
333
  try {
@@ -360,6 +425,67 @@ async function installSystemThreatFeedCron(options, runCommand = execCommand) {
360
425
  script,
361
426
  };
362
427
  }
428
+ async function removeSystemThreatFeedCron(options, runCommand = execCommand) {
429
+ const home = validateCronFilesystemPath(options.agentGuardHome ?? (0, node_path_1.join)((0, node_os_1.homedir)(), '.agentguard'), 'AGENTGUARD_HOME');
430
+ const jobId = sanitizeCronJobId(options.name);
431
+ try {
432
+ const existing = await runCommand('crontab', ['-l']).then((result) => result.stdout, () => '');
433
+ const next = removeAgentGuardCronBlock(existing, jobId).trimEnd();
434
+ if (next === existing.trimEnd()) {
435
+ return { name: options.name, backend: 'system', removed: false };
436
+ }
437
+ await runCommand('crontab', ['-'], next ? `${next}\n` : '');
438
+ await (0, promises_1.rm)((0, node_path_1.join)(home, 'scripts', `${jobId}.sh`), { force: true }).catch(() => undefined);
439
+ return { name: options.name, backend: 'system', removed: true };
440
+ }
441
+ catch (err) {
442
+ return { name: options.name, backend: 'system', removed: false, error: err.message };
443
+ }
444
+ }
445
+ async function removeHermesThreatFeedCron(options, runCommand = execCommand) {
446
+ try {
447
+ const existing = await runCommand('hermes', ['cron', 'list']);
448
+ if (!existing.stdout.includes(options.name)) {
449
+ return { name: options.name, backend: 'hermes', removed: false };
450
+ }
451
+ await runCommand('hermes', ['cron', 'remove', options.name]);
452
+ const hermesHome = (options.hermesHome ?? process.env.HERMES_HOME?.trim()) || (0, node_path_1.join)((0, node_os_1.homedir)(), '.hermes');
453
+ await (0, promises_1.rm)((0, node_path_1.join)(hermesHome, 'scripts', `${sanitizeHermesScriptName(options.name)}.sh`), { force: true }).catch(() => undefined);
454
+ return { name: options.name, backend: 'hermes', removed: true };
455
+ }
456
+ catch (err) {
457
+ return { name: options.name, backend: 'hermes', removed: false, error: err.message };
458
+ }
459
+ }
460
+ async function removeOpenClawNativeThreatFeedCron(options, runCommand = execCommand) {
461
+ try {
462
+ const existing = await runCommand('openclaw', ['cron', 'list']);
463
+ const jobs = nativeCronListJobsByName(existing.stdout, options.name);
464
+ if (jobs.length === 0) {
465
+ return { name: options.name, backend: 'openclaw', removed: false };
466
+ }
467
+ for (const job of jobs) {
468
+ await runCommand('openclaw', ['cron', 'remove', job.id ?? job.name ?? options.name]);
469
+ }
470
+ return { name: options.name, backend: 'openclaw', removed: true };
471
+ }
472
+ catch (err) {
473
+ return { name: options.name, backend: 'openclaw', removed: false, error: err.message };
474
+ }
475
+ }
476
+ async function removeGatewayThreatFeedCron(options, gateway = {}, backend = 'openclaw-gateway') {
477
+ try {
478
+ const jobs = await findOpenClawCronJobsByName(options.name, gateway);
479
+ if (jobs.length === 0) {
480
+ return { name: options.name, backend, removed: false };
481
+ }
482
+ await removeOpenClawCronJobs(jobs, gateway);
483
+ return { name: options.name, backend, removed: jobs.some((job) => Boolean(job.id)) };
484
+ }
485
+ catch (err) {
486
+ return { name: options.name, backend, removed: false, error: err.message };
487
+ }
488
+ }
363
489
  function threatFeedCommand(quiet, options = {}) {
364
490
  const modeFlag = options.notifyRun ? '--cron-notify-run' : '--json --cron-run';
365
491
  return `agentguard subscribe${quiet ? ' --quiet' : ''} ${modeFlag}`;
@@ -562,6 +688,7 @@ function openClawGatewayRequest(method, params, options = {}) {
562
688
  const port = options.port ?? 18789;
563
689
  const label = options.label ?? 'OpenClaw Gateway';
564
690
  const timeoutMs = options.timeoutMs ?? 5000;
691
+ const token = options.token ?? resolveOpenClawGatewayToken();
565
692
  if (shouldUseOpenClawGatewayCli(options)) {
566
693
  return openClawGatewayCliRequest({
567
694
  method,
@@ -569,9 +696,9 @@ function openClawGatewayRequest(method, params, options = {}) {
569
696
  label,
570
697
  timeoutMs,
571
698
  runCommand: options.runCommand ?? execCommand,
572
- }).catch(() => openClawGatewayNetworkRequest({ host, port, method, params, label, timeoutMs, url: options.url }));
699
+ }).catch(() => openClawGatewayNetworkRequest({ host, port, method, params, label, timeoutMs, url: options.url, token }));
573
700
  }
574
- return openClawGatewayNetworkRequest({ host, port, method, params, label, timeoutMs, url: options.url });
701
+ return openClawGatewayNetworkRequest({ host, port, method, params, label, timeoutMs, url: options.url, token });
575
702
  }
576
703
  function openClawGatewayNetworkRequest(options) {
577
704
  if (options.url) {
@@ -581,6 +708,7 @@ function openClawGatewayNetworkRequest(options) {
581
708
  params: options.params,
582
709
  label: options.label,
583
710
  timeoutMs: options.timeoutMs,
711
+ token: options.token,
584
712
  });
585
713
  }
586
714
  return openClawGatewayHttpRequest({
@@ -590,6 +718,7 @@ function openClawGatewayNetworkRequest(options) {
590
718
  params: options.params,
591
719
  label: options.label,
592
720
  timeoutMs: options.timeoutMs,
721
+ token: options.token,
593
722
  }).catch((err) => {
594
723
  if (err instanceof GatewayHttpFallbackError) {
595
724
  return openClawGatewayWebSocketRequest({
@@ -598,6 +727,7 @@ function openClawGatewayNetworkRequest(options) {
598
727
  params: options.params,
599
728
  label: options.label,
600
729
  timeoutMs: options.timeoutMs,
730
+ token: options.token,
601
731
  });
602
732
  }
603
733
  throw err;
@@ -637,6 +767,13 @@ function openClawGatewayHttpRequest(options) {
637
767
  params: legacyGatewayParams(options.method, options.params),
638
768
  id: 1,
639
769
  });
770
+ const headers = {
771
+ 'Content-Type': 'application/json',
772
+ 'Content-Length': Buffer.byteLength(payload),
773
+ };
774
+ if (options.token) {
775
+ headers.Authorization = `Bearer ${options.token}`;
776
+ }
640
777
  return new Promise((resolve, reject) => {
641
778
  let settled = false;
642
779
  const fail = (err) => {
@@ -656,10 +793,7 @@ function openClawGatewayHttpRequest(options) {
656
793
  port: options.port,
657
794
  path: '/',
658
795
  method: 'POST',
659
- headers: {
660
- 'Content-Type': 'application/json',
661
- 'Content-Length': Buffer.byteLength(payload),
662
- },
796
+ headers,
663
797
  }, (res) => {
664
798
  let data = '';
665
799
  res.setEncoding('utf8');
@@ -706,6 +840,41 @@ function legacyGatewayParams(method, params) {
706
840
  return [params];
707
841
  return params;
708
842
  }
843
+ function resolveOpenClawGatewayToken() {
844
+ const agentGuardOverride = process.env.AGENTGUARD_OPENCLAW_GATEWAY_TOKEN?.trim();
845
+ if (agentGuardOverride)
846
+ return agentGuardOverride;
847
+ const openClawOverride = process.env.OPENCLAW_GATEWAY_TOKEN?.trim();
848
+ if (openClawOverride)
849
+ return openClawOverride;
850
+ return readOpenClawGatewayConfigToken();
851
+ }
852
+ function readOpenClawGatewayConfigToken() {
853
+ const configPath = resolveOpenClawConfigPath();
854
+ try {
855
+ const raw = (0, node_fs_1.readFileSync)(configPath, 'utf8').trim();
856
+ if (!raw)
857
+ return undefined;
858
+ const config = JSON.parse(raw);
859
+ const gateway = config.gateway;
860
+ if (!gateway || typeof gateway !== 'object' || Array.isArray(gateway))
861
+ return undefined;
862
+ const auth = gateway.auth;
863
+ if (!auth || typeof auth !== 'object' || Array.isArray(auth))
864
+ return undefined;
865
+ const token = auth.token;
866
+ return typeof token === 'string' && token.trim() ? token.trim() : undefined;
867
+ }
868
+ catch {
869
+ return undefined;
870
+ }
871
+ }
872
+ function resolveOpenClawConfigPath() {
873
+ const override = process.env.OPENCLAW_CONFIG_PATH?.trim();
874
+ if (override)
875
+ return resolveOpenClawUserPath(override);
876
+ return (0, node_path_1.join)(resolveOpenClawStateDir(), 'openclaw.json');
877
+ }
709
878
  function openClawGatewayWebSocketRequest(options) {
710
879
  const endpoint = parseGatewayWebSocketUrl(options.url, options.label);
711
880
  return new Promise((resolve, reject) => {
@@ -823,7 +992,7 @@ function openClawGatewayWebSocketRequest(options) {
823
992
  type: 'req',
824
993
  id: connectRequestId,
825
994
  method: 'connect',
826
- params: openClawConnectParams(nonce),
995
+ params: openClawConnectParams(nonce, options.token),
827
996
  })));
828
997
  return;
829
998
  }
@@ -975,7 +1144,7 @@ function encodeWebSocketFrame(text, opcode = 0x1) {
975
1144
  }
976
1145
  return Buffer.concat([header, mask, masked]);
977
1146
  }
978
- function openClawConnectParams(connectNonce) {
1147
+ function openClawConnectParams(connectNonce, token) {
979
1148
  return {
980
1149
  minProtocol: OPENCLAW_GATEWAY_MIN_PROTOCOL,
981
1150
  maxProtocol: OPENCLAW_GATEWAY_MAX_PROTOCOL,
@@ -995,7 +1164,8 @@ function openClawConnectParams(connectNonce) {
995
1164
  'operator.pairing',
996
1165
  'operator.talk.secrets',
997
1166
  ],
998
- ...(buildOpenClawGatewayDeviceAuth(connectNonce) ?? {}),
1167
+ ...(token ? { auth: { token } } : {}),
1168
+ ...(buildOpenClawGatewayDeviceAuth(connectNonce, token) ?? {}),
999
1169
  };
1000
1170
  }
1001
1171
  function gatewayFrameErrorMessage(frame) {
@@ -1010,7 +1180,7 @@ function extractOpenClawConnectNonce(frame) {
1010
1180
  const nonce = payload.nonce;
1011
1181
  return typeof nonce === 'string' && nonce.trim() ? nonce : undefined;
1012
1182
  }
1013
- function buildOpenClawGatewayDeviceAuth(connectNonce) {
1183
+ function buildOpenClawGatewayDeviceAuth(connectNonce, token) {
1014
1184
  if (!connectNonce?.trim())
1015
1185
  return undefined;
1016
1186
  const identity = loadOpenClawDeviceIdentity();
@@ -1034,6 +1204,7 @@ function buildOpenClawGatewayDeviceAuth(connectNonce) {
1034
1204
  signedAtMs,
1035
1205
  nonce: connectNonce,
1036
1206
  platform: process.platform,
1207
+ token,
1037
1208
  });
1038
1209
  return {
1039
1210
  device: {
@@ -1082,7 +1253,7 @@ function resolveOpenClawDeviceIdentityPath() {
1082
1253
  function resolveOpenClawStateDir() {
1083
1254
  const override = process.env.OPENCLAW_STATE_DIR?.trim();
1084
1255
  if (override)
1085
- return override;
1256
+ return resolveOpenClawUserPath(override);
1086
1257
  const current = (0, node_path_1.join)((0, node_os_1.homedir)(), OPENCLAW_STATE_DIRNAME);
1087
1258
  if ((0, node_fs_1.existsSync)(current))
1088
1259
  return current;
@@ -1091,6 +1262,14 @@ function resolveOpenClawStateDir() {
1091
1262
  return legacy;
1092
1263
  return current;
1093
1264
  }
1265
+ function resolveOpenClawUserPath(path) {
1266
+ if (path === '~')
1267
+ return (0, node_os_1.homedir)();
1268
+ if (path.startsWith('~/') || path.startsWith('~\\')) {
1269
+ return (0, node_path_1.join)((0, node_os_1.homedir)(), path.slice(2));
1270
+ }
1271
+ return (0, node_path_1.isAbsolute)(path) ? path : (0, node_path_1.join)(process.cwd(), path);
1272
+ }
1094
1273
  function normalizeOpenClawDeviceIdentity(value) {
1095
1274
  if (!value || typeof value !== 'object')
1096
1275
  return null;