network-ai 3.0.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 (92) hide show
  1. package/LICENSE +21 -0
  2. package/QUICKSTART.md +260 -0
  3. package/README.md +604 -0
  4. package/SKILL.md +568 -0
  5. package/dist/adapters/adapter-registry.d.ts +94 -0
  6. package/dist/adapters/adapter-registry.d.ts.map +1 -0
  7. package/dist/adapters/adapter-registry.js +355 -0
  8. package/dist/adapters/adapter-registry.js.map +1 -0
  9. package/dist/adapters/agno-adapter.d.ts +112 -0
  10. package/dist/adapters/agno-adapter.d.ts.map +1 -0
  11. package/dist/adapters/agno-adapter.js +140 -0
  12. package/dist/adapters/agno-adapter.js.map +1 -0
  13. package/dist/adapters/autogen-adapter.d.ts +67 -0
  14. package/dist/adapters/autogen-adapter.d.ts.map +1 -0
  15. package/dist/adapters/autogen-adapter.js +141 -0
  16. package/dist/adapters/autogen-adapter.js.map +1 -0
  17. package/dist/adapters/base-adapter.d.ts +51 -0
  18. package/dist/adapters/base-adapter.d.ts.map +1 -0
  19. package/dist/adapters/base-adapter.js +103 -0
  20. package/dist/adapters/base-adapter.js.map +1 -0
  21. package/dist/adapters/crewai-adapter.d.ts +72 -0
  22. package/dist/adapters/crewai-adapter.d.ts.map +1 -0
  23. package/dist/adapters/crewai-adapter.js +148 -0
  24. package/dist/adapters/crewai-adapter.js.map +1 -0
  25. package/dist/adapters/custom-adapter.d.ts +74 -0
  26. package/dist/adapters/custom-adapter.d.ts.map +1 -0
  27. package/dist/adapters/custom-adapter.js +142 -0
  28. package/dist/adapters/custom-adapter.js.map +1 -0
  29. package/dist/adapters/dspy-adapter.d.ts +70 -0
  30. package/dist/adapters/dspy-adapter.d.ts.map +1 -0
  31. package/dist/adapters/dspy-adapter.js +127 -0
  32. package/dist/adapters/dspy-adapter.js.map +1 -0
  33. package/dist/adapters/haystack-adapter.d.ts +83 -0
  34. package/dist/adapters/haystack-adapter.d.ts.map +1 -0
  35. package/dist/adapters/haystack-adapter.js +149 -0
  36. package/dist/adapters/haystack-adapter.js.map +1 -0
  37. package/dist/adapters/index.d.ts +47 -0
  38. package/dist/adapters/index.d.ts.map +1 -0
  39. package/dist/adapters/index.js +56 -0
  40. package/dist/adapters/index.js.map +1 -0
  41. package/dist/adapters/langchain-adapter.d.ts +51 -0
  42. package/dist/adapters/langchain-adapter.d.ts.map +1 -0
  43. package/dist/adapters/langchain-adapter.js +134 -0
  44. package/dist/adapters/langchain-adapter.js.map +1 -0
  45. package/dist/adapters/llamaindex-adapter.d.ts +89 -0
  46. package/dist/adapters/llamaindex-adapter.d.ts.map +1 -0
  47. package/dist/adapters/llamaindex-adapter.js +135 -0
  48. package/dist/adapters/llamaindex-adapter.js.map +1 -0
  49. package/dist/adapters/mcp-adapter.d.ts +90 -0
  50. package/dist/adapters/mcp-adapter.d.ts.map +1 -0
  51. package/dist/adapters/mcp-adapter.js +200 -0
  52. package/dist/adapters/mcp-adapter.js.map +1 -0
  53. package/dist/adapters/openai-assistants-adapter.d.ts +94 -0
  54. package/dist/adapters/openai-assistants-adapter.d.ts.map +1 -0
  55. package/dist/adapters/openai-assistants-adapter.js +130 -0
  56. package/dist/adapters/openai-assistants-adapter.js.map +1 -0
  57. package/dist/adapters/openclaw-adapter.d.ts +21 -0
  58. package/dist/adapters/openclaw-adapter.d.ts.map +1 -0
  59. package/dist/adapters/openclaw-adapter.js +140 -0
  60. package/dist/adapters/openclaw-adapter.js.map +1 -0
  61. package/dist/adapters/semantic-kernel-adapter.d.ts +73 -0
  62. package/dist/adapters/semantic-kernel-adapter.d.ts.map +1 -0
  63. package/dist/adapters/semantic-kernel-adapter.js +123 -0
  64. package/dist/adapters/semantic-kernel-adapter.js.map +1 -0
  65. package/dist/index.d.ts +379 -0
  66. package/dist/index.d.ts.map +1 -0
  67. package/dist/index.js +1428 -0
  68. package/dist/index.js.map +1 -0
  69. package/dist/lib/blackboard-validator.d.ts +205 -0
  70. package/dist/lib/blackboard-validator.d.ts.map +1 -0
  71. package/dist/lib/blackboard-validator.js +756 -0
  72. package/dist/lib/blackboard-validator.js.map +1 -0
  73. package/dist/lib/locked-blackboard.d.ts +174 -0
  74. package/dist/lib/locked-blackboard.d.ts.map +1 -0
  75. package/dist/lib/locked-blackboard.js +654 -0
  76. package/dist/lib/locked-blackboard.js.map +1 -0
  77. package/dist/lib/swarm-utils.d.ts +136 -0
  78. package/dist/lib/swarm-utils.d.ts.map +1 -0
  79. package/dist/lib/swarm-utils.js +510 -0
  80. package/dist/lib/swarm-utils.js.map +1 -0
  81. package/dist/security.d.ts +269 -0
  82. package/dist/security.d.ts.map +1 -0
  83. package/dist/security.js +713 -0
  84. package/dist/security.js.map +1 -0
  85. package/package.json +84 -0
  86. package/scripts/blackboard.py +819 -0
  87. package/scripts/check_permission.py +331 -0
  88. package/scripts/revoke_token.py +243 -0
  89. package/scripts/swarm_guard.py +1140 -0
  90. package/scripts/validate_token.py +97 -0
  91. package/types/agent-adapter.d.ts +244 -0
  92. package/types/openclaw-core.d.ts +52 -0
