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.
Files changed (87) hide show
  1. package/.opencode/codex.codex +1 -1
  2. package/.opencode/enforcer-config.json +2 -2
  3. package/.opencode/skills/registry.json +1 -1
  4. package/.opencode/strray/codex.json +1 -1
  5. package/.opencode/strray/config.json +1 -1
  6. package/.opencode/strray/features.json +1 -1
  7. package/.opencode/strray/integrations.json +3 -3
  8. package/.strray/codex.json +1 -1
  9. package/.strray/config.json +1 -1
  10. package/.strray/features.json +1 -1
  11. package/.strray/integrations.json +3 -3
  12. package/dist/CHANGELOG.md +17 -0
  13. package/dist/analytics/routing-refiner.js +1 -1
  14. package/dist/core/boot-orchestrator.js +1 -1
  15. package/dist/core/features-config.js +1 -1
  16. package/dist/index.d.ts +2 -0
  17. package/dist/index.d.ts.map +1 -1
  18. package/dist/index.js +1 -0
  19. package/dist/index.js.map +1 -1
  20. package/dist/integrations/openclaw/api-server.d.ts +86 -0
  21. package/dist/integrations/openclaw/api-server.d.ts.map +1 -0
  22. package/dist/integrations/openclaw/api-server.js +339 -0
  23. package/dist/integrations/openclaw/api-server.js.map +1 -0
  24. package/dist/integrations/openclaw/client.d.ts +120 -0
  25. package/dist/integrations/openclaw/client.d.ts.map +1 -0
  26. package/dist/integrations/openclaw/client.js +447 -0
  27. package/dist/integrations/openclaw/client.js.map +1 -0
  28. package/dist/integrations/openclaw/config.d.ts +97 -0
  29. package/dist/integrations/openclaw/config.d.ts.map +1 -0
  30. package/dist/integrations/openclaw/config.js +375 -0
  31. package/dist/integrations/openclaw/config.js.map +1 -0
  32. package/dist/integrations/openclaw/hooks/strray-hooks.d.ts +125 -0
  33. package/dist/integrations/openclaw/hooks/strray-hooks.d.ts.map +1 -0
  34. package/dist/integrations/openclaw/hooks/strray-hooks.js +281 -0
  35. package/dist/integrations/openclaw/hooks/strray-hooks.js.map +1 -0
  36. package/dist/integrations/openclaw/index.d.ts +102 -0
  37. package/dist/integrations/openclaw/index.d.ts.map +1 -0
  38. package/dist/integrations/openclaw/index.js +340 -0
  39. package/dist/integrations/openclaw/index.js.map +1 -0
  40. package/dist/integrations/openclaw/types.d.ts +427 -0
  41. package/dist/integrations/openclaw/types.d.ts.map +1 -0
  42. package/dist/integrations/openclaw/types.js +154 -0
  43. package/dist/integrations/openclaw/types.js.map +1 -0
  44. package/dist/mcps/architect-tools.server.js +1 -1
  45. package/dist/mcps/auto-format.server.js +1 -1
  46. package/dist/mcps/boot-orchestrator.server.js +1 -1
  47. package/dist/mcps/enforcer-tools.server.js +1 -1
  48. package/dist/mcps/estimation.server.js +1 -1
  49. package/dist/mcps/framework-compliance-audit.server.js +1 -1
  50. package/dist/mcps/framework-help.server.js +1 -1
  51. package/dist/mcps/knowledge-skills/api-design.server.js +1 -1
  52. package/dist/mcps/knowledge-skills/architecture-patterns.server.js +1 -1
  53. package/dist/mcps/knowledge-skills/bug-triage-specialist.server.js +1 -1
  54. package/dist/mcps/knowledge-skills/code-analyzer.server.js +1 -1
  55. package/dist/mcps/knowledge-skills/code-review.server.js +1 -1
  56. package/dist/mcps/knowledge-skills/content-creator.server.js +1 -1
  57. package/dist/mcps/knowledge-skills/database-design.server.js +1 -1
  58. package/dist/mcps/knowledge-skills/devops-deployment.server.js +1 -1
  59. package/dist/mcps/knowledge-skills/git-workflow.server.js +1 -1
  60. package/dist/mcps/knowledge-skills/growth-strategist.server.js +1 -1
  61. package/dist/mcps/knowledge-skills/log-monitor.server.js +1 -1
  62. package/dist/mcps/knowledge-skills/mobile-development.server.js +1 -1
  63. package/dist/mcps/knowledge-skills/multimodal-looker.server.js +1 -1
  64. package/dist/mcps/knowledge-skills/performance-optimization.server.js +1 -1
  65. package/dist/mcps/knowledge-skills/project-analysis.server.js +1 -1
  66. package/dist/mcps/knowledge-skills/refactoring-strategies.server.js +1 -1
  67. package/dist/mcps/knowledge-skills/security-audit.server.js +1 -1
  68. package/dist/mcps/knowledge-skills/seo-consultant.server.js +1 -1
  69. package/dist/mcps/knowledge-skills/session-management.server.js +1 -1
  70. package/dist/mcps/knowledge-skills/skill-invocation.server.js +1 -1
  71. package/dist/mcps/knowledge-skills/strategist.server.js +1 -1
  72. package/dist/mcps/knowledge-skills/tech-writer.server.js +2 -2
  73. package/dist/mcps/knowledge-skills/testing-best-practices.server.js +1 -1
  74. package/dist/mcps/knowledge-skills/testing-strategy.server.js +1 -1
  75. package/dist/mcps/knowledge-skills/ui-ux-design.server.js +1 -1
  76. package/dist/mcps/lint.server.js +1 -1
  77. package/dist/mcps/model-health-check.server.js +1 -1
  78. package/dist/mcps/performance-analysis.server.js +1 -1
  79. package/dist/mcps/processor-pipeline.server.js +1 -1
  80. package/dist/mcps/registry.json +1 -1
  81. package/dist/mcps/researcher.server.js +1 -1
  82. package/dist/mcps/security-scan.server.js +1 -1
  83. package/dist/mcps/state-manager.server.js +1 -1
  84. package/dist/orchestrator/universal-registry-bridge.js +1 -1
  85. package/dist/skills/registry.json +1 -1
  86. package/package.json +1 -1
  87. package/scripts/node/universal-version-manager.js +3 -3
