@juspay/neurolink 9.10.1 → 9.12.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/dist/agent/directTools.d.ts +3 -3
- package/dist/cli/commands/config.d.ts +9 -9
- package/dist/cli/loop/optionsSchema.d.ts +1 -1
- package/dist/constants/contextWindows.d.ts +6 -3
- package/dist/constants/contextWindows.js +30 -3
- package/dist/constants/index.d.ts +3 -3
- package/dist/constants/retry.d.ts +4 -4
- package/dist/constants/retry.js +1 -1
- package/dist/context/contextCompactor.d.ts +1 -1
- package/dist/context/contextCompactor.js +59 -1
- package/dist/context/summarizationEngine.d.ts +2 -2
- package/dist/context/summarizationEngine.js +44 -18
- package/dist/context/toolOutputLimits.d.ts +22 -13
- package/dist/context/toolOutputLimits.js +58 -64
- package/dist/core/baseProvider.d.ts +11 -2
- package/dist/core/baseProvider.js +16 -1
- package/dist/core/conversationMemoryManager.d.ts +13 -1
- package/dist/core/conversationMemoryManager.js +36 -5
- package/dist/core/modules/GenerationHandler.d.ts +6 -0
- package/dist/core/modules/GenerationHandler.js +192 -7
- package/dist/core/modules/MessageBuilder.js +42 -4
- package/dist/core/modules/TelemetryHandler.js +4 -1
- package/dist/core/redisConversationMemoryManager.d.ts +19 -3
- package/dist/core/redisConversationMemoryManager.js +253 -58
- package/dist/index.d.ts +2 -0
- package/dist/index.js +3 -0
- package/dist/lib/agent/directTools.d.ts +7 -7
- package/dist/lib/constants/contextWindows.d.ts +6 -3
- package/dist/lib/constants/contextWindows.js +30 -3
- package/dist/lib/constants/index.d.ts +3 -3
- package/dist/lib/constants/retry.d.ts +4 -4
- package/dist/lib/constants/retry.js +1 -1
- package/dist/lib/context/contextCompactor.d.ts +1 -1
- package/dist/lib/context/contextCompactor.js +59 -1
- package/dist/lib/context/summarizationEngine.d.ts +2 -2
- package/dist/lib/context/summarizationEngine.js +44 -18
- package/dist/lib/context/toolOutputLimits.d.ts +22 -13
- package/dist/lib/context/toolOutputLimits.js +58 -64
- package/dist/lib/core/baseProvider.d.ts +11 -2
- package/dist/lib/core/baseProvider.js +16 -1
- package/dist/lib/core/conversationMemoryManager.d.ts +13 -1
- package/dist/lib/core/conversationMemoryManager.js +36 -5
- package/dist/lib/core/modules/GenerationHandler.d.ts +6 -0
- package/dist/lib/core/modules/GenerationHandler.js +192 -7
- package/dist/lib/core/modules/MessageBuilder.js +42 -4
- package/dist/lib/core/modules/TelemetryHandler.js +4 -1
- package/dist/lib/core/redisConversationMemoryManager.d.ts +19 -3
- package/dist/lib/core/redisConversationMemoryManager.js +253 -58
- package/dist/lib/files/fileTools.d.ts +3 -3
- package/dist/lib/index.d.ts +2 -0
- package/dist/lib/index.js +3 -0
- package/dist/lib/mcp/externalServerManager.js +46 -10
- package/dist/lib/memory/memoryRetrievalTools.d.ts +166 -0
- package/dist/lib/memory/memoryRetrievalTools.js +145 -0
- package/dist/lib/neurolink.d.ts +35 -1
- package/dist/lib/neurolink.js +476 -16
- package/dist/lib/providers/amazonBedrock.d.ts +1 -1
- package/dist/lib/providers/amazonBedrock.js +78 -45
- package/dist/lib/providers/amazonSagemaker.d.ts +1 -1
- package/dist/lib/providers/amazonSagemaker.js +1 -1
- package/dist/lib/providers/anthropic.d.ts +1 -1
- package/dist/lib/providers/anthropic.js +7 -7
- package/dist/lib/providers/anthropicBaseProvider.d.ts +1 -1
- package/dist/lib/providers/anthropicBaseProvider.js +7 -6
- package/dist/lib/providers/azureOpenai.d.ts +1 -1
- package/dist/lib/providers/azureOpenai.js +1 -1
- package/dist/lib/providers/googleAiStudio.d.ts +1 -1
- package/dist/lib/providers/googleAiStudio.js +5 -5
- package/dist/lib/providers/googleVertex.d.ts +1 -1
- package/dist/lib/providers/googleVertex.js +74 -17
- package/dist/lib/providers/huggingFace.d.ts +1 -1
- package/dist/lib/providers/huggingFace.js +1 -1
- package/dist/lib/providers/litellm.d.ts +1 -1
- package/dist/lib/providers/litellm.js +18 -16
- package/dist/lib/providers/mistral.d.ts +1 -1
- package/dist/lib/providers/mistral.js +1 -1
- package/dist/lib/providers/ollama.d.ts +1 -1
- package/dist/lib/providers/ollama.js +8 -7
- package/dist/lib/providers/openAI.d.ts +1 -1
- package/dist/lib/providers/openAI.js +6 -6
- package/dist/lib/providers/openRouter.d.ts +1 -1
- package/dist/lib/providers/openRouter.js +6 -2
- package/dist/lib/providers/openaiCompatible.d.ts +1 -1
- package/dist/lib/providers/openaiCompatible.js +1 -1
- package/dist/lib/proxy/proxyFetch.js +291 -65
- package/dist/lib/server/utils/validation.d.ts +4 -4
- package/dist/lib/services/server/ai/observability/instrumentation.js +12 -3
- package/dist/lib/telemetry/telemetryService.d.ts +2 -1
- package/dist/lib/telemetry/telemetryService.js +8 -1
- package/dist/lib/types/contextTypes.d.ts +26 -2
- package/dist/lib/types/conversation.d.ts +72 -40
- package/dist/lib/types/conversationMemoryInterface.d.ts +5 -1
- package/dist/lib/types/generateTypes.d.ts +26 -0
- package/dist/lib/types/modelTypes.d.ts +2 -2
- package/dist/lib/types/multimodal.d.ts +2 -0
- package/dist/lib/types/observability.d.ts +10 -0
- package/dist/lib/types/sdkTypes.d.ts +1 -1
- package/dist/lib/utils/conversationMemory.d.ts +4 -3
- package/dist/lib/utils/conversationMemory.js +44 -6
- package/dist/lib/utils/errorHandling.d.ts +5 -0
- package/dist/lib/utils/errorHandling.js +7 -2
- package/dist/lib/utils/logger.d.ts +8 -0
- package/dist/lib/utils/logger.js +56 -1
- package/dist/lib/utils/messageBuilder.js +74 -4
- package/dist/lib/utils/redis.js +6 -1
- package/dist/lib/utils/tokenEstimation.d.ts +2 -2
- package/dist/lib/utils/tokenEstimation.js +16 -1
- package/dist/lib/workflow/config.d.ts +110 -110
- package/dist/mcp/externalServerManager.js +46 -10
- package/dist/memory/memoryRetrievalTools.d.ts +166 -0
- package/dist/memory/memoryRetrievalTools.js +144 -0
- package/dist/neurolink.d.ts +35 -1
- package/dist/neurolink.js +476 -16
- package/dist/providers/amazonBedrock.d.ts +1 -1
- package/dist/providers/amazonBedrock.js +78 -45
- package/dist/providers/amazonSagemaker.d.ts +1 -1
- package/dist/providers/amazonSagemaker.js +1 -1
- package/dist/providers/anthropic.d.ts +1 -1
- package/dist/providers/anthropic.js +7 -7
- package/dist/providers/anthropicBaseProvider.d.ts +1 -1
- package/dist/providers/anthropicBaseProvider.js +7 -6
- package/dist/providers/azureOpenai.d.ts +1 -1
- package/dist/providers/azureOpenai.js +1 -1
- package/dist/providers/googleAiStudio.d.ts +1 -1
- package/dist/providers/googleAiStudio.js +5 -5
- package/dist/providers/googleVertex.d.ts +1 -1
- package/dist/providers/googleVertex.js +74 -17
- package/dist/providers/huggingFace.d.ts +1 -1
- package/dist/providers/huggingFace.js +1 -1
- package/dist/providers/litellm.d.ts +1 -1
- package/dist/providers/litellm.js +18 -16
- package/dist/providers/mistral.d.ts +1 -1
- package/dist/providers/mistral.js +1 -1
- package/dist/providers/ollama.d.ts +1 -1
- package/dist/providers/ollama.js +8 -7
- package/dist/providers/openAI.d.ts +1 -1
- package/dist/providers/openAI.js +6 -6
- package/dist/providers/openRouter.d.ts +1 -1
- package/dist/providers/openRouter.js +6 -2
- package/dist/providers/openaiCompatible.d.ts +1 -1
- package/dist/providers/openaiCompatible.js +1 -1
- package/dist/proxy/proxyFetch.js +291 -65
- package/dist/services/server/ai/observability/instrumentation.js +12 -3
- package/dist/telemetry/telemetryService.d.ts +2 -1
- package/dist/telemetry/telemetryService.js +8 -1
- package/dist/types/contextTypes.d.ts +26 -2
- package/dist/types/conversation.d.ts +72 -40
- package/dist/types/conversationMemoryInterface.d.ts +5 -1
- package/dist/types/generateTypes.d.ts +26 -0
- package/dist/types/modelTypes.d.ts +10 -10
- package/dist/types/multimodal.d.ts +2 -0
- package/dist/types/observability.d.ts +10 -0
- package/dist/types/sdkTypes.d.ts +1 -1
- package/dist/utils/conversationMemory.d.ts +4 -3
- package/dist/utils/conversationMemory.js +44 -6
- package/dist/utils/errorHandling.d.ts +5 -0
- package/dist/utils/errorHandling.js +7 -2
- package/dist/utils/logger.d.ts +8 -0
- package/dist/utils/logger.js +56 -1
- package/dist/utils/messageBuilder.js +74 -4
- package/dist/utils/redis.js +6 -1
- package/dist/utils/tokenEstimation.d.ts +2 -2
- package/dist/utils/tokenEstimation.js +16 -1
- package/dist/workflow/config.d.ts +12 -12
- package/package.json +1 -1
|
@@ -0,0 +1,166 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory retrieval tools for LLM access to conversation history.
|
|
3
|
+
* Enables the AI to retrieve full tool outputs, review previous messages,
|
|
4
|
+
* and search conversation memory.
|
|
5
|
+
*
|
|
6
|
+
* Follows the createFileTools() factory pattern from files/fileTools.ts.
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
9
|
+
import { z } from "zod";
|
|
10
|
+
import type { RedisConversationMemoryManager } from "../core/redisConversationMemoryManager.js";
|
|
11
|
+
/**
|
|
12
|
+
* Factory function that creates memory retrieval tools bound to a memory manager.
|
|
13
|
+
* @param memoryManager - The Redis conversation memory manager instance
|
|
14
|
+
* @returns Record of tool name to Vercel AI SDK tool definition
|
|
15
|
+
*/
|
|
16
|
+
export declare function createMemoryRetrievalTools(memoryManager: RedisConversationMemoryManager): {
|
|
17
|
+
retrieve_context: import("ai").Tool<z.ZodObject<{
|
|
18
|
+
sessionId: z.ZodString;
|
|
19
|
+
messageId: z.ZodOptional<z.ZodString>;
|
|
20
|
+
role: z.ZodOptional<z.ZodEnum<["user", "assistant", "system", "tool_call", "tool_result"]>>;
|
|
21
|
+
lastN: z.ZodOptional<z.ZodNumber>;
|
|
22
|
+
offset: z.ZodOptional<z.ZodNumber>;
|
|
23
|
+
limit: z.ZodOptional<z.ZodNumber>;
|
|
24
|
+
search: z.ZodOptional<z.ZodString>;
|
|
25
|
+
}, "strip", z.ZodTypeAny, {
|
|
26
|
+
sessionId: string;
|
|
27
|
+
search?: string | undefined;
|
|
28
|
+
role?: "system" | "user" | "assistant" | "tool_call" | "tool_result" | undefined;
|
|
29
|
+
offset?: number | undefined;
|
|
30
|
+
limit?: number | undefined;
|
|
31
|
+
messageId?: string | undefined;
|
|
32
|
+
lastN?: number | undefined;
|
|
33
|
+
}, {
|
|
34
|
+
sessionId: string;
|
|
35
|
+
search?: string | undefined;
|
|
36
|
+
role?: "system" | "user" | "assistant" | "tool_call" | "tool_result" | undefined;
|
|
37
|
+
offset?: number | undefined;
|
|
38
|
+
limit?: number | undefined;
|
|
39
|
+
messageId?: string | undefined;
|
|
40
|
+
lastN?: number | undefined;
|
|
41
|
+
}>, {
|
|
42
|
+
error: string;
|
|
43
|
+
sessionId: string;
|
|
44
|
+
messageId?: undefined;
|
|
45
|
+
messages?: undefined;
|
|
46
|
+
totalMessages?: undefined;
|
|
47
|
+
} | {
|
|
48
|
+
error: string;
|
|
49
|
+
messageId: string;
|
|
50
|
+
sessionId?: undefined;
|
|
51
|
+
messages?: undefined;
|
|
52
|
+
totalMessages?: undefined;
|
|
53
|
+
} | {
|
|
54
|
+
messages: ({
|
|
55
|
+
id: string;
|
|
56
|
+
error: string;
|
|
57
|
+
role?: undefined;
|
|
58
|
+
tool?: undefined;
|
|
59
|
+
matchCount?: undefined;
|
|
60
|
+
matches?: undefined;
|
|
61
|
+
totalSize?: undefined;
|
|
62
|
+
content?: undefined;
|
|
63
|
+
hasMore?: undefined;
|
|
64
|
+
} | {
|
|
65
|
+
id: string;
|
|
66
|
+
role: "system" | "user" | "assistant" | "tool_call" | "tool_result";
|
|
67
|
+
tool: string | undefined;
|
|
68
|
+
matchCount: number;
|
|
69
|
+
matches: {
|
|
70
|
+
line: number;
|
|
71
|
+
text: string;
|
|
72
|
+
}[];
|
|
73
|
+
totalSize: number;
|
|
74
|
+
error?: undefined;
|
|
75
|
+
content?: undefined;
|
|
76
|
+
hasMore?: undefined;
|
|
77
|
+
} | {
|
|
78
|
+
id: string;
|
|
79
|
+
role: "system" | "user" | "assistant" | "tool_call" | "tool_result";
|
|
80
|
+
tool: string | undefined;
|
|
81
|
+
content: string;
|
|
82
|
+
totalSize: number;
|
|
83
|
+
hasMore: boolean;
|
|
84
|
+
error?: undefined;
|
|
85
|
+
matchCount?: undefined;
|
|
86
|
+
matches?: undefined;
|
|
87
|
+
})[];
|
|
88
|
+
totalMessages: number;
|
|
89
|
+
error?: undefined;
|
|
90
|
+
sessionId?: undefined;
|
|
91
|
+
messageId?: undefined;
|
|
92
|
+
} | {
|
|
93
|
+
error: string;
|
|
94
|
+
sessionId?: undefined;
|
|
95
|
+
messageId?: undefined;
|
|
96
|
+
messages?: undefined;
|
|
97
|
+
totalMessages?: undefined;
|
|
98
|
+
}> & {
|
|
99
|
+
execute: (args: {
|
|
100
|
+
sessionId: string;
|
|
101
|
+
search?: string | undefined;
|
|
102
|
+
role?: "system" | "user" | "assistant" | "tool_call" | "tool_result" | undefined;
|
|
103
|
+
offset?: number | undefined;
|
|
104
|
+
limit?: number | undefined;
|
|
105
|
+
messageId?: string | undefined;
|
|
106
|
+
lastN?: number | undefined;
|
|
107
|
+
}, options: import("ai").ToolExecutionOptions) => PromiseLike<{
|
|
108
|
+
error: string;
|
|
109
|
+
sessionId: string;
|
|
110
|
+
messageId?: undefined;
|
|
111
|
+
messages?: undefined;
|
|
112
|
+
totalMessages?: undefined;
|
|
113
|
+
} | {
|
|
114
|
+
error: string;
|
|
115
|
+
messageId: string;
|
|
116
|
+
sessionId?: undefined;
|
|
117
|
+
messages?: undefined;
|
|
118
|
+
totalMessages?: undefined;
|
|
119
|
+
} | {
|
|
120
|
+
messages: ({
|
|
121
|
+
id: string;
|
|
122
|
+
error: string;
|
|
123
|
+
role?: undefined;
|
|
124
|
+
tool?: undefined;
|
|
125
|
+
matchCount?: undefined;
|
|
126
|
+
matches?: undefined;
|
|
127
|
+
totalSize?: undefined;
|
|
128
|
+
content?: undefined;
|
|
129
|
+
hasMore?: undefined;
|
|
130
|
+
} | {
|
|
131
|
+
id: string;
|
|
132
|
+
role: "system" | "user" | "assistant" | "tool_call" | "tool_result";
|
|
133
|
+
tool: string | undefined;
|
|
134
|
+
matchCount: number;
|
|
135
|
+
matches: {
|
|
136
|
+
line: number;
|
|
137
|
+
text: string;
|
|
138
|
+
}[];
|
|
139
|
+
totalSize: number;
|
|
140
|
+
error?: undefined;
|
|
141
|
+
content?: undefined;
|
|
142
|
+
hasMore?: undefined;
|
|
143
|
+
} | {
|
|
144
|
+
id: string;
|
|
145
|
+
role: "system" | "user" | "assistant" | "tool_call" | "tool_result";
|
|
146
|
+
tool: string | undefined;
|
|
147
|
+
content: string;
|
|
148
|
+
totalSize: number;
|
|
149
|
+
hasMore: boolean;
|
|
150
|
+
error?: undefined;
|
|
151
|
+
matchCount?: undefined;
|
|
152
|
+
matches?: undefined;
|
|
153
|
+
})[];
|
|
154
|
+
totalMessages: number;
|
|
155
|
+
error?: undefined;
|
|
156
|
+
sessionId?: undefined;
|
|
157
|
+
messageId?: undefined;
|
|
158
|
+
} | {
|
|
159
|
+
error: string;
|
|
160
|
+
sessionId?: undefined;
|
|
161
|
+
messageId?: undefined;
|
|
162
|
+
messages?: undefined;
|
|
163
|
+
totalMessages?: undefined;
|
|
164
|
+
}>;
|
|
165
|
+
};
|
|
166
|
+
};
|
|
@@ -0,0 +1,145 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Memory retrieval tools for LLM access to conversation history.
|
|
3
|
+
* Enables the AI to retrieve full tool outputs, review previous messages,
|
|
4
|
+
* and search conversation memory.
|
|
5
|
+
*
|
|
6
|
+
* Follows the createFileTools() factory pattern from files/fileTools.ts.
|
|
7
|
+
* @module
|
|
8
|
+
*/
|
|
9
|
+
import { tool } from "ai";
|
|
10
|
+
import { z } from "zod";
|
|
11
|
+
import { logger } from "../utils/logger.js";
|
|
12
|
+
/** Maximum characters returned per retrieval request */
|
|
13
|
+
const DEFAULT_RETRIEVAL_LIMIT = 50_000;
|
|
14
|
+
/** Hard maximum for user/LLM-supplied limit to prevent massive tool outputs */
|
|
15
|
+
const MAX_RETRIEVAL_LIMIT = 200_000;
|
|
16
|
+
/** Maximum number of search matches returned */
|
|
17
|
+
const MAX_SEARCH_MATCHES = 50;
|
|
18
|
+
/**
|
|
19
|
+
* Factory function that creates memory retrieval tools bound to a memory manager.
|
|
20
|
+
* @param memoryManager - The Redis conversation memory manager instance
|
|
21
|
+
* @returns Record of tool name to Vercel AI SDK tool definition
|
|
22
|
+
*/
|
|
23
|
+
export function createMemoryRetrievalTools(memoryManager) {
|
|
24
|
+
return {
|
|
25
|
+
retrieve_context: tool({
|
|
26
|
+
description: "Retrieve messages from conversation memory. Use this to access full tool " +
|
|
27
|
+
"outputs when a result was truncated, review previous assistant responses, " +
|
|
28
|
+
"or search through conversation history. Supports filtering by role, " +
|
|
29
|
+
"pagination for large content, and regex search within messages.",
|
|
30
|
+
parameters: z.object({
|
|
31
|
+
sessionId: z.string().describe("Session ID for the conversation"),
|
|
32
|
+
messageId: z
|
|
33
|
+
.string()
|
|
34
|
+
.optional()
|
|
35
|
+
.describe("Specific message ID to retrieve"),
|
|
36
|
+
role: z
|
|
37
|
+
.enum(["user", "assistant", "system", "tool_call", "tool_result"])
|
|
38
|
+
.optional()
|
|
39
|
+
.describe("Filter messages by role"),
|
|
40
|
+
lastN: z
|
|
41
|
+
.number()
|
|
42
|
+
.int()
|
|
43
|
+
.positive()
|
|
44
|
+
.optional()
|
|
45
|
+
.describe("Retrieve the last N messages matching the filter"),
|
|
46
|
+
offset: z
|
|
47
|
+
.number()
|
|
48
|
+
.int()
|
|
49
|
+
.nonnegative()
|
|
50
|
+
.optional()
|
|
51
|
+
.describe("Character offset for paginated reading of large content (default: 0)"),
|
|
52
|
+
limit: z
|
|
53
|
+
.number()
|
|
54
|
+
.int()
|
|
55
|
+
.positive()
|
|
56
|
+
.optional()
|
|
57
|
+
.describe("Max characters to return per message (default: 50000)"),
|
|
58
|
+
search: z
|
|
59
|
+
.string()
|
|
60
|
+
.optional()
|
|
61
|
+
.describe("Regex pattern to search within message content. " +
|
|
62
|
+
"Returns matching lines with line numbers."),
|
|
63
|
+
}),
|
|
64
|
+
execute: async (args) => {
|
|
65
|
+
try {
|
|
66
|
+
const conversation = await memoryManager.getSessionRaw(args.sessionId);
|
|
67
|
+
if (!conversation) {
|
|
68
|
+
return { error: "Session not found", sessionId: args.sessionId };
|
|
69
|
+
}
|
|
70
|
+
let messages = conversation.messages;
|
|
71
|
+
// Filter by specific messageId
|
|
72
|
+
if (args.messageId) {
|
|
73
|
+
const msg = messages.find((m) => m.id === args.messageId);
|
|
74
|
+
if (!msg) {
|
|
75
|
+
return { error: "Message not found", messageId: args.messageId };
|
|
76
|
+
}
|
|
77
|
+
messages = [msg];
|
|
78
|
+
}
|
|
79
|
+
// Filter by role
|
|
80
|
+
if (args.role) {
|
|
81
|
+
messages = messages.filter((m) => m.role === args.role);
|
|
82
|
+
}
|
|
83
|
+
// Take last N
|
|
84
|
+
if (args.lastN) {
|
|
85
|
+
messages = messages.slice(-args.lastN);
|
|
86
|
+
}
|
|
87
|
+
const charLimit = Math.min(args.limit ?? DEFAULT_RETRIEVAL_LIMIT, MAX_RETRIEVAL_LIMIT);
|
|
88
|
+
const results = messages.map((msg) => {
|
|
89
|
+
const content = msg.content ?? "";
|
|
90
|
+
// Search mode: return matching lines with line numbers
|
|
91
|
+
if (args.search) {
|
|
92
|
+
try {
|
|
93
|
+
const pattern = args.search;
|
|
94
|
+
// Validate regex length to mitigate ReDoS from LLM-provided input
|
|
95
|
+
if (pattern.length > 200) {
|
|
96
|
+
return {
|
|
97
|
+
id: msg.id,
|
|
98
|
+
error: "Search pattern too long (max 200 chars)",
|
|
99
|
+
};
|
|
100
|
+
}
|
|
101
|
+
const regex = new RegExp(pattern, "i"); // no 'g' flag — avoids stateful .test() bug
|
|
102
|
+
const lines = content.split("\n");
|
|
103
|
+
const matches = lines
|
|
104
|
+
.map((line, i) => ({ line: i + 1, text: line }))
|
|
105
|
+
.filter((l) => regex.test(l.text))
|
|
106
|
+
.slice(0, MAX_SEARCH_MATCHES);
|
|
107
|
+
return {
|
|
108
|
+
id: msg.id,
|
|
109
|
+
role: msg.role,
|
|
110
|
+
tool: msg.tool,
|
|
111
|
+
matchCount: matches.length,
|
|
112
|
+
matches,
|
|
113
|
+
totalSize: content.length,
|
|
114
|
+
};
|
|
115
|
+
}
|
|
116
|
+
catch {
|
|
117
|
+
return { id: msg.id, error: "Invalid regex pattern" };
|
|
118
|
+
}
|
|
119
|
+
}
|
|
120
|
+
// Paginated read mode
|
|
121
|
+
const start = args.offset ?? 0;
|
|
122
|
+
const end = start + charLimit;
|
|
123
|
+
const slice = content.slice(start, end);
|
|
124
|
+
return {
|
|
125
|
+
id: msg.id,
|
|
126
|
+
role: msg.role,
|
|
127
|
+
tool: msg.tool,
|
|
128
|
+
content: slice,
|
|
129
|
+
totalSize: content.length,
|
|
130
|
+
hasMore: end < content.length,
|
|
131
|
+
};
|
|
132
|
+
});
|
|
133
|
+
return { messages: results, totalMessages: results.length };
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
logger.error("[MemoryRetrievalTools] Error retrieving context", {
|
|
137
|
+
error: error instanceof Error ? error.message : String(error),
|
|
138
|
+
});
|
|
139
|
+
return { error: "Failed to retrieve context" };
|
|
140
|
+
}
|
|
141
|
+
},
|
|
142
|
+
}),
|
|
143
|
+
};
|
|
144
|
+
}
|
|
145
|
+
//# sourceMappingURL=memoryRetrievalTools.js.map
|
package/dist/lib/neurolink.d.ts
CHANGED
|
@@ -6,7 +6,7 @@
|
|
|
6
6
|
* Uses real MCP infrastructure for tool discovery and execution.
|
|
7
7
|
*/
|
|
8
8
|
import { type CompactionConfig, type CompactionResult } from "./context/contextCompactor.js";
|
|
9
|
-
import
|
|
9
|
+
import { ConversationMemoryManager } from "./core/conversationMemoryManager.js";
|
|
10
10
|
import type { RedisConversationMemoryManager } from "./core/redisConversationMemoryManager.js";
|
|
11
11
|
import { ExternalServerManager } from "./mcp/externalServerManager.js";
|
|
12
12
|
import { MCPToolRegistry } from "./mcp/toolRegistry.js";
|
|
@@ -123,6 +123,7 @@ export declare class NeuroLink {
|
|
|
123
123
|
private hitlManager?;
|
|
124
124
|
private mem0Instance?;
|
|
125
125
|
private mem0Config?;
|
|
126
|
+
private _sessionCostUsd;
|
|
126
127
|
private fileRegistry;
|
|
127
128
|
private cachedFileTools;
|
|
128
129
|
/**
|
|
@@ -215,6 +216,12 @@ export declare class NeuroLink {
|
|
|
215
216
|
* and registers them as direct tools so they're available to LLMs.
|
|
216
217
|
*/
|
|
217
218
|
private registerFileTools;
|
|
219
|
+
/**
|
|
220
|
+
* Register memory retrieval tools that allow the AI to access
|
|
221
|
+
* conversation history, including full tool outputs.
|
|
222
|
+
* Only registered when Redis conversation memory is active.
|
|
223
|
+
*/
|
|
224
|
+
private registerMemoryRetrievalTools;
|
|
218
225
|
/** Format memory context for prompt inclusion */
|
|
219
226
|
private formatMemoryContext;
|
|
220
227
|
/** Extract memory context from search results */
|
|
@@ -469,6 +476,10 @@ export declare class NeuroLink {
|
|
|
469
476
|
* Schedule non-blocking Mem0 memory storage after generate completes.
|
|
470
477
|
*/
|
|
471
478
|
private scheduleGenerateMem0Storage;
|
|
479
|
+
/**
|
|
480
|
+
* Handle PPT generation mode
|
|
481
|
+
*/
|
|
482
|
+
private generateWithPPT;
|
|
472
483
|
/**
|
|
473
484
|
* Generate with workflow engine integration
|
|
474
485
|
* Returns both original and processed responses for AB testing
|
|
@@ -1186,6 +1197,29 @@ export declare class NeuroLink {
|
|
|
1186
1197
|
* @returns boolean indicating if Redis storage is configured and available
|
|
1187
1198
|
*/
|
|
1188
1199
|
isToolExecutionStorageAvailable(): boolean;
|
|
1200
|
+
/**
|
|
1201
|
+
* Get the raw messages array for a session.
|
|
1202
|
+
* Returns the full messages list without context filtering or summarization.
|
|
1203
|
+
* @param sessionId - The session ID to retrieve messages for
|
|
1204
|
+
* @returns Array of ChatMessage objects, or empty array if session doesn't exist
|
|
1205
|
+
*/
|
|
1206
|
+
getSessionMessages(sessionId: string, userId?: string): Promise<ChatMessage[]>;
|
|
1207
|
+
/**
|
|
1208
|
+
* Replace the entire messages array for a session.
|
|
1209
|
+
* @param sessionId - The session ID to update
|
|
1210
|
+
* @param messages - The new messages array
|
|
1211
|
+
* @param userId - Optional user ID for scoped Redis key lookup
|
|
1212
|
+
*/
|
|
1213
|
+
setSessionMessages(sessionId: string, messages: ChatMessage[], userId?: string): Promise<void>;
|
|
1214
|
+
/**
|
|
1215
|
+
* Modify the last assistant message in a session using a transformer function.
|
|
1216
|
+
* Convenience wrapper around getSessionMessages/setSessionMessages.
|
|
1217
|
+
* @param sessionId - The session ID to modify
|
|
1218
|
+
* @param transformer - Function that receives the last assistant message content and returns the modified content
|
|
1219
|
+
* @param userId - Optional user ID for scoped Redis key lookup
|
|
1220
|
+
* @returns true if a message was modified, false if no assistant message was found
|
|
1221
|
+
*/
|
|
1222
|
+
modifyLastAssistantMessage(sessionId: string, transformer: (content: string) => string, userId?: string): Promise<boolean>;
|
|
1189
1223
|
/**
|
|
1190
1224
|
* Add an external MCP server
|
|
1191
1225
|
* Automatically discovers and registers tools from the server
|