openclaw-event-server-plugin 1.0.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.
- package/LICENSE +21 -0
- package/README.md +473 -0
- package/config.example.json +203 -0
- package/dist/broadcast/index.d.ts +3 -0
- package/dist/broadcast/index.d.ts.map +1 -0
- package/dist/broadcast/index.js +19 -0
- package/dist/broadcast/index.js.map +1 -0
- package/dist/broadcast/queue.d.ts +63 -0
- package/dist/broadcast/queue.d.ts.map +1 -0
- package/dist/broadcast/queue.js +259 -0
- package/dist/broadcast/queue.js.map +1 -0
- package/dist/broadcast/webhook.d.ts +30 -0
- package/dist/broadcast/webhook.d.ts.map +1 -0
- package/dist/broadcast/webhook.js +184 -0
- package/dist/broadcast/webhook.js.map +1 -0
- package/dist/broadcast/websocketServer.d.ts +90 -0
- package/dist/broadcast/websocketServer.d.ts.map +1 -0
- package/dist/broadcast/websocketServer.js +403 -0
- package/dist/broadcast/websocketServer.js.map +1 -0
- package/dist/config/config-types.d.ts +280 -0
- package/dist/config/config-types.d.ts.map +1 -0
- package/dist/config/config-types.js +3 -0
- package/dist/config/config-types.js.map +1 -0
- package/dist/config/default-config.d.ts +3 -0
- package/dist/config/default-config.d.ts.map +1 -0
- package/dist/config/default-config.js +136 -0
- package/dist/config/default-config.js.map +1 -0
- package/dist/config/env.d.ts +6 -0
- package/dist/config/env.d.ts.map +1 -0
- package/dist/config/env.js +160 -0
- package/dist/config/env.js.map +1 -0
- package/dist/config/event-types.d.ts +5 -0
- package/dist/config/event-types.d.ts.map +1 -0
- package/dist/config/event-types.js +54 -0
- package/dist/config/event-types.js.map +1 -0
- package/dist/config/handler.d.ts +9 -0
- package/dist/config/handler.d.ts.map +1 -0
- package/dist/config/handler.js +17 -0
- package/dist/config/handler.js.map +1 -0
- package/dist/config/helpers.d.ts +5 -0
- package/dist/config/helpers.d.ts.map +1 -0
- package/dist/config/helpers.js +40 -0
- package/dist/config/helpers.js.map +1 -0
- package/dist/config/index.d.ts +3 -0
- package/dist/config/index.d.ts.map +1 -0
- package/dist/config/index.js +19 -0
- package/dist/config/index.js.map +1 -0
- package/dist/config/merge.d.ts +6 -0
- package/dist/config/merge.d.ts.map +1 -0
- package/dist/config/merge.js +108 -0
- package/dist/config/merge.js.map +1 -0
- package/dist/config/schema-hook-bridge.d.ts +594 -0
- package/dist/config/schema-hook-bridge.d.ts.map +1 -0
- package/dist/config/schema-hook-bridge.js +423 -0
- package/dist/config/schema-hook-bridge.js.map +1 -0
- package/dist/config/schema.d.ts +915 -0
- package/dist/config/schema.d.ts.map +1 -0
- package/dist/config/schema.js +323 -0
- package/dist/config/schema.js.map +1 -0
- package/dist/config/types.d.ts +9 -0
- package/dist/config/types.d.ts.map +1 -0
- package/dist/config/types.js +28 -0
- package/dist/config/types.js.map +1 -0
- package/dist/config/validate-hook-bridge.d.ts +3 -0
- package/dist/config/validate-hook-bridge.d.ts.map +1 -0
- package/dist/config/validate-hook-bridge.js +246 -0
- package/dist/config/validate-hook-bridge.js.map +1 -0
- package/dist/config/validate.d.ts +17 -0
- package/dist/config/validate.d.ts.map +1 -0
- package/dist/config/validate.js +194 -0
- package/dist/config/validate.js.map +1 -0
- package/dist/events/index.d.ts +4 -0
- package/dist/events/index.d.ts.map +1 -0
- package/dist/events/index.js +20 -0
- package/dist/events/index.js.map +1 -0
- package/dist/events/redaction.d.ts +5 -0
- package/dist/events/redaction.d.ts.map +1 -0
- package/dist/events/redaction.js +46 -0
- package/dist/events/redaction.js.map +1 -0
- package/dist/events/signing.d.ts +8 -0
- package/dist/events/signing.d.ts.map +1 -0
- package/dist/events/signing.js +35 -0
- package/dist/events/signing.js.map +1 -0
- package/dist/events/types.d.ts +125 -0
- package/dist/events/types.d.ts.map +1 -0
- package/dist/events/types.js +9 -0
- package/dist/events/types.js.map +1 -0
- package/dist/hooks/agent-hooks.d.ts +59 -0
- package/dist/hooks/agent-hooks.d.ts.map +1 -0
- package/dist/hooks/agent-hooks.js +116 -0
- package/dist/hooks/agent-hooks.js.map +1 -0
- package/dist/hooks/command-hooks.d.ts +13 -0
- package/dist/hooks/command-hooks.d.ts.map +1 -0
- package/dist/hooks/command-hooks.js +26 -0
- package/dist/hooks/command-hooks.js.map +1 -0
- package/dist/hooks/event-factory.d.ts +21 -0
- package/dist/hooks/event-factory.d.ts.map +1 -0
- package/dist/hooks/event-factory.js +31 -0
- package/dist/hooks/event-factory.js.map +1 -0
- package/dist/hooks/gateway-hooks.d.ts +14 -0
- package/dist/hooks/gateway-hooks.d.ts.map +1 -0
- package/dist/hooks/gateway-hooks.js +43 -0
- package/dist/hooks/gateway-hooks.js.map +1 -0
- package/dist/hooks/index.d.ts +10 -0
- package/dist/hooks/index.d.ts.map +1 -0
- package/dist/hooks/index.js +26 -0
- package/dist/hooks/index.js.map +1 -0
- package/dist/hooks/message-hooks.d.ts +33 -0
- package/dist/hooks/message-hooks.d.ts.map +1 -0
- package/dist/hooks/message-hooks.js +208 -0
- package/dist/hooks/message-hooks.js.map +1 -0
- package/dist/hooks/session-hooks.d.ts +89 -0
- package/dist/hooks/session-hooks.d.ts.map +1 -0
- package/dist/hooks/session-hooks.js +253 -0
- package/dist/hooks/session-hooks.js.map +1 -0
- package/dist/hooks/status-reducer.d.ts +30 -0
- package/dist/hooks/status-reducer.d.ts.map +1 -0
- package/dist/hooks/status-reducer.js +157 -0
- package/dist/hooks/status-reducer.js.map +1 -0
- package/dist/hooks/subagent-hooks.d.ts +37 -0
- package/dist/hooks/subagent-hooks.d.ts.map +1 -0
- package/dist/hooks/subagent-hooks.js +79 -0
- package/dist/hooks/subagent-hooks.js.map +1 -0
- package/dist/hooks/subagent-tracker.d.ts +33 -0
- package/dist/hooks/subagent-tracker.d.ts.map +1 -0
- package/dist/hooks/subagent-tracker.js +73 -0
- package/dist/hooks/subagent-tracker.js.map +1 -0
- package/dist/hooks/tool-hooks.d.ts +132 -0
- package/dist/hooks/tool-hooks.d.ts.map +1 -0
- package/dist/hooks/tool-hooks.js +215 -0
- package/dist/hooks/tool-hooks.js.map +1 -0
- package/dist/index.d.ts +929 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +236 -0
- package/dist/index.js.map +1 -0
- package/dist/logging/event-file-logger.d.ts +21 -0
- package/dist/logging/event-file-logger.d.ts.map +1 -0
- package/dist/logging/event-file-logger.js +167 -0
- package/dist/logging/event-file-logger.js.map +1 -0
- package/dist/logging/index.d.ts +3 -0
- package/dist/logging/index.d.ts.map +1 -0
- package/dist/logging/index.js +19 -0
- package/dist/logging/index.js.map +1 -0
- package/dist/logging/runtime-logger.d.ts +12 -0
- package/dist/logging/runtime-logger.d.ts.map +1 -0
- package/dist/logging/runtime-logger.js +45 -0
- package/dist/logging/runtime-logger.js.map +1 -0
- package/dist/runtime/hook-bridge-actions.d.ts +9 -0
- package/dist/runtime/hook-bridge-actions.d.ts.map +1 -0
- package/dist/runtime/hook-bridge-actions.js +248 -0
- package/dist/runtime/hook-bridge-actions.js.map +1 -0
- package/dist/runtime/hook-bridge-dispatch-engine.d.ts +42 -0
- package/dist/runtime/hook-bridge-dispatch-engine.d.ts.map +1 -0
- package/dist/runtime/hook-bridge-dispatch-engine.js +233 -0
- package/dist/runtime/hook-bridge-dispatch-engine.js.map +1 -0
- package/dist/runtime/hook-bridge-tool-guard.d.ts +16 -0
- package/dist/runtime/hook-bridge-tool-guard.d.ts.map +1 -0
- package/dist/runtime/hook-bridge-tool-guard.js +236 -0
- package/dist/runtime/hook-bridge-tool-guard.js.map +1 -0
- package/dist/runtime/hook-bridge-utils.d.ts +11 -0
- package/dist/runtime/hook-bridge-utils.d.ts.map +1 -0
- package/dist/runtime/hook-bridge-utils.js +116 -0
- package/dist/runtime/hook-bridge-utils.js.map +1 -0
- package/dist/runtime/hook-bridge.d.ts +33 -0
- package/dist/runtime/hook-bridge.d.ts.map +1 -0
- package/dist/runtime/hook-bridge.js +359 -0
- package/dist/runtime/hook-bridge.js.map +1 -0
- package/dist/runtime/internal-handlers.d.ts +20 -0
- package/dist/runtime/internal-handlers.d.ts.map +1 -0
- package/dist/runtime/internal-handlers.js +225 -0
- package/dist/runtime/internal-handlers.js.map +1 -0
- package/dist/runtime/register-gateway-hooks.d.ts +4 -0
- package/dist/runtime/register-gateway-hooks.d.ts.map +1 -0
- package/dist/runtime/register-gateway-hooks.js +27 -0
- package/dist/runtime/register-gateway-hooks.js.map +1 -0
- package/dist/runtime/register-session-hooks.d.ts +4 -0
- package/dist/runtime/register-session-hooks.d.ts.map +1 -0
- package/dist/runtime/register-session-hooks.js +88 -0
- package/dist/runtime/register-session-hooks.js.map +1 -0
- package/dist/runtime/register-subagent-hooks.d.ts +4 -0
- package/dist/runtime/register-subagent-hooks.d.ts.map +1 -0
- package/dist/runtime/register-subagent-hooks.js +143 -0
- package/dist/runtime/register-subagent-hooks.js.map +1 -0
- package/dist/runtime/register-tool-hooks.d.ts +4 -0
- package/dist/runtime/register-tool-hooks.d.ts.map +1 -0
- package/dist/runtime/register-tool-hooks.js +348 -0
- package/dist/runtime/register-tool-hooks.js.map +1 -0
- package/dist/runtime/runtime-events.d.ts +14 -0
- package/dist/runtime/runtime-events.d.ts.map +1 -0
- package/dist/runtime/runtime-events.js +166 -0
- package/dist/runtime/runtime-events.js.map +1 -0
- package/dist/runtime/typed-hooks.d.ts +9 -0
- package/dist/runtime/typed-hooks.d.ts.map +1 -0
- package/dist/runtime/typed-hooks.js +14 -0
- package/dist/runtime/typed-hooks.js.map +1 -0
- package/dist/runtime/types.d.ts +91 -0
- package/dist/runtime/types.d.ts.map +1 -0
- package/dist/runtime/types.js +3 -0
- package/dist/runtime/types.js.map +1 -0
- package/dist/runtime/utils.d.ts +47 -0
- package/dist/runtime/utils.d.ts.map +1 -0
- package/dist/runtime/utils.js +166 -0
- package/dist/runtime/utils.js.map +1 -0
- package/dist/tools/replay-tool-guard.d.ts +3 -0
- package/dist/tools/replay-tool-guard.d.ts.map +1 -0
- package/dist/tools/replay-tool-guard.js +96 -0
- package/dist/tools/replay-tool-guard.js.map +1 -0
- package/openclaw.plugin.json +847 -0
- package/package.json +63 -0
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { PluginConfig } from './config-types';
|
|
2
|
+
/**
|
|
3
|
+
* Validate configuration
|
|
4
|
+
*/
|
|
5
|
+
export declare function validateConfig(config: PluginConfig): {
|
|
6
|
+
valid: boolean;
|
|
7
|
+
errors: string[];
|
|
8
|
+
};
|
|
9
|
+
/**
|
|
10
|
+
* Resolve runtime-only config values (for example, loading HMAC secret from file).
|
|
11
|
+
*/
|
|
12
|
+
export declare function resolveRuntimeConfig(config: PluginConfig): PluginConfig;
|
|
13
|
+
/**
|
|
14
|
+
* Check if an event should be filtered out
|
|
15
|
+
*/
|
|
16
|
+
export declare function shouldFilterEvent(config: PluginConfig, eventType: string, channelId?: string, toolName?: string, sessionId?: string): boolean;
|
|
17
|
+
//# sourceMappingURL=validate.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.d.ts","sourceRoot":"","sources":["../../src/config/validate.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAE,MAAM,gBAAgB,CAAC;AAO9C;;GAEG;AACH,wBAAgB,cAAc,CAAC,MAAM,EAAE,YAAY,GAAG;IAAE,KAAK,EAAE,OAAO,CAAC;IAAC,MAAM,EAAE,MAAM,EAAE,CAAA;CAAE,CA6HzF;AAED;;GAEG;AACH,wBAAgB,oBAAoB,CAAC,MAAM,EAAE,YAAY,GAAG,YAAY,CAqCvE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,CAC/B,MAAM,EAAE,YAAY,EACpB,SAAS,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,EAClB,QAAQ,CAAC,EAAE,MAAM,EACjB,SAAS,CAAC,EAAE,MAAM,GACjB,OAAO,CA+BT"}
|
|
@@ -0,0 +1,194 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.validateConfig = validateConfig;
|
|
4
|
+
exports.resolveRuntimeConfig = resolveRuntimeConfig;
|
|
5
|
+
exports.shouldFilterEvent = shouldFilterEvent;
|
|
6
|
+
const event_types_1 = require("./event-types");
|
|
7
|
+
const helpers_1 = require("./helpers");
|
|
8
|
+
const validate_hook_bridge_1 = require("./validate-hook-bridge");
|
|
9
|
+
const node_os_1 = require("node:os");
|
|
10
|
+
const node_path_1 = require("node:path");
|
|
11
|
+
/**
|
|
12
|
+
* Validate configuration
|
|
13
|
+
*/
|
|
14
|
+
function validateConfig(config) {
|
|
15
|
+
const errors = [];
|
|
16
|
+
// Validate webhooks
|
|
17
|
+
if (config.webhooks && config.webhooks.length > 0) {
|
|
18
|
+
config.webhooks.forEach((webhook, index) => {
|
|
19
|
+
if (!webhook.url || webhook.url.trim() === '') {
|
|
20
|
+
errors.push(`Webhook ${index}: URL is required`);
|
|
21
|
+
}
|
|
22
|
+
else {
|
|
23
|
+
try {
|
|
24
|
+
const parsedUrl = new URL(webhook.url);
|
|
25
|
+
// Only allow http and https protocols for security
|
|
26
|
+
if (parsedUrl.protocol !== 'http:' && parsedUrl.protocol !== 'https:') {
|
|
27
|
+
errors.push(`Webhook ${index}: Only HTTP and HTTPS protocols are allowed`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
catch {
|
|
31
|
+
errors.push(`Webhook ${index}: Invalid URL format`);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
// Validate HTTP method if specified
|
|
35
|
+
if (webhook.method && !['POST', 'PUT', 'PATCH'].includes(webhook.method)) {
|
|
36
|
+
errors.push(`Webhook ${index}: Invalid HTTP method. Must be POST, PUT, or PATCH`);
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
// Validate retry config
|
|
41
|
+
if (config.retry.maxAttempts < 0 || config.retry.maxAttempts > 10) {
|
|
42
|
+
errors.push('Retry maxAttempts must be between 0 and 10');
|
|
43
|
+
}
|
|
44
|
+
if (config.retry.initialDelayMs < 100 || config.retry.initialDelayMs > 10000) {
|
|
45
|
+
errors.push('Retry initialDelayMs must be between 100 and 10000');
|
|
46
|
+
}
|
|
47
|
+
if (config.retry.maxDelayMs < 1000 || config.retry.maxDelayMs > 300000) {
|
|
48
|
+
errors.push('Retry maxDelayMs must be between 1000 and 300000');
|
|
49
|
+
}
|
|
50
|
+
if (config.retry.backoffMultiplier < 1 || config.retry.backoffMultiplier > 5) {
|
|
51
|
+
errors.push('Retry backoffMultiplier must be between 1 and 5');
|
|
52
|
+
}
|
|
53
|
+
// Validate queue config
|
|
54
|
+
if (config.queue.maxSize < 10 || config.queue.maxSize > 10000) {
|
|
55
|
+
errors.push('Queue maxSize must be between 10 and 10000');
|
|
56
|
+
}
|
|
57
|
+
if (config.queue.flushIntervalMs < 100 || config.queue.flushIntervalMs > 60000) {
|
|
58
|
+
errors.push('Queue flushIntervalMs must be between 100 and 60000');
|
|
59
|
+
}
|
|
60
|
+
// Validate synthetic status config
|
|
61
|
+
if (config.status.workingWindowMs < 1000 || config.status.workingWindowMs > 120000) {
|
|
62
|
+
errors.push('Status workingWindowMs must be between 1000 and 120000');
|
|
63
|
+
}
|
|
64
|
+
if (config.status.sleepingWindowMs < 10000 || config.status.sleepingWindowMs > 86400000) {
|
|
65
|
+
errors.push('Status sleepingWindowMs must be between 10000 and 86400000');
|
|
66
|
+
}
|
|
67
|
+
if (config.status.sleepingWindowMs <= config.status.workingWindowMs) {
|
|
68
|
+
errors.push('Status sleepingWindowMs must be greater than workingWindowMs');
|
|
69
|
+
}
|
|
70
|
+
if (config.status.tickIntervalMs < 1000 || config.status.tickIntervalMs > 60000) {
|
|
71
|
+
errors.push('Status tickIntervalMs must be between 1000 and 60000');
|
|
72
|
+
}
|
|
73
|
+
if (config.status.subagentIdleWindowMs < 10000 || config.status.subagentIdleWindowMs > 86400000) {
|
|
74
|
+
errors.push('Status subagentIdleWindowMs must be between 10000 and 86400000');
|
|
75
|
+
}
|
|
76
|
+
// Validate redaction config
|
|
77
|
+
if (!config.redaction.replacement || config.redaction.replacement.trim() === '') {
|
|
78
|
+
errors.push('Redaction replacement cannot be empty');
|
|
79
|
+
}
|
|
80
|
+
if (!Array.isArray(config.redaction.fields)) {
|
|
81
|
+
errors.push('Redaction fields must be an array');
|
|
82
|
+
}
|
|
83
|
+
else if (config.redaction.fields.some((field) => field.trim() === '')) {
|
|
84
|
+
errors.push('Redaction fields cannot contain empty values');
|
|
85
|
+
}
|
|
86
|
+
// Validate event log config
|
|
87
|
+
if (!config.eventLog.path || config.eventLog.path.trim() === '') {
|
|
88
|
+
errors.push('Event log path cannot be empty');
|
|
89
|
+
}
|
|
90
|
+
if (!['full-json', 'summary'].includes(config.eventLog.format)) {
|
|
91
|
+
errors.push('Event log format must be full-json or summary');
|
|
92
|
+
}
|
|
93
|
+
if (!['debug', 'info', 'warn', 'error'].includes(config.eventLog.minLevel)) {
|
|
94
|
+
errors.push('Event log minLevel must be debug, info, warn, or error');
|
|
95
|
+
}
|
|
96
|
+
if (config.eventLog.maxFileSizeMb < 1 || config.eventLog.maxFileSizeMb > 1024) {
|
|
97
|
+
errors.push('Event log maxFileSizeMb must be between 1 and 1024');
|
|
98
|
+
}
|
|
99
|
+
// Validate WS security config
|
|
100
|
+
if (!config.security.ws.bindAddress || config.security.ws.bindAddress.trim() === '') {
|
|
101
|
+
errors.push('Security ws.bindAddress cannot be empty');
|
|
102
|
+
}
|
|
103
|
+
if (config.security.ws.requireAuth && (!config.security.ws.authToken || config.security.ws.authToken.trim() === '')) {
|
|
104
|
+
errors.push('Security ws.authToken is required when ws.requireAuth is true');
|
|
105
|
+
}
|
|
106
|
+
// Validate HMAC config
|
|
107
|
+
if (config.security.hmac.enabled && (!config.security.hmac.secret || config.security.hmac.secret.trim() === '')) {
|
|
108
|
+
const secretFromFile = (0, helpers_1.loadSecretFromFile)(config.security.hmac.secretFilePath);
|
|
109
|
+
if (!secretFromFile) {
|
|
110
|
+
errors.push('Security hmac.secret or hmac.secretFilePath is required when hmac.enabled is true');
|
|
111
|
+
}
|
|
112
|
+
}
|
|
113
|
+
if (!['sha256', 'sha512'].includes(config.security.hmac.algorithm)) {
|
|
114
|
+
errors.push('Security hmac.algorithm must be sha256 or sha512');
|
|
115
|
+
}
|
|
116
|
+
// Validate timeout
|
|
117
|
+
if (config.webhookTimeoutMs < 1000 || config.webhookTimeoutMs > 60000) {
|
|
118
|
+
errors.push('Webhook timeout must be between 1000 and 60000 ms');
|
|
119
|
+
}
|
|
120
|
+
// Validate correlation ID header name
|
|
121
|
+
if (!config.correlationIdHeader || config.correlationIdHeader.trim() === '') {
|
|
122
|
+
errors.push('Correlation ID header name cannot be empty');
|
|
123
|
+
}
|
|
124
|
+
(0, validate_hook_bridge_1.validateHookBridgeConfig)(config, errors);
|
|
125
|
+
return {
|
|
126
|
+
valid: errors.length === 0,
|
|
127
|
+
errors,
|
|
128
|
+
};
|
|
129
|
+
}
|
|
130
|
+
/**
|
|
131
|
+
* Resolve runtime-only config values (for example, loading HMAC secret from file).
|
|
132
|
+
*/
|
|
133
|
+
function resolveRuntimeConfig(config) {
|
|
134
|
+
const resolveEventLogPath = (rawPath) => {
|
|
135
|
+
const trimmedPath = rawPath.trim();
|
|
136
|
+
if (trimmedPath === '' || (0, node_path_1.isAbsolute)(trimmedPath)) {
|
|
137
|
+
return rawPath;
|
|
138
|
+
}
|
|
139
|
+
const stateDir = process.env.OPENCLAW_STATE_DIR?.trim();
|
|
140
|
+
if (stateDir) {
|
|
141
|
+
return (0, node_path_1.resolve)(stateDir, trimmedPath);
|
|
142
|
+
}
|
|
143
|
+
const configPath = process.env.OPENCLAW_CONFIG_PATH?.trim();
|
|
144
|
+
if (configPath) {
|
|
145
|
+
return (0, node_path_1.resolve)((0, node_path_1.dirname)(configPath), trimmedPath);
|
|
146
|
+
}
|
|
147
|
+
return (0, node_path_1.resolve)((0, node_os_1.homedir)(), '.openclaw', trimmedPath);
|
|
148
|
+
};
|
|
149
|
+
const resolvedSecret = config.security.hmac.secret ?? (0, helpers_1.loadSecretFromFile)(config.security.hmac.secretFilePath);
|
|
150
|
+
return {
|
|
151
|
+
...config,
|
|
152
|
+
eventLog: {
|
|
153
|
+
...config.eventLog,
|
|
154
|
+
path: resolveEventLogPath(config.eventLog.path),
|
|
155
|
+
},
|
|
156
|
+
security: {
|
|
157
|
+
...config.security,
|
|
158
|
+
hmac: {
|
|
159
|
+
...config.security.hmac,
|
|
160
|
+
...(resolvedSecret ? { secret: resolvedSecret } : {}),
|
|
161
|
+
},
|
|
162
|
+
},
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Check if an event should be filtered out
|
|
167
|
+
*/
|
|
168
|
+
function shouldFilterEvent(config, eventType, channelId, toolName, sessionId) {
|
|
169
|
+
const { filters } = config;
|
|
170
|
+
// Check exclude types first
|
|
171
|
+
if ((0, event_types_1.isEventType)(eventType) && filters.excludeTypes?.includes(eventType)) {
|
|
172
|
+
return true;
|
|
173
|
+
}
|
|
174
|
+
// Check include types (if specified, only these are allowed)
|
|
175
|
+
if (filters.includeTypes?.length) {
|
|
176
|
+
if (!(0, event_types_1.isEventType)(eventType) || !filters.includeTypes.includes(eventType)) {
|
|
177
|
+
return true;
|
|
178
|
+
}
|
|
179
|
+
}
|
|
180
|
+
// Check channel filter
|
|
181
|
+
if (filters.channelId && filters.channelId !== channelId) {
|
|
182
|
+
return true;
|
|
183
|
+
}
|
|
184
|
+
// Check tool name filter
|
|
185
|
+
if (filters.toolName && filters.toolName !== toolName) {
|
|
186
|
+
return true;
|
|
187
|
+
}
|
|
188
|
+
// Check session filter
|
|
189
|
+
if (filters.sessionId && filters.sessionId !== sessionId) {
|
|
190
|
+
return true;
|
|
191
|
+
}
|
|
192
|
+
return false;
|
|
193
|
+
}
|
|
194
|
+
//# sourceMappingURL=validate.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"validate.js","sourceRoot":"","sources":["../../src/config/validate.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":"AAAA,cAAc,SAAS,CAAC;AACxB,cAAc,aAAa,CAAC;AAC5B,cAAc,WAAW,CAAC"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
|
|
3
|
+
if (k2 === undefined) k2 = k;
|
|
4
|
+
var desc = Object.getOwnPropertyDescriptor(m, k);
|
|
5
|
+
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
|
|
6
|
+
desc = { enumerable: true, get: function() { return m[k]; } };
|
|
7
|
+
}
|
|
8
|
+
Object.defineProperty(o, k2, desc);
|
|
9
|
+
}) : (function(o, m, k, k2) {
|
|
10
|
+
if (k2 === undefined) k2 = k;
|
|
11
|
+
o[k2] = m[k];
|
|
12
|
+
}));
|
|
13
|
+
var __exportStar = (this && this.__exportStar) || function(m, exports) {
|
|
14
|
+
for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
|
|
15
|
+
};
|
|
16
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
17
|
+
__exportStar(require("./types"), exports);
|
|
18
|
+
__exportStar(require("./redaction"), exports);
|
|
19
|
+
__exportStar(require("./signing"), exports);
|
|
20
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/events/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,0CAAwB;AACxB,8CAA4B;AAC5B,4CAA0B"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { RedactionConfig } from '../config/types';
|
|
2
|
+
import { OpenClawEvent } from './types';
|
|
3
|
+
export declare function redactPayload<T>(payload: T, config: Pick<RedactionConfig, 'enabled' | 'replacement' | 'fields'>): T;
|
|
4
|
+
export declare function redactEvent(event: OpenClawEvent, config: RedactionConfig): OpenClawEvent;
|
|
5
|
+
//# sourceMappingURL=redaction.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redaction.d.ts","sourceRoot":"","sources":["../../src/events/redaction.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,MAAM,iBAAiB,CAAC;AAClD,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAwCxC,wBAAgB,aAAa,CAAC,CAAC,EAC7B,OAAO,EAAE,CAAC,EACV,MAAM,EAAE,IAAI,CAAC,eAAe,EAAE,SAAS,GAAG,aAAa,GAAG,QAAQ,CAAC,GAClE,CAAC,CAYH;AAED,wBAAgB,WAAW,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,eAAe,GAAG,aAAa,CAExF"}
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.redactPayload = redactPayload;
|
|
4
|
+
exports.redactEvent = redactEvent;
|
|
5
|
+
function isRecord(value) {
|
|
6
|
+
return typeof value === 'object' && value !== null;
|
|
7
|
+
}
|
|
8
|
+
function normalizeFieldSet(fields) {
|
|
9
|
+
return new Set(fields.map((field) => field.trim().toLowerCase()).filter(Boolean));
|
|
10
|
+
}
|
|
11
|
+
function redactValue(value, sensitiveFields, replacement, seen) {
|
|
12
|
+
if (Array.isArray(value)) {
|
|
13
|
+
return value.map((item) => redactValue(item, sensitiveFields, replacement, seen));
|
|
14
|
+
}
|
|
15
|
+
if (!isRecord(value)) {
|
|
16
|
+
return value;
|
|
17
|
+
}
|
|
18
|
+
if (seen.has(value)) {
|
|
19
|
+
return replacement;
|
|
20
|
+
}
|
|
21
|
+
seen.add(value);
|
|
22
|
+
const redacted = {};
|
|
23
|
+
for (const [key, nestedValue] of Object.entries(value)) {
|
|
24
|
+
if (sensitiveFields.has(key.toLowerCase())) {
|
|
25
|
+
redacted[key] = replacement;
|
|
26
|
+
continue;
|
|
27
|
+
}
|
|
28
|
+
redacted[key] = redactValue(nestedValue, sensitiveFields, replacement, seen);
|
|
29
|
+
}
|
|
30
|
+
return redacted;
|
|
31
|
+
}
|
|
32
|
+
function redactPayload(payload, config) {
|
|
33
|
+
if (!config.enabled) {
|
|
34
|
+
return payload;
|
|
35
|
+
}
|
|
36
|
+
const sensitiveFields = normalizeFieldSet(config.fields);
|
|
37
|
+
if (sensitiveFields.size === 0) {
|
|
38
|
+
return payload;
|
|
39
|
+
}
|
|
40
|
+
const redacted = redactValue(payload, sensitiveFields, config.replacement, new WeakSet());
|
|
41
|
+
return redacted;
|
|
42
|
+
}
|
|
43
|
+
function redactEvent(event, config) {
|
|
44
|
+
return redactPayload(event, config);
|
|
45
|
+
}
|
|
46
|
+
//# sourceMappingURL=redaction.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"redaction.js","sourceRoot":"","sources":["../../src/events/redaction.ts"],"names":[],"mappings":";;AAyCA,sCAeC;AAED,kCAEC;AAzDD,SAAS,QAAQ,CAAC,KAAc;IAC9B,OAAO,OAAO,KAAK,KAAK,QAAQ,IAAI,KAAK,KAAK,IAAI,CAAC;AACrD,CAAC;AAED,SAAS,iBAAiB,CAAC,MAAgB;IACzC,OAAO,IAAI,GAAG,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,KAAK,CAAC,IAAI,EAAE,CAAC,WAAW,EAAE,CAAC,CAAC,MAAM,CAAC,OAAO,CAAC,CAAC,CAAC;AACpF,CAAC;AAED,SAAS,WAAW,CAClB,KAAc,EACd,eAA4B,EAC5B,WAAmB,EACnB,IAAqB;IAErB,IAAI,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACzB,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,WAAW,CAAC,IAAI,EAAE,eAAe,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC,CAAC;IACpF,CAAC;IAED,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,EAAE,CAAC;QACrB,OAAO,KAAK,CAAC;IACf,CAAC;IAED,IAAI,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC;QACpB,OAAO,WAAW,CAAC;IACrB,CAAC;IACD,IAAI,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC;IAEhB,MAAM,QAAQ,GAA4B,EAAE,CAAC;IAC7C,KAAK,MAAM,CAAC,GAAG,EAAE,WAAW,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,KAAK,CAAC,EAAE,CAAC;QACvD,IAAI,eAAe,CAAC,GAAG,CAAC,GAAG,CAAC,WAAW,EAAE,CAAC,EAAE,CAAC;YAC3C,QAAQ,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC;YAC5B,SAAS;QACX,CAAC;QACD,QAAQ,CAAC,GAAG,CAAC,GAAG,WAAW,CAAC,WAAW,EAAE,eAAe,EAAE,WAAW,EAAE,IAAI,CAAC,CAAC;IAC/E,CAAC;IACD,OAAO,QAAQ,CAAC;AAClB,CAAC;AAED,SAAgB,aAAa,CAC3B,OAAU,EACV,MAAmE;IAEnE,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,eAAe,GAAG,iBAAiB,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACzD,IAAI,eAAe,CAAC,IAAI,KAAK,CAAC,EAAE,CAAC;QAC/B,OAAO,OAAO,CAAC;IACjB,CAAC;IAED,MAAM,QAAQ,GAAG,WAAW,CAAC,OAAO,EAAE,eAAe,EAAE,MAAM,CAAC,WAAW,EAAE,IAAI,OAAO,EAAU,CAAC,CAAC;IAClG,OAAO,QAAa,CAAC;AACvB,CAAC;AAED,SAAgB,WAAW,CAAC,KAAoB,EAAE,MAAuB;IACvE,OAAO,aAAa,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;AACtC,CAAC"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { OpenClawEvent } from './types';
|
|
2
|
+
export type HmacConfig = {
|
|
3
|
+
enabled: boolean;
|
|
4
|
+
secret?: string;
|
|
5
|
+
algorithm: 'sha256' | 'sha512';
|
|
6
|
+
};
|
|
7
|
+
export declare function signEvent(event: OpenClawEvent, config: HmacConfig): OpenClawEvent;
|
|
8
|
+
//# sourceMappingURL=signing.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signing.d.ts","sourceRoot":"","sources":["../../src/events/signing.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAC;AAExC,MAAM,MAAM,UAAU,GAAG;IACvB,OAAO,EAAE,OAAO,CAAC;IACjB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,SAAS,EAAE,QAAQ,GAAG,QAAQ,CAAC;CAChC,CAAC;AAcF,wBAAgB,SAAS,CAAC,KAAK,EAAE,aAAa,EAAE,MAAM,EAAE,UAAU,GAAG,aAAa,CAoBjF"}
|
|
@@ -0,0 +1,35 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.signEvent = signEvent;
|
|
4
|
+
const node_crypto_1 = require("node:crypto");
|
|
5
|
+
function toSignablePayload(event, timestamp, nonce) {
|
|
6
|
+
const payload = {
|
|
7
|
+
...event,
|
|
8
|
+
signature: undefined,
|
|
9
|
+
};
|
|
10
|
+
return JSON.stringify({
|
|
11
|
+
timestamp,
|
|
12
|
+
nonce,
|
|
13
|
+
payload,
|
|
14
|
+
});
|
|
15
|
+
}
|
|
16
|
+
function signEvent(event, config) {
|
|
17
|
+
if (!config.enabled || !config.secret) {
|
|
18
|
+
return event;
|
|
19
|
+
}
|
|
20
|
+
const timestamp = Math.floor(Date.now() / 1000);
|
|
21
|
+
const nonce = (0, node_crypto_1.randomUUID)();
|
|
22
|
+
const raw = toSignablePayload(event, timestamp, nonce);
|
|
23
|
+
const value = (0, node_crypto_1.createHmac)(config.algorithm, config.secret).update(raw).digest('hex');
|
|
24
|
+
return {
|
|
25
|
+
...event,
|
|
26
|
+
signature: {
|
|
27
|
+
version: 'v1',
|
|
28
|
+
algorithm: config.algorithm,
|
|
29
|
+
timestamp,
|
|
30
|
+
nonce,
|
|
31
|
+
value,
|
|
32
|
+
},
|
|
33
|
+
};
|
|
34
|
+
}
|
|
35
|
+
//# sourceMappingURL=signing.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"signing.js","sourceRoot":"","sources":["../../src/events/signing.ts"],"names":[],"mappings":";;AAqBA,8BAoBC;AAzCD,6CAAqD;AASrD,SAAS,iBAAiB,CAAC,KAAoB,EAAE,SAAiB,EAAE,KAAa;IAC/E,MAAM,OAAO,GAAG;QACd,GAAG,KAAK;QACR,SAAS,EAAE,SAAS;KACrB,CAAC;IACF,OAAO,IAAI,CAAC,SAAS,CAAC;QACpB,SAAS;QACT,KAAK;QACL,OAAO;KACR,CAAC,CAAC;AACL,CAAC;AAED,SAAgB,SAAS,CAAC,KAAoB,EAAE,MAAkB;IAChE,IAAI,CAAC,MAAM,CAAC,OAAO,IAAI,CAAC,MAAM,CAAC,MAAM,EAAE,CAAC;QACtC,OAAO,KAAK,CAAC;IACf,CAAC;IAED,MAAM,SAAS,GAAG,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE,GAAG,IAAI,CAAC,CAAC;IAChD,MAAM,KAAK,GAAG,IAAA,wBAAU,GAAE,CAAC;IAC3B,MAAM,GAAG,GAAG,iBAAiB,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,CAAC,CAAC;IACvD,MAAM,KAAK,GAAG,IAAA,wBAAU,EAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;IAEpF,OAAO;QACL,GAAG,KAAK;QACR,SAAS,EAAE;YACT,OAAO,EAAE,IAAI;YACb,SAAS,EAAE,MAAM,CAAC,SAAS;YAC3B,SAAS;YACT,KAAK;YACL,KAAK;SACN;KACF,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Canonical event type definitions for OpenClaw Event Server Plugin.
|
|
3
|
+
*
|
|
4
|
+
* The server broadcasts raw hook/plugin events with minimal transformation plus
|
|
5
|
+
* optional synthetic status/activity events.
|
|
6
|
+
*/
|
|
7
|
+
export type EventCategory = 'message' | 'tool' | 'command' | 'session' | 'agent' | 'gateway' | 'subagent' | 'synthetic';
|
|
8
|
+
export type EventSource = 'internal-hook' | 'plugin-hook' | 'synthetic';
|
|
9
|
+
export type EventType = 'message.received' | 'message.transcribed' | 'message.preprocessed' | 'message.sent' | 'message.edited' | 'message.deleted' | 'tool.called' | 'tool.guard.matched' | 'tool.guard.allowed' | 'tool.guard.blocked' | 'tool.completed' | 'tool.error' | 'tool.result_persist' | 'command.new' | 'command.reset' | 'command.stop' | 'session.start' | 'session.end' | 'subagent.spawning' | 'subagent.spawned' | 'subagent.ended' | 'subagent.idle' | 'agent.bootstrap' | 'agent.error' | 'agent.session_start' | 'agent.session_end' | 'agent.sub_agent_spawn' | 'agent.status' | 'agent.activity' | 'gateway.startup' | 'gateway.start' | 'gateway.stop' | 'session.spawned' | 'session.completed' | 'session.error';
|
|
10
|
+
export type AgentSyntheticStatus = 'sleeping' | 'idle' | 'working' | 'offline' | 'error';
|
|
11
|
+
export interface EventError {
|
|
12
|
+
message: string;
|
|
13
|
+
code?: string;
|
|
14
|
+
stack?: string;
|
|
15
|
+
kind?: 'tool' | 'agent' | 'gateway' | 'unknown';
|
|
16
|
+
}
|
|
17
|
+
export interface EventSignature {
|
|
18
|
+
version: 'v1';
|
|
19
|
+
algorithm: 'sha256' | 'sha512';
|
|
20
|
+
timestamp: number;
|
|
21
|
+
nonce: string;
|
|
22
|
+
value: string;
|
|
23
|
+
}
|
|
24
|
+
export interface OpenClawEvent {
|
|
25
|
+
/** Unique event ID */
|
|
26
|
+
eventId: string;
|
|
27
|
+
/** Canonical event schema version */
|
|
28
|
+
schemaVersion: string;
|
|
29
|
+
/** Legacy/primary type identifier for consumers */
|
|
30
|
+
type: EventType;
|
|
31
|
+
/** Canonical grouping for downstream filtering */
|
|
32
|
+
eventCategory?: EventCategory;
|
|
33
|
+
/** Original source event key name */
|
|
34
|
+
eventName?: string;
|
|
35
|
+
/** Where this event originated */
|
|
36
|
+
source?: EventSource;
|
|
37
|
+
/** Timestamp when event occurred */
|
|
38
|
+
timestamp: string;
|
|
39
|
+
/** Agent identifiers when known */
|
|
40
|
+
agentId?: string;
|
|
41
|
+
agentName?: string;
|
|
42
|
+
/** Session identifiers when known */
|
|
43
|
+
sessionId?: string;
|
|
44
|
+
sessionKey?: string;
|
|
45
|
+
sessionName?: string;
|
|
46
|
+
/** Run/tool correlation identifiers */
|
|
47
|
+
runId?: string;
|
|
48
|
+
toolCallId?: string;
|
|
49
|
+
correlationId?: string;
|
|
50
|
+
/** Result/error fields for completion/error events */
|
|
51
|
+
result?: unknown;
|
|
52
|
+
error?: EventError;
|
|
53
|
+
/** Plugin version that generated this event */
|
|
54
|
+
pluginVersion: string;
|
|
55
|
+
/** Optional cryptographic signature when HMAC signing is enabled */
|
|
56
|
+
signature?: EventSignature;
|
|
57
|
+
/** Raw normalized event payload */
|
|
58
|
+
data: Record<string, unknown>;
|
|
59
|
+
/** Additional metadata/debug fields */
|
|
60
|
+
metadata?: Record<string, unknown>;
|
|
61
|
+
}
|
|
62
|
+
export type MessageEvent = OpenClawEvent;
|
|
63
|
+
export type ToolEvent = OpenClawEvent;
|
|
64
|
+
export type SessionEvent = OpenClawEvent;
|
|
65
|
+
export type AgentEvent = OpenClawEvent;
|
|
66
|
+
export type CommandEvent = OpenClawEvent;
|
|
67
|
+
export type GatewayEvent = OpenClawEvent;
|
|
68
|
+
export type SubagentEvent = OpenClawEvent;
|
|
69
|
+
/**
|
|
70
|
+
* Webhook configuration for broadcasting
|
|
71
|
+
*/
|
|
72
|
+
export interface WebhookConfig {
|
|
73
|
+
/** Webhook URL */
|
|
74
|
+
url: string;
|
|
75
|
+
/** HTTP method (default: POST) */
|
|
76
|
+
method?: 'POST' | 'PUT' | 'PATCH';
|
|
77
|
+
/** Custom headers */
|
|
78
|
+
headers?: Record<string, string>;
|
|
79
|
+
/** Authentication token (optional) */
|
|
80
|
+
authToken?: string;
|
|
81
|
+
/** Whether to include full event payload */
|
|
82
|
+
includeFullPayload?: boolean;
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Event filter configuration
|
|
86
|
+
*/
|
|
87
|
+
export interface EventFilter {
|
|
88
|
+
/** Event types to include (empty = all) */
|
|
89
|
+
includeTypes?: EventType[];
|
|
90
|
+
/** Event types to exclude */
|
|
91
|
+
excludeTypes?: EventType[];
|
|
92
|
+
/** Filter by channel ID */
|
|
93
|
+
channelId?: string;
|
|
94
|
+
/** Filter by tool name */
|
|
95
|
+
toolName?: string;
|
|
96
|
+
/** Filter by session ID */
|
|
97
|
+
sessionId?: string;
|
|
98
|
+
}
|
|
99
|
+
/**
|
|
100
|
+
* Retry configuration
|
|
101
|
+
*/
|
|
102
|
+
export interface RetryConfig {
|
|
103
|
+
/** Maximum retry attempts */
|
|
104
|
+
maxAttempts: number;
|
|
105
|
+
/** Initial delay in milliseconds */
|
|
106
|
+
initialDelayMs: number;
|
|
107
|
+
/** Maximum delay in milliseconds */
|
|
108
|
+
maxDelayMs: number;
|
|
109
|
+
/** Backoff multiplier */
|
|
110
|
+
backoffMultiplier: number;
|
|
111
|
+
}
|
|
112
|
+
/**
|
|
113
|
+
* Queue configuration
|
|
114
|
+
*/
|
|
115
|
+
export interface QueueConfig {
|
|
116
|
+
/** Maximum queue size */
|
|
117
|
+
maxSize: number;
|
|
118
|
+
/** Flush interval in milliseconds */
|
|
119
|
+
flushIntervalMs: number;
|
|
120
|
+
/** Whether to persist queue to disk */
|
|
121
|
+
persistToDisk: boolean;
|
|
122
|
+
/** Queue file path (if persisting) */
|
|
123
|
+
persistPath?: string;
|
|
124
|
+
}
|
|
125
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/events/types.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,9 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Canonical event type definitions for OpenClaw Event Server Plugin.
|
|
4
|
+
*
|
|
5
|
+
* The server broadcasts raw hook/plugin events with minimal transformation plus
|
|
6
|
+
* optional synthetic status/activity events.
|
|
7
|
+
*/
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
//# sourceMappingURL=types.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/events/types.ts"],"names":[],"mappings":";AAAA;;;;;GAKG"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent event builders.
|
|
3
|
+
*/
|
|
4
|
+
import { AgentEvent, AgentSyntheticStatus, EventType } from '../events/types';
|
|
5
|
+
export declare function createAgentStatusEvent(context: {
|
|
6
|
+
agentId: string;
|
|
7
|
+
status: AgentSyntheticStatus;
|
|
8
|
+
activity?: string;
|
|
9
|
+
activityDetail?: string;
|
|
10
|
+
sessionId?: string;
|
|
11
|
+
sessionKey?: string;
|
|
12
|
+
correlationId?: string;
|
|
13
|
+
sourceEventType?: EventType;
|
|
14
|
+
metadata?: Record<string, unknown>;
|
|
15
|
+
}): AgentEvent;
|
|
16
|
+
export declare function createAgentActivityEvent(context: {
|
|
17
|
+
agentId: string;
|
|
18
|
+
activity: string;
|
|
19
|
+
activityDetail?: string;
|
|
20
|
+
sessionId?: string;
|
|
21
|
+
sessionKey?: string;
|
|
22
|
+
correlationId?: string;
|
|
23
|
+
sourceEventType?: EventType;
|
|
24
|
+
toolName?: string;
|
|
25
|
+
toolStatus?: 'called' | 'completed' | 'error';
|
|
26
|
+
metadata?: Record<string, unknown>;
|
|
27
|
+
}): AgentEvent;
|
|
28
|
+
export declare function createAgentBootstrapEvent(context: {
|
|
29
|
+
sessionId?: string;
|
|
30
|
+
sessionKey?: string;
|
|
31
|
+
agentId?: string;
|
|
32
|
+
data?: Record<string, unknown>;
|
|
33
|
+
}): AgentEvent;
|
|
34
|
+
export declare function createAgentErrorEvent(context: {
|
|
35
|
+
sessionId?: string;
|
|
36
|
+
sessionKey?: string;
|
|
37
|
+
agentId?: string;
|
|
38
|
+
error: string;
|
|
39
|
+
stack?: string;
|
|
40
|
+
data?: Record<string, unknown>;
|
|
41
|
+
}): AgentEvent;
|
|
42
|
+
export declare function createAgentSessionEvent(context: {
|
|
43
|
+
type: 'agent.session_start' | 'agent.session_end';
|
|
44
|
+
sessionId?: string;
|
|
45
|
+
sessionKey?: string;
|
|
46
|
+
agentId?: string;
|
|
47
|
+
data?: Record<string, unknown>;
|
|
48
|
+
}): AgentEvent;
|
|
49
|
+
export declare function createAgentSubAgentSpawnEvent(context: {
|
|
50
|
+
parentAgentId?: string;
|
|
51
|
+
childAgentId?: string;
|
|
52
|
+
parentSessionId?: string;
|
|
53
|
+
parentSessionKey?: string;
|
|
54
|
+
childSessionKey?: string;
|
|
55
|
+
runId?: string;
|
|
56
|
+
mode?: string;
|
|
57
|
+
data?: Record<string, unknown>;
|
|
58
|
+
}): AgentEvent;
|
|
59
|
+
//# sourceMappingURL=agent-hooks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"agent-hooks.d.ts","sourceRoot":"","sources":["../../src/hooks/agent-hooks.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,UAAU,EAAE,oBAAoB,EAAE,SAAS,EAAE,MAAM,iBAAiB,CAAC;AAG9E,wBAAgB,sBAAsB,CAAC,OAAO,EAAE;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,EAAE,oBAAoB,CAAC;IAC7B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,SAAS,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,GAAG,UAAU,CAmBb;AAED,wBAAgB,wBAAwB,CAAC,OAAO,EAAE;IAChD,OAAO,EAAE,MAAM,CAAC;IAChB,QAAQ,EAAE,MAAM,CAAC;IACjB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,eAAe,CAAC,EAAE,SAAS,CAAC;IAC5B,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,UAAU,CAAC,EAAE,QAAQ,GAAG,WAAW,GAAG,OAAO,CAAC;IAC9C,QAAQ,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CACpC,GAAG,UAAU,CAoBb;AAED,wBAAgB,yBAAyB,CAAC,OAAO,EAAE;IACjD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC,GAAG,UAAU,CAWb;AAED,wBAAgB,qBAAqB,CAAC,OAAO,EAAE;IAC7C,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,EAAE,MAAM,CAAC;IACd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC,GAAG,UAAU,CAgBb;AAED,wBAAgB,uBAAuB,CAAC,OAAO,EAAE;IAC/C,IAAI,EAAE,qBAAqB,GAAG,mBAAmB,CAAC;IAClD,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC,GAAG,UAAU,CAWb;AAED,wBAAgB,6BAA6B,CAAC,OAAO,EAAE;IACrD,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,YAAY,CAAC,EAAE,MAAM,CAAC;IACtB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAC1B,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IACd,IAAI,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;CAChC,GAAG,UAAU,CAoBb"}
|