strray-ai 1.22.21 → 1.22.23
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/.opencode/codex.codex +1 -1
- package/.opencode/enforcer-config.json +2 -2
- package/.opencode/skills/registry.json +1 -1
- package/.opencode/strray/codex.json +1 -1
- package/.opencode/strray/config.json +1 -1
- package/.opencode/strray/features.json +1 -1
- package/.opencode/strray/integrations.json +3 -3
- package/.strray/codex.json +1 -1
- package/.strray/config.json +1 -1
- package/.strray/features.json +1 -1
- package/.strray/integrations.json +3 -3
- package/dist/CHANGELOG.md +17 -0
- package/dist/analytics/routing-refiner.js +1 -1
- package/dist/core/boot-orchestrator.js +1 -1
- package/dist/core/features-config.js +1 -1
- package/dist/index.d.ts +2 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -0
- package/dist/index.js.map +1 -1
- package/dist/integrations/openclaw/api-server.d.ts +86 -0
- package/dist/integrations/openclaw/api-server.d.ts.map +1 -0
- package/dist/integrations/openclaw/api-server.js +339 -0
- package/dist/integrations/openclaw/api-server.js.map +1 -0
- package/dist/integrations/openclaw/client.d.ts +120 -0
- package/dist/integrations/openclaw/client.d.ts.map +1 -0
- package/dist/integrations/openclaw/client.js +447 -0
- package/dist/integrations/openclaw/client.js.map +1 -0
- package/dist/integrations/openclaw/config.d.ts +97 -0
- package/dist/integrations/openclaw/config.d.ts.map +1 -0
- package/dist/integrations/openclaw/config.js +375 -0
- package/dist/integrations/openclaw/config.js.map +1 -0
- package/dist/integrations/openclaw/hooks/strray-hooks.d.ts +125 -0
- package/dist/integrations/openclaw/hooks/strray-hooks.d.ts.map +1 -0
- package/dist/integrations/openclaw/hooks/strray-hooks.js +281 -0
- package/dist/integrations/openclaw/hooks/strray-hooks.js.map +1 -0
- package/dist/integrations/openclaw/index.d.ts +102 -0
- package/dist/integrations/openclaw/index.d.ts.map +1 -0
- package/dist/integrations/openclaw/index.js +340 -0
- package/dist/integrations/openclaw/index.js.map +1 -0
- package/dist/integrations/openclaw/types.d.ts +427 -0
- package/dist/integrations/openclaw/types.d.ts.map +1 -0
- package/dist/integrations/openclaw/types.js +154 -0
- package/dist/integrations/openclaw/types.js.map +1 -0
- package/dist/mcps/architect-tools.server.js +1 -1
- package/dist/mcps/auto-format.server.js +1 -1
- package/dist/mcps/boot-orchestrator.server.js +1 -1
- package/dist/mcps/enforcer-tools.server.js +1 -1
- package/dist/mcps/estimation.server.js +1 -1
- package/dist/mcps/framework-compliance-audit.server.js +1 -1
- package/dist/mcps/framework-help.server.js +1 -1
- package/dist/mcps/knowledge-skills/api-design.server.js +1 -1
- package/dist/mcps/knowledge-skills/architecture-patterns.server.js +1 -1
- package/dist/mcps/knowledge-skills/bug-triage-specialist.server.js +1 -1
- package/dist/mcps/knowledge-skills/code-analyzer.server.js +1 -1
- package/dist/mcps/knowledge-skills/code-review.server.js +1 -1
- package/dist/mcps/knowledge-skills/content-creator.server.js +1 -1
- package/dist/mcps/knowledge-skills/database-design.server.js +1 -1
- package/dist/mcps/knowledge-skills/devops-deployment.server.js +1 -1
- package/dist/mcps/knowledge-skills/git-workflow.server.js +1 -1
- package/dist/mcps/knowledge-skills/growth-strategist.server.js +1 -1
- package/dist/mcps/knowledge-skills/log-monitor.server.js +1 -1
- package/dist/mcps/knowledge-skills/mobile-development.server.js +1 -1
- package/dist/mcps/knowledge-skills/multimodal-looker.server.js +1 -1
- package/dist/mcps/knowledge-skills/performance-optimization.server.js +1 -1
- package/dist/mcps/knowledge-skills/project-analysis.server.js +1 -1
- package/dist/mcps/knowledge-skills/refactoring-strategies.server.js +1 -1
- package/dist/mcps/knowledge-skills/security-audit.server.js +1 -1
- package/dist/mcps/knowledge-skills/seo-consultant.server.js +1 -1
- package/dist/mcps/knowledge-skills/session-management.server.js +1 -1
- package/dist/mcps/knowledge-skills/skill-invocation.server.js +1 -1
- package/dist/mcps/knowledge-skills/strategist.server.js +1 -1
- package/dist/mcps/knowledge-skills/tech-writer.server.js +2 -2
- package/dist/mcps/knowledge-skills/testing-best-practices.server.js +1 -1
- package/dist/mcps/knowledge-skills/testing-strategy.server.js +1 -1
- package/dist/mcps/knowledge-skills/ui-ux-design.server.js +1 -1
- package/dist/mcps/lint.server.js +1 -1
- package/dist/mcps/model-health-check.server.js +1 -1
- package/dist/mcps/performance-analysis.server.js +1 -1
- package/dist/mcps/processor-pipeline.server.js +1 -1
- package/dist/mcps/registry.json +1 -1
- package/dist/mcps/researcher.server.js +1 -1
- package/dist/mcps/security-scan.server.js +1 -1
- package/dist/mcps/state-manager.server.js +1 -1
- package/dist/orchestrator/universal-registry-bridge.js +1 -1
- package/dist/skills/registry.json +1 -1
- package/package.json +1 -1
- package/scripts/node/universal-version-manager.js +3 -3
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/integrations/openclaw/config.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAKH,OAAO,EACL,yBAAyB,EACzB,sBAAsB,EAGvB,MAAM,YAAY,CAAC;AAwCpB;;GAEG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAA0C;IACxD,OAAO,CAAC,UAAU,CAAS;IAC3B,OAAO,CAAC,QAAQ,CAAa;gBAEjB,UAAU,CAAC,EAAE,MAAM;IAK/B;;OAEG;IACH,IAAI,IAAI,yBAAyB;IAoCjC;;OAEG;IACH,MAAM,IAAI,yBAAyB;IAMnC;;OAEG;IACH,SAAS,IAAI,yBAAyB;IAOtC;;OAEG;IACH,YAAY,IAAI,MAAM;IAKtB;;OAEG;IACH,WAAW,CAAC,QAAQ,GAAE,MAAc,GAAG,OAAO;IAI9C;;OAEG;IACH,OAAO,CAAC,yBAAyB;IA2CjC;;OAEG;IACH,OAAO,CAAC,iBAAiB;IAqCzB;;OAEG;IACH,cAAc,CAAC,MAAM,EAAE,yBAAyB,GAAG,sBAAsB;IAkGzE;;OAEG;IACH,aAAa,IAAI,MAAM;IAIvB;;OAEG;IACH,YAAY,IAAI,OAAO;IAIvB;;OAEG;IACH,kBAAkB,IAAI,IAAI;IA0C1B;;OAEG;IACH,kBAAkB;;;;;;IAKlB;;OAEG;IACH,cAAc;;;;;;;;IAKd;;OAEG;IACH,SAAS,IAAI,OAAO;IAIpB;;OAEG;IACH,kBAAkB,IAAI,OAAO;IAI7B;;OAEG;IACH,eAAe,IAAI,OAAO;CAI3B;AAGD,eAAO,MAAM,YAAY,sBAA6B,CAAC;AAGvD,wBAAgB,kBAAkB,CAAC,UAAU,CAAC,EAAE,MAAM,GAAG,oBAAoB,CAE5E"}
|
|
@@ -0,0 +1,375 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenClaw Configuration Loader
|
|
3
|
+
*
|
|
4
|
+
* Handles loading, validation, and management of OpenClaw integration configuration.
|
|
5
|
+
*
|
|
6
|
+
* @version 1.0.0
|
|
7
|
+
* @since 2026-03-14
|
|
8
|
+
*/
|
|
9
|
+
import * as fs from 'fs';
|
|
10
|
+
import * as path from 'path';
|
|
11
|
+
import * as os from 'os';
|
|
12
|
+
/**
|
|
13
|
+
* Default configuration values
|
|
14
|
+
*/
|
|
15
|
+
const DEFAULT_CONFIG = {
|
|
16
|
+
gatewayUrl: 'ws://127.0.0.1:18789',
|
|
17
|
+
autoReconnect: true,
|
|
18
|
+
maxReconnectAttempts: 5,
|
|
19
|
+
reconnectDelay: 1000,
|
|
20
|
+
apiServer: {
|
|
21
|
+
enabled: true,
|
|
22
|
+
port: 18431,
|
|
23
|
+
host: '127.0.0.1',
|
|
24
|
+
},
|
|
25
|
+
hooks: {
|
|
26
|
+
enabled: true,
|
|
27
|
+
toolBefore: true,
|
|
28
|
+
toolAfter: true,
|
|
29
|
+
includeArgs: true,
|
|
30
|
+
includeResult: true,
|
|
31
|
+
},
|
|
32
|
+
enabled: true,
|
|
33
|
+
debug: false,
|
|
34
|
+
logLevel: 'info',
|
|
35
|
+
};
|
|
36
|
+
/**
|
|
37
|
+
* Environment variable mappings
|
|
38
|
+
*/
|
|
39
|
+
const ENV_MAPPINGS = {
|
|
40
|
+
OPENCLAW_GATEWAY_URL: 'gatewayUrl',
|
|
41
|
+
OPENCLAW_AUTH_TOKEN: 'authToken',
|
|
42
|
+
OPENCLAW_DEVICE_ID: 'deviceId',
|
|
43
|
+
OPENCLAW_API_KEY: 'apiServer.apiKey',
|
|
44
|
+
OPENCLAW_API_PORT: 'apiServer.port',
|
|
45
|
+
OPENCLAW_ENABLED: 'enabled',
|
|
46
|
+
OPENCLAW_DEBUG: 'debug',
|
|
47
|
+
};
|
|
48
|
+
/**
|
|
49
|
+
* Configuration loader class
|
|
50
|
+
*/
|
|
51
|
+
export class OpenClawConfigLoader {
|
|
52
|
+
config = null;
|
|
53
|
+
configPath;
|
|
54
|
+
loadedAt = 0;
|
|
55
|
+
constructor(configPath) {
|
|
56
|
+
this.configPath = configPath ||
|
|
57
|
+
path.join(process.cwd(), '.opencode', 'openclaw', 'config.json');
|
|
58
|
+
}
|
|
59
|
+
/**
|
|
60
|
+
* Load configuration from file with environment variable overrides
|
|
61
|
+
*/
|
|
62
|
+
load() {
|
|
63
|
+
try {
|
|
64
|
+
// Load from file if exists
|
|
65
|
+
let userConfig = {};
|
|
66
|
+
if (fs.existsSync(this.configPath)) {
|
|
67
|
+
const configContent = fs.readFileSync(this.configPath, 'utf-8');
|
|
68
|
+
userConfig = JSON.parse(configContent);
|
|
69
|
+
}
|
|
70
|
+
// Apply environment variable overrides
|
|
71
|
+
userConfig = this.applyEnvironmentOverrides(userConfig);
|
|
72
|
+
// Merge with defaults
|
|
73
|
+
this.config = this.mergeWithDefaults(userConfig);
|
|
74
|
+
// Validate configuration
|
|
75
|
+
const validation = this.validateConfig(this.config);
|
|
76
|
+
if (!validation.valid) {
|
|
77
|
+
throw new Error(`Configuration validation failed: ${validation.errors.map(e => e.message).join(', ')}`);
|
|
78
|
+
}
|
|
79
|
+
this.loadedAt = Date.now();
|
|
80
|
+
return this.config;
|
|
81
|
+
}
|
|
82
|
+
catch (error) {
|
|
83
|
+
if (error instanceof Error) {
|
|
84
|
+
throw new Error(`Failed to load OpenClaw configuration: ${error.message}`);
|
|
85
|
+
}
|
|
86
|
+
throw new Error('Failed to load OpenClaw configuration: Unknown error');
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
/**
|
|
90
|
+
* Reload configuration from file
|
|
91
|
+
*/
|
|
92
|
+
reload() {
|
|
93
|
+
this.config = null;
|
|
94
|
+
this.loadedAt = 0;
|
|
95
|
+
return this.load();
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* Get current configuration
|
|
99
|
+
*/
|
|
100
|
+
getConfig() {
|
|
101
|
+
if (!this.config) {
|
|
102
|
+
return this.load();
|
|
103
|
+
}
|
|
104
|
+
return this.config;
|
|
105
|
+
}
|
|
106
|
+
/**
|
|
107
|
+
* Get configuration age in milliseconds
|
|
108
|
+
*/
|
|
109
|
+
getConfigAge() {
|
|
110
|
+
if (!this.loadedAt)
|
|
111
|
+
return 0;
|
|
112
|
+
return Date.now() - this.loadedAt;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Check if configuration needs reload
|
|
116
|
+
*/
|
|
117
|
+
needsReload(maxAgeMs = 60000) {
|
|
118
|
+
return this.getConfigAge() > maxAgeMs;
|
|
119
|
+
}
|
|
120
|
+
/**
|
|
121
|
+
* Apply environment variable overrides
|
|
122
|
+
*/
|
|
123
|
+
applyEnvironmentOverrides(config) {
|
|
124
|
+
const result = { ...config };
|
|
125
|
+
for (const [envVar, configPath] of Object.entries(ENV_MAPPINGS)) {
|
|
126
|
+
const envValue = process.env[envVar];
|
|
127
|
+
if (envValue !== undefined) {
|
|
128
|
+
// Parse value based on expected type
|
|
129
|
+
let parsedValue = envValue;
|
|
130
|
+
// Handle boolean values
|
|
131
|
+
if (envValue.toLowerCase() === 'true') {
|
|
132
|
+
parsedValue = true;
|
|
133
|
+
}
|
|
134
|
+
else if (envValue.toLowerCase() === 'false') {
|
|
135
|
+
parsedValue = false;
|
|
136
|
+
}
|
|
137
|
+
// Handle numeric values
|
|
138
|
+
else if (/^\d+$/.test(envValue)) {
|
|
139
|
+
parsedValue = parseInt(envValue, 10);
|
|
140
|
+
}
|
|
141
|
+
// Set nested value
|
|
142
|
+
const keys = configPath.split('.');
|
|
143
|
+
let current = result;
|
|
144
|
+
for (let i = 0; i < keys.length - 1; i++) {
|
|
145
|
+
const key = keys[i];
|
|
146
|
+
if (!current[key]) {
|
|
147
|
+
current[key] = {};
|
|
148
|
+
}
|
|
149
|
+
current = current[key];
|
|
150
|
+
}
|
|
151
|
+
current[keys[keys.length - 1]] = parsedValue;
|
|
152
|
+
}
|
|
153
|
+
}
|
|
154
|
+
return result;
|
|
155
|
+
}
|
|
156
|
+
/**
|
|
157
|
+
* Merge user config with defaults
|
|
158
|
+
*/
|
|
159
|
+
mergeWithDefaults(userConfig) {
|
|
160
|
+
// Handle nested defaults
|
|
161
|
+
const apiServerDefaults = DEFAULT_CONFIG.apiServer || { enabled: true, port: 18431, host: '127.0.0.1' };
|
|
162
|
+
const hooksDefaults = DEFAULT_CONFIG.hooks || { enabled: true, toolBefore: true, toolAfter: true, includeArgs: true, includeResult: true };
|
|
163
|
+
const result = {
|
|
164
|
+
gatewayUrl: userConfig.gatewayUrl || DEFAULT_CONFIG.gatewayUrl || 'ws://127.0.0.1:18789',
|
|
165
|
+
autoReconnect: userConfig.autoReconnect ?? DEFAULT_CONFIG.autoReconnect ?? true,
|
|
166
|
+
maxReconnectAttempts: userConfig.maxReconnectAttempts ?? DEFAULT_CONFIG.maxReconnectAttempts ?? 5,
|
|
167
|
+
reconnectDelay: userConfig.reconnectDelay ?? DEFAULT_CONFIG.reconnectDelay ?? 1000,
|
|
168
|
+
apiServer: {
|
|
169
|
+
enabled: userConfig.apiServer?.enabled ?? apiServerDefaults.enabled ?? true,
|
|
170
|
+
port: userConfig.apiServer?.port ?? apiServerDefaults.port ?? 18431,
|
|
171
|
+
host: userConfig.apiServer?.host ?? apiServerDefaults.host ?? '127.0.0.1',
|
|
172
|
+
...(userConfig.apiServer?.apiKey !== undefined ? { apiKey: userConfig.apiServer.apiKey } : {}),
|
|
173
|
+
},
|
|
174
|
+
hooks: {
|
|
175
|
+
enabled: userConfig.hooks?.enabled ?? hooksDefaults.enabled ?? true,
|
|
176
|
+
toolBefore: userConfig.hooks?.toolBefore ?? hooksDefaults.toolBefore ?? true,
|
|
177
|
+
toolAfter: userConfig.hooks?.toolAfter ?? hooksDefaults.toolAfter ?? true,
|
|
178
|
+
includeArgs: userConfig.hooks?.includeArgs ?? hooksDefaults.includeArgs ?? true,
|
|
179
|
+
includeResult: userConfig.hooks?.includeResult ?? hooksDefaults.includeResult ?? true,
|
|
180
|
+
},
|
|
181
|
+
enabled: userConfig.enabled ?? DEFAULT_CONFIG.enabled ?? true,
|
|
182
|
+
debug: userConfig.debug ?? DEFAULT_CONFIG.debug ?? false,
|
|
183
|
+
logLevel: userConfig.logLevel ?? DEFAULT_CONFIG.logLevel ?? 'info',
|
|
184
|
+
};
|
|
185
|
+
if (userConfig.authToken !== undefined)
|
|
186
|
+
result.authToken = userConfig.authToken;
|
|
187
|
+
if (userConfig.deviceId !== undefined)
|
|
188
|
+
result.deviceId = userConfig.deviceId;
|
|
189
|
+
if (userConfig.deviceKeyPair !== undefined)
|
|
190
|
+
result.deviceKeyPair = userConfig.deviceKeyPair;
|
|
191
|
+
return result;
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Validate configuration
|
|
195
|
+
*/
|
|
196
|
+
validateConfig(config) {
|
|
197
|
+
const errors = [];
|
|
198
|
+
const warnings = [];
|
|
199
|
+
// Validate gateway URL
|
|
200
|
+
if (!config.gatewayUrl) {
|
|
201
|
+
errors.push({
|
|
202
|
+
field: 'gatewayUrl',
|
|
203
|
+
message: 'gatewayUrl is required',
|
|
204
|
+
code: 'MISSING_REQUIRED',
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
else {
|
|
208
|
+
try {
|
|
209
|
+
const url = new URL(config.gatewayUrl);
|
|
210
|
+
if (!['ws:', 'wss:'].includes(url.protocol)) {
|
|
211
|
+
errors.push({
|
|
212
|
+
field: 'gatewayUrl',
|
|
213
|
+
message: 'gatewayUrl must be a WebSocket URL (ws:// or wss://)',
|
|
214
|
+
code: 'INVALID_PROTOCOL',
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
catch {
|
|
219
|
+
errors.push({
|
|
220
|
+
field: 'gatewayUrl',
|
|
221
|
+
message: 'gatewayUrl is not a valid URL',
|
|
222
|
+
code: 'INVALID_URL',
|
|
223
|
+
});
|
|
224
|
+
}
|
|
225
|
+
}
|
|
226
|
+
// Validate API server port
|
|
227
|
+
if (config.apiServer?.enabled) {
|
|
228
|
+
if (!config.apiServer.port || config.apiServer.port < 1 || config.apiServer.port > 65535) {
|
|
229
|
+
errors.push({
|
|
230
|
+
field: 'apiServer.port',
|
|
231
|
+
message: 'apiServer.port must be between 1 and 65535',
|
|
232
|
+
code: 'INVALID_PORT',
|
|
233
|
+
});
|
|
234
|
+
}
|
|
235
|
+
// Warn if binding to non-localhost
|
|
236
|
+
if (config.apiServer.host && !['localhost', '127.0.0.1', '::1'].includes(config.apiServer.host)) {
|
|
237
|
+
warnings.push({
|
|
238
|
+
field: 'apiServer.host',
|
|
239
|
+
message: 'Binding API server to non-localhost address may expose API externally',
|
|
240
|
+
});
|
|
241
|
+
}
|
|
242
|
+
}
|
|
243
|
+
// Validate reconnection settings
|
|
244
|
+
if (config.maxReconnectAttempts < 0) {
|
|
245
|
+
errors.push({
|
|
246
|
+
field: 'maxReconnectAttempts',
|
|
247
|
+
message: 'maxReconnectAttempts must be non-negative',
|
|
248
|
+
code: 'INVALID_VALUE',
|
|
249
|
+
});
|
|
250
|
+
}
|
|
251
|
+
if (config.reconnectDelay < 0) {
|
|
252
|
+
errors.push({
|
|
253
|
+
field: 'reconnectDelay',
|
|
254
|
+
message: 'reconnectDelay must be non-negative',
|
|
255
|
+
code: 'INVALID_VALUE',
|
|
256
|
+
});
|
|
257
|
+
}
|
|
258
|
+
// Validate log level
|
|
259
|
+
const validLogLevels = ['error', 'warn', 'info', 'debug'];
|
|
260
|
+
if (config.logLevel && !validLogLevels.includes(config.logLevel)) {
|
|
261
|
+
errors.push({
|
|
262
|
+
field: 'logLevel',
|
|
263
|
+
message: `logLevel must be one of: ${validLogLevels.join(', ')}`,
|
|
264
|
+
code: 'INVALID_VALUE',
|
|
265
|
+
});
|
|
266
|
+
}
|
|
267
|
+
// Warnings for potentially problematic configs
|
|
268
|
+
if (config.apiServer?.enabled && !config.apiServer.apiKey) {
|
|
269
|
+
warnings.push({
|
|
270
|
+
field: 'apiServer.apiKey',
|
|
271
|
+
message: 'API server is enabled without an API key - consider adding one for security',
|
|
272
|
+
});
|
|
273
|
+
}
|
|
274
|
+
if (config.autoReconnect && config.maxReconnectAttempts === 0) {
|
|
275
|
+
warnings.push({
|
|
276
|
+
field: 'autoReconnect',
|
|
277
|
+
message: 'autoReconnect is true but maxReconnectAttempts is 0',
|
|
278
|
+
});
|
|
279
|
+
}
|
|
280
|
+
return {
|
|
281
|
+
valid: errors.length === 0,
|
|
282
|
+
errors,
|
|
283
|
+
warnings,
|
|
284
|
+
};
|
|
285
|
+
}
|
|
286
|
+
/**
|
|
287
|
+
* Get configuration file path
|
|
288
|
+
*/
|
|
289
|
+
getConfigPath() {
|
|
290
|
+
return this.configPath;
|
|
291
|
+
}
|
|
292
|
+
/**
|
|
293
|
+
* Check if configuration file exists
|
|
294
|
+
*/
|
|
295
|
+
configExists() {
|
|
296
|
+
return fs.existsSync(this.configPath);
|
|
297
|
+
}
|
|
298
|
+
/**
|
|
299
|
+
* Create sample configuration file
|
|
300
|
+
*/
|
|
301
|
+
createSampleConfig() {
|
|
302
|
+
const configDir = path.dirname(this.configPath);
|
|
303
|
+
// Create directory if it doesn't exist
|
|
304
|
+
if (!fs.existsSync(configDir)) {
|
|
305
|
+
fs.mkdirSync(configDir, { recursive: true });
|
|
306
|
+
}
|
|
307
|
+
const sampleConfig = {
|
|
308
|
+
gatewayUrl: 'ws://127.0.0.1:18789',
|
|
309
|
+
// SECURITY WARNING: authToken MUST be configured before use.
|
|
310
|
+
// Leaving this empty will prevent authenticated connections.
|
|
311
|
+
authToken: process.env.OPENCLAW_AUTH_TOKEN || '',
|
|
312
|
+
deviceId: process.env.OPENCLAW_DEVICE_ID || 'your-device-id',
|
|
313
|
+
autoReconnect: true,
|
|
314
|
+
maxReconnectAttempts: 5,
|
|
315
|
+
reconnectDelay: 1000,
|
|
316
|
+
apiServer: {
|
|
317
|
+
enabled: true,
|
|
318
|
+
port: 18431,
|
|
319
|
+
host: '127.0.0.1',
|
|
320
|
+
...(process.env.OPENCLAW_API_KEY ? { apiKey: process.env.OPENCLAW_API_KEY } : {}),
|
|
321
|
+
},
|
|
322
|
+
hooks: {
|
|
323
|
+
enabled: true,
|
|
324
|
+
toolBefore: true,
|
|
325
|
+
toolAfter: true,
|
|
326
|
+
includeArgs: true,
|
|
327
|
+
includeResult: true,
|
|
328
|
+
},
|
|
329
|
+
enabled: true, // Disabled by default until configured
|
|
330
|
+
debug: false,
|
|
331
|
+
logLevel: 'info',
|
|
332
|
+
};
|
|
333
|
+
fs.writeFileSync(this.configPath, JSON.stringify(sampleConfig, null, 2) + os.EOL, 'utf-8');
|
|
334
|
+
}
|
|
335
|
+
/**
|
|
336
|
+
* Get config for API server only
|
|
337
|
+
*/
|
|
338
|
+
getAPIServerConfig() {
|
|
339
|
+
const config = this.getConfig();
|
|
340
|
+
return config.apiServer;
|
|
341
|
+
}
|
|
342
|
+
/**
|
|
343
|
+
* Get config for hooks only
|
|
344
|
+
*/
|
|
345
|
+
getHooksConfig() {
|
|
346
|
+
const config = this.getConfig();
|
|
347
|
+
return config.hooks;
|
|
348
|
+
}
|
|
349
|
+
/**
|
|
350
|
+
* Check if integration is enabled
|
|
351
|
+
*/
|
|
352
|
+
isEnabled() {
|
|
353
|
+
return this.getConfig().enabled;
|
|
354
|
+
}
|
|
355
|
+
/**
|
|
356
|
+
* Check if API server is enabled
|
|
357
|
+
*/
|
|
358
|
+
isAPIServerEnabled() {
|
|
359
|
+
return this.getConfig().apiServer?.enabled ?? false;
|
|
360
|
+
}
|
|
361
|
+
/**
|
|
362
|
+
* Check if hooks are enabled
|
|
363
|
+
*/
|
|
364
|
+
areHooksEnabled() {
|
|
365
|
+
const config = this.getConfig();
|
|
366
|
+
return config.hooks?.enabled ?? false;
|
|
367
|
+
}
|
|
368
|
+
}
|
|
369
|
+
// Export singleton instance
|
|
370
|
+
export const configLoader = new OpenClawConfigLoader();
|
|
371
|
+
// Export factory function
|
|
372
|
+
export function createConfigLoader(configPath) {
|
|
373
|
+
return new OpenClawConfigLoader(configPath);
|
|
374
|
+
}
|
|
375
|
+
//# sourceMappingURL=config.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/integrations/openclaw/config.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,125 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* OpenClaw 0xRay Hooks Integration
|
|
3
|
+
*
|
|
4
|
+
* Integrates OpenClaw with 0xRay's tool.before and tool.after hooks
|
|
5
|
+
* to send tool execution events to OpenClaw Gateway.
|
|
6
|
+
*
|
|
7
|
+
* @version 1.0.0
|
|
8
|
+
* @since 2026-03-14
|
|
9
|
+
*/
|
|
10
|
+
import { OpenClawClient } from '../client.js';
|
|
11
|
+
/**
|
|
12
|
+
* Hooks configuration
|
|
13
|
+
*/
|
|
14
|
+
export interface OpenClawHooksConfig {
|
|
15
|
+
enabled: boolean;
|
|
16
|
+
toolBefore: boolean;
|
|
17
|
+
toolAfter: boolean;
|
|
18
|
+
includeArgs: boolean;
|
|
19
|
+
includeResult: boolean;
|
|
20
|
+
toolFilter?: string[];
|
|
21
|
+
}
|
|
22
|
+
/**
|
|
23
|
+
* 0xRay tool event
|
|
24
|
+
*/
|
|
25
|
+
export interface StringRayToolEvent {
|
|
26
|
+
toolName: string;
|
|
27
|
+
toolId: string;
|
|
28
|
+
args: Record<string, unknown>;
|
|
29
|
+
result?: unknown;
|
|
30
|
+
error?: string;
|
|
31
|
+
duration: number;
|
|
32
|
+
timestamp: number;
|
|
33
|
+
sessionId?: string;
|
|
34
|
+
agent?: string;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Hook event callback type
|
|
38
|
+
*/
|
|
39
|
+
export type ToolEventCallback = (event: StringRayToolEvent) => void | Promise<void>;
|
|
40
|
+
/**
|
|
41
|
+
* OpenClaw Hooks Manager
|
|
42
|
+
*/
|
|
43
|
+
export declare class OpenClawHooksManager {
|
|
44
|
+
private client;
|
|
45
|
+
private config;
|
|
46
|
+
private initialized;
|
|
47
|
+
private toolBeforeCallbacks;
|
|
48
|
+
private toolAfterCallbacks;
|
|
49
|
+
private logger;
|
|
50
|
+
private eventQueue;
|
|
51
|
+
private maxQueueSize;
|
|
52
|
+
private isFlushing;
|
|
53
|
+
constructor(config: OpenClawHooksConfig);
|
|
54
|
+
/**
|
|
55
|
+
* Set the OpenClaw client
|
|
56
|
+
*/
|
|
57
|
+
setClient(client: OpenClawClient): void;
|
|
58
|
+
/**
|
|
59
|
+
* Initialize hooks - registers with 0xRay's event system
|
|
60
|
+
*/
|
|
61
|
+
initialize(): Promise<void>;
|
|
62
|
+
/**
|
|
63
|
+
* Register a callback for tool.before events
|
|
64
|
+
* Call this to connect to 0xRay's tool.before event system
|
|
65
|
+
*/
|
|
66
|
+
registerToolBefore(callback: ToolEventCallback): void;
|
|
67
|
+
/**
|
|
68
|
+
* Unregister a tool.before callback
|
|
69
|
+
*/
|
|
70
|
+
unregisterToolBefore(callback: ToolEventCallback): void;
|
|
71
|
+
/**
|
|
72
|
+
* Register a callback for tool.after events
|
|
73
|
+
* Call this to connect to 0xRay's tool.after event system
|
|
74
|
+
*/
|
|
75
|
+
registerToolAfter(callback: ToolEventCallback): void;
|
|
76
|
+
/**
|
|
77
|
+
* Unregister a tool.after callback
|
|
78
|
+
*/
|
|
79
|
+
unregisterToolAfter(callback: ToolEventCallback): void;
|
|
80
|
+
/**
|
|
81
|
+
* Handle tool.before event from 0xRay
|
|
82
|
+
*/
|
|
83
|
+
onToolBefore(event: StringRayToolEvent): Promise<void>;
|
|
84
|
+
/**
|
|
85
|
+
* Handle tool.after event from 0xRay
|
|
86
|
+
*/
|
|
87
|
+
onToolAfter(event: StringRayToolEvent): Promise<void>;
|
|
88
|
+
/**
|
|
89
|
+
* Queue an event for later delivery when connection is restored
|
|
90
|
+
*/
|
|
91
|
+
private queueEvent;
|
|
92
|
+
/**
|
|
93
|
+
* Flush queued events to OpenClaw Gateway
|
|
94
|
+
*/
|
|
95
|
+
private flushEventQueue;
|
|
96
|
+
/**
|
|
97
|
+
* Get the current queue size
|
|
98
|
+
*/
|
|
99
|
+
getQueueSize(): number;
|
|
100
|
+
/**
|
|
101
|
+
* Called when client reconnects - flush the event queue
|
|
102
|
+
*/
|
|
103
|
+
handleReconnect(): Promise<void>;
|
|
104
|
+
/**
|
|
105
|
+
* Shutdown hooks
|
|
106
|
+
*/
|
|
107
|
+
shutdown(): Promise<void>;
|
|
108
|
+
/**
|
|
109
|
+
* Check if hooks are initialized
|
|
110
|
+
*/
|
|
111
|
+
isInitialized(): boolean;
|
|
112
|
+
/**
|
|
113
|
+
* Update configuration
|
|
114
|
+
*/
|
|
115
|
+
updateConfig(config: Partial<OpenClawHooksConfig>): void;
|
|
116
|
+
/**
|
|
117
|
+
* Get current configuration
|
|
118
|
+
*/
|
|
119
|
+
getConfig(): OpenClawHooksConfig;
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Factory function to create hooks manager
|
|
123
|
+
*/
|
|
124
|
+
export declare function createOpenClawHooksManager(config: OpenClawHooksConfig): OpenClawHooksManager;
|
|
125
|
+
//# sourceMappingURL=strray-hooks.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"strray-hooks.d.ts","sourceRoot":"","sources":["../../../../src/integrations/openclaw/hooks/strray-hooks.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAMH,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C;;GAEG;AACH,MAAM,WAAW,mBAAmB;IAClC,OAAO,EAAE,OAAO,CAAC;IACjB,UAAU,EAAE,OAAO,CAAC;IACpB,SAAS,EAAE,OAAO,CAAC;IACnB,WAAW,EAAE,OAAO,CAAC;IACrB,aAAa,EAAE,OAAO,CAAC;IACvB,UAAU,CAAC,EAAE,MAAM,EAAE,CAAC;CACvB;AAED;;GAEG;AACH,MAAM,WAAW,kBAAkB;IACjC,QAAQ,EAAE,MAAM,CAAC;IACjB,MAAM,EAAE,MAAM,CAAC;IACf,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IACjB,SAAS,EAAE,MAAM,CAAC;IAClB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,KAAK,CAAC,EAAE,MAAM,CAAC;CAChB;AAED;;GAEG;AACH,MAAM,MAAM,iBAAiB,GAAG,CAAC,KAAK,EAAE,kBAAkB,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;AAEpF;;GAEG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,MAAM,CAAsB;IACpC,OAAO,CAAC,WAAW,CAAS;IAC5B,OAAO,CAAC,mBAAmB,CAAqC;IAChE,OAAO,CAAC,kBAAkB,CAAqC;IAC/D,OAAO,CAAC,MAAM,CAAU;IAGxB,OAAO,CAAC,UAAU,CAAwE;IAC1F,OAAO,CAAC,YAAY,CAAO;IAC3B,OAAO,CAAC,UAAU,CAAS;gBAEf,MAAM,EAAE,mBAAmB;IAYvC;;OAEG;IACH,SAAS,CAAC,MAAM,EAAE,cAAc,GAAG,IAAI;IAIvC;;OAEG;IACG,UAAU,IAAI,OAAO,CAAC,IAAI,CAAC;IAqBjC;;;OAGG;IACH,kBAAkB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IAIrD;;OAEG;IACH,oBAAoB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IAIvD;;;OAGG;IACH,iBAAiB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IAIpD;;OAEG;IACH,mBAAmB,CAAC,QAAQ,EAAE,iBAAiB,GAAG,IAAI;IAItD;;OAEG;IACG,YAAY,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IA+C5D;;OAEG;IACG,WAAW,CAAC,KAAK,EAAE,kBAAkB,GAAG,OAAO,CAAC,IAAI,CAAC;IAkD3D;;OAEG;IACH,OAAO,CAAC,UAAU;IAUlB;;OAEG;YACW,eAAe;IA6B7B;;OAEG;IACH,YAAY,IAAI,MAAM;IAItB;;OAEG;IACG,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IAOtC;;OAEG;IACG,QAAQ,IAAI,OAAO,CAAC,IAAI,CAAC;IAU/B;;OAEG;IACH,aAAa,IAAI,OAAO;IAIxB;;OAEG;IACH,YAAY,CAAC,MAAM,EAAE,OAAO,CAAC,mBAAmB,CAAC,GAAG,IAAI;IAOxD;;OAEG;IACH,SAAS,IAAI,mBAAmB;CAGjC;AAED;;GAEG;AACH,wBAAgB,0BAA0B,CAAC,MAAM,EAAE,mBAAmB,GAAG,oBAAoB,CAE5F"}
|