@clawdstrike/openclaw 0.2.5 → 0.2.7

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (37) hide show
  1. package/README.md +3 -1
  2. package/dist/config.d.ts +5 -2
  3. package/dist/config.d.ts.map +1 -1
  4. package/dist/config.js +1 -0
  5. package/dist/config.js.map +1 -1
  6. package/dist/hooks/inbound-message/handler.d.ts +6 -0
  7. package/dist/hooks/inbound-message/handler.d.ts.map +1 -0
  8. package/dist/hooks/inbound-message/handler.js +177 -0
  9. package/dist/hooks/inbound-message/handler.js.map +1 -0
  10. package/dist/hooks/tool-guard/handler.d.ts.map +1 -1
  11. package/dist/hooks/tool-guard/handler.js +357 -66
  12. package/dist/hooks/tool-guard/handler.js.map +1 -1
  13. package/dist/hooks/tool-invocation-state.d.ts +10 -0
  14. package/dist/hooks/tool-invocation-state.d.ts.map +1 -0
  15. package/dist/hooks/tool-invocation-state.js +152 -0
  16. package/dist/hooks/tool-invocation-state.js.map +1 -0
  17. package/dist/hooks/tool-preflight/handler.d.ts.map +1 -1
  18. package/dist/hooks/tool-preflight/handler.js +8 -0
  19. package/dist/hooks/tool-preflight/handler.js.map +1 -1
  20. package/dist/index.d.ts +2 -1
  21. package/dist/index.d.ts.map +1 -1
  22. package/dist/index.js +1 -0
  23. package/dist/index.js.map +1 -1
  24. package/dist/openclaw-adapter.d.ts +2 -1
  25. package/dist/openclaw-adapter.d.ts.map +1 -1
  26. package/dist/openclaw-adapter.js +14 -0
  27. package/dist/openclaw-adapter.js.map +1 -1
  28. package/dist/plugin.d.ts.map +1 -1
  29. package/dist/plugin.js +73 -10
  30. package/dist/plugin.js.map +1 -1
  31. package/dist/policy/engine.d.ts +3 -0
  32. package/dist/policy/engine.d.ts.map +1 -1
  33. package/dist/policy/engine.js +14 -0
  34. package/dist/policy/engine.js.map +1 -1
  35. package/dist/types.d.ts +39 -4
  36. package/dist/types.d.ts.map +1 -1
  37. package/package.json +3 -3
package/README.md CHANGED
@@ -1,6 +1,6 @@
1
1
  # @clawdstrike/openclaw
2
2
 
3
- Clawdstrike security plugin for OpenClaw. Provides tool-layer guardrails (preflight policy checks + post-action output blocking/redaction) for AI agents running in OpenClaw.
3
+ Clawdstrike security plugin for OpenClaw. Provides tool-layer guardrails (preflight policy checks + synchronous post-action output rewriting/redaction) for AI agents running in OpenClaw.
4
4
 
