@goplus/agentguard 1.0.14 → 1.1.3

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 (91) hide show
  1. package/README.md +33 -2
  2. package/dist/cli.d.ts +3 -0
  3. package/dist/cli.d.ts.map +1 -0
  4. package/dist/cli.js +172 -0
  5. package/dist/cli.js.map +1 -0
  6. package/dist/cloud/client.d.ts +19 -0
  7. package/dist/cloud/client.d.ts.map +1 -0
  8. package/dist/cloud/client.js +86 -0
  9. package/dist/cloud/client.js.map +1 -0
  10. package/dist/config.d.ts +31 -0
  11. package/dist/config.d.ts.map +1 -0
  12. package/dist/config.js +131 -0
  13. package/dist/config.js.map +1 -0
  14. package/dist/index.d.ts +7 -0
  15. package/dist/index.d.ts.map +1 -1
  16. package/dist/index.js +25 -1
  17. package/dist/index.js.map +1 -1
  18. package/dist/installers.d.ts +10 -0
  19. package/dist/installers.d.ts.map +1 -0
  20. package/dist/installers.js +137 -0
  21. package/dist/installers.js.map +1 -0
  22. package/dist/mcp-server.js +3 -2
  23. package/dist/mcp-server.js.map +1 -1
  24. package/dist/postinstall.d.ts +3 -0
  25. package/dist/postinstall.d.ts.map +1 -0
  26. package/dist/postinstall.js +13 -0
  27. package/dist/postinstall.js.map +1 -0
  28. package/dist/runtime/audit.d.ts +10 -0
  29. package/dist/runtime/audit.d.ts.map +1 -0
  30. package/dist/runtime/audit.js +94 -0
  31. package/dist/runtime/audit.js.map +1 -0
  32. package/dist/runtime/evaluator.d.ts +3 -0
  33. package/dist/runtime/evaluator.d.ts.map +1 -0
  34. package/dist/runtime/evaluator.js +197 -0
  35. package/dist/runtime/evaluator.js.map +1 -0
  36. package/dist/runtime/policy.d.ts +12 -0
  37. package/dist/runtime/policy.d.ts.map +1 -0
  38. package/dist/runtime/policy.js +81 -0
  39. package/dist/runtime/policy.js.map +1 -0
  40. package/dist/runtime/protect.d.ts +22 -0
  41. package/dist/runtime/protect.d.ts.map +1 -0
  42. package/dist/runtime/protect.js +172 -0
  43. package/dist/runtime/protect.js.map +1 -0
  44. package/dist/runtime/redaction.d.ts +6 -0
  45. package/dist/runtime/redaction.d.ts.map +1 -0
  46. package/dist/runtime/redaction.js +103 -0
  47. package/dist/runtime/redaction.js.map +1 -0
  48. package/dist/runtime/types.d.ts +62 -0
  49. package/dist/runtime/types.d.ts.map +1 -0
  50. package/dist/runtime/types.js +3 -0
  51. package/dist/runtime/types.js.map +1 -0
  52. package/dist/scanner/rules/trojan.js +1 -1
  53. package/dist/scanner/rules/trojan.js.map +1 -1
  54. package/dist/tests/cloud-live.test.d.ts +2 -0
  55. package/dist/tests/cloud-live.test.d.ts.map +1 -0
  56. package/dist/tests/cloud-live.test.js +68 -0
  57. package/dist/tests/cloud-live.test.js.map +1 -0
  58. package/dist/tests/installer.test.d.ts +2 -0
  59. package/dist/tests/installer.test.d.ts.map +1 -0
  60. package/dist/tests/installer.test.js +32 -0
  61. package/dist/tests/installer.test.js.map +1 -0
  62. package/dist/tests/runtime-cloud.test.d.ts +2 -0
  63. package/dist/tests/runtime-cloud.test.d.ts.map +1 -0
  64. package/dist/tests/runtime-cloud.test.js +202 -0
  65. package/dist/tests/runtime-cloud.test.js.map +1 -0
  66. package/dist/version.d.ts +2 -0
  67. package/dist/version.d.ts.map +1 -0
  68. package/dist/version.js +7 -0
  69. package/dist/version.js.map +1 -0
  70. package/docs/SECURITY-POLICY.md +558 -0
  71. package/docs/architecture.md +54 -0
  72. package/docs/claude-code.md +41 -0
  73. package/docs/cloud-connect.md +73 -0
  74. package/docs/cloud-native-api.md +526 -0
  75. package/docs/codex.md +38 -0
  76. package/docs/goplus-api.md +38 -0
  77. package/docs/mcp-server.md +39 -0
  78. package/docs/openclaw.md +41 -0
  79. package/docs/privacy-boundary.md +37 -0
  80. package/docs/sdk.md +83 -0
  81. package/docs/trust-cli.md +58 -0
  82. package/examples/openclaw-docker/Dockerfile +10 -0
  83. package/examples/openclaw-docker/README.md +16 -0
  84. package/examples/openclaw-docker/docker-compose.yml +8 -0
  85. package/examples/openclaw-docker/plugin.ts +8 -0
  86. package/package.json +7 -2
  87. package/skills/agentguard/SKILL.md +157 -61
  88. package/skills/agentguard/{scripts/package.json → package.json} +2 -1
  89. package/skills/agentguard/patrol-checks.md +12 -2
  90. package/skills/agentguard/scan-rules.md +1 -1
  91. package/skills/agentguard/scripts/checkup-report.js +71 -30
