@juspay/neurolink 6.2.0 → 7.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 (182) hide show
  1. package/CHANGELOG.md +33 -16
  2. package/README.md +3 -3
  3. package/dist/agent/{direct-tools.js → directTools.js} +6 -5
  4. package/dist/cli/index.js +6 -6
  5. package/dist/cli/utils/{complete-setup.d.ts → completeSetup.d.ts} +1 -1
  6. package/dist/cli/utils/{complete-setup.js → completeSetup.js} +2 -2
  7. package/dist/config/configManager.js +11 -10
  8. package/dist/{lib/core/base-provider.d.ts → core/baseProvider.d.ts} +1 -1
  9. package/dist/core/{base-provider.js → baseProvider.js} +2 -2
  10. package/dist/core/{dynamic-models.js → dynamicModels.js} +1 -1
  11. package/dist/core/evaluation.js +1 -1
  12. package/dist/core/factory.js +5 -5
  13. package/dist/core/types.d.ts +2 -2
  14. package/dist/{lib/factories/provider-registry.js → factories/providerRegistry.js} +9 -9
  15. package/dist/index.d.ts +4 -4
  16. package/dist/index.js +1 -1
  17. package/dist/lib/agent/{direct-tools.js → directTools.js} +6 -5
  18. package/dist/lib/config/configManager.js +11 -10
  19. package/dist/{core/base-provider.d.ts → lib/core/baseProvider.d.ts} +1 -1
  20. package/dist/lib/core/{base-provider.js → baseProvider.js} +2 -2
  21. package/dist/lib/core/{dynamic-models.js → dynamicModels.js} +1 -1
  22. package/dist/lib/core/evaluation.js +1 -1
  23. package/dist/lib/core/factory.js +3 -3
  24. package/dist/lib/core/types.d.ts +2 -2
  25. package/dist/{factories/provider-registry.js → lib/factories/providerRegistry.js} +9 -9
  26. package/dist/lib/index.d.ts +4 -4
  27. package/dist/lib/index.js +1 -1
  28. package/dist/lib/mcp/factory.d.ts +2 -2
  29. package/dist/lib/mcp/factory.js +2 -2
  30. package/dist/lib/mcp/index.d.ts +2 -2
  31. package/dist/lib/mcp/index.js +1 -1
  32. package/dist/lib/mcp/registry.js +1 -1
  33. package/dist/lib/mcp/servers/agent/{direct-tools-server.js → directToolsServer.js} +1 -1
  34. package/dist/lib/mcp/servers/{ai-providers/ai-analysis-tools.js → aiProviders/aiAnalysisTools.js} +2 -1
  35. package/dist/lib/mcp/servers/{ai-providers/ai-core-server.js → aiProviders/aiCoreServer.js} +1 -1
  36. package/dist/lib/mcp/{tool-registry.js → toolRegistry.js} +1 -1
  37. package/dist/lib/neurolink.d.ts +4 -4
  38. package/dist/lib/neurolink.js +5 -5
  39. package/dist/lib/providers/{amazon-bedrock.d.ts → amazonBedrock.d.ts} +2 -2
  40. package/dist/lib/providers/{amazon-bedrock.js → amazonBedrock.js} +1 -1
  41. package/dist/lib/providers/anthropic.d.ts +2 -2
  42. package/dist/lib/providers/anthropic.js +1 -1
  43. package/dist/{providers/anthropic-baseprovider.d.ts → lib/providers/anthropicBaseProvider.d.ts} +2 -2
  44. package/dist/lib/providers/{anthropic-baseprovider.js → anthropicBaseProvider.js} +1 -1
  45. package/dist/{providers/azure-openai.d.ts → lib/providers/azureOpenai.d.ts} +2 -2
  46. package/dist/{providers/azure-openai.js → lib/providers/azureOpenai.js} +3 -2
  47. package/dist/{providers/google-ai-studio.d.ts → lib/providers/googleAiStudio.d.ts} +2 -2
  48. package/dist/lib/providers/{google-ai-studio.js → googleAiStudio.js} +1 -1
  49. package/dist/{providers/google-vertex.d.ts → lib/providers/googleVertex.d.ts} +2 -2
  50. package/dist/lib/providers/{google-vertex.js → googleVertex.js} +1 -1
  51. package/dist/lib/providers/huggingFace.d.ts +2 -2
  52. package/dist/lib/providers/huggingFace.js +1 -1
  53. package/dist/lib/providers/index.d.ts +4 -4
  54. package/dist/lib/providers/index.js +4 -4
  55. package/dist/lib/providers/mistral.d.ts +2 -2
  56. package/dist/lib/providers/mistral.js +1 -1
  57. package/dist/lib/providers/ollama.d.ts +2 -2
  58. package/dist/lib/providers/ollama.js +1 -1
  59. package/dist/lib/providers/openAI.d.ts +2 -2
  60. package/dist/lib/providers/openAI.js +1 -1
  61. package/dist/{sdk/tool-registration.d.ts → lib/sdk/toolRegistration.d.ts} +1 -1
  62. package/dist/lib/telemetry/index.d.ts +2 -2
  63. package/dist/lib/telemetry/index.js +5 -4
  64. package/dist/lib/utils/logger.d.ts +62 -2
  65. package/dist/lib/utils/logger.js +174 -9
  66. package/dist/lib/utils/providerConfig.js +1 -1
  67. package/dist/lib/utils/{provider-setup-messages.js → providerSetupMessages.js} +1 -1
  68. package/dist/lib/utils/providerUtils.js +1 -1
  69. package/dist/mcp/factory.d.ts +2 -2
  70. package/dist/mcp/factory.js +2 -2
  71. package/dist/mcp/index.d.ts +2 -2
  72. package/dist/mcp/index.js +1 -1
  73. package/dist/mcp/registry.js +1 -1
  74. package/dist/mcp/servers/agent/{direct-tools-server.js → directToolsServer.js} +1 -1
  75. package/dist/mcp/servers/{ai-providers/ai-analysis-tools.js → aiProviders/aiAnalysisTools.js} +2 -1
  76. package/dist/mcp/servers/{ai-providers/ai-core-server.js → aiProviders/aiCoreServer.js} +2 -2
  77. package/dist/mcp/{tool-registry.js → toolRegistry.js} +1 -1
  78. package/dist/neurolink.d.ts +5 -5
  79. package/dist/neurolink.js +5 -5
  80. package/dist/providers/{amazon-bedrock.d.ts → amazonBedrock.d.ts} +2 -2
  81. package/dist/providers/{amazon-bedrock.js → amazonBedrock.js} +1 -1
  82. package/dist/providers/anthropic.d.ts +2 -2
  83. package/dist/providers/anthropic.js +1 -1
  84. package/dist/{lib/providers/anthropic-baseprovider.d.ts → providers/anthropicBaseProvider.d.ts} +2 -2
  85. package/dist/providers/{anthropic-baseprovider.js → anthropicBaseProvider.js} +1 -1
  86. package/dist/{lib/providers/azure-openai.d.ts → providers/azureOpenai.d.ts} +2 -2
  87. package/dist/{lib/providers/azure-openai.js → providers/azureOpenai.js} +3 -2
  88. package/dist/{lib/providers/google-ai-studio.d.ts → providers/googleAiStudio.d.ts} +2 -2
  89. package/dist/providers/{google-ai-studio.js → googleAiStudio.js} +2 -2
  90. package/dist/{lib/providers/google-vertex.d.ts → providers/googleVertex.d.ts} +2 -2
  91. package/dist/providers/{google-vertex.js → googleVertex.js} +1 -1
  92. package/dist/providers/huggingFace.d.ts +2 -2
  93. package/dist/providers/huggingFace.js +1 -1
  94. package/dist/providers/index.d.ts +4 -4
  95. package/dist/providers/index.js +4 -4
  96. package/dist/providers/mistral.d.ts +2 -2
  97. package/dist/providers/mistral.js +1 -1
  98. package/dist/providers/ollama.d.ts +2 -2
  99. package/dist/providers/ollama.js +1 -1
  100. package/dist/providers/openAI.d.ts +2 -2
  101. package/dist/providers/openAI.js +1 -1
  102. package/dist/{lib/sdk/tool-registration.d.ts → sdk/toolRegistration.d.ts} +1 -1
  103. package/dist/telemetry/index.d.ts +2 -2
  104. package/dist/telemetry/index.js +5 -4
  105. package/dist/utils/logger.d.ts +62 -2
  106. package/dist/utils/logger.js +174 -9
  107. package/dist/utils/providerConfig.js +1 -1
  108. package/dist/utils/{provider-setup-messages.js → providerSetupMessages.js} +1 -1
  109. package/dist/utils/providerUtils.js +1 -1
  110. package/package.json +23 -22
  111. package/dist/lib/mcp/logging.d.ts +0 -38
  112. package/dist/lib/mcp/logging.js +0 -100
  113. package/dist/mcp/logging.d.ts +0 -38
  114. package/dist/mcp/logging.js +0 -100
  115. /package/dist/agent/{direct-tools.d.ts → directTools.d.ts} +0 -0
  116. /package/dist/cli/factories/{command-factory.d.ts → commandFactory.d.ts} +0 -0
  117. /package/dist/cli/factories/{command-factory.js → commandFactory.js} +0 -0
  118. /package/dist/cli/utils/{env-manager.d.ts → envManager.d.ts} +0 -0
  119. /package/dist/cli/utils/{env-manager.js → envManager.js} +0 -0
  120. /package/dist/cli/utils/{interactive-setup.d.ts → interactiveSetup.d.ts} +0 -0
  121. /package/dist/cli/utils/{interactive-setup.js → interactiveSetup.js} +0 -0
  122. /package/dist/core/{dynamic-models.d.ts → dynamicModels.d.ts} +0 -0
  123. /package/dist/core/{evaluation-providers.d.ts → evaluationProviders.d.ts} +0 -0
  124. /package/dist/core/{evaluation-providers.js → evaluationProviders.js} +0 -0
  125. /package/dist/core/{service-registry.d.ts → serviceRegistry.d.ts} +0 -0
  126. /package/dist/core/{service-registry.js → serviceRegistry.js} +0 -0
  127. /package/dist/factories/{provider-factory.d.ts → providerFactory.d.ts} +0 -0
  128. /package/dist/factories/{provider-factory.js → providerFactory.js} +0 -0
  129. /package/dist/factories/{provider-registry.d.ts → providerRegistry.d.ts} +0 -0
  130. /package/dist/lib/agent/{direct-tools.d.ts → directTools.d.ts} +0 -0
  131. /package/dist/lib/core/{dynamic-models.d.ts → dynamicModels.d.ts} +0 -0
  132. /package/dist/lib/core/{evaluation-providers.d.ts → evaluationProviders.d.ts} +0 -0
  133. /package/dist/lib/core/{evaluation-providers.js → evaluationProviders.js} +0 -0
  134. /package/dist/lib/core/{service-registry.d.ts → serviceRegistry.d.ts} +0 -0
  135. /package/dist/lib/core/{service-registry.js → serviceRegistry.js} +0 -0
  136. /package/dist/lib/factories/{provider-factory.d.ts → providerFactory.d.ts} +0 -0
  137. /package/dist/lib/factories/{provider-factory.js → providerFactory.js} +0 -0
  138. /package/dist/lib/factories/{provider-registry.d.ts → providerRegistry.d.ts} +0 -0
  139. /package/dist/lib/mcp/servers/agent/{direct-tools-server.d.ts → directToolsServer.d.ts} +0 -0
  140. /package/dist/lib/mcp/servers/{ai-providers/ai-analysis-tools.d.ts → aiProviders/aiAnalysisTools.d.ts} +0 -0
  141. /package/dist/lib/mcp/servers/{ai-providers/ai-core-server.d.ts → aiProviders/aiCoreServer.d.ts} +0 -0
  142. /package/dist/lib/mcp/servers/{ai-providers/ai-workflow-tools.d.ts → aiProviders/aiWorkflowTools.d.ts} +0 -0
  143. /package/dist/lib/mcp/servers/{ai-providers/ai-workflow-tools.js → aiProviders/aiWorkflowTools.js} +0 -0
  144. /package/dist/lib/mcp/servers/utilities/{utility-server.d.ts → utilityServer.d.ts} +0 -0
  145. /package/dist/lib/mcp/servers/utilities/{utility-server.js → utilityServer.js} +0 -0
  146. /package/dist/lib/mcp/{tool-registry.d.ts → toolRegistry.d.ts} +0 -0
  147. /package/dist/lib/proxy/{proxy-fetch.d.ts → proxyFetch.d.ts} +0 -0
  148. /package/dist/lib/proxy/{proxy-fetch.js → proxyFetch.js} +0 -0
  149. /package/dist/lib/sdk/{tool-registration.js → toolRegistration.js} +0 -0
  150. /package/dist/lib/telemetry/{telemetry-service.d.ts → telemetryService.d.ts} +0 -0
  151. /package/dist/lib/telemetry/{telemetry-service.js → telemetryService.js} +0 -0
  152. /package/dist/lib/types/{generate-types.d.ts → generateTypes.d.ts} +0 -0
  153. /package/dist/lib/types/{generate-types.js → generateTypes.js} +0 -0
  154. /package/dist/lib/types/{mcp-types.d.ts → mcpTypes.d.ts} +0 -0
  155. /package/dist/lib/types/{mcp-types.js → mcpTypes.js} +0 -0
  156. /package/dist/lib/types/{stream-types.d.ts → streamTypes.d.ts} +0 -0
  157. /package/dist/lib/types/{stream-types.js → streamTypes.js} +0 -0
  158. /package/dist/lib/types/{universal-provider-options.d.ts → universalProviderOptions.d.ts} +0 -0
  159. /package/dist/lib/types/{universal-provider-options.js → universalProviderOptions.js} +0 -0
  160. /package/dist/lib/utils/{provider-setup-messages.d.ts → providerSetupMessages.d.ts} +0 -0
  161. /package/dist/mcp/servers/agent/{direct-tools-server.d.ts → directToolsServer.d.ts} +0 -0
  162. /package/dist/mcp/servers/{ai-providers/ai-analysis-tools.d.ts → aiProviders/aiAnalysisTools.d.ts} +0 -0
  163. /package/dist/mcp/servers/{ai-providers/ai-core-server.d.ts → aiProviders/aiCoreServer.d.ts} +0 -0
  164. /package/dist/mcp/servers/{ai-providers/ai-workflow-tools.d.ts → aiProviders/aiWorkflowTools.d.ts} +0 -0
  165. /package/dist/mcp/servers/{ai-providers/ai-workflow-tools.js → aiProviders/aiWorkflowTools.js} +0 -0
  166. /package/dist/mcp/servers/utilities/{utility-server.d.ts → utilityServer.d.ts} +0 -0
  167. /package/dist/mcp/servers/utilities/{utility-server.js → utilityServer.js} +0 -0
  168. /package/dist/mcp/{tool-registry.d.ts → toolRegistry.d.ts} +0 -0
  169. /package/dist/proxy/{proxy-fetch.d.ts → proxyFetch.d.ts} +0 -0
  170. /package/dist/proxy/{proxy-fetch.js → proxyFetch.js} +0 -0
  171. /package/dist/sdk/{tool-registration.js → toolRegistration.js} +0 -0
  172. /package/dist/telemetry/{telemetry-service.d.ts → telemetryService.d.ts} +0 -0
  173. /package/dist/telemetry/{telemetry-service.js → telemetryService.js} +0 -0
  174. /package/dist/types/{generate-types.d.ts → generateTypes.d.ts} +0 -0
  175. /package/dist/types/{generate-types.js → generateTypes.js} +0 -0
  176. /package/dist/types/{mcp-types.d.ts → mcpTypes.d.ts} +0 -0
  177. /package/dist/types/{mcp-types.js → mcpTypes.js} +0 -0
  178. /package/dist/types/{stream-types.d.ts → streamTypes.d.ts} +0 -0
  179. /package/dist/types/{stream-types.js → streamTypes.js} +0 -0
  180. /package/dist/types/{universal-provider-options.d.ts → universalProviderOptions.d.ts} +0 -0
  181. /package/dist/types/{universal-provider-options.js → universalProviderOptions.js} +0 -0
  182. /package/dist/utils/{provider-setup-messages.d.ts → providerSetupMessages.d.ts} +0 -0
