moflo 4.8.19 → 4.8.20
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/.claude/guidance/shipped/moflo.md +45 -0
- package/.claude/helpers/statusline.cjs +1 -1
- package/.claude/workflow-state.json +9 -0
- package/package.json +2 -2
- package/src/@claude-flow/cli/dist/src/init/statusline-generator.js +1 -1
- package/src/@claude-flow/cli/dist/src/services/agentic-flow-bridge.js +5 -3
- package/src/@claude-flow/cli/package.json +1 -1
- package/src/@claude-flow/memory/dist/agent-memory-scope.d.ts +131 -0
- package/src/@claude-flow/memory/dist/agent-memory-scope.js +223 -0
- package/src/@claude-flow/memory/dist/agent-memory-scope.test.d.ts +8 -0
- package/src/@claude-flow/memory/dist/agent-memory-scope.test.js +466 -0
- package/src/@claude-flow/memory/dist/agentdb-adapter.d.ts +165 -0
- package/src/@claude-flow/memory/dist/agentdb-adapter.js +806 -0
- package/src/@claude-flow/memory/dist/agentdb-backend.d.ts +212 -0
- package/src/@claude-flow/memory/dist/agentdb-backend.js +842 -0
- package/src/@claude-flow/memory/dist/agentdb-backend.test.d.ts +7 -0
- package/src/@claude-flow/memory/dist/agentdb-backend.test.js +258 -0
- package/src/@claude-flow/memory/dist/application/commands/delete-memory.command.d.ts +65 -0
- package/src/@claude-flow/memory/dist/application/commands/delete-memory.command.js +129 -0
- package/src/@claude-flow/memory/dist/application/commands/store-memory.command.d.ts +48 -0
- package/src/@claude-flow/memory/dist/application/commands/store-memory.command.js +72 -0
- package/src/@claude-flow/memory/dist/application/index.d.ts +12 -0
- package/src/@claude-flow/memory/dist/application/index.js +15 -0
- package/src/@claude-flow/memory/dist/application/queries/search-memory.query.d.ts +72 -0
- package/src/@claude-flow/memory/dist/application/queries/search-memory.query.js +143 -0
- package/src/@claude-flow/memory/dist/application/services/memory-application-service.d.ts +121 -0
- package/src/@claude-flow/memory/dist/application/services/memory-application-service.js +190 -0
- package/src/@claude-flow/memory/dist/auto-memory-bridge.d.ts +226 -0
- package/src/@claude-flow/memory/dist/auto-memory-bridge.js +709 -0
- package/src/@claude-flow/memory/dist/auto-memory-bridge.test.d.ts +8 -0
- package/src/@claude-flow/memory/dist/auto-memory-bridge.test.js +757 -0
- package/src/@claude-flow/memory/dist/benchmark.test.d.ts +2 -0
- package/src/@claude-flow/memory/dist/benchmark.test.js +277 -0
- package/src/@claude-flow/memory/dist/cache-manager.d.ts +134 -0
- package/src/@claude-flow/memory/dist/cache-manager.js +407 -0
- package/src/@claude-flow/memory/dist/controller-registry.d.ts +216 -0
- package/src/@claude-flow/memory/dist/controller-registry.js +893 -0
- package/src/@claude-flow/memory/dist/controller-registry.test.d.ts +14 -0
- package/src/@claude-flow/memory/dist/controller-registry.test.js +593 -0
- package/src/@claude-flow/memory/dist/database-provider.d.ts +87 -0
- package/src/@claude-flow/memory/dist/database-provider.js +372 -0
- package/src/@claude-flow/memory/dist/database-provider.test.d.ts +7 -0
- package/src/@claude-flow/memory/dist/database-provider.test.js +287 -0
- package/src/@claude-flow/memory/dist/domain/entities/memory-entry.d.ts +143 -0
- package/src/@claude-flow/memory/dist/domain/entities/memory-entry.js +226 -0
- package/src/@claude-flow/memory/dist/domain/index.d.ts +11 -0
- package/src/@claude-flow/memory/dist/domain/index.js +12 -0
- package/src/@claude-flow/memory/dist/domain/repositories/memory-repository.interface.d.ts +102 -0
- package/src/@claude-flow/memory/dist/domain/repositories/memory-repository.interface.js +11 -0
- package/src/@claude-flow/memory/dist/domain/services/memory-domain-service.d.ts +105 -0
- package/src/@claude-flow/memory/dist/domain/services/memory-domain-service.js +297 -0
- package/src/@claude-flow/memory/dist/hnsw-index.d.ts +111 -0
- package/src/@claude-flow/memory/dist/hnsw-index.js +781 -0
- package/src/@claude-flow/memory/dist/hnsw-lite.d.ts +23 -0
- package/src/@claude-flow/memory/dist/hnsw-lite.js +168 -0
- package/src/@claude-flow/memory/dist/index.d.ts +204 -0
- package/src/@claude-flow/memory/dist/index.js +358 -0
- package/src/@claude-flow/memory/dist/infrastructure/index.d.ts +17 -0
- package/src/@claude-flow/memory/dist/infrastructure/index.js +16 -0
- package/src/@claude-flow/memory/dist/infrastructure/repositories/hybrid-memory-repository.d.ts +66 -0
- package/src/@claude-flow/memory/dist/infrastructure/repositories/hybrid-memory-repository.js +409 -0
- package/src/@claude-flow/memory/dist/learning-bridge.d.ts +137 -0
- package/src/@claude-flow/memory/dist/learning-bridge.js +335 -0
- package/src/@claude-flow/memory/dist/learning-bridge.test.d.ts +8 -0
- package/src/@claude-flow/memory/dist/learning-bridge.test.js +578 -0
- package/src/@claude-flow/memory/dist/memory-graph.d.ts +100 -0
- package/src/@claude-flow/memory/dist/memory-graph.js +333 -0
- package/src/@claude-flow/memory/dist/memory-graph.test.d.ts +8 -0
- package/src/@claude-flow/memory/dist/memory-graph.test.js +609 -0
- package/src/@claude-flow/memory/dist/migration.d.ts +68 -0
- package/src/@claude-flow/memory/dist/migration.js +513 -0
- package/src/@claude-flow/memory/dist/persistent-sona.d.ts +144 -0
- package/src/@claude-flow/memory/dist/persistent-sona.js +332 -0
- package/src/@claude-flow/memory/dist/query-builder.d.ts +211 -0
- package/src/@claude-flow/memory/dist/query-builder.js +438 -0
- package/src/@claude-flow/memory/dist/rvf-backend.d.ts +51 -0
- package/src/@claude-flow/memory/dist/rvf-backend.js +481 -0
- package/src/@claude-flow/memory/dist/rvf-learning-store.d.ts +139 -0
- package/src/@claude-flow/memory/dist/rvf-learning-store.js +295 -0
- package/src/@claude-flow/memory/dist/rvf-migration.d.ts +45 -0
- package/src/@claude-flow/memory/dist/rvf-migration.js +234 -0
- package/src/@claude-flow/memory/dist/sqljs-backend.d.ts +127 -0
- package/src/@claude-flow/memory/dist/sqljs-backend.js +600 -0
- package/src/@claude-flow/memory/dist/types.d.ts +484 -0
- package/src/@claude-flow/memory/dist/types.js +58 -0
- package/src/@claude-flow/shared/dist/core/config/defaults.d.ts +41 -0
- package/src/@claude-flow/shared/dist/core/config/defaults.js +186 -0
- package/src/@claude-flow/shared/dist/core/config/index.d.ts +8 -0
- package/src/@claude-flow/shared/dist/core/config/index.js +12 -0
- package/src/@claude-flow/shared/dist/core/config/loader.d.ts +45 -0
- package/src/@claude-flow/shared/dist/core/config/loader.js +222 -0
- package/src/@claude-flow/shared/dist/core/config/schema.d.ts +1134 -0
- package/src/@claude-flow/shared/dist/core/config/schema.js +158 -0
- package/src/@claude-flow/shared/dist/core/config/validator.d.ts +92 -0
- package/src/@claude-flow/shared/dist/core/config/validator.js +147 -0
- package/src/@claude-flow/shared/dist/core/event-bus.d.ts +31 -0
- package/src/@claude-flow/shared/dist/core/event-bus.js +197 -0
- package/src/@claude-flow/shared/dist/core/index.d.ts +15 -0
- package/src/@claude-flow/shared/dist/core/index.js +19 -0
- package/src/@claude-flow/shared/dist/core/interfaces/agent.interface.d.ts +200 -0
- package/src/@claude-flow/shared/dist/core/interfaces/agent.interface.js +6 -0
- package/src/@claude-flow/shared/dist/core/interfaces/coordinator.interface.d.ts +310 -0
- package/src/@claude-flow/shared/dist/core/interfaces/coordinator.interface.js +7 -0
- package/src/@claude-flow/shared/dist/core/interfaces/event.interface.d.ts +224 -0
- package/src/@claude-flow/shared/dist/core/interfaces/event.interface.js +46 -0
- package/src/@claude-flow/shared/dist/core/interfaces/index.d.ts +10 -0
- package/src/@claude-flow/shared/dist/core/interfaces/index.js +15 -0
- package/src/@claude-flow/shared/dist/core/interfaces/memory.interface.d.ts +298 -0
- package/src/@claude-flow/shared/dist/core/interfaces/memory.interface.js +7 -0
- package/src/@claude-flow/shared/dist/core/interfaces/task.interface.d.ts +185 -0
- package/src/@claude-flow/shared/dist/core/interfaces/task.interface.js +6 -0
- package/src/@claude-flow/shared/dist/core/orchestrator/event-coordinator.d.ts +35 -0
- package/src/@claude-flow/shared/dist/core/orchestrator/event-coordinator.js +101 -0
- package/src/@claude-flow/shared/dist/core/orchestrator/health-monitor.d.ts +60 -0
- package/src/@claude-flow/shared/dist/core/orchestrator/health-monitor.js +166 -0
- package/src/@claude-flow/shared/dist/core/orchestrator/index.d.ts +46 -0
- package/src/@claude-flow/shared/dist/core/orchestrator/index.js +64 -0
- package/src/@claude-flow/shared/dist/core/orchestrator/lifecycle-manager.d.ts +56 -0
- package/src/@claude-flow/shared/dist/core/orchestrator/lifecycle-manager.js +195 -0
- package/src/@claude-flow/shared/dist/core/orchestrator/session-manager.d.ts +83 -0
- package/src/@claude-flow/shared/dist/core/orchestrator/session-manager.js +193 -0
- package/src/@claude-flow/shared/dist/core/orchestrator/task-manager.d.ts +49 -0
- package/src/@claude-flow/shared/dist/core/orchestrator/task-manager.js +253 -0
- package/src/@claude-flow/shared/dist/events/domain-events.d.ts +282 -0
- package/src/@claude-flow/shared/dist/events/domain-events.js +165 -0
- package/src/@claude-flow/shared/dist/events/event-store.d.ts +126 -0
- package/src/@claude-flow/shared/dist/events/event-store.js +432 -0
- package/src/@claude-flow/shared/dist/events/event-store.test.d.ts +8 -0
- package/src/@claude-flow/shared/dist/events/event-store.test.js +297 -0
- package/src/@claude-flow/shared/dist/events/example-usage.d.ts +10 -0
- package/src/@claude-flow/shared/dist/events/example-usage.js +193 -0
- package/src/@claude-flow/shared/dist/events/index.d.ts +21 -0
- package/src/@claude-flow/shared/dist/events/index.js +22 -0
- package/src/@claude-flow/shared/dist/events/projections.d.ts +177 -0
- package/src/@claude-flow/shared/dist/events/projections.js +421 -0
- package/src/@claude-flow/shared/dist/events/rvf-event-log.d.ts +82 -0
- package/src/@claude-flow/shared/dist/events/rvf-event-log.js +340 -0
- package/src/@claude-flow/shared/dist/events/state-reconstructor.d.ts +101 -0
- package/src/@claude-flow/shared/dist/events/state-reconstructor.js +263 -0
- package/src/@claude-flow/shared/dist/events.d.ts +80 -0
- package/src/@claude-flow/shared/dist/events.js +249 -0
- package/src/@claude-flow/shared/dist/hooks/example-usage.d.ts +42 -0
- package/src/@claude-flow/shared/dist/hooks/example-usage.js +351 -0
- package/src/@claude-flow/shared/dist/hooks/executor.d.ts +100 -0
- package/src/@claude-flow/shared/dist/hooks/executor.js +267 -0
- package/src/@claude-flow/shared/dist/hooks/hooks.test.d.ts +9 -0
- package/src/@claude-flow/shared/dist/hooks/hooks.test.js +322 -0
- package/src/@claude-flow/shared/dist/hooks/index.d.ts +52 -0
- package/src/@claude-flow/shared/dist/hooks/index.js +51 -0
- package/src/@claude-flow/shared/dist/hooks/registry.d.ts +133 -0
- package/src/@claude-flow/shared/dist/hooks/registry.js +277 -0
- package/src/@claude-flow/shared/dist/hooks/safety/bash-safety.d.ts +105 -0
- package/src/@claude-flow/shared/dist/hooks/safety/bash-safety.js +481 -0
- package/src/@claude-flow/shared/dist/hooks/safety/file-organization.d.ts +144 -0
- package/src/@claude-flow/shared/dist/hooks/safety/file-organization.js +328 -0
- package/src/@claude-flow/shared/dist/hooks/safety/git-commit.d.ts +158 -0
- package/src/@claude-flow/shared/dist/hooks/safety/git-commit.js +450 -0
- package/src/@claude-flow/shared/dist/hooks/safety/index.d.ts +17 -0
- package/src/@claude-flow/shared/dist/hooks/safety/index.js +17 -0
- package/src/@claude-flow/shared/dist/hooks/session-hooks.d.ts +234 -0
- package/src/@claude-flow/shared/dist/hooks/session-hooks.js +334 -0
- package/src/@claude-flow/shared/dist/hooks/task-hooks.d.ts +163 -0
- package/src/@claude-flow/shared/dist/hooks/task-hooks.js +326 -0
- package/src/@claude-flow/shared/dist/hooks/types.d.ts +267 -0
- package/src/@claude-flow/shared/dist/hooks/types.js +62 -0
- package/src/@claude-flow/shared/dist/hooks/verify-exports.test.d.ts +9 -0
- package/src/@claude-flow/shared/dist/hooks/verify-exports.test.js +93 -0
- package/src/@claude-flow/shared/dist/index.d.ts +20 -0
- package/src/@claude-flow/shared/dist/index.js +50 -0
- package/src/@claude-flow/shared/dist/mcp/connection-pool.d.ts +98 -0
- package/src/@claude-flow/shared/dist/mcp/connection-pool.js +364 -0
- package/src/@claude-flow/shared/dist/mcp/index.d.ts +69 -0
- package/src/@claude-flow/shared/dist/mcp/index.js +84 -0
- package/src/@claude-flow/shared/dist/mcp/server.d.ts +166 -0
- package/src/@claude-flow/shared/dist/mcp/server.js +593 -0
- package/src/@claude-flow/shared/dist/mcp/session-manager.d.ts +136 -0
- package/src/@claude-flow/shared/dist/mcp/session-manager.js +335 -0
- package/src/@claude-flow/shared/dist/mcp/tool-registry.d.ts +178 -0
- package/src/@claude-flow/shared/dist/mcp/tool-registry.js +439 -0
- package/src/@claude-flow/shared/dist/mcp/transport/http.d.ts +104 -0
- package/src/@claude-flow/shared/dist/mcp/transport/http.js +476 -0
- package/src/@claude-flow/shared/dist/mcp/transport/index.d.ts +102 -0
- package/src/@claude-flow/shared/dist/mcp/transport/index.js +238 -0
- package/src/@claude-flow/shared/dist/mcp/transport/stdio.d.ts +104 -0
- package/src/@claude-flow/shared/dist/mcp/transport/stdio.js +263 -0
- package/src/@claude-flow/shared/dist/mcp/transport/websocket.d.ts +133 -0
- package/src/@claude-flow/shared/dist/mcp/transport/websocket.js +396 -0
- package/src/@claude-flow/shared/dist/mcp/types.d.ts +438 -0
- package/src/@claude-flow/shared/dist/mcp/types.js +54 -0
- package/src/@claude-flow/shared/dist/plugin-interface.d.ts +544 -0
- package/src/@claude-flow/shared/dist/plugin-interface.js +23 -0
- package/src/@claude-flow/shared/dist/plugin-loader.d.ts +139 -0
- package/src/@claude-flow/shared/dist/plugin-loader.js +434 -0
- package/src/@claude-flow/shared/dist/plugin-registry.d.ts +183 -0
- package/src/@claude-flow/shared/dist/plugin-registry.js +457 -0
- package/src/@claude-flow/shared/dist/plugins/index.d.ts +10 -0
- package/src/@claude-flow/shared/dist/plugins/index.js +10 -0
- package/src/@claude-flow/shared/dist/plugins/official/hive-mind-plugin.d.ts +106 -0
- package/src/@claude-flow/shared/dist/plugins/official/hive-mind-plugin.js +241 -0
- package/src/@claude-flow/shared/dist/plugins/official/index.d.ts +10 -0
- package/src/@claude-flow/shared/dist/plugins/official/index.js +10 -0
- package/src/@claude-flow/shared/dist/plugins/official/maestro-plugin.d.ts +121 -0
- package/src/@claude-flow/shared/dist/plugins/official/maestro-plugin.js +355 -0
- package/src/@claude-flow/shared/dist/plugins/types.d.ts +93 -0
- package/src/@claude-flow/shared/dist/plugins/types.js +9 -0
- package/src/@claude-flow/shared/dist/resilience/bulkhead.d.ts +105 -0
- package/src/@claude-flow/shared/dist/resilience/bulkhead.js +206 -0
- package/src/@claude-flow/shared/dist/resilience/circuit-breaker.d.ts +132 -0
- package/src/@claude-flow/shared/dist/resilience/circuit-breaker.js +233 -0
- package/src/@claude-flow/shared/dist/resilience/index.d.ts +19 -0
- package/src/@claude-flow/shared/dist/resilience/index.js +19 -0
- package/src/@claude-flow/shared/dist/resilience/rate-limiter.d.ts +168 -0
- package/src/@claude-flow/shared/dist/resilience/rate-limiter.js +314 -0
- package/src/@claude-flow/shared/dist/resilience/retry.d.ts +91 -0
- package/src/@claude-flow/shared/dist/resilience/retry.js +159 -0
- package/src/@claude-flow/shared/dist/security/index.d.ts +10 -0
- package/src/@claude-flow/shared/dist/security/index.js +12 -0
- package/src/@claude-flow/shared/dist/security/input-validation.d.ts +73 -0
- package/src/@claude-flow/shared/dist/security/input-validation.js +201 -0
- package/src/@claude-flow/shared/dist/security/secure-random.d.ts +92 -0
- package/src/@claude-flow/shared/dist/security/secure-random.js +142 -0
- package/src/@claude-flow/shared/dist/services/index.d.ts +7 -0
- package/src/@claude-flow/shared/dist/services/index.js +7 -0
- package/src/@claude-flow/shared/dist/services/v3-progress.service.d.ts +124 -0
- package/src/@claude-flow/shared/dist/services/v3-progress.service.js +402 -0
- package/src/@claude-flow/shared/dist/types/agent.types.d.ts +137 -0
- package/src/@claude-flow/shared/dist/types/agent.types.js +6 -0
- package/src/@claude-flow/shared/dist/types/index.d.ts +11 -0
- package/src/@claude-flow/shared/dist/types/index.js +17 -0
- package/src/@claude-flow/shared/dist/types/mcp.types.d.ts +266 -0
- package/src/@claude-flow/shared/dist/types/mcp.types.js +7 -0
- package/src/@claude-flow/shared/dist/types/memory.types.d.ts +236 -0
- package/src/@claude-flow/shared/dist/types/memory.types.js +7 -0
- package/src/@claude-flow/shared/dist/types/swarm.types.d.ts +186 -0
- package/src/@claude-flow/shared/dist/types/swarm.types.js +65 -0
- package/src/@claude-flow/shared/dist/types/task.types.d.ts +178 -0
- package/src/@claude-flow/shared/dist/types/task.types.js +32 -0
- package/src/@claude-flow/shared/dist/types.d.ts +197 -0
- package/src/@claude-flow/shared/dist/types.js +21 -0
- package/src/@claude-flow/shared/dist/utils/secure-logger.d.ts +69 -0
- package/src/@claude-flow/shared/dist/utils/secure-logger.js +208 -0
|
@@ -0,0 +1,158 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* V3 Configuration Schemas
|
|
3
|
+
* Zod schemas for all configuration types
|
|
4
|
+
*/
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
/**
|
|
7
|
+
* Agent configuration schema
|
|
8
|
+
*/
|
|
9
|
+
export const AgentConfigSchema = z.object({
|
|
10
|
+
id: z.string().min(1),
|
|
11
|
+
name: z.string().min(1),
|
|
12
|
+
type: z.string().min(1),
|
|
13
|
+
capabilities: z.array(z.string()).default([]),
|
|
14
|
+
maxConcurrentTasks: z.number().int().min(1).default(5),
|
|
15
|
+
priority: z.number().int().min(0).max(100).default(50),
|
|
16
|
+
timeout: z.number().int().positive().optional(),
|
|
17
|
+
retryPolicy: z.object({
|
|
18
|
+
maxRetries: z.number().int().min(0).default(3),
|
|
19
|
+
backoffMs: z.number().int().positive().default(1000),
|
|
20
|
+
backoffMultiplier: z.number().positive().default(2),
|
|
21
|
+
}).optional(),
|
|
22
|
+
resources: z.object({
|
|
23
|
+
maxMemoryMb: z.number().int().positive().optional(),
|
|
24
|
+
maxCpuPercent: z.number().min(0).max(100).optional(),
|
|
25
|
+
}).optional(),
|
|
26
|
+
metadata: z.record(z.unknown()).optional(),
|
|
27
|
+
});
|
|
28
|
+
/**
|
|
29
|
+
* Task configuration schema
|
|
30
|
+
*/
|
|
31
|
+
export const TaskConfigSchema = z.object({
|
|
32
|
+
type: z.string().min(1),
|
|
33
|
+
description: z.string().min(1),
|
|
34
|
+
priority: z.number().int().min(0).max(100).default(50),
|
|
35
|
+
timeout: z.number().int().positive().optional(),
|
|
36
|
+
assignedAgent: z.string().optional(),
|
|
37
|
+
input: z.record(z.unknown()).optional(),
|
|
38
|
+
metadata: z.object({
|
|
39
|
+
requiredCapabilities: z.array(z.string()).optional(),
|
|
40
|
+
retryCount: z.number().int().min(0).optional(),
|
|
41
|
+
maxRetries: z.number().int().min(0).optional(),
|
|
42
|
+
critical: z.boolean().optional(),
|
|
43
|
+
parentTaskId: z.string().optional(),
|
|
44
|
+
childTaskIds: z.array(z.string()).optional(),
|
|
45
|
+
tags: z.array(z.string()).optional(),
|
|
46
|
+
}).optional(),
|
|
47
|
+
});
|
|
48
|
+
/**
|
|
49
|
+
* Swarm configuration schema
|
|
50
|
+
*/
|
|
51
|
+
export const SwarmConfigSchema = z.object({
|
|
52
|
+
topology: z.enum(['hierarchical', 'mesh', 'ring', 'star', 'adaptive', 'hierarchical-mesh']),
|
|
53
|
+
maxAgents: z.number().int().positive().default(20),
|
|
54
|
+
autoScale: z.object({
|
|
55
|
+
enabled: z.boolean().default(false),
|
|
56
|
+
minAgents: z.number().int().min(0).default(1),
|
|
57
|
+
maxAgents: z.number().int().positive().default(20),
|
|
58
|
+
scaleUpThreshold: z.number().min(0).max(1).default(0.8),
|
|
59
|
+
scaleDownThreshold: z.number().min(0).max(1).default(0.3),
|
|
60
|
+
}).optional(),
|
|
61
|
+
coordination: z.object({
|
|
62
|
+
consensusRequired: z.boolean().default(false),
|
|
63
|
+
timeoutMs: z.number().int().positive().default(10000),
|
|
64
|
+
retryPolicy: z.object({
|
|
65
|
+
maxRetries: z.number().int().min(0).default(3),
|
|
66
|
+
backoffMs: z.number().int().positive().default(500),
|
|
67
|
+
}),
|
|
68
|
+
}).optional(),
|
|
69
|
+
communication: z.object({
|
|
70
|
+
protocol: z.enum(['events', 'messages', 'shared-memory']).default('events'),
|
|
71
|
+
batchSize: z.number().int().positive().default(10),
|
|
72
|
+
flushIntervalMs: z.number().int().positive().default(100),
|
|
73
|
+
}).optional(),
|
|
74
|
+
metadata: z.record(z.unknown()).optional(),
|
|
75
|
+
});
|
|
76
|
+
/**
|
|
77
|
+
* Memory configuration schema
|
|
78
|
+
*/
|
|
79
|
+
export const MemoryConfigSchema = z.object({
|
|
80
|
+
type: z.enum(['sqlite', 'agentdb', 'hybrid', 'redis', 'memory']).default('hybrid'),
|
|
81
|
+
path: z.string().optional(),
|
|
82
|
+
maxSize: z.number().int().positive().optional(),
|
|
83
|
+
ttlMs: z.number().int().positive().optional(),
|
|
84
|
+
sqlite: z.object({
|
|
85
|
+
filename: z.string().optional(),
|
|
86
|
+
inMemory: z.boolean().default(false),
|
|
87
|
+
wal: z.boolean().default(true),
|
|
88
|
+
}).optional(),
|
|
89
|
+
agentdb: z.object({
|
|
90
|
+
dimensions: z.number().int().positive().default(1536),
|
|
91
|
+
indexType: z.enum(['hnsw', 'flat', 'ivf']).default('hnsw'),
|
|
92
|
+
efConstruction: z.number().int().positive().default(200),
|
|
93
|
+
m: z.number().int().positive().default(16),
|
|
94
|
+
quantization: z.enum(['none', 'scalar', 'product']).default('none'),
|
|
95
|
+
}).optional(),
|
|
96
|
+
redis: z.object({
|
|
97
|
+
host: z.string().default('localhost'),
|
|
98
|
+
port: z.number().int().positive().default(6379),
|
|
99
|
+
password: z.string().optional(),
|
|
100
|
+
db: z.number().int().min(0).default(0),
|
|
101
|
+
keyPrefix: z.string().default('claude-flow:'),
|
|
102
|
+
}).optional(),
|
|
103
|
+
hybrid: z.object({
|
|
104
|
+
vectorThreshold: z.number().int().positive().default(100),
|
|
105
|
+
}).optional(),
|
|
106
|
+
});
|
|
107
|
+
/**
|
|
108
|
+
* MCP server configuration schema
|
|
109
|
+
*/
|
|
110
|
+
export const MCPServerConfigSchema = z.object({
|
|
111
|
+
name: z.string().min(1).default('moflo'),
|
|
112
|
+
version: z.string().min(1).default('3.0.0'),
|
|
113
|
+
transport: z.object({
|
|
114
|
+
type: z.enum(['stdio', 'http', 'websocket']).default('stdio'),
|
|
115
|
+
port: z.number().int().positive().optional(),
|
|
116
|
+
host: z.string().optional(),
|
|
117
|
+
path: z.string().optional(),
|
|
118
|
+
}),
|
|
119
|
+
capabilities: z.object({
|
|
120
|
+
tools: z.boolean().default(true),
|
|
121
|
+
resources: z.boolean().default(true),
|
|
122
|
+
prompts: z.boolean().default(true),
|
|
123
|
+
logging: z.boolean().default(true),
|
|
124
|
+
experimental: z.record(z.boolean()).optional(),
|
|
125
|
+
}).optional(),
|
|
126
|
+
});
|
|
127
|
+
/**
|
|
128
|
+
* Orchestrator configuration schema
|
|
129
|
+
*/
|
|
130
|
+
export const OrchestratorConfigSchema = z.object({
|
|
131
|
+
session: z.object({
|
|
132
|
+
persistSessions: z.boolean().default(true),
|
|
133
|
+
dataDir: z.string().default('./data'),
|
|
134
|
+
sessionRetentionMs: z.number().int().positive().default(3600000),
|
|
135
|
+
}),
|
|
136
|
+
health: z.object({
|
|
137
|
+
checkInterval: z.number().int().positive().default(30000),
|
|
138
|
+
historyLimit: z.number().int().positive().default(100),
|
|
139
|
+
degradedThreshold: z.number().int().min(0).default(1),
|
|
140
|
+
unhealthyThreshold: z.number().int().min(0).default(2),
|
|
141
|
+
}),
|
|
142
|
+
lifecycle: z.object({
|
|
143
|
+
maxConcurrentAgents: z.number().int().positive().default(20),
|
|
144
|
+
spawnTimeout: z.number().int().positive().default(30000),
|
|
145
|
+
terminateTimeout: z.number().int().positive().default(10000),
|
|
146
|
+
maxSpawnRetries: z.number().int().min(0).default(3),
|
|
147
|
+
}),
|
|
148
|
+
});
|
|
149
|
+
/**
|
|
150
|
+
* Full system configuration schema
|
|
151
|
+
*/
|
|
152
|
+
export const SystemConfigSchema = z.object({
|
|
153
|
+
orchestrator: OrchestratorConfigSchema,
|
|
154
|
+
memory: MemoryConfigSchema.optional(),
|
|
155
|
+
mcp: MCPServerConfigSchema.optional(),
|
|
156
|
+
swarm: SwarmConfigSchema.optional(),
|
|
157
|
+
});
|
|
158
|
+
//# sourceMappingURL=schema.js.map
|
|
@@ -0,0 +1,92 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* V3 Configuration Validator
|
|
3
|
+
* Validation logic using Zod schemas
|
|
4
|
+
*/
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
import { type AgentConfig, type TaskConfig, type SwarmConfig, type MemoryConfig, type MCPServerConfig, type OrchestratorConfig, type SystemConfig } from './schema.js';
|
|
7
|
+
/**
|
|
8
|
+
* Validation result
|
|
9
|
+
*/
|
|
10
|
+
export interface ValidationResult<T> {
|
|
11
|
+
success: boolean;
|
|
12
|
+
data?: T;
|
|
13
|
+
errors?: ValidationError[];
|
|
14
|
+
}
|
|
15
|
+
/**
|
|
16
|
+
* Validation error
|
|
17
|
+
*/
|
|
18
|
+
export interface ValidationError {
|
|
19
|
+
path: string;
|
|
20
|
+
message: string;
|
|
21
|
+
code: string;
|
|
22
|
+
}
|
|
23
|
+
/**
|
|
24
|
+
* Validate agent configuration
|
|
25
|
+
*/
|
|
26
|
+
export declare function validateAgentConfig(data: unknown): ValidationResult<AgentConfig>;
|
|
27
|
+
/**
|
|
28
|
+
* Validate task configuration
|
|
29
|
+
*/
|
|
30
|
+
export declare function validateTaskConfig(data: unknown): ValidationResult<TaskConfig>;
|
|
31
|
+
/**
|
|
32
|
+
* Validate swarm configuration
|
|
33
|
+
*/
|
|
34
|
+
export declare function validateSwarmConfig(data: unknown): ValidationResult<SwarmConfig>;
|
|
35
|
+
/**
|
|
36
|
+
* Validate memory configuration
|
|
37
|
+
*/
|
|
38
|
+
export declare function validateMemoryConfig(data: unknown): ValidationResult<MemoryConfig>;
|
|
39
|
+
/**
|
|
40
|
+
* Validate MCP server configuration
|
|
41
|
+
*/
|
|
42
|
+
export declare function validateMCPServerConfig(data: unknown): ValidationResult<MCPServerConfig>;
|
|
43
|
+
/**
|
|
44
|
+
* Validate orchestrator configuration
|
|
45
|
+
*/
|
|
46
|
+
export declare function validateOrchestratorConfig(data: unknown): ValidationResult<OrchestratorConfig>;
|
|
47
|
+
/**
|
|
48
|
+
* Validate full system configuration
|
|
49
|
+
*/
|
|
50
|
+
export declare function validateSystemConfig(data: unknown): ValidationResult<SystemConfig>;
|
|
51
|
+
/**
|
|
52
|
+
* Configuration validator class
|
|
53
|
+
*/
|
|
54
|
+
export declare class ConfigValidator {
|
|
55
|
+
/**
|
|
56
|
+
* Validate and throw on error
|
|
57
|
+
*/
|
|
58
|
+
static validateOrThrow<TInput, TOutput>(schema: z.ZodType<TOutput, z.ZodTypeDef, TInput>, data: unknown, configName: string): TOutput;
|
|
59
|
+
/**
|
|
60
|
+
* Validate agent config or throw
|
|
61
|
+
*/
|
|
62
|
+
static validateAgentOrThrow(data: unknown): AgentConfig;
|
|
63
|
+
/**
|
|
64
|
+
* Validate task config or throw
|
|
65
|
+
*/
|
|
66
|
+
static validateTaskOrThrow(data: unknown): TaskConfig;
|
|
67
|
+
/**
|
|
68
|
+
* Validate swarm config or throw
|
|
69
|
+
*/
|
|
70
|
+
static validateSwarmOrThrow(data: unknown): SwarmConfig;
|
|
71
|
+
/**
|
|
72
|
+
* Validate memory config or throw
|
|
73
|
+
*/
|
|
74
|
+
static validateMemoryOrThrow(data: unknown): MemoryConfig;
|
|
75
|
+
/**
|
|
76
|
+
* Validate MCP server config or throw
|
|
77
|
+
*/
|
|
78
|
+
static validateMCPServerOrThrow(data: unknown): MCPServerConfig;
|
|
79
|
+
/**
|
|
80
|
+
* Validate orchestrator config or throw
|
|
81
|
+
*/
|
|
82
|
+
static validateOrchestratorOrThrow(data: unknown): OrchestratorConfig;
|
|
83
|
+
/**
|
|
84
|
+
* Validate system config or throw
|
|
85
|
+
*/
|
|
86
|
+
static validateSystemOrThrow(data: unknown): SystemConfig;
|
|
87
|
+
/**
|
|
88
|
+
* Check if data matches schema
|
|
89
|
+
*/
|
|
90
|
+
static isValid<TInput, TOutput>(schema: z.ZodType<TOutput, z.ZodTypeDef, TInput>, data: unknown): boolean;
|
|
91
|
+
}
|
|
92
|
+
//# sourceMappingURL=validator.d.ts.map
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* V3 Configuration Validator
|
|
3
|
+
* Validation logic using Zod schemas
|
|
4
|
+
*/
|
|
5
|
+
import { z } from 'zod';
|
|
6
|
+
import { AgentConfigSchema, TaskConfigSchema, SwarmConfigSchema, MemoryConfigSchema, MCPServerConfigSchema, OrchestratorConfigSchema, SystemConfigSchema, } from './schema.js';
|
|
7
|
+
/**
|
|
8
|
+
* Convert Zod error to validation errors
|
|
9
|
+
*/
|
|
10
|
+
function zodErrorToValidationErrors(error) {
|
|
11
|
+
return error.errors.map((e) => ({
|
|
12
|
+
path: e.path.join('.'),
|
|
13
|
+
message: e.message,
|
|
14
|
+
code: e.code,
|
|
15
|
+
}));
|
|
16
|
+
}
|
|
17
|
+
/**
|
|
18
|
+
* Generic validation function
|
|
19
|
+
* Uses parse + try/catch to get output types with defaults applied
|
|
20
|
+
*/
|
|
21
|
+
function validate(schema, data) {
|
|
22
|
+
try {
|
|
23
|
+
const parsed = schema.parse(data);
|
|
24
|
+
return {
|
|
25
|
+
success: true,
|
|
26
|
+
data: parsed,
|
|
27
|
+
};
|
|
28
|
+
}
|
|
29
|
+
catch (error) {
|
|
30
|
+
if (error instanceof z.ZodError) {
|
|
31
|
+
return {
|
|
32
|
+
success: false,
|
|
33
|
+
errors: zodErrorToValidationErrors(error),
|
|
34
|
+
};
|
|
35
|
+
}
|
|
36
|
+
throw error;
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* Validate agent configuration
|
|
41
|
+
*/
|
|
42
|
+
export function validateAgentConfig(data) {
|
|
43
|
+
return validate(AgentConfigSchema, data);
|
|
44
|
+
}
|
|
45
|
+
/**
|
|
46
|
+
* Validate task configuration
|
|
47
|
+
*/
|
|
48
|
+
export function validateTaskConfig(data) {
|
|
49
|
+
return validate(TaskConfigSchema, data);
|
|
50
|
+
}
|
|
51
|
+
/**
|
|
52
|
+
* Validate swarm configuration
|
|
53
|
+
*/
|
|
54
|
+
export function validateSwarmConfig(data) {
|
|
55
|
+
return validate(SwarmConfigSchema, data);
|
|
56
|
+
}
|
|
57
|
+
/**
|
|
58
|
+
* Validate memory configuration
|
|
59
|
+
*/
|
|
60
|
+
export function validateMemoryConfig(data) {
|
|
61
|
+
return validate(MemoryConfigSchema, data);
|
|
62
|
+
}
|
|
63
|
+
/**
|
|
64
|
+
* Validate MCP server configuration
|
|
65
|
+
*/
|
|
66
|
+
export function validateMCPServerConfig(data) {
|
|
67
|
+
return validate(MCPServerConfigSchema, data);
|
|
68
|
+
}
|
|
69
|
+
/**
|
|
70
|
+
* Validate orchestrator configuration
|
|
71
|
+
*/
|
|
72
|
+
export function validateOrchestratorConfig(data) {
|
|
73
|
+
return validate(OrchestratorConfigSchema, data);
|
|
74
|
+
}
|
|
75
|
+
/**
|
|
76
|
+
* Validate full system configuration
|
|
77
|
+
*/
|
|
78
|
+
export function validateSystemConfig(data) {
|
|
79
|
+
return validate(SystemConfigSchema, data);
|
|
80
|
+
}
|
|
81
|
+
/**
|
|
82
|
+
* Configuration validator class
|
|
83
|
+
*/
|
|
84
|
+
export class ConfigValidator {
|
|
85
|
+
/**
|
|
86
|
+
* Validate and throw on error
|
|
87
|
+
*/
|
|
88
|
+
static validateOrThrow(schema, data, configName) {
|
|
89
|
+
const result = validate(schema, data);
|
|
90
|
+
if (!result.success) {
|
|
91
|
+
const errorMessages = result.errors
|
|
92
|
+
?.map((e) => ` - ${e.path}: ${e.message}`)
|
|
93
|
+
.join('\n');
|
|
94
|
+
throw new Error(`Invalid ${configName} configuration:\n${errorMessages}`);
|
|
95
|
+
}
|
|
96
|
+
return result.data;
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Validate agent config or throw
|
|
100
|
+
*/
|
|
101
|
+
static validateAgentOrThrow(data) {
|
|
102
|
+
return this.validateOrThrow(AgentConfigSchema, data, 'agent');
|
|
103
|
+
}
|
|
104
|
+
/**
|
|
105
|
+
* Validate task config or throw
|
|
106
|
+
*/
|
|
107
|
+
static validateTaskOrThrow(data) {
|
|
108
|
+
return this.validateOrThrow(TaskConfigSchema, data, 'task');
|
|
109
|
+
}
|
|
110
|
+
/**
|
|
111
|
+
* Validate swarm config or throw
|
|
112
|
+
*/
|
|
113
|
+
static validateSwarmOrThrow(data) {
|
|
114
|
+
return this.validateOrThrow(SwarmConfigSchema, data, 'swarm');
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Validate memory config or throw
|
|
118
|
+
*/
|
|
119
|
+
static validateMemoryOrThrow(data) {
|
|
120
|
+
return this.validateOrThrow(MemoryConfigSchema, data, 'memory');
|
|
121
|
+
}
|
|
122
|
+
/**
|
|
123
|
+
* Validate MCP server config or throw
|
|
124
|
+
*/
|
|
125
|
+
static validateMCPServerOrThrow(data) {
|
|
126
|
+
return this.validateOrThrow(MCPServerConfigSchema, data, 'MCP server');
|
|
127
|
+
}
|
|
128
|
+
/**
|
|
129
|
+
* Validate orchestrator config or throw
|
|
130
|
+
*/
|
|
131
|
+
static validateOrchestratorOrThrow(data) {
|
|
132
|
+
return this.validateOrThrow(OrchestratorConfigSchema, data, 'orchestrator');
|
|
133
|
+
}
|
|
134
|
+
/**
|
|
135
|
+
* Validate system config or throw
|
|
136
|
+
*/
|
|
137
|
+
static validateSystemOrThrow(data) {
|
|
138
|
+
return this.validateOrThrow(SystemConfigSchema, data, 'system');
|
|
139
|
+
}
|
|
140
|
+
/**
|
|
141
|
+
* Check if data matches schema
|
|
142
|
+
*/
|
|
143
|
+
static isValid(schema, data) {
|
|
144
|
+
return validate(schema, data).success;
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
//# sourceMappingURL=validator.js.map
|
|
@@ -0,0 +1,31 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* V3 Event Bus
|
|
3
|
+
* Core event pub/sub implementation
|
|
4
|
+
*/
|
|
5
|
+
import type { IEventBus, IEventCreate, IEventHandler, IEventSubscription, IEventFilter } from './interfaces/event.interface.js';
|
|
6
|
+
/**
|
|
7
|
+
* Event bus implementation
|
|
8
|
+
*/
|
|
9
|
+
export declare class EventBus implements IEventBus {
|
|
10
|
+
private handlers;
|
|
11
|
+
private subscriptions;
|
|
12
|
+
private subscriptionId;
|
|
13
|
+
emit<T = unknown>(type: string, payload: T, options?: Partial<IEventCreate<T>>): void;
|
|
14
|
+
emitAsync<T = unknown>(type: string, payload: T, options?: Partial<IEventCreate<T>>): Promise<void>;
|
|
15
|
+
on<T = unknown>(type: string, handler: IEventHandler<T>): IEventSubscription;
|
|
16
|
+
subscribe<T = unknown>(filter: IEventFilter, handler: IEventHandler<T>): IEventSubscription;
|
|
17
|
+
once<T = unknown>(type: string, handler: IEventHandler<T>): IEventSubscription;
|
|
18
|
+
off(type: string, handler: IEventHandler): void;
|
|
19
|
+
removeAllListeners(type?: string): void;
|
|
20
|
+
listenerCount(type: string): number;
|
|
21
|
+
eventNames(): string[];
|
|
22
|
+
private createEvent;
|
|
23
|
+
private dispatchEvent;
|
|
24
|
+
private dispatchEventAsync;
|
|
25
|
+
private removeSubscription;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Create a new event bus instance
|
|
29
|
+
*/
|
|
30
|
+
export declare function createEventBus(): IEventBus;
|
|
31
|
+
//# sourceMappingURL=event-bus.d.ts.map
|
|
@@ -0,0 +1,197 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* V3 Event Bus
|
|
3
|
+
* Core event pub/sub implementation
|
|
4
|
+
*/
|
|
5
|
+
import { randomBytes } from 'crypto';
|
|
6
|
+
// Secure event ID generation
|
|
7
|
+
function generateSecureEventId() {
|
|
8
|
+
const timestamp = Date.now().toString(36);
|
|
9
|
+
const random = randomBytes(12).toString('hex');
|
|
10
|
+
return `evt_${timestamp}_${random}`;
|
|
11
|
+
}
|
|
12
|
+
/**
|
|
13
|
+
* Event subscription implementation
|
|
14
|
+
*/
|
|
15
|
+
class EventSubscription {
|
|
16
|
+
id;
|
|
17
|
+
filter;
|
|
18
|
+
removeCallback;
|
|
19
|
+
active = true;
|
|
20
|
+
paused = false;
|
|
21
|
+
constructor(id, filter, removeCallback) {
|
|
22
|
+
this.id = id;
|
|
23
|
+
this.filter = filter;
|
|
24
|
+
this.removeCallback = removeCallback;
|
|
25
|
+
}
|
|
26
|
+
unsubscribe() {
|
|
27
|
+
this.active = false;
|
|
28
|
+
this.removeCallback();
|
|
29
|
+
}
|
|
30
|
+
pause() {
|
|
31
|
+
this.paused = true;
|
|
32
|
+
}
|
|
33
|
+
resume() {
|
|
34
|
+
this.paused = false;
|
|
35
|
+
}
|
|
36
|
+
isActive() {
|
|
37
|
+
return this.active && !this.paused;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/**
|
|
41
|
+
* Event bus implementation
|
|
42
|
+
*/
|
|
43
|
+
export class EventBus {
|
|
44
|
+
handlers = new Map();
|
|
45
|
+
subscriptions = new Map();
|
|
46
|
+
subscriptionId = 0;
|
|
47
|
+
emit(type, payload, options) {
|
|
48
|
+
const event = this.createEvent(type, payload, options);
|
|
49
|
+
this.dispatchEvent(event);
|
|
50
|
+
}
|
|
51
|
+
async emitAsync(type, payload, options) {
|
|
52
|
+
const event = this.createEvent(type, payload, options);
|
|
53
|
+
await this.dispatchEventAsync(event);
|
|
54
|
+
}
|
|
55
|
+
on(type, handler) {
|
|
56
|
+
return this.subscribe({ types: [type] }, handler);
|
|
57
|
+
}
|
|
58
|
+
subscribe(filter, handler) {
|
|
59
|
+
const id = `sub_${++this.subscriptionId}`;
|
|
60
|
+
// Register for all matching types
|
|
61
|
+
const types = filter.types ?? ['*'];
|
|
62
|
+
for (const type of types) {
|
|
63
|
+
let handlers = this.handlers.get(type);
|
|
64
|
+
if (!handlers) {
|
|
65
|
+
handlers = new Set();
|
|
66
|
+
this.handlers.set(type, handlers);
|
|
67
|
+
}
|
|
68
|
+
handlers.add(handler);
|
|
69
|
+
}
|
|
70
|
+
const subscription = new EventSubscription(id, filter, () => {
|
|
71
|
+
this.removeSubscription(id);
|
|
72
|
+
});
|
|
73
|
+
this.subscriptions.set(id, { filter, handler: handler, subscription });
|
|
74
|
+
return subscription;
|
|
75
|
+
}
|
|
76
|
+
once(type, handler) {
|
|
77
|
+
const wrappedHandler = async (event) => {
|
|
78
|
+
subscription.unsubscribe();
|
|
79
|
+
await handler(event);
|
|
80
|
+
};
|
|
81
|
+
const subscription = this.on(type, wrappedHandler);
|
|
82
|
+
return subscription;
|
|
83
|
+
}
|
|
84
|
+
off(type, handler) {
|
|
85
|
+
const handlers = this.handlers.get(type);
|
|
86
|
+
if (handlers) {
|
|
87
|
+
handlers.delete(handler);
|
|
88
|
+
if (handlers.size === 0) {
|
|
89
|
+
this.handlers.delete(type);
|
|
90
|
+
}
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
removeAllListeners(type) {
|
|
94
|
+
if (type) {
|
|
95
|
+
this.handlers.delete(type);
|
|
96
|
+
}
|
|
97
|
+
else {
|
|
98
|
+
this.handlers.clear();
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
listenerCount(type) {
|
|
102
|
+
return this.handlers.get(type)?.size ?? 0;
|
|
103
|
+
}
|
|
104
|
+
eventNames() {
|
|
105
|
+
return Array.from(this.handlers.keys());
|
|
106
|
+
}
|
|
107
|
+
createEvent(type, payload, options) {
|
|
108
|
+
return {
|
|
109
|
+
id: generateSecureEventId(),
|
|
110
|
+
type,
|
|
111
|
+
timestamp: new Date(),
|
|
112
|
+
source: options?.source ?? 'event-bus',
|
|
113
|
+
payload,
|
|
114
|
+
priority: options?.priority,
|
|
115
|
+
correlationId: options?.correlationId,
|
|
116
|
+
causationId: options?.causationId,
|
|
117
|
+
metadata: options?.metadata,
|
|
118
|
+
};
|
|
119
|
+
}
|
|
120
|
+
dispatchEvent(event) {
|
|
121
|
+
// Get handlers for specific type
|
|
122
|
+
const typeHandlers = this.handlers.get(event.type);
|
|
123
|
+
// Get wildcard handlers
|
|
124
|
+
const wildcardHandlers = this.handlers.get('*');
|
|
125
|
+
const allHandlers = new Set();
|
|
126
|
+
if (typeHandlers) {
|
|
127
|
+
for (const handler of typeHandlers) {
|
|
128
|
+
allHandlers.add(handler);
|
|
129
|
+
}
|
|
130
|
+
}
|
|
131
|
+
if (wildcardHandlers) {
|
|
132
|
+
for (const handler of wildcardHandlers) {
|
|
133
|
+
allHandlers.add(handler);
|
|
134
|
+
}
|
|
135
|
+
}
|
|
136
|
+
for (const handler of allHandlers) {
|
|
137
|
+
try {
|
|
138
|
+
const result = handler(event);
|
|
139
|
+
if (result instanceof Promise) {
|
|
140
|
+
result.catch((error) => {
|
|
141
|
+
console.error(`Error in async event handler for ${event.type}:`, error);
|
|
142
|
+
});
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
catch (error) {
|
|
146
|
+
console.error(`Error in event handler for ${event.type}:`, error);
|
|
147
|
+
}
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
async dispatchEventAsync(event) {
|
|
151
|
+
const typeHandlers = this.handlers.get(event.type);
|
|
152
|
+
const wildcardHandlers = this.handlers.get('*');
|
|
153
|
+
const allHandlers = new Set();
|
|
154
|
+
if (typeHandlers) {
|
|
155
|
+
for (const handler of typeHandlers) {
|
|
156
|
+
allHandlers.add(handler);
|
|
157
|
+
}
|
|
158
|
+
}
|
|
159
|
+
if (wildcardHandlers) {
|
|
160
|
+
for (const handler of wildcardHandlers) {
|
|
161
|
+
allHandlers.add(handler);
|
|
162
|
+
}
|
|
163
|
+
}
|
|
164
|
+
const promises = Array.from(allHandlers).map(async (handler) => {
|
|
165
|
+
try {
|
|
166
|
+
await handler(event);
|
|
167
|
+
}
|
|
168
|
+
catch (error) {
|
|
169
|
+
console.error(`Error in event handler for ${event.type}:`, error);
|
|
170
|
+
}
|
|
171
|
+
});
|
|
172
|
+
await Promise.allSettled(promises);
|
|
173
|
+
}
|
|
174
|
+
removeSubscription(id) {
|
|
175
|
+
const sub = this.subscriptions.get(id);
|
|
176
|
+
if (sub) {
|
|
177
|
+
const types = sub.filter.types ?? ['*'];
|
|
178
|
+
for (const type of types) {
|
|
179
|
+
const handlers = this.handlers.get(type);
|
|
180
|
+
if (handlers) {
|
|
181
|
+
handlers.delete(sub.handler);
|
|
182
|
+
if (handlers.size === 0) {
|
|
183
|
+
this.handlers.delete(type);
|
|
184
|
+
}
|
|
185
|
+
}
|
|
186
|
+
}
|
|
187
|
+
this.subscriptions.delete(id);
|
|
188
|
+
}
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
/**
|
|
192
|
+
* Create a new event bus instance
|
|
193
|
+
*/
|
|
194
|
+
export function createEventBus() {
|
|
195
|
+
return new EventBus();
|
|
196
|
+
}
|
|
197
|
+
//# sourceMappingURL=event-bus.js.map
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* V3 Core Module - Public API
|
|
3
|
+
* Domain-Driven Design with Clean Architecture
|
|
4
|
+
*
|
|
5
|
+
* This module provides the core architecture for claude-flow v3:
|
|
6
|
+
* - Decomposed orchestrator (task, session, health, lifecycle management)
|
|
7
|
+
* - Event-driven architecture with event bus and coordinator
|
|
8
|
+
* - Type-safe configuration with Zod validation
|
|
9
|
+
* - Clean interfaces following DDD principles
|
|
10
|
+
*/
|
|
11
|
+
export * from './interfaces/index.js';
|
|
12
|
+
export { EventBus, createEventBus } from './event-bus.js';
|
|
13
|
+
export * from './orchestrator/index.js';
|
|
14
|
+
export * from './config/index.js';
|
|
15
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* V3 Core Module - Public API
|
|
3
|
+
* Domain-Driven Design with Clean Architecture
|
|
4
|
+
*
|
|
5
|
+
* This module provides the core architecture for claude-flow v3:
|
|
6
|
+
* - Decomposed orchestrator (task, session, health, lifecycle management)
|
|
7
|
+
* - Event-driven architecture with event bus and coordinator
|
|
8
|
+
* - Type-safe configuration with Zod validation
|
|
9
|
+
* - Clean interfaces following DDD principles
|
|
10
|
+
*/
|
|
11
|
+
// Interfaces (Domain contracts)
|
|
12
|
+
export * from './interfaces/index.js';
|
|
13
|
+
// Event system
|
|
14
|
+
export { EventBus, createEventBus } from './event-bus.js';
|
|
15
|
+
// Orchestrator components (decomposed)
|
|
16
|
+
export * from './orchestrator/index.js';
|
|
17
|
+
// Configuration
|
|
18
|
+
export * from './config/index.js';
|
|
19
|
+
//# sourceMappingURL=index.js.map
|