@juspay/neurolink 9.88.12 → 9.90.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 +16 -0
- package/README.md +4 -3
- package/dist/adapters/tts/googleTTSHandler.d.ts +10 -0
- package/dist/adapters/tts/googleTTSHandler.js +27 -18
- package/dist/agent/directTools.js +1 -1
- package/dist/browser/neurolink.min.js +370 -356
- package/dist/index.d.ts +1 -1
- package/dist/index.js +1 -1
- package/dist/lib/adapters/tts/googleTTSHandler.d.ts +10 -0
- package/dist/lib/adapters/tts/googleTTSHandler.js +27 -18
- package/dist/lib/agent/directTools.js +1 -1
- package/dist/lib/index.d.ts +1 -1
- package/dist/lib/index.js +1 -1
- package/dist/lib/neurolink.js +1 -1
- package/dist/lib/rag/index.d.ts +1 -0
- package/dist/lib/rag/index.js +2 -0
- package/dist/lib/rag/stores/chroma.d.ts +90 -0
- package/dist/lib/rag/stores/chroma.js +281 -0
- package/dist/lib/rag/stores/index.d.ts +21 -0
- package/dist/lib/rag/stores/index.js +22 -0
- package/dist/lib/rag/stores/pgvector.d.ts +95 -0
- package/dist/lib/rag/stores/pgvector.js +400 -0
- package/dist/lib/rag/stores/pinecone.d.ts +85 -0
- package/dist/lib/rag/stores/pinecone.js +159 -0
- package/dist/lib/types/index.d.ts +2 -0
- package/dist/lib/types/index.js +2 -0
- package/dist/lib/types/rag.d.ts +30 -0
- package/dist/lib/types/vectorStoreChroma.d.ts +67 -0
- package/dist/lib/types/vectorStoreChroma.js +12 -0
- package/dist/lib/types/vectorStorePinecone.d.ts +48 -0
- package/dist/lib/types/vectorStorePinecone.js +12 -0
- package/dist/neurolink.js +1 -1
- package/dist/rag/index.d.ts +1 -0
- package/dist/rag/index.js +2 -0
- package/dist/rag/stores/chroma.d.ts +90 -0
- package/dist/rag/stores/chroma.js +280 -0
- package/dist/rag/stores/index.d.ts +21 -0
- package/dist/rag/stores/index.js +21 -0
- package/dist/rag/stores/pgvector.d.ts +95 -0
- package/dist/rag/stores/pgvector.js +399 -0
- package/dist/rag/stores/pinecone.d.ts +85 -0
- package/dist/rag/stores/pinecone.js +158 -0
- package/dist/types/index.d.ts +2 -0
- package/dist/types/index.js +2 -0
- package/dist/types/rag.d.ts +30 -0
- package/dist/types/vectorStoreChroma.d.ts +67 -0
- package/dist/types/vectorStoreChroma.js +11 -0
- package/dist/types/vectorStorePinecone.d.ts +48 -0
- package/dist/types/vectorStorePinecone.js +11 -0
- package/package.json +12 -8
package/CHANGELOG.md
CHANGED
|
@@ -1,3 +1,19 @@
|
|
|
1
|
+
## [9.90.0](https://github.com/juspay/neurolink/compare/v9.89.0...v9.90.0) (2026-07-17)
|
|
2
|
+
|
|
3
|
+
### Features
|
|
4
|
+
|
|
5
|
+
- **(rag):** Pinecone, pgvector, and Chroma vector-store adapters (client injection) ([615e83b](https://github.com/juspay/neurolink/commit/615e83b604665922b4081c709694a268d43a0b95))
|
|
6
|
+
|
|
7
|
+
### Bug Fixes
|
|
8
|
+
|
|
9
|
+
- **(deps):** move lazily-imported cloud provider SDKs to optionalDependencies ([732f8aa](https://github.com/juspay/neurolink/commit/732f8aa2ff4009b987fb97d937747a168a6ef85b))
|
|
10
|
+
|
|
11
|
+
## [9.89.0](https://github.com/juspay/neurolink/compare/v9.88.12...v9.89.0) (2026-07-17)
|
|
12
|
+
|
|
13
|
+
### Features
|
|
14
|
+
|
|
15
|
+
- **(examples):** add degit-able starter templates — chat, mcp-client, proxy-failover ([e737e18](https://github.com/juspay/neurolink/commit/e737e18e071d8bad91736ba07ad4193fcbc9f15d))
|
|
16
|
+
|
|
1
17
|
## [9.88.12](https://github.com/juspay/neurolink/compare/v9.88.11...v9.88.12) (2026-07-16)
|
|
2
18
|
|
|
3
19
|
### Bug Fixes
|
package/README.md
CHANGED
|
@@ -36,7 +36,7 @@ for await (const chunk of result.stream) {
|
|
|
36
36
|
|
|
37
37
|
Extracted from production systems at Juspay, NeuroLink provides a practical, TypeScript-first way to integrate AI into any application. Whether you're building with OpenAI, Anthropic, Google, AWS Bedrock, Azure, or any of our 30+ supported providers, NeuroLink gives you a single, consistent interface that works everywhere.
|
|
38
38
|
|
|
39
|
-
**Why NeuroLink?** Switch providers with a single parameter change, leverage
|
|
39
|
+
**Why NeuroLink?** Switch providers with a single parameter change, leverage built-in tools plus any MCP-compliant tool server, deploy with confidence using enterprise features like Redis memory and multi-provider failover, and optimize costs automatically with intelligent routing. Use it via our professional CLI or TypeScript SDK—whichever fits your workflow.
|
|
40
40
|
|
|
41
41
|
**Where we're headed:** We're building for the future of AI—edge-first execution and continuous streaming architectures that make AI practically free and universally available. **[Read our vision →](docs/about/vision.md)**
|
|
42
42
|
|
|
@@ -489,7 +489,7 @@ NeuroLink is a comprehensive AI development platform. Every feature below is shi
|
|
|
489
489
|
| `calculateMath` | Mathematical operations | ✅ | [Tool Reference](docs/sdk/custom-tools.md) |
|
|
490
490
|
| `websearchGrounding` | Google Vertex web search | ⚠️ Requires credentials | [Tool Reference](docs/sdk/custom-tools.md) |
|
|
491
491
|
|
|
492
|
-
**
|
|
492
|
+
**External MCP servers** — connect any MCP-compliant server via `neurolink mcp add`; 11 popular servers (GitHub, PostgreSQL, Google Drive, Slack, and more) ship with ready-made configs:
|
|
493
493
|
|
|
494
494
|
```typescript
|
|
495
495
|
// stdio transport - local MCP servers via command execution
|
|
@@ -993,7 +993,7 @@ Full command and API breakdown lives in [`docs/cli/commands.md`](docs/cli/comman
|
|
|
993
993
|
|
|
994
994
|
- [Enterprise HITL Guide](docs/features/enterprise-hitl.md) - Approval workflows for high-stakes operations
|
|
995
995
|
- [Interactive CLI Guide](docs/features/interactive-cli.md) - AI development environment
|
|
996
|
-
- [MCP Tools Showcase](docs/features/mcp-tools-showcase.md) -
|
|
996
|
+
- [MCP Tools Showcase](docs/features/mcp-tools-showcase.md) - 6 built-in tools & connecting external MCP servers
|
|
997
997
|
|
|
998
998
|
**Provider Intelligence:**
|
|
999
999
|
|
|
@@ -1036,6 +1036,7 @@ Full command and API breakdown lives in [`docs/cli/commands.md`](docs/cli/comman
|
|
|
1036
1036
|
|
|
1037
1037
|
- Real-time chat and community → [Discord](https://discord.gg/cZa8DrDhSR)
|
|
1038
1038
|
- Bug reports and feature requests → [GitHub Issues](https://github.com/juspay/neurolink/issues)
|
|
1039
|
+
- New here? Start with a [good first issue](https://github.com/juspay/neurolink/issues?q=is%3Aissue+is%3Aopen+label%3A%22good+first+issue%22)
|
|
1039
1040
|
- Questions and discussions → [GitHub Discussions](https://github.com/juspay/neurolink/discussions)
|
|
1040
1041
|
- Development workflow, testing, and pull request guidelines → [`docs/development/contributing.md`](docs/development/contributing.md)
|
|
1041
1042
|
- Documentation improvements → open a PR referencing the [documentation matrix](docs/tracking/FEATURE-DOC-MATRIX.md).
|
|
@@ -24,6 +24,7 @@ export declare class GoogleTTSHandler implements TTSHandler {
|
|
|
24
24
|
* before invoking provider handlers, not inside this class.
|
|
25
25
|
*/
|
|
26
26
|
readonly maxTextLength: number;
|
|
27
|
+
private readonly credentialsPath;
|
|
27
28
|
constructor(credentialsPath?: string);
|
|
28
29
|
/**
|
|
29
30
|
* Validate that the provider is properly configured
|
|
@@ -31,6 +32,15 @@ export declare class GoogleTTSHandler implements TTSHandler {
|
|
|
31
32
|
* @returns True if provider can generate TTS
|
|
32
33
|
*/
|
|
33
34
|
isConfigured(): boolean;
|
|
35
|
+
/**
|
|
36
|
+
* Lazily construct (and cache) the Google Cloud TTS client.
|
|
37
|
+
*
|
|
38
|
+
* `@google-cloud/text-to-speech` is an optional dependency: importing it
|
|
39
|
+
* only happens here, on first actual use, so a handler instance can be
|
|
40
|
+
* constructed (e.g. during auto-registration at module load) without the
|
|
41
|
+
* package being installed.
|
|
42
|
+
*/
|
|
43
|
+
private getClient;
|
|
34
44
|
/**
|
|
35
45
|
* Get available voices for the provider
|
|
36
46
|
*
|
|
@@ -1,12 +1,3 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Google Cloud Text-to-Speech Handler
|
|
3
|
-
*
|
|
4
|
-
* Handler for Google Cloud Text-to-Speech API integration.
|
|
5
|
-
*
|
|
6
|
-
* @module adapters/tts/googleTTSHandler
|
|
7
|
-
* @see https://cloud.google.com/text-to-speech/docs
|
|
8
|
-
*/
|
|
9
|
-
import { TextToSpeechClient } from "@google-cloud/text-to-speech";
|
|
10
1
|
import { TTSError, TTS_ERROR_CODES } from "../../utils/ttsProcessor.js";
|
|
11
2
|
import { ErrorCategory, ErrorSeverity } from "../../constants/enums.js";
|
|
12
3
|
import { logger } from "../../utils/logger.js";
|
|
@@ -36,11 +27,10 @@ export class GoogleTTSHandler {
|
|
|
36
27
|
* before invoking provider handlers, not inside this class.
|
|
37
28
|
*/
|
|
38
29
|
maxTextLength = GoogleTTSHandler.DEFAULT_MAX_TEXT_LENGTH;
|
|
30
|
+
credentialsPath;
|
|
39
31
|
constructor(credentialsPath) {
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
this.client = new TextToSpeechClient({ keyFilename: path });
|
|
43
|
-
}
|
|
32
|
+
this.credentialsPath =
|
|
33
|
+
credentialsPath ?? process.env.GOOGLE_APPLICATION_CREDENTIALS;
|
|
44
34
|
}
|
|
45
35
|
/**
|
|
46
36
|
* Validate that the provider is properly configured
|
|
@@ -48,7 +38,24 @@ export class GoogleTTSHandler {
|
|
|
48
38
|
* @returns True if provider can generate TTS
|
|
49
39
|
*/
|
|
50
40
|
isConfigured() {
|
|
51
|
-
return this.
|
|
41
|
+
return this.credentialsPath !== undefined;
|
|
42
|
+
}
|
|
43
|
+
/**
|
|
44
|
+
* Lazily construct (and cache) the Google Cloud TTS client.
|
|
45
|
+
*
|
|
46
|
+
* `@google-cloud/text-to-speech` is an optional dependency: importing it
|
|
47
|
+
* only happens here, on first actual use, so a handler instance can be
|
|
48
|
+
* constructed (e.g. during auto-registration at module load) without the
|
|
49
|
+
* package being installed.
|
|
50
|
+
*/
|
|
51
|
+
async getClient() {
|
|
52
|
+
if (!this.client) {
|
|
53
|
+
const { TextToSpeechClient } = await import("@google-cloud/text-to-speech");
|
|
54
|
+
this.client = new TextToSpeechClient({
|
|
55
|
+
keyFilename: this.credentialsPath,
|
|
56
|
+
});
|
|
57
|
+
}
|
|
58
|
+
return this.client;
|
|
52
59
|
}
|
|
53
60
|
/**
|
|
54
61
|
* Get available voices for the provider
|
|
@@ -60,7 +67,7 @@ export class GoogleTTSHandler {
|
|
|
60
67
|
* @returns List of available voices
|
|
61
68
|
*/
|
|
62
69
|
async getVoices(languageCode) {
|
|
63
|
-
if (!this.
|
|
70
|
+
if (!this.isConfigured()) {
|
|
64
71
|
throw new TTSError({
|
|
65
72
|
code: TTS_ERROR_CODES.PROVIDER_NOT_CONFIGURED,
|
|
66
73
|
message: "Google Cloud TTS client not initialized. Set GOOGLE_APPLICATION_CREDENTIALS or pass credentials path.",
|
|
@@ -69,6 +76,7 @@ export class GoogleTTSHandler {
|
|
|
69
76
|
retriable: false,
|
|
70
77
|
});
|
|
71
78
|
}
|
|
79
|
+
const client = await this.getClient();
|
|
72
80
|
const span = SpanSerializer.createSpan(SpanType.TTS, "tts.google.listVoices", {
|
|
73
81
|
"tts.operation": "listVoices",
|
|
74
82
|
"tts.provider": "google",
|
|
@@ -84,7 +92,7 @@ export class GoogleTTSHandler {
|
|
|
84
92
|
return this.voicesCache.voices;
|
|
85
93
|
}
|
|
86
94
|
// Call Google Cloud listVoices API
|
|
87
|
-
const [response] = await
|
|
95
|
+
const [response] = await client.listVoices(languageCode ? { languageCode } : {});
|
|
88
96
|
if (!response.voices || response.voices.length === 0) {
|
|
89
97
|
logger.warn("Google Cloud TTS returned no voices");
|
|
90
98
|
const endedSpan = SpanSerializer.endSpan(span, SpanStatus.OK);
|
|
@@ -149,7 +157,7 @@ export class GoogleTTSHandler {
|
|
|
149
157
|
* @returns Audio buffer with metadata
|
|
150
158
|
*/
|
|
151
159
|
async synthesize(text, options) {
|
|
152
|
-
if (!this.
|
|
160
|
+
if (!this.isConfigured()) {
|
|
153
161
|
throw new TTSError({
|
|
154
162
|
code: TTS_ERROR_CODES.PROVIDER_NOT_CONFIGURED,
|
|
155
163
|
message: "Google Cloud TTS client not initialized. Set GOOGLE_APPLICATION_CREDENTIALS or pass credentials path.",
|
|
@@ -158,6 +166,7 @@ export class GoogleTTSHandler {
|
|
|
158
166
|
retriable: false,
|
|
159
167
|
});
|
|
160
168
|
}
|
|
169
|
+
const client = await this.getClient();
|
|
161
170
|
const voiceId = options.voice ?? "en-US-Neural2-C";
|
|
162
171
|
const span = SpanSerializer.createSpan(SpanType.TTS, "tts.google.synthesize", {
|
|
163
172
|
"tts.operation": "synthesize",
|
|
@@ -196,7 +205,7 @@ export class GoogleTTSHandler {
|
|
|
196
205
|
volumeGainDb: options.volumeGainDb ?? 0.0,
|
|
197
206
|
},
|
|
198
207
|
};
|
|
199
|
-
const [response] = await
|
|
208
|
+
const [response] = await client.synthesizeSpeech(request, {
|
|
200
209
|
timeout: GoogleTTSHandler.DEFAULT_API_TIMEOUT_MS,
|
|
201
210
|
});
|
|
202
211
|
const audioContent = response.audioContent;
|
|
@@ -3,7 +3,6 @@ import * as fs from "fs";
|
|
|
3
3
|
import * as path from "path";
|
|
4
4
|
import { execFile } from "child_process";
|
|
5
5
|
import { logger } from "../utils/logger.js";
|
|
6
|
-
import { VertexAI } from "@google-cloud/vertexai";
|
|
7
6
|
import { CSVProcessor } from "../utils/csvProcessor.js";
|
|
8
7
|
import { shouldEnableBashTool } from "../utils/toolUtils.js";
|
|
9
8
|
import { tool } from "../utils/tool.js";
|
|
@@ -604,6 +603,7 @@ export const directAgentTools = {
|
|
|
604
603
|
};
|
|
605
604
|
}
|
|
606
605
|
const limitedResults = Math.min(Math.max(maxResults, 1), 5);
|
|
606
|
+
const { VertexAI } = await import("@google-cloud/vertexai");
|
|
607
607
|
const vertex_ai = new VertexAI({
|
|
608
608
|
project: hasProjectId,
|
|
609
609
|
location: projectLocation,
|