network-ai 4.15.3 → 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 +12 -5
- package/QUICKSTART.md +32 -5
- package/README.md +42 -17
- package/bin/dashboard.ts +146 -0
- package/bin/mcp-server.ts +3 -2
- package/dist/adapters/adapter-registry.d.ts +33 -1
- package/dist/adapters/adapter-registry.d.ts.map +1 -1
- package/dist/adapters/adapter-registry.js +49 -0
- package/dist/adapters/adapter-registry.js.map +1 -1
- package/dist/adapters/anthropic-computer-use-adapter.d.ts +132 -0
- package/dist/adapters/anthropic-computer-use-adapter.d.ts.map +1 -0
- package/dist/adapters/anthropic-computer-use-adapter.js +180 -0
- package/dist/adapters/anthropic-computer-use-adapter.js.map +1 -0
- package/dist/adapters/browser-agent-adapter.d.ts +121 -0
- package/dist/adapters/browser-agent-adapter.d.ts.map +1 -0
- package/dist/adapters/browser-agent-adapter.js +219 -0
- package/dist/adapters/browser-agent-adapter.js.map +1 -0
- package/dist/adapters/copilot-adapter.d.ts +59 -0
- package/dist/adapters/copilot-adapter.d.ts.map +1 -0
- package/dist/adapters/copilot-adapter.js +132 -0
- package/dist/adapters/copilot-adapter.js.map +1 -0
- package/dist/adapters/custom-adapter.d.ts +1 -1
- package/dist/adapters/custom-adapter.js +1 -1
- package/dist/adapters/index.d.ts +17 -1
- package/dist/adapters/index.d.ts.map +1 -1
- package/dist/adapters/index.js +25 -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/langgraph-adapter.d.ts +70 -0
- package/dist/adapters/langgraph-adapter.d.ts.map +1 -0
- package/dist/adapters/langgraph-adapter.js +119 -0
- package/dist/adapters/langgraph-adapter.js.map +1 -0
- 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/openai-agents-adapter.d.ts +100 -0
- package/dist/adapters/openai-agents-adapter.d.ts.map +1 -0
- package/dist/adapters/openai-agents-adapter.js +118 -0
- package/dist/adapters/openai-agents-adapter.js.map +1 -0
- 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/adapters/pydantic-ai-adapter.d.ts +104 -0
- package/dist/adapters/pydantic-ai-adapter.d.ts.map +1 -0
- package/dist/adapters/pydantic-ai-adapter.js +163 -0
- package/dist/adapters/pydantic-ai-adapter.js.map +1 -0
- package/dist/adapters/vertex-ai-adapter.d.ts +122 -0
- package/dist/adapters/vertex-ai-adapter.d.ts.map +1 -0
- package/dist/adapters/vertex-ai-adapter.js +166 -0
- package/dist/adapters/vertex-ai-adapter.js.map +1 -0
- package/dist/bin/dashboard.d.ts +11 -0
- package/dist/bin/dashboard.d.ts.map +1 -0
- package/dist/bin/dashboard.js +135 -0
- package/dist/bin/dashboard.js.map +1 -0
- package/dist/bin/mcp-server.js +3 -2
- package/dist/bin/mcp-server.js.map +1 -1
- 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 +113 -559
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +310 -1074
- package/dist/index.js.map +1 -1
- package/dist/lib/adapter-test-harness.d.ts +88 -0
- package/dist/lib/adapter-test-harness.d.ts.map +1 -0
- package/dist/lib/adapter-test-harness.js +118 -0
- package/dist/lib/adapter-test-harness.js.map +1 -0
- package/dist/lib/agent-conversation.d.ts +115 -0
- package/dist/lib/agent-conversation.d.ts.map +1 -0
- package/dist/lib/agent-conversation.js +155 -0
- package/dist/lib/agent-conversation.js.map +1 -0
- package/dist/lib/agent-debate.d.ts +115 -0
- package/dist/lib/agent-debate.d.ts.map +1 -0
- package/dist/lib/agent-debate.js +146 -0
- package/dist/lib/agent-debate.js.map +1 -0
- package/dist/lib/agent-memory.d.ts +157 -0
- package/dist/lib/agent-memory.d.ts.map +1 -0
- package/dist/lib/agent-memory.js +336 -0
- package/dist/lib/agent-memory.js.map +1 -0
- package/dist/lib/agent-vcr.d.ts +133 -0
- package/dist/lib/agent-vcr.d.ts.map +1 -0
- package/dist/lib/agent-vcr.js +218 -0
- package/dist/lib/agent-vcr.js.map +1 -0
- package/dist/lib/anomaly-detector.d.ts +112 -0
- package/dist/lib/anomaly-detector.d.ts.map +1 -0
- package/dist/lib/anomaly-detector.js +178 -0
- package/dist/lib/anomaly-detector.js.map +1 -0
- package/dist/lib/approval-inbox.d.ts +147 -0
- package/dist/lib/approval-inbox.d.ts.map +1 -0
- package/dist/lib/approval-inbox.js +385 -0
- package/dist/lib/approval-inbox.js.map +1 -0
- package/dist/lib/auth-guardian.d.ts +170 -0
- package/dist/lib/auth-guardian.d.ts.map +1 -0
- package/dist/lib/auth-guardian.js +604 -0
- package/dist/lib/auth-guardian.js.map +1 -0
- package/dist/lib/auth-validator.d.ts +70 -0
- package/dist/lib/auth-validator.d.ts.map +1 -0
- package/dist/lib/auth-validator.js +32 -0
- package/dist/lib/auth-validator.js.map +1 -0
- package/dist/lib/blackboard-validator.d.ts +56 -0
- package/dist/lib/blackboard-validator.d.ts.map +1 -1
- package/dist/lib/blackboard-validator.js +181 -4
- package/dist/lib/blackboard-validator.js.map +1 -1
- package/dist/lib/comparison-runner.d.ts +99 -0
- package/dist/lib/comparison-runner.d.ts.map +1 -0
- package/dist/lib/comparison-runner.js +138 -0
- package/dist/lib/comparison-runner.js.map +1 -0
- package/dist/lib/config-watcher.d.ts +109 -0
- package/dist/lib/config-watcher.d.ts.map +1 -0
- package/dist/lib/config-watcher.js +215 -0
- package/dist/lib/config-watcher.js.map +1 -0
- 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/cost-governor.d.ts +105 -0
- package/dist/lib/cost-governor.d.ts.map +1 -0
- package/dist/lib/cost-governor.js +128 -0
- package/dist/lib/cost-governor.js.map +1 -0
- package/dist/lib/cost-heatmap.d.ts +104 -0
- package/dist/lib/cost-heatmap.d.ts.map +1 -0
- package/dist/lib/cost-heatmap.js +161 -0
- package/dist/lib/cost-heatmap.js.map +1 -0
- package/dist/lib/coverage-reporter.d.ts +92 -0
- package/dist/lib/coverage-reporter.d.ts.map +1 -0
- package/dist/lib/coverage-reporter.js +177 -0
- package/dist/lib/coverage-reporter.js.map +1 -0
- package/dist/lib/dashboard-server.d.ts +71 -0
- package/dist/lib/dashboard-server.d.ts.map +1 -0
- package/dist/lib/dashboard-server.js +403 -0
- package/dist/lib/dashboard-server.js.map +1 -0
- package/dist/lib/dry-run.d.ts +73 -0
- package/dist/lib/dry-run.d.ts.map +1 -0
- package/dist/lib/dry-run.js +130 -0
- package/dist/lib/dry-run.js.map +1 -0
- package/dist/lib/errors.d.ts +15 -0
- package/dist/lib/errors.d.ts.map +1 -1
- package/dist/lib/errors.js +38 -0
- package/dist/lib/errors.js.map +1 -1
- package/dist/lib/event-bus.d.ts +167 -0
- package/dist/lib/event-bus.d.ts.map +1 -0
- package/dist/lib/event-bus.js +229 -0
- package/dist/lib/event-bus.js.map +1 -0
- package/dist/lib/explainability.d.ts +85 -0
- package/dist/lib/explainability.d.ts.map +1 -0
- package/dist/lib/explainability.js +102 -0
- package/dist/lib/explainability.js.map +1 -0
- package/dist/lib/goal-dsl.d.ts +157 -0
- package/dist/lib/goal-dsl.d.ts.map +1 -0
- package/dist/lib/goal-dsl.js +391 -0
- package/dist/lib/goal-dsl.js.map +1 -0
- package/dist/lib/job-queue.d.ts +183 -0
- package/dist/lib/job-queue.d.ts.map +1 -0
- package/dist/lib/job-queue.js +310 -0
- package/dist/lib/job-queue.js.map +1 -0
- package/dist/lib/learning-loop.d.ts +113 -0
- package/dist/lib/learning-loop.d.ts.map +1 -0
- package/dist/lib/learning-loop.js +181 -0
- package/dist/lib/learning-loop.js.map +1 -0
- package/dist/lib/lifecycle-hooks.d.ts +116 -0
- package/dist/lib/lifecycle-hooks.d.ts.map +1 -0
- package/dist/lib/lifecycle-hooks.js +148 -0
- package/dist/lib/lifecycle-hooks.js.map +1 -0
- package/dist/lib/locked-blackboard.d.ts.map +1 -1
- package/dist/lib/locked-blackboard.js +9 -5
- package/dist/lib/locked-blackboard.js.map +1 -1
- package/dist/lib/mcp-tool-consumer.d.ts +153 -0
- package/dist/lib/mcp-tool-consumer.d.ts.map +1 -0
- package/dist/lib/mcp-tool-consumer.js +320 -0
- package/dist/lib/mcp-tool-consumer.js.map +1 -0
- package/dist/lib/metrics.d.ts +119 -0
- package/dist/lib/metrics.d.ts.map +1 -0
- package/dist/lib/metrics.js +284 -0
- package/dist/lib/metrics.js.map +1 -0
- package/dist/lib/orchestrator-types.d.ts +309 -0
- package/dist/lib/orchestrator-types.d.ts.map +1 -0
- package/dist/lib/orchestrator-types.js +61 -0
- package/dist/lib/orchestrator-types.js.map +1 -0
- package/dist/lib/otel-bridge.d.ts +74 -0
- package/dist/lib/otel-bridge.d.ts.map +1 -0
- package/dist/lib/otel-bridge.js +167 -0
- package/dist/lib/otel-bridge.js.map +1 -0
- package/dist/lib/playground.d.ts +76 -0
- package/dist/lib/playground.d.ts.map +1 -0
- package/dist/lib/playground.js +224 -0
- package/dist/lib/playground.js.map +1 -0
- package/dist/lib/quadtree.d.ts +114 -0
- package/dist/lib/quadtree.d.ts.map +1 -0
- package/dist/lib/quadtree.js +259 -0
- package/dist/lib/quadtree.js.map +1 -0
- package/dist/lib/shared-blackboard.d.ts +101 -0
- package/dist/lib/shared-blackboard.d.ts.map +1 -0
- package/dist/lib/shared-blackboard.js +249 -0
- package/dist/lib/shared-blackboard.js.map +1 -0
- package/dist/lib/speculative-executor.d.ts +89 -0
- package/dist/lib/speculative-executor.d.ts.map +1 -0
- package/dist/lib/speculative-executor.js +107 -0
- package/dist/lib/speculative-executor.js.map +1 -0
- package/dist/lib/swarm-transport.d.ts +150 -0
- package/dist/lib/swarm-transport.d.ts.map +1 -0
- package/dist/lib/swarm-transport.js +307 -0
- package/dist/lib/swarm-transport.js.map +1 -0
- package/dist/lib/task-decomposer.d.ts +41 -0
- package/dist/lib/task-decomposer.d.ts.map +1 -0
- package/dist/lib/task-decomposer.js +272 -0
- package/dist/lib/task-decomposer.js.map +1 -0
- package/dist/lib/timeline-scrubber.d.ts +84 -0
- package/dist/lib/timeline-scrubber.d.ts.map +1 -0
- package/dist/lib/timeline-scrubber.js +173 -0
- package/dist/lib/timeline-scrubber.js.map +1 -0
- package/dist/lib/topology.d.ts +361 -0
- package/dist/lib/topology.d.ts.map +1 -0
- package/dist/lib/topology.js +591 -0
- package/dist/lib/topology.js.map +1 -0
- 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 +95 -0
- package/dist/security.d.ts.map +1 -1
- package/dist/security.js +267 -4
- package/dist/security.js.map +1 -1
- package/package.json +8 -6
- package/types/agent-adapter.d.ts +5 -0
|
@@ -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"}
|
|
@@ -0,0 +1,165 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* 01-hello-swarm.ts
|
|
4
|
+
* ─────────────────
|
|
5
|
+
* The simplest possible network-ai demo: three agents (Researcher, Analyst,
|
|
6
|
+
* Reporter) passing work through a shared blackboard.
|
|
7
|
+
*
|
|
8
|
+
* No API key needed — all agents are plain async functions.
|
|
9
|
+
*
|
|
10
|
+
* Run:
|
|
11
|
+
* npx ts-node examples/01-hello-swarm.ts
|
|
12
|
+
*/
|
|
13
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
|
+
const __1 = require("..");
|
|
15
|
+
// ─── ANSI helpers for readable terminal output ────────────────────────────────
|
|
16
|
+
const c = {
|
|
17
|
+
reset: '\x1b[0m',
|
|
18
|
+
bold: '\x1b[1m',
|
|
19
|
+
cyan: '\x1b[36m',
|
|
20
|
+
green: '\x1b[32m',
|
|
21
|
+
yellow: '\x1b[33m',
|
|
22
|
+
blue: '\x1b[34m',
|
|
23
|
+
magenta: '\x1b[35m',
|
|
24
|
+
dim: '\x1b[2m',
|
|
25
|
+
};
|
|
26
|
+
const banner = (msg) => console.log(`\n${c.bold}${c.cyan}--- ${msg} ---${c.reset}`);
|
|
27
|
+
const step = (agent, msg) => console.log(` ${c.green}[${agent}]${c.reset} ${msg}`);
|
|
28
|
+
const info = (msg) => console.log(` ${c.dim}${msg}${c.reset}`);
|
|
29
|
+
// ─── MAIN ─────────────────────────────────────────────────────────────────────
|
|
30
|
+
async function main() {
|
|
31
|
+
banner('network-ai - Hello Swarm');
|
|
32
|
+
// 1. Shared blackboard — the agents' shared memory
|
|
33
|
+
// (writes to swarm-blackboard.md in the workspace root)
|
|
34
|
+
const blackboard = new __1.SharedBlackboard(process.cwd());
|
|
35
|
+
// Register each agent identity on the blackboard.
|
|
36
|
+
// Token + namespace scoping means agents can only see keys they're allowed to.
|
|
37
|
+
blackboard.registerAgent('researcher', 'tok-researcher', ['task:', 'research:']);
|
|
38
|
+
blackboard.registerAgent('analyst', 'tok-analyst', ['task:', 'research:', 'analysis:']);
|
|
39
|
+
blackboard.registerAgent('reporter', 'tok-reporter', ['task:', 'analysis:', 'report:']);
|
|
40
|
+
// 2. CustomAdapter — wire plain async functions as named agents
|
|
41
|
+
const adapter = new __1.CustomAdapter();
|
|
42
|
+
adapter.registerHandler('researcher', async (payload) => {
|
|
43
|
+
const topic = payload.handoff?.instruction ?? 'unknown topic';
|
|
44
|
+
step('Researcher', `Investigating: "${topic}"`);
|
|
45
|
+
// Simulate research work
|
|
46
|
+
await sleep(300);
|
|
47
|
+
const findings = {
|
|
48
|
+
topic,
|
|
49
|
+
sources: 3,
|
|
50
|
+
keyFacts: [
|
|
51
|
+
'Multi-agent systems reduce task latency by ~40 %.',
|
|
52
|
+
'Shared blackboard architecture avoids tight coupling.',
|
|
53
|
+
'Permission walls prevent unauthorized resource access.',
|
|
54
|
+
],
|
|
55
|
+
confidence: 0.87,
|
|
56
|
+
};
|
|
57
|
+
// Write findings to the shared blackboard
|
|
58
|
+
blackboard.write('research:findings', findings, 'researcher', 3600, 'tok-researcher');
|
|
59
|
+
step('Researcher', `Wrote findings to blackboard ${c.dim}(research:findings)${c.reset}`);
|
|
60
|
+
return findings;
|
|
61
|
+
});
|
|
62
|
+
adapter.registerHandler('analyst', async () => {
|
|
63
|
+
step('Analyst', 'Reading researcher findings from blackboard...');
|
|
64
|
+
const entry = blackboard.read('research:findings');
|
|
65
|
+
if (!entry)
|
|
66
|
+
throw new Error('No findings on blackboard - did Researcher run first?');
|
|
67
|
+
const findings = entry.value;
|
|
68
|
+
await sleep(200);
|
|
69
|
+
const analysis = {
|
|
70
|
+
inputTopic: findings.topic,
|
|
71
|
+
factCount: findings.keyFacts.length,
|
|
72
|
+
confidence: findings.confidence,
|
|
73
|
+
recommendation: findings.confidence >= 0.8
|
|
74
|
+
? 'High confidence - proceed to report.'
|
|
75
|
+
: 'Low confidence - request additional research.',
|
|
76
|
+
summary: `Reviewed ${findings.keyFacts.length} facts about [${findings.topic}]. ` +
|
|
77
|
+
`Confidence score: ${(findings.confidence * 100).toFixed(0)} %.`,
|
|
78
|
+
};
|
|
79
|
+
blackboard.write('analysis:result', analysis, 'analyst', 3600, 'tok-analyst');
|
|
80
|
+
step('Analyst', `Wrote analysis to blackboard ${c.dim}(analysis:result)${c.reset}`);
|
|
81
|
+
return analysis;
|
|
82
|
+
});
|
|
83
|
+
adapter.registerHandler('reporter', async () => {
|
|
84
|
+
step('Reporter', 'Reading analysis from blackboard...');
|
|
85
|
+
const entry = blackboard.read('analysis:result');
|
|
86
|
+
if (!entry)
|
|
87
|
+
throw new Error('No analysis on blackboard - did Analyst run first?');
|
|
88
|
+
const analysis = entry.value;
|
|
89
|
+
await sleep(150);
|
|
90
|
+
const report = {
|
|
91
|
+
title: `Swarm Research Report: ${analysis.inputTopic}`,
|
|
92
|
+
generatedAt: new Date().toISOString(),
|
|
93
|
+
summary: analysis.summary,
|
|
94
|
+
recommendation: analysis.recommendation,
|
|
95
|
+
status: 'FINAL',
|
|
96
|
+
};
|
|
97
|
+
blackboard.write('report:final', report, 'reporter', 7200, 'tok-reporter');
|
|
98
|
+
step('Reporter', `Published final report ${c.dim}(report:final)${c.reset}`);
|
|
99
|
+
return report;
|
|
100
|
+
});
|
|
101
|
+
// 3. Build the orchestrator and register the adapter
|
|
102
|
+
const orchestrator = (0, __1.createSwarmOrchestrator)({
|
|
103
|
+
qualityThreshold: 0, // demos don't need quality-gate filtering
|
|
104
|
+
trustLevels: [
|
|
105
|
+
{ agentId: 'orchestrator', trustLevel: 0.9, allowedNamespaces: ['*'], allowedResources: ['*'] },
|
|
106
|
+
{ agentId: 'researcher', trustLevel: 0.8, allowedNamespaces: ['task:', 'research:'] },
|
|
107
|
+
{ agentId: 'analyst', trustLevel: 0.8, allowedNamespaces: ['task:', 'research:', 'analysis:'] },
|
|
108
|
+
{ agentId: 'reporter', trustLevel: 0.8, allowedNamespaces: ['task:', 'analysis:', 'report:'] },
|
|
109
|
+
],
|
|
110
|
+
});
|
|
111
|
+
await orchestrator.addAdapter(adapter);
|
|
112
|
+
const ctx = { agentId: 'orchestrator', taskId: 'demo-001', sessionId: 'session-demo' };
|
|
113
|
+
// ─── STEP 1: Delegate to Researcher ────────────────────────────────────────
|
|
114
|
+
banner('Step 1 - Researcher');
|
|
115
|
+
await orchestrator.execute('delegate_task', {
|
|
116
|
+
targetAgent: 'custom:researcher',
|
|
117
|
+
taskPayload: {
|
|
118
|
+
instruction: 'multi-agent coordination patterns',
|
|
119
|
+
expectedOutput: 'key facts with confidence score',
|
|
120
|
+
},
|
|
121
|
+
}, ctx);
|
|
122
|
+
// ─── STEP 2: Delegate to Analyst ───────────────────────────────────────────
|
|
123
|
+
banner('Step 2 - Analyst');
|
|
124
|
+
await orchestrator.execute('delegate_task', {
|
|
125
|
+
targetAgent: 'custom:analyst',
|
|
126
|
+
taskPayload: {
|
|
127
|
+
instruction: 'analyze researcher findings',
|
|
128
|
+
expectedOutput: 'summary + recommendation',
|
|
129
|
+
},
|
|
130
|
+
}, ctx);
|
|
131
|
+
// ─── STEP 3: Delegate to Reporter ──────────────────────────────────────────
|
|
132
|
+
banner('Step 3 - Reporter');
|
|
133
|
+
await orchestrator.execute('delegate_task', {
|
|
134
|
+
targetAgent: 'custom:reporter',
|
|
135
|
+
taskPayload: {
|
|
136
|
+
instruction: 'produce final report from analysis',
|
|
137
|
+
expectedOutput: 'formatted report object',
|
|
138
|
+
},
|
|
139
|
+
}, ctx);
|
|
140
|
+
// ─── FINAL REPORT ──────────────────────────────────────────────────────────
|
|
141
|
+
banner('Final Report');
|
|
142
|
+
const finalEntry = blackboard.read('report:final');
|
|
143
|
+
if (finalEntry) {
|
|
144
|
+
const report = finalEntry.value;
|
|
145
|
+
console.log(`\n ${c.bold}${c.magenta}${report.title}${c.reset}`);
|
|
146
|
+
console.log(` ${c.dim}Generated: ${report.generatedAt}${c.reset}`);
|
|
147
|
+
console.log(`\n ${c.bold}Summary:${c.reset} ${report.summary}`);
|
|
148
|
+
console.log(` ${c.bold}Recommendation:${c.reset} ${report.recommendation}`);
|
|
149
|
+
console.log(` ${c.bold}Status:${c.reset} ${c.green}${report.status}${c.reset}\n`);
|
|
150
|
+
}
|
|
151
|
+
// ─── BLACKBOARD SNAPSHOT ───────────────────────────────────────────────────
|
|
152
|
+
info('Blackboard keys written this session:');
|
|
153
|
+
const snap = blackboard.getSnapshot();
|
|
154
|
+
for (const [key, entry] of Object.entries(snap)) {
|
|
155
|
+
info(` ${c.blue}${key}${c.reset} <- ${entry.sourceAgent} @ ${entry.timestamp.slice(11, 19)}`);
|
|
156
|
+
}
|
|
157
|
+
console.log(`\n${c.dim}Done.${c.reset}\n`);
|
|
158
|
+
}
|
|
159
|
+
// ─── Utility ─────────────────────────────────────────────────────────────────
|
|
160
|
+
const sleep = (ms) => new Promise(r => setTimeout(r, ms));
|
|
161
|
+
main().catch(err => {
|
|
162
|
+
console.error('\n[ERROR]', err.message);
|
|
163
|
+
process.exit(1);
|
|
164
|
+
});
|
|
165
|
+
//# sourceMappingURL=01-hello-swarm.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"01-hello-swarm.js","sourceRoot":"","sources":["../../examples/01-hello-swarm.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,20 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* 02-fsm-pipeline.ts
|
|
3
|
+
* ──────────────────
|
|
4
|
+
* Demonstrates `JourneyFSM` — network-ai's Finite State Machine governance
|
|
5
|
+
* layer that controls which agents can act (and which tools they can use)
|
|
6
|
+
* depending on the current workflow state.
|
|
7
|
+
*
|
|
8
|
+
* You'll see:
|
|
9
|
+
* ✅ Successful state transitions
|
|
10
|
+
* 🚫 A blocked action (wrong agent for current state)
|
|
11
|
+
* 🔒 A blocked tool (agent not authorized for that tool in this state)
|
|
12
|
+
* 📋 Full transition history at the end
|
|
13
|
+
*
|
|
14
|
+
* No API key needed.
|
|
15
|
+
*
|
|
16
|
+
* Run:
|
|
17
|
+
* npx ts-node examples/02-fsm-pipeline.ts
|
|
18
|
+
*/
|
|
19
|
+
export {};
|
|
20
|
+
//# sourceMappingURL=02-fsm-pipeline.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"02-fsm-pipeline.d.ts","sourceRoot":"","sources":["../../examples/02-fsm-pipeline.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;GAiBG"}
|