package/LICENSE ADDED
@@ -0,0 +1,21 @@
1
+ MIT License
2
+
3
+ Copyright (c) 2026 Jovan Marinovic
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in all
13
+ copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21
+ SOFTWARE.
package/QUICKSTART.md ADDED
@@ -0,0 +1,260 @@
1
+ # Network-AI Quick Start Guide
2
+
3
+ Get the Multi-Agent Swarm Orchestrator running in **under 5 minutes**.
4
+
5
+ ---
6
+
7
+ ## 1. Install
8
+
9
+ ```bash
10
+ # Clone the repo
11
+ git clone https://github.com/jovanSAPFIONEER/Network-AI.git
12
+ cd Network-AI
13
+
14
+ # Install dependencies (only TypeScript + ts-node needed)
15
+ npm install
16
+
17
+ # Verify everything works
18
+ npx ts-node setup.ts --check
19
+ ```
20
+
21
+ **Zero external AI dependencies.** All 12 adapters are self-contained — add framework SDKs only when you need them.
22
+
23
+ ---
24
+
25
+ ## 2. Pick Your Framework
26
+
27
+ | Adapter | Framework | Dependency | Use Case |
28
+ |---------|-----------|------------|----------|
29
+ | `custom` | Any | none | Plain functions or HTTP endpoints |
30
+ | `langchain` | LangChain | `langchain` | Chains, agents, RAG |
31
+ | `autogen` | AutoGen/AG2 | `autogen-agentchat` | Multi-agent conversations |
32
+ | `crewai` | CrewAI | none | Role-based agent crews |
33
+ | `mcp` | MCP | `@modelcontextprotocol/sdk` | Tool serving & discovery |
34
+ | `openclaw` | OpenClaw | `openclaw-core` | OpenClaw skill ecosystem |
35
+ | `llamaindex` | LlamaIndex | `llamaindex` | RAG, query engines |
36
+ | `semantic-kernel` | Semantic Kernel | `semantic-kernel` | Enterprise planners & plugins |
37
+ | `openai-assistants` | OpenAI Assistants | `openai` | GPT assistants with threads |
38
+ | `haystack` | Haystack | none | Production RAG pipelines |
39
+ | `dspy` | DSPy | none | Programmatic prompt optimisation |
40
+ | `agno` | Agno | none | Multi-agent teams |
41
+
42
+ ---
43
+
44
+ ## 3. Hello World (30 seconds)
45
+
46
+ ```typescript
47
+ import { createSwarmOrchestrator } from './index';
48
+ import { AdapterRegistry, CustomAdapter } from './adapters';
49
+
50
+ async function main() {
51
+ // Create orchestrator
52
+ const orchestrator = createSwarmOrchestrator({
53
+ agentId: 'my-app',
54
+ swarmName: 'My First Swarm',
55
+ });
56
+
57
+ // Create a simple agent
58
+ const adapter = new CustomAdapter();
59
+ adapter.registerHandler('greeter', async (payload) => {
60
+ const name = payload.handoff?.instruction || 'World';
61
+ return { greeting: `Hello, ${name}!` };
62
+ });
63
+
64
+ // Register it
65
+ const registry = new AdapterRegistry();
66
+ await registry.addAdapter(adapter);
67
+
68
+ // Execute
69
+ const result = await registry.executeAgent('custom:greeter', {
70
+ action: 'greet',
71
+ params: {},
72
+ handoff: { instruction: 'Developer' },
73
+ }, {
74
+ agentId: 'my-app',
75
+ taskId: 'task-1',
76
+ timestamp: Date.now(),
77
+ priority: 5,
78
+ });
79
+
80
+ console.log(result.data); // { greeting: "Hello, Developer!" }
81
+ }
82
+
83
+ main();
84
+ ```
85
+
86
+ ---
87
+
88
+ ## 4. Multi-Framework Setup
89
+
90
+ Use different AI frameworks **together** in one orchestrator:
91
+
92
+ ```typescript
93
+ import { AdapterRegistry, CustomAdapter, LlamaIndexAdapter, DSPyAdapter } from './adapters';
94
+
95
+ async function multiFramework() {
96
+ const registry = new AdapterRegistry();
97
+
98
+ // Framework 1: Custom agents for business logic
99
+ const custom = new CustomAdapter();
100
+ custom.registerHandler('validator', async (p) => ({
101
+ valid: true,
102
+ message: 'Input validated',
103
+ }));
104
+
105
+ // Framework 2: LlamaIndex for RAG
106
+ const llamaindex = new LlamaIndexAdapter();
107
+ llamaindex.registerQueryEngine('knowledge-base', myQueryEngine);
108
+
109
+ // Framework 3: DSPy for classification
110
+ const dspy = new DSPyAdapter();
111
+ dspy.registerPredictor('classifier', async (inputs) => ({
112
+ answer: inputs.question?.toString().includes('urgent') ? 'high' : 'low',
113
+ }));
114
+
115
+ // Register all
116
+ await registry.addAdapter(custom);
117
+ await registry.addAdapter(llamaindex);
118
+ await registry.addAdapter(dspy);
119
+
120
+ // Route tasks to the right framework
121
+ await registry.executeAgent('custom:validator', ...);
122
+ await registry.executeAgent('llamaindex:knowledge-base', ...);
123
+ await registry.executeAgent('dspy:classifier', ...);
124
+ }
125
+ ```
126
+
127
+ ---
128
+
129
+ ## 5. Add Quality Validation
130
+
131
+ Prevent bad data from entering the shared blackboard:
132
+
133
+ ```typescript
134
+ import { createSwarmOrchestrator } from './index';
135
+
136
+ const orchestrator = createSwarmOrchestrator({
137
+ agentId: 'my-app',
138
+ swarmName: 'Quality-Controlled Swarm',
139
+ qualityThreshold: 0.7, // Auto-approve above this score
140
+ aiReviewCallback: async (entry) => {
141
+ // Optional: plug in your AI model for borderline entries
142
+ const score = await myAIModel.evaluate(entry.value);
143
+ return { approved: score > 0.5, score, reason: 'AI reviewed' };
144
+ },
145
+ });
146
+ ```
147
+
148
+ ---
149
+
150
+ ## 6. Security
151
+
152
+ ```typescript
153
+ import {
154
+ SecureSwarmGateway,
155
+ SecureTokenManager,
156
+ RateLimiter,
157
+ } from './security';
158
+
159
+ const gateway = new SecureSwarmGateway({
160
+ rateLimiting: true,
161
+ auditLogging: true,
162
+ inputSanitization: true,
163
+ });
164
+ ```
165
+
166
+ ---
167
+
168
+ ## 7. Build Your Own Adapter
169
+
170
+ Create a custom adapter for any framework in ~50 lines:
171
+
172
+ ```typescript
173
+ import { BaseAdapter } from './adapters/base-adapter';
174
+ import type { AgentPayload, AgentContext, AgentResult } from './types/agent-adapter';
175
+
176
+ export class MyFrameworkAdapter extends BaseAdapter {
177
+ readonly name = 'my-framework';
178
+ readonly version = '1.0.0';
179
+
180
+ private agents = new Map<string, any>();
181
+
182
+ registerAgent(id: string, agent: any): void {
183
+ this.agents.set(id, agent);
184
+ this.registerLocalAgent({
185
+ id, name: id,
186
+ description: `My agent: ${id}`,
187
+ status: 'available',
188
+ });
189
+ }
190
+
191
+ async executeAgent(
192
+ agentId: string,
193
+ payload: AgentPayload,
194
+ context: AgentContext
195
+ ): Promise<AgentResult> {
196
+ this.ensureReady();
197
+ const agent = this.agents.get(agentId);
198
+ if (!agent) return this.errorResult('NOT_FOUND', `Unknown: ${agentId}`, false);
199
+
200
+ const start = Date.now();
201
+ try {
202
+ const result = await agent.run(payload.handoff?.instruction || '');
203
+ return this.successResult(result, Date.now() - start);
204
+ } catch (e: any) {
205
+ return this.errorResult('ERROR', e.message, true, e);
206
+ }
207
+ }
208
+ }
209
+ ```
210
+
211
+ ---
212
+
213
+ ## 8. Run Tests
214
+
215
+ ```bash
216
+ npx ts-node test-standalone.ts # 79 core tests
217
+ npx ts-node test-security.ts # 33 security tests
218
+ npx ts-node test-adapters.ts # 100+ adapter tests (all 12 frameworks)
219
+ ```
220
+
221
+ ---
222
+
223
+ ## 9. Commands Reference
224
+
225
+ ```bash
226
+ npx ts-node setup.ts --check # Verify installation
227
+ npx ts-node setup.ts --list # List all 12 adapters
228
+ npx ts-node setup.ts --example # Generate example.ts
229
+ ```
230
+
231
+ ---
232
+
233
+ ## Architecture
234
+
235
+ ```
236
+ Your App
237
+ └── SwarmOrchestrator (index.ts)
238
+ ├── SharedBlackboard — Shared state across agents
239
+ ├── AuthGuardian — Trust & permissions
240
+ ├── TaskDecomposer — Break tasks into subtasks
241
+ ├── BlackboardValidator — Quality gate (Layer 1)
242
+ ├── QualityGateAgent — AI review (Layer 2)
243
+ └── AdapterRegistry — Routes to any framework
244
+ ├── CustomAdapter ─── your functions / HTTP
245
+ ├── LangChainAdapter ─── LangChain / LangGraph
246
+ ├── AutoGenAdapter ─── Microsoft AutoGen
247
+ ├── CrewAIAdapter ─── CrewAI crews
248
+ ├── MCPAdapter ─── Model Context Protocol
249
+ ├── OpenClawAdapter ─── OpenClaw skills
250
+ ├── LlamaIndexAdapter ─── LlamaIndex engines
251
+ ├── SemanticKernelAdapter── Semantic Kernel
252
+ ├── OpenAIAssistantsAdapter── OpenAI Assistants
253
+ ├── HaystackAdapter ─── Haystack pipelines
254
+ ├── DSPyAdapter ─── DSPy modules
255
+ └── AgnoAdapter ─── Agno agents/teams
256
+ ```
257
+
258
+ ---
259
+
260
+ **Questions?** Open an issue at [github.com/jovanSAPFIONEER/Network-AI](https://github.com/jovanSAPFIONEER/Network-AI)