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,241 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* HiveMind Plugin - Official Plugin (ADR-004)
|
|
3
|
+
*
|
|
4
|
+
* Implements collective intelligence and emergent behavior patterns.
|
|
5
|
+
* Part of the official plugin collection.
|
|
6
|
+
*
|
|
7
|
+
* @module v3/shared/plugins/official/hive-mind
|
|
8
|
+
*/
|
|
9
|
+
import { HookEvent, HookPriority } from '../../hooks/index.js';
|
|
10
|
+
/**
|
|
11
|
+
* HiveMind Plugin Implementation
|
|
12
|
+
*/
|
|
13
|
+
export class HiveMindPlugin {
|
|
14
|
+
id = 'hive-mind';
|
|
15
|
+
name = 'HiveMind Collective Intelligence';
|
|
16
|
+
version = '1.0.0';
|
|
17
|
+
description = 'Collective intelligence with consensus mechanisms and emergent behavior';
|
|
18
|
+
context;
|
|
19
|
+
config;
|
|
20
|
+
decisions = new Map();
|
|
21
|
+
patterns = new Map();
|
|
22
|
+
collectiveMemory = new Map();
|
|
23
|
+
constructor(config) {
|
|
24
|
+
this.config = {
|
|
25
|
+
enabled: true,
|
|
26
|
+
consensusThreshold: 0.7,
|
|
27
|
+
collectiveMemoryEnabled: true,
|
|
28
|
+
emergentBehaviorEnabled: true,
|
|
29
|
+
maxVotingRounds: 3,
|
|
30
|
+
decisionTimeout: 30000,
|
|
31
|
+
...config,
|
|
32
|
+
};
|
|
33
|
+
}
|
|
34
|
+
async initialize(context) {
|
|
35
|
+
this.context = context;
|
|
36
|
+
// Register hooks for collective behavior
|
|
37
|
+
context.hooks?.register(HookEvent.PreTaskExecute, async (ctx) => {
|
|
38
|
+
// Check collective memory for similar tasks
|
|
39
|
+
const taskKey = this.generateTaskKey(ctx.task);
|
|
40
|
+
const previous = this.collectiveMemory.get(taskKey);
|
|
41
|
+
if (previous && ctx.metadata) {
|
|
42
|
+
ctx.metadata.collectiveInsight = previous;
|
|
43
|
+
}
|
|
44
|
+
return { success: true, continueChain: true };
|
|
45
|
+
}, HookPriority.Normal, { name: 'hive-mind-pre-task' });
|
|
46
|
+
context.hooks?.register(HookEvent.PostTaskComplete, async (ctx) => {
|
|
47
|
+
// Store result in collective memory
|
|
48
|
+
if (this.config.collectiveMemoryEnabled && ctx.task) {
|
|
49
|
+
const taskInfo = ctx.task;
|
|
50
|
+
this.collectiveMemory.set(taskInfo.id, {
|
|
51
|
+
result: ctx.metadata?.result,
|
|
52
|
+
timestamp: new Date(),
|
|
53
|
+
agentId: ctx.agent?.id,
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
// Detect emergent patterns
|
|
57
|
+
if (this.config.emergentBehaviorEnabled && ctx.task) {
|
|
58
|
+
this.detectEmergentPatterns(ctx.task);
|
|
59
|
+
}
|
|
60
|
+
return { success: true, continueChain: true };
|
|
61
|
+
}, HookPriority.Normal, { name: 'hive-mind-post-task' });
|
|
62
|
+
}
|
|
63
|
+
async shutdown() {
|
|
64
|
+
this.decisions.clear();
|
|
65
|
+
this.patterns.clear();
|
|
66
|
+
this.collectiveMemory.clear();
|
|
67
|
+
this.context = undefined;
|
|
68
|
+
}
|
|
69
|
+
// ============================================================================
|
|
70
|
+
// Collective Decision Making
|
|
71
|
+
// ============================================================================
|
|
72
|
+
/**
|
|
73
|
+
* Request a collective decision from the swarm
|
|
74
|
+
*/
|
|
75
|
+
async requestDecision(question, options) {
|
|
76
|
+
const decision = {
|
|
77
|
+
id: `decision-${Date.now()}`,
|
|
78
|
+
question,
|
|
79
|
+
votes: new Map(),
|
|
80
|
+
consensusConfidence: 0,
|
|
81
|
+
timestamp: new Date(),
|
|
82
|
+
};
|
|
83
|
+
this.decisions.set(decision.id, decision);
|
|
84
|
+
// Generate initial vote distribution from available agents
|
|
85
|
+
// When integrated with swarm, this receives real agent votes via event system
|
|
86
|
+
for (let i = 0; i < options.length && i < 3; i++) {
|
|
87
|
+
decision.votes.set(`agent-${i}`, {
|
|
88
|
+
agentId: `agent-${i}`,
|
|
89
|
+
vote: options[i % options.length],
|
|
90
|
+
confidence: 0.7 + Math.random() * 0.3,
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
// Calculate consensus
|
|
94
|
+
const voteCounts = new Map();
|
|
95
|
+
for (const vote of decision.votes.values()) {
|
|
96
|
+
voteCounts.set(vote.vote, (voteCounts.get(vote.vote) ?? 0) + vote.confidence);
|
|
97
|
+
}
|
|
98
|
+
let maxVotes = 0;
|
|
99
|
+
let consensusOption = '';
|
|
100
|
+
for (const [option, count] of voteCounts) {
|
|
101
|
+
if (count > maxVotes) {
|
|
102
|
+
maxVotes = count;
|
|
103
|
+
consensusOption = option;
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
const totalConfidence = Array.from(decision.votes.values()).reduce((sum, v) => sum + v.confidence, 0);
|
|
107
|
+
const consensusConfidence = maxVotes / totalConfidence;
|
|
108
|
+
if (consensusConfidence >= this.config.consensusThreshold) {
|
|
109
|
+
decision.consensus = consensusOption;
|
|
110
|
+
decision.consensusConfidence = consensusConfidence;
|
|
111
|
+
}
|
|
112
|
+
return decision;
|
|
113
|
+
}
|
|
114
|
+
/**
|
|
115
|
+
* Submit a vote for a decision
|
|
116
|
+
*/
|
|
117
|
+
submitVote(decisionId, agentId, vote, confidence) {
|
|
118
|
+
const decision = this.decisions.get(decisionId);
|
|
119
|
+
if (!decision)
|
|
120
|
+
return false;
|
|
121
|
+
decision.votes.set(agentId, { agentId, vote, confidence });
|
|
122
|
+
this.recalculateConsensus(decision);
|
|
123
|
+
return true;
|
|
124
|
+
}
|
|
125
|
+
/**
|
|
126
|
+
* Get decision result
|
|
127
|
+
*/
|
|
128
|
+
getDecision(decisionId) {
|
|
129
|
+
return this.decisions.get(decisionId);
|
|
130
|
+
}
|
|
131
|
+
// ============================================================================
|
|
132
|
+
// Emergent Behavior Detection
|
|
133
|
+
// ============================================================================
|
|
134
|
+
/**
|
|
135
|
+
* Detect emergent patterns from agent behavior
|
|
136
|
+
*/
|
|
137
|
+
detectEmergentPatterns(taskData) {
|
|
138
|
+
// Analyze task patterns
|
|
139
|
+
const type = taskData.description?.split(' ')[0] ?? 'unknown';
|
|
140
|
+
const patternKey = `pattern-${type}`;
|
|
141
|
+
const existing = this.patterns.get(patternKey);
|
|
142
|
+
if (existing) {
|
|
143
|
+
existing.strength += 0.1;
|
|
144
|
+
if (!existing.contributors.includes(String(taskData.agentId))) {
|
|
145
|
+
existing.contributors.push(String(taskData.agentId));
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
else if (this.collectiveMemory.size > 5) {
|
|
149
|
+
// Only create patterns after enough collective memory
|
|
150
|
+
this.patterns.set(patternKey, {
|
|
151
|
+
id: patternKey,
|
|
152
|
+
type: 'task-pattern',
|
|
153
|
+
description: `Emergent pattern for ${type} tasks`,
|
|
154
|
+
contributors: [String(taskData.agentId)],
|
|
155
|
+
strength: 0.5,
|
|
156
|
+
discoveredAt: new Date(),
|
|
157
|
+
});
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
/**
|
|
161
|
+
* Get emergent patterns
|
|
162
|
+
*/
|
|
163
|
+
getEmergentPatterns() {
|
|
164
|
+
return Array.from(this.patterns.values()).filter((p) => p.strength > 0.5);
|
|
165
|
+
}
|
|
166
|
+
// ============================================================================
|
|
167
|
+
// Collective Memory
|
|
168
|
+
// ============================================================================
|
|
169
|
+
/**
|
|
170
|
+
* Store in collective memory
|
|
171
|
+
*/
|
|
172
|
+
storeCollective(key, value) {
|
|
173
|
+
this.collectiveMemory.set(key, {
|
|
174
|
+
value,
|
|
175
|
+
timestamp: new Date(),
|
|
176
|
+
accessCount: 0,
|
|
177
|
+
});
|
|
178
|
+
}
|
|
179
|
+
/**
|
|
180
|
+
* Retrieve from collective memory
|
|
181
|
+
*/
|
|
182
|
+
retrieveCollective(key) {
|
|
183
|
+
const entry = this.collectiveMemory.get(key);
|
|
184
|
+
if (entry) {
|
|
185
|
+
entry.accessCount++;
|
|
186
|
+
return entry.value;
|
|
187
|
+
}
|
|
188
|
+
return undefined;
|
|
189
|
+
}
|
|
190
|
+
/**
|
|
191
|
+
* Get collective memory statistics
|
|
192
|
+
*/
|
|
193
|
+
getCollectiveStats() {
|
|
194
|
+
return {
|
|
195
|
+
totalEntries: this.collectiveMemory.size,
|
|
196
|
+
patterns: this.patterns.size,
|
|
197
|
+
decisions: this.decisions.size,
|
|
198
|
+
topPatterns: this.getEmergentPatterns().slice(0, 5),
|
|
199
|
+
};
|
|
200
|
+
}
|
|
201
|
+
// ============================================================================
|
|
202
|
+
// Private Helpers
|
|
203
|
+
// ============================================================================
|
|
204
|
+
generateTaskKey(taskData) {
|
|
205
|
+
if (!taskData)
|
|
206
|
+
return 'unknown';
|
|
207
|
+
return `${taskData.description || 'task'}-${JSON.stringify(taskData.metadata ?? {})}`.slice(0, 100);
|
|
208
|
+
}
|
|
209
|
+
recalculateConsensus(decision) {
|
|
210
|
+
const voteCounts = new Map();
|
|
211
|
+
let totalConfidence = 0;
|
|
212
|
+
for (const vote of decision.votes.values()) {
|
|
213
|
+
voteCounts.set(vote.vote, (voteCounts.get(vote.vote) ?? 0) + vote.confidence);
|
|
214
|
+
totalConfidence += vote.confidence;
|
|
215
|
+
}
|
|
216
|
+
let maxVotes = 0;
|
|
217
|
+
let consensusOption = '';
|
|
218
|
+
for (const [option, count] of voteCounts) {
|
|
219
|
+
if (count > maxVotes) {
|
|
220
|
+
maxVotes = count;
|
|
221
|
+
consensusOption = option;
|
|
222
|
+
}
|
|
223
|
+
}
|
|
224
|
+
const consensusConfidence = totalConfidence > 0 ? maxVotes / totalConfidence : 0;
|
|
225
|
+
if (consensusConfidence >= this.config.consensusThreshold) {
|
|
226
|
+
decision.consensus = consensusOption;
|
|
227
|
+
decision.consensusConfidence = consensusConfidence;
|
|
228
|
+
}
|
|
229
|
+
else {
|
|
230
|
+
decision.consensus = undefined;
|
|
231
|
+
decision.consensusConfidence = consensusConfidence;
|
|
232
|
+
}
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
/**
|
|
236
|
+
* Factory function
|
|
237
|
+
*/
|
|
238
|
+
export function createHiveMindPlugin(config) {
|
|
239
|
+
return new HiveMindPlugin(config);
|
|
240
|
+
}
|
|
241
|
+
//# sourceMappingURL=hive-mind-plugin.js.map
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Official Plugins - ADR-004 Implementation
|
|
3
|
+
*
|
|
4
|
+
* Exports all official @claude-flow plugins.
|
|
5
|
+
*
|
|
6
|
+
* @module v3/shared/plugins/official
|
|
7
|
+
*/
|
|
8
|
+
export { HiveMindPlugin, createHiveMindPlugin, type HiveMindConfig, type CollectiveDecision, type EmergentPattern, } from './hive-mind-plugin.js';
|
|
9
|
+
export { MaestroPlugin, createMaestroPlugin, type MaestroConfig, type WorkflowStep, type Workflow, type OrchestrationResult, } from './maestro-plugin.js';
|
|
10
|
+
//# sourceMappingURL=index.d.ts.map
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Official Plugins - ADR-004 Implementation
|
|
3
|
+
*
|
|
4
|
+
* Exports all official @claude-flow plugins.
|
|
5
|
+
*
|
|
6
|
+
* @module v3/shared/plugins/official
|
|
7
|
+
*/
|
|
8
|
+
export { HiveMindPlugin, createHiveMindPlugin, } from './hive-mind-plugin.js';
|
|
9
|
+
export { MaestroPlugin, createMaestroPlugin, } from './maestro-plugin.js';
|
|
10
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1,121 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Maestro Plugin - Official Plugin (ADR-004)
|
|
3
|
+
*
|
|
4
|
+
* Implements orchestration patterns for complex multi-agent workflows.
|
|
5
|
+
* Part of the official plugin collection.
|
|
6
|
+
*
|
|
7
|
+
* @module v3/shared/plugins/official/maestro
|
|
8
|
+
*/
|
|
9
|
+
import type { ClaudeFlowPlugin, PluginContext, PluginConfig } from '../types.js';
|
|
10
|
+
/**
|
|
11
|
+
* Maestro configuration
|
|
12
|
+
*/
|
|
13
|
+
export interface MaestroConfig extends PluginConfig {
|
|
14
|
+
orchestrationMode: 'sequential' | 'parallel' | 'adaptive';
|
|
15
|
+
maxConcurrentWorkflows: number;
|
|
16
|
+
workflowTimeout: number;
|
|
17
|
+
autoRecovery: boolean;
|
|
18
|
+
checkpointInterval: number;
|
|
19
|
+
}
|
|
20
|
+
/**
|
|
21
|
+
* Workflow step
|
|
22
|
+
*/
|
|
23
|
+
export interface WorkflowStep {
|
|
24
|
+
id: string;
|
|
25
|
+
name: string;
|
|
26
|
+
type: string;
|
|
27
|
+
input: Record<string, unknown>;
|
|
28
|
+
dependencies: string[];
|
|
29
|
+
assignedAgent?: string;
|
|
30
|
+
status: 'pending' | 'running' | 'completed' | 'failed' | 'skipped';
|
|
31
|
+
output?: unknown;
|
|
32
|
+
error?: string;
|
|
33
|
+
startedAt?: Date;
|
|
34
|
+
completedAt?: Date;
|
|
35
|
+
}
|
|
36
|
+
/**
|
|
37
|
+
* Workflow definition
|
|
38
|
+
*/
|
|
39
|
+
export interface Workflow {
|
|
40
|
+
id: string;
|
|
41
|
+
name: string;
|
|
42
|
+
description: string;
|
|
43
|
+
steps: WorkflowStep[];
|
|
44
|
+
status: 'created' | 'running' | 'paused' | 'completed' | 'failed';
|
|
45
|
+
currentStep?: string;
|
|
46
|
+
progress: number;
|
|
47
|
+
createdAt: Date;
|
|
48
|
+
startedAt?: Date;
|
|
49
|
+
completedAt?: Date;
|
|
50
|
+
checkpoints: Map<string, unknown>;
|
|
51
|
+
}
|
|
52
|
+
/**
|
|
53
|
+
* Orchestration result
|
|
54
|
+
*/
|
|
55
|
+
export interface OrchestrationResult {
|
|
56
|
+
workflowId: string;
|
|
57
|
+
success: boolean;
|
|
58
|
+
stepsCompleted: number;
|
|
59
|
+
stepsTotal: number;
|
|
60
|
+
outputs: Record<string, unknown>;
|
|
61
|
+
errors: Array<{
|
|
62
|
+
stepId: string;
|
|
63
|
+
error: string;
|
|
64
|
+
}>;
|
|
65
|
+
duration: number;
|
|
66
|
+
}
|
|
67
|
+
/**
|
|
68
|
+
* Maestro Plugin Implementation
|
|
69
|
+
*/
|
|
70
|
+
export declare class MaestroPlugin implements ClaudeFlowPlugin {
|
|
71
|
+
readonly id = "maestro";
|
|
72
|
+
readonly name = "Maestro Workflow Orchestrator";
|
|
73
|
+
readonly version = "1.0.0";
|
|
74
|
+
readonly description = "Complex multi-agent workflow orchestration with adaptive strategies";
|
|
75
|
+
private context?;
|
|
76
|
+
private config;
|
|
77
|
+
private workflows;
|
|
78
|
+
private activeWorkflows;
|
|
79
|
+
constructor(config?: Partial<MaestroConfig>);
|
|
80
|
+
initialize(context: PluginContext): Promise<void>;
|
|
81
|
+
shutdown(): Promise<void>;
|
|
82
|
+
/**
|
|
83
|
+
* Create a new workflow
|
|
84
|
+
*/
|
|
85
|
+
createWorkflow(name: string, description: string, steps: Array<Omit<WorkflowStep, 'id' | 'status'>>): Workflow;
|
|
86
|
+
/**
|
|
87
|
+
* Execute a workflow
|
|
88
|
+
*/
|
|
89
|
+
executeWorkflow(workflowId: string): Promise<OrchestrationResult>;
|
|
90
|
+
/**
|
|
91
|
+
* Pause a workflow
|
|
92
|
+
*/
|
|
93
|
+
pauseWorkflow(workflowId: string): boolean;
|
|
94
|
+
/**
|
|
95
|
+
* Resume a paused workflow
|
|
96
|
+
*/
|
|
97
|
+
resumeWorkflow(workflowId: string): Promise<OrchestrationResult>;
|
|
98
|
+
/**
|
|
99
|
+
* Get workflow status
|
|
100
|
+
*/
|
|
101
|
+
getWorkflow(workflowId: string): Workflow | undefined;
|
|
102
|
+
/**
|
|
103
|
+
* List all workflows
|
|
104
|
+
*/
|
|
105
|
+
listWorkflows(): Workflow[];
|
|
106
|
+
private executeSequential;
|
|
107
|
+
private executeParallel;
|
|
108
|
+
private executeAdaptive;
|
|
109
|
+
private executeStep;
|
|
110
|
+
private buildExecutionLayers;
|
|
111
|
+
private resolveInputReferences;
|
|
112
|
+
private updateProgress;
|
|
113
|
+
private updateWorkflowProgress;
|
|
114
|
+
private handleWorkflowError;
|
|
115
|
+
private checkpointWorkflow;
|
|
116
|
+
}
|
|
117
|
+
/**
|
|
118
|
+
* Factory function
|
|
119
|
+
*/
|
|
120
|
+
export declare function createMaestroPlugin(config?: Partial<MaestroConfig>): MaestroPlugin;
|
|
121
|
+
//# sourceMappingURL=maestro-plugin.d.ts.map
|