clawsec 0.0.1 → 0.0.2

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 (146) hide show
  1. package/dist/src/actions/block.js +2 -2
  2. package/dist/src/actions/block.js.map +1 -1
  3. package/dist/src/actions/confirm.d.ts +1 -1
  4. package/dist/src/actions/confirm.d.ts.map +1 -1
  5. package/dist/src/actions/confirm.js +57 -26
  6. package/dist/src/actions/confirm.js.map +1 -1
  7. package/dist/src/actions/executor.d.ts +3 -1
  8. package/dist/src/actions/executor.d.ts.map +1 -1
  9. package/dist/src/actions/executor.js +48 -11
  10. package/dist/src/actions/executor.js.map +1 -1
  11. package/dist/src/actions/warn.js +2 -2
  12. package/dist/src/actions/warn.js.map +1 -1
  13. package/dist/src/approval/agent-confirm.d.ts +4 -0
  14. package/dist/src/approval/agent-confirm.d.ts.map +1 -1
  15. package/dist/src/approval/agent-confirm.js +14 -0
  16. package/dist/src/approval/agent-confirm.js.map +1 -1
  17. package/dist/src/approval/store.d.ts +4 -0
  18. package/dist/src/approval/store.d.ts.map +1 -1
  19. package/dist/src/approval/store.js +19 -0
  20. package/dist/src/approval/store.js.map +1 -1
  21. package/dist/src/config/loader.d.ts +7 -4
  22. package/dist/src/config/loader.d.ts.map +1 -1
  23. package/dist/src/config/loader.js +58 -27
  24. package/dist/src/config/loader.js.map +1 -1
  25. package/dist/src/config/schema.d.ts +60 -41
  26. package/dist/src/config/schema.d.ts.map +1 -1
  27. package/dist/src/config/schema.js +12 -0
  28. package/dist/src/config/schema.js.map +1 -1
  29. package/dist/src/config/template-loader.d.ts +34 -0
  30. package/dist/src/config/template-loader.d.ts.map +1 -0
  31. package/dist/src/config/template-loader.js +127 -0
  32. package/dist/src/config/template-loader.js.map +1 -0
  33. package/dist/src/detectors/destructive/cloud-detector.d.ts +10 -3
  34. package/dist/src/detectors/destructive/cloud-detector.d.ts.map +1 -1
  35. package/dist/src/detectors/destructive/cloud-detector.js +45 -5
  36. package/dist/src/detectors/destructive/cloud-detector.js.map +1 -1
  37. package/dist/src/detectors/destructive/code-detector.d.ts +9 -2
  38. package/dist/src/detectors/destructive/code-detector.d.ts.map +1 -1
  39. package/dist/src/detectors/destructive/code-detector.js +43 -4
  40. package/dist/src/detectors/destructive/code-detector.js.map +1 -1
  41. package/dist/src/detectors/destructive/index.d.ts +5 -3
  42. package/dist/src/detectors/destructive/index.d.ts.map +1 -1
  43. package/dist/src/detectors/destructive/index.js +42 -10
  44. package/dist/src/detectors/destructive/index.js.map +1 -1
  45. package/dist/src/detectors/destructive/shell-detector.d.ts +10 -3
  46. package/dist/src/detectors/destructive/shell-detector.d.ts.map +1 -1
  47. package/dist/src/detectors/destructive/shell-detector.js +44 -5
  48. package/dist/src/detectors/destructive/shell-detector.js.map +1 -1
  49. package/dist/src/detectors/destructive/types.d.ts +6 -0
  50. package/dist/src/detectors/destructive/types.d.ts.map +1 -1
  51. package/dist/src/detectors/exfiltration/cloud-detector.d.ts +3 -2
  52. package/dist/src/detectors/exfiltration/cloud-detector.d.ts.map +1 -1
  53. package/dist/src/detectors/exfiltration/cloud-detector.js +21 -3
  54. package/dist/src/detectors/exfiltration/cloud-detector.js.map +1 -1
  55. package/dist/src/detectors/exfiltration/http-detector.d.ts +3 -2
  56. package/dist/src/detectors/exfiltration/http-detector.d.ts.map +1 -1
  57. package/dist/src/detectors/exfiltration/http-detector.js +21 -3
  58. package/dist/src/detectors/exfiltration/http-detector.js.map +1 -1
  59. package/dist/src/detectors/exfiltration/index.d.ts +5 -3
  60. package/dist/src/detectors/exfiltration/index.d.ts.map +1 -1
  61. package/dist/src/detectors/exfiltration/index.js +44 -11
  62. package/dist/src/detectors/exfiltration/index.js.map +1 -1
  63. package/dist/src/detectors/exfiltration/network-detector.d.ts +3 -2
  64. package/dist/src/detectors/exfiltration/network-detector.d.ts.map +1 -1
  65. package/dist/src/detectors/exfiltration/network-detector.js +26 -8
  66. package/dist/src/detectors/exfiltration/network-detector.js.map +1 -1
  67. package/dist/src/detectors/exfiltration/types.d.ts +2 -0
  68. package/dist/src/detectors/exfiltration/types.d.ts.map +1 -1
  69. package/dist/src/detectors/purchase/domain-detector.d.ts +1 -1
  70. package/dist/src/detectors/purchase/domain-detector.d.ts.map +1 -1
  71. package/dist/src/detectors/purchase/domain-detector.js +1 -1
  72. package/dist/src/detectors/purchase/domain-detector.js.map +1 -1
  73. package/dist/src/detectors/purchase/form-detector.d.ts +2 -2
  74. package/dist/src/detectors/purchase/form-detector.d.ts.map +1 -1
  75. package/dist/src/detectors/purchase/form-detector.js +7 -4
  76. package/dist/src/detectors/purchase/form-detector.js.map +1 -1
  77. package/dist/src/detectors/purchase/index.d.ts +5 -3
  78. package/dist/src/detectors/purchase/index.d.ts.map +1 -1
  79. package/dist/src/detectors/purchase/index.js +35 -6
  80. package/dist/src/detectors/purchase/index.js.map +1 -1
  81. package/dist/src/detectors/purchase/spend-tracker.d.ts +6 -2
  82. package/dist/src/detectors/purchase/spend-tracker.d.ts.map +1 -1
  83. package/dist/src/detectors/purchase/spend-tracker.js +19 -3
  84. package/dist/src/detectors/purchase/spend-tracker.js.map +1 -1
  85. package/dist/src/detectors/purchase/url-detector.d.ts +2 -2
  86. package/dist/src/detectors/purchase/url-detector.d.ts.map +1 -1
  87. package/dist/src/detectors/purchase/url-detector.js +3 -3
  88. package/dist/src/detectors/purchase/url-detector.js.map +1 -1
  89. package/dist/src/detectors/secrets/api-key-detector.d.ts +6 -6
  90. package/dist/src/detectors/secrets/api-key-detector.d.ts.map +1 -1
  91. package/dist/src/detectors/secrets/api-key-detector.js +33 -7
  92. package/dist/src/detectors/secrets/api-key-detector.js.map +1 -1
  93. package/dist/src/detectors/secrets/index.d.ts +5 -3
  94. package/dist/src/detectors/secrets/index.d.ts.map +1 -1
  95. package/dist/src/detectors/secrets/index.js +52 -11
  96. package/dist/src/detectors/secrets/index.js.map +1 -1
  97. package/dist/src/detectors/secrets/pii-detector.d.ts +2 -2
  98. package/dist/src/detectors/secrets/pii-detector.d.ts.map +1 -1
  99. package/dist/src/detectors/secrets/pii-detector.js +3 -3
  100. package/dist/src/detectors/secrets/pii-detector.js.map +1 -1
  101. package/dist/src/detectors/secrets/token-detector.d.ts +2 -2
  102. package/dist/src/detectors/secrets/token-detector.d.ts.map +1 -1
  103. package/dist/src/detectors/secrets/token-detector.js +3 -3
  104. package/dist/src/detectors/secrets/token-detector.js.map +1 -1
  105. package/dist/src/detectors/secrets/types.d.ts +5 -3
  106. package/dist/src/detectors/secrets/types.d.ts.map +1 -1
  107. package/dist/src/detectors/website/index.d.ts +5 -3
  108. package/dist/src/detectors/website/index.d.ts.map +1 -1
  109. package/dist/src/detectors/website/index.js +21 -6
  110. package/dist/src/detectors/website/index.js.map +1 -1
  111. package/dist/src/engine/analyzer.d.ts +3 -1
  112. package/dist/src/engine/analyzer.d.ts.map +1 -1
  113. package/dist/src/engine/analyzer.js +66 -10
  114. package/dist/src/engine/analyzer.js.map +1 -1
  115. package/dist/src/engine/types.d.ts +4 -1
  116. package/dist/src/engine/types.d.ts.map +1 -1
  117. package/dist/src/engine/types.js.map +1 -1
  118. package/dist/src/hooks/before-agent-start/handler.d.ts +3 -1
  119. package/dist/src/hooks/before-agent-start/handler.d.ts.map +1 -1
  120. package/dist/src/hooks/before-agent-start/handler.js +59 -12
  121. package/dist/src/hooks/before-agent-start/handler.js.map +1 -1
  122. package/dist/src/hooks/before-tool-call/handler.d.ts +3 -1
  123. package/dist/src/hooks/before-tool-call/handler.d.ts.map +1 -1
  124. package/dist/src/hooks/before-tool-call/handler.js +86 -54
  125. package/dist/src/hooks/before-tool-call/handler.js.map +1 -1
  126. package/dist/src/hooks/tool-result-persist/handler.d.ts +3 -1
  127. package/dist/src/hooks/tool-result-persist/handler.d.ts.map +1 -1
  128. package/dist/src/hooks/tool-result-persist/handler.js +36 -34
  129. package/dist/src/hooks/tool-result-persist/handler.js.map +1 -1
  130. package/dist/src/index.d.ts +45 -47
  131. package/dist/src/index.d.ts.map +1 -1
  132. package/dist/src/index.js +120 -96
  133. package/dist/src/index.js.map +1 -1
  134. package/dist/src/notifications/index.d.ts.map +1 -1
  135. package/dist/src/notifications/index.js +2 -1
  136. package/dist/src/notifications/index.js.map +1 -1
  137. package/dist/src/notifications/telegram.js +1 -1
  138. package/dist/src/notifications/telegram.js.map +1 -1
  139. package/dist/src/notifications/types.d.ts +1 -1
  140. package/dist/src/notifications/types.d.ts.map +1 -1
  141. package/dist/src/utils/logger.d.ts +26 -0
  142. package/dist/src/utils/logger.d.ts.map +1 -0
  143. package/dist/src/utils/logger.js +76 -0
  144. package/dist/src/utils/logger.js.map +1 -0
  145. package/openclaw.plugin.json +7 -22
  146. package/package.json +8 -2
