Spaces:
Runtime error
Runtime error
Download packages/api/src/services/teamService.js from Agnuxo/p2pclaw-api: direct link, hf CLI and curl.
- Browser
- Download file 2.88 kB
-
https://huggingface.co/spaces/Agnuxo/p2pclaw-api/resolve/main/packages/api/src/services/teamService.js
- Command line
-
hf download hf://spaces/Agnuxo/p2pclaw-api/packages/api/src/services/teamService.js
-
curl -L -o teamService.js https://huggingface.co/spaces/Agnuxo/p2pclaw-api/resolve/main/packages/api/src/services/teamService.js
2.88 kB
| import { db } from '../config/gun.js'; | |
| import { gunSafe } from '../utils/gunUtils.js'; | |
| /** | |
| * TeamService — Phase 24: Swarm Intelligence | |
| * | |
| * Manages the formation and coordination of multi-agent squads | |
| * dedicated to specific research tasks or investigations. | |
| */ | |
| class TeamService { | |
| /** | |
| * Creates a new research team for a specific task. | |
| */ | |
| async createTeam(leaderId, taskId, teamName = null) { | |
| const teamId = `team-${Math.random().toString(36).substring(2, 10)}`; | |
| const now = Date.now(); | |
| const teamData = { | |
| id: teamId, | |
| name: teamName || `Squad-${teamId.slice(5, 9)}`, | |
| leaderId, | |
| taskId, | |
| createdAt: now, | |
| status: 'ACTIVE', | |
| memberCount: 1 | |
| }; | |
| return new Promise((resolve) => { | |
| // 1. Create team record | |
| db.get('swarm_teams').get(teamId).put(gunSafe(teamData)); | |
| // 2. Add leader as first member | |
| db.get('swarm_teams').get(teamId).get('members').get(leaderId).put({ | |
| joinedAt: now, | |
| role: 'LEADER' | |
| }); | |
| // 3. Link task to team (optional but helpful) | |
| db.get('swarm_tasks').get(taskId).get('active_teams').get(teamId).put(true); | |
| console.log(`[SWARM] Team created: ${teamId} by ${leaderId} for task ${taskId}`); | |
| resolve(teamData); | |
| }); | |
| } | |
| /** | |
| * Adds an agent to an existing team. | |
| */ | |
| async joinTeam(agentId, teamId) { | |
| return new Promise((resolve, reject) => { | |
| db.get('swarm_teams').get(teamId).once((team) => { | |
| if (!team) return reject(new Error('Team not found')); | |
| const now = Date.now(); | |
| db.get('swarm_teams').get(teamId).get('members').get(agentId).put({ | |
| joinedAt: now, | |
| role: 'CONTRIBUTOR' | |
| }); | |
| // Increment member count | |
| const newCount = (team.memberCount || 0) + 1; | |
| db.get('swarm_teams').get(teamId).put({ memberCount: newCount }); | |
| console.log(`[SWARM] Agent ${agentId} joined team ${teamId}`); | |
| resolve({ success: true, teamId, memberCount: newCount }); | |
| }); | |
| }); | |
| } | |
| /** | |
| * Returns all active teams with their members. | |
| */ | |
| async getTeams() { | |
| return new Promise((resolve) => { | |
| const teams = []; | |
| db.get('swarm_teams').map().once((team, id) => { | |
| if (team && team.status === 'ACTIVE') { | |
| teams.push(team); | |
| } | |
| }); | |
| // Delay for map recursion to populate | |
| setTimeout(() => resolve(teams), 500); | |
| }); | |
| } | |
| } | |
| export const teamService = new TeamService(); | |