@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.
@@ -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")) {
@@ -532,7 +532,7 @@ export class GoogleVertexProvider extends BaseProvider {
532
532
  "gemini-2.5-flash-lite",
533
533
  "gemini-2.0-flash-001",
534
534
  "gemini-1.5-pro",
535
- "gemini-1.5-flash"
535
+ "gemini-1.5-flash",
536
536
  ],
537
537
  claude: [
538
538
  "claude-sonnet-4@20250514",
@@ -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
- console.warn(`Invalid PROVIDER_FAILURE_THRESHOLD: ${envValue} (must be between 1 and 10), using default: 3`);
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, Output } from "ai";
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, getDefaultTimeout, } from "../utils/timeout.js";
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, Output } from "ai";
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, getDefaultTimeout, } from "../utils/timeout.js";
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, Output } from "ai";
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, getDefaultTimeout, } from "../utils/timeout.js";
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, Output } from "ai";
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, getDefaultTimeout, } from "../utils/timeout.js";
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 &&
@@ -532,7 +532,7 @@ export class GoogleVertexProvider extends BaseProvider {
532
532
  "gemini-2.5-flash-lite",
533
533
  "gemini-2.0-flash-001",
534
534
  "gemini-1.5-pro",
535
- "gemini-1.5-flash"
535
+ "gemini-1.5-flash",
536
536
  ],
537
537
  claude: [
538
538
  "claude-sonnet-4@20250514",
@@ -1,10 +1,10 @@
1
- import { openai, createOpenAI } from "@ai-sdk/openai";
2
- import { streamText, Output } from "ai";
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, getDefaultTimeout, } from "../utils/timeout.js";
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";
7
+ import { getProviderModel } from "../utils/providerConfig.js";
8
8
  import { streamAnalyticsCollector } from "../core/streamAnalytics.js";
9
9
  // Configuration helpers
10
10
  const getLiteLLMConfig = () => {
@@ -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 { getDefaultTimeout, TimeoutError } from "../utils/timeout.js";
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)
@@ -1,9 +1,9 @@
1
1
  import { openai } from "@ai-sdk/openai";
2
- import { streamText, Output } from "ai";
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, getDefaultTimeout, } from "../utils/timeout.js";
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, getDefaultTimeout, } from "../utils/timeout.js";
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, AWS_ERROR_MAPPINGS, ERROR_KEYWORDS, } from "./error-constants.js";
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 { AdaptiveSemaphore, createAdaptiveSemaphore, } from "./adaptive-semaphore.js";
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
@@ -4,7 +4,6 @@
4
4
  */
5
5
  import { z } from "zod";
6
6
  import { tool as createAISDKTool } from "ai";
7
- import { zodToJsonSchema } from "zod-to-json-schema";
8
7
  import { logger } from "../utils/logger.js";
9
8
  /**
10
9
  * Configuration constants for tool validation
@@ -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;
@@ -2,7 +2,6 @@
2
2
  * Tool system type definitions for NeuroLink
3
3
  * Replaces 'any' types in tool registration and execution
4
4
  */
5
- import { z } from "zod";
6
5
  /**
7
6
  * Type guard for tool result
8
7
  */
@@ -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
- console.warn(`Invalid PROVIDER_FAILURE_THRESHOLD: ${envValue} (must be between 1 and 10), using default: 3`);
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.9.0",
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": "svelte-kit sync || echo ''",
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
  }