@catalogicus-international/n8n-nodes-light-rag 0.3.0 → 0.4.1

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/README.md CHANGED
@@ -1,13 +1,15 @@
1
1
  # @catalogicus-international/n8n-nodes-light-rag
2
2
 
3
- An n8n community package that exposes a LightRAG API server to regular workflows and
4
- AI Agents. Current release: `0.3.0`.
3
+ An n8n community package for LightRAG workflows, AI Agent retrieval, document
4
+ management, and live query progress in n8n Chat. Current release: `0.4.1`.
5
5
 
6
- Release `0.3.0` adds separate entity and relationship token budgets and removes the
7
- node-side upper bounds from positive numeric retrieval settings. `LightRAG Tool` remains
8
- retrieval-only through `POST /query/data`: LightRAG retrieves text chunks and the
9
- connected AI agent writes the final answer. The regular workflow node keeps its existing
10
- operations and response behavior.
6
+ Release `0.4.0` adds opt-in LightRAG query progress, source excerpts, and answer
7
+ streaming for n8n Chat while preserving the regular workflow node's default buffered
8
+ behavior. `LightRAG Tool` remains retrieval-only through `POST /query/data`: LightRAG
9
+ retrieves text chunks and the connected AI agent writes the final answer.
10
+
11
+ Release `0.4.1` synchronizes the npm and node descriptions and the repository skills
12
+ with the streaming behavior introduced in `0.4.0`; runtime behavior is unchanged.
11
13
 
12
14
  ## Nodes
13
15
 
@@ -36,6 +38,27 @@ You can replace the Request Body expression with a manually configured object or
36
38
  individual fields from previous nodes. Responses are emitted through the normal Main
37
39
  output and retain n8n item pairing.
38
40
 
41
+ #### Stream Query progress to n8n Chat
42
+
43
+ Enable `Stream Progress to Chat` on the `Query` operation to remove the silent wait in
44
+ an n8n chat workflow. The Chat Trigger must use `Streaming response`, and the LightRAG
45
+ server must support `POST /query/stream`, `include_progress`, and
46
+ `include_chunk_content`.
47
+
48
+ The node immediately displays a request-start message, then translates LightRAG's live
49
+ retrieval stages into short Russian status messages. Once retrieval completes, it shows
50
+ up to three unique source file names with one excerpt of at most 240 characters each.
51
+ Only the file basename is shown; internal directory paths remain hidden. The streamed
52
+ LightRAG answer follows under an `Ответ` heading. These messages remain together in the
53
+ final Markdown chat response.
54
+
55
+ In this mode the node forces `stream`, `include_progress`, `include_references`, and
56
+ `include_chunk_content` to `true` and parses the NDJSON response incrementally. Its Main
57
+ output remains an aggregated query result containing `response`, `references`, and any
58
+ `response_time` or `llm_generated` metadata returned by LightRAG. Outside a streaming
59
+ Chat Trigger workflow, the same mode still parses and returns the complete result but
60
+ does not emit UI chunks.
61
+
39
62
  ### LightRAG Tool
40
63
 
41
64
  Connect `LightRAG Tool` to the tool input of an n8n AI Agent. This node is dedicated
@@ -111,7 +134,7 @@ management and custom requests, but is not exposed as an AI Agent tool.
111
134
 
112
135
  ## Supported operations
113
136
 
114
- - `query` — `POST /query`;
137
+ - `query` — `POST /query`, or `POST /query/stream` when `Stream Progress to Chat` is enabled;
115
138
  - `queryData` — `POST /query/data`;
116
139
  - `insertText` — `POST /documents/text`;
117
140
  - `insertTexts` — `POST /documents/texts`;
@@ -4,6 +4,7 @@ exports.LightRag = void 0;
4
4
  const n8n_workflow_1 = require("n8n-workflow");
5
5
  const request_1 = require("../LightRagTool/request");
6
6
  const workflowRequest_1 = require("./workflowRequest");
