@elizaos/plugin-line 2.0.0-alpha.3 → 2.0.0-alpha.4

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 (61) hide show
  1. package/dist/accounts.d.ts +152 -0
  2. package/dist/accounts.d.ts.map +1 -0
  3. package/dist/accounts.js +258 -0
  4. package/dist/accounts.js.map +1 -0
  5. package/dist/actions/index.d.ts +7 -0
  6. package/dist/actions/index.d.ts.map +1 -0
  7. package/{src/actions/index.ts → dist/actions/index.js} +1 -1
  8. package/dist/actions/index.js.map +1 -0
  9. package/dist/actions/sendFlexMessage.d.ts +6 -0
  10. package/dist/actions/sendFlexMessage.d.ts.map +1 -0
  11. package/dist/actions/sendFlexMessage.js +178 -0
  12. package/dist/actions/sendFlexMessage.js.map +1 -0
  13. package/dist/actions/sendLocation.d.ts +6 -0
  14. package/dist/actions/sendLocation.d.ts.map +1 -0
  15. package/dist/actions/sendLocation.js +155 -0
  16. package/dist/actions/sendLocation.js.map +1 -0
  17. package/dist/actions/sendMessage.d.ts +6 -0
  18. package/dist/actions/sendMessage.d.ts.map +1 -0
  19. package/dist/actions/sendMessage.js +146 -0
  20. package/dist/actions/sendMessage.js.map +1 -0
  21. package/dist/index.d.ts +22 -0
  22. package/dist/index.d.ts.map +1 -0
  23. package/dist/index.js.map +1 -0
  24. package/dist/messaging.d.ts +142 -0
  25. package/dist/messaging.d.ts.map +1 -0
  26. package/dist/messaging.js +348 -0
  27. package/dist/messaging.js.map +1 -0
  28. package/dist/providers/chatContext.d.ts +6 -0
  29. package/dist/providers/chatContext.d.ts.map +1 -0
  30. package/dist/providers/chatContext.js +85 -0
  31. package/dist/providers/chatContext.js.map +1 -0
  32. package/dist/providers/index.d.ts +6 -0
  33. package/dist/providers/index.d.ts.map +1 -0
  34. package/{src/providers/index.ts → dist/providers/index.js} +1 -1
  35. package/dist/providers/index.js.map +1 -0
  36. package/dist/providers/userContext.d.ts +6 -0
  37. package/dist/providers/userContext.d.ts.map +1 -0
  38. package/dist/providers/userContext.js +70 -0
  39. package/dist/providers/userContext.js.map +1 -0
  40. package/dist/service.d.ts +102 -0
  41. package/dist/service.d.ts.map +1 -0
  42. package/dist/service.js +433 -0
  43. package/dist/service.js.map +1 -0
  44. package/dist/types.d.ts +279 -0
  45. package/dist/types.d.ts.map +1 -0
  46. package/dist/types.js +106 -0
  47. package/dist/types.js.map +1 -0
  48. package/package.json +21 -6
  49. package/__tests__/integration.test.ts +0 -782
  50. package/build.ts +0 -16
  51. package/src/accounts.ts +0 -462
  52. package/src/actions/sendFlexMessage.ts +0 -243
  53. package/src/actions/sendLocation.ts +0 -223
  54. package/src/actions/sendMessage.ts +0 -202
  55. package/src/index.ts +0 -123
  56. package/src/messaging.ts +0 -507
  57. package/src/providers/chatContext.ts +0 -110
  58. package/src/providers/userContext.ts +0 -99
  59. package/src/service.ts +0 -578
  60. package/src/types.ts +0 -417
  61. package/tsconfig.json +0 -22
