network-ai 5.0.0 → 5.1.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/INTEGRATION_GUIDE.md +4 -4
- package/QUICKSTART.md +4 -4
- package/README.md +15 -12
- package/dist/adapters/custom-adapter.d.ts +1 -1
- package/dist/adapters/custom-adapter.js +1 -1
- package/dist/adapters/index.d.ts +2 -0
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/index.js +4 -1
- package/dist/adapters/index.js.map +1 -1
- package/dist/adapters/langchain-adapter.js +1 -1
- package/dist/adapters/langchain-adapter.js.map +1 -1
- package/dist/adapters/mcp-adapter.d.ts +1 -1
- package/dist/adapters/mcp-adapter.js +3 -3
- package/dist/adapters/mcp-adapter.js.map +1 -1
- package/dist/adapters/openclaw-adapter.d.ts +1 -1
- package/dist/adapters/openclaw-adapter.js +3 -3
- package/dist/adapters/openclaw-adapter.js.map +1 -1
- package/dist/adapters/orchestrator-adapter.d.ts +118 -0
- package/dist/adapters/orchestrator-adapter.d.ts.map +1 -0
- package/dist/adapters/orchestrator-adapter.js +219 -0
- package/dist/adapters/orchestrator-adapter.js.map +1 -0
- package/dist/demo-control-plane.d.ts +12 -0
- package/dist/demo-control-plane.d.ts.map +1 -0
- package/dist/demo-control-plane.js +147 -0
- package/dist/demo-control-plane.js.map +1 -0
- package/dist/demo-worktree-dashboard.d.ts +2 -0
- package/dist/demo-worktree-dashboard.d.ts.map +1 -0
- package/dist/demo-worktree-dashboard.js +131 -0
- package/dist/demo-worktree-dashboard.js.map +1 -0
- package/dist/examples/01-hello-swarm.d.ts +13 -0
- package/dist/examples/01-hello-swarm.d.ts.map +1 -0
- package/dist/examples/01-hello-swarm.js +165 -0
- package/dist/examples/01-hello-swarm.js.map +1 -0
- package/dist/examples/02-fsm-pipeline.d.ts +20 -0
- package/dist/examples/02-fsm-pipeline.d.ts.map +1 -0
- package/dist/examples/02-fsm-pipeline.js +189 -0
- package/dist/examples/02-fsm-pipeline.js.map +1 -0
- package/dist/examples/03-parallel-agents.d.ts +21 -0
- package/dist/examples/03-parallel-agents.d.ts.map +1 -0
- package/dist/examples/03-parallel-agents.js +192 -0
- package/dist/examples/03-parallel-agents.js.map +1 -0
- package/dist/examples/05-code-review-swarm.d.ts +21 -0
- package/dist/examples/05-code-review-swarm.d.ts.map +1 -0
- package/dist/examples/05-code-review-swarm.js +1177 -0
- package/dist/examples/05-code-review-swarm.js.map +1 -0
- package/dist/examples/06-ai-pipeline-demo.d.ts +24 -0
- package/dist/examples/06-ai-pipeline-demo.d.ts.map +1 -0
- package/dist/examples/06-ai-pipeline-demo.js +263 -0
- package/dist/examples/06-ai-pipeline-demo.js.map +1 -0
- package/dist/examples/07-full-showcase.d.ts +27 -0
- package/dist/examples/07-full-showcase.d.ts.map +1 -0
- package/dist/examples/07-full-showcase.js +946 -0
- package/dist/examples/07-full-showcase.js.map +1 -0
- package/dist/examples/08-control-plane-stress-demo.d.ts +19 -0
- package/dist/examples/08-control-plane-stress-demo.d.ts.map +1 -0
- package/dist/examples/08-control-plane-stress-demo.js +186 -0
- package/dist/examples/08-control-plane-stress-demo.js.map +1 -0
- package/dist/examples/09-real-langchain.d.ts +19 -0
- package/dist/examples/09-real-langchain.d.ts.map +1 -0
- package/dist/examples/09-real-langchain.js +231 -0
- package/dist/examples/09-real-langchain.js.map +1 -0
- package/dist/examples/10-nemoclaw-sandbox-swarm.d.ts +16 -0
- package/dist/examples/10-nemoclaw-sandbox-swarm.d.ts.map +1 -0
- package/dist/examples/10-nemoclaw-sandbox-swarm.js +270 -0
- package/dist/examples/10-nemoclaw-sandbox-swarm.js.map +1 -0
- package/dist/examples/demo-runner.d.ts +2 -0
- package/dist/examples/demo-runner.d.ts.map +1 -0
- package/dist/examples/demo-runner.js +119 -0
- package/dist/examples/demo-runner.js.map +1 -0
- package/dist/index.d.ts +10 -0
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +17 -2
- package/dist/index.js.map +1 -1
- package/dist/lib/auth-guardian.js.map +1 -1
- package/dist/lib/control-plane.d.ts +128 -0
- package/dist/lib/control-plane.d.ts.map +1 -0
- package/dist/lib/control-plane.js +527 -0
- package/dist/lib/control-plane.js.map +1 -0
- package/dist/lib/coverage-reporter.js.map +1 -1
- package/dist/lib/goal-dsl.d.ts.map +1 -1
- package/dist/lib/goal-dsl.js +0 -1
- package/dist/lib/goal-dsl.js.map +1 -1
- package/dist/lib/work-tree-dashboard.d.ts +130 -0
- package/dist/lib/work-tree-dashboard.d.ts.map +1 -0
- package/dist/lib/work-tree-dashboard.js +583 -0
- package/dist/lib/work-tree-dashboard.js.map +1 -0
- package/dist/lib/work-tree-ui.d.ts +107 -0
- package/dist/lib/work-tree-ui.d.ts.map +1 -0
- package/dist/lib/work-tree-ui.js +333 -0
- package/dist/lib/work-tree-ui.js.map +1 -0
- package/dist/lib/work-tree.d.ts +184 -0
- package/dist/lib/work-tree.d.ts.map +1 -0
- package/dist/lib/work-tree.js +480 -0
- package/dist/lib/work-tree.js.map +1 -0
- package/dist/security.d.ts.map +1 -1
- package/dist/security.js +3 -2
- package/dist/security.js.map +1 -1
- package/package.json +5 -5
|
@@ -0,0 +1,219 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Orchestrator Adapter — Wrap a child SwarmOrchestrator as an agent
|
|
4
|
+
*
|
|
5
|
+
* This adapter enables hierarchical multi-orchestrator coordination.
|
|
6
|
+
* A parent SwarmOrchestrator treats a child SwarmOrchestrator as just
|
|
7
|
+
* another agent via the adapter system. Each child has its own
|
|
8
|
+
* LockedBlackboard with its own filesystem mutex, so the propose →
|
|
9
|
+
* validate → commit pattern prevents overwrites at every level.
|
|
10
|
+
*
|
|
11
|
+
* Usage:
|
|
12
|
+
* const child = new SwarmOrchestrator('./boards/child-project', childRegistry);
|
|
13
|
+
* const adapter = new OrchestratorAdapter();
|
|
14
|
+
* adapter.registerOrchestrator('child-team', child, {
|
|
15
|
+
* description: 'Backend team orchestrator',
|
|
16
|
+
* });
|
|
17
|
+
*
|
|
18
|
+
* // Parent orchestrator delegates to the child as a normal agent
|
|
19
|
+
* await parentOrchestrator.addAdapter(adapter);
|
|
20
|
+
* await parentOrchestrator.execute('delegate_task', {
|
|
21
|
+
* targetAgent: 'orchestrator:child-team',
|
|
22
|
+
* taskPayload: { instruction: 'Refactor the auth module' },
|
|
23
|
+
* }, { agentId: 'root' });
|
|
24
|
+
*
|
|
25
|
+
* The child orchestrator receives the task, decomposes it across its own
|
|
26
|
+
* agents, and returns the aggregated result. The parent sees it as one
|
|
27
|
+
* atomic response — the hierarchy is transparent.
|
|
28
|
+
*
|
|
29
|
+
* @module OrchestratorAdapter
|
|
30
|
+
* @version 1.0.0
|
|
31
|
+
*/
|
|
32
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
33
|
+
exports.OrchestratorAdapter = void 0;
|
|
34
|
+
const base_adapter_1 = require("./base-adapter");
|
|
35
|
+
class OrchestratorAdapter extends base_adapter_1.BaseAdapter {
|
|
36
|
+
name = 'orchestrator';
|
|
37
|
+
version = '1.0.0';
|
|
38
|
+
children = new Map();
|
|
39
|
+
get capabilities() {
|
|
40
|
+
return {
|
|
41
|
+
streaming: false,
|
|
42
|
+
parallel: true,
|
|
43
|
+
bidirectional: false,
|
|
44
|
+
discovery: true,
|
|
45
|
+
authentication: false,
|
|
46
|
+
statefulSessions: true,
|
|
47
|
+
};
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* Register a child SwarmOrchestrator as an agent.
|
|
51
|
+
* The child keeps its own blackboard, adapters, and lock — full isolation.
|
|
52
|
+
*/
|
|
53
|
+
registerOrchestrator(orchestratorId, orchestrator, config) {
|
|
54
|
+
if (!orchestratorId || typeof orchestratorId !== 'string') {
|
|
55
|
+
throw new Error('orchestratorId must be a non-empty string');
|
|
56
|
+
}
|
|
57
|
+
if (!orchestrator || typeof orchestrator.execute !== 'function') {
|
|
58
|
+
throw new Error('orchestrator must implement execute()');
|
|
59
|
+
}
|
|
60
|
+
const childConfig = {
|
|
61
|
+
description: config?.description ?? `Child orchestrator: ${orchestratorId}`,
|
|
62
|
+
capabilities: config?.capabilities ?? ['orchestration', 'delegation', 'parallel'],
|
|
63
|
+
defaultTargetAgent: config?.defaultTargetAgent,
|
|
64
|
+
timeout: config?.timeout ?? 120_000,
|
|
65
|
+
};
|
|
66
|
+
this.children.set(orchestratorId, {
|
|
67
|
+
orchestrator,
|
|
68
|
+
config: childConfig,
|
|
69
|
+
busy: false,
|
|
70
|
+
});
|
|
71
|
+
this.registerLocalAgent({
|
|
72
|
+
id: orchestratorId,
|
|
73
|
+
name: orchestrator.name ?? orchestratorId,
|
|
74
|
+
description: childConfig.description,
|
|
75
|
+
capabilities: childConfig.capabilities,
|
|
76
|
+
status: 'available',
|
|
77
|
+
metadata: {
|
|
78
|
+
type: 'orchestrator',
|
|
79
|
+
timeout: childConfig.timeout,
|
|
80
|
+
defaultTargetAgent: childConfig.defaultTargetAgent,
|
|
81
|
+
},
|
|
82
|
+
});
|
|
83
|
+
}
|
|
84
|
+
/**
|
|
85
|
+
* Remove a child orchestrator from this adapter.
|
|
86
|
+
*/
|
|
87
|
+
removeOrchestrator(orchestratorId) {
|
|
88
|
+
const removed = this.children.delete(orchestratorId);
|
|
89
|
+
if (removed) {
|
|
90
|
+
this.unregisterAgent(orchestratorId);
|
|
91
|
+
}
|
|
92
|
+
return removed;
|
|
93
|
+
}
|
|
94
|
+
/**
|
|
95
|
+
* Execute a task on a child orchestrator.
|
|
96
|
+
*
|
|
97
|
+
* The payload is translated into a `delegate_task` call on the child.
|
|
98
|
+
* If `handoff.targetAgent` is set, it becomes the target within the child
|
|
99
|
+
* swarm. Otherwise, the child's `defaultTargetAgent` is used, or the
|
|
100
|
+
* child decides its own routing.
|
|
101
|
+
*/
|
|
102
|
+
async executeAgent(agentId, payload, context) {
|
|
103
|
+
this.ensureReady();
|
|
104
|
+
const child = this.children.get(agentId);
|
|
105
|
+
if (!child) {
|
|
106
|
+
return this.errorResult('ORCHESTRATOR_NOT_FOUND', `Child orchestrator "${agentId}" is not registered. Use registerOrchestrator().`, false);
|
|
107
|
+
}
|
|
108
|
+
const startTime = Date.now();
|
|
109
|
+
child.busy = true;
|
|
110
|
+
// Update agent status
|
|
111
|
+
const agentInfo = this.registeredAgents.get(agentId);
|
|
112
|
+
if (agentInfo)
|
|
113
|
+
agentInfo.status = 'busy';
|
|
114
|
+
try {
|
|
115
|
+
const instruction = payload.handoff?.instruction
|
|
116
|
+
?? payload.params?.instruction
|
|
117
|
+
?? JSON.stringify(payload.params);
|
|
118
|
+
// Determine the target agent within the child swarm
|
|
119
|
+
const innerTarget = payload.handoff?.targetAgent
|
|
120
|
+
?? child.config.defaultTargetAgent
|
|
121
|
+
?? 'orchestrator';
|
|
122
|
+
const childParams = {
|
|
123
|
+
targetAgent: innerTarget,
|
|
124
|
+
taskPayload: {
|
|
125
|
+
instruction,
|
|
126
|
+
context: payload.handoff?.context ?? payload.params?.context,
|
|
127
|
+
constraints: payload.handoff?.constraints ?? payload.params?.constraints,
|
|
128
|
+
expectedOutput: payload.handoff?.expectedOutput ?? payload.params?.expectedOutput,
|
|
129
|
+
},
|
|
130
|
+
timeout: child.config.timeout,
|
|
131
|
+
};
|
|
132
|
+
// Forward blackboard snapshot if provided (cross-level context sharing)
|
|
133
|
+
if (payload.blackboardSnapshot) {
|
|
134
|
+
childParams.parentBlackboardSnapshot = payload.blackboardSnapshot;
|
|
135
|
+
}
|
|
136
|
+
const childContext = {
|
|
137
|
+
agentId: context.agentId,
|
|
138
|
+
taskId: context.taskId,
|
|
139
|
+
sessionId: context.sessionId,
|
|
140
|
+
};
|
|
141
|
+
// Execute on the child orchestrator with timeout
|
|
142
|
+
const result = await Promise.race([
|
|
143
|
+
child.orchestrator.execute('delegate_task', childParams, childContext),
|
|
144
|
+
this.timeoutAfter(child.config.timeout ?? 120_000),
|
|
145
|
+
]);
|
|
146
|
+
const elapsed = Date.now() - startTime;
|
|
147
|
+
if (!result.success) {
|
|
148
|
+
return this.errorResult(result.error?.code ?? 'CHILD_EXECUTION_FAILED', result.error?.message ?? 'Child orchestrator returned failure', result.error?.recoverable ?? true, result.error);
|
|
149
|
+
}
|
|
150
|
+
return this.successResult({
|
|
151
|
+
orchestratorId: agentId,
|
|
152
|
+
childResult: result.data,
|
|
153
|
+
hierarchy: true,
|
|
154
|
+
}, elapsed);
|
|
155
|
+
}
|
|
156
|
+
catch (error) {
|
|
157
|
+
const elapsed = Date.now() - startTime;
|
|
158
|
+
if (error instanceof Error && error.message === 'ORCHESTRATOR_TIMEOUT') {
|
|
159
|
+
return this.errorResult('CHILD_TIMEOUT', `Child orchestrator "${agentId}" timed out after ${child.config.timeout}ms`, true);
|
|
160
|
+
}
|
|
161
|
+
return this.errorResult('CHILD_EXECUTION_ERROR', error instanceof Error ? error.message : 'Child orchestrator execution failed', true, error);
|
|
162
|
+
}
|
|
163
|
+
finally {
|
|
164
|
+
child.busy = false;
|
|
165
|
+
const agentInfo2 = this.registeredAgents.get(agentId);
|
|
166
|
+
if (agentInfo2)
|
|
167
|
+
agentInfo2.status = 'available';
|
|
168
|
+
}
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Query the internal state of a child orchestrator.
|
|
172
|
+
* Returns agents, blackboard snapshot, and tasks from the child swarm.
|
|
173
|
+
* The parent can use this for unified visibility across the hierarchy.
|
|
174
|
+
*/
|
|
175
|
+
async queryChildState(orchestratorId, scope = 'all') {
|
|
176
|
+
const child = this.children.get(orchestratorId);
|
|
177
|
+
if (!child)
|
|
178
|
+
return null;
|
|
179
|
+
const result = await child.orchestrator.execute('query_swarm_state', { scope }, { agentId: 'parent-orchestrator' });
|
|
180
|
+
return {
|
|
181
|
+
orchestratorId,
|
|
182
|
+
busy: child.busy,
|
|
183
|
+
swarmState: result.success ? result.data : null,
|
|
184
|
+
queriedAt: new Date().toISOString(),
|
|
185
|
+
};
|
|
186
|
+
}
|
|
187
|
+
/**
|
|
188
|
+
* Query state of all registered child orchestrators.
|
|
189
|
+
* This is the foundation for the unified ControlPlane view.
|
|
190
|
+
*/
|
|
191
|
+
async queryAllChildStates(scope = 'all') {
|
|
192
|
+
const entries = Array.from(this.children.keys());
|
|
193
|
+
const results = await Promise.all(entries.map(id => this.queryChildState(id, scope)));
|
|
194
|
+
return results.filter((s) => s !== null);
|
|
195
|
+
}
|
|
196
|
+
/**
|
|
197
|
+
* Get the list of registered child orchestrator IDs.
|
|
198
|
+
*/
|
|
199
|
+
listOrchestrators() {
|
|
200
|
+
return Array.from(this.children.keys());
|
|
201
|
+
}
|
|
202
|
+
/**
|
|
203
|
+
* Check if a specific child orchestrator is currently busy.
|
|
204
|
+
*/
|
|
205
|
+
isChildBusy(orchestratorId) {
|
|
206
|
+
return this.children.get(orchestratorId)?.busy ?? false;
|
|
207
|
+
}
|
|
208
|
+
async shutdown() {
|
|
209
|
+
this.children.clear();
|
|
210
|
+
await super.shutdown();
|
|
211
|
+
}
|
|
212
|
+
timeoutAfter(ms) {
|
|
213
|
+
return new Promise((_, reject) => {
|
|
214
|
+
setTimeout(() => reject(new Error('ORCHESTRATOR_TIMEOUT')), ms);
|
|
215
|
+
});
|
|
216
|
+
}
|
|
217
|
+
}
|
|
218
|
+
exports.OrchestratorAdapter = OrchestratorAdapter;
|
|
219
|
+
//# sourceMappingURL=orchestrator-adapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"orchestrator-adapter.js","sourceRoot":"","sources":["../../adapters/orchestrator-adapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Demo: ControlPlane — Multi-workspace dashboard
|
|
3
|
+
*
|
|
4
|
+
* Creates two workspaces, each with a WorkTree and LockedBlackboard,
|
|
5
|
+
* then simulates concurrent agent work across both.
|
|
6
|
+
*
|
|
7
|
+
* Usage:
|
|
8
|
+
* npx ts-node demo-control-plane.ts
|
|
9
|
+
* Open http://127.0.0.1:4800
|
|
10
|
+
*/
|
|
11
|
+
export {};
|
|
12
|
+
//# sourceMappingURL=demo-control-plane.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"demo-control-plane.d.ts","sourceRoot":"","sources":["../demo-control-plane.ts"],"names":[],"mappings":"AAAA;;;;;;;;;GASG"}
|
|
@@ -0,0 +1,147 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Demo: ControlPlane — Multi-workspace dashboard
|
|
4
|
+
*
|
|
5
|
+
* Creates two workspaces, each with a WorkTree and LockedBlackboard,
|
|
6
|
+
* then simulates concurrent agent work across both.
|
|
7
|
+
*
|
|
8
|
+
* Usage:
|
|
9
|
+
* npx ts-node demo-control-plane.ts
|
|
10
|
+
* Open http://127.0.0.1:4800
|
|
11
|
+
*/
|
|
12
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
13
|
+
const work_tree_1 = require("./lib/work-tree");
|
|
14
|
+
const locked_blackboard_1 = require("./lib/locked-blackboard");
|
|
15
|
+
const control_plane_1 = require("./lib/control-plane");
|
|
16
|
+
const path_1 = require("path");
|
|
17
|
+
const delay = (ms) => new Promise(r => setTimeout(r, ms));
|
|
18
|
+
async function main() {
|
|
19
|
+
// ── Workspace 1: Feature-Auth ──────────────────────────────────
|
|
20
|
+
const tree1 = new work_tree_1.WorkTree('root-auth', 'Auth System');
|
|
21
|
+
tree1.addChild('root-auth', { id: 'oauth', label: 'OAuth Provider' });
|
|
22
|
+
tree1.addChild('root-auth', { id: 'jwt', label: 'JWT Validation' });
|
|
23
|
+
tree1.addChild('root-auth', { id: 'session', label: 'Session Store' });
|
|
24
|
+
tree1.addChild('root-auth', { id: 'rate-limit', label: 'Rate Limiter' });
|
|
25
|
+
const bb1Dir = (0, path_1.join)(__dirname, 'data', 'demo-cp-auth');
|
|
26
|
+
const bb1 = new locked_blackboard_1.LockedBlackboard(bb1Dir);
|
|
27
|
+
// ── Workspace 2: Feature-Search ────────────────────────────────
|
|
28
|
+
const tree2 = new work_tree_1.WorkTree('root-search', 'Search Pipeline');
|
|
29
|
+
tree2.addChild('root-search', { id: 'indexer', label: 'Index Builder' });
|
|
30
|
+
tree2.addChild('root-search', { id: 'query-parser', label: 'Query Parser' });
|
|
31
|
+
tree2.addChild('root-search', { id: 'ranker', label: 'Ranking Engine' });
|
|
32
|
+
tree2.addChild('query-parser', { id: 'tokenizer', label: 'Tokenizer' });
|
|
33
|
+
tree2.addChild('query-parser', { id: 'synonyms', label: 'Synonym Resolver' });
|
|
34
|
+
const bb2Dir = (0, path_1.join)(__dirname, 'data', 'demo-cp-search');
|
|
35
|
+
const bb2 = new locked_blackboard_1.LockedBlackboard(bb2Dir);
|
|
36
|
+
// ── ControlPlane ───────────────────────────────────────────────
|
|
37
|
+
const cp = new control_plane_1.ControlPlane({ port: 4800 });
|
|
38
|
+
cp.addWorkspace('feature-auth', { tree: tree1, blackboard: bb1 });
|
|
39
|
+
cp.addWorkspace('feature-search', { tree: tree2, blackboard: bb2 });
|
|
40
|
+
cp.setOrchestrator('feature-auth', 'lead');
|
|
41
|
+
cp.setOrchestrator('feature-search', 'architect');
|
|
42
|
+
await cp.start();
|
|
43
|
+
console.log(`\n ControlPlane running → ${cp.url}\n 2 workspaces registered\n Press Ctrl+C to stop.\n`);
|
|
44
|
+
// ── Simulate Auth workspace ────────────────────────────────────
|
|
45
|
+
async function runAuth() {
|
|
46
|
+
cp.pushNarrative('feature-auth', 'Starting Auth System build');
|
|
47
|
+
cp.pushLog('feature-auth', 'lead', 'Orchestrating auth pipeline');
|
|
48
|
+
// OAuth
|
|
49
|
+
tree1.setStatus('oauth', 'running');
|
|
50
|
+
cp.pushLog('feature-auth', 'oauth-bot', 'Connecting to OAuth discovery endpoint');
|
|
51
|
+
await delay(1200);
|
|
52
|
+
const id1 = bb1.propose('auth:provider', { type: 'oauth2', issuer: 'https://auth.example.com' }, 'oauth-bot');
|
|
53
|
+
bb1.validate(id1, 'lead');
|
|
54
|
+
bb1.commit(id1);
|
|
55
|
+
cp.pushLog('feature-auth', 'oauth-bot', 'Provider config written to blackboard');
|
|
56
|
+
tree1.addTokens('oauth', 2400);
|
|
57
|
+
tree1.setStatus('oauth', 'completed');
|
|
58
|
+
// JWT
|
|
59
|
+
tree1.setStatus('jwt', 'running');
|
|
60
|
+
cp.pushLog('feature-auth', 'jwt-agent', 'Generating RS256 key pair');
|
|
61
|
+
await delay(1500);
|
|
62
|
+
const id2 = bb1.propose('auth:jwt_secret', 'RS256:auto-generated', 'jwt-agent');
|
|
63
|
+
bb1.validate(id2, 'lead');
|
|
64
|
+
bb1.commit(id2);
|
|
65
|
+
cp.pushLog('feature-auth', 'jwt-agent', 'JWT validation service ready');
|
|
66
|
+
tree1.addTokens('jwt', 1800);
|
|
67
|
+
tree1.setStatus('jwt', 'completed');
|
|
68
|
+
// Session Store
|
|
69
|
+
tree1.setStatus('session', 'running');
|
|
70
|
+
cp.pushLog('feature-auth', 'session-agent', 'Setting up Redis session store');
|
|
71
|
+
await delay(1000);
|
|
72
|
+
const id3 = bb1.propose('auth:session_ttl', 3600, 'session-agent');
|
|
73
|
+
bb1.validate(id3, 'lead');
|
|
74
|
+
bb1.commit(id3);
|
|
75
|
+
cp.pushLog('feature-auth', 'session-agent', 'Session TTL: 3600s');
|
|
76
|
+
tree1.addTokens('session', 900);
|
|
77
|
+
tree1.setStatus('session', 'completed');
|
|
78
|
+
// Rate Limiter
|
|
79
|
+
tree1.setStatus('rate-limit', 'running');
|
|
80
|
+
cp.pushLog('feature-auth', 'rate-agent', 'Configuring sliding window limiter');
|
|
81
|
+
await delay(800);
|
|
82
|
+
const id4 = bb1.propose('auth:rate_limit', { windowMs: 60000, max: 100 }, 'rate-agent');
|
|
83
|
+
bb1.validate(id4, 'lead');
|
|
84
|
+
bb1.commit(id4);
|
|
85
|
+
cp.pushLog('feature-auth', 'rate-agent', 'Rate limit: 100 req/min');
|
|
86
|
+
tree1.addTokens('rate-limit', 600);
|
|
87
|
+
tree1.setStatus('rate-limit', 'completed');
|
|
88
|
+
cp.pushNarrative('feature-auth', 'Auth system complete — all 4 components done');
|
|
89
|
+
cp.pushLog('feature-auth', 'lead', 'All auth tasks finished');
|
|
90
|
+
}
|
|
91
|
+
// ── Simulate Search workspace ──────────────────────────────────
|
|
92
|
+
async function runSearch() {
|
|
93
|
+
await delay(500); // slight offset
|
|
94
|
+
cp.pushNarrative('feature-search', 'Initializing search pipeline');
|
|
95
|
+
cp.pushLog('feature-search', 'architect', 'Coordinating search build');
|
|
96
|
+
// Tokenizer
|
|
97
|
+
tree2.setStatus('tokenizer', 'running');
|
|
98
|
+
cp.pushLog('feature-search', 'nlp-bot', 'Training BPE tokenizer');
|
|
99
|
+
await delay(1800);
|
|
100
|
+
const sid1 = bb2.propose('search:tokenizer', { type: 'bpe', vocabSize: 32000 }, 'nlp-bot');
|
|
101
|
+
bb2.validate(sid1, 'architect');
|
|
102
|
+
bb2.commit(sid1);
|
|
103
|
+
cp.pushLog('feature-search', 'nlp-bot', 'Tokenizer ready — 32k vocab');
|
|
104
|
+
tree2.addTokens('tokenizer', 3200);
|
|
105
|
+
tree2.setStatus('tokenizer', 'completed');
|
|
106
|
+
// Synonym Resolver
|
|
107
|
+
tree2.setStatus('synonyms', 'running');
|
|
108
|
+
cp.pushLog('feature-search', 'nlp-bot', 'Loading synonym graph');
|
|
109
|
+
await delay(1200);
|
|
110
|
+
const sid2 = bb2.propose('search:synonyms', { count: 45000, source: 'wordnet' }, 'nlp-bot');
|
|
111
|
+
bb2.validate(sid2, 'architect');
|
|
112
|
+
bb2.commit(sid2);
|
|
113
|
+
tree2.addTokens('synonyms', 1800);
|
|
114
|
+
tree2.setStatus('synonyms', 'completed');
|
|
115
|
+
// Query Parser (parent — auto-completes when children done)
|
|
116
|
+
cp.pushLog('feature-search', 'architect', 'Query parser subtasks complete');
|
|
117
|
+
// Index Builder
|
|
118
|
+
tree2.setStatus('indexer', 'running');
|
|
119
|
+
cp.pushLog('feature-search', 'indexer', 'Building inverted index');
|
|
120
|
+
await delay(2000);
|
|
121
|
+
const sid3 = bb2.propose('search:index_status', { shards: 8, docsIndexed: 1_200_000 }, 'indexer');
|
|
122
|
+
bb2.validate(sid3, 'architect');
|
|
123
|
+
bb2.commit(sid3);
|
|
124
|
+
cp.pushLog('feature-search', 'indexer', 'Indexed 1.2M documents across 8 shards');
|
|
125
|
+
tree2.addTokens('indexer', 5400);
|
|
126
|
+
tree2.setStatus('indexer', 'completed');
|
|
127
|
+
// Ranking Engine
|
|
128
|
+
tree2.setStatus('ranker', 'running');
|
|
129
|
+
cp.pushLog('feature-search', 'ranker', 'Training BM25 + neural reranker');
|
|
130
|
+
await delay(1400);
|
|
131
|
+
const sid4 = bb2.propose('search:ranking_model', { algo: 'bm25+neural', ndcg: 0.87 }, 'ranker');
|
|
132
|
+
bb2.validate(sid4, 'architect');
|
|
133
|
+
bb2.commit(sid4);
|
|
134
|
+
cp.pushLog('feature-search', 'ranker', 'NDCG@10 = 0.87');
|
|
135
|
+
tree2.addTokens('ranker', 4100);
|
|
136
|
+
tree2.setStatus('ranker', 'completed');
|
|
137
|
+
cp.pushNarrative('feature-search', 'Search pipeline complete');
|
|
138
|
+
cp.pushLog('feature-search', 'architect', 'All search tasks finished');
|
|
139
|
+
}
|
|
140
|
+
// Run both workspaces concurrently
|
|
141
|
+
await Promise.all([runAuth(), runSearch()]);
|
|
142
|
+
console.log(' Simulation complete. Dashboard remains live. Press Ctrl+C to exit.\n');
|
|
143
|
+
// Keep alive
|
|
144
|
+
await new Promise(() => { });
|
|
145
|
+
}
|
|
146
|
+
main().catch(console.error);
|
|
147
|
+
//# sourceMappingURL=demo-control-plane.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"demo-control-plane.js","sourceRoot":"","sources":["../demo-control-plane.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"demo-worktree-dashboard.d.ts","sourceRoot":"","sources":["../demo-worktree-dashboard.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,131 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
const work_tree_1 = require("./lib/work-tree");
|
|
4
|
+
const work_tree_dashboard_1 = require("./lib/work-tree-dashboard");
|
|
5
|
+
async function main() {
|
|
6
|
+
const tree = new work_tree_1.WorkTree('root', 'Build Feature X — Code Review Swarm');
|
|
7
|
+
const dashboard = new work_tree_dashboard_1.WorkTreeDashboard(tree, { port: 4821 });
|
|
8
|
+
dashboard.setOrchestrator('lead');
|
|
9
|
+
await dashboard.start();
|
|
10
|
+
console.log(`\n Dashboard: ${dashboard.url}\n`);
|
|
11
|
+
console.log(' Open the Agents tab to see agent orchestration view.\n');
|
|
12
|
+
// Build tree structure
|
|
13
|
+
tree.addChild('root', { id: 'design', label: 'Design API', agent: 'architect' });
|
|
14
|
+
tree.addChild('root', { id: 'impl', label: 'Implement', agent: 'lead' });
|
|
15
|
+
tree.addChild('root', { id: 'test', label: 'Test Suite', agent: 'qa' });
|
|
16
|
+
tree.addChild('design', { id: 'd1', label: 'Schema design', agent: 'architect' });
|
|
17
|
+
tree.addChild('design', { id: 'd2', label: 'Review endpoints', agent: 'architect' });
|
|
18
|
+
tree.addChild('impl', { id: 'i1', label: 'Auth module', agent: 'worker-1' });
|
|
19
|
+
tree.addChild('impl', { id: 'i2', label: 'DB schema', agent: 'worker-2' });
|
|
20
|
+
tree.addChild('impl', { id: 'i3', label: 'REST handlers', agent: 'worker-3' });
|
|
21
|
+
tree.addChild('i1', { id: 'i1a', label: 'JWT tokens', agent: 'worker-1' });
|
|
22
|
+
tree.addChild('i1', { id: 'i1b', label: 'OAuth flow', agent: 'worker-1' });
|
|
23
|
+
tree.addChild('test', { id: 't1', label: 'Unit tests', agent: 'qa' });
|
|
24
|
+
tree.addChild('test', { id: 't2', label: 'Integration tests', agent: 'qa' });
|
|
25
|
+
// Simulate agent work with timed updates (now with pushLog calls)
|
|
26
|
+
const steps = [
|
|
27
|
+
[500, () => { dashboard.pushNarrative('Orchestration started. Dispatching design phase to architect.'); }],
|
|
28
|
+
[1000, () => {
|
|
29
|
+
tree.setStatus('d1', 'running');
|
|
30
|
+
dashboard.pushLog('architect', 'Starting schema design for Feature X');
|
|
31
|
+
dashboard.pushLog('lead', 'Assigned design tasks to architect agent', 'info');
|
|
32
|
+
}],
|
|
33
|
+
[2000, () => {
|
|
34
|
+
tree.setStatus('d1', 'completed');
|
|
35
|
+
tree.addTokens('d1', 120);
|
|
36
|
+
dashboard.pushLog('architect', 'Schema design complete — 3 tables, 12 fields');
|
|
37
|
+
dashboard.pushNarrative('Schema design finished. Moving to endpoint review.');
|
|
38
|
+
}],
|
|
39
|
+
[2500, () => {
|
|
40
|
+
tree.setStatus('d2', 'running');
|
|
41
|
+
dashboard.pushLog('architect', 'Reviewing REST endpoint definitions');
|
|
42
|
+
}],
|
|
43
|
+
[4000, () => {
|
|
44
|
+
tree.setStatus('d2', 'completed');
|
|
45
|
+
tree.addTokens('d2', 80);
|
|
46
|
+
dashboard.pushLog('architect', 'Endpoint review done — 5 endpoints approved');
|
|
47
|
+
dashboard.pushNarrative('Design phase complete. Starting parallel implementation.');
|
|
48
|
+
}],
|
|
49
|
+
[5000, () => {
|
|
50
|
+
tree.setStatus('i1a', 'running');
|
|
51
|
+
tree.setStatus('i2', 'running');
|
|
52
|
+
dashboard.pushLog('worker-1', 'Implementing JWT token signing/verification');
|
|
53
|
+
dashboard.pushLog('worker-2', 'Creating database schema migrations');
|
|
54
|
+
dashboard.pushLog('lead', 'Dispatched auth + DB work to workers in parallel');
|
|
55
|
+
dashboard.pushNarrative('Implementation phase: 2 workers running in parallel.');
|
|
56
|
+
}],
|
|
57
|
+
[6500, () => {
|
|
58
|
+
tree.addTokens('i1a', 200);
|
|
59
|
+
dashboard.pushLog('worker-1', 'Generated RSA-256 key pair for JWT');
|
|
60
|
+
dashboard.pushLog('worker-2', 'Migration 001: users table created');
|
|
61
|
+
}],
|
|
62
|
+
[8000, () => {
|
|
63
|
+
tree.setStatus('i1a', 'completed');
|
|
64
|
+
tree.addTokens('i1a', 150);
|
|
65
|
+
dashboard.pushLog('worker-1', 'JWT module done — sign, verify, refresh implemented');
|
|
66
|
+
}],
|
|
67
|
+
[8500, () => {
|
|
68
|
+
tree.setStatus('i1b', 'running');
|
|
69
|
+
dashboard.pushLog('worker-1', 'Starting OAuth2 flow implementation');
|
|
70
|
+
dashboard.pushLog('lead', 'Worker-1 moving to OAuth after JWT completion');
|
|
71
|
+
}],
|
|
72
|
+
[9500, () => {
|
|
73
|
+
tree.setStatus('i2', 'completed');
|
|
74
|
+
tree.addTokens('i2', 180);
|
|
75
|
+
dashboard.pushLog('worker-2', 'All DB migrations complete — 3 tables ready');
|
|
76
|
+
dashboard.pushNarrative('DB schema done. Worker-2 now idle.');
|
|
77
|
+
}],
|
|
78
|
+
[10000, () => {
|
|
79
|
+
tree.setStatus('i3', 'running');
|
|
80
|
+
dashboard.pushLog('worker-3', 'Building REST handler boilerplate');
|
|
81
|
+
dashboard.pushLog('lead', 'Assigned REST handlers to worker-3');
|
|
82
|
+
}],
|
|
83
|
+
[11000, () => {
|
|
84
|
+
tree.addTokens('i1b', 300);
|
|
85
|
+
dashboard.pushLog('worker-1', 'OAuth callback + token exchange working');
|
|
86
|
+
dashboard.pushLog('worker-3', 'GET /api/users endpoint implemented');
|
|
87
|
+
}],
|
|
88
|
+
[12000, () => {
|
|
89
|
+
tree.setStatus('i3', 'failed');
|
|
90
|
+
tree.addTokens('i3', 90);
|
|
91
|
+
dashboard.pushLog('worker-3', 'FAILED: POST /api/auth — validation error in schema', 'error');
|
|
92
|
+
dashboard.pushNarrative('⚠ Worker-3 failed on REST handlers. Needs investigation.');
|
|
93
|
+
}],
|
|
94
|
+
[13000, () => {
|
|
95
|
+
tree.setStatus('i1b', 'completed');
|
|
96
|
+
tree.addTokens('i1b', 100);
|
|
97
|
+
dashboard.pushLog('worker-1', 'OAuth flow complete with PKCE support');
|
|
98
|
+
dashboard.pushNarrative('Auth module fully complete. Moving to test phase.');
|
|
99
|
+
}],
|
|
100
|
+
[14000, () => {
|
|
101
|
+
tree.setStatus('t1', 'running');
|
|
102
|
+
dashboard.pushLog('qa', 'Running unit test suite (47 test cases)');
|
|
103
|
+
dashboard.pushLog('lead', 'Test phase started — QA agent running unit tests');
|
|
104
|
+
}],
|
|
105
|
+
[16000, () => {
|
|
106
|
+
tree.setStatus('t1', 'completed');
|
|
107
|
+
tree.addTokens('t1', 250);
|
|
108
|
+
dashboard.pushLog('qa', 'Unit tests: 47/47 passed ✔');
|
|
109
|
+
}],
|
|
110
|
+
[17000, () => {
|
|
111
|
+
tree.setStatus('t2', 'running');
|
|
112
|
+
dashboard.pushLog('qa', 'Starting integration test suite');
|
|
113
|
+
dashboard.pushNarrative('Integration testing in progress. Almost done.');
|
|
114
|
+
}],
|
|
115
|
+
[19000, () => {
|
|
116
|
+
tree.setStatus('t2', 'completed');
|
|
117
|
+
tree.addTokens('t2', 300);
|
|
118
|
+
dashboard.pushLog('qa', 'Integration tests: 12/12 passed ✔');
|
|
119
|
+
dashboard.pushNarrative('All tests passed. Orchestration nearly complete (1 failure in REST handlers).');
|
|
120
|
+
}],
|
|
121
|
+
[20000, () => {
|
|
122
|
+
dashboard.pushNarrative('Orchestration finished. Summary: 10/11 tasks succeeded, 1 failed.');
|
|
123
|
+
console.log('\n Simulation complete. Press Ctrl+C to exit.\n');
|
|
124
|
+
}],
|
|
125
|
+
];
|
|
126
|
+
for (const [delay, fn] of steps) {
|
|
127
|
+
setTimeout(fn, delay);
|
|
128
|
+
}
|
|
129
|
+
}
|
|
130
|
+
main().catch(console.error);
|
|
131
|
+
//# sourceMappingURL=demo-worktree-dashboard.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"demo-worktree-dashboard.js","sourceRoot":"","sources":["../demo-worktree-dashboard.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 01-hello-swarm.ts
|
|
3
|
+
* ─────────────────
|
|
4
|
+
* The simplest possible network-ai demo: three agents (Researcher, Analyst,
|
|
5
|
+
* Reporter) passing work through a shared blackboard.
|
|
6
|
+
*
|
|
7
|
+
* No API key needed — all agents are plain async functions.
|
|
8
|
+
*
|
|
9
|
+
* Run:
|
|
10
|
+
* npx ts-node examples/01-hello-swarm.ts
|
|
11
|
+
*/
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=01-hello-swarm.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"01-hello-swarm.d.ts","sourceRoot":"","sources":["../../examples/01-hello-swarm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG"}
|