moving
Some checks failed
Installer Smoke / installer-smoke (push) Has been cancelled

This commit is contained in:
Oleg Maslov
2026-09-02 10:10:29 +02:00
commit 0c3e2ead3b
3841 changed files with 970576 additions and 0 deletions

View File

@@ -0,0 +1,72 @@
import { describe, it, expect, vi } from 'vitest';
import { WaggleDanceDispatcher } from '../src/dispatcher.js';
import type { WaggleMessage } from '@waggle/shared';
describe('Waggle Dance Integration', () => {
it('full workflow: task_delegation → knowledge_check → skill_request', async () => {
const deps = {
searchMemory: vi.fn(async (q: string) => `Found memories about: ${q}`),
resolveCapability: vi.fn(() => [
{ source: 'native', name: 'web_search', description: 'Web search', available: true },
]),
spawnWorker: vi.fn(async (task: string) => `Worker completed: ${task}`),
};
const dispatcher = new WaggleDanceDispatcher(deps);
// 1. Delegate a task
const taskResult = await dispatcher.dispatch({
id: '1', teamId: 't1', senderId: 'a1', type: 'request', subtype: 'task_delegation',
content: { task: 'Analyze market data', role: 'analyst' },
referenceId: null, routing: null, createdAt: new Date(),
});
expect(taskResult.handled).toBe(true);
expect(deps.spawnWorker).toHaveBeenCalledWith('Analyze market data', 'analyst', undefined);
// 2. Check knowledge
const knowledgeResult = await dispatcher.dispatch({
id: '2', teamId: 't1', senderId: 'a1', type: 'request', subtype: 'knowledge_check',
content: { query: 'market trends' },
referenceId: null, routing: null, createdAt: new Date(),
});
expect(knowledgeResult.handled).toBe(true);
expect(knowledgeResult.response).toContain('market trends');
// 3. Request a skill
const skillResult = await dispatcher.dispatch({
id: '3', teamId: 't1', senderId: 'a1', type: 'request', subtype: 'skill_request',
content: { skill: 'web_search' },
referenceId: null, routing: null, createdAt: new Date(),
});
expect(skillResult.handled).toBe(true);
expect(skillResult.response).toContain('web_search');
});
it('round-trip: task delegation result feeds knowledge check', async () => {
let lastWorkerResult = '';
const deps = {
searchMemory: vi.fn(async () => lastWorkerResult),
resolveCapability: vi.fn(() => []),
spawnWorker: vi.fn(async (task: string) => {
lastWorkerResult = `Analysis complete for: ${task}`;
return lastWorkerResult;
}),
};
const dispatcher = new WaggleDanceDispatcher(deps);
// First: delegate
await dispatcher.dispatch({
id: '1', teamId: 't1', senderId: 'a1', type: 'request', subtype: 'task_delegation',
content: { task: 'Analyze competitors', role: 'analyst' },
referenceId: null, routing: null, createdAt: new Date(),
});
// Then: check what was learned
const result = await dispatcher.dispatch({
id: '2', teamId: 't1', senderId: 'a1', type: 'request', subtype: 'knowledge_check',
content: { query: 'competitors' },
referenceId: null, routing: null, createdAt: new Date(),
});
expect(result.response).toContain('Analyze competitors');
});
});