@clawdstrike/openclaw 0.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (108) hide show
  1. package/README.md +7 -0
  2. package/dist/audit/store.d.ts +26 -0
  3. package/dist/audit/store.d.ts.map +1 -0
  4. package/dist/audit/store.js +59 -0
  5. package/dist/audit/store.js.map +1 -0
  6. package/dist/cli/bin.d.ts +3 -0
  7. package/dist/cli/bin.d.ts.map +1 -0
  8. package/dist/cli/bin.js +5 -0
  9. package/dist/cli/bin.js.map +1 -0
  10. package/dist/cli/commands/audit.d.ts +19 -0
  11. package/dist/cli/commands/audit.d.ts.map +1 -0
  12. package/dist/cli/commands/audit.js +93 -0
  13. package/dist/cli/commands/audit.js.map +1 -0
  14. package/dist/cli/commands/policy.d.ts +11 -0
  15. package/dist/cli/commands/policy.d.ts.map +1 -0
  16. package/dist/cli/commands/policy.js +101 -0
  17. package/dist/cli/commands/policy.js.map +1 -0
  18. package/dist/cli/index.d.ts +4 -0
  19. package/dist/cli/index.d.ts.map +1 -0
  20. package/dist/cli/index.js +91 -0
  21. package/dist/cli/index.js.map +1 -0
  22. package/dist/config.d.ts +27 -0
  23. package/dist/config.d.ts.map +1 -0
  24. package/dist/config.js +88 -0
  25. package/dist/config.js.map +1 -0
  26. package/dist/e2e/openclaw-e2e.d.ts +2 -0
  27. package/dist/e2e/openclaw-e2e.d.ts.map +1 -0
  28. package/dist/e2e/openclaw-e2e.js +129 -0
  29. package/dist/e2e/openclaw-e2e.js.map +1 -0
  30. package/dist/guards/egress.d.ts +25 -0
  31. package/dist/guards/egress.d.ts.map +1 -0
  32. package/dist/guards/egress.js +146 -0
  33. package/dist/guards/egress.js.map +1 -0
  34. package/dist/guards/forbidden-path.d.ts +22 -0
  35. package/dist/guards/forbidden-path.d.ts.map +1 -0
  36. package/dist/guards/forbidden-path.js +132 -0
  37. package/dist/guards/forbidden-path.js.map +1 -0
  38. package/dist/guards/index.d.ts +12 -0
  39. package/dist/guards/index.d.ts.map +1 -0
  40. package/dist/guards/index.js +11 -0
  41. package/dist/guards/index.js.map +1 -0
  42. package/dist/guards/patch-integrity.d.ts +27 -0
  43. package/dist/guards/patch-integrity.d.ts.map +1 -0
  44. package/dist/guards/patch-integrity.js +219 -0
  45. package/dist/guards/patch-integrity.js.map +1 -0
  46. package/dist/guards/secret-leak.d.ts +31 -0
  47. package/dist/guards/secret-leak.d.ts.map +1 -0
  48. package/dist/guards/secret-leak.js +235 -0
  49. package/dist/guards/secret-leak.js.map +1 -0
  50. package/dist/guards/types.d.ts +46 -0
  51. package/dist/guards/types.d.ts.map +1 -0
  52. package/dist/guards/types.js +36 -0
  53. package/dist/guards/types.js.map +1 -0
  54. package/dist/hooks/agent-bootstrap/handler.d.ts +10 -0
  55. package/dist/hooks/agent-bootstrap/handler.d.ts.map +1 -0
  56. package/dist/hooks/agent-bootstrap/handler.js +35 -0
  57. package/dist/hooks/agent-bootstrap/handler.js.map +1 -0
  58. package/dist/hooks/audit-logger/handler.d.ts +16 -0
  59. package/dist/hooks/audit-logger/handler.d.ts.map +1 -0
  60. package/dist/hooks/audit-logger/handler.js +70 -0
  61. package/dist/hooks/audit-logger/handler.js.map +1 -0
  62. package/dist/hooks/tool-guard/handler.d.ts +16 -0
  63. package/dist/hooks/tool-guard/handler.d.ts.map +1 -0
  64. package/dist/hooks/tool-guard/handler.js +335 -0
  65. package/dist/hooks/tool-guard/handler.js.map +1 -0
  66. package/dist/index.d.ts +10 -0
  67. package/dist/index.d.ts.map +1 -0
  68. package/dist/index.js +15 -0
  69. package/dist/index.js.map +1 -0
  70. package/dist/plugin.d.ts +11 -0
  71. package/dist/plugin.d.ts.map +1 -0
  72. package/dist/plugin.js +234 -0
  73. package/dist/plugin.js.map +1 -0
  74. package/dist/policy/engine.d.ts +31 -0
  75. package/dist/policy/engine.d.ts.map +1 -0
  76. package/dist/policy/engine.js +282 -0
  77. package/dist/policy/engine.js.map +1 -0
  78. package/dist/policy/index.d.ts +4 -0
  79. package/dist/policy/index.d.ts.map +1 -0
  80. package/dist/policy/index.js +4 -0
  81. package/dist/policy/index.js.map +1 -0
  82. package/dist/policy/loader.d.ts +10 -0
  83. package/dist/policy/loader.d.ts.map +1 -0
  84. package/dist/policy/loader.js +262 -0
  85. package/dist/policy/loader.js.map +1 -0
  86. package/dist/policy/validator.d.ts +4 -0
  87. package/dist/policy/validator.d.ts.map +1 -0
  88. package/dist/policy/validator.js +409 -0
  89. package/dist/policy/validator.js.map +1 -0
  90. package/dist/sanitizer/output-sanitizer.d.ts +15 -0
  91. package/dist/sanitizer/output-sanitizer.d.ts.map +1 -0
  92. package/dist/sanitizer/output-sanitizer.js +47 -0
  93. package/dist/sanitizer/output-sanitizer.js.map +1 -0
  94. package/dist/security-prompt.d.ts +3 -0
  95. package/dist/security-prompt.d.ts.map +1 -0
  96. package/dist/security-prompt.js +70 -0
  97. package/dist/security-prompt.js.map +1 -0
  98. package/dist/tools/policy-check.d.ts +10 -0
  99. package/dist/tools/policy-check.d.ts.map +1 -0
  100. package/dist/tools/policy-check.js +141 -0
  101. package/dist/tools/policy-check.js.map +1 -0
  102. package/dist/types.d.ts +413 -0
  103. package/dist/types.d.ts.map +1 -0
  104. package/dist/types.js +7 -0
  105. package/dist/types.js.map +1 -0
  106. package/package.json +85 -0
  107. package/rulesets/ai-agent-minimal.yaml +42 -0
  108. package/rulesets/ai-agent.yaml +70 -0