@@ -1,15 +1,16 @@
1
1
  // Optional Telemetry Infrastructure (Phase 2)
2
- export { TelemetryService } from "./telemetry-service.js";
2
+ export { TelemetryService } from "./telemetryService.js";
3
+ import { logger } from "../utils/logger.js";
3
4
  /**
4
5
  * Initialize telemetry for NeuroLink
5
6
  * OPTIONAL - Only works when NEUROLINK_TELEMETRY_ENABLED=true
6
7
  */
7
8
  export async function initializeTelemetry() {
8
- const { TelemetryService } = await import("./telemetry-service.js");
9
+ const { TelemetryService } = await import("./telemetryService.js");
9
10
  const telemetry = TelemetryService.getInstance();
10
11
  if (telemetry.isEnabled()) {
11
12
  await telemetry.initialize();
12
- console.log("[NeuroLink] Telemetry initialized");
13
+ logger.info("[NeuroLink] Telemetry initialized");
13
14
  }
14
15
  return telemetry;
15
16
  }
@@ -17,6 +18,6 @@ export async function initializeTelemetry() {
17
18
  * Get telemetry status
18
19
  */
19
20
  export async function getTelemetryStatus() {
20
- const { TelemetryService } = await import("./telemetry-service.js");
21
+ const { TelemetryService } = await import("./telemetryService.js");
21
22
  return TelemetryService.getInstance().getStatus();
22
23
  }
@@ -1,12 +1,72 @@
1
1
  /**
2
- * NeuroLink Logger Utility
2
+ * NeuroLink Unified Logger Utility
3
3
  *
4
- * Provides conditional logging based on NEUROLINK_DEBUG environment variable
4
+ * Centralized logging for the entire NeuroLink ecosystem
5
+ * Supports both CLI --debug flag and NEUROLINK_DEBUG environment variable
6
+ * Migrated from MCP logging with enhanced features
5
7
  */
8
+ export type LogLevel = "debug" | "info" | "warn" | "error";
9
+ interface LogEntry {
10
+ level: LogLevel;
11
+ message: string;
12
+ timestamp: Date;
13
+ data?: unknown;
14
+ }
15
+ declare class NeuroLinkLogger {
16
+ private logLevel;
17
+ private logs;
18
+ private maxLogs;
19
+ private isDebugMode;
20
+ constructor();
21
+ setLogLevel(level: LogLevel): void;
22
+ shouldLog(level: LogLevel): boolean;
23
+ private getLogPrefix;
24
+ /**
25
+ * Outputs a log entry to the console based on the log level.
26
+ *
27
+ * @param level - The log level (debug, info, warn, error).
28
+ * @param prefix - The formatted log prefix.
29
+ * @param message - The log message.
30
+ * @param data - Optional additional data to log.
31
+ */
32
+ private outputToConsole;
33
+ private log;
34
+ debug(message: string, data?: unknown): void;
35
+ info(message: string, data?: unknown): void;
36
+ warn(message: string, data?: unknown): void;
37
+ error(message: string, data?: unknown): void;
38
+ getLogs(level?: LogLevel): LogEntry[];
39
+ clearLogs(): void;
40
+ /**
41
+ * Logs messages unconditionally using `console.log`.
42
+ *
43
+ * This method is part of a legacy simple logger interface for backward compatibility.
44
+ * It bypasses the structured logging mechanism and should only be used when
45
+ * unstructured, unconditional logging is required.
46
+ *
47
+ * @param args - The arguments to log. These are passed directly to `console.log`.
48
+ */
49
+ always(...args: unknown[]): void;
50
+ }
6
51
  export declare const logger: {
7
52
  debug: (...args: unknown[]) => void;
8
53
  info: (...args: unknown[]) => void;
9
54
  warn: (...args: unknown[]) => void;
10
55
  error: (...args: unknown[]) => void;
11
56
  always: (...args: unknown[]) => void;
57
+ setLogLevel: (level: LogLevel) => void;
58
+ getLogs: (level?: LogLevel) => LogEntry[];
59
+ clearLogs: () => void;
12
60
  };
61
+ export declare const mcpLogger: NeuroLinkLogger;
62
+ export declare const autoDiscoveryLogger: NeuroLinkLogger;
63
+ export declare const registryLogger: NeuroLinkLogger;
64
+ export declare const unifiedRegistryLogger: NeuroLinkLogger;
65
+ export declare function setGlobalMCPLogLevel(level: LogLevel): void;
66
+ export declare const LogLevels: {
67
+ readonly debug: "debug";
68
+ readonly info: "info";
69
+ readonly warn: "warn";
70
+ readonly error: "error";
71
+ };
72
+ export type { LogEntry };
@@ -1,25 +1,190 @@
1
1
  /**
2
- * NeuroLink Logger Utility
2
+ * NeuroLink Unified Logger Utility
3
3
  *
4
- * Provides conditional logging based on NEUROLINK_DEBUG environment variable
4
+ * Centralized logging for the entire NeuroLink ecosystem
5
+ * Supports both CLI --debug flag and NEUROLINK_DEBUG environment variable
6
+ * Migrated from MCP logging with enhanced features
5
7
  */
8
+ // Pre-computed uppercase log levels for performance optimization
9
+ const UPPERCASE_LOG_LEVELS = {
10
+ debug: "DEBUG",
11
+ info: "INFO",
12
+ warn: "WARN",
13
+ error: "ERROR",
14
+ };
15
+ class NeuroLinkLogger {
16
+ logLevel = "info";
17
+ logs = [];
18
+ maxLogs = 1000;
19
+ isDebugMode;
20
+ constructor() {
21
+ // Cache debug mode check to avoid repeated array searches
22
+ this.isDebugMode =
23
+ process.argv.includes("--debug") ||
24
+ process.env.NEUROLINK_DEBUG === "true";
25
+ // Check NEUROLINK_LOG_LEVEL for consistency with the unified NeuroLink logger
26
+ let envLevel = process.env.NEUROLINK_LOG_LEVEL?.toLowerCase();
27
+ // Fallback to MCP_LOG_LEVEL for backward compatibility (if needed)
28
+ if (!envLevel) {
29
+ envLevel = process.env.MCP_LOG_LEVEL?.toLowerCase();
30
+ }
31
+ if (envLevel && ["debug", "info", "warn", "error"].includes(envLevel)) {
32
+ this.logLevel = envLevel;
33
+ }
34
+ }
35
+ setLogLevel(level) {
36
+ this.logLevel = level;
37
+ }
38
+ shouldLog(level) {
39
+ // Hide all logs except errors unless debugging
40
+ if (!this.isDebugMode && level !== "error") {
41
+ return false;
42
+ }
43
+ const levels = ["debug", "info", "warn", "error"];
44
+ return levels.indexOf(level) >= levels.indexOf(this.logLevel);
45
+ }
46
+ getLogPrefix(timestamp, level) {
47
+ return `[${timestamp}] [NEUROLINK:${UPPERCASE_LOG_LEVELS[level]}]`;
48
+ }
49
+ /**
50
+ * Outputs a log entry to the console based on the log level.
51
+ *
52
+ * @param level - The log level (debug, info, warn, error).
53
+ * @param prefix - The formatted log prefix.
54
+ * @param message - The log message.
55
+ * @param data - Optional additional data to log.
56
+ */
57
+ outputToConsole(level, prefix, message, data) {
58
+ const logMethod = {
59
+ debug: console.debug,
60
+ info: console.info,
61
+ warn: console.warn,
62
+ error: console.error,
63
+ }[level];
64
+ if (data !== undefined && data !== null) {
65
+ logMethod(prefix, message, data);
66
+ }
67
+ else {
68
+ logMethod(prefix, message);
69
+ }
70
+ }
71
+ log(level, message, data) {
72
+ if (!this.shouldLog(level)) {
73
+ return;
74
+ }
75
+ const entry = {
76
+ level,
77
+ message,
78
+ timestamp: new Date(),
79
+ data,
80
+ };
81
+ // Store log entry
82
+ this.logs.push(entry);
83
+ // Trim old logs
84
+ if (this.logs.length > this.maxLogs) {
85
+ this.logs = this.logs.slice(-this.maxLogs);
86
+ }
87
+ // Console output
88
+ const timestamp = entry.timestamp.toISOString();
89
+ const prefix = this.getLogPrefix(timestamp, level);
90
+ this.outputToConsole(level, prefix, message, data);
91
+ }
92
+ debug(message, data) {
93
+ this.log("debug", message, data);
94
+ }
95
+ info(message, data) {
96
+ this.log("info", message, data);
97
+ }
98
+ warn(message, data) {
99
+ this.log("warn", message, data);
100
+ }
101
+ error(message, data) {
102
+ this.log("error", message, data);
103
+ }
104
+ getLogs(level) {
105
+ if (level) {
106
+ return this.logs.filter((log) => log.level === level);
107
+ }
108
+ return [...this.logs];
109
+ }
110
+ clearLogs() {
111
+ this.logs = [];
112
+ }
113
+ /**
114
+ * Logs messages unconditionally using `console.log`.
115
+ *
116
+ * This method is part of a legacy simple logger interface for backward compatibility.
117
+ * It bypasses the structured logging mechanism and should only be used when
118
+ * unstructured, unconditional logging is required.
119
+ *
120
+ * @param args - The arguments to log. These are passed directly to `console.log`.
121
+ */
122
+ always(...args) {
123
+ console.log(...args);
124
+ }
125
+ }
126
+ // Export singleton instance
127
+ const neuroLinkLogger = new NeuroLinkLogger();
128
+ // Helper function to process arguments with minimal overhead
129
+ function processLoggerArgs(args, logMethod) {
130
+ if (args.length === 0) {
131
+ return;
132
+ }
133
+ // Serialize the first argument robustly to handle complex objects
134
+ const message = (() => {
135
+ try {
136
+ return typeof args[0] === "string" ? args[0] : JSON.stringify(args[0]);
137
+ }
138
+ catch {
139
+ return "[Unserializable Object]";
140
+ }
141
+ })();
142
+ const data = args.length === 2 ? args[1] : args.length > 2 ? args.slice(1) : undefined;
143
+ logMethod(message, data);
144
+ }
145
+ // Main unified logger export
6
146
  export const logger = {
7
147
  debug: (...args) => {
8
- if (process.env.NEUROLINK_DEBUG === "true") {
9
- console.log(...args);
148
+ if (neuroLinkLogger.shouldLog("debug")) {
149
+ processLoggerArgs(args, (message, data) => neuroLinkLogger.debug(message, data));
10
150
  }
11
151
  },
12
152
  info: (...args) => {
13
- // Completely disabled for clean CLI demo output
153
+ if (neuroLinkLogger.shouldLog("info")) {
154
+ processLoggerArgs(args, (message, data) => neuroLinkLogger.info(message, data));
155
+ }
14
156
  },
15
157
  warn: (...args) => {
16
- // Completely disabled for clean CLI demo output
158
+ if (neuroLinkLogger.shouldLog("warn")) {
159
+ processLoggerArgs(args, (message, data) => neuroLinkLogger.warn(message, data));
160
+ }
17
161
  },
18
162
  error: (...args) => {
19
- // Always show errors regardless of debug mode
20
- console.error(...args);
163
+ if (neuroLinkLogger.shouldLog("error")) {
164
+ processLoggerArgs(args, (message, data) => neuroLinkLogger.error(message, data));
165
+ }
21
166
  },
22
167
  always: (...args) => {
23
- console.log(...args);
168
+ neuroLinkLogger.always(...args);
24
169
  },
170
+ // Expose structured logging methods
171
+ setLogLevel: (level) => neuroLinkLogger.setLogLevel(level),
172
+ getLogs: (level) => neuroLinkLogger.getLogs(level),
173
+ clearLogs: () => neuroLinkLogger.clearLogs(),
174
+ };
175
+ // MCP compatibility exports - all use the same unified logger
176
+ export const mcpLogger = neuroLinkLogger;
177
+ export const autoDiscoveryLogger = neuroLinkLogger;
178
+ export const registryLogger = neuroLinkLogger;
179
+ export const unifiedRegistryLogger = neuroLinkLogger;
180
+ // Global log level setter
181
+ export function setGlobalMCPLogLevel(level) {
182
+ neuroLinkLogger.setLogLevel(level);
183
+ }
184
+ // Export LogLevel enum for runtime use
185
+ export const LogLevels = {
186
+ debug: "debug",
187
+ info: "info",
188
+ warn: "warn",
189
+ error: "error",
25
190
  };
@@ -15,7 +15,7 @@ const API_KEY_FORMATS = {
15
15
  mistral: /^[A-Za-z0-9]{32}$/,
16
16
  azure: /^[A-Za-z0-9]{32,}$/,
17
17
  aws: /^[A-Z0-9]{20}$/, // Access Key ID format
18
- "google-vertex": /^[A-Za-z0-9\-_]{1,}$/, // Project ID format
18
+ googleVertex: /^[A-Za-z0-9\-_]{1,}$/, // Project ID format
19
19
  };
20
20
  /**
21
21
  * Validates API key format for a specific provider
@@ -57,7 +57,7 @@ export function getProviderSetupMessage(provider, missingVars) {
57
57
  azure: {
58
58
  guide: "Set up Azure OpenAI resource and create deployment",
59
59
  envVars: [
60
- 'AZURE_OPENAI_API_KEY="your-azure-openai-key"',
60
+ 'AZURE_OPENAI_API_KEY="your-azureOpenai-key"',
61
61
  'AZURE_OPENAI_ENDPOINT="https://your-resource.openai.azure.com/"',
62
62
  'AZURE_OPENAI_DEPLOYMENT_ID="your-deployment-name"',
63
63
  "# Optional:",
@@ -116,7 +116,7 @@ export function hasProviderEnvVars(provider) {
116
116
  case "claude":
117
117
  return !!process.env.ANTHROPIC_API_KEY;
118
118
  case "azure":
119
- case "azure-openai":
119
+ case "azureOpenai":
120
120
  return !!process.env.AZURE_OPENAI_API_KEY;
121
121
  case "google-ai":
122
122
  case "google-studio":
@@ -8,7 +8,7 @@ import type { ExecutionContext } from "./contracts/mcpContract.js";
8
8
  /**
9
9
  * MCP Server Categories for organization and discovery
10
10
  */
11
- export type MCPServerCategory = "ai-providers" | "frameworks" | "development" | "business" | "content" | "data" | "integrations" | "automation" | "analysis" | "custom";
11
+ export type MCPServerCategory = "aiProviders" | "frameworks" | "development" | "business" | "content" | "data" | "integrations" | "automation" | "analysis" | "custom";
12
12
  /**
13
13
  * Tool execution context - Rich context passed to every tool execution
14
14
  * Following Lighthouse's pattern for rich tool context
@@ -130,7 +130,7 @@ export interface MCPServerConfig {
130
130
  * id: 'neurolink-ai-core',
131
131
  * title: 'NeuroLink AI Core',
132
132
  * description: 'Core AI provider tools',
133
- * category: 'ai-providers'
133
+ * category: 'aiProviders'
134
134
  * });
135
135
  *
136
136
  * aiCoreServer.registerTool({
@@ -14,7 +14,7 @@ const ServerConfigSchema = z.object({
14
14
  version: z.string().optional(),
15
15
  category: z
16
16
  .enum([
17
- "ai-providers",
17
+ "aiProviders",
18
18
  "frameworks",
19
19
  "development",
20
20
  "business",
@@ -46,7 +46,7 @@ const ServerConfigSchema = z.object({
46
46
  * id: 'neurolink-ai-core',
47
47
  * title: 'NeuroLink AI Core',
48
48
  * description: 'Core AI provider tools',
49
- * category: 'ai-providers'
49
+ * category: 'aiProviders'
50
50
  * });
51
51
  *
52
52
  * aiCoreServer.registerTool({
@@ -4,8 +4,8 @@
4
4
  * Implementation based on research blueprint
5
5
  */
6
6
  export type { McpMetadata, ExecutionContext, DiscoveredMcp, ToolInfo, ToolExecutionResult, } from "./contracts/mcpContract.js";
7
- export { mcpLogger } from "./logging.js";
8
- export type { LogLevel } from "./logging.js";
7
+ export { mcpLogger } from "../utils/logger.js";
8
+ export type { LogLevel } from "../utils/logger.js";
9
9
  import type { McpMetadata } from "./contracts/mcpContract.js";
10
10
  /**
11
11
  * Initialize the MCP ecosystem - simplified
package/dist/mcp/index.js CHANGED
@@ -4,7 +4,7 @@
4
4
  * Implementation based on research blueprint
5
5
  */
6
6
  // Core functionality exports
7
- export { mcpLogger } from "./logging.js";
7
+ export { mcpLogger } from "../utils/logger.js";
8
8
  /**
9
9
  * Initialize the MCP ecosystem - simplified
10
10
  */
@@ -1,7 +1,7 @@
1
1
  /**
2
2
  * MCP Registry - Industry Standard Interface with camelCase
3
3
  */
4
- import { registryLogger } from "./logging.js";
4
+ import { registryLogger } from "../utils/logger.js";
5
5
  /**
6
6
  * Simple MCP registry for plugin management
7
7
  * Maintains backward compatibility with existing code
@@ -4,7 +4,7 @@
4
4
  */
5
5
  import { z } from "zod";
6
6
  import { createMCPServer } from "../../factory.js";
7
- import { directAgentTools } from "../../../agent/direct-tools.js";
7
+ import { directAgentTools } from "../../../agent/directTools.js";
8
8
  import { logger } from "../../../utils/logger.js";
9
9
  /**
10
10
  * Direct Tools Server - Agent direct tools for immediate use
@@ -6,6 +6,7 @@
6
6
  import { z } from "zod";
7
7
  import { AIProviderFactory } from "../../../core/factory.js";
8
8
  import { getBestProvider, getAvailableProviders, } from "../../../utils/providerUtils.js";
9
+ import { logger } from "../../../utils/logger.js";
9
10
  /**
10
11
  * Input Schemas for AI Analysis Tools
11
12
  */
@@ -89,7 +90,7 @@ const analyzeAIUsageTool = {
89
90
  const typedParams = params;
90
91
  const startTime = Date.now();
91
92
  try {
92
- console.log(`[AI-Analysis] Starting real AI-powered usage analysis for timeRange: ${typedParams.timeRange}`);
93
+ logger.debug(`[AI-Analysis] Starting real AI-powered usage analysis for timeRange: ${typedParams.timeRange}`);
93
94
  const providerName = await getBestProvider();
94
95
  const provider = await AIProviderFactory.createProvider(providerName);
95
96
  if (!provider) {
@@ -5,7 +5,7 @@
5
5
  */
6
6
  import { z } from "zod";
7
7
  import { createMCPServer } from "../../factory.js";
8
- import { ServiceRegistry } from "../../../core/service-registry.js";
8
+ import { ServiceRegistry } from "../../../core/serviceRegistry.js";
9
9
  import { getBestProvider, getAvailableProviders, } from "../../../utils/providerUtils.js";
10
10
  import { logger } from "../../../utils/logger.js";
11
11
  /**
@@ -16,7 +16,7 @@ export const aiCoreServer = createMCPServer({
16
16
  id: "neurolink-ai-core",
17
17
  title: "NeuroLink AI Core",
18
18
  description: "Core AI provider management with automatic fallback and status monitoring",
19
- category: "ai-providers",
19
+ category: "aiProviders",
20
20
  version: "1.2.0",
21
21
  capabilities: [
22
22
  "provider-selection",
@@ -3,7 +3,7 @@
3
3
  * Updated to match industry standard camelCase interfaces
4
4
  */
5
5
  import { MCPRegistry } from "./registry.js";
6
- import { registryLogger } from "./logging.js";
6
+ import { registryLogger } from "../utils/logger.js";
7
7
  import { randomUUID } from "crypto";
8
8
  export class MCPToolRegistry extends MCPRegistry {
9
9
  tools = new Map();
@@ -6,10 +6,10 @@
6
6
  * Uses real MCP infrastructure for tool discovery and execution.
7
7
  */
8
8
  import type { TextGenerationOptions, TextGenerationResult } from "./core/types.js";
9
- import type { GenerateOptions, GenerateResult } from "./types/generate-types.js";
10
- import type { StreamOptions, StreamResult } from "./types/stream-types.js";
11
- import type { SimpleTool } from "./sdk/tool-registration.js";
12
- import type { InMemoryMCPServerConfig } from "./types/mcp-types.js";
9
+ import type { GenerateOptions, GenerateResult } from "./types/generateTypes.js";
10
+ import type { StreamOptions, StreamResult } from "./types/streamTypes.js";
11
+ import type { SimpleTool } from "./sdk/toolRegistration.js";
12
+ import type { InMemoryMCPServerConfig } from "./types/mcpTypes.js";
13
13
  export interface ProviderStatus {
14
14
  provider: string;
15
15
  status: "working" | "failed" | "not-configured";
@@ -138,7 +138,7 @@ export declare class NeuroLink {
138
138
  * Get all available tools including custom and in-memory ones
139
139
  * @returns Array of available tools with metadata
140
140
  */
141
- getAllAvailableTools(): Promise<import("./mcp/tool-registry.js").ToolInfo[]>;
141
+ getAllAvailableTools(): Promise<import("./mcp/toolRegistry.js").ToolInfo[]>;
142
142
  /**
143
143
  * Get comprehensive status of all AI providers
144
144
  * Primary method for provider health checking and diagnostics
package/dist/neurolink.js CHANGED
@@ -14,12 +14,12 @@ catch (error) {
14
14
  // Environment variables should be set externally in production
15
15
  }
16
16
  import { AIProviderFactory } from "./core/factory.js";
17
- import { mcpLogger } from "./mcp/logging.js";
18
- import { toolRegistry } from "./mcp/tool-registry.js";
17
+ import { mcpLogger } from "./utils/logger.js";
18
+ import { toolRegistry } from "./mcp/toolRegistry.js";
19
19
  import { logger } from "./utils/logger.js";
20
20
  import { getBestProvider } from "./utils/providerUtils.js";
21
- import { ProviderRegistry } from "./factories/provider-registry.js";
22
- import { validateTool, createMCPServerFromTools, } from "./sdk/tool-registration.js";
21
+ import { ProviderRegistry } from "./factories/providerRegistry.js";
22
+ import { validateTool, createMCPServerFromTools, } from "./sdk/toolRegistration.js";
23
23
  // Core types imported from core/types.js
24
24
  export class NeuroLink {
25
25
  mcpInitialized = false;
@@ -667,7 +667,7 @@ export class NeuroLink {
667
667
  "openai",
668
668
  "bedrock",
669
669
  "vertex",
670
- "google-vertex",
670
+ "googleVertex",
671
671
  "anthropic",
672
672
  "azure",
673
673
  "google-ai",
@@ -1,8 +1,8 @@
1
1
  import type { ZodType, ZodTypeDef } from "zod";
2
2
  import { type Schema, type LanguageModelV1 } from "ai";
3
3
  import type { AIProviderName } from "../core/types.js";
4
- import type { StreamOptions, StreamResult } from "../types/stream-types.js";
5
- import { BaseProvider } from "../core/base-provider.js";
4
+ import type { StreamOptions, StreamResult } from "../types/streamTypes.js";
5
+ import { BaseProvider } from "../core/baseProvider.js";
6
6
  /**
7
7
  * Amazon Bedrock Provider v2 - BaseProvider Implementation
8
8
  *
@@ -1,6 +1,6 @@
1
1
  import { createAmazonBedrock } from "@ai-sdk/amazon-bedrock";
2
2
  import { streamText, Output } from "ai";
3
- import { BaseProvider } from "../core/base-provider.js";
3
+ import { BaseProvider } from "../core/baseProvider.js";
4
4
  import { logger } from "../utils/logger.js";
5
5
  import { createTimeoutController, TimeoutError, getDefaultTimeout, } from "../utils/timeout.js";
6
6
  import { DEFAULT_MAX_TOKENS } from "../core/constants.js";
@@ -1,8 +1,8 @@
1
1
  import type { ZodType, ZodTypeDef } from "zod";
2
2
  import { type Schema, type LanguageModelV1 } from "ai";
3
3
  import type { AIProviderName } from "../core/types.js";
4
- import type { StreamOptions, StreamResult } from "../types/stream-types.js";
5
- import { BaseProvider } from "../core/base-provider.js";
4
+ import type { StreamOptions, StreamResult } from "../types/streamTypes.js";
5
+ import { BaseProvider } from "../core/baseProvider.js";
6
6
  /**
7
7
  * Anthropic Provider v2 - BaseProvider Implementation
8
8
  * Fixed syntax and enhanced with proper error handling
@@ -1,6 +1,6 @@
1
1
  import { anthropic } from "@ai-sdk/anthropic";
2
2
  import { streamText, Output } from "ai";
3
- import { BaseProvider } from "../core/base-provider.js";
3
+ import { BaseProvider } from "../core/baseProvider.js";
4
4
  import { logger } from "../utils/logger.js";
5
5
  import { createTimeoutController, TimeoutError, getDefaultTimeout, } from "../utils/timeout.js";
6
6
  import { DEFAULT_MAX_TOKENS } from "../core/constants.js";
@@ -1,8 +1,8 @@
1
1
  import type { ZodType, ZodTypeDef } from "zod";
2
2
  import { type Schema, type LanguageModelV1 } from "ai";
3
3
  import type { AIProviderName } from "../core/types.js";
4
- import type { StreamOptions, StreamResult } from "../types/stream-types.js";
5
- import { BaseProvider } from "../core/base-provider.js";
4
+ import type { StreamOptions, StreamResult } from "../types/streamTypes.js";
5
+ import { BaseProvider } from "../core/baseProvider.js";
6
6
  /**
7
7
  * Anthropic provider implementation using BaseProvider pattern
8
8
  * Migrated from direct API calls to Vercel AI SDK (@ai-sdk/anthropic)
@@ -1,6 +1,6 @@
1
1
  import { createAnthropic } from "@ai-sdk/anthropic";
2
2
  import { streamText, Output } from "ai";
3
- import { BaseProvider } from "../core/base-provider.js";
3
+ import { BaseProvider } from "../core/baseProvider.js";
4
4
  import { logger } from "../utils/logger.js";
5
5
  import { createTimeoutController, TimeoutError, getDefaultTimeout, } from "../utils/timeout.js";
6
6
  import { DEFAULT_MAX_TOKENS } from "../core/constants.js";
@@ -1,7 +1,7 @@
1
1
  import { type LanguageModelV1 } from "ai";
2
- import { BaseProvider } from "../core/base-provider.js";
2
+ import { BaseProvider } from "../core/baseProvider.js";
3
3
  import type { AIProviderName } from "../core/types.js";
4
- import type { StreamOptions, StreamResult } from "../types/stream-types.js";
4
+ import type { StreamOptions, StreamResult } from "../types/streamTypes.js";
5
5
  export declare class AzureOpenAIProvider extends BaseProvider {
6
6
  private apiKey;
7
7
  private resourceName;
@@ -1,7 +1,8 @@
1
1
  import { createAzure } from "@ai-sdk/azure";
2
2
  import { streamText } from "ai";
3
- import { BaseProvider } from "../core/base-provider.js";
3
+ import { BaseProvider } from "../core/baseProvider.js";
4
4
  import { validateApiKey, createAzureAPIKeyConfig, createAzureEndpointConfig, } from "../utils/providerConfig.js";
5
+ import { logger } from "../utils/logger.js";
5
6
  export class AzureOpenAIProvider extends BaseProvider {
6
7
  apiKey;
7
8
  resourceName;
@@ -35,7 +36,7 @@ export class AzureOpenAIProvider extends BaseProvider {
35
36
  apiKey: this.apiKey,
36
37
  apiVersion: this.apiVersion,
37
38
  });
38
- console.log("Azure Vercel Provider initialized", {
39
+ logger.debug("Azure Vercel Provider initialized", {
39
40
  deployment: this.deployment,
40
41
  resourceName: this.resourceName,
41
42
  provider: "azure-vercel",
@@ -1,8 +1,8 @@
1
1
  import type { ZodType, ZodTypeDef } from "zod";
2
2
  import { type Schema, type LanguageModelV1 } from "ai";
3
3
  import type { AIProviderName } from "../core/types.js";
4
- import type { StreamOptions, StreamResult } from "../types/stream-types.js";
5
- import { BaseProvider } from "../core/base-provider.js";
4
+ import type { StreamOptions, StreamResult } from "../types/streamTypes.js";
5
+ import { BaseProvider } from "../core/baseProvider.js";
6
6
  /**
7
7
  * Google AI Studio provider implementation using BaseProvider
8
8
  * Migrated from original GoogleAIStudio class to new factory pattern
@@ -1,11 +1,11 @@
1
1
  import { createGoogleGenerativeAI } from "@ai-sdk/google";
2
2
  import { streamText, Output } from "ai";
3
3
  import { GoogleAIModels } from "../core/types.js";
4
- import { BaseProvider } from "../core/base-provider.js";
4
+ import { BaseProvider } from "../core/baseProvider.js";
5
5
  import { logger } from "../utils/logger.js";
6
6
  import { createTimeoutController, TimeoutError, getDefaultTimeout, } from "../utils/timeout.js";
7
7
  import { DEFAULT_MAX_TOKENS } from "../core/constants.js";
8
- import { createProxyFetch } from "../proxy/proxy-fetch.js";
8
+ import { createProxyFetch } from "../proxy/proxyFetch.js";
9
9
  // Environment variable setup
10
10
  if (!process.env.GOOGLE_GENERATIVE_AI_API_KEY &&
11
11
  process.env.GOOGLE_AI_API_KEY) {
@@ -1,8 +1,8 @@
1
1
  import type { ZodType, ZodTypeDef } from "zod";
2
2
  import { type Schema, type LanguageModelV1 } from "ai";
3
3
  import type { AIProviderName } from "../core/types.js";
4
- import type { StreamOptions, StreamResult } from "../types/stream-types.js";
5
- import { BaseProvider } from "../core/base-provider.js";
4
+ import type { StreamOptions, StreamResult } from "../types/streamTypes.js";
5
+ import { BaseProvider } from "../core/baseProvider.js";
6
6
  /**
7
7
  * Google Vertex AI Provider v2 - BaseProvider Implementation
8
8
  *