@juspay/neurolink 9.11.0 → 9.12.1
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/CHANGELOG.md +16 -0
- package/dist/lib/mcp/externalServerManager.js +10 -9
- package/dist/lib/neurolink.js +5 -0
- package/dist/lib/processors/media/VideoProcessor.js +2 -1
- package/dist/lib/server/adapters/expressAdapter.d.ts +1 -2
- package/dist/lib/server/adapters/fastifyAdapter.d.ts +1 -2
- package/dist/lib/server/adapters/honoAdapter.d.ts +1 -2
- package/dist/mcp/externalServerManager.js +10 -9
- package/dist/neurolink.js +5 -0
- package/dist/processors/media/VideoProcessor.js +2 -1
- package/dist/server/adapters/expressAdapter.d.ts +1 -2
- package/dist/server/adapters/fastifyAdapter.d.ts +1 -2
- package/dist/server/adapters/honoAdapter.d.ts +1 -2
- package/package.json +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,19 @@
|
|
|
1
|
+
## [9.12.1](https://github.com/juspay/neurolink/compare/v9.12.0...v9.12.1) (2026-02-23)
|
|
2
|
+
|
|
3
|
+
### Bug Fixes
|
|
4
|
+
|
|
5
|
+
- **(core):** lazy-load sharp and stop leaking framework types in .d.ts ([4ecc448](https://github.com/juspay/neurolink/commit/4ecc4482dbf1b0ef30de537a0edd9b6d4ce67a3f))
|
|
6
|
+
|
|
7
|
+
## [9.12.0](https://github.com/juspay/neurolink/compare/v9.11.0...v9.12.0) (2026-02-23)
|
|
8
|
+
|
|
9
|
+
### Features
|
|
10
|
+
|
|
11
|
+
- **(core):** implement SDK boundary items — context windows, caching, tool output management ([75a07a4](https://github.com/juspay/neurolink/commit/75a07a4f6d8eaec2fefe577dc62428e759bb52ce))
|
|
12
|
+
|
|
13
|
+
### Bug Fixes
|
|
14
|
+
|
|
15
|
+
- **(mcp):** missing gap for mcp cli ([79b51a8](https://github.com/juspay/neurolink/commit/79b51a88fa8f79809917e6159106278114f86636))
|
|
16
|
+
|
|
1
17
|
## [9.11.0](https://github.com/juspay/neurolink/compare/v9.10.1...v9.11.0) (2026-02-22)
|
|
2
18
|
|
|
3
19
|
### Features
|
|
@@ -541,15 +541,15 @@ export class ExternalServerManager extends EventEmitter {
|
|
|
541
541
|
env: config.env,
|
|
542
542
|
tools: [], // Will be populated after server connection
|
|
543
543
|
blockedTools: config.blockedTools,
|
|
544
|
+
// Preserve top-level operational fields so startServer can read them
|
|
545
|
+
timeout: config.timeout,
|
|
546
|
+
retries: config.retries,
|
|
547
|
+
healthCheckInterval: config.healthCheckInterval,
|
|
548
|
+
autoRestart: config.autoRestart,
|
|
549
|
+
cwd: config.cwd,
|
|
550
|
+
url: config.url,
|
|
544
551
|
metadata: {
|
|
545
552
|
category: "external",
|
|
546
|
-
// Store additional ExternalMCPServerConfig fields in metadata
|
|
547
|
-
timeout: config.timeout,
|
|
548
|
-
retries: config.retries,
|
|
549
|
-
healthCheckInterval: config.healthCheckInterval,
|
|
550
|
-
autoRestart: config.autoRestart,
|
|
551
|
-
cwd: config.cwd,
|
|
552
|
-
url: config.url,
|
|
553
553
|
...(safeMetadataConversion(config.metadata) || {}),
|
|
554
554
|
},
|
|
555
555
|
};
|
|
@@ -928,8 +928,9 @@ export class ExternalServerManager extends EventEmitter {
|
|
|
928
928
|
reason,
|
|
929
929
|
timestamp: new Date(),
|
|
930
930
|
});
|
|
931
|
-
// Attempt restart if enabled
|
|
932
|
-
if (
|
|
931
|
+
// Attempt restart if enabled — prefer server-specific setting, fall back to global
|
|
932
|
+
if ((instance.config.autoRestart ?? this.config.enableAutoRestart) &&
|
|
933
|
+
!this.isShuttingDown) {
|
|
933
934
|
this.scheduleRestart(serverId);
|
|
934
935
|
}
|
|
935
936
|
else {
|
package/dist/lib/neurolink.js
CHANGED
|
@@ -2538,6 +2538,11 @@ Current user's request: ${currentInput}`;
|
|
|
2538
2538
|
skippedToolInjection: !!options.skipToolPromptInjection,
|
|
2539
2539
|
enhancedPromptPreview: enhancedSystemPrompt.substring(0, 500) + "...",
|
|
2540
2540
|
});
|
|
2541
|
+
logger.debug("[Observability] Full system prompt", {
|
|
2542
|
+
requestId,
|
|
2543
|
+
systemPromptLength: enhancedSystemPrompt.length,
|
|
2544
|
+
systemPrompt: enhancedSystemPrompt,
|
|
2545
|
+
});
|
|
2541
2546
|
// Get conversation messages for context
|
|
2542
2547
|
let conversationMessages = await getConversationMessages(this.conversationMemory, options);
|
|
2543
2548
|
if (logger.shouldLog("debug")) {
|
|
@@ -48,7 +48,6 @@ import ffmpegCommand from "fluent-ffmpeg";
|
|
|
48
48
|
import { createWriteStream, existsSync, promises as fs } from "fs";
|
|
49
49
|
import { tmpdir } from "os";
|
|
50
50
|
import { join } from "path";
|
|
51
|
-
import sharp from "sharp";
|
|
52
51
|
import { Readable } from "stream";
|
|
53
52
|
import { pipeline } from "stream/promises";
|
|
54
53
|
import { BaseFileProcessor } from "../base/BaseFileProcessor.js";
|
|
@@ -538,6 +537,7 @@ export class VideoProcessor extends BaseFileProcessor {
|
|
|
538
537
|
await fs.access(framePath);
|
|
539
538
|
const rawFrame = await fs.readFile(framePath);
|
|
540
539
|
// Resize to fit within max dimension while preserving aspect ratio
|
|
540
|
+
const sharp = (await import("sharp")).default;
|
|
541
541
|
const resized = await sharp(rawFrame)
|
|
542
542
|
.resize(VIDEO_CONFIG.FRAME_MAX_DIMENSION, VIDEO_CONFIG.FRAME_MAX_DIMENSION, {
|
|
543
543
|
fit: "inside",
|
|
@@ -878,6 +878,7 @@ export class VideoProcessor extends BaseFileProcessor {
|
|
|
878
878
|
try {
|
|
879
879
|
await fs.access(framePath);
|
|
880
880
|
const rawFrame = await fs.readFile(framePath);
|
|
881
|
+
const sharp = (await import("sharp")).default;
|
|
881
882
|
const resized = await sharp(rawFrame)
|
|
882
883
|
.resize(VIDEO_CONFIG.FRAME_MAX_DIMENSION, VIDEO_CONFIG.FRAME_MAX_DIMENSION, {
|
|
883
884
|
fit: "inside",
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
* Express Server Adapter
|
|
3
3
|
* Server adapter implementation using Express framework
|
|
4
4
|
*/
|
|
5
|
-
import type { Express } from "express";
|
|
6
5
|
import type { NeuroLink } from "../../neurolink.js";
|
|
7
6
|
import { BaseServerAdapter } from "../abstract/baseServerAdapter.js";
|
|
8
7
|
import type { MiddlewareDefinition, RouteDefinition, ServerAdapterConfig } from "../types.js";
|
|
@@ -67,5 +66,5 @@ export declare class ExpressServerAdapter extends BaseServerAdapter {
|
|
|
67
66
|
/**
|
|
68
67
|
* Get the Express app instance
|
|
69
68
|
*/
|
|
70
|
-
getFrameworkInstance():
|
|
69
|
+
getFrameworkInstance(): unknown;
|
|
71
70
|
}
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
* Server adapter implementation using Fastify framework
|
|
4
4
|
* Fastify is known for its high performance and low overhead
|
|
5
5
|
*/
|
|
6
|
-
import type { FastifyInstance } from "fastify";
|
|
7
6
|
import type { NeuroLink } from "../../neurolink.js";
|
|
8
7
|
import { BaseServerAdapter } from "../abstract/baseServerAdapter.js";
|
|
9
8
|
import type { MiddlewareDefinition, RouteDefinition, ServerAdapterConfig } from "../types.js";
|
|
@@ -67,5 +66,5 @@ export declare class FastifyServerAdapter extends BaseServerAdapter {
|
|
|
67
66
|
/**
|
|
68
67
|
* Get the Fastify instance
|
|
69
68
|
*/
|
|
70
|
-
getFrameworkInstance():
|
|
69
|
+
getFrameworkInstance(): unknown;
|
|
71
70
|
}
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
* Primary server adapter implementation using Hono framework
|
|
4
4
|
* Hono is chosen for its performance, TypeScript-first design, and edge compatibility
|
|
5
5
|
*/
|
|
6
|
-
import { Hono } from "hono";
|
|
7
6
|
import type { NeuroLink } from "../../neurolink.js";
|
|
8
7
|
import { BaseServerAdapter } from "../abstract/baseServerAdapter.js";
|
|
9
8
|
import type { MiddlewareDefinition, RouteDefinition, ServerAdapterConfig } from "../types.js";
|
|
@@ -65,7 +64,7 @@ export declare class HonoServerAdapter extends BaseServerAdapter {
|
|
|
65
64
|
/**
|
|
66
65
|
* Get the Hono app instance
|
|
67
66
|
*/
|
|
68
|
-
getFrameworkInstance():
|
|
67
|
+
getFrameworkInstance(): unknown;
|
|
69
68
|
private extractHeaders;
|
|
70
69
|
private extractQuery;
|
|
71
70
|
private extractBody;
|
|
@@ -541,15 +541,15 @@ export class ExternalServerManager extends EventEmitter {
|
|
|
541
541
|
env: config.env,
|
|
542
542
|
tools: [], // Will be populated after server connection
|
|
543
543
|
blockedTools: config.blockedTools,
|
|
544
|
+
// Preserve top-level operational fields so startServer can read them
|
|
545
|
+
timeout: config.timeout,
|
|
546
|
+
retries: config.retries,
|
|
547
|
+
healthCheckInterval: config.healthCheckInterval,
|
|
548
|
+
autoRestart: config.autoRestart,
|
|
549
|
+
cwd: config.cwd,
|
|
550
|
+
url: config.url,
|
|
544
551
|
metadata: {
|
|
545
552
|
category: "external",
|
|
546
|
-
// Store additional ExternalMCPServerConfig fields in metadata
|
|
547
|
-
timeout: config.timeout,
|
|
548
|
-
retries: config.retries,
|
|
549
|
-
healthCheckInterval: config.healthCheckInterval,
|
|
550
|
-
autoRestart: config.autoRestart,
|
|
551
|
-
cwd: config.cwd,
|
|
552
|
-
url: config.url,
|
|
553
553
|
...(safeMetadataConversion(config.metadata) || {}),
|
|
554
554
|
},
|
|
555
555
|
};
|
|
@@ -928,8 +928,9 @@ export class ExternalServerManager extends EventEmitter {
|
|
|
928
928
|
reason,
|
|
929
929
|
timestamp: new Date(),
|
|
930
930
|
});
|
|
931
|
-
// Attempt restart if enabled
|
|
932
|
-
if (
|
|
931
|
+
// Attempt restart if enabled — prefer server-specific setting, fall back to global
|
|
932
|
+
if ((instance.config.autoRestart ?? this.config.enableAutoRestart) &&
|
|
933
|
+
!this.isShuttingDown) {
|
|
933
934
|
this.scheduleRestart(serverId);
|
|
934
935
|
}
|
|
935
936
|
else {
|
package/dist/neurolink.js
CHANGED
|
@@ -2538,6 +2538,11 @@ Current user's request: ${currentInput}`;
|
|
|
2538
2538
|
skippedToolInjection: !!options.skipToolPromptInjection,
|
|
2539
2539
|
enhancedPromptPreview: enhancedSystemPrompt.substring(0, 500) + "...",
|
|
2540
2540
|
});
|
|
2541
|
+
logger.debug("[Observability] Full system prompt", {
|
|
2542
|
+
requestId,
|
|
2543
|
+
systemPromptLength: enhancedSystemPrompt.length,
|
|
2544
|
+
systemPrompt: enhancedSystemPrompt,
|
|
2545
|
+
});
|
|
2541
2546
|
// Get conversation messages for context
|
|
2542
2547
|
let conversationMessages = await getConversationMessages(this.conversationMemory, options);
|
|
2543
2548
|
if (logger.shouldLog("debug")) {
|
|
@@ -48,7 +48,6 @@ import ffmpegCommand from "fluent-ffmpeg";
|
|
|
48
48
|
import { createWriteStream, existsSync, promises as fs } from "fs";
|
|
49
49
|
import { tmpdir } from "os";
|
|
50
50
|
import { join } from "path";
|
|
51
|
-
import sharp from "sharp";
|
|
52
51
|
import { Readable } from "stream";
|
|
53
52
|
import { pipeline } from "stream/promises";
|
|
54
53
|
import { BaseFileProcessor } from "../base/BaseFileProcessor.js";
|
|
@@ -538,6 +537,7 @@ export class VideoProcessor extends BaseFileProcessor {
|
|
|
538
537
|
await fs.access(framePath);
|
|
539
538
|
const rawFrame = await fs.readFile(framePath);
|
|
540
539
|
// Resize to fit within max dimension while preserving aspect ratio
|
|
540
|
+
const sharp = (await import("sharp")).default;
|
|
541
541
|
const resized = await sharp(rawFrame)
|
|
542
542
|
.resize(VIDEO_CONFIG.FRAME_MAX_DIMENSION, VIDEO_CONFIG.FRAME_MAX_DIMENSION, {
|
|
543
543
|
fit: "inside",
|
|
@@ -878,6 +878,7 @@ export class VideoProcessor extends BaseFileProcessor {
|
|
|
878
878
|
try {
|
|
879
879
|
await fs.access(framePath);
|
|
880
880
|
const rawFrame = await fs.readFile(framePath);
|
|
881
|
+
const sharp = (await import("sharp")).default;
|
|
881
882
|
const resized = await sharp(rawFrame)
|
|
882
883
|
.resize(VIDEO_CONFIG.FRAME_MAX_DIMENSION, VIDEO_CONFIG.FRAME_MAX_DIMENSION, {
|
|
883
884
|
fit: "inside",
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
* Express Server Adapter
|
|
3
3
|
* Server adapter implementation using Express framework
|
|
4
4
|
*/
|
|
5
|
-
import type { Express } from "express";
|
|
6
5
|
import type { NeuroLink } from "../../neurolink.js";
|
|
7
6
|
import { BaseServerAdapter } from "../abstract/baseServerAdapter.js";
|
|
8
7
|
import type { MiddlewareDefinition, RouteDefinition, ServerAdapterConfig } from "../types.js";
|
|
@@ -67,5 +66,5 @@ export declare class ExpressServerAdapter extends BaseServerAdapter {
|
|
|
67
66
|
/**
|
|
68
67
|
* Get the Express app instance
|
|
69
68
|
*/
|
|
70
|
-
getFrameworkInstance():
|
|
69
|
+
getFrameworkInstance(): unknown;
|
|
71
70
|
}
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
* Server adapter implementation using Fastify framework
|
|
4
4
|
* Fastify is known for its high performance and low overhead
|
|
5
5
|
*/
|
|
6
|
-
import type { FastifyInstance } from "fastify";
|
|
7
6
|
import type { NeuroLink } from "../../neurolink.js";
|
|
8
7
|
import { BaseServerAdapter } from "../abstract/baseServerAdapter.js";
|
|
9
8
|
import type { MiddlewareDefinition, RouteDefinition, ServerAdapterConfig } from "../types.js";
|
|
@@ -67,5 +66,5 @@ export declare class FastifyServerAdapter extends BaseServerAdapter {
|
|
|
67
66
|
/**
|
|
68
67
|
* Get the Fastify instance
|
|
69
68
|
*/
|
|
70
|
-
getFrameworkInstance():
|
|
69
|
+
getFrameworkInstance(): unknown;
|
|
71
70
|
}
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
* Primary server adapter implementation using Hono framework
|
|
4
4
|
* Hono is chosen for its performance, TypeScript-first design, and edge compatibility
|
|
5
5
|
*/
|
|
6
|
-
import { Hono } from "hono";
|
|
7
6
|
import type { NeuroLink } from "../../neurolink.js";
|
|
8
7
|
import { BaseServerAdapter } from "../abstract/baseServerAdapter.js";
|
|
9
8
|
import type { MiddlewareDefinition, RouteDefinition, ServerAdapterConfig } from "../types.js";
|
|
@@ -65,7 +64,7 @@ export declare class HonoServerAdapter extends BaseServerAdapter {
|
|
|
65
64
|
/**
|
|
66
65
|
* Get the Hono app instance
|
|
67
66
|
*/
|
|
68
|
-
getFrameworkInstance():
|
|
67
|
+
getFrameworkInstance(): unknown;
|
|
69
68
|
private extractHeaders;
|
|
70
69
|
private extractQuery;
|
|
71
70
|
private extractBody;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@juspay/neurolink",
|
|
3
|
-
"version": "9.
|
|
3
|
+
"version": "9.12.1",
|
|
4
4
|
"description": "Universal AI Development Platform with working MCP integration, multi-provider support, and professional CLI. Built-in tools operational, 58+ external MCP servers discoverable. Connect to filesystem, GitHub, database operations, and more. Build, test, and deploy AI applications with 13 providers: OpenAI, Anthropic, Google AI, AWS Bedrock, Azure, Hugging Face, Ollama, and Mistral AI.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Juspay Technologies",
|