claude-flow-novice 1.1.8 → 1.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/.claude/SLASH-COMMANDS-READY.md +53 -0
- package/.claude/WORKING-SETUP.md +67 -0
- package/.claude/commands/README.md +157 -0
- package/.claude/commands/claude-md.js +237 -0
- package/.claude/commands/claude-md.md +64 -0
- package/.claude/commands/claude-soul.js +562 -0
- package/.claude/commands/claude-soul.md +22 -0
- package/.claude/commands/cli-integration.js +216 -0
- package/.claude/commands/dependency-recommendations.md +171 -0
- package/.claude/commands/github.js +638 -0
- package/.claude/commands/github.md +221 -0
- package/.claude/commands/hooks.js +648 -0
- package/.claude/commands/hooks.md +38 -0
- package/.claude/commands/index.js +115 -0
- package/.claude/commands/neural.js +572 -0
- package/.claude/commands/neural.md +39 -0
- package/.claude/commands/performance.js +582 -0
- package/.claude/commands/performance.md +41 -0
- package/.claude/commands/register-all-commands.js +314 -0
- package/.claude/commands/register-claude-md.js +82 -0
- package/.claude/commands/register-claude-soul.js +80 -0
- package/.claude/commands/sparc.js +110 -0
- package/.claude/commands/sparc.md +46 -0
- package/.claude/commands/suggest-improvements.md +95 -0
- package/.claude/commands/suggest-templates.md +147 -0
- package/.claude/commands/swarm.js +423 -0
- package/.claude/commands/swarm.md +24 -0
- package/.claude/commands/validate-commands.js +223 -0
- package/.claude/commands/workflow.js +606 -0
- package/.claude/commands/workflow.md +295 -0
- package/.claude/core/agent-manager.js +80 -0
- package/.claude/core/agent-manager.js.map +1 -0
- package/.claude/core/config.js +1221 -0
- package/.claude/core/config.js.map +1 -0
- package/.claude/core/event-bus.js +136 -0
- package/.claude/core/event-bus.js.map +1 -0
- package/.claude/core/index.js +6 -0
- package/.claude/core/index.js.map +1 -0
- package/.claude/core/json-persistence.js +112 -0
- package/.claude/core/json-persistence.js.map +1 -0
- package/.claude/core/logger.js +245 -0
- package/.claude/core/logger.js.map +1 -0
- package/.claude/core/orchestrator-fixed.js +236 -0
- package/.claude/core/orchestrator-fixed.js.map +1 -0
- package/.claude/core/orchestrator.js +1136 -0
- package/.claude/core/orchestrator.js.map +1 -0
- package/.claude/core/persistence.js +185 -0
- package/.claude/core/persistence.js.map +1 -0
- package/.claude/core/project-manager.js +80 -0
- package/.claude/core/project-manager.js.map +1 -0
- package/.claude/core/slash-command.js +24 -0
- package/.claude/core/version.js +35 -0
- package/.claude/core/version.js.map +1 -0
- package/.claude/slash-commands.json +92 -0
- package/dist/mcp/mcp-server-novice.js +24 -4
- package/dist/mcp/mcp-server-sdk.js +649 -0
- package/dist/mcp/mcp-server-with-slash-commands.js +776 -0
- package/dist/src/cli/simple-commands/hooks/session-start-soul.js +271 -0
- package/dist/src/slash-commands/README.md +157 -0
- package/dist/src/slash-commands/claude-md.js +237 -0
- package/dist/src/slash-commands/claude-soul.js +562 -0
- package/dist/src/slash-commands/cli-integration.js +216 -0
- package/dist/src/slash-commands/github.js +638 -0
- package/dist/src/slash-commands/hooks.js +648 -0
- package/dist/src/slash-commands/index.js +115 -0
- package/dist/src/slash-commands/mcp-slash-integration.js +146 -0
- package/dist/src/slash-commands/neural.js +572 -0
- package/dist/src/slash-commands/performance.js +582 -0
- package/dist/src/slash-commands/register-all-commands.js +314 -0
- package/dist/src/slash-commands/register-claude-md.js +82 -0
- package/dist/src/slash-commands/register-claude-soul.js +80 -0
- package/dist/src/slash-commands/sparc.js +110 -0
- package/dist/src/slash-commands/swarm.js +423 -0
- package/dist/src/slash-commands/validate-commands.js +223 -0
- package/dist/src/slash-commands/workflow.js +606 -0
- package/package.json +23 -10
- package/src/slash-commands/cli-integration.js +216 -0
- package/src/slash-commands/github.js +638 -0
- package/src/slash-commands/hooks.js +648 -0
- package/src/slash-commands/index.js +115 -0
- package/src/slash-commands/mcp-slash-integration.js +146 -0
- package/src/slash-commands/neural.js +572 -0
- package/src/slash-commands/performance.js +582 -0
- package/src/slash-commands/register-all-commands.js +314 -0
- package/src/slash-commands/sparc.js +110 -0
- package/src/slash-commands/swarm.js +423 -0
- package/src/slash-commands/validate-commands.js +223 -0
- package/src/slash-commands/workflow.js +606 -0
|
@@ -0,0 +1,236 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Fixed orchestrator implementation for Claude-Flow
|
|
3
|
+
*/ import { JsonPersistenceManager } from './json-persistence.js';
|
|
4
|
+
export class Orchestrator {
|
|
5
|
+
config;
|
|
6
|
+
eventBus;
|
|
7
|
+
logger;
|
|
8
|
+
agents = new Map();
|
|
9
|
+
tasks = new Map();
|
|
10
|
+
sessions = new Map();
|
|
11
|
+
persistence;
|
|
12
|
+
workflows = new Map();
|
|
13
|
+
started = false;
|
|
14
|
+
constructor(config, eventBus, logger){
|
|
15
|
+
this.config = config;
|
|
16
|
+
this.eventBus = eventBus;
|
|
17
|
+
this.logger = logger;
|
|
18
|
+
this.persistence = new JsonPersistenceManager();
|
|
19
|
+
}
|
|
20
|
+
async start() {
|
|
21
|
+
if (this.started) {
|
|
22
|
+
throw new Error('Orchestrator already started');
|
|
23
|
+
}
|
|
24
|
+
this.logger.info('Starting orchestrator...');
|
|
25
|
+
// Initialize persistence
|
|
26
|
+
await this.persistence.initialize();
|
|
27
|
+
// Load existing agents and tasks from database
|
|
28
|
+
await this.loadFromPersistence();
|
|
29
|
+
// Initialize components
|
|
30
|
+
this.eventBus.emit('system:ready', {
|
|
31
|
+
timestamp: new Date()
|
|
32
|
+
});
|
|
33
|
+
this.started = true;
|
|
34
|
+
this.logger.info('Orchestrator started successfully');
|
|
35
|
+
}
|
|
36
|
+
async loadFromPersistence() {
|
|
37
|
+
// Load agents
|
|
38
|
+
const persistedAgents = await this.persistence.getActiveAgents();
|
|
39
|
+
for (const agent of persistedAgents){
|
|
40
|
+
this.agents.set(agent.id, {
|
|
41
|
+
id: agent.id,
|
|
42
|
+
type: agent.type,
|
|
43
|
+
name: agent.name,
|
|
44
|
+
status: agent.status,
|
|
45
|
+
assignedTasks: [],
|
|
46
|
+
createdAt: agent.createdAt
|
|
47
|
+
});
|
|
48
|
+
}
|
|
49
|
+
// Load tasks
|
|
50
|
+
const persistedTasks = await this.persistence.getActiveTasks();
|
|
51
|
+
for (const task of persistedTasks){
|
|
52
|
+
this.tasks.set(task.id, {
|
|
53
|
+
id: task.id,
|
|
54
|
+
type: task.type,
|
|
55
|
+
description: task.description,
|
|
56
|
+
status: task.status,
|
|
57
|
+
progress: task.progress,
|
|
58
|
+
assignedAgent: task.assignedAgent,
|
|
59
|
+
error: task.error
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
this.logger.info(`Loaded ${this.agents.size} agents and ${this.tasks.size} tasks from persistence`);
|
|
63
|
+
}
|
|
64
|
+
async stop() {
|
|
65
|
+
if (!this.started) {
|
|
66
|
+
return;
|
|
67
|
+
}
|
|
68
|
+
this.logger.info('Stopping orchestrator...');
|
|
69
|
+
// Clean up resources
|
|
70
|
+
this.agents.clear();
|
|
71
|
+
this.tasks.clear();
|
|
72
|
+
this.sessions.clear();
|
|
73
|
+
this.workflows.clear();
|
|
74
|
+
// Close persistence
|
|
75
|
+
this.persistence.close();
|
|
76
|
+
this.started = false;
|
|
77
|
+
this.logger.info('Orchestrator stopped');
|
|
78
|
+
}
|
|
79
|
+
async spawnAgent(profile) {
|
|
80
|
+
const agentId = `agent-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
|
|
81
|
+
const agent = {
|
|
82
|
+
id: agentId,
|
|
83
|
+
type: profile.type,
|
|
84
|
+
name: profile.name,
|
|
85
|
+
status: 'active',
|
|
86
|
+
assignedTasks: [],
|
|
87
|
+
createdAt: Date.now()
|
|
88
|
+
};
|
|
89
|
+
// Save to persistence
|
|
90
|
+
await this.persistence.saveAgent({
|
|
91
|
+
id: agentId,
|
|
92
|
+
type: profile.type,
|
|
93
|
+
name: profile.name,
|
|
94
|
+
status: 'active',
|
|
95
|
+
capabilities: profile.capabilities,
|
|
96
|
+
systemPrompt: profile.systemPrompt,
|
|
97
|
+
maxConcurrentTasks: profile.maxConcurrentTasks,
|
|
98
|
+
priority: profile.priority,
|
|
99
|
+
createdAt: Date.now()
|
|
100
|
+
});
|
|
101
|
+
this.agents.set(agentId, agent);
|
|
102
|
+
this.eventBus.emit('agent:spawned', {
|
|
103
|
+
agentId,
|
|
104
|
+
profile
|
|
105
|
+
});
|
|
106
|
+
return agentId;
|
|
107
|
+
}
|
|
108
|
+
async terminateAgent(agentId) {
|
|
109
|
+
const agent = this.agents.get(agentId);
|
|
110
|
+
if (!agent) {
|
|
111
|
+
throw new Error(`Agent ${agentId} not found`);
|
|
112
|
+
}
|
|
113
|
+
// Update persistence
|
|
114
|
+
await this.persistence.updateAgentStatus(agentId, 'terminated');
|
|
115
|
+
this.agents.delete(agentId);
|
|
116
|
+
this.eventBus.emit('agent:terminated', {
|
|
117
|
+
agentId,
|
|
118
|
+
reason: 'User requested'
|
|
119
|
+
});
|
|
120
|
+
}
|
|
121
|
+
getActiveAgents() {
|
|
122
|
+
return Array.from(this.agents.values());
|
|
123
|
+
}
|
|
124
|
+
getAgentInfo(agentId) {
|
|
125
|
+
return this.agents.get(agentId);
|
|
126
|
+
}
|
|
127
|
+
async submitTask(task) {
|
|
128
|
+
const taskId = `task-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
|
|
129
|
+
const taskInfo = {
|
|
130
|
+
id: taskId,
|
|
131
|
+
type: task.type,
|
|
132
|
+
description: task.description,
|
|
133
|
+
status: 'pending',
|
|
134
|
+
progress: 0
|
|
135
|
+
};
|
|
136
|
+
// Save to persistence
|
|
137
|
+
await this.persistence.saveTask({
|
|
138
|
+
id: taskId,
|
|
139
|
+
type: task.type,
|
|
140
|
+
description: task.description,
|
|
141
|
+
status: 'pending',
|
|
142
|
+
priority: task.priority,
|
|
143
|
+
dependencies: task.dependencies,
|
|
144
|
+
metadata: task.metadata,
|
|
145
|
+
progress: 0,
|
|
146
|
+
createdAt: Date.now()
|
|
147
|
+
});
|
|
148
|
+
this.tasks.set(taskId, taskInfo);
|
|
149
|
+
this.eventBus.emit('task:created', {
|
|
150
|
+
taskId,
|
|
151
|
+
task
|
|
152
|
+
});
|
|
153
|
+
// Simulate task assignment
|
|
154
|
+
const availableAgents = Array.from(this.agents.values()).filter((a)=>a.status === 'active');
|
|
155
|
+
if (availableAgents.length > 0) {
|
|
156
|
+
const agent = availableAgents[0];
|
|
157
|
+
taskInfo.assignedAgent = agent.id;
|
|
158
|
+
taskInfo.status = 'assigned';
|
|
159
|
+
agent.assignedTasks.push(taskId);
|
|
160
|
+
this.eventBus.emit('task:assigned', {
|
|
161
|
+
taskId,
|
|
162
|
+
agentId: agent.id
|
|
163
|
+
});
|
|
164
|
+
// Update persistence with assignment
|
|
165
|
+
await this.persistence.updateTaskStatus(taskId, 'assigned', agent.id);
|
|
166
|
+
}
|
|
167
|
+
return taskId;
|
|
168
|
+
}
|
|
169
|
+
getTaskQueue() {
|
|
170
|
+
return Array.from(this.tasks.values());
|
|
171
|
+
}
|
|
172
|
+
getTaskStatus(taskId) {
|
|
173
|
+
return this.tasks.get(taskId);
|
|
174
|
+
}
|
|
175
|
+
async cancelTask(taskId) {
|
|
176
|
+
const task = this.tasks.get(taskId);
|
|
177
|
+
if (!task) {
|
|
178
|
+
throw new Error(`Task ${taskId} not found`);
|
|
179
|
+
}
|
|
180
|
+
task.status = 'cancelled';
|
|
181
|
+
this.eventBus.emit('task:cancelled', {
|
|
182
|
+
taskId
|
|
183
|
+
});
|
|
184
|
+
}
|
|
185
|
+
getActiveSessions() {
|
|
186
|
+
return Array.from(this.sessions.values());
|
|
187
|
+
}
|
|
188
|
+
async terminateSession(sessionId) {
|
|
189
|
+
const session = this.sessions.get(sessionId);
|
|
190
|
+
if (!session) {
|
|
191
|
+
throw new Error(`Session ${sessionId} not found`);
|
|
192
|
+
}
|
|
193
|
+
this.sessions.delete(sessionId);
|
|
194
|
+
this.eventBus.emit('session:terminated', {
|
|
195
|
+
sessionId
|
|
196
|
+
});
|
|
197
|
+
}
|
|
198
|
+
async executeWorkflow(workflow) {
|
|
199
|
+
const workflowId = `workflow-${Date.now()}-${Math.random().toString(36).substr(2, 9)}`;
|
|
200
|
+
const status = {
|
|
201
|
+
status: 'running',
|
|
202
|
+
progress: 0
|
|
203
|
+
};
|
|
204
|
+
this.workflows.set(workflowId, status);
|
|
205
|
+
this.eventBus.emit('workflow:started', {
|
|
206
|
+
workflowId,
|
|
207
|
+
workflow
|
|
208
|
+
});
|
|
209
|
+
// Simulate workflow execution
|
|
210
|
+
setTimeout(()=>{
|
|
211
|
+
status.status = 'completed';
|
|
212
|
+
status.progress = 100;
|
|
213
|
+
this.eventBus.emit('workflow:completed', {
|
|
214
|
+
workflowId
|
|
215
|
+
});
|
|
216
|
+
}, 5000);
|
|
217
|
+
return workflowId;
|
|
218
|
+
}
|
|
219
|
+
async getWorkflowStatus(workflowId) {
|
|
220
|
+
const status = this.workflows.get(workflowId);
|
|
221
|
+
if (!status) {
|
|
222
|
+
throw new Error(`Workflow ${workflowId} not found`);
|
|
223
|
+
}
|
|
224
|
+
return status;
|
|
225
|
+
}
|
|
226
|
+
async healthCheck() {
|
|
227
|
+
return {
|
|
228
|
+
healthy: this.started,
|
|
229
|
+
memory: true,
|
|
230
|
+
terminalPool: true,
|
|
231
|
+
mcp: this.started
|
|
232
|
+
};
|
|
233
|
+
}
|
|
234
|
+
}
|
|
235
|
+
|
|
236
|
+
//# sourceMappingURL=orchestrator-fixed.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"sources":["../../../src/core/orchestrator-fixed.ts"],"names":["JsonPersistenceManager","Orchestrator","agents","Map","tasks","sessions","persistence","workflows","started","config","eventBus","logger","start","Error","info","initialize","loadFromPersistence","emit","timestamp","Date","persistedAgents","getActiveAgents","agent","set","id","type","name","status","assignedTasks","createdAt","persistedTasks","getActiveTasks","task","description","progress","assignedAgent","error","size","stop","clear","close","spawnAgent","profile","agentId","now","Math","random","toString","substr","saveAgent","capabilities","systemPrompt","maxConcurrentTasks","priority","terminateAgent","get","updateAgentStatus","delete","reason","Array","from","values","getAgentInfo","submitTask","taskId","taskInfo","saveTask","dependencies","metadata","availableAgents","filter","a","length","push","updateTaskStatus","getTaskQueue","getTaskStatus","cancelTask","getActiveSessions","terminateSession","sessionId","session","executeWorkflow","workflow","workflowId","setTimeout","getWorkflowStatus","healthCheck","healthy","memory","terminalPool","mcp"],"mappings":"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"}
|