@@ -0,0 +1,348 @@
1
+ /**
2
+ * LINE text chunk limit (API supports 5000 characters per message)
3
+ */
4
+ export const LINE_TEXT_CHUNK_LIMIT = 5000;
5
+ /**
6
+ * LINE max messages per reply (API supports up to 5 messages in a reply)
7
+ */
8
+ export const LINE_MAX_REPLY_MESSAGES = 5;
9
+ /**
10
+ * Regex patterns for markdown detection
11
+ */
12
+ const MARKDOWN_TABLE_REGEX = /^\|(.+)\|[\r\n]+\|[-:\s|]+\|[\r\n]+((?:\|.+\|[\r\n]*)+)/gm;
13
+ const MARKDOWN_CODE_BLOCK_REGEX = /```(\w*)\n([\s\S]*?)```/g;
14
+ const MARKDOWN_LINK_REGEX = /\[([^\]]+)\]\(([^)]+)\)/g;
15
+ /**
16
+ * Parses a single table row (pipe-separated values)
17
+ */
18
+ function parseTableRow(row) {
19
+ return row
20
+ .split("|")
21
+ .map((cell) => cell.trim())
22
+ .filter((cell, index, arr) => {
23
+ // Filter out empty cells at start/end (from leading/trailing pipes)
24
+ if (index === 0 && cell === "") {
25
+ return false;
26
+ }
27
+ if (index === arr.length - 1 && cell === "") {
28
+ return false;
29
+ }
30
+ return true;
31
+ });
32
+ }
33
+ /**
34
+ * Extracts markdown tables from text
35
+ */
36
+ export function extractMarkdownTables(text) {
37
+ const tables = [];
38
+ let textWithoutTables = text;
39
+ // Reset regex state
40
+ MARKDOWN_TABLE_REGEX.lastIndex = 0;
41
+ const matches = [];
42
+ for (let match = MARKDOWN_TABLE_REGEX.exec(text); match !== null; match = MARKDOWN_TABLE_REGEX.exec(text)) {
43
+ const fullMatch = match[0];
44
+ const headerLine = match[1];
45
+ const bodyLines = match[2];
46
+ const headers = parseTableRow(headerLine);
47
+ const rows = bodyLines
48
+ .trim()
49
+ .split(/[\r\n]+/)
50
+ .filter((line) => line.trim())
51
+ .map(parseTableRow);
52
+ if (headers.length > 0 && rows.length > 0) {
53
+ matches.push({
54
+ fullMatch,
55
+ table: { headers, rows },
56
+ });
57
+ }
58
+ }
59
+ // Remove tables from text in reverse order to preserve indices
60
+ for (let i = matches.length - 1; i >= 0; i--) {
61
+ const { fullMatch, table } = matches[i];
62
+ tables.unshift(table);
63
+ textWithoutTables = textWithoutTables.replace(fullMatch, "");
64
+ }
65
+ return { tables, textWithoutTables };
66
+ }
67
+ /**
68
+ * Extracts code blocks from text
69
+ */
70
+ export function extractCodeBlocks(text) {
71
+ const codeBlocks = [];
72
+ let textWithoutCode = text;
73
+ // Reset regex state
74
+ MARKDOWN_CODE_BLOCK_REGEX.lastIndex = 0;
75
+ const matches = [];
76
+ for (let match = MARKDOWN_CODE_BLOCK_REGEX.exec(text); match !== null; match = MARKDOWN_CODE_BLOCK_REGEX.exec(text)) {
77
+ const fullMatch = match[0];
78
+ const language = match[1] || undefined;
79
+ const code = match[2];
80
+ matches.push({
81
+ fullMatch,
82
+ block: { language, code: code.trim() },
83
+ });
84
+ }
85
+ // Remove code blocks in reverse order
86
+ for (let i = matches.length - 1; i >= 0; i--) {
87
+ const { fullMatch, block } = matches[i];
88
+ codeBlocks.unshift(block);
89
+ textWithoutCode = textWithoutCode.replace(fullMatch, "");
90
+ }
91
+ return { codeBlocks, textWithoutCode };
92
+ }
93
+ /**
94
+ * Extracts markdown links from text
95
+ */
96
+ export function extractLinks(text) {
97
+ const links = [];
98
+ // Reset regex state
99
+ MARKDOWN_LINK_REGEX.lastIndex = 0;
100
+ for (let match = MARKDOWN_LINK_REGEX.exec(text); match !== null; match = MARKDOWN_LINK_REGEX.exec(text)) {
101
+ links.push({
102
+ text: match[1],
103
+ url: match[2],
104
+ });
105
+ }
106
+ // Replace markdown links with just the text (for plain text output)
107
+ const textWithLinks = text.replace(MARKDOWN_LINK_REGEX, "$1");
108
+ return { links, textWithLinks };
109
+ }
110
+ /**
111
+ * Strips markdown formatting from text
112
+ */
113
+ export function stripMarkdown(text) {
114
+ let result = text;
115
+ // Remove bold: **text** or __text__
116
+ result = result.replace(/\*\*(.+?)\*\*/g, "$1");
117
+ result = result.replace(/__(.+?)__/g, "$1");
118
+ // Remove italic: *text* or _text_ (but not already processed)
119
+ result = result.replace(/(?<!\*)\*(?!\*)(.+?)(?<!\*)\*(?!\*)/g, "$1");
120
+ result = result.replace(/(?<!_)_(?!_)(.+?)(?<!_)_(?!_)/g, "$1");
121
+ // Remove strikethrough: ~~text~~
122
+ result = result.replace(/~~(.+?)~~/g, "$1");
123
+ // Remove headers: # Title, ## Title, etc.
124
+ result = result.replace(/^#{1,6}\s+(.+)$/gm, "$1");
125
+ // Remove blockquotes: > text
126
+ result = result.replace(/^>\s?(.*)$/gm, "$1");
127
+ // Remove horizontal rules: ---, ***, ___
128
+ result = result.replace(/^[-*_]{3,}$/gm, "");
129
+ // Remove inline code: `code`
130
+ result = result.replace(/`([^`]+)`/g, "$1");
131
+ // Clean up extra whitespace
132
+ result = result.replace(/\n{3,}/g, "\n\n");
133
+ result = result.trim();
134
+ return result;
135
+ }
136
+ /**
137
+ * Checks if text contains markdown that needs conversion
138
+ */
139
+ export function hasMarkdownContent(text) {
140
+ // Check for tables
141
+ MARKDOWN_TABLE_REGEX.lastIndex = 0;
142
+ if (MARKDOWN_TABLE_REGEX.test(text)) {
143
+ return true;
144
+ }
145
+ // Check for code blocks
146
+ MARKDOWN_CODE_BLOCK_REGEX.lastIndex = 0;
147
+ if (MARKDOWN_CODE_BLOCK_REGEX.test(text)) {
148
+ return true;
149
+ }
150
+ // Check for other markdown patterns
151
+ if (/\*\*[^*]+\*\*/.test(text)) {
152
+ return true;
153
+ }
154
+ if (/~~[^~]+~~/.test(text)) {
155
+ return true;
156
+ }
157
+ if (/^#{1,6}\s+/m.test(text)) {
158
+ return true;
159
+ }
160
+ if (/^>\s+/m.test(text)) {
161
+ return true;
162
+ }
163
+ return false;
164
+ }
165
+ /**
166
+ * Processes text for LINE output
167
+ */
168
+ export function processLineMessage(text) {
169
+ let processedText = text;
170
+ // Extract tables
171
+ const { tables, textWithoutTables } = extractMarkdownTables(processedText);
172
+ processedText = textWithoutTables;
173
+ // Extract code blocks
174
+ const { codeBlocks, textWithoutCode } = extractCodeBlocks(processedText);
175
+ processedText = textWithoutCode;
176
+ // Handle links
177
+ const { links, textWithLinks } = extractLinks(processedText);
178
+ processedText = textWithLinks;
179
+ // Strip remaining markdown formatting
180
+ processedText = stripMarkdown(processedText);
181
+ return {
182
+ text: processedText,
183
+ tables,
184
+ codeBlocks,
185
+ links,
186
+ };
187
+ }
188
+ /**
189
+ * Splits text at the last safe break point within the limit
190
+ */
191
+ function splitAtBreakPoint(text, limit) {
192
+ if (text.length <= limit) {
193
+ return { chunk: text, remainder: "" };
194
+ }
195
+ // Try to find a natural break point
196
+ const searchArea = text.slice(0, limit);
197
+ // Prefer double newlines (paragraph breaks)
198
+ const doubleNewline = searchArea.lastIndexOf("\n\n");
199
+ if (doubleNewline > limit * 0.5) {
200
+ return {
201
+ chunk: text.slice(0, doubleNewline).trimEnd(),
202
+ remainder: text.slice(doubleNewline + 2).trimStart(),
203
+ };
204
+ }
205
+ // Try single newlines
206
+ const singleNewline = searchArea.lastIndexOf("\n");
207
+ if (singleNewline > limit * 0.5) {
208
+ return {
209
+ chunk: text.slice(0, singleNewline).trimEnd(),
210
+ remainder: text.slice(singleNewline + 1).trimStart(),
211
+ };
212
+ }
213
+ // Try sentence boundaries
214
+ const sentenceEnd = Math.max(searchArea.lastIndexOf(". "), searchArea.lastIndexOf("! "), searchArea.lastIndexOf("? "));
215
+ if (sentenceEnd > limit * 0.5) {
216
+ return {
217
+ chunk: text.slice(0, sentenceEnd + 1).trimEnd(),
218
+ remainder: text.slice(sentenceEnd + 2).trimStart(),
219
+ };
220
+ }
221
+ // Try word boundaries
222
+ const space = searchArea.lastIndexOf(" ");
223
+ if (space > limit * 0.5) {
224
+ return {
225
+ chunk: text.slice(0, space).trimEnd(),
226
+ remainder: text.slice(space + 1).trimStart(),
227
+ };
228
+ }
229
+ // Hard break at limit
230
+ return {
231
+ chunk: text.slice(0, limit),
232
+ remainder: text.slice(limit),
233
+ };
234
+ }
235
+ /**
236
+ * Chunks text for LINE messages
237
+ */
238
+ export function chunkLineText(text, opts = {}) {
239
+ const limit = opts.limit ?? LINE_TEXT_CHUNK_LIMIT;
240
+ if (!text?.trim()) {
241
+ return [];
242
+ }
243
+ const normalizedText = text.trim();
244
+ if (normalizedText.length <= limit) {
245
+ return [normalizedText];
246
+ }
247
+ const chunks = [];
248
+ let remaining = normalizedText;
249
+ while (remaining.length > 0) {
250
+ const { chunk, remainder } = splitAtBreakPoint(remaining, limit);
251
+ if (chunk) {
252
+ chunks.push(chunk);
253
+ }
254
+ remaining = remainder;
255
+ }
256
+ return chunks.filter((c) => c.length > 0);
257
+ }
258
+ /**
259
+ * Processes and chunks a markdown message for LINE
260
+ */
261
+ export function markdownToLineChunks(markdown, opts = {}) {
262
+ const processed = processLineMessage(markdown);
263
+ const textChunks = chunkLineText(processed.text, opts);
264
+ return {
265
+ textChunks,
266
+ tables: processed.tables,
267
+ codeBlocks: processed.codeBlocks,
268
+ links: processed.links,
269
+ };
270
+ }
271
+ /**
272
+ * Formats a table as plain text
273
+ */
274
+ export function formatTableAsText(table) {
275
+ const lines = [];
276
+ // Header
277
+ lines.push(table.headers.join(" | "));
278
+ lines.push("-".repeat(lines[0].length));
279
+ // Rows
280
+ for (const row of table.rows) {
281
+ lines.push(row.join(" | "));
282
+ }
283
+ return lines.join("\n");
284
+ }
285
+ /**
286
+ * Formats a code block as plain text
287
+ */
288
+ export function formatCodeBlockAsText(block) {
289
+ const langLabel = block.language ? `[${block.language}]` : "[code]";
290
+ return `${langLabel}\n${block.code}`;
291
+ }
292
+ /**
293
+ * Truncates text to a maximum length with ellipsis
294
+ */
295
+ export function truncateText(text, maxLength) {
296
+ if (text.length <= maxLength) {
297
+ return text;
298
+ }
299
+ if (maxLength <= 3) {
300
+ return "...".slice(0, maxLength);
301
+ }
302
+ return `${text.slice(0, maxLength - 3)}...`;
303
+ }
304
+ /**
305
+ * Formats a LINE user display name
306
+ */
307
+ export function formatLineUser(displayName, userId) {
308
+ return displayName || `User(${userId.slice(0, 8)}...)`;
309
+ }
310
+ /**
311
+ * Builds a LINE deep link URL
312
+ */
313
+ export function buildLineDeepLink(_type, id) {
314
+ return `line://ti/p/${id}`;
315
+ }
316
+ /**
317
+ * Resolves the system location string for logging
318
+ */
319
+ export function resolveLineSystemLocation(params) {
320
+ const { chatType, chatId, chatName } = params;
321
+ const name = chatName || chatId.slice(0, 8);
322
+ return `LINE ${chatType}:${name}`;
323
+ }
324
+ /**
325
+ * Checks if a chat is a group chat
326
+ */
327
+ export function isGroupChat(params) {
328
+ return Boolean(params.groupId || params.roomId);
329
+ }
330
+ /**
331
+ * Gets the chat ID from context
332
+ */
333
+ export function getChatId(params) {
334
+ return params.groupId || params.roomId || params.userId;
335
+ }
336
+ /**
337
+ * Gets the chat type from context
338
+ */
339
+ export function getChatType(params) {
340
+ if (params.groupId) {
341
+ return "group";
342
+ }
343
+ if (params.roomId) {
344
+ return "room";
345
+ }
346
+ return "user";
347
+ }
348
+ //# sourceMappingURL=messaging.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"messaging.js","sourceRoot":"","sources":["../src/messaging.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * Chat context provider for the LINE plugin.
3
+ */
4
+ import type { Provider } from "@elizaos/core";
5
+ export declare const chatContextProvider: Provider;
6
+ //# sourceMappingURL=chatContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chatContext.d.ts","sourceRoot":"","sources":["../../src/providers/chatContext.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAyB,QAAQ,EAAyB,MAAM,eAAe,CAAC;AAI5F,eAAO,MAAM,mBAAmB,EAAE,QAyFjC,CAAC"}
@@ -0,0 +1,85 @@
1
+ /**
2
+ * Chat context provider for the LINE plugin.
3
+ */
4
+ import { LINE_SERVICE_NAME } from "../types.js";
5
+ export const chatContextProvider = {
6
+ name: "lineChatContext",
7
+ description: "Provides information about the current LINE chat context",
8
+ get: async (runtime, message, state) => {
9
+ // Only provide context for LINE messages
10
+ if (message.content.source !== "line") {
11
+ return {
12
+ data: {},
13
+ values: {},
14
+ text: "",
15
+ };
16
+ }
17
+ const lineService = runtime.getService(LINE_SERVICE_NAME);
18
+ if (!lineService || !lineService.isConnected()) {
19
+ return {
20
+ data: { connected: false },
21
+ values: { connected: false },
22
+ text: "",
23
+ };
24
+ }
25
+ const agentName = state?.agentName || "The agent";
26
+ const stateData = (state?.data || {});
27
+ const userId = stateData.userId;
28
+ const groupId = stateData.groupId;
29
+ const roomId = stateData.roomId;
30
+ let chatType = "user";
31
+ let chatId = userId || "";
32
+ if (groupId) {
33
+ chatType = "group";
34
+ chatId = groupId;
35
+ }
36
+ else if (roomId) {
37
+ chatType = "room";
38
+ chatId = roomId;
39
+ }
40
+ // Get additional info based on chat type
41
+ let chatName = "";
42
+ let memberCount;
43
+ if (chatType === "group" && groupId) {
44
+ const groupInfo = await lineService.getGroupInfo(groupId);
45
+ if (groupInfo) {
46
+ chatName = groupInfo.groupName || "";
47
+ memberCount = groupInfo.memberCount;
48
+ }
49
+ }
50
+ let responseText = `${agentName} is chatting on LINE `;
51
+ if (chatType === "user") {
52
+ responseText += "in a direct message conversation.";
53
+ }
54
+ else if (chatType === "group") {
55
+ responseText += `in group "${chatName || chatId}".`;
56
+ if (memberCount) {
57
+ responseText += ` The group has ${memberCount} members.`;
58
+ }
59
+ }
60
+ else if (chatType === "room") {
61
+ responseText += "in a multi-person chat room.";
62
+ }
63
+ responseText +=
64
+ " LINE supports text messages, images, locations, rich cards (flex messages), and quick replies.";
65
+ return {
66
+ data: {
67
+ chatType,
68
+ chatId,
69
+ userId,
70
+ groupId,
71
+ roomId,
72
+ chatName,
73
+ memberCount,
74
+ connected: true,
75
+ },
76
+ values: {
77
+ chatType,
78
+ chatId,
79
+ chatName,
80
+ },
81
+ text: responseText,
82
+ };
83
+ },
84
+ };
85
+ //# sourceMappingURL=chatContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"chatContext.js","sourceRoot":"","sources":["../../src/providers/chatContext.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * LINE plugin providers.
3
+ */
4
+ export { chatContextProvider } from "./chatContext.js";
5
+ export { userContextProvider } from "./userContext.js";
6
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -1,6 +1,6 @@
1
1
  /**
2
2
  * LINE plugin providers.
3
3
  */