@@ -0,0 +1,262 @@
1
+ import { load as loadYaml } from 'js-yaml';
2
+ import { readFileSync } from 'node:fs';
3
+ import path from 'node:path';
4
+ import { fileURLToPath } from 'node:url';
5
+ import { loadPolicyFromFile as loadCanonicalPolicyFromFile, loadPolicyFromString as loadCanonicalPolicyFromString, } from '@clawdstrike/policy';
6
+ import { resolveBuiltinPolicy } from '../config.js';
7
+ import { validatePolicy } from './validator.js';
8
+ const RULESETS_DIR = fileURLToPath(new URL('../../rulesets/', import.meta.url));
9
+ const CANONICAL_RULESETS_DIR = fileURLToPath(new URL('../../../../rulesets/', import.meta.url));
10
+ export class PolicyLoadError extends Error {
11
+ cause;
12
+ constructor(message, opts) {
13
+ super(message);
14
+ this.name = 'PolicyLoadError';
15
+ this.cause = opts?.cause;
16
+ }
17
+ }
18
+ function isPlainObject(value) {
19
+ return typeof value === 'object' && value !== null && !Array.isArray(value);
20
+ }
21
+ function isBuiltinRef(ref) {
22
+ if (!ref)
23
+ return null;
24
+ if (ref.startsWith('clawdstrike:'))
25
+ return ref;
26
+ const candidate = `clawdstrike:${ref}`;
27
+ return resolveBuiltinPolicy(candidate) ? candidate : null;
28
+ }
29
+ function deepMerge(base, overlay) {
30
+ if (!isPlainObject(base) || !isPlainObject(overlay))
31
+ return overlay;
32
+ const out = { ...base };
33
+ for (const [key, value] of Object.entries(overlay)) {
34
+ if (value === undefined)
35
+ continue;
36
+ const existing = out[key];
37
+ if (isPlainObject(existing) && isPlainObject(value)) {
38
+ out[key] = deepMerge(existing, value);
39
+ continue;
40
+ }
41
+ // Arrays and scalars replace.
42
+ out[key] = value;
43
+ }
44
+ return out;
45
+ }
46
+ export function loadPolicyFromString(content) {
47
+ const parsed = parseYamlObject(content);
48
+ if (isCanonicalPolicy(parsed)) {
49
+ const canonical = loadCanonicalPolicyFromString(content, {
50
+ resolve: false,
51
+ rulesetsDir: CANONICAL_RULESETS_DIR,
52
+ onWarning: warnLegacyCompatibility,
53
+ });
54
+ return translateCanonicalPolicy(canonical);
55
+ }
56
+ const policy = parsed;
57
+ if (policy.version === 'clawdstrike-v1.0') {
58
+ warnLegacyCompatibility('Loaded legacy OpenClaw policy schema (clawdstrike-v1.0); canonical 1.2.0 is preferred.');
59
+ }
60
+ return policy;
61
+ }
62
+ function readPolicyFile(policyPath) {
63
+ try {
64
+ return readFileSync(policyPath, 'utf-8');
65
+ }
66
+ catch (err) {
67
+ throw new PolicyLoadError(`Failed to read policy file: ${policyPath}`, { cause: err });
68
+ }
69
+ }
70
+ function resolvePolicyRef(ref, baseDir) {
71
+ const builtin = isBuiltinRef(ref);
72
+ if (builtin) {
73
+ const fileName = resolveBuiltinPolicy(builtin);
74
+ if (!fileName) {
75
+ throw new PolicyLoadError(`Unknown built-in policy: ${builtin}`);
76
+ }
77
+ const filePath = path.join(RULESETS_DIR, fileName);
78
+ return {
79
+ id: `builtin:${builtin}`,
80
+ path: filePath,
81
+ content: readPolicyFile(filePath),
82
+ baseDir: path.dirname(filePath),
83
+ };
84
+ }
85
+ const resolvedPath = baseDir ? path.resolve(baseDir, ref) : path.resolve(ref);
86
+ return {
87
+ id: `file:${resolvedPath}`,
88
+ path: resolvedPath,
89
+ content: readPolicyFile(resolvedPath),
90
+ baseDir: path.dirname(resolvedPath),
91
+ };
92
+ }
93
+ function normalizeExtendsRef(ref, baseDir) {
94
+ const builtin = isBuiltinRef(ref);
95
+ if (builtin)
96
+ return builtin;
97
+ if (baseDir)
98
+ return path.resolve(baseDir, ref);
99
+ return ref;
100
+ }
101
+ function loadPolicyRecursive(ref, stack) {
102
+ const resolved = resolvePolicyRef(ref, baseDirForRef(ref, stack));
103
+ const { id, content, baseDir, path: policyPath } = resolved;
104
+ if (stack.includes(id)) {
105
+ throw new PolicyLoadError(`Circular policy extends detected: ${[...stack, id].join(' -> ')}`);
106
+ }
107
+ const nextStack = [...stack, id];
108
+ const parsed = parseYamlObject(content);
109
+ if (isCanonicalPolicy(parsed)) {
110
+ const canonical = policyPath
111
+ ? loadCanonicalPolicyFromFile(policyPath, {
112
+ resolve: true,
113
+ rulesetsDir: CANONICAL_RULESETS_DIR,
114
+ onWarning: warnLegacyCompatibility,
115
+ })
116
+ : loadCanonicalPolicyFromString(content, {
117
+ resolve: true,
118
+ basePath: baseDir,
119
+ rulesetsDir: CANONICAL_RULESETS_DIR,
120
+ onWarning: warnLegacyCompatibility,
121
+ });
122
+ const translated = translateCanonicalPolicy(canonical);
123
+ const report = validatePolicy(translated);
124
+ if (!report.valid) {
125
+ throw new PolicyLoadError(`Policy validation failed:\n- ${report.errors.join('\n- ')}`);
126
+ }
127
+ return translated;
128
+ }
129
+ const policy = parsed;
130
+ if (policy.version === 'clawdstrike-v1.0') {
131
+ warnLegacyCompatibility('Loaded legacy OpenClaw policy schema (clawdstrike-v1.0); canonical 1.2.0 is preferred.');
132
+ }
133
+ const extendsRef = typeof policy.extends === 'string' ? policy.extends.trim() : undefined;
134
+ if (!extendsRef) {
135
+ const report = validatePolicy(policy);
136
+ if (!report.valid) {
137
+ throw new PolicyLoadError(`Policy validation failed:\n- ${report.errors.join('\n- ')}`);
138
+ }
139
+ return policy;
140
+ }
141
+ const parentRef = normalizeExtendsRef(extendsRef, baseDir);
142
+ const parent = loadPolicyRecursive(parentRef, nextStack);
143
+ const merged = deepMerge(parent, { ...policy, extends: undefined });
144
+ const report = validatePolicy(merged);
145
+ if (!report.valid) {
146
+ throw new PolicyLoadError(`Policy validation failed:\n- ${report.errors.join('\n- ')}`);
147
+ }
148
+ return merged;
149
+ }
150
+ function baseDirForRef(ref, stack) {
151
+ // If we're resolving an extends chain and the last frame was a file, resolve
152
+ // relative paths from that file's directory.
153
+ const last = stack[stack.length - 1];
154
+ if (!last)
155
+ return undefined;
156
+ if (last.startsWith('file:')) {
157
+ const lastPath = last.slice('file:'.length);
158
+ return path.dirname(lastPath);
159
+ }
160
+ // Built-in policies don't define a baseDir for relative file extends.
161
+ return undefined;
162
+ }
163
+ export function loadPolicy(ref) {
164
+ if (!ref) {
165
+ throw new PolicyLoadError('Policy reference must be non-empty');
166
+ }
167
+ return loadPolicyRecursive(ref, []);
168
+ }
169
+ function parseYamlObject(content) {
170
+ let parsed;
171
+ try {
172
+ parsed = loadYaml(content);
173
+ }
174
+ catch (err) {
175
+ throw new PolicyLoadError('Failed to parse policy YAML', { cause: err });
176
+ }
177
+ if (!isPlainObject(parsed)) {
178
+ throw new PolicyLoadError('Policy must be a YAML mapping/object');
179
+ }
180
+ return parsed;
181
+ }
182
+ function isCanonicalPolicy(policy) {
183
+ const version = policy.version;
184
+ return typeof version === 'string' && /^(1\.1\.0|1\.2\.0)$/.test(version);
185
+ }
186
+ function warnLegacyCompatibility(message) {
187
+ // eslint-disable-next-line no-console
188
+ console.warn(message);
189
+ }
190
+ function translateCanonicalPolicy(canonical) {
191
+ const out = {
192
+ version: 'clawdstrike-v1.0',
193
+ };
194
+ const guards = canonical.guards;
195
+ const toggles = {};
196
+ if (guards) {
197
+ if (typeof guards.forbidden_path === 'object') {
198
+ const cfg = guards.forbidden_path;
199
+ toggles.forbidden_path = cfg.enabled !== false;
200
+ if (Array.isArray(cfg.patterns) && cfg.patterns.length > 0) {
201
+ out.filesystem = out.filesystem ?? {};
202
+ out.filesystem.forbidden_paths = cfg.patterns.filter((v) => typeof v === 'string');
203
+ }
204
+ }
205
+ if (typeof guards.path_allowlist === 'object') {
206
+ const cfg = guards.path_allowlist;
207
+ out.filesystem = out.filesystem ?? {};
208
+ if (Array.isArray(cfg.file_access_allow)) {
209
+ out.filesystem.allowed_read_paths = cfg.file_access_allow.filter((v) => typeof v === 'string');
210
+ }
211
+ if (Array.isArray(cfg.file_write_allow)) {
212
+ out.filesystem.allowed_write_roots = cfg.file_write_allow.filter((v) => typeof v === 'string');
213
+ }
214
+ }
215
+ if (typeof guards.egress_allowlist === 'object') {
216
+ const cfg = guards.egress_allowlist;
217
+ toggles.egress = cfg.enabled !== false;
218
+ const allow = Array.isArray(cfg.allow) ? cfg.allow.filter((v) => typeof v === 'string') : [];
219
+ const block = Array.isArray(cfg.block) ? cfg.block.filter((v) => typeof v === 'string') : [];
220
+ const defaultAction = cfg.default_action === 'allow' ? 'allow' : 'block';
221
+ out.egress = {
222
+ mode: defaultAction === 'allow' && allow.includes('*') ? 'open' : allow.length === 0 && defaultAction === 'block' ? 'deny_all' : 'allowlist',
223
+ allowed_domains: allow.filter((v) => v !== '*'),
224
+ denied_domains: block,
225
+ };
226
+ }
227
+ if (typeof guards.patch_integrity === 'object') {
228
+ const cfg = guards.patch_integrity;
229
+ toggles.patch_integrity = cfg.enabled !== false;
230
+ if (Array.isArray(cfg.forbidden_patterns) && cfg.forbidden_patterns.length > 0) {
231
+ out.execution = out.execution ?? {};
232
+ out.execution.denied_patterns = cfg.forbidden_patterns.filter((v) => typeof v === 'string');
233
+ }
234
+ }
235
+ if (typeof guards.secret_leak === 'object') {
236
+ const cfg = guards.secret_leak;
237
+ toggles.secret_leak = cfg.enabled !== false;
238
+ }
239
+ if (typeof guards.mcp_tool === 'object') {
240
+ const cfg = guards.mcp_tool;
241
+ toggles.mcp_tool = cfg.enabled !== false;
242
+ out.tools = {
243
+ allowed: Array.isArray(cfg.allow) ? cfg.allow.filter((v) => typeof v === 'string') : [],
244
+ denied: Array.isArray(cfg.block) ? cfg.block.filter((v) => typeof v === 'string') : [],
245
+ };
246
+ }
247
+ if (Array.isArray(guards.custom)) {
248
+ out.guards = {
249
+ ...out.guards,
250
+ custom: guards.custom,
251
+ };
252
+ }
253
+ }
254
+ if (Object.keys(toggles).length > 0) {
255
+ out.guards = {
256
+ ...(out.guards ?? {}),
257
+ ...toggles,
258
+ };
259
+ }
260
+ return out;
261
+ }
262
+ //# sourceMappingURL=loader.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"loader.js","sourceRoot":"","sources":["../../src/policy/loader.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import type { PolicyLintResult } from '../types.js';
2
+ export declare const POLICY_SCHEMA_VERSION = "clawdstrike-v1.0";
3
+ export declare function validatePolicy(policy: unknown): PolicyLintResult;
4
+ //# sourceMappingURL=validator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"validator.d.ts","sourceRoot":"","sources":["../../src/policy/validator.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAU,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAG5D,eAAO,MAAM,qBAAqB,qBAAqB,CAAC;AAwGxD,wBAAgB,cAAc,CAAC,MAAM,EAAE,OAAO,GAAG,gBAAgB,CAmJhE"}