nexus-prime 0.2.0
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/README.md +253 -0
- package/dist/agents/adapters/mcp.d.ts +21 -0
- package/dist/agents/adapters/mcp.d.ts.map +1 -0
- package/dist/agents/adapters/mcp.js +447 -0
- package/dist/agents/adapters/mcp.js.map +1 -0
- package/dist/agents/adapters.d.ts +57 -0
- package/dist/agents/adapters.d.ts.map +1 -0
- package/dist/agents/adapters.js +151 -0
- package/dist/agents/adapters.js.map +1 -0
- package/dist/agents/coordinator.d.ts +75 -0
- package/dist/agents/coordinator.d.ts.map +1 -0
- package/dist/agents/coordinator.js +339 -0
- package/dist/agents/coordinator.js.map +1 -0
- package/dist/agents/core/types.d.ts +157 -0
- package/dist/agents/core/types.d.ts.map +1 -0
- package/dist/agents/core/types.js +5 -0
- package/dist/agents/core/types.js.map +1 -0
- package/dist/agents/learner.d.ts +25 -0
- package/dist/agents/learner.d.ts.map +1 -0
- package/dist/agents/learner.js +88 -0
- package/dist/agents/learner.js.map +1 -0
- package/dist/cli.d.ts +6 -0
- package/dist/cli.d.ts.map +1 -0
- package/dist/cli.js +237 -0
- package/dist/cli.js.map +1 -0
- package/dist/config.d.ts +74 -0
- package/dist/config.d.ts.map +1 -0
- package/dist/config.js +73 -0
- package/dist/config.js.map +1 -0
- package/dist/core/evolution.d.ts +122 -0
- package/dist/core/evolution.d.ts.map +1 -0
- package/dist/core/evolution.js +319 -0
- package/dist/core/evolution.js.map +1 -0
- package/dist/core/memory.d.ts +96 -0
- package/dist/core/memory.d.ts.map +1 -0
- package/dist/core/memory.js +304 -0
- package/dist/core/memory.js.map +1 -0
- package/dist/core/optimize.d.ts +100 -0
- package/dist/core/optimize.d.ts.map +1 -0
- package/dist/core/optimize.js +263 -0
- package/dist/core/optimize.js.map +1 -0
- package/dist/core/types.d.ts +155 -0
- package/dist/core/types.d.ts.map +1 -0
- package/dist/core/types.js +5 -0
- package/dist/core/types.js.map +1 -0
- package/dist/core/wave.d.ts +55 -0
- package/dist/core/wave.d.ts.map +1 -0
- package/dist/core/wave.js +119 -0
- package/dist/core/wave.js.map +1 -0
- package/dist/engines/benchmark.d.ts +76 -0
- package/dist/engines/benchmark.d.ts.map +1 -0
- package/dist/engines/benchmark.js +167 -0
- package/dist/engines/benchmark.js.map +1 -0
- package/dist/engines/cache-manager.d.ts +75 -0
- package/dist/engines/cache-manager.d.ts.map +1 -0
- package/dist/engines/cache-manager.js +200 -0
- package/dist/engines/cache-manager.js.map +1 -0
- package/dist/engines/context.d.ts +50 -0
- package/dist/engines/context.d.ts.map +1 -0
- package/dist/engines/context.js +99 -0
- package/dist/engines/context.js.map +1 -0
- package/dist/engines/embedder.d.ts +55 -0
- package/dist/engines/embedder.d.ts.map +1 -0
- package/dist/engines/embedder.js +223 -0
- package/dist/engines/embedder.js.map +1 -0
- package/dist/engines/guardrails-bridge.d.ts +64 -0
- package/dist/engines/guardrails-bridge.d.ts.map +1 -0
- package/dist/engines/guardrails-bridge.js +251 -0
- package/dist/engines/guardrails-bridge.js.map +1 -0
- package/dist/engines/index.d.ts +14 -0
- package/dist/engines/index.d.ts.map +1 -0
- package/dist/engines/index.js +14 -0
- package/dist/engines/index.js.map +1 -0
- package/dist/engines/memory.d.ts +76 -0
- package/dist/engines/memory.d.ts.map +1 -0
- package/dist/engines/memory.js +431 -0
- package/dist/engines/memory.js.map +1 -0
- package/dist/engines/meta-learner.d.ts +87 -0
- package/dist/engines/meta-learner.d.ts.map +1 -0
- package/dist/engines/meta-learner.js +214 -0
- package/dist/engines/meta-learner.js.map +1 -0
- package/dist/engines/orchestrator.d.ts +69 -0
- package/dist/engines/orchestrator.d.ts.map +1 -0
- package/dist/engines/orchestrator.js +175 -0
- package/dist/engines/orchestrator.js.map +1 -0
- package/dist/engines/pod-network.d.ts +31 -0
- package/dist/engines/pod-network.d.ts.map +1 -0
- package/dist/engines/pod-network.js +108 -0
- package/dist/engines/pod-network.js.map +1 -0
- package/dist/engines/token-optimizer.d.ts +53 -0
- package/dist/engines/token-optimizer.d.ts.map +1 -0
- package/dist/engines/token-optimizer.js +115 -0
- package/dist/engines/token-optimizer.js.map +1 -0
- package/dist/engines/token-supremacy.d.ts +86 -0
- package/dist/engines/token-supremacy.d.ts.map +1 -0
- package/dist/engines/token-supremacy.js +403 -0
- package/dist/engines/token-supremacy.js.map +1 -0
- package/dist/index.d.ts +99 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +302 -0
- package/dist/index.js.map +1 -0
- package/dist/nexus-prime.d.ts +15 -0
- package/dist/nexus-prime.d.ts.map +1 -0
- package/dist/nexus-prime.js +15 -0
- package/dist/nexus-prime.js.map +1 -0
- package/dist/phantom/index.d.ts +135 -0
- package/dist/phantom/index.d.ts.map +1 -0
- package/dist/phantom/index.js +286 -0
- package/dist/phantom/index.js.map +1 -0
- package/dist/phantom/merge-oracle.d.ts +35 -0
- package/dist/phantom/merge-oracle.d.ts.map +1 -0
- package/dist/phantom/merge-oracle.js +189 -0
- package/dist/phantom/merge-oracle.js.map +1 -0
- package/dist/phantom/phase4-orchestrator.d.ts +14 -0
- package/dist/phantom/phase4-orchestrator.d.ts.map +1 -0
- package/dist/phantom/phase4-orchestrator.js +488 -0
- package/dist/phantom/phase4-orchestrator.js.map +1 -0
- package/dist/verify-guardrails.d.ts +2 -0
- package/dist/verify-guardrails.d.ts.map +1 -0
- package/dist/verify-guardrails.js +48 -0
- package/dist/verify-guardrails.js.map +1 -0
- package/dist/verify-pod-sync.d.ts +2 -0
- package/dist/verify-pod-sync.d.ts.map +1 -0
- package/dist/verify-pod-sync.js +41 -0
- package/dist/verify-pod-sync.js.map +1 -0
- package/dist/verify-substrate.d.ts +2 -0
- package/dist/verify-substrate.d.ts.map +1 -0
- package/dist/verify-substrate.js +41 -0
- package/dist/verify-substrate.js.map +1 -0
- package/dist/verify-token-scoring.d.ts +2 -0
- package/dist/verify-token-scoring.d.ts.map +1 -0
- package/dist/verify-token-scoring.js +37 -0
- package/dist/verify-token-scoring.js.map +1 -0
- package/package.json +80 -0
|
@@ -0,0 +1,151 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Adapters for different agent platforms
|
|
3
|
+
*/
|
|
4
|
+
export class OpenClawAdapter {
|
|
5
|
+
name = 'openclaw';
|
|
6
|
+
type = 'openclaw';
|
|
7
|
+
connected = false;
|
|
8
|
+
agents = [];
|
|
9
|
+
async connect() {
|
|
10
|
+
this.connected = true;
|
|
11
|
+
console.log('[OpenClaw Adapter] Connected');
|
|
12
|
+
}
|
|
13
|
+
async disconnect() {
|
|
14
|
+
this.connected = false;
|
|
15
|
+
console.log('[OpenClaw Adapter] Disconnected');
|
|
16
|
+
}
|
|
17
|
+
async send(message) {
|
|
18
|
+
if (!this.connected) {
|
|
19
|
+
throw new Error('Adapter not connected');
|
|
20
|
+
}
|
|
21
|
+
console.log('[OpenClaw Adapter] Sending:', message);
|
|
22
|
+
}
|
|
23
|
+
receive(message) {
|
|
24
|
+
console.log('[OpenClaw Adapter] Received:', message);
|
|
25
|
+
}
|
|
26
|
+
async spawnAgent(type, config) {
|
|
27
|
+
const agentId = `openclaw_${type}_${Date.now()}`;
|
|
28
|
+
this.agents.push(agentId);
|
|
29
|
+
console.log(`[OpenClaw Adapter] Spawned agent: ${agentId}`);
|
|
30
|
+
return agentId;
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
export class ClaudeCodeAdapter {
|
|
34
|
+
name = 'claude-code';
|
|
35
|
+
type = 'claude-code';
|
|
36
|
+
connected = false;
|
|
37
|
+
agents = [];
|
|
38
|
+
async connect() {
|
|
39
|
+
this.connected = true;
|
|
40
|
+
console.log('[Claude Code Adapter] Connected');
|
|
41
|
+
}
|
|
42
|
+
async disconnect() {
|
|
43
|
+
this.connected = false;
|
|
44
|
+
console.log('[Claude Code Adapter] Disconnected');
|
|
45
|
+
}
|
|
46
|
+
async send(message) {
|
|
47
|
+
if (!this.connected) {
|
|
48
|
+
throw new Error('Adapter not connected');
|
|
49
|
+
}
|
|
50
|
+
console.log('[Claude Code Adapter] Sending:', message);
|
|
51
|
+
}
|
|
52
|
+
receive(message) {
|
|
53
|
+
console.log('[Claude Code Adapter] Received:', message);
|
|
54
|
+
}
|
|
55
|
+
async spawnAgent(type, config) {
|
|
56
|
+
const agentId = `claude_${type}_${Date.now()}`;
|
|
57
|
+
this.agents.push(agentId);
|
|
58
|
+
console.log(`[Claude Code Adapter] Spawned agent: ${agentId}`);
|
|
59
|
+
return agentId;
|
|
60
|
+
}
|
|
61
|
+
}
|
|
62
|
+
export class RufloAdapter {
|
|
63
|
+
name = 'ruflo';
|
|
64
|
+
type = 'ruflo';
|
|
65
|
+
connected = false;
|
|
66
|
+
agents = [];
|
|
67
|
+
async connect() {
|
|
68
|
+
this.connected = true;
|
|
69
|
+
console.log('[Ruflo Adapter] Connected');
|
|
70
|
+
}
|
|
71
|
+
async disconnect() {
|
|
72
|
+
this.connected = false;
|
|
73
|
+
console.log('[Ruflo Adapter] Disconnected');
|
|
74
|
+
}
|
|
75
|
+
async send(message) {
|
|
76
|
+
if (!this.connected) {
|
|
77
|
+
throw new Error('Adapter not connected');
|
|
78
|
+
}
|
|
79
|
+
console.log('[Ruflo Adapter] Sending:', message);
|
|
80
|
+
}
|
|
81
|
+
receive(message) {
|
|
82
|
+
console.log('[Ruflo Adapter] Received:', message);
|
|
83
|
+
}
|
|
84
|
+
async spawnAgent(type, config) {
|
|
85
|
+
const agentId = `ruflo_${type}_${Date.now()}`;
|
|
86
|
+
this.agents.push(agentId);
|
|
87
|
+
console.log(`[Ruflo Adapter] Spawned agent: ${agentId}`);
|
|
88
|
+
return agentId;
|
|
89
|
+
}
|
|
90
|
+
}
|
|
91
|
+
export class CustomAdapter {
|
|
92
|
+
name;
|
|
93
|
+
type = 'custom';
|
|
94
|
+
connected = false;
|
|
95
|
+
agents = [];
|
|
96
|
+
sendHandler;
|
|
97
|
+
receiveHandler;
|
|
98
|
+
constructor(name) {
|
|
99
|
+
this.name = name;
|
|
100
|
+
}
|
|
101
|
+
async connect() {
|
|
102
|
+
this.connected = true;
|
|
103
|
+
console.log(`[Custom Adapter: ${this.name}] Connected`);
|
|
104
|
+
}
|
|
105
|
+
async disconnect() {
|
|
106
|
+
this.connected = false;
|
|
107
|
+
console.log(`[Custom Adapter: ${this.name}] Disconnected`);
|
|
108
|
+
}
|
|
109
|
+
async send(message) {
|
|
110
|
+
if (!this.connected) {
|
|
111
|
+
throw new Error('Adapter not connected');
|
|
112
|
+
}
|
|
113
|
+
if (this.sendHandler) {
|
|
114
|
+
await this.sendHandler(message);
|
|
115
|
+
}
|
|
116
|
+
}
|
|
117
|
+
receive(message) {
|
|
118
|
+
if (this.receiveHandler) {
|
|
119
|
+
this.receiveHandler(message);
|
|
120
|
+
}
|
|
121
|
+
}
|
|
122
|
+
setSendHandler(handler) {
|
|
123
|
+
this.sendHandler = handler;
|
|
124
|
+
}
|
|
125
|
+
setReceiveHandler(handler) {
|
|
126
|
+
this.receiveHandler = handler;
|
|
127
|
+
}
|
|
128
|
+
async spawnAgent(type, config) {
|
|
129
|
+
const agentId = `${this.name}_${type}_${Date.now()}`;
|
|
130
|
+
this.agents.push(agentId);
|
|
131
|
+
return agentId;
|
|
132
|
+
}
|
|
133
|
+
}
|
|
134
|
+
import { MCPAdapter } from './adapters/mcp.js';
|
|
135
|
+
export function createAdapter(type, customName) {
|
|
136
|
+
switch (type) {
|
|
137
|
+
case 'openclaw':
|
|
138
|
+
return new OpenClawAdapter();
|
|
139
|
+
case 'claude-code':
|
|
140
|
+
return new ClaudeCodeAdapter();
|
|
141
|
+
case 'ruflo':
|
|
142
|
+
return new RufloAdapter();
|
|
143
|
+
case 'mcp':
|
|
144
|
+
return new MCPAdapter();
|
|
145
|
+
case 'custom':
|
|
146
|
+
return new CustomAdapter(customName ?? 'custom');
|
|
147
|
+
default:
|
|
148
|
+
throw new Error(`Unknown adapter type: ${type}`);
|
|
149
|
+
}
|
|
150
|
+
}
|
|
151
|
+
//# sourceMappingURL=adapters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"adapters.js","sourceRoot":"","sources":["../../src/agents/adapters.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,75 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Coordination System
|
|
3
|
+
*
|
|
4
|
+
* Swarm topologies and consensus protocols for multi-agent coordination.
|
|
5
|
+
*/
|
|
6
|
+
import { Agent, ConsensusState } from '../core/types.js';
|
|
7
|
+
export type Topology = 'peer' | 'hierarchical' | 'ring' | 'star';
|
|
8
|
+
export type Consensus = 'raft' | 'bft' | 'gossip' | 'crdt';
|
|
9
|
+
export declare class AgentCoordinator {
|
|
10
|
+
private agents;
|
|
11
|
+
private topology;
|
|
12
|
+
private consensus;
|
|
13
|
+
private consensusState;
|
|
14
|
+
constructor(topology?: Topology, consensus?: Consensus);
|
|
15
|
+
/**
|
|
16
|
+
* Register an agent
|
|
17
|
+
*/
|
|
18
|
+
register(agent: Agent): void;
|
|
19
|
+
/**
|
|
20
|
+
* Unregister an agent
|
|
21
|
+
*/
|
|
22
|
+
unregister(agentId: string): void;
|
|
23
|
+
/**
|
|
24
|
+
* Get agent
|
|
25
|
+
*/
|
|
26
|
+
getAgent(agentId: string): Agent | undefined;
|
|
27
|
+
/**
|
|
28
|
+
* Get all agents
|
|
29
|
+
*/
|
|
30
|
+
getAllAgents(): Agent[];
|
|
31
|
+
/**
|
|
32
|
+
* Get agents by type
|
|
33
|
+
*/
|
|
34
|
+
getAgentsByType(type: Agent['type']): Agent[];
|
|
35
|
+
/**
|
|
36
|
+
* Get neighbors for an agent based on topology
|
|
37
|
+
*/
|
|
38
|
+
getNeighbors(agentId: string): string[];
|
|
39
|
+
private getPeerNeighbors;
|
|
40
|
+
private getHierarchicalNeighbors;
|
|
41
|
+
private getRingNeighbors;
|
|
42
|
+
private getStarNeighbors;
|
|
43
|
+
/**
|
|
44
|
+
* Coordinate task across agents
|
|
45
|
+
*/
|
|
46
|
+
coordinate(task: string, agents: string[]): Promise<Array<{
|
|
47
|
+
agentId: string;
|
|
48
|
+
result: unknown;
|
|
49
|
+
}>>;
|
|
50
|
+
private hierarchicalCoordination;
|
|
51
|
+
private parallelCoordination;
|
|
52
|
+
private ringCoordination;
|
|
53
|
+
private starCoordination;
|
|
54
|
+
private distributeWork;
|
|
55
|
+
private simulateWork;
|
|
56
|
+
/**
|
|
57
|
+
* Achieve consensus on a decision
|
|
58
|
+
*/
|
|
59
|
+
consensusDecide(proposal: string, agents: string[]): Promise<{
|
|
60
|
+
decided: boolean;
|
|
61
|
+
result?: string;
|
|
62
|
+
}>;
|
|
63
|
+
private raftConsensus;
|
|
64
|
+
private bftConsensus;
|
|
65
|
+
private gossipConsensus;
|
|
66
|
+
private crdtConsensus;
|
|
67
|
+
private requestVotes;
|
|
68
|
+
getTopology(): Topology;
|
|
69
|
+
setTopology(topology: Topology): void;
|
|
70
|
+
getConsensus(): Consensus;
|
|
71
|
+
setConsensus(consensus: Consensus): void;
|
|
72
|
+
getConsensusState(): ConsensusState;
|
|
73
|
+
}
|
|
74
|
+
export declare const createCoordinator: (topology?: Topology, consensus?: Consensus) => AgentCoordinator;
|
|
75
|
+
//# sourceMappingURL=coordinator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coordinator.d.ts","sourceRoot":"","sources":["../../src/agents/coordinator.ts"],"names":[],"mappings":"AAAA;;;;GAIG;AAEH,OAAO,EAAE,KAAK,EAAkB,cAAc,EAAa,MAAM,kBAAkB,CAAC;AAOpF,MAAM,MAAM,QAAQ,GAAG,MAAM,GAAG,cAAc,GAAG,MAAM,GAAG,MAAM,CAAC;AACjE,MAAM,MAAM,SAAS,GAAG,MAAM,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAAC;AAE3D,qBAAa,gBAAgB;IAC3B,OAAO,CAAC,MAAM,CAAiC;IAC/C,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,SAAS,CAAY;IAC7B,OAAO,CAAC,cAAc,CAAiB;gBAGrC,QAAQ,GAAE,QAAyB,EACnC,SAAS,GAAE,SAAkB;IAa/B;;OAEG;IACH,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,IAAI;IAW5B;;OAEG;IACH,UAAU,CAAC,OAAO,EAAE,MAAM,GAAG,IAAI;IAKjC;;OAEG;IACH,QAAQ,CAAC,OAAO,EAAE,MAAM,GAAG,KAAK,GAAG,SAAS;IAI5C;;OAEG;IACH,YAAY,IAAI,KAAK,EAAE;IAIvB;;OAEG;IACH,eAAe,CAAC,IAAI,EAAE,KAAK,CAAC,MAAM,CAAC,GAAG,KAAK,EAAE;IAM7C;;OAEG;IACH,YAAY,CAAC,OAAO,EAAE,MAAM,GAAG,MAAM,EAAE;IAevC,OAAO,CAAC,gBAAgB;IAKxB,OAAO,CAAC,wBAAwB;IAUhC,OAAO,CAAC,gBAAgB;IAaxB,OAAO,CAAC,gBAAgB;IAexB;;OAEG;IACG,UAAU,CACd,IAAI,EAAE,MAAM,EACZ,MAAM,EAAE,MAAM,EAAE,GACf,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,OAAO,CAAA;KAAE,CAAC,CAAC;YAyBzC,wBAAwB;YAuBxB,oBAAoB;YAWpB,gBAAgB;YAgBhB,gBAAgB;IAqB9B,OAAO,CAAC,cAAc;YAeR,YAAY;IAgF1B;;OAEG;IACG,eAAe,CACnB,QAAQ,EAAE,MAAM,EAChB,MAAM,EAAE,MAAM,EAAE,GACf,OAAO,CAAC;QAAE,OAAO,EAAE,OAAO,CAAC;QAAC,MAAM,CAAC,EAAE,MAAM,CAAA;KAAE,CAAC;YAenC,aAAa;YAqBb,YAAY;YAiBZ,eAAe;YAoBf,aAAa;YASb,YAAY;IAW1B,WAAW,IAAI,QAAQ;IAIvB,WAAW,CAAC,QAAQ,EAAE,QAAQ,GAAG,IAAI;IAIrC,YAAY,IAAI,SAAS;IAIzB,YAAY,CAAC,SAAS,EAAE,SAAS,GAAG,IAAI;IAKxC,iBAAiB,IAAI,cAAc;CAGpC;AAID,eAAO,MAAM,iBAAiB,GAC5B,WAAW,QAAQ,EACnB,YAAY,SAAS,qBACuB,CAAC"}
|
|
@@ -0,0 +1,339 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Agent Coordination System
|
|
3
|
+
*
|
|
4
|
+
* Swarm topologies and consensus protocols for multi-agent coordination.
|
|
5
|
+
*/
|
|
6
|
+
import { PhantomWorker } from '../phantom/index.js';
|
|
7
|
+
import { randomUUID } from 'crypto';
|
|
8
|
+
import * as fs from 'fs';
|
|
9
|
+
import * as path from 'path';
|
|
10
|
+
export class AgentCoordinator {
|
|
11
|
+
agents = new Map();
|
|
12
|
+
topology;
|
|
13
|
+
consensus;
|
|
14
|
+
consensusState;
|
|
15
|
+
constructor(topology = 'hierarchical', consensus = 'raft') {
|
|
16
|
+
this.topology = topology;
|
|
17
|
+
this.consensus = consensus;
|
|
18
|
+
this.consensusState = {
|
|
19
|
+
type: consensus,
|
|
20
|
+
term: 0,
|
|
21
|
+
nodes: new Map()
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
// ==================== AGENT MANAGEMENT ====================
|
|
25
|
+
/**
|
|
26
|
+
* Register an agent
|
|
27
|
+
*/
|
|
28
|
+
register(agent) {
|
|
29
|
+
this.agents.set(agent.id, agent);
|
|
30
|
+
// Add to consensus
|
|
31
|
+
this.consensusState.nodes.set(agent.id, {
|
|
32
|
+
id: agent.id,
|
|
33
|
+
status: 'active',
|
|
34
|
+
lastSeen: Date.now()
|
|
35
|
+
});
|
|
36
|
+
}
|
|
37
|
+
/**
|
|
38
|
+
* Unregister an agent
|
|
39
|
+
*/
|
|
40
|
+
unregister(agentId) {
|
|
41
|
+
this.agents.delete(agentId);
|
|
42
|
+
this.consensusState.nodes.get(agentId).status = 'failed';
|
|
43
|
+
}
|
|
44
|
+
/**
|
|
45
|
+
* Get agent
|
|
46
|
+
*/
|
|
47
|
+
getAgent(agentId) {
|
|
48
|
+
return this.agents.get(agentId);
|
|
49
|
+
}
|
|
50
|
+
/**
|
|
51
|
+
* Get all agents
|
|
52
|
+
*/
|
|
53
|
+
getAllAgents() {
|
|
54
|
+
return Array.from(this.agents.values());
|
|
55
|
+
}
|
|
56
|
+
/**
|
|
57
|
+
* Get agents by type
|
|
58
|
+
*/
|
|
59
|
+
getAgentsByType(type) {
|
|
60
|
+
return Array.from(this.agents.values()).filter(a => a.type === type);
|
|
61
|
+
}
|
|
62
|
+
// ==================== TOPOLOGY ====================
|
|
63
|
+
/**
|
|
64
|
+
* Get neighbors for an agent based on topology
|
|
65
|
+
*/
|
|
66
|
+
getNeighbors(agentId) {
|
|
67
|
+
switch (this.topology) {
|
|
68
|
+
case 'peer':
|
|
69
|
+
return this.getPeerNeighbors(agentId);
|
|
70
|
+
case 'hierarchical':
|
|
71
|
+
return this.getHierarchicalNeighbors(agentId);
|
|
72
|
+
case 'ring':
|
|
73
|
+
return this.getRingNeighbors(agentId);
|
|
74
|
+
case 'star':
|
|
75
|
+
return this.getStarNeighbors(agentId);
|
|
76
|
+
default:
|
|
77
|
+
return [];
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
getPeerNeighbors(agentId) {
|
|
81
|
+
// All other agents are neighbors (mesh)
|
|
82
|
+
return Array.from(this.agents.keys()).filter(id => id !== agentId);
|
|
83
|
+
}
|
|
84
|
+
getHierarchicalNeighbors(agentId) {
|
|
85
|
+
// Queen coordinates workers
|
|
86
|
+
// Workers report to queen
|
|
87
|
+
const agent = this.agents.get(agentId);
|
|
88
|
+
if (!agent)
|
|
89
|
+
return [];
|
|
90
|
+
// For now, just return all other agents
|
|
91
|
+
return Array.from(this.agents.keys()).filter(id => id !== agentId);
|
|
92
|
+
}
|
|
93
|
+
getRingNeighbors(agentId) {
|
|
94
|
+
const ids = Array.from(this.agents.keys());
|
|
95
|
+
const idx = ids.indexOf(agentId);
|
|
96
|
+
if (idx === -1)
|
|
97
|
+
return [];
|
|
98
|
+
// Previous and next in ring
|
|
99
|
+
const prev = idx - 1 < 0 ? ids.length - 1 : idx - 1;
|
|
100
|
+
const next = idx + 1 >= ids.length ? 0 : idx + 1;
|
|
101
|
+
return [ids[prev], ids[next]];
|
|
102
|
+
}
|
|
103
|
+
getStarNeighbors(agentId) {
|
|
104
|
+
const ids = Array.from(this.agents.keys());
|
|
105
|
+
const hub = ids[0]; // First agent is hub
|
|
106
|
+
if (agentId === hub) {
|
|
107
|
+
// Hub sees all spokes
|
|
108
|
+
return ids.slice(1);
|
|
109
|
+
}
|
|
110
|
+
// Spoke sees only hub
|
|
111
|
+
return [hub];
|
|
112
|
+
}
|
|
113
|
+
// ==================== COORDINATION ====================
|
|
114
|
+
/**
|
|
115
|
+
* Coordinate task across agents
|
|
116
|
+
*/
|
|
117
|
+
async coordinate(task, agents) {
|
|
118
|
+
const results = [];
|
|
119
|
+
switch (this.topology) {
|
|
120
|
+
case 'hierarchical':
|
|
121
|
+
// Queen delegates to workers
|
|
122
|
+
results.push(...await this.hierarchicalCoordination(task, agents));
|
|
123
|
+
break;
|
|
124
|
+
case 'peer':
|
|
125
|
+
// All agents work in parallel
|
|
126
|
+
results.push(...await this.parallelCoordination(task, agents));
|
|
127
|
+
break;
|
|
128
|
+
case 'ring':
|
|
129
|
+
// Sequential passing
|
|
130
|
+
results.push(...await this.ringCoordination(task, agents));
|
|
131
|
+
break;
|
|
132
|
+
case 'star':
|
|
133
|
+
// Hub delegates
|
|
134
|
+
results.push(...await this.starCoordination(task, agents));
|
|
135
|
+
break;
|
|
136
|
+
}
|
|
137
|
+
return results;
|
|
138
|
+
}
|
|
139
|
+
async hierarchicalCoordination(task, agents) {
|
|
140
|
+
// First agent is coordinator
|
|
141
|
+
const coordinator = agents[0];
|
|
142
|
+
const workers = agents.slice(1);
|
|
143
|
+
// Coordinator distributes work
|
|
144
|
+
const workChunks = this.distributeWork(task, workers.length);
|
|
145
|
+
// Workers execute in parallel
|
|
146
|
+
const workerResults = await Promise.all(workers.map((worker, i) => this.simulateWork(worker, workChunks[i])));
|
|
147
|
+
// Coordinator aggregates
|
|
148
|
+
return [
|
|
149
|
+
{ agentId: coordinator, result: { aggregated: workerResults } },
|
|
150
|
+
...workerResults
|
|
151
|
+
];
|
|
152
|
+
}
|
|
153
|
+
async parallelCoordination(task, agents) {
|
|
154
|
+
const workChunks = this.distributeWork(task, agents.length);
|
|
155
|
+
return Promise.all(agents.map((agent, i) => this.simulateWork(agent, workChunks[i])));
|
|
156
|
+
}
|
|
157
|
+
async ringCoordination(task, agents) {
|
|
158
|
+
const results = [];
|
|
159
|
+
let currentTask = task;
|
|
160
|
+
for (const agent of agents) {
|
|
161
|
+
const result = await this.simulateWork(agent, currentTask);
|
|
162
|
+
results.push(result);
|
|
163
|
+
currentTask = `processed_${result.result}`;
|
|
164
|
+
}
|
|
165
|
+
return results;
|
|
166
|
+
}
|
|
167
|
+
async starCoordination(task, agents) {
|
|
168
|
+
const hub = agents[0];
|
|
169
|
+
const spokes = agents.slice(1);
|
|
170
|
+
// Hub distributes to spokes
|
|
171
|
+
const workChunks = this.distributeWork(task, spokes.length);
|
|
172
|
+
const spokeResults = await Promise.all(spokes.map((spoke, i) => this.simulateWork(spoke, workChunks[i])));
|
|
173
|
+
// Hub aggregates
|
|
174
|
+
return [
|
|
175
|
+
{ agentId: hub, result: { aggregated: spokeResults } },
|
|
176
|
+
...spokeResults
|
|
177
|
+
];
|
|
178
|
+
}
|
|
179
|
+
distributeWork(task, numChunks) {
|
|
180
|
+
// Simple distribution: split by words
|
|
181
|
+
const words = task.split(/\s+/);
|
|
182
|
+
const chunkSize = Math.ceil(words.length / numChunks);
|
|
183
|
+
const chunks = [];
|
|
184
|
+
for (let i = 0; i < numChunks; i++) {
|
|
185
|
+
const start = i * chunkSize;
|
|
186
|
+
const end = start + chunkSize;
|
|
187
|
+
chunks.push(words.slice(start, end).join(' '));
|
|
188
|
+
}
|
|
189
|
+
return chunks;
|
|
190
|
+
}
|
|
191
|
+
async simulateWork(agentId, work) {
|
|
192
|
+
const worker = new PhantomWorker();
|
|
193
|
+
const task = {
|
|
194
|
+
id: randomUUID(),
|
|
195
|
+
goal: work,
|
|
196
|
+
files: [],
|
|
197
|
+
approach: 'standard',
|
|
198
|
+
tokenBudget: 50000,
|
|
199
|
+
};
|
|
200
|
+
try {
|
|
201
|
+
const result = await worker.spawn(task, async (worktreeDir, workerTask, w) => {
|
|
202
|
+
const learnings = [];
|
|
203
|
+
// Scan the worktree for relevant source files
|
|
204
|
+
const srcDir = path.join(worktreeDir, 'src');
|
|
205
|
+
const filesToRead = [];
|
|
206
|
+
try {
|
|
207
|
+
const entries = fs.readdirSync(srcDir, { withFileTypes: true });
|
|
208
|
+
for (const entry of entries) {
|
|
209
|
+
if (entry.isFile() && /\.[jt]s$/.test(entry.name)) {
|
|
210
|
+
filesToRead.push(path.join(srcDir, entry.name));
|
|
211
|
+
}
|
|
212
|
+
}
|
|
213
|
+
}
|
|
214
|
+
catch { /* worktree may not have src/ */ }
|
|
215
|
+
// Read first 500 bytes of up to 5 files for context
|
|
216
|
+
for (const filePath of filesToRead.slice(0, 5)) {
|
|
217
|
+
try {
|
|
218
|
+
const content = fs.readFileSync(filePath, 'utf-8').slice(0, 500);
|
|
219
|
+
const fileName = path.basename(filePath);
|
|
220
|
+
const exports = (content.match(/export\s+(class|function|const|interface)\s+\w+/g) || []);
|
|
221
|
+
learnings.push(`[${agentId}] Analyzed ${fileName}: ${exports.length} exports, ${content.length} chars read`);
|
|
222
|
+
}
|
|
223
|
+
catch {
|
|
224
|
+
learnings.push(`[${agentId}] Could not read ${path.basename(filePath)}`);
|
|
225
|
+
}
|
|
226
|
+
}
|
|
227
|
+
// Broadcast findings to POD network
|
|
228
|
+
w.broadcast(`Agent ${agentId} analyzed ${filesToRead.length} files for: ${workerTask.goal.slice(0, 60)}`, 0.7, ['#coordinator', '#agent-work']);
|
|
229
|
+
// Check peer findings
|
|
230
|
+
const peerFindings = w.receive(['#coordinator']);
|
|
231
|
+
if (peerFindings.length > 0) {
|
|
232
|
+
learnings.push(`[${agentId}] Received ${peerFindings.length} peer findings`);
|
|
233
|
+
}
|
|
234
|
+
return {
|
|
235
|
+
learnings: learnings.length > 0 ? learnings : [`[${agentId}] No source files found in worktree`],
|
|
236
|
+
confidence: learnings.length > 2 ? 0.85 : 0.6,
|
|
237
|
+
};
|
|
238
|
+
});
|
|
239
|
+
return {
|
|
240
|
+
agentId,
|
|
241
|
+
result: {
|
|
242
|
+
diff: result.diff,
|
|
243
|
+
outcome: result.outcome,
|
|
244
|
+
learnings: result.learnings,
|
|
245
|
+
}
|
|
246
|
+
};
|
|
247
|
+
}
|
|
248
|
+
catch (err) {
|
|
249
|
+
return {
|
|
250
|
+
agentId,
|
|
251
|
+
result: { outcome: 'failed', error: String(err) }
|
|
252
|
+
};
|
|
253
|
+
}
|
|
254
|
+
}
|
|
255
|
+
// ==================== CONSENSUS ====================
|
|
256
|
+
/**
|
|
257
|
+
* Achieve consensus on a decision
|
|
258
|
+
*/
|
|
259
|
+
async consensusDecide(proposal, agents) {
|
|
260
|
+
switch (this.consensus) {
|
|
261
|
+
case 'raft':
|
|
262
|
+
return this.raftConsensus(proposal, agents);
|
|
263
|
+
case 'bft':
|
|
264
|
+
return this.bftConsensus(proposal, agents);
|
|
265
|
+
case 'gossip':
|
|
266
|
+
return this.gossipConsensus(proposal, agents);
|
|
267
|
+
case 'crdt':
|
|
268
|
+
return this.crdtConsensus(proposal, agents);
|
|
269
|
+
default:
|
|
270
|
+
return { decided: false };
|
|
271
|
+
}
|
|
272
|
+
}
|
|
273
|
+
async raftConsensus(proposal, agents) {
|
|
274
|
+
// Simple leader-based consensus
|
|
275
|
+
const leader = this.consensusState.leader ?? agents[0];
|
|
276
|
+
// Leader proposes
|
|
277
|
+
const votes = await this.requestVotes(leader, proposal, agents);
|
|
278
|
+
// Majority wins
|
|
279
|
+
const majority = Math.ceil(agents.length / 2);
|
|
280
|
+
const agree = votes.filter(v => v).length;
|
|
281
|
+
if (agree >= majority) {
|
|
282
|
+
return { decided: true, result: proposal };
|
|
283
|
+
}
|
|
284
|
+
return { decided: false };
|
|
285
|
+
}
|
|
286
|
+
async bftConsensus(proposal, agents) {
|
|
287
|
+
// Byzantine fault-tolerant: need 2/3 agreement
|
|
288
|
+
const votes = await this.requestVotes('leader', proposal, agents);
|
|
289
|
+
const byzantineThreshold = Math.ceil(agents.length * 2 / 3);
|
|
290
|
+
const agree = votes.filter(v => v).length;
|
|
291
|
+
if (agree >= byzantineThreshold) {
|
|
292
|
+
return { decided: true, result: proposal };
|
|
293
|
+
}
|
|
294
|
+
return { decided: false };
|
|
295
|
+
}
|
|
296
|
+
async gossipConsensus(proposal, agents) {
|
|
297
|
+
// Gossip until convergence
|
|
298
|
+
let values = new Set([proposal]);
|
|
299
|
+
for (let round = 0; round < 5; round++) {
|
|
300
|
+
// Each agent gossips with random neighbor
|
|
301
|
+
for (const agent of agents) {
|
|
302
|
+
const neighbor = agents[Math.floor(Math.random() * agents.length)];
|
|
303
|
+
// Simulate gossip
|
|
304
|
+
values.add(proposal);
|
|
305
|
+
}
|
|
306
|
+
}
|
|
307
|
+
// Return most common value
|
|
308
|
+
return { decided: true, result: proposal };
|
|
309
|
+
}
|
|
310
|
+
async crdtConsensus(proposal, agents) {
|
|
311
|
+
// CRDT: always converges
|
|
312
|
+
// Last-write-wins for simplicity
|
|
313
|
+
return { decided: true, result: proposal };
|
|
314
|
+
}
|
|
315
|
+
async requestVotes(proposer, proposal, agents) {
|
|
316
|
+
// Simulate voting
|
|
317
|
+
return agents.map(() => Math.random() > 0.3);
|
|
318
|
+
}
|
|
319
|
+
// ==================== STATE ====================
|
|
320
|
+
getTopology() {
|
|
321
|
+
return this.topology;
|
|
322
|
+
}
|
|
323
|
+
setTopology(topology) {
|
|
324
|
+
this.topology = topology;
|
|
325
|
+
}
|
|
326
|
+
getConsensus() {
|
|
327
|
+
return this.consensus;
|
|
328
|
+
}
|
|
329
|
+
setConsensus(consensus) {
|
|
330
|
+
this.consensus = consensus;
|
|
331
|
+
this.consensusState.type = consensus;
|
|
332
|
+
}
|
|
333
|
+
getConsensusState() {
|
|
334
|
+
return { ...this.consensusState };
|
|
335
|
+
}
|
|
336
|
+
}
|
|
337
|
+
// ==================== FACTORY ====================
|
|
338
|
+
export const createCoordinator = (topology, consensus) => new AgentCoordinator(topology, consensus);
|
|
339
|
+
//# sourceMappingURL=coordinator.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"coordinator.js","sourceRoot":"","sources":["../../src/agents/coordinator.ts"],"names":[],"mappings":"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"}
|