4
-
5
4
  export { chatContextProvider } from "./chatContext.js";
6
5
  export { userContextProvider } from "./userContext.js";
6
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/providers/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC;AACvD,OAAO,EAAE,mBAAmB,EAAE,MAAM,kBAAkB,CAAC"}
@@ -0,0 +1,6 @@
1
+ /**
2
+ * User context provider for the LINE plugin.
3
+ */
4
+ import type { Provider } from "@elizaos/core";
5
+ export declare const userContextProvider: Provider;
6
+ //# sourceMappingURL=userContext.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"userContext.d.ts","sourceRoot":"","sources":["../../src/providers/userContext.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,KAAK,EAAyB,QAAQ,EAAyB,MAAM,eAAe,CAAC;AAI5F,eAAO,MAAM,mBAAmB,EAAE,QA2EjC,CAAC"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * User context provider for the LINE plugin.
3
+ */
4
+ import { LINE_SERVICE_NAME } from "../types.js";
5
+ export const userContextProvider = {
6
+ name: "lineUserContext",
7
+ description: "Provides information about the LINE user in the current conversation",
8
+ get: async (runtime, message, state) => {
9
+ // Only provide context for LINE messages
10
+ if (message.content.source !== "line") {
11
+ return {
12
+ data: {},
13
+ values: {},
14
+ text: "",
15
+ };
16
+ }
17
+ const lineService = runtime.getService(LINE_SERVICE_NAME);
18
+ if (!lineService || !lineService.isConnected()) {
19
+ return {
20
+ data: { connected: false },
21
+ values: { connected: false },
22
+ text: "",
23
+ };
24
+ }
25
+ const agentName = state?.agentName || "The agent";
26
+ const stateData = (state?.data || {});
27
+ const userId = stateData.userId;
28
+ if (!userId) {
29
+ return {
30
+ data: { connected: true },
31
+ values: { connected: true },
32
+ text: "",
33
+ };
34
+ }
35
+ // Get user profile
36
+ const profile = await lineService.getUserProfile(userId);
37
+ if (!profile) {
38
+ return {
39
+ data: {
40
+ connected: true,
41
+ userId,
42
+ },
43
+ values: {
44
+ userId,
45
+ },
46
+ text: `${agentName} is talking to a LINE user (ID: ${userId.slice(0, 8)}...).`,
47
+ };
48
+ }
49
+ const responseText = `${agentName} is talking to ${profile.displayName} on LINE. ` +
50
+ (profile.statusMessage ? `Their status: "${profile.statusMessage}". ` : "") +
51
+ (profile.language ? `Language preference: ${profile.language}.` : "");
52
+ return {
53
+ data: {
54
+ userId: profile.userId,
55
+ displayName: profile.displayName,
56
+ pictureUrl: profile.pictureUrl,
57
+ statusMessage: profile.statusMessage,
58
+ language: profile.language,
59
+ connected: true,
60
+ },
61
+ values: {
62
+ userId: profile.userId,
63
+ displayName: profile.displayName,
64
+ language: profile.language,
65
+ },
66
+ text: responseText,
67
+ };
68
+ },
69
+ };
70
+ //# sourceMappingURL=userContext.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"userContext.js","sourceRoot":"","sources":["../../src/providers/userContext.ts"],"names":[],"mappings":"AAAA;;GAEG;AAIH,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,MAAM,CAAC,MAAM,mBAAmB,GAAa;IAC3C,IAAI,EAAE,iBAAiB;IACvB,WAAW,EAAE,sEAAsE;IAEnF,GAAG,EAAE,KAAK,EAAE,OAAsB,EAAE,OAAe,EAAE,KAAY,EAA2B,EAAE;QAC5F,yCAAyC;QACzC,IAAI,OAAO,CAAC,OAAO,CAAC,MAAM,KAAK,MAAM,EAAE,CAAC;YACtC,OAAO;gBACL,IAAI,EAAE,EAAE;gBACR,MAAM,EAAE,EAAE;gBACV,IAAI,EAAE,EAAE;aACT,CAAC;QACJ,CAAC;QAED,MAAM,WAAW,GAAG,OAAO,CAAC,UAAU,CAAC,iBAAiB,CAAuC,CAAC;QAEhG,IAAI,CAAC,WAAW,IAAI,CAAC,WAAW,CAAC,WAAW,EAAE,EAAE,CAAC;YAC/C,OAAO;gBACL,IAAI,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;gBAC1B,MAAM,EAAE,EAAE,SAAS,EAAE,KAAK,EAAE;gBAC5B,IAAI,EAAE,EAAE;aACT,CAAC;QACJ,CAAC;QAED,MAAM,SAAS,GAAG,KAAK,EAAE,SAAS,IAAI,WAAW,CAAC;QAClD,MAAM,SAAS,GAAG,CAAC,KAAK,EAAE,IAAI,IAAI,EAAE,CAA4B,CAAC;QAEjE,MAAM,MAAM,GAAG,SAAS,CAAC,MAA4B,CAAC;QAEtD,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,OAAO;gBACL,IAAI,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;gBACzB,MAAM,EAAE,EAAE,SAAS,EAAE,IAAI,EAAE;gBAC3B,IAAI,EAAE,EAAE;aACT,CAAC;QACJ,CAAC;QAED,mBAAmB;QACnB,MAAM,OAAO,GAAG,MAAM,WAAW,CAAC,cAAc,CAAC,MAAM,CAAC,CAAC;QAEzD,IAAI,CAAC,OAAO,EAAE,CAAC;YACb,OAAO;gBACL,IAAI,EAAE;oBACJ,SAAS,EAAE,IAAI;oBACf,MAAM;iBACP;gBACD,MAAM,EAAE;oBACN,MAAM;iBACP;gBACD,IAAI,EAAE,GAAG,SAAS,mCAAmC,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,OAAO;aAC/E,CAAC;QACJ,CAAC;QAED,MAAM,YAAY,GAChB,GAAG,SAAS,kBAAkB,OAAO,CAAC,WAAW,YAAY;YAC7D,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC,CAAC,kBAAkB,OAAO,CAAC,aAAa,KAAK,CAAC,CAAC,CAAC,EAAE,CAAC;YAC3E,CAAC,OAAO,CAAC,QAAQ,CAAC,CAAC,CAAC,wBAAwB,OAAO,CAAC,QAAQ,GAAG,CAAC,CAAC,CAAC,EAAE,CAAC,CAAC;QAExE,OAAO;YACL,IAAI,EAAE;gBACJ,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,UAAU,EAAE,OAAO,CAAC,UAAU;gBAC9B,aAAa,EAAE,OAAO,CAAC,aAAa;gBACpC,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,SAAS,EAAE,IAAI;aAChB;YACD,MAAM,EAAE;gBACN,MAAM,EAAE,OAAO,CAAC,MAAM;gBACtB,WAAW,EAAE,OAAO,CAAC,WAAW;gBAChC,QAAQ,EAAE,OAAO,CAAC,QAAQ;aAC3B;YACD,IAAI,EAAE,YAAY;SACnB,CAAC;IACJ,CAAC;CACF,CAAC"}