7
+ const streamingQuery_1 = require("./streamingQuery");
7
8
  const bodyOperations = [
8
9
  'query',
9
10
  'queryData',
@@ -21,7 +22,7 @@ class LightRag {
21
22
  group: ['transform'],
22
23
  version: 1,
23
24
  subtitle: '={{$parameter["operation"]}}',
24
- description: 'Query and manage LightRAG in a regular n8n workflow',
25
+ description: 'Query and manage LightRAG with optional live progress in n8n Chat',
25
26
  defaults: {
26
27
  name: 'LightRAG',
27
28
  },
@@ -121,6 +122,30 @@ class LightRag {
121
122
  },
122
123
  description: 'JSON body sent to LightRAG. By default, the complete current input item is used.',
123
124
  },
125
+ {
126
+ displayName: 'Stream Progress to Chat',
127
+ name: 'streamProgressToChat',
128
+ type: 'boolean',
129
+ default: false,
130
+ displayOptions: {
131
+ show: {
132
+ operation: ['query'],
133
+ },
134
+ },
135
+ description: 'Whether to stream LightRAG retrieval progress, source excerpts, and answer text to an n8n Chat Trigger',
136
+ },
137
+ {
138
+ displayName: 'Chat Trigger must use Streaming Response. Requires a recent LightRAG server with /query/stream and include_progress support.',
139
+ name: 'streamProgressNotice',
140
+ type: 'notice',
141
+ default: '',
142
+ displayOptions: {
143
+ show: {
144
+ operation: ['query'],
145
+ streamProgressToChat: [true],
146
+ },
147
+ },
148
+ },
124
149
  {
125
150
  displayName: 'Track ID',
126
151
  name: 'trackId',
@@ -201,12 +226,16 @@ class LightRag {
201
226
  const credentials = await this.getCredentials('lightRagApi');
202
227
  const baseUrl = (0, request_1.normalizeBaseUrl)(credentials.baseUrl);
203
228
  for (let itemIndex = 0; itemIndex < items.length; itemIndex++) {
229
+ let chatStreamStarted = false;
204
230
  try {
205
231
  const operation = this.getNodeParameter('operation', itemIndex);
206
232
  const parameters = {};
207
233
  if (bodyOperations.includes(operation)) {
208
234
  parameters.body = this.getNodeParameter('body', itemIndex);
209
235
  }
236
+ const streamProgressToChat = operation === 'query'
237
+ ? this.getNodeParameter('streamProgressToChat', itemIndex, false)
238
+ : false;
210
239
  if (operation === 'trackStatus') {
211
240
  parameters.trackId = this.getNodeParameter('trackId', itemIndex);
212
241
  }
@@ -220,10 +249,54 @@ class LightRag {
220
249
  }
221
250
  }
222
251
  const request = (0, workflowRequest_1.normalizeWorkflowRequest)(operation, parameters);
252
+ if (streamProgressToChat) {
253
+ const canStreamToChat = this.isStreaming();
254
+ const sentEvents = new Set();
255
+ const sentMessages = new Set();
256
+ let answerStarted = false;
257
+ const sendItem = (content) => {
258
+ if (canStreamToChat)
259
+ this.sendChunk('item', itemIndex, content);
260
+ };
261
+ if (canStreamToChat) {
262
+ this.sendChunk('begin', itemIndex);
263
+ chatStreamStarted = true;
264
+ sendItem('_🔎 Отправляю запрос в базу знаний…_\n\n');
265
+ }
266
+ const response = await (0, streamingQuery_1.executeStreamingQuery)(this, baseUrl, (0, streamingQuery_1.normalizeStreamingQueryBody)(request.body), {
267
+ onProgress: (event) => {
268
+ const message = (0, streamingQuery_1.progressMessage)(event);
269
+ if (sentEvents.has(event) || sentMessages.has(message))
270
+ return;
271
+ sentEvents.add(event);
272
+ sentMessages.add(message);
273
+ sendItem(`_${message}_\n\n`);
274
+ },
275
+ onReferences: (references) => {
276
+ sendItem((0, streamingQuery_1.formatReferencesMessage)(references));
277
+ },
278
+ onResponseChunk: (chunk) => {
279
+ if (!answerStarted) {
280
+ answerStarted = true;
281
+ sendItem('---\n\n**Ответ:**\n\n');
282
+ }
283
+ sendItem(chunk);
284
+ },
285
+ });
286
+ if (canStreamToChat) {
287
+ this.sendChunk('end', itemIndex);
288
+ chatStreamStarted = false;
289
+ }
290
+ returnData.push({ json: response, pairedItem: itemIndex });
291
+ continue;
292
+ }
223
293
  const response = await (0, request_1.executeLightRagRequest)(this, baseUrl, request);
224
294
  returnData.push(...(0, request_1.responseToExecutionData)(response, itemIndex));
225
295
  }
226
296
  catch (error) {
297
+ if (chatStreamStarted) {
298
+ this.sendChunk('error', itemIndex, error instanceof Error ? error.message : 'LightRAG streaming query failed');
299
+ }
227
300
  if (this.continueOnFail()) {
228
301
  returnData.push({
229
302
  json: { error: error instanceof Error ? error.message : String(error) },
@@ -1 +1 @@
1
- {"version":3,"file":"LightRag.node.js","sourceRoot":"","sources":["../../../nodes/LightRag/LightRag.node.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"LightRag.node.js","sourceRoot":"","sources":["../../../nodes/LightRag/LightRag.node.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import type { IDataObject, IExecuteFunctions } from 'n8n-workflow';
2
+ interface StreamReference extends IDataObject {
3
+ file_path?: string;
4
+ content?: string[];
5
+ }
6
+ export interface StreamingQueryCallbacks {
7
+ onProgress?: (event: string) => void;
8
+ onReferences?: (references: StreamReference[]) => void;
9
+ onResponseChunk?: (chunk: string) => void;
10
+ }
11
+ export interface StreamingQueryResult extends IDataObject {
12
+ response: string;
13
+ references: StreamReference[];
14
+ response_time?: number;
15
+ llm_generated?: boolean;
16
+ }
17
+ export declare function normalizeStreamingQueryBody(value: unknown): IDataObject;
18
+ export declare function parseLightRagQueryStream(stream: AsyncIterable<unknown>, callbacks?: StreamingQueryCallbacks): Promise<StreamingQueryResult>;
19
+ export declare function executeStreamingQuery(context: IExecuteFunctions, baseUrl: string, body: IDataObject, callbacks?: StreamingQueryCallbacks): Promise<StreamingQueryResult>;
20
+ export declare function progressMessage(event: string): string;
21
+ export declare function formatReferencesMessage(references: StreamReference[]): string;
22
+ export {};
@@ -0,0 +1,192 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.normalizeStreamingQueryBody = normalizeStreamingQueryBody;
4
+ exports.parseLightRagQueryStream = parseLightRagQueryStream;
5
+ exports.executeStreamingQuery = executeStreamingQuery;
6
+ exports.progressMessage = progressMessage;
7
+ exports.formatReferencesMessage = formatReferencesMessage;
8
+ const n8n_workflow_1 = require("n8n-workflow");
9
+ const request_1 = require("../LightRagTool/request");
10
+ const PROGRESS_MESSAGES = {
11
+ extracting_keywords: '🔑 Выделяю ключевые понятия…',
12
+ retrieving_entities: '🧩 Ищу связанные сущности…',
13
+ retrieving_relations: '🔗 Проверяю связи…',
14
+ retrieving_chunks: '📚 Подбираю фрагменты документов…',
15
+ reranking: '🎯 Уточняю релевантность результатов…',
16
+ generating_response: '✍️ Формирую ответ по найденным материалам…',
17
+ };
18
+ const UNKNOWN_PROGRESS_MESSAGE = '⚙️ Выполняю следующий этап поиска…';
19
+ function isObject(value) {
20
+ return value !== null && typeof value === 'object' && !Array.isArray(value);
21
+ }
22
+ function asReferences(value) {
23
+ if (!Array.isArray(value) || !value.every(isObject)) {
24
+ throw new n8n_workflow_1.ApplicationError('LightRAG returned malformed references in the query stream');
25
+ }
26
+ return value;
27
+ }
28
+ function parseStreamLine(line, result, callbacks) {
29
+ var _a, _b, _c;
30
+ let value;
31
+ try {
32
+ value = JSON.parse(line);
33
+ }
34
+ catch {
35
+ throw new n8n_workflow_1.ApplicationError('LightRAG returned malformed NDJSON in the query stream');
36
+ }
37
+ if (!isObject(value)) {
38
+ throw new n8n_workflow_1.ApplicationError('LightRAG returned a malformed query stream event');
39
+ }
40
+ if (value.error !== undefined) {
41
+ if (typeof value.error !== 'string' || !value.error.trim()) {
42
+ throw new n8n_workflow_1.ApplicationError('LightRAG returned a malformed query stream error');
43
+ }
44
+ throw new n8n_workflow_1.ApplicationError(`LightRAG query stream reported an error: ${value.error.trim()}`);
45
+ }
46
+ if (value.progress !== undefined) {
47
+ if (typeof value.progress !== 'string' || !value.progress.trim()) {
48
+ throw new n8n_workflow_1.ApplicationError('LightRAG returned malformed progress in the query stream');
49
+ }
50
+ (_a = callbacks.onProgress) === null || _a === void 0 ? void 0 : _a.call(callbacks, value.progress.trim());
51
+ }
52
+ if (value.references !== undefined) {
53
+ const references = asReferences(value.references);
54
+ result.references = references;
55
+ (_b = callbacks.onReferences) === null || _b === void 0 ? void 0 : _b.call(callbacks, references);
56
+ }
57
+ if (value.llm_generated !== undefined) {
58
+ if (typeof value.llm_generated !== 'boolean') {
59
+ throw new n8n_workflow_1.ApplicationError('LightRAG returned malformed LLM metadata in the query stream');
60
+ }
61
+ result.llm_generated = value.llm_generated;
62
+ }
63
+ if (value.response_time !== undefined) {
64
+ if (typeof value.response_time !== 'number' || !Number.isFinite(value.response_time)) {
65
+ throw new n8n_workflow_1.ApplicationError('LightRAG returned malformed timing metadata in the query stream');
66
+ }
67
+ result.response_time = value.response_time;
68
+ }
69
+ if (value.response !== undefined) {
70
+ if (typeof value.response !== 'string') {
71
+ throw new n8n_workflow_1.ApplicationError('LightRAG returned malformed response content in the query stream');
72
+ }
73
+ result.response += value.response;
74
+ (_c = callbacks.onResponseChunk) === null || _c === void 0 ? void 0 : _c.call(callbacks, value.response);
75
+ return true;
76
+ }
77
+ return false;
78
+ }
79
+ function normalizeStreamingQueryBody(value) {
80
+ const body = (0, request_1.parseRequestObject)(value, 'Query body');
81
+ return {
82
+ ...body,
83
+ stream: true,
84
+ include_progress: true,
85
+ include_references: true,
86
+ include_chunk_content: true,
87
+ };
88
+ }
89
+ async function parseLightRagQueryStream(stream, callbacks = {}) {
90
+ const decoder = new TextDecoder();
91
+ const result = { response: '', references: [] };
92
+ let buffer = '';
93
+ let receivedResponse = false;
94
+ const processLines = (flush) => {
95
+ var _a;
96
+ const lines = buffer.split('\n');
97
+ buffer = flush ? '' : ((_a = lines.pop()) !== null && _a !== void 0 ? _a : '');
98
+ for (const rawLine of lines) {
99
+ const line = rawLine.trim();
100
+ if (!line)
101
+ continue;
102
+ receivedResponse = parseStreamLine(line, result, callbacks) || receivedResponse;
103
+ }
104
+ };
105
+ for await (const chunk of stream) {
106
+ if (typeof chunk === 'string') {
107
+ buffer += chunk;
108
+ }
109
+ else if (chunk instanceof Uint8Array) {
110
+ buffer += decoder.decode(chunk, { stream: true });
111
+ }
112
+ else {
113
+ throw new n8n_workflow_1.ApplicationError('LightRAG returned an unsupported query stream chunk');
114
+ }
115
+ processLines(false);
116
+ }
117
+ buffer += decoder.decode();
118
+ if (buffer.trim())
119
+ buffer += '\n';
120
+ processLines(true);
121
+ if (!receivedResponse) {
122
+ throw new n8n_workflow_1.ApplicationError('LightRAG query stream ended without a response');
123
+ }
124
+ return result;
125
+ }
126
+ async function executeStreamingQuery(context, baseUrl, body, callbacks = {}) {
127
+ const response = await context.helpers.httpRequestWithAuthentication.call(context, 'lightRagApi', {
128
+ method: 'POST',
129
+ url: `${baseUrl}/query/stream`,
130
+ body,
131
+ json: true,
132
+ encoding: 'stream',
133
+ returnFullResponse: true,
134
+ abortSignal: context.getExecutionCancelSignal(),
135
+ });
136
+ const responseBody = isObject(response) && response.body !== undefined ? response.body : response;
137
+ if (responseBody === null ||
138
+ typeof responseBody !== 'object' ||
139
+ !(Symbol.asyncIterator in responseBody)) {
140
+ throw new n8n_workflow_1.ApplicationError('LightRAG did not return a readable query stream');
141
+ }
142
+ return await parseLightRagQueryStream(responseBody, callbacks);
143
+ }
144
+ function progressMessage(event) {
145
+ var _a;
146
+ return (_a = PROGRESS_MESSAGES[event]) !== null && _a !== void 0 ? _a : UNKNOWN_PROGRESS_MESSAGE;
147
+ }
148
+ function escapeMarkdown(value) {
149
+ return value.replace(/([\\`*_[\]{}()#+\-.!|>])/g, '\\$1');
150
+ }
151
+ function sourceName(filePath, index) {
152
+ if (typeof filePath !== 'string' || !filePath.trim())
153
+ return `Источник ${index + 1}`;
154
+ const segments = filePath.trim().split(/[\\/]/);
155
+ return segments.at(-1) || `Источник ${index + 1}`;
156
+ }
157
+ function excerpt(reference) {
158
+ if (!Array.isArray(reference.content))
159
+ return undefined;
160
+ const content = reference.content.find((candidate) => typeof candidate === 'string' && candidate.trim());
161
+ if (!content)
162
+ return undefined;
163
+ const normalized = content.replace(/\s+/g, ' ').trim();
164
+ const characters = Array.from(normalized);
165
+ return characters.length > 240 ? `${characters.slice(0, 240).join('')}…` : normalized;
166
+ }
167
+ function formatReferencesMessage(references) {
168
+ const uniqueReferences = [];
169
+ const seenPaths = new Set();
170
+ for (const reference of references) {
171
+ const path = typeof reference.file_path === 'string' ? reference.file_path.trim() : '';
172
+ const key = path || JSON.stringify(reference);
173
+ if (seenPaths.has(key))
174
+ continue;
175
+ seenPaths.add(key);
176
+ uniqueReferences.push(reference);
177
+ if (uniqueReferences.length === 3)
178
+ break;
179
+ }
180
+ if (uniqueReferences.length === 0) {
181
+ return '**Поиск завершён:** релевантные источники не найдены.\n\n';
182
+ }
183
+ const items = uniqueReferences.map((reference, index) => {
184
+ const name = escapeMarkdown(sourceName(reference.file_path, index));
185
+ const content = excerpt(reference);
186
+ return content
187
+ ? `${index + 1}. **${name}** — ${escapeMarkdown(content)}`
188
+ : `${index + 1}. **${name}**`;
189
+ });
190
+ return `**Найденные материалы:**\n\n${items.join('\n\n')}\n\n`;
191
+ }
192
+ //# sourceMappingURL=streamingQuery.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"streamingQuery.js","sourceRoot":"","sources":["../../../nodes/LightRag/streamingQuery.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "name": "@catalogicus-international/n8n-nodes-light-rag",
3
- "version": "0.3.0",
4
- "description": "n8n workflow and AI Agent tool nodes for the LightRAG API server",
3
+ "version": "0.4.1",
4
+ "description": "n8n nodes for LightRAG workflows, AI Agent retrieval, and live Chat query progress",
5
5
  "license": "MIT",
6
6
  "packageManager": "pnpm@9.15.0",
7
7
  "homepage": "https://github.com/catalogicus-international/n8n-nodes-light-rag#readme",