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.
Files changed (282) hide show
  1. package/INTEGRATION_GUIDE.md +12 -5
  2. package/QUICKSTART.md +32 -5
  3. package/README.md +42 -17
  4. package/bin/dashboard.ts +146 -0
  5. package/bin/mcp-server.ts +3 -2
  6. package/dist/adapters/adapter-registry.d.ts +33 -1
  7. package/dist/adapters/adapter-registry.d.ts.map +1 -1
  8. package/dist/adapters/adapter-registry.js +49 -0
  9. package/dist/adapters/adapter-registry.js.map +1 -1
  10. package/dist/adapters/anthropic-computer-use-adapter.d.ts +132 -0
  11. package/dist/adapters/anthropic-computer-use-adapter.d.ts.map +1 -0
  12. package/dist/adapters/anthropic-computer-use-adapter.js +180 -0
  13. package/dist/adapters/anthropic-computer-use-adapter.js.map +1 -0
  14. package/dist/adapters/browser-agent-adapter.d.ts +121 -0
  15. package/dist/adapters/browser-agent-adapter.d.ts.map +1 -0
  16. package/dist/adapters/browser-agent-adapter.js +219 -0
  17. package/dist/adapters/browser-agent-adapter.js.map +1 -0
  18. package/dist/adapters/copilot-adapter.d.ts +59 -0
  19. package/dist/adapters/copilot-adapter.d.ts.map +1 -0
  20. package/dist/adapters/copilot-adapter.js +132 -0
  21. package/dist/adapters/copilot-adapter.js.map +1 -0
  22. package/dist/adapters/custom-adapter.d.ts +1 -1
  23. package/dist/adapters/custom-adapter.js +1 -1
  24. package/dist/adapters/index.d.ts +17 -1
  25. package/dist/adapters/index.d.ts.map +1 -1
  26. package/dist/adapters/index.js +25 -1
  27. package/dist/adapters/index.js.map +1 -1
  28. package/dist/adapters/langchain-adapter.js +1 -1
  29. package/dist/adapters/langchain-adapter.js.map +1 -1
  30. package/dist/adapters/langgraph-adapter.d.ts +70 -0
  31. package/dist/adapters/langgraph-adapter.d.ts.map +1 -0
  32. package/dist/adapters/langgraph-adapter.js +119 -0
  33. package/dist/adapters/langgraph-adapter.js.map +1 -0
  34. package/dist/adapters/mcp-adapter.d.ts +1 -1
  35. package/dist/adapters/mcp-adapter.js +3 -3
  36. package/dist/adapters/mcp-adapter.js.map +1 -1
  37. package/dist/adapters/openai-agents-adapter.d.ts +100 -0
  38. package/dist/adapters/openai-agents-adapter.d.ts.map +1 -0
  39. package/dist/adapters/openai-agents-adapter.js +118 -0
  40. package/dist/adapters/openai-agents-adapter.js.map +1 -0
  41. package/dist/adapters/openclaw-adapter.d.ts +1 -1
  42. package/dist/adapters/openclaw-adapter.js +3 -3
  43. package/dist/adapters/openclaw-adapter.js.map +1 -1
  44. package/dist/adapters/orchestrator-adapter.d.ts +118 -0
  45. package/dist/adapters/orchestrator-adapter.d.ts.map +1 -0
  46. package/dist/adapters/orchestrator-adapter.js +219 -0
  47. package/dist/adapters/orchestrator-adapter.js.map +1 -0
  48. package/dist/adapters/pydantic-ai-adapter.d.ts +104 -0
  49. package/dist/adapters/pydantic-ai-adapter.d.ts.map +1 -0
  50. package/dist/adapters/pydantic-ai-adapter.js +163 -0
  51. package/dist/adapters/pydantic-ai-adapter.js.map +1 -0
  52. package/dist/adapters/vertex-ai-adapter.d.ts +122 -0
  53. package/dist/adapters/vertex-ai-adapter.d.ts.map +1 -0
  54. package/dist/adapters/vertex-ai-adapter.js +166 -0
  55. package/dist/adapters/vertex-ai-adapter.js.map +1 -0
  56. package/dist/bin/dashboard.d.ts +11 -0
  57. package/dist/bin/dashboard.d.ts.map +1 -0
  58. package/dist/bin/dashboard.js +135 -0
  59. package/dist/bin/dashboard.js.map +1 -0
  60. package/dist/bin/mcp-server.js +3 -2
  61. package/dist/bin/mcp-server.js.map +1 -1
  62. package/dist/demo-control-plane.d.ts +12 -0
  63. package/dist/demo-control-plane.d.ts.map +1 -0
  64. package/dist/demo-control-plane.js +147 -0
  65. package/dist/demo-control-plane.js.map +1 -0
  66. package/dist/demo-worktree-dashboard.d.ts +2 -0
  67. package/dist/demo-worktree-dashboard.d.ts.map +1 -0
  68. package/dist/demo-worktree-dashboard.js +131 -0
  69. package/dist/demo-worktree-dashboard.js.map +1 -0
  70. package/dist/examples/01-hello-swarm.d.ts +13 -0
  71. package/dist/examples/01-hello-swarm.d.ts.map +1 -0
  72. package/dist/examples/01-hello-swarm.js +165 -0
  73. package/dist/examples/01-hello-swarm.js.map +1 -0
  74. package/dist/examples/02-fsm-pipeline.d.ts +20 -0
  75. package/dist/examples/02-fsm-pipeline.d.ts.map +1 -0
  76. package/dist/examples/02-fsm-pipeline.js +189 -0
  77. package/dist/examples/02-fsm-pipeline.js.map +1 -0
  78. package/dist/examples/03-parallel-agents.d.ts +21 -0
  79. package/dist/examples/03-parallel-agents.d.ts.map +1 -0
  80. package/dist/examples/03-parallel-agents.js +192 -0
  81. package/dist/examples/03-parallel-agents.js.map +1 -0
  82. package/dist/examples/05-code-review-swarm.d.ts +21 -0
  83. package/dist/examples/05-code-review-swarm.d.ts.map +1 -0
  84. package/dist/examples/05-code-review-swarm.js +1177 -0
  85. package/dist/examples/05-code-review-swarm.js.map +1 -0
  86. package/dist/examples/06-ai-pipeline-demo.d.ts +24 -0
  87. package/dist/examples/06-ai-pipeline-demo.d.ts.map +1 -0
  88. package/dist/examples/06-ai-pipeline-demo.js +263 -0
  89. package/dist/examples/06-ai-pipeline-demo.js.map +1 -0
  90. package/dist/examples/07-full-showcase.d.ts +27 -0
  91. package/dist/examples/07-full-showcase.d.ts.map +1 -0
  92. package/dist/examples/07-full-showcase.js +946 -0
  93. package/dist/examples/07-full-showcase.js.map +1 -0
  94. package/dist/examples/08-control-plane-stress-demo.d.ts +19 -0
  95. package/dist/examples/08-control-plane-stress-demo.d.ts.map +1 -0
  96. package/dist/examples/08-control-plane-stress-demo.js +186 -0
  97. package/dist/examples/08-control-plane-stress-demo.js.map +1 -0
  98. package/dist/examples/09-real-langchain.d.ts +19 -0
  99. package/dist/examples/09-real-langchain.d.ts.map +1 -0
  100. package/dist/examples/09-real-langchain.js +231 -0
  101. package/dist/examples/09-real-langchain.js.map +1 -0
  102. package/dist/examples/10-nemoclaw-sandbox-swarm.d.ts +16 -0
  103. package/dist/examples/10-nemoclaw-sandbox-swarm.d.ts.map +1 -0
  104. package/dist/examples/10-nemoclaw-sandbox-swarm.js +270 -0
  105. package/dist/examples/10-nemoclaw-sandbox-swarm.js.map +1 -0
  106. package/dist/examples/demo-runner.d.ts +2 -0
  107. package/dist/examples/demo-runner.d.ts.map +1 -0
  108. package/dist/examples/demo-runner.js +119 -0
  109. package/dist/examples/demo-runner.js.map +1 -0
  110. package/dist/index.d.ts +113 -559
  111. package/dist/index.d.ts.map +1 -1
  112. package/dist/index.js +310 -1074
  113. package/dist/index.js.map +1 -1
  114. package/dist/lib/adapter-test-harness.d.ts +88 -0
  115. package/dist/lib/adapter-test-harness.d.ts.map +1 -0
  116. package/dist/lib/adapter-test-harness.js +118 -0
  117. package/dist/lib/adapter-test-harness.js.map +1 -0
  118. package/dist/lib/agent-conversation.d.ts +115 -0
  119. package/dist/lib/agent-conversation.d.ts.map +1 -0
  120. package/dist/lib/agent-conversation.js +155 -0
  121. package/dist/lib/agent-conversation.js.map +1 -0
  122. package/dist/lib/agent-debate.d.ts +115 -0
  123. package/dist/lib/agent-debate.d.ts.map +1 -0
  124. package/dist/lib/agent-debate.js +146 -0
  125. package/dist/lib/agent-debate.js.map +1 -0
  126. package/dist/lib/agent-memory.d.ts +157 -0
  127. package/dist/lib/agent-memory.d.ts.map +1 -0
  128. package/dist/lib/agent-memory.js +336 -0
  129. package/dist/lib/agent-memory.js.map +1 -0
  130. package/dist/lib/agent-vcr.d.ts +133 -0
  131. package/dist/lib/agent-vcr.d.ts.map +1 -0
  132. package/dist/lib/agent-vcr.js +218 -0
  133. package/dist/lib/agent-vcr.js.map +1 -0
  134. package/dist/lib/anomaly-detector.d.ts +112 -0
  135. package/dist/lib/anomaly-detector.d.ts.map +1 -0
  136. package/dist/lib/anomaly-detector.js +178 -0
  137. package/dist/lib/anomaly-detector.js.map +1 -0
  138. package/dist/lib/approval-inbox.d.ts +147 -0
  139. package/dist/lib/approval-inbox.d.ts.map +1 -0
  140. package/dist/lib/approval-inbox.js +385 -0
  141. package/dist/lib/approval-inbox.js.map +1 -0
  142. package/dist/lib/auth-guardian.d.ts +170 -0
  143. package/dist/lib/auth-guardian.d.ts.map +1 -0
  144. package/dist/lib/auth-guardian.js +604 -0
  145. package/dist/lib/auth-guardian.js.map +1 -0
  146. package/dist/lib/auth-validator.d.ts +70 -0
  147. package/dist/lib/auth-validator.d.ts.map +1 -0
  148. package/dist/lib/auth-validator.js +32 -0
  149. package/dist/lib/auth-validator.js.map +1 -0
  150. package/dist/lib/blackboard-validator.d.ts +56 -0
  151. package/dist/lib/blackboard-validator.d.ts.map +1 -1
  152. package/dist/lib/blackboard-validator.js +181 -4
  153. package/dist/lib/blackboard-validator.js.map +1 -1
  154. package/dist/lib/comparison-runner.d.ts +99 -0
  155. package/dist/lib/comparison-runner.d.ts.map +1 -0
  156. package/dist/lib/comparison-runner.js +138 -0
  157. package/dist/lib/comparison-runner.js.map +1 -0
  158. package/dist/lib/config-watcher.d.ts +109 -0
  159. package/dist/lib/config-watcher.d.ts.map +1 -0
  160. package/dist/lib/config-watcher.js +215 -0
  161. package/dist/lib/config-watcher.js.map +1 -0
  162. package/dist/lib/control-plane.d.ts +128 -0
  163. package/dist/lib/control-plane.d.ts.map +1 -0
  164. package/dist/lib/control-plane.js +527 -0
  165. package/dist/lib/control-plane.js.map +1 -0
  166. package/dist/lib/cost-governor.d.ts +105 -0
  167. package/dist/lib/cost-governor.d.ts.map +1 -0
  168. package/dist/lib/cost-governor.js +128 -0
  169. package/dist/lib/cost-governor.js.map +1 -0
  170. package/dist/lib/cost-heatmap.d.ts +104 -0
  171. package/dist/lib/cost-heatmap.d.ts.map +1 -0
  172. package/dist/lib/cost-heatmap.js +161 -0
  173. package/dist/lib/cost-heatmap.js.map +1 -0
  174. package/dist/lib/coverage-reporter.d.ts +92 -0
  175. package/dist/lib/coverage-reporter.d.ts.map +1 -0
  176. package/dist/lib/coverage-reporter.js +177 -0
  177. package/dist/lib/coverage-reporter.js.map +1 -0
  178. package/dist/lib/dashboard-server.d.ts +71 -0
  179. package/dist/lib/dashboard-server.d.ts.map +1 -0
  180. package/dist/lib/dashboard-server.js +403 -0
  181. package/dist/lib/dashboard-server.js.map +1 -0
  182. package/dist/lib/dry-run.d.ts +73 -0
  183. package/dist/lib/dry-run.d.ts.map +1 -0
  184. package/dist/lib/dry-run.js +130 -0
  185. package/dist/lib/dry-run.js.map +1 -0
  186. package/dist/lib/errors.d.ts +15 -0
  187. package/dist/lib/errors.d.ts.map +1 -1
  188. package/dist/lib/errors.js +38 -0
  189. package/dist/lib/errors.js.map +1 -1
  190. package/dist/lib/event-bus.d.ts +167 -0
  191. package/dist/lib/event-bus.d.ts.map +1 -0
  192. package/dist/lib/event-bus.js +229 -0
  193. package/dist/lib/event-bus.js.map +1 -0
  194. package/dist/lib/explainability.d.ts +85 -0
  195. package/dist/lib/explainability.d.ts.map +1 -0
  196. package/dist/lib/explainability.js +102 -0
  197. package/dist/lib/explainability.js.map +1 -0
  198. package/dist/lib/goal-dsl.d.ts +157 -0
  199. package/dist/lib/goal-dsl.d.ts.map +1 -0
  200. package/dist/lib/goal-dsl.js +391 -0
  201. package/dist/lib/goal-dsl.js.map +1 -0
  202. package/dist/lib/job-queue.d.ts +183 -0
  203. package/dist/lib/job-queue.d.ts.map +1 -0
  204. package/dist/lib/job-queue.js +310 -0
  205. package/dist/lib/job-queue.js.map +1 -0
  206. package/dist/lib/learning-loop.d.ts +113 -0
  207. package/dist/lib/learning-loop.d.ts.map +1 -0
  208. package/dist/lib/learning-loop.js +181 -0
  209. package/dist/lib/learning-loop.js.map +1 -0
  210. package/dist/lib/lifecycle-hooks.d.ts +116 -0
  211. package/dist/lib/lifecycle-hooks.d.ts.map +1 -0
  212. package/dist/lib/lifecycle-hooks.js +148 -0
  213. package/dist/lib/lifecycle-hooks.js.map +1 -0
  214. package/dist/lib/locked-blackboard.d.ts.map +1 -1
  215. package/dist/lib/locked-blackboard.js +9 -5
  216. package/dist/lib/locked-blackboard.js.map +1 -1
  217. package/dist/lib/mcp-tool-consumer.d.ts +153 -0
  218. package/dist/lib/mcp-tool-consumer.d.ts.map +1 -0
  219. package/dist/lib/mcp-tool-consumer.js +320 -0
  220. package/dist/lib/mcp-tool-consumer.js.map +1 -0
  221. package/dist/lib/metrics.d.ts +119 -0
  222. package/dist/lib/metrics.d.ts.map +1 -0
  223. package/dist/lib/metrics.js +284 -0
  224. package/dist/lib/metrics.js.map +1 -0
  225. package/dist/lib/orchestrator-types.d.ts +309 -0
  226. package/dist/lib/orchestrator-types.d.ts.map +1 -0
  227. package/dist/lib/orchestrator-types.js +61 -0
  228. package/dist/lib/orchestrator-types.js.map +1 -0
  229. package/dist/lib/otel-bridge.d.ts +74 -0
  230. package/dist/lib/otel-bridge.d.ts.map +1 -0
  231. package/dist/lib/otel-bridge.js +167 -0
  232. package/dist/lib/otel-bridge.js.map +1 -0
  233. package/dist/lib/playground.d.ts +76 -0
  234. package/dist/lib/playground.d.ts.map +1 -0
  235. package/dist/lib/playground.js +224 -0
  236. package/dist/lib/playground.js.map +1 -0
  237. package/dist/lib/quadtree.d.ts +114 -0
  238. package/dist/lib/quadtree.d.ts.map +1 -0
  239. package/dist/lib/quadtree.js +259 -0
  240. package/dist/lib/quadtree.js.map +1 -0
  241. package/dist/lib/shared-blackboard.d.ts +101 -0
  242. package/dist/lib/shared-blackboard.d.ts.map +1 -0
  243. package/dist/lib/shared-blackboard.js +249 -0
  244. package/dist/lib/shared-blackboard.js.map +1 -0
  245. package/dist/lib/speculative-executor.d.ts +89 -0
  246. package/dist/lib/speculative-executor.d.ts.map +1 -0
  247. package/dist/lib/speculative-executor.js +107 -0
  248. package/dist/lib/speculative-executor.js.map +1 -0
  249. package/dist/lib/swarm-transport.d.ts +150 -0
  250. package/dist/lib/swarm-transport.d.ts.map +1 -0
  251. package/dist/lib/swarm-transport.js +307 -0
  252. package/dist/lib/swarm-transport.js.map +1 -0
  253. package/dist/lib/task-decomposer.d.ts +41 -0
  254. package/dist/lib/task-decomposer.d.ts.map +1 -0
  255. package/dist/lib/task-decomposer.js +272 -0
  256. package/dist/lib/task-decomposer.js.map +1 -0
  257. package/dist/lib/timeline-scrubber.d.ts +84 -0
  258. package/dist/lib/timeline-scrubber.d.ts.map +1 -0
  259. package/dist/lib/timeline-scrubber.js +173 -0
  260. package/dist/lib/timeline-scrubber.js.map +1 -0
  261. package/dist/lib/topology.d.ts +361 -0
  262. package/dist/lib/topology.d.ts.map +1 -0
  263. package/dist/lib/topology.js +591 -0
  264. package/dist/lib/topology.js.map +1 -0
  265. package/dist/lib/work-tree-dashboard.d.ts +130 -0
  266. package/dist/lib/work-tree-dashboard.d.ts.map +1 -0
  267. package/dist/lib/work-tree-dashboard.js +583 -0
  268. package/dist/lib/work-tree-dashboard.js.map +1 -0
  269. package/dist/lib/work-tree-ui.d.ts +107 -0
  270. package/dist/lib/work-tree-ui.d.ts.map +1 -0
  271. package/dist/lib/work-tree-ui.js +333 -0
  272. package/dist/lib/work-tree-ui.js.map +1 -0
  273. package/dist/lib/work-tree.d.ts +184 -0
  274. package/dist/lib/work-tree.d.ts.map +1 -0
  275. package/dist/lib/work-tree.js +480 -0
  276. package/dist/lib/work-tree.js.map +1 -0
  277. package/dist/security.d.ts +95 -0
  278. package/dist/security.d.ts.map +1 -1
  279. package/dist/security.js +267 -4
  280. package/dist/security.js.map +1 -1
  281. package/package.json +8 -6
  282. package/types/agent-adapter.d.ts +5 -0