@@ -0,0 +1,281 @@
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
+ /**
11
+ * OpenClaw Hooks Manager
12
+ */
13
+ export class OpenClawHooksManager {
14
+ client = null;
15
+ config;
16
+ initialized = false;
17
+ toolBeforeCallbacks = new Set();
18
+ toolAfterCallbacks = new Set();
19
+ logger;
20
+ // Offline event buffering
21
+ eventQueue = [];
22
+ maxQueueSize = 100;
23
+ isFlushing = false;
24
+ constructor(config) {
25
+ this.config = {
26
+ enabled: config.enabled ?? true,
27
+ toolBefore: config.toolBefore ?? true,
28
+ toolAfter: config.toolAfter ?? true,
29
+ includeArgs: config.includeArgs ?? true,
30
+ includeResult: config.includeResult ?? true,
31
+ ...(config.toolFilter ? { toolFilter: config.toolFilter } : {}),
32
+ };
33
+ this.logger = console;
34
+ }
35
+ /**
36
+ * Set the OpenClaw client
37
+ */
38
+ setClient(client) {
39
+ this.client = client;
40
+ }
41
+ /**
42
+ * Initialize hooks - registers with 0xRay's event system
43
+ */
44
+ async initialize() {
45
+ if (this.initialized) {
46
+ this.logger.warn('[OpenClawHooks] Already initialized');
47
+ return;
48
+ }
49
+ if (!this.config.enabled) {
50
+ this.logger.info('[OpenClawHooks] Hooks disabled in configuration');
51
+ return;
52
+ }
53
+ this.logger.info('[OpenClawHooks] Initializing 0xRay tool hooks...');
54
+ // Register with 0xRay's event system
55
+ // The integration should call registerToolBefore and registerToolAfter
56
+ // to connect to 0xRay's actual tool execution events
57
+ this.initialized = true;
58
+ this.logger.info('[OpenClawHooks] Hooks initialized successfully');
59
+ }
60
+ /**
61
+ * Register a callback for tool.before events
62
+ * Call this to connect to 0xRay's tool.before event system
63
+ */
64
+ registerToolBefore(callback) {
65
+ this.toolBeforeCallbacks.add(callback);
66
+ }
67
+ /**
68
+ * Unregister a tool.before callback
69
+ */
70
+ unregisterToolBefore(callback) {
71
+ this.toolBeforeCallbacks.delete(callback);
72
+ }
73
+ /**
74
+ * Register a callback for tool.after events
75
+ * Call this to connect to 0xRay's tool.after event system
76
+ */
77
+ registerToolAfter(callback) {
78
+ this.toolAfterCallbacks.add(callback);
79
+ }
80
+ /**
81
+ * Unregister a tool.after callback
82
+ */
83
+ unregisterToolAfter(callback) {
84
+ this.toolAfterCallbacks.delete(callback);
85
+ }
86
+ /**
87
+ * Handle tool.before event from 0xRay
88
+ */
89
+ async onToolBefore(event) {
90
+ if (!this.config.enabled || !this.config.toolBefore) {
91
+ return;
92
+ }
93
+ // Filter by tool name if configured
94
+ if (this.config.toolFilter && !this.config.toolFilter.includes(event.toolName)) {
95
+ return;
96
+ }
97
+ try {
98
+ const hookEvent = {
99
+ eventType: 'tool.before',
100
+ toolName: event.toolName,
101
+ toolId: event.toolId,
102
+ args: this.config.includeArgs ? event.args : {},
103
+ duration: event.duration,
104
+ timestamp: event.timestamp,
105
+ ...(event.sessionId !== undefined ? { sessionId: event.sessionId } : {}),
106
+ ...(event.agent !== undefined ? { agent: event.agent } : {}),
107
+ };
108
+ // Send to OpenClaw if connected, otherwise queue
109
+ if (this.client?.isConnected()) {
110
+ await this.client.sendRequest('event.tool.before', hookEvent);
111
+ // Try to flush any queued events
112
+ await this.flushEventQueue();
113
+ }
114
+ else {
115
+ // Queue event for later when connection is restored
116
+ this.queueEvent('tool.before', hookEvent);
117
+ }
118
+ // Also notify registered callbacks
119
+ for (const callback of this.toolBeforeCallbacks) {
120
+ try {
121
+ await callback(event);
122
+ }
123
+ catch (error) {
124
+ this.logger.error('[OpenClawHooks] Callback error in tool.before:', error);
125
+ }
126
+ }
127
+ this.logger.debug(`[OpenClawHooks] tool.before: ${event.toolName}`);
128
+ }
129
+ catch (error) {
130
+ this.logger.error('[OpenClawHooks] Error handling tool.before:', error);
131
+ }
132
+ }
133
+ /**
134
+ * Handle tool.after event from 0xRay
135
+ */
136
+ async onToolAfter(event) {
137
+ if (!this.config.enabled || !this.config.toolAfter) {
138
+ return;
139
+ }
140
+ // Filter by tool name if configured
141
+ if (this.config.toolFilter && !this.config.toolFilter.includes(event.toolName)) {
142
+ return;
143
+ }
144
+ try {
145
+ const hookEvent = {
146
+ eventType: 'tool.after',
147
+ toolName: event.toolName,
148
+ toolId: event.toolId,
149
+ args: this.config.includeArgs ? event.args : {},
150
+ result: this.config.includeResult ? event.result : undefined,
151
+ ...(event.error ? { error: event.error } : {}),
152
+ success: !event.error,
153
+ duration: event.duration,
154
+ timestamp: event.timestamp,
155
+ ...(event.sessionId !== undefined ? { sessionId: event.sessionId } : {}),
156
+ ...(event.agent !== undefined ? { agent: event.agent } : {}),
157
+ };
158
+ // Send to OpenClaw if connected, otherwise queue
159
+ if (this.client?.isConnected()) {
160
+ await this.client.sendRequest('event.tool.after', hookEvent);
161
+ // Try to flush any queued events
162
+ await this.flushEventQueue();
163
+ }
164
+ else {
165
+ // Queue event for later when connection is restored
166
+ this.queueEvent('tool.after', hookEvent);
167
+ }
168
+ // Also notify registered callbacks
169
+ for (const callback of this.toolAfterCallbacks) {
170
+ try {
171
+ await callback(event);
172
+ }
173
+ catch (error) {
174
+ this.logger.error('[OpenClawHooks] Callback error in tool.after:', error);
175
+ }
176
+ }
177
+ this.logger.debug(`[OpenClawHooks] tool.after: ${event.toolName} (${event.error ? 'error' : 'success'})`);
178
+ }
179
+ catch (error) {
180
+ this.logger.error('[OpenClawHooks] Error handling tool.after:', error);
181
+ }
182
+ }
183
+ /**
184
+ * Queue an event for later delivery when connection is restored
185
+ */
186
+ queueEvent(type, event) {
187
+ if (this.eventQueue.length >= this.maxQueueSize) {
188
+ // Remove oldest event to make room
189
+ this.eventQueue.shift();
190
+ this.logger.warn('[OpenClawHooks] Event queue full, dropping oldest event');
191
+ }
192
+ this.eventQueue.push({ type, event });
193
+ this.logger.debug(`[OpenClawHooks] Queued ${type} event (queue size: ${this.eventQueue.length})`);
194
+ }
195
+ /**
196
+ * Flush queued events to OpenClaw Gateway
197
+ */
198
+ async flushEventQueue() {
199
+ if (this.isFlushing || !this.client?.isConnected() || this.eventQueue.length === 0) {
200
+ return;
201
+ }
202
+ this.isFlushing = true;
203
+ const queue = [...this.eventQueue];
204
+ this.eventQueue.length = 0;
205
+ try {
206
+ for (const item of queue) {
207
+ try {
208
+ if (item.type === 'tool.before') {
209
+ await this.client.sendRequest('event.tool.before', item.event);
210
+ }
211
+ else {
212
+ await this.client.sendRequest('event.tool.after', item.event);
213
+ }
214
+ }
215
+ catch (error) {
216
+ this.logger.error(`[OpenClawHooks] Failed to send queued ${item.type} event:`, error);
217
+ // Re-queue failed events
218
+ this.eventQueue.push(item);
219
+ }
220
+ }
221
+ this.logger.info(`[OpenClawHooks] Flushed ${queue.length} queued events`);
222
+ }
223
+ finally {
224
+ this.isFlushing = false;
225
+ }
226
+ }
227
+ /**
228
+ * Get the current queue size
229
+ */
230
+ getQueueSize() {
231
+ return this.eventQueue.length;
232
+ }
233
+ /**
234
+ * Called when client reconnects - flush the event queue
235
+ */
236
+ async handleReconnect() {
237
+ if (this.eventQueue.length > 0) {
238
+ this.logger.info(`[OpenClawHooks] Client reconnected, flushing ${this.eventQueue.length} queued events...`);
239
+ await this.flushEventQueue();
240
+ }
241
+ }
242
+ /**
243
+ * Shutdown hooks
244
+ */
245
+ async shutdown() {
246
+ // Clear the event queue on shutdown
247
+ const queuedCount = this.eventQueue.length;
248
+ this.eventQueue.length = 0;
249
+ this.initialized = false;
250
+ this.client = null;
251
+ this.logger.info(`[OpenClawHooks] Hooks shutdown complete (${queuedCount} queued events dropped)`);
252
+ }
253
+ /**
254
+ * Check if hooks are initialized
255
+ */
256
+ isInitialized() {
257
+ return this.initialized;
258
+ }
259
+ /**
260
+ * Update configuration
261
+ */
262
+ updateConfig(config) {
263
+ this.config = {
264
+ ...this.config,
265
+ ...config,
266
+ };
267
+ }
268
+ /**
269
+ * Get current configuration
270
+ */
271
+ getConfig() {
272
+ return { ...this.config };
273
+ }
274
+ }
275
+ /**
276
+ * Factory function to create hooks manager
277
+ */
278
+ export function createOpenClawHooksManager(config) {
279
+ return new OpenClawHooksManager(config);
280
+ }
281
+ //# sourceMappingURL=strray-hooks.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"strray-hooks.js","sourceRoot":"","sources":["../../../../src/integrations/openclaw/hooks/strray-hooks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,102 @@
1
+ /**
2
+ * OpenClaw Integration - Main Module
3
+ *
4
+ * Combines all OpenClaw integration components into a single interface.
5
+ *
6
+ * @version 1.0.0
7
+ * @since 2026-03-14
8
+ */
9
+ import { BaseIntegration } from '../base/index.js';
10
+ import type { OpenClawIntegrationConfig, IntegrationStatistics } from './types.js';
11
+ import { OpenClawClient } from './client.js';
12
+ import { StringRayAPIServer } from './api-server.js';
13
+ import { OpenClawHooksManager } from './hooks/strray-hooks.js';
14
+ import type { AgentInvoker } from './api-server.js';
15
+ /**
16
+ * Main OpenClaw Integration class
17
+ * Extends BaseIntegration for consistent lifecycle management
18
+ */
19
+ export declare class OpenClawIntegration extends BaseIntegration {
20
+ private configLoader;
21
+ private client;
22
+ private apiServer;
23
+ private hooksManager;
24
+ private agentInvoker;
25
+ private mcpToolBeforeUnsubscribe;
26
+ private mcpToolAfterUnsubscribe;
27
+ constructor(configPath?: string);
28
+ /**
29
+ * Set the agent invoker for the API server
30
+ */
31
+ setAgentInvoker(invoker: AgentInvoker): void;
32
+ /**
33
+ * Perform integration-specific initialization
34
+ * Called by BaseIntegration.initialize() after base setup
35
+ */
36
+ protected performInitialization(): Promise<void>;
37
+ /**
38
+ * Wire OpenClaw hooks to MCPClient tool events
39
+ */
40
+ private wireHooksToMCP;
41
+ /**
42
+ * Perform integration-specific shutdown
43
+ * Called by BaseIntegration.shutdown() for cleanup
44
+ */
45
+ protected performShutdown(): Promise<void>;
46
+ /**
47
+ * Perform integration-specific health check
48
+ */
49
+ protected performHealthCheck(): Promise<{
50
+ healthy: boolean;
51
+ message: string;
52
+ details?: Record<string, unknown>;
53
+ }>;
54
+ /**
55
+ * Get statistics including client, API server, and base stats
56
+ */
57
+ getStatistics(): IntegrationStatistics;
58
+ /**
59
+ * Get the API server instance
60
+ */
61
+ getAPIServer(): StringRayAPIServer | null;
62
+ /**
63
+ * Get the client instance
64
+ */
65
+ getClient(): OpenClawClient | null;
66
+ /**
67
+ * Get the hooks manager
68
+ */
69
+ getHooksManager(): OpenClawHooksManager | null;
70
+ /**
71
+ * Get OpenClaw-specific configuration
72
+ */
73
+ getOpenClawConfig(): OpenClawIntegrationConfig;
74
+ /**
75
+ * Reload configuration
76
+ */
77
+ reloadConfig(): void;
78
+ /**
79
+ * Get the agent invoker
80
+ */
81
+ getAgentInvoker(): AgentInvoker | null;
82
+ private getDefaultClientStats;
83
+ private getDefaultAPIServerStats;
84
+ }
85
+ /**
86
+ * Initialize the global integration
87
+ */
88
+ export declare function initializeOpenClawIntegration(configPath?: string, agentInvoker?: AgentInvoker): Promise<OpenClawIntegration>;
89
+ /**
90
+ * Get the global integration
91
+ */
92
+ export declare function getOpenClawIntegration(): OpenClawIntegration | null;
93
+ /**
94
+ * Shutdown the global integration
95
+ */
96
+ export declare function shutdownOpenClawIntegration(): Promise<void>;
97
+ export * from './types.js';
98
+ export * from './config.js';
99
+ export * from './client.js';
100
+ export * from './api-server.js';
101
+ export { OpenClawHooksManager } from './hooks/strray-hooks.js';
102
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/integrations/openclaw/index.ts"],"names":[],"mappings":"AAAA;;;;;;;GAOG;AAEH,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AACnD,OAAO,KAAK,EACV,yBAAyB,EACzB,qBAAqB,EAGtB,MAAM,YAAY,CAAC;AAEpB,OAAO,EAAE,cAAc,EAAE,MAAM,aAAa,CAAC;AAC7C,OAAO,EAAE,kBAAkB,EAAE,MAAM,iBAAiB,CAAC;AACrD,OAAO,EAAE,oBAAoB,EAAsB,MAAM,yBAAyB,CAAC;AAEnF,OAAO,KAAK,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAEpD;;;GAGG;AACH,qBAAa,mBAAoB,SAAQ,eAAe;IACtD,OAAO,CAAC,YAAY,CAAuB;IAC3C,OAAO,CAAC,MAAM,CAA+B;IAC7C,OAAO,CAAC,SAAS,CAAmC;IACpD,OAAO,CAAC,YAAY,CAAqC;IACzD,OAAO,CAAC,YAAY,CAA6B;IAGjD,OAAO,CAAC,wBAAwB,CAA6B;IAC7D,OAAO,CAAC,uBAAuB,CAA6B;gBAEhD,UAAU,CAAC,EAAE,MAAM;IAK/B;;OAEG;IACH,eAAe,CAAC,OAAO,EAAE,YAAY,GAAG,IAAI;IAO5C;;;OAGG;cACa,qBAAqB,IAAI,OAAO,CAAC,IAAI,CAAC;IAwEtD;;OAEG;YACW,cAAc;IA+C5B;;;OAGG;cACa,eAAe,IAAI,OAAO,CAAC,IAAI,CAAC;IA6BhD;;OAEG;cACa,kBAAkB,IAAI,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,OAAO,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAA;KAAE,CAAC;IAwDvH;;OAEG;IACH,aAAa,IAAI,qBAAqB;IAQtC;;OAEG;IACH,YAAY,IAAI,kBAAkB,GAAG,IAAI;IAIzC;;OAEG;IACH,SAAS,IAAI,cAAc,GAAG,IAAI;IAIlC;;OAEG;IACH,eAAe,IAAI,oBAAoB,GAAG,IAAI;IAI9C;;OAEG;IACH,iBAAiB,IAAI,yBAAyB;IAI9C;;OAEG;IACH,YAAY,IAAI,IAAI;IAIpB;;OAEG;IACH,eAAe,IAAI,YAAY,GAAG,IAAI;IAItC,OAAO,CAAC,qBAAqB;IAY7B,OAAO,CAAC,wBAAwB;CAUjC;AAOD;;GAEG;AACH,wBAAsB,6BAA6B,CACjD,UAAU,CAAC,EAAE,MAAM,EACnB,YAAY,CAAC,EAAE,YAAY,GAC1B,OAAO,CAAC,mBAAmB,CAAC,CAc9B;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI,mBAAmB,GAAG,IAAI,CAEnE;AAED;;GAEG;AACH,wBAAsB,2BAA2B,IAAI,OAAO,CAAC,IAAI,CAAC,CAKjE;AAGD,cAAc,YAAY,CAAC;AAC3B,cAAc,aAAa,CAAC;AAC5B,cAAc,aAAa,CAAC;AAC5B,cAAc,iBAAiB,CAAC;AAChC,OAAO,EAAE,oBAAoB,EAAE,MAAM,yBAAyB,CAAC"}