agentic-flow 2.0.1-alpha.5 ā 2.0.1-alpha.8
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/CHANGELOG.md +26 -0
- package/dist/.tsbuildinfo +1 -1
- package/dist/agentdb/controllers/EmbeddingService.d.ts +37 -0
- package/dist/agentdb/controllers/EmbeddingService.d.ts.map +1 -0
- package/dist/agentdb/controllers/EmbeddingService.js +1 -0
- package/dist/agentdb/controllers/EmbeddingService.js.map +1 -0
- package/dist/billing/mcp/tools.d.ts.map +1 -1
- package/dist/billing/mcp/tools.js +2 -0
- package/dist/billing/mcp/tools.js.map +1 -1
- package/dist/cli/commands/hooks.d.ts +18 -0
- package/dist/cli/commands/hooks.d.ts.map +1 -0
- package/dist/cli/commands/hooks.js +750 -0
- package/dist/cli/commands/hooks.js.map +1 -0
- package/dist/cli-proxy.js +26 -1
- package/dist/cli-proxy.js.map +1 -1
- package/dist/core/agentdb-fast.js +3 -3
- package/dist/core/agentdb-fast.js.map +1 -1
- package/dist/core/agentdb-wrapper-enhanced.d.ts.map +1 -1
- package/dist/core/agentdb-wrapper-enhanced.js +32 -17
- package/dist/core/agentdb-wrapper-enhanced.js.map +1 -1
- package/dist/core/attention-native.d.ts +1 -0
- package/dist/core/attention-native.d.ts.map +1 -1
- package/dist/core/attention-native.js +6 -1
- package/dist/core/attention-native.js.map +1 -1
- package/dist/federation/integrations/supabase-adapter-debug.js +3 -3
- package/dist/federation/integrations/supabase-adapter-debug.js.map +1 -1
- package/dist/intelligence/RuVectorIntelligence.d.ts +362 -0
- package/dist/intelligence/RuVectorIntelligence.d.ts.map +1 -0
- package/dist/intelligence/RuVectorIntelligence.js +852 -0
- package/dist/intelligence/RuVectorIntelligence.js.map +1 -0
- package/dist/intelligence/index.d.ts +14 -0
- package/dist/intelligence/index.d.ts.map +1 -0
- package/dist/intelligence/index.js +14 -0
- package/dist/intelligence/index.js.map +1 -0
- package/dist/llm/RuvLLMOrchestrator.d.ts +184 -0
- package/dist/llm/RuvLLMOrchestrator.d.ts.map +1 -0
- package/dist/llm/RuvLLMOrchestrator.js +442 -0
- package/dist/llm/RuvLLMOrchestrator.js.map +1 -0
- package/dist/llm/index.d.ts +9 -0
- package/dist/llm/index.d.ts.map +1 -0
- package/dist/llm/index.js +8 -0
- package/dist/llm/index.js.map +1 -0
- package/dist/mcp/claudeFlowSdkServer.d.ts.map +1 -1
- package/dist/mcp/claudeFlowSdkServer.js +86 -21
- package/dist/mcp/claudeFlowSdkServer.js.map +1 -1
- package/dist/mcp/fastmcp/servers/hooks-server.d.ts +15 -0
- package/dist/mcp/fastmcp/servers/hooks-server.d.ts.map +1 -0
- package/dist/mcp/fastmcp/servers/hooks-server.js +63 -0
- package/dist/mcp/fastmcp/servers/hooks-server.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/benchmark.d.ts +20 -0
- package/dist/mcp/fastmcp/tools/hooks/benchmark.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/benchmark.js +110 -0
- package/dist/mcp/fastmcp/tools/hooks/benchmark.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/build-agents.d.ts +7 -0
- package/dist/mcp/fastmcp/tools/hooks/build-agents.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/build-agents.js +276 -0
- package/dist/mcp/fastmcp/tools/hooks/build-agents.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/explain.d.ts +6 -0
- package/dist/mcp/fastmcp/tools/hooks/explain.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/explain.js +164 -0
- package/dist/mcp/fastmcp/tools/hooks/explain.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/index.d.ts +28 -0
- package/dist/mcp/fastmcp/tools/hooks/index.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/index.js +59 -0
- package/dist/mcp/fastmcp/tools/hooks/index.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/intelligence-bridge.d.ts +91 -0
- package/dist/mcp/fastmcp/tools/hooks/intelligence-bridge.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/intelligence-bridge.js +269 -0
- package/dist/mcp/fastmcp/tools/hooks/intelligence-bridge.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/intelligence-tools.d.ts +58 -0
- package/dist/mcp/fastmcp/tools/hooks/intelligence-tools.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/intelligence-tools.js +416 -0
- package/dist/mcp/fastmcp/tools/hooks/intelligence-tools.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/metrics.d.ts +6 -0
- package/dist/mcp/fastmcp/tools/hooks/metrics.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/metrics.js +137 -0
- package/dist/mcp/fastmcp/tools/hooks/metrics.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/post-command.d.ts +7 -0
- package/dist/mcp/fastmcp/tools/hooks/post-command.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/post-command.js +91 -0
- package/dist/mcp/fastmcp/tools/hooks/post-command.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/post-edit.d.ts +12 -0
- package/dist/mcp/fastmcp/tools/hooks/post-edit.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/post-edit.js +146 -0
- package/dist/mcp/fastmcp/tools/hooks/post-edit.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/pre-command.d.ts +7 -0
- package/dist/mcp/fastmcp/tools/hooks/pre-command.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/pre-command.js +70 -0
- package/dist/mcp/fastmcp/tools/hooks/pre-command.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/pre-edit.d.ts +14 -0
- package/dist/mcp/fastmcp/tools/hooks/pre-edit.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/pre-edit.js +121 -0
- package/dist/mcp/fastmcp/tools/hooks/pre-edit.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/pretrain.d.ts +7 -0
- package/dist/mcp/fastmcp/tools/hooks/pretrain.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/pretrain.js +171 -0
- package/dist/mcp/fastmcp/tools/hooks/pretrain.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/route.d.ts +12 -0
- package/dist/mcp/fastmcp/tools/hooks/route.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/route.js +267 -0
- package/dist/mcp/fastmcp/tools/hooks/route.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/shared.d.ts +46 -0
- package/dist/mcp/fastmcp/tools/hooks/shared.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/shared.js +159 -0
- package/dist/mcp/fastmcp/tools/hooks/shared.js.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/transfer.d.ts +7 -0
- package/dist/mcp/fastmcp/tools/hooks/transfer.d.ts.map +1 -0
- package/dist/mcp/fastmcp/tools/hooks/transfer.js +151 -0
- package/dist/mcp/fastmcp/tools/hooks/transfer.js.map +1 -0
- package/dist/mcp/tools/agent-booster-tools.d.ts +10 -1
- package/dist/mcp/tools/agent-booster-tools.d.ts.map +1 -1
- package/dist/mcp/tools/agent-booster-tools.js.map +1 -1
- package/dist/mcp/tools/sona-tools.d.ts.map +1 -1
- package/dist/mcp/tools/sona-tools.js +15 -3
- package/dist/mcp/tools/sona-tools.js.map +1 -1
- package/dist/memory/SharedMemoryPool.d.ts +16 -3
- package/dist/memory/SharedMemoryPool.d.ts.map +1 -1
- package/dist/memory/SharedMemoryPool.js +33 -1
- package/dist/memory/SharedMemoryPool.js.map +1 -1
- package/dist/middleware/auth.middleware.d.ts +114 -0
- package/dist/middleware/auth.middleware.d.ts.map +1 -0
- package/dist/middleware/auth.middleware.js +222 -0
- package/dist/middleware/auth.middleware.js.map +1 -0
- package/dist/optimizations/agent-booster-migration.d.ts.map +1 -1
- package/dist/optimizations/agent-booster-migration.js.map +1 -1
- package/dist/proxy/anthropic-to-gemini.d.ts.map +1 -1
- package/dist/proxy/anthropic-to-gemini.js.map +1 -1
- package/dist/proxy/anthropic-to-openrouter.d.ts.map +1 -1
- package/dist/proxy/anthropic-to-openrouter.js.map +1 -1
- package/dist/proxy/anthropic-to-requesty.d.ts.map +1 -1
- package/dist/proxy/anthropic-to-requesty.js.map +1 -1
- package/dist/proxy/quic-proxy.d.ts +0 -1
- package/dist/proxy/quic-proxy.d.ts.map +1 -1
- package/dist/proxy/quic-proxy.js +2 -1
- package/dist/proxy/quic-proxy.js.map +1 -1
- package/dist/reasoningbank/AdvancedMemory.d.ts.map +1 -1
- package/dist/reasoningbank/AdvancedMemory.js +12 -1
- package/dist/reasoningbank/AdvancedMemory.js.map +1 -1
- package/dist/reasoningbank/HybridBackend.d.ts +9 -0
- package/dist/reasoningbank/HybridBackend.d.ts.map +1 -1
- package/dist/reasoningbank/HybridBackend.js +48 -4
- package/dist/reasoningbank/HybridBackend.js.map +1 -1
- package/dist/reasoningbank/backend-selector.d.ts +1 -1
- package/dist/reasoningbank/backend-selector.d.ts.map +1 -1
- package/dist/reasoningbank/backend-selector.js.map +1 -1
- package/dist/reasoningbank/index-new.d.ts +0 -6
- package/dist/reasoningbank/index-new.d.ts.map +1 -1
- package/dist/reasoningbank/index-new.js +9 -7
- package/dist/reasoningbank/index-new.js.map +1 -1
- package/dist/reasoningbank/index.d.ts +1 -6
- package/dist/reasoningbank/index.d.ts.map +1 -1
- package/dist/reasoningbank/index.js +10 -7
- package/dist/reasoningbank/index.js.map +1 -1
- package/dist/router/providers/onnx-local.d.ts.map +1 -1
- package/dist/router/providers/onnx-local.js +3 -1
- package/dist/router/providers/onnx-local.js.map +1 -1
- package/dist/routing/CircuitBreakerRouter.d.ts +187 -0
- package/dist/routing/CircuitBreakerRouter.d.ts.map +1 -0
- package/dist/routing/CircuitBreakerRouter.js +460 -0
- package/dist/routing/CircuitBreakerRouter.js.map +1 -0
- package/dist/routing/SemanticRouter.d.ts +164 -0
- package/dist/routing/SemanticRouter.d.ts.map +1 -0
- package/dist/routing/SemanticRouter.js +291 -0
- package/dist/routing/SemanticRouter.js.map +1 -0
- package/dist/routing/index.d.ts +12 -0
- package/dist/routing/index.d.ts.map +1 -0
- package/dist/routing/index.js +10 -0
- package/dist/routing/index.js.map +1 -0
- package/dist/services/embedding-service.d.ts.map +1 -1
- package/dist/services/embedding-service.js +5 -2
- package/dist/services/embedding-service.js.map +1 -1
- package/dist/services/sona-agent-training.js +1 -1
- package/dist/services/sona-agent-training.js.map +1 -1
- package/dist/services/sona-agentdb-integration.d.ts.map +1 -1
- package/dist/services/sona-agentdb-integration.js +10 -5
- package/dist/services/sona-agentdb-integration.js.map +1 -1
- package/dist/services/sona-service.d.ts +6 -6
- package/dist/services/sona-service.d.ts.map +1 -1
- package/dist/services/sona-service.js +3 -1
- package/dist/services/sona-service.js.map +1 -1
- package/dist/utils/audit-logger.d.ts +115 -0
- package/dist/utils/audit-logger.d.ts.map +1 -0
- package/dist/utils/audit-logger.js +228 -0
- package/dist/utils/audit-logger.js.map +1 -0
- package/dist/utils/cli.d.ts +1 -1
- package/dist/utils/cli.d.ts.map +1 -1
- package/dist/utils/cli.js +5 -0
- package/dist/utils/cli.js.map +1 -1
- package/dist/utils/input-validator.d.ts +116 -0
- package/dist/utils/input-validator.d.ts.map +1 -0
- package/dist/utils/input-validator.js +299 -0
- package/dist/utils/input-validator.js.map +1 -0
- package/dist/utils/rate-limiter.js +2 -2
- package/dist/utils/rate-limiter.js.map +1 -1
- package/package.json +5 -2
- package/wasm/reasoningbank/reasoningbank_wasm_bg.js +2 -2
- package/wasm/reasoningbank/reasoningbank_wasm_bg.wasm +0 -0
|
@@ -0,0 +1,228 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Audit Logger
|
|
3
|
+
*
|
|
4
|
+
* Comprehensive audit logging for security and compliance:
|
|
5
|
+
* - All API requests
|
|
6
|
+
* - Authentication events
|
|
7
|
+
* - Security violations
|
|
8
|
+
* - Performance metrics
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Audit Logger
|
|
12
|
+
*
|
|
13
|
+
* Logs all security-relevant events:
|
|
14
|
+
* - API requests and responses
|
|
15
|
+
* - Authentication attempts
|
|
16
|
+
* - Rate limit violations
|
|
17
|
+
* - Input validation failures
|
|
18
|
+
* - Circuit breaker state changes
|
|
19
|
+
*/
|
|
20
|
+
export class AuditLogger {
|
|
21
|
+
config;
|
|
22
|
+
memoryLog;
|
|
23
|
+
static instance;
|
|
24
|
+
constructor(config) {
|
|
25
|
+
this.config = {
|
|
26
|
+
enableConsole: config?.enableConsole ?? true,
|
|
27
|
+
enableFile: config?.enableFile ?? false,
|
|
28
|
+
logFilePath: config?.logFilePath ?? './logs/audit.log',
|
|
29
|
+
minSeverity: config?.minSeverity ?? 'INFO',
|
|
30
|
+
maxMemoryEntries: config?.maxMemoryEntries ?? 1000,
|
|
31
|
+
};
|
|
32
|
+
this.memoryLog = [];
|
|
33
|
+
}
|
|
34
|
+
/**
|
|
35
|
+
* Get singleton instance
|
|
36
|
+
*/
|
|
37
|
+
static getInstance(config) {
|
|
38
|
+
if (!AuditLogger.instance) {
|
|
39
|
+
AuditLogger.instance = new AuditLogger(config);
|
|
40
|
+
}
|
|
41
|
+
return AuditLogger.instance;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Log event
|
|
45
|
+
*
|
|
46
|
+
* @param event - Audit event to log
|
|
47
|
+
*/
|
|
48
|
+
log(event) {
|
|
49
|
+
// Check severity filter
|
|
50
|
+
const severities = ['INFO', 'WARNING', 'ERROR', 'CRITICAL'];
|
|
51
|
+
const minIndex = severities.indexOf(this.config.minSeverity);
|
|
52
|
+
const eventIndex = severities.indexOf(event.severity);
|
|
53
|
+
if (eventIndex < minIndex) {
|
|
54
|
+
return;
|
|
55
|
+
}
|
|
56
|
+
// Add to memory log
|
|
57
|
+
this.memoryLog.push(event);
|
|
58
|
+
if (this.memoryLog.length > this.config.maxMemoryEntries) {
|
|
59
|
+
this.memoryLog.shift();
|
|
60
|
+
}
|
|
61
|
+
// Console logging
|
|
62
|
+
if (this.config.enableConsole) {
|
|
63
|
+
this.logToConsole(event);
|
|
64
|
+
}
|
|
65
|
+
// File logging (in production, use Winston or Pino)
|
|
66
|
+
if (this.config.enableFile) {
|
|
67
|
+
this.logToFile(event);
|
|
68
|
+
}
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Log API request
|
|
72
|
+
*/
|
|
73
|
+
logRequest(req, res, latencyMs) {
|
|
74
|
+
this.log({
|
|
75
|
+
timestamp: Date.now(),
|
|
76
|
+
eventType: 'REQUEST',
|
|
77
|
+
severity: res.statusCode >= 500 ? 'ERROR' : res.statusCode >= 400 ? 'WARNING' : 'INFO',
|
|
78
|
+
userId: req.user?.id,
|
|
79
|
+
ip: req.ip || req.connection.remoteAddress,
|
|
80
|
+
method: req.method,
|
|
81
|
+
path: req.path,
|
|
82
|
+
statusCode: res.statusCode,
|
|
83
|
+
latencyMs,
|
|
84
|
+
message: `${req.method} ${req.path} - ${res.statusCode} (${latencyMs}ms)`,
|
|
85
|
+
metadata: {
|
|
86
|
+
userAgent: req.headers['user-agent'],
|
|
87
|
+
query: req.query,
|
|
88
|
+
},
|
|
89
|
+
});
|
|
90
|
+
}
|
|
91
|
+
/**
|
|
92
|
+
* Log authentication event
|
|
93
|
+
*/
|
|
94
|
+
logAuth(success, userId, ip, reason) {
|
|
95
|
+
this.log({
|
|
96
|
+
timestamp: Date.now(),
|
|
97
|
+
eventType: 'AUTH',
|
|
98
|
+
severity: success ? 'INFO' : 'WARNING',
|
|
99
|
+
userId,
|
|
100
|
+
ip,
|
|
101
|
+
message: success
|
|
102
|
+
? `Authentication successful for user ${userId}`
|
|
103
|
+
: `Authentication failed: ${reason}`,
|
|
104
|
+
metadata: { success, reason },
|
|
105
|
+
});
|
|
106
|
+
}
|
|
107
|
+
/**
|
|
108
|
+
* Log security violation
|
|
109
|
+
*/
|
|
110
|
+
logSecurityViolation(type, userId, ip, details) {
|
|
111
|
+
this.log({
|
|
112
|
+
timestamp: Date.now(),
|
|
113
|
+
eventType: 'SECURITY',
|
|
114
|
+
severity: 'WARNING',
|
|
115
|
+
userId,
|
|
116
|
+
ip,
|
|
117
|
+
message: `Security violation: ${type}`,
|
|
118
|
+
metadata: { type, details },
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
/**
|
|
122
|
+
* Log error
|
|
123
|
+
*/
|
|
124
|
+
logError(error, userId, ip, context) {
|
|
125
|
+
this.log({
|
|
126
|
+
timestamp: Date.now(),
|
|
127
|
+
eventType: 'ERROR',
|
|
128
|
+
severity: 'ERROR',
|
|
129
|
+
userId,
|
|
130
|
+
ip,
|
|
131
|
+
message: error.message,
|
|
132
|
+
metadata: {
|
|
133
|
+
error: error.name,
|
|
134
|
+
stack: error.stack,
|
|
135
|
+
...context,
|
|
136
|
+
},
|
|
137
|
+
});
|
|
138
|
+
}
|
|
139
|
+
/**
|
|
140
|
+
* Get recent logs
|
|
141
|
+
*/
|
|
142
|
+
getRecentLogs(limit = 100) {
|
|
143
|
+
return this.memoryLog.slice(-limit);
|
|
144
|
+
}
|
|
145
|
+
/**
|
|
146
|
+
* Get logs by user
|
|
147
|
+
*/
|
|
148
|
+
getLogsByUser(userId, limit = 100) {
|
|
149
|
+
return this.memoryLog
|
|
150
|
+
.filter(event => event.userId === userId)
|
|
151
|
+
.slice(-limit);
|
|
152
|
+
}
|
|
153
|
+
/**
|
|
154
|
+
* Get logs by type
|
|
155
|
+
*/
|
|
156
|
+
getLogsByType(eventType, limit = 100) {
|
|
157
|
+
return this.memoryLog
|
|
158
|
+
.filter(event => event.eventType === eventType)
|
|
159
|
+
.slice(-limit);
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Log to console
|
|
163
|
+
*/
|
|
164
|
+
logToConsole(event) {
|
|
165
|
+
const timestamp = new Date(event.timestamp).toISOString();
|
|
166
|
+
const prefix = `[${timestamp}] [${event.severity}] [${event.eventType}]`;
|
|
167
|
+
const logFn = event.severity === 'ERROR' || event.severity === 'CRITICAL'
|
|
168
|
+
? console.error
|
|
169
|
+
: event.severity === 'WARNING'
|
|
170
|
+
? console.warn
|
|
171
|
+
: console.log;
|
|
172
|
+
logFn(`${prefix} ${event.message}`);
|
|
173
|
+
if (event.metadata) {
|
|
174
|
+
logFn(' Metadata:', event.metadata);
|
|
175
|
+
}
|
|
176
|
+
}
|
|
177
|
+
/**
|
|
178
|
+
* Log to file (placeholder - use Winston/Pino in production)
|
|
179
|
+
*/
|
|
180
|
+
logToFile(event) {
|
|
181
|
+
// In production, use Winston or Pino for file logging
|
|
182
|
+
// This is a placeholder
|
|
183
|
+
const line = JSON.stringify(event) + '\n';
|
|
184
|
+
// fs.appendFileSync(this.config.logFilePath, line);
|
|
185
|
+
}
|
|
186
|
+
/**
|
|
187
|
+
* Clear memory logs
|
|
188
|
+
*/
|
|
189
|
+
clear() {
|
|
190
|
+
this.memoryLog = [];
|
|
191
|
+
}
|
|
192
|
+
/**
|
|
193
|
+
* Get statistics
|
|
194
|
+
*/
|
|
195
|
+
getStats() {
|
|
196
|
+
const stats = {
|
|
197
|
+
totalEvents: this.memoryLog.length,
|
|
198
|
+
byType: {},
|
|
199
|
+
bySeverity: {},
|
|
200
|
+
errorRate: 0,
|
|
201
|
+
};
|
|
202
|
+
for (const event of this.memoryLog) {
|
|
203
|
+
stats.byType[event.eventType] = (stats.byType[event.eventType] || 0) + 1;
|
|
204
|
+
stats.bySeverity[event.severity] = (stats.bySeverity[event.severity] || 0) + 1;
|
|
205
|
+
}
|
|
206
|
+
const errorCount = (stats.bySeverity['ERROR'] || 0) + (stats.bySeverity['CRITICAL'] || 0);
|
|
207
|
+
stats.errorRate = stats.totalEvents > 0 ? errorCount / stats.totalEvents : 0;
|
|
208
|
+
return stats;
|
|
209
|
+
}
|
|
210
|
+
}
|
|
211
|
+
/**
|
|
212
|
+
* Create audit logging middleware
|
|
213
|
+
*/
|
|
214
|
+
export function createAuditMiddleware(logger) {
|
|
215
|
+
const auditLogger = logger || AuditLogger.getInstance();
|
|
216
|
+
return (req, res, next) => {
|
|
217
|
+
const startTime = Date.now();
|
|
218
|
+
// Log after response finishes
|
|
219
|
+
res.on('finish', () => {
|
|
220
|
+
const latencyMs = Date.now() - startTime;
|
|
221
|
+
auditLogger.logRequest(req, res, latencyMs);
|
|
222
|
+
});
|
|
223
|
+
next();
|
|
224
|
+
};
|
|
225
|
+
}
|
|
226
|
+
// Export singleton
|
|
227
|
+
export const auditLogger = AuditLogger.getInstance();
|
|
228
|
+
//# sourceMappingURL=audit-logger.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"audit-logger.js","sourceRoot":"","sources":["../../src/utils/audit-logger.ts"],"names":[],"mappings":"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","sourcesContent":["/**\n * Audit Logger\n *\n * Comprehensive audit logging for security and compliance:\n * - All API requests\n * - Authentication events\n * - Security violations\n * - Performance metrics\n */\n\nexport interface AuditEvent {\n timestamp: number;\n eventType: 'REQUEST' | 'AUTH' | 'ERROR' | 'SECURITY' | 'PERFORMANCE';\n severity: 'INFO' | 'WARNING' | 'ERROR' | 'CRITICAL';\n userId?: string;\n ip?: string;\n method?: string;\n path?: string;\n statusCode?: number;\n latencyMs?: number;\n message: string;\n metadata?: Record<string, any>;\n}\n\nexport interface AuditLoggerConfig {\n /** Enable console logging */\n enableConsole?: boolean;\n /** Enable file logging */\n enableFile?: boolean;\n /** Log file path */\n logFilePath?: string;\n /** Minimum severity to log */\n minSeverity?: 'INFO' | 'WARNING' | 'ERROR' | 'CRITICAL';\n /** Maximum log entries in memory */\n maxMemoryEntries?: number;\n}\n\n/**\n * Audit Logger\n *\n * Logs all security-relevant events:\n * - API requests and responses\n * - Authentication attempts\n * - Rate limit violations\n * - Input validation failures\n * - Circuit breaker state changes\n */\nexport class AuditLogger {\n private config: Required<AuditLoggerConfig>;\n private memoryLog: AuditEvent[];\n private static instance: AuditLogger;\n\n constructor(config?: AuditLoggerConfig) {\n this.config = {\n enableConsole: config?.enableConsole ?? true,\n enableFile: config?.enableFile ?? false,\n logFilePath: config?.logFilePath ?? './logs/audit.log',\n minSeverity: config?.minSeverity ?? 'INFO',\n maxMemoryEntries: config?.maxMemoryEntries ?? 1000,\n };\n\n this.memoryLog = [];\n }\n\n /**\n * Get singleton instance\n */\n static getInstance(config?: AuditLoggerConfig): AuditLogger {\n if (!AuditLogger.instance) {\n AuditLogger.instance = new AuditLogger(config);\n }\n return AuditLogger.instance;\n }\n\n /**\n * Log event\n *\n * @param event - Audit event to log\n */\n log(event: AuditEvent): void {\n // Check severity filter\n const severities = ['INFO', 'WARNING', 'ERROR', 'CRITICAL'];\n const minIndex = severities.indexOf(this.config.minSeverity);\n const eventIndex = severities.indexOf(event.severity);\n\n if (eventIndex < minIndex) {\n return;\n }\n\n // Add to memory log\n this.memoryLog.push(event);\n if (this.memoryLog.length > this.config.maxMemoryEntries) {\n this.memoryLog.shift();\n }\n\n // Console logging\n if (this.config.enableConsole) {\n this.logToConsole(event);\n }\n\n // File logging (in production, use Winston or Pino)\n if (this.config.enableFile) {\n this.logToFile(event);\n }\n }\n\n /**\n * Log API request\n */\n logRequest(req: any, res: any, latencyMs: number): void {\n this.log({\n timestamp: Date.now(),\n eventType: 'REQUEST',\n severity: res.statusCode >= 500 ? 'ERROR' : res.statusCode >= 400 ? 'WARNING' : 'INFO',\n userId: req.user?.id,\n ip: req.ip || req.connection.remoteAddress,\n method: req.method,\n path: req.path,\n statusCode: res.statusCode,\n latencyMs,\n message: `${req.method} ${req.path} - ${res.statusCode} (${latencyMs}ms)`,\n metadata: {\n userAgent: req.headers['user-agent'],\n query: req.query,\n },\n });\n }\n\n /**\n * Log authentication event\n */\n logAuth(success: boolean, userId?: string, ip?: string, reason?: string): void {\n this.log({\n timestamp: Date.now(),\n eventType: 'AUTH',\n severity: success ? 'INFO' : 'WARNING',\n userId,\n ip,\n message: success\n ? `Authentication successful for user ${userId}`\n : `Authentication failed: ${reason}`,\n metadata: { success, reason },\n });\n }\n\n /**\n * Log security violation\n */\n logSecurityViolation(\n type: 'RATE_LIMIT' | 'INPUT_VALIDATION' | 'AUTH_FAILURE' | 'SUSPICIOUS_ACTIVITY',\n userId?: string,\n ip?: string,\n details?: string\n ): void {\n this.log({\n timestamp: Date.now(),\n eventType: 'SECURITY',\n severity: 'WARNING',\n userId,\n ip,\n message: `Security violation: ${type}`,\n metadata: { type, details },\n });\n }\n\n /**\n * Log error\n */\n logError(error: Error, userId?: string, ip?: string, context?: Record<string, any>): void {\n this.log({\n timestamp: Date.now(),\n eventType: 'ERROR',\n severity: 'ERROR',\n userId,\n ip,\n message: error.message,\n metadata: {\n error: error.name,\n stack: error.stack,\n ...context,\n },\n });\n }\n\n /**\n * Get recent logs\n */\n getRecentLogs(limit: number = 100): AuditEvent[] {\n return this.memoryLog.slice(-limit);\n }\n\n /**\n * Get logs by user\n */\n getLogsByUser(userId: string, limit: number = 100): AuditEvent[] {\n return this.memoryLog\n .filter(event => event.userId === userId)\n .slice(-limit);\n }\n\n /**\n * Get logs by type\n */\n getLogsByType(\n eventType: AuditEvent['eventType'],\n limit: number = 100\n ): AuditEvent[] {\n return this.memoryLog\n .filter(event => event.eventType === eventType)\n .slice(-limit);\n }\n\n /**\n * Log to console\n */\n private logToConsole(event: AuditEvent): void {\n const timestamp = new Date(event.timestamp).toISOString();\n const prefix = `[${timestamp}] [${event.severity}] [${event.eventType}]`;\n\n const logFn = event.severity === 'ERROR' || event.severity === 'CRITICAL'\n ? console.error\n : event.severity === 'WARNING'\n ? console.warn\n : console.log;\n\n logFn(`${prefix} ${event.message}`);\n\n if (event.metadata) {\n logFn(' Metadata:', event.metadata);\n }\n }\n\n /**\n * Log to file (placeholder - use Winston/Pino in production)\n */\n private logToFile(event: AuditEvent): void {\n // In production, use Winston or Pino for file logging\n // This is a placeholder\n const line = JSON.stringify(event) + '\\n';\n // fs.appendFileSync(this.config.logFilePath, line);\n }\n\n /**\n * Clear memory logs\n */\n clear(): void {\n this.memoryLog = [];\n }\n\n /**\n * Get statistics\n */\n getStats(): {\n totalEvents: number;\n byType: Record<string, number>;\n bySeverity: Record<string, number>;\n errorRate: number;\n } {\n const stats = {\n totalEvents: this.memoryLog.length,\n byType: {} as Record<string, number>,\n bySeverity: {} as Record<string, number>,\n errorRate: 0,\n };\n\n for (const event of this.memoryLog) {\n stats.byType[event.eventType] = (stats.byType[event.eventType] || 0) + 1;\n stats.bySeverity[event.severity] = (stats.bySeverity[event.severity] || 0) + 1;\n }\n\n const errorCount = (stats.bySeverity['ERROR'] || 0) + (stats.bySeverity['CRITICAL'] || 0);\n stats.errorRate = stats.totalEvents > 0 ? errorCount / stats.totalEvents : 0;\n\n return stats;\n }\n}\n\n/**\n * Create audit logging middleware\n */\nexport function createAuditMiddleware(logger?: AuditLogger) {\n const auditLogger = logger || AuditLogger.getInstance();\n\n return (req: any, res: any, next: any) => {\n const startTime = Date.now();\n\n // Log after response finishes\n res.on('finish', () => {\n const latencyMs = Date.now() - startTime;\n auditLogger.logRequest(req, res, latencyMs);\n });\n\n next();\n };\n}\n\n// Export singleton\nexport const auditLogger = AuditLogger.getInstance();\n"]}
|
package/dist/utils/cli.d.ts
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
export interface CliOptions {
|
|
2
|
-
mode: 'agent' | 'parallel' | 'list' | 'mcp' | 'mcp-manager' | 'config' | 'agent-manager' | 'proxy' | 'quic' | 'claude-code' | 'reasoningbank' | 'federation';
|
|
2
|
+
mode: 'agent' | 'parallel' | 'list' | 'mcp' | 'mcp-manager' | 'config' | 'agent-manager' | 'proxy' | 'quic' | 'claude-code' | 'reasoningbank' | 'federation' | 'hooks';
|
|
3
3
|
agent?: string;
|
|
4
4
|
task?: string;
|
|
5
5
|
model?: string;
|
package/dist/utils/cli.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/utils/cli.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,OAAO,GAAG,UAAU,GAAG,MAAM,GAAG,KAAK,GAAG,aAAa,GAAG,QAAQ,GAAG,eAAe,GAAG,OAAO,GAAG,MAAM,GAAG,aAAa,GAAG,eAAe,GAAG,YAAY,CAAC;
|
|
1
|
+
{"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../../src/utils/cli.ts"],"names":[],"mappings":"AAEA,MAAM,WAAW,UAAU;IACzB,IAAI,EAAE,OAAO,GAAG,UAAU,GAAG,MAAM,GAAG,KAAK,GAAG,aAAa,GAAG,QAAQ,GAAG,eAAe,GAAG,OAAO,GAAG,MAAM,GAAG,aAAa,GAAG,eAAe,GAAG,YAAY,GAAG,OAAO,CAAC;IACvK,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,CAAC;IAGd,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,CAAC,EAAE,MAAM,CAAC;IAGlB,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAG1B,MAAM,CAAC,EAAE,OAAO,CAAC;IACjB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,SAAS,CAAC,EAAE,MAAM,CAAC;IAGnB,YAAY,CAAC,EAAE,MAAM,GAAG,MAAM,GAAG,UAAU,CAAC;IAC5C,OAAO,CAAC,EAAE,OAAO,CAAC;IAGlB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,YAAY,CAAC,EAAE,OAAO,CAAC;IAGvB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,gBAAgB,CAAC,EAAE,SAAS,GAAG,UAAU,GAAG,MAAM,GAAG,OAAO,GAAG,SAAS,CAAC;IACzE,OAAO,CAAC,EAAE,MAAM,CAAC;IAGjB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,MAAM,CAAC;IAE1B,IAAI,CAAC,EAAE,OAAO,CAAC;IACf,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;CACpB;AAED,wBAAgB,SAAS,IAAI,UAAU,CAkMtC;AAED,wBAAgB,SAAS,IAAI,IAAI,CAiLhC;AAED,wBAAgB,eAAe,CAAC,OAAO,EAAE,UAAU,GAAG,MAAM,GAAG,IAAI,CAWlE"}
|
package/dist/utils/cli.js
CHANGED
|
@@ -49,6 +49,11 @@ export function parseArgs() {
|
|
|
49
49
|
options.mode = 'federation';
|
|
50
50
|
return options;
|
|
51
51
|
}
|
|
52
|
+
// Check for hooks command
|
|
53
|
+
if (args[0] === 'hooks') {
|
|
54
|
+
options.mode = 'hooks';
|
|
55
|
+
return options;
|
|
56
|
+
}
|
|
52
57
|
// Check for reasoningbank command
|
|
53
58
|
if (args[0] === 'reasoningbank') {
|
|
54
59
|
options.mode = 'reasoningbank';
|
package/dist/utils/cli.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/utils/cli.ts"],"names":[],"mappings":"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","sourcesContent":["// CLI argument parsing and help utilities\n\nexport interface CliOptions {\n mode: 'agent' | 'parallel' | 'list' | 'mcp' | 'mcp-manager' | 'config' | 'agent-manager' | 'proxy' | 'quic' | 'claude-code' | 'reasoningbank' | 'federation';\n agent?: string;\n task?: string;\n\n // Provider Configuration\n model?: string;\n provider?: string;\n\n // API Configuration\n anthropicApiKey?: string;\n openrouterApiKey?: string;\n\n // Agent Behavior\n stream?: boolean;\n temperature?: number;\n maxTokens?: number;\n\n // Directory Configuration\n agentsDir?: string;\n\n // Output Options\n outputFormat?: 'text' | 'json' | 'markdown';\n verbose?: boolean;\n\n // Execution Control\n timeout?: number;\n retryOnError?: boolean;\n\n // Model Optimization\n optimize?: boolean;\n optimizePriority?: 'quality' | 'balanced' | 'cost' | 'speed' | 'privacy';\n maxCost?: number;\n\n // Agent Booster Integration\n claudeCode?: boolean; // Use Agent Booster for 57x faster code edits\n agentBooster?: boolean; // Enable Agent Booster pre-processing\n boosterThreshold?: number; // Confidence threshold for Agent Booster\n\n help?: boolean;\n version?: boolean;\n mcpCommand?: string; // start, stop, status, list\n mcpServer?: string; // claude-flow, flow-nexus, agentic-payments, all\n}\n\nexport function parseArgs(): CliOptions {\n const args = process.argv.slice(2);\n const options: CliOptions = {\n mode: 'parallel'\n };\n\n // Check for proxy command first\n if (args[0] === 'proxy') {\n options.mode = 'proxy';\n return options;\n }\n\n // Check for claude-code command\n if (args[0] === 'claude-code') {\n options.mode = 'claude-code';\n return options;\n }\n\n // Check for quic command\n if (args[0] === 'quic') {\n options.mode = 'quic';\n return options;\n }\n\n // Check for MCP command\n if (args[0] === 'mcp') {\n const mcpSubcommand = args[1];\n\n // MCP Manager commands (CLI configuration)\n const managerCommands = ['add', 'list', 'remove', 'enable', 'disable', 'update', 'test', 'info', 'export', 'import'];\n\n if (managerCommands.includes(mcpSubcommand)) {\n options.mode = 'mcp-manager';\n return options;\n }\n\n // MCP Server commands (start/stop server)\n options.mode = 'mcp';\n options.mcpCommand = mcpSubcommand || 'start'; // default to start\n options.mcpServer = args[2] || 'all'; // default to all servers\n return options;\n }\n\n // Check for config command\n if (args[0] === 'config') {\n options.mode = 'config';\n return options;\n }\n\n // Check for agent management command\n if (args[0] === 'agent') {\n options.mode = 'agent-manager';\n return options;\n }\n\n // Check for federation command\n if (args[0] === 'federation') {\n options.mode = 'federation';\n return options;\n }\n\n // Check for reasoningbank command\n if (args[0] === 'reasoningbank') {\n options.mode = 'reasoningbank';\n return options;\n }\n\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n\n switch (arg) {\n case '--help':\n case '-h':\n options.help = true;\n break;\n\n case '--version':\n case '-v':\n options.version = true;\n break;\n\n case '--agent':\n case '-a':\n options.mode = 'agent';\n options.agent = args[++i];\n break;\n\n case '--task':\n case '-t':\n options.task = args[++i];\n break;\n\n case '--model':\n case '-m':\n options.model = args[++i];\n break;\n\n case '--provider':\n case '-p':\n options.provider = args[++i];\n break;\n\n case '--stream':\n case '-s':\n options.stream = true;\n break;\n\n case '--list':\n case '-l':\n options.mode = 'list';\n break;\n\n // API Configuration\n case '--anthropic-key':\n options.anthropicApiKey = args[++i];\n break;\n\n case '--openrouter-key':\n options.openrouterApiKey = args[++i];\n break;\n\n // Agent Behavior\n case '--temperature':\n options.temperature = parseFloat(args[++i]);\n break;\n\n case '--max-tokens':\n options.maxTokens = parseInt(args[++i], 10);\n break;\n\n // Directory Configuration\n case '--agents-dir':\n options.agentsDir = args[++i];\n break;\n\n // Output Options\n case '--output':\n options.outputFormat = args[++i] as 'text' | 'json' | 'markdown';\n break;\n\n case '--verbose':\n options.verbose = true;\n break;\n\n // Execution Control\n case '--timeout':\n options.timeout = parseInt(args[++i], 10);\n break;\n\n case '--retry':\n options.retryOnError = true;\n break;\n\n // Model Optimization\n case '--optimize':\n case '-O':\n options.optimize = true;\n break;\n\n case '--priority':\n options.optimizePriority = args[++i] as 'quality' | 'balanced' | 'cost' | 'speed' | 'privacy';\n break;\n\n case '--max-cost':\n options.maxCost = parseFloat(args[++i]);\n break;\n\n // Agent Booster\n case '--agent-booster':\n case '--booster':\n options.agentBooster = true;\n break;\n\n case '--booster-threshold':\n options.boosterThreshold = parseFloat(args[++i]);\n break;\n }\n }\n\n // Check environment variable for Agent Booster\n if (process.env.AGENTIC_FLOW_AGENT_BOOSTER === 'true') {\n options.agentBooster = true;\n }\n if (process.env.AGENTIC_FLOW_BOOSTER_THRESHOLD) {\n options.boosterThreshold = parseFloat(process.env.AGENTIC_FLOW_BOOSTER_THRESHOLD);\n }\n\n return options;\n}\n\nexport function printHelp(): void {\n console.log(`\nš¤ Agentic Flow - AI Agent Orchestration CLI\n\nUSAGE:\n npx agentic-flow [COMMAND] [OPTIONS]\n\nCOMMANDS:\n reasoningbank <cmd> Memory system that learns from experience (demo, test, init)\n claude-code [options] Spawn Claude Code with proxy + Agent Booster (57x faster edits)\n mcp <command> [server] Manage MCP servers (start, stop, status, list)\n config [command] Configuration wizard (set, get, list, delete, reset)\n agent <command> Agent management (list, create, info, conflicts)\n --list, -l List all available agents\n --agent, -a <name> Run specific agent mode\n (default) Run parallel mode (3 agents)\n\nREASONINGBANK COMMANDS:\n npx agentic-flow reasoningbank demo Run interactive demo comparison\n npx agentic-flow reasoningbank test Run validation tests\n npx agentic-flow reasoningbank init Initialize database\n npx agentic-flow reasoningbank benchmark Run performance benchmarks\n npx agentic-flow reasoningbank status Show memory statistics\n\nMCP COMMANDS:\n npx agentic-flow mcp start [server] Start MCP server(s)\n npx agentic-flow mcp stop [server] Stop MCP server(s)\n npx agentic-flow mcp status [server] Check MCP server status\n npx agentic-flow mcp list List all available MCP tools\n\n Available servers: claude-flow, flow-nexus, agentic-payments, all (default)\n\nOPTIONS:\n --task, -t <task> Task description for agent mode\n --model, -m <model> Model to use (supports OpenRouter models)\n --provider, -p <name> Provider (anthropic, openrouter, onnx)\n --stream, -s Enable real-time streaming output\n\n API CONFIGURATION:\n --anthropic-key <key> Override ANTHROPIC_API_KEY\n --openrouter-key <key> Override OPENROUTER_API_KEY\n\n AGENT BEHAVIOR:\n --temperature <0.0-1.0> Sampling temperature (creativity)\n --max-tokens <number> Maximum response tokens\n\n DIRECTORY:\n --agents-dir <path> Custom agents directory\n\n OUTPUT:\n --output <text|json|md> Output format\n --verbose Enable verbose logging\n\n EXECUTION:\n --timeout <ms> Execution timeout\n --retry Auto-retry on errors\n\n MODEL OPTIMIZATION:\n --optimize, -O Auto-select best model for agent/task\n --priority <type> Optimization priority (quality|balanced|cost|speed|privacy)\n --max-cost <dollars> Maximum cost per task in dollars\n\n AGENT BOOSTER (200x faster code edits!):\n --agent-booster Enable Agent Booster pre-processing\n --booster-threshold <0-1> Confidence threshold (default: 0.7)\n\n --help, -h Show this help message\n\nEXAMPLES:\n # ReasoningBank (Learn from agent experience!)\n npx agentic-flow reasoningbank demo # See 0% ā 100% success transformation\n npx agentic-flow reasoningbank test # Run 27 validation tests\n npx agentic-flow reasoningbank init # Setup memory database\n export ANTHROPIC_API_KEY=sk-ant-... # Enable LLM-based learning\n\n # Agent Booster Integration (200x faster code edits!)\n npx agentic-flow --agent coder --task \"Convert var to const in utils.js\" --agent-booster\n npx agentic-flow --agent coder --task \"Add types to api.ts\" --agent-booster --provider openrouter\n export AGENTIC_FLOW_AGENT_BOOSTER=true # Enable for all tasks\n\n # Claude Code with Agent Booster\n npx agentic-flow claude-code --provider openrouter --agent-booster\n npx agentic-flow claude-code --provider gemini \"Write a REST API\"\n npx agentic-flow claude-code --help # See all claude-code options\n\n # Agent Management\n npx agentic-flow agent list # List all agents with sources\n npx agentic-flow agent create # Interactive agent creator\n npx agentic-flow agent info coder # Get agent details\n npx agentic-flow agent conflicts # Check for conflicts\n\n # Configuration\n npx agentic-flow config # Interactive config wizard\n npx agentic-flow config set PROVIDER openrouter\n npx agentic-flow config list # View all settings\n\n # MCP Server Management\n npx agentic-flow mcp start # Start all MCP servers\n npx agentic-flow mcp list # List all 209+ MCP tools\n\n # Agent Execution (Basic)\n npx agentic-flow --list # List all agents\n npx agentic-flow --agent coder --task \"Build REST API\"\n\n # Agent Execution (Advanced)\n npx agentic-flow --agent coder --task \"Build API\" \\\\\n --provider openrouter \\\\\n --model \"meta-llama/llama-3.1-8b-instruct\" \\\\\n --temperature 0.7 \\\\\n --max-tokens 2000 \\\\\n --output json \\\\\n --verbose\n\n # Agent Execution (Custom)\n npx agentic-flow --agent my-custom-agent --task \"Your task\" \\\\\n --agents-dir ./my-agents\n\n # Parallel Mode\n npx agentic-flow # Run 3 agents in parallel\n\n # Model Optimization (Auto-select best model)\n npx agentic-flow --agent coder --task \"Build API\" --optimize\n npx agentic-flow --agent coder --task \"Build API\" --optimize --priority cost\n npx agentic-flow --agent researcher --task \"Analyze data\" --optimize --priority quality\n npx agentic-flow --agent coder --task \"Simple function\" --optimize --max-cost 0.001\n\nENVIRONMENT VARIABLES:\n ANTHROPIC_API_KEY Anthropic API key (for Claude models)\n OPENROUTER_API_KEY OpenRouter API key (for alternative models)\n USE_ONNX Set to 'true' to force ONNX local inference\n AGENT Agent name for agent mode\n TASK Task description for agent mode\n MODEL Model override for agent mode\n PROVIDER Provider to use (anthropic, openrouter, onnx)\n TOPIC Research topic for parallel mode\n DIFF Code diff for parallel mode\n DATASET Dataset hint for parallel mode\n ENABLE_STREAMING Enable streaming (true/false)\n HEALTH_PORT Health check port (default: 8080)\n\nMCP TOOLS (209+ available):\n ⢠agentic-flow: 6 tools (agent execution, creation, management)\n ⢠claude-flow: 101 tools (neural networks, GitHub, workflows, DAA)\n ⢠flow-nexus: 96 cloud tools (sandboxes, distributed swarms, templates)\n ⢠agentic-payments: 6 tools (payment authorization, multi-agent consensus)\n\nPARALLEL EXECUTION & SWARM OPTIMIZATION (v2.0):\n ⢠Automatic Topology Selection: AI recommends optimal swarm configuration\n ⢠Self-Learning System: Learns from 100+ execution patterns (0.6 ā 0.95 confidence)\n ⢠Pattern Recognition: ReasoningBank stores & retrieves successful strategies\n ⢠Performance Tracking: 3.5-5.0x speedup with hierarchical topology\n ⢠Reward System: Multi-factor scoring (speedup, success rate, efficiency)\n ⢠Adaptive Optimization: Improves recommendations over time\n\n Supported Topologies:\n - Mesh (1-10 agents): Full peer-to-peer coordination (2.5x speedup)\n - Hierarchical (6-50 agents): Coordinator delegation (3.5-4.0x speedup) ā BEST\n - Ring (1-20 agents): Sequential token passing + parallel processing\n - Star (1-30 agents): Central coordinator pattern\n\n Usage Example (CLI subprocess spawning):\n const results = await Promise.all([\n exec('npx agentic-flow --agent researcher --task \"domain1\"'),\n exec('npx agentic-flow --agent researcher --task \"domain2\"'),\n exec('npx agentic-flow --agent coder --task \"implement\"')\n ]);\n\n Auto-Optimization Example:\n import { autoSelectSwarmConfig } from './hooks/swarm-learning-optimizer';\n const config = await autoSelectSwarmConfig(reasoningBank, taskDesc, options);\n // Returns: recommendedTopology, expectedSpeedup, confidence, reasoning\n\n See: /agentic-flow/src/prompts/parallel-execution-guide.md (v2.0)\n /docs/swarm-optimization-report.md\n\nFor more information, visit: https://github.com/ruvnet/agentic-flow\n `);\n}\n\nexport function validateOptions(options: CliOptions): string | null {\n if (options.mode === 'agent') {\n if (!options.agent && !process.env.AGENT) {\n return 'Agent mode requires --agent <name> or AGENT env variable';\n }\n if (!options.task && !process.env.TASK) {\n return 'Agent mode requires --task <description> or TASK env variable';\n }\n }\n\n return null;\n}\n"]}
|
|
1
|
+
{"version":3,"file":"cli.js","sourceRoot":"","sources":["../../src/utils/cli.ts"],"names":[],"mappings":"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","sourcesContent":["// CLI argument parsing and help utilities\n\nexport interface CliOptions {\n mode: 'agent' | 'parallel' | 'list' | 'mcp' | 'mcp-manager' | 'config' | 'agent-manager' | 'proxy' | 'quic' | 'claude-code' | 'reasoningbank' | 'federation' | 'hooks';\n agent?: string;\n task?: string;\n\n // Provider Configuration\n model?: string;\n provider?: string;\n\n // API Configuration\n anthropicApiKey?: string;\n openrouterApiKey?: string;\n\n // Agent Behavior\n stream?: boolean;\n temperature?: number;\n maxTokens?: number;\n\n // Directory Configuration\n agentsDir?: string;\n\n // Output Options\n outputFormat?: 'text' | 'json' | 'markdown';\n verbose?: boolean;\n\n // Execution Control\n timeout?: number;\n retryOnError?: boolean;\n\n // Model Optimization\n optimize?: boolean;\n optimizePriority?: 'quality' | 'balanced' | 'cost' | 'speed' | 'privacy';\n maxCost?: number;\n\n // Agent Booster Integration\n claudeCode?: boolean; // Use Agent Booster for 57x faster code edits\n agentBooster?: boolean; // Enable Agent Booster pre-processing\n boosterThreshold?: number; // Confidence threshold for Agent Booster\n\n help?: boolean;\n version?: boolean;\n mcpCommand?: string; // start, stop, status, list\n mcpServer?: string; // claude-flow, flow-nexus, agentic-payments, all\n}\n\nexport function parseArgs(): CliOptions {\n const args = process.argv.slice(2);\n const options: CliOptions = {\n mode: 'parallel'\n };\n\n // Check for proxy command first\n if (args[0] === 'proxy') {\n options.mode = 'proxy';\n return options;\n }\n\n // Check for claude-code command\n if (args[0] === 'claude-code') {\n options.mode = 'claude-code';\n return options;\n }\n\n // Check for quic command\n if (args[0] === 'quic') {\n options.mode = 'quic';\n return options;\n }\n\n // Check for MCP command\n if (args[0] === 'mcp') {\n const mcpSubcommand = args[1];\n\n // MCP Manager commands (CLI configuration)\n const managerCommands = ['add', 'list', 'remove', 'enable', 'disable', 'update', 'test', 'info', 'export', 'import'];\n\n if (managerCommands.includes(mcpSubcommand)) {\n options.mode = 'mcp-manager';\n return options;\n }\n\n // MCP Server commands (start/stop server)\n options.mode = 'mcp';\n options.mcpCommand = mcpSubcommand || 'start'; // default to start\n options.mcpServer = args[2] || 'all'; // default to all servers\n return options;\n }\n\n // Check for config command\n if (args[0] === 'config') {\n options.mode = 'config';\n return options;\n }\n\n // Check for agent management command\n if (args[0] === 'agent') {\n options.mode = 'agent-manager';\n return options;\n }\n\n // Check for federation command\n if (args[0] === 'federation') {\n options.mode = 'federation';\n return options;\n }\n\n // Check for hooks command\n if (args[0] === 'hooks') {\n options.mode = 'hooks';\n return options;\n }\n\n // Check for reasoningbank command\n if (args[0] === 'reasoningbank') {\n options.mode = 'reasoningbank';\n return options;\n }\n\n for (let i = 0; i < args.length; i++) {\n const arg = args[i];\n\n switch (arg) {\n case '--help':\n case '-h':\n options.help = true;\n break;\n\n case '--version':\n case '-v':\n options.version = true;\n break;\n\n case '--agent':\n case '-a':\n options.mode = 'agent';\n options.agent = args[++i];\n break;\n\n case '--task':\n case '-t':\n options.task = args[++i];\n break;\n\n case '--model':\n case '-m':\n options.model = args[++i];\n break;\n\n case '--provider':\n case '-p':\n options.provider = args[++i];\n break;\n\n case '--stream':\n case '-s':\n options.stream = true;\n break;\n\n case '--list':\n case '-l':\n options.mode = 'list';\n break;\n\n // API Configuration\n case '--anthropic-key':\n options.anthropicApiKey = args[++i];\n break;\n\n case '--openrouter-key':\n options.openrouterApiKey = args[++i];\n break;\n\n // Agent Behavior\n case '--temperature':\n options.temperature = parseFloat(args[++i]);\n break;\n\n case '--max-tokens':\n options.maxTokens = parseInt(args[++i], 10);\n break;\n\n // Directory Configuration\n case '--agents-dir':\n options.agentsDir = args[++i];\n break;\n\n // Output Options\n case '--output':\n options.outputFormat = args[++i] as 'text' | 'json' | 'markdown';\n break;\n\n case '--verbose':\n options.verbose = true;\n break;\n\n // Execution Control\n case '--timeout':\n options.timeout = parseInt(args[++i], 10);\n break;\n\n case '--retry':\n options.retryOnError = true;\n break;\n\n // Model Optimization\n case '--optimize':\n case '-O':\n options.optimize = true;\n break;\n\n case '--priority':\n options.optimizePriority = args[++i] as 'quality' | 'balanced' | 'cost' | 'speed' | 'privacy';\n break;\n\n case '--max-cost':\n options.maxCost = parseFloat(args[++i]);\n break;\n\n // Agent Booster\n case '--agent-booster':\n case '--booster':\n options.agentBooster = true;\n break;\n\n case '--booster-threshold':\n options.boosterThreshold = parseFloat(args[++i]);\n break;\n }\n }\n\n // Check environment variable for Agent Booster\n if (process.env.AGENTIC_FLOW_AGENT_BOOSTER === 'true') {\n options.agentBooster = true;\n }\n if (process.env.AGENTIC_FLOW_BOOSTER_THRESHOLD) {\n options.boosterThreshold = parseFloat(process.env.AGENTIC_FLOW_BOOSTER_THRESHOLD);\n }\n\n return options;\n}\n\nexport function printHelp(): void {\n console.log(`\nš¤ Agentic Flow - AI Agent Orchestration CLI\n\nUSAGE:\n npx agentic-flow [COMMAND] [OPTIONS]\n\nCOMMANDS:\n reasoningbank <cmd> Memory system that learns from experience (demo, test, init)\n claude-code [options] Spawn Claude Code with proxy + Agent Booster (57x faster edits)\n mcp <command> [server] Manage MCP servers (start, stop, status, list)\n config [command] Configuration wizard (set, get, list, delete, reset)\n agent <command> Agent management (list, create, info, conflicts)\n --list, -l List all available agents\n --agent, -a <name> Run specific agent mode\n (default) Run parallel mode (3 agents)\n\nREASONINGBANK COMMANDS:\n npx agentic-flow reasoningbank demo Run interactive demo comparison\n npx agentic-flow reasoningbank test Run validation tests\n npx agentic-flow reasoningbank init Initialize database\n npx agentic-flow reasoningbank benchmark Run performance benchmarks\n npx agentic-flow reasoningbank status Show memory statistics\n\nMCP COMMANDS:\n npx agentic-flow mcp start [server] Start MCP server(s)\n npx agentic-flow mcp stop [server] Stop MCP server(s)\n npx agentic-flow mcp status [server] Check MCP server status\n npx agentic-flow mcp list List all available MCP tools\n\n Available servers: claude-flow, flow-nexus, agentic-payments, all (default)\n\nOPTIONS:\n --task, -t <task> Task description for agent mode\n --model, -m <model> Model to use (supports OpenRouter models)\n --provider, -p <name> Provider (anthropic, openrouter, onnx)\n --stream, -s Enable real-time streaming output\n\n API CONFIGURATION:\n --anthropic-key <key> Override ANTHROPIC_API_KEY\n --openrouter-key <key> Override OPENROUTER_API_KEY\n\n AGENT BEHAVIOR:\n --temperature <0.0-1.0> Sampling temperature (creativity)\n --max-tokens <number> Maximum response tokens\n\n DIRECTORY:\n --agents-dir <path> Custom agents directory\n\n OUTPUT:\n --output <text|json|md> Output format\n --verbose Enable verbose logging\n\n EXECUTION:\n --timeout <ms> Execution timeout\n --retry Auto-retry on errors\n\n MODEL OPTIMIZATION:\n --optimize, -O Auto-select best model for agent/task\n --priority <type> Optimization priority (quality|balanced|cost|speed|privacy)\n --max-cost <dollars> Maximum cost per task in dollars\n\n AGENT BOOSTER (200x faster code edits!):\n --agent-booster Enable Agent Booster pre-processing\n --booster-threshold <0-1> Confidence threshold (default: 0.7)\n\n --help, -h Show this help message\n\nEXAMPLES:\n # ReasoningBank (Learn from agent experience!)\n npx agentic-flow reasoningbank demo # See 0% ā 100% success transformation\n npx agentic-flow reasoningbank test # Run 27 validation tests\n npx agentic-flow reasoningbank init # Setup memory database\n export ANTHROPIC_API_KEY=sk-ant-... # Enable LLM-based learning\n\n # Agent Booster Integration (200x faster code edits!)\n npx agentic-flow --agent coder --task \"Convert var to const in utils.js\" --agent-booster\n npx agentic-flow --agent coder --task \"Add types to api.ts\" --agent-booster --provider openrouter\n export AGENTIC_FLOW_AGENT_BOOSTER=true # Enable for all tasks\n\n # Claude Code with Agent Booster\n npx agentic-flow claude-code --provider openrouter --agent-booster\n npx agentic-flow claude-code --provider gemini \"Write a REST API\"\n npx agentic-flow claude-code --help # See all claude-code options\n\n # Agent Management\n npx agentic-flow agent list # List all agents with sources\n npx agentic-flow agent create # Interactive agent creator\n npx agentic-flow agent info coder # Get agent details\n npx agentic-flow agent conflicts # Check for conflicts\n\n # Configuration\n npx agentic-flow config # Interactive config wizard\n npx agentic-flow config set PROVIDER openrouter\n npx agentic-flow config list # View all settings\n\n # MCP Server Management\n npx agentic-flow mcp start # Start all MCP servers\n npx agentic-flow mcp list # List all 209+ MCP tools\n\n # Agent Execution (Basic)\n npx agentic-flow --list # List all agents\n npx agentic-flow --agent coder --task \"Build REST API\"\n\n # Agent Execution (Advanced)\n npx agentic-flow --agent coder --task \"Build API\" \\\\\n --provider openrouter \\\\\n --model \"meta-llama/llama-3.1-8b-instruct\" \\\\\n --temperature 0.7 \\\\\n --max-tokens 2000 \\\\\n --output json \\\\\n --verbose\n\n # Agent Execution (Custom)\n npx agentic-flow --agent my-custom-agent --task \"Your task\" \\\\\n --agents-dir ./my-agents\n\n # Parallel Mode\n npx agentic-flow # Run 3 agents in parallel\n\n # Model Optimization (Auto-select best model)\n npx agentic-flow --agent coder --task \"Build API\" --optimize\n npx agentic-flow --agent coder --task \"Build API\" --optimize --priority cost\n npx agentic-flow --agent researcher --task \"Analyze data\" --optimize --priority quality\n npx agentic-flow --agent coder --task \"Simple function\" --optimize --max-cost 0.001\n\nENVIRONMENT VARIABLES:\n ANTHROPIC_API_KEY Anthropic API key (for Claude models)\n OPENROUTER_API_KEY OpenRouter API key (for alternative models)\n USE_ONNX Set to 'true' to force ONNX local inference\n AGENT Agent name for agent mode\n TASK Task description for agent mode\n MODEL Model override for agent mode\n PROVIDER Provider to use (anthropic, openrouter, onnx)\n TOPIC Research topic for parallel mode\n DIFF Code diff for parallel mode\n DATASET Dataset hint for parallel mode\n ENABLE_STREAMING Enable streaming (true/false)\n HEALTH_PORT Health check port (default: 8080)\n\nMCP TOOLS (209+ available):\n ⢠agentic-flow: 6 tools (agent execution, creation, management)\n ⢠claude-flow: 101 tools (neural networks, GitHub, workflows, DAA)\n ⢠flow-nexus: 96 cloud tools (sandboxes, distributed swarms, templates)\n ⢠agentic-payments: 6 tools (payment authorization, multi-agent consensus)\n\nPARALLEL EXECUTION & SWARM OPTIMIZATION (v2.0):\n ⢠Automatic Topology Selection: AI recommends optimal swarm configuration\n ⢠Self-Learning System: Learns from 100+ execution patterns (0.6 ā 0.95 confidence)\n ⢠Pattern Recognition: ReasoningBank stores & retrieves successful strategies\n ⢠Performance Tracking: 3.5-5.0x speedup with hierarchical topology\n ⢠Reward System: Multi-factor scoring (speedup, success rate, efficiency)\n ⢠Adaptive Optimization: Improves recommendations over time\n\n Supported Topologies:\n - Mesh (1-10 agents): Full peer-to-peer coordination (2.5x speedup)\n - Hierarchical (6-50 agents): Coordinator delegation (3.5-4.0x speedup) ā BEST\n - Ring (1-20 agents): Sequential token passing + parallel processing\n - Star (1-30 agents): Central coordinator pattern\n\n Usage Example (CLI subprocess spawning):\n const results = await Promise.all([\n exec('npx agentic-flow --agent researcher --task \"domain1\"'),\n exec('npx agentic-flow --agent researcher --task \"domain2\"'),\n exec('npx agentic-flow --agent coder --task \"implement\"')\n ]);\n\n Auto-Optimization Example:\n import { autoSelectSwarmConfig } from './hooks/swarm-learning-optimizer';\n const config = await autoSelectSwarmConfig(reasoningBank, taskDesc, options);\n // Returns: recommendedTopology, expectedSpeedup, confidence, reasoning\n\n See: /agentic-flow/src/prompts/parallel-execution-guide.md (v2.0)\n /docs/swarm-optimization-report.md\n\nFor more information, visit: https://github.com/ruvnet/agentic-flow\n `);\n}\n\nexport function validateOptions(options: CliOptions): string | null {\n if (options.mode === 'agent') {\n if (!options.agent && !process.env.AGENT) {\n return 'Agent mode requires --agent <name> or AGENT env variable';\n }\n if (!options.task && !process.env.TASK) {\n return 'Agent mode requires --task <description> or TASK env variable';\n }\n }\n\n return null;\n}\n"]}
|
|
@@ -0,0 +1,116 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Input Validation Utilities
|
|
3
|
+
*
|
|
4
|
+
* Provides secure input validation for RuVector integration:
|
|
5
|
+
* - Task description validation
|
|
6
|
+
* - Configuration validation
|
|
7
|
+
* - Injection attack prevention
|
|
8
|
+
* - Resource exhaustion prevention
|
|
9
|
+
*/
|
|
10
|
+
export interface ValidationOptions {
|
|
11
|
+
maxLength?: number;
|
|
12
|
+
minLength?: number;
|
|
13
|
+
allowEmpty?: boolean;
|
|
14
|
+
sanitize?: boolean;
|
|
15
|
+
}
|
|
16
|
+
export declare class ValidationError extends Error {
|
|
17
|
+
field?: string;
|
|
18
|
+
constructor(message: string, field?: string);
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Input Validator
|
|
22
|
+
*
|
|
23
|
+
* Validates all external inputs to prevent:
|
|
24
|
+
* - Injection attacks (XSS, SQL injection, prompt injection)
|
|
25
|
+
* - Resource exhaustion (excessive length, recursion)
|
|
26
|
+
* - Malicious content (scripts, control characters)
|
|
27
|
+
*/
|
|
28
|
+
export declare class InputValidator {
|
|
29
|
+
private static readonly SUSPICIOUS_PATTERNS;
|
|
30
|
+
private static readonly CONTROL_CHARS_REGEX;
|
|
31
|
+
/**
|
|
32
|
+
* Validate task description
|
|
33
|
+
*
|
|
34
|
+
* @param taskDescription - User-provided task description
|
|
35
|
+
* @param options - Validation options
|
|
36
|
+
* @returns Sanitized task description
|
|
37
|
+
* @throws ValidationError if invalid
|
|
38
|
+
*/
|
|
39
|
+
static validateTaskDescription(taskDescription: string, options?: ValidationOptions): string;
|
|
40
|
+
/**
|
|
41
|
+
* Validate agent name
|
|
42
|
+
*
|
|
43
|
+
* @param agentName - Agent identifier
|
|
44
|
+
* @returns Sanitized agent name
|
|
45
|
+
* @throws ValidationError if invalid
|
|
46
|
+
*/
|
|
47
|
+
static validateAgentName(agentName: string): string;
|
|
48
|
+
/**
|
|
49
|
+
* Validate confidence score
|
|
50
|
+
*
|
|
51
|
+
* @param confidence - Confidence score (0-1)
|
|
52
|
+
* @returns Validated confidence
|
|
53
|
+
* @throws ValidationError if invalid
|
|
54
|
+
*/
|
|
55
|
+
static validateConfidence(confidence: number): number;
|
|
56
|
+
/**
|
|
57
|
+
* Validate timeout value
|
|
58
|
+
*
|
|
59
|
+
* @param timeout - Timeout in milliseconds
|
|
60
|
+
* @param min - Minimum allowed timeout (default: 100ms)
|
|
61
|
+
* @param max - Maximum allowed timeout (default: 5 minutes)
|
|
62
|
+
* @returns Validated timeout
|
|
63
|
+
* @throws ValidationError if invalid
|
|
64
|
+
*/
|
|
65
|
+
static validateTimeout(timeout: number, min?: number, max?: number): number;
|
|
66
|
+
/**
|
|
67
|
+
* Validate array of strings
|
|
68
|
+
*
|
|
69
|
+
* @param array - Array to validate
|
|
70
|
+
* @param fieldName - Field name for error messages
|
|
71
|
+
* @param maxItems - Maximum number of items
|
|
72
|
+
* @param maxLength - Maximum length per item
|
|
73
|
+
* @returns Validated array
|
|
74
|
+
* @throws ValidationError if invalid
|
|
75
|
+
*/
|
|
76
|
+
static validateStringArray(array: unknown, fieldName: string, maxItems?: number, maxLength?: number): string[];
|
|
77
|
+
/**
|
|
78
|
+
* Validate configuration object
|
|
79
|
+
*
|
|
80
|
+
* @param config - Configuration to validate
|
|
81
|
+
* @param schema - Validation schema
|
|
82
|
+
* @returns Validated configuration
|
|
83
|
+
* @throws ValidationError if invalid
|
|
84
|
+
*/
|
|
85
|
+
static validateConfig<T extends Record<string, any>>(config: unknown, schema: {
|
|
86
|
+
[K in keyof T]: {
|
|
87
|
+
type: 'string' | 'number' | 'boolean' | 'object';
|
|
88
|
+
required?: boolean;
|
|
89
|
+
min?: number;
|
|
90
|
+
max?: number;
|
|
91
|
+
validator?: (value: any) => boolean;
|
|
92
|
+
};
|
|
93
|
+
}): T;
|
|
94
|
+
/**
|
|
95
|
+
* Sanitize HTML to prevent XSS
|
|
96
|
+
*
|
|
97
|
+
* @param html - HTML string to sanitize
|
|
98
|
+
* @returns Sanitized HTML (text only)
|
|
99
|
+
*/
|
|
100
|
+
static sanitizeHtml(html: string): string;
|
|
101
|
+
/**
|
|
102
|
+
* Validate email address
|
|
103
|
+
*
|
|
104
|
+
* @param email - Email to validate
|
|
105
|
+
* @returns Normalized email
|
|
106
|
+
* @throws ValidationError if invalid
|
|
107
|
+
*/
|
|
108
|
+
static validateEmail(email: string): string;
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Validation middleware factory
|
|
112
|
+
*
|
|
113
|
+
* Creates validation middleware for Express/Fastify routes
|
|
114
|
+
*/
|
|
115
|
+
export declare function createValidationMiddleware(validator: (req: any) => void | Promise<void>): (req: any, res: any, next: any) => Promise<void>;
|
|
116
|
+
//# sourceMappingURL=input-validator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"input-validator.d.ts","sourceRoot":"","sources":["../../src/utils/input-validator.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAEH,MAAM,WAAW,iBAAiB;IAChC,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,CAAC,EAAE,OAAO,CAAC;IACrB,QAAQ,CAAC,EAAE,OAAO,CAAC;CACpB;AAED,qBAAa,eAAgB,SAAQ,KAAK;IACJ,KAAK,CAAC,EAAE,MAAM;gBAAtC,OAAO,EAAE,MAAM,EAAS,KAAK,CAAC,EAAE,MAAM;CAInD;AAED;;;;;;;GAOG;AACH,qBAAa,cAAc;IAEzB,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAUzC;IAGF,OAAO,CAAC,MAAM,CAAC,QAAQ,CAAC,mBAAmB,CAAsB;IAEjE;;;;;;;OAOG;IACH,MAAM,CAAC,uBAAuB,CAC5B,eAAe,EAAE,MAAM,EACvB,OAAO,CAAC,EAAE,iBAAiB,GAC1B,MAAM;IA6DT;;;;;;OAMG;IACH,MAAM,CAAC,iBAAiB,CAAC,SAAS,EAAE,MAAM,GAAG,MAAM;IAuBnD;;;;;;OAMG;IACH,MAAM,CAAC,kBAAkB,CAAC,UAAU,EAAE,MAAM,GAAG,MAAM;IAmBrD;;;;;;;;OAQG;IACH,MAAM,CAAC,eAAe,CACpB,OAAO,EAAE,MAAM,EACf,GAAG,GAAE,MAAY,EACjB,GAAG,GAAE,MAAe,GACnB,MAAM;IAuBT;;;;;;;;;OASG;IACH,MAAM,CAAC,mBAAmB,CACxB,KAAK,EAAE,OAAO,EACd,SAAS,EAAE,MAAM,EACjB,QAAQ,GAAE,MAAY,EACtB,SAAS,GAAE,MAAa,GACvB,MAAM,EAAE;IAoCX;;;;;;;OAOG;IACH,MAAM,CAAC,cAAc,CAAC,CAAC,SAAS,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,EACjD,MAAM,EAAE,OAAO,EACf,MAAM,EAAE;SACL,CAAC,IAAI,MAAM,CAAC,GAAG;YACd,IAAI,EAAE,QAAQ,GAAG,QAAQ,GAAG,SAAS,GAAG,QAAQ,CAAC;YACjD,QAAQ,CAAC,EAAE,OAAO,CAAC;YACnB,GAAG,CAAC,EAAE,MAAM,CAAC;YACb,GAAG,CAAC,EAAE,MAAM,CAAC;YACb,SAAS,CAAC,EAAE,CAAC,KAAK,EAAE,GAAG,KAAK,OAAO,CAAC;SACrC;KACF,GACA,CAAC;IAmEJ;;;;;OAKG;IACH,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,MAAM,GAAG,MAAM;IAezC;;;;;;OAMG;IACH,MAAM,CAAC,aAAa,CAAC,KAAK,EAAE,MAAM,GAAG,MAAM;CAiB5C;AAED;;;;GAIG;AACH,wBAAgB,0BAA0B,CACxC,SAAS,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,GAAG,OAAO,CAAC,IAAI,CAAC,IAE/B,KAAK,GAAG,EAAE,KAAK,GAAG,EAAE,MAAM,GAAG,mBAmB5C"}
|