@@ -0,0 +1,189 @@
1
+ "use strict";
2
+ /**
3
+ * 02-fsm-pipeline.ts
4
+ * ──────────────────
5
+ * Demonstrates `JourneyFSM` — network-ai's Finite State Machine governance
6
+ * layer that controls which agents can act (and which tools they can use)
7
+ * depending on the current workflow state.
8
+ *
9
+ * You'll see:
10
+ * ✅ Successful state transitions
11
+ * 🚫 A blocked action (wrong agent for current state)
12
+ * 🔒 A blocked tool (agent not authorized for that tool in this state)
13
+ * 📋 Full transition history at the end
14
+ *
15
+ * No API key needed.
16
+ *
17
+ * Run:
18
+ * npx ts-node examples/02-fsm-pipeline.ts
19
+ */
20
+ Object.defineProperty(exports, "__esModule", { value: true });
21
+ const __1 = require("..");
22
+ // ─── ANSI helpers ─────────────────────────────────────────────────────────────
23
+ const c = {
24
+ reset: '\x1b[0m',
25
+ bold: '\x1b[1m',
26
+ cyan: '\x1b[36m',
27
+ green: '\x1b[32m',
28
+ red: '\x1b[31m',
29
+ yellow: '\x1b[33m',
30
+ blue: '\x1b[34m',
31
+ dim: '\x1b[2m',
32
+ };
33
+ const banner = (msg) => console.log(`\n${c.bold}${c.cyan}--- ${msg} ---${c.reset}`);
34
+ const ok = (msg) => console.log(` ${c.green}[OK]${c.reset} ${msg}`);
35
+ const fail = (msg) => console.log(` ${c.red}[NO]${c.reset} ${msg}`);
36
+ const info = (msg) => console.log(` ${c.dim}${msg}${c.reset}`);
37
+ // ─── Helper: pretty-print a compliance result ─────────────────────────────────
38
+ function showCompliance(label, result) {
39
+ if (result.allowed) {
40
+ ok(` ${label}: ${c.green}ALLOWED${c.reset} in state [${result.currentState}]`);
41
+ }
42
+ else {
43
+ fail(` ${label}: ${c.red}BLOCKED${c.reset} - ${result.reason}`);
44
+ }
45
+ }
46
+ // ─── Helper: pretty-print a transition result ─────────────────────────────────
47
+ function showTransition(event, result) {
48
+ if (result.success) {
49
+ ok(` "${event}": ${c.blue}${result.previousState}${c.reset} -> ${c.bold}${c.blue}${result.currentState}${c.reset}`);
50
+ }
51
+ else {
52
+ fail(` "${event}" blocked - ${result.reason}`);
53
+ }
54
+ }
55
+ // ─── MAIN ─────────────────────────────────────────────────────────────────────
56
+ async function main() {
57
+ banner('network-ai - FSM Governance Pipeline');
58
+ // ─── Build the FSM ──────────────────────────────────────────────────────────
59
+ //
60
+ // Pipeline stages:
61
+ // INTAKE → VALIDATE → RESEARCH → EXECUTE → DELIVER → COMPLETE
62
+ //
63
+ // Each state declares:
64
+ // • which agents are authorized to act
65
+ // • which tools those agents may use
66
+ //
67
+ const fsm = new __1.JourneyFSM({
68
+ states: [
69
+ {
70
+ name: __1.WORKFLOW_STATES.INTAKE,
71
+ description: 'Initial intake and triage',
72
+ authorizedAgents: ['orchestrator'],
73
+ authorizedTools: {
74
+ orchestrator: ['read_intake', 'triage_task'],
75
+ },
76
+ },
77
+ {
78
+ name: __1.WORKFLOW_STATES.VALIDATE,
79
+ description: 'Validate inputs and permissions',
80
+ authorizedAgents: ['orchestrator', 'validator'],
81
+ authorizedTools: {
82
+ orchestrator: ['check_schema'],
83
+ validator: ['run_validation', 'check_schema'],
84
+ },
85
+ },
86
+ {
87
+ name: __1.WORKFLOW_STATES.RESEARCH,
88
+ description: 'Gather information',
89
+ authorizedAgents: ['data_analyst', 'researcher'],
90
+ authorizedTools: {
91
+ data_analyst: ['query_db', 'search_web', 'read_blackboard'],
92
+ researcher: ['search_web', 'read_blackboard'],
93
+ },
94
+ timeoutMs: 60_000, // 60 second timeout
95
+ },
96
+ {
97
+ name: __1.WORKFLOW_STATES.EXECUTE,
98
+ description: 'Execute the main task',
99
+ authorizedAgents: ['executor', 'code_writer'],
100
+ authorizedTools: {
101
+ executor: ['write_file', 'run_build'],
102
+ code_writer: ['write_file', 'read_file'],
103
+ '*': ['read_blackboard'],
104
+ },
105
+ },
106
+ {
107
+ name: __1.WORKFLOW_STATES.DELIVER,
108
+ description: 'Produce and write final output',
109
+ authorizedAgents: ['reporter', 'orchestrator'],
110
+ authorizedTools: {
111
+ reporter: ['write_report', 'write_blackboard'],
112
+ orchestrator: ['write_blackboard', 'notify'],
113
+ },
114
+ },
115
+ {
116
+ name: __1.WORKFLOW_STATES.COMPLETE,
117
+ description: 'Workflow complete',
118
+ authorizedAgents: ['*'],
119
+ authorizedTools: { '*': ['read_blackboard'] },
120
+ },
121
+ ],
122
+ transitions: [
123
+ { from: __1.WORKFLOW_STATES.INTAKE, event: 'intake_done', to: __1.WORKFLOW_STATES.VALIDATE, allowedBy: 'orchestrator' },
124
+ { from: __1.WORKFLOW_STATES.VALIDATE, event: 'valid', to: __1.WORKFLOW_STATES.RESEARCH, allowedBy: 'orchestrator' },
125
+ { from: __1.WORKFLOW_STATES.VALIDATE, event: 'invalid', to: __1.WORKFLOW_STATES.ERROR, allowedBy: '*' },
126
+ { from: __1.WORKFLOW_STATES.RESEARCH, event: 'research_done', to: __1.WORKFLOW_STATES.EXECUTE, allowedBy: 'data_analyst' },
127
+ { from: __1.WORKFLOW_STATES.EXECUTE, event: 'exec_done', to: __1.WORKFLOW_STATES.DELIVER, allowedBy: 'executor' },
128
+ { from: __1.WORKFLOW_STATES.DELIVER, event: 'delivered', to: __1.WORKFLOW_STATES.COMPLETE, allowedBy: '*' },
129
+ ],
130
+ initialState: __1.WORKFLOW_STATES.INTAKE,
131
+ // Called on every successful transition
132
+ onTransition: (result) => {
133
+ info(` [FSM] ${result.previousState} -> ${result.currentState}`);
134
+ },
135
+ // Called when a compliance check fails
136
+ onViolation: (result) => {
137
+ info(` [FSM] Violation: ${result.reason}`);
138
+ },
139
+ });
140
+ // ─── PHASE 1: Compliance checks in INTAKE state ──────────────────────────────
141
+ banner(`Current state: ${fsm.state}`);
142
+ info(`Authorized agents: [${fsm.stateDefinition.authorizedAgents.join(', ')}]`);
143
+ console.log();
144
+ showCompliance('orchestrator can act ', fsm.checkCompliance('orchestrator'));
145
+ showCompliance('orchestrator uses read_intake ', fsm.checkCompliance('orchestrator', 'read_intake'));
146
+ showCompliance('data_analyst (wrong state) can act', fsm.checkCompliance('data_analyst'));
147
+ showCompliance('orchestrator uses query_db (wrong)', fsm.checkCompliance('orchestrator', 'query_db'));
148
+ // ─── PHASE 2: Transition INTAKE → VALIDATE ────────────────────────────────┐
149
+ banner('Transitions');
150
+ showTransition('intake_done', fsm.transition('intake_done', 'orchestrator'));
151
+ info(` Now in: ${c.bold}${fsm.state}${c.reset}`);
152
+ showTransition('valid', fsm.transition('valid', 'orchestrator'));
153
+ info(` Now in: ${c.bold}${fsm.state}${c.reset}`); // RESEARCH
154
+ // Wrong agent trying to move out of RESEARCH (should fail)
155
+ showTransition('research_done by orchestrator (blocked)', fsm.transition('research_done', 'orchestrator'));
156
+ // Correct agent
157
+ showTransition('research_done', fsm.transition('research_done', 'data_analyst'));
158
+ info(` Now in: ${c.bold}${fsm.state}${c.reset}`); // EXECUTE
159
+ // ─── PHASE 3: Tool checks in EXECUTE state ───────────────────────────────────
160
+ banner(`Tool Checks in state: ${fsm.state}`);
161
+ showCompliance('executor uses write_file ', fsm.checkCompliance('executor', 'write_file'));
162
+ showCompliance('executor uses run_build ', fsm.checkCompliance('executor', 'run_build'));
163
+ showCompliance('code_writer uses read_file ', fsm.checkCompliance('code_writer', 'read_file'));
164
+ showCompliance('anyone reads blackboard (*) ', fsm.checkCompliance('random_agent', 'read_blackboard'));
165
+ showCompliance('reporter (wrong state) ', fsm.checkCompliance('reporter', 'write_report'));
166
+ // ─── PHASE 4: Finish the pipeline ────────────────────────────────────────────
167
+ banner('Finish Pipeline');
168
+ showTransition('exec_done', fsm.transition('exec_done', 'executor'));
169
+ showTransition('delivered', fsm.transition('delivered', 'reporter'));
170
+ info(` Final state: ${c.bold}${c.green}${fsm.state}${c.reset}`);
171
+ // ─── PHASE 5: Transition history ─────────────────────────────────────────────
172
+ banner('Transition History');
173
+ const history = fsm.transitionHistory;
174
+ for (let i = 0; i < history.length; i++) {
175
+ const h = history[i];
176
+ const duration = h.exitedAt
177
+ ? `${h.exitedAt - h.enteredAt} ms`
178
+ : '(current)';
179
+ info(` ${String(i + 1).padStart(2)}. ${c.blue}${h.state.padEnd(10)}${c.reset} ` +
180
+ `entered ${new Date(h.enteredAt).toISOString().slice(11, 23)} ` +
181
+ `${duration}`);
182
+ }
183
+ console.log(`\n${c.dim}Done.${c.reset}\n`);
184
+ }
185
+ main().catch(err => {
186
+ console.error('\n[ERROR]', err.message);
187
+ process.exit(1);
188
+ });
189
+ //# sourceMappingURL=02-fsm-pipeline.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"02-fsm-pipeline.js","sourceRoot":"","sources":["../../examples/02-fsm-pipeline.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * 03-parallel-agents.ts
3
+ * ─────────────────────
4
+ * Demonstrates `spawn_parallel_agents` — running multiple specialist agents
5
+ * concurrently and synthesizing their results with different strategies.
6
+ *
7
+ * Three agents work in parallel on the same topic:
8
+ * • sentiment_agent — tone & sentiment analysis
9
+ * • keyword_agent — key-phrase extraction
10
+ * • summary_agent — executive summary
11
+ *
12
+ * The demo runs through all four synthesis strategies so you can see how
13
+ * each one combines (or selects) the parallel outputs.
14
+ *
15
+ * No API key needed.
16
+ *
17
+ * Run:
18
+ * npx ts-node examples/03-parallel-agents.ts
19
+ */
20
+ export {};
21
+ //# sourceMappingURL=03-parallel-agents.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"03-parallel-agents.d.ts","sourceRoot":"","sources":["../../examples/03-parallel-agents.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG"}
@@ -0,0 +1,192 @@
1
+ "use strict";
2
+ /**
3
+ * 03-parallel-agents.ts
4
+ * ─────────────────────
5
+ * Demonstrates `spawn_parallel_agents` — running multiple specialist agents
6
+ * concurrently and synthesizing their results with different strategies.
7
+ *
8
+ * Three agents work in parallel on the same topic:
9
+ * • sentiment_agent — tone & sentiment analysis
10
+ * • keyword_agent — key-phrase extraction
11
+ * • summary_agent — executive summary
12
+ *
13
+ * The demo runs through all four synthesis strategies so you can see how
14
+ * each one combines (or selects) the parallel outputs.
15
+ *
16
+ * No API key needed.
17
+ *
18
+ * Run:
19
+ * npx ts-node examples/03-parallel-agents.ts
20
+ */
21
+ Object.defineProperty(exports, "__esModule", { value: true });
22
+ const __1 = require("..");
23
+ // ─── ANSI helpers ─────────────────────────────────────────────────────────────
24
+ const c = {
25
+ reset: '\x1b[0m',
26
+ bold: '\x1b[1m',
27
+ cyan: '\x1b[36m',
28
+ green: '\x1b[32m',
29
+ yellow: '\x1b[33m',
30
+ blue: '\x1b[34m',
31
+ magenta: '\x1b[35m',
32
+ dim: '\x1b[2m',
33
+ };
34
+ const banner = (msg) => console.log(`\n${c.bold}${c.cyan}--- ${msg} ---${c.reset}`);
35
+ const row = (label, val) => console.log(` ${c.bold}${label.padEnd(20)}${c.reset}${val}`);
36
+ const info = (msg) => console.log(` ${c.dim}${msg}${c.reset}`);
37
+ // ─── Sample text the agents will analyze ─────────────────────────────────────
38
+ const SAMPLE_TEXT = `
39
+ network-ai makes multi-agent coordination easy and secure. The shared
40
+ blackboard lets agents collaborate without tight coupling, and the permission
41
+ wall ensures every resource access is justified and audited. Real-world swarms
42
+ can now be built in minutes rather than months.
43
+ `.trim();
44
+ // ─── MAIN ─────────────────────────────────────────────────────────────────────
45
+ async function main() {
46
+ banner('network-ai - Parallel Agents');
47
+ // ─── Register three specialist agents ──────────────────────────────────────
48
+ const adapter = new __1.CustomAdapter();
49
+ // Agent 1 — Sentiment analysis
50
+ adapter.registerHandler('sentiment_agent', async (payload) => {
51
+ const text = payload.handoff?.context?.text ?? '';
52
+ await sleep(250);
53
+ const positiveWords = (text.match(/easy|secure|simple|fast|safe|great|better|improve/gi) ?? []).length;
54
+ const negativeWords = (text.match(/hard|slow|insecure|bad|broken|fail|complex/gi) ?? []).length;
55
+ const total = positiveWords + negativeWords;
56
+ const score = total === 0 ? 0.5 : positiveWords / total;
57
+ return {
58
+ agent: 'sentiment_agent',
59
+ sentiment: score >= 0.7 ? 'positive' : score >= 0.4 ? 'neutral' : 'negative',
60
+ score: parseFloat(score.toFixed(2)),
61
+ positiveHits: positiveWords,
62
+ negativeHits: negativeWords,
63
+ };
64
+ });
65
+ // Agent 2 — Keyword extraction
66
+ adapter.registerHandler('keyword_agent', async (payload) => {
67
+ const text = payload.handoff?.context?.text ?? '';
68
+ await sleep(180);
69
+ // Very simple: pull out capitalized proper nouns and domain terms
70
+ const domainTerms = [
71
+ 'network-ai', 'blackboard', 'agent', 'permission',
72
+ 'orchestrator', 'swarm', 'coordination', 'security',
73
+ ];
74
+ const found = domainTerms.filter(t => text.toLowerCase().includes(t));
75
+ return {
76
+ agent: 'keyword_agent',
77
+ keywords: found,
78
+ count: found.length,
79
+ density: parseFloat((found.length / text.split(/\s+/).length).toFixed(3)),
80
+ };
81
+ });
82
+ // Agent 3 — Executive summary
83
+ adapter.registerHandler('summary_agent', async (payload) => {
84
+ const text = payload.handoff?.context?.text ?? '';
85
+ await sleep(320);
86
+ const sentences = text.split(/[.!?]+/).map(s => s.trim()).filter(Boolean);
87
+ const wordCount = text.split(/\s+/).length;
88
+ return {
89
+ agent: 'summary_agent',
90
+ wordCount,
91
+ sentenceCount: sentences.length,
92
+ firstSentence: sentences[0] ?? '',
93
+ readingTimeSeconds: Math.ceil(wordCount / 3), // ~180 wpm
94
+ oneLiner: 'A secure, blackboard-based multi-agent coordination library.',
95
+ };
96
+ });
97
+ // ─── Build orchestrator ─────────────────────────────────────────────────────
98
+ const orchestrator = (0, __1.createSwarmOrchestrator)({
99
+ qualityThreshold: 0, // demos don't need quality-gate filtering
100
+ trustLevels: [
101
+ { agentId: 'orchestrator', trustLevel: 0.9, allowedNamespaces: ['*'], allowedResources: ['*'] },
102
+ { agentId: 'sentiment_agent', trustLevel: 0.8, allowedNamespaces: ['task:'] },
103
+ { agentId: 'keyword_agent', trustLevel: 0.8, allowedNamespaces: ['task:'] },
104
+ { agentId: 'summary_agent', trustLevel: 0.8, allowedNamespaces: ['task:'] },
105
+ ],
106
+ });
107
+ await orchestrator.addAdapter(adapter);
108
+ const ctx = { agentId: 'orchestrator', taskId: 'demo-parallel', sessionId: 'session-p1' };
109
+ // Shared task params (3 agents, same input text)
110
+ const parallelTasks = [
111
+ {
112
+ agentType: 'custom:sentiment_agent',
113
+ taskPayload: {
114
+ instruction: 'Analyze sentiment of the provided text',
115
+ context: { text: SAMPLE_TEXT },
116
+ },
117
+ },
118
+ {
119
+ agentType: 'custom:keyword_agent',
120
+ taskPayload: {
121
+ instruction: 'Extract keywords from the provided text',
122
+ context: { text: SAMPLE_TEXT },
123
+ },
124
+ },
125
+ {
126
+ agentType: 'custom:summary_agent',
127
+ taskPayload: {
128
+ instruction: 'Summarize the provided text',
129
+ context: { text: SAMPLE_TEXT },
130
+ },
131
+ },
132
+ ];
133
+ // ─── Run with every synthesis strategy ──────────────────────────────────────
134
+ const strategies = ['merge', 'vote', 'chain', 'first-success'];
135
+ for (const strategy of strategies) {
136
+ banner(`Strategy: ${strategy.toUpperCase()}`);
137
+ const start = Date.now();
138
+ const result = await orchestrator.execute('spawn_parallel_agents', { tasks: parallelTasks, synthesisStrategy: strategy }, ctx);
139
+ const elapsed = Date.now() - start;
140
+ if (!result.success) {
141
+ console.log(` ${c.yellow}Failed:${c.reset}`, result.error?.message);
142
+ continue;
143
+ }
144
+ const data = result.data;
145
+ // Per-agent stats
146
+ info('Individual results:');
147
+ for (const r of data.individualResults) {
148
+ const name = r.agentType.replace('custom:', '');
149
+ const icon = r.success ? c.green + '+' : c.yellow + 'x';
150
+ console.log(` ${icon}${c.reset} ${name.padEnd(18)} ${r.executionTime} ms`);
151
+ }
152
+ // Synthesis output (strategy-specific top-level fields)
153
+ info('\nSynthesized output (top-level fields):');
154
+ const synth = data.synthesizedResult;
155
+ for (const [k, v] of Object.entries(synth)) {
156
+ if (typeof v !== 'object') {
157
+ row(` ${k}`, String(v));
158
+ }
159
+ else {
160
+ row(` ${k}`, c.dim + JSON.stringify(v).slice(0, 80) + c.reset);
161
+ }
162
+ }
163
+ // Metrics
164
+ info('');
165
+ row(' Wall-clock time', `${elapsed} ms`);
166
+ row(' Success rate', `${(data.executionMetrics.successRate * 100).toFixed(0)} %`);
167
+ row(' Strategy used', data.executionMetrics.synthesisStrategy);
168
+ }
169
+ // ─── Demonstrate: result caching on second run ─────────────────────────────
170
+ banner('Second Run (cache hit demo)');
171
+ info('network-ai caches successful results on the blackboard.');
172
+ info('A second spawn_parallel_agents call with the same tasks should be instant.');
173
+ const t0 = Date.now();
174
+ const r2 = await orchestrator.execute('spawn_parallel_agents', { tasks: parallelTasks, synthesisStrategy: 'merge' }, ctx);
175
+ const t1 = Date.now();
176
+ if (r2.success) {
177
+ const d2 = r2.data;
178
+ const anyFromCache = d2.individualResults.some(r => r.executionTime === 0);
179
+ console.log(` ${c.bold}Elapsed:${c.reset} ${t1 - t0} ms ` +
180
+ (anyFromCache
181
+ ? `${c.green}<- cache hits detected (executionTime = 0)${c.reset}`
182
+ : `${c.yellow}(no cache hits)${c.reset}`));
183
+ }
184
+ console.log(`\n${c.dim}Done.${c.reset}\n`);
185
+ }
186
+ // ─── Utility ─────────────────────────────────────────────────────────────────
187
+ const sleep = (ms) => new Promise(r => setTimeout(r, ms));
188
+ main().catch(err => {
189
+ console.error('\n[ERROR]', err.message);
190
+ process.exit(1);
191
+ });
192
+ //# sourceMappingURL=03-parallel-agents.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"03-parallel-agents.js","sourceRoot":"","sources":["../../examples/03-parallel-agents.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ /**
2
+ * 05-code-review-swarm.ts
3
+ * ───────────────────────
4
+ * 6 real LLM agents do a parallel code review of a buggy auth service.
5
+ *
6
+ * Architecture:
7
+ * Wave (parallel): 5 specialist reviewers — security, performance,
8
+ * reliability, testing, architecture
9
+ * Final : 1 coordinator — "top 3 blockers before you ship"
10
+ *
11
+ * Each agent makes a real gpt-5.2 call.
12
+ * Findings are coordinated through SharedBlackboard.
13
+ *
14
+ * Run:
15
+ * npx ts-node examples/05-code-review-swarm.ts
16
+ *
17
+ * API key:
18
+ * $env:OPENAI_API_KEY = Read-Host -MaskInput "API Key"
19
+ */
20
+ export {};
21
+ //# sourceMappingURL=05-code-review-swarm.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"05-code-review-swarm.d.ts","sourceRoot":"","sources":["../../examples/05-code-review-swarm.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;GAkBG"}