@n8n/chat-hub 1.1.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.
@@ -0,0 +1,2 @@
1
+ export * from './parser';
2
+ export * from './artifact';
package/dist/index.js ADDED
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./parser"), exports);
18
+ __exportStar(require("./artifact"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,2CAAyB;AACzB,6CAA2B"}
@@ -0,0 +1,7 @@
1
+ import { type ChatHubMessageType, type ChatMessageContentChunk } from '@n8n/api-types';
2
+ export interface MessageWithContent {
3
+ type: ChatHubMessageType;
4
+ content: string;
5
+ }
6
+ export declare function appendChunkToParsedMessageItems(items: ChatMessageContentChunk[], chunk: string): ChatMessageContentChunk[];
7
+ export declare function parseMessage(message: MessageWithContent): ChatMessageContentChunk[];
package/dist/parser.js ADDED
@@ -0,0 +1,203 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.appendChunkToParsedMessageItems = appendChunkToParsedMessageItems;
4
+ exports.parseMessage = parseMessage;
5
+ const api_types_1 = require("@n8n/api-types");
6
+ function appendChunkToParsedMessageItems(items, chunk) {
7
+ const result = [...items];
8
+ let remaining = chunk;
9
+ if (result.length > 0) {
10
+ const lastItem = result[result.length - 1];
11
+ if (lastItem.type === 'hidden') {
12
+ remaining = lastItem.content + chunk;
13
+ result.pop();
14
+ }
15
+ else if ((lastItem.type === 'artifact-create' || lastItem.type === 'artifact-edit') &&
16
+ lastItem.isIncomplete) {
17
+ remaining = lastItem.content + chunk;
18
+ result.pop();
19
+ }
20
+ }
21
+ const buttonChunk = tryParseButtonsJson(remaining);
22
+ if (buttonChunk) {
23
+ result.push(buttonChunk);
24
+ return result;
25
+ }
26
+ let currentPos = 0;
27
+ const createCommandRegex = /<command:artifact-create>/g;
28
+ const editCommandRegex = /<command:artifact-edit>/g;
29
+ while (currentPos < remaining.length) {
30
+ createCommandRegex.lastIndex = currentPos;
31
+ editCommandRegex.lastIndex = currentPos;
32
+ const createMatch = createCommandRegex.exec(remaining);
33
+ const editMatch = editCommandRegex.exec(remaining);
34
+ let nextMatch = null;
35
+ let commandType = null;
36
+ if (createMatch && editMatch) {
37
+ if (createMatch.index < editMatch.index) {
38
+ nextMatch = createMatch;
39
+ commandType = 'create';
40
+ }
41
+ else {
42
+ nextMatch = editMatch;
43
+ commandType = 'edit';
44
+ }
45
+ }
46
+ else if (createMatch) {
47
+ nextMatch = createMatch;
48
+ commandType = 'create';
49
+ }
50
+ else if (editMatch) {
51
+ nextMatch = editMatch;
52
+ commandType = 'edit';
53
+ }
54
+ if (!nextMatch || !commandType) {
55
+ const textContent = remaining.slice(currentPos);
56
+ if (textContent) {
57
+ const { text, hiddenPrefix } = splitPotentialCommandPrefix(textContent);
58
+ if (text) {
59
+ addTextToResult(result, text);
60
+ }
61
+ if (hiddenPrefix) {
62
+ result.push({ type: 'hidden', content: hiddenPrefix });
63
+ }
64
+ }
65
+ break;
66
+ }
67
+ if (nextMatch.index > currentPos) {
68
+ const textContent = remaining.slice(currentPos, nextMatch.index);
69
+ addTextToResult(result, textContent);
70
+ }
71
+ const commandStart = nextMatch.index;
72
+ const commandContent = remaining.slice(commandStart);
73
+ if (commandType === 'create') {
74
+ const parsed = parseArtifactCreateCommand(commandContent);
75
+ result.push(parsed.item);
76
+ currentPos = commandStart + parsed.consumed;
77
+ }
78
+ else {
79
+ const parsed = parseArtifactEditCommand(commandContent);
80
+ result.push(parsed.item);
81
+ currentPos = commandStart + parsed.consumed;
82
+ }
83
+ }
84
+ return result;
85
+ }
86
+ function addTextToResult(result, textContent) {
87
+ if (textContent === '') {
88
+ return;
89
+ }
90
+ if (result.length > 0) {
91
+ const lastItem = result[result.length - 1];
92
+ if (lastItem.type === 'text') {
93
+ result[result.length - 1] = { type: 'text', content: lastItem.content + textContent };
94
+ return;
95
+ }
96
+ }
97
+ result.push({ type: 'text', content: textContent });
98
+ }
99
+ function splitPotentialCommandPrefix(text) {
100
+ const commandTags = ['<command:artifact-create>', '<command:artifact-edit>'];
101
+ for (let len = 1; len <= Math.min(text.length, 30); len++) {
102
+ const suffix = text.slice(-len);
103
+ for (const tag of commandTags) {
104
+ if (tag.startsWith(suffix)) {
105
+ return {
106
+ text: text.slice(0, -len),
107
+ hiddenPrefix: suffix,
108
+ };
109
+ }
110
+ }
111
+ }
112
+ return { text, hiddenPrefix: '' };
113
+ }
114
+ function parseArtifactCreateCommand(content) {
115
+ const closingTag = '</command:artifact-create>';
116
+ const closingIndex = content.indexOf(closingTag);
117
+ const isIncomplete = closingIndex === -1;
118
+ const commandContent = isIncomplete
119
+ ? content
120
+ : content.slice(0, closingIndex + closingTag.length);
121
+ const title = extractTagContent(commandContent, 'title') ?? '';
122
+ const type = extractTagContent(commandContent, 'type') ?? '';
123
+ const contentField = extractTagContent(commandContent, 'content') ?? '';
124
+ return {
125
+ item: {
126
+ type: 'artifact-create',
127
+ content: commandContent,
128
+ command: { title, type, content: contentField },
129
+ isIncomplete,
130
+ },
131
+ consumed: commandContent.length,
132
+ };
133
+ }
134
+ function parseArtifactEditCommand(content) {
135
+ const closingTag = '</command:artifact-edit>';
136
+ const closingIndex = content.indexOf(closingTag);
137
+ const isIncomplete = closingIndex === -1;
138
+ const commandContent = isIncomplete
139
+ ? content
140
+ : content.slice(0, closingIndex + closingTag.length);
141
+ const title = extractTagContent(commandContent, 'title') ?? '';
142
+ const oldString = extractTagContent(commandContent, 'oldString') ?? '';
143
+ const newString = extractTagContent(commandContent, 'newString') ?? '';
144
+ const replaceAllStr = extractTagContent(commandContent, 'replaceAll') ?? 'false';
145
+ const replaceAll = replaceAllStr.toLowerCase() === 'true';
146
+ return {
147
+ item: {
148
+ type: 'artifact-edit',
149
+ content: commandContent,
150
+ command: { title, oldString, newString, replaceAll },
151
+ isIncomplete,
152
+ },
153
+ consumed: commandContent.length,
154
+ };
155
+ }
156
+ function extractTagContent(xml, tagName) {
157
+ const openTag = `<${tagName}>`;
158
+ const closeTag = `</${tagName}>`;
159
+ const startIndex = xml.indexOf(openTag);
160
+ if (startIndex === -1) {
161
+ return null;
162
+ }
163
+ const contentStart = startIndex + openTag.length;
164
+ const endIndex = xml.indexOf(closeTag, contentStart);
165
+ if (endIndex === -1) {
166
+ let content = xml.slice(contentStart);
167
+ for (let len = 1; len < closeTag.length; len++) {
168
+ const partialCloseTag = closeTag.slice(0, len);
169
+ if (content.endsWith(partialCloseTag)) {
170
+ content = content.slice(0, -len);
171
+ break;
172
+ }
173
+ }
174
+ return content.length > 0 ? content : null;
175
+ }
176
+ return xml.slice(contentStart, endIndex);
177
+ }
178
+ function tryParseButtonsJson(content) {
179
+ if (!content.startsWith('{'))
180
+ return null;
181
+ try {
182
+ const parsed = JSON.parse(content);
183
+ const result = api_types_1.chatHubMessageWithButtonsSchema.safeParse(parsed);
184
+ if (result.success) {
185
+ return {
186
+ type: 'with-buttons',
187
+ content: result.data.text,
188
+ buttons: result.data.buttons,
189
+ blockUserInput: result.data.blockUserInput,
190
+ };
191
+ }
192
+ }
193
+ catch {
194
+ }
195
+ return null;
196
+ }
197
+ function parseMessage(message) {
198
+ if (message.type !== 'ai') {
199
+ return [{ type: 'text', content: message.content }];
200
+ }
201
+ return appendChunkToParsedMessageItems([], message.content);
202
+ }
203
+ //# sourceMappingURL=parser.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"parser.js","sourceRoot":"","sources":["../src/parser.ts"],"names":[],"mappings":"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"}
package/package.json ADDED
@@ -0,0 +1,30 @@
1
+ {
2
+ "name": "@n8n/chat-hub",
3
+ "version": "1.1.0",
4
+ "main": "dist/index.js",
5
+ "module": "src/index.ts",
6
+ "types": "dist/index.d.ts",
7
+ "files": [
8
+ "dist/**/*"
9
+ ],
10
+ "devDependencies": {
11
+ "@n8n/typescript-config": "1.3.0"
12
+ },
13
+ "dependencies": {
14
+ "@n8n/api-types": "1.8.0"
15
+ },
16
+ "scripts": {
17
+ "clean": "rimraf dist .turbo",
18
+ "dev": "pnpm watch",
19
+ "typecheck": "tsc --noEmit",
20
+ "build": "tsc -p tsconfig.build.json",
21
+ "format": "biome format --write .",
22
+ "format:check": "biome ci .",
23
+ "lint": "eslint . --quiet",
24
+ "lint:fix": "eslint . --fix",
25
+ "watch": "tsc -p tsconfig.build.json --watch",
26
+ "test": "jest",
27
+ "test:unit": "jest",
28
+ "test:dev": "jest --watch"
29
+ }
30
+ }