network-ai
Advanced tools
+6
-3
| { | ||
| "name": "network-ai", | ||
| "version": "4.10.0", | ||
| "version": "4.10.1", | ||
| "description": "AI agent orchestration framework for TypeScript/Node.js - 17 adapters (LangChain, AutoGen, CrewAI, OpenAI Assistants, LlamaIndex, Semantic Kernel, Haystack, DSPy, Agno, MCP, OpenClaw, A2A, Codex, MiniMax, NemoClaw, APS + streaming variants). Built-in CLI, security, swarm intelligence, real-time streaming, and agentic workflow patterns.", | ||
@@ -83,2 +83,6 @@ "homepage": "https://github.com/Jovancoding/Network-AI#readme", | ||
| "license": "MIT", | ||
| "funding": { | ||
| "type": "github", | ||
| "url": "https://github.com/sponsors/Jovancoding" | ||
| }, | ||
| "repository": { | ||
@@ -108,4 +112,3 @@ "type": "git", | ||
| "SKILL.md", | ||
| "LICENSE", | ||
| "socket.json" | ||
| "LICENSE" | ||
| ], | ||
@@ -112,0 +115,0 @@ "dependencies": { |
+3
-3
@@ -527,3 +527,3 @@ # Network-AI Quick Start Guide | ||
| for (const pillar of pillars) { | ||
| const id = board.propose(`eval:${pillar}`, { score: Math.random(), findings: [] }, pillar); | ||
| const id = board.propose(`review:${pillar}`, { score: Math.random(), findings: [] }, pillar); | ||
| board.validate(id, 'orchestrator'); | ||
@@ -534,4 +534,4 @@ board.commit(id); | ||
| // Fan-in: orchestrator reads all results and synthesises | ||
| const results = pillars.map(p => ({ pillar: p, ...board.read(`eval:${p}`) })); | ||
| const id = board.propose('eval:summary', { | ||
| const results = pillars.map(p => ({ pillar: p, ...board.read(`review:${p}`) })); | ||
| const id = board.propose('review:summary', { | ||
| overall: results.reduce((s, r) => s + r.score, 0) / results.length, | ||
@@ -538,0 +538,0 @@ pillars: results, |
+2
-1
@@ -8,3 +8,3 @@ # Network-AI | ||
| [](https://github.com/Jovancoding/Network-AI/actions/workflows/codeql.yml) | ||
| [](https://github.com/Jovancoding/Network-AI/releases) | ||
| [](https://github.com/Jovancoding/Network-AI/releases) | ||
| [](https://www.npmjs.com/package/network-ai) | ||
@@ -19,2 +19,3 @@ [](#testing) | ||
| [](INTEGRATION_GUIDE.md) | ||
| [](https://github.com/sponsors/Jovancoding) | ||
| [](https://discord.gg/Cab5vAxc86) | ||
@@ -21,0 +22,0 @@ [](https://glama.ai/mcp/servers/Jovancoding/network-ai) |
-169
| { | ||
| "version": 2, | ||
| "ignore": { | ||
| "evalDynamicCodeExecution": [ | ||
| { | ||
| "path": "lib/blackboard-validator.ts", | ||
| "reason": "False positive — /\\beval\\s*\\(/ is a security detection regex that scans for eval() usage in untrusted agent code submitted to the blackboard. It is not dynamic code execution." | ||
| }, | ||
| { | ||
| "path": "dist/lib/blackboard-validator.js", | ||
| "reason": "False positive — this is a security detection pattern that scans for eval() usage in untrusted agent code. It is not dynamic code execution." | ||
| } | ||
| ], | ||
| "networkAccess": [ | ||
| { | ||
| "path": "adapters/a2a-adapter.ts", | ||
| "reason": "Intentional — A2AAdapter implements the Google Agent-to-Agent protocol; fetch() calls are made to remote agent endpoints that users explicitly register via registerRemoteAgent(). Network access is the purpose of this adapter." | ||
| }, | ||
| { | ||
| "path": "dist/adapters/a2a-adapter.js", | ||
| "reason": "Intentional — A2AAdapter implements the Google Agent-to-Agent protocol; fetch() calls are made to remote agent endpoints that users explicitly register via registerRemoteAgent(). Network access is the purpose of this adapter." | ||
| }, | ||
| { | ||
| "path": "dist/adapters/custom-adapter.js", | ||
| "reason": "Intentional — CustomAdapter is a user-configured HTTP adapter that calls a user-supplied URL (config.url) to connect to external AI endpoints. Network access is the explicit purpose of this adapter." | ||
| }, | ||
| { | ||
| "path": "lib/mcp-transport-sse.ts", | ||
| "reason": "Intentional — McpSseTransport is an HTTP/SSE transport layer for the MCP protocol. Both the server (createServer) and client (http.request) directions are the explicit purpose of this module." | ||
| }, | ||
| { | ||
| "path": "dist/lib/mcp-transport-sse.js", | ||
| "reason": "Intentional — McpSseTransport is an HTTP/SSE transport layer for the MCP protocol. Both the server (createServer) and client (http.request) directions are the explicit purpose of this module." | ||
| }, | ||
| { | ||
| "path": "dist/bin/mcp-server.js", | ||
| "reason": "Intentional — network-ai-server is an opt-in CLI binary that starts an HTTP/SSE server to expose the Network-AI tool suite over MCP. Users invoke it explicitly; it is not a background side-effect." | ||
| }, | ||
| { | ||
| "path": "adapters/codex-adapter.ts", | ||
| "reason": "Intentional — CodexAdapter calls OpenAI's chat/completions API (or user-provided baseUrl) via fetch(). Network access is the purpose of this adapter for connecting to OpenAI/Codex endpoints." | ||
| }, | ||
| { | ||
| "path": "dist/adapters/codex-adapter.js", | ||
| "reason": "Intentional — CodexAdapter calls OpenAI's chat/completions API (or user-provided baseUrl) via fetch(). Network access is the purpose of this adapter for connecting to OpenAI/Codex endpoints." | ||
| }, | ||
| { | ||
| "path": "adapters/minimax-adapter.ts", | ||
| "reason": "Intentional — MiniMaxAdapter calls MiniMax's OpenAI-compatible chat/completions API via fetch(). Network access is the purpose of this adapter for connecting to MiniMax LLM endpoints." | ||
| }, | ||
| { | ||
| "path": "dist/adapters/minimax-adapter.js", | ||
| "reason": "Intentional — MiniMaxAdapter calls MiniMax's OpenAI-compatible chat/completions API via fetch(). Network access is the purpose of this adapter for connecting to MiniMax LLM endpoints." | ||
| } | ||
| ], | ||
| "urlStrings": [ | ||
| { | ||
| "path": "dist/adapters/custom-adapter.js", | ||
| "reason": "Intentional — CustomAdapter accepts user-supplied endpoint URLs (config.url) as its core function. URLs are provided by the caller at runtime, not hard-coded." | ||
| }, | ||
| { | ||
| "path": "dist/adapters/mcp-adapter.js", | ||
| "reason": "Intentional — MCPAdapter documents example MCP endpoint URL patterns in comments. No runtime URL is hard-coded." | ||
| }, | ||
| { | ||
| "path": "dist/bin/mcp-server.js", | ||
| "reason": "Intentional — mcp-server.js is the MCP server binary; localhost URLs are for the server it starts (e.g. http://localhost:3001/sse) and are documented in help text and comments." | ||
| }, | ||
| { | ||
| "path": "adapters/codex-adapter.ts", | ||
| "reason": "Intentional — CodexAdapter uses https://api.openai.com as default baseUrl for OpenAI API calls. Users can override via config.baseUrl." | ||
| }, | ||
| { | ||
| "path": "dist/adapters/codex-adapter.js", | ||
| "reason": "Intentional — CodexAdapter uses https://api.openai.com as default baseUrl for OpenAI API calls. Users can override via config.baseUrl." | ||
| }, | ||
| { | ||
| "path": "adapters/minimax-adapter.ts", | ||
| "reason": "Intentional — MiniMaxAdapter uses https://api.minimax.io/v1 as default baseUrl for MiniMax API calls. Users can override via config.baseUrl." | ||
| }, | ||
| { | ||
| "path": "dist/adapters/minimax-adapter.js", | ||
| "reason": "Intentional — MiniMaxAdapter uses https://api.minimax.io/v1 as default baseUrl for MiniMax API calls. Users can override via config.baseUrl." | ||
| } | ||
| ], | ||
| "envVars": [ | ||
| { | ||
| "path": "security.ts", | ||
| "reason": "Intentional — reads SWARM_TOKEN_SECRET and SWARM_ENCRYPTION_KEY env vars as an opt-in mechanism for users to supply secrets without hard-coding them." | ||
| }, | ||
| { | ||
| "path": "dist/security.js", | ||
| "reason": "Intentional — compiled output of security.ts. Reads SWARM_TOKEN_SECRET and SWARM_ENCRYPTION_KEY env vars." | ||
| }, | ||
| { | ||
| "path": "adapters/codex-adapter.ts", | ||
| "reason": "Intentional — CodexAdapter reads OPENAI_API_KEY env var as a fallback when no API key is provided via config. Declared in skill.json env section." | ||
| }, | ||
| { | ||
| "path": "dist/adapters/codex-adapter.js", | ||
| "reason": "Intentional — compiled output of codex-adapter.ts. Reads OPENAI_API_KEY env var." | ||
| }, | ||
| { | ||
| "path": "adapters/minimax-adapter.ts", | ||
| "reason": "Intentional — MiniMaxAdapter reads MINIMAX_API_KEY env var as a fallback when no API key is provided via config. Declared in skill.json env section." | ||
| }, | ||
| { | ||
| "path": "dist/adapters/minimax-adapter.js", | ||
| "reason": "Intentional — compiled output of minimax-adapter.ts. Reads MINIMAX_API_KEY env var." | ||
| }, | ||
| { | ||
| "path": "setup.ts", | ||
| "reason": "Intentional — setup module checks for OPENAI_API_KEY env var to provide helpful configuration guidance. Declared in skill.json env section." | ||
| }, | ||
| { | ||
| "path": "dist/setup.js", | ||
| "reason": "Intentional — compiled output of setup.ts. Checks for OPENAI_API_KEY env var." | ||
| } | ||
| ], | ||
| "shellExec": [ | ||
| { | ||
| "path": "adapters/nemoclaw-adapter.ts", | ||
| "reason": "Intentional — NemoClawAdapter's default executor uses child_process.execFile to invoke the openshell CLI for sandbox management. This is the fallback when no custom executor is provided. Users are expected to bring their own executor in production." | ||
| }, | ||
| { | ||
| "path": "dist/adapters/nemoclaw-adapter.js", | ||
| "reason": "Intentional — compiled output of nemoclaw-adapter.ts. Uses child_process.execFile to invoke the openshell CLI." | ||
| }, | ||
| { | ||
| "path": "examples/05-code-review-swarm.ts", | ||
| "reason": "Intentional — example script uses execSync('npx tsc --noEmit') to demonstrate automated TypeScript type-checking in a code review pipeline. Not part of the core library." | ||
| }, | ||
| { | ||
| "path": "examples/demo-runner.ts", | ||
| "reason": "Intentional — demo runner uses spawn('npx', ['ts-node', file]) to execute example scripts. This is a developer convenience script, not part of the core library." | ||
| } | ||
| ], | ||
| "filesystemAccess": [ | ||
| { | ||
| "path": "dist/index.js", | ||
| "reason": "Intentional — the blackboard uses a file-backed store (data/ directory) as its persistence layer. Filesystem access is the explicit purpose of the local-first architecture." | ||
| }, | ||
| { | ||
| "path": "dist/run.js", | ||
| "reason": "Intentional — run.ts bootstraps the local blackboard and reads/writes the data directory. File I/O is the core mechanism." | ||
| }, | ||
| { | ||
| "path": "dist/security.js", | ||
| "reason": "Intentional — security module writes the HMAC-signed audit log to data/audit_log.jsonl. Append-only filesystem writes are the audit trail mechanism." | ||
| }, | ||
| { | ||
| "path": "dist/lib/locked-blackboard.js", | ||
| "reason": "Intentional — LockedBlackboard uses atomic file rename + fsync for its mutex. Filesystem access is the locking primitive." | ||
| }, | ||
| { | ||
| "path": "dist/lib/mcp-tools-extended.js", | ||
| "reason": "Intentional — extended MCP tools expose blackboard snapshot and audit log query over MCP; these read from the data/ directory." | ||
| }, | ||
| { | ||
| "path": "dist/lib/mcp-transport-sse.js", | ||
| "reason": "Intentional — SSE transport reads config from the filesystem. File access is for configuration loading only." | ||
| }, | ||
| { | ||
| "path": "dist/lib/swarm-utils.js", | ||
| "reason": "Intentional — swarm-utils reads/writes the shared blackboard file and audit log. Filesystem I/O is the persistence layer." | ||
| } | ||
| ] | ||
| } | ||
| } |
Network access
Supply chain riskThis module accesses the network.
Found 3 instances in 1 package
Shell access
Supply chain riskThis module accesses the system shell. Accessing the system shell increases the risk of executing arbitrary code.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 5 instances in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
Network access
Supply chain riskThis module accesses the network.
Found 3 instances in 1 package
Shell access
Supply chain riskThis module accesses the system shell. Accessing the system shell increases the risk of executing arbitrary code.
Found 1 instance in 1 package
Environment variable access
Supply chain riskPackage accesses environment variables, which may be a sign of credential stuffing or data theft.
Found 5 instances in 1 package
Filesystem access
Supply chain riskAccesses the file system, and could potentially read sensitive data.
Found 1 instance in 1 package
Long strings
Supply chain riskContains long string literals, which may be a sign of obfuscated or packed code.
Found 1 instance in 1 package
URL strings
Supply chain riskPackage contains fragments of external URLs or IP addresses, which the package may be accessing at runtime.
Found 1 instance in 1 package
475
0.21%1530498
-0.59%201
-0.5%24106
-0.7%