@juspay/neurolink 7.9.0 → 7.10.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/CHANGELOG.md +12 -6
- package/README.md +21 -7
- package/dist/agent/directTools.d.ts +23 -843
- package/dist/agent/directTools.js +1 -3
- package/dist/cli/commands/mcp.js +66 -27
- package/dist/cli/commands/ollama.js +7 -3
- package/dist/cli/commands/sagemaker.js +145 -144
- package/dist/cli/factories/commandFactory.js +4 -4
- package/dist/core/dynamicModels.js +6 -0
- package/dist/lib/agent/directTools.d.ts +23 -843
- package/dist/lib/agent/directTools.js +1 -3
- package/dist/lib/core/dynamicModels.js +6 -0
- package/dist/lib/providers/googleVertex.js +1 -1
- package/dist/lib/utils/providerHealth.js +1 -1
- package/dist/mcp/servers/agent/directToolsServer.js +0 -1
- package/dist/mcp/servers/aiProviders/aiCoreServer.js +0 -1
- package/dist/models/modelResolver.js +0 -1
- package/dist/providers/amazonBedrock.js +2 -2
- package/dist/providers/anthropic.js +2 -2
- package/dist/providers/anthropicBaseProvider.js +2 -2
- package/dist/providers/googleAiStudio.js +2 -3
- package/dist/providers/googleVertex.js +1 -1
- package/dist/providers/litellm.js +4 -4
- package/dist/providers/ollama.js +1 -2
- package/dist/providers/openAI.js +2 -2
- package/dist/providers/openaiCompatible.js +1 -2
- package/dist/providers/sagemaker/errors.js +1 -1
- package/dist/providers/sagemaker/language-model.js +1 -1
- package/dist/sdk/toolRegistration.js +0 -1
- package/dist/telemetry/telemetryService.js +0 -2
- package/dist/types/tools.js +0 -1
- package/dist/utils/providerHealth.js +1 -1
- package/package.json +40 -5
|
@@ -325,9 +325,7 @@ export const directAgentTools = {
|
|
|
325
325
|
},
|
|
326
326
|
}),
|
|
327
327
|
};
|
|
328
|
-
|
|
329
|
-
* Get a subset of tools for specific use cases
|
|
330
|
-
*/
|
|
328
|
+
// eslint-disable-next-line no-redeclare
|
|
331
329
|
export function getToolsForCategory(category = "all") {
|
|
332
330
|
switch (category) {
|
|
333
331
|
case "basic":
|
|
@@ -100,6 +100,12 @@ export class DynamicModelProvider {
|
|
|
100
100
|
// Setup timeout and abort controller
|
|
101
101
|
const controller = new AbortController();
|
|
102
102
|
const timeoutId = setTimeout(() => controller.abort(), timeoutMs);
|
|
103
|
+
// Load from URL
|
|
104
|
+
const response = await fetch(source, {
|
|
105
|
+
headers: {
|
|
106
|
+
"User-Agent": "NeuroLink/1.0 (+https://github.com/juspay/neurolink)",
|
|
107
|
+
},
|
|
108
|
+
});
|
|
103
109
|
try {
|
|
104
110
|
// Add health check for localhost before attempting full request
|
|
105
111
|
if (source.includes("localhost") || source.includes("127.0.0.1")) {
|
|
@@ -21,7 +21,7 @@ export class ProviderHealthChecker {
|
|
|
21
21
|
}
|
|
22
22
|
const parsed = Number(envValue);
|
|
23
23
|
if (isNaN(parsed) || parsed <= 0 || parsed > 10) {
|
|
24
|
-
|
|
24
|
+
logger.warn(`Invalid PROVIDER_FAILURE_THRESHOLD: ${envValue} (must be between 1 and 10), using default: 3`);
|
|
25
25
|
return 3;
|
|
26
26
|
}
|
|
27
27
|
return parsed;
|
|
@@ -2,7 +2,6 @@
|
|
|
2
2
|
* NeuroLink Direct Tools Server
|
|
3
3
|
* Wraps the agent direct tools as an MCP server for proper registration
|
|
4
4
|
*/
|
|
5
|
-
import { z } from "zod";
|
|
6
5
|
import { createMCPServer } from "../../factory.js";
|
|
7
6
|
import { directAgentTools } from "../../../agent/directTools.js";
|
|
8
7
|
import { logger } from "../../../utils/logger.js";
|
|
@@ -5,7 +5,6 @@
|
|
|
5
5
|
*/
|
|
6
6
|
import { z } from "zod";
|
|
7
7
|
import { createMCPServer } from "../../factory.js";
|
|
8
|
-
import { ServiceRegistry } from "../../../core/serviceRegistry.js";
|
|
9
8
|
import { getBestProvider, getAvailableProviders, } from "../../../utils/providerUtils.js";
|
|
10
9
|
import { logger } from "../../../utils/logger.js";
|
|
11
10
|
/**
|
|
@@ -3,7 +3,6 @@
|
|
|
3
3
|
* Provides model resolution, search, and recommendation functionality
|
|
4
4
|
* Part of Phase 4.1 - Models Command System
|
|
5
5
|
*/
|
|
6
|
-
import { AIProviderName } from "../core/types.js";
|
|
7
6
|
import { MODEL_REGISTRY, MODEL_ALIASES, USE_CASE_RECOMMENDATIONS, getAllModels, getModelById, getModelsByProvider, getAvailableProviders, calculateCost, formatModelForDisplay, } from "./modelRegistry.js";
|
|
8
7
|
/**
|
|
9
8
|
* Model resolver class with advanced search and recommendation functionality
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { createAmazonBedrock } from "@ai-sdk/amazon-bedrock";
|
|
2
|
-
import { streamText
|
|
2
|
+
import { streamText } from "ai";
|
|
3
3
|
import { BaseProvider } from "../core/baseProvider.js";
|
|
4
4
|
import { logger } from "../utils/logger.js";
|
|
5
|
-
import {
|
|
5
|
+
import { TimeoutError, } from "../utils/timeout.js";
|
|
6
6
|
import { DEFAULT_MAX_TOKENS } from "../core/constants.js";
|
|
7
7
|
import { validateApiKey, createAWSAccessKeyConfig, createAWSSecretConfig, getAWSRegion, getAWSSessionToken, } from "../utils/providerConfig.js";
|
|
8
8
|
// Configuration helpers
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { anthropic } from "@ai-sdk/anthropic";
|
|
2
|
-
import { streamText
|
|
2
|
+
import { streamText } from "ai";
|
|
3
3
|
import { BaseProvider } from "../core/baseProvider.js";
|
|
4
4
|
import { logger } from "../utils/logger.js";
|
|
5
|
-
import { createTimeoutController, TimeoutError,
|
|
5
|
+
import { createTimeoutController, TimeoutError, } from "../utils/timeout.js";
|
|
6
6
|
import { DEFAULT_MAX_TOKENS } from "../core/constants.js";
|
|
7
7
|
import { validateApiKey, createAnthropicConfig, getProviderModel, } from "../utils/providerConfig.js";
|
|
8
8
|
// Configuration helpers - now using consolidated utility
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
import { createAnthropic } from "@ai-sdk/anthropic";
|
|
2
|
-
import { streamText
|
|
2
|
+
import { streamText } from "ai";
|
|
3
3
|
import { BaseProvider } from "../core/baseProvider.js";
|
|
4
4
|
import { logger } from "../utils/logger.js";
|
|
5
|
-
import { createTimeoutController, TimeoutError,
|
|
5
|
+
import { createTimeoutController, TimeoutError, } from "../utils/timeout.js";
|
|
6
6
|
import { DEFAULT_MAX_TOKENS } from "../core/constants.js";
|
|
7
7
|
import { validateApiKey, createAnthropicBaseConfig, } from "../utils/providerConfig.js";
|
|
8
8
|
/**
|
|
@@ -1,11 +1,10 @@
|
|
|
1
1
|
import { createGoogleGenerativeAI } from "@ai-sdk/google";
|
|
2
|
-
import { streamText
|
|
2
|
+
import { streamText } from "ai";
|
|
3
3
|
import { GoogleAIModels } from "../core/types.js";
|
|
4
4
|
import { BaseProvider } from "../core/baseProvider.js";
|
|
5
5
|
import { logger } from "../utils/logger.js";
|
|
6
|
-
import { createTimeoutController, TimeoutError,
|
|
6
|
+
import { createTimeoutController, TimeoutError, } from "../utils/timeout.js";
|
|
7
7
|
import { DEFAULT_MAX_TOKENS } from "../core/constants.js";
|
|
8
|
-
import { createProxyFetch } from "../proxy/proxyFetch.js";
|
|
9
8
|
import { streamAnalyticsCollector } from "../core/streamAnalytics.js";
|
|
10
9
|
// Environment variable setup
|
|
11
10
|
if (!process.env.GOOGLE_GENERATIVE_AI_API_KEY &&
|
|
@@ -1,10 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import { streamText
|
|
1
|
+
import { createOpenAI } from "@ai-sdk/openai";
|
|
2
|
+
import { streamText } from "ai";
|
|
3
3
|
import { BaseProvider } from "../core/baseProvider.js";
|
|
4
4
|
import { logger } from "../utils/logger.js";
|
|
5
|
-
import { createTimeoutController, TimeoutError,
|
|
5
|
+
import { createTimeoutController, TimeoutError, } from "../utils/timeout.js";
|
|
6
6
|
import { DEFAULT_MAX_TOKENS } from "../core/constants.js";
|
|
7
|
-
import {
|
|
7
|
+
import { getProviderModel } from "../utils/providerConfig.js";
|
|
8
8
|
import { streamAnalyticsCollector } from "../core/streamAnalytics.js";
|
|
9
9
|
// Configuration helpers
|
|
10
10
|
const getLiteLLMConfig = () => {
|
package/dist/providers/ollama.js
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
|
-
import { streamText, Output } from "ai";
|
|
2
1
|
import { BaseProvider } from "../core/baseProvider.js";
|
|
3
2
|
import { logger } from "../utils/logger.js";
|
|
4
|
-
import {
|
|
3
|
+
import { TimeoutError } from "../utils/timeout.js";
|
|
5
4
|
import { DEFAULT_MAX_TOKENS } from "../core/constants.js";
|
|
6
5
|
import { modelConfig } from "../core/modelConfiguration.js";
|
|
7
6
|
// Model version constants (configurable via environment)
|
package/dist/providers/openAI.js
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { openai } from "@ai-sdk/openai";
|
|
2
|
-
import { streamText
|
|
2
|
+
import { streamText } from "ai";
|
|
3
3
|
import { AIProviderName } from "../core/types.js";
|
|
4
4
|
import { BaseProvider } from "../core/baseProvider.js";
|
|
5
5
|
import { logger } from "../utils/logger.js";
|
|
6
|
-
import { createTimeoutController, TimeoutError,
|
|
6
|
+
import { createTimeoutController, TimeoutError, } from "../utils/timeout.js";
|
|
7
7
|
import { DEFAULT_MAX_TOKENS } from "../core/constants.js";
|
|
8
8
|
import { validateApiKey, createOpenAIConfig, getProviderModel, } from "../utils/providerConfig.js";
|
|
9
9
|
import { streamAnalyticsCollector } from "../core/streamAnalytics.js";
|
|
@@ -2,9 +2,8 @@ import { createOpenAI } from "@ai-sdk/openai";
|
|
|
2
2
|
import { streamText } from "ai";
|
|
3
3
|
import { BaseProvider } from "../core/baseProvider.js";
|
|
4
4
|
import { logger } from "../utils/logger.js";
|
|
5
|
-
import { createTimeoutController, TimeoutError,
|
|
5
|
+
import { createTimeoutController, TimeoutError, } from "../utils/timeout.js";
|
|
6
6
|
import { DEFAULT_MAX_TOKENS } from "../core/constants.js";
|
|
7
|
-
import { validateApiKey, getProviderModel } from "../utils/providerConfig.js";
|
|
8
7
|
import { streamAnalyticsCollector } from "../core/streamAnalytics.js";
|
|
9
8
|
// Constants
|
|
10
9
|
const FALLBACK_OPENAI_COMPATIBLE_MODEL = "gpt-3.5-turbo";
|
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
* This module provides comprehensive error handling, categorization,
|
|
5
5
|
* and user-friendly error messages for SageMaker operations.
|
|
6
6
|
*/
|
|
7
|
-
import { ERROR_MESSAGE_TEMPLATES, ERROR_MESSAGE_PREFIXES, RETRY_DELAYS, RETRYABLE_ERROR_CONDITIONS,
|
|
7
|
+
import { ERROR_MESSAGE_TEMPLATES, ERROR_MESSAGE_PREFIXES, RETRY_DELAYS, RETRYABLE_ERROR_CONDITIONS, ERROR_KEYWORDS, } from "./error-constants.js";
|
|
8
8
|
/**
|
|
9
9
|
* Custom error class for SageMaker-specific errors
|
|
10
10
|
*/
|
|
@@ -8,7 +8,7 @@ import { randomUUID } from "crypto";
|
|
|
8
8
|
import { SageMakerRuntimeClient } from "./client.js";
|
|
9
9
|
import { handleSageMakerError } from "./errors.js";
|
|
10
10
|
import { estimateTokenUsage, createSageMakerStream } from "./streaming.js";
|
|
11
|
-
import {
|
|
11
|
+
import { createAdaptiveSemaphore, } from "./adaptive-semaphore.js";
|
|
12
12
|
import { logger } from "../../utils/logger.js";
|
|
13
13
|
/**
|
|
14
14
|
* Base synthetic streaming delay in milliseconds for simulating real-time response
|
|
@@ -2,10 +2,8 @@ import { NodeSDK } from "@opentelemetry/sdk-node";
|
|
|
2
2
|
import { metrics, trace, } from "@opentelemetry/api";
|
|
3
3
|
import { getNodeAutoInstrumentations } from "@opentelemetry/auto-instrumentations-node";
|
|
4
4
|
import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-http";
|
|
5
|
-
import { OTLPMetricExporter } from "@opentelemetry/exporter-metrics-otlp-http";
|
|
6
5
|
import { Resource } from "@opentelemetry/resources";
|
|
7
6
|
import { ATTR_SERVICE_NAME, ATTR_SERVICE_VERSION, } from "@opentelemetry/semantic-conventions";
|
|
8
|
-
import { PeriodicExportingMetricReader } from "@opentelemetry/sdk-metrics";
|
|
9
7
|
import { logger } from "../utils/logger.js";
|
|
10
8
|
export class TelemetryService {
|
|
11
9
|
static instance;
|
package/dist/types/tools.js
CHANGED
|
@@ -21,7 +21,7 @@ export class ProviderHealthChecker {
|
|
|
21
21
|
}
|
|
22
22
|
const parsed = Number(envValue);
|
|
23
23
|
if (isNaN(parsed) || parsed <= 0 || parsed > 10) {
|
|
24
|
-
|
|
24
|
+
logger.warn(`Invalid PROVIDER_FAILURE_THRESHOLD: ${envValue} (must be between 1 and 10), using default: 3`);
|
|
25
25
|
return 3;
|
|
26
26
|
}
|
|
27
27
|
return parsed;
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@juspay/neurolink",
|
|
3
|
-
"version": "7.
|
|
3
|
+
"version": "7.10.0",
|
|
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 9 major providers: OpenAI, Anthropic, Google AI, AWS Bedrock, Azure, Hugging Face, Ollama, and Mistral AI.",
|
|
5
5
|
"author": {
|
|
6
6
|
"name": "Juspay Technologies",
|
|
@@ -31,7 +31,7 @@
|
|
|
31
31
|
"build:cli": "echo 'Building CLI...' && tsc --project tsconfig.cli.json",
|
|
32
32
|
"cli": "node dist/cli/index.js",
|
|
33
33
|
"preview": "vite preview",
|
|
34
|
-
"prepare": "
|
|
34
|
+
"prepare": "git rev-parse --git-dir > /dev/null 2>&1 && husky install || echo 'Skipping husky in non-git environment'",
|
|
35
35
|
"prepack": "svelte-kit sync && svelte-package && pnpm run build:cli && publint",
|
|
36
36
|
"check": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json",
|
|
37
37
|
"check:watch": "svelte-kit sync && svelte-check --tsconfig ./tsconfig.json --watch",
|
|
@@ -43,6 +43,7 @@
|
|
|
43
43
|
"format": "prettier --write .",
|
|
44
44
|
"changeset": "changeset",
|
|
45
45
|
"changeset:version": "changeset version && git add --all",
|
|
46
|
+
"format:changelog": "node scripts/format-changelog.cjs",
|
|
46
47
|
"// ===== NEUROLINK DEVELOPER EXPERIENCE ENHANCEMENT 2.0 =====": "",
|
|
47
48
|
"// Environment & Setup (pnpm-first)": "",
|
|
48
49
|
"setup": "pnpm install && node tools/automation/environmentManager.js",
|
|
@@ -88,7 +89,18 @@
|
|
|
88
89
|
"// Release & Publishing": "",
|
|
89
90
|
"release": "pnpm run build:complete && pnpm run test:ci && changeset publish",
|
|
90
91
|
"test:semantic-release": "node scripts/test-semantic-release.js",
|
|
91
|
-
"release:dry-run": "npx semantic-release --dry-run"
|
|
92
|
+
"release:dry-run": "npx semantic-release --dry-run",
|
|
93
|
+
"// Build Rule Enforcement Scripts": "",
|
|
94
|
+
"validate": "node scripts/build-validations.cjs",
|
|
95
|
+
"validate:env": "node scripts/env-validation.cjs",
|
|
96
|
+
"validate:security": "node scripts/security-check.cjs",
|
|
97
|
+
"validate:all": "pnpm run validate && pnpm run validate:env && pnpm run validate:security",
|
|
98
|
+
"validate:commit": "node scripts/commit-validation.cjs",
|
|
99
|
+
"quality:metrics": "node scripts/quality-metrics.cjs",
|
|
100
|
+
"quality:report": "pnpm run quality:metrics && echo 'Quality metrics saved to quality-metrics.json'",
|
|
101
|
+
"pre-commit": "lint-staged",
|
|
102
|
+
"pre-push": "pnpm run validate && pnpm run test:run",
|
|
103
|
+
"check:all": "pnpm run lint && pnpm run format --check && pnpm run validate && pnpm run validate:commit"
|
|
92
104
|
},
|
|
93
105
|
"files": [
|
|
94
106
|
"dist",
|
|
@@ -170,6 +182,7 @@
|
|
|
170
182
|
"zod-to-json-schema": "^3.24.5"
|
|
171
183
|
},
|
|
172
184
|
"devDependencies": {
|
|
185
|
+
"@biomejs/biome": "^2.1.4",
|
|
173
186
|
"@changesets/changelog-github": "^0.5.1",
|
|
174
187
|
"@changesets/cli": "^2.26.2",
|
|
175
188
|
"@eslint/js": "^9.0.0",
|
|
@@ -196,6 +209,8 @@
|
|
|
196
209
|
"cors": "^2.8.5",
|
|
197
210
|
"eslint": "^9.0.0",
|
|
198
211
|
"express": "^5.1.0",
|
|
212
|
+
"husky": "^9.1.7",
|
|
213
|
+
"lint-staged": "^16.1.5",
|
|
199
214
|
"playwright": "^1.52.0",
|
|
200
215
|
"prettier": "^3.0.0",
|
|
201
216
|
"publint": "^0.3.2",
|
|
@@ -252,7 +267,13 @@
|
|
|
252
267
|
"esbuild",
|
|
253
268
|
"protobufjs",
|
|
254
269
|
"puppeteer"
|
|
255
|
-
]
|
|
270
|
+
],
|
|
271
|
+
"overrides": {
|
|
272
|
+
"esbuild@<=0.24.2": ">=0.25.0",
|
|
273
|
+
"cookie@<0.7.0": ">=0.7.0",
|
|
274
|
+
"@eslint/plugin-kit@<0.3.4": ">=0.3.4",
|
|
275
|
+
"tmp@<=0.2.3": ">=0.2.4"
|
|
276
|
+
}
|
|
256
277
|
},
|
|
257
278
|
"os": [
|
|
258
279
|
"darwin",
|
|
@@ -261,6 +282,20 @@
|
|
|
261
282
|
],
|
|
262
283
|
"prettier": {
|
|
263
284
|
"tabWidth": 2,
|
|
264
|
-
"useTabs": false
|
|
285
|
+
"useTabs": false,
|
|
286
|
+
"proseWrap": "preserve"
|
|
287
|
+
},
|
|
288
|
+
"lint-staged": {
|
|
289
|
+
"src/**/*.{ts,tsx}": [
|
|
290
|
+
"eslint --fix --max-warnings=50",
|
|
291
|
+
"prettier --write"
|
|
292
|
+
],
|
|
293
|
+
"test/**/*.{ts,tsx}": [
|
|
294
|
+
"eslint --fix --max-warnings=0",
|
|
295
|
+
"prettier --write"
|
|
296
|
+
],
|
|
297
|
+
"*.{json,md}": [
|
|
298
|
+
"prettier --write"
|
|
299
|
+
]
|
|
265
300
|
}
|
|
266
301
|
}
|