@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 @@
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/hooks/audit-logger/handler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,WAAW,EAGX,iBAAiB,EAElB,MAAM,gBAAgB,CAAC;AAMxB;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAG1D;AAED;;GAEG;AACH,QAAA,MAAM,OAAO,EAAE,WAyBd,CAAC;AAyBF,eAAe,OAAO,CAAC"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * @clawdstrike/openclaw - Audit Logger Hook Handler
3
+ *
4
+ * Logs security events for audit and compliance.
5
+ */
6
+ import { mergeConfig } from '../../config.js';
7
+ /** Logger instance */
8
+ let logger = null;
9
+ /**
10
+ * Initialize the hook with configuration
11
+ */
12
+ export function initialize(config) {
13
+ const mergedConfig = mergeConfig(config);
14
+ logger = createAuditLogger(mergedConfig.logLevel);
15
+ }
16
+ /**
17
+ * Hook handler for audit logging
18
+ */
19
+ const handler = async (event) => {
20
+ if (event.type !== 'tool_result_persist') {
21
+ return;
22
+ }
23
+ const toolEvent = event;
24
+ const log = logger ?? createAuditLogger('info');
25
+ const auditEntry = {
26
+ timestamp: new Date().toISOString(),
27
+ eventType: 'tool_result_persist',
28
+ sessionId: toolEvent.context.sessionId,
29
+ toolName: toolEvent.context.toolResult.toolName,
30
+ hasError: !!toolEvent.context.toolResult.error,
31
+ messageCount: toolEvent.messages.length,
32
+ };
33
+ // Log based on outcome
34
+ if (toolEvent.context.toolResult.error) {
35
+ log.warn('[AUDIT] Tool blocked', auditEntry);
36
+ }
37
+ else if (toolEvent.messages.some((m) => m.includes('Warning'))) {
38
+ log.info('[AUDIT] Tool executed with warnings', auditEntry);
39
+ }
40
+ else {
41
+ log.debug('[AUDIT] Tool executed', auditEntry);
42
+ }
43
+ };
44
+ /**
45
+ * Create audit logger with appropriate level filtering
46
+ */
47
+ function createAuditLogger(level) {
48
+ const levels = ['debug', 'info', 'warn', 'error'];
49
+ const minLevel = levels.indexOf(level);
50
+ return {
51
+ debug: (...args) => {
52
+ if (minLevel <= 0)
53
+ console.debug(...args);
54
+ },
55
+ info: (...args) => {
56
+ if (minLevel <= 1)
57
+ console.info(...args);
58
+ },
59
+ warn: (...args) => {
60
+ if (minLevel <= 2)
61
+ console.warn(...args);
62
+ },
63
+ error: (...args) => {
64
+ if (minLevel <= 3)
65
+ console.error(...args);
66
+ },
67
+ };
68
+ }
69
+ export default handler;
70
+ //# sourceMappingURL=handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/hooks/audit-logger/handler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AASH,OAAO,EAAE,WAAW,EAAE,MAAM,iBAAiB,CAAC;AAE9C,sBAAsB;AACtB,IAAI,MAAM,GAAkB,IAAI,CAAC;AAEjC;;GAEG;AACH,MAAM,UAAU,UAAU,CAAC,MAAyB;IAClD,MAAM,YAAY,GAAG,WAAW,CAAC,MAAM,CAAC,CAAC;IACzC,MAAM,GAAG,iBAAiB,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC;AACpD,CAAC;AAED;;GAEG;AACH,MAAM,OAAO,GAAgB,KAAK,EAAE,KAAgB,EAAiB,EAAE;IACrE,IAAI,KAAK,CAAC,IAAI,KAAK,qBAAqB,EAAE,CAAC;QACzC,OAAO;IACT,CAAC;IAED,MAAM,SAAS,GAAG,KAA+B,CAAC;IAClD,MAAM,GAAG,GAAG,MAAM,IAAI,iBAAiB,CAAC,MAAM,CAAC,CAAC;IAEhD,MAAM,UAAU,GAAG;QACjB,SAAS,EAAE,IAAI,IAAI,EAAE,CAAC,WAAW,EAAE;QACnC,SAAS,EAAE,qBAAqB;QAChC,SAAS,EAAE,SAAS,CAAC,OAAO,CAAC,SAAS;QACtC,QAAQ,EAAE,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,QAAQ;QAC/C,QAAQ,EAAE,CAAC,CAAC,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK;QAC9C,YAAY,EAAE,SAAS,CAAC,QAAQ,CAAC,MAAM;KACxC,CAAC;IAEF,uBAAuB;IACvB,IAAI,SAAS,CAAC,OAAO,CAAC,UAAU,CAAC,KAAK,EAAE,CAAC;QACvC,GAAG,CAAC,IAAI,CAAC,sBAAsB,EAAE,UAAU,CAAC,CAAC;IAC/C,CAAC;SAAM,IAAI,SAAS,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,QAAQ,CAAC,SAAS,CAAC,CAAC,EAAE,CAAC;QACjE,GAAG,CAAC,IAAI,CAAC,qCAAqC,EAAE,UAAU,CAAC,CAAC;IAC9D,CAAC;SAAM,CAAC;QACN,GAAG,CAAC,KAAK,CAAC,uBAAuB,EAAE,UAAU,CAAC,CAAC;IACjD,CAAC;AACH,CAAC,CAAC;AAEF;;GAEG;AACH,SAAS,iBAAiB,CAAC,KAAa;IACtC,MAAM,MAAM,GAAG,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAClD,MAAM,QAAQ,GAAG,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC;IAEvC,OAAO;QACL,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE;YACjB,IAAI,QAAQ,IAAI,CAAC;gBAAE,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;QAC5C,CAAC;QACD,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE;YAChB,IAAI,QAAQ,IAAI,CAAC;gBAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QAC3C,CAAC;QACD,IAAI,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE;YAChB,IAAI,QAAQ,IAAI,CAAC;gBAAE,OAAO,CAAC,IAAI,CAAC,GAAG,IAAI,CAAC,CAAC;QAC3C,CAAC;QACD,KAAK,EAAE,CAAC,GAAG,IAAI,EAAE,EAAE;YACjB,IAAI,QAAQ,IAAI,CAAC;gBAAE,OAAO,CAAC,KAAK,CAAC,GAAG,IAAI,CAAC,CAAC;QAC5C,CAAC;KACF,CAAC;AACJ,CAAC;AAED,eAAe,OAAO,CAAC"}
@@ -0,0 +1,16 @@
1
+ /**
2
+ * @clawdstrike/openclaw - Tool Guard Hook Handler
3
+ *
4
+ * Intercepts tool results and enforces security policy.
5
+ */
6
+ import type { HookHandler, ClawdstrikeConfig } from '../../types.js';
7
+ /**
8
+ * Initialize the hook with configuration
9
+ */
10
+ export declare function initialize(config: ClawdstrikeConfig): void;
11
+ /**
12
+ * Hook handler for tool_result_persist events
13
+ */
14
+ declare const handler: HookHandler;
15
+ export default handler;
16
+ //# sourceMappingURL=handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/hooks/tool-guard/handler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EACV,WAAW,EAGX,iBAAiB,EAOlB,MAAM,gBAAgB,CAAC;AAMxB;;GAEG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAE1D;AAYD;;GAEG;AACH,QAAA,MAAM,OAAO,EAAE,WA6Gd,CAAC;AAsSF,eAAe,OAAO,CAAC"}
@@ -0,0 +1,335 @@
1
+ /**
2
+ * @clawdstrike/openclaw - Tool Guard Hook Handler
3
+ *
4
+ * Intercepts tool results and enforces security policy.
5
+ */
6
+ import { PolicyEngine } from '../../policy/engine.js';
7
+ /** Shared policy engine instance */
8
+ let engine = null;
9
+ /**
10
+ * Initialize the hook with configuration
11
+ */
12
+ export function initialize(config) {
13
+ engine = new PolicyEngine(config);
14
+ }
15
+ /**
16
+ * Get or create the policy engine
17
+ */
18
+ function getEngine(config) {
19
+ if (!engine) {
20
+ engine = new PolicyEngine(config ?? {});
21
+ }
22
+ return engine;
23
+ }
24
+ /**
25
+ * Hook handler for tool_result_persist events
26
+ */
27
+ const handler = async (event) => {
28
+ if (event.type !== 'tool_result_persist') {
29
+ return;
30
+ }
31
+ const toolEvent = event;
32
+ const { toolName, params, result } = toolEvent.context.toolResult;
33
+ const policyEngine = getEngine();
34
+ // Create policy event from tool result
35
+ const policyEvent = createPolicyEvent(toolEvent.context.sessionId, toolName, params, result);
36
+ // Evaluate policy
37
+ const decision = await policyEngine.evaluate(policyEvent);
38
+ const isDenied = decision.status === 'deny' || decision.denied;
39
+ const isWarn = decision.status === 'warn' || decision.warn;
40
+ if (isDenied) {
41
+ // Block the tool result
42
+ toolEvent.context.toolResult.error = decision.reason ?? 'Policy violation';
43
+ toolEvent.messages.push(`[clawdstrike] Blocked by ${decision.guard}: ${decision.reason}`);
44
+ return;
45
+ }
46
+ if (isWarn) {
47
+ // Add warning message
48
+ toolEvent.messages.push(`[clawdstrike] Warning: ${decision.message ?? decision.reason}`);
49
+ }
50
+ function sanitizeUnknown(value, sanitizeString, seen, depth) {
51
+ if (typeof value === 'string') {
52
+ const sanitized = sanitizeString(value);
53
+ return { value: sanitized, changed: sanitized !== value };
54
+ }
55
+ if (!value || typeof value !== 'object') {
56
+ return { value, changed: false };
57
+ }
58
+ if (seen.has(value)) {
59
+ return { value, changed: false };
60
+ }
61
+ if (depth > 32) {
62
+ return { value, changed: false };
63
+ }
64
+ // Preserve non-plain objects (Dates, Buffers, class instances, etc).
65
+ const isArray = Array.isArray(value);
66
+ const isPlainObject = Object.prototype.toString.call(value) === '[object Object]';
67
+ if (!isArray && !isPlainObject) {
68
+ return { value, changed: false };
69
+ }
70
+ seen.add(value);
71
+ if (isArray) {
72
+ let changed = false;
73
+ const out = value.map((item) => {
74
+ const r = sanitizeUnknown(item, sanitizeString, seen, depth + 1);
75
+ changed = changed || r.changed;
76
+ return r.value;
77
+ });
78
+ return { value: changed ? out : value, changed };
79
+ }
80
+ const obj = value;
81
+ const out = {};
82
+ let changed = false;
83
+ for (const [k, v] of Object.entries(obj)) {
84
+ const r = sanitizeUnknown(v, sanitizeString, seen, depth + 1);
85
+ out[k] = r.value;
86
+ changed = changed || r.changed;
87
+ }
88
+ return { value: changed ? out : value, changed };
89
+ }
90
+ // Redact secrets from output
91
+ if (result && typeof result === 'string') {
92
+ const sanitized = policyEngine.sanitizeOutput(result);
93
+ if (sanitized !== result) {
94
+ toolEvent.context.toolResult.result = sanitized;
95
+ }
96
+ }
97
+ else if (result && typeof result === 'object') {
98
+ const { value: sanitized, changed } = sanitizeUnknown(result, (s) => policyEngine.sanitizeOutput(s), new WeakSet(), 0);
99
+ if (changed) {
100
+ toolEvent.context.toolResult.result = sanitized;
101
+ }
102
+ }
103
+ };
104
+ /**
105
+ * Create a PolicyEvent from tool execution context
106
+ */
107
+ function createPolicyEvent(sessionId, toolName, params, result) {
108
+ const eventId = `${sessionId}-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`;
109
+ const timestamp = new Date().toISOString();
110
+ // Determine event type based on tool name
111
+ const eventType = inferEventType(toolName);
112
+ // Create appropriate event data
113
+ const data = createEventData(toolName, params, result);
114
+ return {
115
+ eventId,
116
+ eventType,
117
+ timestamp,
118
+ sessionId,
119
+ data,
120
+ metadata: {
121
+ toolName,
122
+ originalParams: params,
123
+ },
124
+ };
125
+ }
126
+ /**
127
+ * Infer event type from tool name
128
+ */
129
+ function inferEventType(toolName) {
130
+ const lowerName = toolName.toLowerCase();
131
+ if (lowerName.includes('patch') || lowerName.includes('diff') || lowerName.includes('apply_patch')) {
132
+ return 'patch_apply';
133
+ }
134
+ if (lowerName.includes('read') || lowerName.includes('cat') || lowerName.includes('head') || lowerName.includes('tail')) {
135
+ return 'file_read';
136
+ }
137
+ if (lowerName.includes('write') || lowerName.includes('edit')) {
138
+ return 'file_write';
139
+ }
140
+ if (lowerName.includes('exec') || lowerName.includes('bash') || lowerName.includes('shell')) {
141
+ return 'command_exec';
142
+ }
143
+ if (lowerName.includes('fetch') || lowerName.includes('http') || lowerName.includes('web') || lowerName.includes('curl')) {
144
+ return 'network_egress';
145
+ }
146
+ return 'tool_call';
147
+ }
148
+ /**
149
+ * Create event data based on tool name and params
150
+ */
151
+ function createEventData(toolName, params, result) {
152
+ const eventType = inferEventType(toolName);
153
+ switch (eventType) {
154
+ case 'file_read':
155
+ case 'file_write': {
156
+ const path = extractPath(params);
157
+ const contentHash = typeof params.contentHash === 'string' ? params.contentHash : undefined;
158
+ const { content, contentBase64 } = extractFileContent(params, result, eventType);
159
+ return {
160
+ type: 'file',
161
+ path: path ?? '',
162
+ content,
163
+ contentBase64,
164
+ contentHash,
165
+ operation: eventType === 'file_read' ? 'read' : 'write',
166
+ };
167
+ }
168
+ case 'network_egress': {
169
+ const { host, port, url } = extractNetworkInfo(params);
170
+ return {
171
+ type: 'network',
172
+ host,
173
+ port,
174
+ url,
175
+ };
176
+ }
177
+ case 'command_exec': {
178
+ const { command, args, workingDir } = extractCommandInfo(params);
179
+ return {
180
+ type: 'command',
181
+ command,
182
+ args,
183
+ workingDir,
184
+ };
185
+ }
186
+ case 'patch_apply': {
187
+ const { filePath, patchContent } = extractPatchInfo(params, result);
188
+ return {
189
+ type: 'patch',
190
+ filePath,
191
+ patchContent,
192
+ };
193
+ }
194
+ case 'tool_call':
195
+ default: {
196
+ return {
197
+ type: 'tool',
198
+ toolName,
199
+ parameters: params,
200
+ result: typeof result === 'string' ? result : JSON.stringify(result ?? ''),
201
+ };
202
+ }
203
+ }
204
+ }
205
+ /**
206
+ * Extract file path from tool params
207
+ */
208
+ function extractPath(params) {
209
+ // Common parameter names for file paths
210
+ const pathKeys = ['path', 'file', 'file_path', 'filepath', 'filename', 'target'];
211
+ for (const key of pathKeys) {
212
+ if (typeof params[key] === 'string') {
213
+ return params[key];
214
+ }
215
+ }
216
+ // Check for path in command string
217
+ if (typeof params.command === 'string') {
218
+ const command = params.command;
219
+ // Try to extract path from commands like "cat /path/to/file"
220
+ const match = command.match(/(?:cat|head|tail|less|more|vim|nano|read)\s+([^\s|><]+)/);
221
+ if (match) {
222
+ return match[1];
223
+ }
224
+ }
225
+ return undefined;
226
+ }
227
+ function extractFileContent(params, result, eventType) {
228
+ const maxChars = 2_000_000; // Best-effort cap: avoid huge payloads.
229
+ const contentBase64 = typeof params.contentBase64 === 'string'
230
+ ? params.contentBase64
231
+ : typeof params.base64 === 'string'
232
+ ? params.base64
233
+ : undefined;
234
+ if (contentBase64) {
235
+ return { contentBase64: contentBase64.length > maxChars ? contentBase64.slice(0, maxChars) : contentBase64 };
236
+ }
237
+ const content = typeof params.content === 'string'
238
+ ? params.content
239
+ : typeof params.text === 'string'
240
+ ? params.text
241
+ : eventType === 'file_read' && typeof result === 'string'
242
+ ? result
243
+ : undefined;
244
+ if (!content)
245
+ return {};
246
+ return { content: content.length > maxChars ? content.slice(0, maxChars) : content };
247
+ }
248
+ /**
249
+ * Extract network info from tool params
250
+ */
251
+ function extractNetworkInfo(params) {
252
+ // Try to get URL first
253
+ const url = params.url ??
254
+ params.endpoint ??
255
+ params.href;
256
+ if (url) {
257
+ try {
258
+ const parsed = new URL(url);
259
+ return {
260
+ host: parsed.hostname,
261
+ port: parsed.port ? parseInt(parsed.port, 10) : (parsed.protocol === 'https:' ? 443 : 80),
262
+ url,
263
+ };
264
+ }
265
+ catch {
266
+ // Not a valid URL
267
+ }
268
+ }
269
+ // Try to extract from command
270
+ if (typeof params.command === 'string') {
271
+ const command = params.command;
272
+ const urlMatch = command.match(/https?:\/\/[^\s'"]+/);
273
+ if (urlMatch) {
274
+ try {
275
+ const parsed = new URL(urlMatch[0]);
276
+ return {
277
+ host: parsed.hostname,
278
+ port: parsed.port ? parseInt(parsed.port, 10) : (parsed.protocol === 'https:' ? 443 : 80),
279
+ url: urlMatch[0],
280
+ };
281
+ }
282
+ catch {
283
+ // Not a valid URL
284
+ }
285
+ }
286
+ }
287
+ // Fallback
288
+ return {
289
+ host: params.host ?? params.hostname ?? 'unknown',
290
+ port: params.port ?? 80,
291
+ url,
292
+ };
293
+ }
294
+ function extractCommandInfo(params) {
295
+ const workingDir = typeof params.cwd === 'string'
296
+ ? params.cwd
297
+ : typeof params.workingDir === 'string'
298
+ ? params.workingDir
299
+ : undefined;
300
+ const args = Array.isArray(params.args) && params.args.every((a) => typeof a === 'string')
301
+ ? params.args
302
+ : Array.isArray(params.argv) && params.argv.every((a) => typeof a === 'string')
303
+ ? params.argv
304
+ : undefined;
305
+ const cmdLine = typeof params.command === 'string'
306
+ ? params.command
307
+ : typeof params.cmd === 'string'
308
+ ? params.cmd
309
+ : undefined;
310
+ if (cmdLine) {
311
+ const parts = cmdLine.trim().split(/\s+/).filter(Boolean);
312
+ if (parts.length === 0) {
313
+ return { command: '', args: [], workingDir };
314
+ }
315
+ const [command, ...rest] = parts;
316
+ return { command, args: args ?? rest, workingDir };
317
+ }
318
+ if (typeof params.tool === 'string' && args) {
319
+ return { command: params.tool, args, workingDir };
320
+ }
321
+ return { command: '', args: args ?? [], workingDir };
322
+ }
323
+ function extractPatchInfo(params, result) {
324
+ const filePath = (typeof params.filePath === 'string' && params.filePath) ||
325
+ (typeof params.path === 'string' && params.path) ||
326
+ (typeof params.file === 'string' && params.file) ||
327
+ '';
328
+ const patchContent = (typeof params.patch === 'string' && params.patch) ||
329
+ (typeof params.diff === 'string' && params.diff) ||
330
+ (typeof params.content === 'string' && params.content) ||
331
+ (typeof result === 'string' ? result : JSON.stringify(result ?? ''));
332
+ return { filePath, patchContent };
333
+ }
334
+ export default handler;
335
+ //# sourceMappingURL=handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/hooks/tool-guard/handler.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ export { PolicyEngine } from './policy/engine.js';
2
+ export { validatePolicy } from './policy/validator.js';
3
+ export { loadPolicy, loadPolicyFromString, PolicyLoadError } from './policy/loader.js';
4
+ export type { Decision, EvaluationMode, ClawdstrikeConfig, Policy, PolicyEvent, PolicyLintResult, } from './types.js';
5
+ export { generateSecurityPrompt } from './security-prompt.js';
6
+ export { checkPolicy, policyCheckTool } from './tools/policy-check.js';
7
+ export { default as agentBootstrapHandler } from './hooks/agent-bootstrap/handler.js';
8
+ export { AuditStore, type AuditEvent } from './audit/store.js';
9
+ export { registerCli, createCli } from './cli/index.js';
10
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AACvF,YAAY,EACV,QAAQ,EACR,cAAc,EACd,iBAAiB,EACjB,MAAM,EACN,WAAW,EACX,gBAAgB,GACjB,MAAM,YAAY,CAAC;AAGpB,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAG9D,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAGvE,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAGtF,OAAO,EAAE,UAAU,EAAE,KAAK,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAG/D,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"}
package/dist/index.js ADDED
@@ -0,0 +1,15 @@
1
+ // Policy
2
+ export { PolicyEngine } from './policy/engine.js';
3
+ export { validatePolicy } from './policy/validator.js';
4
+ export { loadPolicy, loadPolicyFromString, PolicyLoadError } from './policy/loader.js';
5
+ // Security Prompt
6
+ export { generateSecurityPrompt } from './security-prompt.js';
7
+ // Tools
8
+ export { checkPolicy, policyCheckTool } from './tools/policy-check.js';
9
+ // Hooks
10
+ export { default as agentBootstrapHandler } from './hooks/agent-bootstrap/handler.js';
11
+ // Audit
12
+ export { AuditStore } from './audit/store.js';
13
+ // CLI
14
+ export { registerCli, createCli } from './cli/index.js';
15
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,SAAS;AACT,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAClD,OAAO,EAAE,cAAc,EAAE,MAAM,uBAAuB,CAAC;AACvD,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,eAAe,EAAE,MAAM,oBAAoB,CAAC;AAUvF,kBAAkB;AAClB,OAAO,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAE9D,QAAQ;AACR,OAAO,EAAE,WAAW,EAAE,eAAe,EAAE,MAAM,yBAAyB,CAAC;AAEvE,QAAQ;AACR,OAAO,EAAE,OAAO,IAAI,qBAAqB,EAAE,MAAM,oCAAoC,CAAC;AAEtF,QAAQ;AACR,OAAO,EAAE,UAAU,EAAmB,MAAM,kBAAkB,CAAC;AAE/D,MAAM;AACN,OAAO,EAAE,WAAW,EAAE,SAAS,EAAE,MAAM,gBAAgB,CAAC"}
@@ -0,0 +1,11 @@
1
+ /**
2
+ * OpenClaw plugin entry point for Clawdstrike
3
+ *
4
+ * Follows the OpenClaw plugin API: https://docs.openclaw.ai/plugin
5
+ */
6
+ export * from "./index.js";
7
+ /**
8
+ * Plugin registration function (function format per OpenClaw docs)
9
+ */
10
+ export default function clawdstrikePlugin(api: any): void;
11
+ //# sourceMappingURL=plugin.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"plugin.d.ts","sourceRoot":"","sources":["../src/plugin.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,cAAc,YAAY,CAAC;AAE3B;;GAEG;AACH,MAAM,CAAC,OAAO,UAAU,iBAAiB,CAAC,GAAG,EAAE,GAAG,QA+HjD"}