@@ -0,0 +1,81 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getDefaultEffectiveRuntimePolicy = getDefaultEffectiveRuntimePolicy;
4
+ exports.loadCachedPolicy = loadCachedPolicy;
5
+ exports.saveCachedPolicy = saveCachedPolicy;
6
+ exports.resolveRuntimePolicy = resolveRuntimePolicy;
7
+ const node_fs_1 = require("node:fs");
8
+ const node_path_1 = require("node:path");
9
+ function getDefaultEffectiveRuntimePolicy() {
10
+ return {
11
+ policyVersion: 'runtime-local-v0.1',
12
+ mode: 'balanced',
13
+ decisions: {
14
+ destructiveCommand: 'block',
15
+ remoteCodeExecution: 'block',
16
+ dataExfiltration: 'block',
17
+ secretAccess: 'require_approval',
18
+ deployAction: 'require_approval',
19
+ },
20
+ protectedPaths: [
21
+ '~/.ssh/**',
22
+ '~/.aws/**',
23
+ '~/.config/**/credentials*',
24
+ '**/.env*',
25
+ '**/*private-key*',
26
+ '**/*seed*',
27
+ ],
28
+ blockedCommandPatterns: [
29
+ 'rm -rf /',
30
+ 'curl ... | bash',
31
+ 'wget ... | sh',
32
+ 'base64 -d | bash',
33
+ 'git push --force',
34
+ ],
35
+ allowedCommandPatterns: [],
36
+ approvalActionTypes: ['file_read', 'file_write', 'deploy'],
37
+ network: {
38
+ defaultOutbound: 'warn',
39
+ blockedDomains: [
40
+ 'discord.com/api/webhooks',
41
+ 'hooks.slack.com/services',
42
+ 'api.telegram.org/bot',
43
+ ],
44
+ approvalDomains: [],
45
+ },
46
+ updatedAt: new Date(0).toISOString(),
47
+ };
48
+ }
49
+ function loadCachedPolicy(cachePath) {
50
+ try {
51
+ if (!(0, node_fs_1.existsSync)(cachePath))
52
+ return null;
53
+ return JSON.parse((0, node_fs_1.readFileSync)(cachePath, 'utf8'));
54
+ }
55
+ catch {
56
+ return null;
57
+ }
58
+ }
59
+ function saveCachedPolicy(cachePath, policy) {
60
+ (0, node_fs_1.mkdirSync)((0, node_path_1.dirname)(cachePath), { recursive: true });
61
+ (0, node_fs_1.writeFileSync)(cachePath, `${JSON.stringify(policy, null, 2)}\n`);
62
+ }
63
+ async function resolveRuntimePolicy(options) {
64
+ if (options.fetchPolicy) {
65
+ try {
66
+ const cloudPolicy = await options.fetchPolicy();
67
+ if (cloudPolicy) {
68
+ saveCachedPolicy(options.cachePath, cloudPolicy);
69
+ return { policy: cloudPolicy, source: 'cloud' };
70
+ }
71
+ }
72
+ catch {
73
+ // Fall through to cache/default.
74
+ }
75
+ }
76
+ const cached = loadCachedPolicy(options.cachePath);
77
+ if (cached)
78
+ return { policy: cached, source: 'cache' };
79
+ return { policy: getDefaultEffectiveRuntimePolicy(), source: 'default' };
80
+ }
81
+ //# sourceMappingURL=policy.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"policy.js","sourceRoot":"","sources":["../../src/runtime/policy.ts"],"names":[],"mappings":";;AAIA,4EAuCC;AAED,4CAOC;AAED,4CAGC;AAED,oDAmBC;AA9ED,qCAA6E;AAC7E,yCAAoC;AAGpC,SAAgB,gCAAgC;IAC9C,OAAO;QACL,aAAa,EAAE,oBAAoB;QACnC,IAAI,EAAE,UAAU;QAChB,SAAS,EAAE;YACT,kBAAkB,EAAE,OAAO;YAC3B,mBAAmB,EAAE,OAAO;YAC5B,gBAAgB,EAAE,OAAO;YACzB,YAAY,EAAE,kBAAkB;YAChC,YAAY,EAAE,kBAAkB;SACjC;QACD,cAAc,EAAE;YACd,WAAW;YACX,WAAW;YACX,2BAA2B;YAC3B,UAAU;YACV,kBAAkB;YAClB,WAAW;SACZ;QACD,sBAAsB,EAAE;YACtB,UAAU;YACV,iBAAiB;YACjB,eAAe;YACf,kBAAkB;YAClB,kBAAkB;SACnB;QACD,sBAAsB,EAAE,EAAE;QAC1B,mBAAmB,EAAE,CAAC,WAAW,EAAE,YAAY,EAAE,QAAQ,CAAC;QAC1D,OAAO,EAAE;YACP,eAAe,EAAE,MAAM;YACvB,cAAc,EAAE;gBACd,0BAA0B;gBAC1B,0BAA0B;gBAC1B,sBAAsB;aACvB;YACD,eAAe,EAAE,EAAE;SACpB;QACD,SAAS,EAAE,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,WAAW,EAAE;KACrC,CAAC;AACJ,CAAC;AAED,SAAgB,gBAAgB,CAAC,SAAiB;IAChD,IAAI,CAAC;QACH,IAAI,CAAC,IAAA,oBAAU,EAAC,SAAS,CAAC;YAAE,OAAO,IAAI,CAAC;QACxC,OAAO,IAAI,CAAC,KAAK,CAAC,IAAA,sBAAY,EAAC,SAAS,EAAE,MAAM,CAAC,CAA2B,CAAC;IAC/E,CAAC;IAAC,MAAM,CAAC;QACP,OAAO,IAAI,CAAC;IACd,CAAC;AACH,CAAC;AAED,SAAgB,gBAAgB,CAAC,SAAiB,EAAE,MAA8B;IAChF,IAAA,mBAAS,EAAC,IAAA,mBAAO,EAAC,SAAS,CAAC,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE,CAAC,CAAC;IACnD,IAAA,uBAAa,EAAC,SAAS,EAAE,GAAG,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,IAAI,CAAC,CAAC;AACnE,CAAC;AAEM,KAAK,UAAU,oBAAoB,CAAC,OAG1C;IACC,IAAI,OAAO,CAAC,WAAW,EAAE,CAAC;QACxB,IAAI,CAAC;YACH,MAAM,WAAW,GAAG,MAAM,OAAO,CAAC,WAAW,EAAE,CAAC;YAChD,IAAI,WAAW,EAAE,CAAC;gBAChB,gBAAgB,CAAC,OAAO,CAAC,SAAS,EAAE,WAAW,CAAC,CAAC;gBACjD,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;YAClD,CAAC;QACH,CAAC;QAAC,MAAM,CAAC;YACP,iCAAiC;QACnC,CAAC;IACH,CAAC;IAED,MAAM,MAAM,GAAG,gBAAgB,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC;IACnD,IAAI,MAAM;QAAE,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,CAAC;IACvD,OAAO,EAAE,MAAM,EAAE,gCAAgC,EAAE,EAAE,MAAM,EAAE,SAAS,EAAE,CAAC;AAC3E,CAAC"}
@@ -0,0 +1,22 @@
1
+ import type { AgentGuardConfig } from '../config.js';
2
+ import type { RuntimeAgentHost, RuntimeAuditEvent, RuntimeActionType, RuntimeDecision } from './types.js';
3
+ export interface ProtectOptions {
4
+ config: AgentGuardConfig;
5
+ rawInput?: unknown;
6
+ stdinText?: string;
7
+ agentHost?: RuntimeAgentHost;
8
+ actionType?: RuntimeActionType;
9
+ toolName?: string;
10
+ sessionId?: string;
11
+ decisionMode?: 'local-first' | 'cloud';
12
+ }
13
+ export interface ProtectResult {
14
+ decision: RuntimeDecision;
15
+ event: RuntimeAuditEvent;
16
+ approvalId?: string | null;
17
+ policySource: 'cloud' | 'cache' | 'default' | 'cloud-decision';
18
+ }
19
+ export declare function protectAction(options: ProtectOptions): Promise<ProtectResult | null>;
20
+ export declare function formatProtectResult(result: ProtectResult, json?: boolean): string;
21
+ export declare function exitCodeForDecision(decision: RuntimeDecision): number;
22
+ //# sourceMappingURL=protect.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protect.d.ts","sourceRoot":"","sources":["../../src/runtime/protect.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,gBAAgB,EAAE,MAAM,cAAc,CAAC;AAIrD,OAAO,KAAK,EAAiB,gBAAgB,EAAE,iBAAiB,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,YAAY,CAAC;AAEzH,MAAM,WAAW,cAAc;IAC7B,MAAM,EAAE,gBAAgB,CAAC;IACzB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,gBAAgB,CAAC;IAC7B,UAAU,CAAC,EAAE,iBAAiB,CAAC;IAC/B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,YAAY,CAAC,EAAE,aAAa,GAAG,OAAO,CAAC;CACxC;AAED,MAAM,WAAW,aAAa;IAC5B,QAAQ,EAAE,eAAe,CAAC;IAC1B,KAAK,EAAE,iBAAiB,CAAC;IACzB,UAAU,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC3B,YAAY,EAAE,OAAO,GAAG,OAAO,GAAG,SAAS,GAAG,gBAAgB,CAAC;CAChE;AAED,wBAAsB,aAAa,CAAC,OAAO,EAAE,cAAc,GAAG,OAAO,CAAC,aAAa,GAAG,IAAI,CAAC,CAiD1F;AAED,wBAAgB,mBAAmB,CAAC,MAAM,EAAE,aAAa,EAAE,IAAI,UAAQ,GAAG,MAAM,CA0B/E;AAED,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,eAAe,GAAG,MAAM,CAErE"}
@@ -0,0 +1,172 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.protectAction = protectAction;
4
+ exports.formatProtectResult = formatProtectResult;
5
+ exports.exitCodeForDecision = exitCodeForDecision;
6
+ const node_process_1 = require("node:process");
7
+ const client_js_1 = require("../cloud/client.js");
8
+ const audit_js_1 = require("./audit.js");
9
+ const evaluator_js_1 = require("./evaluator.js");
10
+ const policy_js_1 = require("./policy.js");
11
+ async function protectAction(options) {
12
+ const action = buildRuntimeAction(options);
13
+ if (!action.input)
14
+ return null;
15
+ const client = new client_js_1.AgentGuardCloudClient(options.config);
16
+ if (client.connected) {
17
+ await (0, audit_js_1.flushEventSpool)(options.config.eventSpoolPath, (events) => client.ingestEvents(events)).catch(() => undefined);
18
+ }
19
+ let decision;
20
+ let policySource;
21
+ if (options.decisionMode === 'cloud' && client.connected) {
22
+ decision = await client.evaluateAction(action);
23
+ policySource = 'cloud-decision';
24
+ }
25
+ else {
26
+ const { policy, source } = await (0, policy_js_1.resolveRuntimePolicy)({
27
+ cachePath: options.config.policyCachePath,
28
+ fetchPolicy: client.connected ? () => client.fetchEffectivePolicy() : undefined,
29
+ });
30
+ decision = await (0, evaluator_js_1.evaluateLocalAction)(policy, action);
31
+ policySource = source;
32
+ }
33
+ const event = {
34
+ ...action,
35
+ actionId: decision.actionId,
36
+ decision: decision.decision,
37
+ riskScore: decision.riskScore,
38
+ riskLevel: decision.riskLevel,
39
+ reasons: decision.reasons,
40
+ policyVersion: decision.policyVersion,
41
+ metadata: {
42
+ ...(action.metadata || {}),
43
+ evaluation: policySource === 'cloud-decision' ? 'cloud' : 'local-oss',
44
+ policySource,
45
+ },
46
+ };
47
+ (0, audit_js_1.writeAuditLog)(options.config.auditPath, event);
48
+ let approvalId;
49
+ if (client.connected && policySource !== 'cloud-decision') {
50
+ await client.ingestEvents([event]).catch(() => (0, audit_js_1.spoolEvent)(options.config.eventSpoolPath, event));
51
+ }
52
+ if (client.connected && decision.decision === 'require_approval') {
53
+ approvalId = await client.createApproval(event).catch(() => null);
54
+ }
55
+ return { decision, event, approvalId, policySource };
56
+ }
57
+ function formatProtectResult(result, json = false) {
58
+ if (json) {
59
+ return JSON.stringify({
60
+ decision: publicDecision(result.decision.decision),
61
+ cloudDecision: result.decision.decision,
62
+ actionId: result.decision.actionId,
63
+ riskScore: result.decision.riskScore,
64
+ riskLevel: result.decision.riskLevel,
65
+ reasons: result.decision.reasons,
66
+ approvalId: result.approvalId,
67
+ policySource: result.policySource,
68
+ }, null, 2);
69
+ }
70
+ const reasonCount = result.decision.reasons.length;
71
+ if (result.decision.decision === 'block') {
72
+ return `BLOCKED by AgentGuard (action: ${result.decision.actionId}, risk: ${result.decision.riskScore}/100, level: ${result.decision.riskLevel}, reasons: ${reasonCount}).`;
73
+ }
74
+ if (result.decision.decision === 'require_approval') {
75
+ const approval = result.approvalId ? `approval: ${result.approvalId}, ` : '';
76
+ return `CONFIRM required by AgentGuard (${approval}action: ${result.decision.actionId}, risk: ${result.decision.riskScore}/100, level: ${result.decision.riskLevel}, reasons: ${reasonCount}).`;
77
+ }
78
+ if (result.decision.decision === 'warn') {
79
+ return `WARN from AgentGuard (action: ${result.decision.actionId}, risk: ${result.decision.riskScore}/100, level: ${result.decision.riskLevel}, reasons: ${reasonCount}).`;
80
+ }
81
+ return 'ALLOW by AgentGuard.';
82
+ }
83
+ function exitCodeForDecision(decision) {
84
+ return decision.decision === 'block' || decision.decision === 'require_approval' ? 2 : 0;
85
+ }
86
+ function publicDecision(decision) {
87
+ return decision === 'require_approval' ? 'confirm' : decision;
88
+ }
89
+ function buildRuntimeAction(options) {
90
+ const raw = parseRawInput(options.rawInput, options.stdinText);
91
+ const envActionType = process.env.AGENTGUARD_ACTION_TYPE;
92
+ const envAgentHost = process.env.AGENTGUARD_AGENT_HOST;
93
+ const toolName = options.toolName || process.env.AGENTGUARD_TOOL_NAME || pickToolName(raw);
94
+ const actionType = options.actionType || envActionType || mapToolToRuntimeAction(toolName, raw);
95
+ return {
96
+ sessionId: options.sessionId || process.env.AGENTGUARD_SESSION_ID || pickSessionId(raw),
97
+ agentHost: options.agentHost || envAgentHost || 'claude-code',
98
+ actionType,
99
+ toolName,
100
+ input: process.env.TOOL_INPUT || pickInput(raw, actionType),
101
+ cwd: pickCwd(raw),
102
+ sourceSkill: pickSourceSkill(raw),
103
+ metadata: { rawProtocol: raw ? 'stdin-json' : 'env' },
104
+ };
105
+ }
106
+ function parseRawInput(rawInput, stdinText) {
107
+ if (rawInput && typeof rawInput === 'object')
108
+ return rawInput;
109
+ const text = stdinText?.trim();
110
+ if (!text)
111
+ return null;
112
+ try {
113
+ const parsed = JSON.parse(text);
114
+ return parsed && typeof parsed === 'object' ? parsed : null;
115
+ }
116
+ catch {
117
+ return { content: text };
118
+ }
119
+ }
120
+ function pickToolName(raw) {
121
+ if (!raw)
122
+ return 'Tool';
123
+ return String(raw.tool_name || raw.toolName || raw.name || 'Tool');
124
+ }
125
+ function mapToolToRuntimeAction(toolName, raw) {
126
+ const lower = toolName.toLowerCase();
127
+ if (toolName === 'Bash' || lower.includes('shell') || lower.includes('exec'))
128
+ return 'shell';
129
+ if (toolName === 'Read' || lower.includes('read'))
130
+ return 'file_read';
131
+ if (['Write', 'Edit', 'MultiEdit'].includes(toolName) || lower.includes('write'))
132
+ return 'file_write';
133
+ if (lower.includes('web') || lower.includes('browser'))
134
+ return 'network';
135
+ if (raw?.actionType && typeof raw.actionType === 'string')
136
+ return raw.actionType;
137
+ return 'other';
138
+ }
139
+ function pickInput(raw, actionType) {
140
+ if (!raw)
141
+ return '';
142
+ if (typeof raw.input === 'string')
143
+ return raw.input;
144
+ if (typeof raw.content === 'string')
145
+ return raw.content;
146
+ const toolInput = (raw.tool_input || raw.toolInput || raw.params);
147
+ if (toolInput && typeof toolInput === 'object') {
148
+ if (actionType === 'shell' && typeof toolInput.command === 'string')
149
+ return toolInput.command;
150
+ const filePath = toolInput.file_path || toolInput.path;
151
+ if ((actionType === 'file_read' || actionType === 'file_write') && typeof filePath === 'string')
152
+ return filePath;
153
+ const url = toolInput.url || toolInput.query;
154
+ if (typeof url === 'string')
155
+ return url;
156
+ return JSON.stringify(toolInput);
157
+ }
158
+ return JSON.stringify(raw);
159
+ }
160
+ function pickSessionId(raw) {
161
+ const sessionId = raw?.session_id || raw?.sessionId;
162
+ return typeof sessionId === 'string' ? sessionId : `sess_local_${Date.now()}`;
163
+ }
164
+ function pickCwd(raw) {
165
+ const value = raw?.cwd;
166
+ return typeof value === 'string' ? value : (0, node_process_1.cwd)();
167
+ }
168
+ function pickSourceSkill(raw) {
169
+ const value = raw?.sourceSkill || raw?.initiating_skill;
170
+ return typeof value === 'string' ? value : undefined;
171
+ }
172
+ //# sourceMappingURL=protect.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"protect.js","sourceRoot":"","sources":["../../src/runtime/protect.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { PolicyReason } from './types.js';
2
+ export declare function redactText(value: unknown): string;
3
+ export declare function redactPreview(value: unknown, maxLength?: number): string;
4
+ export declare function redactReasons(reasons: PolicyReason[]): PolicyReason[];
5
+ export declare function redactMetadata(value: Record<string, unknown> | undefined, maxKeys?: number): Record<string, unknown>;
6
+ //# sourceMappingURL=redaction.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redaction.d.ts","sourceRoot":"","sources":["../../src/runtime/redaction.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,YAAY,CAAC;AA2B/C,wBAAgB,UAAU,CAAC,KAAK,EAAE,OAAO,GAAG,MAAM,CAMjD;AAED,wBAAgB,aAAa,CAAC,KAAK,EAAE,OAAO,EAAE,SAAS,SAAO,GAAG,MAAM,CAEtE;AAED,wBAAgB,aAAa,CAAC,OAAO,EAAE,YAAY,EAAE,GAAG,YAAY,EAAE,CASrE;AAED,wBAAgB,cAAc,CAC5B,KAAK,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,GAAG,SAAS,EAC1C,OAAO,SAAK,GACX,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CASzB"}
@@ -0,0 +1,103 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.redactText = redactText;
4
+ exports.redactPreview = redactPreview;
5
+ exports.redactReasons = redactReasons;
6
+ exports.redactMetadata = redactMetadata;
7
+ const REDACTED = '[REDACTED]';
8
+ const SECRET_VALUE_PATTERN = /(?:token|api[_-]?key|secret|password|passwd|authorization|access[_-]?key|client[_-]?secret)=([^&\s'"`]+)/gi;
9
+ const SENSITIVE_KEY_PATTERN = /(?:token|api[_-]?key|secret|password|passwd|authorization|access[_-]?key|client[_-]?secret|signature|sig)/i;
10
+ const REDACTION_PATTERNS = [
11
+ [/\bag_live_[A-Za-z0-9_-]{12,}\b/g, () => REDACTED],
12
+ [/\bsk-or-v1-[A-Za-z0-9_-]{12,}\b/g, () => REDACTED],
13
+ [/\bsk-[A-Za-z0-9_-]{12,}\b/g, () => REDACTED],
14
+ [/\bBearer\s+[A-Za-z0-9._~+/=-]{12,}\b/gi, () => `Bearer ${REDACTED}`],
15
+ [
16
+ /-----BEGIN [A-Z ]*PRIVATE KEY-----[\s\S]*?-----END [A-Z ]*PRIVATE KEY-----/g,
17
+ () => REDACTED,
18
+ ],
19
+ [
20
+ SECRET_VALUE_PATTERN,
21
+ (match) => {
22
+ const [key] = match.split('=');
23
+ return `${key}=${REDACTED}`;
24
+ },
25
+ ],
26
+ ];
27
+ function redactText(value) {
28
+ let redacted = String(value ?? '');
29
+ for (const [pattern, replacement] of REDACTION_PATTERNS) {
30
+ redacted = redacted.replace(pattern, replacement);
31
+ }
32
+ return redactUrlSecrets(redacted);
33
+ }
34
+ function redactPreview(value, maxLength = 2000) {
35
+ return redactText(value).slice(0, maxLength);
36
+ }
37
+ function redactReasons(reasons) {
38
+ return reasons.map((reason) => ({
39
+ ...reason,
40
+ code: redactPreview(reason.code, 120),
41
+ title: redactPreview(reason.title, 240),
42
+ description: redactPreview(reason.description, 500),
43
+ evidence: reason.evidence ? redactPreview(reason.evidence, 240) : reason.evidence,
44
+ remediation: reason.remediation ? redactPreview(reason.remediation, 500) : reason.remediation,
45
+ }));
46
+ }
47
+ function redactMetadata(value, maxKeys = 25) {
48
+ if (!value)
49
+ return {};
50
+ const result = {};
51
+ for (const [key, item] of Object.entries(value).slice(0, maxKeys)) {
52
+ result[redactPreview(key, 120)] = SENSITIVE_KEY_PATTERN.test(key)
53
+ ? REDACTED
54
+ : redactUnknown(item, 0);
55
+ }
56
+ return result;
57
+ }
58
+ function redactUnknown(value, depth) {
59
+ if (value === null || value === undefined)
60
+ return value;
61
+ if (typeof value === 'string')
62
+ return redactPreview(value, 500);
63
+ if (typeof value === 'number' || typeof value === 'boolean')
64
+ return value;
65
+ if (Array.isArray(value)) {
66
+ if (depth >= 2)
67
+ return '[REDACTED_OBJECT]';
68
+ return value.slice(0, 25).map((item) => redactUnknown(item, depth + 1));
69
+ }
70
+ if (typeof value === 'object') {
71
+ if (depth >= 2)
72
+ return '[REDACTED_OBJECT]';
73
+ const result = {};
74
+ for (const [key, item] of Object.entries(value).slice(0, 25)) {
75
+ result[redactPreview(key, 120)] = SENSITIVE_KEY_PATTERN.test(key)
76
+ ? REDACTED
77
+ : redactUnknown(item, depth + 1);
78
+ }
79
+ return result;
80
+ }
81
+ return redactPreview(String(value), 500);
82
+ }
83
+ function redactUrlSecrets(value) {
84
+ return value.replace(/https?:\/\/[^\s'"`<>]+/gi, (rawUrl) => {
85
+ try {
86
+ const url = new URL(rawUrl);
87
+ for (const key of [...url.searchParams.keys()]) {
88
+ if (SENSITIVE_KEY_PATTERN.test(key)) {
89
+ url.searchParams.set(key, REDACTED);
90
+ }
91
+ }
92
+ if (url.username)
93
+ url.username = REDACTED;
94
+ if (url.password)
95
+ url.password = REDACTED;
96
+ return url.toString();
97
+ }
98
+ catch {
99
+ return rawUrl;
100
+ }
101
+ });
102
+ }
103
+ //# sourceMappingURL=redaction.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"redaction.js","sourceRoot":"","sources":["../../src/runtime/redaction.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,62 @@
1
+ export type CloudPolicyDecision = 'allow' | 'warn' | 'require_approval' | 'block';
2
+ export type RuntimeRiskLevel = 'safe' | 'low' | 'medium' | 'high' | 'critical';
3
+ export type RuntimeSeverity = 'info' | 'low' | 'medium' | 'high' | 'critical';
4
+ export type RuntimeActionType = 'shell' | 'file_read' | 'file_write' | 'network' | 'mcp_tool' | 'browser' | 'skill_install' | 'deploy' | 'other';
5
+ export type RuntimeAgentHost = 'claude-code' | 'codex' | 'openclaw' | 'cursor' | 'gemini' | 'copilot' | 'other';
6
+ export interface PolicyReason {
7
+ code: string;
8
+ severity: RuntimeSeverity;
9
+ title: string;
10
+ description: string;
11
+ evidence?: string;
12
+ remediation?: string;
13
+ }
14
+ export interface EffectiveRuntimePolicy {
15
+ policyVersion: string;
16
+ mode: 'observe' | 'balanced' | 'strict';
17
+ decisions: {
18
+ destructiveCommand: CloudPolicyDecision;
19
+ remoteCodeExecution: CloudPolicyDecision;
20
+ dataExfiltration: CloudPolicyDecision;
21
+ secretAccess: CloudPolicyDecision;
22
+ deployAction: CloudPolicyDecision;
23
+ };
24
+ protectedPaths: string[];
25
+ blockedCommandPatterns: string[];
26
+ allowedCommandPatterns: string[];
27
+ approvalActionTypes: RuntimeActionType[];
28
+ network: {
29
+ defaultOutbound: CloudPolicyDecision;
30
+ blockedDomains: string[];
31
+ approvalDomains: string[];
32
+ };
33
+ updatedAt: string;
34
+ }
35
+ export interface RuntimeAction {
36
+ sessionId: string;
37
+ agentHost: RuntimeAgentHost;
38
+ actionType: RuntimeActionType;
39
+ toolName: string;
40
+ input: string;
41
+ cwd?: string;
42
+ sourceSkill?: string;
43
+ metadata?: Record<string, unknown>;
44
+ }
45
+ export interface RuntimeDecision {
46
+ actionId: string;
47
+ decision: CloudPolicyDecision;
48
+ riskScore: number;
49
+ riskLevel: RuntimeRiskLevel;
50
+ reasons: PolicyReason[];
51
+ policyVersion: string;
52
+ expiresAt?: string;
53
+ }
54
+ export interface RuntimeAuditEvent extends RuntimeAction {
55
+ actionId: string;
56
+ decision: CloudPolicyDecision;
57
+ riskScore: number;
58
+ riskLevel: RuntimeRiskLevel;
59
+ reasons: PolicyReason[];
60
+ policyVersion: string;
61
+ }
62
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/runtime/types.ts"],"names":[],"mappings":"AAAA,MAAM,MAAM,mBAAmB,GAAG,OAAO,GAAG,MAAM,GAAG,kBAAkB,GAAG,OAAO,CAAC;AAClF,MAAM,MAAM,gBAAgB,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;AAC/E,MAAM,MAAM,eAAe,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,GAAG,UAAU,CAAC;AAE9E,MAAM,MAAM,iBAAiB,GACzB,OAAO,GACP,WAAW,GACX,YAAY,GACZ,SAAS,GACT,UAAU,GACV,SAAS,GACT,eAAe,GACf,QAAQ,GACR,OAAO,CAAC;AAEZ,MAAM,MAAM,gBAAgB,GACxB,aAAa,GACb,OAAO,GACP,UAAU,GACV,QAAQ,GACR,QAAQ,GACR,SAAS,GACT,OAAO,CAAC;AAEZ,MAAM,WAAW,YAAY;IAC3B,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,eAAe,CAAC;IAC1B,KAAK,EAAE,MAAM,CAAC;IACd,WAAW,EAAE,MAAM,CAAC;IACpB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,WAAW,sBAAsB;IACrC,aAAa,EAAE,MAAM,CAAC;IACtB,IAAI,EAAE,SAAS,GAAG,UAAU,GAAG,QAAQ,CAAC;IACxC,SAAS,EAAE;QACT,kBAAkB,EAAE,mBAAmB,CAAC;QACxC,mBAAmB,EAAE,mBAAmB,CAAC;QACzC,gBAAgB,EAAE,mBAAmB,CAAC;QACtC,YAAY,EAAE,mBAAmB,CAAC;QAClC,YAAY,EAAE,mBAAmB,CAAC;KACnC,CAAC;IACF,cAAc,EAAE,MAAM,EAAE,CAAC;IACzB,sBAAsB,EAAE,MAAM,EAAE,CAAC;IACjC,sBAAsB,EAAE,MAAM,EAAE,CAAC;IACjC,mBAAmB,EAAE,iBAAiB,EAAE,CAAC;IACzC,OAAO,EAAE;QACP,eAAe,EAAE,mBAAmB,CAAC;QACrC,cAAc,EAAE,MAAM,EAAE,CAAC;QACzB,eAAe,EAAE,MAAM,EAAE,CAAC;KAC3B,CAAC;IACF,SAAS,EAAE,MAAM,CAAC;CACnB;AAED,MAAM,WAAW,aAAa;IAC5B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,UAAU,EAAE,iBAAiB,CAAC;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC;AAED,MAAM,WAAW,eAAe;IAC9B,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,MAAM,WAAW,iBAAkB,SAAQ,aAAa;IACtD,QAAQ,EAAE,MAAM,CAAC;IACjB,QAAQ,EAAE,mBAAmB,CAAC;IAC9B,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,EAAE,gBAAgB,CAAC;IAC5B,OAAO,EAAE,YAAY,EAAE,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;CACvB"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/runtime/types.ts"],"names":[],"mappings":""}
@@ -81,7 +81,7 @@ exports.TROJAN_RULES = [
81
81
  {
82
82
  id: 'SOCIAL_ENGINEERING',
83
83
  description: 'Detects social engineering pressure language in skill instructions',
84
- severity: 'medium',
84
+ severity: 'high',
85
85
  file_patterns: ['*.md'],
86
86
  patterns: [
87
87
  /CRITICAL\s+REQUIREMENT/i,
@@ -1 +1 @@
1
- {"version":3,"file":"trojan.js","sourceRoot":"","sources":["../../../src/scanner/rules/trojan.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"trojan.js","sourceRoot":"","sources":["../../../src/scanner/rules/trojan.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=cloud-live.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloud-live.test.d.ts","sourceRoot":"","sources":["../../src/tests/cloud-live.test.ts"],"names":[],"mappings":""}
@@ -0,0 +1,68 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const node_test_1 = require("node:test");
7
+ const strict_1 = __importDefault(require("node:assert/strict"));
8
+ const client_js_1 = require("../cloud/client.js");
9
+ const apiKey = process.env.AGENTGUARD_API_KEY;
10
+ const cloudUrl = process.env.AGENTGUARD_CLOUD_URL || 'https://agentguard.gopluslabs.io';
11
+ const runLive = Boolean(apiKey);
12
+ (0, node_test_1.describe)('Cloud live integration', { skip: !runLive }, () => {
13
+ const config = {
14
+ version: 1,
15
+ level: 'balanced',
16
+ cloudUrl,
17
+ apiKey,
18
+ policyCachePath: '',
19
+ auditPath: '',
20
+ eventSpoolPath: '',
21
+ };
22
+ const client = new client_js_1.AgentGuardCloudClient(config);
23
+ (0, node_test_1.it)('fetches effective policy from the configured Cloud', async () => {
24
+ const policy = await client.fetchEffectivePolicy();
25
+ strict_1.default.ok(policy.policyVersion);
26
+ strict_1.default.ok(policy.decisions);
27
+ });
28
+ (0, node_test_1.it)('ingests a redacted runtime audit event', async () => {
29
+ const event = sampleEvent('warn');
30
+ event.input = 'echo safe --api_key=live-secret-that-must-be-redacted';
31
+ await client.ingestEvents([event]);
32
+ });
33
+ (0, node_test_1.it)('creates a Cloud approval request', async () => {
34
+ const event = sampleEvent('require_approval');
35
+ event.input = '/tmp/.env?token=live-secret-that-must-be-redacted';
36
+ event.riskScore = 55;
37
+ event.riskLevel = 'high';
38
+ event.reasons = [
39
+ {
40
+ code: 'SECRET_ACCESS',
41
+ severity: 'high',
42
+ title: 'Live test protected path access',
43
+ description: 'Live integration test verifies approval creation.',
44
+ evidence: '/tmp/.env?token=live-secret-that-must-be-redacted',
45
+ },
46
+ ];
47
+ const approvalId = await client.createApproval(event);
48
+ strict_1.default.ok(approvalId);
49
+ });
50
+ });
51
+ function sampleEvent(decision) {
52
+ const suffix = `${Date.now()}_${Math.random().toString(36).slice(2)}`;
53
+ return {
54
+ actionId: `act_live_${suffix}`,
55
+ sessionId: `sess_live_${suffix}`,
56
+ agentHost: 'codex',
57
+ actionType: 'shell',
58
+ toolName: 'Bash',
59
+ input: 'echo safe',
60
+ decision,
61
+ riskScore: decision === 'allow' ? 0 : 20,
62
+ riskLevel: decision === 'allow' ? 'safe' : 'medium',
63
+ reasons: [],
64
+ policyVersion: 'live-test',
65
+ metadata: { test: 'cloud-live' },
66
+ };
67
+ }
68
+ //# sourceMappingURL=cloud-live.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"cloud-live.test.js","sourceRoot":"","sources":["../../src/tests/cloud-live.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=installer.test.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"installer.test.d.ts","sourceRoot":"","sources":["../../src/tests/installer.test.ts"],"names":[],"mappings":""}