@@ -10,6 +10,7 @@
10
10
  * v
11
11
  * LLM Analysis (~500ms) -> BLOCK/CONFIRM
12
12
  */
13
+ import { createLogger } from '../utils/logger.js';
13
14
  import { compareSeverity } from './types.js';
14
15
  import { createCache, createNoOpCache, generateCacheKey, DEFAULT_CACHE_TTL_MS } from './cache.js';
15
16
  // Import detector factories
@@ -51,10 +52,30 @@ function determineAction(detections, config) {
51
52
  }
52
53
  // Get primary detection (highest severity, highest confidence)
53
54
  const primary = detections[0];
54
- const { severity, confidence } = primary;
55
+ const { severity, confidence, category } = primary;
55
56
  // Check if LLM is enabled in config
56
57
  const llmEnabled = config.llm?.enabled ?? false;
57
- // Determine action based on severity and confidence
58
+ // FIRST: Check if config specifies an action for this category
59
+ // Skip 'unknown' category as it's not a valid config key
60
+ if (category !== 'unknown') {
61
+ const categoryConfig = config.rules[category];
62
+ if (categoryConfig?.action) {
63
+ // User explicitly configured an action - RESPECT IT
64
+ let configuredAction = categoryConfig.action;
65
+ // Convert 'agent-confirm' to 'confirm' for internal use
66
+ if (configuredAction === 'agent-confirm') {
67
+ configuredAction = 'confirm';
68
+ }
69
+ // Determine if LLM should be involved (if confidence is ambiguous)
70
+ const isAmbiguous = confidence >= 0.5 && confidence <= 0.8;
71
+ const requiresLLM = llmEnabled && isAmbiguous;
72
+ return {
73
+ action: configuredAction,
74
+ requiresLLM
75
+ };
76
+ }
77
+ }
78
+ // FALLBACK: If no config action specified, use confidence-based logic
58
79
  switch (severity) {
59
80
  case 'critical':
60
81
  if (confidence > 0.8) {
@@ -77,11 +98,12 @@ function determineAction(detections, config) {
77
98
  const isAmbiguous = confidence >= 0.5 && confidence <= 0.7;
78
99
  return { action: 'warn', requiresLLM: llmEnabled && isAmbiguous };
79
100
  }
80
- case 'medium':
101
+ case 'medium': {
81
102
  // Medium severity -> warn
82
103
  // May need LLM if confidence is ambiguous
83
104
  const isAmbiguousMedium = confidence >= 0.5 && confidence <= 0.8;
84
105
  return { action: 'warn', requiresLLM: llmEnabled && isAmbiguousMedium };
106
+ }
85
107
  case 'low':
86
108
  // Low severity -> allow with logging
87
109
  return { action: 'allow', requiresLLM: false };
@@ -112,6 +134,7 @@ export class HybridAnalyzer {
112
134
  cacheEnabled;
113
135
  cacheTtlMs;
114
136
  llmClient;
137
+ logger;
115
138
  // Detectors
116
139
  purchaseDetector;
117
140
  websiteDetector;
@@ -123,25 +146,26 @@ export class HybridAnalyzer {
123
146
  this.cacheEnabled = analyzerConfig.enableCache ?? true;
124
147
  this.cacheTtlMs = analyzerConfig.cacheTtlMs ?? DEFAULT_CACHE_TTL_MS;
125
148
  this.llmClient = analyzerConfig.llmClient;
149
+ this.logger = analyzerConfig.logger ?? createLogger(null, null);
126
150
  // Initialize cache
127
151
  this.cache = this.cacheEnabled
128
152
  ? createCache(this.cacheTtlMs)
129
153
  : createNoOpCache();
130
154
  // Initialize detectors from config
131
155
  this.purchaseDetector = this.config.rules.purchase
132
- ? createPurchaseDetector(this.config.rules.purchase)
156
+ ? createPurchaseDetector(this.config.rules.purchase, undefined, this.logger)
133
157
  : createDefaultPurchaseDetector();
134
158
  this.websiteDetector = this.config.rules.website
135
- ? createWebsiteDetector(this.config.rules.website)
159
+ ? createWebsiteDetector(this.config.rules.website, this.logger)
136
160
  : createDefaultWebsiteDetector();
137
161
  this.destructiveDetector = this.config.rules.destructive
138
- ? createDestructiveDetector(this.config.rules.destructive)
162
+ ? createDestructiveDetector(this.config.rules.destructive, this.logger)
139
163
  : createDefaultDestructiveDetector();
140
164
  this.secretsDetector = this.config.rules.secrets
141
- ? createSecretsDetector(this.config.rules.secrets)
165
+ ? createSecretsDetector(this.config.rules.secrets, this.logger)
142
166
  : createDefaultSecretsDetector();
143
167
  this.exfiltrationDetector = this.config.rules.exfiltration
144
- ? createExfiltrationDetector(this.config.rules.exfiltration)
168
+ ? createExfiltrationDetector(this.config.rules.exfiltration, this.logger)
145
169
  : createDefaultExfiltrationDetector();
146
170
  }
147
171
  /**
@@ -149,6 +173,9 @@ export class HybridAnalyzer {
149
173
  */
150
174
  async analyze(context) {
151
175
  const startTime = Date.now();
176
+ const toolName = context.toolName;
177
+ const url = context.url || 'none';
178
+ this.logger.debug(`[Analyzer] Starting analysis: tool=${toolName}, url=${url}`);
152
179
  // Check if globally disabled
153
180
  if (!this.config.global?.enabled) {
154
181
  return {
@@ -165,13 +192,16 @@ export class HybridAnalyzer {
165
192
  if (this.cacheEnabled) {
166
193
  const cachedResult = this.cache.get(cacheKey);
167
194
  if (cachedResult) {
195
+ this.logger.debug(`[Analyzer] Cache hit: key=${cacheKey}`);
168
196
  return {
169
197
  ...cachedResult,
170
198
  durationMs: Date.now() - startTime,
171
199
  };
172
200
  }
201
+ this.logger.debug(`[Analyzer] Cache miss: key=${cacheKey}`);
173
202
  }
174
203
  // Run all detectors in parallel
204
+ this.logger.debug(`[Analyzer] Running 5 detectors`);
175
205
  const detectionResults = await Promise.all([
176
206
  this.runPurchaseDetector(context),
177
207
  this.runWebsiteDetector(context),
@@ -179,24 +209,45 @@ export class HybridAnalyzer {
179
209
  this.runSecretsDetector(context),
180
210
  this.runExfiltrationDetector(context),
181
211
  ]);
212
+ // Log detection results
213
+ for (const result of detectionResults) {
214
+ if (result.detected) {
215
+ this.logger.info(`[Analyzer] Detection: detector=${result.category}, severity=${result.severity}, confidence=${result.confidence}, reason="${result.reason}"`);
216
+ }
217
+ else {
218
+ this.logger.debug(`[Analyzer] No detection: detector=${result.category}`);
219
+ }
220
+ }
182
221
  // Convert to unified detections and filter out non-detections
183
222
  const detections = detectionResults
184
223
  .map(toDetection)
185
224
  .filter((d) => d !== null);
186
225
  // Sort by severity (critical > high > medium > low) and confidence
187
226
  const sortedDetections = sortDetections(detections);
227
+ this.logger.debug(`[Analyzer] Found ${sortedDetections.length} detections, sorted by severity and confidence`);
188
228
  // Determine action based on highest severity detection
189
229
  let { action, requiresLLM } = determineAction(sortedDetections, this.config);
230
+ this.logger.info(`[Analyzer] Action determined: ${action}, detections=${sortedDetections.length}, requiresLLM=${requiresLLM}`);
190
231
  // If LLM analysis is needed and we have an LLM client, perform analysis
191
232
  let llmResult;
192
233
  if (requiresLLM && this.llmClient && this.llmClient.isAvailable() && sortedDetections[0]) {
234
+ this.logger.info(`[Analyzer] LLM analysis required: confidence in ambiguous range`);
235
+ this.logger.debug(`[Analyzer] Invoking LLM analysis`);
193
236
  llmResult = await this.performLLMAnalysis(sortedDetections[0], context);
237
+ this.logger.info(`[Analyzer] LLM response: determination=${llmResult.determination}, confidence=${llmResult.confidence}, suggested_action=${llmResult.suggestedAction}`);
194
238
  // Adjust action based on LLM result
239
+ const previousAction = action;
195
240
  const adjustedAction = this.adjustActionFromLLM(action, llmResult);
196
241
  action = adjustedAction;
242
+ if (previousAction !== action) {
243
+ this.logger.info(`[Analyzer] LLM override: changed action from ${previousAction} to ${action}`);
244
+ }
197
245
  // LLM has made its determination, no longer needs LLM
198
246
  requiresLLM = false;
199
247
  }
248
+ else if (requiresLLM && (!this.llmClient || !this.llmClient.isAvailable())) {
249
+ this.logger.debug(`[Analyzer] LLM not configured or unavailable, using pattern-based action`);
250
+ }
200
251
  // Build result
201
252
  const result = {
202
253
  action,
@@ -209,7 +260,9 @@ export class HybridAnalyzer {
209
260
  // Cache the result (unless it still requires LLM - those shouldn't be cached)
210
261
  if (this.cacheEnabled && !requiresLLM) {
211
262
  this.cache.set(cacheKey, result);
263
+ this.logger.debug(`[Analyzer] Cached result: ttl=${this.cacheTtlMs}ms`);
212
264
  }
265
+ this.logger.debug(`[Analyzer] Analysis complete: tool=${toolName}, action=${action}, duration=${Date.now() - startTime}ms`);
213
266
  return result;
214
267
  }
215
268
  /**
@@ -314,8 +367,10 @@ export class HybridAnalyzer {
314
367
  context,
315
368
  });
316
369
  }
317
- catch {
370
+ catch (error) {
318
371
  // Return uncertain on error - don't block the flow
372
+ const errorMessage = error instanceof Error ? error.message : String(error);
373
+ this.logger.warn(`[Analyzer] LLM analysis failed: ${errorMessage}, using pattern-based action`);
319
374
  return {
320
375
  determination: 'uncertain',
321
376
  confidence: 0.5,
@@ -346,12 +401,13 @@ export class HybridAnalyzer {
346
401
  /**
347
402
  * Create an analyzer from configuration
348
403
  */
349
- export function createAnalyzer(config, options) {
404
+ export function createAnalyzer(config, options, logger) {
350
405
  return new HybridAnalyzer({
351
406
  config,
352
407
  enableCache: options?.enableCache,
353
408
  cacheTtlMs: options?.cacheTtlMs,
354
409
  llmClient: options?.llmClient,
410
+ logger,
355
411
  });
356
412
  }
357
413
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"analyzer.js","sourceRoot":"","sources":["../../../src/engine/analyzer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"analyzer.js","sourceRoot":"","sources":["../../../src/engine/analyzer.ts"],"names":[],"mappings":"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"}
@@ -3,6 +3,7 @@
3
3
  * Type definitions for the main detection engine that orchestrates all detectors
4
4
  */
5
5
  import type { Severity, ClawsecConfig } from '../config/index.js';
6
+ import type { Logger } from '../utils/logger.js';
6
7
  /**
7
8
  * Actions that can be returned by the analyzer
8
9
  * Note: This extends the config Action type with 'allow' for analysis results
@@ -11,7 +12,7 @@ export type AnalysisAction = 'allow' | 'block' | 'confirm' | 'warn' | 'log';
11
12
  /**
12
13
  * Threat categories that can be detected
13
14
  */
14
- export type ThreatCategory = 'purchase' | 'website' | 'destructive' | 'secrets' | 'exfiltration';
15
+ export type ThreatCategory = 'purchase' | 'website' | 'destructive' | 'secrets' | 'exfiltration' | 'unknown';
15
16
  /**
16
17
  * Detection context provided to the engine
17
18
  */
@@ -97,6 +98,8 @@ export interface AnalyzerConfig {
97
98
  cacheTtlMs?: number;
98
99
  /** Optional LLM client for analyzing ambiguous detections */
99
100
  llmClient?: LLMClient;
101
+ /** Optional logger instance */
102
+ logger?: Logger;
100
103
  }
101
104
  /**
102
105
  * LLM analysis result determination
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/engine/types.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/engine/types.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/engine/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAwKH;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAA6B;IACxD,QAAQ,EAAE,CAAC;IACX,IAAI,EAAE,CAAC;IACP,MAAM,EAAE,CAAC;IACT,GAAG,EAAE,CAAC;CACP,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,CAAW,EAAE,CAAW;IACtD,OAAO,gBAAgB,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;AACnD,CAAC"}
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/engine/types.ts"],"names":[],"mappings":"AAAA;;;GAGG;AA4KH;;GAEG;AACH,MAAM,CAAC,MAAM,gBAAgB,GAA6B;IACxD,QAAQ,EAAE,CAAC;IACX,IAAI,EAAE,CAAC;IACP,MAAM,EAAE,CAAC;IACT,GAAG,EAAE,CAAC;CACP,CAAC;AAEF;;;GAGG;AACH,MAAM,UAAU,eAAe,CAAC,CAAW,EAAE,CAAW;IACtD,OAAO,gBAAgB,CAAC,CAAC,CAAC,GAAG,gBAAgB,CAAC,CAAC,CAAC,CAAC;AACnD,CAAC"}
@@ -6,6 +6,7 @@
6
6
  */
7
7
  import type { BeforeAgentStartHandler } from '../../index.js';
8
8
  import type { ClawsecConfig } from '../../config/schema.js';
9
+ import { type Logger } from '../../utils/logger.js';
9
10
  /**
10
11
  * Options for creating a before-agent-start handler
11
12
  */
@@ -27,9 +28,10 @@ export interface BeforeAgentStartHandlerOptions {
27
28
  *
28
29
  * @param config - Clawsec configuration
29
30
  * @param options - Optional handler options
31
+ * @param logger - Optional logger instance
30
32
  * @returns BeforeAgentStartHandler function
31
33
  */
32
- export declare function createBeforeAgentStartHandler(config: ClawsecConfig, options?: BeforeAgentStartHandlerOptions): BeforeAgentStartHandler;
34
+ export declare function createBeforeAgentStartHandler(config: ClawsecConfig, options?: BeforeAgentStartHandlerOptions, logger?: Logger): BeforeAgentStartHandler;
33
35
  /**
34
36
  * Create a default before-agent-start handler with default configuration
35
37
  */
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../src/hooks/before-agent-start/handler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAGV,uBAAuB,EACxB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAG5D;;GAEG;AACH,MAAM,WAAW,8BAA8B;IAC7C;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,aAAa,EACrB,OAAO,CAAC,EAAE,8BAA8B,GACvC,uBAAuB,CAqBzB;AAED;;GAEG;AACH,wBAAgB,oCAAoC,IAAI,uBAAuB,CAmE9E"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../src/hooks/before-agent-start/handler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAGV,uBAAuB,EACxB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAE5D,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAElE;;GAEG;AACH,MAAM,WAAW,8BAA8B;IAC7C;;;OAGG;IACH,YAAY,CAAC,EAAE,OAAO,CAAC;CACxB;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,6BAA6B,CAC3C,MAAM,EAAE,aAAa,EACrB,OAAO,CAAC,EAAE,8BAA8B,EACxC,MAAM,CAAC,EAAE,MAAM,GACd,uBAAuB,CAqEzB;AAED;;GAEG;AACH,wBAAgB,oCAAoC,IAAI,uBAAuB,CAmE9E"}
@@ -5,6 +5,7 @@
5
5
  * when an agent session starts.
6
6
  */
7
7
  import { buildSecurityContextPrompt } from './prompts.js';
8
+ import { createLogger } from '../../utils/logger.js';
8
9
  /**
9
10
  * Create the before-agent-start handler
10
11
  *
@@ -16,24 +17,70 @@ import { buildSecurityContextPrompt } from './prompts.js';
16
17
  *
17
18
  * @param config - Clawsec configuration
18
19
  * @param options - Optional handler options
20
+ * @param logger - Optional logger instance
19
21
  * @returns BeforeAgentStartHandler function
20
22
  */
21
- export function createBeforeAgentStartHandler(config, options) {
23
+ export function createBeforeAgentStartHandler(config, options, logger) {
24
+ const log = logger ?? createLogger(null, null);
22
25
  const injectPrompt = options?.injectPrompt ?? true;
23
- return async (_context) => {
24
- // If prompt injection is disabled via options, return empty result
25
- if (!injectPrompt) {
26
+ // Track which sessions have already received security context
27
+ const injectedSessions = new Set();
28
+ return async (context) => {
29
+ try {
30
+ // Normalize context: Extract/generate sessionId if missing
31
+ let sessionId = context.sessionId;
32
+ if (!sessionId && context.messages && context.messages.length > 0) {
33
+ // Try to extract from first message timestamp
34
+ const firstMsg = context.messages[0];
35
+ sessionId = `session_${firstMsg.timestamp || Date.now()}`;
36
+ }
37
+ else if (!sessionId) {
38
+ // Generate from current timestamp
39
+ sessionId = `session_${context.timestamp || Date.now()}`;
40
+ }
41
+ // Validate we have essential data
42
+ if (!context || !sessionId) {
43
+ log.error(`[Hook:before-agent-start] Invalid context received`, context);
44
+ return {}; // Fail-open for invalid context
45
+ }
46
+ log.info(`[Hook:before-agent-start] Entry: session=${sessionId}`);
47
+ // CHECK: If already injected for this session, return empty result
48
+ if (injectedSessions.has(sessionId)) {
49
+ log.debug(`[Hook:before-agent-start] Security context already injected for session=${sessionId}, skipping`);
50
+ return {}; // Empty result - no re-injection
51
+ }
52
+ // If prompt injection is disabled via options, return empty result
53
+ if (!injectPrompt) {
54
+ log.info(`[Hook:before-agent-start] Prompt injection disabled`);
55
+ return {};
56
+ }
57
+ // Build the security context prompt based on config
58
+ let prependContext;
59
+ try {
60
+ prependContext = buildSecurityContextPrompt(config);
61
+ }
62
+ catch (error) {
63
+ const errorMessage = error instanceof Error ? error.message : String(error);
64
+ log.error(`[Hook:before-agent-start] Error building prompt: ${errorMessage}`, error);
65
+ return {}; // Fail-open: allow agent to start without security context
66
+ }
67
+ // Return the result with prependContext (OpenClaw's actual API field)
68
+ if (prependContext) {
69
+ injectedSessions.add(sessionId); // Mark this session as injected
70
+ log.info(`[Hook:before-agent-start] Exit: session=${sessionId}, injected=${prependContext.length} chars`);
71
+ return {
72
+ prependContext,
73
+ };
74
+ }
75
+ log.info(`[Hook:before-agent-start] Exit: session=${sessionId}, no prompt (rules disabled)`);
26
76
  return {};
27
77
  }
28
- // Build the security context prompt based on config
29
- const systemPromptAddition = buildSecurityContextPrompt(config);
30
- // Return the result with the prompt addition (if any)
31
- if (systemPromptAddition) {
32
- return {
33
- systemPromptAddition,
34
- };
78
+ catch (error) {
79
+ // Top-level catch for any unexpected errors
80
+ const errorMessage = error instanceof Error ? error.message : String(error);
81
+ log.error(`[Hook:before-agent-start] Unhandled error: ${errorMessage}`, error);
82
+ return {}; // Fail-open: allow agent to start without security context
35
83
  }
36
- return {};
37
84
  };
38
85
  }
39
86
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../../src/hooks/before-agent-start/handler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAQH,OAAO,EAAE,0BAA0B,EAAE,MAAM,cAAc,CAAC;AAa1D;;;;;;;;;;;;GAYG;AACH,MAAM,UAAU,6BAA6B,CAC3C,MAAqB,EACrB,OAAwC;IAExC,MAAM,YAAY,GAAG,OAAO,EAAE,YAAY,IAAI,IAAI,CAAC;IAEnD,OAAO,KAAK,EAAE,QAA2B,EAAmC,EAAE;QAC5E,mEAAmE;QACnE,IAAI,CAAC,YAAY,EAAE,CAAC;YAClB,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,oDAAoD;QACpD,MAAM,oBAAoB,GAAG,0BAA0B,CAAC,MAAM,CAAC,CAAC;QAEhE,sDAAsD;QACtD,IAAI,oBAAoB,EAAE,CAAC;YACzB,OAAO;gBACL,oBAAoB;aACrB,CAAC;QACJ,CAAC;QAED,OAAO,EAAE,CAAC;IACZ,CAAC,CAAC;AACJ,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,oCAAoC;IAClD,MAAM,aAAa,GAAkB;QACnC,OAAO,EAAE,KAAK;QACd,MAAM,EAAE;YACN,OAAO,EAAE,IAAI;YACb,QAAQ,EAAE,MAAM;SACjB;QACD,GAAG,EAAE;YACH,OAAO,EAAE,IAAI;YACb,KAAK,EAAE,IAAI;SACZ;QACD,KAAK,EAAE;YACL,QAAQ,EAAE;gBACR,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,UAAU;gBACpB,MAAM,EAAE,OAAO;gBACf,WAAW,EAAE,EAAE,cAAc,EAAE,GAAG,EAAE,KAAK,EAAE,GAAG,EAAE;gBAChD,OAAO,EAAE,EAAE,IAAI,EAAE,WAAW,EAAE,SAAS,EAAE,EAAE,EAAE;aAC9C;YACD,OAAO,EAAE;gBACP,OAAO,EAAE,IAAI;gBACb,IAAI,EAAE,WAAW;gBACjB,QAAQ,EAAE,MAAM;gBAChB,MAAM,EAAE,OAAO;gBACf,SAAS,EAAE,EAAE;gBACb,SAAS,EAAE,EAAE;aACd;YACD,WAAW,EAAE;gBACX,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,UAAU;gBACpB,MAAM,EAAE,SAAS;gBACjB,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;gBACxB,KAAK,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;gBACxB,IAAI,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE;aACxB;YACD,OAAO,EAAE;gBACP,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,UAAU;gBACpB,MAAM,EAAE,OAAO;aAChB;YACD,YAAY,EAAE;gBACZ,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,MAAM;gBAChB,MAAM,EAAE,OAAO;aAChB;YACD,YAAY,EAAE;gBACZ,OAAO,EAAE,IAAI;gBACb,QAAQ,EAAE,MAAM;gBAChB,MAAM,EAAE,OAAO;gBACf,aAAa,EAAE,GAAG;gBAClB,aAAa,EAAE,KAAK;gBACpB,UAAU,EAAE;oBACV,mBAAmB,EAAE,IAAI;oBACzB,UAAU,EAAE,IAAI;oBAChB,SAAS,EAAE,IAAI;oBACf,cAAc,EAAE,IAAI;iBACrB;aACF;SACF;QACD,QAAQ,EAAE;YACR,MAAM,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,EAAE;YACvC,YAAY,EAAE,EAAE,OAAO,EAAE,IAAI,EAAE,aAAa,EAAE,kBAAkB,EAAE;YAClE,OAAO,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,GAAG,EAAE,SAAS,EAAE,OAAO,EAAE,EAAE,EAAE,OAAO,EAAE,EAAE,EAAE;SACtE;KACF,CAAC;IAEF,OAAO,6BAA6B,CAAC,aAAa,CAAC,CAAC;AACtD,CAAC"}
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../../src/hooks/before-agent-start/handler.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,7 @@ import type { Analyzer } from '../../engine/types.js';
9
9
  import type { ActionExecutor } from '../../actions/types.js';
10
10
  import type { ClawsecConfig } from '../../config/schema.js';
11
11
  import type { AgentConfirmHandler } from '../../approval/agent-confirm.js';
12
+ import { type Logger } from '../../utils/logger.js';
12
13
  /**
13
14
  * Options for creating a before-tool-call handler
14
15
  */
@@ -32,9 +33,10 @@ export interface BeforeToolCallHandlerOptions {
32
33
  *
33
34
  * @param config - Clawsec configuration
34
35
  * @param options - Optional custom components
36
+ * @param logger - Optional logger instance
35
37
  * @returns BeforeToolCallHandler function
36
38
  */
37
- export declare function createBeforeToolCallHandler(config: ClawsecConfig, options?: BeforeToolCallHandlerOptions): BeforeToolCallHandler;
39
+ export declare function createBeforeToolCallHandler(config: ClawsecConfig, options?: BeforeToolCallHandlerOptions, logger?: Logger): BeforeToolCallHandler;
38
40
  /**
39
41
  * Create a default before-tool-call handler with default configuration
40
42
  */
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../src/hooks/before-tool-call/handler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAGV,qBAAqB,EAGtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EACV,QAAQ,EAGT,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,cAAc,EAA+B,MAAM,wBAAwB,CAAC;AAC1F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAM3E;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,4CAA4C;IAC5C,YAAY,CAAC,EAAE,mBAAmB,CAAC;CACpC;AAiGD;;;;;;;;;;;;;GAaG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,aAAa,EACrB,OAAO,CAAC,EAAE,4BAA4B,GACrC,qBAAqB,CAsEvB;AAED;;GAEG;AACH,wBAAgB,kCAAkC,IAAI,qBAAqB,CAmE1E"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../../src/hooks/before-tool-call/handler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,KAAK,EAGV,qBAAqB,EAGtB,MAAM,gBAAgB,CAAC;AACxB,OAAO,KAAK,EACV,QAAQ,EAGT,MAAM,uBAAuB,CAAC;AAC/B,OAAO,KAAK,EAAE,cAAc,EAA+B,MAAM,wBAAwB,CAAC;AAC1F,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,wBAAwB,CAAC;AAC5D,OAAO,KAAK,EAAE,mBAAmB,EAAE,MAAM,iCAAiC,CAAC;AAK3E,OAAO,EAAgB,KAAK,MAAM,EAAE,MAAM,uBAAuB,CAAC;AAElE;;GAEG;AACH,MAAM,WAAW,4BAA4B;IAC3C,+BAA+B;IAC/B,QAAQ,CAAC,EAAE,QAAQ,CAAC;IACpB,sCAAsC;IACtC,QAAQ,CAAC,EAAE,cAAc,CAAC;IAC1B,4CAA4C;IAC5C,YAAY,CAAC,EAAE,mBAAmB,CAAC;CACpC;AAkGD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,2BAA2B,CACzC,MAAM,EAAE,aAAa,EACrB,OAAO,CAAC,EAAE,4BAA4B,EACtC,MAAM,CAAC,EAAE,MAAM,GACd,qBAAqB,CAsGvB;AAED;;GAEG;AACH,wBAAgB,kCAAkC,IAAI,qBAAqB,CAmE1E"}