5
5
  See [Enforcement Tiers & Integration Contract](https://github.com/backbay-labs/clawdstrike/blob/main/docs/src/concepts/enforcement-tiers.md) for what is enforceable at the tool boundary (and what requires a sandbox/broker).
6
6
 
@@ -53,6 +53,7 @@ The package exports hook handlers for direct OpenClaw integration:
53
53
  - `agentBootstrapHandler` -- Injects security prompt at session start
54
54
  - `toolPreflightHandler` -- Preflight policy check before tool execution
55
55
  - `cuaBridgeHandler` -- Computer-use agent bridge with CUA-specific checks
56
+ - `inboundMessageHandler` -- Pre-context inbound message guard (`inbound_message` / `user_input`)
56
57
 
57
58
  ### CLI
58
59
 
@@ -87,6 +88,7 @@ These commands build `@clawdstrike/policy` and `@clawdstrike/adapter-core` befor
87
88
  | `ReceiptSigner` | Decision receipt signing |
88
89
  | `generateSecurityPrompt` | Security system prompt generation |
89
90
  | `openclawTranslator` | OpenClaw config translation |
91
+ | `inboundMessageHandler` | Inbound message hook handler |
90
92
  | `registerCli` / `createCli` | CLI registration helpers |
91
93
 
92
94
  ## License
package/dist/config.d.ts CHANGED
@@ -4,14 +4,17 @@
4
4
  * Configuration handling and defaults for the Clawdstrike plugin.
5
5
  */
6
6
  import type { ClawdstrikeConfig } from "./types.js";
7
+ export type ResolvedClawdstrikeConfig = Required<Omit<ClawdstrikeConfig, "inbound">> & {
8
+ inbound?: ClawdstrikeConfig["inbound"];
9
+ };
7
10
  /**
8
11
  * Default configuration values
9
12
  */
10
- export declare const DEFAULT_CONFIG: Required<ClawdstrikeConfig>;
13
+ export declare const DEFAULT_CONFIG: ResolvedClawdstrikeConfig;
11
14
  /**
12
15
  * Merge user config with defaults
13
16
  */
14
- export declare function mergeConfig(userConfig?: ClawdstrikeConfig): Required<ClawdstrikeConfig>;
17
+ export declare function mergeConfig(userConfig?: ClawdstrikeConfig): ResolvedClawdstrikeConfig;
15
18
  /**
16
19
  * Validate configuration values
17
20
  */
@@ -1 +1 @@
1
- {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAA0C,MAAM,YAAY,CAAC;AAE5F;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,QAAQ,CAAC,iBAAiB,CAYtD,CAAC;AAEF;;GAEG;AACH,wBAAgB,WAAW,CAAC,UAAU,GAAE,iBAAsB,GAAG,QAAQ,CAAC,iBAAiB,CAAC,CAO3F;AAkBD;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,EAAE,CAYlE;AAgBD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQhE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAErD"}
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,KAAK,EAAE,iBAAiB,EAA0C,MAAM,YAAY,CAAC;AAE5F,MAAM,MAAM,yBAAyB,GAAG,QAAQ,CAAC,IAAI,CAAC,iBAAiB,EAAE,SAAS,CAAC,CAAC,GAAG;IACrF,OAAO,CAAC,EAAE,iBAAiB,CAAC,SAAS,CAAC,CAAC;CACxC,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE,yBAY5B,CAAC;AAEF;;GAEG;AACH,wBAAgB,WAAW,CAAC,UAAU,GAAE,iBAAsB,GAAG,yBAAyB,CAQzF;AAkBD;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,iBAAiB,GAAG,MAAM,EAAE,CAYlE;AAgBD;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM,GAAG,IAAI,CAQhE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,OAAO,CAErD"}
package/dist/config.js CHANGED
@@ -28,6 +28,7 @@ export function mergeConfig(userConfig = {}) {
28
28
  mode: userConfig.mode ?? DEFAULT_CONFIG.mode,
29
29
  logLevel: userConfig.logLevel ?? DEFAULT_CONFIG.logLevel,
30
30
  guards: mergeGuardToggles(userConfig.guards),
31
+ inbound: userConfig.inbound,
31
32
  };
32
33
  }
33
34
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ import type { ClawdstrikeConfig, HookHandler } from "../../types.js";
2
+ export declare function refreshRuntimeConfig(config: ClawdstrikeConfig): void;
3
+ export declare function initialize(config: ClawdstrikeConfig): void;
4
+ declare const handler: HookHandler;
5
+ export default handler;
6
+ //# sourceMappingURL=handler.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/hooks/inbound-message/handler.ts"],"names":[],"mappings":"AASA,OAAO,KAAK,EAEV,iBAAiB,EAEjB,WAAW,EAGZ,MAAM,gBAAgB,CAAC;AA8BxB,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAEpE;AAED,wBAAgB,UAAU,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAG1D;AA4KD,QAAA,MAAM,OAAO,EAAE,WAyBd,CAAC;AAEF,eAAe,OAAO,CAAC"}
@@ -0,0 +1,177 @@
1
+ import { createSecurityContext, interceptInboundMessage } from "@clawdstrike/adapter-core";
2
+ import { getSharedEngine, initializeEngine } from "../../engine-holder.js";
3
+ const DEFAULT_SOURCE = "openclaw.inbound_hook";
4
+ let currentConfig = {};
5
+ export function refreshRuntimeConfig(config) {
6
+ currentConfig = config;
7
+ }
8
+ export function initialize(config) {
9
+ refreshRuntimeConfig(config);
10
+ initializeEngine(config);
11
+ }
12
+ function isInboundLegacyEvent(event) {
13
+ return (typeof event === "object" &&
14
+ event !== null &&
15
+ "type" in event &&
16
+ ((event.type === "inbound_message") ||
17
+ (event.type === "user_input")));
18
+ }
19
+ function isModernInboundEvent(event) {
20
+ if (typeof event !== "object" || event === null)
21
+ return false;
22
+ if ("type" in event)
23
+ return false;
24
+ const text = event.text;
25
+ const nestedText = event.message?.text;
26
+ return typeof text === "string" || typeof nestedText === "string";
27
+ }
28
+ function asString(value) {
29
+ return typeof value === "string" && value.length > 0 ? value : undefined;
30
+ }
31
+ function normalizeChatType(value) {
32
+ if (value === "dm" || value === "group" || value === "channel") {
33
+ return value;
34
+ }
35
+ return undefined;
36
+ }
37
+ function resolveInboundConfig(config) {
38
+ return {
39
+ enabled: false,
40
+ failMode: "open",
41
+ customType: "untrusted_text",
42
+ auditContentMode: "hash",
43
+ ...(config.inbound ?? {}),
44
+ };
45
+ }
46
+ function extractMessageList(event) {
47
+ if (isInboundLegacyEvent(event))
48
+ return event.messages;
49
+ const maybeMessages = event.messages;
50
+ if (Array.isArray(maybeMessages) && maybeMessages.every((entry) => typeof entry === "string")) {
51
+ return maybeMessages;
52
+ }
53
+ return null;
54
+ }
55
+ function normalizeInboundMessage(event, hookCtx) {
56
+ if (isInboundLegacyEvent(event)) {
57
+ const raw = event.context.message;
58
+ const text = asString(raw.text);
59
+ if (!text)
60
+ return null;
61
+ const timestamp = asString(raw.timestamp) ?? event.timestamp;
62
+ const parsedTimestamp = new Date(timestamp);
63
+ const sessionId = event.context.sessionId || hookCtx?.sessionKey || hookCtx?.agentId || "openclaw-runtime";
64
+ return {
65
+ sessionId,
66
+ message: {
67
+ id: asString(raw.id) ?? `inbound-${sessionId}-${Date.now()}`,
68
+ text,
69
+ timestamp: Number.isNaN(parsedTimestamp.getTime()) ? new Date() : parsedTimestamp,
70
+ source: DEFAULT_SOURCE,
71
+ senderId: asString(raw.senderId),
72
+ senderName: asString(raw.senderName),
73
+ channel: asString(raw.channel),
74
+ chatType: normalizeChatType(raw.chatType),
75
+ metadata: raw.metadata && typeof raw.metadata === "object" && !Array.isArray(raw.metadata)
76
+ ? raw.metadata
77
+ : undefined,
78
+ },
79
+ };
80
+ }
81
+ if (!isModernInboundEvent(event))
82
+ return null;
83
+ const text = asString(event.message?.text) ?? asString(event.text);
84
+ if (!text)
85
+ return null;
86
+ const sessionId = asString(event.sessionId) ?? hookCtx?.sessionKey ?? hookCtx?.agentId ?? "openclaw-runtime";
87
+ const timestampRaw = asString(event.message?.timestamp) ?? asString(event.timestamp);
88
+ const parsedTimestamp = timestampRaw ? new Date(timestampRaw) : new Date();
89
+ const senderId = asString(event.message?.senderId) ?? asString(event.senderId);
90
+ const senderName = asString(event.message?.senderName) ?? asString(event.senderName);
91
+ const channel = asString(event.message?.channel) ?? asString(event.channel);
92
+ const chatType = normalizeChatType(event.message?.chatType ?? event.chatType);
93
+ const metadataSource = event.message?.metadata;
94
+ const metadata = metadataSource && typeof metadataSource === "object" && !Array.isArray(metadataSource)
95
+ ? metadataSource
96
+ : undefined;
97
+ return {
98
+ sessionId,
99
+ message: {
100
+ id: asString(event.message?.id) ?? `inbound-${sessionId}-${Date.now()}`,
101
+ text,
102
+ timestamp: Number.isNaN(parsedTimestamp.getTime()) ? new Date() : parsedTimestamp,
103
+ source: DEFAULT_SOURCE,
104
+ senderId,
105
+ senderName,
106
+ channel,
107
+ chatType,
108
+ metadata,
109
+ },
110
+ };
111
+ }
112
+ function applyDecisionToEvent(event, result) {
113
+ const modernEvent = event;
114
+ const modernMessage = !isInboundLegacyEvent(event) &&
115
+ modernEvent.message &&
116
+ typeof modernEvent.message === "object" &&
117
+ !Array.isArray(modernEvent.message)
118
+ ? modernEvent.message
119
+ : null;
120
+ const messages = extractMessageList(event);
121
+ const decisionWarning = result.decision.status === "warn" || result.decision.status === "sanitize"
122
+ ? result.decision.message ?? result.decision.reason
123
+ : undefined;
124
+ const warning = result.warning ?? decisionWarning;
125
+ if (!result.proceed || result.decision.status === "deny") {
126
+ const blockReason = result.decision.message ?? result.decision.reason ?? "Inbound message blocked by policy";
127
+ if (messages) {
128
+ messages.push(`[clawdstrike] Inbound blocked: ${blockReason}`);
129
+ }
130
+ if (isInboundLegacyEvent(event)) {
131
+ event.context.message.blocked = true;
132
+ }
133
+ else if (modernMessage) {
134
+ modernMessage.blocked = true;
135
+ }
136
+ return { block: true, blockReason };
137
+ }
138
+ if (result.modifiedMessage && typeof result.modifiedMessage.text === "string") {
139
+ if (isInboundLegacyEvent(event)) {
140
+ event.context.message.text = result.modifiedMessage.text;
141
+ }
142
+ else if (modernMessage) {
143
+ modernMessage.text = result.modifiedMessage.text;
144
+ }
145
+ else {
146
+ modernEvent.text = result.modifiedMessage.text;
147
+ }
148
+ }
149
+ if (warning && messages) {
150
+ messages.push(`[clawdstrike] Inbound warning: ${warning}`);
151
+ }
152
+ return;
153
+ }
154
+ const handler = async (event, hookCtx) => {
155
+ const normalized = normalizeInboundMessage(event, hookCtx);
156
+ if (!normalized)
157
+ return;
158
+ const inboundConfig = resolveInboundConfig(currentConfig);
159
+ if (inboundConfig.enabled === false)
160
+ return;
161
+ const engine = getSharedEngine(currentConfig);
162
+ const adapterConfig = {
163
+ ...currentConfig,
164
+ inbound: inboundConfig,
165
+ };
166
+ const context = createSecurityContext({
167
+ sessionId: normalized.sessionId,
168
+ metadata: {
169
+ framework: "openclaw",
170
+ hookEvent: isInboundLegacyEvent(event) ? event.type : "inbound_message",
171
+ },
172
+ });
173
+ const result = await interceptInboundMessage(engine, adapterConfig, context, normalized.message);
174
+ return applyDecisionToEvent(event, result);
175
+ };
176
+ export default handler;
177
+ //# sourceMappingURL=handler.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"handler.js","sourceRoot":"","sources":["../../../src/hooks/inbound-message/handler.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/hooks/tool-guard/handler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EACV,iBAAiB,EACjB,QAAQ,EAER,WAAW,EAGZ,MAAM,gBAAgB,CAAC;AA6ExB,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAiC;gBAEzC,OAAO,SAAoB,EAAE,KAAK,SAAuB;IAKrE,oFAAoF;IACpF,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAI1E,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAatC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAS1C,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF;AAOD,kDAAkD;AAClD,eAAO,IAAI,aAAa,eAAsB,CAAC;AAE/C;;;GAGG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAK1D;AAyCD;;GAEG;AACH,QAAA,MAAM,OAAO,EAAE,WAsHd,CAAC;AA6QF,eAAe,OAAO,CAAC"}
1
+ {"version":3,"file":"handler.d.ts","sourceRoot":"","sources":["../../../src/hooks/tool-guard/handler.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAMH,OAAO,KAAK,EACV,iBAAiB,EACjB,QAAQ,EAER,WAAW,EAMZ,MAAM,gBAAgB,CAAC;AA8ExB,qBAAa,aAAa;IACxB,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAS;IACjC,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAS;IAC/B,OAAO,CAAC,QAAQ,CAAC,GAAG,CAAiC;gBAEzC,OAAO,SAAoB,EAAE,KAAK,SAAuB;IAKrE,oFAAoF;IACpF,MAAM,CAAC,GAAG,CAAC,SAAS,EAAE,MAAM,EAAE,QAAQ,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,GAAG,MAAM;IAI1E,GAAG,CAAC,GAAG,EAAE,MAAM,GAAG,QAAQ,GAAG,SAAS;IAatC,GAAG,CAAC,GAAG,EAAE,MAAM,EAAE,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAS1C,KAAK,IAAI,IAAI;IAIb,IAAI,IAAI,IAAI,MAAM,CAEjB;CACF;AAOD,kDAAkD;AAClD,eAAO,IAAI,aAAa,eAAsB,CAAC;AAE/C;;;GAGG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,iBAAiB,GAAG,IAAI,CAM1D;AAueD;;GAEG;AACH,QAAA,MAAM,OAAO,EAAE,WAmDd,CAAC;AA6QF,eAAe,OAAO,CAAC"}